diff --git a/corsika/detail/framework/random/RNGManager.inl b/corsika/detail/framework/random/RNGManager.inl
index 1d0da48313f622e3c9b567127ed2104b15fc3029..21c924bf7765208d39c57f385ba3ac02e7acda3e 100644
--- a/corsika/detail/framework/random/RNGManager.inl
+++ b/corsika/detail/framework/random/RNGManager.inl
@@ -11,21 +11,28 @@
 #include <iterator>
 #include <random>
 #include <sstream>
+#include <tuple>
+#include <utility>
 
 namespace corsika {
 
-  inline void RNGManager::registerRandomStream(string_type const& pStreamName) {
-    prng_type rng;
+  template<typename CBPRNG>
+  inline void RNGManager<CBPRNG>::registerRandomStream(string_type const& pStreamName) {
 
-    if (auto const& it = seeds_.find(pStreamName); it != seeds_.end()) {
-      rng.seed(it->second);
-    }
+    auto const& it = rngs_.find(pStreamName);
+
+    if ( it == rngs_.end())//key not in container, so create one and initialize the value
+    rngs_.emplace(std::piecewise_construct,
+                  std::forward_as_tuple(pStreamName.c_str()),
+                  std::forward_as_tuple(seed_, uint32_t(rngs_.size())));
 
-    rngs_[pStreamName] = std::move(rng);
   }
 
-  inline RNGManager::prng_type& RNGManager::getRandomStream(
+  template<typename CBPRNG>
+  inline typename RNGManager<CBPRNG>::prng_type&
+  RNGManager<CBPRNG>::getRandomStream(
       string_type const& pStreamName) {
+
     if (isRegistered(pStreamName)) {
       return rngs_.at(pStreamName);
     } else { // this stream name is not in the map
@@ -33,11 +40,13 @@ namespace corsika {
     }
   }
 
-  inline bool RNGManager::isRegistered(string_type const& pStreamName) const {
+  template<typename CBPRNG>
+  inline bool RNGManager<CBPRNG>::isRegistered(string_type const& pStreamName) const {
     return rngs_.count(pStreamName) > 0;
   }
 
-  inline std::stringstream RNGManager::dumpState() const {
+  template<typename CBPRNG>
+  inline std::stringstream RNGManager<CBPRNG>::dumpState() const {
     std::stringstream buffer;
     for (auto const& [streamName, rng] : rngs_) {
       buffer << '"' << streamName << "\" = \"" << rng << '"' << std::endl;
@@ -46,23 +55,6 @@ namespace corsika {
     return buffer;
   }
 
-  inline void RNGManager::seedAll(seed_type vSeed) {
-    for (auto& entry : rngs_) { entry.second.seed(vSeed++); }
-  }
-
-  inline void RNGManager::seedAll(void) {
-    std::random_device rd;
 
-    for (auto& [streamName, rng] : rngs_) {
-      std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()}; // 6 really random values
-
-      // for logging collect sseq input values in string
-      std::stringstream ss;
-      sseq.param(std::ostream_iterator<int>{ss, " "});
-      CORSIKA_LOG_DEBUG("Random seed stream {} seed {}", streamName, ss.str());
-
-      rng.seed(sseq);
-    }
-  }
 
 } // namespace corsika
diff --git a/corsika/detail/framework/random/random_iterator/RandomIterator.h b/corsika/detail/framework/random/random_iterator/RandomIterator.h
new file mode 100644
index 0000000000000000000000000000000000000000..57356a6cacb480a69a88652d777722516708b16f
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/RandomIterator.h
@@ -0,0 +1,81 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+
+/*
+ * RandomIterator.h
+ *
+ *  Created on: 21/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+//  This is the only RandomIterator header that is guaranteed to
+//  change with every RandomIterator release.
+//
+//  RandomIterator_VERSION % 100 is the sub-minor version
+//  RandomIterator_VERSION / 100 % 1000 is the minor version
+//  RandomIterator_VERSION / 100000 is the major version
+//
+//  Because this header does not #include <RandomIterator/detail/Config.h>,
+//  it is the only RandomIterator header that does not cause
+//  RandomIterator_HOST_SYSTEM and RandomIterator_DEVICE_SYSTEM to be defined.
+
+/*! \def RandomIterator_VERSION
+ *  \brief The preprocessor macro \p RandomIterator_VERSION encodes the version
+ *         number of the RandomIterator.
+ *
+ *         <tt>RandomIterator_VERSION % 100</tt> is the patch version.
+ *         <tt>RandomIterator_VERSION / 100 % 1000</tt> is the feature version.
+ *         <tt>RandomIterator_VERSION / 100000</tt> is the major version.
+ */
+#define RandomIterator_VERSION 100001
+
+
+/*! \def RandomIterator_MAJOR_VERSION
+ *  \brief The preprocessor macro \p RandomIterator_MAJOR_VERSION encodes the
+ *         major version number of RandomIterator.
+ */
+#define RandomIterator_MAJOR_VERSION     (RandomIterator_VERSION / 100000)
+
+/*! \def RandomIterator_MINOR_VERSION
+ *  \brief The preprocessor macro \p RandomIterator_MINOR_VERSION encodes the
+ *         minor version number of RandomIterator.
+ */
+#define RandomIterator_MINOR_VERSION     (RandomIterator_VERSION / 100 % 1000)
+
+/*! \def RandomIterator_PATCH_NUMBER
+ *  \brief The preprocessor macro \p RandomIterator_PATCH_NUMBER encodes the
+ *         patch number of the RandomIterator library.
+ */
+#define RandomIterator_PATCH_NUMBER  0
+
+
+
+// Declare these namespaces here for the purpose of Doxygenating them
+
+/*!
+ *  \brief \p random_iterator is the top-level namespace which contains all RandomIterator
+ *         functions and types.
+ */
+namespace random_iterator{ }
+
+
diff --git a/corsika/detail/framework/random/random_iterator/Stream.hpp b/corsika/detail/framework/random/random_iterator/Stream.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9fb36c846d1ecd5a7668643adfa44e18a4c710e3
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/Stream.hpp
@@ -0,0 +1,313 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Stream.hpp
+ *
+ *  Created on: 23/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+#include "detail/tbb/iterators.h"
+#include "detail/Engine.hpp"
+#include "detail/functors/EngineCaller.hpp"
+
+namespace random_iterator {
+
+
+/// philox engine
+typedef detail::philox        philox;
+/// threefry  engine
+typedef detail::threefry      threefry;
+/// squares3_128  engine
+typedef detail::squares3_128  squares3_128;
+/// squares4_128  engine
+typedef detail::squares4_128  squares4_128;
+/// squares3_64  engine
+typedef detail::squares3_64   squares3_64;
+/// squares4_64  engine
+typedef detail::squares4_64   squares4_64;
+
+#if RANDOM_ITERATOR_R123_USE_AES_NI
+/// ars  engine
+typedef detail::ars           ars;
+#endif
+
+
+/**
+ * \class Stream
+ *
+ * \brief representation for streams of pseudorandom numbers
+ *
+ * Objects of this class represent collections of up to \f$ {2}^{32} \f$  streams of random numbers for each seed. Each of such streams
+ * has a length of \f$ {2}^{64} \f$. If the chosen distribution generates data with 64bits, like ``double``, then
+ * each stream can handle up to 128 ExaByte of data. Stream objects are thread-safe and lazy-evaluated. Output is produced
+ * only when requested. It is user responsibility to retrieve and store, if needed, the generated output.
+ *
+ * \tparam DistibutionType STL compliant distribution type. For example: ```std::uniform_real_distribution```, ```std::exponential_distribution```.
+ *
+ * \tparam EngineType RNG type.
+ *
+ * There are seven options:
+ *
+ *  * random_iterator::philox
+ *  * random_iterator::threefry
+ *  * random_iterator::ars
+ *  * random_iterator::squares3_128
+ *  * random_iterator::squares4_128
+ *  * random_iterator::squares3_64
+ *  * random_iterator::squares4_64
+ *
+ *  Usage:
+ *
+ * 	1) Direct class instantiation:
+ *
+ *  \code
+ *  \\this code will print the 10 doubles randomly distributed in the range [0.0, 1.0].
+ *
+ *  \\instantiate real uniform distribution from C++ standard libray
+ *  std::uniform_real_distribution<double> udist(0.0, 1.0);
+ *
+ *  \\
+ *  Stream<std::uniform_real_distribution<double>, random_iterator::philox> uniform_stream(udist, 0x1a2b3c4d, 1 );
+ *
+ *  for( size_t i=0; i<10; ++i )
+ *   std::cout << uniform_stream[i] << std::endl;
+ *  \endcode
+ *
+ * 	2) Using ```random_iterator::make_stream(...)```:
+ *
+ * 	\code
+ *  \\this code will print the 10 doubles randomly distributed in the range [0.0, 1.0].
+ *
+ *  \\instantiate real uniform distribution from C++ standard libray
+ *  std::uniform_real_distribution<double> udist(0.0, 1.0);
+ *
+ *  \\instantiate the generator
+ *  random_iterator::philox   rng(0x1a2b3c4d);
+ *
+ *  \\create stream
+ *  auto uniform_stream = random_iterator::make_stream(udist, rng, 1 );
+ *
+ *  for( size_t i=0; i<10; ++i )
+ *   std::cout << uniform_stream[i] << std::endl;
+ * 	\endcode
+ */
+template<typename DistibutionType, typename EngineType>
+class Stream
+{
+    typedef detail::EngineCaller<DistibutionType,EngineType>                      caller_type;//!
+	typedef random_iterator_tbb::counting_iterator<typename EngineType::advance_type>       counting_iterator;//!
+
+public:
+
+	typedef EngineType  engine_type; //! Engine type
+	typedef typename    engine_type::state_type           state_type;//! Type of RNG state
+	typedef typename    engine_type::seed_type             seed_type;//! Type of RNG seed
+	typedef typename    engine_type::advance_type       advance_type;//! Type of RNG displacement
+	typedef typename    engine_type::init_type             init_type;//! Type of RNG initializer
+
+	typedef DistibutionType distribution_type; //! type of the STL compliant distribution
+	typedef typename  distribution_type::result_type   result_type;//! type of the result
+
+	typedef random_iterator_tbb::transform_iterator< caller_type, counting_iterator> iterator;//! type of stream iterator
+
+	Stream()=delete;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param distribution Distribution with stl compliant interface.
+	 * @param seed Seed for pseudorandom number generation.
+	 * @param stream Pseudorandom number stream.
+	 */
+	Stream(distribution_type const& distribution, seed_type seed, uint32_t stream=0):
+		distribution_(distribution),
+		engine_(seed, stream),
+		seed_(seed),
+		stream_(stream)
+	{}
+
+	/**
+	 * Copy constructor
+	 *
+	 * @param other
+	 */
+	Stream( Stream<DistibutionType,EngineType> const& other ):
+		distribution_(other.getDistribution()),
+		engine_(other.getEngine()),
+		seed_(other.getSeed()),
+		stream_(other.getStream())
+	{}
+
+	/**
+	 * Returns an iterator to the first element of the stream.
+	 * @return  iterator to the first element of the stream.
+	 */
+	inline iterator begin() const{
+
+		counting_iterator first( 0);
+		caller_type caller(distribution_, seed_, stream_ );
+
+	    return iterator(first, caller);
+	}
+
+	/**
+	 * Returns an iterator to the past last element of the stream.
+	 * @return iterator to the past last element of the stream.
+	 */
+	inline iterator end() const{
+
+		counting_iterator last(std::numeric_limits<advance_type>::max());
+		caller_type caller(distribution_, seed_, stream_ );
+
+		return iterator(last, caller) ;
+	}
+
+    /**
+     * Returns the element at specified location n. No bounds checking is performed.
+     *
+     * @param n position in the sequence.
+     * @return element at location n
+     */
+	inline result_type operator[](advance_type n) const{
+
+		caller_type caller(distribution_, seed_, stream_ );
+
+		return caller(n);
+	}
+
+	/**
+	 *  At each call, this function will produce a pseudorandom number and advance the engine state.
+	 *
+	 * @return pseudorandom number distributed according with `DistributionType`
+	 */
+	inline result_type operator()(void){
+
+		return distribution_(engine_);
+	}
+
+	/**
+	 * Get the distribution
+	 *
+	 * @return Copy of the object's distribution.
+	 */
+	inline distribution_type getDistribution() const {
+		return distribution_;
+	}
+
+	/**
+	 * Set the distribution
+	 * @param dist
+	 *
+	 */
+	inline void setDistribution(distribution_type dist) {
+		distribution_ = dist;
+	}
+
+	/**
+	 * Get the associated engine
+	 *
+	 * @return Copy of the object's engine
+	 */
+	inline engine_type getEngine() const {
+		return engine_;
+	}
+
+	/**
+	 * Set the object's engine
+	 *
+	 * @param engine
+	 */
+	inline void setEngine(engine_type engine) {
+		engine_ = engine;
+	}
+
+	/**
+	 * Get the seed
+	 *
+	 * @return Copy of the object's seed
+	 */
+	inline const seed_type& getSeed() const {
+		return seed_;
+	}
+
+	/**
+	 * Set the seed
+	 *
+	 * @param seed
+	 */
+	inline void setSeed(const seed_type& seed) {
+		seed_ = seed;
+	}
+
+	/**
+	 * Get the object's stream number
+	 *
+	 * @return stream number
+	 */
+	inline uint32_t getStream() const {
+		return stream_;
+	}
+
+	/**
+	 * Set the object's stream number
+	 *
+	 * @param stream
+	 */
+	inline void setStream(uint32_t stream) {
+		stream_ = stream;
+	}
+
+	friend inline std::ostream& operator<<(std::ostream& os, const Stream<DistibutionType, EngineType>& be){
+	        return  os << "engine: " << be.getEngine()
+	        		   << " stream: "<< be.getStream()
+	        		   << " distribution: " << be.getDistribution() ;
+	    }
+private:
+
+	distribution_type distribution_;
+	engine_type             engine_;
+	seed_type                 seed_;
+	uint32_t                stream_;
+
+};
+
+/**
+ * Stream
+ *
+ * @param dist STL compliant distribution instance.
+ * @param eng Engine instance
+ * @param stream Stream number, in the range [0, 2^{32} - 1]
+ * @return Stream object.
+ */
+template<typename DistibutionType, typename EngineType>
+Stream<DistibutionType, EngineType>
+make_stream( DistibutionType const& dist, EngineType eng, uint32_t stream ){
+
+	return Stream<DistibutionType, EngineType>( dist, eng.getSeed(), stream);
+}
+
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Engine.hpp b/corsika/detail/framework/random/random_iterator/detail/Engine.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b8f3e0f0a667fc75d678c72d9bc2583da2f93a70
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Engine.hpp
@@ -0,0 +1,250 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+
+/*
+ * Engine.hpp
+ *
+ *  Created on: 22 de fev. de 2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <limits>
+
+#include "EngineTraits.hpp"
+#include "SplitMix.hpp"
+#include "Squares3_128.hpp"
+#include "Squares4_128.hpp"
+#include "Squares3_64.hpp"
+#include "Squares4_64.hpp"
+
+namespace random_iterator {
+
+namespace detail {
+
+
+
+
+
+template<typename Engine123>
+class Engine{
+
+    typedef unsigned       trigger_type;
+
+public:
+
+	typedef Engine123   engine_type;
+	typedef typename detail::random_traits<engine_type>::state_type     state_type;
+	typedef typename detail::random_traits<engine_type>::seed_type       seed_type;
+	typedef typename detail::random_traits<engine_type>::advance_type advance_type;
+	typedef typename detail::random_traits<engine_type>::init_type       init_type;
+	typedef typename detail::random_traits<engine_type>::result_type   result_type;
+
+	static const unsigned arity = detail::random_traits<engine_type>::arity;
+
+	Engine()=delete;
+
+	Engine(result_type  seed):
+	  engine_(engine_type{}),
+      cache_(state_type{}),
+      state_(state_type{}),
+      seed_(seed_type{}),
+      trigger_(arity)
+    {
+		init_type temp{{}};
+
+		for(unsigned i=0; i< temp.size(); ++i){
+			temp[i]=detail::splitmix<result_type>(seed);
+		}
+
+        seed_ = temp;
+    }
+
+	Engine(result_type seed, uint32_t stream ):
+		engine_(engine_type{}),
+		cache_(state_type{}),
+		state_(state_type{}),
+		seed_(seed_type{}),
+		trigger_(arity)
+	{
+		init_type temp{{}};
+
+		for(unsigned i=0; i< temp.size(); ++i){
+			temp[i]=detail::splitmix<result_type>(seed);
+		}
+
+		state_[arity-1] = stream;
+		state_[arity-1] = state_[arity-1] << 32;
+
+		seed_ = temp;
+	}
+
+	Engine(init_type  seed):
+	  engine_(engine_type{}),
+      cache_(state_type{}),
+      state_(state_type{}),
+      seed_(seed),
+      trigger_(arity)
+    {}
+
+
+	Engine(init_type  seed , uint32_t stream):
+		engine_(engine_type{}),
+		cache_(state_type{}),
+		state_(state_type{}),
+		seed_(seed),
+		trigger_(arity)
+	{
+		state_[arity-1] = stream;
+		state_[arity-1] << 32;
+
+	}
+
+	Engine( Engine<Engine123> const& other):
+	  engine_(engine_type{}  ),
+      cache_(other.getCache()),
+      state_(other.getState()),
+      seed_(other.getSeed()  ),
+      trigger_(other.getTrigger())
+    {}
+
+	inline Engine<Engine123>&
+	operator=( Engine<Engine123> const& other)
+	{
+
+	  if(this==&other) return *this;
+
+	  engine_  = engine_type{};
+      cache_   = other.getCache();
+      state_   = other.getState();
+      seed_    = other.getSeed();
+      trigger_ = other.getTrigger();
+      return *this;
+    }
+
+	inline result_type operator()(void)
+	{
+		result_type result = 0;
+
+		if(trigger_==arity){
+
+            trigger_=0;
+			cache_ = engine_(state_.incr(),  seed_);
+			result = cache_[trigger_];
+			++trigger_;
+		}
+		else {
+			result = cache_[trigger_];
+			++trigger_;
+		}
+
+		return result;
+	}
+
+	inline void discard( advance_type n){
+
+		state_.incr(n);
+		trigger_=arity;
+	}
+
+	inline void reset(void) {
+		trigger_ = arity;
+		state_   = state_type{};
+		cache_   = state_type{};
+	}
+
+	inline const seed_type& getSeed() const {
+		return seed_;
+	}
+
+	inline void setSeed(seed_type seed) {
+		seed_ = seed;
+	}
+
+	inline void setSeed(result_type seed) {
+
+		init_type temp{{}};
+		for(unsigned i=0; i< temp.size(); ++i){
+			temp[i]=detail::splitmix<result_type>(seed);
+		}
+		seed_ = temp;
+	}
+
+	inline const state_type& getState() const {
+		return state_;
+	}
+
+	inline void setState(const state_type& state) {
+		state_ = state;
+	}
+
+	inline trigger_type getTrigger() const {
+		return trigger_;
+	}
+
+	inline  void setTrigger(trigger_type trigger) {
+		trigger_ = trigger;
+	}
+	static constexpr result_type  min()  { return 0;}
+
+	static constexpr result_type  max()  { return std::numeric_limits<result_type>::max(); }
+
+
+    friend inline std::ostream& operator<<(std::ostream& os, const Engine<Engine123>& be){
+        return os << "state: " << be.getState()
+        		  << " seed: " << be.getSeed()
+        		  << " trigger: " << be.getTrigger();
+    }
+
+
+
+private:
+
+	inline state_type getCache() const {
+		return cache_;
+	}
+
+
+
+	engine_type   engine_;
+	state_type     cache_;
+	state_type     state_;
+	seed_type       seed_;
+	trigger_type trigger_;
+};
+
+typedef Engine<random_iterator_r123::Philox2x64>      philox;
+typedef Engine<random_iterator_r123::Threefry2x64>  threefry;
+typedef detail::Squares3_64                      squares3_64;
+typedef detail::Squares4_64                      squares4_64;
+typedef detail::Squares3_128                    squares3_128;
+typedef detail::Squares4_128                    squares4_128;
+
+#if RANDOM_ITERATOR_R123_USE_AES_NI
+typedef Engine<random_iterator_r123::ARS2x64>           ars;
+#endif
+
+}  // namespace detail
+
+}  // namespace random_iterator
+
+
diff --git a/corsika/detail/framework/random/random_iterator/detail/EngineTraits.hpp b/corsika/detail/framework/random/random_iterator/detail/EngineTraits.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..4c285fcebbf1917e099db69b2b9cc1842fce2d24
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/EngineTraits.hpp
@@ -0,0 +1,128 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+
+/*
+ * EngineTraits.hpp
+ *
+ *  Created on: 23 de fev. de 2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include "Random123/array.h"
+#include "Random123/philox.h"
+#include "Random123/threefry.h"
+#include "Random123/ars.h"
+#include "Random123/ReinterpretCtr.hpp"
+
+
+namespace random_iterator {
+
+namespace detail {
+
+
+template<typename Engine>
+struct random_traits;
+/*
+ * random_traits<T>::state_type { counter, state}
+ * random_traits<T>::advance_type;
+ * random_traits<T>::init_type;
+ * random_traits<T>::result_type;
+ */
+
+//philox
+template<> struct random_traits<random_iterator_r123::Philox2x64>
+{
+	typedef typename random_iterator_r123::Philox2x64::ctr_type  state_type;
+	typedef typename random_iterator_r123::Philox2x64::key_type  seed_type;
+	typedef typename random_iterator_r123::Philox2x64::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=2};
+};
+
+template<> struct random_traits<random_iterator_r123::Philox4x64>
+{
+	typedef typename random_iterator_r123::Philox4x64::ctr_type  state_type;
+	typedef typename random_iterator_r123::Philox4x64::key_type  seed_type;
+	typedef typename random_iterator_r123::Philox4x64::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=4};
+};
+//
+template<> struct random_traits<random_iterator_r123::Threefry2x64>
+{
+	typedef typename random_iterator_r123::Threefry2x64::ctr_type  state_type;
+	typedef typename random_iterator_r123::Threefry2x64::key_type  seed_type;
+	typedef typename random_iterator_r123::Threefry2x64::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=2};
+};
+
+//
+template<> struct random_traits<random_iterator_r123::Threefry4x64>
+{
+	typedef typename random_iterator_r123::Threefry4x64::ctr_type  state_type;
+	typedef typename random_iterator_r123::Threefry4x64::key_type  seed_type;
+	typedef typename random_iterator_r123::Threefry4x64::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=4};
+};
+
+
+#if RANDOM_ITERATOR_R123_USE_AES_NI
+template<> struct random_traits<random_iterator_r123::ARS4x32>
+{
+	typedef typename random_iterator_r123::ARS4x32::ctr_type  state_type;
+	typedef typename random_iterator_r123::ARS4x32::key_type  seed_type;
+	typedef typename random_iterator_r123::ARS4x32::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=4};
+};
+
+template<> struct random_traits<random_iterator_r123::ARS2x64>
+{
+	typedef typename random_iterator_r123::ARS2x64::ctr_type  state_type;
+	typedef typename random_iterator_r123::ARS2x64::key_type  seed_type;
+	typedef typename random_iterator_r123::ARS2x64::ukey_type init_type;
+	typedef uint64_t advance_type;
+	typedef state_type::value_type result_type;
+
+	enum{arity=2};
+};
+
+
+#endif
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Macros.h b/corsika/detail/framework/random/random_iterator/detail/Macros.h
new file mode 100644
index 0000000000000000000000000000000000000000..b71a11370f179e7e6dba58d2372dedc36b59dfe2
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Macros.h
@@ -0,0 +1,68 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Macros.h
+ *
+ *  Created on: 04/03/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#if defined(__has_builtin)
+    //__has_builtin(__builtin_expect)
+	#if __has_builtin(__builtin_expect)
+		 #define   _LIKELY_(x) __builtin_expect(x, 1)
+		 #define _UNLIKELY_(x) __builtin_expect(x, 0)
+	#else
+		 #define   _LIKELY_(x) x
+		 #define _UNLIKELY_(x) x
+	#endif //__has_builtin(__builtin_expect)
+#else
+	#define   _LIKELY_(x) x
+	#define _UNLIKELY_(x) x
+#endif //defined(__has_builtin)
+
+
+//detect endianess
+#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \
+    defined(__BIG_ENDIAN__) ||                               \
+    defined(__ARMEB__) ||                                    \
+    defined(__THUMBEB__) ||                                  \
+    defined(__AARCH64EB__) ||                                \
+    defined(_MIBSEB) || defined(__MIBSEB) || defined(__MIBSEB__)
+#ifndef __BIG_ENDIAN__
+#define __BIG_ENDIAN__
+#endif
+#elif defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \
+    defined(__LITTLE_ENDIAN__) ||                                 \
+    defined(__ARMEL__) ||                                         \
+    defined(__THUMBEL__) ||                                       \
+    defined(__AARCH64EL__) ||                                     \
+    defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || \
+    defined(_WIN32) || defined(__i386__) || defined(__x86_64__) || \
+    defined(_X86_) || defined(_IA64_)
+#ifndef __LITTLE_ENDIAN__
+#define __LITTLE_ENDIAN__
+#endif
+#else
+#error "I don't know what architecture this is!"
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/MicroURNG.hpp b/corsika/detail/framework/random/random_iterator/detail/Random123/MicroURNG.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e49cb71c8b98c790f5bbb5f07caecdfd7990528f
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/MicroURNG.hpp
@@ -0,0 +1,146 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __MicroURNG_dot_hpp__
+#define __MicroURNG_dot_hpp__
+
+#include <stdexcept>
+#include <limits>
+
+namespace random_iterator_r123{
+/**
+    Given a CBRNG whose ctr_type has an unsigned integral value_type,
+    MicroURNG<CBRNG>(c, k) is a type that satisfies the
+    requirements of a C++11 Uniform Random Number Generator.
+
+    The intended purpose is for a MicroURNG to be passed
+    as an argument to a C++11 Distribution, e.g.,
+    std::normal_distribution.  See examples/MicroURNG.cpp.
+
+    The MicroURNG functor has a period of "only"
+
+       ctr_type.size()*2^32,
+
+    after which it will silently repeat.
+
+    The high 32 bits of the highest word in the counter c, passed to
+    the constructor must be zero.  MicroURNG uses these bits to
+    "count".
+
+    Older versions of the library permitted a second template
+    parameter by which the caller could control the number of
+    bits devoted to the URNG's internal counter.  This flexibility
+    has been disabled because URNGs created with different
+    numbers of counter bits could, conceivably "collide".
+
+\code
+       typedef ?someCBRNG? RNG;
+       RNG::ctr_type c = ...; // under application control
+       RNG::key_type k = ...; // 
+       std::normal_distribution<float> nd;
+       MicroURNG<RNG> urng(c, k);
+       for(???){
+         ...
+         nd(urng);  // may be called several hundred times with BITS=10
+         ...
+       }
+\endcode
+*/
+
+template<typename CBRNG>
+class MicroURNG{
+    // According to C++11, a URNG requires only a result_type,
+    // operator()(), min() and max() methods.  Everything else
+    // (ctr_type, key_type, reset() method, etc.) is "value added"
+    // for the benefit of users that "know" that they're dealing with
+    // a MicroURNG.
+public:
+    typedef CBRNG cbrng_type;
+    static const int BITS = 32;
+    typedef typename cbrng_type::ctr_type ctr_type;
+    typedef typename cbrng_type::key_type key_type;
+    typedef typename cbrng_type::ukey_type ukey_type;
+    typedef typename ctr_type::value_type result_type;
+
+    RANDOM_ITERATOR_R123_STATIC_ASSERT( std::numeric_limits<result_type>::digits >= BITS, "The result_type must have at least 32 bits" );
+
+    result_type operator()(){
+        if(last_elem == 0){
+            // jam n into the high bits of c
+            const size_t W = std::numeric_limits<result_type>::digits;
+            ctr_type c = c0;
+            c[c0.size()-1] |= n<<(W-BITS);
+            rdata = b(c,k);
+            n++;
+            last_elem = rdata.size();
+        }
+        return rdata[--last_elem];
+    }
+    MicroURNG(cbrng_type _b, ctr_type _c0, ukey_type _uk) : b(_b), c0(_c0), k(_uk), n(0), last_elem(0) {
+        chkhighbits();
+    }
+    MicroURNG(ctr_type _c0, ukey_type _uk) : b(), c0(_c0), k(_uk), n(0), last_elem(0) {
+        chkhighbits();
+    }
+
+    // _Min and _Max work around a bug in the library shipped with MacOS Xcode 4.5.2.
+    // See the commment in conventional/Engine.hpp.  
+    const static result_type _Min = 0;
+    const static result_type _Max = ~((result_type)0);
+
+    static RANDOM_ITERATOR_R123_CONSTEXPR result_type min RANDOM_ITERATOR_R123_NO_MACRO_SUBST () { return _Min; }
+    static RANDOM_ITERATOR_R123_CONSTEXPR result_type max RANDOM_ITERATOR_R123_NO_MACRO_SUBST () { return _Max; }
+    // extra methods:
+    const ctr_type& counter() const{ return c0; }
+    void reset(ctr_type _c0, ukey_type _uk){
+        c0 = _c0;
+        chkhighbits();
+        k = _uk;
+        n = 0;
+        last_elem = 0;
+    }
+
+private:
+    cbrng_type b;
+    ctr_type c0;
+    key_type k;
+    RANDOM_ITERATOR_R123_ULONG_LONG n;
+    size_t last_elem;
+    ctr_type rdata;
+    void chkhighbits(){
+        result_type r = c0[c0.size()-1];
+        result_type mask = ((uint64_t)std::numeric_limits<result_type>::max RANDOM_ITERATOR_R123_NO_MACRO_SUBST ())>>BITS;
+        if((r&mask) != r)
+            throw std::runtime_error("MicroURNG: c0, does not have high bits clear");
+    }
+};
+} // namespace random_iterator_r123
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/ReinterpretCtr.hpp b/corsika/detail/framework/random/random_iterator/detail/Random123/ReinterpretCtr.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..9b4921fe24b2384d2fedde9575064dd7d3fd6655
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/ReinterpretCtr.hpp
@@ -0,0 +1,88 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __ReinterpretCtr_dot_hpp__
+#define __ReinterpretCtr_dot_hpp__
+
+#include "features/compilerfeatures.h"
+#include <cstring>
+
+namespace random_iterator_r123{
+/*!
+  ReinterpretCtr uses memcpy to map back and forth
+  between a CBRNG's ctr_type and the specified ToType.  For example,
+  after:
+
+    typedef ReinterpretCtr<r123array4x32, Philox2x64> G;
+
+  G is a bona fide CBRNG with ctr_type r123array4x32.
+
+  WARNING:  ReinterpretCtr is endian dependent.  The
+  values returned by G, declared as above,
+  will depend on the endianness of the machine on which it runs.
+ */
+
+template <typename ToType, typename CBRNG>
+struct ReinterpretCtr{
+    typedef ToType ctr_type;
+    typedef typename CBRNG::key_type key_type;
+    typedef typename CBRNG::ctr_type bctype;
+    typedef typename CBRNG::ukey_type ukey_type;
+    RANDOM_ITERATOR_R123_STATIC_ASSERT(sizeof(ToType) == sizeof(bctype) && sizeof(typename bctype::value_type) != 16, 
+                       "ReinterpretCtr:  sizeof(ToType) is not the same as sizeof(CBRNG::ctr_type) or CBRNG::ctr_type::value_type looks like it might be __m128i");
+    // It's amazingly difficult to safely do conversions with __m128i.
+    // If we use the operator() implementation below with a CBRNG
+    // whose ctr_type is r123array1xm128i, gcc4.6 optimizes away the
+    // memcpys, inlines the operator()(c,k), and produces assembly
+    // language that ends with an aesenclast instruction with a
+    // destination operand pointing to an unaligned memory address ...
+    // Segfault!  See:  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50444
+    // MSVC also produces code that crashes.  We suspect a
+    // similar mechanism but haven't done the debugging necessary to
+    // be sure.  We were able to 'fix' gcc4.6 by making bc a mutable
+    // data member rather than declaring it in the scope of
+    // operator().  That didn't fix the MSVC problems, though.
+    //
+    // Conclusion - don't touch __m128i, at least for now.  The
+    // easiest (but highly imprecise) way to do that is the static
+    // assertion above that rejects bctype::value_types of size 16. -
+    // Sep 2011.
+    ctr_type  operator()(ctr_type c, key_type k){
+        bctype bc;
+        std::memcpy(&bc, &c, sizeof(c));
+        CBRNG b;
+        bc = b(bc, k);
+        std::memcpy(&c, &bc, sizeof(bc));
+        return c;
+    }
+};
+} // namespace random_iterator_r123
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/aes.h b/corsika/detail/framework/random/random_iterator/detail/Random123/aes.h
new file mode 100644
index 0000000000000000000000000000000000000000..4d7c839e333397d857a8db438a910878ffa0af9e
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/aes.h
@@ -0,0 +1,398 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __Random123_aes_dot_hpp__
+#define __Random123_aes_dot_hpp__
+
+#include "features/compilerfeatures.h"
+#include "array.h"
+
+/* Implement a bona fide AES block cipher.  It's minimally
+// checked against the test vector in FIPS-197 in ut_aes.cpp. */
+#if RANDOM_ITERATOR_R123_USE_AES_NI
+
+/** @ingroup AESNI */
+typedef struct r123array1xm128i aesni1xm128i_ctr_t;
+/** @ingroup AESNI */
+typedef struct r123array1xm128i aesni1xm128i_ukey_t;
+/** @ingroup AESNI */
+typedef struct r123array4x32 aesni4x32_ukey_t;
+/** @ingroup AESNI */
+enum r123_enum_aesni1xm128i { aesni1xm128i_rounds = 10 };
+
+/** \cond HIDDEN_FROM_DOXYGEN */
+RANDOM_ITERATOR_R123_STATIC_INLINE __m128i AES_128_ASSIST (__m128i temp1, __m128i temp2) { 
+    __m128i temp3; 
+    temp2 = _mm_shuffle_epi32 (temp2 ,0xff); 
+    temp3 = _mm_slli_si128 (temp1, 0x4);
+    temp1 = _mm_xor_si128 (temp1, temp3);
+    temp3 = _mm_slli_si128 (temp3, 0x4);
+    temp1 = _mm_xor_si128 (temp1, temp3);
+    temp3 = _mm_slli_si128 (temp3, 0x4);
+    temp1 = _mm_xor_si128 (temp1, temp3);
+    temp1 = _mm_xor_si128 (temp1, temp2); 
+    return temp1; 
+}
+
+RANDOM_ITERATOR_R123_STATIC_INLINE void aesni1xm128iexpand(aesni1xm128i_ukey_t uk, __m128i ret[11])
+{
+    __m128i rkey = uk.v[0].m;
+    __m128i tmp2;
+
+    ret[0] = rkey;
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x1);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[1] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x2);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[2] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x4);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[3] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x8);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[4] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x10);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[5] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x20);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[6] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x40);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[7] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x80);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[8] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x1b);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[9] = rkey;
+
+    tmp2 = _mm_aeskeygenassist_si128(rkey, 0x36);
+    rkey = AES_128_ASSIST(rkey, tmp2);
+    ret[10] = rkey;
+}
+/** \endcond */
+    
+#ifdef __cplusplus
+/** @ingroup AESNI */
+struct aesni1xm128i_key_t{ 
+    __m128i k[11]; 
+    aesni1xm128i_key_t(){
+        aesni1xm128i_ukey_t uk;
+        uk.v[0].m = _mm_setzero_si128();
+        aesni1xm128iexpand(uk, k);
+    }
+    aesni1xm128i_key_t(const aesni1xm128i_ukey_t& uk){
+        aesni1xm128iexpand(uk, k);
+    }
+    aesni1xm128i_key_t(const aesni4x32_ukey_t& uk){
+        aesni1xm128i_ukey_t uk128;
+        uk128.v[0].m = _mm_set_epi32(uk.v[3], uk.v[2], uk.v[1], uk.v[0]);
+        aesni1xm128iexpand(uk128, k);
+    }
+    aesni1xm128i_key_t& operator=(const aesni1xm128i_ukey_t& uk){
+        aesni1xm128iexpand(uk, k);
+        return *this;
+    }
+    aesni1xm128i_key_t& operator=(const aesni4x32_ukey_t& uk){
+        aesni1xm128i_ukey_t uk128;
+        uk128.v[0].m = _mm_set_epi32(uk.v[3], uk.v[2], uk.v[1], uk.v[0]);
+        aesni1xm128iexpand(uk128, k);
+        return *this;
+    }
+    bool operator==(const aesni1xm128i_key_t& rhs) const{
+        for(int i=0; i<11; ++i){
+            // Sigh... No r123m128i(__m128i) constructor!
+            r123m128i li; li.m = k[i];
+            r123m128i ri; ri.m = rhs.k[i];
+            if( li != ri ) return false;
+        }
+        return true;
+    }
+    bool operator!=(const aesni1xm128i_key_t& rhs) const{
+        return !(*this == rhs);
+    }
+    friend std::ostream& operator<<(std::ostream& os, const aesni1xm128i_key_t& v){
+        r123m128i ki;
+        for(int i=0; i<10; ++i){
+            ki.m = v.k[i];
+            os << ki << " ";
+        }
+        ki.m = v.k[10];
+        return os << ki;
+    }
+    friend std::istream& operator>>(std::istream& is, aesni1xm128i_key_t& v){
+        r123m128i ki;
+        for(int i=0; i<11; ++i){
+            is >> ki;
+            v.k[i] = ki;
+        }
+        return is;
+    }
+};
+#else
+typedef struct { 
+    __m128i k[11]; 
+}aesni1xm128i_key_t;
+
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE aesni1xm128i_key_t aesni1xm128ikeyinit(aesni1xm128i_ukey_t uk){
+    aesni1xm128i_key_t ret;
+    aesni1xm128iexpand(uk, ret.k);
+    return ret;
+}
+#endif
+
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE aesni1xm128i_ctr_t aesni1xm128i(aesni1xm128i_ctr_t in, aesni1xm128i_key_t k) {
+    __m128i x = _mm_xor_si128(k.k[0], in.v[0].m);
+    x = _mm_aesenc_si128(x, k.k[1]);
+    x = _mm_aesenc_si128(x, k.k[2]);
+    x = _mm_aesenc_si128(x, k.k[3]);
+    x = _mm_aesenc_si128(x, k.k[4]);
+    x = _mm_aesenc_si128(x, k.k[5]);
+    x = _mm_aesenc_si128(x, k.k[6]);
+    x = _mm_aesenc_si128(x, k.k[7]);
+    x = _mm_aesenc_si128(x, k.k[8]);
+    x = _mm_aesenc_si128(x, k.k[9]);
+    x = _mm_aesenclast_si128(x, k.k[10]);
+    {
+      aesni1xm128i_ctr_t ret;
+      ret.v[0].m = x;
+      return ret;
+    }
+}
+
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE aesni1xm128i_ctr_t aesni1xm128i_R(unsigned R, aesni1xm128i_ctr_t in, aesni1xm128i_key_t k){
+    RANDOM_ITERATOR_R123_ASSERT(R==10);
+    return aesni1xm128i(in, k);
+}
+
+
+/** @ingroup AESNI */
+typedef struct r123array4x32 aesni4x32_ctr_t;
+/** @ingroup AESNI */
+typedef aesni1xm128i_key_t aesni4x32_key_t;
+/** @ingroup AESNI */
+enum r123_enum_aesni4x32 { aesni4x32_rounds = 10 };
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE aesni4x32_key_t aesni4x32keyinit(aesni4x32_ukey_t uk){
+    aesni1xm128i_ukey_t uk128;
+    aesni4x32_key_t ret;
+    uk128.v[0].m = _mm_set_epi32(uk.v[3], uk.v[2], uk.v[1], uk.v[0]);
+    aesni1xm128iexpand(uk128, ret.k);
+    return ret;
+}
+
+/** @ingroup AESNI */
+/** The aesni4x32_R function provides a C API to the @ref AESNI "AESNI" CBRNG, allowing the number of rounds to be specified explicitly **/
+RANDOM_ITERATOR_R123_STATIC_INLINE aesni4x32_ctr_t aesni4x32_R(unsigned int Nrounds, aesni4x32_ctr_t c, aesni4x32_key_t k){
+    aesni1xm128i_ctr_t c128;
+    c128.v[0].m = _mm_set_epi32(c.v[3], c.v[2], c.v[1], c.v[0]);
+    c128 = aesni1xm128i_R(Nrounds, c128, k);
+    _mm_storeu_si128((__m128i*)&c.v[0], c128.v[0].m);
+    return c;
+}
+
+#define aesni4x32_rounds aesni1xm128i_rounds
+
+/** The aesni4x32 macro provides a C API to the @ref AESNI "AESNI" CBRNG, uses the default number of rounds i.e. \c aesni4x32_rounds **/
+/** @ingroup AESNI */
+#define aesni4x32(c,k) aesni4x32_R(aesni4x32_rounds, c, k)
+
+#ifdef __cplusplus
+namespace random_iterator_r123{
+/** 
+@defgroup AESNI ARS and AESNI Classes and Typedefs
+
+The ARS4x32, ARS1xm128i, AESNI4x32 and AESNI1xm128i classes export the member functions, typedefs and
+operator overloads required by a @ref CBRNG "CBRNG" class.
+
+ARS1xm128i and AESNI1xm128i are based on the AES block cipher and rely on the AES-NI hardware instructions
+available on some some new (2011) CPUs.
+
+The ARS1xm128i CBRNG and the use of AES for random number generation are described in 
+<a href="http://dl.acm.org/citation.cfm?doid=2063405"><i>Parallel Random Numbers:  As Easy as 1, 2, 3</i> </a>.
+Although it uses some cryptographic primitives, ARS1xm128i uses a cryptographically weak key schedule and is \b not suitable for cryptographic use.
+
+@class AESNI1xm128i
+@ingroup AESNI
+AESNI exports the member functions, typedefs and operator overloads required by a @ref CBRNG class.
+
+AESNI1xm128i uses the crypotgraphic AES round function, including the cryptographic key schedule.
+
+In contrast to the other CBRNGs in the Random123 library, the AESNI1xm128i_R::key_type is opaque
+and is \b not identical to the AESNI1xm128i_R::ukey_type.  Creating a key_type, using either the constructor
+or assignment operator, is significantly more time-consuming than running the bijection (hundreds
+of clock cycles vs. tens of clock cycles).
+
+AESNI1xm128i is only available when the feature-test macro RANDOM_ITERATOR_R123_USE_AES_NI is true, which
+should occur only when the compiler is configured to generate AES-NI instructions (or
+when defaults are overridden by compile-time, compiler-command-line options).
+
+As of September 2011, the authors know of no statistical flaws with AESNI1xm128i.  It
+would be an event of major cryptographic note if any such flaws were ever found.
+*/
+struct AESNI1xm128i{
+    typedef aesni1xm128i_ctr_t ctr_type;
+    typedef aesni1xm128i_ukey_t ukey_type;
+    typedef aesni1xm128i_key_t key_type;
+    static const unsigned int rounds=10;
+    ctr_type operator()(ctr_type ctr, key_type key) const{
+        return aesni1xm128i(ctr, key);
+    }
+};
+
+/* @class AESNI4x32 */
+struct AESNI4x32{
+    typedef aesni4x32_ctr_t ctr_type;
+    typedef aesni4x32_ukey_t ukey_type;
+    typedef aesni4x32_key_t key_type;
+    static const unsigned int rounds=10;
+    ctr_type operator()(ctr_type ctr, key_type key) const{
+        return aesni4x32(ctr, key);
+    }
+};
+
+/** @ingroup AESNI
+    @class AESNI1xm128i_R
+
+AESNI1xm128i_R is provided for completeness, but is only instantiable with ROUNDS=10, in
+which case it is identical to AESNI1xm128i */
+template <unsigned ROUNDS=10> 
+struct AESNI1xm128i_R : public AESNI1xm128i{
+    RANDOM_ITERATOR_R123_STATIC_ASSERT(ROUNDS==10, "AESNI1xm128i_R<R> is only valid with R=10");
+};
+
+/** @class AESNI4x32_R **/
+template <unsigned ROUNDS=10> 
+struct AESNI4x32_R : public AESNI4x32{
+    RANDOM_ITERATOR_R123_STATIC_ASSERT(ROUNDS==10, "AESNI4x32_R<R> is only valid with R=10");
+};
+} // namespace random_iterator_r123
+#endif /* __cplusplus */
+
+#endif /* RANDOM_ITERATOR_R123_USE_AES_NI */
+
+#if RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+#include "string.h"
+#include <openssl/aes.h>
+typedef struct r123array16x8 aesopenssl16x8_ctr_t;
+typedef struct r123array16x8 aesopenssl16x8_ukey_t;
+#ifdef __cplusplus
+struct aesopenssl16x8_key_t{
+    AES_KEY k;
+    aesopenssl16x8_key_t(){
+        aesopenssl16x8_ukey_t ukey={{}};
+        AES_set_encrypt_key((const unsigned char *)&ukey.v[0], 128, &k);
+    }
+    aesopenssl16x8_key_t(const aesopenssl16x8_ukey_t& ukey){
+        AES_set_encrypt_key((const unsigned char *)&ukey.v[0], 128, &k);
+    }
+    aesopenssl16x8_key_t& operator=(const aesopenssl16x8_ukey_t& ukey){
+        AES_set_encrypt_key((const unsigned char *)&ukey.v[0], 128, &k);
+        return *this;
+    }
+    bool operator==(const aesopenssl16x8_key_t& rhs) const{
+        return (k.rounds == rhs.k.rounds) && 0==::memcmp(&k.rd_key[0], &rhs.k.rd_key[0], (k.rounds+1) * 4 * sizeof(uint32_t));
+    }
+    bool operator!=(const aesopenssl16x8_key_t& rhs) const{
+        return !(*this == rhs);
+    }
+    friend std::ostream& operator<<(std::ostream& os, const aesopenssl16x8_key_t& v){
+        os << v.k.rounds;
+        const unsigned int *p = &v.k.rd_key[0];
+        for(int i=0; i<(v.k.rounds+1); ++i){
+            os << " " << p[0] << " " << p[1] << " " << p[2] << " " << p[3];
+            p += 4;
+        }
+        return os;
+    }
+    friend std::istream& operator>>(std::istream& is, aesopenssl16x8_key_t& v){
+        is >> v.k.rounds;
+        unsigned int *p = &v.k.rd_key[0];
+        for(int i=0; i<(v.k.rounds+1); ++i){
+            is >> p[0] >> p[1] >> p[2] >> p[3];
+            p += 4;
+        }
+        return is;
+    }
+};
+#else
+typedef struct aesopenssl16x8_key_t{
+    AES_KEY k;
+}aesopenssl16x8_key_t;
+RANDOM_ITERATOR_R123_STATIC_INLINE struct aesopenssl16x8_key_t aesopenssl16x8keyinit(aesopenssl16x8_ukey_t uk){
+    aesopenssl16x8_key_t ret;
+    AES_set_encrypt_key((const unsigned char *)&uk.v[0], 128, &ret.k);
+    return ret;
+}
+#endif
+
+RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(aesopenssl16x8_ctr_t aesopenssl16x8_R(aesopenssl16x8_ctr_t ctr, aesopenssl16x8_key_t key));
+RANDOM_ITERATOR_R123_STATIC_INLINE
+aesopenssl16x8_ctr_t aesopenssl16x8_R(aesopenssl16x8_ctr_t ctr, aesopenssl16x8_key_t key){
+    aesopenssl16x8_ctr_t ret;
+    AES_encrypt((const unsigned char*)&ctr.v[0], (unsigned char *)&ret.v[0], &key.k);
+    return ret;
+}
+
+#define aesopenssl16x8_rounds aesni4x32_rounds
+#define aesopenssl16x8(c,k) aesopenssl16x8_R(aesopenssl16x8_rounds)
+
+#ifdef __cplusplus
+namespace random_iterator_r123{
+struct AESOpenSSL16x8{
+    typedef aesopenssl16x8_ctr_t ctr_type;
+    typedef aesopenssl16x8_key_t key_type;
+    typedef aesopenssl16x8_ukey_t ukey_type;
+    static const unsigned int rounds=10;
+    ctr_type operator()(const ctr_type& in, const key_type& k){
+        ctr_type out;
+        AES_encrypt((const unsigned char *)&in[0], (unsigned char *)&out[0], &k.k);
+        return out;
+    }
+};
+} // namespace random_iterator_r123
+#endif /* __cplusplus */
+#endif /* RANDOM_ITERATOR_R123_USE_AES_OPENSSL */
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/array.h b/corsika/detail/framework/random/random_iterator/detail/Random123/array.h
new file mode 100644
index 0000000000000000000000000000000000000000..4f4443ad85caf5d73d9c76acc7d37909dfb5011b
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/array.h
@@ -0,0 +1,348 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef _r123array_dot_h__
+#define _r123array_dot_h__
+#include "features/compilerfeatures.h"
+#include "features/sse.h"
+
+#if !defined(__cplusplus) || defined(__METAL_MACOS__)
+#define CXXMETHODS(_N, W, T)
+#define CXXOVERLOADS(_N, W, T)
+#define CXXMETHODS_REQUIRING_STL
+#else
+
+#include <stddef.h>
+#include <algorithm>
+#include <stdexcept>
+#include <iterator>
+#include <limits>
+#include <iostream>
+
+/** @defgroup arrayNxW The r123arrayNxW classes 
+
+    Each of the r123arrayNxW is a fixed size array of N W-bit unsigned integers.
+    It is functionally equivalent to the C++11 std::array<N, uintW_t>,
+    but does not require C++11 features or libraries.
+
+    In addition to meeting most of the requirements of a Container,
+    it also has a member function, incr(), which increments the zero-th
+    element and carrys overflows into higher indexed elements.  Thus,
+    by using incr(), sequences of up to 2^(N*W) distinct values
+    can be produced. 
+
+    If SSE is supported by the compiler, then the class
+    r123array1xm128i is also defined, in which the data member is an
+    array of one r123m128i object.
+
+    When compiling with __CUDA_ARCH__ defined, the reverse iterator
+    methods (rbegin, rend, crbegin, crend) are not defined because
+    CUDA does not support std::reverse_iterator.
+
+*/
+
+/** @cond HIDDEN_FROM_DOXYGEN */
+
+template <typename value_type>
+inline RANDOM_ITERATOR_R123_CUDA_DEVICE value_type assemble_from_u32(uint32_t *p32){
+    value_type v=0;
+    for(size_t i=0; i<(3+sizeof(value_type))/4; ++i)
+        v |= ((value_type)(*p32++)) << (32*i);
+    return v;
+}
+
+/** @endcond */
+
+#ifdef __CUDA_ARCH__
+/* CUDA can't handle std::reverse_iterator.  We *could* implement it
+   ourselves, but let's not bother until somebody really feels a need
+   to reverse-iterate through an r123array */
+#define CXXMETHODS_REQUIRING_STL
+#else
+#define  CXXMETHODS_REQUIRING_STL \
+    public: \
+    typedef std::reverse_iterator<iterator> reverse_iterator;           \
+    typedef std::reverse_iterator<const_iterator> const_reverse_iterator; \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reverse_iterator rbegin(){ return reverse_iterator(end()); }                         \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reverse_iterator rbegin() const{ return const_reverse_iterator(end()); } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reverse_iterator rend(){ return reverse_iterator(begin()); }        \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reverse_iterator rend() const{ return const_reverse_iterator(begin()); } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reverse_iterator crbegin() const{ return const_reverse_iterator(cend()); } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reverse_iterator crend() const{ return const_reverse_iterator(cbegin()); } 
+#endif
+
+// Work-alike methods and typedefs modeled on std::array:
+#define CXXMETHODS(_N, W, T)                                            \
+    typedef T value_type;                                               \
+    typedef T* iterator;                                                \
+    typedef const T* const_iterator;                                    \
+    typedef value_type& reference;                                      \
+    typedef const value_type& const_reference;                          \
+    typedef size_t size_type;                                           \
+    typedef ptrdiff_t difference_type;                                  \
+    typedef T* pointer;                                                 \
+    typedef const T* const_pointer;                                     \
+    /* Boost.array has static_size.  C++11 specializes tuple_size */    \
+    enum {static_size = _N};                                            \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reference operator[](size_type i){return v[i];}                     \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reference operator[](size_type i) const {return v[i];}        \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reference at(size_type i){ if(i >=  _N) RANDOM_ITERATOR_R123_THROW(std::out_of_range("array index out of range")); return (*this)[i]; } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reference at(size_type i) const { if(i >=  _N) RANDOM_ITERATOR_R123_THROW(std::out_of_range("array index out of range")); return (*this)[i]; } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE size_type size() const { return  _N; }                              \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE size_type max_size() const { return _N; }                           \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE bool empty() const { return _N==0; };                               \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE iterator begin() { return &v[0]; }                                  \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE iterator end() { return &v[_N]; }                                   \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_iterator begin() const { return &v[0]; }                      \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_iterator end() const { return &v[_N]; }                       \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_iterator cbegin() const { return &v[0]; }                     \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_iterator cend() const { return &v[_N]; }                      \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE pointer data(){ return &v[0]; }                                     \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_pointer data() const{ return &v[0]; }                         \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reference front(){ return v[0]; }                                   \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reference front() const{ return v[0]; }                       \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE reference back(){ return v[_N-1]; }                                 \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE const_reference back() const{ return v[_N-1]; }                     \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE bool operator==(const r123array##_N##x##W& rhs) const{ \
+	/* CUDA3 does not have std::equal */ \
+	for (size_t i = 0; i < _N; ++i) \
+	    if (v[i] != rhs.v[i]) return false; \
+	return true; \
+    } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE bool operator!=(const r123array##_N##x##W& rhs) const{ return !(*this == rhs); } \
+    /* CUDA3 does not have std::fill_n */ \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE void fill(const value_type& val){ for (size_t i = 0; i < _N; ++i) v[i] = val; } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE void swap(r123array##_N##x##W& rhs){ \
+	/* CUDA3 does not have std::swap_ranges */ \
+	for (size_t i = 0; i < _N; ++i) { \
+	    T tmp = v[i]; \
+	    v[i] = rhs.v[i]; \
+	    rhs.v[i] = tmp; \
+	} \
+    } \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE r123array##_N##x##W& incr(RANDOM_ITERATOR_R123_ULONG_LONG n=1){                         \
+        /* This test is tricky because we're trying to avoid spurious   \
+           complaints about illegal shifts, yet still be compile-time   \
+           evaulated. */                                                \
+        if(sizeof(T)<sizeof(n) && n>>((sizeof(T)<sizeof(n))?8*sizeof(T):0) ) \
+            return incr_carefully(n);                                   \
+        if(n==1){                                                       \
+            ++v[0];                                                     \
+            if(_N==1 || RANDOM_ITERATOR_R123_BUILTIN_EXPECT(!!v[0], 1)) return *this;   \
+        }else{                                                          \
+            v[0] += n;                                                  \
+            if(_N==1 || RANDOM_ITERATOR_R123_BUILTIN_EXPECT(n<=v[0], 1)) return *this;  \
+        }                                                               \
+        /* We expect that the N==?? tests will be                       \
+           constant-folded/optimized away by the compiler, so only the  \
+           overflow tests (!!v[i]) remain to be done at runtime.  For  \
+           small values of N, it would be better to do this as an       \
+           uncondtional sequence of adc.  An experiment/optimization    \
+           for another day...                                           \
+           N.B.  The weird subscripting: v[_N>3?3:0] is to silence      \
+           a spurious error from icpc                                   \
+           */                                                           \
+        ++v[_N>1?1:0];                                                  \
+        if(_N==2 || RANDOM_ITERATOR_R123_BUILTIN_EXPECT(!!v[_N>1?1:0], 1)) return *this; \
+        ++v[_N>2?2:0];                                                  \
+        if(_N==3 || RANDOM_ITERATOR_R123_BUILTIN_EXPECT(!!v[_N>2?2:0], 1)) return *this;  \
+        ++v[_N>3?3:0];                                                  \
+        for(size_t i=4; i<_N; ++i){                                     \
+            if( RANDOM_ITERATOR_R123_BUILTIN_EXPECT(!!v[i-1], 1) ) return *this;        \
+            ++v[i];                                                     \
+        }                                                               \
+        return *this;                                                   \
+    }                                                                   \
+    /* seed(SeedSeq) would be a constructor if having a constructor */  \
+    /* didn't cause headaches with defaults */                          \
+    template <typename SeedSeq>                                         \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE static r123array##_N##x##W seed(SeedSeq &ss){      \
+        r123array##_N##x##W ret;                                        \
+        const size_t Ngen = _N*((3+sizeof(value_type))/4);              \
+        uint32_t u32[Ngen];                                             \
+        uint32_t *p32 = &u32[0];                                        \
+        ss.generate(&u32[0], &u32[Ngen]);                               \
+        for(size_t i=0; i<_N; ++i){                                     \
+            ret.v[i] = assemble_from_u32<value_type>(p32);              \
+            p32 += (3+sizeof(value_type))/4;                            \
+        }                                                               \
+        return ret;                                                     \
+    }                                                                   \
+protected:                                                              \
+    RANDOM_ITERATOR_R123_CUDA_DEVICE r123array##_N##x##W& incr_carefully(RANDOM_ITERATOR_R123_ULONG_LONG n){ \
+        /* n may be greater than the maximum value of a single value_type */ \
+        value_type vtn;                                                 \
+        vtn = n;                                                        \
+        v[0] += n;                                                      \
+        const unsigned rshift = 8* ((sizeof(n)>sizeof(value_type))? sizeof(value_type) : 0); \
+        for(size_t i=1; i<_N; ++i){                                     \
+            if(rshift){                                                 \
+                n >>= rshift;                                           \
+            }else{                                                      \
+                n=0;                                                    \
+            }                                                           \
+            if( v[i-1] < vtn )                                          \
+                ++n;                                                    \
+            if( n==0 ) break;                                           \
+            vtn = n;                                                    \
+            v[i] += n;                                                  \
+        }                                                               \
+        return *this;                                                   \
+    }                                                                   \
+
+/** @cond HIDDEN_FROM_DOXYGEN */
+
+// There are several tricky considerations for the insertion and extraction
+// operators:
+// - we would like to be able to print r123array16x8 as a sequence of 16 integers,
+//   not as 16 bytes.
+// - we would like to be able to print r123array1xm128i.
+// - we do not want an int conversion operator in r123m128i because it causes
+//   lots of ambiguity problems with automatic promotions.
+// Solution: r123arrayinsertable and r123arrayextractable
+
+template<typename T>
+struct r123arrayinsertable{
+    const T& v;
+    r123arrayinsertable(const T& t_) : v(t_) {} 
+    friend std::ostream& operator<<(std::ostream& os, const r123arrayinsertable<T>& t){
+        return os << t.v;
+    }
+};
+
+template<>
+struct r123arrayinsertable<uint8_t>{
+    const uint8_t& v;
+    r123arrayinsertable(const uint8_t& t_) : v(t_) {} 
+    friend std::ostream& operator<<(std::ostream& os, const r123arrayinsertable<uint8_t>& t){
+        return os << (int)t.v;
+    }
+};
+
+template<typename T>
+struct r123arrayextractable{
+    T& v;
+    r123arrayextractable(T& t_) : v(t_) {}
+    friend std::istream& operator>>(std::istream& is, r123arrayextractable<T>& t){
+        return is >> t.v;
+    }
+};
+
+template<>
+struct r123arrayextractable<uint8_t>{
+    uint8_t& v;
+    r123arrayextractable(uint8_t& t_) : v(t_) {} 
+    friend std::istream& operator>>(std::istream& is, r123arrayextractable<uint8_t>& t){
+        int i;
+        is >>  i;
+        t.v = i;
+        return is;
+    }
+};
+/** @endcond */
+
+#define CXXOVERLOADS(_N, W, T)                                          \
+                                                                        \
+inline std::ostream& operator<<(std::ostream& os, const r123array##_N##x##W& a){   \
+    os << r123arrayinsertable<T>(a.v[0]);                                  \
+    for(size_t i=1; i<_N; ++i)                                          \
+        os << " " << r123arrayinsertable<T>(a.v[i]);                       \
+    return os;                                                          \
+}                                                                       \
+                                                                        \
+inline std::istream& operator>>(std::istream& is, r123array##_N##x##W& a){         \
+    for(size_t i=0; i<_N; ++i){                                         \
+        r123arrayextractable<T> x(a.v[i]);                                 \
+        is >> x;                                                        \
+    }                                                                   \
+    return is;                                                          \
+}                                                                       \
+                                                                        \
+namespace random_iterator_r123{                                                        \
+ typedef r123array##_N##x##W Array##_N##x##W;                          \
+}
+                                                                        
+#endif /* __cplusplus */
+
+/* _r123array_tpl expands to a declaration of struct r123arrayNxW.  
+
+   In C, it's nothing more than a struct containing an array of N
+   objects of type T.
+
+   In C++ it's the same, but endowed with an assortment of member
+   functions, typedefs and friends.  In C++, r123arrayNxW looks a lot
+   like std::array<T,N>, has most of the capabilities of a container,
+   and satisfies the requirements outlined in compat/Engine.hpp for
+   counter and key types.  ArrayNxW, in the r123 namespace is
+   a typedef equivalent to r123arrayNxW.
+*/
+
+#define _r123array_tpl(_N, W, T)                    \
+    /** @ingroup arrayNxW */                        \
+    /** @see arrayNxW */                            \
+struct r123array##_N##x##W{                         \
+ T v[_N];                                       \
+ CXXMETHODS(_N, W, T)                           \
+ CXXMETHODS_REQUIRING_STL                       \
+};                                              \
+                                                \
+CXXOVERLOADS(_N, W, T)
+
+
+_r123array_tpl(1, 32, uint32_t)  /* r123array1x32 */
+_r123array_tpl(2, 32, uint32_t)  /* r123array2x32 */
+_r123array_tpl(4, 32, uint32_t)  /* r123array4x32 */
+_r123array_tpl(8, 32, uint32_t)  /* r123array8x32 */
+
+#if RANDOM_ITERATOR_R123_USE_64BIT
+_r123array_tpl(1, 64, uint64_t)  /* r123array1x64 */
+_r123array_tpl(2, 64, uint64_t)  /* r123array2x64 */
+_r123array_tpl(4, 64, uint64_t)  /* r123array4x64 */
+#endif
+
+_r123array_tpl(16, 8, uint8_t)  /* r123array16x8 for ARSsw, AESsw */
+
+#if RANDOM_ITERATOR_R123_USE_SSE
+_r123array_tpl(1, m128i, r123m128i) /* r123array1x128i for ARSni, AESni */
+#endif
+
+/* In C++, it's natural to use sizeof(a::value_type), but in C it's
+   pretty convoluted to figure out the width of the value_type of an
+   r123arrayNxW:
+*/
+#define RANDOM_ITERATOR_R123_W(a)   (8*sizeof(((a *)0)->v[0]))
+
+/** @namespace random_iterator_r123
+  Most of the Random123 C++ API is contained in the r123 namespace. 
+*/
+
+#endif
+
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/ars.h b/corsika/detail/framework/random/random_iterator/detail/Random123/ars.h
new file mode 100644
index 0000000000000000000000000000000000000000..015bf833ced8abcef982709c728cbe7dfecc03df
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/ars.h
@@ -0,0 +1,239 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __Random123_ars_dot_hpp__
+#define __Random123_ars_dot_hpp__
+
+#include "features/compilerfeatures.h"
+#include "array.h"
+
+#if RANDOM_ITERATOR_R123_USE_AES_NI
+
+#ifndef ARS1xm128i_DEFAULT_ROUNDS
+#define ARS1xm128i_DEFAULT_ROUNDS 7
+#endif
+
+/** @ingroup AESNI */
+enum r123_enum_ars1xm128i {ars1xm128i_rounds = ARS1xm128i_DEFAULT_ROUNDS};
+
+/* ARS1xm128i with Weyl keys.  Fast, and Crush-resistant, but NOT CRYPTO. */
+/** @ingroup AESNI */
+typedef struct r123array1xm128i ars1xm128i_ctr_t;
+/** @ingroup AESNI */
+typedef struct r123array1xm128i ars1xm128i_key_t;
+/** @ingroup AESNI */
+typedef struct r123array1xm128i ars1xm128i_ukey_t;
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE ars1xm128i_key_t ars1xm128ikeyinit(ars1xm128i_ukey_t uk) { return uk; }
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE ars1xm128i_ctr_t ars1xm128i_R(unsigned int Nrounds, ars1xm128i_ctr_t in, ars1xm128i_key_t k){
+    __m128i kweyl = _mm_set_epi64x(RANDOM_ITERATOR_R123_64BIT(0xBB67AE8584CAA73B), /* sqrt(3) - 1.0 */
+                                   RANDOM_ITERATOR_R123_64BIT(0x9E3779B97F4A7C15)); /* golden ratio */
+    /* N.B.  the aesenc instructions do the xor *after*
+    // so if we want to follow the AES pattern, we
+    // have to do the initial xor explicitly */
+    __m128i kk = k.v[0].m;
+    __m128i v = _mm_xor_si128(in.v[0].m, kk);
+    ars1xm128i_ctr_t ret;
+    RANDOM_ITERATOR_R123_ASSERT(Nrounds<=10);
+    if( Nrounds>1 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>2 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>3 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>4 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>5 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>6 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>7 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>8 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    if( Nrounds>9 ){
+        kk = _mm_add_epi64(kk, kweyl);
+        v = _mm_aesenc_si128(v, kk);
+    }
+    kk = _mm_add_epi64(kk, kweyl);
+    v = _mm_aesenclast_si128(v, kk);
+    ret.v[0].m = v;
+    return ret;
+}
+
+/** @def ars1xm128i
+@ingroup AESNI
+The ars1mx128i macro provides a C API interface to the @ref AESNI "ARS" CBRNG with the default number of rounds i.e. \c ars1xm128i_rounds **/
+#define ars1xm128i(c,k) ars1xm128i_R(ars1xm128i_rounds, c, k)
+
+/** @ingroup AESNI */
+typedef struct r123array4x32 ars4x32_ctr_t;
+/** @ingroup AESNI */
+typedef struct r123array4x32 ars4x32_key_t;
+/** @ingroup AESNI */
+typedef struct r123array4x32 ars4x32_ukey_t;
+
+typedef struct r123array2x64 ars2x64_ctr_t;
+/** @ingroup AESNI */
+typedef struct r123array2x64 ars2x64_key_t;
+/** @ingroup AESNI */
+typedef struct r123array2x64 ars2x64_ukey_t;
+
+/** @ingroup AESNI */
+enum r123_enum_ars4x32 {ars4x32_rounds = ARS1xm128i_DEFAULT_ROUNDS};
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE ars4x32_key_t ars4x32keyinit(ars4x32_ukey_t uk) { return uk; }
+/** @ingroup AESNI */
+RANDOM_ITERATOR_R123_STATIC_INLINE ars4x32_ctr_t ars4x32_R(unsigned int Nrounds, ars4x32_ctr_t c, ars4x32_key_t k){
+    ars1xm128i_ctr_t c128;
+    ars1xm128i_key_t k128;
+    c128.v[0].m = _mm_set_epi32(c.v[3], c.v[2], c.v[1], c.v[0]);
+    k128.v[0].m = _mm_set_epi32(k.v[3], k.v[2], k.v[1], k.v[0]);
+    c128 = ars1xm128i_R(Nrounds, c128, k128);
+    _mm_storeu_si128((__m128i*)&c.v[0], c128.v[0].m);
+    return c;
+}
+
+/** @def ars4x32
+@ingroup AESNI
+The ars4x32 macro provides a C API interface to the @ref AESNI "ARS" CBRNG with the default number of rounds i.e. \c ars4x32_rounds **/
+#define ars4x32(c,k) ars4x32_R(ars4x32_rounds, c, k)
+
+#ifdef __cplusplus
+namespace random_iterator_r123{
+/** 
+@ingroup AESNI
+
+ARS1xm128i_R exports the member functions, typedefs and operator overloads required by a @ref CBRNG class.
+
+ARS1xm128i uses the crypotgraphic AES round function, but a @b non-cryptographc key schedule
+to save time and space.
+
+ARS1xm128i is only available when the feature-test macro RANDOM_ITERATOR_R123_USE_AES_NI is true, which
+should occur only when the compiler is configured to generate AES-NI instructions (or
+when defaults are overridden by compile-time, compiler-command-line options).
+
+The template argument, ROUNDS, is the number of times the ARS round
+functions will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=5 or more.
+
+@class ARS1xm128i_R
+
+*/
+template<unsigned int ROUNDS>
+struct ARS1xm128i_R{
+    typedef ars1xm128i_ctr_t ctr_type;
+    typedef ars1xm128i_key_t key_type;
+    typedef ars1xm128i_key_t ukey_type;
+    static const unsigned int rounds=ROUNDS;
+    RANDOM_ITERATOR_R123_FORCE_INLINE(ctr_type operator()(ctr_type ctr, key_type key) const){
+        return ars1xm128i_R(ROUNDS, ctr, key);
+    }
+};
+
+/** @class ARS4x32_R
+    @ingroup AESNI
+*/
+
+template<unsigned int ROUNDS>
+struct ARS4x32_R{
+    typedef ars4x32_ctr_t ctr_type;
+    typedef ars4x32_key_t key_type;
+    typedef ars4x32_key_t ukey_type;
+    static const unsigned int rounds=ROUNDS;
+    RANDOM_ITERATOR_R123_FORCE_INLINE(ctr_type operator()(ctr_type ctr, key_type key) const){
+        return ars4x32_R(ROUNDS, ctr, key);
+    }
+
+
+};
+
+template<unsigned int ROUNDS>
+struct ARS2x64_R{
+
+    typedef ars2x64_ctr_t ctr_type;
+    typedef ars2x64_key_t key_type;
+    typedef ars2x64_key_t ukey_type;
+
+    static const unsigned int rounds=ROUNDS;
+
+    RANDOM_ITERATOR_R123_FORCE_INLINE(ctr_type operator()(ctr_type ctr, key_type key) const){
+
+    	ars4x32_ctr_t ctr_{ctr.v[0], ctr.v[0]>>32 , ctr.v[1], ctr.v[1]>>32};
+    	ars4x32_key_t key_{key.v[0], key.v[0]>>32 , key.v[1], key.v[1]>>32};
+    	ars4x32_ctr_t res_ = ars4x32_R(ROUNDS, ctr_, key_);
+    	ctr_type res{{}};
+    	res.v[0] = (res.v[0] | res_[1])<<32;
+    	res.v[0] = (res.v[0] | res_[0]);
+    	res.v[1] = (res.v[1] | res_[3])<<32;
+    	res.v[1] = (res.v[1] | res_[2]);
+
+        return res;
+    }
+};
+/**
+@ingroup AESNI
+
+@class ARS1xm128i_R
+  ARS1xm128i is equivalent to ARS1xm128i_R<7>.    With 7 rounds,
+  the ARS1xm128i CBRNG  has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+  performance. */
+typedef ARS1xm128i_R<ars1xm128i_rounds> ARS1xm128i;
+typedef ARS4x32_R<ars4x32_rounds> ARS4x32;
+typedef ARS2x64_R<ars4x32_rounds> ARS2x64;
+
+} // namespace random_iterator_r123
+
+#endif /* __cplusplus */
+
+#endif /* RANDOM_ITERATOR_R123_USE_AES_NI */
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/boxmuller.hpp b/corsika/detail/framework/random/random_iterator/detail/Random123/boxmuller.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0c282cb8cafcd69d100341614900d275be3dc485
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/boxmuller.hpp
@@ -0,0 +1,139 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+// This file implements the Box-Muller method for generating gaussian
+// random variables (GRVs).  Box-Muller has the advantage of
+// deterministically requiring exactly two uniform random variables as
+// input and producing exactly two GRVs as output, which makes it
+// especially well-suited to the counter-based generators in
+// Random123.  Other methods (e.g., Ziggurat, polar) require an
+// indeterminate number of inputs for each output and so require a
+// 'MicroURNG' to be used with Random123.  The down side of Box-Muller
+// is that it calls sincos, log and sqrt, which may be slow.  However,
+// on GPUs, these functions are remarkably fast, which makes
+// Box-Muller the fastest GRV generator we know of on GPUs.
+//
+// This file exports two structs and one overloaded function,
+// all in the r123 namespace:
+//   struct r123::float2{ float x,y; }
+//   struct r123::double2{ double x,y; }
+//
+//   r123::float2  r123::boxmuller(uint32_t u0, uint32_t u1);
+//   r123::double2 r123::boxmuller(uint64_t u0, uint64_t u1);
+//  
+// float2 and double2 are identical to their synonymous global-
+// namespace structures in CUDA.
+//
+// This file may not be as portable, and has not been tested as
+// rigorously as other files in the library, e.g., the generators.
+// Nevertheless, we hope it is useful and we encourage developers to
+// copy it and modify it for their own use.  We invite comments and
+// improvements.
+
+#ifndef _r123_BOXMULLER_HPP__
+#define _r123_BOXMULLER_HPP__
+
+#include <Random123/features/compilerfeatures.h>
+#include <Random123/uniform.hpp>
+#include <math.h>
+
+namespace random_iterator_r123{
+
+#if !defined(__CUDACC__)
+typedef struct { float x, y; } float2;
+typedef struct { double x, y; } double2;
+#else
+typedef ::float2 float2;
+typedef ::double2 double2;
+#endif
+
+#if !defined(RANDOM_ITERATOR_R123_NO_SINCOS) && defined(__APPLE__)
+/* MacOS X 10.10.5 (2015) doesn't have sincosf */
+#define RANDOM_ITERATOR_R123_NO_SINCOS 1
+#endif
+
+#if RANDOM_ITERATOR_R123_NO_SINCOS /* enable this if sincos and sincosf are not in the math library */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE void sincosf(float x, float *s, float *c) {
+    *s = sinf(x);
+    *c = cosf(x);
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE void sincos(double x, double *s, double *c) {
+    *s = sin(x);
+    *c = cos(x);
+}
+#endif /* sincos is not in the math library */
+
+#if !defined(CUDART_VERSION) || CUDART_VERSION < 5000 /* enabled if sincospi and sincospif are not in math lib */
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE void sincospif(float x, float *s, float *c){
+    const float PIf = 3.1415926535897932f;
+    sincosf(PIf*x, s, c);
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE void sincospi(double x, double *s, double *c) {
+    const double PI = 3.1415926535897932;
+    sincos(PI*x, s, c);
+}
+#endif /* sincospi is not in math lib */
+
+/*
+ * take two 32bit unsigned random values and return a float2 with
+ * two random floats in a normal distribution via a Box-Muller transform
+ */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE float2 boxmuller(uint32_t u0, uint32_t u1) {
+    float r;
+    float2 f;
+    sincospif(uneg11<float>(u0), &f.x, &f.y);
+    r = sqrtf(-2.f * logf(u01<float>(u1))); // u01 is guaranteed to avoid 0.
+    f.x *= r;
+    f.y *= r;
+    return f;
+}
+
+/*
+ * take two 64bit unsigned random values and return a double2 with
+ * two random doubles in a normal distribution via a Box-Muller transform
+ */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double2 boxmuller(uint64_t u0, uint64_t u1) {
+    double r;
+    double2 f;
+
+    sincospi(uneg11<double>(u0), &f.x, &f.y);
+    r = sqrt(-2. * log(u01<double>(u1))); // u01 is guaranteed to avoid 0.
+    f.x *= r;
+    f.y *= r;
+    return f;
+}
+} // namespace random_iterator_r123
+
+#endif /* BOXMULLER_H__ */
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/Engine.hpp b/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/Engine.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..867d765f728afef461af0873e5bf3e93e5aeb673
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/Engine.hpp
@@ -0,0 +1,276 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __Engine_dot_hpp_
+#define __Engine_dot_hpp_
+
+#include "../features/compilerfeatures.h"
+#include "../array.h"
+#include <limits>
+#include <stdexcept>
+#include <sstream>
+#include <algorithm>
+#include <vector>
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+#include <type_traits>
+#endif
+
+namespace random_iterator_r123{
+/**
+  If G satisfies the requirements of a CBRNG, and has a ctr_type whose
+  value_type is an unsigned integral type, then Engine<G> satisfies
+  the requirements of a C++11 "Uniform Random Number Engine" and can
+  be used in any context where such an object is expected.
+
+  Note that wrapping a counter based RNG with a traditional API in
+  this way obscures much of the power of counter based PRNGs.
+  Nevertheless, it may be of value in applications that are already
+  coded to work with the C++11 random number engines.
+
+  The MicroURNG template in MicroURNG.hpp
+  provides the more limited functionality of a C++11 "Uniform
+  Random Number Generator", but leaves the application in control
+  of counters and keys and hence may be preferable to the Engine template.
+  For example, a MicroURNG allows one to use C++11 "Random Number
+  Distributions"  without giving up control over the counters
+  and keys.
+*/ 
+
+template<typename CBRNG>
+struct Engine {
+    typedef CBRNG cbrng_type;
+    typedef typename CBRNG::ctr_type ctr_type;
+    typedef typename CBRNG::key_type key_type;
+    typedef typename CBRNG::ukey_type ukey_type;
+    typedef typename ctr_type::value_type result_type;
+
+protected:
+    cbrng_type b;
+    key_type key;
+    ctr_type c;
+    ctr_type v;
+
+    void fix_invariant(){
+        if( v.back() != 0 ) {
+            result_type vv = v.back();
+            v = b(c, key);
+            v.back() = vv;
+	}
+    }        
+public:
+    explicit Engine() : b(), c() {
+	ukey_type x = {{}};
+        v.back() = 0;
+        key = x;
+    }
+    explicit Engine(result_type r) : b(), c() {
+        ukey_type x = {{typename ukey_type::value_type(r)}};
+        v.back() = 0;
+        key = x;
+    }
+    // 26.5.3 says that the SeedSeq templates shouldn't particpate in
+    // overload resolution unless the type qualifies as a SeedSeq.
+    // How that is determined is unspecified, except that "as a
+    // minimum a type shall not qualify as a SeedSeq if it is
+    // implicitly convertible to a result_type."  
+    //
+    // First, we make sure that even the non-const copy constructor
+    // works as expected.  In addition, if we've got C++11
+    // type_traits, we use enable_if and is_convertible to implement
+    // the convertible-to-result_type restriction.  Otherwise, the
+    // template is unconditional and will match in some surpirsing
+    // and undesirable situations.
+    Engine(Engine& e) : b(e.b), key(e.key), c(e.c){
+        v.back() = e.v.back();
+        fix_invariant();
+    }
+    Engine(const Engine& e) : b(e.b), key(e.key), c(e.c){
+        v.back() = e.v.back();
+        fix_invariant();
+    }
+
+    template <typename SeedSeq>
+    explicit Engine(SeedSeq &s
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+                    , typename std::enable_if<!std::is_convertible<SeedSeq, result_type>::value>::type* =0
+#endif
+                    )
+        : b(), c() {
+        ukey_type ukey = ukey_type::seed(s);
+        key = ukey;
+        v.back() = 0;
+    }
+    void seed(result_type r){
+        *this = Engine(r);
+    }
+    template <typename SeedSeq>
+    void seed(SeedSeq &s
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+                    , typename std::enable_if<!std::is_convertible<SeedSeq, result_type>::value>::type* =0
+#endif
+              ){ 
+        *this = Engine(s);
+    }
+    void seed(){
+        *this = Engine();
+    }
+    friend bool operator==(const Engine& lhs, const Engine& rhs){
+        return lhs.c==rhs.c && lhs.v.back() == rhs.v.back() && lhs.key == rhs.key;
+    }
+    friend bool operator!=(const Engine& lhs, const Engine& rhs){
+        return lhs.c!=rhs.c || lhs.v.back()!=rhs.v.back() || lhs.key!=rhs.key;
+    }
+
+    friend std::ostream& operator<<(std::ostream& os, const Engine& be){
+        return os << be.c << " " << be.key << " " << be.v.back();
+    }
+
+    friend std::istream& operator>>(std::istream& is, Engine& be){
+        is >> be.c >> be.key >> be.v.back();
+        be.fix_invariant();
+        return is;
+    }
+
+    // The <random> shipped with MacOS Xcode 4.5.2 imposes a
+    // non-standard requirement that URNGs also have static data
+    // members: _Min and _Max.  Later versions of libc++ impose the
+    // requirement only when constexpr isn't supported.  Although the
+    // Xcode 4.5.2 requirement is clearly non-standard, it is unlikely
+    // to be fixed and it is very easy work around.  We certainly
+    // don't want to go to great lengths to accommodate every buggy
+    // library we come across, but in this particular case, the effort
+    // is low and the benefit is high, so it's worth doing.  Thanks to
+    // Yan Zhou for pointing this out to us.  See similar code in
+    // ../MicroURNG.hpp
+    const static result_type _Min = 0;
+    const static result_type _Max = ~((result_type)0);
+
+    static RANDOM_ITERATOR_R123_CONSTEXPR result_type min RANDOM_ITERATOR_R123_NO_MACRO_SUBST () { return _Min; }
+    static RANDOM_ITERATOR_R123_CONSTEXPR result_type max RANDOM_ITERATOR_R123_NO_MACRO_SUBST () { return _Max; }
+
+    result_type operator()(){
+        if( c.size() == 1 )     // short-circuit the scalar case.  Compilers aren't mind-readers.
+            return b(c.incr(), key)[0];
+        result_type& elem = v.back();
+        if( elem == 0 ){
+            v = b(c.incr(), key);
+            result_type ret = v.back();
+            elem = c.size()-1;
+            return ret;
+        }
+        return v[--elem];
+    }
+
+    void discard(RANDOM_ITERATOR_R123_ULONG_LONG skip){
+        // don't forget:  elem counts down
+        size_t nelem = c.size();
+	size_t sub = skip % nelem;
+        result_type& elem  = v.back();
+        skip /= nelem;
+	if (elem < sub) {
+	    elem += nelem;
+	    skip++;
+	}
+	elem -= sub;
+        c.incr(skip);
+        fix_invariant();
+    }
+         
+    //--------------------------
+    // Some bonus methods, not required for a Random Number
+    // Engine
+
+    // Constructors and seed() method for ukey_type seem useful
+    // We need const and non-const to supersede the SeedSeq template.
+    explicit Engine(const ukey_type &uk) : key(uk), c(){ v.back() = 0; }
+    explicit Engine(ukey_type &uk) : key(uk), c(){  v.back() = 0; }
+    void seed(const ukey_type& uk){
+        *this = Engine(uk);
+    }        
+    void seed(ukey_type& uk){
+        *this = Engine(uk);
+    }        
+
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+    template <typename DUMMY=void>
+    explicit Engine(const key_type& k,
+                    typename std::enable_if<!std::is_same<ukey_type, key_type>::value, DUMMY>::type* = 0)
+        : key(k), c(){ v.back() = 0; }
+
+    template <typename DUMMY=void>
+    void seed(const key_type& k,
+              typename std::enable_if<!std::is_same<ukey_type, key_type>::value, DUMMY>::type* = 0){
+        *this = Engine(k);
+    }
+#endif
+
+    // Forward the e(counter) to the CBRNG we are templated
+    // on, using the current value of the key.
+    ctr_type operator()(const ctr_type& c) const{
+        return b(c, key);
+    }
+
+    key_type getkey() const{
+        return key;
+    }
+
+    // N.B.  setkey(k) is different from seed(k) because seed(k) zeros
+    // the counter (per the C++11 requirements for an Engine), whereas
+    // setkey does not.
+    void setkey(const key_type& k){
+        key = k;
+        fix_invariant();
+    }
+
+    // Maybe the caller want's to know the details of
+    // the internal state, e.g., so it can call a different
+    // bijection with the same counter.
+    std::pair<ctr_type, result_type> getcounter() const {
+        return std::make_pair(c, v.back());
+    }
+
+    // And the inverse.
+    void setcounter(const ctr_type& _c, result_type _elem){
+        static const size_t nelem = c.size();
+        if( _elem >= nelem )
+            throw std::range_error("Engine::setcounter called  with elem out of range");
+        c = _c;
+        v.back() = _elem;
+        fix_invariant();
+    }
+
+    void setcounter(const std::pair<ctr_type, result_type>& ce){
+        setcounter(ce.first, ce.second);
+    }
+};
+} // namespace random_iterator_r123
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/gsl_cbrng.h b/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/gsl_cbrng.h
new file mode 100644
index 0000000000000000000000000000000000000000..44457d002b0d40ec5319236f67bcd3ec2a3ce629
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/conventional/gsl_cbrng.h
@@ -0,0 +1,128 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __r123_compat_gslrng_dot_h__
+#define __r123_compat_gslrng_dot_h__
+
+#include <gsl/gsl_rng.h>
+#include <string.h>
+
+/**
+   The macro:  GSL_CBRNG(NAME, CBRNGNAME)
+   declares the necessary structs and  constants that define a
+   gsl_rng_NAME type based on the counter-based RNG CBRNGNAME.  For example:
+
+   Usage:
+
+   @code
+   #include <Random123/threefry.h>
+   #include <Random123/conventional/gsl_cbrng.h>  // this file
+   GSL_CBRNG(cbrng, threefry4x32); // creates gsl_rng_cbrng
+
+   int main(int argc, char **argv){
+       gsl_rng *r = gsl_rng_alloc(gsl_rng_cbrng);
+       ... use r as you would use any other gsl_rng ...   
+    }
+    @endcode
+
+    It requires that NAME be the name of a CBRNG that follows the
+    naming and stylistic conventions of the Random123 library.
+
+    Note that wrapping a \ref CBRNG "counter-based PRNG" with a traditional API in
+    this way obscures much of the power of the CBRNG API.
+    Nevertheless, it may be of value to applications that are already
+    coded to work with GSL random number generators, and that wish
+    to use the RNGs in the Random123 library.
+
+ */ 
+
+#define GSL_CBRNG(NAME, CBRNGNAME)                                      \
+const gsl_rng_type *gsl_rng_##NAME;                                     \
+                                                                        \
+typedef struct{                                                         \
+    CBRNGNAME##_ctr_t ctr;                                                   \
+    CBRNGNAME##_ctr_t r;                                                     \
+    CBRNGNAME##_key_t key;                                                   \
+    int elem;                                                           \
+} NAME##_state;                                                         \
+                                                                        \
+static unsigned long int NAME##_get(void *vstate){                      \
+    NAME##_state *st = (NAME##_state *)vstate;                          \
+    const int N=sizeof(st->ctr.v)/sizeof(st->ctr.v[0]);                 \
+    if( st->elem == 0 ){                                                \
+        ++st->ctr.v[0];                                                 \
+        if( N>1 && st->ctr.v[0] == 0 ) ++st->ctr.v[1];                  \
+        if( N>2 && st->ctr.v[1] == 0 ) ++st->ctr.v[2];                  \
+        if( N>3 && st->ctr.v[2] == 0 ) ++st->ctr.v[3];                  \
+        st->r = CBRNGNAME(st->ctr, st->key);                                 \
+        st->elem = N;                                                   \
+    }                                                                   \
+    return 0xffffffffUL & st->r.v[--st->elem];                          \
+}                                                                       \
+                                                                        \
+static double                                                           \
+NAME##_get_double (void * vstate)                                       \
+{                                                                       \
+    return NAME##_get (vstate)/4294967296.0;                            \
+}                                                                       \
+                                                                        \
+static void NAME##_set(void *vstate, unsigned long int s){              \
+    NAME##_state *st = (NAME##_state *)vstate;                          \
+    st->elem = 0;                                                       \
+    /* Assume that key and ctr have an array member, v,                 \
+       as if they are r123arrayNxW.  If not, this will fail             \
+       to compile.  In particular, this macro fails to compile          \
+       when the underlying CBRNG requires use of keyinit */             \
+    memset(&st->ctr.v[0], 0, sizeof(st->ctr.v));                        \
+    memset(&st->key.v[0], 0, sizeof(st->key.v));                        \
+    /* GSL 1.15 documentation says this about gsl_rng_set:              \
+         Note that the most generators only accept 32-bit seeds, with higher \
+         values being reduced modulo 2^32.  For generators with smaller \
+         ranges the maximum seed value will typically be lower.         \
+     so we won't jump through any hoops here to deal with               \
+     high bits if sizeof(unsigned long) > sizeof(uint32_t). */          \
+    st->key.v[0] = s;                                                   \
+}                                                                       \
+                                                                        \
+static const gsl_rng_type NAME##_type = {                               \
+    #NAME,                                                              \
+    0xffffffffUL,                                                       \
+    0,                                                                  \
+    sizeof(NAME##_state),                                               \
+    &NAME##_set,                                                        \
+    &NAME##_get,                                                        \
+    &NAME##_get_double                                                  \
+};                                                                      \
+                                                                        \
+const gsl_rng_type *gsl_rng_##NAME = &NAME##_type
+
+#endif
+
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/clangfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/clangfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..6fe7a572c86ad69f83eb60df1a5a6d10d4215fcd
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/clangfeatures.h
@@ -0,0 +1,93 @@
+/*
+Copyright 2010-2016, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __clangfeatures_dot_hpp
+#define __clangfeatures_dot_hpp
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#if (defined(__x86_64__)||defined(__i386__))
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 1
+#else
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT
+#define RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT __has_feature(cxx_static_assert)
+#endif
+
+// With clang-3.6, -Wall warns about unused-local-typedefs.
+// The "obvious" thing to do is to ignore -Wunused-local-typedefs,
+// but that doesn't work because earlier versions of clang blow
+// up on an 'unknown warning group'.  So we briefly ignore -Wall...
+// It's tempting to just give up on static assertions in pre-c++11 code.
+#if !RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT && !defined(RANDOM_ITERATOR_R123_STATIC_ASSERT)
+#define RANDOM_ITERATOR_R123_STATIC_ASSERT(expr, msg) \
+_Pragma("clang diagnostic push")                      \
+_Pragma("clang diagnostic ignored \"-Wall\"")     \
+typedef char static_assertion[(!!(expr))*2-1] \
+_Pragma("clang diagnostic pop")
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR
+#define RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR __has_feature(cxx_constexpr)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS __has_feature(cxx_explicit_conversions)
+#endif
+
+// With clang-3.0, the apparently simpler:
+//  #define RANDOM_ITERATOR_R123_USE_CXX11_RANDOM __has_include(<random>)
+// dumps core.
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_RANDOM
+#if __cplusplus>=201103L && __has_include(<random>)
+#define RANDOM_ITERATOR_R123_USE_CXX11_RANDOM 1
+#else
+#define RANDOM_ITERATOR_R123_USE_CXX11_RANDOM 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+#if __cplusplus>=201103L && __has_include(<type_traits>)
+#define RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS 1
+#else
+#define RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS 0
+#endif
+#endif
+
+#include "gccfeatures.h"
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/compilerfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/compilerfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..0648742cdd5d522375ee08dec325a06f59c27ac6
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/compilerfeatures.h
@@ -0,0 +1,343 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/**
+
+@page porting Preprocessor symbols for porting Random123 to different platforms.
+
+The Random123 library is portable across C, C++, CUDA, OpenCL environments,
+and multiple operating systems (Linux, Windows 7, Mac OS X, FreeBSD, Solaris).
+This level of portability requires the abstraction of some features
+and idioms that are either not standardized (e.g., asm statments), or for which 
+different vendors have their own standards (e.g., SSE intrinsics) or for
+which vendors simply refuse to conform to well-established standards (e.g., <inttypes.h>).
+
+Random123/features/compilerfeatures.h
+conditionally includes a compiler-or-OS-specific Random123/featires/XXXfeatures.h file which
+defines appropriate values for the preprocessor symbols which can be used with
+a specific compiler or OS.  Those symbols will then
+be used by other header files and source files in the Random123
+library (and may be used by applications) to control what actually
+gets presented to the compiler.
+
+Most of the symbols are boolean valued.  In general, they will
+\b always be defined with value either 1 or 0, so do
+\b NOT use \#ifdef.  Use \#if RANDOM_ITERATOR_R123_USE_SOMETHING instead.
+
+Library users can override any value by defining the pp-symbol with a compiler option,
+e.g.,
+
+    cc -DRANDOM_ITERATOR_R123_USE_MULHILO64_C99 
+
+will use a strictly c99 version of the full-width 64x64->128-bit multiplication
+function, even if it would be disabled by default.
+
+All boolean-valued pre-processor symbols in Random123/features/compilerfeatures.h start with the prefix RANDOM_ITERATOR_R123_USE_
+@verbatim
+         AES_NI
+         AES_OPENSSL
+         SSE4_2
+         SSE4_1
+         SSE
+
+         STD_RANDOM
+
+         GNU_UINT128
+         ASM_GNU
+         ASM_MSASM
+
+         CPUID_MSVC
+
+         CXX11_RANDOM
+         CXX11_TYPE_TRAITS
+         CXX11_STATIC_ASSERT
+         CXX11_CONSTEXPR
+         CXX11_UNRESTRICTED_UNIONS
+         CXX11_EXPLICIT_CONVERSIONS
+         CXX11_LONG_LONG
+         CXX11_STD_ARRAY
+         CXX11 
+   
+         X86INTRIN_H
+         IA32INTRIN_H
+         XMMINTRIN_H
+         EMMINTRIN_H
+         SMMINTRIN_H
+         WMMINTRIN_H
+         INTRIN_H
+
+         MULHILO32_ASM
+         MULHILO64_ASM
+         MULHILO64_MSVC_INTRIN
+         MULHILO64_CUDA_INTRIN
+         MULHILO64_OPENCL_INTRIN
+         MULHILO64_C99
+
+         U01_DOUBLE
+	 
+@endverbatim
+Most have obvious meanings.  Some non-obvious ones:
+
+AES_NI and AES_OPENSSL are not mutually exclusive.  You can have one,
+both or neither.
+
+GNU_UINT128 says that it's safe to use __uint128_t, but it
+does not require its use.  In particular, it should be
+used in mulhilo<uint64_t> only if MULHILO64_ASM is unset.
+
+If the XXXINTRIN_H macros are true, then one should
+@code
+#include <xxxintrin.h>
+@endcode
+to gain accesss to compiler intrinsics.
+
+The CXX11_SOME_FEATURE macros allow the code to use specific
+features of the C++11 language and library.  The catchall
+In the absence of a specific CXX11_SOME_FEATURE, the feature
+is controlled by the catch-all RANDOM_ITERATOR_R123_USE_CXX11 macro.
+
+U01_DOUBLE defaults on, and can be turned off (set to 0)
+if one does not want the utility functions that convert to double
+(i.e. u01_*_53()), e.g. on OpenCL without the cl_khr_fp64 extension.
+
+There are a number of invariants that are always true.  Application code may
+choose to rely on these:
+
+<ul>
+<li>ASM_GNU and ASM_MASM are mutually exclusive
+<li>The "higher" SSE values imply the lower ones.
+</ul>
+
+There are also non-boolean valued symbols:
+
+<ul>
+<li>RANDOM_ITERATOR_R123_STATIC_INLINE -
+  According to both C99 and GNU99, the 'static inline' declaration allows
+  the compiler to not emit code if the function is not used.  
+  Note that the semantics of 'inline', 'static' and 'extern' in
+  gcc have changed over time and are subject to modification by
+  command line options, e.g., -std=gnu89, -fgnu-inline.
+  Nevertheless, it appears that the meaning of 'static inline' 
+  has not changed over time and (with a little luck) the use of 'static inline'
+  here will be portable between versions of gcc and to other C99
+  compilers.
+  See: http://gcc.gnu.org/onlinedocs/gcc/Inline.html
+       http://www.greenend.org.uk/rjk/2003/03/inline.html
+
+<li>RANDOM_ITERATOR_R123_FORCE_INLINE(decl) -
+  which expands to 'decl', adorned with the compiler-specific
+  embellishments to strongly encourage that the declared function be
+  inlined.  If there is no such compiler-specific magic, it should
+  expand to decl, unadorned.
+   
+<li>RANDOM_ITERATOR_R123_CUDA_DEVICE - which expands to __device__ (or something else with
+  sufficiently similar semantics) when CUDA is in use, and expands
+  to nothing in other cases.
+
+<li>RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE - which expands to 'thread' (or
+  something else with sufficiently similar semantics) when compiling a
+  Metal kernel, and expands to nothing in other cases.
+
+<li>RANDOM_ITERATOR_R123_ASSERT(x) - which expands to assert(x), or maybe to nothing at
+  all if we're in an environment so feature-poor that you can't even
+  call assert (I'm looking at you, CUDA and OpenCL), or even include
+  assert.h safely (OpenCL).
+
+<li>RANDOM_ITERATOR_R123_STATIC_ASSERT(expr,msg) - which expands to
+  static_assert(expr,msg), or to an expression that
+  will raise a compile-time exception if expr is not true.
+
+<li>RANDOM_ITERATOR_R123_ULONG_LONG - which expands to a declaration of the longest available
+  unsigned integer.
+
+<li>RANDOM_ITERATOR_R123_64BIT(x) - expands to something equivalent to
+  UINT64_C(x) from <stdint.h>, even in environments where <stdint.h>
+  is not available, e.g., MSVC and OpenCL.
+
+<li>RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely_value) - expands to something with
+  the semantics of gcc's __builtin_expect(expr,likely_value).  If
+  the environment has nothing like __builtin_expect, it should expand
+  to just expr.
+</ul>
+
+
+\cond HIDDEN_FROM_DOXYGEN
+*/
+
+/* 
+N.B.  When something is added to the list of features, it should be
+added to each of the *features.h files, AND to examples/ut_features.cpp.
+*/
+
+/* N.B.  most other compilers (icc, nvcc, open64, llvm) will also define __GNUC__, so order matters. */
+#if defined(__METAL_MACOS__)
+#include "metalfeatures.h"
+#elif defined(__OPENCL_VERSION__) && __OPENCL_VERSION__ > 0
+#include "openclfeatures.h"
+#elif defined(__CUDACC__)
+#include "nvccfeatures.h"
+#elif defined(__ICC)
+#include "iccfeatures.h"
+#elif defined(__xlC__)
+#include "xlcfeatures.h"
+#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#include "sunprofeatures.h"
+#elif defined(__OPEN64__)
+#include "open64features.h"
+#elif defined(__clang__)
+#include "clangfeatures.h"
+#elif defined(__GNUC__)
+#include "gccfeatures.h"
+#elif defined(__PGI)
+#include "pgccfeatures.h"
+#elif defined(_MSC_FULL_VER)
+#include "msvcfeatures.h"
+#else
+#error "Can't identify compiler.  You'll need to add a new xxfeatures.hpp"
+{ /* maybe an unbalanced brace will terminate the compilation */
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11
+#define RANDOM_ITERATOR_R123_USE_CXX11 (__cplusplus >= 201103L)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT
+#define RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR
+#define RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_RANDOM
+#define RANDOM_ITERATOR_R123_USE_CXX11_RANDOM RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+#define RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_LONG_LONG
+#define RANDOM_ITERATOR_R123_USE_CXX11_LONG_LONG RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_STD_ARRAY
+#define RANDOM_ITERATOR_R123_USE_CXX11_STD_ARRAY RANDOM_ITERATOR_R123_USE_CXX11
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_C99
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_C99 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_ASSERT
+#if RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT
+#define RANDOM_ITERATOR_R123_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
+#else
+    /* if msg always_looked_like_this, we could paste it into the name.  Worth it? */
+#define RANDOM_ITERATOR_R123_STATIC_ASSERT(expr, msg) typedef char static_assertion[(!!(expr))*2-1]
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CONSTEXPR
+#if RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR
+#define RANDOM_ITERATOR_R123_CONSTEXPR constexpr
+#else
+#define RANDOM_ITERATOR_R123_CONSTEXPR
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_64BIT
+#define RANDOM_ITERATOR_R123_USE_64BIT 1
+#endif    
+
+#ifndef RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+#define RANDOM_ITERATOR_R123_USE_PHILOX_64BIT (RANDOM_ITERATOR_R123_USE_64BIT && (RANDOM_ITERATOR_R123_USE_MULHILO64_ASM || RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN || RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN || RANDOM_ITERATOR_R123_USE_GNU_UINT128 || RANDOM_ITERATOR_R123_USE_MULHILO64_C99 || RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN || RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ULONG_LONG
+#if defined(__cplusplus) && !RANDOM_ITERATOR_R123_USE_CXX11_LONG_LONG
+/* C++98 doesn't have long long.  It doesn't have uint64_t either, but
+   we will have typedef'ed uint64_t to something in the xxxfeatures.h.
+   With luck, it won't elicit complaints from -pedantic.  Cross your
+   fingers... */
+#define RANDOM_ITERATOR_R123_ULONG_LONG uint64_t
+#else
+#define RANDOM_ITERATOR_R123_ULONG_LONG unsigned long long
+#endif
+#endif
+
+/* UINT64_C should have been #defined by XXXfeatures.h, either by
+   #include <stdint.h> or through compiler-dependent hacks */
+#ifndef RANDOM_ITERATOR_R123_64BIT
+#define RANDOM_ITERATOR_R123_64BIT(x) UINT64_C(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_THROW
+#define RANDOM_ITERATOR_R123_THROW(x)    throw (x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE
+#define RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE
+#define RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE
+#endif
+    
+/*
+ * Windows.h (and perhaps other "well-meaning" code define min and
+ * max, so there's a high chance that our definition of min, max
+ * methods or use of std::numeric_limits min and max will cause
+ * complaints in any program that happened to include Windows.h or
+ * suchlike first.  We use the null macro below in our own header
+ * files definition or use of min, max to defensively preclude
+ * this problem.  It may not be enough; one might need to #define
+ * NOMINMAX before including Windows.h or compile with -DNOMINMAX.
+ */
+#define RANDOM_ITERATOR_R123_NO_MACRO_SUBST
+
+/** \endcond */
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/gccfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/gccfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..5fda36f60f32f509b74d8286027bc0a2c1d58b54
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/gccfeatures.h
@@ -0,0 +1,263 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __gccfeatures_dot_hpp
+#define __gccfeatures_dot_hpp
+
+#define RANDOM_ITERATOR_R123_GNUC_VERSION (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+
+#if !defined(__x86_64__) && !defined(__i386__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__aarch64__)
+#  error "This code has only been tested on x86, powerpc and a few arm platforms."
+#include <including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task>
+{ /* maybe an unbalanced brace will terminate the compilation */
+ /* Feel free to try the Random123 library on other architectures by changing
+ the conditions that reach this error, but you should consider it a
+ porting exercise and expect to encounter bugs and deficiencies.
+ Please let the authors know of any successes (or failures). */
+#endif
+
+#ifdef __powerpc__
+#include <ppu_intrinsics.h>
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static __inline__
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#if RANDOM_ITERATOR_R123_GNUC_VERSION >= 40000
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((always_inline))
+#else
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) __builtin_expect(expr,likely)
+#endif
+
+/* According to the C++0x standard, we should be able to test the numeric
+   value of __cplusplus == 199701L for C++98, __cplusplus == 201103L for C++11
+   But gcc has had an open bug  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773
+   since early 2001, which was finally fixed in 4.7 (early 2012).  For
+   earlier versions, the only way  to detect whether --std=c++0x was requested
+   on the command line is to look at the __GCC_EXPERIMENTAL_CXX0X__ pp-symbol.
+*/
+#if defined(__GCC_EXPERIMENTAL_CXX0X__)
+#define GNU_CXX11 (__cplusplus>=201103L || (RANDOM_ITERATOR_R123_GNUC_VERSION<40700 && 1/* defined(__GCC_EXPERIMENTAL_CXX0X__) */))
+#else
+#define GNU_CXX11 (__cplusplus>=201103L || (RANDOM_ITERATOR_R123_GNUC_VERSION<40700 && 0/* defined(__GCC_EXPERIMENTAL_CXX0X__) */))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS ((RANDOM_ITERATOR_R123_GNUC_VERSION >= 40600) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT
+#define RANDOM_ITERATOR_R123_USE_CXX11_STATIC_ASSERT ((RANDOM_ITERATOR_R123_GNUC_VERSION >= 40300) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR
+#define RANDOM_ITERATOR_R123_USE_CXX11_CONSTEXPR ((RANDOM_ITERATOR_R123_GNUC_VERSION >= 40600) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS
+#define RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS ((RANDOM_ITERATOR_R123_GNUC_VERSION >= 40500) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_RANDOM
+#define RANDOM_ITERATOR_R123_USE_CXX11_RANDOM ((RANDOM_ITERATOR_R123_GNUC_VERSION>=40500) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+#define RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS ((RANDOM_ITERATOR_R123_GNUC_VERSION>=40400) && GNU_CXX11)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#ifdef __AES__
+#define RANDOM_ITERATOR_R123_USE_AES_NI 1
+#else
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#ifdef __SSE4_2__
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#ifdef __SSE4_1__
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+/* There's no point in trying to compile SSE code in Random123
+   unless SSE2 is available. */
+#ifdef __SSE2__
+#define RANDOM_ITERATOR_R123_USE_SSE 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+/* There isn't really a good way to tell at compile time whether
+   openssl is available.  Without a pre-compilation configure-like
+   tool, it's less error-prone to guess that it isn't available.  Add
+   -DRANDOM_ITERATOR_R123_USE_AES_OPENSSL=1 and any necessary LDFLAGS or LDLIBS to
+   play with openssl */
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#if defined(__x86_64__) || defined(__aarch64__)
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 1
+#else
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#if (defined(__x86_64__)||defined(__i386__))
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 1
+#else
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 1
+#endif    
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#if (defined(__x86_64__)||defined(__i386__))
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H (1/* (defined(__x86_64__)||defined(__i386__)) */  && RANDOM_ITERATOR_R123_GNUC_VERSION >= 40402)
+#else
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H (0/* (defined(__x86_64__)||defined(__i386__)) */  && RANDOM_ITERATOR_R123_GNUC_VERSION >= 40402)
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+/* gcc -m64 on Solaris 10 defines __SSE2__ but doesn't have 
+   emmintrin.h in the include search path.  This is
+   so broken that I refuse to try to work around it.  If this
+   affects you, figure out where your emmintrin.h lives and
+   add an appropriate -I to your CPPFLAGS.  Or add -DRANDOM_ITERATOR_R123_USE_SSE=0. */
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H (RANDOM_ITERATOR_R123_USE_SSE && (RANDOM_ITERATOR_R123_GNUC_VERSION < 40402))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H ((RANDOM_ITERATOR_R123_USE_SSE4_1 || RANDOM_ITERATOR_R123_USE_SSE4_2) && (RANDOM_ITERATOR_R123_GNUC_VERSION < 40402))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN
+#if (defined(__powerpc64__))
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 1
+#else
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_MULHILO64_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_MULHILO64_MULHI_INTRIN __mulhdu
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN __mulhwu
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+/* If you add something, it must go in all the other XXfeatures.hpp
+   and in ../ut_features.cpp */
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/iccfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/iccfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..d41f139ef482f788d86a187a3a4afa6bde067e53
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/iccfeatures.h
@@ -0,0 +1,212 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __icpcfeatures_dot_hpp
+#define __icpcfeatures_dot_hpp
+
+// icc relies on gcc libraries and other toolchain components.
+#define RANDOM_ITERATOR_R123_GNUC_VERSION (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+
+#if !defined(__x86_64__) && !defined(__i386__)
+#  error "This code has only been tested on x86 platforms."
+{ // maybe an unbalanced brace will terminate the compilation
+// You are invited to try Easy123 on other architectures, by changing
+// the conditions that reach this error, but you should consider it a
+// porting exercise and expect to encounter bugs and deficiencies.
+// Please let the authors know of any successes (or failures).
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((always_inline))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) __builtin_expect(expr,likely)
+#endif
+
+// The basic idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #if some condition
+// #define RANDOM_ITERATOR_R123_SOMETHING 1
+// #else
+// #define RANDOM_ITERATOR_R123_SOMETHING 0
+// #endif
+// #endif
+// This idiom allows an external user to override any decision
+// in this file with a command-line -DRANDOM_ITERATOR_R123_SOMETHING=1 or -DRANDOM_ITERATOR_R123_SOMETHINE=0
+
+// An alternative idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #define RANDOM_ITERATOR_R123_SOMETHING (some boolean expression)
+// #endif
+// where the boolean expression might contain previously-defined RANDOM_ITERATOR_R123_SOMETHING_ELSE
+// pp-symbols.
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#ifdef __SSE4_2__
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#ifdef __SSE4_1__
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+#ifdef __SSE2__
+#define RANDOM_ITERATOR_R123_USE_SSE 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+// Unlike gcc, icc (version 12) does not pre-define an __AES__
+// pp-symbol when -maes or -xHost is on the command line.  This feels
+// like a defect in icc (it defines __SSE4_2__ in analogous
+// circumstances), but until Intel fixes it, we're better off erring
+// on the side of caution and not generating instructions that are
+// going to raise SIGILL when executed.  To get the AES-NI
+// instructions with icc, the caller must puts something like
+// -DRANDOM_ITERATOR_R123_USE_AES_NI=1 or -D__AES__ on the command line.  FWIW, the
+// AES-NI Whitepaper by Gueron says that icc has supported AES-NI from
+// 11.1 onwards.
+//
+#if defined(__AES__)
+#define RANDOM_ITERATOR_R123_USE_AES_NI ((__ICC>=1101) && 1/*defined(__AES__)*/)
+#else
+#define RANDOM_ITERATOR_R123_USE_AES_NI ((__ICC>=1101) && 0/*defined(__AES__)*/)
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+/* There isn't really a good way to tell at compile time whether
+   openssl is available.  Without a pre-compilation configure-like
+   tool, it's less error-prone to guess that it isn't available.  Add
+   -DRANDOM_ITERATOR_R123_USE_AES_OPENSSL=1 and any necessary LDFLAGS or LDLIBS to
+   play with openssl */
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO16_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO16_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+// If you add something, it must go in all the other XXfeatures.hpp
+// and in ../ut_features.cpp
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/metalfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/metalfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..d31e86b65d9fe4d15d69ea86069a9bcc9627be62
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/metalfeatures.h
@@ -0,0 +1,111 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Written by Tom Schoonjans <Tom.Schoonjans@me.com>
+ */
+
+#ifndef __metalfeatures_dot_hpp
+#define __metalfeatures_dot_hpp
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((always_inline))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE
+#define RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE thread
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE
+#define RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE constant
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#define RANDOM_ITERATOR_R123_ASSERT(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) expr
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN 1
+#endif
+
+#if RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+#include <metal_integer>
+#define RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN metal::mulhi
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_64BIT
+#define RANDOM_ITERATOR_R123_USE_64BIT 0 /* Metal currently (Feb 2019, Specification-2) does not support 64-bit variable types */
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ULONG_LONG
+/* the longest integer type in Metal (Feb 2019, Specification-2) is a
+ * 32-bit unsigned int.  Let's hope for the best... */
+#define RANDOM_ITERATOR_R123_ULONG_LONG unsigned int 
+#endif
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/msvcfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/msvcfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..894d578b3b076f55db5686e2a5cfb935979b08ab
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/msvcfeatures.h
@@ -0,0 +1,200 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __msvcfeatures_dot_hpp
+#define __msvcfeatures_dot_hpp
+
+//#if _MSVC_FULL_VER <= 15
+//#error "We've only tested MSVC_FULL_VER==15."
+//#endif
+
+#if !defined(_M_IX86) && !defined(_M_X64)
+#  error "This code has only been tested on x86 platforms."
+{ // maybe an unbalanced brace will terminate the compilation
+// You are invited to try Random123 on other architectures, by changing
+// the conditions that reach this error, but you should consider it a
+// porting exercise and expect to encounter bugs and deficiencies.
+// Please let the authors know of any successes (or failures).
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static __inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) _forceinline decl
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) expr
+#endif
+
+// The basic idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #if some condition
+// #define RANDOM_ITERATOR_R123_SOMETHING 1
+// #else
+// #define RANDOM_ITERATOR_R123_SOMETHING 0
+// #endif
+// #endif
+// This idiom allows an external user to override any decision
+// in this file with a command-line -DRANDOM_ITERATOR_R123_SOMETHING=1 or -DRANDOM_ITERATOR_R123_SOMETHINE=0
+
+// An alternative idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #define RANDOM_ITERATOR_R123_SOMETHING (some boolean expression)
+// #endif
+// where the boolean expression might contain previously-defined RANDOM_ITERATOR_R123_SOMETHING_ELSE
+// pp-symbols.
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#if defined(_M_X64)
+#define RANDOM_ITERATOR_R123_USE_AES_NI 1
+#else
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#if defined(_M_X64)
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#if defined(_M_X64)
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+#define RANDOM_ITERATOR_R123_USE_SSE 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO16_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO16_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#if defined(_M_X64)
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 1
+#else
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+#pragma warning(disable:4244)
+#pragma warning(disable:4996)
+
+// If you add something, it must go in all the other XXfeatures.hpp
+// and in ../ut_features.cpp
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/nvccfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/nvccfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..cf5d3bcbf8e94c48151b6477960fe5862b07e446
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/nvccfeatures.h
@@ -0,0 +1,125 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __r123_nvcc_features_dot_h__
+#define __r123_nvcc_features_dot_h__
+
+#if !defined(CUDART_VERSION)
+#error "why are we in nvccfeatures.h if CUDART_VERSION is not defined"
+#endif
+
+#if CUDART_VERSION < 4010
+#error "CUDA versions earlier than 4.1 produce incorrect results for some templated functions in namespaces.  Random123 isunsupported.  See comments in nvccfeatures.h"
+// This test was added in Random123-1.08 (August, 2013) because we
+// discovered that Ftype(maxTvalue<T>()) with Ftype=double and
+// T=uint64_t in examples/uniform.hpp produces -1 for CUDA4.0 and
+// earlier.  We can't be sure this bug doesn't also affect invocations
+// of other templated functions, e.g., essentially all of Random123.
+// Thus, we no longer trust CUDA versions earlier than 4.1 even though
+// we had previously tested and timed Random123 with CUDA 3.x and 4.0.
+// If you feel lucky or desperate, you can change #error to #warning, but
+// please take extra care to be sure that you are getting correct
+// results.
+#endif
+
+// nvcc falls through to gcc or msvc.  So first define
+// a couple of things and then include either gccfeatures.h
+// or msvcfeatures.h
+
+//#ifdef  __CUDA_ARCH__ allows Philox32 and Philox64 to be compiled
+//for both device and host functions in CUDA by setting compiler flags
+//for the device function
+#ifdef  __CUDA_ARCH__
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE __device__
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_THROW
+// No exceptions in CUDA, at least upto 4.0
+#define RANDOM_ITERATOR_R123_THROW(x)    RANDOM_ITERATOR_R123_ASSERT(0)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#define RANDOM_ITERATOR_R123_ASSERT(x) if((x)) ; else asm("trap;")
+#endif
+
+#else // ! __CUDA_ARCH__
+// If we're using nvcc not compiling for the CUDA architecture,
+// then we must be compiling for the host.  In that case,
+// tell the philox code to use the mulhilo64 asm because
+// nvcc doesn't grok uint128_t.
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 1
+#endif
+
+#endif // __CUDA_ARCH__
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) expr
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ULONG_LONG
+// uint64_t, which is what we'd get without this, is
+// not the same as unsigned long long
+#define RANDOM_ITERATOR_R123_ULONG_LONG unsigned long long
+#endif
+
+#if defined(__GNUC__)
+#include "gccfeatures.h"
+#elif defined(_MSC_FULL_VER)
+#include "msvcfeatures.h"
+#endif
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/open64features.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/open64features.h
new file mode 100644
index 0000000000000000000000000000000000000000..fc86f1aeff75087d3aa3418fb4de7278c75fef67
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/open64features.h
@@ -0,0 +1,50 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __open64features_dot_hpp
+#define __open64features_dot_hpp
+
+/* The gcc features are mostly right.  We just override a few and then include gccfeatures.h */
+
+/* Open64 4.2.3 and 4.2.4 accept the __uint128_t code without complaint
+   but produce incorrect code for 64-bit philox.  The MULHILO64_ASM
+   seems to work fine */
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 1
+#endif
+
+#include "gccfeatures.h"
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/openclfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/openclfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..81b8fec1124c7e2bbdbfe6dcdc0a4633aa98899f
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/openclfeatures.h
@@ -0,0 +1,89 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __openclfeatures_dot_hpp
+#define __openclfeatures_dot_hpp
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((always_inline))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#define RANDOM_ITERATOR_R123_ASSERT(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) expr
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+// XXX ATI APP SDK 2.4 clBuildProgram SEGVs if one uses uint64_t instead of
+// ulong to mul_hi.  And gets lots of complaints from stdint.h
+// on some machines.
+// But these typedefs mean we cannot include stdint.h with
+// these headers?  Do we need RANDOM_ITERATOR_R123_64T, RANDOM_ITERATOR_R123_32T, RANDOM_ITERATOR_R123_8T?
+typedef ulong uint64_t;
+typedef uint  uint32_t;
+typedef uchar uint8_t;
+#define UINT64_C(x) ((ulong)(x##UL))
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/pgccfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/pgccfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..221c2ecc7b3694ce07fc7462e04472a5ae13cfec
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/pgccfeatures.h
@@ -0,0 +1,194 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (c) 2013, Los Alamos National Security, LLC
+All rights reserved.
+
+Copyright 2013. Los Alamos National Security, LLC. This software was produced
+under U.S. Government contract DE-AC52-06NA25396 for Los Alamos National
+Laboratory (LANL), which is operated by Los Alamos National Security, LLC for
+the U.S. Department of Energy. The U.S. Government has rights to use,
+reproduce, and distribute this software.  NEITHER THE GOVERNMENT NOR LOS
+ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
+ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.  If software is modified
+to produce derivative works, such modified software should be clearly marked,
+so as not to confuse it with the version available from LANL.
+*/
+#ifndef __pgccfeatures_dot_hpp
+#define __pgccfeatures_dot_hpp
+
+#if !defined(__x86_64__) && !defined(__i386__)
+#  error "This code has only been tested on x86 platforms."
+#include <including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task>
+{ /* maybe an unbalanced brace will terminate the compilation */
+ /* Feel free to try the Random123 library on other architectures by changing
+ the conditions that reach this error, but you should consider it a
+ porting exercise and expect to encounter bugs and deficiencies.
+ Please let the authors know of any successes (or failures). */
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static inline
+#endif
+
+/* Found this example in PGI's emmintrin.h. */
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((__always_inline__))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) (expr)
+#endif
+
+/* PGI through 13.2 doesn't appear to support AES-NI. */
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+/* PGI through 13.2 appears to support MMX, SSE, SSE3, SSE3, SSSE3, SSE4a, and
+   ABM, but not SSE4.1 or SSE4.2. */
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+/* There's no point in trying to compile SSE code in Random123
+   unless SSE2 is available. */
+#ifdef __SSE2__
+#define RANDOM_ITERATOR_R123_USE_SSE 1
+#else
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+/* There isn't really a good way to tell at compile time whether
+   openssl is available.  Without a pre-compilation configure-like
+   tool, it's less error-prone to guess that it isn't available.  Add
+   -DRANDOM_ITERATOR_R123_USE_AES_OPENSSL=1 and any necessary LDFLAGS or LDLIBS to
+   play with openssl */
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 0
+#endif
+
+/* emmintrin.h from PGI #includes xmmintrin.h but then complains at link time
+   about undefined references to _mm_castsi128_ps(__m128i).  Why? */
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#ifdef __ABM__
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 1
+#else
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+/* If you add something, it must go in all the other XXfeatures.hpp
+   and in ../ut_features.cpp */
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/sse.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/sse.h
new file mode 100644
index 0000000000000000000000000000000000000000..1de01ca61fbb22832f458b8dc3455250c62d4cea
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/sse.h
@@ -0,0 +1,280 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef _Random123_sse_dot_h__
+#define _Random123_sse_dot_h__
+
+#if RANDOM_ITERATOR_R123_USE_SSE
+
+#if RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#include <x86intrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#include <ia32intrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#include <xmmintrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#include <emmintrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#include <smmintrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#include <wmmintrin.h>
+#endif
+#if RANDOM_ITERATOR_R123_USE_INTRIN_H
+#include <intrin.h>
+#endif
+#ifdef __cplusplus
+#include <iostream>
+#include <limits>
+#include <stdexcept>
+#endif
+
+#if RANDOM_ITERATOR_R123_USE_ASM_GNU
+
+/* bit25 of CX tells us whether AES is enabled. */
+RANDOM_ITERATOR_R123_STATIC_INLINE int haveAESNI(){
+    unsigned int eax, ebx, ecx, edx;
+    __asm__ __volatile__ ("cpuid": "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) :
+                      "a" (1));
+    return (ecx>>25) & 1;
+}
+#elif RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+RANDOM_ITERATOR_R123_STATIC_INLINE int haveAESNI(){
+    int CPUInfo[4];
+    __cpuid(CPUInfo, 1);
+    return (CPUInfo[2]>>25)&1;
+}
+#else /* RANDOM_ITERATOR_R123_USE_CPUID_??? */
+#warning "No RANDOM_ITERATOR_R123_USE_CPUID_XXX method chosen.  haveAESNI will always return false"
+RANDOM_ITERATOR_R123_STATIC_INLINE int haveAESNI(){
+    return 0;
+}
+#endif /* RANDOM_ITERATOR_R123_USE_ASM_GNU || RANDOM_ITERATOR_R123_USE_CPUID_MSVC */
+
+// There is a lot of annoying and inexplicable variation in the
+// SSE intrinsics available in different compilation environments.
+// The details seem to depend on the compiler, the version and
+// the target architecture.  Rather than insisting on
+// RANDOM_ITERATOR_R123_USE_feature tests for each of these in each of the
+// compilerfeatures.h files we just keep the complexity localized
+// to here...
+#if (defined(__ICC) && __ICC<1210) || (defined(_MSC_VER) && !defined(_WIN64))
+/* Is there an intrinsic to assemble an __m128i from two 64-bit words? 
+   If not, use the 4x32-bit intrisic instead.  N.B.  It looks like Intel
+   added _mm_set_epi64x to icc version 12.1 in Jan 2012.
+*/
+RANDOM_ITERATOR_R123_STATIC_INLINE __m128i _mm_set_epi64x(uint64_t v1, uint64_t v0){
+    union{
+        uint64_t u64;
+        uint32_t u32[2];
+    } u1, u0;
+    u1.u64 = v1;
+    u0.u64 = v0;
+    return _mm_set_epi32(u1.u32[1], u1.u32[0], u0.u32[1], u0.u32[0]);
+}
+#endif
+/* _mm_extract_lo64 abstracts the task of extracting the low 64-bit
+   word from an __m128i.  The _mm_cvtsi128_si64 intrinsic does the job
+   on 64-bit platforms.  Unfortunately, both MSVC and Open64 fail
+   assertions in ut_M128.cpp and ut_carray.cpp when we use the
+   _mm_cvtsi128_si64 intrinsic.  (See
+   https://bugs.open64.net/show_bug.cgi?id=873 for the Open64 bug).
+   On 32-bit platforms, there's no MOVQ, so there's no intrinsic.
+   Finally, even if the intrinsic exists, it may be spelled with or
+   without the 'x'.
+*/
+#if !defined(__x86_64__) || defined(_MSC_VER) || defined(__OPEN64__)
+RANDOM_ITERATOR_R123_STATIC_INLINE uint64_t _mm_extract_lo64(__m128i si){
+    union{
+        uint64_t u64[2];
+        __m128i m;
+    }u;
+    _mm_store_si128(&u.m, si);
+    return u.u64[0];
+}
+#elif defined(__llvm__) || defined(__ICC)
+RANDOM_ITERATOR_R123_STATIC_INLINE uint64_t _mm_extract_lo64(__m128i si){
+    return (uint64_t)_mm_cvtsi128_si64(si);
+}
+#else /* GNUC, others */
+/* FWIW, gcc's emmintrin.h has had the 'x' spelling
+   since at least gcc-3.4.4.  The no-'x' spelling showed up
+   around 4.2. */
+RANDOM_ITERATOR_R123_STATIC_INLINE uint64_t _mm_extract_lo64(__m128i si){
+    return (uint64_t)_mm_cvtsi128_si64x(si);
+}
+#endif
+#if defined(__GNUC__) && __GNUC__ < 4
+/* the cast builtins showed up in gcc4. */
+RANDOM_ITERATOR_R123_STATIC_INLINE __m128 _mm_castsi128_ps(__m128i si){
+    return (__m128)si;
+}
+#endif
+
+#ifdef __cplusplus
+
+struct r123m128i{
+    __m128i m;
+#if RANDOM_ITERATOR_R123_USE_CXX11_UNRESTRICTED_UNIONS
+    // C++98 forbids a union member from having *any* constructors.
+    // C++11 relaxes this, and allows union members to have constructors
+    // as long as there is a "trivial" default construtor.  So in C++11
+    // we can provide a r123m128i constructor with an __m128i argument, and still
+    // have the default (and hence trivial) default constructor.
+    r123m128i() = default;
+    r123m128i(__m128i _m): m(_m){}
+#endif
+    r123m128i& operator=(const __m128i& rhs){ m=rhs; return *this;}
+    r123m128i& operator=(RANDOM_ITERATOR_R123_ULONG_LONG n){ m = _mm_set_epi64x(0, n); return *this;}
+#if RANDOM_ITERATOR_R123_USE_CXX11_EXPLICIT_CONVERSIONS
+    // With C++11 we can attach explicit to the bool conversion operator
+    // to disambiguate undesired promotions.  For g++, this works
+    // only in 4.5 and above.
+    explicit operator bool() const {return _bool();}
+#else
+    // Pre-C++11, we have to do something else.  Google for the "safe bool"
+    // idiom for other ideas...
+    operator const void*() const{return _bool()?this:0;}
+#endif
+    operator __m128i() const {return m;}
+
+private:
+#if RANDOM_ITERATOR_R123_USE_SSE4_1
+    bool _bool() const{ return !_mm_testz_si128(m,m); }
+#else
+    bool _bool() const{ return 0xf != _mm_movemask_ps(_mm_castsi128_ps(_mm_cmpeq_epi32(m, _mm_setzero_si128()))); }
+#endif
+};
+
+RANDOM_ITERATOR_R123_STATIC_INLINE r123m128i& operator++(r123m128i& v){
+    __m128i& c = v.m;
+    __m128i zeroone = _mm_set_epi64x(RANDOM_ITERATOR_R123_64BIT(0), RANDOM_ITERATOR_R123_64BIT(1));
+    c = _mm_add_epi64(c, zeroone);
+    //return c;
+#if RANDOM_ITERATOR_R123_USE_SSE4_1
+    __m128i zerofff = _mm_set_epi64x(0, ~(RANDOM_ITERATOR_R123_64BIT(0)));
+    if( RANDOM_ITERATOR_R123_BUILTIN_EXPECT(_mm_testz_si128(c,zerofff), 0) ){
+        __m128i onezero = _mm_set_epi64x(RANDOM_ITERATOR_R123_64BIT(1), RANDOM_ITERATOR_R123_64BIT(0));
+        c = _mm_add_epi64(c, onezero);
+    }
+#else
+    unsigned mask  = _mm_movemask_ps( _mm_castsi128_ps(_mm_cmpeq_epi32(c, _mm_setzero_si128())));
+    // The low two bits of mask are 11 iff the low 64 bits of
+    // c are zero.
+    if( RANDOM_ITERATOR_R123_BUILTIN_EXPECT((mask&0x3) == 0x3, 0) ){
+        __m128i onezero = _mm_set_epi64x(1,0);
+        c = _mm_add_epi64(c, onezero);
+    }
+#endif
+    return v;
+}
+
+RANDOM_ITERATOR_R123_STATIC_INLINE r123m128i& operator+=(r123m128i& lhs, RANDOM_ITERATOR_R123_ULONG_LONG n){ 
+    __m128i c = lhs.m;
+    __m128i incr128 = _mm_set_epi64x(0, n);
+    c = _mm_add_epi64(c, incr128);
+    // return c;     // NO CARRY!  
+
+    int64_t lo64 = _mm_extract_lo64(c);
+    if((uint64_t)lo64 < n)
+        c = _mm_add_epi64(c, _mm_set_epi64x(1,0));
+    lhs.m = c;
+    return lhs; 
+}
+
+// We need this one because it's present, but never used in r123array1xm128i::incr
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator<=(RANDOM_ITERATOR_R123_ULONG_LONG, const r123m128i &){
+    throw std::runtime_error("operator<=(unsigned long long, r123m128i) is unimplemented.");}
+
+// The comparisons aren't implemented, but if we leave them out, and 
+// somebody writes, e.g., M1 < M2, the compiler will do an implicit
+// conversion through void*.  Sigh...
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator<(const r123m128i&, const r123m128i&){
+    throw std::runtime_error("operator<(r123m128i, r123m128i) is unimplemented.");}
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator<=(const r123m128i&, const r123m128i&){
+    throw std::runtime_error("operator<=(r123m128i, r123m128i) is unimplemented.");}
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator>(const r123m128i&, const r123m128i&){
+    throw std::runtime_error("operator>(r123m128i, r123m128i) is unimplemented.");}
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator>=(const r123m128i&, const r123m128i&){
+    throw std::runtime_error("operator>=(r123m128i, r123m128i) is unimplemented.");}
+
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator==(const r123m128i &lhs, const r123m128i &rhs){ 
+    return 0xf==_mm_movemask_ps(_mm_castsi128_ps(_mm_cmpeq_epi32(lhs, rhs))); }
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator!=(const r123m128i &lhs, const r123m128i &rhs){ 
+    return !(lhs==rhs);}
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator==(RANDOM_ITERATOR_R123_ULONG_LONG lhs, const r123m128i &rhs){
+    r123m128i LHS; LHS.m=_mm_set_epi64x(0, lhs); return LHS == rhs; }
+RANDOM_ITERATOR_R123_STATIC_INLINE bool operator!=(RANDOM_ITERATOR_R123_ULONG_LONG lhs, const r123m128i &rhs){
+    return !(lhs==rhs);}
+RANDOM_ITERATOR_R123_STATIC_INLINE std::ostream& operator<<(std::ostream& os, const r123m128i& m){
+    union{
+        uint64_t u64[2];
+        __m128i m;
+    }u;
+    _mm_storeu_si128(&u.m, m.m);
+    return os << u.u64[0] << " " << u.u64[1];
+}
+
+RANDOM_ITERATOR_R123_STATIC_INLINE std::istream& operator>>(std::istream& is, r123m128i& m){
+    uint64_t u64[2];
+    is >> u64[0] >> u64[1];
+    m.m = _mm_set_epi64x(u64[1], u64[0]);
+    return is;
+}
+
+template<typename T> inline T assemble_from_u32(uint32_t *p32); // forward declaration
+
+template <>
+inline r123m128i assemble_from_u32<r123m128i>(uint32_t *p32){
+    r123m128i ret;
+    ret.m = _mm_set_epi32(p32[3], p32[2], p32[1], p32[0]);
+    return ret;
+}
+
+#else
+
+typedef struct {
+    __m128i m;
+} r123m128i;
+
+#endif /* __cplusplus */
+
+#else /* !RANDOM_ITERATOR_R123_USE_SSE */
+RANDOM_ITERATOR_R123_STATIC_INLINE int haveAESNI(){
+    return 0;
+}
+#endif /* RANDOM_ITERATOR_R123_USE_SSE */
+
+#endif /* _Random123_sse_dot_h__ */
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/sunprofeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/sunprofeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..747d99ab2f98ea30a9a5eb5e6a7638e96e063339
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/sunprofeatures.h
@@ -0,0 +1,172 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __sunprofeatures_dot_hpp
+#define __sunprofeatures_dot_hpp
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) expr
+#endif
+
+// The basic idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #if some condition
+// #define RANDOM_ITERATOR_R123_SOMETHING 1
+// #else
+// #define RANDOM_ITERATOR_R123_SOMETHING 0
+// #endif
+// #endif
+// This idiom allows an external user to override any decision
+// in this file with a command-line -DRANDOM_ITERATOR_R123_SOMETHING=1 or -DRANDOM_ITERATOR_R123_SOMETHINE=0
+
+// An alternative idiom is:
+// #ifndef RANDOM_ITERATOR_R123_SOMETHING
+// #define RANDOM_ITERATOR_R123_SOMETHING (some boolean expression)
+// #endif
+// where the boolean expression might contain previously-defined RANDOM_ITERATOR_R123_SOMETHING_ELSE
+// pp-symbols.
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO16_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO16_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+#define RANDOM_ITERATOR_R123_USE_PHILOX_64BIT 0
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+// If you add something, it must go in all the other XXfeatures.hpp
+// and in ../ut_features.cpp
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/features/xlcfeatures.h b/corsika/detail/framework/random/random_iterator/detail/Random123/features/xlcfeatures.h
new file mode 100644
index 0000000000000000000000000000000000000000..d11006d95039b5bd5a0bcebfa01d0fa5d1080503
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/features/xlcfeatures.h
@@ -0,0 +1,210 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (c) 2013, Los Alamos National Security, LLC
+All rights reserved.
+
+Copyright 2013. Los Alamos National Security, LLC. This software was produced
+under U.S. Government contract DE-AC52-06NA25396 for Los Alamos National
+Laboratory (LANL), which is operated by Los Alamos National Security, LLC for
+the U.S. Department of Energy. The U.S. Government has rights to use,
+reproduce, and distribute this software.  NEITHER THE GOVERNMENT NOR LOS
+ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
+ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.  If software is modified
+to produce derivative works, such modified software should be clearly marked,
+so as not to confuse it with the version available from LANL.
+*/
+#ifndef __xlcfeatures_dot_hpp
+#define __xlcfeatures_dot_hpp
+
+#if !defined(__x86_64__) && !defined(__i386__) && !defined(__powerpc__)
+#  error "This code has only been tested on x86 and PowerPC platforms."
+#include <including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task>
+{ /* maybe an unbalanced brace will terminate the compilation */
+ /* Feel free to try the Random123 library on other architectures by changing
+ the conditions that reach this error, but you should consider it a
+ porting exercise and expect to encounter bugs and deficiencies.
+ Please let the authors know of any successes (or failures). */
+#endif
+
+#ifdef __cplusplus
+/* builtins are automatically available to xlc.  To use them with xlc++,
+   one must include builtins.h.   c.f
+   http://publib.boulder.ibm.com/infocenter/cellcomp/v101v121/index.jsp?topic=/com.ibm.xlcpp101.cell.doc/compiler_ref/compiler_builtins.html
+*/
+#include <builtins.h>
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_STATIC_INLINE
+#define RANDOM_ITERATOR_R123_STATIC_INLINE static inline
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_FORCE_INLINE
+#define RANDOM_ITERATOR_R123_FORCE_INLINE(decl) decl __attribute__((__always_inline__))
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_CUDA_DEVICE
+#define RANDOM_ITERATOR_R123_CUDA_DEVICE
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_ASSERT
+#include <assert.h>
+#define RANDOM_ITERATOR_R123_ASSERT(x) assert(x)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_BUILTIN_EXPECT
+#define RANDOM_ITERATOR_R123_BUILTIN_EXPECT(expr,likely) __builtin_expect(expr,likely)
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_NI
+#define RANDOM_ITERATOR_R123_USE_AES_NI 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_2
+#define RANDOM_ITERATOR_R123_USE_SSE4_2 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE4_1
+#define RANDOM_ITERATOR_R123_USE_SSE4_1 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SSE
+#define RANDOM_ITERATOR_R123_USE_SSE 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_AES_OPENSSL
+/* There isn't really a good way to tell at compile time whether
+   openssl is available.  Without a pre-compilation configure-like
+   tool, it's less error-prone to guess that it isn't available.  Add
+   -DRANDOM_ITERATOR_R123_USE_AES_OPENSSL=1 and any necessary LDFLAGS or LDLIBS to
+   play with openssl */
+#define RANDOM_ITERATOR_R123_USE_AES_OPENSSL 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_GNU_UINT128
+#define RANDOM_ITERATOR_R123_USE_GNU_UINT128 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_ASM_GNU
+#define RANDOM_ITERATOR_R123_USE_ASM_GNU 1
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_CPUID_MSVC
+#define RANDOM_ITERATOR_R123_USE_CPUID_MSVC 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_X86INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_X86INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_IA32INTRIN_H
+#define RANDOM_ITERATOR_R123_USE_IA32INTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_XMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_XMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_EMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_EMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_SMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_SMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_WMMINTRIN_H
+#define RANDOM_ITERATOR_R123_USE_WMMINTRIN_H 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_INTRIN_H
+#ifdef __ABM__
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 1
+#else
+#define RANDOM_ITERATOR_R123_USE_INTRIN_H 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_ASM 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN
+#if (defined(__powerpc64__))
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 1
+#else
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN 0
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_MULHILO64_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_MULHILO64_MULHI_INTRIN __mulhdu
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN
+#define RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN __mulhwu
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#if defined(__powerpc64__)
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM (1 /*defined(__powerpc64__)*/ && !(RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN))
+#else
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_ASM (0 /*defined(__powerpc64__)*/ && !(RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN))
+#endif
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN 0
+#endif
+
+#ifndef RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+#define RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN 0
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+#include <stdint.h>
+#ifndef UINT64_C
+#error UINT64_C not defined.  You must define __STDC_CONSTANT_MACROS before you #include <stdint.h>
+#endif
+
+/* If you add something, it must go in all the other XXfeatures.hpp
+   and in ../ut_features.cpp */
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/gsl_microrng.h b/corsika/detail/framework/random/random_iterator/detail/Random123/gsl_microrng.h
new file mode 100644
index 0000000000000000000000000000000000000000..d127292ecbfb78624acfecdfbb237e475a6ff9aa
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/gsl_microrng.h
@@ -0,0 +1,136 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef __r123_gslmicrorng_dot_h__
+#define __r123_gslmicrorng_dot_h__
+
+
+#include <gsl/gsl_rng.h>
+#include <string.h>
+
+/**   The macro: GSL_MICRORNG(NAME, CBRNGNAME) is the GSL
+   analog analog of the C++ r123::MicroURNG template.  It declares a gsl_rng
+   type named gsl_rng_NAME which uses the underlying CBRNGNAME
+   and can be invoked a limited number of times between calls to NAME_reset.
+
+   When the underlying CBRNG's \c ctr_t is an \ref arrayNxW "r123arrayNxW",
+   and the gsl_rng_NAME may called up to \c N*2^32 times 
+   between calls to \c NAME_reset.
+
+   \c NAME_reset takes a gsl_rng_NAME type, a counter and a key as arguments.
+   It restarts the micro-rng with a new base counter and key.
+
+   Note that you must call NAME_reset before the first use
+   of a gsl_rng.  NAME_reset is not called automatically by
+   gsl_rng_alloc().
+
+   @code
+   #include <Random123/threefry.h>
+   #include <Random123/gsl_microrng.h> // this file
+   GSL_MICRORNG(microcbrng, threefry4x64, 20)	// creates gsl_rng_microcbrng
+
+   int main(int argc, char** argv) {
+	gsl_rng *r = gsl_rng_alloc(gsl_rng_microcbrng);
+	threefry4x64_ctr_t c = {{}};
+	threefry4x64_key_t k = {{}};
+
+	for (...) {
+	    c.v[0] = ??; //  some application variable
+	    microcbrng_reset(r, c, k);
+	    for (...) {
+		// gaussian calls r several times.  It is safe for
+		// r to be used upto 2^20 times in this loop
+		something[i] = gsl_ran_gaussian(r, 1.5);
+	    }
+	}
+   }
+   @endcode
+   
+*/
+
+#define GSL_MICRORNG(NAME, CBRNGNAME)                                   \
+const gsl_rng_type *gsl_rng_##NAME;                                     \
+                                                                        \
+typedef struct{                                                         \
+    CBRNGNAME##_ctr_t ctr;                                              \
+    CBRNGNAME##_ctr_t r;                                                \
+    CBRNGNAME##_key_t key;                                              \
+    RANDOM_ITERATOR_R123_ULONG_LONG n;                                                  \
+    int elem;                                                           \
+} NAME##_state;                                                         \
+                                                                        \
+static unsigned long int NAME##_get(void *vstate){                      \
+    NAME##_state *st = (NAME##_state *)vstate;                          \
+    const int N=sizeof(st->ctr.v)/sizeof(st->ctr.v[0]);                 \
+    if( st->elem == 0 ){                                                \
+        CBRNGNAME##_ctr_t c = st->ctr;                                  \
+        c.v[N-1] |= st->n<<(RANDOM_ITERATOR_R123_W(CBRNGNAME##_ctr_t)-32);              \
+        st->n++;                                                        \
+        st->r = CBRNGNAME(c, st->key);                                  \
+        st->elem = N;                                                   \
+    }                                                                   \
+    return 0xffffffff & st->r.v[--st->elem];                            \
+}                                                                       \
+                                                                        \
+static double                                                           \
+NAME##_get_double (void * vstate)                                       \
+{                                                                       \
+    return NAME##_get (vstate)/4294967296.;                             \
+}                                                                       \
+                                                                        \
+static void NAME##_set(void *vstate, unsigned long int s){              \
+    NAME##_state *st = (NAME##_state *)vstate;                          \
+    (void)s; /* ignored */                                              \
+    st->elem = 0;                                                       \
+    st->n = ~0; /* will abort if _reset is not called */                \
+}                                                                       \
+                                                                        \
+static const gsl_rng_type NAME##_type = {                               \
+    #NAME,                                                              \
+    0xffffffffUL,                                                       \
+    0,                                                                  \
+    sizeof(NAME##_state),                                               \
+    &NAME##_set,                                                        \
+    &NAME##_get,                                                        \
+    &NAME##_get_double                                                  \
+};                                                                      \
+                                                                        \
+RANDOM_ITERATOR_R123_STATIC_INLINE void NAME##_reset(const gsl_rng* gr, CBRNGNAME##_ctr_t c, CBRNGNAME##_key_t k) { \
+    NAME##_state* state = (NAME##_state *)gr->state;                    \
+    state->ctr = c;                                                     \
+    state->key = k;                                                     \
+    state->n = 0;                                                       \
+    state->elem = 0;                                                    \
+}                                                                       \
+                                                                        \
+const gsl_rng_type *gsl_rng_##NAME = &NAME##_type
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/philox.h b/corsika/detail/framework/random/random_iterator/detail/Random123/philox.h
new file mode 100644
index 0000000000000000000000000000000000000000..92eb91ad7cba85d5d482ea094eca890e18805c89
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/philox.h
@@ -0,0 +1,493 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef _philox_dot_h_
+#define _philox_dot_h_
+
+/** \cond HIDDEN_FROM_DOXYGEN */
+
+#include "features/compilerfeatures.h"
+#include "array.h"
+
+
+/*
+// Macros _Foo_tpl are code generation 'templates'  They define
+// inline functions with names obtained by mangling Foo and the
+// macro arguments.  E.g.,
+//   _mulhilo_tpl(32, uint32_t, uint64_t)
+// expands to a definition of:
+//   mulhilo32(uint32_t, uint32_t, uint32_t *, uint32_t *)
+// We then 'instantiate the template' to define
+// several different functions, e.g.,
+//   mulhilo32
+//   mulhilo64
+// These functions will be visible to user code, and may
+// also be used later in subsequent templates and definitions.
+
+// A template for mulhilo using a temporary of twice the word-width.
+// Gcc figures out that this can be reduced to a single 'mul' instruction,
+// despite the apparent use of double-wide variables, shifts, etc.  It's
+// obviously not guaranteed that all compilers will be that smart, so
+// other implementations might be preferable, e.g., using an intrinsic
+// or an asm block.  On the other hand, for 32-bit multiplies,
+// this *is* perfectly standard C99 - any C99 compiler should 
+// understand it and produce correct code.  For 64-bit multiplies,
+// it's only usable if the compiler recognizes that it can do
+// arithmetic on a 128-bit type.  That happens to be true for gcc on
+// x86-64, and powerpc64 but not much else.
+*/
+#define _mulhilo_dword_tpl(W, Word, Dword)                              \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word a, Word b, Word* hip){ \
+    Dword product = ((Dword)a)*((Dword)b);                              \
+    *hip = product>>W;                                                  \
+    return (Word)product;                                               \
+}
+
+/*
+// A template for mulhilo using gnu-style asm syntax.
+// INSN can be "mulw", "mull" or "mulq".  
+// FIXME - porting to other architectures, we'll need still-more conditional
+// branching here.  Note that intrinsics are usually preferable.
+*/
+#ifdef __powerpc__
+#define _mulhilo_asm_tpl(W, Word, INSN)                         \
+RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word ax, Word b, Word *hip){ \
+    Word dx = 0;                                                \
+    __asm__("\n\t"                                              \
+        INSN " %0,%1,%2\n\t"                                    \
+        : "=r"(dx)                                              \
+        : "r"(b), "r"(ax)                                       \
+        );                                                      \
+    *hip = dx;                                                  \
+    return ax*b;                                                \
+}
+#else
+#define _mulhilo_asm_tpl(W, Word, INSN)                         \
+RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word ax, Word b, Word *hip){      \
+    Word dx;                                                    \
+    __asm__("\n\t"                                              \
+        INSN " %2\n\t"                                          \
+        : "=a"(ax), "=d"(dx)                                    \
+        : "r"(b), "0"(ax)                                       \
+        );                                                      \
+    *hip = dx;                                                  \
+    return ax;                                                  \
+}
+#endif /* __powerpc__ */
+
+/*
+// A template for mulhilo using MSVC-style intrinsics
+// For example,_umul128 is an msvc intrinsic, c.f.
+// http://msdn.microsoft.com/en-us/library/3dayytw9.aspx
+*/
+#define _mulhilo_msvc_intrin_tpl(W, Word, INTRIN)               \
+RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word a, Word b, Word* hip){       \
+    return INTRIN(a, b, hip);                                   \
+}
+
+/* N.B.  This really should be called _mulhilo_mulhi_intrin.  It just
+   happens that CUDA was the first time we used the idiom. */
+#define _mulhilo_cuda_intrin_tpl(W, Word, INTRIN)                       \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word a, Word b, RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE Word* hip){ \
+    *hip = INTRIN(a, b);                                                \
+    return a*b;                                                         \
+}
+
+/*
+// A template for mulhilo using only word-size operations and
+// C99 operators (no adc, no mulhi).  It
+// requires four multiplies and a dozen or so shifts, adds
+// and tests.  It's *SLOW*.  It can be used to
+// implement philoxNx32 on platforms that completely lack
+// 64-bit types, e.g., Metal.  
+// On 32-bit platforms, it could be used to
+// implement philoxNx64, but on such platforms both the philoxNx32
+// and the threefryNx64 cbrngs are going to have much better
+// performance.  It is enabled below by RANDOM_ITERATOR_R123_USE_MULHILO64_C99,
+// but that is currently (Feb 2019) only set by 
+// features/metalfeatures.h headers.  It can, of course, be
+// set with a compile-time -D option.
+*/
+#define _mulhilo_c99_tpl(W, Word) \
+RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word a, Word b, RANDOM_ITERATOR_R123_METAL_THREAD_ADDRESS_SPACE Word *hip){ \
+    const unsigned WHALF = W/2;                                    \
+    const Word LOMASK = ((((Word)1)<<WHALF)-1);                    \
+    Word lo = a*b;               /* full low multiply */           \
+    Word ahi = a>>WHALF;                                           \
+    Word alo = a& LOMASK;                                          \
+    Word bhi = b>>WHALF;                                           \
+    Word blo = b& LOMASK;                                          \
+                                                                   \
+    Word ahbl = ahi*blo;                                           \
+    Word albh = alo*bhi;                                           \
+                                                                   \
+    Word ahbl_albh = ((ahbl&LOMASK) + (albh&LOMASK));                   \
+    Word hi = ahi*bhi + (ahbl>>WHALF) +  (albh>>WHALF);                 \
+    hi += ahbl_albh >> WHALF; /* carry from the sum of lo(ahbl) + lo(albh) ) */ \
+    /* carry from the sum with alo*blo */                               \
+    hi += ((lo >> WHALF) < (ahbl_albh&LOMASK));                         \
+    *hip = hi;                                                          \
+    return lo;                                                          \
+}
+
+/*
+// A template for mulhilo on a platform that can't do it
+// We could put a C version here, but is it better to run *VERY*
+// slowly or to just stop and force the user to find another CBRNG?
+*/
+#define _mulhilo_fail_tpl(W, Word)                                      \
+RANDOM_ITERATOR_R123_STATIC_INLINE Word mulhilo##W(Word a, Word b, Word *hip){               \
+    RANDOM_ITERATOR_R123_STATIC_ASSERT(0, "mulhilo" #W " is not implemented on this machine\n"); \
+}
+
+/*
+// N.B.  There's an MSVC intrinsic called _emul,
+// which *might* compile into better code than
+// _mulhilo_dword_tpl 
+*/
+#if RANDOM_ITERATOR_R123_USE_MULHILO32_ASM
+#ifdef __powerpc__
+_mulhilo_asm_tpl(32, uint32_t, "mulhwu")
+#else
+_mulhilo_asm_tpl(32, uint32_t, "mull")
+#endif /* __powerpc__ */
+#else
+#if RANDOM_ITERATOR_R123_USE_64BIT
+_mulhilo_dword_tpl(32, uint32_t, uint64_t)
+#elif RANDOM_ITERATOR_R123_USE_MULHILO32_MULHI_INTRIN
+_mulhilo_cuda_intrin_tpl(32, uint32_t, RANDOM_ITERATOR_R123_MULHILO32_MULHI_INTRIN)
+#else
+_mulhilo_c99_tpl(32, uint32_t)
+#endif
+#endif
+
+#if RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+#if RANDOM_ITERATOR_R123_USE_MULHILO64_ASM
+#ifdef __powerpc64__
+_mulhilo_asm_tpl(64, uint64_t, "mulhdu")
+#else
+_mulhilo_asm_tpl(64, uint64_t, "mulq")
+#endif /* __powerpc64__ */
+#elif RANDOM_ITERATOR_R123_USE_MULHILO64_MSVC_INTRIN
+_mulhilo_msvc_intrin_tpl(64, uint64_t, _umul128)
+#elif RANDOM_ITERATOR_R123_USE_MULHILO64_CUDA_INTRIN
+_mulhilo_cuda_intrin_tpl(64, uint64_t, __umul64hi)
+#elif RANDOM_ITERATOR_R123_USE_MULHILO64_OPENCL_INTRIN
+_mulhilo_cuda_intrin_tpl(64, uint64_t, mul_hi)
+#elif RANDOM_ITERATOR_R123_USE_MULHILO64_MULHI_INTRIN
+_mulhilo_cuda_intrin_tpl(64, uint64_t, RANDOM_ITERATOR_R123_MULHILO64_MULHI_INTRIN)
+#elif RANDOM_ITERATOR_R123_USE_GNU_UINT128
+_mulhilo_dword_tpl(64, uint64_t, __uint128_t)
+#elif RANDOM_ITERATOR_R123_USE_MULHILO64_C99
+_mulhilo_c99_tpl(64, uint64_t)
+#else
+_mulhilo_fail_tpl(64, uint64_t)
+#endif
+#endif
+
+/*
+// The multipliers and Weyl constants are "hard coded".
+// To change them, you can #define them with different
+// values before #include-ing this file. 
+// This isn't terribly elegant, but it works for C as
+// well as C++.  A nice C++-only solution would be to
+// use template parameters in the style of <random>
+*/
+#ifndef PHILOX_M2x64_0
+#define PHILOX_M2x64_0 RANDOM_ITERATOR_R123_64BIT(0xD2B74407B1CE6E93)
+#endif
+
+#ifndef PHILOX_M4x64_0
+#define PHILOX_M4x64_0 RANDOM_ITERATOR_R123_64BIT(0xD2E7470EE14C6C93)
+#endif
+
+#ifndef PHILOX_M4x64_1
+#define PHILOX_M4x64_1 RANDOM_ITERATOR_R123_64BIT(0xCA5A826395121157)
+#endif
+
+#ifndef PHILOX_M2x32_0
+#define PHILOX_M2x32_0 ((uint32_t)0xd256d193)
+#endif
+
+#ifndef PHILOX_M4x32_0
+#define PHILOX_M4x32_0 ((uint32_t)0xD2511F53)
+#endif
+#ifndef PHILOX_M4x32_1
+#define PHILOX_M4x32_1 ((uint32_t)0xCD9E8D57)
+#endif
+
+#ifndef PHILOX_W64_0
+#define PHILOX_W64_0 RANDOM_ITERATOR_R123_64BIT(0x9E3779B97F4A7C15)  /* golden ratio */
+#endif
+#ifndef PHILOX_W64_1
+#define PHILOX_W64_1 RANDOM_ITERATOR_R123_64BIT(0xBB67AE8584CAA73B)  /* sqrt(3)-1 */
+#endif
+
+#ifndef PHILOX_W32_0
+#define PHILOX_W32_0 ((uint32_t)0x9E3779B9)
+#endif
+#ifndef PHILOX_W32_1
+#define PHILOX_W32_1 ((uint32_t)0xBB67AE85)
+#endif
+
+/** \endcond */
+#ifndef PHILOX2x32_DEFAULT_ROUNDS
+#define PHILOX2x32_DEFAULT_ROUNDS 10
+#endif
+
+#ifndef PHILOX2x64_DEFAULT_ROUNDS
+#define PHILOX2x64_DEFAULT_ROUNDS 10
+#endif
+
+#ifndef PHILOX4x32_DEFAULT_ROUNDS
+#define PHILOX4x32_DEFAULT_ROUNDS 10
+#endif
+
+#ifndef PHILOX4x64_DEFAULT_ROUNDS
+#define PHILOX4x64_DEFAULT_ROUNDS 10
+#endif
+/** \cond HIDDEN_FROM_DOXYGEN */
+
+/* The ignored fourth argument allows us to instantiate the
+   same macro regardless of N. */
+#define _philox2xWround_tpl(W, T)                                       \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(struct r123array2x##W _philox2x##W##round(struct r123array2x##W ctr, struct r123array1x##W key)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE struct r123array2x##W _philox2x##W##round(struct r123array2x##W ctr, struct r123array1x##W key){ \
+    T hi;                                                               \
+    T lo = mulhilo##W(PHILOX_M2x##W##_0, ctr.v[0], &hi);                \
+    struct r123array2x##W out = {{hi^key.v[0]^ctr.v[1], lo}};               \
+    return out;                                                         \
+}
+#define _philox2xWbumpkey_tpl(W)                                        \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE struct r123array1x##W _philox2x##W##bumpkey( struct r123array1x##W key) { \
+    key.v[0] += PHILOX_W##W##_0;                                        \
+    return key;                                                         \
+}
+
+#define _philox4xWround_tpl(W, T)                                       \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(struct r123array4x##W _philox4x##W##round(struct r123array4x##W ctr, struct r123array2x##W key)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE struct r123array4x##W _philox4x##W##round(struct r123array4x##W ctr, struct r123array2x##W key){ \
+    T hi0;                                                              \
+    T hi1;                                                              \
+    T lo0 = mulhilo##W(PHILOX_M4x##W##_0, ctr.v[0], &hi0);              \
+    T lo1 = mulhilo##W(PHILOX_M4x##W##_1, ctr.v[2], &hi1);              \
+    struct r123array4x##W out = {{hi1^ctr.v[1]^key.v[0], lo1,               \
+                              hi0^ctr.v[3]^key.v[1], lo0}};             \
+    return out;                                                         \
+}
+
+#define _philox4xWbumpkey_tpl(W)                                        \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE struct r123array2x##W _philox4x##W##bumpkey( struct r123array2x##W key) { \
+    key.v[0] += PHILOX_W##W##_0;                                        \
+    key.v[1] += PHILOX_W##W##_1;                                        \
+    return key;                                                         \
+}
+
+/** \endcond */
+#define _philoxNxW_tpl(N, Nhalf, W, T)                         \
+/** @ingroup PhiloxNxW */                                       \
+enum r123_enum_philox##N##x##W { philox##N##x##W##_rounds = PHILOX##N##x##W##_DEFAULT_ROUNDS }; \
+typedef struct r123array##N##x##W philox##N##x##W##_ctr_t;                  \
+typedef struct r123array##Nhalf##x##W philox##N##x##W##_key_t;              \
+typedef struct r123array##Nhalf##x##W philox##N##x##W##_ukey_t;              \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE philox##N##x##W##_key_t philox##N##x##W##keyinit(philox##N##x##W##_ukey_t uk) { return uk; } \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(philox##N##x##W##_ctr_t philox##N##x##W##_R(unsigned int R, philox##N##x##W##_ctr_t ctr, philox##N##x##W##_key_t key)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE philox##N##x##W##_ctr_t philox##N##x##W##_R(unsigned int R, philox##N##x##W##_ctr_t ctr, philox##N##x##W##_key_t key) { \
+    RANDOM_ITERATOR_R123_ASSERT(R<=16);                                                 \
+    if(R>0){                                       ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>1){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>2){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>3){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>4){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>5){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>6){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>7){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>8){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>9){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>10){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>11){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>12){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>13){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>14){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    if(R>15){ key = _philox##N##x##W##bumpkey(key); ctr = _philox##N##x##W##round(ctr, key); } \
+    return ctr;                                                         \
+}
+         
+_philox2xWbumpkey_tpl(32)
+_philox4xWbumpkey_tpl(32)
+_philox2xWround_tpl(32, uint32_t) /* philox2x32round */
+_philox4xWround_tpl(32, uint32_t)            /* philo4x32round */
+
+_philoxNxW_tpl(2, 1, 32, uint32_t)    /* philox2x32bijection */
+_philoxNxW_tpl(4, 2, 32, uint32_t)    /* philox4x32bijection */
+#if RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+/** \cond HIDDEN_FROM_DOXYGEN */
+_philox2xWbumpkey_tpl(64)
+_philox4xWbumpkey_tpl(64)
+_philox2xWround_tpl(64, uint64_t) /* philo2x64round */
+_philox4xWround_tpl(64, uint64_t) /* philo4x64round */
+/** \endcond */
+_philoxNxW_tpl(2, 1, 64, uint64_t)    /* philox2x64bijection */
+_philoxNxW_tpl(4, 2, 64, uint64_t)    /* philox4x64bijection */
+#endif /* RANDOM_ITERATOR_R123_USE_PHILOX_64BIT */
+
+#define philox2x32(c,k) philox2x32_R(philox2x32_rounds, c, k)
+#define philox4x32(c,k) philox4x32_R(philox4x32_rounds, c, k)
+#if RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+#define philox2x64(c,k) philox2x64_R(philox2x64_rounds, c, k)
+#define philox4x64(c,k) philox4x64_R(philox4x64_rounds, c, k)
+#endif /* RANDOM_ITERATOR_R123_USE_PHILOX_64BIT */
+
+#if defined(__cplusplus) 
+
+#define _PhiloxNxW_base_tpl(CType, KType, N, W)                         \
+namespace random_iterator_r123{                                                          \
+template<unsigned int ROUNDS>                                             \
+struct Philox##N##x##W##_R{                                             \
+    typedef CType ctr_type;                                         \
+    typedef KType key_type;                                             \
+    typedef KType ukey_type;                                         \
+    static const RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE unsigned int rounds=ROUNDS;				\
+    inline RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_FORCE_INLINE(ctr_type operator()(ctr_type ctr, key_type key) const){ \
+        RANDOM_ITERATOR_R123_STATIC_ASSERT(ROUNDS<=16, "philox is only unrolled up to 16 rounds\n"); \
+        return philox##N##x##W##_R(ROUNDS, ctr, key);                       \
+    }                                                                   \
+};                                                                      \
+typedef Philox##N##x##W##_R<philox##N##x##W##_rounds> Philox##N##x##W; \
+ } // namespace random_iterator_r123
+
+_PhiloxNxW_base_tpl(r123array2x32, r123array1x32, 2, 32) // Philox2x32_R<R>
+_PhiloxNxW_base_tpl(r123array4x32, r123array2x32, 4, 32) // Philox4x32_R<R>
+#if RANDOM_ITERATOR_R123_USE_PHILOX_64BIT
+_PhiloxNxW_base_tpl(r123array2x64, r123array1x64, 2, 64) // Philox2x64_R<R>
+_PhiloxNxW_base_tpl(r123array4x64, r123array2x64, 4, 64) // Philox4x64_R<R>
+#endif
+
+/* The _tpl macros don't quite work to do string-pasting inside comments.
+   so we just write out the boilerplate documentation four times... */
+
+/** 
+@defgroup PhiloxNxW Philox Classes and Typedefs
+
+The PhiloxNxW classes export the member functions, typedefs and
+operator overloads required by a @ref CBRNG "CBRNG" class.
+
+As described in  
+<a href="http://dl.acm.org/citation.cfm?doid=2063405"><i>Parallel Random Numbers:  As Easy as 1, 2, 3</i> </a>.
+The Philox family of counter-based RNGs use integer multiplication, xor and permutation of W-bit words
+to scramble its N-word input key.  Philox is a mnemonic for Product HI LO Xor).
+
+
+@class r123::Philox2x32_R 
+@ingroup PhiloxNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Philox round
+function will be applied.
+
+As of November 2011, the authors know of no statistical flaws with
+ROUNDS=6 or more for Philox2x32.
+
+@typedef r123::Philox2x32
+@ingroup PhiloxNxW
+  Philox2x32 is equivalent to Philox2x32_R<10>.    With 10 rounds,
+  Philox2x32 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+
+
+@class r123::Philox2x64_R 
+@ingroup PhiloxNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Philox round
+function will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=6 or more for Philox2x64.
+
+@typedef r123::Philox2x64
+@ingroup PhiloxNxW
+  Philox2x64 is equivalent to Philox2x64_R<10>.    With 10 rounds,
+  Philox2x64 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+
+
+@class r123::Philox4x32_R 
+@ingroup PhiloxNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Philox round
+function will be applied.
+
+In November 2011, the authors recorded some suspicious p-values (approximately 1.e-7) from
+some very long (longer than the default BigCrush length) SimpPoker tests.  Despite
+the fact that even longer tests reverted to "passing" p-values, a cloud remains over
+Philox4x32 with 7 rounds.  The authors know of no statistical flaws with
+ROUNDS=8 or more for Philox4x32.
+
+@typedef r123::Philox4x32
+@ingroup PhiloxNxW
+  Philox4x32 is equivalent to Philox4x32_R<10>.    With 10 rounds,
+  Philox4x32 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+
+
+@class r123::Philox4x64_R 
+@ingroup PhiloxNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Philox round
+function will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=7 or more for Philox4x64.
+
+@typedef r123::Philox4x64
+@ingroup PhiloxNxW
+  Philox4x64 is equivalent to Philox4x64_R<10>.    With 10 rounds,
+  Philox4x64 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+*/
+
+#endif /* __cplusplus */
+
+#endif /* _philox_dot_h_ */
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/threefry.h b/corsika/detail/framework/random/random_iterator/detail/Random123/threefry.h
new file mode 100644
index 0000000000000000000000000000000000000000..b5bb304436e69bf00cd97a99d86d51a805e6ed78
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/threefry.h
@@ -0,0 +1,870 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef _threefry_dot_h_
+#define _threefry_dot_h_
+#include "features/compilerfeatures.h"
+#include "array.h"
+
+/** \cond HIDDEN_FROM_DOXYGEN */
+/* Significant parts of this file were copied from
+   from:
+      Skein_FinalRnd/ReferenceImplementation/skein.h
+      Skein_FinalRnd/ReferenceImplementation/skein_block.c
+
+   in http://csrc.nist.gov/groups/ST/hash/sha-3/Round3/documents/Skein_FinalRnd.zip
+
+   This file has been modified so that it may no longer perform its originally
+   intended function.  If you're looking for a Skein or Threefish source code,
+   please consult the original file.
+
+   The original file had the following header:
+**************************************************************************
+**
+** Interface declarations and internal definitions for Skein hashing.
+**
+** Source code author: Doug Whiting, 2008.
+**
+** This algorithm and source code is released to the public domain.
+**
+***************************************************************************
+
+*/
+
+/* See comment at the top of philox.h for the macro pre-process
+   strategy. */
+
+/* Rotation constants: */
+enum r123_enum_threefry64x4 {
+    /* These are the R_256 constants from the Threefish reference sources
+       with names changed to R_64x4... */
+    R_64x4_0_0=14, R_64x4_0_1=16,
+    R_64x4_1_0=52, R_64x4_1_1=57,
+    R_64x4_2_0=23, R_64x4_2_1=40,
+    R_64x4_3_0= 5, R_64x4_3_1=37,
+    R_64x4_4_0=25, R_64x4_4_1=33,
+    R_64x4_5_0=46, R_64x4_5_1=12,
+    R_64x4_6_0=58, R_64x4_6_1=22,
+    R_64x4_7_0=32, R_64x4_7_1=32
+};
+
+enum r123_enum_threefry64x2 {
+    /*
+    // Output from skein_rot_search: (srs64_B64-X1000)
+    // Random seed = 1. BlockSize = 128 bits. sampleCnt =  1024. rounds =  8, minHW_or=57
+    // Start: Tue Mar  1 10:07:48 2011
+    // rMin = 0.136. #0325[*15] [CRC=455A682F. hw_OR=64. cnt=16384. blkSize= 128].format   
+    */
+    R_64x2_0_0=16,
+    R_64x2_1_0=42,
+    R_64x2_2_0=12,
+    R_64x2_3_0=31,
+    R_64x2_4_0=16,
+    R_64x2_5_0=32,
+    R_64x2_6_0=24,
+    R_64x2_7_0=21
+    /* 4 rounds: minHW =  4  [  4  4  4  4 ]
+    // 5 rounds: minHW =  8  [  8  8  8  8 ]
+    // 6 rounds: minHW = 16  [ 16 16 16 16 ]
+    // 7 rounds: minHW = 32  [ 32 32 32 32 ]
+    // 8 rounds: minHW = 64  [ 64 64 64 64 ]
+    // 9 rounds: minHW = 64  [ 64 64 64 64 ]
+    //10 rounds: minHW = 64  [ 64 64 64 64 ]
+    //11 rounds: minHW = 64  [ 64 64 64 64 ] */
+};
+
+enum r123_enum_threefry32x4 {
+    /* Output from skein_rot_search: (srs-B128-X5000.out)
+    // Random seed = 1. BlockSize = 64 bits. sampleCnt =  1024. rounds =  8, minHW_or=28
+    // Start: Mon Aug 24 22:41:36 2009
+    // ...
+    // rMin = 0.472. #0A4B[*33] [CRC=DD1ECE0F. hw_OR=31. cnt=16384. blkSize= 128].format    */
+    R_32x4_0_0=10, R_32x4_0_1=26,
+    R_32x4_1_0=11, R_32x4_1_1=21,
+    R_32x4_2_0=13, R_32x4_2_1=27,
+    R_32x4_3_0=23, R_32x4_3_1= 5,
+    R_32x4_4_0= 6, R_32x4_4_1=20,
+    R_32x4_5_0=17, R_32x4_5_1=11,
+    R_32x4_6_0=25, R_32x4_6_1=10,
+    R_32x4_7_0=18, R_32x4_7_1=20
+
+    /* 4 rounds: minHW =  3  [  3  3  3  3 ]
+    // 5 rounds: minHW =  7  [  7  7  7  7 ]
+    // 6 rounds: minHW = 12  [ 13 12 13 12 ]
+    // 7 rounds: minHW = 22  [ 22 23 22 23 ]
+    // 8 rounds: minHW = 31  [ 31 31 31 31 ]
+    // 9 rounds: minHW = 32  [ 32 32 32 32 ]
+    //10 rounds: minHW = 32  [ 32 32 32 32 ]
+    //11 rounds: minHW = 32  [ 32 32 32 32 ] */
+
+};
+
+enum r123_enum_threefry32x2 {
+    /* Output from skein_rot_search (srs32x2-X5000.out)
+    // Random seed = 1. BlockSize = 64 bits. sampleCnt =  1024. rounds =  8, minHW_or=28
+    // Start: Tue Jul 12 11:11:33 2011
+    // rMin = 0.334. #0206[*07] [CRC=1D9765C0. hw_OR=32. cnt=16384. blkSize=  64].format   */
+    R_32x2_0_0=13,
+    R_32x2_1_0=15,
+    R_32x2_2_0=26,
+    R_32x2_3_0= 6,
+    R_32x2_4_0=17,
+    R_32x2_5_0=29,
+    R_32x2_6_0=16,
+    R_32x2_7_0=24
+
+    /* 4 rounds: minHW =  4  [  4  4  4  4 ]
+    // 5 rounds: minHW =  6  [  6  8  6  8 ]
+    // 6 rounds: minHW =  9  [  9 12  9 12 ]
+    // 7 rounds: minHW = 16  [ 16 24 16 24 ]
+    // 8 rounds: minHW = 32  [ 32 32 32 32 ]
+    // 9 rounds: minHW = 32  [ 32 32 32 32 ]
+    //10 rounds: minHW = 32  [ 32 32 32 32 ]
+    //11 rounds: minHW = 32  [ 32 32 32 32 ] */
+    };
+
+enum r123_enum_threefry_wcnt {
+    WCNT2=2,
+    WCNT4=4
+};
+
+#if RANDOM_ITERATOR_R123_USE_64BIT
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(uint64_t RotL_64(uint64_t x, unsigned int N));
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE uint64_t RotL_64(uint64_t x, unsigned int N)
+{
+    return (x << (N & 63)) | (x >> ((64-N) & 63));
+}
+#endif
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(uint32_t RotL_32(uint32_t x, unsigned int N));
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE uint32_t RotL_32(uint32_t x, unsigned int N)
+{
+    return (x << (N & 31)) | (x >> ((32-N) & 31));
+}
+
+#define SKEIN_MK_64(hi32,lo32)  ((lo32) + (((uint64_t) (hi32)) << 32))
+#define SKEIN_KS_PARITY64         SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22)
+#define SKEIN_KS_PARITY32         0x1BD11BDA
+
+/** \endcond */
+
+#ifndef THREEFRY2x32_DEFAULT_ROUNDS
+#define THREEFRY2x32_DEFAULT_ROUNDS 20
+#endif
+
+#ifndef THREEFRY2x64_DEFAULT_ROUNDS
+#define THREEFRY2x64_DEFAULT_ROUNDS 20
+#endif
+
+#ifndef THREEFRY4x32_DEFAULT_ROUNDS
+#define THREEFRY4x32_DEFAULT_ROUNDS 20
+#endif
+
+#ifndef THREEFRY4x64_DEFAULT_ROUNDS
+#define THREEFRY4x64_DEFAULT_ROUNDS 20
+#endif
+
+#define _threefry2x_tpl(W)                                              \
+typedef struct r123array2x##W threefry2x##W##_ctr_t;                          \
+typedef struct r123array2x##W threefry2x##W##_key_t;                          \
+typedef struct r123array2x##W threefry2x##W##_ukey_t;                          \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE threefry2x##W##_key_t threefry2x##W##keyinit(threefry2x##W##_ukey_t uk) { return uk; } \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(threefry2x##W##_ctr_t threefry2x##W##_R(unsigned int Nrounds, threefry2x##W##_ctr_t in, threefry2x##W##_key_t k)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE                                          \
+threefry2x##W##_ctr_t threefry2x##W##_R(unsigned int Nrounds, threefry2x##W##_ctr_t in, threefry2x##W##_key_t k){ \
+    threefry2x##W##_ctr_t X;                                              \
+    uint##W##_t ks[2+1];                                          \
+    int  i; /* avoid size_t to avoid need for stddef.h */                   \
+    RANDOM_ITERATOR_R123_ASSERT(Nrounds<=32);                                           \
+    ks[2] =  SKEIN_KS_PARITY##W;                                   \
+    for (i=0;i < 2; i++)                                        \
+        {                                                               \
+            ks[i] = k.v[i];                                             \
+            X.v[i]  = in.v[i];                                          \
+            ks[2] ^= k.v[i];                                    \
+        }                                                               \
+                                                                        \
+    /* Insert initial key before round 0 */                             \
+    X.v[0] += ks[0]; X.v[1] += ks[1];                                   \
+                                                                        \
+    if(Nrounds>0){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_0_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>1){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_1_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>2){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_2_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>3){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_3_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>3){                                                      \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2];                               \
+        X.v[1] += 1;     /* X.v[2-1] += r  */                   \
+    }                                                                   \
+    if(Nrounds>4){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_4_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>5){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_5_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>6){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_6_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>7){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_7_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>7){                                                      \
+        /* InjectKey(r=2) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[0];                               \
+        X.v[1] += 2;                                                    \
+    }                                                                   \
+    if(Nrounds>8){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_0_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>9){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_1_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>10){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_2_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>11){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_3_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>11){                                                     \
+        /* InjectKey(r=3) */                                            \
+        X.v[0] += ks[0]; X.v[1] += ks[1];                               \
+        X.v[1] += 3;                                                    \
+    }                                                                   \
+    if(Nrounds>12){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_4_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>13){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_5_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>14){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_6_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>15){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_7_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>15){                                                     \
+        /* InjectKey(r=4) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2];                               \
+        X.v[1] += 4;                                                    \
+    }                                                                   \
+    if(Nrounds>16){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_0_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>17){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_1_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>18){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_2_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>19){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_3_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>19){                                                     \
+        /* InjectKey(r=5) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[0];                               \
+        X.v[1] += 5;                                                    \
+    }                                                                   \
+    if(Nrounds>20){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_4_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>21){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_5_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>22){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_6_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>23){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_7_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>23){                                                     \
+        /* InjectKey(r=6) */                                            \
+        X.v[0] += ks[0]; X.v[1] += ks[1];                               \
+        X.v[1] += 6;                                                    \
+    }                                                                   \
+    if(Nrounds>24){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_0_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>25){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_1_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>26){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_2_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>27){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_3_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>27){                                                     \
+        /* InjectKey(r=7) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2];                               \
+        X.v[1] += 7;                                                    \
+    }                                                                   \
+    if(Nrounds>28){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_4_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>29){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_5_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>30){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_6_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>31){  X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x2_7_0); X.v[1] ^= X.v[0]; } \
+    if(Nrounds>31){                                                     \
+        /* InjectKey(r=8) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[0];                               \
+        X.v[1] += 8;                                                    \
+    }                                                                   \
+    return X;                                                           \
+}                                                                       \
+ /** @ingroup ThreefryNxW */                                            \
+enum r123_enum_threefry2x##W { threefry2x##W##_rounds = THREEFRY2x##W##_DEFAULT_ROUNDS };       \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(threefry2x##W##_ctr_t threefry2x##W(threefry2x##W##_ctr_t in, threefry2x##W##_key_t k)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE                                     \
+threefry2x##W##_ctr_t threefry2x##W(threefry2x##W##_ctr_t in, threefry2x##W##_key_t k){ \
+    return threefry2x##W##_R(threefry2x##W##_rounds, in, k);            \
+}
+
+
+#define _threefry4x_tpl(W)                                              \
+typedef struct r123array4x##W threefry4x##W##_ctr_t;                        \
+typedef struct r123array4x##W threefry4x##W##_key_t;                        \
+typedef struct r123array4x##W threefry4x##W##_ukey_t;                        \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE threefry4x##W##_key_t threefry4x##W##keyinit(threefry4x##W##_ukey_t uk) { return uk; } \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(threefry4x##W##_ctr_t threefry4x##W##_R(unsigned int Nrounds, threefry4x##W##_ctr_t in, threefry4x##W##_key_t k)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE                                          \
+threefry4x##W##_ctr_t threefry4x##W##_R(unsigned int Nrounds, threefry4x##W##_ctr_t in, threefry4x##W##_key_t k){ \
+    threefry4x##W##_ctr_t X;                                            \
+    uint##W##_t ks[4+1];                                            \
+    int  i; /* avoid size_t to avoid need for stddef.h */                   \
+    RANDOM_ITERATOR_R123_ASSERT(Nrounds<=72);                                           \
+    ks[4] =  SKEIN_KS_PARITY##W;                                    \
+    for (i=0;i < 4; i++)                                            \
+        {                                                               \
+            ks[i] = k.v[i];                                             \
+            X.v[i]  = in.v[i];                                          \
+            ks[4] ^= k.v[i];                                        \
+        }                                                               \
+                                                                        \
+    /* Insert initial key before round 0 */                             \
+    X.v[0] += ks[0]; X.v[1] += ks[1]; X.v[2] += ks[2]; X.v[3] += ks[3]; \
+                                                                        \
+    if(Nrounds>0){                                                      \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>1){                                                      \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>2){                                                      \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>3){                                                      \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>3){                                                      \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2]; X.v[2] += ks[3]; X.v[3] += ks[4]; \
+        X.v[4-1] += 1;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>4){                                                      \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>5){                                                      \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>6){                                                      \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>7){                                                      \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>7){                                                      \
+        /* InjectKey(r=2) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[3]; X.v[2] += ks[4]; X.v[3] += ks[0]; \
+        X.v[4-1] += 2;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>8){                                                      \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>9){                                                      \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>10){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>11){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>11){                                                     \
+        /* InjectKey(r=3) */                                            \
+        X.v[0] += ks[3]; X.v[1] += ks[4]; X.v[2] += ks[0]; X.v[3] += ks[1]; \
+        X.v[4-1] += 3;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>12){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>13){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>14){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>15){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>15){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[4]; X.v[1] += ks[0]; X.v[2] += ks[1]; X.v[3] += ks[2]; \
+        X.v[4-1] += 4;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>16){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>17){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>18){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>19){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>19){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[0]; X.v[1] += ks[1]; X.v[2] += ks[2]; X.v[3] += ks[3]; \
+        X.v[4-1] += 5;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>20){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>21){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>22){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>23){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>23){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2]; X.v[2] += ks[3]; X.v[3] += ks[4]; \
+        X.v[4-1] += 6;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>24){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>25){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>26){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>27){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>27){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[3]; X.v[2] += ks[4]; X.v[3] += ks[0]; \
+        X.v[4-1] += 7;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>28){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>29){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>30){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>31){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>31){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[3]; X.v[1] += ks[4]; X.v[2] += ks[0]; X.v[3] += ks[1]; \
+        X.v[4-1] += 8;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>32){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>33){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>34){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>35){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>35){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[4]; X.v[1] += ks[0]; X.v[2] += ks[1]; X.v[3] += ks[2]; \
+        X.v[4-1] += 9;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>36){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>37){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>38){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>39){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>39){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[0]; X.v[1] += ks[1]; X.v[2] += ks[2]; X.v[3] += ks[3]; \
+        X.v[4-1] += 10;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>40){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>41){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>42){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>43){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>43){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2]; X.v[2] += ks[3]; X.v[3] += ks[4]; \
+        X.v[4-1] += 11;     /* X.v[WCNT4-1] += r  */                \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>44){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>45){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>46){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>47){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>47){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[3]; X.v[2] += ks[4]; X.v[3] += ks[0]; \
+        X.v[4-1] += 12;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>48){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>49){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>50){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>51){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>51){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[3]; X.v[1] += ks[4]; X.v[2] += ks[0]; X.v[3] += ks[1]; \
+        X.v[4-1] += 13;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>52){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>53){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>54){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>55){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>55){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[4]; X.v[1] += ks[0]; X.v[2] += ks[1]; X.v[3] += ks[2]; \
+        X.v[4-1] += 14;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>56){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>57){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>58){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>59){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>59){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[0]; X.v[1] += ks[1]; X.v[2] += ks[2]; X.v[3] += ks[3]; \
+        X.v[4-1] += 15;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>60){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>61){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>62){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>63){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>63){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[1]; X.v[1] += ks[2]; X.v[2] += ks[3]; X.v[3] += ks[4]; \
+        X.v[4-1] += 16;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>64){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_0_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_0_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>65){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_1_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_1_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>66){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_2_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_2_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>67){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_3_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_3_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>67){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[2]; X.v[1] += ks[3]; X.v[2] += ks[4]; X.v[3] += ks[0]; \
+        X.v[4-1] += 17;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    if(Nrounds>68){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_4_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_4_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>69){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_5_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_5_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>70){                                                     \
+        X.v[0] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_6_0); X.v[1] ^= X.v[0]; \
+        X.v[2] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_6_1); X.v[3] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>71){                                                     \
+        X.v[0] += X.v[3]; X.v[3] = RotL_##W(X.v[3],R_##W##x4_7_0); X.v[3] ^= X.v[0]; \
+        X.v[2] += X.v[1]; X.v[1] = RotL_##W(X.v[1],R_##W##x4_7_1); X.v[1] ^= X.v[2]; \
+    }                                                                   \
+    if(Nrounds>71){                                                     \
+        /* InjectKey(r=1) */                                            \
+        X.v[0] += ks[3]; X.v[1] += ks[4]; X.v[2] += ks[0]; X.v[3] += ks[1]; \
+        X.v[4-1] += 18;     /* X.v[WCNT4-1] += r  */                 \
+    }                                                                   \
+                                                                        \
+    return X;                                                           \
+}                                                                       \
+                                                                        \
+ /** @ingroup ThreefryNxW */                                            \
+enum r123_enum_threefry4x##W { threefry4x##W##_rounds = THREEFRY4x##W##_DEFAULT_ROUNDS };       \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_FORCE_INLINE(threefry4x##W##_ctr_t threefry4x##W(threefry4x##W##_ctr_t in, threefry4x##W##_key_t k)); \
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE                                     \
+threefry4x##W##_ctr_t threefry4x##W(threefry4x##W##_ctr_t in, threefry4x##W##_key_t k){ \
+    return threefry4x##W##_R(threefry4x##W##_rounds, in, k);            \
+}
+
+#if RANDOM_ITERATOR_R123_USE_64BIT
+_threefry2x_tpl(64)
+_threefry4x_tpl(64)
+#endif
+_threefry2x_tpl(32)
+_threefry4x_tpl(32)
+
+/* gcc4.5 and 4.6 seem to optimize a macro-ized threefryNxW better
+   than a static inline function.  Why?  */
+#define threefry2x32(c,k) threefry2x32_R(threefry2x32_rounds, c, k)
+#define threefry4x32(c,k) threefry4x32_R(threefry4x32_rounds, c, k)
+#define threefry2x64(c,k) threefry2x64_R(threefry2x64_rounds, c, k)
+#define threefry4x64(c,k) threefry4x64_R(threefry4x64_rounds, c, k)
+
+#if defined(__cplusplus)
+#define _threefryNxWclass_tpl(NxW)                                      \
+namespace random_iterator_r123{                                                     \
+template<unsigned int ROUNDS>                                                  \
+ struct Threefry##NxW##_R{                                              \
+    typedef threefry##NxW##_ctr_t ctr_type;                             \
+    typedef threefry##NxW##_key_t key_type;                             \
+    typedef threefry##NxW##_key_t ukey_type;                            \
+    static const RANDOM_ITERATOR_R123_METAL_CONSTANT_ADDRESS_SPACE unsigned int rounds=ROUNDS;                            \
+   inline RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_FORCE_INLINE(ctr_type operator()(ctr_type ctr, key_type key)){ \
+        RANDOM_ITERATOR_R123_STATIC_ASSERT(ROUNDS<=72, "threefry is only unrolled up to 72 rounds\n"); \
+        return threefry##NxW##_R(ROUNDS, ctr, key);                              \
+    }                                                                   \
+};                                                                      \
+ typedef Threefry##NxW##_R<threefry##NxW##_rounds> Threefry##NxW;       \
+} // namespace random_iterator_r123
+
+_threefryNxWclass_tpl(2x32)
+_threefryNxWclass_tpl(4x32)
+#if RANDOM_ITERATOR_R123_USE_64BIT
+_threefryNxWclass_tpl(2x64)
+_threefryNxWclass_tpl(4x64)
+#endif
+
+/* The _tpl macros don't quite work to do string-pasting inside comments.
+   so we just write out the boilerplate documentation four times... */
+
+/** 
+@defgroup ThreefryNxW Threefry Classes and Typedefs
+
+The ThreefryNxW classes export the member functions, typedefs and
+operator overloads required by a @ref CBRNG "CBRNG" class.
+
+As described in  
+<a href="http://dl.acm.org/citation.cfm?doid=2063405"><i>Parallel Random Numbers:  As Easy as 1, 2, 3</i> </a>, 
+the Threefry family is closely related to the Threefish block cipher from
+<a href="http://www.skein-hash.info/"> Skein Hash Function</a>.  
+Threefry is \b not suitable for cryptographic use.
+
+Threefry uses integer addition, bitwise rotation, xor and permutation of words to randomize its output.
+
+@class r123::Threefry2x32_R 
+@ingroup ThreefryNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Threefry round
+function will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=13 or more for Threefry2x32.
+
+@typedef r123::Threefry2x32
+@ingroup ThreefryNxW
+  Threefry2x32 is equivalent to Threefry2x32_R<20>.    With 20 rounds,
+  Threefry2x32 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+@class r123::Threefry2x64_R 
+@ingroup ThreefryNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Threefry round
+function will be applied.
+
+In November 2011, the authors discovered that 13 rounds of
+Threefry2x64 sequenced by strided, interleaved key and counter
+increments failed a very long (longer than the default BigCrush
+length) WeightDistrub test.  At the same time, it was confirmed that
+14 rounds passes much longer tests (up to 5x10^12 samples) of a
+similar nature.  The authors know of no statistical flaws with
+ROUNDS=14 or more for Threefry2x64.
+
+@typedef r123::Threefry2x64
+@ingroup ThreefryNxW
+  Threefry2x64 is equivalent to Threefry2x64_R<20>.    With 20 rounds,
+  Threefry2x64 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+
+
+@class r123::Threefry4x32_R 
+@ingroup ThreefryNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Threefry round
+function will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=12 or more for Threefry4x32.
+
+@typedef r123::Threefry4x32
+@ingroup ThreefryNxW
+  Threefry4x32 is equivalent to Threefry4x32_R<20>.    With 20 rounds,
+  Threefry4x32 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+
+
+
+@class r123::Threefry4x64_R 
+@ingroup ThreefryNxW
+
+exports the member functions, typedefs and operator overloads required by a @ref CBRNG "CBRNG" class.
+
+The template argument, ROUNDS, is the number of times the Threefry round
+function will be applied.
+
+As of September 2011, the authors know of no statistical flaws with
+ROUNDS=12 or more for Threefry4x64.
+
+@typedef r123::Threefry4x64
+@ingroup ThreefryNxW
+  Threefry4x64 is equivalent to Threefry4x64_R<20>.    With 20 rounds,
+  Threefry4x64 has a considerable safety margin over the minimum number
+  of rounds with no known statistical flaws, but still has excellent
+   performance. 
+*/
+
+#endif
+
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/u01fixedpt.h b/corsika/detail/framework/random/random_iterator/detail/Random123/u01fixedpt.h
new file mode 100644
index 0000000000000000000000000000000000000000..64988b55a68bbb6b931411aa99b5cc878f2a81eb
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/u01fixedpt.h
@@ -0,0 +1,200 @@
+/*
+Copyright 2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#ifndef _random123_ufixed01_dot_h_
+#define _random123_ufixed01_dot_h_
+
+#include "features/compilerfeatures.h"
+
+/** @defgroup u01fixedpt The u01fixedpt conversion functions
+
+    These functions convert unsigned W-bit integers to uniformly
+    spaced real values (float or double) between 0.0 and 1.0 with
+    mantissas of M bits.
+
+    PLEASE THINK CAREFULLY BEFORE USING THESE FUNCTIONS.  THEY MAY
+    NOT BE WHAT YOU WANT.  YOU MAY BE MUCH BETTER SERVED BY THE
+    FUNCTIONS IN ./uniform.hpp.
+
+    These functions produce a finite number *uniformly spaced* values
+    in the range from 0.0 to 1.0 with uniform probability.  The price
+    of uniform spacing is that they may not utilize the entire space
+    of possible outputs.  E.g., u01fixedpt_closed_open_32_24 will never
+    produce a non-zero value less than 2^-24, even though such values
+    are representable in single-precision floating point.
+
+    There are 12 functions, corresponding to the following choices:
+
+     -  W = 32 or 64
+     -  M = 24 (float) or 53 (double)
+     -  open0 or closed0 : whether the output is open or closed at 0.0
+     -  open1 or closed1 : whether the output is open or closed at 1.0 
+
+    The W=64 M=24 cases are not implemented.  To obtain an M=24 float
+    from a uint64_t, use a cast (possibly with right-shift and bitwise
+    and) to convert some of the bits of the uint64_t to a uint32_t and
+    then use u01fixedpt_x_y_32_float.  Note that the 64-bit random integers
+    produced by the Random123 library are random in "all the bits", so
+    with a little extra effort you can obtain two floats this way --
+    one from the high bits and one from the low bits of the 64-bit
+    value.
+
+    If the output is open at one end, then the extreme
+    value (0.0 or 1.0) will never be returned.  Conversely, if the output
+    is closed at one end, then the extreme value is a possible
+    return value.
+
+    The values returned are as follows.  All values are returned
+    with equal frequency, except as noted in the closed_closed case:
+
+     closed_open:  Let P=min(M,W)
+        there are 2^P possible output values:
+        {0, 1, 2, ..., 2^P-1}/2^P
+
+     open_closed:  Let P=min(M,W)
+        there are 2^P possible values:
+        {1, 2, ..., 2^P}/2^P
+
+     open_open:   Let P=min(M, W+1) 
+        there are 2^(P-1) possible values:
+        {1, 3, 5, ..., 2^P-1}/2^P
+
+     closed_closed:  Let P=min(M, W-1)
+        there are 1+2^P possible values:
+        {0, 1, 2, ... 2^P}/2^P
+        The extreme values (0.0 and 1.0) are
+        returned with half the frequency of
+        all others.
+    
+    On x86 hardware, especially on 32bit machines, the use of
+    internal 80bit x87-style floating point may result in
+    'bonus' precision, which may cause closed intervals to not
+    be really closed, i.e. the conversions below might not
+    convert UINT{32,64}_MAX to 1.0.  This sort of issue is
+    likely to occur when storing the output of a u01fixedpt_*_32_float
+    function in a double, though one can imagine getting extra
+    precision artifacts when going from 64_53 as well.  Other
+    artifacts may exist on some GPU hardware.  The tests in
+    kat_u01_main.h try to expose such issues, but caveat emptor.
+
+    @cond HIDDEN_FROM_DOXYGEN
+ */
+
+/* Hex floats were standardized by C in 1999, but weren't standardized
+   by C++ until 2011.  So, we're obliged to write out our constants in
+   decimal, even though they're most naturally expressed in binary.
+   We cross our fingers and hope that the compiler does the compile-time
+   constant arithmetic properly.
+*/
+#define RANDOM_ITERATOR_R123_0x1p_31f (1.f/(1024.f*1024.f*1024.f*2.f))
+#define RANDOM_ITERATOR_R123_0x1p_24f (128.f*RANDOM_ITERATOR_R123_0x1p_31f)
+#define RANDOM_ITERATOR_R123_0x1p_23f (256.f*RANDOM_ITERATOR_R123_0x1p_31f)
+#define RANDOM_ITERATOR_R123_0x1p_32  (1./(1024.*1024.*1024.*4.))
+#define RANDOM_ITERATOR_R123_0x1p_63 (2.*RANDOM_ITERATOR_R123_0x1p_32*RANDOM_ITERATOR_R123_0x1p_32)
+#define RANDOM_ITERATOR_R123_0x1p_53 (1024.*RANDOM_ITERATOR_R123_0x1p_63)
+#define RANDOM_ITERATOR_R123_0x1p_52 (2048.*RANDOM_ITERATOR_R123_0x1p_63)
+
+/** @endcond */
+
+#ifndef RANDOM_ITERATOR_R123_USE_U01_DOUBLE
+#define RANDOM_ITERATOR_R123_USE_U01_DOUBLE 1
+#endif
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* narrowing conversions:  uint32_t to float */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE float u01fixedpt_closed_closed_32_float(uint32_t i){
+    /* N.B.  we ignore the high bit, so output is not monotonic */
+    return ((i&0x7fffffc0) + (i&0x40))*RANDOM_ITERATOR_R123_0x1p_31f; /* 0x1.p-31f */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE float u01fixedpt_closed_open_32_float(uint32_t i){
+    return (i>>8)*RANDOM_ITERATOR_R123_0x1p_24f; /* 0x1.0p-24f; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE float u01fixedpt_open_closed_32_float(uint32_t i){
+    return (1+(i>>8))*RANDOM_ITERATOR_R123_0x1p_24f; /* *0x1.0p-24f; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE float u01fixedpt_open_open_32_float(uint32_t i){
+    return (0.5f+(i>>9))*RANDOM_ITERATOR_R123_0x1p_23f; /* 0x1.p-23f; */
+}
+
+#if RANDOM_ITERATOR_R123_USE_U01_DOUBLE
+/* narrowing conversions:  uint64_t to double */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_closed_closed_64_double(uint64_t i){
+    /* N.B.  we ignore the high bit, so output is not monotonic */
+    return ((i&RANDOM_ITERATOR_R123_64BIT(0x7ffffffffffffe00)) + (i&0x200))*RANDOM_ITERATOR_R123_0x1p_63; /* 0x1.p-63; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_closed_open_64_double(uint64_t i){
+    return (i>>11)*RANDOM_ITERATOR_R123_0x1p_53; /* 0x1.0p-53; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_open_closed_64_double(uint64_t i){
+    return (1+(i>>11))*RANDOM_ITERATOR_R123_0x1p_53; /* 0x1.0p-53; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_open_open_64_double(uint64_t i){
+    return (0.5+(i>>12))*RANDOM_ITERATOR_R123_0x1p_52; /* 0x1.0p-52; */
+}
+
+/* widening conversions:  u32 to double */
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_closed_closed_32_double(uint32_t i){
+    /* j = i+(i&1) takes on 2^31+1 possible values with a 'trapezoid' distribution:
+      p_j =  1 0 2 0 2 .... 2 0 2 0 1
+      j   =  0 1 2 3 4 ....        2^32
+      by converting to double *before* doing the add, we don't wrap the high bit.
+    */
+    return (((double)(i&1)) + i)*RANDOM_ITERATOR_R123_0x1p_32; /* 0x1.p-32; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_closed_open_32_double(uint32_t i){
+    return i*RANDOM_ITERATOR_R123_0x1p_32; /* 0x1.p-32; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_open_closed_32_double(uint32_t i){
+    return (1.+i)*RANDOM_ITERATOR_R123_0x1p_32; /* 0x1.p-32; */
+}
+
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE double u01fixedpt_open_open_32_double(uint32_t i){
+    return (0.5+i)*RANDOM_ITERATOR_R123_0x1p_32; /* 0x1.p-32; */
+}
+#endif /* RANDOM_ITERATOR_R123_USE_U01_DOUBLE */
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/Random123/uniform.hpp b/corsika/detail/framework/random/random_iterator/detail/Random123/uniform.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f89c533b81919a0ea0f706f085b9e4e192447abd
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Random123/uniform.hpp
@@ -0,0 +1,312 @@
+/*
+Copyright 2010-2011, D. E. Shaw Research.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions, and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions, and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of D. E. Shaw Research nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __r123_uniform_dot_hpp
+#define __r123_uniform_dot_hpp
+
+/** @defgroup uniform Uniform distribution scalar conversion functions
+
+This file provides some simple functions that can be used to convert
+integers of various widths to floats and doubles with various
+characteristics.  It can be used to generate real-valued, uniformly
+distributed random variables from the random integers produced by
+the Random123 CBRNGs.
+
+There are three templated functions:
+
+ - u01:  output is as dense as possible in (0,1}, never 0.0.  May
+    return 1.0 if and only if the number of output mantissa bits
+    is less than the width of the input.
+
+ - uneg11:  output is as dense as possible in {-1,1}, never 0.0.  May
+    return 1.0 or -1.0 if and only if the number of output mantissa bits
+    is less than the width of the input.
+
+ - u01fixedpt:  output is "fixed point", equispaced, open at both ends, 
+     and is never 0.0, 0.5 nor 1.0.
+
+The behavior of u01 and uneg11 depend on the pre-processor symbol:
+RANDOM_ITERATOR_R123_UNIFORM_FLOAT_STORE.  When #defined to a non-zero value, u01
+and uneg11 declare a volatile intermediate result, with the
+intention of forcing architectures that have "extra bits" in their
+floating point registers to more closely conform to IEEE
+arithmetic.  When compiled this way, u01 and uneg11 will be
+significantly slower, as they will incur a memory write and read on
+every call.  Without it, they may fail the "known answer test"
+implemented in ut_uniform_IEEEkat.cpp even though they perform
+perfectly reasonable int to float conversions.  We have used
+this option to get 32-bit x86 to produce the same results as
+64-bit x86-64 code, but we do not recommend it for normal
+use.
+
+Three additional functions are defined when C++11 or newer is in use:
+
+ - u01all
+ - uneg11all
+ - u01fixedptall
+
+These functions apply the corresponding conversion to every
+element of their argument, which must be a staticly sized
+array, e.g., an r123array or a std::array of an integer type.
+
+This file may not be as portable, and has not been tested as
+rigorously as other files in the library, e.g., the generators.
+Nevertheless, we hope it is useful and we encourage developers to
+copy it and modify it for their own use.  We invite comments and
+improvements.
+*/
+
+#include <Random123/features/compilerfeatures.h>
+#include <limits>
+#include <cstdint> 
+#include <cstddef> 
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+#include <type_traits>
+#endif
+#if __cplusplus >= 201103L
+#include <array>
+#endif
+
+namespace random_iterator_r123{
+/**
+@{
+@cond HIDDEN_FROM_DOXYGEN
+*/
+
+#if RANDOM_ITERATOR_R123_USE_CXX11_TYPE_TRAITS
+using std::make_signed;
+using std::make_unsigned;
+#else
+// Sigh... We could try to find another <type_traits>, e.g., from
+// boost or TR1.  Or we can do it ourselves in the r123 namespace.
+// It's not clear which will cause less headache...
+template <typename T> struct make_signed{};
+template <typename T> struct make_unsigned{};
+#define RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(ST, UT)                 \
+template<> struct make_signed<ST>{ typedef ST type; }; \
+template<> struct make_signed<UT>{ typedef ST type; }; \
+template<> struct make_unsigned<ST>{ typedef UT type; }; \
+template<> struct make_unsigned<UT>{ typedef UT type; }
+
+RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(int8_t, uint8_t);
+RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(int16_t, uint16_t);
+RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(int32_t, uint32_t);
+RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(int64_t, uint64_t);
+#if RANDOM_ITERATOR_R123_USE_GNU_UINT128
+RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED(__int128_t, __uint128_t);
+#endif
+#undef RANDOM_ITERATOR_R123_MK_SIGNED_UNSIGNED
+#endif
+
+#if defined(__CUDACC__) || defined(_LIBCPP_HAS_NO_CONSTEXPR)
+// Amazing! cuda thinks numeric_limits::max() is a __host__ function, so
+// we can't use it in a device function.  
+//
+// The LIBCPP_HAS_NO_CONSTEXP test catches situations where the libc++
+// library thinks that the compiler doesn't support constexpr, but we
+// think it does.  As a consequence, the library declares
+// numeric_limits::max without constexpr.  This workaround should only
+// affect a narrow range of compiler/library pairings.
+// 
+// In both cases, we find max() by computing ~(unsigned)0 right-shifted
+// by is_signed.
+template <typename T>
+RANDOM_ITERATOR_R123_CONSTEXPR RANDOM_ITERATOR_R123_STATIC_INLINE RANDOM_ITERATOR_R123_CUDA_DEVICE T maxTvalue(){
+    typedef typename make_unsigned<T>::type uT;
+    return (~uT(0)) >> std::numeric_limits<T>::is_signed;
+ }
+#else
+template <typename T>
+RANDOM_ITERATOR_R123_CONSTEXPR RANDOM_ITERATOR_R123_STATIC_INLINE T maxTvalue(){
+    return std::numeric_limits<T>::max();
+}
+#endif
+/** @endcond
+    @}
+ */
+
+//! Return a uniform real value in (0, 1]
+/**
+    @ingroup uniform
+     Input is a W-bit integer (signed or unsigned).  It is cast to
+     a W-bit unsigned integer, multiplied by Ftype(2^-W) and added to
+     Ftype(2^(-W-1)).  A good compiler should optimize it down to an
+     int-to-float conversion followed by a multiply and an add, which
+     might be fused, depending on the architecture.
+   
+    If the input is a uniformly distributed integer, and if Ftype
+    arithmetic follows IEEE754 round-to-nearest rules, then the
+    result is a uniformly distributed floating point number in (0, 1].
+
+-    The result is never exactly 0.0.  
+-    The smallest value returned is 2^-(W-1).
+-    Let M be the number of mantissa bits in Ftype (typically 24 or 53).
+  -    If W>M  then the largest value retured is 1.0.
+  -    If W<=M then the largest value returned is Ftype(1.0 - 2^(-W-1)).
+*/
+template <typename Ftype, typename Itype>
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE Ftype u01(Itype in){
+    typedef typename make_unsigned<Itype>::type Utype;
+    RANDOM_ITERATOR_R123_CONSTEXPR Ftype factor = Ftype(1.)/(maxTvalue<Utype>() + Ftype(1.));
+    RANDOM_ITERATOR_R123_CONSTEXPR Ftype halffactor = Ftype(0.5)*factor;
+#if RANDOM_ITERATOR_R123_UNIFORM_FLOAT_STORE
+    volatile Ftype x = Utype(in)*factor; return x+halffactor;
+#else
+    return Utype(in)*factor + halffactor;
+#endif
+}
+
+//! Return a signed value in [-1,1]
+/**
+    @ingroup uniform
+   The argument is converted to a W-bit signed integer, multiplied by Ftype(2^-(W-1)) and
+   then added to Ftype(2^-W).  A good compiler should optimize
+   it down to an int-to-float conversion followed by a multiply and
+   an add, which might be fused, depending on the architecture.
+
+ If the input is a uniformly distributed integer, and if Ftype
+ arithmetic follows IEEE754 round-to-nearest rules, then the
+ output is a uniformly distributed floating point number in [-1, 1].
+
+- The result is never exactly 0.0.
+- The smallest absolute value returned is 2^-W
+- Let M be the number of mantissa bits in Ftype.
+  - If W>M  then the largest value retured is 1.0 and the smallest is -1.0.
+  - If W<=M then the largest value returned is the Ftype(1.0 - 2^-W)
+    and the smallest value returned is -Ftype(1.0 - 2^-W).
+*/
+template <typename Ftype, typename Itype>
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE Ftype uneg11(Itype in){
+    typedef typename make_signed<Itype>::type Stype;
+    RANDOM_ITERATOR_R123_CONSTEXPR Ftype factor = Ftype(1.)/(maxTvalue<Stype>() + Ftype(1.));
+    RANDOM_ITERATOR_R123_CONSTEXPR Ftype halffactor = Ftype(0.5)*factor;
+#if RANDOM_ITERATOR_R123_UNIFORM_FLOAT_STORE
+    volatile Ftype x = Stype(in)*factor; return x+halffactor;
+#else
+    return Stype(in)*factor + halffactor;
+#endif
+}
+
+//! Return a value in (0,1) chosen from a set of equally spaced fixed-point values
+/**
+    @ingroup uniform
+   Let:
+     - W = width of Itype, e.g., 32 or 64, regardless of signedness.
+     - M = mantissa bits of Ftype, e.g., 24, 53 or 64
+     - B = min(M, W)
+
+   Then the 2^(B-1) possible output values are: 2^-B*{1, 3, 5, ..., 2^B - 1}
+
+   The smallest output is: 2^-B
+
+   The largest output is:  1 - 2^-B
+
+   The output is never exactly 0.0, nor 0.5, nor 1.0.
+
+   The 2^(B-1) possible outputs:
+     - are equally likely,
+     - are uniformly spaced by 2^-(B-1),
+     - are balanced around 0.5
+*/
+template <typename Ftype, typename Itype>
+RANDOM_ITERATOR_R123_CUDA_DEVICE RANDOM_ITERATOR_R123_STATIC_INLINE Ftype u01fixedpt(Itype in){
+    typedef typename make_unsigned<Itype>::type Utype;
+    RANDOM_ITERATOR_R123_CONSTEXPR int excess = std::numeric_limits<Utype>::digits - std::numeric_limits<Ftype>::digits;
+    if(excess>=0){
+        RANDOM_ITERATOR_R123_CONSTEXPR int ex_nowarn = (excess>=0) ? excess : 0;
+        RANDOM_ITERATOR_R123_CONSTEXPR Ftype factor = Ftype(1.)/(Ftype(1.) + ((maxTvalue<Utype>()>>ex_nowarn)));
+        return (1 | (Utype(in)>>ex_nowarn)) * factor;
+    }else
+        return u01<Ftype>(in);
+}
+
+#if RANDOM_ITERATOR_R123_USE_CXX11_STD_ARRAY
+
+//! Apply u01 to every item in an r123array, returning a std::array
+/** @ingroup uniform
+ * Only in C++11 and newer.
+ * The argument type may be any integer collection with a constexpr static_size member,
+ * e.g., an r123array or a std::array of an integer type.
+ */
+template <typename Ftype, typename CollType>
+static inline
+std::array<Ftype, CollType::static_size> u01all(CollType in)
+{
+    std::array<Ftype, CollType::static_size> ret;
+    size_t i=0;
+    for(auto e : in){
+        ret[i++] = u01<Ftype>(e);
+    }
+    return ret;
+}
+
+//! Apply uneg11 to every item in an r123array, returning a std::array
+/** @ingroup uniform
+ * Only in C++11 and newer.
+ * The argument type may be any integer collection with a constexpr static_size member,
+ * e.g., an r123array or a std::array of an integer type.
+ */
+template <typename Ftype, typename CollType>
+static inline
+std::array<Ftype, CollType::static_size> uneg11all(CollType in)
+{
+    std::array<Ftype, CollType::static_size> ret;
+    size_t i=0;
+    for(auto e : in){
+        ret[i++] = uneg11<Ftype>(e);
+    }
+    return ret;
+}
+
+//! Apply u01fixedpt to every item in an r123array, returning a std::array
+/** @ingroup uniform 
+ * Only in C++11 and newer.
+ * The argument type may be any integer collection with a constexpr static_size member,
+ * e.g., an r123array or a std::array of an integer type.
+*/
+template <typename Ftype, typename CollType>
+static inline
+std::array<Ftype, CollType::static_size> u01fixedptall(CollType in)
+{
+    std::array<Ftype, CollType::static_size> ret;
+    size_t i=0;
+    for(auto e : in){
+        ret[i++] = u01fixedpt<Ftype>(e);
+    }
+    return ret;
+}
+#endif // __cplusplus >= 201103L
+
+} // namespace random_iterator_r123
+
+#endif
+
diff --git a/corsika/detail/framework/random/random_iterator/detail/SplitMix.hpp b/corsika/detail/framework/random/random_iterator/detail/SplitMix.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..03a6b152f21ed4db7d9c912e1a6571ca2722d243
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/SplitMix.hpp
@@ -0,0 +1,57 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * SplitMix.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+namespace random_iterator {
+
+namespace detail {
+
+template<typename UIntType>
+inline UIntType splitmix( UIntType& );
+
+
+template<>
+inline uint32_t splitmix<uint32_t>(uint32_t& x) {
+	uint32_t z = (x += 0x6D2B79F5UL);
+	z = (z ^ (z >> 15)) * (z | 1UL);
+	z ^= z + (z ^ (z >> 7)) * (z | 61UL);
+	return z ^ (z >> 14);
+}
+
+template<>
+inline uint64_t  splitmix<uint64_t>(uint64_t& x){
+	uint64_t z = (x += 0x9e3779b97f4a7c15);
+	z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
+	z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
+	return z ^ (z >> 31);
+}
+
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Squares3_128.hpp b/corsika/detail/framework/random/random_iterator/detail/Squares3_128.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa62c8c8b805149d5cd6a0eda5524a36159f8567
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Squares3_128.hpp
@@ -0,0 +1,158 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Squares3_128.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include "SquaresKeys.hpp"
+#include "uint128.hpp"
+
+namespace random_iterator {
+
+namespace detail {
+
+/*
+*  Three round counter-based middle square
+*
+*  squares3 - returns a 32-bit unsigned int [0,0xffffffff]
+*
+*
+*  Three rounds of squaring are performed and the result is returned.
+*  For the first two rounds, the result is rotated right 32 bits.
+*  This places the random data in the best position for the next round.
+*  y = ctr*key or z = (ctr+1)*key is added on each round.  For keys
+*  generated by the key utility, either ctr*key or (ctr+1)*key will
+*  have non-zero digits.  This improves randomization and also provides
+*  for a uniform output.
+*
+*  Note:  The squares RNG was based on ideas derived from Middle Square
+*  Weyl Sequence RNG.  One of the ideas was to obtain uniformity by adding
+*  the Weyl sequence after squaring.  Richard P. Brent (creator of the
+*  xorgens RNG) suggested this method.  It turns out that adding ctr*key
+*  is equivalent.  Brent's idea provides the basis for uniformity in this
+*  generator.
+*
+*  Implementation of the algorithm authored by Bernard Widynski and
+*  described in https://arxiv.org/pdf/2004.06278v2.pdf
+*/
+
+class Squares3_128
+{
+
+public:
+
+	typedef uint128_t    init_type;
+	typedef uint128_t   state_type;
+	typedef uint128_t    seed_type;
+	typedef uint64_t advance_type;
+	typedef uint64_t  result_type;
+
+	Squares3_128()=delete;
+
+	Squares3_128(size_t s, uint32_t  stream =0):
+	  state_(uint64_t(stream)<<32, 0),
+      seed_(seed_type{ splitmix<size_t>(s) })
+    {
+
+    }
+
+	Squares3_128( Squares3_128 const& other):
+	  state_(other.getState() ),
+      seed_(other.getSeed() )
+     {}
+
+	inline Squares3_128& operator=( Squares3_128 const& other)
+	{
+	  if(this==&other) return *this;
+
+	  state_  = other.getState();
+      seed_   = other.getSeed();
+
+      return *this;
+    }
+
+
+	inline result_type operator()(void)
+	{
+		uint128_t x, y, z;
+
+		y = x = seed_*state_ ;
+		z = y + seed_;
+
+		x = x*x + y; x = x.rotate_right() ; /* round 1 */
+
+		x = x*x + z; x = x.rotate_right() ; /* round 2 */
+
+		++state_;                           /* advance state */
+
+		return (x*x + y).upper();           /* round 3 */
+
+	}
+
+	inline void discard(advance_type n){
+
+		state_ += n;
+	}
+
+	inline seed_type getSeed() const {
+		return seed_;
+	}
+
+	inline void setSeed(seed_type seed) {
+		seed_ = seed;
+	}
+
+	inline state_type getState() const {
+		return state_;
+	}
+
+	inline void setState( state_type state) {
+		state_ = state;
+	}
+
+	inline static uint64_t generateSeed( size_t i ){
+			return keys[i];
+		}
+
+	friend inline std::ostream& operator<<(std::ostream& os, const Squares3_128& be){
+	        return os << "state: " << be.getState()
+	        		  << " seed: " << be.getSeed();
+	    }
+
+	static constexpr result_type min(){ return 0;}
+
+	static constexpr result_type max(){ return std::numeric_limits<result_type>::max();}
+
+private:
+
+	state_type state_;
+	seed_type   seed_;
+};
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Squares3_64.hpp b/corsika/detail/framework/random/random_iterator/detail/Squares3_64.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa76bb25f763ef27555dcb471355b76e885e288f
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Squares3_64.hpp
@@ -0,0 +1,154 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Squares3.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include "SquaresKeys.hpp"
+
+namespace random_iterator {
+
+namespace detail {
+
+/*
+*  Three round counter-based middle square
+*
+*  squares3 - returns a 32-bit unsigned int [0,0xffffffff]
+*
+*
+*  Three rounds of squaring are performed and the result is returned.
+*  For the first two rounds, the result is rotated right 32 bits.
+*  This places the random data in the best position for the next round.
+*  y = ctr*key or z = (ctr+1)*key is added on each round.  For keys
+*  generated by the key utility, either ctr*key or (ctr+1)*key will
+*  have non-zero digits.  This improves randomization and also provides
+*  for a uniform output.
+*
+*  Note:  The squares RNG was based on ideas derived from Middle Square
+*  Weyl Sequence RNG.  One of the ideas was to obtain uniformity by adding
+*  the Weyl sequence after squaring.  Richard P. Brent (creator of the
+*  xorgens RNG) suggested this method.  It turns out that adding ctr*key
+*  is equivalent.  Brent's idea provides the basis for uniformity in this
+*  generator.
+*
+*  Implementation of the algorithm authored by Bernard Widynski and
+*  described in https://arxiv.org/pdf/2004.06278v2.pdf
+*/
+
+class Squares3_64
+{
+
+public:
+
+	typedef uint64_t    init_type;
+	typedef uint64_t   state_type;
+	typedef uint64_t    seed_type;
+	typedef uint64_t advance_type;
+	typedef uint32_t  result_type;
+
+	Squares3_64()=delete;
+
+	Squares3_64(seed_type s, uint32_t):
+	  state_(0),
+      seed_(seed_type{ splitmix<seed_type>(s) })
+    {}
+
+	Squares3_64( Squares3_64 const& other):
+	  state_(other.getState() ),
+      seed_(other.getSeed() )
+     {}
+
+	inline Squares3_64& operator=( Squares3_64 const& other)
+	{
+	  if(this==&other) return *this;
+
+	  state_  = other.getState();
+      seed_   = other.getSeed();
+
+      return *this;
+    }
+
+
+	inline result_type operator()(void)
+	{
+		uint64_t x, y, z;
+
+		y = x = seed_*state_ ; z = y + seed_;
+
+		x = x*x + y; x = (x>>32) | (x<<32);       /* round 1 */
+
+		x = x*x + z; x = (x>>32) | (x<<32);       /* round 2 */
+
+		++state_;                                 /* advance state */
+
+		return (x*x + y) >> 32;                   /* round 3 */
+
+	}
+
+	inline void discard(advance_type n){
+
+		state_ += n;
+	}
+
+	inline seed_type getSeed() const {
+		return seed_;
+	}
+
+	inline void setSeed(seed_type seed) {
+		seed_ = seed;
+	}
+
+	inline state_type getState() const {
+		return state_;
+	}
+
+	inline void setState( state_type state) {
+		state_ = state;
+	}
+
+	inline static uint64_t generateSeed( size_t i ){
+			return keys[i];
+		}
+
+	static constexpr result_type min(){ return 0;}
+
+	static constexpr result_type max(){ return std::numeric_limits<result_type>::max();}
+
+	friend inline std::ostream& operator<<(std::ostream& os, const Squares3_64& be){
+	        return os << "state: " << be.getState()
+	        		  << " seed: " << be.getSeed();
+	    }
+
+private:
+
+	state_type state_;
+	seed_type   seed_;
+};
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Squares4_128.hpp b/corsika/detail/framework/random/random_iterator/detail/Squares4_128.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..86db25011c1ac46f67caadc74716723fbba54f26
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Squares4_128.hpp
@@ -0,0 +1,161 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Squares4_128.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include "SquaresKeys.hpp"
+#include "uint128.hpp"
+
+namespace random_iterator {
+
+namespace detail {
+
+/*
+*  Three round counter-based middle square
+*
+*  squares3 - returns a 32-bit unsigned int [0,0xffffffff]
+*
+*
+*  Three rounds of squaring are performed and the result is returned.
+*  For the first two rounds, the result is rotated right 32 bits.
+*  This places the random data in the best position for the next round.
+*  y = ctr*key or z = (ctr+1)*key is added on each round.  For keys
+*  generated by the key utility, either ctr*key or (ctr+1)*key will
+*  have non-zero digits.  This improves randomization and also provides
+*  for a uniform output.
+*
+*  Note:  The squares RNG was based on ideas derived from Middle Square
+*  Weyl Sequence RNG.  One of the ideas was to obtain uniformity by adding
+*  the Weyl sequence after squaring.  Richard P. Brent (creator of the
+*  xorgens RNG) suggested this method.  It turns out that adding ctr*key
+*  is equivalent.  Brent's idea provides the basis for uniformity in this
+*  generator.
+*
+*  Implementation of the algorithm authored by Bernard Widynski and
+*  described in https://arxiv.org/pdf/2004.06278v2.pdf
+*/
+
+class Squares4_128
+{
+
+public:
+
+	typedef uint128_t    init_type;
+	typedef uint128_t   state_type;
+	typedef uint128_t    seed_type;
+	typedef uint64_t advance_type;
+	typedef uint64_t  result_type;
+
+	Squares4_128()=delete;
+
+	Squares4_128(size_t s, uint32_t  stream =0):
+	  state_(uint64_t(stream)<<32, 0),
+      seed_(seed_type{ splitmix<size_t>(s) })
+    {}
+
+	Squares4_128( Squares4_128 const& other):
+	  state_(other.getState() ),
+      seed_(other.getSeed() )
+     {}
+
+	inline Squares4_128& operator=( Squares4_128 const& other)
+	{
+	  if(this==&other) return *this;
+
+	  state_  = other.getState();
+      seed_   = other.getSeed();
+
+      return *this;
+    }
+
+
+	inline result_type operator()(void)
+	{
+		uint128_t x, y, z;
+
+		y = x = seed_*state_ ;
+		z = y + seed_;
+
+		x = x*x + y; x = x.rotate_right() ; /* round 1 */
+
+		x = x*x + z; x = x.rotate_right() ; /* round 2 */
+
+		x = x*x + y; x = x.rotate_right() ; /* round 1 */
+
+		++state_;                           /* advance state */
+
+		return (x*x + z).upper();           /* round 3 */
+
+	}
+
+	inline void discard(advance_type n){
+
+		state_ += n;
+	}
+
+	inline seed_type getSeed() const {
+		return seed_;
+	}
+
+	inline void setSeed(seed_type seed) {
+		seed_ = seed;
+	}
+
+	inline state_type getState() const {
+		return state_;
+	}
+
+	inline void setState( state_type state) {
+		state_ = state;
+	}
+
+	inline static uint64_t generateSeed( size_t i ){
+			return keys[i];
+		}
+
+	friend inline std::ostream& operator<<(std::ostream& os, const Squares4_128& be){
+	        return os << "state: " << be.getState()
+	        		  << " seed: " << be.getSeed();
+	    }
+
+
+	static constexpr result_type min(){ return 0;}
+
+	static constexpr result_type max(){ return std::numeric_limits<result_type>::max();}
+
+
+
+private:
+
+	state_type state_;
+	seed_type   seed_;
+};
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/Squares4_64.hpp b/corsika/detail/framework/random/random_iterator/detail/Squares4_64.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b40c4abf332de665f6e98d8a092a997da0757800
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/Squares4_64.hpp
@@ -0,0 +1,134 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * Squares4.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include "SquaresKeys.hpp"
+
+namespace random_iterator {
+
+namespace detail {
+
+class Squares4_64
+{
+
+public:
+
+	typedef uint64_t    init_type;
+	typedef uint64_t   state_type;
+	typedef uint64_t    seed_type;
+	typedef uint64_t advance_type;
+	typedef uint32_t  result_type;
+
+	Squares4_64()=delete;
+
+	Squares4_64(seed_type  s, uint32_t):
+	  state_(0),
+      seed_(seed_type{ splitmix<seed_type>(s)})
+    {}
+
+	Squares4_64( Squares4_64 const& other):
+	  state_(other.getState() ),
+      seed_(other.getSeed() )
+     {}
+
+	inline Squares4_64& operator=( Squares4_64 const& other)
+	{
+	  if(this==&other) return *this;
+
+	  state_  = other.getState();
+      seed_   = other.getSeed();
+
+      return *this;
+    }
+
+	inline result_type operator()(void)
+	{
+		uint64_t x, y, z;
+
+		y = x = seed_*state_ ; z = y + seed_;
+
+		x = x*x + y; x = (x>>32) | (x<<32);       /* round 1 */
+
+		x = x*x + z; x = (x>>32) | (x<<32);       /* round 2 */
+
+		x = x*x + y; x = (x>>32) | (x<<32);       /* round 3 */
+
+		++state_;                                 /* advance state */
+
+		return (x*x + z) >> 32;                   /* round 4 */
+
+	}
+
+	inline void reset(void) {
+		state_ = 0;
+	}
+
+	inline void discard(advance_type n){
+
+		state_ += n;
+	}
+
+	inline seed_type getSeed() const {
+		return seed_;
+	}
+
+	inline void setSeed(seed_type seed) {
+		seed_ = seed;
+	}
+
+	inline state_type getState() const {
+		return state_;
+	}
+
+	inline void setState( state_type state) {
+		state_ = state;
+	}
+
+	inline static uint64_t generateSeed( size_t i ){
+		return keys[i];
+	}
+
+	static constexpr result_type  min()  { return 0;}
+
+	static constexpr result_type  max()  { return std::numeric_limits<result_type>::max(); }
+
+	friend inline std::ostream& operator<<(std::ostream& os, const Squares4_64& be){
+	        return os << "state: " << be.getState()
+	        		  << " seed: " << be.getSeed();
+	    }
+
+private:
+
+	state_type state_;
+	seed_type   seed_;
+};
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/SquaresKeys.hpp b/corsika/detail/framework/random/random_iterator/detail/SquaresKeys.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0f4d871d281c99a9881c98090acf116e20b60eff
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/SquaresKeys.hpp
@@ -0,0 +1,25057 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * SquaresKeys.hpp
+ *
+ *  Created on: 25/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+
+
+namespace random_iterator {
+
+namespace detail {
+
+/*
+*
+*   The keys are created so that the upper 8 digits are different and also
+*   that the lower 8 digits are different.  The lower 8 digits are created
+*   systematically so that all possible combinations are produced.  The
+*   ninth digit is chosen to be different than the eighth digit.  The rest
+*   of the upper 7 digits are chosen randomly.  For any two keys produced,
+*   it is certain that at least one digit is different in the lower 9
+*   digits.  Testing has shown that this prevents similarities that can
+*   arise in streams produced by keys that vary only in the upper digits.
+*
+*   Credits:  Bernard Widynski in https://arxiv.org/pdf/2004.06278v2.pdf
+*
+*/
+
+static uint64_t keys[] = {
+
+		0xc58efd154ce32f6d,
+		0xfcbd65e54bf53ed9,
+		0xea3742c76bf95d47,
+		0xfb9e125878fa6cb3,
+		0x1ebd294ba7fe8b31,
+		0xf29ba87dc5f1a98d,
+		0x815a7e4ed4e3b7f9,
+		0x63acbfe213f5d867,
+		0x67e2d1b542f9e6d3,
+		0x682ec13872ecf651,
+		0x912f87476ecf14ad,
+		0x3cd7581a9de3542b,
+		0x548c9decbce65297,
+		0x49b37fddcad971f3,
+		0x52413dcfe7db8f61,
+		0xbf785e3215ac7ebd,
+		0x6be5329546e1ad3b,
+		0x8b7ef19654e3dca7,
+		0x91d763c983d7eb15,
+		0x3284b1c872d9fa81,
+		0x2af83db87fab18ed,
+		0xb185f4cbadcf285b,
+		0x53d684c1fbd246c7,
+		0x235fda821cd68735,
+		0xfd7915843bd985a1,
+		0x76f9c4b657cb941f,
+		0x19f3e5b765cea27b,
+		0xaf6235ea95b2c1e7,
+		0x9d827c5ba2b3df45,
+		0x8a149e2dc2a6feb1,
+		0xa9d234bdcea91d2f,
+		0xab34cd621f9c2d8b,
+		0x65c348e32c9e3bf7,
+		0x7e93bdc54dc26b75,
+		0x4b37a2976ab579d1,
+		0xf28b71eba6b7984f,
+		0x4b2596aed48c96ab,
+		0x39a5fc8ed4aec629,
+		0x729c8ab1f3b1e495,
+		0xb6e4a37323a5e4f1,
+		0x6ac4b21652b8136f,
+		0xaf89ed465f8932db,
+		0xbcae59887ead5149,
+		0xd3bec9487b8e4fa5,
+		0xbad24f5dcba48e13,
+		0xfeca932ed6948c7f,
+		0x8ab14351f4768aeb,
+		0x8fa96252147acb59,
+		0xb479ef53237ed9c5,
+		0x69581da875a1f943,
+		0x72ae6d4982a4179f,
+		0xd5b9184baf98371d,
+		0x32dab6fdce8b3579,
+		0x12bc48fedb8c64e5,
+		0xa763b59feb9f8463,
+		0x9d3fe4521a7382bf,
+		0x7acf9b254986a13d,
+		0x7f482bd43456bf89,
+		0x5acef6487369bdf5,
+		0x8af4673a926ced73,
+		0x2bc59e6ba3721bcf,
+		0x9b8a23ddcf752b4d,
+		0x71d69231fe563ab9,
+		0x8ec74d321e6b5a27,
+		0x6cf18d432c5d6893,
+		0xa1c6b984394d76ef,
+		0xd41735298972a56d,
+		0xd6187e9ba765b4d9,
+		0x63547dbdc569d347,
+		0xf846e95ed46ae2b3,
+		0xa84dc2bfe47df231,
+		0x89f6da365472318d,
+		0x4ea36b932d543fe9,
+		0x17fd98a76d384e57,
+		0x63f52c987b496dc3,
+		0xe874dcba9a5d8c41,
+		0xd7e4f9ccb63f7a9d,
+		0x5fa74d6fe753c91b,
+		0x783c12e1f534d987,
+		0xe7c435b21548d7e3,
+		0xc128ab66534bf761,
+		0xaec842f8724e15bd,
+		0x176f8e4a9f61453b,
+		0xc48512fcbe2453a7,
+		0x6b2a87fdcd498315,
+		0x593674ffec4b9281,
+		0x5d7f912fe62a7fcd,
+		0x9adb3652172f9e4b,
+		0xc71f35e54632cdb7,
+		0xd2eca7598736ec25,
+		0xeb6a51298437fb91,
+		0x635c9b49823a19fd,
+		0xcd82715baf1e296b,
+		0x924e7afdce2148d7,
+		0xd5b836c1fd137845,
+		0xfb6da2843d2786b1,
+		0xa38dbf654b1a952f,
+		0x2cb1d736571da38b,
+		0x59b3ecf9861eb2f7,
+		0x35e297ccb823e175,
+		0x847f3c6ba425efc1,
+		0xe398fdbdc4281e3f,
+		0xa5d3fe4dcdf82e9b,
+		0xfdc145332efc4d19,
+		0xc8947ae32bef4c85,
+		0xea1479f65bf37ae1,
+		0xa4efd3576ae4895f,
+		0xcb296a7985f697cb,
+		0x738c1b6ba5fbc739,
+		0x35a6921cb3fed6a5,
+		0xb31528eed5e2f613,
+		0x965bc7e323e5147f,
+		0x8cbf97a651f723eb,
+		0x872b1a476feb4259,
+		0xc951deb87bed61c5,
+		0xfa23b9e98ace7f23,
+		0x4d972b1ba9c27d8f,
+		0xf4296b1ba6d48cfb,
+		0x4c7931a1f4e7bc69,
+		0xdb4637f214e9cad5,
+		0xdb31c5a324cdea53,
+		0x1aeb345764d218af,
+		0xbd6aefca91e5382d,
+		0x412c9b8bafd73689,
+		0xd6578baa9dca46f5,
+		0xc32198dfebcd8573,
+		0x8a2c6f5ed8ae73cf,
+		0x9d8c457219c3a24d,
+		0x52f18cd437d5c1b9,
+		0x8eb72d5545b8cf17,
+		0xcfeb218764bade83,
+		0xbca193f7628aebdf,
+		0x4ec597dba3b12c5d,
+		0x4cf172eedfa43bc9,
+		0xd9a614e1fec85b37,
+		0x9523c4b21ecb69a3,
+		0x398bec154cbd8921,
+		0xe62fd8a438af967d,
+		0xe7abf3c767a2b5e9,
+		0xe9521c3ba8b6d457,
+		0x31a5fe6cb5a8e4c3,
+		0x5ce34b9ed5abf341,
+		0xdaeb2391f3ae129d,
+		0x59e3ab2764c3521b,
+		0xba1c6e532ea34f67,
+		0x6fb127854c976ed3,
+		0x57e82a976c9a8d51,
+		0x4dba9fe6586c7bad,
+		0xfd62e85dc67f9a2b,
+		0x129c348fe582da97,
+		0xfb85d3cfe495d8f3,
+		0xae17f8b324a9f871,
+		0x687c23b5438a16cd,
+		0xe48a26d8719e264b,
+		0xcb24e1998f9154b7,
+		0xa5e6c32cbea68425,
+		0x46d1e9adcda78391,
+		0xde6821fdca6981fd,
+		0x78ba1d3fe76c9f5b,
+		0xfde38452165faec7,
+		0xb73a96d54782ed35,
+		0x384ca5776475fca1,
+		0xc1643d7a94782b1f,
+		0xea1b52da916c2a7b,
+		0x4ce23b5baf5d39e7,
+		0x7cb82eaede817965,
+		0xab637dc1fd6487c1,
+		0xfce8da921c57963f,
+		0xb83a69132c58a49b,
+		0x6a92ef86586dc419,
+		0x637a8f4a976fd285,
+		0xb2163ceba674f2e1,
+		0x4f9853ddc487215f,
+		0xa432f17ed1572fab,
+		0x361afe5edf5b4e29,
+		0xd63948f21f3e4d95,
+		0x368fb5e54d527bf1,
+		0x6e2438165c438a6f,
+		0x1c8df9776a3598db,
+		0xef43159cb73ac849,
+		0x52e6814ba63cd7b5,
+		0xf5b7639dc65fe723,
+		0xb72f4c8fe463158f,
+		0xaf384952135624fb,
+		0xab2591f8715a4369,
+		0xa8132fb87f3b62d5,
+		0xc12d5aea9d4e8153,
+		0xeb364c598b317e9f,
+		0xe51c628cba349e1d,
+		0x257bf19fe825bd79,
+		0xea8c6391f628cbe5,
+		0x253e9b82172ceb63,
+		0xe8276ab4342de8bf,
+		0x1efc56d98654293d,
+		0x4ca7512cb12537a9,
+		0x2de7ca1cbf2a5817,
+		0xfc431a2cbe1c7683,
+		0xe124c39cba1c74df,
+		0x3ba281d1fb21a35d,
+		0xf69b57243a14b2c9,
+		0x7298a6365a28d137,
+		0x3b4987665618df93,
+		0x95c4b8e76419dcef,
+		0xd8ea12fa942f1e6d,
+		0x93cfd65cb4123cd9,
+		0xa34f8e9cbef35c47,
+		0xb53d64ffedf76ab3,
+		0x64e753832dfb8a31,
+		0x83c51d432afc978d,
+		0x4bf7829437dea6f9,
+		0x791ed52989f2d567,
+		0xc73ef4aa97f6e5d3,
+		0xe94f2a6cb6e9f451,
+		0x7e381b4dc4fb13ad,
+		0xc1294afed1fe432b,
+		0xb2d59a7543f25197,
+		0xf3e9b8532dc46fe3,
+		0xa275cf354cd78e61,
+		0xec8b3a7549e87cbd,
+		0xf3e4bd2767ed9c3b,
+		0x47d926a985dfcba7,
+		0x3e4618adc7d3ea15,
+		0xf7291c3fe4d5f981,
+		0x91c53af324c817ed,
+		0x956d273543ec275b,
+		0xae54193761de35c7,
+		0xe2c5a1da9fd18635,
+		0x3167ecfa9ed584a1,
+		0xf89d531babc7931f,
+		0x657afdcfe8d9a17b,
+		0xb15a2fcfe59bafd7,
+		0x7d54b28217afce45,
+		0x28d61bf546a3fdb1,
+		0x8fd1b34875b61c2f,
+		0x2da37ec763d72c8b,
+		0xc23e9a7981cb3af7,
+		0x87dbfa4a9fbe4a75,
+		0xd34b259dceb278d1,
+		0x8643a5cfecb3974f,
+		0xe5d3a8721dc695ab,
+		0xef7cd65438bac529,
+		0x71fd2b6547acd395,
+		0xc2e84a68769ed3f1,
+		0x5bc38e6ba7b4126f,
+		0xa5b67e4dc4a631db,
+		0x9ac8526ed1b84f39,
+		0x51a4e6bedf8b4ea5,
+		0x34d86eb32f9e7d13,
+		0x6958ebf43d918b7f,
+		0xbcadf2954c7389eb,
+		0xe527f3b54b86ca59,
+		0x71bfd98ba679d8c5,
+		0x1d93c26cb69ce843,
+		0xfa45e9dcb37de59f,
+		0x7d8b6531f5a4361d,
+		0x7bfd654212b63479,
+		0x857bc2f541a963e5,
+		0x8f6e21465f9c8263,
+		0x2ad3ce765c6d71bf,
+		0x2e13fb698b719f2d,
+		0x75962eddca63be89,
+		0x968cf5eed876bcf5,
+		0x5b38a711f569ec73,
+		0xd6b28f72145ae9cf,
+		0x1df2a8c4357f1a4d,
+		0x48a13527647238b9,
+		0x345fe8ccb1a65927,
+		0x1e8564ccbf5a6793,
+		0x17d283ca9c4a75ef,
+		0xe296a41dcb5e946d,
+		0x748a1651fa61b3d9,
+		0xb39ad2521b85d247,
+		0xd68a5ec54967e1b3,
+		0xc812df965769ef21,
+		0xe1d53af9845b1f7d,
+		0x2d7b5e69835f2de9,
+		0x5eb7683dc1824d57,
+		0xa9cb375edf456bc3,
+		0x87c6a511fe598b41,
+		0xed89cbf21e3b789d,
+		0x97becd443c4ea81b,
+		0x34a96b865b41d687,
+		0x41a579b98954d6e3,
+		0x2a95c36cb948f561,
+		0xa73f846dc65914bd,
+		0x5b147f6fe56d243b,
+		0xb58dc7ffe15f42a7,
+		0x92873bd763748215,
+		0x231875b54e358f71,
+		0x2ebf7c954b267ecd,
+		0xe8b423576c2a9d4b,
+		0xe2d34a57682eacb7,
+		0x1349e8bdc941eb25,
+		0x1725ecfed734fa91,
+		0xbf63852fe53618fd,
+		0x4bf7e582153a286b,
+		0x17c63986542c36d7,
+		0xd5b27a1a912f6745,
+		0x86fe754a9f2385b1,
+		0x6dbf4cebad16942f,
+		0x3d56fbedcd17a28b,
+		0x91e382ced92ab1f7,
+		0xb5a7189fe81dcf65,
+		0xb3296fe54832fec1,
+		0xb1c85f4768251d3f,
+		0xab39512875162d9b,
+		0xa613fb49852a4c19,
+		0xc7419f8ba21d4b85,
+		0xdc9456198cfd69e1,
+		0x192f58ccbce1985f,
+		0x6b5da74feaf396cb,
+		0x6e3729f21bf7c639,
+		0x4b3e9ac328f9d4a5,
+		0xe71c345768fce513,
+		0xc472593765cde27f,
+		0x1385f4da96f432eb,
+		0x14fd3ebdc3f74159,
+		0xafe4891dc1e84fb5,
+		0xd1453b2dcfdb7e23,
+		0xe48c5b221ebd6c8f,
+		0x4d26fe743cd18afb,
+		0x95d86fa54ae3cb69,
+		0xbadf35e548e6c9d5,
+		0x649ecbf987dae953,
+		0x95d2c6a984cbe6af,
+		0x7d95286cb5cf172d,
+		0xba165e71f4e23589,
+		0xceb974f212d764f5,
+		0x4e79bc3651ea8473,
+		0x3abfe5254eba72cf,
+		0x897c12e76cbe914d,
+		0x3cd4851768c1bfa9,
+		0x36159c4ba9b4ce17,
+		0x546bea9dc7b6ed83,
+		0x16ed2b9dc497eadf,
+		0xcd91876326ac1b5d,
+		0x9bf65e4434bf2ac9,
+		0xcf7a269984d25a37,
+		0xa84f7bda91d568a3,
+		0xb5c364187fca9821,
+		0xb492cde98eab957d,
+		0x29f785ddcb8da4e9,
+		0xc14bde21fab1d357,
+		0xd5728fc219a5e2c3,
+		0x8be3d9c659b8f241,
+		0x29648ac656ba219d,
+		0x3a987be7648b2ef9,
+		0xbf4127ca92af3e67,
+		0x4f3e6a9cb1a26cd3,
+		0x47af91cedfa68c51,
+		0x9d745181fe8679ad,
+		0xceb963721e7ca92b,
+		0xd65e1a732b6ec897,
+		0xf796a2865a91d7f3,
+		0x21bc7e3989a4f671,
+		0x7539fc4ba69715cd,
+		0xe8134afed69a254b,
+		0x3c5a618fe29d43b7,
+		0x98674bffe1af7325,
+		0x23c7e91653b48291,
+		0xefa789532c647fed,
+		0x759d1bc43d679e5b,
+		0xbe79df554b59adc7,
+		0xac5b31f9897edc35,
+		0x4b376f1dc872fba1,
+		0xaf75843ed7852a1f,
+		0x36d54121f486297b,
+		0xf9b478d2146a38e7,
+		0x6ade2cb4329d4865,
+		0x149acd36528f76c1,
+		0xc1e2f5798e72953f,
+		0x3b7decf98e65a39b,
+		0xe79ca23cbd68c319,
+		0xfb51793fea6bd185,
+		0x16d49f7fe75bcfd1,
+		0x14aec58439721e4f,
+		0x9a6ed82437642eab,
+		0xafbe526985674d29,
+		0x9e57b349826a4c95,
+		0x5e1fac2a925c6af1,
+		0x932c41bbad3e796f,
+		0x2d9f63edce4297db,
+		0x69c34711fd35c749,
+		0x48f5e9b21c38d6b5,
+		0x9d1823e54a5be623,
+		0xed8f3b66574ce38f,
+		0x46f2edca986123fb,
+		0xb19ea6ddc8754269,
+		0x5461792dc34861d5,
+		0x2fe9b81ed15a7f43,
+		0x2179d53dce2b6d9f,
+		0x85ce47f32e3f8c1d,
+		0x5b9d62e54e32bc79,
+		0xd8bf34776b24cae5,
+		0x58d192f87b28ea63,
+		0xc1be47998629e7bf,
+		0x4de82f1cb74e183d,
+		0x87f4c5afe74136a9,
+		0x14b63da1f8345617,
+		0xb256a43214297583,
+		0x6bd2c316512973df,
+		0xd8ce49376f1c925d,
+		0xaf71bdc76d2fa1c9,
+		0xb3d84a6a9b13cf27,
+		0x4cfe38acba15de93,
+		0x2e41bd3ba716dbef,
+		0x8591d7e1f72a1c6d,
+		0xb45a67e4361e2bd9,
+		0x2917f3d768215b47,
+		0xf5d2eba9851469b3,
+		0xfe59c83cb4278931,
+		0x1dceb4a65ef7968d,
+		0x89e6cb487ceba5f9,
+		0x4a81527cbafec467,
+		0x6f2b54ddc9f1e4d3,
+		0xa3bde9c32ae6f351,
+		0x1e63d78548f712ad,
+		0x9f72ab1767fa412b,
+		0xdc71e3b764ec3f87,
+		0xf9b25a7982cf5de3,
+		0x9174f8acb2f38d61,
+		0x6d3fca5a9fe47abd,
+		0x64ab1371fde79a3b,
+		0x6e4f97221debc9a7,
+		0xd971a8543aced915,
+		0x1c4a9b865ad2f781,
+		0xda1b53f878c416ed,
+		0x4c16fd8ba7e8265b,
+		0x7f8a3e6cb5ea34c7,
+		0xe47516adc2ed7435,
+		0xa8c52fdfe2df73a1,
+		0xa6f1943653d4921f,
+		0x5b6df4732ec49f6b,
+		0xf2a154643cb6aed7,
+		0xf9a1ecb769bacd45,
+		0x743b18f7679decb1,
+		0x92168deba8c31b2f,
+		0x65db129fe6d42a8b,
+		0x3c7264ffe4c639f7,
+		0x9ebf384213db4975,
+		0x1ecb836543bc67d1,
+		0x6b24d8c651be864f,
+		0x518947a76fc294ab,
+		0xfc3e6a198eb6c429,
+		0x3895ec7bacb8d295,
+		0x79bd84edc89ad2f1,
+		0x2fe6b9ddc68bde5f,
+		0x4c961af437912fcb,
+		0x96f17e8327b54e39,
+		0x1be795c763b74da5,
+		0x4c9d253984ba7c13,
+		0x7db136c9819c6a7f,
+		0x8edac12a9d6f78eb,
+		0x8439ab2edea2c859,
+		0x47a21691fb94d7c5,
+		0x9cd7b3821ca9e743,
+		0xcda1e5b3287ae49f,
+		0xd8ae3bc7689e251d,
+		0x8dc1742ba8b14379,
+		0x42f76d5cb7a462e5,
+		0x4a98165ed4b98163,
+		0x415fe36dc1786eaf,
+		0x5f2de79dcf6b8e2d,
+		0xa8f756321e5fad89,
+		0x91f5de843d72cbf5,
+		0xce21f5354c85eb73,
+		0x5cbe3a654956e8cf,
+		0xc4df7e2ba87b194d,
+		0x1f82ba9dc56e27b9,
+		0x1cf4a83fe6a15827,
+		0x2e459b31f2a47693,
+		0x57d84ca2128674ef,
+		0x1cd538a5417a936d,
+		0xf8b539a54f5ca2d9,
+		0x4b762d998d6fc147,
+		0x65c439f98b62dfa3,
+		0x7183a2ccba76fe21,
+		0xa39f5d1dc9581e7d,
+		0xa3d8ce21f65a2ce9,
+		0xf9bca622186e3c57,
+		0xbfa7ed2545716ac3,
+		0xdc4e672a93758a41,
+		0x4d35b9fba145879d,
+		0x46e59cb98f49a71b,
+		0x23de976bae3dc587,
+		0x5f6ec73cba4fc5e3,
+		0x3c814a6feb73f461,
+		0xb7d4f8c32a5613bd,
+		0xbe769c465a69423b,
+		0xebd41a97685c41a7,
+		0x54be1a79864c5ef3,
+		0xc348fa5cb4528e71,
+		0x23e7984ba1437bcd,
+		0xfa5cb87edf269c4b,
+		0x5b497311fe28cab7,
+		0xd638bca21e3cda25,
+		0xf281bdc54b3fe891,
+		0x81cb9a776a4317fd,
+		0xbe43f2da9a35276b,
+		0x47a1982cb82935d7,
+		0x9a5e832ed82c7645,
+		0xa26e17ced53e74b1,
+		0x8acd63ffe451932f,
+		0x139a2f665234a18b,
+		0xb4e5c1f43d15afe7,
+		0xc692b5354d19ce65,
+		0xf18e42b7692aedc1,
+		0x9be6d458781deb3f,
+		0x26435afed8132c9b,
+		0xcdba26ffe8264b19,
+		0x1c5724b1f6194a85,
+		0xa46178b4352b68e1,
+		0x7aefcb95431d875f,
+		0xb46c89e8732195cb,
+		0xc2d63a987ef2c539,
+		0x2e675d198cf6d3a5,
+		0xbfe6928babf9e413,
+		0x3f8c4a1cb8dae17f,
+		0x892e4b5dc7fd21eb,
+		0xf36ab95328e13f49,
+		0xabc1589327f34eb5,
+		0xec1d4f3765f87d23,
+		0x68a432f652e96b8f,
+		0xd57c2ba761ec79fb,
+		0x3b9d8a687edfba69,
+		0x83d746bbabe2c8d5,
+		0x5b97d621fbd6e853,
+		0x9258d7c219c7e5af,
+		0x21fda79549eb162d,
+		0xb49a18d657de2489,
+		0x5d4f6bca98d163f5,
+		0x4efd126cb6e58273,
+		0x71f8935ba3d671cf,
+		0xe71c894cb1c98f3d,
+		0xe9f85b3edfbc8ea9,
+		0xfc173d632eafbd17,
+		0xf9316ba54db2ec83,
+		0x2db7c98438a4e9df,
+		0xc79b23e769c81a5d,
+		0xd15b96c876db28c9,
+		0x31ca824cb6ce4937,
+		0x3a624d8fe5d167a3,
+		0xca42d6e1f4d59721,
+		0xabf4563212c6947d,
+		0x12d5c9a541c8a3e9,
+		0x38eb96554fadc257,
+		0x7c3b81276b9fd1c3,
+		0x2fe9c5798ba4ef31,
+		0xe8691c7cb9a51f8d,
+		0x48bda12dc6a72df9,
+		0x6c94b281f5ab3d67,
+		0xa38d2b92169e5bd3,
+		0x519b6ad546c28b51,
+		0xb73edf6652b378ad,
+		0x251e3f9871c6a82b,
+		0x376eb2c65f8ac697,
+		0x81fc2a3a9d8bc6f3,
+		0x3fa9126dcb9fe571,
+		0x1d4ec5b1fa9314cd,
+		0x9ba36d521ca7234b,
+		0x42fec1a438a942b7,
+		0x1d9a2e8768ac7125,
+		0xa9584128749d6f81,
+		0x3c6bef4a93817ced,
+		0x7eab124dc1839d5b,
+		0x87eb125edf65abc7,
+		0xec31b8d1fe79db35,
+		0xdab537e32d6ce9a1,
+		0xba712cd43a6de81f,
+		0x7fd93b665c93287b,
+		0xdbf932a98a9536e7,
+		0x54bae38dc89a4765,
+		0x41c685bed48b75c1,
+		0xe8132f5dc27d843f,
+		0xe68d31c1f371a29b,
+		0x2e1b9c654385c219,
+		0x3ceab1d32e46cf75,
+		0xd9e381b54b58ced1,
+		0x29d3c5a7695aec4f,
+		0x254fa8c8785f1dab,
+		0x6c254e7eda734c29,
+		0x7cf56b9fe8764b95,
+		0x532d9f8fe45869f1,
+		0x85679422134b786f,
+		0x8b415f24324e86db,
+		0xa3d5f4298271c649,
+		0x4791afd98f63d4b5,
+		0xd2e3cbfbad68e523,
+		0xf173c62bab49e28f,
+		0xc58ef37ed95c12fb,
+		0xcf89342fea5f3169,
+		0xbd957f3219624fc5,
+		0x37e1b6c329567e43,
+		0xce41f72654376c9f,
+		0x6ef4ba98734a8b1d,
+		0x13bc7529813eab79,
+		0x6cdb9f2baf31c9e5,
+		0x52a498fdcd24e963,
+		0xca73f62eda25e6bf,
+		0xb4c73a932c4a173d,
+		0x1bd293554b3d25a9,
+		0xc9ebf5398a3f4517,
+		0x3762e14cba527483,
+		0xe4c87f9ba63572df,
+		0xf265149dc438915d,
+		0xa5418fced12a8fb9,
+		0xe12ad8bdcf1dbe27,
+		0x2b15cd754f21ed93,
+		0xdcab68354b13daef,
+		0xa6c942165c271b6d,
+		0x8a5234f76b182ad9,
+		0xc29af5dcb91d3a47,
+		0xf4e3ab5dc71f58b3,
+		0x4c73f2bfe7249831,
+		0x59c1ab61f314958d,
+		0xc8435d632317a4f9,
+		0x34cde9a6521bc367,
+		0xbe9376865efbc2d3,
+		0x2b4c5df87bdfe251,
+		0x9a4b76c98bf421ad,
+		0x63c9df4ba9e63f1b,
+		0x2674539dc6f93e87,
+		0x627581fed6fa5ce3,
+		0x93c54e8325fe7c61,
+		0x7e49586434f179bd,
+		0x1c98b27762f4a93b,
+		0x9afc283761f5c8a7,
+		0xd4592fa87fead815,
+		0x34b6a7da9bdce681,
+		0xbcd386fa98acf4ed,
+		0x84651ab1fae3245b,
+		0x84ab36221ae643c7,
+		0x3ac625d549ea7235,
+		0xbf9ce8a656ec72a1,
+		0xc69ae34653ab6efd,
+		0x4ecad75983d19e6b,
+		0xd71a62fa91e3acd7,
+		0xbfc94d5bafb7dc45,
+		0x6e78c5b1fdc8eab1,
+		0xa4cdb7921cabe92f,
+		0xc8b2df543acf198b,
+		0x2ab986e65ac238f7,
+		0xae6c3bfa9ad64875,
+		0x1c4f298ba5c976d1,
+		0xcbf8371ba3cb854f,
+		0x5aeb9c3ed2ce83ab,
+		0x94625be1f4d1c329,
+		0x6bf9471432c4d195,
+		0x1d9528f43d96cfe1,
+		0xefa49dc43b98ed5f,
+		0xac27f3d6598a1ecb,
+		0x15e6ca8878af2d39,
+		0x89c2ab5ed8b24ca5,
+		0xbfd5219fe8c67b13,
+		0x61d725cfe3b8697f,
+		0x75bce8f2139a87eb,
+		0x6d5412b432aeb759,
+		0x849e625872a1d6c5,
+		0xa62db4e98fa5e643,
+		0x68d3ac487c86e39f,
+		0xefa743ccbc9a241d,
+		0x6c294adfebad3279,
+		0x142957bed89f41e5,
+		0xf796bec219a27f53,
+		0xfb35d6e325846daf,
+		0xcf76a3d654978c2d,
+		0x2e7b6cd6526bac89,
+		0x4b2619d9817dbaf5,
+		0x3784a96cbf81ea73,
+		0xdc269b1bab63e7cf,
+		0x64a79211fc97184d,
+		0xc26e37f21d7a26b9,
+		0x7ba64f943b9d4627,
+		0xa3be9f254a8f6593,
+		0x4e3a821a968273ef,
+		0x26cf391cb485926d,
+		0xd571863dc367a1d9,
+		0x163c8abed16abf37,
+		0x58ac2d4cbf5dcea3,
+		0xfd9782654e73fd21,
+		0x5e6417843e641c7d,
+		0xe625b8a54c562be9,
+		0xb39c74598c6a3b57,
+		0xf372c6dba86d59c3,
+		0xa6145dedc86f7941,
+		0x5b81d9afe452869d,
+		0x4dcb5e71f375a61b,
+		0x7b5af4e21259c487,
+		0xd3a21e76516ac4e3,
+		0x9dbe5c387f5de361,
+		0x27eb4d598e6312bd,
+		0xd2635c4bad76413b,
+		0x6f539e4dcb463f97,
+		0x2156d4adc8495df3,
+		0xed9a5341f84c6d71,
+		0x4576b8e2153f6acd,
+		0x8562d4f436529a4b,
+		0x7adb94876234c9b7,
+		0x762bc39ba148d925,
+		0xb93fea598f3be791,
+		0x4cab7d298a2be5fd,
+		0x1f53c49fed41256b,
+		0x3a6c5d11fb2534d7,
+		0xbef52a321c297345,
+		0x8f2d3ac6594a73b1,
+		0xe18c9457674c812f,
+		0x92acd417642e8f7b,
+		0xe2f1b3aa9432ade7,
+		0x7c3d48ecb124cd65,
+		0xf632541baf27ebc1,
+		0xc658e2bedc19ea3f,
+		0xe8d52f943d2e1a9b,
+		0xfab958276d324a19,
+		0x824c5af87c134985,
+		0xfba4d85a9a2867e1,
+		0xd7e5a81cb71a865f,
+		0x1d9463cba51d84cb,
+		0x36792fced51fb439,
+		0xb8ae97d1f413d2a5,
+		0xaedcb9176547e213,
+		0xf84ecd632bc5de6f,
+		0x2a9fe5754ae81fdb,
+		0x9327cad76afc2e49,
+		0x3fa6cb8878ef3db5,
+		0x9fd674ecb9f47c23,
+		0x5f7836bdc5e46a8f,
+		0x12f7b95ed3e678fb,
+		0x4a267e3213fcb869,
+		0x8921fa7432feb7d5,
+		0x9fae754982f1e753,
+		0x5ef2c4976dc3e4af,
+		0x62f51a7a9ce8152d,
+		0x849732fbaceb2389,
+		0xf26c5a3cb9dc42f5,
+		0xa75b64dfe9df6173,
+		0xbefa682217c26ebf,
+		0xc74b56e326c58e3d,
+		0x35d97f2543e68da9,
+		0x9eacbf3763eabc17,
+		0x265a49d871cedb83,
+		0x65db3c187ca1e8df,
+		0x5e1d297cbec4195d,
+		0x65ac8ed1fbd627c9,
+		0xcafd3be21cdb4837,
+		0xa4ed1b9329cd56a3,
+		0x6b814d7659cf8621,
+		0xd41efab986c2937d,
+		0x21796b3984c5a2e9,
+		0x6df7a15cb3d9c157,
+		0xf8ce714ed1a9cfb3,
+		0xd4e2568cbf9cde31,
+		0xbe149fa43fa21e8d,
+		0x478d9f543da42cf9,
+		0xd3a58c154db83c67,
+		0x91f5cd7768b95ad3,
+		0x7f352a6a98bd7a51,
+		0x375cf19cb49f67ad,
+		0x15289f6fe5c3a72b,
+		0xe2964dc1f2b4c597,
+		0x2659e3c212a8c5f3,
+		0xc46bf9a652abe471,
+		0x265b8e354e7bf2cd,
+		0x167243c98ea1324b,
+		0x53e6da7a9da541b7,
+		0x5f169e4dcba86f15,
+		0xe98ac1fed79a6e81,
+		0x8ca2b911f47a6bed,
+		0x8a2d9c42147f8c5b,
+		0x745bafc43482bac7,
+		0x6329c4d87296da35,
+		0xbfa439776297e8a1,
+		0xdefab1c98d6ae71f,
+		0xf16492bbad8e167b,
+		0xa86f597edc9135e7,
+		0xd3b8ca41fca37465,
+		0x3e184dc32b9874c1,
+		0xc8659215497a823f,
+		0x73fd52c5456d819b,
+		0xa2478937635d9ef7,
+		0x795bd13ba382ce75,
+		0x1498635ba275ecd1,
+		0x479265ebad57eb4f,
+		0x2d19a871fe591cab,
+		0xf58ec9321d6e3b29,
+		0xc7adb2f43d714a95,
+		0x4befda665b7468f1,
+		0xc5ad813a9a45876f,
+		0x34c6951ba64985db,
+		0x79e531adc36db549,
+		0xa1ef728ed26fc3b5,
+		0x57e86491f185e423,
+		0xd7a582443265e18f,
+		0x3daf9c854e5821fb,
+		0x513a47c76d4b2f59,
+		0x542f36b87a4d3ec5,
+		0x15d876fbab617d43,
+		0xdb32e69dc8436b9f,
+		0xa8dcbf5fe7468a1d,
+		0x8a6931d1f438ba79,
+		0xc3e869f2143cb8e5,
+		0xba6287d6524fd863,
+		0x4e915ab87142e5bf,
+		0xce2f176a9f47163d,
+		0x97ef8c6cbe3824a9,
+		0x34a7d1ecbd3c5417,
+		0xea2b8f9edb4e6283,
+		0xd98c7f1fe94271df,
+		0xcbe7d8f219238f4d,
+		0xaf2edcb436258eb9,
+		0xbf5ed7176539bd27,
+		0x5a824b98742bdc93,
+		0x3a986b18712dc9ef,
+		0x43e6829cbf231a6d,
+		0xe86b145dce1528d9,
+		0xba2e8741fd1a3947,
+		0x51dc67432d1c57b3,
+		0xb63a92e65b2e8731,
+		0x5739fac76a21948d,
+		0x2c94f5b98714a3f9,
+		0x875126ccb518c267,
+		0x1235f46cb529c1d3,
+		0x78a4bf2dc32bdf41,
+		0xb54da2e98acbfe9d,
+		0x9bf361254df23e1b,
+		0xbef1a4d32cf43d87,
+		0x516879e54af75be3,
+		0xce28f3a659fa7b61,
+		0x596c13d875fc68bd,
+		0xefd8273ba5ef983b,
+		0xf578219ed4f2c6a7,
+		0x6159fb7fe3f6d715,
+		0x3e97416323f9e581,
+		0x6759c3b541c9f3ed,
+		0x739ca1576fde135b,
+		0x7129d5e98de142c7,
+		0x168dcbfbace67135,
+		0x978ca23cbad76f91,
+		0x28c579eba5b86cfd,
+		0x493ba581f4ec8d6b,
+		0xf5732a6214cf9bd7,
+		0x4fb6752436e2db45,
+		0x4e1ac8d763d5e9b1,
+		0x13d8acf761c7e82f,
+		0xdf82ba976fdc178b,
+		0x5436fe8a9cbd26f7,
+		0xf5d4c16fecd14675,
+		0x65ad7e31fac475d1,
+		0xad5fc6321ac7834f,
+		0x1d4bfa5436d982ab,
+		0x9c1de34656cdb129,
+		0xf1785d2763aebf85,
+		0xa61d95b984a3cde1,
+		0x2b41538a91a4ec5f,
+		0x19cb584baf971dcb,
+		0x26ac57b1feab2c39,
+		0x692bed821d9e3ba5,
+		0xe69d1a765dc27a13,
+		0x96da5bc54ab3687f,
+		0x3c981f7547a586eb,
+		0xf59b641984cab659,
+		0x489257eba39db4c5,
+		0xa21d834dc2afd543,
+		0x64b2e9aed1a3e29f,
+		0xace671b654b7231d,
+		0xc67df8e54fba3179,
+		0x3bcd6e954c8a3fd5,
+		0x89a5db687b9d6e53,
+		0x98fc31a879816caf,
+		0x285174bdc7948b2d,
+		0x61fcd27fe475ab89,
+		0xac3bd79fe378b9f5,
+		0xf73bac22148cd973,
+		0x4fb57c84327ed6cf,
+		0xa2351cd982a3174d,
+		0x1af8e4c87f8625b9,
+		0x923d845cbe9a4527,
+		0xcd49736cbd8c6493,
+		0xa26e4f7cb97c62ef,
+		0x1e854a71fa82916d,
+		0x67f83d4217638fc9,
+		0x6e1bc4a32586be37,
+		0x8ae239665468cda3,
+		0x76f12db9847bec21,
+		0x5fde6919815efa7d,
+		0x5a63271cbf632ae9,
+		0x817c54bede863a57,
+		0xec986521fd6958c3,
+		0xfc819a732d6c7841,
+		0xb597f8c32a4e759d,
+		0x95184c776972a51b,
+		0x5e92461ba964c387,
+		0x4de71b6ba567c2e3,
+		0x2e5d9fadc47ae261,
+		0x75e934acb149efad,
+		0x149d8eadcd5e1f2b,
+		0x432bd5e21f523e97,
+		0x9a58b4632d465cf3,
+		0x7baf82d65d496c71,
+		0xe6f83c46583a69cd,
+		0x2dfe538ba73e894b,
+		0x587a2fbed641c8b7,
+		0xcfdba72fe764d825,
+		0x39b6c151f347e691,
+		0x2ec67f321238e4fd,
+		0xdce458b8725d146b,
+		0xafbc24e76e4f23d7,
+		0x2b83fe5bae637245,
+		0xe7b13c2bad4672b1,
+		0x97f1a63cba387e1f,
+		0x29e7846ed62a8e7b,
+		0xa3479be1f52d9ce7,
+		0x467fda932831dc65,
+		0x7ca41fd65634eac1,
+		0xf3dba5287426e93f,
+		0xda6c8f98723a189b,
+		0x7c9fb82baf2d3819,
+		0xfe12468cbd1f3785,
+		0xef24c9bedc2376e1,
+		0x4951db8feb16845f,
+		0xa9b1c8e32a1783cb,
+		0xc9124d66581cb239,
+		0x4f253c77672ec1a5,
+		0x5bf2ac998632cef1,
+		0x13f56dba9413ed6f,
+		0xf17e8b3ba3261edb,
+		0x5c27f68cbef82d49,
+		0x3f5a612fedfa3cb5,
+		0x5b2ca8421cfe6b23,
+		0x62d5fe143be1698f,
+		0x81fc9ed549e387fb,
+		0x9e1dfa2548f5b769,
+		0x4963edc984f9b6d5,
+		0xe98c2dbba4fcd653,
+		0xbae831ca92ced3af,
+		0x1ac2f39fe3f5142d,
+		0x3cae279541f63289,
+		0x7e5c4ba43ed941f5,
+		0xda13b2e54cdb5f63,
+		0xd68cb59548ac5dbf,
+		0xe59cda8879e18c3d,
+		0x8493d71cb6e38ca9,
+		0xe3b92fced5e6cb17,
+		0xe3b2ac51f4e9da83,
+		0x9be2745213bac7df,
+		0x6b4ac5e432bef75d,
+		0x4f36e2b871e326c9,
+		0x21de38ba9fd84637,
+		0xda96efb98ed965a3,
+		0xc81be73babdc8521,
+		0xf17ba62dc9be827d,
+		0x5e29d4c1f7c2a1e9,
+		0x7c5b6a3218c3bf47,
+		0x3acf915325a6ceb3,
+		0x1a295fb765b9ed31,
+		0x2ed38746529afb8d,
+		0x836e954872ae1bf9,
+		0x3d478bebafc23b67,
+		0x31fa65edceb659d3,
+		0x28ec75b1fdca7951,
+		0x625879c21c9b76ad,
+		0xd27fc4b438ae962b,
+		0x6fa4192658b1c497,
+		0xb753cae987a5c4f3,
+		0x94bf178ba5b8e371,
+		0xcd478fbba398f1cd,
+		0x67bca52fe3ad214b,
+		0x581eadfdcd8e2fa7,
+		0x1ecf6b932fa36e15,
+		0xc2f765843ea56d81,
+		0x148dab543b876aed,
+		0x912d8e75497c8a5b,
+		0x42731ed9856ea9c7,
+		0xa5e2b46dc7a1d935,
+		0x59f64b8ed594e7a1,
+		0xfb8ea53ed397e61f,
+		0x8743fea3239a157b,
+		0xafcb31e6519c24e7,
+		0xdeba41987e9f4365,
+		0x75269bd98e9473c1,
+		0xf5ec319bac96813f,
+		0xfd1b52adca567f8b,
+		0x2da9b8edc65a9df7,
+		0xcb817261f46ebd75,
+		0x67cb48943672ebd1,
+		0xa614dbe32573ea4f,
+		0xa46b3fe6537619ab,
+		0xa264b979817b3a29,
+		0x72f9e53baf6d3895,
+		0xf69d783bac6e57f1,
+		0x8aeb35cedc72856f,
+		0xde9cba11fa6584db,
+		0x9a2d6b521c68b349,
+		0xef698db4386ac2b5,
+		0x148e2da7687ed123,
+		0x94fde1598451de7f,
+		0xc27d41aa93641feb,
+		0x3bf7a56dc1672e59,
+		0xd6c5fe2cbf493dc5,
+		0xbc1952e1fe5d6c43,
+		0x35cbef921c3e5a9f,
+		0x2a8e9b354c53891d,
+		0x34eba2f65c34b879,
+		0x2cf974576938b7e5,
+		0x3f18d47ba84bd763,
+		0x3b67ecfa953cd4bf,
+		0x67dc291fe672153d,
+		0xa75b18e1f16523a9,
+		0x3ca8fbd542695317,
+		0xbc9fed365f4b6183,
+		0x71cdb9854b2a5ecf,
+		0x312d47e76a2f7e4d,
+		0x29cb1f687a328db9,
+		0xc1a462fed935bc27,
+		0x64718b2fe627db93,
+		0x78293baed429c8ef,
+		0x6cb79fe2142cf86d,
+		0x89d7b5a7654127d9,
+		0x13f8749ba1253847,
+		0x2d47853a9f1856b3,
+		0x4efdc81bae2b8631,
+		0xf35d91bbab1c738d,
+		0x124f3a6dca1e82f9,
+		0x5b397c61fa23c167,
+		0x791cb8d32815bfc3,
+		0xfa893b165728de41,
+		0xb16a98e65418fc9d,
+		0xb9d7e619853e2d1b,
+		0xed3f4c7cb4213c87,
+		0x3a81652a9df25ae3,
+		0x73a12f5dcdf57a61,
+		0x4bfd396feaf867bd,
+		0xc6d394521afc973b,
+		0x5ce1d68328feb5a7,
+		0x13eca9f879f2d615,
+		0x68bd321a97f5e481,
+		0xc65d3f7984c6f2ed,
+		0x2d5e691dc4fa125b,
+		0x5c72e64cb2fd31c7,
+		0xec62a98cbdce4f25,
+		0x7158b4e32fd36e91,
+		0xed3f5b432ac46bfd,
+		0x1abdf6943ae78c6b,
+		0x7d51fb2546eb9ad7,
+		0xd71f9c5987deca45,
+		0x9d43156ba6d2e8b1,
+		0x48af192cb5c4e72f,
+		0xd5b2e7a1f3e7168b,
+		0x729cd64213da25f7,
+		0x8dac9e7761ed3475,
+		0x38f2ea965ebf64d1,
+		0x694128587dc3824f,
+		0x3c2b6ad87cd581ab,
+		0xf42dec5cb8c7af19,
+		0x76913cbed6cabe85,
+		0xe793b8d1f59dbce1,
+		0xf136ead326a1eb5f,
+		0xa82e5f6435d41acb,
+		0x49dcfea764d72b39,
+		0x396be2c871db39a5,
+		0xb19c27698fbd6913,
+		0x5dce63aa9cae567f,
+		0x29f8531edca285eb,
+		0x6bd852a1fac6b459,
+		0xbc4d897219a8b3c5,
+		0x679d342658abd243,
+		0xd2b85fe5458cd19f,
+		0x36eba41a97b4321d,
+		0xdc4b8f5ba3b42f69,
+		0x3cf1e5dcb1a73ed5,
+		0x92e685bdcf9a6d53,
+		0xb726ad9fed7c5baf,
+		0x6e8dac421c8f7a2d,
+		0xd491ec543d72ba89,
+		0x9f4e8ca43a94b8f5,
+		0x1fa2476656a9d873,
+		0xba316ec98479d5cf,
+		0xb6129d8ba38cf54d,
+		0x54cb391fe5a124b9,
+		0x8b617931f1b65427,
+		0xd6b8c12541b86293,
+		0x89cb21743d7961ef,
+		0xca56e2f43c6b7f5d,
+		0xb823a1d54a5f7ec9,
+		0x6fac481a9a82bd37,
+		0xad6f317cb875dca3,
+		0x26451e8ed678eb21,
+		0x6afb1d9fe35af97d,
+		0xf3785cb3246d18e9,
+		0xc743bd2764a13957,
+		0xf1e7b249819457c3,
+		0x1b829e7baf698741,
+		0x7edc26198e5a749d,
+		0xdbc9518bac6d941b,
+		0x96752c4eda5fb287,
+		0x28d34ac1f974c1e3,
+		0x51a93fb32976df51,
+		0xba1463832546fead,
+		0xfdeb5468756a1e2b,
+		0x7fe3dc69835e2d97,
+		0xe6c4f21ba2715bf3,
+		0xd86e529dcf546b71,
+		0xcd6794acbe3568cd,
+		0xb9738641fd3a984b,
+		0x4d75e8f21c3da6b7,
+		0x1acd69443a4fc725,
+		0x4285ac687a63e591,
+		0x1a7629498745e3fd,
+		0x3b98de2dc759136b,
+		0x8a459fddc45b32d7,
+		0xc8524b7ed27e6145,
+		0x8a6e734ede426fa1,
+		0xcfb79ed32e347d1f,
+		0xabe2cd743e258d7b,
+		0x9ced3a154c289be7,
+		0xc9632ab8792dcb65,
+		0xa5d6c719873fd9c1,
+		0xc1f5e67cb742e83f,
+		0xa3986b2fe635179b,
+		0x4b8a19d1f54a3719,
+		0xafd34722142c3685,
+		0x394d6fc8723d65e1,
+		0x8d41ec687e21835f,
+		0xdba62ef87e1482cb,
+		0x8647f3dbad27b139,
+		0x7f481d5dca18bf95,
+		0x83f724ddc72abdf1,
+		0xd7145f3cb51edc6f,
+		0x1ac8269547231cdb,
+		0xe3cb6d1657162c49,
+		0xf24bd31874183ab5,
+		0x7d3ab62a941c6a23,
+		0xbc5432d76dec578f,
+		0xdc6a51f98ade76fb,
+		0xf25b4c6edcf2b569,
+		0xa6278d3fe9f6b4d5,
+		0xc5d746921af9d453,
+		0x571bed4436e9d2af,
+		0xf1bcd49656ecf12d,
+		0xdce4528ba6f23189,
+		0xe8a4163a92d43fe5,
+		0x12dc689cb1f85e63,
+		0x82573a6a9ed85cbf,
+		0x25d83641faec7b3d,
+		0xa5fe36b21cdf7ba9,
+		0x92fe78554be3ca17,
+		0x96eb73c54ae5d983,
+		0xe87f591545b7c6df,
+		0x4963c51984caf65d,
+		0x69edb12ba4de15c9,
+		0x6b42198ed6e14537,
+		0x9a825b41f1e564a3,
+		0x3f7d841653e98421,
+		0x89c761443fca817d,
+		0x2614d9c43cab7fd9,
+		0x741d6ba659bfae47,
+		0x54fa36d878a2cdb3,
+		0xe2d315fba8b6ec31,
+		0x92d57badc4b6fa8d,
+		0x1ba5936fe4cb1af9,
+		0x8d6eb34214ce2a67,
+		0xb1329e4764c158d3,
+		0xb836de1a92d47851,
+		0x72b819c54fb675ad,
+		0xa821bd987eca952b,
+		0xc65d7f298cadb397,
+		0x4a6eb7ddc89eb2f3,
+		0x25689c11f9b4e271,
+		0x8562bac21684efbd,
+		0x921eac7546a81f3b,
+		0x4138e6c6549b2ea7,
+		0x691e4db983ae4d15,
+		0x8b2175fba3b26c81,
+		0x65e72fbbaf8369ed,
+		0x97b35f4edea6895b,
+		0x321ce581fd69a8c7,
+		0xc793afe21b9dc835,
+		0xde98f6b4398fd6a1,
+		0xb3a145776893e51f,
+		0xc7f28e4a98a6147b,
+		0x6537adccb5a923e7,
+		0x35184baed3ac4265,
+		0x8a5791ced39e62c1,
+		0x2584d97dcd817e2f,
+		0x429bf6521f637e8b,
+		0x6b854ed32d659cf7,
+		0x82967f443d69bc75,
+		0xdb2896e6586bcad1,
+		0xbe92d179876ed94f,
+		0xb27fc8aed67318ab,
+		0x8b97c12fe5a63829,
+		0x9c7bd521f28a3795,
+		0x5d76bf83238b56f1,
+		0xf85e9264318d746f,
+		0xe17dabf65f6183db,
+		0xebdfa3998e75b249,
+		0xa7de468a9d67c1b5,
+		0xa31d47fcba69cf13,
+		0xa2718dccb64acd7f,
+		0x215dcb9ba54dfceb,
+		0xca8342d218732d59,
+		0xca318d4324763bc5,
+		0xf196da7982796b43,
+		0x56a8d9f8714b589f,
+		0x4db1f63a9f4e781d,
+		0x7ae3854dce41b679,
+		0x5b96a7fedc43b6e5,
+		0x3791c5e1fb48d563,
+		0x2e5b69721948d3bf,
+		0xbfc71255485bf23d,
+		0x9124e787675f12a9,
+		0x3e2648acb9845217,
+		0x8f5491acb2465f73,
+		0xd6be4c5ba1375dcf,
+		0x36e541fcbf2a7c4d,
+		0x493c6571fd2e7cb9,
+		0x16b298443e41cb27,
+		0xde3168c65c24da93,
+		0x82bec7d54925c7ef,
+		0xa43ed6265829f76d,
+		0x6f59374ba73c16d9,
+		0x4e7a8bfdc83f2647,
+		0xdc72ba5fe74265b3,
+		0xb342e1c1f2478531,
+		0xf16289e54139728d,
+		0x81b7af354e2b81f9,
+		0x5eb328f54c1daf57,
+		0xeb5a1c287a21bec3,
+		0xc4216eda9a25ed41,
+		0xd238c46ba715fb9d,
+		0x152973afe7392c1b,
+		0xbde16831f51d2b87,
+		0x15cfd8e3261f49e3,
+		0xdb4fc13985237961,
+		0xfa453e19821476bd,
+		0x723b16d65ef7963b,
+		0x4dc1e9876df9b4a7,
+		0xd51e2fba9afdc415,
+		0x58da9c3cb9efd381,
+		0x4c2a938cb7c3f1ed,
+		0xca7d265439f7215b,
+		0xf16745e435e82fb7,
+		0xe9cb643876fb4e25,
+		0x9fd2b45873fe5d91,
+		0x5d13f27982e16afd,
+		0xd2a1e47a9fe38a6b,
+		0x87f9245cbce5a9d7,
+		0xec6291b1fbeac945,
+		0xfcab649329ecd7b1,
+		0x1b68e95438bed62f,
+		0xbe43da5769e3158b,
+		0x42a83c1a98d624f7,
+		0xfd8e672cb6ea4375,
+		0xe6bc134ba4eb63d1,
+		0x4ea169fcb2cd714f,
+		0xe145963edec17f9b,
+		0xef57c8a32fc4ae19,
+		0xe5c9ab632ec6bd85,
+		0xb17f6a2549a8cbe1,
+		0x31286755479bda5f,
+		0xa9b135f7659ef8cb,
+		0x6fa93e2dc7d42a39,
+		0x536981bfe4d638a5,
+		0x6a5c4e31f4da6813,
+		0x24cefb7212cb657f,
+		0xb8259e7431ad74eb,
+		0x1c3925a76fc1b359,
+		0x836cadb87ea4b2c5,
+		0x83fac6da9cb8d143,
+		0xc6be1d4ba697ce8f,
+		0x72c84bfba579edfb,
+		0xa2641e9ed5af1e69,
+		0xf3857b4217a23cd5,
+		0xeb7d6f3324b76c53,
+		0x823ce17542b759af,
+		0x98a74db761ab792d,
+		0x4b7982e65f6ea789,
+		0xc1e685fbad91b7f5,
+		0xfd237b5feca4d673,
+		0x7189adffe986d4cf,
+		0xca4329521a89f34d,
+		0x2eb318d5478d13b9,
+		0xfb3c879768af4327,
+		0xc4f5321ba7b46193,
+		0x1a5b7dea92845edf,
+		0x79fde58cb1987e5d,
+		0xe36cf2acbf5a7dc9,
+		0x513b8641fd6eac37,
+		0x64cedb132e71dba3,
+		0xdc5163254c85ea21,
+		0xe97264543a65f87d,
+		0x3bd769e6586a17e9,
+		0x6f4d28ecb69d2857,
+		0x84ea1fdcb58f46c3,
+		0xc61af7bfe5a38641,
+		0xd24695a1f185739d,
+		0xdb9fc5a54278931b,
+		0x9f2cbe143f5cb187,
+		0x5f8a76b54b5cafd3,
+		0x1a63ce598b72de51,
+		0x98c6ef387853fcad,
+		0x72ea819dc9671d2b,
+		0xd218b79fe65a2c97,
+		0x512c48afe56c4af3,
+		0x7fad43c3246f5a71,
+		0xef89b255435267cd,
+		0xda49e5198165974b,
+		0x27afbce76f38a5b7,
+		0xd734b65a9e4bc625,
+		0xc68be5dbab5ed491,
+		0x8269753cb951e2fd,
+		0x7c248161fa75126b,
+		0x841fdb632a5831d7,
+		0x76f1c3d3286a4f35,
+		0xd9a53f18764c5ea1,
+		0x5f6b7ed9834e6c1f,
+		0xc532fe9ba1428c7b,
+		0x7429fa6cbf249ae7,
+		0x1f39c42ede28ca65,
+		0x4175bd81fb3ad8c1,
+		0xae4f93c21a2cd73f,
+		0x1b7ce4365c42169b,
+		0x46357b998b453619,
+		0x4a31657cba293485,
+		0x623195ecb73a64e1,
+		0x2587c63cb43c725f,
+		0xf947ac2ed23f71cb,
+		0xcfab683ede13af29,
+		0x43b58e932f14be95,
+		0x1ac78d954d27bcf1,
+		0x8c7e25354a19db6f,
+		0x3987abd6571cf9db,
+		0x349bfd2dca312b49,
+		0xcbf1843ed81439b5,
+		0x91ca84ffe7186923,
+		0x14b9735fe31a568f,
+		0xc9d8ab33231c75fb,
+		0xac1fd396521fa469,
+		0xb3ed24a76ef1b3d5,
+		0x72f351998cf6d253,
+		0x3e56281879e6d1af,
+		0x876e5c3a97c8ef1d,
+		0xe954186cb6ec1f79,
+		0x9a674e3cb6cf2de5,
+		0x7f6832c218f25d63,
+		0xcf67a35323e45abf,
+		0x6efa319652f87a3d,
+		0x293bd14651fc78a9,
+		0x32cf9d876fdeb917,
+		0x2583d6ebace1d783,
+		0x756d32fba9b3c5df,
+		0x5da329ffe9c7f45d,
+		0x785dcfb328ea14c9,
+		0x69db1a2659ed2437,
+		0x37bd51e767df52a3,
+		0x67e3b1dba7e58321,
+		0x81a5f6ba92c47f6d,
+		0x1e79b5dba1c67ed9,
+		0xe27586ca9fcbad47,
+		0x36d95c21fd9eacb3,
+		0xf6c152354dc2eb31,
+		0xde86b5a32ab3f98d,
+		0x8f2571e54ac618f9,
+		0xa6827fc658db2967,
+		0x3bc7ed6a96bc47d3,
+		0x8217e39cb4cf6751,
+		0x38abf42fe3c274ad,
+		0x9c318d71f1d6942b,
+		0x8d5c24e431d8b297,
+		0xd3a916254e9ab1f3,
+		0x19e2dab54b9dcf61,
+		0x3ef276465981febd,
+		0x19c5462989a51e3b,
+		0x624b9f8dc8b62da7,
+		0x129fbdcfe7ba4c15,
+		0xc81b2561f4ad5b81,
+		0xed32ca92139f58ed,
+		0x65edc78543c2985b,
+		0x6c3abd4651b4a6c7,
+		0xce19fda76fa9c735,
+		0x3d4e81a87e8bd5a1,
+		0x657cf31a9a8cd41f,
+		0x2cb8163feca2137b,
+		0x5b42d691f9a532e7,
+		0x1fd679332ab94165,
+		0x5a4cd9e436895fb1,
+		0xea6fb1d6548b6d2f,
+		0x4312ef66527f6d8b,
+		0x7b2f431ba1829bf7,
+		0xe5f9d87baf84cb75,
+		0x914cf7ecbe67c9d1,
+		0xf3cb482feb6ad84f,
+		0x974d65c2195df6ab,
+		0x4b386a165ca13729,
+		0xa3e69c587ba43695,
+		0x5c62871ba79865f1,
+		0x96ed74acb48a736f,
+		0x19de74cba36c72db,
+		0x2476ec5ed27fa149,
+		0x85e761cede62bfa5,
+		0xb7f9ea832f76ce13,
+		0xea68bc432b46dc7f,
+		0xa745df943948faeb,
+		0xc3b92d587a6e1c59,
+		0x27c6195cb9713ac5,
+		0xe892357ed9856a43,
+		0xc52f34eed346579f,
+		0x5123dc81f35a871d,
+		0x2eba6c92124da579,
+		0xe2ba8df4316fa4e5,
+		0xa36c75d98f72d463,
+		0xf6abc5d87c45d2bf,
+		0x172befaa9b58f13d,
+		0x8739e56edb5c21a9,
+		0x41537f2cb84c2ef5,
+		0x6b9571a1f9615e73,
+		0xa4c3e6b217435bcf,
+		0x76891ae325367b4d,
+		0x8364172652387ab9,
+		0xf51a6479814dba27,
+		0x8a9fc4587e2fc893,
+		0xd246f83a9b32c6ef,
+		0x92baef8dcb24f56d,
+		0xd34127c1fb3815d9,
+		0x9acd62b21b3c2547,
+		0x8fa34797692e54b3,
+		0xbc82ea6a9a628431,
+		0x3d26f84ba634718d,
+		0x369fcd7ba3257fe9,
+		0xe79f541dc129ae57,
+		0x57cf2d4a9f1badc3,
+		0x623afc7feb2fdc41,
+		0xfa5874d43c12fa9d,
+		0x24916df65d362a1b,
+		0xf2ed61965c192a87,
+		0xd2e3ba18791b48e3,
+		0xa7c1348cb92e5861,
+		0xb1ae439dc62175bd,
+		0x76b2da8fe614953b,
+		0xc91e53d1f216b3a7,
+		0x2b3d97c7642ac315,
+		0xf9dac8354efbd281,
+		0xd427b8c438eabfcd,
+		0xd5c3fe887ae21f4b,
+		0xdba3795989f42eb7,
+		0xed6c1a7cb9f84d25,
+		0x23145c9ed6fa5c91,
+		0xe34629adc3eb59fd,
+		0x764a982213ef796b,
+		0xafdb829543f2a8d7,
+		0x9e3546d871f6c845,
+		0xde7694f65fe8d6b1,
+		0xdf8265987bcad52f,
+		0xef19584879cdf38b,
+		0x2a63584dcad123f7,
+		0xcb59a481fae64275,
+		0xe92a7f8439e862d1,
+		0xfd5c483325c96e3f,
+		0x57a693f543dc6e9b,
+		0xfd1832e763cf8d19,
+		0xe4687dba91e2bc85,
+		0xec49b6d98fb5cae1,
+		0x82c6fd3bacb7d95f,
+		0x74d5ac8fe8a9f7cb,
+		0x8b314ac32bce1839,
+		0xce8a12754bd137a5,
+		0x1cbf92498ad56713,
+		0x3cb816da95c8647f,
+		0x71bf643984c973eb,
+		0xf9248d7cb3cda259,
+		0xbcf68e4ed2bfa1c5,
+		0x31f5cb7edea4cf23,
+		0x4bf982c21e94cd8f,
+		0xb1e34cd32a86ecfb,
+		0xb73a28e54cab1d69,
+		0x7ba4ed87689e2bd5,
+		0xe439625ba9c16b53,
+		0xb2ae143dc6b358af,
+		0x1873f49fe4b6782d,
+		0x1958ec61f2cba689,
+		0x5d7c4f62129ca6f5,
+		0x23dfa1c541afc573,
+		0x1efb6a465e82d3cf,
+		0xd4baf8987c96f24d,
+		0x81e96ad87da812b9,
+		0x68721b5edbac4127,
+		0x2986143dc79d4f83,
+		0xf379ca5fe6815cdf,
+		0xcf9ed62216937c5d,
+		0x5fce948323857bc9,
+		0x17ec98b65289ab37,
+		0x3e5cfa47617dc9a3,
+		0x6da9cf498e7fd921,
+		0xc468bf3bac82f67d,
+		0x67b513aedc8516e9,
+		0xc9a53261fc9a2657,
+		0x5d2643821a8b45c3,
+		0x67fa49c43a9e7541,
+		0xde7c46965681729d,
+		0x75d6c3eba685921b,
+		0xfc381e9cb285af67,
+		0x2e367dccb168aed3,
+		0x6487e5bbaf6bcd51,
+		0xad7549fdc94febad,
+		0x28be61f43e741c2b,
+		0x472afb843d652b97,
+		0xf4cb8a365b6849f3,
+		0x59a23bc98a6c5971,
+		0xfb7e5a2a974e56cd,
+		0xc45e16fed571964b,
+		0xb23146cfe263a4b7,
+		0x491e7831f178c425,
+		0x67bf8e55426ad391,
+		0xf81c9b443e4ac1fd,
+		0xe85cb6754a3def5b,
+		0xadc926498b532fc7,
+		0x67fbd18bab674e35,
+		0xbed93f5dc9485da1,
+		0xa195384ed74a6b1f,
+		0x724ea681f43e6a7b,
+		0xf17b46932541a9e7,
+		0x2843c9b87243c965,
+		0xa962b7598246d7c1,
+		0x5ef628b87e29d63f,
+		0x8eb164587d2cf49b,
+		0x93847cecbc4f2519,
+		0xad968b7fec624385,
+		0xd14a29e1fa4763e1,
+		0x14b9efd32a39715f,
+		0xe8b1f4c435296fab,
+		0xc48af757653d8e29,
+		0x45aef1298431bd95,
+		0x31a8d25a9234cbf1,
+		0x4827fd1a9e15da6f,
+		0xe16d284bac17f8db,
+		0x13de6741fc2d1a49,
+		0xc6f7b4a43c1f28b5,
+		0xd1298fc87c146823,
+		0xeb62a4d87a14658f,
+		0x1fedb6aa961874fb,
+		0x78f5241cb51ca369,
+		0xf194de6cb41ea2d5,
+		0x91cb7f5fe642d153,
+		0x74bfe96babd2ce9f,
+		0xdb7c45a32bc5fe1d,
+		0x74fc51943cf81e79,
+		0x1d3fc27549fa2ce5,
+		0x96ab341879fe4c63,
+		0x251674a987e159bf,
+		0x9ce6f85cb6f4793d,
+		0x96a3bc2ed3f587a9,
+		0x276c3a8fe3fab817,
+		0x786f95e212fdc683,
+		0xdbe6f24431ceb4df,
+		0xe7d1c9b76ec2f35d,
+		0x24df31687de613c9,
+		0x6542d38a9cea4237,
+		0x8671ad5cb9ec51a3,
+		0xa2f51eca96ab4def,
+		0x6eca8b91f5c17e6d,
+		0x962b43a215e37cd9,
+		0xcadb654323e6ac47,
+		0xcf37ed9652e8cab3,
+		0xcb183f2872ecda31,
+		0x897c2ea65cafe78d,
+		0x95d1746badc317f9,
+		0xda638c9fecd52867,
+		0xb382e191fac946d3,
+		0xc7e3f5432adc7651,
+		0xa8dbfc1327be63ad,
+		0x3aec8b9767d1932b,
+		0xe391f4b985d4b197,
+		0xa695f42982b6afe3,
+		0x6175c8fba2b9ce61,
+		0xc7ef12a98f79ecbd,
+		0x9a721f3eda8efc3b,
+		0x234de8621eb32ca7,
+		0xe84dc1b43dc74b15,
+		0x3857b1254bc95a81,
+		0x9eab7865469a57ed,
+		0xaecb7f5a94ae875b,
+		0x3861c5eed4b1a5c7,
+		0x986c75dfe2b4c635,
+		0x34bea861f2b7d4a1,
+		0x8653afb542a9d31f,
+		0xbec8d5143e8cf17b,
+		0xfd6e19465c9f21e7,
+		0x19dc63e98ca23f45,
+		0x92d3ea498a965eb1,
+		0xc79a23ecb7986c2f,
+		0x35c14f2fe47a6c8b,
+		0xc4bf123fe36d8af7,
+		0x3a675fb32491ca75,
+		0xe984d3a65394c8d1,
+		0x3dea48965196d74f,
+		0xe268adb54e68f5ab,
+		0x8fd5e1bbae8d1629,
+		0x615c48ecbc8f2495,
+		0x372b85aedb9364f1,
+		0xdabc457fea95726f,
+		0xe39158f3296871db,
+		0xf8d765e3256b8f39,
+		0x1a98d625436d9ea5,
+		0xb521ea7a9582cd13,
+		0x2efa3d5a9163db7f,
+		0xac49f5d98d45f9eb,
+		0x6b492faede6a1b59,
+		0x8937d211fb6d29c5,
+		0xbf7a6e521c7f5943,
+		0xc5d1b9e43b72569f,
+		0x2c1b5ef54a75861d,
+		0x913c548cb658a479,
+		0x374cd8aa946ba3e5,
+		0xde7c652cb47ec263,
+		0xb73e914dc362d1bf,
+		0x68a5e73cbc54ef2d,
+		0x61e89a732e461f89,
+		0x4b7ef2d43c492df5,
+		0xa42e85d76b5c4d73,
+		0x28daf457683e4acf,
+		0xec21fd9cb9527a4d,
+		0x7893be4ed63478b9,
+		0xaf9283cfe548b927,
+		0xa975ebc1f24bc793,
+		0xfca89bd2123cb5ef,
+		0x458b23187251f46d,
+		0x4cd8baf87f3514d9,
+		0x9bfc654bae592347,
+		0x8c3df41a9d4a52b3,
+		0xb2753f9dcb5d7231,
+		0xe1a38dccb82e5f7d,
+		0xe5d6ba11f6327de9,
+		0x743a96c21824ad57,
+		0x63cafde54527abc3,
+		0xdaf42358753adb41,
+		0xd3f78ce7612ce89d,
+		0x38b4792baf43291b,
+		0x28e67d4dce142987,
+		0x26583b9edc1847e3,
+		0xd21857e1fc2b5761,
+		0x81db9363291c64bd,
+		0x39e7c4f6591f843b,
+		0xabcf3e776813b2a7,
+		0x51f9d84ba837c215,
+		0x135c672ba428cf71,
+		0x7d4568fa9218becd,
+		0x94c1d7298ceafd4b,
+		0xeb3f985dcaef1db7,
+		0x3b7d8fe21df34c25,
+		0xc57d1ef43cf65b91,
+		0xdab1e92439e758fd,
+		0xcfb9ea2545fc786b,
+		0x7fd25b3984fe96d7,
+		0x4a6d3efcb6f1c745,
+		0xa8149bddc3f4d5b1,
+		0x71dbf36dc1e7d42f,
+		0x4be76c1431e9f28b,
+		0x2cfa67954edc12f7,
+		0x938fc7b76cdf3175,
+		0x69bf48287ad35fc1,
+		0xf5a7d16989c56d3f,
+		0xed84937ba5e76d9b,
+		0x194c523ed5eb8c19,
+		0x67eb2351f3deab85,
+		0x5cd746f435d2c9e1,
+		0xcbe619f542c3d85f,
+		0x9531a78541d5f6cb,
+		0x943c25f76fdb1739,
+		0xd14ca6798ecd26a5,
+		0xedc2135babcf5613,
+		0x5c17964edac2637f,
+		0x24c63be1f8c572eb,
+		0xab415de327d8a159,
+		0x1ec9d75324ca9fb5,
+		0xd21ef3a765adbe23,
+		0xd32be1c763a1dc8f,
+		0xba81d9687193eafb,
+		0x7954d8cbafb71c69,
+		0x15a6f73dceb92ad5,
+		0xb2a93171fcbd4a53,
+		0x36be4a921b9e47af,
+		0x127c6d554ab3872d,
+		0x1b25c84437c4a589,
+		0xd6b594f876b8a4f5,
+		0x1ebfc8aa95abc473,
+		0x4d27feba938db2cf,
+		0xb7f648edc3a2f14d,
+		0x19d674bfefa521b9,
+		0xb4fe68932ea83f17,
+		0x31bd9ce32d9a4e83,
+		0x2c5e76f4397a4bdf,
+		0xc8e2f755498f6b5d,
+		0x8694ef7cb6827ac9,
+		0x9246ab7ed695ba37,
+		0xb5124cafe497c8a3,
+		0xe91b2c51f49bd821,
+		0x283794f2128ce57d,
+		0x38157bf763a215e9,
+		0x37c249e98fa62457,
+		0xb524e8187e9854c3,
+		0xf491cbebad9b7341,
+		0x18ea4fccba7c619d,
+		0x4a1f652cb75d6ef9,
+		0xb1a64251f582ae67,
+		0xafb3cd421675acd3,
+		0xc54dea643478dc51,
+		0x5feb63254258e9ad,
+		0xad86cb28716df92b,
+		0x7e8632acbf612a97,
+		0xd2c36e8cbd7548f3,
+		0xb7c92a8fed695871,
+		0xd75c9621fa4965cd,
+		0x38e246921a6d854b,
+		0x15cf47d3285f93b7,
+		0xce13bdf87984c325,
+		0xdb34915ba576d291,
+		0xdc965a398246bfed,
+		0x35b172eba149fe5b,
+		0x1b69dc7baf4d1ec7,
+		0x38bec5a1fe714d35,
+		0x8f47a3e32e645ca1,
+		0xf8ed47b43c476a1f,
+		0xac72e1654c3a697b,
+		0x89ec34a6563c98e7,
+		0x16287cfba73fb865,
+		0x6d1753ecb753d6c1,
+		0xb429351dc246d53f,
+		0xa7526bdfe147f39b,
+		0xb2a1d646536c2419,
+		0xdf7e94276f4e3285,
+		0xb627d3e98d5362e1,
+		0xe97a4f698b236e4f,
+		0x2e46a95989256eab,
+		0x9d65a23dc73a8d29,
+		0xd82a1f6fe62dac95,
+		0x21c87f9ed53ebaf1,
+		0xf5e83ca21532d96f,
+		0x18c9fd265324f7db,
+		0xdf5684c8723a1849,
+		0x2c49f1398f1c27b5,
+		0x176e24bbad1e5723,
+		0xf4de891cbc21648f,
+		0xe8c6951eda1473fb,
+		0x1d935a61fb17a269,
+		0xf6ebdc943829a1d5,
+		0xefba7d66571cbf43,
+		0x81bf6ca6541ebd9f,
+		0xfaed4b298523fc1d,
+		0x73d69aecb3251d79,
+		0x8e2c47aa9df72be5,
+		0xf6d248bdcdfa4b63,
+		0x2495e3ced9ec48bf,
+		0x397ca2f21aef683d,
+		0x9b6ef2c43bf286a9,
+		0xce6ba79549f5b617,
+		0x16fbc2d876f9c583,
+		0xe418c62874e9b3df,
+		0x73b2e14a93fce25d,
+		0x726a351ed4f312c9,
+		0xc5e32a9edfe64137,
+		0xc7529bd21ed74f93,
+		0xc18f9d432ab84cef,
+		0x78ea265439eb5c6d,
+		0x692b1dc547cf6bd9,
+		0xc86243fa98e2ab47,
+		0x61c589bba6e5c9b3,
+		0x59e4312dc5e8d931,
+		0xdcb57481f2cae68d,
+		0x4769e38212bce5f9,
+		0x46fe19c983e12567,
+		0xdb5c1ea87fc645d3,
+		0xc32b91d98ed97451,
+		0xca3486d87bc962ad,
+		0x726eb38ba9cd812b,
+		0xba15f32dc5be9f87,
+		0x8c7e32a1f6b2ade3,
+		0x1934efc327b5cd61,
+		0xf5ca37132396eabd,
+		0x6b7493a652c9fa3b,
+		0x198fabc762ce1ba7,
+		0x3a5cf12a9fc24a15,
+		0xaed4c3fcbec45981,
+		0x85f6da3dcba756ed,
+		0x7512ed81f9ca865b,
+		0x354be6f218ad94c7,
+		0xc6758b1328afb435,
+		0xd493bc5767b4d3a1,
+		0x4eb1c2f985a6d21f,
+		0x3e9cad498297ef6b,
+		0x856ce9fcb29a1fd7,
+		0xf951683cbf9d2e45,
+		0x67421951fe925db1,
+		0xbade28421d946b2f,
+		0x1cd568932d956a8b,
+		0x5ba714943b6a89f7,
+		0xa6e9b535468db975,
+		0x51ca47ea958fb7d1,
+		0xe1569d8cb592d64f,
+		0x2f134b6ed285f4ab,
+		0x45698b21f3ba1529,
+		0x96efb38541ac2395,
+		0xc23be5754e8d53f1,
+		0x8cb63d465d92716f,
+		0x3f1d68765a736fcb,
+		0xc14d753bab768e39,
+		0x15afd84dc7689da5,
+		0x689ca5ffe67dbc13,
+		0x9178a4fed35eca7f,
+		0x8baf42521462f8eb,
+		0xc8b25e9543861a59,
+		0xf7241897617928c5,
+		0x13a2bc7a9f7c5843,
+		0x591d74698c6d459f,
+		0xdf38156cbc72851d,
+		0x6c74bd8fec64a379,
+		0xd9a6b371f967a2e5,
+		0xc569d8f3297ac163,
+		0x954a38e32549beaf,
+		0x1f987537645fce2d,
+		0x7d923efba4631e89,
+		0x49f7b23ba1762cf5,
+		0x1fe2c73cbf594c73,
+		0xa35ce97cbd3a49cf,
+		0x9861ca71fb3e694d,
+		0xb6e147932d4187b9,
+		0xb6cfe4843c54b827,
+		0x63b19c865a47c693,
+		0xe3a568b87638b4ef,
+		0xf14eb53a954be36d,
+		0xd8349bfba34ef2d9,
+		0x9d21b43fe1853247,
+		0xb7f9318fef4751b3,
+		0x487961d43e496f21,
+		0xadbc29f43c2a5e7d,
+		0x5cda7e654a2d6ce9,
+		0x4a3d95198b31ac57,
+		0x5db3f18a9824bac3,
+		0x7a56891dc837da41,
+		0xae16578dc428e79d,
+		0xd79ba85fe43cf71b,
+		0x6a3b14c3243f1687,
+		0xc63a7599815246e3,
+		0x18dbfc5a9f287561,
+		0x4da19c687e1863bd,
+		0x3e8bc6aa9d1c823b,
+		0x65f3291dcb2e91a7,
+		0x7154af3dc821aef3,
+		0xadbc1491f824ce71,
+		0x57d8af632615ebcd,
+		0xace71d843518fc4b,
+		0x9fb7e2c7642d1cb7,
+		0x7621c8ba941f3b25,
+		0x5d314f698ef25a91,
+		0x423df7ba9be357fd,
+		0x342c7ebedcf5876b,
+		0x927564dfe8fa95d7,
+		0xd5439b7219fdb645,
+		0xea49168437efc4b1,
+		0xf81ae43767e4d32f,
+		0x52f1b9c874e5f18b,
+		0xf9312c5ba4e921f7,
+		0xf2684beba1eb2f65,
+		0x35ac1dea9fbd4ec1,
+		0xfdb37c5febd16c3f,
+		0x9feb36721de36c9b,
+		0xea79b8443ce68b19,
+		0x17462a5437e9ba85,
+		0xc8ed96f656dcb8e1,
+		0xd724bf5984bec75f,
+		0xa8123bfa94d2f5cb,
+		0x39b8a54ed4e71639,
+		0x3b564e21f1e924a5,
+		0xf5bca27542ec6513,
+		0xae724d643ebd527f,
+		0xa83d26b65dc271eb,
+		0x78bef3976bc38f49,
+		0x28e3b61878c69eb5,
+		0x3b5f2e9ba7c9bd23,
+		0x473fc98ed49acb8f,
+		0xf49a235dc38ed9fb,
+		0x8bf5316325d31b69,
+		0x6fbe851543c629d5,
+		0x8215ade871da4953,
+		0xab792f465e9b46af,
+		0xf37a29698cae762d,
+		0x16ad7cecbdc1a489,
+		0x59c6b4aed9b4a3f5,
+		0xe6bc7311f9b8c273,
+		0x1fc537632698b1cf,
+		0xade58433258acf3d,
+		0xdabc8175437dfea9,
+		0x3c15d42a95b43e17,
+		0xd38b76fba1b64d83,
+		0x1a3de87a9e874adf,
+		0xf35bae2dce8b6a5d,
+		0x8b62a9d1fb7e68c9,
+		0x93dafc832da1b937,
+		0xb3c6d8532b94c7a3,
+		0x6f74dec659a8d721,
+		0x4c82eba76589e47d,
+		0xdf49b2a9847bf3e9,
+		0xdaf3927dc4af1357,
+		0x59783affe1a452c3,
+		0xf8cbd63fefa87241,
+		0x4f3682721e675f8d,
+		0x7c465e932c5a6df9,
+		0x245f79843b5e9d67,
+		0xa748efb76971abd3,
+		0xc268ebdba984db51,
+		0xac986d4cb465e8ad,
+		0xc761a95ed469f82b,
+		0xde67acb1f36d1897,
+		0xbe3827f2148e27f3,
+		0x2dc4ab1982a35671,
+		0xd1f29c643f7564cd,
+		0x65d23ea87e69834b,
+		0x12e47ac98d5c92b7,
+		0x8691b2edca7eb125,
+		0x86b7ef1ed962cf81,
+		0x7de5a8b1f653bced,
+		0x25e63f421746fd5b,
+		0x5972fc1434591dc7,
+		0xbfc15a69847d2c35,
+		0x6ab72e59826f4ba1,
+		0x5fb946cbae53691f,
+		0xf26d9bedce34687b,
+		0xb7f6539edc3896e7,
+		0x5287ea11fa3cb765,
+		0x6a5d7ce3294eb5c1,
+		0xbd41c9665961d43f,
+		0xe2ac74576754f29b,
+		0xf4a8217cb7682319,
+		0xf952eb6dc46b3185,
+		0xe9568cdba25b4fd1,
+		0x281467bbac2e5d4f,
+		0x87db3e41fe326dab,
+		0x3fe9cab21e358c29,
+		0x2fde18743d27ab95,
+		0x1bf28a96583ab9f1,
+		0x214879f6572dc86f,
+		0x5127faea9731f6db,
+		0x37e8946ed8351749,
+		0x649d231fe43826b5,
+		0xec258791f14b5623,
+		0x95fa61c5412c538f,
+		0x96732ab54d1e62fb,
+		0x5c8fb3187e23a169,
+		0x452f39687b149fc5,
+		0xea7cb13a9a18be43,
+		0x5fc267eba618bc9f,
+		0x9c58fd1ba62ceb1d,
+		0x6e7283b1f6321c79,
+		0xe4cda56437142ae5,
+		0xb4c286d875184a63,
+		0xd1c395f7621947bf,
+		0xca7e1bd65efb673d,
+		0x27fba8476cfe75a9,
+		0x8c9f542bacf2b517,
+		0x72fc568edaf5c483,
+		0xf84de7bdc7e6b2df,
+		0x4fb7a65327f9e15d,
+		0x735c8df324daefb9,
+		0xc7fd3e5765de1f27,
+		0xf27d49b985f24e93,
+		0x5764d91981d54bef,
+		0x4a7f1b5a9fe85b6d,
+		0x52fd67398ceb6ad9,
+		0x3b864ed1fbde9a47,
+		0x6fd73e432ae1c8b3,
+		0xe68cbd554ae5d831,
+		0xc84fb9e437c6e58d,
+		0xb97384a765c8e4f9,
+		0xb9fc51dba5ed1467,
+		0x4e7fdb9ba5cf24d3,
+		0xb645193ed2e47351,
+		0xf7d69c8fefc561ad,
+		0x8743d9532ec87f1b,
+		0xabd541f32dcb9e87,
+		0xf7813e2548ad9ce3,
+		0xd318549879b2dc61,
+		0xbd536a1876a3e9bd,
+		0x6cb5231ba5c6f93b,
+		0x2f3cd6afe4db19a7,
+		0x1bc6e3d1f4cd3915,
+		0xca14def323cf4781,
+		0x35a967d541b265ed,
+		0xb6d7e9c43fc6845b,
+		0x47dca2865eb893c7,
+		0xc9bade198dacb235,
+		0x386f47acb89ec2a1,
+		0xd2c835bba681befd,
+		0x45ef632ed593fe6b,
+		0x19ef3da325a61ed7,
+		0x29fbe8c436ba2d45,
+		0xd7591bf7639d4cb1,
+		0x2df95488719e5a2f,
+		0x92af84187fa2698b,
+		0x5372e68cbda498f7,
+		0x5ab163cfeda9b875,
+		0x97368511f98ab6d1,
+		0xd54b93f2198dc54f,
+		0x38ac7b254781f3ab,
+		0x5c1982a878b61429,
+		0x31d698cba6b83295,
+		0xae21d94cb49a52f1,
+		0x741e26fba18b4e5f,
+		0x573fe6ba9d6f5ecb,
+		0xc84b52d1fe728d39,
+		0x2d937ba21e749ca5,
+		0xab8c52754d78cb13,
+		0xf962a844385ac97f,
+		0xa175c8e5465cd7eb,
+		0x7f91b54dc7a21859,
+		0x25f3aebed69427c5,
+		0x628adb9fe2a95743,
+		0xf84631bfe17a549f,
+		0xf5d7e694328c741d,
+		0xbce126543e5f8279,
+		0xe491cf776d73a1e5,
+		0x5e7b91698c76bf53,
+		0x6412c5d87846bdaf,
+		0x253db47ba759ec2d,
+		0xd7395cacb54dfc89,
+		0x5bf16c3fe6712bf5,
+		0x6b93875216854b73,
+		0xe2cd6174325648cf,
+		0x98d3cb58715a684d,
+		0xa2967be65f3d76b9,
+		0xaebd7f2a9d4fa627,
+		0xd153f86cbd62c593,
+		0x79165badc945b3ef,
+		0xa2bd98e1f948e26d,
+		0x78b46a13274af1d9,
+		0xcf8eb766596e2147,
+		0x5b72c6a987614fa3,
+		0xecd972bba4756e21,
+		0xd2c8f35ba1365c7d,
+		0xf923e74baf286be9,
+		0x4f35be2dce2d9b57,
+		0x9fa7db4feb2fa9c3,
+		0xafd796432c53d941,
+		0x8e4d1a243a24e69d,
+		0x32c6eb965938f61b,
+		0xed47b91ba93c1587,
+		0x2819de5ba74d25e3,
+		0x93f846ced8527461,
+		0x9d5b48cfe13462bd,
+		0xb62da59fef27813b,
+		0xb67cf3e32e1a8f97,
+		0x913c8fd54c1b9df3,
+		0x8924cf765a2fbd71,
+		0xc9a5db276812eacd,
+		0x21c84fba9815fa4b,
+		0x8b5fe27ed6281ab7,
+		0xf84a621fe71c3a25,
+		0x4edb1521f52e4891,
+		0xfd2b97e4342156fd,
+		0x68fdc5987213856b,
+		0x92e867d43ef594d7,
+		0x29ba34e87df9b345,
+		0x95f43a2879fac3b1,
+		0x2e4adf3a98edc12f,
+		0x12f8bc7ba6d1ef7b,
+		0x41387addc6d41fe7,
+		0x8ba2394217f82e65,
+		0x7b85cfe435f94dc1,
+		0x43a9cf1762ec5b3f,
+		0xcda8351761ef5a9b,
+		0x164a5bc87fe38a19,
+		0x1cbe946bade4b985,
+		0xf7ab1dedcad8b7e1,
+		0x76f2a85fe8dac65f,
+		0x9a8d5e7217ade4cb,
+		0xe4a271c76ae21539,
+		0x1ea95fb878e623a5,
+		0x3fb675cba7e96413,
+		0xb6d8f75a93da517f,
+		0xd146ebf981ca5fdb,
+		0xeb6952dbadbf7e49,
+		0xa79d4611fec29db5,
+		0x85b724a21ed6bc23,
+		0x38c6bf7329b6ca8f,
+		0xbf4c51a436a9d8fb,
+		0xfeba981545bdf869,
+		0x72319e5ba7c128d5,
+		0x6a84132dc7d64853,
+		0xc7b14e3ed2c745af,
+		0x5d47e8b1f1ca752d,
+		0x6bf8e94321cd7389,
+		0xfa75ce943dae92f5,
+		0x4a218fc76eb4c173,
+		0x413ba7665984aebf,
+		0xdb571a476897ce3d,
+		0x27863c1cb578fda9,
+		0xd7e9b3fdc6ae2d17,
+		0x7eb15c91f6b14c83,
+		0xfd58eb3215a349df,
+		0x67bf21e432b7695d,
+		0x21cf9ea541ba67c9,
+		0xfed46c165f9da837,
+		0xcbe492887d8fb6a3,
+		0x6872ca5cbca4d621,
+		0x4efd582dca95e37d,
+		0x98b42eaed687f2e9,
+		0x1a26f4b439ac1257,
+		0x1afd3b76579e41c3,
+		0x7e41a63987a26f31,
+		0xa42c86b872935e8d,
+		0x92eb81cba1856cf9,
+		0xd842ea5cbf5a9c67,
+		0xc597214cbe6c9ad3,
+		0xc3b5d7afeb7fca51,
+		0x6fd7c3b21b62e7ad,
+		0x8524c6a43a85f72b,
+		0xb8ac31954b8a1697,
+		0xdeba461a978b26f3,
+		0x986ef52cb69e4571,
+		0x752c61ecb48163cd,
+		0x7d58293fe195824b,
+		0xf726839fef5691b7,
+		0xcb8aef532e69af15,
+		0x9dcf26443d5cbe81,
+		0x1a85d2b4384fabed,
+		0xb4cd1e587962fc5b,
+		0x82f6d5cba9651bc7,
+		0xab71926ed8792b35,
+		0xa2d6839fe56c49a1,
+		0x63f821dfe36d581f,
+		0x7efa3dc32351867b,
+		0x86ad37c5416395e7,
+		0x196fdba87f38b465,
+		0x9e2a18687e59b4c1,
+		0xdc1937f98a5bc23f,
+		0xfb3c7d6ba84fe19b,
+		0x4fd78c3feb753219,
+		0x15637cbfe9462f75,
+		0xb73ec81327584ed1,
+		0x49513863263a5c4f,
+		0x3a2ed157623e5cab,
+		0x6315942ba3518b29,
+		0x59d3be698f23ba95,
+		0xc5e1f34bad36b8f1,
+		0x2f8651cedb29c76f,
+		0x95a67c81f82ae5db,
+		0xc29ea6b21a2ef549,
+		0x4913e5887a6324b5,
+		0xa514e82a9a486523,
+		0x4c7d986ba639528f,
+		0xd1ecb38a943a61fb,
+		0xc37de16cb12d7f59,
+		0x1e846c7cbf219ec5,
+		0x17493b61fe15bd43,
+		0xf73418d32d15cb9f,
+		0x57b26dc54b28ea1d,
+		0xa7bc8e65481cfa79,
+		0x6cb24d18782f19e5,
+		0x6931bdedca124963,
+		0xf582b74dc71546bf,
+		0xd253a78fe419763d,
+		0x9c65a1b1f21c74a9,
+		0x491ec766532ea417,
+		0x1b9f5d654defb283,
+		0x9ce8db665ae3b1df,
+		0xb2cd897769e5cf4d,
+		0xc12d793657d6feb9,
+		0xc2d8f46ba8fb1e27,
+		0xdcf6548cb6fe2d93,
+		0x913d64fdc5d14aef,
+		0xb36afe9214f35a6d,
+		0x56d18bc432f568d9,
+		0xf4b71ce651fba947,
+		0xb639a1d65feda7b3,
+		0x5bca4e198bdfc731,
+		0xb3752d6a9ac2e48d,
+		0x35fec12cb8c5e3f9,
+		0x7c2461b1f9ea1367,
+		0x96b5fc4218eb42d3,
+		0x9f28576548de6251,
+		0x749f38b764c15f9d,
+		0x37dbfe4983d47e1b,
+		0x3c9d8b7ba1e59d87,
+		0xbde194387fc89be3,
+		0x647bef1a9eadcb61,
+		0x72f86cbfe79fc8bd,
+		0x7d68c3b21ac2f83b,
+		0x68ad42f43bd518a7,
+		0x1789a54769da3815,
+		0x17b5238a97dc4681,
+		0xf629315983ac54ed,
+		0x7fd2153dc4d1835b,
+		0x3986725fe1d492c7,
+		0x6b372a1fefc8b135,
+		0xd1e9f4c32ea8bf91,
+		0x86d47f132b79acfd,
+		0x1bfe72c4398fed6b,
+		0x3159f8e769a31cd7,
+		0x98c5d27ba9b72c45,
+		0x3f8c952ed6c84ab1,
+		0x953726aed4ab592f,
+		0x127cdb31f2ae578b,
+		0xa41579c323b196f7,
+		0x7163c92541c3b675,
+		0x386cb9d54f97b5d1,
+		0x21a7be876d89c34f,
+		0x9ca2bdf7697ce2ab,
+		0x5f1382ccba8ef129,
+		0xb726415feab43195,
+		0x46b8c13ed7964fe1,
+		0x654af3d216984d5f,
+		0x5e796fd323795dcb,
+		0xc3e1a426528e7c39,
+		0x2c48b36872819ba5,
+		0x5cb1a62a9f85ca13,
+		0xc4b27febad65c87f,
+		0x483f657dca58d6eb,
+		0xc54db1ffea7cf659,
+		0xa35f18432a8f16c5,
+		0xa29851f87ba25643,
+		0x9ca571254786539f,
+		0xe69375bba589731d,
+		0xe6cf1d9cb36c8179,
+		0x96f4312ba16c8fd5,
+		0x92b8f13dcf71be53,
+		0x42b581dfed53bcaf,
+		0x29d534c21c56eb2d,
+		0x67139d432c47fb89,
+		0xde71afc5496c1af5,
+		0x45763dc9896f2a73,
+		0xd4358fbba86247cf,
+		0xed63b19dc385674d,
+		0xf17d64cfe24875b9,
+		0xb6859ca1f16ca527,
+		0x581acbe3216eb493,
+		0xc76e89b54d51b2ef,
+		0xb28651987c54e16d,
+		0x15d72ce76a35efc9,
+		0x6375caea9b5a1f37,
+		0x6c287e1cb85c2ea3,
+		0x4926387dc86f5d21,
+		0xa147c291f6425b7d,
+		0x6a38d24215346ae9,
+		0x3dc1975542389a57,
+		0xc453b8f7614ba8c3,
+		0xb21d48987f3ec841,
+		0x1c34de298c31e59d,
+		0x517fd36bac34f51b,
+		0x4bfd526fec391487,
+		0x1ca59631f95a24e3,
+		0x8c351b932a4d5361,
+		0xf9cb7de5473f51bd,
+		0x7ec9fa5986437f2b,
+		0x519d423ba3248e97,
+		0x12db48fba1279cf3,
+		0xf84b52ea9f2abc71,
+		0x13df7c598a1eb9cd,
+		0x4c6b5dafec21f94b,
+		0x5e91dca43d2419b7,
+		0xa894c1f76c183925,
+		0xb3e5a4976a2b4791,
+		0xeba2c659871b45fd,
+		0x7c23649ba51f746b,
+		0x48d72eadc51293d7,
+		0x92b4cf7fe317b245,
+		0x38bc46fedef7c2b1,
+		0x84e19ba32cd8be1f,
+		0xbd5eaf1329fade7b,
+		0xf91b458438bdfce7,
+		0x427cefa98af32d65,
+		0x461dc25a98f64bc1,
+		0x94c58edcb6e85a3f,
+		0x47c15f6ed3fc589b,
+		0x6af3b9ced3fe7819,
+		0x5bd7861323f1b785,
+		0xdf672c8652f4b6e1,
+		0xc76a9f543ed7c45f,
+		0x327d4ca65ad8e3cb,
+		0x2a43e9187adcf239,
+		0x7ac5e12cb9df12a5,
+		0xea7129cedae56213,
+		0x9743c58ed7c54e6f,
+		0xe2fca8b214c75edb,
+		0xbce154f323eb7d49,
+		0xbead367542de8cb5,
+		0xacfd425984e1cb23,
+		0xdba4f9176eb3c98f,
+		0xf5cb6d298ca5d7fb,
+		0xf1a8369edbcaf769,
+		0x52c6b181f9bc17d5,
+		0xc4f526321acf2753,
+		0x6c98ae5438c254af,
+		0xf3a1c49658c6742d,
+		0x7a1fdcb764da7289,
+		0xac173bf983cb91f5,
+		0x27381d6a91bdaf63,
+		0x2f138c4a9e81adbf,
+		0x28ad7341fb94ec3d,
+		0x3edb48621d85fca9,
+		0x8edb52354dba2c17,
+		0x6f9cdea659ad2b83,
+		0x6af9c716569e38df,
+		0xf8c1d4bba7b2685d,
+		0xef6a7c8ed3b476c9,
+		0x2c1dbfafe2c9a637,
+		0x3ac4e5b1f19cb5a3,
+		0xf23e87c543aec521,
+		0xf3d12a554f91e27d,
+		0xb31a97d65c84f1e9,
+		0x2bc3e1998db92157,
+		0x86fa3e187a892fb3,
+		0xedf2c83cb89c5e31,
+		0x5e8df76cb57f4c8d,
+		0xb1c34a8fe4826bf9,
+		0x543ba27213a49b67,
+		0xe3a2c7b54287a9d3,
+		0x79ec2417628bc951,
+		0x9cf6ba354f5ec6ad,
+		0x8da53bea9d81f62b,
+		0x85e1ad2dcda41597,
+		0xb547186edb9825f3,
+		0xeda41851fa9b5471,
+		0x4f8c9ed2187b52cd,
+		0x7192ba44368f714b,
+		0xa1b836c654628fa7,
+		0x5d6a1b8a9386ae15,
+		0x3c976f1ba267bd81,
+		0xa452d8e87f48baed,
+		0x7a8e4b5a9c4dea5b,
+		0x329165e1fd621ac7,
+		0x3d678c921d862a35,
+		0x8c97ae643c6748a1,
+		0x6e5329c5496a571f,
+		0x1df687ba984d657b,
+		0xec194bdba35f84e7,
+		0xe2b95f6ed482b365,
+		0x6db31a8fe276b3c1,
+		0x74f9618ede58c13f,
+		0x64e2cba21e39df8b,
+		0xb7451a632a3bedf7,
+		0x139eb4798c612e75,
+		0x52ecb9d98a654cd1,
+		0xb4d92c6ba9375b4f,
+		0x4f79c16ed63859ab,
+		0xa3f62c9fe54d7a29,
+		0xf96ad71fe23fa895,
+		0xc5dfa6e32453b7f1,
+		0x3acfb4e87134c56f,
+		0x4873fe965f27e4db,
+		0x6b98cad87d2bf349,
+		0xc3deb65a9c4e13b5,
+		0xf4b1586edc716423,
+		0x4bc796eeda34518f,
+		0xab23847ed7265feb,
+		0xd48729c2162a7e59,
+		0x7a841654342b8dc5,
+		0xf1a39c58752fac43,
+		0x458f31687132ca9f,
+		0x651b29498f25e91d,
+		0xd542fc6cbd16f879,
+		0x6853491edc2b18e5,
+		0x1edc6941fb1e2863,
+		0x5fb2edc43a2145bf,
+		0x17bc8fe76a14753d,
+		0xe261d8f6581673a9,
+		0x43b7e61a962ba317,
+		0x4d7feb9ba52db183,
+		0xe5bc9d79821d9ecf,
+		0x57c21fba9bf1ce4d,
+		0x9df2b67dcae3fdb9,
+		0x78c59df43cf81d27,
+		0x6eba1f354bfa2c93,
+		0xb51e2dc547db39ef,
+		0xa416ceb657ef496d,
+		0xf685741ba5f267d9,
+		0x7fd82bedc3f5a847,
+		0x6274b1fed2f8a6b3,
+		0x15b497ffe2fbc631,
+		0x6c48a31321fec38d,
+		0xb37df8654dc1e2f9,
+		0xda5614c98de51267,
+		0xdb62a5c87be841d3,
+		0x4c637a2989da5f41,
+		0xd9c7e1b986cb4e9d,
+		0x9e6c534ba5cf6d1b,
+		0xd742c131f4e29c87,
+		0xb246f38214d59ae3,
+		0x2ea9587543e8ca61,
+		0xab57cef541e9c7bd,
+		0x6cd34b165fade73b,
+		0x23cf56ba9ed216a7,
+		0xc19236acbcd63715,
+		0xf2893a1febd94581,
+		0x8c324911f7b953ed,
+		0xea854c7218cd725b,
+		0xc476eb9435bf81c7,
+		0x56a9b34876c3af25,
+		0x3f41e6a873c5be91,
+		0x8e12b9487196abfd,
+		0x12d5caf87f89ec6b,
+		0xeca5fd2a9b8cfad7,
+		0x1e8d4b71fdc12b45,
+		0xe9b8df432dc549b1,
+		0xa9bc45143ab7582f,
+		0xa51e9db437ca568b,
+		0x273e81d764ac85f7,
+		0xf85c67aa93bfa475,
+		0x12fea8ddc5a3b4d1,
+		0x598472ced1a6c24f,
+		0xa2365efedf87e1ab,
+		0x74cdb5632d7aef19,
+		0xf87eb6a43c9d1f85,
+		0x491d5ef76b924de1,
+		0x49e521687a934c5f,
+		0x1a6d2fca97865acb,
+		0xb1524c6ed58a7b39,
+		0x5f21bc3fe37d89a5,
+		0x5b3a61dfe48fb913,
+		0xacbe36221392c67f,
+		0x72b8d9543184d5eb,
+		0x65f78cd43e78f459,
+		0xd1896c387e8b14c5,
+		0xc6f39ebbac9e2543,
+		0xe25b46fdcb81529f,
+		0x4359682fea95721d,
+		0x68fb2a9fe4857f69,
+		0xb6d5f34214698ed5,
+		0x1fc8eda3247cad53,
+		0xf7e8cb95425e9baf,
+		0x42a61d998173ea2d,
+		0x25a3e6b87e54fa89,
+		0x1a926c3cbd6819f5,
+		0x2fa693cfed6c2973,
+		0x4a6829bfe95d36cf,
+		0x7ade63832b81764d,
+		0xbca917632a6374b9,
+		0x7b6cf4a65968a427,
+		0x1a2e93c9856ab293,
+		0xe3da1459835ba1ef,
+		0x1d2465fa914ebf5d,
+		0x236cbe5bad42fec9,
+		0x382da491fd561e37,
+		0x8d4a2c921e582da3,
+		0x537bafc54d6b5c21,
+		0x1fcb4926593e4a7d,
+		0xd8a952c87a4168e9,
+		0x1a82b59dc843a957,
+		0x635e97aed546a7c3,
+		0x97c8145fe35ac741,
+		0x943bd6c1f13bc49d,
+		0x78e96b14325fe41b,
+		0x218e5fa76f541387,
+		0x67341dc98d5742e3,
+		0x7db4f86a9d4a5261,
+		0x9a5d612878294fad,
+		0xd234c96ba83d6e2b,
+		0xf4d2839fe6318d97,
+		0x45c6abdfe6249bf3,
+		0xc13db9732536cb71,
+		0x178c6d954327b8cd,
+		0x842a9cd7612ce84b,
+		0x3271e6f65d1ef6b7,
+		0x846715dcbe143825,
+		0x2ef9a3ddcd274691,
+		0x1e469d7dca1854fd,
+		0x8172b391f91c736b,
+		0xf7c491b4391e82d7,
+		0x1bcef8d87932b145,
+		0x4b15cf287624bfa1,
+		0xa14759d98426bd1f,
+		0xf71e6b2a9218ed7b,
+		0x9a45edc76cd9fbe7,
+		0xd61e754babfe1c65,
+		0x91a6d27febf24ac1,
+		0xce953a721be4593f,
+		0xa1f36be32af6579b,
+		0x93cae67546fb8719,
+		0xf598b1a874fda685,
+		0x564faeb984dfa5e1,
+		0xef5b7d4ba4e2c35f,
+		0xce17df4ba1f5e2cb,
+		0x6df1593dced8f139,
+		0x1a7e52443fec21a5,
+		0xc87ab3654abc3ef1,
+		0x9fb81c365ac14d6f,
+		0xbf58e43768e35cdb,
+		0xeb47126ba8e67c49,
+		0xf3569a4dc4e98ab5,
+		0xa54df67dc5edba23,
+		0x3a7c52eed2ceb78f,
+		0xea9b7d5213c2d6fb,
+		0x86149ed431d4f569,
+		0xa85df6954fc916d5,
+		0x79bc23d98edc2653,
+		0xa862cf3879bd43af,
+		0xa64d289cbac1732d,
+		0xc97423dfead47189,
+		0x4b652e1ed4b68fe5,
+		0xf32859b215c9ae63,
+		0xc5f3d143238a9cbf,
+		0x8d213946529fcb3d,
+		0x94835da761c2fba9,
+		0x53412dba9fc62b17,
+		0x4e9a6c5cbec92a83,
+		0x9145afbdcb9a37df,
+		0x9e4a2361f9ae475d,
+		0x1b5e4d632ab175c9,
+		0xeb54d87329c4a537,
+		0xd4ecb19656c7b4a3,
+		0xc3621df986bac421,
+		0x16bd94a9839bc17d,
+		0x6c19f3a9817ecfd9,
+		0x29a74f5dcea31f47,
+		0xbd847231fd962eb3,
+		0x9d5c84332ea95d31,
+		0xca861e732c7a4b8d,
+		0x5a8de4f4387d5af9,
+		0x186472b658b19a67,
+		0xf245c87cb694a8d3,
+		0x6b51f83ed4a7c851,
+		0x45f6dc2fe278c5ad,
+		0x49751cb1f18ce52b,
+		0xf7dbc943218ef397,
+		0x3dc2ef176e9524f3,
+		0x1ac48df76ea85371,
+		0x278da3976b7851cd,
+		0x4e3a9579897a6f3b,
+		0x67c891ecb85d6ea7,
+		0xf5acdb9fe782ad15,
+		0x2d1e8cb1f574bc81,
+		0x29eb8fc21365b9ed,
+		0xe4672fa43268e95b,
+		0x9d61a7b5415bf8c7,
+		0xa2d5bc798e7f1935,
+		0xa731c8fcbe8347a1,
+		0x29a346dcbc87561f,
+		0x1b27596fec59647b,
+		0xa83e6241f95b83e7,
+		0xead6b272197ea265,
+		0x3e2f9c165873b2c1,
+		0xafd961e87564be2f,
+		0x32acb8e87245de8b,
+		0xefd134aa9148ecf7,
+		0x356c914baf4c1d75,
+		0xcbfd458bac5f3bd1,
+		0xb5dac64fec625a4f,
+		0x856abcf21d3458ab,
+		0xf584c1b43c4a7829,
+		0xf3569dc5483ca795,
+		0xd1f57cb9874da6f1,
+		0x1f25c7eba751c46f,
+		0x38d45fbba254e3db,
+		0xf4e3a25ed157f249,
+		0x1c39d82fef4a12b5,
+		0x3c2d9be54f6d5123,
+		0xebca36f54b2d3e7f,
+		0x93cfa4876a325deb,
+		0x7f5a39198b247d59,
+		0x5f813b4ba9278bc5,
+		0x3891e2ced72cab43,
+		0x84da927dc42db89f,
+		0xa3298e41f542e81d,
+		0x938742521423f679,
+		0x4f58d3b7623817e5,
+		0x21afe6d98f1b2763,
+		0x3c845d687d1c34bf,
+		0x4fb5817a9b1f643d,
+		0xf5c76baedc1372a9,
+		0x8ba6932feb36a217,
+		0x89c6a43fe618af73,
+		0xfc31ad8325189dcf,
+		0xed5acb74351ebc4d,
+		0x2d9fe7476421fcb9,
+		0xdf43196ba4351c27,
+		0xa27134f98ef62b93,
+		0xa7bc86da9bd738ef,
+		0x7319f82dcafb486d,
+		0x94ef762dc8fe56d9,
+		0x147aec632bf1a647,
+		0x4da36f8328f4a5b3,
+		0x987132a767f8c531,
+		0x3ea421f764f9c28d,
+		0x1b29ead873ebd1f9,
+		0x6d172bca91cdef57,
+		0x83f695dbaed42fc3,
+		0x53c146d1fcd75e41,
+		0xbda4c6321be74c9d,
+		0xace15f6439ea6c1b,
+		0x57ca9be439de6b87,
+		0xa89457f767d1a9e3,
+		0xe5398bfba7e4c961,
+		0x71df23ca93e5c6bd,
+		0xed8735adc2d9e63b,
+		0x9a2346bfe1dcf4a7,
+		0xd5837e9543df2615,
+		0x428ce7576fd35481,
+		0x1dbfa8654cb652ed,
+		0xa51c37d76cd9715b,
+		0x2b483df658ca6fb7,
+		0x79e51f2ba7bd9e25,
+		0x3c856fafe6c2bd91,
+		0xa591d47fe493bafd,
+		0x9fe4a8b213c5ea6b,
+		0x98ac7d4432b8f9d7,
+		0x352ecab872cd1a45,
+		0x32a187976eaf38b1,
+		0x8af5d32a9db3572f,
+		0x1567de9badc4658b,
+		0xf7842c6edab984f7,
+		0xb27a3651f8bca375,
+		0x4c1ba9f3279ea3d1,
+		0xbac31f9657a2c14f,
+		0x9d12ca865483df9b,
+		0xd465b81873a6fe19,
+		0xda2ce73a92ba1e85,
+		0xf5d81a3a9f8b3ce1,
+		0x4b16c25bac8e3b5f,
+		0x5ae8d761fd8259cb,
+		0xfd65be721db57a39,
+		0x98fa5d332cb798a5,
+		0x9c2efab6579cb813,
+		0x8bfa14e7648db57f,
+		0x45db7a2a9581d4eb,
+		0x8d4e963dc2a4f359,
+		0x1f728adfe2a813c5,
+		0xb9235a8fef9b5243,
+		0x458aed632e7c419f,
+		0xcd41e8532a6d4efb,
+		0x9cb2f6554c827e69,
+		0x24c98a176a748cd5,
+		0xc1f5739cb978ac53,
+		0x9af1348dc458b9af,
+		0xc6432aecb46ec92d,
+		0xc9351f4fe361f789,
+		0xa3def763239418f5,
+		0xb627d34651a92873,
+		0x87ce1f254e6935cf,
+		0xdbe4ca298e7c654d,
+		0xc36de5f98c5f63b9,
+		0x2e463f7edc84a327,
+		0xd9375f2fea76b193,
+		0x538d97fdc5469edf,
+		0xfd964ea21649be5d,
+		0xf7c49a83234bedc9,
+		0x7c5b38aa95821d37,
+		0xe84d263a91752ca3,
+		0xd7f5c69baf685b21,
+		0xa438c52cbe3a497d,
+		0x2e78f4bedb3c57e9,
+		0x8c6327afeb3f9857,
+		0xefac5b221b52a6c3,
+		0x9b8ca2443a57c641,
+		0xfc6213e65647c39d,
+		0xba7e36d9865ae31b,
+		0x52ecf67ba34df187,
+		0xe2a8754dc57241e3,
+		0xa496b8edce364f51,
+		0x3bc298d1fc264ead,
+		0xa9f52ce21e396d2b,
+		0x768b41f43b2d6c97,
+		0x1f39e7a6592e8af3,
+		0xc3614b998943ca71,
+		0x1423f5ba9624b7cd,
+		0x136b5a9dc528e74b,
+		0x73e12a5ed32af5b7,
+		0x1c5a6471f34e1725,
+		0xa5bd234873624591,
+		0x94a78d176e1453fd,
+		0x1382ceb65e18726b,
+		0xe97cd2476c2a81d7,
+		0x47ea2d598a1c9f35,
+		0x951f764cb72f9ea1,
+		0xf4e6753ed723bc1f,
+		0x734a2d11f514ec7b,
+		0x49eb17332416fae7,
+		0xdb158c28742c1b65,
+		0x263b5ae8742e39c1,
+		0x148ef7376cde483f,
+		0xec4613598df2569b,
+		0xc4317d9cbcf58619,
+		0xc1a3724edbf9a485,
+		0xaf9b731ed7fba4e1,
+		0x4fce29b217edb25f,
+		0xab57d69546f2e1cb,
+		0x938d1bc765d4ef29,
+		0x67e3a5b983e71f95,
+		0xb497af5982e93df1,
+		0x7c26e4b98edb3c6f,
+		0x5d47eb2989cf4adb,
+		0x4d3a58b1fce27b49,
+		0x2ae6cb521ce489b5,
+		0xac2edf554ae8b923,
+		0xe52b7ca435dab68f,
+		0x7a49f2c764adc5fb,
+		0x621749dba5d1f469,
+		0x8ea9734cb3e614d5,
+		0xf829ab7ed1e92453,
+		0x43aec28edec942af,
+		0xf19725d43fbc612d,
+		0xad17b6832cbe5f79,
+		0x82fb3d654ab28de5,
+		0xbf64dc2879c5ad63,
+		0x1af39eb875c69abf,
+		0x637fdbe985b9ca3d,
+		0xb78943fdc3bde8a9,
+		0xa764ed11f5d32a17,
+		0x6928aed214d52983,
+		0x9db81f2541b736df,
+		0xce6fd1a43fba465d,
+		0x79462bd65ead64c9,
+		0xbc2916398cbf9437,
+		0xf84512ced9c4b2a3,
+		0x5b748dafe9b7c321,
+		0x8bc7a41fe497bf6d,
+		0x3ab7e4621478ced9,
+		0x5f13c693239cfd47,
+		0xad3f6ec875a12db3,
+		0x8cda615a92b65c31,
+		0x52cf6ab87f964a8d,
+		0x9e16247cbd7a58f9,
+		0xd937b2cfecad8967,
+		0x46da7bcfea8f97d3,
+		0xa563fd432ba3c751,
+		0xc586f3732785c4ad,
+		0x6c479be65698e42b,
+		0x973d1cb7648bf297,
+		0x7d9b21eba59d12f3,
+		0x96835bfed4b35271,
+		0x69b3854bae734fbd,
+		0x648c9721fd876e3b,
+		0xf78459c21e596da7,
+		0x5b8e92643b7d9c15,
+		0x623acfb5496fab81,
+		0x6f9432865762b8ed,
+		0x9b73fc5ba674e85b,
+		0xdec139acb358f6c7,
+		0xcdb2f35fe49c1835,
+		0x2e768d91f28e36a1,
+		0xa98f67554392651f,
+		0x3a9bdec32f84637b,
+		0xf239c5154d5682e7,
+		0x1d9762398d7ba165,
+		0x1e42c8b8785c9fb1,
+		0x2618fd4a975ead2f,
+		0x3b159dedc652ed8b,
+		0x5e48c91ed354ebf7,
+		0x1abe738324691c75,
+		0xb8d2f316546b3ad1,
+		0xae9f43b8716d394f,
+		0x1da7e2698f4157ab,
+		0x5e9f6a3cbe548729,
+		0xd7a9f82dcd37a695,
+		0x54681faedb49a5f1,
+		0x9384162fe84cb36f,
+		0xed7b65a2174fc2db,
+		0x3bf8de765863f149,
+		0x86d1f73a986721b5,
+		0x2389c15ba5694f13,
+		0x6be4d71a914a3d7f,
+		0xa31e57998f2d4ceb,
+		0x687e52cede317c59,
+		0xc21a46b1fd238ac5,
+		0xe57238f21d27ba43,
+		0xd1784ab43a28b79f,
+		0x71cedf26583bc71d,
+		0xc9375b19862fe579,
+		0x7d8f349cb84316e5,
+		0xca65781ed7482563,
+		0x4c9fa72ed12843bf,
+		0xbfd5a37fef1b623d,
+		0xf51d2ec43f2e61a9,
+		0x73bc69a54c218ef5,
+		0x135a4db76c14ae73,
+		0x7f2be18768159bcf,
+		0x182bfd4a9718cb4d,
+		0xe2f1b3d9851ceab9,
+		0xa7bd81fdc51efa27,
+		0x7e6d5821f6142a93,
+		0xc63914e3241537ef,
+		0xfa6182c65219476d,
+		0x1279f6843efa65d9,
+		0x2dc79a876cfd9547,
+		0x1869b5387aef94b3,
+		0x249817fcbaf5c431,
+		0xc51f4a3cb7f5c18d,
+		0x546df1ccb4d6cfe9,
+		0x48cd756214dafe57,
+		0xcdea28f545fd1ec3,
+		0x31f25cd986f25d41,
+		0xf2cba69871f34b9d,
+		0xd9f5b2698fe76a1b,
+		0xce4fbd7a9deb6a87,
+		0x9e813a5cbadc98e3,
+		0xb8fa4c3fe9dfb861,
+		0x67ce5d3218e2c5bd,
+		0x98be167328d6e53b,
+		0x5abf9e6545d8f3a7,
+		0x26efcb8a97ec2415,
+		0xe1345cfba5de4381,
+		0xf7316b4ba3c251ed,
+		0x1b423d7baec36f4b,
+		0xa27618b1fdc56eb7,
+		0xb49352e21eca9d25,
+		0x4d6821e438bdac91,
+		0x58b69ad4368ea9fd,
+		0x8ab7f46657c2e96b,
+		0x2d74e38a95b4f8d7,
+		0x58e2913dc6da1945,
+		0x1796dbcfe4dc37b1,
+		0x3dc6278fe1bd462f,
+		0x64be5a2432d1648b,
+		0xdeb1cf532eb483f7,
+		0xc97eab254ec8a275,
+		0xe3f158476cb9a2d1,
+		0xcd3275f7678bae3f,
+		0xe6fa92d9857fce9b,
+		0x632de78dc6a3fd19,
+		0x16b24571f4b61d85,
+		0xfa37659325a83be1,
+		0x21fd69c5429b3a5f,
+		0x8f6eabd6519e48cb,
+		0xd9e23af76fb17839,
+		0x3da64f798eb397a5,
+		0xe9daf12dcda8b713,
+		0x8eb6a79eda89b47f,
+		0x586a2941f67ac3eb,
+		0xfd8e43b2178fe259,
+		0x928c45b768a412c5,
+		0xcfadb65a97b85143,
+		0x438e57a762973e8f,
+		0xb4a3f7e981794dfb,
+		0x46b3c2fbaf7e5d69,
+		0xe23978adce718bd5,
+		0x98431d21fd84ab53,
+		0x9a74d6821c65b8af,
+		0x78daec643a69c82d,
+		0x1b2d9874375ce689,
+		0x95abfd39847de6f5,
+		0x178f25adc8a42673,
+		0x3a1cf2ecb28634cf,
+		0xd91a2fcfe189634d,
+		0x159f4dafef5c62b9,
+		0xefbc92a43f6e9127,
+		0x8576cbe54d61af83,
+		0xb3f72ae54a539cdf,
+		0x1d953ca87946bc5d,
+		0xeb35f4d98647ebc9,
+		0xc62913bba65cfb37,
+		0x437f95aed56f1ba3,
+		0xc386a1d1f6845a21,
+		0xe8b6c9a21265487d,
+		0xbf712984314856e9,
+		0x71e352b54f3c9657,
+		0xcfdb54887d4e95c3,
+		0x67c934ebad72c541,
+		0x67ef1cacba54c29d,
+		0xa8392cbed957e21b,
+		0x295ef67ed539ef67,
+		0x96ad41c3275b1fd3,
+		0x3f7869e5476f3e51,
+		0x1b8f4ce873524cad,
+		0x3a1e7bca91456c2b,
+		0xe8752c9baf286b97,
+		0xdb71649bad2b89f3,
+		0x584e7afedc3eb971,
+		0x792b5e31f931b6cd,
+		0xf6ed4ab21a23e64b,
+		0x289ebd643926f4b7,
+		0x4e3a2c99894b1625,
+		0x3b81fd5ba75d3491,
+		0x43c75aba953e42fd,
+		0x9e7ba18ed243716b,
+		0x16285dfcbe146fc7,
+		0xa154ed21fd189e35,
+		0x96a84c743e2b9da1,
+		0xfe19ba55492dab1f,
+		0x398ec6d65921ea7b,
+		0x9e784a176813f9e7,
+		0x75ea1f2dc9281a65,
+		0x92f84e7ed62a38c1,
+		0x52648c3ed51c473f,
+		0x1742d9bfe21f459b,
+		0x8c592eb764238519,
+		0x7e634df32ef4a385,
+		0xc763e2f65cf7a3e1,
+		0x3e8bd1776ae9b15f,
+		0x91ba423656e9cfab,
+		0xae75c34986cfde29,
+		0x842f953dc7f31e95,
+		0x7b38a6ced5e63cf1,
+		0xd28f4c7214e83b6f,
+		0x92e67d1432fa49db,
+		0xf1b37c8651fe6a49,
+		0xb95c83d76fe198b5,
+		0xc7234b1a9de5b823,
+		0x52b3714a9ad6b58f,
+		0x9de8cb2ba7d8c4fb,
+		0x172839c1f7dce369,
+		0x8d9a3c7217bef2d5,
+		0xa32bd6f879e64253,
+		0x58cfea3875d641af,
+		0x6359ad4873c85f1d,
+		0xa37962d981db5e79,
+		0x425936f98fad7ce5,
+		0xae74d51cbed1ac63,
+		0x7a8bc13fe8c3a9bf,
+		0xd4f27a821ab6c93d,
+		0x4763ea8326c8e7a9,
+		0x6cd73b9546bcf817,
+		0xa573d24a96cf1783,
+		0x72468eba96b235df,
+		0x82a71f4cb2c7645d,
+		0xbf2a6c5fe1d863c9,
+		0xb624c35fefbc9237,
+		0x6a8d74532fbe91a3,
+		0xf491d8e43b819def,
+		0x981e57a54a93be6d,
+		0x9bf8a7154785ecd9,
+		0x7ed1a45986a9fc47,
+		0x74e192bba69d1cb3,
+		0x496c31aed6af4b31,
+		0x3876db11f3b2498d,
+		0xb74235a212b457f9,
+		0x1f4a9b7431ca9867,
+		0xf2e361854f8b96d3,
+		0x245abcd87d9eb651,
+		0x4e9136c87b81c3ad,
+		0xa9fe2b5dca95e32b,
+		0x9f72563ed8a6f197,
+		0x53bc148fe79a21f3,
+		0x81a3cb73279c3f61,
+		0xe598b673247f3ebd,
+		0x2edb1f8874926d3b,
+		0xbd3271c981946ca7,
+		0x8f16bdcbaf789b15,
+		0xf16e8dca9e6cba81,
+		0x1d5963ccb95ca7ed,
+		0x896c21a1fa81e75b,
+		0xa73de8621a83f5c7,
+		0x9dcbea754ba91735,
+		0x7ab84f37678b35a1,
+		0x37c68baa968c541f,
+		0x6df8c54ba38f527b,
+		0x4b2e675dc29381e7,
+		0xe2f4ab6dce769f45,
+		0x473ec121fd579eb1,
+		0x6543f7921d59ac2f,
+		0x85df71a3294edc8b,
+		0x9af2bde54951eaf7,
+		0xb31d68fa9a841b75,
+		0xc821ef3cb86739d1,
+		0x6d781eadc56a384f,
+		0xa8d17f9fe25d46ab,
+		0xf71bd36fe15f7629,
+		0x97eacd243172a495,
+		0xcd56b2943e56a4f1,
+		0xafd2ec665d48b26f,
+		0x5cd7eb976a49c1db,
+		0xb312dca8784cdf39,
+		0x16b7d83dc9621fa5,
+		0x2e68f19ed9764e13,
+		0x36b9cd1fe5463c7f,
+		0x2ba3496215384aeb,
+		0x1e86d2c5423d6b59,
+		0x2b3ef757613f79c5,
+		0xed5fa2498f52b943,
+		0x9c1e4b598d24b69f,
+		0x2d7983fbab38c61d,
+		0x16b497feda2be479,
+		0xa64ef9ced82cf3e5,
+		0x3defcab65b712463,
+		0x5a9d8c47683542bf,
+		0x12dafe6a9748613d,
+		0xceb15368732a5f89,
+		0x5f7b6d3a912b7df5,
+		0x92d645ebae1f9d73,
+		0x2c76d3ecbd129acf,
+		0x5d1e8a61fb15ca4d,
+		0x37fe15932c16e8b9,
+		0x1bdc93854a1bf927,
+		0x9c7e12a76a2e1893,
+		0x6e87df5a982136ef,
+		0xa19dfe3cb813456d,
+		0x1b74ef6dc31764d9,
+		0xd67342cfe21b9347,
+		0xe43c268edefc92b3,
+		0xb37569254dfeb231,
+		0xbfe729143ae1bf7d,
+		0x65c13fd548f3cde9,
+		0x3e6f219549e6fd57,
+		0x93efdc1987f91dc3,
+		0xef514b8ba7fd3c41,
+		0xcd7f528cb4ef3a9d,
+		0x39f6a2bfe4f3691b,
+		0xe934f2d212f46987,
+		0xd12fe85541f897e3,
+		0xcb1985f54fecb761,
+		0x12a8467659cea4bd,
+		0x5dc37eb98ad1e43b,
+		0x3ade547cb9d4f2a7,
+		0xf8315bcedae92315,
+		0x5ec842a1f7eb4281,
+		0x3dfc24e215ba3fcd,
+		0xab4d687323cf5e4b,
+		0x48a37bf653e26db7,
+		0x5d3276c981e69c25,
+		0x1837ad276fd7ab91,
+		0x4eb239876cb9a8fd,
+		0x6eb7543dc9aed86b,
+		0xfbca327fe9b1f6d7,
+		0xd6f45ec32bd61845,
+		0x52ce9a1549d836b1,
+		0x23a98db767ca452f,
+		0xb3481ad874cd538b,
+		0x34db5fca93be62f7,
+		0x137a84bdc2d3a175,
+		0x35e49f6cbea59fc1,
+		0x1b329cdfec97ad3f,
+		0xa6bc53921e78cd9b,
+		0xb12769543a8dec19,
+		0x4fc7e2d76ab21c85,
+		0x5b826fe878b53ae1,
+		0xb649d25ba6b7395f,
+		0xa37b219ed3a947cb,
+		0x1abd945fe2bd6739,
+		0x13f4798fe1bf86a5,
+		0xd734c29652c4b613,
+		0x6bfca5732e95b37f,
+		0xac1b76354d87c2eb,
+		0xcab39d776c8be159,
+		0x14d2bf37687cefb5,
+		0x31db2a8dc9a14f23,
+		0x497d35bdc6943d8f,
+		0x5b4c8d9fe3864cfb,
+		0xb3e47592138a5c69,
+		0xf1ab4d84328c7ad5,
+		0x7c31f8d7618f9a53,
+		0x2793f1c65e62b7af,
+		0xead4218a9e85c72d,
+		0x46e5c97cbc67e589,
+		0xa51934edc97ae4f5,
+		0xb3c26971fa9e1573,
+		0xcb4fe193298143cf,
+		0x154962b43895624d,
+		0x27d6a486548761b9,
+		0xb5423fca936a8f17,
+		0x23ec745ba16c9e83,
+		0x9d3ab6c87c4e8bdf,
+		0x614f589bae62cb5d,
+		0xb85aec91fb54eac9,
+		0x946deb721c58fa37,
+		0xe673df954b6c19a3,
+		0x2bc9e3176a7e4921,
+		0x1cd2845ba981467d,
+		0x294ef81cb47365e9,
+		0x4b39a1ced2689457,
+		0xd89c631fe16a94c3,
+		0x9f35d26fef6db341,
+		0x1e3f4ad32e4fb19d,
+		0x9e571db43b42cef9,
+		0xdb6e39765b34fe67,
+		0x54fc6b287a581ed3,
+		0x4bf2139ba96b3d51,
+		0x4c87b13a964e3bad,
+		0x1c943dafe7516a2b,
+		0xc79ad1b1f2436a97,
+		0xda27e842124698f3,
+		0xf8624136524ab871,
+		0xa378d6c54f2ba5cd,
+		0x8b9145f87c2fd54b,
+		0xcdea7b1a9c42f3b7,
+		0x56a29f1edc681425,
+		0x3c6bfd9feb5a4391,
+		0xa3d7815fe73a41fd,
+		0xd59346f2172d4f5b,
+		0xe63d51c545316ec7,
+		0xc53a6bd986249d35,
+		0x5af327e982369ca1,
+		0xfed4c1887e28ba1f,
+		0xd9e5bc698e1cd97b,
+		0x5a18e4ccba1fd8e7,
+		0xbd7162c1fc231965,
+		0xf3de7a554b2637c1,
+		0xda8f97665a19463f,
+		0x4b7c98f7671c549b,
+		0x1d4273cba62e7419,
+		0xa8fed6bdc631a285,
+		0x5b23d47dc435a2e1,
+		0x1da6b4fa9cd5ae4f,
+		0xf2753eaed9f6ceab,
+		0xbd4965821bfaed29,
+		0x6e4abc7328edfc95,
+		0xb9c832f769e23bf1,
+		0xa8fd15e878e43a6f,
+		0xc168edfa95f648db,
+		0x6135afedc3fb6849,
+		0x897b523dc2fd87b5,
+		0x53472fbed1efa723,
+		0xf47e1d6431e2b48f,
+		0xfe456c732ed5c3fb,
+		0xa63c21f54cd8e269,
+		0x7edc12b769caf1d5,
+		0x843dbcfa9ade2153,
+		0x3b41f58ba7c13e9f,
+		0x3c98f16cb7c45e1d,
+		0x57ecb461f3e65d79,
+		0xf256bda213d97be5,
+		0x3a8217c542ed9b63,
+		0x819e273541ce98bf,
+		0x75148d276fb2c83d,
+		0x9fb6d1487dc4e6a9,
+		0x952b7efbabc9f617,
+		0x9a45d1ffeadc1683,
+		0x2954d68fe7ac24df,
+		0xfcd8eba329c1635d,
+		0xb245f6a437d462c9,
+		0x5bfe397765d89137,
+		0xe34587b762ca8f93,
+		0xa975f1e7619a8cef,
+		0xa5691f287e8fac6d,
+		0xc5249f8bac82ebd9,
+		0xb9873adfeca5fb47,
+		0xdc94ea532dc81ab3,
+		0xa3e2f6b659bc4a31,
+		0x578f3be546ae378d,
+		0x91ceb7d987b156f9,
+		0x2ae17cfcb4c39567,
+		0x6f9b83ddc2b795d3,
+		0xa91726bfe2cab451,
+		0xf9d7cbafef7cb2ad,
+		0x42e7ba943e8fd12b,
+		0xafe97cb43c92ef87,
+		0x6cfeb3465b961fe3,
+		0xfadb83c87ba93e61,
+		0xe27b534986793cbd,
+		0xde1749fba68e5c3b,
+		0xcf964b2fe4916ba7,
+		0xcba69d41f3b49a15,
+		0x834bfac323a6b981,
+		0xae51f7d43178a6ed,
+		0xeaf85c243f7cd65b,
+		0x4d8f2bc65b6fe4c7,
+		0x98c2d4fcbda41635,
+		0x4c1bea8edc9734a1,
+		0x432a5cfeda89531f,
+		0x541328e1f68c517b,
+		0x3b9d46c2146c5fd7,
+		0xf1279a4436819e45,
+		0x2ef548b763749db1,
+		0xe1c2d7998176ab2f,
+		0xcbe854d76f47da8b,
+		0x295d76b98c4bd9f7,
+		0x69a7482dcb4ef975,
+		0x3bae9761fb7438d1,
+		0xab4963f21b86374f,
+		0xa8143c73296845ab,
+		0x56d1bf35486c7529,
+		0xe159bf3ba46e8395,
+		0x15e68d9cb572a3f1,
+		0xd53b917dc274b16f,
+		0x34f1827a9e35afcb,
+		0xb678ed51fc48de39,
+		0x3875daf21c3bfda5,
+		0x7a389d265b6f2d13,
+		0x37492b576a523b7f,
+		0x5ebdf898783549eb,
+		0xfdb6185dc7386a59,
+		0xf7c3a94ed43b78c5,
+		0x264f375ed25ea843,
+		0x2574fcdfe241b59f,
+		0x48e2bcf43264c51d,
+		0x985acfd54f26e379,
+		0x5e97b1d76c39f2e5,
+		0xcad5126a9c5d1263,
+		0xda5932e9894e31bf,
+		0x917238acb9435f2d,
+		0x4ea237ced7245e89,
+		0x7c3196dfe4287cf5,
+		0xb3ef9272152b9c73,
+		0x31e97fd5432d89cf,
+		0xd14fe3287231c94d,
+		0x2ea9f4776f13e7b9,
+		0xb6ef573bad16f827,
+		0xb42a657dcd2b1793,
+		0x98d15a4dc91b25ef,
+		0x4f2da51fe91f346d,
+		0xb8c6f7d54a1263d9,
+		0xb7613a965a169247,
+		0xdae4b938762891b3,
+		0x6ae9dfc9853baf21,
+		0xa1f697c9821cae7d,
+		0xf9a53b276adfbce9,
+		0x2cbf6e1babe2fc57,
+		0x5dfa314feaf61bc3,
+		0x5176c4832cf93b41,
+		0x8391ed5327fb389d,
+		0x315c6be547fe581b,
+		0xc27f8e5ba5f19687,
+		0xf317b8cba5f496e3,
+		0xfbd1673dc3f8b561,
+		0xe524136dc1f8a3bd,
+		0xf21376bbafecd23b,
+		0x3fcab4e32dcfe1a7,
+		0x5e96d2487de63215,
+		0x8c94adf65bd63f71,
+		0xd816472658b73ecd,
+		0x3ebc1fa987ea5d4b,
+		0x1a85dc6a94de5cb7,
+		0x23456b8ed6e19b25,
+		0x196a2e51f3e4ba91,
+		0xa95cb72212c5a7fd,
+		0xe24b9c5431e9d76b,
+		0x9dc416843fabe5d7,
+		0x851c69e87cbef645,
+		0xda81f7ba9cd435b1,
+		0xafe3c95cbac7542f,
+		0xfc85426fe7d9528b,
+		0x8345c17fe5cb61f7,
+		0x8f9d34e214bd8f65,
+		0x35c1b29545b29ec1,
+		0xcf49213762b4ac3f,
+		0x8febd59761a5dc9b,
+		0x3721d9e76fa8eb19,
+		0xcab81ef87d9cfa85,
+		0x643b75edcbaf29e1,
+		0x8f24da6feab2385f,
+		0xebac23d219a546cb,
+		0xf7c9438328ca7639,
+		0x8e2d47a436bc84a5,
+		0xe31cd96986bea513,
+		0x6c3b4a2a94a1b27f,
+		0xd4829b6ba294c1eb,
+		0x68af2d9cbe86df49,
+		0xa384c1eedc78feb5,
+		0x78cb2f954d9c1e23,
+		0xac5948f43a7e2c8f,
+		0x1ae9db2659824afb,
+		0xaf249dc878a45b69,
+		0xca981f2cb4a879d5,
+		0xb8ef275ed48ca953,
+		0xd5a7b6edc27d96af,
+		0x61b75941f391c62d,
+		0xdcba91f321a3e489,
+		0x398e16b32d87e3f5,
+		0x47189ca76e9b1473,
+		0x829bcae76a7b32cf,
+		0x61fde58a9a8f514d,
+		0x1d52b84dc8725fa9,
+		0x3275869ed6958e17,
+		0x2d9183e1f4679d83,
+		0x872c4f5213598adf,
+		0xfbe61d74326eba5d,
+		0x126f7b965261e8c9,
+		0xeb53fd198e64f937,
+		0x678adc9cbe6718a3,
+		0x47bf89ddcd7b4821,
+		0x5d39fa2fea6c357d,
+		0xfbc1634ed86f54e9,
+		0xc48a39e21b829357,
+		0x1c3d85f5487692c3,
+		0x6f57d4e98679b241,
+		0xd1ca85276249af8d,
+		0xdf6e5318714cbdf9,
+		0x4d7e39cbae41fd67,
+		0x2d31648cbe651cd3,
+		0xc8e4b3d1fd683c51,
+		0x8d7b29e21c4839ad,
+		0x267afe843a4d592b,
+		0x31bd62e54a3f5897,
+		0xb8dc62fba85297f3,
+		0x17fe93ddc845b671,
+		0xa8c4f3dcb237a4cd,
+		0xfa38b19fe15ad34b,
+		0xd14275edcf3de2b7,
+		0xf89a4e776f741325,
+		0xead248187e564291,
+		0x7d369cb65a263fed,
+		0xb98d3c287a294e5b,
+		0xb8ad713a982b5dc7,
+		0x85c2e37cb72f8c35,
+		0xf3c764dfe6439ba1,
+		0xc5b7f28fe435b91f,
+		0x5a2473921326d87b,
+		0x362fde75412ad6e7,
+		0x9ed13ba54e1df765,
+		0xf824db7a9e4236c1,
+		0x2c6e973bac16453f,
+		0x5a692f1edc17539b,
+		0x56dc413fea2b7319,
+		0xe8c23961f72d9185,
+		0xa1fe4b84362e8fd1,
+		0x1af6c8765612ad4f,
+		0x543b81a76314cdab,
+		0x9a2475398317ec29,
+		0x2a971f476de8fb95,
+		0x2e4793a98bec2af1,
+		0x2941678cbade296f,
+		0x45d961afe9f247db,
+		0xfa5d34e21bf56749,
+		0x34e1796327f986b5,
+		0xc1426a7657fca623,
+		0x5d72b38764eda38f,
+		0x2c1463d984e1c2fb,
+		0x7f865adcb2f4e169,
+		0x132f7dea9db6efc5,
+		0xb7a4968fecda1f43,
+		0xcf5d8a721acb2d9f,
+		0xdb47f9a439bf4c1d,
+		0x719ead354ae25c79,
+		0x4879fad768d47ae5,
+		0x7f9a3e4cb5e89a63,
+		0xc3de1ba983da97bf,
+		0xc247d1eba2ceb73d,
+		0x5cd14e31f2d1e5a9,
+		0xed8214b432d4f517,
+		0x126a7bd54fd91583,
+		0x249ef7c65cb923df,
+		0x63d4e5287abc425d,
+		0x9cd43ea878bf51c9,
+		0xec98124cb9c38f27,
+		0x93b6a27ed6c58e93,
+		0xbce23a6ed3a68bef,
+		0x9e5c8b3213c9ab6d,
+		0xcae1f8d4328ecad9,
+		0x8ab4f59762c1fa47,
+		0x28164bc87fc519b3,
+		0xef58c62baec84931,
+		0xfe647ada9cba368d,
+		0xb9365e7ed8ac45f9,
+		0xdb856f1fe9bf8467,
+		0xa5dbf43218b294d3,
+		0xa56ce12548c7b351,
+		0x4a23f6b65497b1ad,
+		0x1fb789c76389cf1b,
+		0x57ae9bc7619cde87,
+		0x67e9c23baf921de3,
+		0x6735a9fdcea53d61,
+		0x74c912b1fc863abd,
+		0xac72f5821d895a3b,
+		0x9a876ce32b8d59a7,
+		0xdb9e365547af8915,
+		0x7c526f3a96a3b781,
+		0x3db6af5a9384a5ed,
+		0x9e32b65dc298d45b,
+		0x4cb9375ed18ae3c7,
+		0x671a395dce8df235,
+		0x41cfdb365f9243a1,
+		0x38b7ef954d96521f,
+		0x4df2e6743c874f6b,
+		0xb167c8254a695ed7,
+		0xd782bfcba97c8d45,
+		0x49b387fba56f8cb1,
+		0xea17f96ed573ba2f,
+		0x3e86ca91f264d98b,
+		0x39b6d7821256d8f7,
+		0xe752f4c4316bf875,
+		0x179c8d365f6e27d1,
+		0xfb682a4a9d81364f,
+		0x6c258baa9d7354ab,
+		0x74a5b13edc687429,
+		0xf1426cdfea6b8295,
+		0x1b34c98fe76c92f1,
+		0x863eb4d2164d9e5f,
+		0x7fce6a943452aecb,
+		0x4b839c287265ed39,
+		0xe7ab2c598147fca5,
+		0x64ed3caa9f6b2c13,
+		0xe563fa4a9c4d2a7f,
+		0x4537b6aedc5148eb,
+		0xae5cd421fc436859,
+		0x79df58621b3687c5,
+		0x8f9bed73295ba743,
+		0x18dfb346563ca49f,
+		0xe9527369865fb41d,
+		0x97fe36dcb453e279,
+		0x5814f62cb246f1e5,
+		0x496f735edf5a2163,
+		0x1b6f3eaedc392eaf,
+		0xc7264fe21b3c4e2d,
+		0x831f52b54c315d89,
+		0x4fe1d8b76a237bf5,
+		0x59ead6298a269b73,
+		0x2743618ba52798cf,
+		0x96de78bba52cb84d,
+		0x965f3a8dc32fd6b9,
+		0xaf253c6fe143f627,
+		0xd2fa39e652471693,
+		0xd1f98ea65d1824ef,
+		0xc39d86a87e1b436d,
+		0x2d6eb9487b1e52d9,
+		0xd1659f4cbc329147,
+		0x36d9b8edc9148fa3,
+		0x7a8f941ed837ae21,
+		0xaed798c1f418ac7d,
+		0xb9ac8413241acbe9,
+		0xf2913675431feb57,
+		0xc9fd45b985241ac3,
+		0xf3241d798ef63a41,
+		0x2a1645b98cf6379d,
+		0x5b1cdeaa9cfa571b,
+		0x56e812ddcafd6587,
+		0xad64bf1dc7df85e3,
+		0xc197836329f3b461,
+		0x6ab412c436f5a2bd,
+		0x298b4fe765f8d13b,
+		0x763c19f652eadf97,
+		0xc83fbae871cbedf3,
+		0x3f68becbafd23e71,
+		0xb6fc5d7a9ae43bcd,
+		0xa125be41fae75c4b,
+		0xc35678f21ce95ab7,
+		0x84d5cb7439ed8a25,
+		0xecf29a3546dfa891,
+		0x2dba95c875c2a6fd,
+		0xbc4572ea93e4d56b,
+		0x2cb6145ba2c8e4d7,
+		0x7f325eddc1dbf345,
+		0x4c38fabedfce24b1,
+		0xfe7c61954ec1532f,
+		0xca98fde43ed4518b,
+		0x9cb27e443ab65fe7,
+		0x586fb2d549ca8e65,
+		0xd1a654b876ab8dc1,
+		0xa3b9d75985ae9b3f,
+		0x54dc27afe4c2da9b,
+		0x65418d21f3c5ea19,
+		0xc3bead9212c7f985,
+		0xc89f4a2653cb28e1,
+		0xf791ab254ead275f,
+		0xbd8f69a87ea145cb,
+		0xbd82c63badc47539,
+		0xc731ba9edbc783a5,
+		0x64a21cdfe8cba413,
+		0xaf9d15cfe59ca17f,
+		0x28bf3592147e9fdb,
+		0x2da8c76435a2de49,
+		0x2ea174576294fdb5,
+		0x432e71d984b91d23,
+		0xc8479eb76e7a2b8f,
+		0x397c4ad98c7d39fb,
+		0xa1547c3fedb15a69,
+		0x7c5edb21fba378d5,
+		0x3e6daf221cb7a853,
+		0x4b81dea3267895af,
+		0xaf1269d5468cb52d,
+		0xefd8a9b7647fd389,
+		0x9e18f35ba493e2f5,
+		0x68579cbed4b81273,
+		0xe16d952cbe7831cf,
+		0x642a1f8fec7a4f3d,
+		0x4a879b221c6d4ea9,
+		0xf15a67c54c928d17,
+		0xbc792a465b749c83,
+		0x5db12ca5476589df,
+		0x82d54f3ba468b95d,
+		0xecb7863ba35bd7c9,
+		0xea9d16bdc26fe837,
+		0xe6c7ba81f29417a3,
+		0x18ad6cf653a84721,
+		0x5d84f3732f69347d,
+		0x6b8d91254d6b53e9,
+		0x615fd73a9c6e8257,
+		0x2e17968bab7291c3,
+		0xa9bd64edc975af31,
+		0x4725d9bdc645ae8d,
+		0xfd8c3a4fe347bcf9,
+		0xc28957f2134bec67,
+		0xc12f7565425efad3,
+		0xfae5b63a92843b51,
+		0x23cedb587f4538ad,
+		0x2e83714bae49582b,
+		0xcf2e734cbd3c5697,
+		0xa2d3b49dca4d86f3,
+		0x4576c811fa62b571,
+		0xc5fa6e421854a3cd,
+		0x5d4af6843857d24b,
+		0x7cb2f3d76549e1b7,
+		0xb2913d49834bef15,
+		0x8cf461dba35e2f81,
+		0xf5a6c83a9f423ced,
+		0xa723fb4dce264d5b,
+		0x2796ced1fd285bc7,
+		0xca834bf21d2c8b35,
+		0x5ec29a354b3e89a1,
+		0xad1c5f776942b81f,
+		0xfb36a8ca9823d67b,
+		0x2fb634eba426d5e7,
+		0x7a519bfdc32af465,
+		0xbc7ad18fe34d25c1,
+		0x165e2a8dcd1e243f,
+		0xdb193c854f13529b,
+		0x9278a3c65e367219,
+		0x3d5621854c198f75,
+		0x94bc12d7692a8ed1,
+		0xac639419871d9c4f,
+		0x7a523e1a9621dcab,
+		0xe23749aed614eb29,
+		0xf8ac3b2fe316fa95,
+		0x63de7af5453a29f1,
+		0xfb29a166531c286f,
+		0x36d812954cfe36db,
+		0xae5c34298df17649,
+		0x7cdf3a4a9cf384b5,
+		0x1e6df53dcbf8a523,
+		0xe784ba2dc6e9a28f,
+		0x5cf6a41ed5eca1fb,
+		0x56dcfe2214decf59,
+		0xbe5fca8434d2fec5,
+		0x7f2b3da985f71e43,
+		0x7fe4153761e72c9f,
+		0xe38c59d87fea4b1d,
+		0x71645ac98cde4b79,
+		0xa89e5f6dcbd179e5,
+		0xe49ca7d1fbe4a963,
+		0xce5d4bf218d596bf,
+		0xc6d531e327e9b63d,
+		0x41758d2435ecd4a9,
+		0x43c9fed985cfe417,
+		0x48ea3d2cb6e51483,
+		0x378bf12ba1c632df,
+		0xa9752e6cbfc9415d,
+		0xd8165abfedca4fb9,
+		0x92647f821cbd6e27,
+		0x2cbd7a854bc18d93,
+		0xba3d6e8547b38aef,
+		0xfa9715d547c5ba6d,
+		0xd8439c1764b7c8d9,
+		0x8e1cb7fba3bce947,
+		0x731652ddc2aef7b3,
+		0xd219bca1f2d54831,
+		0xbf674e1321c6358d,
+		0xdb36c8732eb854f9,
+		0x9e1baf254ebc8367,
+		0x3fb128576bae82d3,
+		0x1ae3485a9ac3b251,
+		0xedc2a97cb683af9d,
+		0x638c2f4ed596ce1b,
+		0x2a983571f3a9ed87,
+		0x86754392148afbe3,
+		0x6b3de9c654af2c61,
+		0x1ab459c761a239bd,
+		0x1de398a87fa6593b,
+		0xe9a735176eb958a7,
+		0x2538c1fcbdac9815,
+		0x931ba84edb9ea681,
+		0xceb56171f781a4ed,
+		0x28ca9f721894d35b,
+		0x62e15f843596e2c7,
+		0x6a1ed238769af135,
+		0x2bef9d49859d32a1,
+		0x73614b99817c2efd,
+		0x1cb6897baf824e6b,
+		0xce3971acbe845cd7,
+		0x4936e171fd798c45,
+		0x9a681c532d6c8ab1,
+		0xd8e941a4386da92f,
+		0xade2cb854961d78b,
+		0xc5483a1a9583d6f7,
+		0x16fe28dcb398f675,
+		0x12fd78adc48a26d1,
+		0x375698fed18c254f,
+		0xc7b452eede6f43ab,
+		0x792c54f21f847329,
+		0x7de91c643e768195,
+		0x179a25e54b578fe1,
+		0xb132e797684a9d5f,
+		0xab42f938764e9dcb,
+		0xf53e1accb761ec39,
+		0x318f6c7ed463fba5,
+		0x34b1a971f5782b13,
+		0xe42765d2135a297f,
+		0x51efac95415c37eb,
+		0xcbd4ae776e3f4759,
+		0xac54df3a9e4286c5,
+		0x7ac38e5cbd57a643,
+		0xa6b5d8edcb47a39f,
+		0x6158472fe85ab31d,
+		0x7be65c91f64ed179,
+		0x754d1fc32741efd5,
+		0x1de7936548761f53,
+		0x2fe3d4b873462daf,
+		0xce651df981594c2d,
+		0xe93c24b87f2d4c89,
+		0x164a23ea9c2e6af5,
+		0xfda251bfed429a73,
+		0x92613dafea2497cf,
+		0xe9bf86c21a28b74d,
+		0xbd857c64372ad5b9,
+		0x982ed717683de527,
+		0x83d921acb8621593,
+		0x8593fbeba64523ef,
+		0x47d3f28dc138426d,
+		0x815e9a4dcf2a51d9,
+		0x876a3f9fed1c6f37,
+		0xcae9d1832c1f7ea3,
+		0x372cf8576c34ad21,
+		0x267e3ba65914ab7d,
+		0xd24c69865716cae9,
+		0xfa76eb3a961bea57,
+		0xec6f135ba51df8c3,
+		0x53cb147fe7523941,
+		0x391a85b1f214369d,
+		0xa51d3e754328561b,
+		0x6b71acf32efa6487,
+		0xbcd384965cfb84e3,
+		0xd3fe98587bfea361,
+		0xceb85a6878f2a1bd,
+		0x361ae84a97e4cf2b,
+		0x52f48e9cb4f5de97,
+		0x4de9af1cb4d8ecf3,
+		0x61a7db2435fc2d71,
+		0x1fc8e32543ef2acd,
+		0xefb856c871f25a4b,
+		0x21c95fe76fe459b7,
+		0xca91e5487dea8925,
+		0x5a1d93798beca791,
+		0xf239d15ba7bc95fd,
+		0x62a5ed71f8e1d46b,
+		0x98e6f37218c4e3d7,
+		0x4f1bc2e437d8f245,
+		0x28c564a876ea23b1,
+		0xf2a15cd985dc412f,
+		0xb5cae21981ce3f7b,
+		0xeb7f4dca9fb25de7,
+		0xc68fad4cbec48d65,
+		0x4592e871fad78bc1,
+		0x5deafc3218cb9a3f,
+		0xdfce876326aec89b,
+		0x74e6f39657c2e819,
+		0xf723e16a96c3f785,
+		0x2f6384eba5c827e1,
+		0x873fda2cb3ca265f,
+		0x4af8951fe1ad34cb,
+		0x3c74f1bedebf6439,
+		0x69c8e3d21fc382a5,
+		0x14873da65ec7a213,
+		0x7bdfc5243ba79e6f,
+		0xcdb6293546789edb,
+		0xd162cea8768ecd49,
+		0x1598bd4ba691fcb5,
+		0xdab9432fe7b61c23,
+		0x14f6853fe3b62a8f,
+		0xf2acd97212a938fb,
+		0xc78bdef431bd4869,
+		0x7e8269443e9f67d5,
+		0x4c2e51798eb2a753,
+		0xb2496ce87c8594af,
+		0xb4fa5d7dca98b42d,
+		0xf3762b8fe67bd289,
+		0x9a416dffe68cd1f5,
+		0x86c27fb659b42173,
+		0x7e981bc435842ebf,
+		0x75cbef9762974e3d,
+		0xa438ce9761784da9,
+		0x18f2563a9f8d6c17,
+		0x1d479b6bad6f7b83,
+		0x7a96fb5dcb6298df,
+		0x2d98be61fa74b85d,
+		0x8abde9f21a57d6c9,
+		0xb98de5a3298be637,
+		0x1368f9c5467df5a3,
+		0x5f3a841cb8a34621,
+		0x69af8c7cb295437d,
+		0x925ae14dc18752e9,
+		0xc7e58fbedf6b8157,
+		0x6a2bd18fed5c7fb3,
+		0xdb65a9e32c6f9e31,
+		0x16d42c943b52ac8d,
+		0x198fd5e43854cbf9,
+		0xf2be67365948eb67,
+		0x3a1256b9865af9d3,
+		0x9e63d5fdc67e2a51,
+		0x56f4327fe46137ad,
+		0x198acb21f184572b,
+		0x98574af321486597,
+		0xfe6b95c32e4a85f3,
+		0x9f3587176e5da471,
+		0xa97e12376a4f92cd,
+		0xb78de6aa9a63d14b,
+		0x28adc9ecb834dfa7,
+		0x78d63fadc748fe15,
+		0x46e983a1f65b2e81,
+		0xaf7e5d32154c2bed,
+		0xb6df8ec873614c5b,
+		0xd53ae47981435ac7,
+		0x17235dfa9f278a35,
+		0x1b63ae287e3b98a1,
+		0x4b37c81a9b3ca71f,
+		0xf782ea5ed92fc57b,
+		0xb48237e1f932d4e7,
+		0xa9dc84721a27f365,
+		0x71ebc4f7685924c1,
+		0x4d73be69875b423f,
+		0x5ca31d29853e419b,
+		0x86c9f72ba2315ef7,
+		0x283e41acbf138e75,
+		0xc48d21acbe268cd1,
+		0x15f9437fec189b4f,
+		0x46e9c833281dc9ab,
+		0x81ed3b55481fda29,
+		0x12a3eb876a12f895,
+		0xf5e2986ba93628f1,
+		0xc72d543cb519276f,
+		0xe43f852dc41a35db,
+		0xa53ec82ed21e6549,
+		0x4fb31d8dcdef73b5,
+		0xe42bda621ef5a423,
+		0xb6798ed43ce5a18f,
+		0x25dbc91438d69feb,
+		0xcfed26a547face59,
+		0x2afe546876fbedc5,
+		0x8a4f967cb8f21d43,
+		0x7fea35ddc5e42b9f,
+		0xf47165dfe3f74a1d,
+		0x4562dfc212fb4a79,
+		0x76d295c431fc68e5,
+		0x7583ad654edf9863,
+		0x15cfa4276cd295bf,
+		0xb35ea7298ae6b53d,
+		0x6397ed2cb8e7d3a9,
+		0x5d728efdc8dbe317,
+		0x5689bfdfe6cdf183,
+		0xcd3f586547c231df,
+		0xcf719a6326c53f4d,
+		0xe396c8b652d64eb9,
+		0x6bd74c9981ea6d27,
+		0xf1cd29a76fbd7c93,
+		0x38e724176bad79ef,
+		0xb928a64feac2b96d,
+		0x124938b1f8b4c7d9,
+		0xec9756a21ac9e847,
+		0x1b4a6e9327caf6b3,
+		0x85cbd49768ce2731,
+		0xb56fe34a96c1348d,
+		0x419e2d5ba2c453f9,
+		0x6ef9b8adc1d98267,
+		0xb1af8e2dcfba81d3,
+		0x5fd7268fedac9f41,
+		0x54d867921b7f8e9d,
+		0x3af1b2754a93cd1b,
+		0xb74c689439a4ec87,
+		0x6b8f9cd65697fae3,
+		0x2df4378a97ac2b61,
+		0x427369cba49e28bd,
+		0xd128365fe4c1583b,
+		0xabd72411f1c356a7,
+		0xfc4e5d7432c89715,
+		0x482abdc43f9ba581,
+		0xfe6718a54c7b93ed,
+		0x24def8376a8fc25b,
+		0xf4a216798a93e1c7,
+		0xe2a9381cb896ef25,
+		0x43c27b5ed6a82f91,
+		0xb951d67fe4792cfd,
+		0x2f695742148e3d6b,
+		0x125d3f7543915bd7,
+		0xc92b3a4871a38b45,
+		0xa631b4c65f7689b1,
+		0xf26bc4987d69a82f,
+		0xe53bfd7a9a5dc68b,
+		0x67145e9cb96ec5f7,
+		0x62fab4dfea92f475,
+		0x7194b6843a9725d1,
+		0x9c461b365789234f,
+		0x38d24197657c42ab,
+		0xb2138fdba48e6129,
+		0x7f23915cb2917f85,
+		0xf89eb14baf648de1,
+		0x78a52decbd469c5f,
+		0x65813ad1fd479acb,
+		0x83acd9221a5cdb39,
+		0x7f835463284fe9a5,
+		0xd6c5a1287b852a13,
+		0xf8dc2e1ba965287f,
+		0xe25f67dba45836eb,
+		0xe9f7bcaed27c4659,
+		0x51f69aeed16e74c5,
+		0x732df89fef71a543,
+		0x8b725c621e54a29f,
+		0x23c5eaf54e57b21d,
+		0xc19357854b38cf69,
+		0x147bf937683aced5,
+		0x14c257ea984efd53,
+		0xae584cdcb7532caf,
+		0xb2a6459fe7564b2d,
+		0x526b8d71f2374b89,
+		0x3c9f2ea2123b69f5,
+		0x9326cb16514e8973,
+		0x24cb7fe65e3196cf,
+		0xc96ab4198e23b64d,
+		0x3b976a298c26d4b9,
+		0x7a35169dcb3ae427,
+		0x4ec1296ed84cf293,
+		0xae21834dc74d12ef,
+		0x3fc9ead32953416d,
+		0x29cbf86436254fc9,
+		0x6d251cb984296e37,
+		0xe59436f9812b7da3,
+		0x7c914d598f3e9c21,
+		0x85d746fa9e21ba7d,
+		0xbcf3567edb13c8e9,
+		0x16dca971fb16e957,
+		0xbd9ae4f32a19f7c3,
+		0xf92adce76a3d2841,
+		0x8d5b9327671f259d,
+		0x7b1846dba823651b,
+		0xd14673bdc4156387,
+		0x647b13adc41982e3,
+		0xd28f46adcefba261,
+		0xafb176ddc9eb8fad,
+		0xc83def5219dfae2b,
+		0xc168db943af2ed97,
+		0x21c936f548d5ebf3,
+		0x54b9238768f92c71,
+		0x2ba4e6f875fa29cd,
+		0x6871bf9ba5fe394b,
+		0x43612bfed3f158b7,
+		0x26134f7fe1f49825,
+		0xfdec978432f7a691,
+		0x371ad9c32ec894fd,
+		0xc12e97554aedc36b,
+		0x8c16742659bfc2d7,
+		0xc472d1ea9ad3f145,
+		0x9e7385ddc9e732b1,
+		0x76d1a28cb6c83e1f,
+		0x2aec5171f4da3e7b,
+		0x9d7f8eb213bd4ce7,
+		0xbe5263d543e18c65,
+		0x32a5974762e48ac1,
+		0xfc6d31a65ec6a93f,
+		0x94ce23f65ed8c79b,
+		0xf6e975498abcd719,
+		0xfb7e619dc9bfe685,
+		0x98572b61f9c426e1,
+		0x6bed532219c7245f,
+		0x6375fbe326d843cb,
+		0xa4f69d1875dc6239,
+		0x6b2f7ea983ce71a5,
+		0xfa3b4c2a93b28ef1,
+		0x4eac5d998ea39d6f,
+		0xde8b65cbae859cdb,
+		0xae1b8521fba8dc49,
+		0xbe376d92198ceab5,
+		0x39d187e5489efa23,
+		0x38cd4f9657b3298f,
+		0x4abc637986a537fb,
+		0x9e34d58cb3ca4769,
+		0xa78b62fdc2ab76d5,
+		0x1b28c53ed1be9653,
+		0x725e1bcede8193af,
+		0x2a8657421f95b32d,
+		0xf4d51c643ea6d189,
+		0xe81c76443a78cfe5,
+		0xbfe6c416598bfe63,
+		0xa15d97b9867e1dbf,
+		0x136c5afcb7924c3d,
+		0x23fad49fe3854ca9,
+		0x76823cd1f3a96b17,
+		0x84f3d562129c7a83,
+		0xb4c9f584316c87df,
+		0xb9f56d354f81b75d,
+		0xda3859476e73d5c9,
+		0x9ce642dbac98e537,
+		0xdb2fe96dcb79f4a3,
+		0xfd32ca7fea9d3521,
+		0xd254c67fe68f327d,
+		0xd7abe983278351e9,
+		0x9d1c3ea323956f47,
+		0x486e21c652687eb3,
+		0xea341679827b9d31,
+		0x3127f9c76f4e9b8d,
+		0x4bfe91598d51caf9,
+		0x3e58726edc53ea67,
+		0x7531f94fea56f8d3,
+		0xc46e59d43c7b2951,
+		0xe8a19644385c26ad,
+		0x8eb3f4d6587f462b,
+		0xe79c561cb5826497,
+		0xedf7a5ccb27684f3,
+		0x3854efbed269a371,
+		0x3ac2516cbf4a91cd,
+		0xfc361b9fec4daf3b,
+		0x6791ad332c41dea7,
+		0xdae976843b64fd15,
+		0x27f8be576b572d81,
+		0xf3429e8767482aed,
+		0xf12e4cda974d3a5b,
+		0xe5f1c47cb53f49c7,
+		0xf74b628fe4628935,
+		0x1bd74321f24597a1,
+		0x1cae49f43248a61f,
+		0x54c172643f2ac47b,
+		0x2fd8a1e65b2dc3e7,
+		0xdb7af14a9c41f265,
+		0x7b51e86bab5623c1,
+		0x95f62e8dca58413f,
+		0xa8c9734ed6293f8b,
+		0x893276cfe52b4df7,
+		0x59b673a2142f6d75,
+		0x8d759ea765438bd1,
+		0x196edba871259a4f,
+		0x632987465f16c8ab,
+		0xf849e1c87e1bd829,
+		0x71932e6bab1de795,
+		0x9f715a2edb4327f1,
+		0xbaf7168fea14256f,
+		0xe4c5f163291734db,
+		0x1e3a97b6581b6349,
+		0x12c9ba79861d72b5,
+		0x41cdef7ba64f9123,
+		0xd4271ecba3129e7f,
+		0x5ceb64387cf39deb,
+		0x281569fbabf6cd59,
+		0x3a7124bed9f8ebc5,
+		0x46dc2e5219ecfb43,
+		0xdeb2698437de1a9f,
+		0x5c1a978768f3491d,
+		0xec624b7ba6f54879,
+		0xc2d6745ba3f967e5,
+		0xa5d3f6ecb2fc9763,
+		0x895f7d2ba1ed84bf,
+		0x49ba1f6dcfe1b43d,
+		0xac5836b21fe4d2a9,
+		0xc8faeb654cd8e217,
+		0x15fce7254ac9ef73,
+		0x4ef7a2d657ba1ecf,
+		0x3d7154a987bf2e4d,
+		0x5bdf632ba6e24db9,
+		0x9bf41c6ed4e56c27,
+		0xbc5a6381f2e87b93,
+		0xd297e4c212ca78ef,
+		0xa7148cd431cea86d,
+		0x7189ec654fb1c6d9,
+		0x49523f698dc3e647,
+		0xef2679a98ac7f5b3,
+		0xa37ed95dcadb2631,
+		0x4c5d92bfe7bc238d,
+		0x7ef2c65ed6be42f9,
+		0x6f81a4d329d38167,
+		0xef16783324b57fc3,
+		0xc49e7fb763c89e41,
+		0xe2a6df9651ba8c9d,
+		0x9bc3d5a76f8eac1b,
+		0x27f5bd4a9da1eb87,
+		0x469385ddcba4f9e3,
+		0x85369711fbc82a61,
+		0xda5ef3c218a927bd,
+		0xf1d359a328ad473b,
+		0x624ed71436bf45a7,
+		0x67c98deba7c39615,
+		0x6c3d47fcb3c6a481,
+		0xa678493cb1a792ed,
+		0xebf491aedf8ac15b,
+		0x981423ffea6dcfb7,
+		0x7db25fc43c91fe25,
+		0x1e9b3af54ca52e91,
+		0xc5af61e549862bfd,
+		0xc8d31ef657893c6b,
+		0xc6df84ea958c4ad7,
+		0x613279ddc39f7a45,
+		0x8fa6c15fe4a398b1,
+		0x54196f8fe195a72f,
+		0xad6435c32197c58b,
+		0x3a68c5e32e6ac4f7,
+		0x791523f54c8de375,
+		0x5a73c2998c9324d1,
+		0xe183cf7bab96324f,
+		0xb7e16a4ed98741ab,
+		0x15a43c9ed67a5f19,
+		0xea426c91f37c6e85,
+		0x4ba63853246f7ce1,
+		0x1ced2ba543729b5f,
+		0x34e2a8965164a9cb,
+		0xf38eb4a76f57da39,
+		0xf41d8eb87d4be8a5,
+		0x716df45bab6df813,
+		0x3684eb9edb81267f,
+		0x8c752ba1f97435eb,
+		0x3ec6f4221b786459,
+		0x147f3583286a73c5,
+		0x9aed12b9867d9243,
+		0xa56bf988735e819f,
+		0x731fe5c981529efb,
+		0xeb74cf9baf34ce69,
+		0xb31d6c8bab37ecd5,
+		0x91d485ffeb4afc53,
+		0x8ab735f3294d1baf,
+		0x19ed63765b614a2d,
+		0xf943b7276b534a89,
+		0xbf9d854ba93768f5,
+		0x9ae574bdc54b9873,
+		0xf3e9162ba23b85cf,
+		0xa162d57dc13fa54d,
+		0xb95a184fef42d3b9,
+		0xe32749c21f46e327,
+		0x4a6fc2e65d48f193,
+		0x43895a776b4a21ef,
+		0xaef9b148793c2f5d,
+		0x7c3e465ba8314ec9,
+		0x7a541dbdc9246d37,
+		0x8b1ad7cfe5267ca3,
+		0x8eab3591f54a9b21,
+		0xa926ed32132ca97d,
+		0xfc935db5412fb7e9,
+		0x83dae1276f12e857,
+		0x5e946cb98d15f6c3,
+		0x264fe97cbd3a2741,
+		0xb16ef39dca1b249d,
+		0x564f2ceed92e541b,
+		0x5846aed1fa316287,
+		0x8cbfa7e5492581e3,
+		0x37afd98546279f51,
+		0x4dc3a8b653178ead,
+		0xc8a1e5f8731cad2b,
+		0xce47fb265bfedc97,
+		0x7a321de98bd1eaf3,
+		0xfac4eb1edcf52b71,
+		0xda65192fe9f628cd,
+		0xdae89b7219fa384b,
+		0xd1567a3328fd46b7,
+		0xa3961cf546ef8725,
+		0xa37195f986f3a591,
+		0x9e3f2a6982e593fd,
+		0x2ed5fb4ba1f8c26b,
+		0x276c154a9feac1d7,
+		0x267f51cfeabcdf35,
+		0xef76a8954cd32fa1,
+		0x7cf19a354ac53d1f,
+		0x2f38ad6549e63d7b,
+		0xb964a7f656d94be7,
+		0xc6a3271a94ed7b65,
+		0x31647cdba4df79c1,
+		0x9d68e32dc4d2a83f,
+		0x2647a3c1f1e4c69b,
+		0x7df581a432e8d619,
+		0x496f3c532fcbe485,
+		0x6cef79a65bacf4e1,
+		0xf517c6298bc1235f,
+		0x729536a989d542cb,
+		0xe52936adcad86139,
+		0x2fbe154ed4ca6f95,
+		0x12a9745fe4ab7df1,
+		0x874cd93213ae8c6f,
+		0xd9eb278543c29adb,
+		0xe21f37d761c5db49,
+		0xc892d5654fa7e9b5,
+		0x46189eb87dabf923,
+		0xa4b1732a9bad178f,
+		0x546ca7bed9a136fb,
+		0xc1792db1fac34569,
+		0xb6a5d84219b874d5,
+		0xef7c9b4327cb9453,
+		0x3df719c6549c82af,
+		0xf8ca63e8749fa12d,
+		0x5bd2ce6981a2cf79,
+		0xd4f8a23a9f84cde5,
+		0xd931c6fcbc98fd63,
+		0xf871d92fea791cbf,
+		0xbd5c9f421a8e2b3d,
+		0x2c7f64e43c814ba9,
+		0xa13b72e659b46a17,
+		0x48257c6ba5b67983,
+		0xd17fe45ba37986df,
+		0xd5684a3cb28ca65d,
+		0x1386297ed17fb4c9,
+		0xc9e2b47edf92e437,
+		0x5d3ef8a21e86f2a3,
+		0x83759e176e9a3421,
+		0x961cbe765c8b317d,
+		0x83dae1f6586c3fd9,
+		0x4a98fe6cba916e47,
+		0x2a1e459dc6847db3,
+		0xa8132c7fe5879c31,
+		0x213e57b1f2579a8d,
+		0x83ba9d72125cb8f9,
+		0x5a1768c4315fd967,
+		0xa2b7d6f65e62f7d3,
+		0x64e8712bae972851,
+		0x163fdcaa9c6825ad,
+		0xc48f25eeda7c452b,
+		0x3b895caeda6e5397,
+		0x4d5c6fafe97182f3,
+		0xb8c1ea943985a271,
+		0x73ce5bf323458fbd,
+		0x94351e876258ae3b,
+		0x4a5cd287614bcda7,
+		0x6f15cb398d4fec15,
+		0x614e3a2cbe642c81,
+		0x274b35edcb4529ed,
+		0xe84db361fc48395b,
+		0xc98ad7621a3b48c7,
+		0x456891b32a4e7835,
+		0x1368bc28785296a1,
+		0x62bfa78a9764a51f,
+		0x7e8c642ba246c37b,
+		0x71d9a3ecb149c2e7,
+		0xe61d85ccbf3ce165,
+		0xb683a9fdca3defb1,
+		0xb93875621c543e2f,
+		0x67dfb1254c253e8b,
+		0x7c914df65a284cf7,
+		0xe2df5739892b6c75,
+		0x476bfe5a963e7ad1,
+		0x7e15a2bdc631a94f,
+		0xb2f3dc6fe423c7ab,
+		0x395cab71f136d729,
+		0xcd125894312ae695,
+		0x5fe7a9d54d2be5f1,
+		0x4dfc5e287c2e146f,
+		0x52e6cf198c1243db,
+		0x472a3fccbc176249,
+		0x375219aeda2971b5,
+		0xf248b37ed72b8f13,
+		0x6431f52fe41c8d7f,
+		0xa6c7158435219ceb,
+		0xd14728576413dc59,
+		0xd1b52cf87216eac5,
+		0x4e28c7a76de8fa43,
+		0xafd285176ceb189f,
+		0xe4b5ac8a9afe381d,
+		0xc731e48edbf14679,
+		0x13f9b54ed9f376e5,
+		0x94df85621af89563,
+		0xd8a5e9b325e983bf,
+		0x137c92e765fca23d,
+		0xd7a913e763efc1a9,
+		0x47b2c6a981d2cef5,
+		0x2d8cb31a9dc5fe73,
+		0xba1583ca9ab71dcf,
+		0xeba84c31f9ea2c4d,
+		0xa65bf97218de3cb9,
+		0xba7385f54ae16b27,
+		0x89b41ca658e47a93,
+		0x297fba5764c587ef,
+		0xc6da132983e9a76d,
+		0x4ab7259982ecb5d9,
+		0xde6ac39cb1cfd547,
+		0x3b15a94edec2f4b3,
+		0x7c69e5b54fd82531,
+		0x7b63ec854ec9328d,
+		0xac8496265acb41f9,
+		0x92dfe83769bd4f57,
+		0x6875ceda98b17ec3,
+		0xd178f64cb7c59d41,
+		0xb16d42cfe3c58b9d,
+		0x8d5cbe41f3d8ca1b,
+		0x4efd2ba212bcda87,
+		0x2bd189a541afd8e3,
+		0xa1b2e9487fc42961,
+		0xce9245187ea526bd,
+		0xf4a197d98dc9463b,
+		0x18732a9ed9bc54a7,
+		0x78f241bed9be8415,
+		0xa2b38571f7c2a381,
+		0xdcf5948326a491ed,
+		0x8ac15f632396af4b,
+		0x279ad3154298ceb7,
+		0x32519fd8719bed25,
+		0xe25f47a76d7efc91,
+		0x15c47dea9c832afd,
+		0x6c2d917fed953a6b,
+		0x7a328ed1fba849d7,
+		0x493e7f221bac7945,
+		0x7da14824369e87b1,
+		0x2b7a4fd65791a62f,
+		0x984b31e87593c48b,
+		0xfe9cb76ba296c3f7,
+		0x4bf372edc19ae275,
+		0x732dc81bae7bf2d1,
+		0x4bfe625edc8e214f,
+		0x245a8c921d723f9b,
+		0x1c6df5b43c865e19,
+		0x2cf419b43b796d85,
+		0xf3da8676586a7be1,
+		0xf21d568a946d8a5f,
+		0x9461f75ed461a8cb,
+		0x2c13b4ffe274d839,
+		0x52b8c961f186e7a5,
+		0x19d57cb5428af713,
+		0x16baed543e6c157f,
+		0x8afc3d765c6f24eb,
+		0x28f3e9bbad826359,
+		0x7b15d2ebab8672c5,
+		0x7f58361edb7a9143,
+		0x93f528bdc54a7e8f,
+		0x94d65b1fe34c8dfb,
+		0xa469ed532451cd69,
+		0xb5376c254263ebd5,
+		0x2caefd998167fb53,
+		0xd94ca7276e4819af,
+		0xdba256e98e5c392d,
+		0x416ea25cbc4f3789,
+		0xe1a546bedb4267f5,
+		0xe64c1b51fb459673,
+		0x8e74ba62193784cf,
+		0x5c8eba33275ba34d,
+		0xceb19d57654ec2b9,
+		0x89631e4ba563e127,
+		0x341f8c5ba154ef83,
+		0x2caed75a9c361edf,
+		0xa49786fcbc392e5d,
+		0x5479c381fa2b3dc9,
+		0xaed8b4921b2f5c37,
+		0x916a2b365c427ba3,
+		0xafe3b4187b469a21,
+		0xf62b8e5a9526a87d,
+		0xe9d42519842ab6e9,
+		0x95af23ccb32ed657,
+		0x19a8647ed241f5c3,
+		0x4a321bffef372641,
+		0xe7d2f1654f17239d,
+		0x2e74c3b76e2a531b,
+		0x275a1de76c2d5187,
+		0xd34be858791e6fd3,
+		0x7a8e6f4cba239e51,
+		0xa31927fcb6148cad,
+		0xdc89af2fe517ac2b,
+		0x718eb2d1f31adb97,
+		0xa65d9483241cd9f3,
+		0x25d4f91985432a71,
+		0x67a93fd65ef327cd,
+		0xf3e4b1998df6374b,
+		0xb4e961798cf945b7,
+		0x54f7826cbafc8625,
+		0xf3e79dbdc7fe8491,
+		0x72dafebdc6e192fd,
+		0x9fa857e327f4c16b,
+		0x5d3e7bc323e5bfc7,
+		0x9135def762f9de35,
+		0x2c1f95a762ebfda1,
+		0xbd9456287dbe2c1f,
+		0x5462acfa9de23c7b,
+		0x81479f5dcbd54ae7,
+		0x3bce2d71fbe97a65,
+		0x493f6dc329eb78c1,
+		0xb1f3654326cd973f,
+		0xc2aed5f546e1c59b,
+		0x1b92ef5986e4d519,
+		0x57c98b2ba2d7e385,
+		0x95637ecba2c9f3e1,
+		0x64cd83ebaebc125f,
+		0x26c951afedaf31cb,
+		0x8eaf35721dc35f29,
+		0xb4ac87f32bc46e95,
+		0x128defa549b87cf1,
+		0xcf1e873545ca8b6f,
+		0xaf195d3764ae89db,
+		0xa35d162cb5c1da49,
+		0x54b9286ed2c3e8b5,
+		0x9478231fe1c7f823,
+		0xc86a94d432ca168f,
+		0xe2b4dfc43e9c25fb,
+		0xd2cf31865dbf3469,
+		0x2a3bc9f98cb273d5,
+		0xf73c2d8babc79253,
+		0xa728513dc6b781af,
+		0xa47516ddc58a9f1d,
+		0x5938da41f38dbe79,
+		0xdb3a8e132491dce5,
+		0xfd3e9b4652a4fc63,
+		0x247ad36652961abf,
+		0x3bcea4976f892a3d,
+		0x8aec97476e7d38a9,
+		0x15c6de2cbcaf5917,
+		0x68b14fdfecb29783,
+		0x56db87afe79485df,
+		0xf7da8e621798a45d,
+		0x1d9bfe53257ab3c9,
+		0xbc1d4f97659ed237,
+		0x723cb5d98592f1a3,
+		0x8135de2dc5b74321,
+		0xb8cd72fbae872f6d,
+		0x3a9c426cbc683ed9,
+		0x614ba851fb8c5d47,
+		0x9e542da21a7f6cb3,
+		0x3498bfc65c849b31,
+		0xe7641c243764a98d,
+		0xe6fbc2a98456b7f9,
+		0xce163b9ba35bd867,
+		0x2645c71ba27ce6d3,
+		0x64acf53fe4a32751,
+		0xb25c14ffef7524ad,
+		0xa297f3c21f78542b,
+		0x6ef5a9143e6b5297,
+		0x8f3e61a65b6c71f3,
+		0x68af39b87a5e8f61,
+		0xfa187d3a97528ebd,
+		0x4f2657ddc765ad3b,
+		0x79fb46afe346dca7,
+		0x825173e1f36aeb15,
+		0xa1c489b3235dfa81,
+		0x61a734f6536128ed,
+		0xe51cdb687f64385b,
+		0x5d6f4baa9e3846c7,
+		0x14b3ec9bad4b8735,
+		0xe435f92dcb4d85a1,
+		0x34f2e95dc85e941f,
+		0xd142be81f853c27b,
+		0x91dea4532845c1e7,
+		0x5a376e932638df45,
+		0xc2f9d7576349feb1,
+		0x5917c4e9835c1d2f,
+		0xef17c62a9f413d8b,
+		0xb64e1fcbad234bf7,
+		0xdf14596fed286b75,
+		0xbac58671fb3a79d1,
+		0xd8c927621a2c984f,
+		0xd418ec24372f96ab,
+		0x5e6cf3987843d629,
+		0xf59be6dba726e495,
+		0x174d6cfba538e4f1,
+		0x1dfeba5dc24b136f,
+		0xb68e729baf1e32db,
+		0x9c13de51fe326149,
+		0xca78d1432d136fa5,
+		0x614739865c278e13,
+		0x8da691c54a198c7f,
+		0x2d6b8736561c8aeb,
+		0x61bf4ec9861fcb59,
+		0xc571ae2cb612e9c5,
+		0xa745639ed516f943,
+		0xcfb87a1fe328179f,
+		0xad247bc6542b371d,
+		0x4fe3c6132efd3579,
+		0x471e68943bdf64e5,
+		0xb6afe4d98cf29463,
+		0x6b5dea4879e582bf,
+		0xc623e5fcb7f8a13d,
+		0xf461dbadc4eabf89,
+		0x296bdc1ba3ecbdf5,
+		0x1c698af325e1fd73,
+		0x468ace2653e41bcf,
+		0x32b14da761f72b4d,
+		0xae42bd665fe83ab9,
+		0x3af5c2798ced5a27,
+		0x21e6c78babdf6893,
+		0x397aec4cb9c286ef,
+		0x619a7381f8e4a56d,
+		0xcfa2be4216e7b4d9,
+		0xde95a7c326ebd347,
+		0x945fcd3765cde2b3,
+		0xd9685f2ba7e52431,
+		0xec29b18ba2e5318d,
+		0xc2d196498db63fe9,
+		0x136c592cbdca4e57,
+		0xc7521631f9ab6dc3,
+		0x3e7a5d432abf8c41,
+		0x6a72ce8437c28a9d,
+		0x87eb1d5547d5c91b,
+		0xae612bd654c6d987,
+		0x45ea96d984bad7e3,
+		0x1bc67e5ba3bdf761,
+		0xf8c2b97fe3c125bd,
+		0x39a6b5ffefc6453b,
+		0xa57463c21fc853a7,
+		0x53afe2854ecb8315,
+		0x9268bce65cbd9281,
+		0x9c7ed265468e7fcd,
+		0x2eca15d98792ae4b,
+		0x618324bba594cdb7,
+		0xc84e9b1ed4a8ec25,
+		0xa416357fe38afb91,
+		0x1879ec33238c19fd,
+		0x2caf1d8652c1396b,
+		0xa4bfd8e65fa348d7,
+		0xe389adb76eb97845,
+		0x9a2de8b87d9a86b1,
+		0xf91e36acba8c952f,
+		0xf46592bed67fa38b,
+		0xa19cdb2fe693c2f7,
+		0x719e6a8328a6e175,
+		0x168fe4743487efc1,
+		0x9ea25717648a1e3f,
+		0xb4a39df7617d2e9b,
+		0x24ed5c1baf825d19,
+		0xc3de841cbe936c85,
+		0x8f29e4cedc867ae1,
+		0x47289cafeb6a895f,
+		0x5c9f38b2185d97cb,
+		0x6dc75e83286fc739,
+		0x71856fb54782e6a5,
+		0xdbf1c83ba597f613,
+		0x273dea6cb389147f,
+		0x372e194dc17a23eb,
+		0xf7db36adcf7e4259,
+		0xcd6a28b1fe8271c5,
+		0xc4ea9b821d758f23,
+		0x816df4332b457d8f,
+		0x568e94a439478cfb,
+		0xcb98a3f6574dbc69,
+		0xed5a1679864fcad5,
+		0x89df27edc672fa53,
+		0xa839c2fed36518af,
+		0x72ac8561f169382d,
+		0xaf4cde13215c3689,
+		0xf389c4a32e3d46f5,
+		0x45d6fa298e619573,
+		0x9a256fb87b5483cf,
+		0x387acfba9b57a24d,
+		0x8937ec6ed748c1b9,
+		0x12ab75ced64bcf17,
+		0x7d46a23dc54fde83,
+		0x143d5fc326531cdf,
+		0x1a8eb94873462c5d,
+		0x92cd578761473bc9,
+		0x64f9ae398f2c5b37,
+		0x6c92e7498d2e69a3,
+		0xef58374dcd53a921,
+		0x4f35bd7feb23a67d,
+		0x2ad7ec91f826b5e9,
+		0x84e7f5c2192ad457,
+		0xf4cb63d6572be4c3,
+		0x1cb2e479875ef341,
+		0xd5b7213ba654329d,
+		0x41f5326dc347521b,
+		0x53d7c92cbe194f67,
+		0x68f13c2cbc1a6ed3,
+		0x83db25a1fb2e8d51,
+		0xb7a45e943c218bad,
+		0x7621ae465914ca2b,
+		0x6f3ec1d54815da97,
+		0xf24183a87619d8f3,
+		0xb92e645ba52cf871,
+		0xbc8213fba42f16cd,
+		0xb17493cfe512364b,
+		0x4379b26edef354b7,
+		0x3bac7ef21ef98425,
+		0xd956a2c54dfb8391,
+		0x138d2ab549eb81fd,
+		0x6aecb93547de9f5b,
+		0xc45129e986f2bec7,
+		0xfb9714eba7f6ed35,
+		0x3526df9cb4e7fca1,
+		0x54c78e2ed4ea2b1f,
+		0x8c9546e213fe2a7b,
+		0x43d6b1f652f149e7,
+		0x5b38a7654fe37965,
+		0xb2ed8af65de687c1,
+		0x5c42e9187bda963f,
+		0xb2f65a7987eda49b,
+		0xa892e63cb7dfc419,
+		0x9752ed11f7d3e285,
+		0xce859ab437c6f2e1,
+		0x63582f1546d9215f,
+		0x8eab671653d92fab,
+		0xb86dfa9871cd4e29,
+		0x7a34e9698fc16d95,
+		0xae18dcba9dc47bf1,
+		0x7968fa4edbc58a6f,
+		0x21db5c81f6c798db,
+		0x8da4eb7217bdc849,
+		0xba38cd1326afd7b5,
+		0x8dfc953768c4f723,
+		0x81b6437a94c6158f,
+		0x1a6f258a93c824fb,
+		0x5c1d83acb1dc4369,
+		0x8cd13f7cbfae62d5,
+		0x62974ec1fec29153,
+		0xde3579421ca37e9f,
+		0x94dc8fa43ba69e1d,
+		0xe6af825436a8bd79,
+		0x21fa5685468acbe5,
+		0x2c45e6b9859feb63,
+		0x753e628dc5a319bf,
+		0x97a2bc8fe4b6293d,
+		0x728ac1e1f1c837a9,
+		0xa64d951432bc5817,
+		0xf4e8c9532fae7683,
+		0x8f79ed165c9184df,
+		0xf6c823987c94a35d,
+		0x265be9187a86b2c9,
+		0x86593f2dc89ad137,
+		0x6feb482dc57bdf93,
+		0xf8d25c1ba36bdcef,
+		0x3958f26215932e6d,
+		0x8f59e67542853cd9,
+		0x59271ba761a95c47,
+		0x371ace465f7c6ab3,
+		0xb5718dca9d7e8a31,
+		0x6ed9a78cbc61a78d,
+		0x6215fb8eda73b6f9,
+		0x2a468de1fa98d567,
+		0xc92b3af21879e5d3,
+		0xcd1e2794378cf451,
+		0x2eab4d37657f13ad,
+		0x8e24b35ba694532b,
+		0xbd357e1dc2a65197,
+		0xf2cd9e4bad586fe3,
+		0x543a9efdcd5b8e61,
+		0xe16db591f94e7cbd,
+		0x957a4de32d61ac3b,
+		0x3fa845932953dba7,
+		0x13f956854967ea15,
+		0x8dc6f2e8765af981,
+		0xb4563c8a945b17ed,
+		0x4a857b3dc36f275b,
+		0x3d46821fe18245c7,
+		0xfc147dafef478635,
+		0xa3dfe5632f5984a1,
+		0x97dc3f654d5b931f,
+		0x2c8b4e665c4ea17b,
+		0x372519476941bfd7,
+		0x1c7b652ba963de45,
+		0x6849d3cba746fdb1,
+		0x431bc7fed6591c2f,
+		0xb25d39e1f34d2c8b,
+		0xb7ac49e2124e3af7,
+		0x25ed73f981426a75,
+		0x759ae1b76f3578d1,
+		0x9c1f2d576d28974f,
+		0xf1d56e387d2c95ab,
+		0xec78935cba3ec529,
+		0x4a2687ceda41e395,
+		0x6a179e2ed845e3f1,
+		0x1ebfc2943948126f,
+		0x2dc34a16564931db,
+		0x94fcabe8752c4f39,
+		0xe1bda499812f4ea5,
+		0x756ebc8baf248d13,
+		0x1395e8cbad148b7f,
+		0xb52e638edc1689eb,
+		0xb4cd6a21f81bca59,
+		0x3791ab43291ed8c5,
+		0x937fbdc76a21f843,
+		0x4fc3e9d87824169f,
+		0x327c4fbba728361d,
+		0xd5f8b17dc51b3479,
+		0x6ae29d1cb21c63e5,
+		0xcf1425ecbdfe8263,
+		0xa74c2f1edce281bf,
+		0x728bf4921be49f2d,
+		0xb7f68dc32af5be89,
+		0x542e8a1437e8bcf5,
+		0xc3f42d8656fbec73,
+		0xa3c5e24764bde9cf,
+		0x83a176ecb6f32a4d,
+		0x6b15497ed2f538b9,
+		0x2519f38fe1fa5927,
+		0x398bf16321fc6793,
+		0xc8f39e432dbc75ef,
+		0x129dab365ce1a46d,
+		0xb2afc7976ae4b3d9,
+		0xd562437a9ae8d247,
+		0xdecf7b3ba7d9e1b3,
+		0x4b87d31ba6cbef21,
+		0xb28fe54dc4be1f7d,
+		0x7945c3b215c23de9,
+		0xd8a41e6432e64d57,
+		0x7cd34b2651e86bc3,
+		0x14f289b76fdc8b41,
+		0xbf73ea865cbe789d,
+		0x61e28fba9ad2c81b,
+		0xd586321feac3d687,
+		0x7b8ec351f8b7d6e3,
+		0x7359a8d328caf561,
+		0xec975b2436ac14bd,
+		0x18c639b876cf243b,
+		0x287ae53a94d352a7,
+		0x57942d3cb3d78215,
+		0x9d1427bbaeb98f71,
+		0xf23791cbab897ecd,
+		0xdb798261fa8e9d4b,
+		0x6389c7f32a91dcb7,
+		0xc425a1e439a4eb25,
+		0x95f6721547b6fa91,
+		0xce3dfb4765a918fd,
+		0x15cd84ba94ad286b,
+		0xdc172aecb2af36d7,
+		0x4a2985cfe1c28745,
+		0xc6d7b82fefa685b1,
+		0xcd87be921ea8942f,
+		0xb4d268143e7ca28b,
+		0x1a9c2e654a8db1f7,
+		0xc631f9887a91df65,
+		0x16afd4ca9784fec1,
+		0x5c48d7acb6971d3f,
+		0xfa49b71fe4782d9b,
+		0x5c8d76e1f38d4c19,
+		0x2943ce82129f4b85,
+		0x47dfcbe652a379e1,
+		0xe98c5b743e74985f,
+		0x692eb8554e5796cb,
+		0x6fe2cb998d7bc639,
+		0xde51a98cb97ed4a5,
+		0xfbca549eda92f513,
+		0x74b8a19fe895137f,
+		0xd4f67282168732eb,
+		0xa512fb94368b4159,
+		0xd35ae497627c4fb5,
+		0xaebd763a918f7e23,
+		0x6da5bf8a9e527c8f,
+		0xfc6b2e5a9d548afb,
+		0x5a7c483fed47cb69,
+		0xb28c1761f84ac9d5,
+		0x2fc874521a6de953,
+		0xe35ba865496217af,
+		0xae7c95876985372d,
+		0xf75286ccb4673589,
+		0xfd2a163cb27a64f5,
+		0x2eb87f6dc16d8473,
+		0x693eb8fbad4e72cf,
+		0x3a287141fe63a14d,
+		0x8fc35d221d34bfa9,
+		0x276ae4c43b48ce17,
+		0x12fc8b66594aed83,
+		0x7de39a16563beadf,
+		0xc7685b3ba8612b5d,
+		0x69a54f3ed6543ac9,
+		0x3c52419fe2485a37,
+		0x6d2957e1f14b68a3,
+		0x18ab3525435d9821,
+		0xb914f8543e2f957d,
+		0x5ab19fd76d32b4e9,
+		0x462f5bda9c26d357,
+		0xb43625aa9a48e2c3,
+		0x4296dbedc95bf241,
+		0x79ef41bdc74e219d,
+		0x95aef4ced6413ef9,
+		0xec7a58f218234e67,
+		0xa3bdf64654276cd3,
+		0x2b8da358723a8c51,
+		0x7dc9b1a65f1c79ad,
+		0x86b5a3287d1fa92b,
+		0xfe45823cbc12d897,
+		0xab7f368dca15d7f3,
+		0xac5f3b8fea29f671,
+		0xfda1e724382a15cd,
+		0x3f514ae7681e254b,
+		0x2dc5a1ba982153b7,
+		0x5813749cb7168325,
+		0xe28461fdc4378291,
+		0x79142dc98bc67fed,
+		0x94e1c3798cfa9e5b,
+		0x496dcfecb8feadc7,
+		0xfb58d6432af1ec35,
+		0xba947f8438e4fba1,
+		0xea9b48d658e72a1f,
+		0x5b4831c765fa297b,
+		0x5fe4682a94fc38e7,
+		0x9341825cb2ef4865,
+		0x4a73526ed2f386c1,
+		0x5fad49bdced6953f,
+		0xbd7e52421fe7a39b,
+		0xc729f1a54debc319,
+		0x2cae98f54aced185,
+		0x9d7a31c768b2efd1,
+		0xb14a8eca98c51e4f,
+		0xb7f864aa95d62eab,
+		0x945d6f1dc5ea4d29,
+		0xb3948a61f2ed4c95,
+		0xc5b8da6323ce6af1,
+		0x7a9d28b541d2896f,
+		0x2f1bdc443fc497db,
+		0x24e9d3165ed8c749,
+		0x3d586c2879cad6b5,
+		0x54b96deba9bde623,
+		0x81ba5f9ed9c2148f,
+		0x7c15642fe7c523fb,
+		0xe359a24217d84269,
+		0x29da1bc434ca61d5,
+		0x7e2918c762bc7f43,
+		0xac12f3e651ae6d9f,
+		0x39a2bf887fa39c1d,
+		0x3d96a4298ea4bc79,
+		0xc98aef1edb97cae5,
+		0x3b912761f89bea63,
+		0xb6825472168ce7bf,
+		0xa9e31c2659b1283d,
+		0x123ab74657c436a9,
+		0xd972346ba4c95617,
+		0x1cf3e2bba2cb7583,
+		0xfdb4356ba19b73df,
+		0xa2cde53cbe8f925d,
+		0xb8d729a1fe83b1c9,
+		0xb847a3d21d95cf27,
+		0x38fe4a132b87de93,
+		0x7df6e9443768dbef,
+		0x79ac1366578e1c6d,
+		0xced6b24ba6813bd9,
+		0xe2f745ced6a35b47,
+		0x1bca492fe2a769b3,
+		0xb79e2c11f2ab8931,
+		0xfa97c543217c968d,
+		0xcbf569732d6ea5f9,
+		0xaed923c65e92d467,
+		0xe2fc56987b86e4d3,
+		0x2759ce1bab89f351,
+		0xa9687eddc87b12ad,
+		0x3e5426aed78e412b,
+		0x9b8fc46fe5914f87,
+		0x96e38cf215846de3,
+		0xa2cf673543978d61,
+		0x92f56de541587abd,
+		0x5a7e1cf76f5d9a3b,
+		0xd5a28e376d4fc9a7,
+		0xa9c7defcbc73e915,
+		0x7491a3cedb65f781,
+		0x384697d1f95816ed,
+		0xb8fdec72197c265b,
+		0x7b5cd8e3286e34c7,
+		0x7c963f2ba7918435,
+		0x4692acecb47583a1,
+		0x847d29ecb367921f,
+		0x51cfdb9bae389f6b,
+		0xc5bed32a9c3baed7,
+		0x6b73925fea3fcd45,
+		0xa83167d32a53fcb1,
+		0x8cdab1754a561b2f,
+		0x3c926fd659472a8b,
+		0x37b5ca19864b39f7,
+		0x41c73e6cb63e4975,
+		0xbd4861fdc45287d1,
+		0x5e8a749ed153964f,
+		0x742f189fef2694ab,
+		0xbe59fc321f3ac429,
+		0x68ceab754e3cd295,
+		0xc5743a276a4ed2f1,
+		0x5e71ab3a9b54216f,
+		0x5721bd4a98352fcb,
+		0x47a6915dc7284e39,
+		0xd5c46b9fe62b4da5,
+		0xe735b981f54e7c13,
+		0xfe9b5d1324318a7f,
+		0x984fad26512398eb,
+		0xce8a9bd54f16c859,
+		0x429c31876e19d7c5,
+		0xa4216e7a9b1ce743,
+		0x9c4fb2eba81de49f,
+		0x69a45c8fea24351d,
+		0xdc93b411fa164379,
+		0x26c147d4381962e5,
+		0x491f6736572c8163,
+		0x4de39166531c6eaf,
+		0x47e3fa2984319e2d,
+		0xdf1723a76ef2bd89,
+		0x5afd23c98ae4cbf5,
+		0x178b46edcaf8eb73,
+		0xd7382aecb6d9e8cf,
+		0xd8feb61328fe194d,
+		0x61297b8548f137b9,
+		0xa853df1769f45827,
+		0xec8f9b1ba4f87693,
+		0xa1654f2982d974ef,
+		0xe482d53ba1fc936d,
+		0x1d92bc798ecfa2d9,
+		0x12bc5481fce3d147,
+		0x49a3f6521bc5dfa3,
+		0x65bea3f54ac8fe21,
+		0x13f586c548ca1e7d,
+		0x6ecadf3656bd2ce9,
+		0x9d6c5efba8e14c57,
+		0xf1976c3cb5e46ac3,
+		0xcf263a1ed3e78a41,
+		0x62b183d1f1ea879d,
+		0x518caeb432eda71b,
+		0x16495ce32ebfc587,
+		0x32c89fe76cb2d5e3,
+		0xeba6dc198bc7f461,
+		0xe8b2346879c813bd,
+		0x3591e7bba8dc423b,
+		0x3412beaed6ce41a7,
+		0x5492acbed5b16ef3,
+		0x468fcb5325c48e71,
+		0x142b9cd432a57bcd,
+		0x19b4d78651d89c4b,
+		0x2a1d79c54f8dcab7,
+		0x24eb69f87c9fda25,
+		0x5643f1dbacb3f891,
+		0x17e4bd5dc9a517fd,
+		0x5874c1b1f8c9276b,
+		0xa7b932c218ab35d7,
+		0x19b683d328be7645,
+		0xea2846f876c284b1,
+		0x4721c93984b5932f,
+		0x287b465a92c6a18b,
+		0x26fd8a7a9d68afe7,
+		0xfe26813bad8bce65,
+		0xe432815cb97fedc1,
+		0xc18e3f932b941c3f,
+		0x26cab7543a852c9b,
+		0x2871fec657a84b19,
+		0xa1de8438769c4a85,
+		0xc926b31ba49d68e1,
+		0x9e6b387dc3a1975f,
+		0x749fa62fe18395cb,
+		0x6527831fef87c539,
+		0x8fa7d2b21f79d3a5,
+		0x3c648b265d8ce413,
+		0xd216ac754a6de17f,
+		0x14ae86c87a8431eb,
+		0x32598e1cba863f49,
+		0x637f8e4dc6784eb5,
+		0x2fa1763fe58b7d23,
+		0x2b6d95afe25d6b8f,
+		0x1aefd873236189fb,
+		0x2aed79654173ca69,
+		0xa7f184943f46c8d5,
+		0xb519a6287d6ae853,
+		0xcd35e218794be5af,
+		0xf92eca5cba7f162d,
+		0xb5acf32feb723489,
+		0x1a8b3f4fe98763f5,
+		0x82e36a42196a8273,
+		0xb94a6e84345a71cf,
+		0xb5ed28c7625c8f3d,
+		0x498a3c187251bea9,
+		0x76bd41ca9f54cd17,
+		0xe348dc9bad46ec83,
+		0xa4f8d69cba37e9df,
+		0xd12c6eb1f94c1a5d,
+		0x4857ce921a4f28c9,
+		0xcd628a954b625937,
+		0xf5de7b19894567a3,
+		0x4fa6c39cb65a9721,
+		0x839d41bba23b947d,
+		0x7625f1dcb14da3e9,
+		0x729f546dcf41d257,
+		0x6a92d451fd45e1c3,
+		0xe91d73f32c47ef31,
+		0xf5e276b54b391f8d,
+		0xc96b2346583b2df9,
+		0xe51473f9892f3d67,
+		0xc874152ba8426bd3,
+		0x546218aed7368b51,
+		0x716c5d4fe32678ad,
+		0xda649171f13ca82b,
+		0x7912eda4312ec697,
+		0x2fcabd165e21d6f3,
+		0x73a914c98d24f571,
+		0x954cfa798b2714cd,
+		0x1e4856ca9c1a234b,
+		0x416fa7edc91d42b7,
+		0x53e419bed93f7125,
+		0x74826f3fe6237f81,
+		0xe98fdc7325147ced,
+		0xde59a68543179d5b,
+		0xa31b26c65219abc7,
+		0xbad513776efcdb35,
+		0xed4a5cb76bdfe9a1,
+		0x352c4e7babe4291f,
+		0x2a7cf9bedaf5287b,
+		0x2673ef4ed8f936e7,
+		0xf5b8349219fc4765,
+		0x678ecba436fe75c1,
+		0xa48291e876e1943f,
+		0x391a4c8873f4a29b,
+		0x27f83ceba3f7c219,
+		0xe2dc14998ed9cf75,
+		0xfea261c989baced1,
+		0xaf21c37cb8adec4f,
+		0xa2d4e95219e32dab,
+		0x2c79d5843ae64c29,
+		0xb164ce5437e84b95,
+		0x6f34bda875db69f1,
+		0xf7136baa93cd786f,
+		0x398415dba3e196db,
+		0x1c679f2ed1e3c649,
+		0x4b97f25fefc7d4b5,
+		0x7b4fac321fcae523,
+		0xb147fe643cabe28f,
+		0xe824c1d659ae12fb,
+		0xdbe31fa98bd34169,
+		0x5c1ef48a98b64fc5,
+		0x9c8ead6cb6c97e43,
+		0xacebf61ed3ba6c9f,
+		0x916d8b41f3ae8b1d,
+		0x7514e9b323d1cb79,
+		0x5d3f78a541b3c9e5,
+		0xad3cb2554fb7e963,
+		0x6fe125c54c98e6bf,
+		0x249631a98bac173d,
+		0x752af6bdc8bf25a9,
+		0xcda92b6feac36517,
+		0x758c3491f9c67483,
+		0xad83f65215a872df,
+		0x9a176fc434ab915d,
+		0x7e6b3ad5427d8fb9,
+		0x5cfeb91983a1ce27,
+		0x369e1bf87f84ed93,
+		0x1f5e2cb98b75daef,
+		0x3cbd12ffec891b6d,
+		0x74b25311f87c2ad9,
+		0x3f9d4a221b9f3a47,
+		0x678e5c1549a268b3,
+		0x78b6ce3657b69831,
+		0xaf73285763a7958d,
+		0x641ed359827ba4f9,
+		0x9761defcb19ec367,
+		0xf517926cbf81e2d3,
+		0x841329ffed96f251,
+		0xa9865df43e8721ad,
+		0xd18562354c793f1b,
+		0xec2a17854a6c3e87,
+		0xf5d8a937687f5ce3,
+		0xcf3e172cb7938c61,
+		0xe8ba1d4dc36479bd,
+		0x4c3b71afe267a93b,
+		0x6d5c7e91f15bc8a7,
+		0xbf8a9e14327ed815,
+		0xfa967c254e72f681,
+		0x342edf776c7415ed,
+		0xc43d712a9d78245b,
+		0x782fd3ea9b6a43c7,
+		0x4f1973ddca8d7235,
+		0xb2937eced86f72a1,
+		0x7ba2e54dc4527efd,
+		0x8b327c9213549e6b,
+		0x17fa94643246acd7,
+		0x4a93d8b8716adc45,
+		0xd139f5e76f4deab1,
+		0x6d25a81a9d631a2f,
+		0xd238e67dcd54298b,
+		0x172a46fedb4638f7,
+		0x165e3a21fa3b4875,
+		0x9eb64c33294c76d1,
+		0xaf693c43273e854f,
+		0x9b6e4ad8765293ab,
+		0xdf45b31ba456c329,
+		0x3c4e2a5cb248d195,
+		0xb597d2698d39cfe1,
+		0xc58afe6a9a2bed5f,
+		0x175be6c1fa412ecb,
+		0x5864df721c254d39,
+		0xe2cbdf443b274ca5,
+		0xd52c3817694a7b13,
+		0x2d1c7ea9852c697f,
+		0x732c5b6a942f87eb,
+		0x78952e3ed432c759,
+		0xfd61324fe124d6c5,
+		0x582a6f4edf19e643,
+		0x38a59fb32d1ae39f,
+		0xba24cf976c3e241d,
+		0x5cef26d98d314279,
+		0x852a14ba9b2461e5,
+		0x362a85ecba187f53,
+		0x8c2f49acb5186daf,
+		0xa546193fe51b8c2d,
+		0x849b1d2fe31fac89,
+		0x4657abe43412caf5,
+		0xb1f549a76215ea73,
+		0x1fbc62d43bd5e7cf,
+		0x4af23be76cfa184d,
+		0x49fa65c87afd26b9,
+		0x135f94acbaef4627,
+		0xb5e23a1edaf27593,
+		0x38af79ddc6d573ef,
+		0xa9b3c46215f8926d,
+		0xb52f4d1434fba1d9,
+		0x68c21e4652edbf37,
+		0x4a631fe872f1dea3,
+		0x361957e98ec5fd21,
+		0xf83eda6a9be61c7d,
+		0xb92fd54dcad82be9,
+		0xdc1b6781f9ed3b57,
+		0x2f8397b218df59c3,
+		0x2a319d865ae38941,
+		0xd8c79f4435e4869d,
+		0xd49c8e3874e8a61b,
+		0xa278cf4a92ebc487,
+		0x34d1b52a91bdc4e3,
+		0xd928f53cbec2f361,
+		0xb3497561fec512bd,
+		0xcaf389632ed8413b,
+		0xf1bce3932bca3f97,
+		0x738951e548ab5df3,
+		0xd831a7b658bf6d71,
+		0x9a5d214985b27acd,
+		0x6871bd9dc3d59a4b,
+		0x359af24fe2d6c9b7,
+		0x3948cba1f1cbd925,
+		0x81a6ef9432bde791,
+		0x5189cf754ea216fd,
+		0x4b3c6fa87ec4256b,
+		0xb1985ae76cb834d7,
+		0x68b475aa9acb7345,
+		0xf9147a3dc8ad73b1,
+		0xf3a18b9dc6ae812f,
+		0x7945f36fe4a29f7b,
+		0xfc9423521394ade7,
+		0xc7b594e432a8cd65,
+		0x12ca9df65289ebc1,
+		0xfbad41865d7cea3f,
+		0x839a4cd87e812a9b,
+		0x1784efddcdb54a19,
+		0x7f5b4c9fecb74985,
+		0x148792d1f89a67e1,
+		0xcfab2562179c865f,
+		0xd39f7413257f84cb,
+		0xc86e425876a2c439,
+		0xf67d45b98396d2a5,
+		0x398e254cb4a9e213,
+		0x32c6d5798c59de6f,
+		0xe324a17a9a6c1fdb,
+		0x16c5abe1fc813e49,
+		0xec7698521c834db5,
+		0xab8651754b987c23,
+		0x2ca61b9437596a8f,
+		0xbc728397645c78fb,
+		0x1f962e8ba35fb869,
+		0x738ecdacb382c7d5,
+		0xcef97baed196e753,
+		0x2483b9fdcd57e4af,
+		0x12bd59843f7b152d,
+		0xac71be254d6e2389,
+		0xc6b198a87c8162f5,
+		0x613984cbac958173,
+		0xe8ba564a98456ebf,
+		0x52e67facb6598e3d,
+		0xf4a7d1bfe34c8da9,
+		0x61bf79dfe35fbc17,
+		0xb98aec421462eb83,
+		0xc4d951743154e8df,
+		0x145b2e376f48195d,
+		0xb48271c76e4b27c9,
+		0x2b1e648bac5e4837,
+		0xeb4c987edc5176a3,
+		0x2139687feb759621,
+		0xae589731f846937d,
+		0xcfb2d6321648a2e9,
+		0x4a21b5f4364dc157,
+		0xe478dc37624ecfb3,
+		0xb6d2cf8a9264fe31,
+		0x6d457c3a9f351e8d,
+		0x2854db3bad372cf9,
+		0xb67d389fed2b3c67,
+		0xe32d6bc1f92e5ad3,
+		0x157f98643c428a51,
+		0xd9236b85492387ad,
+		0x296b81365836a72b,
+		0xe295c7b9842ac597,
+		0x145d8cba942bc5f3,
+		0x47ac86dcb23fe471,
+		0xfa5c691cbf2413cd,
+		0x9653b4a1fe17324b,
+		0x74c6e9143e2941b7,
+		0x7bd18fa54c2b6f15,
+		0xf4be36c65a2d6e81,
+		0xf3d281a768217bed,
+		0x1e68bd3ba7139c5b,
+		0xe12b647ed415bac7,
+		0x84c29d6fe419da35,
+		0xa1c7e351f32ce8a1,
+		0x92f67de5432de71f,
+		0xe7a38fc54ef1267b,
+		0x4ae1fc576cf435e7,
+		0x6ae59cf98cf97465,
+		0xd53b7f1989fa74c1,
+		0x196b784ba7ec823f,
+		0x37fd425dc5ef819b,
+		0x746d83fdc4d2aef7,
+		0xc72ae53213f4ce75,
+		0xc7df5a6543f7ecd1,
+		0xa9b2f71651d9eb4f,
+		0xb4a63e865fde1cab,
+		0xd5c7b6198de14b29,
+		0x51c8729cbce34a95,
+		0xa12b683dcad768f1,
+		0xfd6512afe5da876f,
+		0xbef5a37216ec85db,
+		0x875d43e326dfb549,
+		0xa3e269f876e2d3b5,
+		0x37c452aa95d7e423,
+		0x4d72cf8a92c7e18f,
+		0x5c24d1e98eca21fb,
+		0x84e6135bacbd2f59,
+		0xa9452ec1fab14ec5,
+		0x9b4628721bc57d43,
+		0x7c98f3a328c56b9f,
+		0xda1f28c546c98a1d,
+		0x8673d2a654cdba79,
+		0x18f3e59873afb8e5,
+		0x95de64fcb4c2e863,
+		0x7bd9fa8dc1a4e5bf,
+		0x2f1c586fefb9163d,
+		0xb8cf6d721fbc24a9,
+		0x5feb4a743dbe5417,
+		0xdb92ca876dc17283,
+		0x9f2bda4769a471df,
+		0x2a3854da97a68f4d,
+		0x3f56d4adc4a78eb9,
+		0x43f7d51fe49cbd27,
+		0x71fc6dafe28fdc93,
+		0x5e6da7421382d9ef,
+		0x576e32f542b51a6d,
+		0x7ebdc5f54fa728d9,
+		0x3f8bd5776eac3947,
+		0x7d15f3b98c9e57b3,
+		0x58fb6a2edcb29731,
+		0xf41c792fe7a3948d,
+		0x192f7bcfe586a3f9,
+		0xb4cf52e2159ac267,
+		0x6521fd35458bc1d3,
+		0x724ade87638edf41,
+		0x8ca4291872831f9d,
+		0xe6cb718a9f863e1b,
+		0xad32ce8cbe693d87,
+		0x7ef16a4edc7a5be3,
+		0x7a1bc531fa8e7b61,
+		0x95d4fa332a6178bd,
+		0x94b3ce832974a83b,
+		0xe58f97143485c6a7,
+		0x7f42e56a948ad715,
+		0xc2bd387ba37ce581,
+		0xb186fd4a916cf3ed,
+		0x493ac6eedf84235b,
+		0xaedb5311fe8642c7,
+		0x1695fe732e8a7135,
+		0x1a2f98743c5b6f91,
+		0xb9f57a24384b6cfd,
+		0xca4b896878519d6b,
+		0x15ec7a6a9653abd7,
+		0xfe2ab45dc367db45,
+		0x94c3a87ed358e9b1,
+		0x3eca9f5ed15be82f,
+		0x8bcfd674325f178b,
+		0x5136fed54e5236f7,
+		0x6573824a9e384675,
+		0x47bfea998c4975d1,
+		0xe384b65a9a5b834f,
+		0x15f3d48dc74e82ab,
+		0x4927586fe863c129,
+		0x8da9623fe643cf85,
+		0xd34a7fb32546cde1,
+		0xd15a8f954238ec5f,
+		0xc8d41727624a1dcb,
+		0x9da135487e4f2c39,
+		0xd3e765aa9e324ba5,
+		0xa879d51dcd467a13,
+		0x6152cf4edb29687f,
+		0xed38c4b1f72a86eb,
+		0xbe83a472182eb659,
+		0x859f4d376831d4c5,
+		0x7c435fda9826e543,
+		0x16fab5e98436e29f,
+		0x4968fc2cb45a231d,
+		0xe1f75a2cbf2d3179,
+		0x2ed8c54bab1e3fd5,
+		0xd96c7b31fc127e53,
+		0xbf985e632b146caf,
+		0x97fc5b854a178b2d,
+		0x3682ad55461cab89,
+		0xbf852ac8761db9f5,
+		0x26e8759cb621e973,
+		0x8271efcba413e6cf,
+		0xd597836fe328174d,
+		0x37fec82edef825b9,
+		0xbf9236a21efc4527,
+		0x38d19c732cfe6493,
+		0xb84c6a165ad172ef,
+		0x64acf5e87af4916d,
+		0xe941fd2876e58fc9,
+		0x79425e6ba5f9be37,
+		0x72af185a94fbcda3,
+		0xf27ea1dcb4dfec21,
+		0xafcb761324f31b7d,
+		0x582e9ab541f52ae9,
+		0x693f1b254fe93a57,
+		0xe5f847976deb58c3,
+		0x61d83caa9bde7841,
+		0x74516c3cbae1859d,
+		0xc69e123ed8e4a51b,
+		0x1b36cae1f5e6c387,
+		0x543cb6a216d9c2e3,
+		0x2f85eb6545dce261,
+		0x9c7f6e15429cefad,
+		0xefadc62981d43f2b,
+		0x7c4db5f98fc53e97,
+		0x48f3a2ba9db85cf3,
+		0x639f8bafeadb6c71,
+		0xbc6749a1f7ae69cd,
+		0x98561df328d1a94b,
+		0xe91648a326d3c8b7,
+		0xdba82f1546c7d825,
+		0x9f3bdea874cae691,
+		0xf92c13b8729ae4fd,
+		0x5ef78d3ba2cf146b,
+		0xf34e1dbdcfb243d7,
+		0xc841a3b1fec87245,
+		0x495bc2643ec972b1,
+		0xc891b5a43b9a7e1f,
+		0xab4197f4369d8e7b,
+		0x3b6dfc265691ace7,
+		0x75613daa97a3dc65,
+		0xdec2873cb496eac1,
+		0x9a6b857dc2a8e93f,
+		0x23418ca1f2ad189b,
+		0xc9851fd542bf3819,
+		0xb72416a43fb24785,
+		0x57982c654da576e1,
+		0x1c34abe76ca9845f,
+		0x25a4e187697a83cb,
+		0x9a3e571dc78eb239,
+		0x1b9c3d8fe792d1a5,
+		0xc6a32b8ed584cef1,
+		0xec265bd21385ed6f,
+		0x759ed31543781edb,
+		0xdce48397618c2d49,
+		0x7e84a5176e7f3cb5,
+		0xbd38e9fbae947b23,
+		0xa348ce1cbc74698f,
+		0xaf61bc5eda5687fb,
+		0x87b4c131f85cb769,
+		0xe972d4f2187eb6d5,
+		0xe2689b754891e653,
+		0x8591ac476574e3af,
+		0xcb958d2ba598142d,
+		0x8652beddc17b3289,
+		0xe132f94bae7c41f5,
+		0x8e715dfcbc7e5f63,
+		0x413d957fea526dbf,
+		0x34f7db921b658c3d,
+		0x8af9c4e32b468ca9,
+		0xfca31985485acb17,
+		0x241faeb8765eda83,
+		0x485fc61a9451e7df,
+		0x1b8df73dc374185d,
+		0x761a4c3fe15726c9,
+		0x85f29d1fef5b4637,
+		0x2e37b6421f4d65a3,
+		0x2e671a554d6f8521,
+		0xf37c81476c53927d,
+		0x3c1f62587b45a1e9,
+		0xc17529bba938bf47,
+		0x34be967ba649ceb3,
+		0x517a6d4cb65ced31,
+		0xdc875141f4521c8d,
+		0xa8746b3213542bf9,
+		0x79be3cd651483b67,
+		0xda4e21376f2a59d3,
+		0x793261c98e3d7951,
+		0xab19c3e98b2f76ad,
+		0xb35efa7edc43a62b,
+		0xba9152ffea25c497,
+		0x6f1254bfe728c4f3,
+		0xf8673153284be371,
+		0x579a61f5453bf1cd,
+		0x86ce723a9762314b,
+		0x1b632a4a91243fa7,
+		0x53ef1b8baf286e15,
+		0x396ced2cbe2a6d81,
+		0xea96d38dc91b6aed,
+		0xc4da98bfe91f8a5b,
+		0xeaf614d43a12b9c7,
+		0x8b5a63254a16d935,
+		0x1d8e64365628e7a1,
+		0x4a162dc9852ae61f,
+		0x7e43c6bba42e157b,
+		0xab7f1e4dc52134e7,
+		0x519f6eddcef27365,
+		0x86a3579fedf673c1,
+		0x657ec9f32ce9813f,
+		0x53fa849329ea7f8b,
+		0xf1546de436ec9df7,
+		0xa83f52c768f1cd75,
+		0x3badc57986f4ebd1,
+		0x13acbeda93d6ea4f,
+		0x42a8671ed3f819ab,
+		0x9683c15fe1fd3a29,
+		0x345fbae321ef3895,
+		0xbcf65d354ed367f1,
+		0x9afc21743cd4856f,
+		0x2341ef865ae784db,
+		0xec93a14878ecb349,
+		0x8735eaca97dec2b5,
+		0xe9216abdc8d4e123,
+		0x1824be7dc4b3de7f,
+		0xe78c9fd324c61feb,
+		0xda56321543da2e59,
+		0xce3a4d7761eb3dc5,
+		0xae38d4f87ebf6c43,
+		0xe9612fd87dc26a9f,
+		0x1c8d956babc5891d,
+		0x6b72a8ffead6b879,
+		0x5db632c1f6cab7e5,
+		0xb54cd79218bed763,
+		0xda617e4436a1e4bf,
+		0x542cf1b987c6153d,
+		0x9a47b6c984d723a9,
+		0x7c86e3bba2db5317,
+		0x21bef36bafbd6183,
+		0xa4286d1a9a8d5ecf,
+		0x5eb18921fba28e4d,
+		0x927eb4821ca48db9,
+		0x465e8fa439a8bc27,
+		0x3ae95715468adb93,
+		0xd6347e16547bc8ef,
+		0xdf83615ba5b2196d,
+		0x15b9dfedc3b427d9,
+		0x1b3c45afe1c93847,
+		0x1423f8cfef9a56b3,
+		0x3d187f632fad8631,
+		0x4eac65332c9f738d,
+		0x791c6e365c83a2f9,
+		0x61fcad798ba5c167,
+		0x5364a7ca9687bfc3,
+		0xd5f9e38cb68ade41,
+		0xbcf35d2ba36bfc9d,
+		0x147b2361f5923d1b,
+		0xa572b49212a43c87,
+		0x376efb1541975ae3,
+		0x3527e9154f8b7a61,
+		0x9c2b71e54e5c67bd,
+		0x4db57e198c6f973b,
+		0x95abc38edb82c5a7,
+		0x4f96c1dfea97d615,
+		0xd749be61f679e481,
+		0x479ba2f21569f2ed,
+		0xea51c8b5468e125b,
+		0xe35a29d9859241c7,
+		0x5984cb3ba1946f25,
+		0x9278eb6baf576e91,
+		0xca6b357a9c486bfd,
+		0x25bfd48fea4d8c6b,
+		0xf53d1c9fe84f9ad7,
+		0xf4dbae221b72da45,
+		0xcbf812743965e8b1,
+		0x5679cba54658e72f,
+		0x81ad546a945c168b,
+		0xd92fe16ba36d25f7,
+		0xe7a2416ed2916475,
+		0x2fb513adcf6574d1,
+		0x38f5d42fed57824f,
+		0xc69ebfa32e4981ab,
+		0x8fbdce743b4caf19,
+		0x8791ad25493fbe85,
+		0xb31d6ac87853dce1,
+		0xda61347a9734eb5f,
+		0xc891f27ed5471acb,
+		0x3b4762ffe45c2b39,
+		0xe219dcb1f14e39a5,
+		0x1b92fa8654627913,
+		0xbc17e3954e23867f,
+		0xd51c36254d2685eb,
+		0xa2d3f8e87d2ab459,
+		0x3db26f49892db3c5,
+		0xa3e72f5cb95fd243,
+		0x3f576a8dc743e19f,
+		0x5a236c11f857321d,
+		0x9c4abf6215382f69,
+		0x5e74f1a7642a3ed5,
+		0xfba96dc9812e6d53,
+		0xc85423f87e216baf,
+		0x4a76f82a9e148a2d,
+		0xf48b132dcd15ba89,
+		0x3ef1478eda19b8f5,
+		0x3ea148b1f91cd873,
+		0x539b1f43271ed5cf,
+		0x9a5c68487923164d,
+		0x4269ea19871624b9,
+		0x42e8c1acb61a5427,
+		0x361a298cb41c6293,
+		0x543b69a98cdb61ef,
+		0xfba47c5a9ace7f5d,
+		0x39a5ec1edaf28ec9,
+		0xf297b8321af5bd37,
+		0x63db871328f7dca3,
+		0x7632dab657faeb21,
+		0xec69df8654ecf97d,
+		0x9b12cf5ba5f128e9,
+		0x78a3f4ddc2f43957,
+		0xf13b862ed1f857c3,
+		0x4a18fecedfeb8741,
+		0xdf4eac221fec749d,
+		0x92486af43cdf941b,
+		0x4e6fd2865be3c287,
+		0xab8f3e5879d6c1e3,
+		0xb8a7d5ea97c8df51,
+		0xda4819b874b8fead,
+		0x1625d3bba5cd1e2b,
+		0x85edab91f4e13d97,
+		0xe489fc7212d45bf3,
+		0x98ed36a542e86b71,
+		0x984e17c43fb968cd,
+		0x18abcd965ecd984b,
+		0xb2fe87c659cfa6b7,
+		0x58f42c6cbac3d725,
+		0x9f65e13ed8c6e591,
+		0xba34e78dc5a7e3fd,
+		0x578143a327dc136b,
+		0x81cd2ae545be32d7,
+		0x57cdaf8a96d27145,
+		0xacf1936982c46fa1,
+		0x7d1a2ce98ea67d1f,
+		0xe7adfb176ea98d7b,
+		0x96a3428eda8c9be7,
+		0x4cb2f97fe89fcb65,
+		0xbd86359328a3e9c1,
+		0x3f9b6e8327a5e83f,
+		0x2eb3dc8545c8179b,
+		0x7a39b26985bc3719,
+		0x3e6fb2dba2be3685,
+		0x9b678e1dc3b275e1,
+		0xf86a514dcea4835f,
+		0xc76b3151fe9682cb,
+		0x4786fdb32e8ab139,
+		0x4e895f332a7cbf95,
+		0x913b5da5487ebdf1,
+		0xf863b2765782ec6f,
+		0x75fad8ca96851cdb,
+		0xafc3429ed5a82c49,
+		0x2dc9f4bfe28c3ab5,
+		0x5cd689e1f19e6a23,
+		0xa51f248432a1678f,
+		0x4c5f81632e7386fb,
+		0x9ef857a43e87b569,
+		0x9a2fe8576c79b4d5,
+		0x8fa5d1ca9a8cd453,
+		0x3cef765a976ed2af,
+		0xd479a15fe895132d,
+		0xde4cb251f5a63189,
+		0x65f94ca214783fe5,
+		0xe6d15875428b5e63,
+		0x59cf7bd5416d5cbf,
+		0xeb3f89687f618b3d,
+		0xc1e32fd87e538ba9,
+		0x8a2c34fcbd56ca17,
+		0x478a329feb5ad983,
+		0x897a51cfe74ac6df,
+		0xb5af2382184ef65d,
+		0x19fd85c5487325c9,
+		0xdceb98fba6984537,
+		0x8a5fd41cb27964a3,
+		0x3846ad7cb37c8421,
+		0xf3684e2baf4e817d,
+		0xf9d2a57cbc418fd9,
+		0xeda1bc61fc53be47,
+		0x4327ebd21a46cdb3,
+		0x7bd192354a59ec31,
+		0x29c76155463bfa8d,
+		0x2d931ea8764e1af9,
+		0x426f987dc8523a67,
+		0x75abd49dc24658d3,
+		0x85caf37fe24a7851,
+		0x53b8f71fef2b75ad,
+		0xd6a843521f3e952b,
+		0xbead28365e41c397,
+		0x52439c887b45c2f3,
+		0x862bec1a9b48e271,
+		0x5b43da998627efbd,
+		0xf395b2eba74c1f3b,
+		0x7156da3dc53f2ea7,
+		0x4cdbe311f7436d15,
+		0x1dfb934324356c81,
+		0x15ce7285412769ed,
+		0xa2538d654f1c895b,
+		0x64938fc65d1ea8c7,
+		0x1e6bf93bac21d835,
+		0xf67b89adcb24e6a1,
+		0x138945adc927e51f,
+		0xdb237181f82a147b,
+		0xc963fad5481c23e7,
+		0xc951e6f8781f4265,
+		0xadebc13a963472c1,
+		0x34c5b87a93157e2f,
+		0x4ea79c176df57e8b,
+		0x125d3c876be89cf7,
+		0x56e1289ba9fdbc75,
+		0x5d41837cb7efcad1,
+		0x6974f5a218d2e94f,
+		0x9e84db7437f518ab,
+		0xdb69f47656fa3829,
+		0x76c9b2a984fc3795,
+		0x72bdac1a93ed56f1,
+		0xe49af5dcb2e1846f,
+		0xde14385bafe483db,
+		0xb3768e51fde7b249,
+		0xbe7af6d32de9c1b5,
+		0x2a3df8b549dbcf13,
+		0x4bad576436aecd7f,
+		0x8543179767c31deb,
+		0x9c31d52ba7e62d59,
+		0xdcf73b6ba4e83bc5,
+		0xa2637f5ed2ec6b43,
+		0x42ad738fe1cd589f,
+		0xda2b7c3543e2981d,
+		0x65713e932fd3b679,
+		0x58429d643dc7b6e5,
+		0x1498d6b87bcad563,
+		0xf9edb787679ad3bf,
+		0x42e5d67a97aef23d,
+		0x8f17362fe7d432a9,
+		0x5e8a64d1f6d85217,
+		0xb5293fc214c95f73,
+		0xe1a4986432a95dcf,
+		0xc39b8f7651ae7c4d,
+		0xfa2e6b465fa18cb9,
+		0x35f17ad98ea4cb27,
+		0xe65ac7398cb6da93,
+		0xdc41253cb698c7ef,
+		0xb4cd253fe59bf76d,
+		0x683517c327af16d9,
+		0x2c8af16659c23647,
+		0x26c759a984c765b3,
+		0x2cad361a94ca8531,
+		0x3862ab7a91ab728d,
+		0xf39b162bae7d81f9,
+		0x81a4e65dcd91bf57,
+		0x15be3821fa84bec3,
+		0xcd49bf832b97ed41,
+		0x8b49f6132867fb9d,
+		0x38ac9be6578d2c1b,
+		0x4c1fb2a7659f2b87,
+		0xf5ac768cb6a259e3,
+		0x768ebafed3b57961,
+		0x8bfa179fe19876bd,
+		0x5d78b26fef7c963b,
+		0x4853e7d21f6eb4a7,
+		0x1c79b8a76e92d415,
+		0xc1e358276c95e381,
+		0x3962dea65976f1ed,
+		0x572861bdc98a215b,
+		0x69cf48dba56c2fb7,
+		0x274eb16dc68f4e25,
+		0x4513b971f4836d91,
+		0x4a59f68212746afd,
+		0xea652b4431578a6b,
+		0xd5e9c8a43f4ba9d7,
+		0xb43d59287d6ec945,
+		0xa18c547a9c62e7b1,
+		0xe3d9a87cba74e62f,
+		0xb2c3f54fea67158b,
+		0xc968475fe86a24f7,
+		0x9265cde2198d4375,
+		0x7e2d9f65457f63d1,
+		0xb86df14a9573814f,
+		0xafbc764981547f9b,
+		0x5f2e3a698f47ae19,
+		0x4358efda9e3abd85,
+		0x284de56ba94dcbe1,
+		0xe2165a3ed941ea5f,
+		0x68f7de432a5419cb,
+		0xcdb52f854b572a39,
+		0x9483c1b7674b38a5,
+		0xfd685b4ba75d6813,
+		0xf4b6d9eba23e657f,
+		0x172f58bdc15284eb,
+		0xce517b8edf26b359,
+		0x38b27591fe38b2c5,
+		0xce5d4b732e5bd143,
+		0xa2c5b744392bce8f,
+		0xcf2794a769421efb,
+		0x26b49df98a342e69,
+		0xd6c53b4ba8273cd5,
+		0xf8c356eed72a6c53,
+		0xb534279ed32c59af,
+		0x7f685cafe13f792d,
+		0xa68e91f54132b789,
+		0x85e1dc943e14b7f5,
+		0x327cfbd65e19d673,
+		0x25e4dc776a19d4cf,
+		0x3794bf19891cf34d,
+		0xaceb9f1eda4123b9,
+		0xad7fb89fea165327,
+		0x6e9a7d41f7286193,
+		0x3de7894324185edf,
+		0xedcf1a65431b7e5d,
+		0x3c472966521f7dc9,
+		0xb592e8f76ef1bc37,
+		0x59f42d187cf4dba3,
+		0x46c5eb3a9bf7ea21,
+		0x3925d46cb6e9f87d,
+		0xb7cf2e4ed6fc17e9,
+		0x79e2f68219ef2857,
+		0x36bdec9548f256c3,
+		0xab3e7c4a95f78641,
+		0xfe14b97762f8739d,
+		0x94fe367982fc931b,
+		0x71c8d24a9fdeb187,
+		0x58cfd74a9ac1bfd3,
+		0x93ac71d1fac4de51,
+		0x765928f218b5fcad,
+		0x89cbd61548e91d2b,
+		0xd853196546ed2c97,
+		0x41e35d6876ce4af3,
+		0x856f137cb5e36a71,
+		0x154e29dba2e467cd,
+		0xbe91f78ed1e8974b,
+		0xb956a4ffefdca5b7,
+		0x4b6ed5821fbec625,
+		0x2618bc365dc2e491,
+		0xd12b478659a4e2fd,
+		0xb35861f87ad8126b,
+		0xaf3ec71a98ca31d7,
+		0x278f134ba7bc4f35,
+		0xa1623eddc4bf5ea1,
+		0x3d96748fe4b37c1f,
+		0x2ea3f86212d48c7b,
+		0xcb1892a431c69ae7,
+		0x98517f443f9bca65,
+		0x123f67b65b9ed8c1,
+		0x53fe46998ba1e73f,
+		0xb416a89edac4169b,
+		0x718a492feac83619,
+		0x674c5e11f7cb3485,
+		0x36f7a4b327ac64e1,
+		0xd51ef29434ae725f,
+		0x4da8eb9764a381cb,
+		0x2365bac871b5af29,
+		0x5cbf87a76f87be95,
+		0xd647cfb98d79bcf1,
+		0xf15e263ba97cdb6f,
+		0x3495ead1f9821adb,
+		0x879354c21ca52b49,
+		0x3f4189c328a739b5,
+		0x8ac6243657ab6923,
+		0xbd9ef838739c568f,
+		0x86d7be5a928e75fb,
+		0xf46b832ed1a2b469,
+		0x218d4afdcf86b3d5,
+		0x4d93c851fe89d253,
+		0xafe46bc32c69d1af,
+		0x1f74b654396bef1d,
+		0x81b4d6765b812f79,
+		0x239cb5d879843de5,
+		0x5ac71decb7985d63,
+		0xf89be54dc3685abf,
+		0x9af1468fe26c7a3d,
+		0x5bd6278fe15f78a9,
+		0x8621d7554283c917,
+		0x9e4acf132f65d783,
+		0xd756cb843b47c5df,
+		0xe32b96887b6af45d,
+		0x9e1cfab98a6e14c9,
+		0x873aeb1edb915437,
+		0x271fc58fe98562a3,
+		0x79b136a1f6798321,
+		0x79e5ca6213497f6d,
+		0x472dcf94324b7ed9,
+		0x537ecfb7615fad47,
+		0x49ce31b87f52dcb3,
+		0xe3af714a9d56eb31,
+		0x1e632b8bab36f98d,
+		0x76f2345eda4b18f9,
+		0x8d6179e1fa4e2967,
+		0x9d6be4832a6157d3,
+		0xc62b79f43a648751,
+		0xc217e659853674ad,
+		0xec591bf9835a942b,
+		0x4e6dc5fba14db297,
+		0xdf68531a9d4eb1f3,
+		0x43a2e7dcbc43df61,
+		0x7815394dc924febd,
+		0x31e74cb32c481e3b,
+		0x89237fe5493b2da7,
+		0x4b31a288793e4c15,
+		0xf21c837ba9426b81,
+		0x4f9658bba52368ed,
+		0xae2bf85ed326985b,
+		0x4c31d86fe129a6c7,
+		0xc6a927dfef1dc735,
+		0x17da4b243e2fd5a1,
+		0xce7439a76c23e41f,
+		0xfb6415d98d26137b,
+		0x762d43998b1932e7,
+		0x3c2f697cba2c4165,
+		0x6be3f29ba72d5fb1,
+		0x384d167dc6317d2f,
+		0x465ed791f4137d8b,
+		0x9716ef8323159bf7,
+		0x5dbc7a654219cb75,
+		0x8edc13954efac9d1,
+		0x42e698d65aecd84f,
+		0xa416f2c98cf217ab,
+		0x179fae8dcbf53729,
+		0x184567aedaf83695,
+		0x28a59e4ed7ea65f1,
+		0xa69b354215ec736f,
+		0x8aed765434ef72db,
+		0x64cedf9875f3b149,
+		0x8a9c3f2871e4bfa5,
+		0xac2df6b87fd8ce13,
+		0x371ecdb76ab9dc7f,
+		0x46732b59879cfaeb,
+		0x269e14b1fae12c59,
+		0x3274ecd219e43ac5,
+		0x6ced581329e86a43,
+		0xfe1498c434da579f,
+		0x73cd2af764ec871d,
+		0x7a1f42b982dfa579,
+		0xd47efbcba1d2b4e5,
+		0x9264d8ecbfc7d463,
+		0xa85b7d2feca7d2bf,
+		0x5b6418e32cbaf13d,
+		0x32cf6e854bce21a9,
+		0x78cdb39769b13ef5,
+		0xd9e1c2f989c45e73,
+		0xdc35694984a65bcf,
+		0xbd539c1ba3c97b4d,
+		0x5764dbafe2cd7ab9,
+		0xf1b6c57fe1cfba27,
+		0xa9cebd1541c2d893,
+		0xa1b536932d94c6ef,
+		0x87ab2cd43ca8f56d,
+		0xa428bf776cab15d9,
+		0xe45ad82a9abe2547,
+		0x6f185c2ed9c164b3,
+		0x58439dafe9c68431,
+		0x5e1639c1f4b6718d,
+		0xd2af3b5213a87fe9,
+		0xb27aef44329cae57,
+		0x7b9d8fc6518fadc3,
+		0x638eadb87f93ec41,
+		0xb319e2a76c74fa9d,
+		0x73286ebdcd982a1b,
+		0xc7846b3feb9c2a87,
+		0xe68acd31f79d48e3,
+		0x5d8146a43ab27861,
+		0x5df4e873269375bd,
+		0x1d359ef764a7953b,
+		0x9d52bc376289b3a7,
+		0x91fd64bba29dc315,
+		0xc537f6ebae7fd281,
+		0x5afe73ba9a62efcd,
+		0x861fbc7fec861f4b,
+		0xbd5679821c682eb7,
+		0xd8f21a643a8b4d25,
+		0xa1e5b685487e5c91,
+		0x32c75f69857169fd,
+		0x1a24d7bdc473896b,
+		0xda56f98dc265a8d7,
+		0xc915bd6fe17ac845,
+		0x5ac31f7fef5cd6b1,
+		0xae54b3921c6ed52f,
+		0x34bc8e665e73148b,
+		0x8f7ad4165c8623f7,
+		0xfe8c5b3a9c8a4275,
+		0x618fc7dba97b62d1,
+		0x5263b14ba75c6e3f,
+		0x8e1b4f6ed4517e9b,
+		0x6c2a9db1f364ad19,
+		0xf24735621246bc85,
+		0xb36ac1254258cae1,
+		0xb36fc2954e3bd95f,
+		0xcb47e8f65a3ef7cb,
+		0x7a68513cbd642839,
+		0xf49aec7edc4637a5,
+		0xf2b196dfeb5a6713,
+		0xf6c8271fe83b647f,
+		0x984e2fa2164d73eb,
+		0x86f3b2554761b259,
+		0xd9175f698364b1c5,
+		0x8a4d32ca9157cf23,
+		0xb41c29576e27cd8f,
+		0xe53c48987a29ecfb,
+		0x1a7e523dcb3f1d69,
+		0x23ed1851fa423bd5,
+		0xe9f38c421c276b53,
+		0xda271e94392758af,
+		0x4fec76a6563b782d,
+		0x4c258bd8742ea689,
+		0xd2e9647ba431b6f5,
+		0x619f872dc124d573,
+		0xf9841b3bae16d3cf,
+		0xc46a281fec19f24d,
+		0x756ac9d54e3d12b9,
+		0xd9c352b76c3f4127,
+		0xd685e4987b125f83,
+		0x3ef24cd878145cdf,
+		0x7c152d3ba6187c5d,
+		0x27495a6ed41a7bc9,
+		0x7164c3fed41eab37,
+		0x5e1b4621f421d9a3,
+		0x928c3a776435e921,
+		0x1ba8f9532ce4f67d,
+		0xc52396d54cf816e9,
+		0xbaf9ed298bfc2657,
+		0x7a35e1f989fe45c3,
+		0x37baf84dcaf28541,
+		0x3a6d8efdc6f4729d,
+		0x631c52bfe5f7921b,
+		0xe2b6fc8213e9af67,
+		0x7ad1689542fbaed3,
+		0x9e4df75762efcd51,
+		0xc76efd265ec2fbad,
+		0xb3ef7d998de61c2b,
+		0x6dce97fbace82b97,
+		0x4965bdedc8db49f3,
+		0x4a6b5dc1f8de5971,
+		0xe37d8ca328e176cd,
+		0x4ade735327e3964b,
+		0xc8d167e653e6a4b7,
+		0xac624fe983eac425,
+		0x3d7baf4982ecd391,
+		0x3159f4887b9ec1fd,
+		0xf3e485adced4216b,
+		0x3fd84acfeab52fc7,
+		0xb52afd621bc94e35,
+		0x2a19865438cb5da1,
+		0xb1af59d547ad6b1f,
+		0x7e2dcf3765d18a7b,
+		0x315af76984c3a9e7,
+		0x2a8fc61cb2d7c965,
+		0x1ba4853fe2b9d7c1,
+		0x67e43dbdce9bd63f,
+		0x2789ecb21d8ef49b,
+		0xbac21d776ec43519,
+		0x4a31fb776dc74385,
+		0xe85a19387ab963e1,
+		0xbd7163fa98ab715f,
+		0x6b1c28ea948d6fab,
+		0x167c82aed5b1ae29,
+		0x9451de71f2a3bd95,
+		0x7ba6ef132396cbf1,
+		0x7a4d15b43198da6f,
+		0xa472d9643e6af8db,
+		0xb91cd2a76d8f1a49,
+		0xdfb16cea9da238b5,
+		0xb59a7f2edcb76823,
+		0xe7b1c56ed7a9658f,
+		0x15fbcd8fe58a74fb,
+		0x784cd362158ea369,
+		0x35c6def54691b2d5,
+		0xbe7195d984a6d153,
+		0xc7e129476175ce9f,
+		0xc8d1e2687c68fe1d,
+		0x6b3e579bad6c1e79,
+		0x6843572cba7f2ce5,
+		0x9d528b71fb925c63,
+		0x7c5e96d21a7459bf,
+		0xe4d93fc32a68793d,
+		0x4e5f6b24345c87a9,
+		0x3d8cfb6a946eb817,
+		0x4c52a7ecb491d683,
+		0xe96d3c2ba173c4df,
+		0x52146e9cbe67f35d,
+		0x954267c1fe6a13c9,
+		0x6534dac21e8d4237,
+		0x3fd1e5c54c7f51a3,
+		0x7eb2c3a549625def,
+		0x2f67519989547e6d,
+		0xe53c78bba5467cd9,
+		0xba26573ed35bac47,
+		0x795a2beed25ecab3,
+		0x572839c1f472ea31,
+		0xb4635de32153f78d,
+		0xae8b2f543e4617f9,
+		0xebf928165e4b2867,
+		0x9bfc71e98b5c46d3,
+		0xf93862dbab4f7651,
+		0xd6a843fdc95273ad,
+		0x2b83719fe856932b,
+		0x17d6b521f548b197,
+		0x6f543d721549afe3,
+		0x1ae32d76534dce61,
+		0x531a42f76241fcbd,
+		0x56fa1be98f451d3b,
+		0x3abde1ca9e362ca7,
+		0x4725da9dcd3a4b15,
+		0x1fdc295feb3d5a81,
+		0xbe41723dc82f57ed,
+		0xa43275621a32975b,
+		0xe2d96f143824a5c7,
+		0xb95c1f398729c635,
+		0x9653c4e9853bd4a1,
+		0x2e61c83a924cd31f,
+		0x8ab754edcf43127b,
+		0xd768f32dcd2531e7,
+		0x9cb5fd1fec183f45,
+		0xdc7e9a543c295eb1,
+		0x2f958b75491b6c2f,
+		0x87ce5d15471f6c8b,
+		0x762fd1b986129af7,
+		0xc71634dcb614ca75,
+		0xea3f96dcb427c8d1,
+		0xbde7243dc21ad74f,
+		0x16f3e47a9decf5ab,
+		0xd96841543def1629,
+		0x7ea5b1f76df23495,
+		0xd21fbce65be764f1,
+		0x2a7893f65ae9726f,
+		0x95234b1986fa71db,
+		0x47f386bba5ed8f39,
+		0x732d64fdc4f1bea5,
+		0xa92d8b1fe4f5cd13,
+		0xe3859da212e5db7f,
+		0xf8ba617431d7f9eb,
+		0x3f719a854fed1b59,
+		0xca3147576bdf29c5,
+		0x6175398bace26943,
+		0x963f8c7cbad4569f,
+		0x76892f3dc7e9861d,
+		0x76814eb1f5eca479,
+		0x78ba24c216cda3e5,
+		0x8ba146d657e1d263,
+		0x9ebfa15763c4d1bf,
+		0xec52f1a871b6ef2d,
+		0xb354acd76eca1f89,
+		0x5ab192c98cab2df5,
+		0x5b43d2edcabf4d73,
+		0x46d8bfcfe8b25acf,
+		0x9dc7385219c57a4d,
+		0x7c5eab4325d678b9,
+		0xf9c16b5545dcb927,
+		0x1a2b95f764bec793,
+		0x453b219983a1c5ef,
+		0x8cb631eba1b3f46d,
+		0xb87e94ddcfb714d9,
+		0x5e783a91fecb2347,
+		0xd69e74f21ead52b3,
+		0xfc2371465cbf7231,
+		0x3e2cb67549a26f7d,
+		0xa21b9cd656a47de9,
+		0xf8de374a94b8ad57,
+		0xb1952aced489abc3,
+		0x1ad68e5dc39edb41,
+		0x4fc2b97fe2a1f89d,
+		0xf51de6c543c5291b,
+		0xe76bfcd43fb62987,
+		0xf4d6b8265d9a47e3,
+		0x21ea3cb98cad5761,
+		0x2546ea98798f64bd,
+		0x9b6231fed8a2943b,
+		0x8a24d5ffe695b2a7,
+		0x578b3d11f6a9c215,
+		0xc8e1b393248acf71,
+		0x8cd5e6a4326abecd,
+		0xf25bcd8873921e4b,
+		0x85b72da76f842db7,
+		0xb271c84bae984c25,
+		0xe295d6adcd7a5b91,
+		0x2b34e59dc96b58fd,
+		0x483c269fe95f786b,
+		0x83bf25721982a6d7,
+		0xd416e5b32896c745,
+		0xe1c4a9876478d5b1,
+		0xd6b91739837ad42f,
+		0x1548c7da916df28b,
+		0xf9c2674cbe8132f7,
+		0x1357469ede964175,
+		0x48b2c51feb675fc1,
+		0xd49ca6321b596d3f,
+		0xfb379ca3284c6d9b,
+		0x1b785e35475f8c19,
+		0xe8651a7a9762cb85,
+		0xfb5418eba465c9e1,
+		0x74e1cfacb247d85f,
+		0xb271e5fed149f6cb,
+		0x85cae26edf5e1739,
+		0xf46d7eb32f7136a5,
+		0xefc6a8354e857613,
+		0xf439eb265c48637f,
+		0x4fd59e176a4972eb,
+		0xd1af52ccb84da159,
+		0x15b26dfba63e9fb5,
+		0x9658bf1ed764ce23,
+		0xda56738fe234dc8f,
+		0xefd8bc321236eafb,
+		0xedf846a6524b1c69,
+		0xd3a84fc76f3e2ad5,
+		0x513842aa9e416a53,
+		0x1b82acda9c2357af,
+		0xbf94e16dcb36872d,
+		0x9345fa8fe72ba589,
+		0x5d13a8cfe72ca4f5,
+		0xbdc542e2182fc473,
+		0xef17d3965643d2cf,
+		0xbd79eac98536f14d,
+		0x73d94fcba34821b9,
+		0x482536aa9e2b3f17,
+		0x254b38fbac1d4e83,
+		0x6b7981fdca215bdf,
+		0x4ce8b571fa137b5d,
+		0x64fdba532b157ac9,
+		0x5ec7f3654819ba37,
+		0x1ace3676561dc8a3,
+		0x54b683ea963fd821,
+		0xcf6e953ba412f57d,
+		0xe963182dc32615e9,
+		0x1e56fa2dcef92457,
+		0xb3a2847fedfa54c3,
+		0x96eba1832cfd7341,
+		0xb2e716543aef619d,
+		0x613a2d9548d27ef9,
+		0x2c8d3a1658f4ae67,
+		0xda94e53985f7acd3,
+		0x2aedf48a94fadc51,
+		0xe73c69b982fce9ad,
+		0xd764f8cfe4f31a2b,
+		0x5ea4c61431f42a97,
+		0x5dec7b132ed748f3,
+		0x783519a54deb5871,
+		0x83a126d549eb65cd,
+		0xc2ab6e1879df854b,
+		0xb5496fddc8e2a3b7,
+		0xecf9b42ed8e7c325,
+		0xc637b121f5e8d291,
+		0xd7c2a86213a8bfed,
+		0xac7586f432acfe5b,
+		0xeb48712763d12ec7,
+		0x2c1b54798fc64d35,
+		0xa97253498ed75ca1,
+		0xfca4d1b98bc96a1f,
+		0x81ac436fe8cd697b,
+		0xa82735eed5bf98e7,
+		0xdb2c794219d2c865,
+		0xafc45d1437b5d6c1,
+		0x453b97f764b8d53f,
+		0x7e3af58762caf39b,
+		0x8fe7b46ba3ce2419,
+		0x1c2a764cbfc14285,
+		0x29d3b71dcdb562e1,
+		0xe2843cbedba76e4f,
+		0x6d9475a21c986eab,
+		0xcd695fe437ac8d29,
+		0x41657fa4368fac95,
+		0x36c52b487693caf1,
+		0x3ecf2da983a4d96f,
+		0x7edf4c2ba296f7db,
+		0xc3d2495fe2bc1849,
+		0xc29f416edf9e27b5,
+		0xa7359ed54fb16723,
+		0xe3d41a932da3648f,
+		0x129df8754c9673fb,
+		0x823746f65c8ba269,
+		0x86cead7a978ca1d5,
+		0x149253eba68ebf43,
+		0x1e6275ccb472cd9f,
+		0x6adc497fe385fc1d,
+		0x4316f5d323a81d79,
+		0xd953b2f5418a2be5,
+		0xbcf47ed65f8e4b63,
+		0x87c39f276d7158bf,
+		0x479d1fbbac94783d,
+		0x2f76853edc7586a9,
+		0xc462358fe98ab617,
+		0x8bd21e61f67dc583,
+		0xf24c79a2156eb3df,
+		0x8f5a7cd54683f25d,
+		0x28ba9438748612c9,
+		0xc81a973cb29a4137,
+		0x5ba126498e6b4f93,
+		0x2965fc398a5b4cef,
+		0xc659384feb517c6d,
+		0xeb3d9861fa537bd9,
+		0x2da46b821c56ab47,
+		0x8653edc32758c9b3,
+		0x913a7626576cd931,
+		0x1fd9c8e8734fe68d,
+		0x2c86497cb47316f9,
+		0x7e2a136ed1982567,
+		0x719de48dcf6945d3,
+		0xc7a25e31fe6c7451,
+		0x48cebf721c4e62ad,
+		0xa76e42165d63912b,
+		0xda7621865b43af87,
+		0x14dcf5387846ade3,
+		0x9c273ebba749cd61,
+		0x6b759d198439eabd,
+		0x78b136ddc24efa3b,
+		0x451b69d1f1532ba7,
+		0xf1584cb432674a15,
+		0x8a5f96d54f3a5981,
+		0xed683af54c2a56ed,
+		0x6984f3287c2e865b,
+		0x3a5f67ba9b31a4c7,
+		0x97134abeda26c435,
+		0xd837bcffe847d3a1,
+		0x63c2a8ffe649d21f,
+		0xa5d2b942142aef6b,
+		0xb27189c6543e1fd7,
+		0xabfd186a91623e45,
+		0xe43a5f698f265db1,
+		0xd1cb6f4a9d186b2f,
+		0x53ed218a9d1c6a8b,
+		0xaf16527dca1d89f7,
+		0xd3c14ea1fa21c975,
+		0xb2a48f143924c7d1,
+		0xb5d782e43817d64f,
+		0x8efb24c76518f4ab,
+		0x37be649ba63d1529,
+		0x472a5c9cb41f2395,
+		0xd2834ecbade263f1,
+		0x261daf9cbce4716f,
+		0x3a92e4fed9e56fcb,
+		0xa29465321bfa8e39,
+		0xfd39ec7327fc9da5,
+		0xecb7186657efbc13,
+		0xfa19c48765e2da7f,
+		0x6c32e89873d4f8eb,
+		0x83d9572dc3f81a59,
+		0xc48e56fed1fb28c5,
+		0x12b9584dcfde5843,
+		0xbe46c1a32ed1659f,
+		0x51ab46243ce4851d,
+		0xd6ace7254ce6a379,
+		0xb97de13768d9a2e5,
+		0x51bf6dea98edc163,
+		0x2d896a38749dbeaf,
+		0x18e73d6ba5b3fe2d,
+		0xb15d2481f3d51e89,
+		0xba27f56213d82cf5,
+		0x971b38c651eb4c73,
+		0x7e2a69c43ead49cf,
+		0xfd37e4876ec1794d,
+		0x7df491276cd387b9,
+		0x5f4ed81dcad6b827,
+		0x3f478c5fe7dac693,
+		0x1c56e82ed59ab4ef,
+		0x2768d54215afe36d,
+		0x3db6789656c413d9,
+		0x8be1d6ca95d83247,
+		0xed3cab1982d951b3,
+		0xcfd14b398eab6f21,
+		0xda9bfe198b9c5e7d,
+		0x5a7329eedba17ce9,
+		0xbc139851f9b3ac57,
+		0x75b236e21896bac3,
+		0xc2bd841437b9da41,
+		0x6dbcfea4348be79d,
+		0xf5cb7a87649ef71b,
+		0x25e4389cb4c32687,
+		0xa65943ddc1b746e3,
+		0xf4ec5a1edfba7561,
+		0x45c28611fe8a63bd,
+		0xc9be8d421d9e823b,
+		0x85b3fa654d92b1a7,
+		0x863b9df65984aef3,
+		0xe983a1765896ce71,
+		0xe9fb5da98467ebcd,
+		0x3ed8ca7a937afc4b,
+		0x486ef2aed38f1cb7,
+		0x9826d5a1f1a34b25,
+		0x54e6da8432b65a91,
+		0xca59f7132e6857fd,
+		0xb416e2f43e5c876b,
+		0xae5619854b6e95d7,
+		0xbec9453bab91c645,
+		0xe9842b3dc985d4b1,
+		0xd9375e8dc687d32f,
+		0xa9cb2d6fe469f18b,
+		0x1ba9f684358c21f7,
+		0xd9873b15438e2f65,
+		0x95146eb872835ec1,
+		0xc7539ab98e756c3f,
+		0x7c293fd98e476c9b,
+		0x69fd5e7bad5c8b19,
+		0x238bae4ed94eba85,
+		0x5de937b1f962c8e1,
+		0xe9ba4fc21963d75f,
+		0x4acfb5732746f5cb,
+		0x4c2fb739857b1639,
+		0x78c5a1da937d24a5,
+		0xcf247d1cb28f6513,
+		0x264e89dcbe53627f,
+		0x19428a5dcd4571eb,
+		0xfc87b4dfec378f49,
+		0xa652c9821c3a9eb5,
+		0xc75f2935495ebd23,
+		0xd679ab865741db8f,
+		0xabc5ed387643e9fb,
+		0xae9f743dc5471b69,
+		0xd1a3e7bdc34a29d5,
+		0x96bf537fe16d4953,
+		0x45f6ad2dcd2e46af,
+		0x92a7bfe21f43862d,
+		0x96eb82143e25a489,
+		0x4a8df3776c28a3f5,
+		0x41c7ea398a4bc273,
+		0xecb35619873db1cf,
+		0xe51f96dba741ef3d,
+		0x986c4e3ed6341fa9,
+		0xb958d341f5483e17,
+		0x5768fcb2152a4d83,
+		0x72c34f66512b4adf,
+		0xe5c37ab54e1f6a5d,
+		0x952caf476e1278c9,
+		0xe9c7361bad15b937,
+		0xa9512c8edb18c7a3,
+		0xa71c98ffe93bd721,
+		0x95b6ced1f61ce47d,
+		0xa9876d26583214e9,
+		0x1e264d5989162357,
+		0xbd782faa961852c3,
+		0xf781624ba53b7241,
+		0x28f13bd76cea5f8d,
+		0x15834ae87aec6df9,
+		0xafd4592dcbf1ad67,
+		0x93f2a16fe8f4abd3,
+		0xf156ac4329f7db51,
+		0xfe5b319325f7e8ad,
+		0x798ed26545ecf82b,
+		0x8f9a5c2764ef1897,
+		0x4ef8cb6ba5e247f3,
+		0xf5b23a1dc2f85671,
+		0xe23cfb4bafe864cd,
+		0x16e2d4a1fdec834b,
+		0x8f6d5c721cde92b7,
+		0xc849eaf76be3c125,
+		0xec8ba49659d4cf81,
+		0xd6a175c546a5bced,
+		0xca4ed81874c8fd5b,
+		0x5ab4dcea94eb1dc7,
+		0x97af58ccb4df2c35,
+		0x2c1d9481f2e35ba1,
+		0x54da218432d5691f,
+		0x8a9467132fd9687b,
+		0x96fecd843dcb96e7,
+		0xc391e8f54aceb765,
+		0x1cd5fb2989b2d5c1,
+		0xcb23759ba8b5d43f,
+		0x5b28f9ced5c6f29b,
+		0x3dab2ec1f6db2319,
+		0x74b6a1c326cd3185,
+		0x97c6deb653ae4fd1,
+		0xd5ce149871b26d4f,
+		0xc6bfd8e65f946dab,
+		0x7fd48a176eb78c29,
+		0x8b6ad3987d8cab95,
+		0xf786b5edc78db9f1,
+		0xba371f8fe7a1d86f,
+		0x72e4a5b21793f6db,
+		0xbdc68e2436c81749,
+		0x2f6815e874ca26b5,
+		0xa5dc48ba94bd5623,
+		0x7f1e48da91ae538f,
+		0x3b61d92bae9372fb,
+		0x6384f7aedeb5a169,
+		0x9ca15fdfeb879fc5,
+		0xb4ac87221c8abe43,
+		0xd5f63e73276dbc9f,
+		0x2c36b7865782fb1d,
+		0x5e9bad1986a41c79,
+		0x93a21e5cb4972ae5,
+		0xe9ba823ed29b4a63,
+		0x95bef2ced18c47bf,
+		0xb54f31adce8f673d,
+		0x47da25f21f7285a9,
+		0x9a47fc143e96b517,
+		0xb9f137a65d79c483,
+		0xcfe4b2165869b2df,
+		0xa6825bda987ce15d,
+		0xb2c1976ed78321c9,
+		0x987cfe4ed6953f27,
+		0xbe63d1c1f2874e93,
+		0x4a732e5212684bef,
+		0x486ad9c4317c5b6d,
+		0xdfe641543e4f6ad9,
+		0xa5d4cbe98e62ba47,
+		0x5ca36bda9d65c8b3,
+		0x478f3d9dcb69d831,
+		0x8673ae1dc74ae58d,
+		0x724a5f9ed65ce4f9,
+		0xc24e57643a912467,
+		0x8efd46a3278654d3,
+		0x73594dbba4897351,
+		0xfa5ebc69825961ad,
+		0x4ae5d7398e4c7f1b,
+		0x16d5493bac3f9e87,
+		0x17bca6fedb52ace3,
+		0x61ba3ce1fa45dc61,
+		0xa26fc9e21836e9bd,
+		0x51fd6c83274af93b,
+		0x213ebd46564e19a7,
+		0xe8a9f3ccb8724915,
+		0x87d29afdc3645781,
+		0x6849172cb13765ed,
+		0x56bc328edf2a845b,
+		0x7e51da41fe2d93c7,
+		0x65af2cd21d4fb235,
+		0x21fc95d76c54d2a1,
+		0x8cf3d1265824befd,
+		0x8c9176465827fe6b,
+		0xbf3ea57a963a1ed7,
+		0x289765ccb73e2d45,
+		0x13fc698fe6425cb1,
+		0xd84cfa1fe1346a2f,
+		0x8ec716f43125698b,
+		0x58a47be43e1a98f7,
+		0x7e8263c54e1db875,
+		0x1c96eb487a2fb6d1,
+		0xfb7386aa9a12d54f,
+		0x38bd65adc815f3ab,
+		0xab768d1fe83a1429,
+		0xa195e721f71c3295,
+		0x619e5bf5473d52f1,
+		0xbf8ac9e874216e5f,
+		0x5e916c8872136ecb,
+		0xacf53d876ef58d39,
+		0xf95a8cb76df79ca5,
+		0xe5c7f49989facb13,
+		0x84c195eba6edc97f,
+		0xae54126dc6d1f7eb,
+		0x86ba79e32af41859,
+		0x2a6584d436f827c5,
+		0xa67cde1986fb5743,
+		0x65312cf872ec549f,
+		0x81245aba92ef741d,
+		0xe539d7ccbfe3a279,
+		0x3da127fcbcd6a1e5,
+		0xf85946bfead8bf53,
+		0x5fe86ba217c8bdaf,
+		0xeb294da437abec2d,
+		0x2bd7369657e21d89,
+		0xcaf5e93987d42bf5,
+		0x45fbd12ba5e84b73,
+		0xf379148ba2d948cf,
+		0xc72653dcb1ec684d,
+		0x12c5634edecf76b9,
+		0x82eac9321fd3b627,
+		0xdb459c832ed6c593,
+		0xe1b5ac7549a7b3ef,
+		0x12f94bd658bae26d,
+		0xc5ae4b3876acf1d9,
+		0xb3421d7dc9d23147,
+		0x6184c75ed6c54fa3,
+		0xc795e611f4c86e21,
+		0xcdb93e8212b95c7d,
+		0xf1957e4431ac6be9,
+		0x4b7a9c643eaf9b57,
+		0x92b1a8e76ea2b9c3,
+		0xed43b1298cb6d941,
+		0xa9c7483cb8a7e69d,
+		0xb4c56f8ed79af61b,
+		0x156b3d81f6be1587,
+		0xbd3917a328b145e3,
+		0x1bdac54438c57461,
+		0x3ab9ec4653a762bd,
+		0xfd2a19c872ca813b,
+		0x26183cf65e6c8f97,
+		0x3467a9e98b7e9df3,
+		0x8ac67f9feb93cd71,
+		0xc2a6d7e1f874eacd,
+		0xcd4b98721987fa4b,
+		0x5a276dc4368c1ab7,
+		0x715debc7679e3a25,
+		0x63fce75ba6b25891,
+		0x7be5284ba29356fd,
+		0x46e89baed1a7856b,
+		0xf436de1dcf6a94d7,
+		0x8964e711fe8db345,
+		0xfbc931632d7fc3b1,
+		0xae9c72665b84d12f,
+		0x24a815b43964ef7b,
+		0x8cd2479659681fe7,
+		0xc25b9e3ba78b2e65,
+		0xbe46d87ba57e4dc1,
+		0xafec596ed4816b3f,
+		0xb2749a81f1736a9b,
+		0x57f4e2a432768a19,
+		0xda8c53432f4ab985,
+		0x83abd5e54d5cb7e1,
+		0xd28b6fa87a4ec65f,
+		0x42c56d398962f4cb,
+		0xbc42983edb871539,
+		0xc46a238fe87923a5,
+		0x1a87ed21f78c6413,
+		0xdae98f63246d517f,
+		0xc2e6b73543516fdb,
+		0x35bac19871638e49,
+		0xecabf8287f369db5,
+		0x1ad267c98e59bc23,
+		0x6c185ae8793bca8f,
+		0xeb6c2d3ba73ed8fb,
+		0x153d72b1fb531a69,
+		0xd3f894721a4628d5,
+		0x4b381963296a4853,
+		0xf5483d28763b45af,
+		0x71a648ba934e752d,
+		0x6d3be7adc251a389,
+		0x9e75634cbe34a2f5,
+		0x471c2beede48c173,
+		0x72ba831ed927aebf,
+		0xf4375bd2192ace3d,
+		0xfbd6a4c4372efda9,
+		0xadce39798a543d17,
+		0xe1943c6ba9264c83,
+		0x9bd74f2ba52749df,
+		0x7f854a2dc32b695d,
+		0xa25f6beed12e67c9,
+		0x91db864fef21b837,
+		0x61e35a732f14c6a3,
+		0x39d287165e38d621,
+		0x24879fd65b19e37d,
+		0x75c9dba7681bf2e9,
+		0x2341aedcba3f1257,
+		0xcf29ab7ed92451c3,
+		0xc36921bed8276f31,
+		0x134dc6b1f3175e8d,
+		0x15ec9763231a6cf9,
+		0xc5792a85421e9c67,
+		0x8eb92ad54cef9ad3,
+		0x6afbcde87cf3da51,
+		0xe438a1c769f4e7ad,
+		0xc1fbd32ba9e8f72b,
+		0xc978e4aed8fc1697,
+		0xbe3a5f6dc7ed26f3,
+		0xf25671a439f26571,
+		0xf1369cd325f463cd,
+		0x7ae195b763f7824b,
+		0xa317fe5762fa91b7,
+		0x6ba2e5887edcaf15,
+		0x326f5c887acfbe81,
+		0xb182c3aa98a2cbed,
+		0x5fa19b3fe8d4fc5b,
+		0x1ecd4b8329e81bc7,
+		0x2f9e5b6548ec2b35,
+		0x2fde791656de49a1,
+		0x5b6f1e8a95d2681f,
+		0xbf741c8ba2e3867b,
+		0x16ac83dcb1d695e7,
+		0xa47891fdcfdab465,
+		0xd31c2561feadb4c1,
+		0xce78df521baec23f,
+		0x8f25b9a54ac3f19b,
+		0x85ca7ed76bd73219,
+		0xd59ebf8768c92f75,
+		0x7194bcd986ba4ed1,
+		0x628ae1da93ad5c4f,
+		0xdc23a71fe3d16cab,
+		0x6cb53d41f1d48b29,
+		0xad35741321d6ba95,
+		0x1a452bd43ea9b8f1,
+		0x8cfeb1543d9bc76f,
+		0xd79ec235498fe5db,
+		0xf63ced7babc31649,
+		0x216f975ed9c724b5,
+		0x39f12d8fe8ca6523,
+		0xf8c6423fe4ab528f,
+		0xdf1ba893249d61fb,
+		0xeba982f543b18f59,
+		0xb59e347761a39ec5,
+		0x4819bd276f97bd43,
+		0x28bed7665d67cb9f,
+		0xfbae2c39897bea1d,
+		0x346f195dc86efa79,
+		0x1235da91f8a329e5,
+		0xf695b2c21ab74963,
+		0xbdeaf6c3259846bf,
+		0x238efcd6549b763d,
+		0xabdfc157628e74a9,
+		0x31d2a67dc3a2b417,
+		0x36fda2ecbf95c283,
+		0x6e3bd54bac76b1df,
+		0x3c5b9d8fea68cf4d,
+		0xb4ec29a2185afeb9,
+		0x9f31d6c54a8f1e27,
+		0x9ca57b376a824d93,
+		0x32fd475986754aef,
+		0x2814af7cb3785a6d,
+		0x728d1a6dc25b68d9,
+		0x685b371ed16ea947,
+		0x5649183fef61c7b3,
+		0xb59837d32f85d731,
+		0xbfea9d432c56e48d,
+		0x986f1c554b58e3f9,
+		0x835d216a9b8d1367,
+		0x8fcd9e1ba97f42d3,
+		0x35f7a12eda947251,
+		0xae81692dc3645f9d,
+		0x1347b5d1f3587e1b,
+		0xb273d6e2124b9d87,
+		0x21bf7955415d9be3,
+		0xd65b8ea87f52db61,
+		0x2ea375c76c43e8bd,
+		0x7e281f3a9c46f83b,
+		0x685fc2aedc4b18a7,
+		0x75b892afea6d3815,
+		0x9fd714cfe95f4681,
+		0x6c4da9f2185264ed,
+		0xe734afd32746835b,
+		0x23c45787634892c7,
+		0x54d1bfea926cb135,
+		0xc25e8bd87e3dbf91,
+		0xeb3cd7598a31bcfd,
+		0xfde3b42dca23fd6b,
+		0x46d89ba1fa361cd7,
+		0x495e6ad21b3a2c45,
+		0xbf91e366583d4ab1,
+		0xd5c3b147673e592f,
+		0x5bd4e73ba532678b,
+		0x51389d4cb32496f7,
+		0x6184c2aed129b675,
+		0x62f1be7dcf2ab5d1,
+		0xd64a85cfeb1dc34f,
+		0xf87ec3254d31f2ab,
+		0x239ea4d87d461329,
+		0xfb63ed287c283195,
+		0xed53416878294fe1,
+		0x21ca873a971b4d5f,
+		0x576fceba941f5dcb,
+		0x7469d2bfe5128c39,
+		0xb8a67231f2149ba5,
+		0x73e61c465428ca13,
+		0xe7c5d4932de9c87f,
+		0xa695f14439fad6eb,
+		0x9b8e3a254adef659,
+		0xd758326a9af326c5,
+		0xd94e175dcaf85643,
+		0x45a68d9dc6e8539f,
+		0xcf75284fe5fb731d,
+		0x619a3fe324fe8179,
+		0x5e28a73543e19fd5,
+		0xdf54be6871f4be53,
+		0x6c3852b54ed5bcaf,
+		0x32145cd76ac8eb2d,
+		0x542ab38767dcfb89,
+		0x29d3175cb8ce1af5,
+		0x72b468a1f9e24a73,
+		0x7ba46e8218d547cf,
+		0x85f9d47325e9674d,
+		0x7e1c38a543ec75b9,
+		0xea1cb9f983dea527,
+		0x29d4c86ba2e1c493,
+		0xf61274b98da4b2ef,
+		0x95f3be7bacb7e16d,
+		0xfe93ac8ed8a7efc9,
+		0x7fd4a1c32abc1f37,
+		0xe2b5da9548bf2ea3,
+		0xd2caf81879c46d21,
+		0x39eb4f1986c45b7d,
+		0x21f73e5983c76ae9,
+		0x63f9148cb2dc9a57,
+		0xb2f169ced1bea8c3,
+		0x5bda649fefb2d841,
+		0x294a5ec21fa3e59d,
+		0x6d71e9c43da7f51b,
+		0xbf7361a65dcb1487,
+		0x32dba19879ac24e3,
+		0xe4d39c6ba9bf5361,
+		0xda5b63fdc7a361bd,
+		0x37218f6ed4a57f2b,
+		0xa263b891f2b68e97,
+		0x2da483f2128a9cf3,
+		0x9fb3ae15429ebc71,
+		0x529a67154f71e9cd,
+		0xa934f1276d83f94b,
+		0x4e39ad698da619b7,
+		0x689a7ecedcab3925,
+		0x1c78ad5fe8ad4791,
+		0x571a96fdc68e45fd,
+		0x6a823f7217a2846b,
+		0xf415dce324a593d7,
+		0x6cb84a9873a9b245,
+		0xe615d3c8738ac2b1,
+		0x4918af587d6cbe1f,
+		0xb853671a9c61fe7b,
+		0x4857b9edcb841de7,
+		0x7346d911fb982d65,
+		0xc5f917432a794bc1,
+		0xd8a9be33287c5a3f,
+		0x156c7ed4346f589b,
+		0x975a86dcb573a819,
+		0x32e7f6ddc294b785,
+		0xf48913adc278b6e1,
+		0x6ae8397cbe6ac45f,
+		0xb9352861fa5de3cb,
+		0xe4c762965e821439,
+		0x2dce3b654d8632a5,
+		0xfb4eca887c896213,
+		0x5dc91a2878594e6f,
+		0xd421e9b9864a5edb,
+		0x45c97f2cb35f7d49,
+		0xdc68a42fe3629cb5,
+		0xe53a12d1f176cb23,
+		0x5fe19d832146c98f,
+		0x85f493732e39d7fb,
+		0x19e8bd354c3df769,
+		0xdc183afa9c6127d5,
+		0x3e25c14cbc864753,
+		0x67b8921dc93754af,
+		0x934fb76fe85a742d,
+		0x134d9e51f54d7289,
+		0xdc75afe3264e91f5,
+		0xc14fb6887452bf63,
+		0x1c9b58f76134adbf,
+		0x254c71a76f27ec3d,
+		0xfda172c76d28fca9,
+		0xb7ce3f1bab4e2c17,
+		0xbf2a54dfec514b83,
+		0x35fb681fe92348df,
+		0x32eb98f21a27685d,
+		0xa2756cb4352a76c9,
+		0x91c625d9852da637,
+		0x49a53279842fb5a3,
+		0xfa582c4cb364d521,
+		0xc8f9d72baf15e27d,
+		0x9cef13acbc27f1e9,
+		0x9168b3a1fd3c2157,
+		0x2a6759854a1d2fb3,
+		0x2a1f4de87b426e31,
+		0x2c4f153769135c8d,
+		0x1e5caf7987156bf9,
+		0xd4713f6dc41a9b67,
+		0xc1e4857cb41ca9d3,
+		0x91e458aed32fc951,
+		0x346eac8cbcf1e6ad,
+		0x9a3f2d821de4f62b,
+		0x7fb968243df81597,
+		0x4d57f8276bea25f3,
+		0xc1e47f598afd5471,
+		0xc57a6ef987ef52cd,
+		0xfe3bd89dc7f3814b,
+		0x3d814a2dc3e48fa7,
+		0x9be1273ed3f8ae15,
+		0xdf39c4e323fabd81,
+		0x9be64ca431fcbaed,
+		0x8235b1954ed1fa5b,
+		0xa8342f176de41ac7,
+		0x7854f21a9ce82a35,
+		0x75924d8dc9eb48a1,
+		0x8d921f6cb8dc571f,
+		0xf7b1c2afe4df657b,
+		0xfdb32c5216d294e7,
+		0xf67c48e324e7b365,
+		0x5f94a12764e8b3c1,
+		0x62fab19872dac13f,
+		0x2ba6cf765e9cdf8b,
+		0x58427fca9cb21ef7,
+		0xeaf5128edbc42e75,
+		0x62dab491f9b74cd1,
+		0xa65d472218c95b4f,
+		0x7f8db53326cd59ab,
+		0xce86f29545cf7a29,
+		0x41a58f6874d2b895,
+		0x8d54fbea93c5b7f1,
+		0x45f138dba1b8c56f,
+		0x9cb7ef5baf89e4db,
+		0xa6bc3f5fecadf349,
+		0xdbc2f5354ec123b5,
+		0x63aebc965dc76423,
+		0xe2d16f954ab7518f,
+		0x86fb9c5546985feb,
+		0x71cdafb984ac7e59,
+		0x834fe2cba39f8dc5,
+		0x649bda3fe5a2bc43,
+		0xabc9712fe184ca9f,
+		0x1e4ba5f432a7e91d,
+		0xc5a1de432e6bf879,
+		0xefd1a3554c9d18e5,
+		0x31daf28a9db14863,
+		0xcb3aef598a9345bf,
+		0x864bfe3dc9a8753d,
+		0x5f967c4fe58b73a9,
+		0x53b671e1f59da317,
+		0x67a5bd43259fb183,
+		0x5937af254372aecf,
+		0x3dfb2a876185ce4d,
+		0x913257654e56fdb9,
+		0x8ec24d6a9e8b1d27,
+		0xc695d2fbab7e2c93,
+		0x8ad4fe7dca7149ef,
+		0xc581b491fa83596d,
+		0x5e73d6421a8567d9,
+		0xcf85ad63256ba847,
+		0xa896f376547da6b3,
+		0x2c41ebda948fc631,
+		0x893c26eba172e38d,
+		0x82341b5bad65e2f9,
+		0x4758631ede8a1267,
+		0x97a48651fc7b41d3,
+		0x94d17fb32b7d5f41,
+		0x86fb52143a615e9d,
+		0xb27f34c659647d1b,
+		0x8b92c7fba6459c87,
+		0x9ea4c6dcb4589ae3,
+		0xea14d62cb35dca61,
+		0x5962d48ba14fc7bd,
+		0x63fe784ede52f73b,
+		0x815c39f32f4516a7,
+		0x63ae82b54e6a3715,
+		0xcda95f887d6c4581,
+		0xb56834c8794c53ed,
+		0xbd256e7dca61825b,
+		0x568237eed85491c7,
+		0x2f56738ed647af25,
+		0x368adc41f348be91,
+		0x3e568cf21239abfd,
+		0x5df8b295413fec6b,
+		0x73c18e276f431bd7,
+		0xef3675da9e372b45,
+		0x8b4612dbad3849b1,
+		0xd72358adca3b582f,
+		0x41b2e97ed92e568b,
+		0xf8c17a6fe83195f7,
+		0x9bd378e21923b475,
+		0x9fda38765637b4d1,
+		0xc123be487539c24f,
+		0xac21fe38723ce1ab,
+		0xcd859e187c2def19,
+		0xa3291e7cbd132f85,
+		0xf854aebdcb264de1,
+		0xd74f9a1fea184c5f,
+		0x1bf3ad9328195acb,
+		0xe78f1bc5481e7b39,
+		0x5c9248176721b9a5,
+		0x25c7e84ba725c913,
+		0x524e138ba315c67f,
+		0x38dc945ba218d5eb,
+		0xfe457d9badebf459,
+		0xf4327e5edbfe14c5,
+		0xa1e643932df16543,
+		0x7e256ac43be4529f,
+		0x9af3ed765af8721d,
+		0xd9ec163545ea7f69,
+		0xda96354874fb8ed5,
+		0x5746f1aa94efad53,
+		0xd4ec352a93e2cbaf,
+		0x9568a71dc1f5ea2d,
+		0x8bad4f3321e6fa89,
+		0x4b27f8543edb19f5,
+		0x2afd14b65cde2973,
+		0xf49a82687ad146cf,
+		0x62fe8d4a9ae3764d,
+		0x5dfa872dc8e674b9,
+		0xa376c49ed6eba427,
+		0x83d64c11f5edb293,
+		0xf597c48324bda1ef,
+		0x65e39cd543b2cf5d,
+		0xf3821cd651b4fec9,
+		0x37fae2b76fc91e37,
+		0x61fb5ac87ecb2da3,
+		0x8fb134da9abe5c21,
+		0xac47913fe9c15a7d,
+		0xb5173c61f7c368e9,
+		0xab25948218d6a957,
+		0xd81ef9b325d9a7c3,
+		0xe47b89c765bdc741,
+		0x1298e73762afc49d,
+		0x36a2fcba92c3f41b,
+		0x3df6291cbfc61387,
+		0xef143a2dcdb942e3,
+		0x9742aeb1fdbc5261,
+		0x92ba45c2198c4fad,
+		0x8c9b2ea549a17e2b,
+		0x95dfae3546b38d97,
+		0x3a4921c875a69bf3,
+		0xc62df97984a9cb71,
+		0xab6fd2ea927ab8cd,
+		0xfdb8746dc19fe84b,
+		0xa1c879dfefa318b7,
+		0x7a4b29c21fb73825,
+		0x6298ec543eba4691,
+		0xa765f4d43b8a54fd,
+		0xc42fe7a65a9e736b,
+		0xf4e3d5acb8a192d7,
+		0x4e612b8ed8a6b145,
+		0x367b892ed486bfa1,
+		0x9f1c5b6fe378bd1f,
+		0x2795da82126aed7b,
+		0xa19d6eb4316dfbe7,
+		0x4b8df9c87f932c65,
+		0xe96adb487e864ac1,
+		0xb17d238bac78593f,
+		0xcf6a187eda6c579b,
+		0x9fc65e4eda6e8719,
+		0x48b17da1f791b685,
+		0xf36a4d132784b5e1,
+		0xdca81e532487c35f,
+		0xa7d498b65368e2cb,
+		0xcd436259827cf139,
+		0xd8234aca9e7f21a5,
+		0xc8524dfbac734ef1,
+		0xb9d815fdcb754d6f,
+		0x6d927e11f9475cdb,
+		0xeb5fad721a5b7c49,
+		0xafb157e3274e8ab5,
+		0x928bea776871ca23,
+		0xc7b6815a9453c78f,
+		0x7163425a9245d6fb,
+		0x4e6d581dc14af569,
+		0xc3a415dcbf4c16d5,
+		0xbf34a95fed7f2653,
+		0x5cef86221d6253af,
+		0xca8537154c56732d,
+		0x4d31cf965c4a7189,
+		0x4e3d9877673a8fe5,
+		0x36127f8a974dae63,
+		0xfeb3278a9541acbf,
+		0x69a2f87dc254eb3d,
+		0x1fd6a58fe135fba9,
+		0xa96b7ef5435a2b17,
+		0xa9cf84765f4d2a83,
+		0x16ecaf365b2e37df,
+		0xca3e78ba9c32675d,
+		0xb491623bab2475c9,
+		0x92f3657edb29a537,
+		0xa28bd67fe72cb4a3,
+		0xa46e5281f75ec421,
+		0x1fd847943642e17d,
+		0xc4713df65423efd9,
+		0x178b35ca92381f47,
+		0xa95f26b87f192eb3,
+		0xcf4b861a9e2c5d31,
+		0xd36c425a9a1f4b8d,
+		0x85bc12eedb126af9,
+		0x347a5181fb149a67,
+		0x86bad4932917a8d3,
+		0x2e7985f5472bc851,
+		0xb8f3e7d7641ec5ad,
+		0x275bca8a9631f52b,
+		0xbd9a6f4dc3251497,
+		0x187f49bbade724f3,
+		0xae68bdfdcdfa5371,
+		0xd45fa29fe9fa51cd,
+		0x25e4b97219ed6f3b,
+		0xf5d86ae439f18ea7,
+		0x92bd5ec768f4ad15,
+		0x359edb4875f6bc81,
+		0x42fa9ce763f7b9ed,
+		0xb251d7e982fce95b,
+		0xe659d74ba1def8c7,
+		0x4198bc5edfe42935,
+		0x8c13e6432fe647a1,
+		0x6b152fa43cd9561f,
+		0xfbc4a7d43aec647b,
+		0x78ac2e6659cd83e7,
+		0x7314f9cba9e1b265,
+		0x619c235ba7e5b2c1,
+		0x4165bd2ba4c6be2f,
+		0xd6eb5741f2c7de8b,
+		0x84e9756212baecf7,
+		0x53ce189542cf1d75,
+		0x83214df76fc34bd1,
+		0xdc4e5a987dc65a4f,
+		0x74eb3a276cd758ab,
+		0x5ce7312cbadc7829,
+		0xf1ba587ed6cea795,
+		0x43f682afe7c2b6f1,
+		0x8236bc4217b3c46f,
+		0x14fbea9324a6e3db,
+		0xe3af275763caf249,
+		0x7d46bc5983cd12b5,
+		0x48ce2b3a9ebf5123,
+		0x4a53bf2a9ca24e7f,
+		0x4158fb9dca945deb,
+		0x37d59e11fab87d59,
+		0xc2564392179a8bc5,
+		0x76819c43279eab43,
+		0x17c2f9d545a1c89f,
+		0xde6528a875a4e81d,
+		0x816be53ba2b5f679,
+		0x7da12fbdc2ba17e5,
+		0xe38647fdcfad2763,
+		0xe258a1bedc8e34bf,
+		0x43fcd7821ea2743d,
+		0x15c64ae43db572a9,
+		0x6a4291865cb9a217,
+		0x2784ade6568baf73,
+		0xe18acb28746b9dcf,
+		0x9d537e6ba581ec4d,
+		0xba76f43ed273fcb9,
+		0xc4b16981f3a81c27,
+		0x5d7861e5418a2b93,
+		0xc6934fd32d6b38ef,
+		0x6e481ad43c7f486d,
+		0x671f4e365c8276d9,
+		0xad84321cbc95a647,
+		0x4758a92ed978a5b3,
+		0x183fd5afe78bc531,
+		0x1b8265a1f46ec28d,
+		0x26cf71543572e1f9,
+		0xf6a572b984a52167,
+		0x9f412b7761872fc3,
+		0x461a53298f7a5e41,
+		0x85a4dbf87e5b4c9d,
+		0xa271dcba9a5f6c1b,
+		0x839c21bfec529b87,
+		0x9e532b41f865a9e3,
+		0x639fdec32a58c961,
+		0x6c3784e32549c6bd,
+		0x1ab946c8745de63b,
+		0xf95cea6cb48215a7,
+		0x5aed372dc2973615,
+		0x7a8bf23dcf695481,
+		0xeda4567cbc4952ed,
+		0xe4982161fc4d715b,
+		0x52f9eca21a3e6fb7,
+		0x7caeb1354b63ae25,
+		0xc841d7276845bd91,
+		0xb5c129e87536bafd,
+		0xfe531ac98439ea6b,
+		0xd2e6b9fba23cf9d7,
+		0x57c1b23fe3712a45,
+		0x7492c56fef3548b1,
+		0x327fc4d21e38572f,
+		0xe6fb71a43e2a658b,
+		0x49783a165b2c84f7,
+		0x3617fed98b2fa375,
+		0x52ec7b3ba954b3d1,
+		0xcde3295cb836c14f,
+		0x9fe165ddc426df9b,
+		0x3abf85ced43afe19,
+		0x4bfd1e63243d1e85,
+		0x5de9642873524ce1,
+		0xe14983b87e134b5f,
+		0xbfac39887e1659cb,
+		0x9bcd1e398d1b7a39,
+		0x9d6e8a5dcb1d98a5,
+		0xeb731c2ed92fb813,
+		0x5b37148fe812c57f,
+		0x71965fe32715d4eb,
+		0xa2639c854618f359,
+		0x6df7acb9862b13c5,
+		0x239bd78ba61e5243,
+		0xefa145b87cde419f,
+		0x5d2943198ad25efb,
+		0x93246d8dcbf47e69,
+		0x18fa246fe9f78cd5,
+		0x65f7ced218fbac53,
+		0xa68b157325edb9af,
+		0x8bfd124656f1e92d,
+		0x481932a764e3f789,
+		0x5db4126ba3e718f5,
+		0xe412763dc1fb2873,
+		0x1f4365da9edb35cf,
+		0xbd6f5a1febcf654d,
+		0xf9ae76c21de273b9,
+		0xd269e8b54ce6a327,
+		0xa7b43fd65ae8b193,
+		0x567ea28545b89edf,
+		0xc62de51874acbe5d,
+		0xde1afb9984b1fdc9,
+		0x6bdaf14dc4e51d37,
+		0x981275d1f1e72ca3,
+		0x615cda7543ea5b21,
+		0x3471a9532fbc497d,
+		0x649cb1743cbf57e9,
+		0x3572cd176cd2a857,
+		0x7cabefd989d5a6c3,
+		0x7a1d856cb8d9c641,
+		0xb3c15f8fe5bac39d,
+		0x731dc8e1f5ade31b,
+		0x6dcafb1546d31287,
+		0xa1965df875c641e3,
+		0xd1b38fa872c84f51,
+		0x8b6a9ce65f984ead,
+		0xce598ad87e9c6d2b,
+		0x59ec6fb98baf6c97,
+		0xc4912a6ed8b29af3,
+		0xa3d819c1f8b5ca71,
+		0xb3afc7d21596b7cd,
+		0x9ef74533259ae74b,
+		0xea39cb25439df5b7,
+		0x169cfbdba6c13725,
+		0xe9c2418cb2c64591,
+		0x365c87fbae9753fd,
+		0xfec4896ede9a726b,
+		0x47cb3191fb9c81d7,
+		0xfec52b821b8e9f35,
+		0xed71fbc54983bea1,
+		0x6c3f5ea54785bc1f,
+		0xb64d8fe65486ec7b,
+		0xa4c5d9698369fae7,
+		0x3d168efdc39e1b65,
+		0xc927d43fe3a249c1,
+		0x91a6cb8ede94583f,
+		0x5ae24b821f87569b,
+		0x759e8b143e7b8619,
+		0x7c826ed43c7da485,
+		0xac4b9d37697fa4e1,
+		0x9b63712ba983c25f,
+		0x3c168d9ba675e1cb,
+		0x12fdb83dc467ef29,
+		0x7caf4b9fe37b1f95,
+		0xce56f4b3247c3df1,
+		0xe3b78a1652814c6f,
+		0x65fab9354f635adb,
+		0x9c23df698e567b49,
+		0x1b9a34c87d4a89b5,
+		0xe8d2374dca6db923,
+		0x5192fa4dc74eb68f,
+		0xc2f154afe762d5fb,
+		0x6f3459d21875f469,
+		0xfa27b414367914d5,
+		0x21caf68a968c2453,
+		0xd9217eb9816d42af,
+		0xc796bd2baf63712d,
+		0x4361f7dcbd436f79,
+		0x21d7b43dcb368de5,
+		0xe2d1b581fb49ad63,
+		0x6a8f5b92173c9abf,
+		0x1bcd67f3274fca3d,
+		0x68e941265642f8a9,
+		0x16924c3cb8562a17,
+		0x4abf583dc45a2983,
+		0xfc7642dcb14a36df,
+		0x15ce83dcbf2e465d,
+		0x56d34b11fe3174c9,
+		0xd2948e521e25a437,
+		0x8f6a12c65d47b2a3,
+		0x4c963ef87b5ac321,
+		0xef23d8a6572abf6d,
+		0x4e3c86d8752fced9,
+		0x328a567dc8531e47,
+		0x689137ffe5462db3,
+		0x3bce1d71f2495c31,
+		0x18b942c4312b4a8d,
+		0x2c5e1f843e1d58f9,
+		0xfde629165e21a967,
+		0xa2d643798c14a7d3,
+		0x7dfe438bab28c751,
+		0x853ad2ecb718c4ad,
+		0xb56c89aed71ce42b,
+		0xaf59eb2ed51ef297,
+		0x12bafc57681542f3,
+		0x4eadc35a96385271,
+		0xf2cd1ae762174fbd,
+		0xebf837c65df96e3b,
+		0x8d2f3ca65bfc6da7,
+		0x6195fed98aef9c15,
+		0x68327c5ed9f3cb81,
+		0x2e56374dc6f4b8ed,
+		0xf8cb24e216f7e85b,
+		0x6fad83e324eaf6c7,
+		0xcf2186d876fe1835,
+		0x7ca14dea95f246a1,
+		0xb86e2d3ba2e4651f,
+		0xcfb4825bafe8637b,
+		0x7cf1d95cbcda82e7,
+		0xaced7831fbeda165,
+		0xe487dc3328ce9fb1,
+		0x16f3de8548c3bd2f,
+		0xb8f5a1c436c4ed8b,
+		0x1496ca8654c6ebf7,
+		0x1e54c7aa94eb1c75,
+		0x512ad4ca94ce3ad1,
+		0xda174e9dc2d1594f,
+		0x576ac24fefd357ab,
+		0x5823e6d21fd68729,
+		0x419a8d732edba695,
+		0x1db6738549bca5f1,
+		0xa82c46f658aeb36f,
+		0xe3dc2bf987a3e2db,
+		0x6a73cfecb7c6f149,
+		0xb79df53fe6d921b5,
+		0x15683dcfe5cb4f13,
+		0x2a859bd212ac3d7f,
+		0xcfe7389542a15ceb,
+		0x1a286be54fb37c59,
+		0x6fa9ce254eb68ac5,
+		0xb13f5a487dc9ba43,
+		0xbdfc397ba68cb79f,
+		0xf6a7e85cb69fc71d,
+		0x28765bffe6b2f579,
+		0x6389fac328b716e5,
+		0x87532bc547ca2563,
+		0x14db2797629a43bf,
+		0xe39a1fb981ae623d,
+		0x3baf4c698fb271a9,
+		0x591438bbac938ef5,
+		0x3869baeedc96ae73,
+		0xd391b67fe8679bcf,
+		0xbac475e2187acb4d,
+		0x64a37dc3256feab9,
+		0x4185da7768a41b27,
+		0x59d1eaf985b62a93,
+		0xd215cbfba29837ef,
+		0x41a2df6dc19b476d,
+		0x239761acbf7e65d9,
+		0x7ec8b6d1fe91a547,
+		0x5ec6b8a21e85a4b3,
+		0x83ec1fd65d98c431,
+		0xbd2561e54a69c18d,
+		0xb967adc5465acfe9,
+		0xf723d4ca946dfe57,
+		0x349251ecb6842ec3,
+		0x2178af3fe3975d41,
+		0x76d59a41f1674b9d,
+		0x825db414327c6a1b,
+		0x5974acf32f4e6a87,
+		0x46ab9c765d61a8e3,
+		0x647cf3ea9d74c861,
+		0x925eb6398946c5bd,
+		0x5e2dab4dc869e53b,
+		0x658217eed65cf3a7,
+		0x941abd6fe78f2415,
+		0xc8f6974327945381,
+		0x3e18a655437651ed,
+		0xfec58a2871586f4b,
+		0xc8d4f3e65f3a6eb7,
+		0x3d2c41998c4e9d25,
+		0x18c7d5fbad52bc91,
+		0x3b9852fdc843b9fd,
+		0xc6a127d1f835e96b,
+		0x7fc9b3d21639f8d7,
+		0x7b2e64c4386d1945,
+		0xd2c974a9865f37b1,
+		0x6c23f57ba473562f,
+		0x8f5b2e4dc135648b,
+		0x82a7e45cbe2983f7,
+		0xf1c275eede3ca275,
+		0x86712c41fb4ea2d1,
+		0x1965fcb32a41be3f,
+		0x982afc154823de9b,
+		0x2ab918f65836fd19,
+		0x865fa2ca973a1d85,
+		0x8e23a1ca964c3be1,
+		0xa4d3ef5cb42e3a5f,
+		0x8295cdafe13258cb,
+		0x496b831fef157839,
+		0xe1754fc32f1897a5,
+		0x62b98a165e2cb713,
+		0x81def3265a1db47f,
+		0x1a4d26987921d3eb,
+		0xe792f4acba14f259,
+		0x53b4f12ed93812c5,
+		0xfb7d458fe82b5143,
+		0x59f137eed41b3e8f,
+		0x3ea75b63231e4dfb,
+		0xafd4b29653127d69,
+		0x61f8edb54ef38bd5,
+		0x274c91d76df7ab53,
+		0x4387eb1659e7b8af,
+		0x21a7e35a97fbc82d,
+		0x8f13ae9cb5dfe689,
+		0xc1768b2ed8e317f5,
+		0xc473d95219f82673,
+		0x5fa4ceb325e834cf,
+		0xe3f815b872fb634d,
+		0x9c46b2a871fe62b9,
+		0xaf5e73ba9fe3a127,
+		0xa713ceba9cd4af83,
+		0xb96437dba8b59cdf,
+		0x6c5281d1f7e8bc5d,
+		0x83f2ea6216daebc9,
+		0x57d91ab326cefb37,
+		0x758cb2f767e42ba3,
+		0x4ef8b36a96e75a21,
+		0xfb3d482ba2e9487d,
+		0xf81b973ba1db56e9,
+		0xdf76953cbfce9657,
+		0x43ebd291fed1a5c3,
+		0x3157bd932ed6c541,
+		0x8af96c443ab6c29d,
+		0x1dfa8b4658c9e21b,
+		0xe7d3698545abef67,
+		0xa9cd2b3986ae1fd3,
+		0xc32a47dcb7c34e51,
+		0x8ba9712fe2b54cad,
+		0x54169721f1d86c2b,
+		0x1a48d3f321dc6b97,
+		0x634cf9b32ead89f3,
+		0x1f8da6c65eb2c971,
+		0xf739cb465a93b6cd,
+		0x93bd7e2989a7e64b,
+		0x875d1f3dc6a9f4b7,
+		0xda78b43fe8bd1625,
+		0x493fa16fe6bf3491,
+		0xab96d4e216a352fd,
+		0xfdcb692543c5716b,
+		0xea7dc1b541a86fc7,
+		0x48fe5ba76f8b9e35,
+		0xc5e734f76c7e9da1,
+		0xb2d7a31a9a82cb1f,
+		0xacf3648ed983ea7b,
+		0x769c231ed685f9e7,
+		0x47dc8933289b1a65,
+		0xfead8b65469d38c1,
+		0x857e32c7659e473f,
+		0xc32e54f983a2659b,
+		0x8a16b54dc2b68519,
+		0xab19273dcf79a385,
+		0xb13ed56dcd7ba3e1,
+		0xa6b89f3fea7db15f,
+		0xa37159632961dfab,
+		0xd98741b43a74fe29,
+		0xe61cf9a54a871e95,
+		0x6d72b95986793cf1,
+		0x38a652ca947c3b6f,
+		0x7d5f124ba26f49db,
+		0xfc85613fe1827a49,
+		0x129a346fef6498b5,
+		0x5cdf27421f69b823,
+		0x67e8fa532d4ab58f,
+		0x6714fc24395dc4fb,
+		0xb4fd92e98b71f369,
+		0x5f791e2cba8613d5,
+		0xe42bf31eda894253,
+		0x623e791ed56941af,
+		0x218369dfe36b5f1d,
+		0xb4ce7962124f5e79,
+		0x8e35f76541628ce5,
+		0xb296a4f87f45ac63,
+		0xfb37d2e65d36a9bf,
+		0x9e6b53887b4ac93d,
+		0x142dc3fcb83de7a9,
+		0x915adf7feb632917,
+		0xa97c82b1fa652783,
+		0x7ae9f842184735df,
+		0x6bcade73273a645d,
+		0x236a1ef8724d63c9,
+		0x8475e26ba15f9237,
+		0x7ab5286a9f54b1a3,
+		0x9cd512398b249def,
+		0x25d4e16dca27be6d,
+		0x2e98b7a1f728ecd9,
+		0x4a52f982192dfc47,
+		0x53b197f769512cb3,
+		0x6139c2b989465b31,
+		0x71cb68dba526498d,
+		0x9c1e4a7cb32a57f9,
+		0xb6d3f95dc12d9867,
+		0xa671cd2cbe1f96d3,
+		0x5bd391a1fe23c651,
+		0x5bd7fc332e15c3ad,
+		0x2ad8ec365c18e32b,
+		0x49fe63165a2bf197,
+		0xfad36519894d21f3,
+		0xe974f1acb9324f61,
+		0xd1b73e5ba6134ebd,
+		0x58df2b4fe4176d3b,
+		0x3c1729e1f2196ca7,
+		0xb56c1e35432d9b15,
+		0x64eac2d43dfeba81,
+		0xc673dbf54af1b7ed,
+		0xeba13f276af3e75b,
+		0x7ade29f989e6f5c7,
+		0x41eb637dc9fb1735,
+		0xeb4a879dc7fd35a1,
+		0xe2d4ab3dc6de541f,
+		0x49d7e83215f3627b,
+		0x23ab56f543f581e7,
+		0x2754dec761e89f45,
+		0x8ef726365fda9eb1,
+		0xdfbca54769bdac2f,
+		0x69e3df1879d1ec8b,
+		0xa1c85d3cb8c3eaf7,
+		0x382a9dc1f9e81b75,
+		0xe4ab91f327ea39d1,
+		0x713658e326dc384f,
+		0xad8f9ce653df46ab,
+		0x184b79dba4e38629,
+		0xd7c9e51cb1e6a495,
+		0x8cba6f5a9ec8a4f1,
+		0x1a6bc5ea9dcab26f,
+		0x1ebd2841f89ec1db,
+		0x54876b332ab1ef39,
+		0xb84a6c9439c41fa5,
+		0x2b15de9769c84e13,
+		0x291eb7c765b93c7f,
+		0x48d1e698739c4aeb,
+		0x371548dba2cf6b59,
+		0xd971fb3fe1d289c5,
+		0xc2b1da8fefc6b943,
+		0xe2d648321ea7b69f,
+		0x264cfad43e9ac61d,
+		0xe5cd8a943bade479,
+		0x95b137498ab214e5,
+		0x9d467c2cbac72463,
+		0x1396f72dc6a742bf,
+		0xb1c6ad8fe5ba613d,
+		0xb563f1dfe2ac5f89,
+		0xf6d3a2c2129e7df5,
+		0xf8ab72e651b2ad73,
+		0x4dc5b1943e749acf,
+		0x3b964ac65e87ca4d,
+		0x1ca26db65c6ae8b9,
+		0x7f4658dcba8df927,
+		0x7f41a98feab12893,
+		0x971e684ed79436ef,
+		0x3ae927d217a8456d,
+		0xe94815a3238a64d9,
+		0xf13db29762ad9347,
+		0xcf8a51b8718f92b3,
+		0x4b58de1baf95c231,
+		0x2c1d67ea9c64bf7d,
+		0xae96d78cba56cde9,
+		0x695f1c7fe96afd57,
+		0xb14a96d3297e1dc3,
+		0x4ad7e1c76a925c41,
+		0x26d98a1656734a9d,
+		0xb85d693ba487691b,
+		0x8b7e69adc25b6987,
+		0x7f1c6e3cb16c97e3,
+		0xdf47abedce5fb761,
+		0x9c435a81fe62c4bd,
+		0xdb9354e21d76e43b,
+		0xb192da443c58f2a7,
+		0xa81e24687b8c2315,
+		0xf6b83c5a9a7e4281,
+		0x2318a74a97614fcd,
+		0xe789324dc5736e4b,
+		0xf89ca56fe2456db7,
+		0x869357a1f16a9c25,
+		0x18f259b4325dab91,
+		0x641feb332c3ea8fd,
+		0x6d4e31865d42e86b,
+		0x1e93bad98b34f6d7,
+		0x7853149cbc6a1845,
+		0x7be4652ed95c36b1,
+		0x8594631dc86d452f,
+		0x478cb6d1f751638b,
+		0x4fc285b2165482f7,
+		0xafc9b2d76348a175,
+		0x915d73a762489fc1,
+		0x43d197876e2bad3f,
+		0x8457a3276a2fcd9b,
+		0x49376bfbab43fc19,
+		0x27cfba6feb361c85,
+		0xd8a53471f9483ae1,
+		0x324f85c2182b395f,
+		0x15dca424362e47cb,
+		0x1893bf5ba6418739,
+		0x947a538cb42396a5,
+		0x4e61b2adc248b613,
+		0x1378de5bae19b37f,
+		0xa461dfca9d1ac2eb,
+		0x9fce61bedb2fe159,
+		0xf3ac15276d3421c5,
+		0x9c3eab176b174f23,
+		0x23a879d659173d8f,
+		0xfd346a9876194cfb,
+		0x2f756bdba41e5c69,
+		0x16d79f5dc4218ad5,
+		0x95d2fc3fe214ba53,
+		0x9ae728ddcde4b7af,
+		0x268de9b21ef8c72d,
+		0xe9d837c32cfbe589,
+		0x48b1cd6439dce4f5,
+		0xc18e564a9bf12573,
+		0x172e53ba98e543cf,
+		0x6a4289ccb7f8624d,
+		0x1ec48b3ed4fa61b9,
+		0x2f43ac9ed3ec8f17,
+		0x7debac6212df9e83,
+		0x6d1be92541e29bdf,
+		0x7b1aec443fe4cb5d,
+		0xafbce8654bd6eac9,
+		0x13dc4af769dbfa37,
+		0x1a6d2f4cb8de19a3,
+		0xe491762edae35921,
+		0x613275c1f8e3467d,
+		0x79dc582214d765e9,
+		0x65478ac323eb9457,
+		0x5fb17a9762ed94c3,
+		0xf13b576982dfb341,
+		0x82d465f87fb3c19d,
+		0xbe548f287ba4cef9,
+		0xbd5e826dcab8fe67,
+		0xa2563e81f8ba1ed3,
+		0x5638fac329be3d51,
+		0x7adf692437c14bad,
+		0xd27abef657d46a2b,
+		0x72c1f3b983d56a97,
+		0x1becd38872ca98f3,
+		0xe671283ba2cdb871,
+		0x2a6835fa9e8fa5cd,
+		0xed9218a1fda2e54b,
+		0x285ce9a21da5f3b7,
+		0x7fe9b8176dca1425,
+		0x5bdcf7876abc4391,
+		0x1dfeb837679c41fd,
+		0x25f18c7a97a16f5b,
+		0x62f1d38cb4a36ec7,
+		0x7531a8bfe2b79d35,
+		0xecd49761f2b89ca1,
+		0xb4da8574328cba1f,
+		0x163ab9f32e6fd97b,
+		0x5d86bc254c92f8e7,
+		0xad9416c98db71965,
+		0x7314ed698ba937c1,
+		0xa9b4715dc89b463f,
+		0xfcb9681ed68e549b,
+		0x5984c761f6b28419,
+		0xa7b45fd216b4a285,
+		0xad9164f65497a2e1,
+		0x9e7a8f165178ae4f,
+		0x65cd8eb54f59ceab,
+		0x89d345687b6fed29,
+		0x1d26fc9cbc831d95,
+		0x637cf24eda863bf1,
+		0xf84d751fe9783a6f,
+		0x2fe348a2176a48db,
+		0x4e75b1f3257e6849,
+		0xd3eba5f7648197b5,
+		0x8256c79ba495b723,
+		0x6b83417ba176b48f,
+		0x16d7ec5a9e58c3fb,
+		0xd651493cbd5ce269,
+		0x836e7dfdca6ef1d5,
+		0x45e319632d964153,
+		0x9a65cbf32a653e9f,
+		0xe9c381b549685e1d,
+		0x6c751239864b5d79,
+		0x452c3a1a934d7be5,
+		0xeb82759ed471ab63,
+		0x162397bed153a8bf,
+		0xb7a1695fef46c83d,
+		0xd34e6a521f38e6a9,
+		0x9c75e6443d4cf617,
+		0x49c8df187c5f1683,
+		0x63d24c198a6234df,
+		0x48391a6cba47635d,
+		0x2ae785bed74862c9,
+		0x23157c8fe65c9137,
+		0x5b83facfe24d8f93,
+		0x9e415f3323419cef,
+		0xdfbe8a965143bc6d,
+		0xb8d31f654f25ebd9,
+		0xf48aeb176d29fb47,
+		0x2cfd75e98c4d1ab3,
+		0x79421d8dcb5f4a31,
+		0xf95bd21fea32478d,
+		0x6cfb17dfe82456f9,
+		0x3d4cae82182a9567,
+		0xc9d86315462b95d3,
+		0xf4723be9863eb451,
+		0x13a52f998341c2ad,
+		0x16cfa5da9f35e12b,
+		0x8d32576bac15ef87,
+		0x2f78196dcb291fe3,
+		0xe569cd31fa2c3e61,
+		0x1cfd48e3281f3cbd,
+		0xd68c3a7659126c3b,
+		0x472de81658146ba7,
+		0x691782dcb6289a15,
+		0x5e6b87dba42cb981,
+		0x2b763e8a921ca6ed,
+		0x5a628fea9cefd65b,
+		0xb926e53edbe2f4c7,
+		0x7698d5c32df81635,
+		0xfc64d9b65cf934a1,
+		0x1fa3ce9769eb531f,
+		0xd31b749768fe517b,
+		0xf471b25a95e16fd7,
+		0x8473dcfcb6f39e45,
+		0xfd64958dc3f69db1,
+		0xbc965eaed1e8ab2f,
+		0x583de6c321fcda8b,
+		0x6b8341e32cbed9f7,
+		0x3ebf5d176de31a75,
+		0xc3941db87be638d1,
+		0xfcd1a9398ad9374f,
+		0x7b14da3a97ec45ab,
+		0x94b1ae8dc6de7529,
+		0x985cd411f6e1a395,
+		0xc751db6326d5a3f1,
+		0xe196a7f543d7b16f,
+		0xcb791d3541d7afcb,
+		0x4bc26d165fabde39,
+		0x4587e9a76b9efda5,
+		0x9efb3d7babc54d13,
+		0xa1e724ced9c53b7f,
+		0x32dc1791f6c749eb,
+		0x8bd7ea3217dc6a59,
+		0x7bd1f8c324be78c5,
+		0x6a13dfc876d1b843,
+		0xa3fe491872c3b59f,
+		0x4ec3df7a92b7c51d,
+		0x419cf7b98fbae379,
+		0xcf41ed6bac9bf2e5,
+		0x1a82c5bfecbf1263,
+		0x1ba6c5932ca341bf,
+		0x9ce7b42439a65f2d,
+		0x4ce7269436b75e89,
+		0xdba13497649a7cf5,
+		0x12b6de4984ae9c73,
+		0xfc2de41cb381a9cf,
+		0x5c8f927fe1a3c94d,
+		0x13efb65edf85e7b9,
+		0x4c6bd7921e9af827,
+		0x637b2a954ead1793,
+		0x8de67a954a8d25ef,
+		0xf5c9a1498ba2546d,
+		0x68ae451cb8a563d9,
+		0x561e39fed6ba9247,
+		0xca64fb2fe58c91b3,
+		0x89a4c5dfe48daf21,
+		0xb9f3d5832381be7d,
+		0xf1a68c254173dce9,
+		0x96e2d4543e86fc57,
+		0xc7d5e3176e791bc3,
+		0x631475da9c8d3b41,
+		0x3615ea2cba6f389d,
+		0x75c84a3fea93681b,
+		0x354a27c1f5a49687,
+		0xbf7c4622157896e3,
+		0xe5c97824348cb561,
+		0x28de74f6526ea3bd,
+		0xbf6e5caa9481e23b,
+		0x5ca46efa9e64f1a7,
+		0xfb671a3dce893215,
+		0x375e491edc6a3f71,
+		0xdb2c45a1f85a3ecd,
+		0x93dae682196f5d4b,
+		0xda6917e439526cb7,
+		0xed9bfca548769b25,
+		0x9b172c598457ba91,
+		0x67f5a2398249a7fd,
+		0x2d56791ba14ed76b,
+		0xf6e95d2cbe41f5d7,
+		0x3d1a68c1fe861745,
+		0x3c1eb9a32e6835b1,
+		0x1c4afe243c6a542f,
+		0x98b73c576a4d528b,
+		0xa9e5fdc9894e61f7,
+		0x5ced914cb8429f65,
+		0x9c372f1cb6459ec1,
+		0xe95b427ed247ac3f,
+		0x5a3d8e61f138dc9b,
+		0x914da654324deb19,
+		0xd3e1a7f76f421b85,
+		0x528ecd187d4539e1,
+		0x23c714fa9c27385f,
+		0x6e57af398a2946cb,
+		0xb794f6ddca2d7639,
+		0x5684cb3ed72f84a5,
+		0x92daec71f864b513,
+		0x432e8a921635b27f,
+		0x2786acd65437c1eb,
+		0x3c21edf7612adf49,
+		0x725cbef76d1cfeb5,
+		0x9c53fd7bad514e23,
+		0xf6c159bbab143c8f,
+		0x429c53eed9164afb,
+		0x7e8a1421f81a5b69,
+		0x1a35c6e3281c79d5,
+		0x1db25975471fa953,
+		0xd4f1be887512b6af,
+		0x1af3764a9415c62d,
+		0xe7365facb217e489,
+		0xac7f95698cd9e3f5,
+		0xad8f25ecbcfd1473,
+		0x6857ec3cb9de32cf,
+		0xfe54ac932bf3614d,
+		0x163ec8b328e45fa9,
+		0xe6b29ca546f98e17,
+		0x13b9fd7765fb9d83,
+		0x78945a1763ec8adf,
+		0xa6d254ea93f1ca5d,
+		0x6a5ef24cb1f3e8c9,
+		0x3e19b78dced6f937,
+		0x9e3dac732feb18a3,
+		0xce3a2b865ced4821,
+		0xb17659e54acf357d,
+		0x9a3db8f87ad264e9,
+		0x3f78e6dcbae69357,
+		0xdae2148cb6e892c3,
+		0x8392f61ed6ecb241,
+		0xd8c1495fe2bcaf8d,
+		0xd5ec14f323b1cdf9,
+		0x978fabc541c3fd67,
+		0xe4f817965fb71cd3,
+		0xae365c887eda3c51,
+		0xa381954768bc39ad,
+		0xd674be9ba8cf592b,
+		0xd946f83fead26897,
+		0xa2bd5c6fe6c597f3,
+		0x3b76a48325d9b671,
+		0xb4e6517323b9a4cd,
+		0x5eb4831762aed34b,
+		0x62e74ab983c1f2b7,
+		0x7fb4918bafc71325,
+		0x48a1f5dcbec84291,
+		0xf18ec92cba983fed,
+		0xc92de451f89c4e5b,
+		0x43a72ec2189f5dc7,
+		0xbda5187548b29c35,
+		0xd5c2be9546c59ba1,
+		0x1d3b5f7764a7b91f,
+		0x23951df7629ad87b,
+		0xbd1256eba19cd6e7,
+		0xa64938bedfb21865,
+		0xdb9ea3c1fea536c1,
+		0x93dcfa221da8453f,
+		0x64a3d8e32d8a539b,
+		0x7bae9c165bad7319,
+		0x47dbacf767af9185,
+		0xf5d72ebba6839fd1,
+		0x2c84167cb385ad4f,
+		0x15793fafe276cdab,
+		0x1b94d8c1f17aec29,
+		0xe519ad83217dfb95,
+		0x746de3165e823af1,
+		0x427e1bc65d84396f,
+		0xc319e2f65c8647db,
+		0x71f842cbac8b6749,
+		0x93fa127dc97d86b5,
+		0x2b4e71aed78fa623,
+		0xbcd7f31fe572b38f,
+		0x7b8526321475c2fb,
+		0x8a6f39c54378e169,
+		0x63cf87e54169efc5,
+		0xbef6c1998e7d1f43,
+		0x715ed2998c613d9f,
+		0xb68925cbab745c1d,
+		0xf3a498dfeb465c79,
+		0xb917da51f8497ae5,
+		0xf7b98562185d9a63,
+		0x9a45dec3254e97bf,
+		0x56c124e98562c73d,
+		0x67ce29598264e5a9,
+		0x7de6a84cb269f517,
+		0x8274e36cbf6c1583,
+		0xfe95c17bab5c23df,
+		0x7359a6b1fc71625d,
+		0x4bce39832d5461c9,
+		0xe1d9b5f43b468f27,
+		0x69c718e6574a8e93,
+		0xf39bd2e7653a8bef,
+		0xf23eba69843fab6d,
+		0x47fadc1cb342ead9,
+		0x2ae9637ed135fa47,
+		0xd3a7f51fef4819b3,
+		0xa35148b32f5c4931,
+		0xe85319d54c2e368d,
+		0x24a9dcf87c3165f9,
+		0x32176d5bac239467,
+		0x16f4935cba2794d3,
+		0xa21843fed84ab351,
+		0xa7f6948fe53cb1ad,
+		0xeaf8261ed43ecf1b,
+		0x92cef6721432fe87,
+		0x32ef6b9872461de3,
+		0x3c92ab587f293d61,
+		0x9d5afe876e193abd,
+		0xf4a596798c1e5a3b,
+		0x4531b8cedc2169a7,
+		0x4783612feb24a915,
+		0x95d74be1f926b781,
+		0x59af48d32618a5ed,
+		0x74dfeb94361cd45b,
+		0xde854ba7641fe3c7,
+		0x3425fd6cb7261435,
+		0x7d1e653a9ef643a1,
+		0x8b26f9dbace8521f,
+		0x935b8d2dcae94f6b,
+		0xba8129fdc8fb5ed7,
+		0xb4c2fe9219ef8d45,
+		0x95387dc547f39cb1,
+		0xf1d8c6b546e5ba2f,
+		0x427e6b1653f6d98b,
+		0x2ae5f9d762ead8f7,
+		0x42bc3e5ba1edf875,
+		0x27f436ccbfe237d1,
+		0x2c581d3fecd5364f,
+		0xc3a2ef921de754ab,
+		0xea75f4243ceb7429,
+		0x96b235d54aed8295,
+		0xcdfb839767ce92f1,
+		0xbe31675986c2ae5f,
+		0xa54d73f983d4aecb,
+		0x3fc9178cb2c7ed39,
+		0xd9cf513fe1d9fca5,
+		0x9e74f13654de2c13,
+		0x8c1b96754ec13a7f,
+		0xd3e724165dc348eb,
+		0xfce81bd54cd76859,
+		0x4c739af769da87c5,
+		0x9785edccb8cda743,
+		0x5462bf9dc5bea49f,
+		0xe614ba91f6b3c41d,
+		0xd9e6fb4214c5e279,
+		0x631bc5d543b8f1e5,
+		0xe913657984dc2163,
+		0x2cd46b965d8c2eaf,
+		0x9c16a3298ca15e2d,
+		0xb193c2dbacb35d89,
+		0xc54e381ed9a67bf5,
+		0x576a31d1f6ca9b73,
+		0xa4ed3952157b98cf,
+		0x8cfd43e3259fb84d,
+		0xc7e1649654a2e6b9,
+		0xec127aba93b5f627,
+		0x69745a8cb2ca1693,
+		0xaf234d1a9d8a24ef,
+		0x47281a3cbc9e436d,
+		0x5248ca61fca162d9,
+		0x87d1ab432db59147,
+		0x135ed9432b968fa3,
+		0x7edc41b65789ae21,
+		0x93bd42e6546bac7d,
+		0xf48ebc58736fcbe9,
+		0x17f4bd6dc392fb57,
+		0xc473819fe2961ac3,
+		0xa3d5c76fef893a41,
+		0xea9c36521f6b379d,
+		0x58bace143d8e571b,
+		0x1fbed6554da19587,
+		0x3d2ca4b87b8495e3,
+		0x7dbe348dca98b461,
+		0xeb4392adc568a2bd,
+		0x6c5347afe57cd13b,
+		0x8a92b63dc25edf97,
+		0x14bde3f325841ef3,
+		0xd7f6ac9652963e71,
+		0x2cd739554f573bcd,
+		0xb4d65c987e6a5c4b,
+		0x14c629e98c4e5ab7,
+		0xcabe478edc719a25,
+		0x23f754afea64b891,
+		0x3b79a21fe745a6fd,
+		0x594f2c621749d56b,
+		0x5d184b73235be4d7,
+		0xbd7e6f29827ef345,
+		0x635e84fba28534b1,
+		0x9e5c4d3bae67532f,
+		0x5128ef4dce49518b,
+		0xa91b84fdcb3a5fe7,
+		0x8dea3541fa3d8e65,
+		0x1875d6b43a529dc1,
+		0xbfa9e8d32854ab3f,
+		0x26df9c154635da9b,
+		0xbd1a6c287548ea19,
+		0x14257bcba23cf985,
+		0x176a398cb35f28e1,
+		0xd7e82f9dce42375f,
+		0x7ea845c1fe2645cb,
+		0x743fdbc21e2a7539,
+		0x95d8b6c54d2c83a5,
+		0x3c864b587b5ea413,
+		0x3954c6298942b17f,
+		0x7a523bf98623afdb,
+		0x91765e4cb526de49,
+		0x623d81bdc328fdb5,
+		0x13e94671f45c1d23,
+		0x3e826af5413e2b8f,
+		0x9cd36ab65e1249fb,
+		0x23a159d87e145a69,
+		0x43f59b776c1978d5,
+		0xcd735b8a9b1ca853,
+		0x5367efccb71d95af,
+		0x67238a5fe831c52d,
+		0x694ea7b1f614e389,
+		0x8de4a5c43617e2f5,
+		0xc49bfad9864b1273,
+		0xcd5f9638742b31cf,
+		0xe19f54a76bec4f3d,
+		0xe8a92d587cf15ea9,
+		0x253c4f1babf48d17,
+		0xef1c2b8edaf69c83,
+		0xae4d275dc5e789df,
+		0x7b9362d216fcb95d,
+		0xd63419e324efd7c9,
+		0xf5c397b765e2f837,
+		0x64ce27ba94f617a3,
+		0xd185942cb3fa4721,
+		0x52138cfa9feb347d,
+		0x24d6f9bbabcd53e9,
+		0x187d9341fce19257,
+		0x149b75632be591c3,
+		0x9c1ad8e549d7af31,
+		0xc9da281435c7ae8d,
+		0x743e1d9654dabcf9,
+		0xd2a5be4983bfec67,
+		0x914623bba5e41bd3,
+		0x975e8faed2e73b51,
+		0x1dc479afefc738ad,
+		0x6fadebc21fdc582b,
+		0xc31eba632dce5697,
+		0x2ad4b8765bc196f3,
+		0x3f417ed98ad4b571,
+		0x3ba74cf987b6a3cd,
+		0x8fe1b6dba6c9d24b,
+		0xea52f74ed4ace1b7,
+		0xb7da569dc3adef15,
+		0xaefdc15325c43f81,
+		0xe38d791541a53ced,
+		0x4c5a17243fa84d5b,
+		0x765def154e9a5bc7,
+		0xb8acd3287cae8b35,
+		0x3b2ae78ed8c2b9a1,
+		0x27a638eed7a4b81f,
+		0x5c437281f4a5d67b,
+		0x2ae754c214a9d5e7,
+		0xc9e846b323acf465,
+		0xe3c8bfd874af25c1,
+		0x7da3e1ca91b2543f,
+		0x364f95198fa6529b,
+		0x18da97bdceba7219,
+		0x3fbc65eedc9b8f75,
+		0xe3bcd671f97c8ed1,
+		0xeaf84d532981ac4f,
+		0x8ce567f32673dcab,
+		0xe7b319554586eb29,
+		0x21b8c4976378fa95,
+		0xd27165eba48c29f1,
+		0x37a6145cb19e286f,
+		0x8dfb7e2dcf8246db,
+		0xd2815471fea57649,
+		0xfe95b8721e7984b5,
+		0x9672c5d54d8ca523,
+		0x3162b955496da28f,
+		0xf5a148276872c1fb,
+		0xfd537e6ba673df59,
+		0xc318d47ba376fec5,
+		0x4c21a97ed58a1e43,
+		0xd4619c3fe16b2c9f,
+		0x47258ba4327f4b1d,
+		0x428c67f43f625b79,
+		0x79fbc4143d6479e5,
+		0x6d2ca8387d58a963,
+		0x5a26b1f8784a96bf,
+		0xcb43d17ba85eb63d,
+		0x2976fb1ed761e4a9,
+		0x47fd961fe685f417,
+		0x648adef326791483,
+		0xac9827d6546932df,
+		0x3dca9549827c415d,
+		0xdce73f576d3e4fb9,
+		0x65bd481bad538e27,
+		0x6d2c95acbc458d93,
+		0x19e5d34dc9368aef,
+		0x3c54e721f739ba6d,
+		0xc5db7e92163ec8d9,
+		0xa5e6b9443851f947,
+		0xaec8763a976518b3,
+		0xf26139acb5694831,
+		0x64597c3cb14a358d,
+		0x8cb9e4fbae2c54f9,
+		0x97f62b8dcd2f8367,
+		0x76a8c491fc5492d3,
+		0xd8af64943d47b251,
+		0x7da16ce43826af9d,
+		0xaedf83c65739ce1b,
+		0x598423f7652ced87,
+		0xf6bd247ba7521ce3,
+		0x7193ea8ed7453c61,
+		0xfbc9283fe12639bd,
+		0xda3b69ffef1a593b,
+		0xb41375a32f1d58a7,
+		0x3f82ebd54d2f9815,
+		0xc3859bd87d23b681,
+		0xc4d52f187915a4ed,
+		0xe718253ba918d35b,
+		0x437ae1ccb61ae2c7,
+		0x64759bddc72df135,
+		0x3eb8ad61f75342a1,
+		0xd514a6f325143efd,
+		0x48be6d2652174e6b,
+		0xe5c6d4843ef85cd7,
+		0xa2b359f76dfb8c45,
+		0x954db12769fe8ab1,
+		0xd4126efba8e1b92f,
+		0xe934d87dc6f3d78b,
+		0xa6e352ddc4e5d6f7,
+		0x5723ec9214eaf675,
+		0x2b89e51545fc26d1,
+		0x6c358fd873de254f,
+		0xea4d197981f253ab,
+		0x5718d42bafe67329,
+		0x6974defcbdea8195,
+		0x89ac627cb9ca8fe1,
+		0x54cd721fe7bc9d5f,
+		0x4ec681f327e1adcb,
+		0xae54cf3327d4ec39,
+		0xacf218b434d6fba5,
+		0x6f45c9a986ea2b13,
+		0x163e9da983dc297f,
+		0xd482a6ca91cf37eb,
+		0x5ed4f83dcfd26759,
+		0x2bd85711fed486c5,
+		0xb74639821ed9a643,
+		0xfd398e6328cba39f,
+		0x362e91b658aeb31d,
+		0xadcb358768c2e179,
+		0x1da2345986a3efd5,
+		0x9283c75cb6c81f53,
+		0xa2b9147dc3b82daf,
+		0x2953be41f1ab4c2d,
+		0xdc74a5f321bf4c89,
+		0x1c8ebfd43eb27af5,
+		0xf817dac54ec59a73,
+		0xbe5afd754ba697cf,
+		0x12e834d7689ab74d,
+		0x16db847ba68ed5b9,
+		0x41f976ced8b1f527,
+		0x6d3784e1f7c61593,
+		0x436e5c8215a723ef,
+		0x6e8af74653ba426d,
+		0xfe9d8cb762ac51d9,
+		0xb461fdc65d9e6f37,
+		0x9c8e36287d928ea3,
+		0x63182cdcbc96ad21,
+		0xc726b8ffe986ab7d,
+		0x3c59b211f568cae9,
+		0xb74f8c62168dea57,
+		0x9b623c4657a219c3,
+		0x9375da4987b63941,
+		0xe91cdf2982a7369d,
+		0x94576eadc29a561b,
+		0x49a8dcfcbf9d6487,
+		0x5364219cbc7f84e3,
+		0x3169ac71fd94b361,
+		0x6fa3bde32c75a1bd,
+		0xc2fa9e543967cf2b,
+		0x7d9fcb14365ade97,
+		0x19b8f468756becf3,
+		0xa7d586fcb6923d71,
+		0xe59134acb2743acd,
+		0x2358fc7fe1875a4b,
+		0xd214fabfef4a59b7,
+		0x2b637fa21f6d8925,
+		0x926e14f43d5fa791,
+		0x5c7963254b62a5fd,
+		0x2153dbc98a75d46b,
+		0x729814cba958e3d7,
+		0x9a45e1bdc87bf245,
+		0xea75196ed67e23b1,
+		0xa95df71fe683512f,
+		0xdfe6a5c212634f7b,
+		0x918c2a7431465de7,
+		0x31f625b54f3a8d65,
+		0xd4751af76e4d8bc1,
+		0xcba928187b4e9a3f,
+		0x2d963e1dca42d89b,
+		0x9542f3beda45e819,
+		0x721d893fe639f785,
+		0xaf59b744385b27e1,
+		0x5246ef74374d265f,
+		0x9672d419836154cb,
+		0x24c9de7cb1657439,
+		0xf9ce153cbf3782a5,
+		0x74f1ba9dce5ba213,
+		0xd5ab6fedca2b9e6f,
+		0x1bd5e78dc72f9edb,
+		0x9e6bfa321a32ed49,
+		0xd8baf2743824fcb5,
+		0x98cb413878591c23,
+		0x1c453f88753b2a8f,
+		0x34e75bda942d38fb,
+		0xc72f3b8ed2315869,
+		0x4f85e72dcf1387d5,
+		0x512eba71fe18a753,
+		0x37641c932d1894af,
+		0xf6438e965a1cb42d,
+		0x483fb6e65a1fd289,
+		0x47c562398923e1f5,
+		0xea516d2dca482173,
+		0x925d7f4ba5172ebf,
+		0x3586b1ddc51a4e3d,
+		0xd9183b41f21e4da9,
+		0x2bd79ef654328c17,
+		0x3ad871554ef29b83,
+		0xdcab41743be498df,
+		0x8f3126e54af7b85d,
+		0x8becd14657fad6c9,
+		0x145c6deba8fde637,
+		0x39fac75ed8f216a3,
+		0x4b7f295fe8f74621,
+		0x9efdb2a215f8437d,
+		0xe5c1a87543fa52e9,
+		0x2179f3d762fd8157,
+		0xa318f7c65dce7fb3,
+		0x5947a3698cd4ae31,
+		0xfb28d45879e4ac8d,
+		0x5c42817ba7d6cbf9,
+		0x17a58e61f5daeb67,
+		0xde2f369216bcf9d3,
+		0x5cd97e4768e23a51,
+		0xb15d483765e437ad,
+		0x312f784a93e8572b,
+		0x38dc4b6ba1eb6597,
+		0xa8e46d3a9ebc85f3,
+		0x45f8eadcbdcfa471,
+		0x9ceadb81f9b3a2cd,
+		0x5a46d1f32ac6d14b,
+		0x4c8a79f328b6dfa7,
+		0xfb5632c547bafe15,
+		0x6fb985a876bd2e81,
+		0x54de16a985a13bed,
+		0xc1329edba2d34c5b,
+		0x5f89a17fe1d65ac7,
+		0x49ab12cfefcb8a35,
+		0xf531e6b32fbd98a1,
+		0xdba5c7f43c9ea71f,
+		0xe8af72d54ca2d57b,
+		0x42d7f81769a5d4e7,
+		0x8735fb4ba8b9f365,
+		0x591a74ced7ab24c1,
+		0xb8513fedc6ad423f,
+		0xd17946a1f4c2519b,
+		0x4f62e3a212a35ef7,
+		0x4ab8f9d431b68e75,
+		0x8651a2e54f798cd1,
+		0xe46cd9a65d7c9b4f,
+		0xc7b963f6586fc9ab,
+		0x92d6f7bdcb83ea29,
+		0x526e4bfed7a4f895,
+		0xcbd9624fe6a928f1,
+		0x9d65a282159b276f,
+		0xfdb7e183248e35db,
+		0xfd9746b983b17549,
+		0xd8cf463a91a483b5,
+		0x78d149ecbf98a423,
+		0xfce2683cbd69a18f,
+		0x18e6a5fdc85a9feb,
+		0x3e589aced86fce59,
+		0x936cb5e21972fdc5,
+		0xc94e37865a971d43,
+		0xad87feb545672b9f,
+		0x1cda2b79857b4a1d,
+		0xaf98e65cb26e4a79,
+		0xf97da61dc29178e5,
+		0xf834e51edf74a863,
+		0x3295f1dfed4695bf,
+		0x58d9fc721e69b53d,
+		0xacf41b832b5cd3a9,
+		0xc69f31465a6fe317,
+		0xec7f691bab951283,
+		0x29d3458ba87631df,
+		0x8ad1f3ccb5683f4d,
+		0x6542739ed25a4eb9,
+		0x38ae1d21f15e6d27,
+		0xa1659fe542618c93,
+		0x46abe7332d4389ef,
+		0xd1cfe8654e35b96d,
+		0x94ad1fb65b38c7d9,
+		0x435b126a9a3ce847,
+		0x187d2b3ba84ef6b3,
+		0x12b8d43fea854731,
+		0xe452c191f756348d,
+		0xe2a87dc2164853f9,
+		0xebc64a86534c8267,
+		0x1adebf38725e81d3,
+		0x3f7a56998e52af41,
+		0x6e1bf4987c23ae9d,
+		0x3edb267a9a36cd1b,
+		0x9e2a4bfeda29ec87,
+		0x1e6c825ed72bfae3,
+		0x12bea954394f2b61,
+		0xb7f23186574238bd,
+		0x6fcb13da9726583b,
+		0x54d1238cb32956a7,
+		0xe1d57accb23c9715,
+		0x47dac8ecbf2ea581,
+		0x738e59ccbc21a3ed,
+		0xaed83471fc14d25b,
+		0x1894fe743b26e1c7,
+		0x69ade1554a19ef25,
+		0x5284bfd7683c2f91,
+		0x8c46d958761e2cfd,
+		0x2e3d41bba7124d6b,
+		0x16ab23fdc3145bd7,
+		0xda2f576fe2198b45,
+		0x1762fc5edefa89b1,
+		0xfd25e4921deca82f,
+		0x4a5983e32aefc68b,
+		0x6de97f154ae2d5f7,
+		0x461cd3298ae6f475,
+		0x91f672eba8f925d1,
+		0x75b846dba7eb234f,
+		0x5318e97dc5fe42ab,
+		0xf396b1cfe5f37129,
+		0x7c56fa8212e37f85,
+		0xfe8db27542f68de1,
+		0x5e687f943ed89c5f,
+		0xe98d675548ed9acb,
+		0x89f374c768cfdb39,
+		0x52cde93cb8d2f9a5,
+		0xa182c64ed9e72a13,
+		0xdb15649fe5d9287f,
+		0xda2f6ec215da36eb,
+		0x7dc6fea323de4659,
+		0xf8d496a873e184c5,
+		0xc5f8b32a91e6a543,
+		0xea84d5c87ec6a29f,
+		0xd3ef74c98ec9b21d,
+		0x235afc9ed8abcf69,
+		0x71a32efcb79fced5,
+		0xa6cd8bf32ac41e53,
+		0x2154bdf437b52caf,
+		0x384c1d7656c84b2d,
+		0x924b831763dc4b89,
+		0xe1347c6982bd69f5,
+		0x631bae5dc2d1a973,
+		0x54f3167cbea396cf,
+		0x4c9e8a11fea7b64d,
+		0xc5f249321ea8d4b9,
+		0x2d841fc43bace427,
+		0x984ab7c658aef293,
+		0xa6f41e3878a432ef,
+		0x9356e2fba8b7416d,
+		0x54f8376cb3a74fc9,
+		0xb71c3afed2ab6e37,
+		0xd8e71241f19e7da3,
+		0x4ed8b7f654b3ac21,
+		0x471be8532f83ba7d,
+		0xc7dbe1f43d75c8e9,
+		0x857f19b54c8ae957,
+		0x418b9237698bf7c3,
+		0xf75d92adc9af2841,
+		0x7f6a428fe7a2359d,
+		0xa9e23411f4a7651b,
+		0xc9ad85b214ba6387,
+		0x8c931b46549b82e3,
+		0x8bc35f98739ea261,
+		0x39b28f765e619fad,
+		0x1b7e62498d74ce2b,
+		0x35219b4bab65ed97,
+		0x7dfe643dc968ebf3,
+		0x7835b611f98d2c71,
+		0x4c92f852176f29cd,
+		0x276495143782594b,
+		0x3d157e87639458b7,
+		0x765fe43cb37a9825,
+		0x78ce543cb27ca691,
+		0x9afb26c98e5c94fd,
+		0x6d9b1e2dce71d36b,
+		0xe1569c81fb64e2d7,
+		0xec197f632c78f145,
+		0xa4179e265c7a32b1,
+		0x7dcfbe26586b3e1f,
+		0x13fd4a79865f3e7b,
+		0xc5e13b6ba4625ce7,
+		0x568a472ed2748c65,
+		0x85acd64fe2578ac1,
+		0xf576a81ede4ba93f,
+		0x635794b21f3ec79b,
+		0x78cd61954d52e719,
+		0x1ce2b6d87c43f685,
+		0x8e345a1a9b5826e1,
+		0x9572ac4cb96a245f,
+		0x92bd76cba75d43cb,
+		0x6bf1c53ed75f6239,
+		0x9863adb1f46381a5,
+		0xbd8a73c323458ef1,
+		0x32689a5541379d6f,
+		0x387f2a654f289cdb,
+		0x2739eb876b2edc49,
+		0x297ad4698c31fab5,
+		0x62be54aedc561b23,
+		0xb14ef89eda36298f,
+		0xd58431bfe62937fb,
+		0x4c27ad62182d4769,
+		0x5ce96fd4342f76d5,
+		0x356fba8a9742a653,
+		0x14a5cb79812593af,
+		0x64a23dea9f18b32d,
+		0x2f489cbbae2bd189,
+		0x532918bba91bcfe5,
+		0x1245d38feb421f63,
+		0xc5a2b96439142dbf,
+		0x7f6ac32659174c3d,
+		0xdb8ea3c656184ca9,
+		0x76fae48a952d6b17,
+		0x184e3accb41f7a83,
+		0x1cf234ecb31297df,
+		0xbf25841baef3b75d,
+		0x65f9b73febf6d5c9,
+		0xe45783621cfae537,
+		0xdf1bc3e329ecf4a3,
+		0x932f18687aef3521,
+		0x14ace5d989f3427d,
+		0xe79fbd6ba7f651e9,
+		0x926a748cb3e96f47,
+		0xebf2a54dc2fa7eb3,
+		0x3f987eddc2fe9d31,
+		0x6f2491a432f1ab8d,
+		0xd85c3e432ed3caf9,
+		0xa94bd7643cd5ea67,
+		0x2becd8f65ac9f8d3,
+		0x247a3bd98aed2951,
+		0x4efd672a97cf26ad,
+		0x71658feed8e3562b,
+		0xa8c694b1f3e56497,
+		0x3efd946215d984f3,
+		0x378164d654eca371,
+		0x1b36278652be91cd,
+		0x34281cb76ea1cf3b,
+		0x89ac4f276cb3dea7,
+		0xf512d7aa9ab7fd15,
+		0x2b51c94fe9ca2d81,
+		0xc8469231f69b2aed,
+		0x356a78e217cf3a5b,
+		0xf986a15436d259c7,
+		0xf5269d4874d68935,
+		0xd3f8e41763d897a1,
+		0x1962e7d982cba61f,
+		0x1d2e3af98f9ec47b,
+		0xdaf567ccbca1d3e7,
+		0xfb4635afecb4f265,
+		0xf16c29354db823c1,
+		0x182f39d659ba413f,
+		0x829cf6b5469c3f8b,
+		0x51ab9437659e4df7,
+		0x8efc376ba4b28d75,
+		0x5a176fedc3a58bd1,
+		0x674f3baed1b79a4f,
+		0xf5c1d9bfef69c8ab,
+		0xb7564f921f7ed829,
+		0x728a4ed43da1f795,
+		0xe354b8976ca527f1,
+		0xbe21c4a87ba8256f,
+		0xfde2714ba78934db,
+		0x3147a29dc7ad6349,
+		0xcef23baed49f72b5,
+		0xd63abc21f6b5a123,
+		0xc8e6ab7212849e7f,
+		0x615efad431769deb,
+		0x29c4f1d43f6acd59,
+		0x5fd136c54a6debc5,
+		0xe9b87cfbad921c43,
+		0x3b4751ddcb742a9f,
+		0x592ba64fea87491d,
+		0x2de8ca41f56b4879,
+		0x59fd6ec2148c67e5,
+		0x6dc83a53248f9763,
+		0x23487df7637294bf,
+		0x2fd43a8a9186b43d,
+		0xbe41a3798f57d2a9,
+		0xe31985dbad6be217,
+		0xe124cf3cba5cef73,
+		0x1c92564ed9612ecf,
+		0x7eb52af21a753e4d,
+		0xdbc8134328564db9,
+		0x7e6ad525485a6c27,
+		0xb3fda519845d7b93,
+		0x67ca143a924d78ef,
+		0xd281795dc152b86d,
+		0xf316594cbf34c6d9,
+		0x743e9a51fd39e647,
+		0xbd6a94f21d4af5b3,
+		0xe837d1a65c7e2631,
+		0x1265ea387b61438d,
+		0x53cb97a98a6452f9,
+		0xdb14a73dca498167,
+		0x235d41acb5497fc3,
+		0xeb5f641ed35c9e41,
+		0xb84a932fe13f8c9d,
+		0x9312db754253dc1b,
+		0x8f59db643f24eb87,
+		0xefc79ab65c27f9e3,
+		0xdb391ec98d4c2a61,
+		0xd62349a9893e27bd,
+		0xb6a5791eda41573b,
+		0x32164c5fe92365a7,
+		0xbd683211f7389615,
+		0xe1a64d53263ba481,
+		0x61ed9fa6543b92ed,
+		0xb2f41968723fc15b,
+		0xfe3c41a76e12dfb7,
+		0xb37c46fa9c16fe25,
+		0xe1d7a8ccbc382e91,
+		0x463a79edc8192bfd,
+		0xc6a34851f81e3c6b,
+		0x65784fe439215ad7,
+		0x315bd97769138a45,
+		0x4bcf3518752698b1,
+		0x649bc5398419a72f,
+		0x3da1c5ba921dc58b,
+		0x2d3f59698bedc4f7,
+		0x2c9e764cbce1f375,
+		0x17b5362febf624d1,
+		0x4cd692721be8324f,
+		0xd5967c4438f941ab,
+		0x1c358d6547ec5f19,
+		0x3ed5968874df6e85,
+		0x6fc5b8ea95f38ce1,
+		0x9d3c815ba2e49b5f,
+		0x521b439ed1f6a9cb,
+		0x9b584efdcfebda39,
+		0xd3b7a2521fcde8a5,
+		0xc9412bf76de42913,
+		0x4c6d89e65bd4267f,
+		0xdeb437f769d735eb,
+		0xc1bf6e8ba8eb6459,
+		0xc7b35e9ba6ed73c5,
+		0x43e8f1ddc6df9243,
+		0x3126fd7fe4d3a19f,
+		0x23b4ed8212c49efb,
+		0xa46f7c5431d7ce69,
+		0xde25a9743fa9ecd5,
+		0x28acbe376badfc53,
+		0xb124ae8879c12baf,
+		0x5ce1a34cb9c54a2d,
+		0xbca7f62fe7d64a89,
+		0x42c78b1fe4ca68f5,
+		0xb38a79d215cd9873,
+		0x69b8eda323ae85cf,
+		0xa96345f873c2b54d,
+		0x5af481c871c5d3b9,
+		0x7eba16398fb9e327,
+		0x9dbc21e98dabf193,
+		0x8956ec1cba9c21ef,
+		0x74d98a6fe9a13f5d,
+		0x29f863b218a34ec9,
+		0x715a39e329b86d37,
+		0x7c3851a545b97ca3,
+		0xd91f28b875ad9b21,
+		0xeaf7b187628fa97d,
+		0xc64a8d3cb1a2c7e9,
+		0x374df19dcfa4e857,
+		0x72459acfed98f6c3,
+		0xfd9cba443eac2741,
+		0x9c7284543b8e249d,
+		0xf8a9e1c87ca2641b,
+		0xa7124e8a9ab46287,
+		0x15694a7cb6a781e3,
+		0x561892ddc48a9f51,
+		0x79aef15dc26b8ead,
+		0x159f732fe17fad2b,
+		0xaf1476d43182ec97,
+		0xdcb53a432d75eaf3,
+		0x367b8c465e892b71,
+		0x2c4fad365b6a28cd,
+		0x45f7b2da9a7e384b,
+		0xc85b1f6eda9156b7,
+		0xa325f74fe8a49725,
+		0xd7453621f487a591,
+		0xbc82fa62146893fd,
+		0x3caf1be5437dc26b,
+		0x269b8d16526fc1d7,
+		0xea2dc9198d72ef35,
+		0x2c63415a9d762fa1,
+		0x7e461cdbab683d1f,
+		0xacd569ffe95a3d7b,
+		0x289d4671f85d4be7,
+		0x6a7db4332a718b65,
+		0x824f6c94376489c1,
+		0x46fc95887456a83f,
+		0x6b89a5387248c69b,
+		0x8e43f9cba25cd619,
+		0xb3d87c9bad3fe485,
+		0x49d6e71dcd7425e1,
+		0xa1b4293fec67235f,
+		0xba74d9521d5842cb,
+		0x3ae159f54b5c6139,
+		0xc987dfe5483d6f95,
+		0x84adefba97528df1,
+		0x1823b59ba5439c6f,
+		0x6fa8d3edc2359adb,
+		0x85c69adfe138db49,
+		0x16ab25cedf2ce9b5,
+		0xda48f7621d4ef923,
+		0xb796ad465d43278f,
+		0x4c5d62987c2536fb,
+		0x475b1f998c2a4569,
+		0xebd9745ba92b74d5,
+		0x8b75931dc82e9453,
+		0x572ea13ed64192af,
+		0x12356b71f645b12d,
+		0x35bda4921325cf79,
+		0xba917c354128cde5,
+		0x94c783265e1bfd63,
+		0x4c82e1f76a2e1cbf,
+		0xcf6813aa9c124b3d,
+		0x5ce6984edc154ba9,
+		0x4bd9a15feb296a17,
+		0xae8d4621f61c7983,
+		0x8fd37ae3251c86df,
+		0xe6387fa54721b65d,
+		0x6be598c87513d4c9,
+		0x396fd4cba218e437,
+		0x39f8eac87de8f2a3,
+		0xfe2b943badfc3421,
+		0xd6f73c1cbafe317d,
+		0xda63875dc8e14fd9,
+		0x57286d421af36e47,
+		0xac94d8b328f67db3,
+		0xd71239a656fa9c31,
+		0xfa98d36653fc9a8d,
+		0x2d871b4762deb8f9,
+		0x4219857cb1f2e967,
+		0x15627f8baec5f7d3,
+		0x2ba71ed1fdea2851,
+		0x67cde9321ceb25ad,
+		0x2af8ed643ade452b,
+		0x3b2ac4165be16397,
+		0xb1d8f95879d582f3,
+		0x3c49781cb6e8a271,
+		0x45687bca93c78fbd,
+		0x82e3b67a92dcae3b,
+		0x14c79d5fe1bfcda7,
+		0xec82761542d3fc15,
+		0xfa7e26d54fd62c81,
+		0x56e1b2754cb729ed,
+		0x7b91ca876adc395b,
+		0x12bfcda769be48c7,
+		0xef4b8addcad19835,
+		0x1af9453fe7d496a1,
+		0xa925f7dfe4c7a51f,
+		0x4c738df214d9c37b,
+		0x9a7cbf1543abc2e7,
+		0xea968d4872bfe165,
+		0x9fe54d198fb532c1,
+		0x6cf5b4798ca63e2f,
+		0xc8f2ae5a9ca73e8b,
+		0x9b2534fed89a4cf7,
+		0x3cb18a71f8ae6c75,
+		0xdb524ef437b28ad1,
+		0xcf14b7e326b3a94f,
+		0x817efdc54395c7ab,
+		0x3c1857a763bad729,
+		0x64fc795981ace695,
+		0xd267e3aa9c8de5f1,
+		0x8e29a37dcda3246f,
+		0x8ad51621fc9643db,
+		0xd4293f821dba6249,
+		0x68cf24b43a9c71b5,
+		0xf9decb76579d8f13,
+		0xea7315c765819d7f,
+		0x972bf4a984739ceb,
+		0x972f83ecb286dc59,
+		0xc1bf367ed178eac5,
+		0xb2e91a5ede7cfa43,
+		0x4a3c76b32d6e189f,
+		0xfca763465e93481d,
+		0x1eda74f43da54679,
+		0xf1bc9a754b8976e5,
+		0x172d49ecba8c9563,
+		0xbe7938dba56d83bf,
+		0x6cd32a5fe681b23d,
+		0xc72b6ad1f374d1a9,
+		0x4592ecf21276cef5,
+		0xa1829e654169fe73,
+		0x93facde54e5a1dcf,
+		0xa5cf9e287b6f2c4d,
+		0x4eab26398d624cb9,
+		0xa975421edc856b27,
+		0x2af14d3feb587a93,
+		0xf8b4215ed54a87ef,
+		0x8ad6e2b2154ea76d,
+		0xab8172f43461c5d9,
+		0xa3efcbda9283e547,
+		0x743f5d8a9167f4b3,
+		0x95d74efbaf7b2531,
+		0x834e725bae5c328d,
+		0xe4b62a5dcb5e41f9,
+		0xd3c48a2feb426f57,
+		0x4ba983221a457ec3,
+		0x8edfc7643a589d41,
+		0xc3159d25453a8b9d,
+		0xbac5f348754eca1b,
+		0xc6a4e2dcb341ea87,
+		0x51a3829cb154f8e3,
+		0x932568aedf482961,
+		0x83dba271fe3926bd,
+		0x837ce9b21e2d463b,
+		0xd68c14f43c2f54a7,
+		0x1d2b6e398c639415,
+		0xe156d3fa9b46a381,
+		0xf9e47bcba63791ed,
+		0xe6a975fdc529af4b,
+		0x5678bd1ba32dceb7,
+		0xb4adf98fe341fd25,
+		0xb7e23f4763452d91,
+		0xde2173c54e162afd,
+		0xdfae18965e193a6b,
+		0x8fa912776b1c49d7,
+		0x7198fecbab1f7945,
+		0xa6b3e29eda2397b1,
+		0x6593cabed815a62f,
+		0xba45c191f517c48b,
+		0x3f416ce3251ac3f7,
+		0xf759a147641de275,
+		0x426bac5a965423d1,
+		0x5316e9d98de5314f,
+		0x6124ce387ce53f9b,
+		0xf2d5163babf85e19,
+		0x47d961adc9fb6d85,
+		0x1edbaf8dc6fd7be1,
+		0xb73c89a327e19a5f,
+		0x63bad4e325f3a8cb,
+		0x14ce7d9654f6d839,
+		0x7c2d145762f9e7a5,
+		0x7d123a5a92ecf713,
+		0xc86e54fa9dce157f,
+		0xedf1463bacd234eb,
+		0xc36758a1fce76359,
+		0x5437de821be972c5,
+		0xb34f2ea65aec9143,
+		0xe952b76435bc7e8f,
+		0x49378b5765c19dfb,
+		0xc7be29f984e3cd69,
+		0x68afe54a92c6ebd5,
+		0x9fae172dc1d9fb53,
+		0xb1428f6edebc19af,
+		0x26bd83c21ebf392d,
+		0x5d8bcf943ed24789,
+		0x5dbfe8943bc467f5,
+		0xb2fdc8165bda9673,
+		0x836dbca876ba84cf,
+		0x354be1fa96bea34d,
+		0xbfdc243fe5c1d2b9,
+		0x613b74a1f4c5e127,
+		0x8d473a2212b6ef83,
+		0xf7eb26a542a81edf,
+		0x2e761df54f9b2e5d,
+		0xc8af61265b8f3dc9,
+		0x43c7befa9db26c37,
+		0x1984a7ced9c57ba3,
+		0xf9d425cfe7c89a21,
+		0x3d54ba81f49ba87d,
+		0x42695b82148db6e9,
+		0x18d9fa5434b1e657,
+		0xb35d2e1872a4f5c3,
+		0x6215d83ba3c92641,
+		0x5df4b2c87f8a239d,
+		0x4f9e371bae9d531b,
+		0x3bcef86edcaf5187,
+		0xb2d438ffea927fd3,
+		0x89cabe132ba69e51,
+		0x8df76a5325768cad,
+		0xf7b385c54579ac2b,
+		0x3fd746e6536edb97,
+		0xd9216efba481e9f3,
+		0xca64be9ed3b52a71,
+		0x1e27c6fcbf8627cd,
+		0xd5a874c1fe8a374b,
+		0x69cd83a21e8d45b7,
+		0x9671f4a43c9f8625,
+		0x5c84bad76c83a491,
+		0x1fe23b47687592fd,
+		0xfe25bd1ba578c16b,
+		0x376d459ba359bfc7,
+		0x231e47dcb27cde35,
+		0x54c29b71f4832ea1,
+		0x93e6b5f542853c1f,
+		0x19a3f7832f563c7b,
+		0x69284fe43d594ae7,
+		0x54fa69298c4d7a65,
+		0xb347d21a9a5f78c1,
+		0xdf128eadc962a73f,
+		0x76b42dcfe764c59b,
+		0x136b45d1f468d519,
+		0x7cfbda92146be385,
+		0xfd829316546cf3e1,
+		0xdf1846ba9481325f,
+		0xac59edf98f6541cb,
+		0x32479f8bad475f29,
+		0xe187da2cbc3a6e95,
+		0x21574f8ed94b7cf1,
+		0xabe623fed73e8b6f,
+		0xd2e359b21742a9db,
+		0xd169bc532735da49,
+		0xf182cba76437e8b5,
+		0xa5264d8a945bf823,
+		0x798f3c1ba24d168f,
+		0x237c168bae4135fb,
+		0x12a4f8bede235469,
+		0x6cb217e1fc2873d5,
+		0x684bc9a21d4b9253,
+		0x3e9d25a5493c81af,
+		0xfdc713a6573e9f1d,
+		0x143e6d598632ce79,
+		0x2e18a7fa9624dce5,
+		0x315cf2acb428fc63,
+		0x54a6378ed2391abf,
+		0x8a724e3dcf1e2a3d,
+		0xc27854a43f2148a9,
+		0x87314ac65e246917,
+		0xd32ec8b65d169783,
+		0x2ea937176a1985df,
+		0x81a7f2ba981ca45d,
+		0xd539472ba61fb3c9,
+		0x6413c75ed814e237,
+		0x19a4c37fe526f1a3,
+		0x4718ba57675a4321,
+		0xbf43cd96531a2f6d,
+		0xe7bd3a654cfb3ed9,
+		0x3184e9a76bef5d47,
+		0x6fbd2a598af27cb3,
+		0x8f7e952dcaf69b31,
+		0xa7e8f25dc5f6a98d,
+		0x7e6c1afed4eab7f9,
+		0x3c9a4fd214fed867,
+		0xbf6235d545e1f6d3,
+		0x5e6a3dfa94f62751,
+		0x5cb96fd981f724ad,
+		0x4a95c1798fea542b,
+		0x842bdf7baced5297,
+		0x456f97acbace71f3,
+		0x763cb28fead39f61,
+		0xd948be2217c48ebd,
+		0xea734cd326e7ad3b,
+		0x25b84a1434e9dca7,
+		0xae6f94b874cdeb15,
+		0xe5c3bf8ba5e32b81,
+		0x48316fbba1c428ed,
+		0xaed7354dcfd7385b,
+		0x4ad5e181feda46c7,
+		0x543a8d221ecd8735,
+		0xce92a7543bcf85a1,
+		0xc851e92769c3a41f,
+		0xde9cb8a768d5c27b,
+		0x325bfc4a95b8c1e7,
+		0xb14e3f6a93badf45,
+		0x6bcd742ba39cfeb1,
+		0x687943dfe4b13d2f,
+		0x9f86bd4321c43d8b,
+		0x693517d32ea64bf7,
+		0xe1cf56443eca6b75,
+		0xd8324af65bac79d1,
+		0x4eb9f31767ae984f,
+		0xb352879ed792c6ab,
+		0x49135b7fe7b5d629,
+		0x7ac6e481f3b8e495,
+		0xe5387a93259ae4f1,
+		0xb9e4adc654ad136f,
+		0xc1e8a9b873a142db,
+		0x3c457bd98fb56149,
+		0x2643a9798d976fa5,
+		0x2961dafcbc9a8e13,
+		0x9428abfed96b8c7f,
+		0x354c1e6ed56f8aeb,
+		0x2368e4d21782db59,
+		0xb4d158c32684e9c5,
+		0xa5cd2f8765a8f943,
+		0x952143b7638b179f,
+		0x452d689ba29e371d,
+		0xd9fa167dcfa14579,
+		0xf7d3468dcd9374e5,
+		0x9e26d1b1fda89463,
+		0xd8ce36421c6982bf,
+		0x93fb2d15497ca13d,
+		0x6e7c4bd4365ebf89,
+		0xb39612f98672cdf5,
+		0x6d8c9f1ba485fd73,
+		0x8fb9613ba3671bcf,
+		0x928dc17fe17a2b4d,
+		0x6c2fe19edf5e3ab9,
+		0x87e4acb43f816a27,
+		0xa19368f32e647893,
+		0x67af15e43b4586ef,
+		0x59e42b187b49a56d,
+		0x1d762f99875cb4d9,
+		0xd92ef15cb86fd347,
+		0x13b58e6ed674f2b3,
+		0x27b415a1f6982431,
+		0xfbc647932469318d,
+		0x3f617b25415a3fe9,
+		0xc7d3a9e76f3d4e57,
+		0xdf37e2b98e517dc3,
+		0x7dfce32bad659c41,
+		0x621df98dcb358a9d,
+		0x8731b92fe748c91b,
+		0xacb9e351f53cd987,
+		0x5384f962164fd7e3,
+		0x643cdf1659742861,
+		0x3b9e5719834625bd,
+		0xc9163b4ba169453b,
+		0x87a3bc4a9f2c53a7,
+		0x87f6c34cbd4e8315,
+		0x4f638d5fed53a281,
+		0x63817d2fe9238fcd,
+		0x4f8ab2321926ae4b,
+		0x81c927b43628cdb7,
+		0x93fa7b47673bec25,
+		0xf9ad32e8753efb91,
+		0x579d82fba54329fd,
+		0xe2b8a75ed125396b,
+		0x92a413edcf1948d7,
+		0x1857c421fe1c7845,
+		0x5f6e19443d2e86b1,
+		0x53421bc76c31a52f,
+		0xe3df8b476a14c38b,
+		0xc192d6598916c2f7,
+		0xf73d915cb82ae175,
+		0x57b48fea952aefc1,
+		0xc4817e2cb52d1e3f,
+		0x7824d391f4123e9b,
+		0x132d5e7543265d19,
+		0x9356adc32ef76c85,
+		0x3c61e5f54cf97ae1,
+		0xf2b5e6754aec895f,
+		0x6a2d984656ef97cb,
+		0xa15e246cb8f2d739,
+		0x68e193bdc7f4e6a5,
+		0xf75b1e6ed5e9f613,
+		0x3a46c1f325eb147f,
+		0xd637be8654fd23eb,
+		0x64a2937983f16259,
+		0x6b419c298fe471c5,
+		0x213eca5a9cd78f23,
+		0xbd7c3e976ac97d8f,
+		0xa71b5d8a96da8cfb,
+		0x1b5d627fe5dfbc69,
+		0xe8d9f37217c2ead5,
+		0x946ef8d327d6fa53,
+		0x4acb689654d718af,
+		0xefb4839874eb382d,
+		0x2e9576cba1de3689,
+		0x8fb3e12baec176f5,
+		0x21baed8dced49573,
+		0x1c8b4f2feab683cf,
+		0xa2673c521bc9a24d,
+		0x69b5f21437adc1b9,
+		0xecb8a32546aecf17,
+		0xdcabe26876b2fe83,
+		0xc6bfa5e984a51cdf,
+		0x834f1c5ba3b82c5d,
+		0x2dfb491fe1da3bc9,
+		0x7feb3a9edfae5b37,
+		0x5dc8f1332fc179a3,
+		0xe3fb59c54ec5a921,
+		0x59a7dc843cb5a67d,
+		0xa95fec1547a8b5e9,
+		0x3cae287a98acd457,
+		0xc4fe572ba69fe4c3,
+		0x958c3dbfe8c62541,
+		0x745ce2d1f4b6329d,
+		0xf2d5ba6434c9521b,
+		0xb7512ea431ab4f67,
+		0xfc687b254f8c6ed3,
+		0x1f843a687ea29d51,
+		0x38cf9ad76c738bad,
+		0xa36b51ced986ca2b,
+		0x63279c1fe568da97,
+		0x9c5a3f7fe57bd8f3,
+		0xa1fbe583259ef871,
+		0x7a6d1e35459326cd,
+		0xd42c1ea982a7364b,
+		0xb1273fe981a954b7,
+		0xb9d6238baf9c8425,
+		0x89ce567cbd7e8391,
+		0x6a54e1fdcb7291fd,
+		0x192fd7afe973af5b,
+		0xad6be9721965bec7,
+		0xa8739dc32879ed35,
+		0x58e9af65456bfca1,
+		0x4ecd3179857e2b1f,
+		0x52b68a1dc4823a7b,
+		0x5764fbddc18549e7,
+		0x73c21a5edf4a7965,
+		0x57c8a6e1fe5b87c1,
+		0xca9342e21c5d963f,
+		0x1c72b9643d61c49b,
+		0x94fb25c76b75d419,
+		0x7e2dc83a9a67e285,
+		0x2148b95ba769f2e1,
+		0xd7896c4cb67c215f,
+		0xba37d46dc35e2fab,
+		0x23a98be1f1735e29,
+		0x79d6a45321746d95,
+		0xd4f965e43e487bf1,
+		0xe5b831c54d3b8a6f,
+		0x986b3fd65a3e98db,
+		0xf63d1b9bab51d849,
+		0x9e4b1d8dc943e7b5,
+		0xe14c658ed958f723,
+		0x1738f2dfe64a158f,
+		0xcbf892d2165c24fb,
+		0xbea2d1c8725f4369,
+		0x1578e46a916372d5,
+		0x14c5362baf479153,
+		0x9a235b798c267e9f,
+		0x1e6ba3498b3a9e1d,
+		0x1792f4ddc82ebd79,
+		0x15ea4d61f831dbe5,
+		0xb6279e521924fb63,
+		0xa7f1d835473619bf,
+		0x63b41c98764a293d,
+		0x7e4ac6f9842d37a9,
+		0x8cd4fe9cb23f5817,
+		0x97f28e4dcf129683,
+		0xd85afe9cbc1584df,
+		0x8e1c29b1fc18a35d,
+		0x47f912e43d1ab2c9,
+		0x7d4bcfa65a2ed137,
+		0xec2498776821ef93,
+		0xf5cb412987241def,
+		0x57cbd82ba5172e6d,
+		0xc452137cb4183cd9,
+		0x4871a2ffe21d5c47,
+		0xdf32a51dcdfe6ab3,
+		0xf28ad1c54ef29a31,
+		0x8a5ed3732cf3a78d,
+		0xe46b95843ae5b6f9,
+		0x169bdfe549fad567,
+		0xa16e75d987fbe5d3,
+		0x4bd2e81ba7def451,
+		0x4b1893ddc6f423ad,
+		0xf7d1836fe4f7532b,
+		0xf9d147b323fa5197,
+		0x8bc19f5541da6fe3,
+		0x379f85654fcd8e61,
+		0x4c3f87965ae18cbd,
+		0x26fe5c1879e4ac3b,
+		0x6f7b234a98e5dba7,
+		0x81534dfdc7d9ea15,
+		0xc1465f8fe5dcf981,
+		0xc6534ef325bf17ed,
+		0xe8592ad546e2375b,
+		0xfde3157982e645c7,
+		0x84fc23aa91ea8635,
+		0x8c1f5a487fdc84a1,
+		0x9a45bcd98cbd931f,
+		0x45bc678fead2c17b,
+		0x576b3fdfe8a3bfd7,
+		0xf48a652219b7de45,
+		0x5dc8e67436a8fdb1,
+		0x38af426656ab1c2f,
+		0xfa8d5e1764af2c8b,
+		0x4e6dab7a93c24af7,
+		0x7d36aefdc1d46a75,
+		0x915dab7dcfb978d1,
+		0x7b8693afedab974f,
+		0xbc8a93221d8e95ab,
+		0x6315a9854cb1d529,
+		0x97e83cd76ab4e395,
+		0x75cf8ba768a7e3f1,
+		0x478cbfaa97ba126f,
+		0x2c9b5dfba59c31db,
+		0x82153e4dc2ae4f39,
+		0x39a45861f1b26ea5,
+		0xe1c6d9f542b68d13,
+		0xf54eba632e968b7f,
+		0xf769cd443d6a89eb,
+		0xef6a9b554b7eca59,
+		0x5f4ab2887a91e8c5,
+		0xd65faebdc9a5f843,
+		0xf1b4e39ed5a7169f,
+		0x25c76d31f59a361d,
+		0xe7c8a65215ad3479,
+		0xa8976b25429f63e5,
+		0x3fe6d42981b49263,
+		0xfa7982b76e7581bf,
+		0xf169e7b98c679f2d,
+		0xe24931d87c5abe89,
+		0xedc4562ba86dbcf5,
+		0xfb654d8fe981fc73,
+		0xb4d6f79328741acf,
+		0xd7c29ef436872a4d,
+		0x1682fe46546a38b9,
+		0xb7f41e9ba38d5927,
+		0x8d39e7acb18f6793,
+		0xf9e5347bad6285ef,
+		0x16f57aedce75a46d,
+		0xe34b56c1fc57b3d9,
+		0x87cab5d21c6bd247,
+		0xde3cabf5496de1b3,
+		0xe7d164c98b954231,
+		0x1be6573a98642f7d,
+		0x43b5cd8ba4563de9,
+		0x4daef31dc26a4d57,
+		0x4fd123bfe15d6bc3,
+		0x397abceede5f8b41,
+		0x6b9a52e21f42a89d,
+		0x68ae91c43e45c81b,
+		0xf38adc954c39d687,
+		0x51bd9868794ad6e3,
+		0x8237145ba94df561,
+		0x2a14df6dc86124bd,
+		0x1765bd9fe876543b,
+		0x74c62381f34852a7,
+		0xfab65124346b8215,
+		0x43de6a76524c8f71,
+		0xf2d975e54b2f7ecd,
+		0xe8f21db87e32ad4b,
+		0xf691a2d98a24dcb7,
+		0x6ab7f13dca38eb25,
+		0x1e95a37ed73bfa91,
+		0x63a5f9dfe63c18fd,
+		0x78d61f432941386b,
+		0x3916ba26582346d7,
+		0x132bedfba3298745,
+		0xeb368a1a923a85b1,
+		0x3e5c1f998e1c942f,
+		0xcfd285aa9d1fa28b,
+		0xe5f239cedb23c1f7,
+		0x9b21ad6fea14df65,
+		0x2c4f9be43927fec1,
+		0x3eac69b6582a1d3f,
+		0x37fa8c46561e2d9b,
+		0xe74d19fba7325c19,
+		0xb4fd628dc4136b85,
+		0x7da9b83dc32679e1,
+		0xa273f16cbde7985f,
+		0x43d591ffedfa96cb,
+		0xa493bce21bfec639,
+		0x7b2f81d43bf1e4a5,
+		0x452df3687ae6f513,
+		0xad85f29769e8137f,
+		0x4d925c3986f932eb,
+		0x4f1239ccb6fd4159,
+		0x9d241f7ba2de4fb5,
+		0x21a95f3ed1f48e23,
+		0xd1fe5ca321e47c8f,
+		0x34ec7b932ed68afb,
+		0x6ac7f5243deacb69,
+		0x1e526c7548bec9d5,
+		0x26ac3fd98ad1f953,
+		0x7e3c9f2cb8d417af,
+		0x4398d61dc6e8372d,
+		0x1d94b8c1f4eb3589,
+		0x5a92cbd213dc64f5,
+		0x2a369cb652df8473,
+		0xc58943d761d382cf,
+		0xdeb864987fc6a14d,
+		0xe8cd92b65dc6bfa9,
+		0x6a2e9d1989bace17,
+		0xda935e1cb7aced83,
+		0xa4f2b86fe7a21bdf,
+		0xc534df8218c42b5d,
+		0x458fcd7325d63ac9,
+		0xa9b8f24764db5a37,
+		0xcbfa613872cd68a3,
+		0xe6c458dba3cf9821,
+		0xdf8eb47a9fb2a57d,
+		0xfa3b846dcda5b4e9,
+		0x731a8e51fcb9d357,
+		0xba4932c21b9ae2c3,
+		0xf63478e659adf241,
+		0x91dab5e768b2319d,
+		0x6cd39e8876a43ef9,
+		0xb183f65ba3b84e67,
+		0xd986214cb2a96cd3,
+		0x1c5b894fe2ad8c51,
+		0x4eda87fdce6f79ad,
+		0x572bc3421f83c92b,
+		0xe6793f832ea4d897,
+		0x7126a3554b98d7f3,
+		0x8f7d69165a9bf671,
+		0xe541fada978e15cd,
+		0x152e3b7ed8a1354b,
+		0x16d8fb7fe6a453b7,
+		0x859d7411f4b98325,
+		0x5f1e647434ab8291,
+		0x9671b8c4316a7fed,
+		0x92c6b1443d6f9e5b,
+		0x6e1924765e62bdc7,
+		0x7cae6b5a9b86ec35,
+		0x56d39b4dc967fba1,
+		0x7a6b589ed87b2a1f,
+		0x93a7b851f56e297b,
+		0xea748533269148e7,
+		0x6cde518324a37865,
+		0x3c42f6e6539786c1,
+		0xc4b53df9817a953f,
+		0xd523aeb87f5da39b,
+		0x826379ebad6fc319,
+		0x37fa5ebedc73e185,
+		0xbe45fd2dc965efd1,
+		0x6a51ced32a681e4f,
+		0x9e6b712437592eab,
+		0x34c89fb6576e4d29,
+		0x973cfd6ba4716c95,
+		0xd5ca783cb3647af1,
+		0x5b6419edc145896f,
+		0x8b9e26adcf3897db,
+		0xade62941fe3dc749,
+		0x8d43f2c21c3fd6b5,
+		0x7d8ce1465c74f623,
+		0xe1fc38587b56148f,
+		0x9f1c6428795823fb,
+		0x95dfec2cb85c4269,
+		0x5379dc2cb74e61d5,
+		0x95cbe6aed5618f43,
+		0x3b1f2cdfe1437d9f,
+		0xbf85a6e432469c1d,
+		0xd2fa7b943f28bc79,
+		0x2a1db8f54d2bcae5,
+		0xeb56d1f87b2fea63,
+		0x8b3e7a1a9a4318bf,
+		0x34f8b62dca46283d,
+		0xa65b1c2fe72836a9,
+		0x3b92a571f83c5617,
+		0xd3457922162e7583,
+		0x2a5bed87654183df,
+		0x91d4fbc98134a25d,
+		0x246ed3887f26b1c9,
+		0xad65b7398d19cf27,
+		0x239dacb98a1bde93,
+		0x478c5b6a971cdbef,
+		0xc9e67521f9132c6d,
+		0xf358e1d328153bd9,
+		0xaf146c2438195b47,
+		0x83ce5618751c69b3,
+		0x495731dba52e8931,
+		0xc5fa346cb321a68d,
+		0x63b219c98de2b5f9,
+		0xac68f5dcbcf5d467,
+		0x2f35d1edcaf8e4d3,
+		0x8a1c69e32aebf351,
+		0x6e932c7548fe12ad,
+		0x42fa8db879f3512b,
+		0x1a3d78ba96e34f87,
+		0x6ef5371a94f76de3,
+		0x5d847a9cb3fa8d61,
+		0xdb6c4f5a91fc7abd,
+		0x6f7b48edcedf9a3b,
+		0x7a236bf21fe2d9a7,
+		0x7d1a8ce43cd6e915,
+		0x3e6b81a54bd9f781,
+		0xfc72a48658ca16ed,
+		0x1e4f583a98de265b,
+		0x45c21e6cb8e154c7,
+		0x421f8eaed7e68435,
+		0xae5d2481f4e783a1,
+		0xae6917f434da921f,
+		0x158976f431dc9f6b,
+		0x8fdb56a43c9faed7,
+		0x2c58fde87cb2ed45,
+		0x815694f879a5fcb1,
+		0xd9c1864ba9c81b2f,
+		0x57b8a6cfe6dc2a8b,
+		0xd832169fe5bd39f7,
+		0x83dcf91328d16975,
+		0xb1d856e435c487d1,
+		0xd47cf69652c7964f,
+		0xe74d9f2761d894ab,
+		0x6b9e54f87fadc429,
+		0xc7eb4ad98cafd295,
+		0x2346f1ddcba4e2f1,
+		0x6d73bf5feab7216f,
+		0xed92837218972fcb,
+		0x41efd35327ab4e39,
+		0x4bc85a74369e4da5,
+		0x8e547a6a96b28c13,
+		0x5e6a2c3a92b38a7f,
+		0x8e16b92dc1a598eb,
+		0xea2b64cedf7ac859,
+		0xec6a7421fe8bd7c5,
+		0x2bac78e21c9fe743,
+		0x7d93e6f54ca3159f,
+		0xf5c2b7176ba7351d,
+		0x41d5f7a768ba4379,
+		0xb3fe729ba79b62e5,
+		0x8be3961dc5ae8163,
+		0xe2af597dc3817eaf,
+		0x39e2bc11f1849e2d,
+		0xf4e3dab32175bd89,
+		0x9d1e8c632e68cbf5,
+		0x73d598e54d6ceb73,
+		0x17eac6d5495de8cf,
+		0xe3154fcbab83294d,
+		0x742f531eda8537b9,
+		0xc513629fe69a5827,
+		0x98b6ca21f48c7693,
+		0xe5fc67d2136c74ef,
+		0x4187fb965481a36d,
+		0x452fe7c76174b2d9,
+		0xa7dc2b6a9f68d147,
+		0x18fd3b687c58dfa3,
+		0x21d74c8a9a6bfe21,
+		0x4532798cb95f1e7d,
+		0x2ae438d1f8623ce9,
+		0x3ec9b5421a864c57,
+		0xb3158ed327586ac3,
+		0xce85f1a8756c8a41,
+		0xcda53e77624e879d,
+		0xd12be47ba362c71b,
+		0xe5213dccbf43d587,
+		0x27e8a64cbc47d5e3,
+		0x7afd468fec5af461,
+		0x719c63b32a5c13bd,
+		0x17692a465a6f423b,
+		0xb47a1e998b6351a7,
+		0xc4823a1a98456ef3,
+		0xf137a6ecb5498e71,
+		0x2e9bdc6ba2397bcd,
+		0x458f37aed13e9c4b,
+		0xa8235f7fef31dab7,
+		0x58dfc4a21f34ea25,
+		0x162e39d54d36f891,
+		0xdc3824965b3917fd,
+		0x214bea398a3d276b,
+		0x378e1c5ba92f35d7,
+		0x27ec5f6eda328645,
+		0x8b5c213fe73684b1,
+		0x12f94dafe548932f,
+		0xa57f8c13243ca18b,
+		0xf278d655412cafe7,
+		0x83e16da87f21de65,
+		0x4dbe53887b24fdc1,
+		0x83db25ea9b271c3f,
+		0xe9bca57eda182c9b,
+		0x18a6bf3fe82d4b19,
+		0x9362547fe71f4a85,
+		0xf21acb95492378e1,
+		0x1c79abe43614975f,
+		0xeda42877631795cb,
+		0xf4c762e9821bc539,
+		0x9be13ad87efcd3a5,
+		0x7e6f43aa9bdfe413,
+		0x8de251fdcbe4127f,
+		0x39efb76ed9f631eb,
+		0xd978efb21ae83f49,
+		0x87f46b1327fa4eb5,
+		0x89cbe3a656fe7d23,
+		0x39e872f764e17b8f,
+		0x91538bc872e389fb,
+		0xfea85c7cb1f5ca69,
+		0xe62cf31bafe9c8d5,
+		0x9a5163b1fbdce853,
+		0x3bca872219bde5af,
+		0xc6f3ea765be4362d,
+		0x9871e4665be63489,
+		0x83fc9db878d963f5,
+		0x15c9763ba6ec8273,
+		0x68ae541a94bd71cf,
+		0x24da839cb4c19f3d,
+		0x13db8c71f1d3bea9,
+		0xf1de298432e6cd17,
+		0x64c871b32fb9ec83,
+		0x6b2f51743b8ae9df,
+		0xf59c32b769bf1a5d,
+		0x9c4821f87ad238c9,
+		0xe4b586ddcad65937,
+		0xbcf1684fe5d967a3,
+		0x4ab89261f5dc9721,
+		0xb4d7236213be947d,
+		0x39e1f4a654c1b3e9,
+		0x9345dbc981c4d257,
+		0xbfcd53e76fa7e1c3,
+		0x3eb162887ca9ef31,
+		0xeacf9d487a9b1f8d,
+		0x1468ca2cb78e2df9,
+		0xed826b91f9b24d67,
+		0x3f69c52218a56bd3,
+		0x678e4ac436c98b51,
+		0x273eba55439b78ad,
+		0x1ebc2987639ea82b,
+		0xc71f4beba2b1d697,
+		0x7134d9bbae94d6f3,
+		0xea1b748dcda8f571,
+		0x39a1e571fb8914cd,
+		0xe5c2fa421c9d234b,
+		0xe81579b43a9f42b7,
+		0x8f6315487ab48125,
+		0xca2fe1da96a57f81,
+		0xb82d47aa93867ced,
+		0x9f1d274dc27a9d5b,
+		0x72e54f6ed16eabc7,
+		0x4f86ca9edf81eb35,
+		0x6de9fab32e74f9a1,
+		0xe67213a54d87291f,
+		0x81b3aec54d6a287b,
+		0x1dca6f765a8c36e7,
+		0x2d37149cba9f4765,
+		0x581b4a6ed79385c1,
+		0x49c2635ed586943f,
+		0x4738a6c1f367a29b,
+		0xb9c57244347bc219,
+		0x275fbc44316dcf75,
+		0x6724ecd65c62fed1,
+		0xba3f4c198c751d4f,
+		0xb34ea1698c562dab,
+		0x7e9fba2edb6a4c29,
+		0xf84d521fe86d4b95,
+		0xcb6e9a5ed75e69f1,
+		0x65f834221752986f,
+		0x71b84f93235496db,
+		0xaf21ebd87258c649,
+		0x61ab53c9816ad4b5,
+		0xfe28a53a9f6de523,
+		0x58a71c2cbd62138f,
+		0x4f2ec98edc6532fb,
+		0x3e57ab21fc584169,
+		0x9f34ce621a394fc5,
+		0xecf8a133295c7e43,
+		0xb7ca5df5453e6c9f,
+		0xe27934d986539b1d,
+		0x746f38dba234cb79,
+		0xc69d8a1cb137c9e5,
+		0x268bf1ddcf2be963,
+		0x12ba7c8eda2ce6bf,
+		0x9312b7e54e51273d,
+		0x7c1adb476d2435a9,
+		0x3e2b56198c396517,
+		0xc1b37d5a9a2b7483,
+		0xf265b14a963b72df,
+		0x4ae671ccb63f915d,
+		0xf6a7c81ed432afb9,
+		0xd79be351f135ce27,
+		0x18d573954127ed93,
+		0x7de8fc243c18daef,
+		0x7b8a92e65c2e1b6d,
+		0xe938f4187c213ad9,
+		0xed73c16cbc135a47,
+		0x19e8cb5eda1768b3,
+		0x92da516fe72b9831,
+		0x394e17c1f41c958d,
+		0x1d3c5af3251ea4f9,
+		0x532db9498512d367,
+		0xea3275f98416e2d3,
+		0x4c69dfb87de8f251,
+		0xf68d23a87cf921ad,
+		0x6deca95989ec3f1b,
+		0x7fac965cb9df3e87,
+		0x31ab697ed8f26ce3,
+		0x7a5cd43329f58c61,
+		0xa8fc3eb324f679bd,
+		0xcd4193a654fca93b,
+		0xcd82796652fec8a7,
+		0xec13476ba3f2e815,
+		0x591ef8bbaed4f681,
+		0xc69517bbabc715ed,
+		0x15c74d81fcea245b,
+		0xe586c7d21aed43c7,
+		0x51c62bf54adf7235,
+		0x4ef2a37769e482a1,
+		0xca81574765b47efd,
+		0x63fca97983d79e6b,
+		0x5b36972982e9acd7,
+		0xb5e83cfba1bedc45,
+		0xaf453beedec2fab1,
+		0xfc91e6743ec51a2f,
+		0xc9e124543ed6298b,
+		0x3dac7ef54bca38f7,
+		0x7fc4d2b76acd4875,
+		0xec3f482a98bf76d1,
+		0x37c8426cb7c2954f,
+		0x1d7bc24fe4d593ab,
+		0xe4cb21d1f4d8c329,
+		0x3945cfe323cbd195,
+		0x82a5fe75429bcfe1,
+		0xad8521776da21e5f,
+		0xe9fb2d476d942ecb,
+		0x1c4357e98cb74d39,
+		0x54987c1ed8b94ca5,
+		0xc519b6dfe8ad7b13,
+		0x523cfbeed4ae697f,
+		0xca34765215a297eb,
+		0xa46c7fb323b4c759,
+		0xf83abe1542a8d6c5,
+		0xda4f6c5981abe643,
+		0x9b8d45c76d7ce39f,
+		0xd894e3ccbea2341d,
+		0x591cd74fedb54279,
+		0x98c371b1fba861e5,
+		0x25c9e7421b9a7f53,
+		0xf4c98b73257b6daf,
+		0x653b2ed5457f8c2d,
+		0xc8a79d276472bc89,
+		0x38f6d5aa9284caf5,
+		0x25fe348dc198ea73,
+		0xf45239dbad59e7cf,
+		0xa389ec21fc7e184d,
+		0x58a7feb32e8136b9,
+		0xcbe598143da45627,
+		0x1d26c7554ca87593,
+		0x38bc19e6586973ef,
+		0xb3c41f9ba57c926d,
+		0x9418c3dcb46fa1d9,
+		0x98e146ced482cf37,
+		0xba587d31f175dea3,
+		0x52fa3ec54378fd21,
+		0xdbc8f9e43f5a1c7d,
+		0x78c6f2354c5d2be9,
+		0xba6ef42a9d814b57,
+		0x89625d3bab7469c3,
+		0xb815a26edb678941,
+		0xa56cf37fe54a869d,
+		0x148c7db1f45da61b,
+		0x9c623ae2135fc487,
+		0xc32b9d176572d4e3,
+		0xbea8526a9287f361,
+		0x9f168e287f5812bd,
+		0x5a27ecfa9e6c413b,
+		0x861fe29bab4d3f97,
+		0x83e7fbddca516df3,
+		0x379d5c11fa548d71,
+		0xc936bd7218357acd,
+		0xd9bf13a326389a4b,
+		0x3e9c76d6543dc9b7,
+		0x47f1d259834fd925,
+		0xc1e589acb253f791,
+		0xf84d725bae3516fd,
+		0xa947ef6ede39256b,
+		0x23e41571fc2b34d7,
+		0xf564db921c2e7345,
+		0x2839bed76c5283b1,
+		0x3fc651d87a45912f,
+		0xc49aefb986259f7b,
+		0x65e3214a9428ade7,
+		0x746d392ba32bcd65,
+		0xc5bd681ba23febc1,
+		0xf721456ede241b3f,
+		0x741d9ea43f152a9b,
+		0x697b4f365e284a19,
+		0x71b3df876d1c4985,
+		0xfe91b3698a2d67e1,
+		0x1a6354fcba21965f,
+		0x19b45e6ed71394cb,
+		0x187ca35fe617c439,
+		0xc2985d71f419d2a5,
+		0xa64d1e36564ce213,
+		0xf63182b5421cde6f,
+		0x2bf7dc965ce12fdb,
+		0xf431ed587cf53e49,
+		0x24d3e7a98af74db5,
+		0xe738ac2cb9fa7c23,
+		0xc29a6e7cb5ec6a8f,
+		0xbdf5367dc4de78fb,
+		0x5fa736b215f2c869,
+		0x5bfca87323f4c7d5,
+		0x452db38762f9e753,
+		0xda48bf5761d9e4af,
+		0x4fac31d98fce152d,
+		0xefcd945cbde14389,
+		0x19f4b28dcbd462f5,
+		0xc731b581fbe98173,
+		0xdab4257217c86ebf,
+		0x6f95843326cb8e3d,
+		0xa5efc24434cf8da9,
+		0x9cb51e2985e3dc17,
+		0xb3f87cda92d5eb83,
+		0x74de853a91b6e8df,
+		0x7ec46f8bafcb195d,
+		0xd679e8a1fdbe27c9,
+		0x8d5e6bf32ed15837,
+		0x95b634732cd476a3,
+		0xedf219365bd89621,
+		0x6279fcb656ca937d,
+		0xab3e49c875bca2e9,
+		0x45c178bba4bfc157,
+		0xd84b672dc4a2dfb3,
+		0x8253794ed2b6fe31,
+		0x718d2af432b71e8d,
+		0x6f458e943e8a2cf9,
+		0xc78f26954dae3c67,
+		0x94afdeb87cb16ad3,
+		0x43c6fd5a9bc48a51,
+		0x1a57f24dc6b587ad,
+		0x582491cfe5c9a72b,
+		0xe98ca361f3adc597,
+		0xa6f78bd2149ec5f3,
+		0xfd7a245765b3f471,
+		0x93d821f872a613cd,
+		0x958e62a87fa9324b,
+		0x45f372698e9c41b7,
+		0x8e7931fbab9d6f15,
+		0x5f2eb3cedba27e81,
+		0xb4629c71f6837bed,
+		0x485c6ae217869c5b,
+		0xf81d3ec32468bac7,
+		0x27bdcf97648cda35,
+		0x789d31e7637fe8a1,
+		0x6d5347acb3a4281f,
+		0xbf6d387dcf95267b,
+		0x3189ae4dcd8935e7,
+		0x1b87e421fd9c7465,
+		0xc91e38432b8e74c1,
+		0xbdf621e65b81923f,
+		0x7c3d98f65874a19b,
+		0x24b7a9598465aef7,
+		0x8c6f4edba369ce75,
+		0x521b3c8a936aecd1,
+		0xb9e1f5cba16deb4f,
+		0x867f42cfef632cab,
+		0x8f43a5d21f764b29,
+		0x145cea632e684a95,
+		0xbcf179e54c5b68f1,
+		0x86fad2965a4d876f,
+		0xe425f9bba86195db,
+		0xc97f458ed873c549,
+		0xd5ca84bfe467d3b5,
+		0x79a3c811f57ae423,
+		0x7b31c4a3235be18f,
+		0x64ba9df6536e21fb,
+		0x8f9c4de87e623f59,
+		0x5cbe6a998d364ec5,
+		0xe894c35bac597d43,
+		0x7839a41dc83a6b9f,
+		0x51ab3e2dc74e8a1d,
+		0x1938c641f641ca79,
+		0x935c62d21743c8e5,
+		0xf59b3a832547e863,
+		0x3db97e176238e5bf,
+		0x26ef145a925c163d,
+		0x4fe512698e3f24a9,
+		0x62b9348dce536417,
+		0x5f2a7c6fed467283,
+		0x4371fa9fea3871df,
+		0xce82f432192a8f4d,
+		0xcf9275d4362d8eb9,
+		0x5df783276841cd27,
+		0xda4329c98624ec93,
+		0xab75e2198325d9ef,
+		0xb3ef614dc2391a6d,
+		0x261794ecbf1c28d9,
+		0x91adfc3fed1f3947,
+		0xa197b2e54e1267b3,
+		0x19fdbe365d269731,
+		0x827aed665b17948d,
+		0xbf2ce957671ba3f9,
+		0x65ce741ba81ec267,
+		0x8a7c6d1cb742e1d3,
+		0x81d7963dc625ef41,
+		0x7f8c639fe3261f9d,
+		0x289ad7c654293e1b,
+		0x16aedf832efb3d87,
+		0x58d123b54afd5be3,
+		0xacdb1f987cf28b61,
+		0xf95cb7a769f378bd,
+		0xf39e41ddc7f6a83b,
+		0x6f7c9b2ed4f9c6a7,
+		0x12b5a6cfe4fcd715,
+		0xd3ea958324dfe581,
+		0x3b94da8765f314ed,
+		0xd2a13e6981f7235b,
+		0x15ceaf376fe942c7,
+		0x6ce8b21a9dec7135,
+		0x376ebf298acd6f91,
+		0xb29d714ba8b17cfd,
+		0x581d34b1f7e39d6b,
+		0x6c75d48216e5abd7,
+		0xc68df1b326e9db45,
+		0xe861cf9654dce9b1,
+		0xec45b92763bde82f,
+		0xed46239ba1e3278b,
+		0xdf13e8bbaec536f7,
+		0x53ab8dedceda4675,
+		0x5471ac61facb75d1,
+		0xc4b382e21abd834f,
+		0xa12b7e8548d192ab,
+		0xd83ce74768d5c129,
+		0x296d4a3874b6cf85,
+		0x8394bf1874a8cde1,
+		0xdc6a4919829aec5f,
+		0x5cb936eba29f1dcb,
+		0xbad5271fefb24c39,
+		0x3b5c64a21fc64ba5,
+		0x1c7d62e54ec97a13,
+		0xdac9b2843cab687f,
+		0x7a6f3e25479d86eb,
+		0x45d1bceba8b1c659,
+		0x246cda5cb7a3d4c5,
+		0xc14b876ed6b8e543,
+		0xa274e53ed3a8e29f,
+		0xb2d15e7545ac231d,
+		0xe3fa6b1652bf3179,
+		0xbe7fd9c76e924fd5,
+		0x7af6d4298da67e53,
+		0x3bd4c9165b876caf,
+		0x756fd42dc97a8b2d,
+		0x6b84251ed56eab89,
+		0x4bca753fe681c9f5,
+		0x24ef95b216a4e973,
+		0xf3c591b32385e6cf,
+		0x79534187639a174d,
+		0x3d61c2a8718d25b9,
+		0xe762bc4bae9f4527,
+		0x7d6b482dcea27493,
+		0x3b62e7ddcb8572ef,
+		0x281c6b51fb78916d,
+		0x2c6573d2175a8fc9,
+		0xa93b5f63286dbe37,
+		0xde9c71f65671eda3,
+		0x3f542d1a9685fc21,
+		0x68c74fbba3861b7d,
+		0x95d638edc1682ae9,
+		0x12a589bdcf6d3a57,
+		0xfdb15a7fed6f58c3,
+		0xe38a5c932e739841,
+		0x563efd932c64859d,
+		0xbe8f5c254c68a51b,
+		0xa27319d7695bc387,
+		0xa824f71a976dc2e3,
+		0xa93fd52dc783f261,
+		0x46d52bafe47521bd,
+		0xd2f4715fe1673f2b,
+		0xcd54b7f3215a3e97,
+		0xd4537b932e4b5cf3,
+		0xc7b986465d4f6c71,
+		0xbc9714276b4279cd,
+		0x9f4176a98c35a94b,
+		0xaf59428ed936c8b7,
+		0x3ac5819fe74bd825,
+		0x1beadc71f54de691,
+		0x92c8fd44376215fd,
+		0xbf563c798375246b,
+		0xd35ec84a915843d7,
+		0xde2871aa9f3b7245,
+		0xf3e28d1a9e4d72b1,
+		0x71b8c42a9a3d7e1f,
+		0xc8ef64beda329e7b,
+		0x1ac67d51f824ace7,
+		0x275ad4921928dc65,
+		0xb81e6c754639eac1,
+		0xd47ce1a7652ce93f,
+		0x96d2178ba541289b,
+		0x537e18ddc2354819,
+		0xb58ed16dcf194785,
+		0xf752d41dcd2a76e1,
+		0x648b7a9feb1c845f,
+		0x15f7b8432a1f83cb,
+		0x8db1ef376b14c239,
+		0xc1fb82587926d1a5,
+		0xf359b6d98627cef1,
+		0x4a2d31998419ed6f,
+		0x7a41f23a942c1edb,
+		0x75a283cfe5213d49,
+		0xe853f94edef24cb5,
+		0xd72369c21ef67b23,
+		0x1495eda32ce7698f,
+		0x5c2b718439ea87fb,
+		0xd831be7548feb769,
+		0x6f1c8d5a98f1c6d5,
+		0x4d53a96cb8f4e653,
+		0x961a34ccb4d6e3af,
+		0x267a3cdfe5fa142d,
+		0x49786ec214fd3289,
+		0x98cd2ba762de41f5,
+		0x7aebd6365ed27f63,
+		0x32f8a1b65ac46dbf,
+		0xbefc84576ae78c3d,
+		0x469f3eb876eb8ca9,
+		0x2fc1b7dba6decb17,
+		0x74ceb1d1f6d1ea83,
+		0x4a857ed215b3e7df,
+		0x6e19daf434e7185d,
+		0x9ba3f8c653ea26c9,
+		0x4c1357fa91ed4637,
+		0x19ab7d698ecf65a3,
+		0x32e176dcbed49521,
+		0x2b86fa5febc5927d,
+		0x17bd6951f8c7a1e9,
+		0xe5c49a8218cabf47,
+		0x1986fab3269dceb3,
+		0xab9c2df767b2fd31,
+		0x4ce9a23875b41c8d,
+		0xa41537d983c62bf9,
+		0x79218b5dc1da3b67,
+		0x16f4893cbfac59d3,
+		0x693facdfedbf7951,
+		0x97c5fe321eb286ad,
+		0x5e6f9ba43dc5a62b,
+		0xfca419743ab8c497,
+		0xb94f37e7679ac4f3,
+		0x485de61a96ade371,
+		0x3168dc4cb6a312cd,
+		0x5c47f29fe5c6314b,
+		0x239c48ffe1b63fa7,
+		0xc26b149432ba6e15,
+		0xf19a57443f9c6d81,
+		0xb178d4243b7f6aed,
+		0xb4aef2376d829a5b,
+		0x7b913ef76a84b9c7,
+		0xe168972dc7a8d935,
+		0x1ce5ab7ed58be7a1,
+		0xc387152ed48ce61f,
+		0xd6e542b436a1257b,
+		0x2ecfad1762a534e7,
+		0x3e12fc4981b97365,
+		0x39f87c476f8a73c1,
+		0xb56847da9d7c813f,
+		0xf456cbaa9a5e7f8b,
+		0xde54781dc962adf7,
+		0x9847cad1f984cd75,
+		0xb6cda5332867ebd1,
+		0x58c7fdb32569ea4f,
+		0xca3b8616546e19ab,
+		0x1dcf739cb5814a29,
+		0x65dfeabdc1a34895,
+		0xc254893cbe5867f1,
+		0x7b18e6adcd4a856f,
+		0x93746121fa5c84db,
+		0xe2c584b21c6fb349,
+		0xdf2a1b854a73d2b5,
+		0xdb4a7f576a87e123,
+		0xdc37ef298546de7f,
+		0xdec6213984591feb,
+		0xe2f3548cb36d2e59,
+		0xab56134fe2714dc5,
+		0x2a57f1cfef657c43,
+		0xe76d3c921e356a9f,
+		0xd8e54bf43e4a891d,
+		0x185ca7354c3db879,
+		0x8b3592a7693fb7e5,
+		0x6291adecba52e763,
+		0x4516d2cba735e4bf,
+		0xa9c8456fe769153d,
+		0x5eba1d61f45c23a9,
+		0xe458a6b3246e5317,
+		0xa4387e6a94627183,
+		0xb8cae3965d236ecf,
+		0x412a58c87c268e4d,
+		0xc1fe28d76c278db9,
+		0x6b2e4f1ba93dbc27,
+		0x8e6d2a7dc72fdb93,
+		0xa63285edc632d8ef,
+		0x1a7ed5c32835196d,
+		0x3657de15453827d9,
+		0x5827ec4a952c3847,
+		0x24ac8eda912e56b3,
+		0xc385f29cbf429631,
+		0xda215cecbe14938d,
+		0x19527f3edc16a2f9,
+		0xc61be841fb2ac167,
+		0xed1538b3281abfc3,
+		0x8713b2f6582fde41,
+		0xf813ab4767231e9d,
+		0xa721e8fa97263d1b,
+		0x24ad165cb4193c87,
+		0x67d432fdc21b5ae3,
+		0x125dfa9cbefd7a61,
+		0x3947d12dcaef67bd,
+		0xfa6235b21df2a73b,
+		0x859617f32bf4c5a7,
+		0xe63a7d554af9d615,
+		0x9753bd1767fbe481,
+		0xd8a69fe875cbf2ed,
+		0xf32de6adc7f1325b,
+		0x2a19c75ed3f541c7,
+		0x7c39b28ed1e86f25,
+		0xeb49fd2432fa6e91,
+		0x3a18cb532eca6bfd,
+		0xc9d156243adf8c6b,
+		0xc64b12d659e2bad7,
+		0x29adc6f989e6da45,
+		0x35e49bcba6d7e8b1,
+		0x23e1974cb5cae72f,
+		0x321645a1f4de168b,
+		0xd3658e1326d135f7,
+		0xc72e954982e36475,
+		0x795cdf1762e874d1,
+		0x537e92c76eca824f,
+		0x3d5ea4976ecd81ab,
+		0x28a6f41878beaf19,
+		0x9a6274fed9b2ce85,
+		0xd7c3aeb1f7a5dce1,
+		0x52bcf49216a7eb5f,
+		0x4b25e9f435d91acb,
+		0x3f17459765ce2b39,
+		0xf7d3ea4983d149a5,
+		0x29ce863cb2d57913,
+		0x41b8e75baeb5867f,
+		0x3afe56bdcda985eb,
+		0xc156db41fcadb459,
+		0xb6c9d8a21a9fb3c5,
+		0xdb15e7876ab5e243,
+		0xb6d8731547a5e19f,
+		0xa76b219987b9321d,
+		0x643917a984ab2f69,
+		0xfe854c3ba29c3ed5,
+		0xa139bf2fe2b17d53,
+		0x8a37cb5ede836baf,
+		0xf32be5921f968a2d,
+		0x745cd8b32e67ba89,
+		0x81f695243a7cb8f5,
+		0xa3ce1f665a9fd873,
+		0xe41b5a2a9782e5cf,
+		0xd12abe5dc8a7164d,
+		0x2ab89c3fe5a824b9,
+		0xc596b2d1f3ac5427,
+		0xa4f5d9b214ae6293,
+		0x8c9d6716539271ef,
+		0xf5316d254e738f5d,
+		0x91ad6e554d658ec9,
+		0xfda954298c69bd37,
+		0xd15bc4ea986bdca3,
+		0x8e732d9dc87feb21,
+		0xe5d81341f6831a7d,
+		0x76f89a42167528e9,
+		0x9e174dc3248a3957,
+		0x8b492f37628b57c3,
+		0x58e3627ba29e8741,
+		0x2fb38dcbaf61849d,
+		0xdb432aedce75a41b,
+		0x784fc9bfed56c287,
+		0xae57cd41fa69c1e3,
+		0x83c596a3296bdf51,
+		0x79d46b33264cfead,
+		0x9acfd41768743e2b,
+		0x789f61bba4653d97,
+		0x5d29147ba2685bf3,
+		0xafb27eced25c6b71,
+		0x1d9538fbaf3e68cd,
+		0x93d67541fe51a84b,
+		0xbfc629521e43c6b7,
+		0xc945d6b43c48d725,
+		0x5bcf78a76b4ae591,
+		0x8192d5c7674ae3fd,
+		0x9f6ce21ba85f136b,
+		0xb5e943adc86342d7,
+		0x9cd5a21fe3687145,
+		0x1a23bf8fe2486fa1,
+		0x24c97fe4324a7d1f,
+		0x27d81e443f2e8d7b,
+		0x3f1cea465d31abe7,
+		0x1ecd49298c23db65,
+		0x41bd69298a36e9c1,
+		0x8d6e419cb729e83f,
+		0x542381ffe63d179b,
+		0xa92fd63fe64f3719,
+		0xa3ebf89219324685,
+		0xd53a27e9843675e1,
+		0xfe8943187129835f,
+		0xb4ea2fd76f1a82cb,
+		0x62e74c398d2eb139,
+		0x5c78fd1bab21cf95,
+		0x71cf543cb924cdf1,
+		0x3e764abed815ec6f,
+		0x8a5ec6f437281cdb,
+		0x136847a6571d2c49,
+		0x2a19edb8761f3ab5,
+		0xc5d4638cb6147a23,
+		0x7adef36cb214678f,
+		0x4d1a2e5a9de586fb,
+		0x59e1b87dcdfab569,
+		0x54ac8f3fe9fcb4d5,
+		0x879a6e421aefd453,
+		0xead26cf548d3e2af,
+		0xe49d35b769f7132d,
+		0xaf21d64876fa3189,
+		0xd457cfe984da3fe5,
+		0xd7481feba2fd5e63,
+		0xb931dc6ba2e16cbf,
+		0x5af748edcfe48b3d,
+		0xb35cfe421fe58ba9,
+		0xb28591643de9ca17,
+		0xd9581bf54aecd983,
+		0x16ca7ed547aec6df,
+		0x473ec8bba9e3175d,
+		0xc64193fcb7e625c9,
+		0x27e84f1ed6ea4537,
+		0xa6279541f2ec64a3,
+		0x18d2546435de8421,
+		0xe9462d1653e2917d,
+		0x3d9bf8154eb38fd9,
+		0x81b37c965dc6be47,
+		0x2a7d935769a8cdb3,
+		0xb3712cda98abec31,
+		0x236c4d7cb59efa8d,
+		0xc3426d8fe6c32af9,
+		0xa937e2f218d53a67,
+		0x1f6ce79324c958d3,
+		0x2a5b841763dc7851,
+		0x2bdcf87761be75ad,
+		0x4fabde798fc1a52b,
+		0x2d38c4fbaeb4c397,
+		0x462581eedba7c2f3,
+		0xaed85b61f9bae271,
+		0x5de97cb21679efbd,
+		0x9c716d35479e1f3b,
+		0xb41f97d656b23ea7,
+		0x85e61bfa94b76d15,
+		0x97fe365ba3b96c81,
+		0x1cd7a96cb18a69ed,
+		0x89b14fddcf7e895b,
+		0xa62b5cd1fe91b8c7,
+		0xcabe98721ea4d835,
+		0x9d5e74243c97e6a1,
+		0x837de6b54a89e51f,
+		0x83cd4ef7689d147b,
+		0xc67f281ba69f23e7,
+		0x85fb1c7ed8b37265,
+		0xf624519fe4a672c1,
+		0xcab16efed1987e2f,
+		0x8cd594f3216a7e8b,
+		0x9d46ca132e5d9cf7,
+		0xa3b8f2d54e81dc75,
+		0x1ce357976b74ead1,
+		0x362e5db98a76e94f,
+		0x8c532b9ed76918ab,
+		0xad568bffe67d3829,
+		0x436a295fe48f3795,
+		0xbd98fe53259376f1,
+		0x41ae67f43295846f,
+		0xaf4ce3d6516783db,
+		0xc89635e87f6cb249,
+		0x5e9c43d98d6ec1b5,
+		0x718596ebab72df13,
+		0xd1af459cb953ed7f,
+		0x41c2ba71f8561deb,
+		0x684a5eb2186a2d59,
+		0xb8c96a73276d3bc5,
+		0xedc41579857f6b43,
+		0xbdc6f75ba352689f,
+		0x72df8c6cb265981d,
+		0x315e9d8dcf38b679,
+		0xfe38a4ddcd3ab6e5,
+		0x86e3da71fb4ed563,
+		0x75d3fec32a51e3bf,
+		0xc48adf265b76143d,
+		0x14beafc76b5732a9,
+		0x31ed594ba96b5217,
+		0x26e9b53ba64c5f73,
+		0x38dbe7aa923e5dcf,
+		0x38f9214fe1528c4d,
+		0x5bc2374fef248cb9,
+		0x6ba53c221f38cb27,
+		0x718beac54e2bda93,
+		0xfc2a7585492bc7ef,
+		0x2a473b5a9b42186d,
+		0x9d2c348cba3426d9,
+		0xc14753aeda293647,
+		0x64afc83fe72a65b3,
+		0x1936bd21f64d8531,
+		0x654df9c2143f728d,
+		0x2a9c3de76243a1f9,
+		0x25db39476e14bf57,
+		0x4df81b276d17bec3,
+		0xeda942698b2aed41,
+		0xdc271bf9871cfb9d,
+		0x3ad5687fe9423c1b,
+		0xce261781f9143b87,
+		0x89cda1f3281759e3,
+		0x13f82cd5452b7961,
+		0x7ea39686531c76bd,
+		0xce7a4b59821f963b,
+		0xc429e6b98ef1c4a7,
+		0x213bfd7bacf6d415,
+		0x32b1e57dcbf7e381,
+		0x167f932cb7c8f1ed,
+		0xdc9a786439fd215b,
+		0xd79eca8436de2fb7,
+		0x8b613ac878f36e25,
+		0xa736421984f56d91,
+		0xd5b4691982e76afd,
+		0x21aefb6a91fc8a6b,
+		0xfe965b498fcea9d7,
+		0x51496eb1fce1d945,
+		0x7e5168f32cd4e7b1,
+		0xcd7b61943ac7e62f,
+		0x6579eb1549ea158b,
+		0xa31be49768dc24f7,
+		0x2ce894fba8df4375,
+		0x8cea394cb6e473d1,
+		0x5fb7e34dc3d6814f,
+		0x56b8fc7fe1d67f9b,
+		0x9de2874432dbae19,
+		0x51f734c32faebd85,
+		0xdf2be8365ca2dbe1,
+		0xf7d4c89769b3ea5f,
+		0x2583a4e878d619cb,
+		0xfe87d49dc7db2a39,
+		0x25fca86fe6cd38a5,
+		0x62a9dc4fe5cf6813,
+		0x2349d56214c2857f,
+		0x895f612432c584eb,
+		0x23bf8c7761d8b359,
+		0xca3fd4876f9ab2c5,
+		0xbce742398caed143,
+		0x4afc89587a91de8f,
+		0x9a17586dc8941efb,
+		0x4ac16b51f8b72e69,
+		0xbd89635217a93cd5,
+		0x946adc8327ad6c53,
+		0x9df351b5438e59af,
+		0x854acdb874b3892d,
+		0xe718c5bba1c4b789,
+		0x34198edbae98b7f5,
+		0x4e3ad98dce9bd673,
+		0x3a9f742fe97bd4cf,
+		0xf2d8b1643ca2154d,
+		0xe59218f54ca523b9,
+		0x439ed5f76ab95327,
+		0x9d3612e987ab6193,
+		0x6534f1e9837a5edf,
+		0x639bf72ba28f7e5d,
+		0xd1369a5fe1728dc9,
+		0xc369f1dfef85bc37,
+		0xbd86a5c21f67dba3,
+		0x3d9e57b54d7bea21,
+		0x45cdeab43a5cf87d,
+		0x57a4e1876b8127e9,
+		0x98b6ae5dcba43857,
+		0x2685937ed79856c3,
+		0x957fc21fe59b8641,
+		0xb5729d11f26c739d,
+		0xd7364b13247f931b,
+		0x38c9ef165293c187,
+		0xe69ab8354e65bfd3,
+		0xb8f14d687c68de51,
+		0x1f2358e76948fcad,
+		0x8e394fdba96e1d2b,
+		0xbdcf4a5fea613c97,
+		0x452a96ffe8745af3,
+		0x93547fc329586a71,
+		0x971dbc43234967cd,
+		0xcb2fea47625d974b,
+		0x2df53769814fa5b7,
+		0x435f92ebaf73d625,
+		0xfe76a91cbd56e491,
+		0x4a2ce63cba47e2fd,
+		0xb5694d81fa5c126b,
+		0x15836af32a5e31d7,
+		0xefb986a54a716f35,
+		0xfa38e61878546ea1,
+		0xa173fd4a95467c1f,
+		0x694f7c5ba2398c7b,
+		0x42a1e7fcb13c9ae7,
+		0x63ac421cbe2fca65,
+		0x3164b7c1fd43e8c1,
+		0x6db38ac21c25e73f,
+		0xbfad79554d38169b,
+		0xacd126b87b4c3619,
+		0xd7a18b2a9a2e3485,
+		0xc57498fcb95274e1,
+		0x6a8e5b1dc734825f,
+		0x4c26819fe43681cb,
+		0x4531c62fe138af29,
+		0xa2748e14312cbe95,
+		0x785e91f54d2ebcf1,
+		0x9fd13ba65c12eb6f,
+		0x6a1f29887c251adb,
+		0x15b9e8cbac182b49,
+		0x357ba21ed81c39b5,
+		0xae7964fed81e6923,
+		0x8ad3f41fe521768f,
+		0x46bcd353261385fb,
+		0xd98fbe465317b469,
+		0xf5ca9e187219b3d5,
+		0x195f6db87efbd253,
+		0xac7495e769ecd1af,
+		0x9216e47babf4312d,
+		0x4abd2efdcae42f79,
+		0xae4b29fdc8f73de5,
+		0xf27d5a3218fa5d63,
+		0xf4e7396324ec5abf,
+		0x1a6fd89654ef7a3d,
+		0x897ef42763f2b8a9,
+		0xfc168e3ba2f5c917,
+		0x86729fcbafe9d783,
+		0xbfc5d6498ab9c5df,
+		0x651b783fe9bcf45d,
+		0x892fcd543be124c9,
+		0xe61a53432be65437,
+		0x2e9834f659e862a3,
+		0xb2ea465a97eb8321,
+		0x1a264c3983cb7f6d,
+		0x3471deb982bf7ed9,
+		0x6d9fa21dc1e2bd47,
+		0x173ac65fefa5dcb3,
+		0xd86be3932fc8eb31,
+		0x9c4e76d32cbaf98d,
+		0x126ab7e54abd18f9,
+		0xf73429198bd13967,
+		0x13dc28bba9c457d3,
+		0xdf3e685dc6d98751,
+		0x71b23dafe3c974ad,
+		0x8ca5e2d1f3cd942b,
+		0xf8b2567213cfb297,
+		0x81379fb762b4c1f3,
+		0x5f9d3ea54ea5df61,
+		0x86e19cf54a86febd,
+		0x2634d5a87c9a1e3b,
+		0xc261af7cb89e2da7,
+		0x1275dacfe9b26c15,
+		0xc64951b1f7c46b81,
+		0xcfb5348214a568ed,
+		0x69b34ec323ca985b,
+		0xd97f6ca5429da6c7,
+		0xc71a46b981afc735,
+		0x79e31c498f93e5a1,
+		0xe87b2d6bac96e41f,
+		0x86917a2feda9137b,
+		0x54b271d1fa9b32e7,
+		0xab4d81932bae4165,
+		0x9562c31548926fb1,
+		0x19387ef656947d2f,
+		0x4a95e3d763957d8b,
+		0x92648e3ba2689bf7,
+		0xc84fd51ba18dcb75,
+		0x478fe1bbae6fc9d1,
+		0x4298ce5edc72e84f,
+		0xfbe8a9432e8517ab,
+		0xa29563e54d8a3729,
+		0xbaf685754b8c3695,
+		0x815bcd68798d65f1,
+		0xfd12c7ecb791836f,
+		0xda5164edc57482db,
+		0x257693afe387b149,
+		0xf932c1afe168bfa5,
+		0xfa5b8235427bce13,
+		0xb459ac332b4edc7f,
+		0x69ce37865d631ceb,
+		0x9c5b17e98d762c59,
+		0xd258c41a9b683ac5,
+		0xf8257a9ed97c6a43,
+		0x1afbd78dc64d579f,
+		0x632bd9e1f562971d,
+		0x9452f7b21463b579,
+		0x5b2694d43267b4e5,
+		0xbc2d5139817ad463,
+		0xd2e3cfb76e4ad2bf,
+		0x15e7af498b5ef13d,
+		0x82dfa97dcd6431a9,
+		0x2fa6754dca463ef5,
+		0xc1239d61fa495e73,
+		0x6a42c87217395bcf,
+		0xef9863c3263e7b4d,
+		0x3f8957e765418ab9,
+		0x3bad458a9354ca27,
+		0x9fc2567cb146d893,
+		0x7a2c6d1a9d28c6ef,
+		0x4f7b29dbac2bf56d,
+		0xdb49fc7feb3f15d9,
+		0x5c4837921d623547,
+		0x826df4365c2764b3,
+		0x9563d2f87b5a8431,
+		0x85b216da963b718d,
+		0x1d4b7f69842c7fe9,
+		0x124f763dc431be57,
+		0x8149d2bfe124bdc3,
+		0xbe45182edf27ec41,
+		0x3bd91a532e17fa9d,
+		0xad82c1e65e3d2a1b,
+		0xe9c376b65c1f2a87,
+		0xc852e7fa9b1258e3,
+		0x14bda62dcb257861,
+		0x6d4e29bdc61875bd,
+		0x46935fafe61c953b,
+		0xba123c81f41eb3a7,
+		0xc42379f76742d315,
+		0x692bda187435e281,
+		0xc6f1bd843ab4efcd,
+		0xe5a3c7876ce81f4b,
+		0xb13ed7f769fa2eb7,
+		0x2b9143fba9fe4d25,
+		0x2baf567ed8f26c91,
+		0xfe162b9dc5e369fd,
+		0xe379c48214f5896b,
+		0xba1475f323f9a8d7,
+		0xfc5138a762fdc845,
+		0xe163d58872efd6b1,
+		0x4e97a3f98dc3e52f,
+		0xb358dcebade6148b,
+		0x3f574dedcbd923f7,
+		0x3b9a4261faec4275,
+		0x68f42c9439ce62d1,
+		0xc2dba35548c17e3f,
+		0xedb2376545d37e9b,
+		0xa3d1bf2874e6ad19,
+		0x53e829b872e9bc85,
+		0x4c179b3982dbcae1,
+		0xb1ae73d98caed95f,
+		0x8267dcb1fed318cb,
+		0x6e2cb8d21ed62839,
+		0xb1cae7432cd937a5,
+		0x9febd1865adc6713,
+		0xedca47b658bd647f,
+		0xe483d6ca96c183eb,
+		0xfb9513ddc6d4b259,
+		0xbc53782fe3d7b1c5,
+		0x7145ac6fe1b9cf23,
+		0x98c571b3219acd8f,
+		0x469e5cf32a7decfb,
+		0x8bad91465eb32d69,
+		0x6319b4f87ca63bd5,
+		0xfe95dac98ac96b53,
+		0x6b4d1afdc69b58af,
+		0x24983e1dc5ae782d,
+		0xdab192e1f4c1b689,
+		0x89d3564214a3b6f5,
+		0xfe5b291542b8d573,
+		0x4c7de3b65198d3cf,
+		0xb5e392c76e8bf24d,
+		0x4facb2d87d8f12b9,
+		0xfa43b15dcdb45127,
+		0x4f36a25edba65f83,
+		0x13df472fe6875cdf,
+		0x7d56f3c2168a7c5d,
+		0xd75f1c93246e7bc9,
+		0x79a8c5176591cb37,
+		0xf9c318687284d9a3,
+		0x921f5d7cb3a7e921,
+		0xd1feb38bae59f67d,
+		0x7ae1538cbd7c16e9,
+		0x7a4f59bfec9f2657,
+		0x586b9ed21d9265c3,
+		0xf5eb8ca43ca78541,
+		0xc153bf254a68729d,
+		0xf7d62e99867c921b,
+		0xb576d48a935daf67,
+		0xe83b426ba471bed3,
+		0xbed56a4dc284ed51,
+		0x73bf465dce45fbad,
+		0xa2758c943f691c2b,
+		0xf9b651743e5d2b97,
+		0x81db3f465b6e49f3,
+		0xe4cb532bac836971,
+		0xf8d4691ba95476cd,
+		0x7682ea9ed758964b,
+		0xa9143c8fe35ca4b7,
+		0xd6b47ce1f37ec425,
+		0x9e3c5f854572e391,
+		0x7ebd13965264e1fd,
+		0xd2a4e5187f58216b,
+		0xf8bc71276d492fc7,
+		0x4f2d8a5a9b6c4e35,
+		0xacd4517cb94f5da1,
+		0xe5723f9ed9537b1f,
+		0x286e7ab1f6348a7b,
+		0x39cde7f21536a9e7,
+		0xbf479313243bc965,
+		0x532179c7634ed7c1,
+		0x24bfed6a9251e63f,
+		0xb3c4925baf34159b,
+		0x3b6e941dce483519,
+		0x71d3295fed2b4385,
+		0x84271ce1fa4c63e1,
+		0x34b8cf132a3e715f,
+		0xcbf6931548327fab,
+		0xe89573c76735ae29,
+		0xe75a4df98427bd95,
+		0xb6a521398439cbf1,
+		0xb8251c4a912cda6f,
+		0x7e4a39ddcf3219db,
+		0x53c914a1fe152a49,
+		0xb813f4a32e1738b5,
+		0xdb84ecf65d1b6823,
+		0x61b532854a1c658f,
+		0x5714cbe7681e74fb,
+		0x72a69d8dc812b369,
+		0xedb1af3dc716b2d5,
+		0x52ab184fe629d153,
+		0x8a2bf7ced218ce9f,
+		0x2fe3d8c5432bfe1d,
+		0x9fe1d8743cdf1e79,
+		0x2571e3f76bf23ce5,
+		0x19fe6cb98bf75c63,
+		0xfb18c7a768e759bf,
+		0x39b81fdba6fb793d,
+		0x2af8513dc4fe87a9,
+		0xa84176cfe5f2c817,
+		0xe38d2a6215f4d683,
+		0x79642f5432e6c4df,
+		0x8bd97c5761e9f35d,
+		0xcadb14976fed13c9,
+		0x51dae7ca9cdf4237,
+		0xca5781dcbce461a3,
+		0x9825cfeba8b45def,
+		0x7235a6b1f5c87e6d,
+		0xdfbe274215ea7cd9,
+		0x3a6718c325deac47,
+		0xa5ecf73765e1dab3,
+		0xd6f1495984d5ea31,
+		0xa816befa91c5f78d,
+		0xe3cf97b98eca17f9,
+		0xa619f53cbecd2867,
+		0xb5c283dfeabf46d3,
+		0x345afe632cd38651,
+		0xb8d1ecf329c573ad,
+		0x378c4ef657d8932b,
+		0x72184ce765dcb197,
+		0x9523fc48749cafe3,
+		0xb86c5d7ba4b2de61,
+		0x8f6e592ba193fcbd,
+		0x13d46b5fefa71d3b,
+		0x679a35f21fb92ca7,
+		0xd4fc19e43ead4b15,
+		0x963a7ce54cbf5a81,
+		0xfb619d7659a267ed,
+		0x8cd3e67ba8c4975b,
+		0x1c9835aed4b8a5c7,
+		0x9bc6f17fe4abc635,
+		0x18e5c231f39ed4a1,
+		0x53bce86545a2e31f,
+		0x75fe2cd763c5127b,
+		0x6adb93f65fa831e7,
+		0xab925d687d9a3f45,
+		0x6bc8ad987a8c5eb1,
+		0xc9ebd45ba98e6c2f,
+		0x684ad97fe6927c8b,
+		0x8f4da93fe5849af7,
+		0xafe38d921498ca75,
+		0xfc4ae194347ac8d1,
+		0xacdb8276528cd74f,
+		0x79db64f9839216ab,
+		0xd9528fecbfa53629,
+		0xa1dbfe5dcea83495,
+		0xf5e4c96edc8a64f1,
+		0xcbf3578fea8c726f,
+		0x78f643c3296f71db,
+		0xbf9ae8554872af39,
+		0x9da457b43674bea5,
+		0x1a24bc7a9578cd13,
+		0xcd463f998259db7f,
+		0x96b23c49815cf9eb,
+		0xc64179bedf712b59,
+		0x5c6b3e21fe7439c5,
+		0x643df9a21e786943,
+		0x93e8adc32c4a569f,
+		0xb7321cf54a5c861d,
+		0x183ef5b7685fa479,
+		0x29d6814ba872b3e5,
+		0x4bd9a51dc587d263,
+		0x3d47f68dc357d1bf,
+		0x74ef932dc159ef2d,
+		0x6d28ae44325d1f89,
+		0x7ef6b3554e613df5,
+		0xd36ea4c98e645d73,
+		0x25b813c87b365acf,
+		0x7b23a6f98b397a4d,
+		0xa7fe821dc63d78b9,
+		0x24f6ca9ed64fb927,
+		0x56ac4b91f652d793,
+		0xe936fcb21634c5ef,
+		0x863ead965238f46d,
+		0x341ab6d8725b14d9,
+		0xe27fd5ba9f5e2347,
+		0x68b4c17bae5162b3,
+		0x1db3254dcd568231,
+		0xeb287addca256f7d,
+		0x3628dac1f6287de9,
+		0x5634d2b2182cad57,
+		0xcb712d55462fabc3,
+		0xfe135dc98753eb41,
+		0xc5da98b87324f89d,
+		0x98e531bdc348291b,
+		0x1a62ed3cbf1c2987,
+		0x3af8724cbc1d47e3,
+		0x814eb631fd328761,
+		0x86b9c1432c1374bd,
+		0xc7b189f65c17943b,
+		0xf9cb13265819b2a7,
+		0x45ade71a983dc215,
+		0x463db81a952ecf71,
+		0xb6c38e5a9412fecd,
+		0x1658f7eed3261e4b,
+		0xa28451ddcef62db7,
+		0xedb625721efa4c25,
+		0xe5941f643cfd5b91,
+		0x768acbd439ce58fd,
+		0x4e83f1d65af2986b,
+		0x57a1b3fa98f4a6d7,
+		0xf758319cb6f9c745,
+		0x8b1da59dc4fad5b1,
+		0x2d957a4cb3ecd42f,
+		0xfb7513c545f2138b,
+		0x53af412761e532f7,
+		0x34fe17276fe94175,
+		0xb327f1e76bd95fc1,
+		0x28593cb879cb6d3f,
+		0xd734b51987cf6d9b,
+		0x8f74b61ed7e3ac19,
+		0x7ec936b1f6e4cb85,
+		0x3fea19d325d7c9e1,
+		0x3ad71b6323cad85f,
+		0x83b5dc2542adf6cb,
+		0x8f761d4ba4e12739,
+		0xc7ebd24a9fd436a5,
+		0xe8f1a79cbed97613,
+		0x41c9387edbca637f,
+		0x14b582c1f8ac72eb,
+		0x95fd47a328cfa159,
+		0xc85ab24437c2afb5,
+		0xbe6c824657b6ce23,
+		0xc4a8e63653a6dc8f,
+		0x37d92e876298eafb,
+		0xcdb7821ba2be1c69,
+		0xa149563dcfb13ad5,
+		0xcd6a3571fec46a53,
+		0x62cd4a721db657af,
+		0x296ce7443cba872d,
+		0xd1f7962437bda589,
+		0x34952ac7679ea4f5,
+		0xf592478ba8b2d473,
+		0x9d1be65ba495d2cf,
+		0x39a6428dc3a8f14d,
+		0xbe85dc71f3ac21b9,
+		0xa76d89e542ad3f17,
+		0xe51afd954fa15e83,
+		0xfb56a9354c835bdf,
+		0xf23159854c967b5d,
+		0x13aebf865b687ac9,
+		0x9257bf8dc68dba37,
+		0x9f648c3ed57fc8a3,
+		0x1ba4c951f6a4e821,
+		0xb38e76f21394f57d,
+		0x5ca6d73543a815e9,
+		0x62fe9a5981ac2457,
+		0xefd943c87f8e54c3,
+		0x13c2789cbea28341,
+		0x329154fcbc84719d,
+		0x586b4d9dca657ef9,
+		0xb78d4211f859ae67,
+		0x78364ab2176bacd3,
+		0x8ce5f9d4367fdc51,
+		0xa4738fe65462f9ad,
+		0xef5c641a94861a2b,
+		0x57db4f2dc1682a97,
+		0xf281e53bae6b48f3,
+		0x97fd568dcd6e5871,
+		0xdb415ec1fb6175cd,
+		0x2485fe321d73954b,
+		0x47d1f9332c56a3b7,
+		0x3ef57927697ac325,
+		0x54372d99876cd291,
+		0xc5b612a8734cbfed,
+		0xa653db8dc4731f5b,
+		0x96b8a21ed1652ec7,
+		0x47d1a83fef694d35,
+		0xb541d9732f4b5ca1,
+		0x4b81d6e43c4d6a1f,
+		0xbd2674165d41897b,
+		0xa2e958476b43a8e7,
+		0x475d829cba37c865,
+		0xeac7192cb749d6c1,
+		0x6f24b1edc64bd53f,
+		0x4ae1cf6ed24ef39b,
+		0x6a473f5326753419,
+		0x415d378a91674285,
+		0x9562f3b87f4962e1,
+		0x31cbd8487c2a6e4f,
+		0x2ead8948792d6eab,
+		0xe8d42a6dcb41ad29,
+		0x6fa71c9fe823bc95,
+		0x5264bc1fe736caf1,
+		0x75adcfb21528d96f,
+		0xe61248b4342af7db,
+		0x26ba89c8753f1849,
+		0xc38d4e5ba14237b5,
+		0x9154cd7cbf186723,
+		0x5f2a471cbd19648f,
+		0x274513bedc1a73fb,
+		0xc43b6571fb1ea269,
+		0x7dcbe8154a32b1d5,
+		0x21da5f776915cf43,
+		0xade5f1854615cd9f,
+		0x3c8195f87528fc1d,
+		0x6c439dbba42c1d79,
+		0x42db3c7ba31f2be5,
+		0xa27fd58dcef15b63,
+		0xe598ab4edce358bf,
+		0xb5f328c21cf6783d,
+		0x784c9f632cfb86a9,
+		0x921a68f549fdb617,
+		0x52c7da8767efc583,
+		0xf1bd529986e2c3df,
+		0xd4c7f38ba4e6f25d,
+		0xa6713f4ed4f812c9,
+		0xa4f912dfe2fc4137,
+		0x178cfe4321ed4f93,
+		0xf9ebd1243db15cef,
+		0xda7e93154be37c6d,
+		0x3fc682754ae57bd9,
+		0xd4ae537768e9ab47,
+		0x421b36d986edc9b3,
+		0xd9fe73ccb6cfd931,
+		0xf918db5fe4c2f68d,
+		0x3869de4324d516f9,
+		0x96fd81e543ea2567,
+		0xadb9285871eb45d3,
+		0xfa4652198fce7451,
+		0xacf591d98ec172ad,
+		0x4d32be5bacd5912b,
+		0x4b57f89ed9c5af87,
+		0xca274d61f6b8ade3,
+		0xb15cd68327abcd61,
+		0xd931c5f3248feabd,
+		0x531ba48876d41c3b,
+		0x1bcda4e983d52ba7,
+		0x4d739fecb2d94a15,
+		0xf6432cbbafbc5981,
+		0xbf4853cbab9c56ed,
+		0xb92a8d31fdc1965b,
+		0x9658b7a21db3a4c7,
+		0x43698ef32ab8c435,
+		0xde1a72f657b9d3a1,
+		0xb89ce318769bd21f,
+		0xd68915e8738def6b,
+		0xd756a18cb4a32fd7,
+		0x19b542fed1b73e45,
+		0x59c1b2afef985db1,
+		0x427f89b21e8a6b2f,
+		0xa3fb74532d7e6a8b,
+		0xa8fbecd54c81a9f7,
+		0x49d1a8f76ba3c975,
+		0x7f645c3ba896c7d1,
+		0xf2e37d6cb589d64f,
+		0x93ab1cfed37cf4ab,
+		0xd91b27cfe4af1529,
+		0x78ce9d5216b24395,
+		0x4d7b182652a763f1,
+		0x671893c54e89716f,
+		0xea682c354d596fcb,
+		0x936abd887b6d8e39,
+		0x168db25dc971bda5,
+		0x37cd814fe985dc13,
+		0x6a94d28fe465da7f,
+		0x5476b8e21457f8eb,
+		0xd9641f24347d1a59,
+		0xe5f92ac7637f28c5,
+		0x425ca3dcb1a26843,
+		0x83ed6f1bae74659f,
+		0xef31a76cbe69851d,
+		0xa2b59f4fed5ca379,
+		0x46829c31f96da2e5,
+		0x53ace1d54b82d163,
+		0x1d5fc7a32753ceaf,
+		0xab63d2e54756fe2d,
+		0xa9cd4838745a1e89,
+		0xce53ad2a936b2cf5,
+		0x9c6f847cb16f4c73,
+		0x5df1624cbe4259cf,
+		0x3b81e9c1fe35794d,
+		0xd654ab821e3687b9,
+		0xbe87d5a43d4cb827,
+		0xa473fe165a4ec693,
+		0xd6efcb187851c4ef,
+		0x943bfe1ba854f36d,
+		0x2af8134dc65713d9,
+		0x13f47c6fe56b3247,
+		0x85ce1361f26d51b3,
+		0x81cb2375435e6f21,
+		0xd8c7b1f54f326e7d,
+		0x47ebaf165d247ce9,
+		0xb27f49e76d28ac57,
+		0xe65c41f87829bac3,
+		0xe4172afcb83eda41,
+		0x3d84916dc631f79d,
+		0x75c413a1f745281b,
+		0x352bd96215392687,
+		0x3f854ec8752a46e3,
+		0xd26185fa923d7561,
+		0xe4d58ac87e1f63bd,
+		0xbef5243bae14923b,
+		0x27db481dcd25b1a7,
+		0xae3f287dc917aef3,
+		0xe235a811f82ace71,
+		0x81bf9d43261aebcd,
+		0xa7b39e2768321d4b,
+		0x39fca57986142cb7,
+		0x6fd4918ba6184b25,
+		0x71a5328dc32b5a91,
+		0xebf6a4998cea57fd,
+		0xed85b7fbacfe876b,
+		0x6a9c523febf1a5d7,
+		0x5c2a6e321bf3c645,
+		0xe81b2a7439f7d4b1,
+		0x84327fe657e9d32f,
+		0xba5f793765ecf18b,
+		0x1ca5487a95de21f7,
+		0x248af79cb4e23f65,
+		0xed63af5cb2f65ec1,
+		0x751496fcbed86c3f,
+		0xe8b273421fea6c9b,
+		0xc482af943cde8b19,
+		0x8d91bce54be1ca85,
+		0xae95723769d4c8e1,
+		0xa4ec538a98c6d75f,
+		0x8623a7fa94d8f5cb,
+		0x7bd863adc5ed1639,
+		0xa4b3926fe3df24a5,
+		0xcf936ae326e47513,
+		0x6ad1e7c541d5627f,
+		0x6583cde54fc871eb,
+		0xa7d8cf665dcb8f49,
+		0xb745831768ad9eb5,
+		0x4529e38ba9b1cd23,
+		0xb2561d8dc6a3db8f,
+		0x589bf31ed4a5e9fb,
+		0xcf5bad4325da1b69,
+		0x4df8765434bc29d5,
+		0xf8c4a53872cf4953,
+		0x7d9ceb2981c256af,
+		0x46d8ce2a9fb5862d,
+		0x92a678fcbec7a489,
+		0x437e812edc9ba3f5,
+		0x7a2ce5d1f9aec273,
+		0x9b8e5c443892d1cf,
+		0x3ad17f432794ef3d,
+		0x5ecf68a545b61fa9,
+		0xd9b1c6f985ba3e17,
+		0x4adf2eba92ac4d83,
+		0x23e1a45a918e4adf,
+		0x4f97b26dcf927a5d,
+		0x674ae291fea478c9,
+		0x456d72f21ea8b937,
+		0xea5d46332d8bc7a3,
+		0xb2614df65a9ed721,
+		0x3d2974b76891f47d,
+		0xa8fce41cb7a514e9,
+		0x7e45bc8ed6b92357,
+		0x8fb74c5fe49a52c3,
+		0xb7246581f3ad7241,
+		0x7b98ac53217e5f8d,
+		0xd6f754843e627df9,
+		0x46ecd7f43e84ad67,
+		0xfbed68465c67abd3,
+		0xfa945e29897adb51,
+		0x61735daa965ce8ad,
+		0x3c1b865fe783192b,
+		0x25ae1891f5a42897,
+		0xa7bd54f2159847f3,
+		0xa2db8c35439b5671,
+		0xfb8639e6517b64cd,
+		0xa8b342f87e6f834b,
+		0x61af82da9e63a2b7,
+		0xf96e4c1cbd87c125,
+		0x74ceb18eda57cf81,
+		0xc2eb78d1f648bced,
+		0x67345a82174cfd5b,
+		0x8f75dba548612dc7,
+		0x53f726da97864c35,
+		0xaed5c43a93675ba1,
+		0x52c6fe9cb25a691f,
+		0xf8376ecbaf3d687b,
+		0x354fce8cbc3f96e7,
+		0xb2197ac1fd42c765,
+		0x81dbc3732b46d5c1,
+		0xc6f3e1732a58d43f,
+		0xa46c92d6574af29b,
+		0x581924fba86e2319,
+		0xe943562dc9724185,
+		0x691f753cb3645fd1,
+		0x82751badc1376d4f,
+		0xd9b5fa8fef286dab,
+		0xabd27e521f3d8c29,
+		0x8abe96d43d2fab95,
+		0x42fb7a876b43c9f1,
+		0x135d2af87a24d86f,
+		0xbe6724da9827f6db,
+		0x43caef2ed83c1749,
+		0x6b19afeed73e26b5,
+		0xcad83171f8517623,
+		0x2cab35f21524638f,
+		0xe1874da6513672fb,
+		0xafde2c765f2ba169,
+		0x7b14f9e76d1b9fc5,
+		0x759e41398a1fbe43,
+		0x5c9287bba812dc9f,
+		0xbf1e49adc825fb1d,
+		0x8749c5a1f6281c79,
+		0xbaf149e4371b2ae5,
+		0xcd12ab76571e4a63,
+		0x6314fc99842157bf,
+		0x7b289fcba214873d,
+		0x8cd1be387ef485a9,
+		0x15e7f23badf9b517,
+		0x2a76efcedafbc483,
+		0x8fe1b25ba7ecb2df,
+		0xb7fc2d9439e2f15d,
+		0x8ab1e36548f521c9,
+		0x14bd23f656e83f27,
+		0xad5b91f875fa4e93,
+		0xe964bd3872da4bef,
+		0x234adc1a91ef5b6d,
+		0x9d82a5fcbfe27ad9,
+		0x1c784de1fde5ba47,
+		0x4839adf21de7c8b3,
+		0x1f628ac54aebd831,
+		0x4a5ec1d437bce58d,
+		0xc2d6f19878d215f9,
+		0x5634c2ecb9e52467,
+		0xfa49c27cb6e854d3,
+		0xb134ae8ed4eb7351,
+		0xc8d79a51f2ec61ad,
+		0x9176ef8432ce7f1b,
+		0x28b156c43fc2ae87,
+		0xb36572a54db5ace3,
+		0xc4ed78265ab8dc61,
+		0x1cfe7a3656a8e9bd,
+		0x91b45f3986adf93b,
+		0x32d58cffe6d129a7,
+		0x85c23ad1f7d64915,
+		0x8b7641d324d95781,
+		0x2e6c98d432b965ed,
+		0x85e12ac761cd845b,
+		0xa18b93e65eaf93c7,
+		0xfe1dc8ba9eb4c235,
+		0x85b21f4a9cb6d2a1,
+		0x25791cbba786befd,
+		0xa871f92ed589fe6b,
+		0xf9745ac3269c1ed7,
+		0x32fead9768b13d45,
+		0xb24f136876a45cb1,
+		0xbf32ed4983b76a2f,
+		0x5312b9c871ca698b,
+		0x75394c1bae6c98f7,
+		0x92367eddcd9fb875,
+		0xc2986751fb93c6d1,
+		0x9b43a8f21b96d54f,
+		0x53ca47932987f3ab,
+		0x1b3aec2768ac1429,
+		0x6729baf987ae3295,
+		0xd947352cb7a362f1,
+		0x7a158fecb2936e5f,
+		0xe359164ed1856ecb,
+		0x63945d1fef6a8d39,
+		0xae583d621f6d9ca5,
+		0xf12b5d354d7fcb13,
+		0x32e18c554b62d97f,
+		0xe3fdcb465964f7eb,
+		0x32ab574dcb7a1859,
+		0x76843eaed68b27c5,
+		0xa276ef5ed69e5743,
+		0xf19a357fe381649f,
+		0xe9586af32395841d,
+		0x57fe91c54186a279,
+		0xefd789354f69a1e5,
+		0x5a481ce87d6cbf53,
+		0x39bf28e7684ebdaf,
+		0xd1c4f6bba963fc2d,
+		0x5846ac1fea651d89,
+		0x3da7518fe7682bf5,
+		0xad4fe682186c4b73,
+		0xcd3986b3235d48cf,
+		0xebf6712a9361784d,
+		0xdcf7865ba15386b9,
+		0x39cb7e5baf48b627,
+		0xa713d6ecbe4ac593,
+		0x72635dedc94ab3ef,
+		0xf5d684edc94fe26d,
+		0x9dfe15a43b6412d9,
+		0x87b341665b683147,
+		0xe3d4975767584fa3,
+		0x5fdab2ca975b6e21,
+		0xf26b1d7a923e5c7d,
+		0xad1658bdc2417be9,
+		0x1b538c9edf23ab57,
+		0x49b75321fe26b9c3,
+		0x361cbe732e3ad941,
+		0xb7a28dc43a2be69d,
+		0xcf68a2b6593ef61b,
+		0xc7bd589bab432587,
+		0xf5462e8cb92745e3,
+		0x2bf6458ed83a7461,
+		0xa92c47dfe43a62bd,
+		0x936457c1f24e813b,
+		0x2ea835f54231af97,
+		0x819b3d265e14adf3,
+		0xf276a8365e26cd71,
+		0xce987df65917eacd,
+		0x64dfb8a8781cfa4b,
+		0xf4e579bdc82f1ab7,
+		0x3df4a76fe9134a25,
+		0xa89b1431f7265891,
+		0x95acd843241856fd,
+		0x19ace3f5431c856b,
+		0x4f53a9e7621e94d7,
+		0xb2ae38187defb345,
+		0xd56b72c98cf4d3b1,
+		0x7fd342ea9ae6d12f,
+		0xc52694eba8d6ef7b,
+		0xe3254f9dc6da1fe7,
+		0x7cb93e6218fd2e65,
+		0x1be98a7547f25dc1,
+		0x8ea53f1875e46b3f,
+		0xce38dab872f56a9b,
+		0xc8b1396872fb8a19,
+		0xb3162ed87fedb985,
+		0xf37a64ca9acfb7e1,
+		0x46fb8cafeac2d65f,
+		0xf48725b219d5f4cb,
+		0x95ca82f54bea1539,
+		0xadb597c768ec23a5,
+		0xfd14b5ea98de6413,
+		0xbe287c6ba5d2617f,
+		0x78bd1e4a92c36fdb,
+		0x2d5ef94dc1d68e49,
+		0x1d37958fefc89db5,
+		0x76ac4f321fadbc23,
+		0x1b9da4532b9eca8f,
+		0xe58bd2a549a2e8fb,
+		0x14edfb687bd51a69,
+		0x214e59dba7c928d5,
+		0x796341fcb7dc4853,
+		0x2db7481dc3bd45af,
+		0x25843a91f4c1852d,
+		0x7fc389d212d4a389,
+		0x3c56bf2541c7a2f5,
+		0x6d42f9e65fbac173,
+		0xf39eb1754c79aebf,
+		0x8bd7f417698fce3d,
+		0x1fb645ddc8b31ea9,
+		0x184fc7afe9b63d17,
+		0x235bc9e1f6b94c83,
+		0xf93a4272158a49df,
+		0x41b9736323ae695d,
+		0xe8f9db1653b187c9,
+		0xb842ea1a91c4b837,
+		0xea5df1798f97c6a3,
+		0xfd6c718cbe9ad621,
+		0xa28ed53dca8be37d,
+		0x731f452dc87df2e9,
+		0xcb659de21cb43257,
+		0xa5f1367549a751c3,
+		0x7b9cdae657a96f31,
+		0x4f32ae77637a5e8d,
+		0xc9d6f149827d6cf9,
+		0xa321498ed291ac67,
+		0xa8d7e63dcf74bad3,
+		0xda73c821fe87da51,
+		0xf539b7221c58e7ad,
+		0xc5817fd43a6cf72b,
+		0x682715354b8f1697,
+		0xba2f61c98a9246f3,
+		0xef41a83dc9a86571,
+		0xd2fa693cb47863cd,
+		0x6132485fe37c824b,
+		0xdc8abe51f26e91b7,
+		0xf658b3a54382bf15,
+		0x9f4ac5843f64ce81,
+		0x2c4af9d43a45cbed,
+		0x27f45bc76a48fc5b,
+		0x5694aed9895d1bc7,
+		0x378b641dc97f2b35,
+		0x541d63cfe87359a1,
+		0xd7c89b3fe475681f,
+		0x2b583ea21349867b,
+		0x64d257e4324b95e7,
+		0xb2136e79817eb465,
+		0x9576e4d98f62d4c1,
+		0xcd7841ba9c65d23f,
+		0x719e2f5bac46f19b,
+		0x315a4b9fec6b3219,
+		0x68429adfe94c2f75,
+		0x1d6a4f73285f4ed1,
+		0xba946c5438526c4f,
+		0x61bd9ef875346cab,
+		0x419b875ba3478b29,
+		0x15a2b739813cba95,
+		0x8f13ba4a9e3db8f1,
+		0x7a93546cbc31d76f,
+		0x5fb8c2afea23f5db,
+		0xbad94e332d381649,
+		0x47a5ebf76c3a24b5,
+		0xc5dfa3b98a4d6523,
+		0x1c42afda973e528f,
+		0x87e6d9bba64371fb,
+		0xa3b9ed6dc3248f59,
+		0x436ab2fed1279ec5,
+		0x9c51af8fef1abd43,
+		0xba39f4632e1dcb9f,
+		0xe8ab67d65c32fa1d,
+		0x921c5ae76d241b79,
+		0x6a132de98b1729e5,
+		0xdae814fdca1b4963,
+		0x761e54dba71c46bf,
+		0x38b9a5ddc51f763d,
+		0xa3692781f51284a9,
+		0xb75f24e43526b417,
+		0xfc423a976419c283,
+		0x179cf6d54ce8b1df,
+		0xe6f27b9659eacf4d,
+		0x6fa4721657cdfeb9,
+		0xe3dfc2acbaf43e27,
+		0xb9dea65dc8f64d93,
+		0xa7f5839dc5d74aef,
+		0x6e94fb5214fb5a6d,
+		0x91ae6b3323fe68d9,
+		0x25e8b3c763f1b947,
+		0x6d357eb981f4c7b3,
+		0x54387a6a9fe8d731,
+		0xa4316f887bc9e48d,
+		0x694ec37ba8cbe3f9,
+		0x2f41bc9feadf1367,
+		0xcb2f76321ae452d3,
+		0xdc62a1b54ae87251,
+		0xb8c197d434c75f9d,
+		0x54e71ba764da7e1b,
+		0x1ad4b83762ce9d87,
+		0xb286fe7a92d1abe3,
+		0x918cf3bbafc4db61,
+		0x8cb2ed41fca5e8bd,
+		0x76f924e21dc9f83b,
+		0xab4c91743bcd18a7,
+		0x13e98af76acf3815,
+		0x1fb2354a9ad35681,
+		0xab4fe3ca97b564ed,
+		0x67ad48edc4d9835b,
+		0x3db6c1ffe3db92c7,
+		0x2a684ec1f2ceb135,
+		0xe153d76543b2cf91,
+		0xbd687ce32e83bcfd,
+		0x8614f5e43c95fd6b,
+		0x8269eca65ba91cd7,
+		0x963e214989ad2c45,
+		0x73d2485dc79f4ab1,
+		0x79cf2baed7b3692f,
+		0x689b7411f3c4678b,
+		0xadc736f213b896f7,
+		0x9518da7432acb675,
+		0x7cbd9e57629eb5d1,
+		0xebf924587e91d34f,
+		0xb2f936c87d84f2ab,
+		0xb129f5adcdb81329,
+		0xf3c4b5dfecab3195,
+		0xb425e93ed78b4fe1,
+		0xeb2a57d2178e4d5f,
+		0x68b9ae5435826dcb,
+		0xf1eb527764a58c39,
+		0x5e9f47a762879ba5,
+		0xfc826d5a928bca13,
+		0x43da728a9e5dc87f,
+		0xe7f14b8bac71f6eb,
+		0x5c9432a1fda41759,
+		0x4e3a9d221d9826c5,
+		0x69ae5dc32c9b5643,
+		0xeb3df795487c539f,
+		0x7f3e628a968f731d,
+		0xb937681dc583a179,
+		0x68ce3fdcb2749fd5,
+		0xeb7691aed178be53,
+		0xfea8547ede48bcaf,
+		0x3f48b6921f5ceb2d,
+		0xbed752954e621c89,
+		0xa87cfeb76c742af5,
+		0x6e4d37aa9c684a73,
+		0xc3267b4ba85947cf,
+		0xe3c629dcb85c674d,
+		0x3a49ef2ed34f75b9,
+		0xd351eba1f483b527,
+		0x5a8f94321276c493,
+		0xf95ca3254157b2ef,
+		0x4d6f93865f4ae16d,
+		0xcf847d365a3befc9,
+		0x21d9754bac612f37,
+		0x1724b6ddcb654ea3,
+		0x96a2bfdfea586d21,
+		0x9e4a8351f6395b7d,
+		0x856a9322153c6ae9,
+		0x7cead163243f9a57,
+		0x51f9a4387452b8c3,
+		0xecf1b56ba256d841,
+		0x957fc6a98f27e59d,
+		0x83a42e6a9d3af51b,
+		0x648a539edc3e1487,
+		0xac5e9831fb6154e3,
+		0x18d9e6a32c457361,
+		0xb36c97d5493761bd,
+		0x291c467656397f2b,
+		0xa1b254c7642c8e97,
+		0x49c65bf9842e9cf3,
+		0xa4dc287cb243dc71,
+		0xd173854baf14e9cd,
+		0xd3a25b1fed17f94b,
+		0x62fb45743e2c19b7,
+		0xd12453f76c1e3925,
+		0x95d1ef698c325791,
+		0xa7b25c19891365fd,
+		0xdb6f31adc917846b,
+		0x8daf143dc51a93d7,
+		0x97a6d43fe61db245,
+		0x1db23c9fe43fc2b1,
+		0x8324ca665423ce1f,
+		0x7af893532cd3fe7b,
+		0xcd83b1554bf61de7,
+		0x5dcfa8687bfa2d65,
+		0x4a5c3be878fd4bc1,
+		0x45adb27a97de5a3f,
+		0x983ea7ced5f2689b,
+		0x34578a9fe4f5a819,
+		0xb68d932213f9b785,
+		0x976abc2543fab6e1,
+		0x412a87e761edc45f,
+		0x12c537f76ed1f3cb,
+		0xe6b9d48bade61439,
+		0xca17546cbce832a5,
+		0x9e64281edaeb6213,
+		0x538b974ed7cb4e6f,
+		0x7df5982216af5edb,
+		0xb956f27436e28d49,
+		0x873bcef763e49cb5,
+		0x8dca421874e8cb23,
+		0x283b74a761dac98f,
+		0x5d83ce776e9cd7fb,
+		0xa479123dced21869,
+		0x3cad1791fbc427d5,
+		0x793e68521cd94753,
+		0xdb1683c328c954af,
+		0x92af17d658bc742d,
+		0x5bed324765cf7289,
+		0xa846c25a96c3a1f5,
+		0x21ce674ba2c5bf63,
+		0xd68f2a4dc196adbf,
+		0x8ed5f34cbf89ec3d,
+		0x936b2fd21e7dfca9,
+		0x2da8ec765eb23c17,
+		0xfc9a28176dc54b83,
+		0xe41f768659a648df,
+		0xcdf34e6a97ba685d,
+		0xd1ace63cb4ad76c9,
+		0x3b98715ed4bfa637,
+		0x537b4ed1f4b2c5a3,
+		0x947f5ba434b7d521,
+		0xcbf5739541a8e27d,
+		0x783ae6554d7af1e9,
+		0xe3d721f98dae2157,
+		0xd54f1cb98c914fb3,
+		0xaf17b8ddcba56e31,
+		0x7df453bfe7965c8d,
+		0x891d374fe4786bf9,
+		0x739db652148d9b67,
+		0x3d89b1a3247fa9d3,
+		0xc315d24874a3d951,
+		0xeda6cf187184e6ad,
+		0xc3ae165a9e78f62b,
+		0x2a7e985cbe8c1597,
+		0x2eb1873dcb8d25f3,
+		0x15e369a1fca26471,
+		0x2659cfd21a8462cd,
+		0xbf6791a43a97814b,
+		0x7da815f434598fa7,
+		0xadbc3629847cae15,
+		0x4c75f36a936fbd81,
+		0xa1e85b4a9162caed,
+		0x3175d69dce64fa5b,
+		0x67a951d1fe581ac7,
+		0xdb523a421e7c2a35,
+		0x5ce4fd243c6e48a1,
+		0xfc37a1465b82671f,
+		0x8e6bc14a9a63857b,
+		0x4295d31cb85694e7,
+		0xb863e9fed47ab365,
+		0xcb795a1fe46db3c1,
+		0xf4c9b73ed26ec13f,
+		0xad954f843152ef8b,
+		0x2491d8f43d451ef7,
+		0x417bfa976d492e75,
+		0xd6235b887b5a4cd1,
+		0x2aebc519893d5b4f,
+		0x958f6baed84169ab,
+		0x9b2863ffe7548a29,
+		0xbe3d9621f436b895,
+		0x4fb1ce632549b7f1,
+		0xfce9b325423bc56f,
+		0x4a7b5cd7613fe4db,
+		0x32e4fc7baf631549,
+		0x34c2659bae4723b5,
+		0xf418a67dcd5a6423,
+		0x82faec4eda3b518f,
+		0x1ef857bed72c5feb,
+		0xd8b7f3e32a318e59,
+		0xfb5e369547239dc5,
+		0x59af42698627bc43,
+		0xbc2f17e76327ca9f,
+		0xdc4ab399823be91d,
+		0x5fc924ebad1ef879,
+		0x96eb4a2dcd1328e5,
+		0x19426ca1fd174863,
+		0xc9e64b332c1845bf,
+		0x6b895fe54a1b753d,
+		0x43f9c286581e73a9,
+		0x5968be3ba942b317,
+		0xa9d7c38cb725c183,
+		0xfca6274a9315aecf,
+		0x5e87f1acb218ce4d,
+		0x3e4982cbace8fdb9,
+		0xd9e15a243cfe1d27,
+		0x14ecb9d65df14c93,
+		0x8697cbf65ad349ef,
+		0xad9b68e54af7596d,
+		0x7bd9c24985fa67d9,
+		0xf35d8e4cb5fda847,
+		0x86abfeddc4efa6b3,
+		0x379168afe5f4d631,
+		0xa5647b2212f5e38d,
+		0xb6c21ed541d7e2f9,
+		0xba842e365fec1267,
+		0x914e35687bce41d3,
+		0xe734ab1a9bd26f41,
+		0x241bec9ba8c35e9d,
+		0x325de7fdc8e67d1b,
+		0x391c8ed1f4ea9c87,
+		0x9b85e4c215dc9ae3,
+		0xc4f57be434dfca61,
+		0xc19f832653c2e7bd,
+		0xb735ef4981d5f73b,
+		0xa591fbd98fd916a7,
+		0xc46e5f9baedc3715,
+		0x541b78eedbce4581,
+		0x32a1b971f9b163ed,
+		0x9cfb64321ad4825b,
+		0xc4be67f438d691c7,
+		0xca587d9546c9af25,
+		0xc29f1b8764acbe91,
+		0xb9c72f87628eabfd,
+		0x2d415e3a91a2fc6b,
+		0x27f93b5dcfa51bd7,
+		0x3712ba41fec92b45,
+		0x14ab9d332eac49b1,
+		0x958baf143bad582f,
+		0x39726f554ac1768b,
+		0x7ae9b38768b395f7,
+		0x5fb4891ba6c8b475,
+		0xaebd6f3dc5a9b4d1,
+		0x95a3e1ced39bc24f,
+		0xa192c35ed28fe1ab,
+		0x4c2f59d764c53129,
+		0xbdf81ca43ea62f85,
+		0xd76ebf865c984de1,
+		0x3d9ae8c76b8a4c5f,
+		0x8bd21397687e5acb,
+		0xb9af36ced7a18b39,
+		0xbdca756fe683b9a5,
+		0x6d4e3521f5a7c913,
+		0x3bced8a21389c67f,
+		0xdb896ca4327ad5eb,
+		0x941bef27618ef459,
+		0xec7136298f9324c5,
+		0x573c89fcbea86543,
+		0x14a9285cbc78529f,
+		0x9318ab6fea8b721d,
+		0xfd4ca82fe85d7f69,
+		0x5ecb3fa328719ed5,
+		0xebd9c7332784bd53,
+		0xbef861254365cbaf,
+		0x816dae987368ea2d,
+		0x31e54fc8715cfa89,
+		0x5fb23debad6e19f5,
+		0xe158973ede824973,
+		0x19a467ffeb7546cf,
+		0xc75a9e421c59764d,
+		0x978e5d432a5c74b9,
+		0x2b9c1ed6596ea427,
+		0x87ef164ba871c293,
+		0x45ea862a9564b1ef,
+		0xfe9d573ba246cf5d,
+		0xd23a874cb147fec9,
+		0xa1863efedf5c1e37,
+		0x69ed3ac21e5f2da3,
+		0xbe186a965e746c21,
+		0xfab827376c345a7d,
+		0x18a324665b3768e9,
+		0xfe985d7cb83ca957,
+		0xf68392ecb64ea7c3,
+		0xf1b4693fe862d741,
+		0xd1536b41f253e49d,
+		0x65e7b4c32357f41b,
+		0xdc29e457625b1387,
+		0xac3b8e587f5c42e3,
+		0x8ef614ba9d4f5261,
+		0x2c96ae398b325fad,
+		0x275ebf4dca357e2b,
+		0x5cd817afea268d97,
+		0x97f6a13fe62a9bf3,
+		0x84fca3b3263ecb71,
+		0x172dfac54531e8cd,
+		0x256bcfd87523f84b,
+		0xe8c621dba23618b7,
+		0x86593bfbaf1b3825,
+		0xd1a458ecbe2d4691,
+		0x1d47c26cba1e54fd,
+		0x19658be1fc12836b,
+		0x2b5ca4943b1592d7,
+		0xef4591a76a29b145,
+		0xcdb134865629bfa1,
+		0xdc63ea58752cbd1f,
+		0x3a718b2a9421fd7b,
+		0x48aec79cb3241ce7,
+		0x12f7e5acbef72c65,
+		0x6cd35f2fedf84ac1,
+		0x95b2cef21ceb593f,
+		0xd46853a32afe579b,
+		0xfadc94265bf2a719,
+		0x45c96bd879f3b685,
+		0x652b471a96f7b5e1,
+		0xc8475b3ba4e9c35f,
+		0x7ecfda3a93fae2cb,
+		0x42e9d3adc2def139,
+		0x943bdc2762f431a5,
+		0x87de52643dc64ef1,
+		0xf876d5943bc84d6f,
+		0xc1af9de548e95cdb,
+		0xaf42de9768de7c49,
+		0x8d56217dc7e19ab5,
+		0x73fca65ed7e5ca23,
+		0x526b31cfe3d5c78f,
+		0xa8d536b213c8d6fb,
+		0xa78d5b4432dcf569,
+		0x8b6ec24872cf16d5,
+		0x2b83df7a9fd24653,
+		0xb15e46d98dc653af,
+		0x2345e71babc9732d,
+		0xf26c714feadc7189,
+		0x2875693ed6ac8fe5,
+		0x3c6dbf4328c1be63,
+		0xd49a3e632593acbf,
+		0x7418629654a6eb3d,
+		0xc931ed4652c7fba9,
+		0x2385d76a93cd2b17,
+		0xe634258a9ebf2a83,
+		0xec2f473cbca247df,
+		0x5c481a31fcb4675d,
+		0xfba67d521db875c9,
+		0x364f57b329bca537,
+		0x4a279ed6579eb4a3,
+		0xf7a4bc1a98b3d421,
+		0x6573ce1a95a4e17d,
+		0x38bd496ba285efd9,
+		0xb7afe21ed2ba1f47,
+		0x872c1f9edf8c2eb3,
+		0x48e96d532e9f5d31,
+		0xbae87c443e925b8d,
+		0xe5f71bd43c846af9,
+		0x53879ad54cb89a67,
+		0x4ae2d71a967ba8d3,
+		0x67afec8cb69ec851,
+		0xbe172dfdc481e5ad,
+		0xcf92748fe394f52b,
+		0x697f4ae323b81497,
+		0x2ad97ef7619a24f3,
+		0xbd58c7e76f9d5371,
+		0x72ed83176b7f51cd,
+		0x2abc58da9c827f3b,
+		0x89e2734dcb648ea7,
+		0xd179246fe978ad15,
+		0x6912d7a1f56abc81,
+		0xcf64bd32145cb9ed,
+		0xbe5d76843471f95b,
+		0xb4ea3d17638419c7,
+		0x428ef3ccb1a82935,
+		0x2d5784aa9f6b47a1,
+		0xf2417cebad7c561f,
+		0x758b4fcedc5f647b,
+		0x38e65cb1fb6293e7,
+		0x7e235c621c87b265,
+		0x7cbe68a54968b2c1,
+		0x7f58bde54659be2f,
+		0xac739bd7634cde8b,
+		0x7b3d618ba4621df7,
+		0xad4fe68dc1842d75,
+		0xdb259e6dcf574bd1,
+		0x6c93824fed395a4f,
+		0xa59b32421e3d58ab,
+		0xac961df43c4f7829,
+		0xa1bd9fc76c42b795,
+		0x7f359ad98945b6f1,
+		0x3e4f9d5ba738c46f,
+		0x28be54cba549e3db,
+		0x65d9efbdc35df249,
+		0xc1b6a8d1f47132b5,
+		0xdf279c6654876123,
+		0xf295adc43d264e7f,
+		0x7efc59254c285deb,
+		0x1a784cd76b2c7d59,
+		0x863fd1a8792f8bc5,
+		0xac149e3ed952cb43,
+		0x3e564f7ed624c89f,
+		0xae8d7411f537e81d,
+		0x25b3d462142bf679,
+		0xef428c77643d17e5,
+		0x689d3c5ba2514763,
+		0xbcd3f5998e1354bf,
+		0x97c238fbae18743d,
+		0xeb9358ddcd1b72a9,
+		0xdaf8734feb3da217,
+		0x16c724bed81eaf73,
+		0x589641243712adcf,
+		0xcad1b4e43715ec4d,
+		0x21cab9d65416fcb9,
+		0x4126dfaa953b1c27,
+		0x59e4bfcba41e2b93,
+		0x8f634b987bcd38ef,
+		0x5a8d946cbcf2586d,
+		0x51ba4d9febf476d9,
+		0xcb2ed4f21cf9a647,
+		0xf3647d8328fca5b3,
+		0x3d8c7ae768fec531,
+		0xfe3c4db876f1e28d,
+		0x43d2abc985d4e1f9,
+		0xdf67e38dc4f92167,
+		0xa524e69cb1e92fc3,
+		0x31c2a56cbfdc5e41,
+		0x8d9e46521ebf4c9d,
+		0x91db25c54de37c1b,
+		0xcb9ef8543ce49b87,
+		0x2b7c849658d7a9e3,
+		0xd69534e987ebc961,
+		0x2a7ec5b984aec6bd,
+		0xf5b1ea2dc5d1f63b,
+		0x4b5d27a1f3e415a7,
+		0xef31ab9324e93615,
+		0x4c9ed8a762eb5481,
+		0xbe51ad254fab52ed,
+		0xb7f35ae76dcf715b,
+		0x89f12e576ac28fb7,
+		0x4719dcfcb9c6ae25,
+		0x56bd721fe6c7bd91,
+		0xa87df54fe498bafd,
+		0x3587cf22149dea6b,
+		0x7ef8a51545c21ad7,
+		0xace675f983d62a45,
+		0xf62cb3aa92d748b1,
+		0x6a3c54f98eba572f,
+		0x1d723f5a9ead658b,
+		0x61b87dfdcbae84f7,
+		0x7d4e1391fac2b375,
+		0x5d4e7fa329a6b3d1,
+		0x9b15842437a8c14f,
+		0x14d825c43478df9b,
+		0x2b39d1c7648cfe19,
+		0xdb46cf8ba4b12e85,
+		0x574c983cb2a54ce1,
+		0x2eab5fddce974b5f,
+		0xb461a8e1fe7859cb,
+		0x7a9fd8521e8d7a39,
+		0x1d7b3f632c7f98a5,
+		0xac5782b76ba4c813,
+		0xd8a794e76894c57f,
+		0x5bac324a9587d4eb,
+		0xf9273d1dc48bf359,
+		0xe96ab1ced49e13c5,
+		0x62ce48d1f5b16243,
+		0x74862c1432a4519f,
+		0xe5fb46c32d765efb,
+		0x24fcb1943d5a7e69,
+		0xa35c79154a6b8cd5,
+		0x56c9def9897fac53,
+		0x69cf28ecb762c9af,
+		0xaf5362bdc675e92d,
+		0x87d51a9fe356f789,
+		0xdc9ef683247b18f5,
+		0xa367dfb6549e2873,
+		0x849b35a8728145cf,
+		0x5cba4e1a9f83754d,
+		0x897462bbae5673b9,
+		0xd962fe7dcd6ba327,
+		0x7d6b91cfea6db193,
+		0x847efd5cb64c9edf,
+		0x8eb9f5321862ce5d,
+		0xa17dc6f32654fdc9,
+		0xa6d791c985691d37,
+		0x92b57c19846b2ca3,
+		0xf56ce1dba37e5b21,
+		0xe532761cbf41597d,
+		0x43df72adcd4367e9,
+		0xcd528911fd36a857,
+		0xfe5274621d49a6c3,
+		0xcb816d743a5dc641,
+		0xc91f67a6574fc39d,
+		0xfd6e32aa9864f31b,
+		0xfed9763dc9561287,
+		0xab93ef6dc56941e3,
+		0x9b2e5a4ed26b4f51,
+		0x7e25d83cbf2c4ead,
+		0xa52946d43f417d2b,
+		0xc5b8d9e54e238c97,
+		0xad1b84265c269af3,
+		0x1a2be3d76b39ca71,
+		0x3adceb59862ab7cd,
+		0xc215de3ba62fe74b,
+		0xd451239fe84316b7,
+		0x2c3ea7d1f6483725,
+		0xcd6ba513263a4591,
+		0x8b4952f7612a53fd,
+		0xab9126f65f1e726b,
+		0x6952b1c98e3291d7,
+		0x3275e8ca9c14af35,
+		0xd79e32bdc926bea1,
+		0xe957f26ed728bc1f,
+		0xe2b3c861f51aec7b,
+		0xf7965d43251dfae7,
+		0xc1b9f4d878132b65,
+		0xf97a65d9852649c1,
+		0x52e34cfba219583f,
+		0x8fcb96a87efa569b,
+		0x437f58cbacfd8619,
+		0x4f9e5a8dcbefa485,
+		0xebc9a74ed9f3b4e1,
+		0xd82c5b3219e6c25f,
+		0x1ab8cd5436f7e1cb,
+		0x8c12965545daef29,
+		0x8c5d3ea874ed1f95,
+		0x7d4b1afa95e24df1,
+		0xb39fd52ba1e34c6f,
+		0x7c318daa9fe65adb,
+		0x32b58a71fdea7b49,
+		0x7a9246821ced89b5,
+		0xc2a6d7f54adfb923,
+		0x82615ed549d2c68f,
+		0xbcd841e767c4d5fb,
+		0x6b8e42cba5d8f469,
+		0xe479bd8ba6eb14d5,
+		0x186b47edc6de2453,
+		0xcfb2d41fe3d152af,
+		0x37a562f543e5712d,
+		0xbf517c332ec56f79,
+		0xb9cf51d43cb98de5,
+		0xf8e2943659bcad63,
+		0xab231e96568e9abf,
+		0xfa531dea97b2ea3d,
+		0x6ba1295ed5c4f8a9,
+		0xeab6c411f5d92a17,
+		0x9b7326a215dc2983,
+		0x53c1df7542ac36df,
+		0x1ce7f6d982c1765d,
+		0x7c1d89276fb374c9,
+		0x68275c1a9ec8a437,
+		0x15d4f9a98dc9b2a3,
+		0xf26ac37fe9adc321,
+		0x74b9da2dc58ebf6d,
+		0xcdb26f421682fed9,
+		0x7ab59e8438b61e47,
+		0xcf359d2765a82db3,
+		0xda613c5984ab5c31,
+		0xf6edb3c8719e4a8d,
+		0x146aed2cbea168f9,
+		0xa3524bfedeb3a967,
+		0xc4d738a1fc96a7d3,
+		0x8d96ef532d9ac751,
+		0xb6dce593287bc4ad,
+		0xa362c4e6578fe42b,
+		0xe5b62d3ba8b41397,
+		0x47adfc1cb6a742f3,
+		0xf12e98ced4ba5271,
+		0x5f2eb9adc1794fbd,
+		0x15378e4dcf7d6e3b,
+		0x1be678d32f618da7,
+		0xde9417543e84ac15,
+		0x8b9a57d54d76cb81,
+		0x8761cd954957b8ed,
+		0x5bca421a976ce85b,
+		0x4de18f6ba45ef6c7,
+		0xa734d29fe7a42835,
+		0xa9c56141f39746a1,
+		0xd4f35ca32389651f,
+		0xdb8c3fe5418c637b,
+		0x8b219d354f5d82e7,
+		0xa3517cba9e82b165,
+		0xec32da698c64afb1,
+		0xe32f58dba956bd2f,
+		0xef1495adc647ed8b,
+		0x3cb5496ed54aebf7,
+		0x14d59ae3286f1c75,
+		0x684d1c9656734ad1,
+		0x3ba7f2d98276594f,
+		0x6e35c41a914857ab,
+		0x84bd6f9baf4c8729,
+		0xcfa6d41cbd3ea695,
+		0x291c834edc62b5f1,
+		0x95a8bfdfea54c36f,
+		0x64a539821946e2db,
+		0x947f58c4385af149,
+		0x41fe3bd8786d21b5,
+		0x17e38d6a976e4f13,
+		0xc82d154ba3524d7f,
+		0x1e2f358ba1345ceb,
+		0xb45f6caedf287c59,
+		0x4e186251fe2b8ac5,
+		0x32f59de21d2eba43,
+		0xcb361ea54b31c79f,
+		0x3d2e84776a34e71d,
+		0x36fb4e198a26f579,
+		0x9d73ac1cb83a16e5,
+		0xb71526ddc84d2563,
+		0x1f73269dc52e43bf,
+		0x8da57b61f154723d,
+		0xf63715a5423571a9,
+		0x14e867b43d178ef5,
+		0xce624af65d1bae73,
+		0x1fc89d76581d9bcf,
+		0x437ab9c98921eb4d,
+		0x3659a42dc713fab9,
+		0x8c936bffe9381b27,
+		0xa9816c71f61b2a93,
+		0x3efd14b3251b37ef,
+		0xd3fb1626531f476d,
+		0x9eab6c79831275d9,
+		0x4b75fe998ef3a547,
+		0xaf534bc98df7a4b3,
+		0x5bd28a7a9bfac431,
+		0x8d5f7c6ba7fbc18d,
+		0x1e49623ba5bdcfe9,
+		0xa3df481329e31f57,
+		0x5de621a547f62ec3,
+		0xa438c62876f95d41,
+		0x1235c8a762fa4b9d,
+		0xcb3fd41982fe6a1b,
+		0x9e14cfdcbfe19a87,
+		0xfa749c2cbcd4a8e3,
+		0xed9617b1fbe7c861,
+		0x4bac6f7219e8c5bd,
+		0xe385d14328dce53b,
+		0x3c8d769546cef3a7,
+		0xc95d8bfba9e63415,
+		0x687cae3cb6e75381,
+		0xd73852eba3c851ed,
+		0x3ab1547dc1da6f4b,
+		0x85fa726dcfad6eb7,
+		0xc7261a843fc1ad25,
+		0x5942dec43ed4bc91,
+		0x6aef2d7438a5b9fd,
+		0x65cbe23547c8e96b,
+		0xf341db9765abf8d7,
+		0xdf872accb7cf1945,
+		0x1629bc7fe6d347b1,
+		0xf48627dfe3c7562f,
+		0x5cad4e7212d9648b,
+		0xeab5836541cb83f7,
+		0x71de6f854fbea275,
+		0x1a593d287ea3b2d1,
+		0xce8346187a94be3f,
+		0x587f64eba785de9b,
+		0x38db614dc6a8fd19,
+		0xa63d2b81f6ac1d85,
+		0xd7ac1b83269f3be1,
+		0xa42c597436b24a5f,
+		0xc42f587762a458cb,
+		0x8a4bc92761ca7839,
+		0x7825cfe76f8c97a5,
+		0x12c3fb4bad9eb713,
+		0x68e31abedb91c47f,
+		0x52b34181f984d3eb,
+		0x24b9dce21ba7f259,
+		0x19a7c525489a12c5,
+		0xc5946f3878ad5143,
+		0x7f2dc897647d3e8f,
+		0xfae18dca93825dfb,
+		0x179f8bedc1a47d69,
+		0x3b7d42adcf678bd5,
+		0xc682a511fe7cab53,
+		0xd7a658c21c5db8af,
+		0xad1678354b71e82d,
+		0x2b5186e54b73f689,
+		0x3da52fc76a9817f5,
+		0xa31948edc89b2673,
+		0x21bce93ba57b34cf,
+		0x64937aedc28f634d,
+		0xb19c3ad1f18372b9,
+		0xfb8153654396a127,
+		0xe1f573432e57af83,
+		0x752ef1a43b489cdf,
+		0xf2b1e837694ebc5d,
+		0xdc6f98587851fbc9,
+		0x5318e24eda851c37,
+		0x35821f4fe8672ba3,
+		0x1e43d2b1f67b5a21,
+		0xe2953d42135c487d,
+		0x7f4cb164324f56e9,
+		0x38d5efba9182a657,
+		0x42fac5998f46a5c3,
+		0x39c7e1bbae69c541,
+		0x9d642ea98b4ac29d,
+		0xe9532d1dc95de21b,
+		0x24c59de1fb632187,
+		0x6745ca8219652fd3,
+		0xa9b84e1439684e51,
+		0xcfb5e29765384cad,
+		0x673b5af9834d6c2b,
+		0xd3c652fba13f6b97,
+		0x4ac8e59cbe42a9f3,
+		0x14f732eede35c971,
+		0x1e735dc1fa27b6cd,
+		0xa37c56b21c2ae64b,
+		0x85a6c414392df4b7,
+		0x8a37cd2a9b713625,
+		0x85f42a6cba365491,
+		0x167c935ba63752fd,
+		0xe91c267ed43a716b,
+		0x1f93a24ed12b6fc7,
+		0x169a8f7dcd1f9e35,
+		0x598a2ed54f23bda1,
+		0xf2cdbe554d25cb1f,
+		0xcf597a254c16ea7b,
+		0xf9b8ae76581af9e7,
+		0x932f845cb92e1a65,
+		0x3e2914aed93248c1,
+		0x3c5a8b4ed814573f,
+		0xe249a7b1f317659b,
+		0x152ca864342b8519,
+		0xd3285f47621da385,
+		0x269317b65cfda3e1,
+		0xdec96b187be2c15f,
+		0x53bc1ed768e3dfab,
+		0xc465389ba8d6fe29,
+		0x36de7fbdc7fa1e95,
+		0x5e473caed6eb3cf1,
+		0x8a96735215de3b6f,
+		0xae7bd65434f259db,
+		0x4a53f1e762f57a49,
+		0x9dc3f54761f798b5,
+		0x9d4bfca87fecb823,
+		0x14e5bf687acdb58f,
+		0xc5d3b74ba9c1d4fb,
+		0xc7a8f92fead4f369,
+		0x57a4e9d32ae813d5,
+		0x3f24be7769eb4253,
+		0x738c1b6656dc41af,
+		0xc368aef874be5f1d,
+		0x5c84de9ba3d26e79,
+		0x78b51edba1d48ce5,
+		0xce8a4f6cbfd8ac63,
+		0x7c86134fedc8a9bf,
+		0xfec9d7521baec93d,
+		0x5f92e7a43bc1f7a9,
+		0xd31e5b776bd52917,
+		0xa73fe5876ad92783,
+		0xaefc623986b935df,
+		0x5c4917eba3bc645d,
+		0x98a34e2ed2bf63c9,
+		0xed421a61f1d4a237,
+		0x271e8cf542d6b1a3,
+		0xf59e8c432c869def,
+		0x8dc271543c89be6d,
+		0xcdf76985487becd9,
+		0x3674cfea9ab21d47,
+		0xab9384eed8a52cb3,
+		0x2b5937afe7c85b31,
+		0x5c82e3b1f3ba498d,
+		0x3bc7d2e213ac57f9,
+		0x2f17e6d432bf9867,
+		0xfd281ec871b2a6d3,
+		0x7dce39b98fa7c651,
+		0xcbd8f4576e87c3ad,
+		0x153cf62a9c8ae32b,
+		0x4b2f57ddca8df197,
+		0x15c8ba6fe9a241f3,
+		0x35a4697329a54f61,
+		0xa5de869325864ebd,
+		0xadc284f654896d3b,
+		0x368d14f6528d6ca7,
+		0x8f432d1ba28f9b15,
+		0x12738facbf73ca81,
+		0xdb7f6e9bac64b7ed,
+		0x8e7ca4d1fc68e75b,
+		0xa6ce25b21b6af5c7,
+		0x2af78d154b9e1735,
+		0x318c4b987b9245a1,
+		0x17d6953ba895641f,
+		0xb8d495adc498627b,
+		0xe5a3b2fdc36a81e7,
+		0x5b8a4eced17c9f45,
+		0xef73958dcd5f9eb1,
+		0xef2a45921e63bc2f,
+		0x6d1b7ae32d54ec8b,
+		0x4a689ce43b46eaf7,
+		0x5fa124d98a6c1b75,
+		0xb3512ecba86e39d1,
+		0x19738b2dc971584f,
+		0xd8f25a7fe47356ab,
+		0x283d7ab1f3578629,
+		0x68f2b7c2126ba495,
+		0xa92d8bf6526ca4f1,
+		0xe8643d165d4eb26f,
+		0xcf85ea987c53e1db,
+		0x2a94c3e98b45ef39,
+		0xdb2148adcb481fa5,
+		0x2b9e536ed96b4e13,
+		0x15468a2fe64d3c7f,
+		0xf7e51b6327415aeb,
+		0xba519c6326437b59,
+		0x1358df28723689c5,
+		0xc926df19815ab943,
+		0xc84e53187e2cb69f,
+		0xcab1d82a9b3fc61d,
+		0x7615a94edc32f479,
+		0xbe3dc611fb3714e5,
+		0xc7fa3d621c5a2463,
+		0xdfbac846583a42bf,
+		0x86ae3f58784e613d,
+		0xb65214fba5316f89,
+		0x8b63d27ba4238df5,
+		0xde5b91fdc126ad73,
+		0x67f254ecbe179acf,
+		0xa1c52691fe1bca4d,
+		0x96ae35f32c1fe8b9,
+		0x325bd9776d341a27,
+		0x36982df87c162893,
+		0x46c5da98791836ef,
+		0x9f475d2ba81b456d,
+		0xd29f815cb51e64d9,
+		0xb5c8a67fe621a347,
+		0x918b6ed1f415a2b3,
+		0xf8253ae76548c231,
+		0xe197a6f32ce6bf7d,
+		0x49b56f843af8cde9,
+		0x9f135da549ecfd57,
+		0x9d5c6b4989f12dc3,
+		0x39d825fcb9f65c41,
+		0x8392f5adc5f64a9d,
+		0x12f895bfe4fa691b,
+		0xc7a932e213fd6987,
+		0x97efc85542df97e3,
+		0xda62493982f3c761,
+		0x24edb9876fe5c4bd,
+		0x538cead87cd8e43b,
+		0x96b517e989dbf2a7,
+		0x56a94f1dcade2315,
+		0xa5cbe481fae35281,
+		0xd64a879217b34fcd,
+		0xacb4816325d76e4b,
+		0xc9fbd3a543e96db7,
+		0xed2b4a3873ed9c25,
+		0xfedb8ac872dfab91,
+		0x1f4a53e87ea2b8fd,
+		0xb625c18badc4e86b,
+		0xd578f1bfeab8f6d7,
+		0xd34f9a732bdc1845,
+		0xd7ec935549ce36b1,
+		0xdc26a49879c1652f,
+		0x864a52da97d4638b,
+		0x17f24e3ba4c682f7,
+		0x8f1ab94dc3dba175,
+		0x4a257beed2ab9fc1,
+		0xa73dce2cbc8ead3f,
+		0xc7f6b2321f82ed9b,
+		0x1a4dc9e43da5fc19,
+		0xb196cfa54db91c85,
+		0x82be1f97689b3ae1,
+		0x354cf7a987ad395f,
+		0xf91843eed6a157cb,
+		0x679d821fe5c48739,
+		0x84e692d1f2c796a5,
+		0xb5fe943324cab613,
+		0xc67db835419cb37f,
+		0xc7513fe54d7fc2eb,
+		0x32a564b87da3f159,
+		0x8eb263aa9da721c5,
+		0xa1963e2dcba94f23,
+		0x874e6bddc67a3d8f,
+		0xd374698fe57d4cfb,
+		0x1365ca7325a17c69,
+		0xde3519c324938ad5,
+		0x43c9e7576297ba53,
+		0x24a39fc65168b7af,
+		0x6b9fae498f6bc72d,
+		0xe834bd5bac6fe589,
+		0x23f4658edc9316f5,
+		0x86d39e71fca82573,
+		0x9d84cfa21a7843cf,
+		0x541f8be4398b624d,
+		0x6187fca5457e61b9,
+		0xe3461cdba5829f17,
+		0xfc812decb274ae83,
+		0xe436985ba1659bdf,
+		0xdb23971baf48cb5d,
+		0x48b2ed91fd4beac9,
+		0xd342bfe21c5efa37,
+		0x78396c465d7429a3,
+		0x13987b276c875921,
+		0x473fb5e98a59467d,
+		0x864cbe3ba74b65e9,
+		0xa67fe83dc36e9457,
+		0xd8b4672fe571a4c3,
+		0x9e48bc21f286c341,
+		0x4781a5d43256c19d,
+		0x415d9ce32d37cef9,
+		0xb25613e54c3bfe67,
+		0x6ac23de87a5f1ed3,
+		0xdfb4967bab734d51,
+		0x87941addc8354bad,
+		0x97bfd61fe7486a2b,
+		0x5d483ba1f43c6a97,
+		0xaf863eb2154d98f3,
+		0xf432c5e76452c871,
+		0x98bec3d87143b5cd,
+		0x9adb47398f27e54b,
+		0xf321d9b98d29f3b7,
+		0xd6e218fcbc6d1425,
+		0x8597b31edb5f4391,
+		0xf483c62fe94351fd,
+		0xacdb87f219246f5b,
+		0x814eb6f435286ec7,
+		0x831ce658762b9d35,
+		0xe394df58743e9ca1,
+		0x3ab5e14a9342ca1f,
+		0x7164debbaf13e97b,
+		0xd852c97cbc15f8e7,
+		0x98154bd1fd2b1965,
+		0xcb3a8d954b2d37c1,
+		0x814ed3f65a1e463f,
+		0xf8943bd87a12649b,
+		0x7e6f54acba268419,
+		0xfb43a98dc619a285,
+		0xe73ab65dc53ba2e1,
+		0xe57923ccb21cae4f,
+		0x569c13d989dfceab,
+		0xcb7368d21ce3fd29,
+		0x78fd5be43cf61d95,
+		0xca2e74165ae83bf1,
+		0x694fed2658eb3a6f,
+		0x3f25bd6876fe48db,
+		0xbed5a71dc6f17849,
+		0x831ef29ed4f397b5,
+		0x8249ac3fe4f8b723,
+		0x8cf7e29212e9b48f,
+		0xbcda8f9541eac3fb,
+		0xb165c2354dcfe269,
+		0x67b125d98ce412d5,
+		0x35c7e2bbace84153,
+		0x27b3f54ba8c73e9f,
+		0xf961425cb7ca5e1d,
+		0x62a549d1f4ce5d79,
+		0x987ce4d326d18be5,
+		0x67ac1b5325e4ab63,
+		0xdec7168542d5a8bf,
+		0xf1d3aec761e9c83d,
+		0xd8e9f3265fbce6a9,
+		0x742afd3a9cbef617,
+		0xa369157fecd42683,
+		0xb982f46fe9b634df,
+		0xbef36ad21ac9635d,
+		0x152fcea437db62c9,
+		0xa319ef6656ce9137,
+		0x5694831875c1af93,
+		0xa2f9c63872a39cef,
+		0xe137bf6a91a5bc6d,
+		0xb3479ecbaf87ebd9,
+		0xf482169fed9cfb47,
+		0x9d54e7f32d9f1ab3,
+		0xd81429376dc45a31,
+		0x9d81c5a43ab5478d,
+		0xae59237547b856f9,
+		0x769ebc3ba4bc9567,
+		0xe736af5cb4ae95d3,
+		0x41bfd95fe6b2c451,
+		0x215bc471f194c2ad,
+		0x8e2cb59543a7e12b,
+		0x659c3d132d69ef87,
+		0x46bda3965c8b1fe3,
+		0xbaf294e87b9f3e61,
+		0x95821bd879824cbd,
+		0xe631a9ced8956c3b,
+		0x5216cd7fe4986ba7,
+		0xae64b591f48c9a15,
+		0x6be53da3247eb981,
+		0x62ef3c554381b6ed,
+		0xd65f89b87193e65b,
+		0xd9fab6165e86f4c7,
+		0xcdf4e67bae9b1635,
+		0x2cd341ecbc8d34a1,
+		0x7f89132dca8e531f,
+		0xdc25eb71fa93617b,
+		0xba8dcf2219846fd7,
+		0xfdca43e326789e45,
+		0x62b19fa6546a9db1,
+		0xf3c416a8736dab2f,
+		0x8512f6da9261ea8b,
+		0x76d132cbad53e9f7,
+		0x162e8acede681a75,
+		0x8c13a421fc6a38d1,
+		0xe32f8b421b6c374f,
+		0x1b9c5e83296f45ab,
+		0x4dfae5876b738529,
+		0xd6e158ccb876a395,
+		0x9f46173cb568a3f1,
+		0x3ed81b5dc35ab16f,
+		0xcb8f17aa914dafcb,
+		0xa5143fedcd51fe39,
+		0x4c59df832f641ea5,
+		0x816b7e365e684d13,
+		0x829bc1f65c493b7f,
+		0x7af981e7683c49eb,
+		0x97f46cdcb83f6a59,
+		0x5971b64ed74298c5,
+		0x31c5fd4fe756b843,
+		0x35db9a1fe237b59f,
+		0xe9348563234ac51d,
+		0x391fbc86514de379,
+		0x9e2f65798f6213e5,
+		0x7319bc5bae574263,
+		0xea25b74a9c3741bf,
+		0xce9a1f2cba395f2d,
+		0xaf4ec98ed72c5e89,
+		0x86e9351ed62e7cf5,
+		0x6ab8ec921842ac73,
+		0x67a1fbe43524a9cf,
+		0x841297b76327c94d,
+		0x23dbf7e7612ae7b9,
+		0x81f3a4ca9e1df827,
+		0x9f6ad87dce412793,
+		0x39d8e52dcb1435ef,
+		0x43be7561fb18546d,
+		0x14579de32b1a63d9,
+		0x4f726ea65a1d9247,
+		0x51bc8e27672f91b3,
+		0x3d84e72a9734bf21,
+		0x38c5afba9314be7d,
+		0xce8d3f1ba216dce9,
+		0x5b93f7dbade9fc57,
+		0xfd496a1feafd1bc3,
+		0x3ead1b932cef3b41,
+		0x92ae1f743bf2489d,
+		0x1de63af54af5681b,
+		0x32fe8c1545fa9687,
+		0xf41a3c5985fb96e3,
+		0xdbfc649ba4feb561,
+		0xce4b367ba4f1c3bd,
+		0x71bfea3ed1f5e23b,
+		0xb129a84432e6f1a7,
+		0x1c9d74e76feb3215,
+		0x4d8913b65bdc3f71,
+		0xe1f9a43658af3ecd,
+		0x96d7f3e989e26d4b,
+		0x7613f4bba8e46cb7,
+		0xcb315eaed6e89b25,
+		0x28a1ebd1f4ecba91,
+		0x7c89def213bca7fd,
+		0xb358d1a543d1e76b,
+		0xabf42c1761c3f5d7,
+		0xae7d3bc98fd91745,
+		0xc9d2fe598eda35b1,
+		0x7a286bea9abc542f,
+		0x6398e5ced9cf528b,
+		0xca8f1b4fe9c381f7,
+		0x365ef78218c49f65,
+		0xb8e2c56435b79ec1,
+		0x8cbde6f654b9ac3f,
+		0xefa869d6528edc9b,
+		0xcb49fd5983c2fb19,
+		0x4d61f85bafc41b85,
+		0x62f9387dcdb739e1,
+		0xd59482afecba385f,
+		0xdb7e3ac21a9d46cb,
+		0xc637fbd32abf7639,
+		0x2458fec768c294a5,
+		0xdab865ea98c7b513,
+		0xb147c3ea94a8b27f,
+		0x387ef9bba389c1eb,
+		0x53dfea8cb18cdf49,
+		0x78e4f39ede921fb5,
+		0x97d5ca821fa64e23,
+		0x5673c8a32d963c8f,
+		0x5ef719443c784afb,
+		0xcba76e354a8d5b69,
+		0x2f86397ba68f79d5,
+		0x2fa57c4ed7a2b953,
+		0x5c1a47eed384b6af,
+		0x4ed129b1f398c62d,
+		0x923e8d42127be489,
+		0x8c512b75418ce3f5,
+		0x3fae2c998fa12473,
+		0x3f9164e87d8542cf,
+		0x28c753dbac98614d,
+		0x35e47bddcb685fa9,
+		0x9aec137ed96c8e17,
+		0xf23149bfe56f9d83,
+		0x4769ca5215629adf,
+		0xe8a1c4d32374ca5d,
+		0x937ae8654256e8c9,
+		0xbc473699816bf937,
+		0xdf81b24a9f6e18a3,
+		0x391b854dce935821,
+		0xfb1cad7fec83457d,
+		0xd5a14e91fb5764e9,
+		0x6cbe47f21c6b9357,
+		0x72a56195486d92c3,
+		0x32f74ca7687fb241,
+		0x92eb34a87452bf8d,
+		0xbf4735298254cdf9,
+		0xac4de7fcb148fd67,
+		0x234f68acbf5a1cd3,
+		0x59b278d1fd6e3c51,
+		0x978bc3532e5149ad,
+		0x84fd75b43d54692b,
+		0xe258ac954c356897,
+		0xe82cf4d7684a97f3,
+		0xc9753deba84db671,
+		0x5fc1a7ea953fa4cd,
+		0x4f6187bed562e34b,
+		0xda7cb94fe145f2b7,
+		0xa34921b7647a1325,
+		0xe8d34b276f5c4291,
+		0x96d3ae865a2b3fed,
+		0xf92a16d98c316e5b,
+		0x46ad5b2a9a236dc7,
+		0x58f169ceda279c35,
+		0xa26cf3bfe6389ba1,
+		0x2815364fe53cb91f,
+		0x5684afc2142fd87b,
+		0xa1b796865432f6e7,
+		0xc85726fba2371865,
+		0x63e2f9a98f2936c1,
+		0xe1df34ca9d1b453f,
+		0x42f6d9cbac1e539b,
+		0xca4b193fec428319,
+		0x169b5e81fb24a185,
+		0xa12ced6438269fd1,
+		0x81e647c43618ad4f,
+		0xf94b7cd65419cdab,
+		0x415832c8741fec29,
+		0xefd57a8cb4231c95,
+		0x1c8e462a9de53af1,
+		0x8ca265ecbce7396f,
+		0x17f36adfeaf947db,
+		0x753ce2621bfd6749,
+		0x8a1496b329ef86b5,
+		0xfb4dec9879f4b623,
+		0x21b356e876e5b38f,
+		0x179f54a984e7c2fb,
+		0x684bef3ba3fbe169,
+		0x34acd8fa91dbefc5,
+		0x42fe81adced12f43,
+		0xc9567f221ec43d9f,
+		0x5167f2843be75c1d,
+		0xdce96f143bea5c79,
+		0x51a78f2548dc7ae5,
+		0xe2fa571987df9a63,
+		0x5cd31b4a95d2a7bf,
+		0xc879ea3cb4e5c73d,
+		0x6843b1c1f2d7e5a9,
+		0x18ac9e5323dbf517,
+		0x251d7b9762de1583,
+		0x81a9e4f76eb143df,
+		0x63a5dfe98ec4625d,
+		0xc19ba6598bd761c9,
+		0xe8a7d26cb9ca8f27,
+		0xcb36a27ed6bc8e93,
+		0xd54be32dc49d8bef,
+		0x63b4259215a2cb6d,
+		0xcf87649323b4ead9,
+		0xa71ec2d652c8fa47,
+		0x9bf3614872dc19b3,
+		0x51ec36798fbe4931,
+		0x73ce952baeb1468d,
+		0x7b3f89eedcb365f9,
+		0xc36d5721fbc89467,
+		0x6de8a3b218ba94d3,
+		0x5d69c31548adb351,
+		0xc7abd6e5458fb1ad,
+		0x9df231c87593df1b,
+		0xdce6a78a92a4fe87,
+		0x937c85ecb2a81de3,
+		0xb673d51dcf9b3d61,
+		0x3e29a811fc7e3abd,
+		0x758d91332e916a3b,
+		0xc5af19632db369a7,
+		0x8baf35654cb7a915,
+		0x9c1dbe26569ab781,
+		0xe21cfa49847ba5ed,
+		0x6e175cbba38fd45b,
+		0x7fc3861ed492f3c7,
+		0x574cb281f2b81435,
+		0x436ea97652b943a1,
+		0x716eb9854e8b521f,
+		0xe48762143c7d4f6b,
+		0x2416abe65b816ed7,
+		0x14fd837bab839d45,
+		0x827f35bed8769cb1,
+		0x32b9f1ced568ba2f,
+		0x854c27e1f35cd98b,
+		0x7623cf92135ed8f7,
+		0x5a7c3ed764a31975,
+		0x7b543ca9829637d1,
+		0x67f321498e79364f,
+		0x2f51bd398e6c54ab,
+		0x9c7856acbc6e7429,
+		0xf5bd294fec71a295,
+		0x265c3b1fe975a2f1,
+		0xd59cba321846ae5f,
+		0x8cdb96432547aecb,
+		0x5d9baf47645bed39,
+		0xfda35988724efca5,
+		0x3afe2d4cb2854c13,
+		0xc9f27d1cbe453a7f,
+		0x4d65e21dcd3748eb,
+		0x15b3cd91fd3c6859,
+		0x594cdea21b3e87c5,
+		0xa9f1d3c65c61b743,
+		0x57cd19376853b49f,
+		0x376f41ba9857c41d,
+		0xae9f5c1cb54ae279,
+		0x6fcd328ba34bf1e5,
+		0x52f7ec9ed47f2163,
+		0x48abf3ddcd423eaf,
+		0xec8b53621f365e2d,
+		0x169ed5443e275d89,
+		0x9651db354c2a7bf5,
+		0x918dc5376a2e9b73,
+		0xd1e84bca9731a8cf,
+		0x9af34c5cb723c84d,
+		0x4f8b769ed425e6b9,
+		0xd6c472afe43af627,
+		0xb17def93254d1693,
+		0x4cd7e357613d24ef,
+		0x7d35a4198f12536d,
+		0x3e4f12698e1562d9,
+		0x4fe9a76cbd2a9147,
+		0x89e4afbdc91b8fa3,
+		0x2f7361bdc83dae21,
+		0x9264b5c1f621bc7d,
+		0xfc347d132613dbe9,
+		0xe5fd18c43416fb57,
+		0xfeb2c83875291ac3,
+		0x632e184a952d3a41,
+		0xf94be1d76cfe379d,
+		0xceb3d89badf2671b,
+		0x79561feedcf39587,
+		0xeb76f1aedaf795e3,
+		0xbc83f16329fab461,
+		0x7f9856e436fca2bd,
+		0x9a218bd656efd13b,
+		0xf5be2a1764d2ef97,
+		0xace5f3ba94d61ef3,
+		0x6493825cb2f93e71,
+		0x215af4398fe93bcd,
+		0x178e9d51fade5c4b,
+		0xe1d56a732de16ab7,
+		0x47cb61243ce49a25,
+		0xd197e3854ae6b891,
+		0xf587dbc545c8a6fd,
+		0xcb5f14e984ecd56b,
+		0x27c35afa93bfe4d7,
+		0x2af915bed7e31645,
+		0xd1865741f2e734b1,
+		0x2f7cbe5541d9532f,
+		0x214d5ac43fdc518b,
+		0x792f5d143bac5fe7,
+		0xcd2be4687bc19e65,
+		0xc63af2e878b49dc1,
+		0xea351c4a97c6ab3f,
+		0x3da8269fe4c7da9b,
+		0x53c869d1f4bcea19,
+		0x984a5cd213bef985,
+		0x7b8e35d765c438e1,
+		0xa657123981c6375f,
+		0xce974b876fa845cb,
+		0x2e3d91f98ebc7539,
+		0xafde721a9cbe83a5,
+		0x2f398a7feac2b413,
+		0xbd86713fe8a4b17f,
+		0x89f36dc21685afdb,
+		0xcd3b748325a8de49,
+		0x8a571fc5438afdb5,
+		0x537d69a985af1d23,
+		0x6712ea4a91a23b8f,
+		0x7183c6dbae8549fb,
+		0xa817e34edeb85a69,
+		0xa4657d11fc9b78d5,
+		0xf42d89b21c9ea853,
+		0xbe98fd443981b5af,
+		0xc348d2a76894c52d,
+		0x5c1342e875a6e389,
+		0x19dfe2cba489e2f5,
+		0xa39bd5edc5ad1273,
+		0xd142537cb28e31cf,
+		0xf69e3d1dce825f3d,
+		0x6e9fbc821f745ea9,
+		0x9148ebc43e698d17,
+		0xdb1ce2f54d6b9c83,
+		0xbc9df215475c89df,
+		0x14ef523ba871c95d,
+		0xfc6a852cb563e7c9,
+		0xc2f8693ed496f837,
+		0xb9845c71f48b17a3,
+		0xd584b194359d4721,
+		0xf268ae96518f347d,
+		0xad4826765f7263e9,
+		0x952137bbae869257,
+		0xe8b762dbad6891c3,
+		0xd93ae2fdc96baf31,
+		0x58f6d79cb64cae8d,
+		0xc9fb341fe651dcf9,
+		0x4a7b59d21853fc67,
+		0x6b528df545671bd3,
+		0xfb491da9847a3b51,
+		0x2d5ac648715c38ad,
+		0x7ea3b4da9e4f582b,
+		0x58f2d34dce428697,
+		0x65e392cedc4596f3,
+		0xb243cd51fc49b571,
+		0xd5b6fa821849a3cd,
+		0x49f7e164385ed24b,
+		0xfc1938576852f1b7,
+		0xdae951fcb9873125,
+		0xe36d159cb4573f81,
+		0x57c4f89ba1483ced,
+		0x25bf6dcbaf2c4d5b,
+		0x64a8b59fed2f5bc7,
+		0xea2947521e429b35,
+		0xc8e7ab554d35b9a1,
+		0xd8c3be765a37b81f,
+		0xc317ed86582ad67b,
+		0x143cf82a962cd5e7,
+		0x437659ced9421765,
+		0x8391bc6fe74635c1,
+		0xbd62a3cfe128543f,
+		0x713a56c5413a529b,
+		0x8b4ca1f65f3d7219,
+		0x736ce9d54c1e8f75,
+		0x2d54f9187b239ed1,
+		0x762193e98915ac4f,
+		0xb2d185aa9716dcab,
+		0x92f6bc8ed61aeb29,
+		0xf9436dbfe41dfa95,
+		0x6c28b316574239f1,
+		0x59c6b1387514386f,
+		0x1be45d99821746db,
+		0x7dc26bf65efa7649,
+		0xef5ba1687dfc84b5,
+		0x5621f7ea9bfea523,
+		0x387b9d4dc9e1b28f,
+		0x6f3a4c9ed7e4c1fb,
+		0x49c7fd3217e6df59,
+		0xa41ce8d324d8fec5,
+		0x63bae8c876fc1e43,
+		0xb74d15f763de2c9f,
+		0x3562e1ba92f35b1d,
+		0x9564b2cbafe45b79,
+		0xe532864cbcd879e5,
+		0x8b3a9611fbeca963,
+		0x4b85da6218cd96bf,
+		0xdb8ac52549e1c63d,
+		0x14ba28f657d3e4a9,
+		0xad132b7a96d8f417,
+		0x25d749cba6eb1483,
+		0xd2c64e3a94cb32df,
+		0x7f1c6d4cb2cf415d,
+		0x3829eb4edec25fb9,
+		0x2b769a421fc58e27,
+		0xcf79ab632ec78d93,
+		0x6e41852437b98aef,
+		0x7f95bde5479eba6d,
+		0xa21c9fd876b1e8d9,
+		0xd8e2931cb6c3f947,
+		0x347c561fe5d718b3,
+		0x359bd8a1f5db4831,
+		0xaf386dc212bc358d,
+		0xb98a15f431be54f9,
+		0x18a9bec65fc29367,
+		0x5e1d3fb87eb692d3,
+		0x76325dc98dc9b251,
+		0xd6c5782cb678af9d,
+		0x42e8fdbba68dce1b,
+		0xa391472fe5a1fd87,
+		0xa8b47ed327a51ce3,
+		0x8c5eda3545b83c61,
+		0x2c73e18652a839bd,
+		0x439ed86871ad593b,
+		0x19382ab76e9f58a7,
+		0xb98a651dceb3a815,
+		0x41a9d68feda5b681,
+		0xe6b38751f987a4ed,
+		0xef4ba282198ad35b,
+		0x78b1f6d4368de2c7,
+		0x62f31ac989b41235,
+		0x2f1ac5da97b642a1,
+		0x46c8fa3a92863efd,
+		0x8e41392dc1894e6b,
+		0x537261dbaf6b5cd7,
+		0xcd12f35fed7f8c45,
+		0x1d47fec32e739ab1,
+		0x62eb48f43c75b92f,
+		0x4a6571843a56d78b,
+		0xb71c8695485ad6f7,
+		0x1e52b73ba48df675,
+		0x9fb42d7dc79236d1,
+		0x765b213ed296354f,
+		0x392bac71f18753ab,
+		0xa7c3e9f5418b7329,
+		0x58647ce43f6d8195,
+		0xc7f5d3a54b5d8fe1,
+		0x946bfe587b62ad5f,
+		0xb8d95f687854adcb,
+		0x76f2e41cb857ec39,
+		0xf4b1e3ced649fba5,
+		0x9763b4d1f67e2b13,
+		0xc39b7ef32561397f,
+		0xd9c8e626526347eb,
+		0xbe876fdba1486759,
+		0xf69213487f3a86c5,
+		0xd4217a8a9e5da643,
+		0x1d3c64a98b4ea39f,
+		0xf3685d1fea64c31d,
+		0x9b8d4121fa45e179,
+		0x8a4ce6f21837efd5,
+		0x1e73bd85486b1f53,
+		0x7c3bd597654c2daf,
+		0xc837edaa94615c2d,
+		0x98aedf5cb1435c89,
+		0x61a8297cbe267af5,
+		0x51823a4ede2b9a73,
+		0xc9ad128fea2b97cf,
+		0xca3b54621a2fb74d,
+		0x2dcabf654a32e5b9,
+		0xc21e73498a36f527,
+		0x821c473cb84a1593,
+		0xd581bc4a964a23ef,
+		0xfa3dce6cb53e426d,
+		0xf94a5d6fe34261d9,
+		0x43b287fede148f37,
+		0x9c1b56732f168ea3,
+		0x72bfae665e39ad21,
+		0x85e93b65491cab7d,
+		0xc98eab36571fcae9,
+		0x346c7adcb912fa57,
+		0x8145632ed82619c3,
+		0x5b97d1cfe72a3941,
+		0xb843d651f41b369d,
+		0x91f56a74342e561b,
+		0x249b1fc763219487,
+		0x8e45d1776df294e3,
+		0xc9a172398df7b361,
+		0xc541dae769f7a1bd,
+		0xc4716af987e9cf2b,
+		0x4c6358bba5fcde97,
+		0xd264e91dc7e21df3,
+		0x5dceb4f328f53d71,
+		0xf9ce8d3324f63acd,
+		0xd1fa492762f95a4b,
+		0x8a14395761fd59b7,
+		0x8f692ea87edf8925,
+		0xe57b6f8bade3b791,
+		0x96fa32dcb9c4a5fd,
+		0xe7a62591f9e8d46b,
+		0x3597b8c218cae3d7,
+		0xde2418a438cdf245,
+		0x54fc962878e243b1,
+		0x3ab24cfa97d6512f,
+		0xfd431eca92d64f7b,
+		0x4b6d157ba1c95de7,
+		0xcbed312bafbc8d65,
+		0x9c163f2fedaf8bc1,
+		0x4fd7a3521dc2ba3f,
+		0xe69134832ac4d89b,
+		0x1c28abe54ac7e819,
+		0x259fc68546cbf785,
+		0x82b7cf5a96bd27e1,
+		0x1af2e79cb7c1365f,
+		0xcda357ffe2d354cb,
+		0xb264e931f1d87439,
+		0xe1897a4431db82a5,
+		0x3267a4c65fbda213,
+		0x957e1cb43b8d9e6f,
+		0x16e4d8a65982aedb,
+		0xd4c23b6878a5ed49,
+		0xb15d4e9ba697fcb5,
+		0xa7c24f9fe7ab1c23,
+		0xac9542ffe49d2a8f,
+		0x4dc3a6e325a148fb,
+		0x26f17db542c35869,
+		0xd73e128541b687d5,
+		0xad5f27b76f9ba753,
+		0x57f192d76d7c94af,
+		0xe6f732da9a8fb42d,
+		0xc2a38f4edba3e289,
+		0x8ef46c5ed896e1f5,
+		0x1f593d8549ba2173,
+		0x457fe69435792ebf,
+		0xc28adf47658c4e3d,
+		0xe583642873815da9,
+		0xe296357cb2a48c17,
+		0xed513f4dcf769b83,
+		0xcdf4a52cbc5798df,
+		0x46a91c71fa6cb85d,
+		0x268cb3721a5fd6c9,
+		0xfdc752b54b92f637,
+		0x1a4cfd865b9716a3,
+		0xac24381cb89a4621,
+		0x9f2c61bba58b437d,
+		0x5834edccb37d52e9,
+		0xfdc4635fe3a29157,
+		0x9c5173fede648fb3,
+		0xb9af75832f67ae31,
+		0x74f61dc32e47ac8d,
+		0x8561b244384acbf9,
+		0x92ab3cf6594feb67,
+		0xdec5a71cb9741ad3,
+		0xc46e581ed9873a51,
+		0xaf63d7cfe45837ad,
+		0xb152a961f36c572b,
+		0xea564822124e6597,
+		0x28bcfa37627195f3,
+		0xa672e4d98f65b471,
+		0x85d4fb287e46a2cd,
+		0xcadf41698c59d14b,
+		0xd56a137a983bdfa7,
+		0xd29853ccb84dfe15,
+		0xbd5e3791f9643e81,
+		0xde8bf3a217453bed,
+		0xb8ae6f7326384c5b,
+		0x27b1a537623b5ac7,
+		0x2f8547ca914e8a35,
+		0x3c12f76a9f42b8a1,
+		0x2ce4531bad34b71f,
+		0x47b12dffec26d57b,
+		0x9a5c18d1fa29d4e7,
+		0x8657fde21a2cf365,
+		0xf8e7a237695f24c1,
+		0x2cba5f798964523f,
+		0xb4d1e97ba736519b,
+		0x9b3dfe2ba3285ef7,
+		0xb6e4f75dc12b8e75,
+		0xfe2d967baf2e8cd1,
+		0x65a8c49fed21ab4f,
+		0xf4a615b32e13d9ab,
+		0x3ae169d54c16ea29,
+		0x5f9db3c54b1af895,
+		0x426319a8793c28f1,
+		0x6312ecdba81e276f,
+		0x7e2dba4dc71245db,
+		0x4821f73fe3167549,
+		0xba862391f21983b5,
+		0xaf192877651ca423,
+		0x41b7a8643deca18f,
+		0x16a5dc2438cd9feb,
+		0xf91b38476af2de59,
+		0x2b4e6fc878e4fdc5,
+		0x91d48c3cb8f91d43,
+		0xf4d8159dc5ea2b9f,
+		0x815ab4fdc5fe4a1d,
+		0x849e51d324f15a79,
+		0x9e18357542f378e5,
+		0x2b9e7f3651f7a863,
+		0xdf56e7854ed895bf,
+		0xbc135ef87aecb53d,
+		0x8c3f192878cfd3a9,
+		0x63197abdcad4f317,
+		0x95e1ab71fae71283,
+		0x1c8f7b4327c831df,
+		0x6cba35d326ca3f4d,
+		0x4bde13a653cd4eb9,
+		0x13657bca94e18d27,
+		0x64eb387ba1e48c93,
+		0x36ea9cb87db589ef,
+		0x9f61c45baec8b96d,
+		0x4867c5b1f8abc7d9,
+		0x86f3dbc21abfe847,
+		0xcf748db65ad417b3,
+		0x935bd7a76ad84731,
+		0x125ce4a876c9348d,
+		0xcd1fab6984cb53f9,
+		0x12fe86dcb3ce8267,
+		0xc8d7a21fe4c291d3,
+		0xb6f831cedeb5af41,
+		0x69ca5e421f85ae9d,
+		0x17fd62843e98cd1b,
+		0x7cd8e4643a9bec87,
+		0x1ca6e296578dfae3,
+		0xfe82639ba9c43b61,
+		0xe3496addc6a538bd,
+		0x392fb56fe4c9583b,
+		0x91ec42b1f2bc56a7,
+		0x58b43df323be9715,
+		0xd8c3e45763c2b581,
+		0x9e1f8ab65f84a3ed,
+		0xe8472c976e97d25b,
+		0xe58b9d476b89e1c7,
+		0x3718d64ba98bef25,
+		0x58fda17dc78e2f91,
+		0x4a1cf75fe6823cfd,
+		0xde8cb94217954d6b,
+		0x6d3af41323985bd7,
+		0xa8c1bd47629c8b45,
+		0x8a1bd757627e89b1,
+		0xbac5fd4a9e71b82f,
+		0x7e4316cbae73d68b,
+		0x6be923fdcb86d5f7,
+		0x75b128dfeb8af475,
+		0x26c89b543a8c25d1,
+		0xe97b1c36598e234f,
+		0x58e9fd47678352ab,
+		0x1482a3ccb5a67129,
+		0x62e1385cb2697f85,
+		0x95cfa76cb26a8de1,
+		0x8c4e69dbae4d9c5f,
+		0xe543a721fe51dacb,
+		0x963ab8421d64eb39,
+		0xda594c832c46f9a5,
+		0x1a23d8c76c7b2a13,
+		0xbd74f1e7695c287f,
+		0xc472aefa975f36eb,
+		0x38e5cb7ed4827659,
+		0x6d8a95ffe27684c5,
+		0xa564e7d1f179a543,
+		0xdaf78214315ba29f,
+		0x15627dc54f5eb21d,
+		0xf41dae665c41df69,
+		0x1385ce687a43fed5,
+		0xb7c3129bab681e53,
+		0xa139edfcb7482caf,
+		0x26d7193fe75c4b2d,
+		0x7d94c35fe53f4b89,
+		0xc34f2762164279f5,
+		0x193e4c276245a973,
+		0xc6ad23b6513796cf,
+		0xc8ad19487f2ab64d,
+		0xa92681f87c2ed4b9,
+		0xa7c4e38cbc51f427,
+		0x687d4bffec561493,
+		0xab16f95ed94732ef,
+		0x5e8ac7b3293a416d,
+		0x6ed2f944362b4fc9,
+		0xacd45be9852f6e37,
+		0xcea465ba95428da3,
+		0xe5263a9cb346ac21,
+		0x271f48ca9f16ba7d,
+		0xc67d58acbd1ac8e9,
+		0x8729c531fb1de957,
+		0xd1f786365d4218c3,
+		0x5fbd18a87c263841,
+		0x9f435c776a17359d,
+		0x4a7d6c5a982a651b,
+		0x21845dfcb51d6387,
+		0xda4f168cb51f82e3,
+		0x8fb7324fe534b261,
+		0x7198da3cbce39fad,
+		0x63f2e8a21df6ce2b,
+		0x4f6b85e32bf8ed97,
+		0xb7a93de548daebf3,
+		0x87fade1769ef2c71,
+		0xb2a9c56987f239cd,
+		0xaf13e9bdc7f6594b,
+		0x7ef61caed3f958b7,
+		0x5478fd9fe3fc9825,
+		0x54abd37323fea691,
+		0x8fd9264652e1a4fd,
+		0x1c82be965fe4d36b,
+		0xbfce31265bc6e2d7,
+		0x3b71d2c98bdaf145,
+		0x2be376dba9ed32b1,
+		0x32e6458ba7bd3e1f,
+		0x4d38a7c1f6d24e7b,
+		0x5b7c293216d45ce7,
+		0x4f9e7da323e98c65,
+		0x2f8e1cb653eb8ac1,
+		0xfb97523761cda93f,
+		0xc5f1b9e76fc1d79b,
+		0xb4e2c36badc4e719,
+		0xc471fa6edbc7f685,
+		0x4673e2a1f9ca26e1,
+		0xf4c7d29219bc245f,
+		0x7a31968327af43cb,
+		0x7ab4293768d47239,
+		0xd8431a6a94d681a5,
+		0xa8db625a93b78ef1,
+		0x2bc451f981ba9d6f,
+		0xf29a7c398f7e9cdb,
+		0x8e31b2a1fda1ec49,
+		0x7a8c34521d93fab5,
+		0xe8a196765dc81b23,
+		0x61f38eb547ba298f,
+		0xfd643e16569c37fb,
+		0xf71238eba5bf4769,
+		0x5d8e741dc4b286d5,
+		0x49c8db1fe2c7a653,
+		0x2b4cd36fe1b793af,
+		0xb83162c5419ab32d,
+		0xefad12643f7ed189,
+		0x18cf39754b81dfe5,
+		0xfe6934798ca51f63,
+		0x2e5a8b6879862dbf,
+		0xa7d5e48cb7894c3d,
+		0xdabfc48fe57d4ca9,
+		0x439d7c1fe49f6b17,
+		0x7456bda215b29a83,
+		0x8ced42f4328497df,
+		0x67fd2a854198b75d,
+		0x1da2cb954f6ad5c9,
+		0xbed25a6a9c8de537,
+		0x175a29edcd9215a3,
+		0xdb2a351feca74521,
+		0x19e38a21fa98427d,
+		0x963e7a13287a51e9,
+		0x4dae19b3258c6f47,
+		0xd9f718e6546f7eb3,
+		0x3a4c21da9584ad31,
+		0xdbf451ca9164ab8d,
+		0x91c7f2e98e46caf9,
+		0x31b875ddcd4bea67,
+		0xa1c984bfea5cf8d3,
+		0xbf57ec254d823951,
+		0x5bd7e3a32b7436ad,
+		0x5fe732b54a78562b,
+		0x1ed67fcba85b6497,
+		0xd2be486ba56c84f3,
+		0x5b28fe7dc46fa371,
+		0x8f4b72cfe263a1cd,
+		0x547e9bfede45cf3b,
+		0x8dfa74621f36dea7,
+		0x6519ab743c4afd15,
+		0xed3c71b76b5e2d81,
+		0x8fda539879513aed,
+		0xefdb7a8dc9634a5b,
+		0xc4319b7ed83659c7,
+		0x16b793ffe64b8935,
+		0xa3627191f34d97a1,
+		0xd865fb73234ea61f,
+		0x48b5ea376152d47b,
+		0x2bae4d376f25d3e7,
+		0x465b9e298d39f265,
+		0x7b243e5a9d5b23c1,
+		0x46e891ccba5d413f,
+		0x269ce1aed9314f8b,
+		0x3f1cb76fe8235df7,
+		0xf4523d9219268d75,
+		0xbd71e65545398bd1,
+		0x895cda27632c9a4f,
+		0x72bde347612fc8ab,
+		0x75c924fbaf13e829,
+		0x862ec45cbd14f795,
+		0xc267fb3edc3927f1,
+		0xf734c9dfea1b256f,
+		0xf18bc973291e34db,
+		0x31985ba76b217349,
+		0xe3184b58791482b5,
+		0xed68925cb748a123,
+		0x3789d2cba3189e7f,
+		0xdc1ab3f9821a9deb,
+		0x65ab72f98bfecd59,
+		0xc23e847edae1fbc5,
+		0xf6c957832df61c43,
+		0x9f1b2ce43be62a9f,
+		0xcdb497f658fa491d,
+		0x82b1ea4656fd4879,
+		0xce78f3aa94df67e5,
+		0xa8247d1dc5f2a763,
+		0x7df1a6bdc2e594bf,
+		0x5917c82fe1f8b43d,
+		0x1b9254d431fbd2a9,
+		0x86d12b954fcde217,
+		0xa9fc85d87de42183,
+		0x18abd2e769b42ecf,
+		0x4ceb57a989c73e4d,
+		0x318cde6ba6e84db9,
+		0xfd42573cb5ed6c27,
+		0x3bf4279fe4df7b93,
+		0xca43d65214c298ef,
+		0xd15a849432e4b86d,
+		0xd76b823541e7c6d9,
+		0x7dc316a65fcbe647,
+		0xce96dab87cadf5b3,
+		0x69e3f7acbcd24631,
+		0x19f5c78feac5438d,
+		0xaf2d854fe8c752f9,
+		0x64315da329db8167,
+		0xc95a136325ab7fc3,
+		0xe14cf93765bf9e41,
+		0x4cfba7e763b2ac9d,
+		0x714eba9982a5dc1b,
+		0x4bce6a2a9fa6eb87,
+		0x7fd16e8cbc8af9e3,
+		0xb4195721fcbe2a61,
+		0x8a7495332ca137bd,
+		0x1e549d832ac4573b,
+		0x8c7a6ef439c865a7,
+		0xf61d3c2987cb9615,
+		0x3d248a5a95bda481,
+		0x8c9de62ba38f92ed,
+		0x79a1f8bfe2a3d15b,
+		0xdfa2be5dce84dfb7,
+		0xe926bcf21d98fe25,
+		0xef816d754d8b2e91,
+		0x127f3ac5497c2bfd,
+		0xcf4e39b87a914c6b,
+		0xc64e187cb8935ad7,
+		0x52f97c4ed6b78a45,
+		0xd73a6c1fe47a98b1,
+		0xc8bd426fe38ca72f,
+		0x38ec6542127fc58b,
+		0xda1b82365192d4f7,
+		0x812f9c654e96f375,
+		0xa32c58987e8924d1,
+		0x2af468da9c8b324f,
+		0xb274f3edc97e41ab,
+		0x9feba26eda826f19,
+		0xdeb29451f6937e85,
+		0x7c3ba19325768ce1,
+		0x98d5f76323689b5f,
+		0xf73da9b5425da9cb,
+		0x3562d8a8716fda39,
+		0xc78d6fba9e62f8a5,
+		0x842563edce872913,
+		0xfa513b8edc59267f,
+		0x7d43ae51f96a35eb,
+		0x23ba5d621b7e6459,
+		0x6dca9b854a7183c5,
+		0x8325f6187986a243,
+		0x2af51e798456a19f,
+		0xc7269b4982479efb,
+		0x9174c32ba14bce69,
+		0x4f75d18a9b3fecd5,
+		0x36bdc2a1fe741d53,
+		0x93cf4ed21d452baf,
+		0x76a412543c584a2d,
+		0x6fae48365b3c4a89,
+		0x548d9f18793d68f5,
+		0xf36e4d8dc951a873,
+		0x76c4581cb64395cf,
+		0x91cf52afe237b54d,
+		0xce2b4811f148d3b9,
+		0x6bc21d95415ce327,
+		0x4763a2b65d4ef193,
+		0x9cf412e87c5431ef,
+		0x2e75ab398b263f5d,
+		0xa3fdc4b98a274ec9,
+		0x16eab48dc92b6d37,
+		0x293cb58ed62e7ca3,
+		0x38479db1f753ab21,
+		0xcbd628e21523b97d,
+		0xbd98c1654325c7e9,
+		0xbfae8347612ae857,
+		0xa8ce4d687e1bf6c3,
+		0x3874fdebad3f2741,
+		0x8ed4f23cbc12349d,
+		0x476bd83fec27641b,
+		0x76c592d1fb1a6287,
+		0xf5b98ae5492b81e3,
+		0x39f57c15472d9f51,
+		0x3be5a1c765219ead,
+		0xbe62ac398514cd2b,
+		0xc7fe568ba215ec97,
+		0x73c415f98cd7eaf3,
+		0xb7d5f36badfc2b71,
+		0x218fe69cb9fe28cd,
+		0xcf8645a32cf1584b,
+		0x6c93fe432af356b7,
+		0xced527154af89725,
+		0x8cd35b6876fba591,
+		0x31abc94874eb93fd,
+		0x7ea6314a93efc26b,
+		0x546c9a1cb2f3e1d7,
+		0xfd5814acbdc6ef35,
+		0x165c82b43ed82fa1,
+		0xb6af3e854bca3d1f,
+		0x3a9edb8549ce3d7b,
+		0xc4d87ef769d15be7,
+		0xe674dc2ba9e38b65,
+		0xc9f384acb5e689c1,
+		0xa697bf1dc4d9a83f,
+		0xcad5be91f2edc69b,
+		0x8f5a9ce323cfd619,
+		0x52ab3dc761d2f485,
+		0xaeb572476fc725e1,
+		0x851bc4987dc9235f,
+		0xa421e68879da42cb,
+		0x5dca219cbace6139,
+		0xb12c493ed8c17f95,
+		0x14c72dafe6b48df1,
+		0x7e82fb4214b59c6f,
+		0x58ad639323c79adb,
+		0x8e1739b652acdb49,
+		0x51f4bc3761afe9b5,
+		0x2decbf3a9fc51a23,
+		0xf981b53badb5278f,
+		0x9f65b32edca836fb,
+		0x4d6b38e1fabc4569,
+		0xc38bef5219ae74d5,
+		0xc94d7af769c1a453,
+		0x29bc8d4656b492af,
+		0xbc1fe59985a7b12d,
+		0xd5fb9a1762a8cf79,
+		0x1fd3587a918acde5,
+		0x2ed7483bac8efd63,
+		0x193f5c7fed832cbf,
+		0xc9e28a721e964b3d,
+		0xb31a7e932d874ba9,
+		0x36719af54b9c6a17,
+		0xc64a218656ae7983,
+		0x8947dc3ba58196df,
+		0x457f38bdc493b65d,
+		0x91a26c7fe286d4c9,
+		0xa5b91c61f19ae437,
+		0xf15697b5418cf2a3,
+		0xc32d8b476e9f3421,
+		0x8bdc4fe76e93417d,
+		0x94bc72e76b754fd9,
+		0x4978b25bab896e47,
+		0x27b1934dc86a7db3,
+		0x3c7e5f2ed67e9c31,
+		0x83e2acb1f461ba8d,
+		0x4dbae6921463c8f9,
+		0xf5c7b6d43285e967,
+		0xdf82ab365169f7d3,
+		0x8fdc315a9f7d2851,
+		0x5bcf6d398c6f25ad,
+		0x4316ba7dcd83652b,
+		0xa853c62fec856397,
+		0x4ac672ffea6982f3,
+		0x41defb74396ca271,
+		0xcf743b13254c8fbd,
+		0x895c1a287561ce3b,
+		0xe6b9c3198253eda7,
+		0x8472fb1ba267fc15,
+		0x2e97d4ccbf5a2c81,
+		0x4627c9ebac4b29ed,
+		0x6952fa3fec4f395b,
+		0xc8695bd21d4258c7,
+		0xe67b81f32c469835,
+		0x218476c65b4896a1,
+		0xfbc463d9874ba51f,
+		0xadbe723a954ec37b,
+		0x3a2596dcb451d2e7,
+		0x49a3b1ced274f165,
+		0x83625c1fef5832c1,
+		0x78bcf3521d493e2f,
+		0x85daefb54d2c3e8b,
+		0x6e4afc165a2e4cf7,
+		0x1d8e6f5a9b328c75,
+		0x7f41ed9cb9358ad1,
+		0x19e37d6dc627a94f,
+		0x2f75c81fe429c7ab,
+		0x968ad2b1f43ed729,
+		0x8d9ac7132431f695,
+		0xeba47269834526f1,
+		0x4298fc587e18246f,
+		0x9acf3d687e1943db,
+		0x25d617ebac1d6249,
+		0xe2f64b1dca2f71b5,
+		0x81e976aeda249f13,
+		0x25c8ab6fe6149d7f,
+		0xd6fab85325169ceb,
+		0x8b4152c4341adc59,
+		0x5ca4e8d7631deac5,
+		0xd38f71eba6521b43,
+		0xd82a69487de3289f,
+		0x81e94c7bacf6481d,
+		0xe4bc187edcfa4679,
+		0x4c372e8ed9fb76e5,
+		0xf5267b421afe9563,
+		0xe586dca547e193bf,
+		0x1b3d4ea767f5b23d,
+		0x16c4e58874f6d1a9,
+		0x8cd943a872d8cef5,
+		0xc7a843fa91dbfe73,
+		0xc52a46f98bae1dcf,
+		0xeb516981fbe23c4d,
+		0xd94bfac21de54cb9,
+		0xdfe928743ce96b27,
+		0x39278d6548ec7a93,
+		0x3fbe9c1545bc87ef,
+		0x67dce2fa95e1b76d,
+		0x5829e7bba4e3c5d9,
+		0x87d41a3dc2d8e547,
+		0x48236c1fe1d9f4b3,
+		0x38d491e764ed2531,
+		0xd3b98c754ebf328d,
+		0x458b7d376dc351f9,
+		0x56e9cfa98bc46f57,
+		0x9d3c128769b87ec3,
+		0x652de97ba7cb9d41,
+		0x974d68fdc4ae8b9d,
+		0x14b25781f5c2da1b,
+		0xc523be4214c3ea87,
+		0xf79cd2b542b6f8e3,
+		0xdc92ae3873db2961,
+		0x2eb786c65f9c26bd,
+		0xf1a65b798daf463b,
+		0x7d352f4cbdc264a7,
+		0xf7a4592febc79415,
+		0xd96a3411f7c9a381,
+		0x859da613268a91ed,
+		0xab614373258daf4b,
+		0x326fbdc65491deb7,
+		0x5de74bf983a4fd25,
+		0xb96cd1eba3b72d91,
+		0x23d184ba9e782afd,
+		0x685241fdce8d3a6b,
+		0x5da36c4feb8f49d7,
+		0x6df849a21db28945,
+		0xb1cafd743ca597b1,
+		0x89e5a1d54798a62f,
+		0xc5ea9837657ac48b,
+		0x851ecd4a948dc3f7,
+		0x17d8af2dc4a1f275,
+		0xd842fa5fe4a623d1,
+		0x6139a27ede98314f,
+		0x635b2ca21e683f9b,
+		0x691478f43d7c5e19,
+		0xd69b21f43b7f6d85,
+		0x52ec1f476a738be1,
+		0xafd576ccb8749a5f,
+		0xe47a3bfed456a8cb,
+		0xdf5c193fe46bd839,
+		0xdbe481a1f26de7a5,
+		0x8a13f46656a42813,
+		0xc3fe7d576194257f,
+		0x34fac2965f6734eb,
+		0x56e9da298e7b6359,
+		0x83b21d6a9b6d72c5,
+		0xd42879bdcb7f9143,
+		0xe7d613adc7529e8f,
+		0x789f2b4fe6549dfb,
+		0xacb97ed21547cd69,
+		0xa65c87f32349ebd5,
+		0x6e5fd1a8726dfb53,
+		0xa9c17259836129af,
+		0xc7298bfbaf65492d,
+		0x89f5371dce364789,
+		0x68a5473edc3a67f5,
+		0x5b12cde1fb4d9673,
+		0x2589f762193e84cf,
+		0xd7ec13865962b34d,
+		0xf8b94e376745d2b9,
+		0x1c5f9d7ba659e127,
+		0x17d4aeca924aef83,
+		0x6cde345a924b1edf,
+		0x56a2347cbf413e5d,
+		0x9b456ea1fe234dc9,
+		0x7948cba21e286c37,
+		0xdabc2f154d297ba3,
+		0x8ba51ed76b4d9a21,
+		0x7f892e46562fa87d,
+		0xcf4596eba732c6e9,
+		0xfa1be93dc824e657,
+		0x175ef82ed428f5c3,
+		0x8931c2b1f35c2641,
+		0x12a3cdb6514e239d,
+		0x3841f2a87f42631b,
+		0x6afb7c2a9e246187,
+		0x4153fac98b167fd3,
+		0xda762eb98b2a9e51,
+		0x8631da4a961b8cad,
+		0x4fb185ced61fac2b,
+		0xc123db71f512eb97,
+		0x4fbad9632615e9f3,
+		0xfd132a9765392a71,
+		0xe1c7b597631a27cd,
+		0x2bcfd3176efd374b,
+		0xec61f7b98cef45b7,
+		0x6247edfcbcf39625,
+		0x31a5869edbf6a491,
+		0xe64b1fddc6e792fd,
+		0xc1d86a4327fac16b,
+		0xf49c7ae324edbfc7,
+		0x263afcb876d1fe35,
+		0x935e7b2984f52ea1,
+		0x3c7ab8ea92e73c1f,
+		0x4e6ca7398fe93c7b,
+		0x2bd41aca9bdc4ae7,
+		0xf73a4c6febdf7a65,
+		0x17d5e9a32be398c1,
+		0xb8f739e329d5a73f,
+		0x4b98c76436e7c59b,
+		0x481ad5e876ebd519,
+		0x23d5ab1a94cde385,
+		0x459d61ecb6d324e1,
+		0xa5d879bdc1d6325f,
+		0x714563dfefd741cb,
+		0xfd5978621eca5f29,
+		0xc453a6832dbc6e95,
+		0xedf2b9c549ae7cf1,
+		0x1ed3caf658c29b6f,
+		0x2ca8e96876c4a9db,
+		0x5dc186ecb5c7da49,
+		0x529f6baed3cae8b5,
+		0xc9862a7fe4bdf823,
+		0x75b9fe1434c1268f,
+		0x2e4d371761c435fb,
+		0xa9e615243fc85469,
+		0x23fbde176eba73d5,
+		0x3471bdc98cbd9253,
+		0xd342a67cb79e81af,
+		0x8a67b23dc793af1d,
+		0x57cde461f5a4ce79,
+		0xfe8d25921497dce5,
+		0x469b75e3249afc63,
+		0x8ec31df6538d1abf,
+		0x65c1e9d982b14a3d,
+		0xc34be8a87fb348a9,
+		0xe28465bdceb86917,
+		0x7b82c14fedab9783,
+		0x1432d79fe97b85df,
+		0x9f867cb2198fa45d,
+		0xa6bfe3c54782d3c9,
+		0xde17b3a658a6e237,
+		0x914a53c87598f1a3,
+		0xd49a5f6cb6ac4321,
+		0x376b512ba18c2f6d,
+		0xa2d78c5cbf714ed9,
+		0x97836d11fe936d47,
+		0x3b62a4e21e867cb3,
+		0xef965d154d7a9b31,
+		0x6e852b14375ca98d,
+		0x18b26f95465eb7f9,
+		0x31e9cf4cb592e867,
+		0x65da91ecb485f6d3,
+		0xf38d916fe49a2751,
+		0x1c8d72a1f17b24ad,
+		0xcdb9ea74318e542b,
+		0x259ba7c54f816297,
+		0x29f1c5776d7581f3,
+		0xde47c9a98c579f61,
+		0x2d184fb769478ebd,
+		0xb4ad5c3a975cad3b,
+		0x5186c4acb54fdca7,
+		0x382649afe673fb15,
+		0xfae154b435762b81,
+		0x369187c5435728ed,
+		0xcfeb2188716c385b,
+		0xb7fe26498f3e46c7,
+		0x3c71f85cbe619735,
+		0x952347edcd6495a1,
+		0x81a7c6eedb57a41f,
+		0x5e3d6a41f849c27b,
+		0x9f1d48c3284bc1e7,
+		0xf597ce63273edf45,
+		0x94b3dae987642fb1,
+		0x84aefd2a94563d2f,
+		0xb539c2dba1473d8b,
+		0xcae826fa9e2a4bf7,
+		0x6b57da4dcd2e6b75,
+		0xa54c96e1fc4289d1,
+		0xc5b432621c23a84f,
+		0x4cde12743925c6ab,
+		0x1c389266583ad629,
+		0xcb512369872ce495,
+		0xd34cbe8a963de4f1,
+		0x9b6f238dc754236f,
+		0xb7234adfe13642db,
+		0x58f3297fef2a6149,
+		0x86f75b132e1b6fa5,
+		0x1ae94d365c2d8e13,
+		0x81dace365b219c7f,
+		0x8bc53da768139aeb,
+		0xd5e13b9ba816db59,
+		0x13c62aecb618e9c5,
+		0x6f2713bed61cf943,
+		0x192e453ed42e179f,
+		0x367bc1865623471d,
+		0xb14e92c982164579,
+		0xba1c64d43df874e5,
+		0xb4ced1587dfb9463,
+		0xd485129769ec82bf,
+		0x13bfd57a98efa13d,
+		0x4fe8759cb6e2cf89,
+		0xdca5f34cb6e4cdf5,
+		0xe6bd53f215e8fd73,
+		0xef5c6a7434e91bcf,
+		0x3deab25763fe2b4d,
+		0x4b91afd872f14ab9,
+		0x16d254aa9fe46a27,
+		0x79ec542cbde67893,
+		0x1f47936cbac986ef,
+		0x6ab98e11f8eca56d,
+		0xfbce978217cfb4d9,
+		0x89721b3659d2e347,
+		0xcd6b879657d6f2b3,
+		0xecd3b76a97ea2431,
+		0xd5b31cfa94eb318d,
+		0x4637da1981bc3fe9,
+		0x96f1a34cbfc16e57,
+		0x6da5e891feb47dc3,
+		0xdf38e5632ed79c41,
+		0x937fe6432bc78a9d,
+		0xf32bc6e547adc91b,
+		0x63c9be7545bfd987,
+		0xa6e3215a96b2f7e3,
+		0xd65ae82dc5d72861,
+		0x698a14cfe3c825bd,
+		0x24cae8b1f1dc453b,
+		0x8d69b7e321ce53a7,
+		0x8ce7bfa76fc29315,
+		0xad1b9c776ec5a281,
+		0xb936fca54a958fcd,
+		0xf75ca4e76798ae4b,
+		0x341e28aa958acdb7,
+		0x7d4e5f6cb69fec25,
+		0xc3ea65b1f6b42c91,
+		0xf54e9d7214a529fd,
+		0x138d9b2542c8396b,
+		0xfeb8c61651ab48d7,
+		0x7328eab76fae7845,
+		0x31a6d5e98ea296b1,
+		0x973e845cbc94a52f,
+		0xc79a845fea96c38b,
+		0xfab2319fe689c2f7,
+		0x4e16bc73289ce175,
+		0x5bacf144357defc1,
+		0xf12e43c876942e3f,
+		0xcf583ba872853e9b,
+		0xfe8d152cb2a85d19,
+		0xb7c412fbaf7b6c85,
+		0x271c49dcbc6d7ae1,
+		0x4c63db8fec71a95f,
+		0x528ed7621d63a7cb,
+		0xc86b49332b86d739,
+		0x4f1c76a43879e6a5,
+		0x423f57ba978cf613,
+		0xb86135cba58e147f,
+		0x914afe8dc58243eb,
+		0xa8271d3fe1a76259,
+		0x8729d6afef6971c5,
+		0x54b72cf21e6b8f23,
+		0xbf59c1332b4c7d8f,
+		0x8127ce354a519cfb,
+		0xde9c5af87a53dc69,
+		0x41e6b28a9846ead5,
+		0x74268f9dc769fa53,
+		0x38e6c25ed45c18af,
+		0xd72b8c5fe46f382d,
+		0x2cea38b213724689,
+		0x615cb784318476f5,
+		0xd85c17a76f4a9573,
+		0x8e7b29376d4a83cf,
+		0xa132c7f98b5ea24d,
+		0x36a7b4edca52d1b9,
+		0x57e314adc954df17,
+		0xf918a45ed746fe83,
+		0x1d8347c326481cdf,
+		0xba47dc24364b2c5d,
+		0xfd92ce37624f3bc9,
+		0x1d576fbba1526b37,
+		0x8cfd927cbf2579a3,
+		0xe9ba675dce48a921,
+		0x13576cffec2ba67d,
+		0x873ce491f82db5e9,
+		0x1ef674932b31e457,
+		0xd37548e76925f4c3,
+		0x3e2f1a998a692541,
+		0x3e67c1f9864a329d,
+		0x9be12f4ba64d521b,
+		0x527489ecb12e4f67,
+		0xea17296cbf127ed3,
+		0x75bcde61fe269d51,
+		0x63f194a32e168bad,
+		0xef658a954d19ca2b,
+		0xebf61275481eda97,
+		0xd1bf65387921e8f3,
+		0x7d19b52dca352971,
+		0x29d36afcb51726cd,
+		0x189cd64fe51a364b,
+		0xb982e5a1f21d54b7,
+		0x1d8b3457631f8425,
+		0xd8f36ab65ef2a391,
+		0xfce963d65be491fd,
+		0x9a5861e549e6af5b,
+		0xca2be43656f8bec7,
+		0xa7c24f1a97fbed35,
+		0xe7f435aa95defca1,
+		0xfba2c41ed6e43b1f,
+		0x56ac48e214f53a7b,
+		0xdb96eac432f849e7,
+		0x96ad8fe541fc7965,
+		0xc4937eb65fde87c1,
+		0xe52fb7198cd1a63f,
+		0xfe6a57298ae3c49b,
+		0xa5349fbdcae7d419,
+		0x378d4ac1f7dae285,
+		0xe526d87437cbf2e1,
+		0x2f9d7ec547ce215f,
+		0x8c3549a765d23fab,
+		0x2a4b761983d65e29,
+		0x6941fe5ba1e86d95,
+		0xfeac13998eca7bf1,
+		0x41d72c6a9cbd8a6f,
+		0x13cd2841f9c1a8db,
+		0x4f9eb6521bc3d849,
+		0x3ae7f69329c6e7b5,
+		0x1d3798e658caf723,
+		0x1d498ce876bc158f,
+		0x9a6cfe3985ae24fb,
+		0xf1574e9dc4d25369,
+		0xf47b52afe1c672d5,
+		0x1524ca6fefca9153,
+		0x65df2e321d8a7e9f,
+		0x42d6acf43b8c9e1d,
+		0x27c813d54ba1cd79,
+		0x5a783c476893dbe5,
+		0x6e2d538a98a7fb63,
+		0x7f86ea5dc5a819bf,
+		0xd3c4fb1fe5ac293d,
+		0x5934cf6fe2bf37a9,
+		0x8e6b73a324c36817,
+		0x8ce61d5541c59683,
+		0xf187a9c43e9784df,
+		0x812fb7476e8ba35d,
+		0x937eda476a7eb2c9,
+		0xde92b31dcba2e137,
+		0x87e2fdadc784ef93,
+		0xe13486adc5861def,
+		0x863da7c215892e6d,
+		0xe36894f3247b3cd9,
+		0x1cf784e7629f5c47,
+		0xf95b246981927ab3,
+		0x693e17acbf869a31,
+		0x5c6891acbe56a78d,
+		0x571a846edc5ab6f9,
+		0xa5d34611fa8ed567,
+		0xc85afd132a81f5d3,
+		0xa1657e354ba72651,
+		0x3e9f1a26568723ad,
+		0x4c2aebda968a532b,
+		0xa9658d1cb38d5197,
+		0x18dbe32ba17d6fe3,
+		0xd3fa927dcf739e61,
+		0x94e83a71fe548cbd,
+		0x8ae9b5f21e57ac3b,
+		0xfce6d4132c49dba7,
+		0xdf81b235496dea15,
+		0x6dbc854a9b732a81,
+		0xfe52c74ba86427ed,
+		0xf2ba465ed468375b,
+		0x7264ad9fe26a45c7,
+		0xe35d1cb1f17d8635,
+		0x7a12de44326f84a1,
+		0xf69d21465e64a31f,
+		0x25ab97d76e45c17b,
+		0xe37f9a865a36bfd7,
+		0x91fc4e59893ade45,
+		0xde8b721a974cfdb1,
+		0x9c42a17ed8613c2f,
+		0x35d76ec1f6543c8b,
+		0x582f7e3215364af7,
+		0x368bd255423b6a75,
+		0x12ac78b7624c78d1,
+		0x3fc1b5876d2e974f,
+		0x97d5fc498e32c5ab,
+		0x185f7d3cbc36d529,
+		0x5e81b62edb28e395,
+		0xca87ef2ed84ae3f1,
+		0x469fc514394d126f,
+		0x5f798347685241db,
+		0x12bf5d3987245f39,
+		0x145edfba93276ea5,
+		0x641289dcb24a8d13,
+		0xa8e371ca9e1c8b7f,
+		0x9c14f2ebac1f89eb,
+		0x41c37261fc12da59,
+		0xa53cef432b14e8c5,
+		0xef2b93d65b19f843,
+		0xc87de396582b169f,
+		0x46dc1b5a982e361d,
+		0xd1467fadc8215479,
+		0x5629834dc61473e5,
+		0x51c4fdbfe4189263,
+		0x74de86fdcde781bf,
+		0xe4f97ac21cea9f2d,
+		0x3d58b1f32afdbe89,
+		0x9371dfc549e1dcf5,
+		0x9ab5fd1769e4fc73,
+		0x465f279987e61acf,
+		0x5c29768cb6f92a4d,
+		0xa95836fdc4fd38b9,
+		0xfc91a4bed3ef5927,
+		0xa5ecd86214f28793,
+		0x64bd1ef431d485ef,
+		0xc486ae143fe8a46d,
+		0x12dea4865ceab3d9,
+		0xc5a431298aced247,
+		0x5b61d4eba9d2f1b3,
+		0xe8c6a24edae74231,
+		0xdc94b53fe5c62f7d,
+		0xac357d6215c83de9,
+		0xa5931db323ec4d57,
+		0x3f41bd7652df6bc3,
+		0x71bf2da982e39b41,
+		0xd1c427f76fc4a89d,
+		0xbef5628a9ed7c81b,
+		0x291c75bfeacbd687,
+		0xda3541e1f8acd6e3,
+		0x9dac3eb54bd32761,
+		0xdb91c42438c524bd,
+		0xef5b87d767d8543b,
+		0x3a9521d984db52a7,
+		0x3ce726dba4cd8215,
+		0x4268e9fba2be8f71,
+		0xdf5ce87baf928ecd,
+		0x194b3261fe95ad4b,
+		0x642acef21e96dcb7,
+		0x8acb69e43c9aeb25,
+		0x5da89fe5478dfa91,
+		0x1ef8bac767a128fd,
+		0x2357bfeba7c4386b,
+		0x71b68afdc3b846d7,
+		0xd6a1b52fe2cb8745,
+		0x674923b1f2ad85b1,
+		0xd549ab1431ae942f,
+		0xe1f5da754f93c28b,
+		0xcb37f1254d95c1f7,
+		0xab3d6f854b98df65,
+		0xdbf94e176879fec1,
+		0x856329fba78c1d3f,
+		0xcdb482afe6813d9b,
+		0x29e37b61f6a45c19,
+		0x6b32df5213a76b85,
+		0x79153ad5438a79e1,
+		0x6b3582e5417c985f,
+		0x19627d354e5f96cb,
+		0x671b9febae82d639,
+		0xa57d43ccbc86e4a5,
+		0xb67c584edb89f513,
+		0x8b197c2fe98b137f,
+		0x2dca8572187d32eb,
+		0x7c96da8548a26159,
+		0xb8e3419874836fb5,
+		0x4cdf351ba4978e23,
+		0x2b617e9ba1597c8f,
+		0x6f29b1d87e4c8afb,
+		0x6be8f3cbad4fcb69,
+		0x85297cd1fb62e9d5,
+		0xc3f845a21c76f953,
+		0xbaf267943b5817af,
+		0xf96a4726596b372d,
+		0x347e5c2ba76e3589,
+		0x3c92a8fcb68174f5,
+		0x67a3b5eed2859473,
+		0x1869ca3ed15682cf,
+		0xbc38f52fef59a14d,
+		0x872b6d921e3cbfa9,
+		0x71289b443b4fce17,
+		0xa4cf7be76b52fd83,
+		0x59b241f879451bdf,
+		0x2bed356ba9482b5d,
+		0x4139cabed64b3ac9,
+		0xf754182ed64e5a37,
+		0x9cb74e61f45178a3,
+		0x9c7bfde43465a821,
+		0x3b9265754136a57d,
+		0xef129c665f28b4e9,
+		0x23fe16798e2cd357,
+		0x92317ef98a4fe2c3,
+		0x2ef736cedc762341,
+		0xc8592affea46319d,
+		0x1f84ae5ed6273ef9,
+		0xda58b942182b4e67,
+		0x7ae51fb5452e6cd3,
+		0xc79ae65986429c51,
+		0x9a25d148712389ad,
+		0xf32dc5198f16c92b,
+		0x312fad4cbe1ad897,
+		0x6d52187dca1bd7f3,
+		0x4a5f7c9eda2ef671,
+		0x139e5cd54a1325cd,
+		0x89da45c76a17354b,
+		0xc1d37247681953b7,
+		0xfd2c698ba71c8325,
+		0x9e8d3c2cb53e8291,
+		0xd6bc8f3ba3218fed,
+		0x2a458eda9df2ae5b,
+		0x136bc98feaf4bdc7,
+		0x48fe5ac21bf8ec35,
+		0x56fdec4438e9fba1,
+		0x762af34658ed2a1f,
+		0x89feadb768f1397b,
+		0x2f548ebba6f348e7,
+		0x3827ef6dc3f97865,
+		0x19a276ced3fa86c1,
+		0x39274baed1ec953f,
+		0x61cbe98321efa39b,
+		0x978ac2b65fe4d319,
+		0x5a1237c54cd6e185,
+		0x7a8216e659b7efd1,
+		0xade3c96878ca1e4f,
+		0xe219fdb986cd2eab,
+		0x6aef815dc7e15d29,
+		0xb87dc161f4e36c95,
+		0xbe4cfda324d67af1,
+		0x9d2ec7b432da896f,
+		0x351d6ca541ec97db,
+		0x61d849365ebfc749,
+		0x1d25c3f98dc2e6b5,
+		0xdf457e2babc7f623,
+		0x31b2ce9edac9148f,
+		0xbdf3417fe7ca23fb,
+		0xe968325218ce4269,
+		0xeac28db548c271d5,
+		0xa92ce4f876c58f43,
+		0x31b9f5e762b57d9f,
+		0xbdfe3c5872b89c1d,
+		0x1b7d2a976f8dbc79,
+		0xd2ab473a9b8fcae5,
+		0xd26b4c7fecb2fa63,
+		0x4b61a8d32ca518bf,
+		0x8a5b7cf54ab9283d,
+		0x6c8f3a9547bc36a9,
+		0xb7dca4ea98be5617,
+		0x8ac7ef6cb6c19583,
+		0x913c87acb2a483df,
+		0x9251fa6fe1b7a25d,
+		0x6dca312fef78b1c9,
+		0x8d5e7ac21e8bcf27,
+		0xd5c4b1f32b7fde93,
+		0xdc347b865a831cef,
+		0xd6394c887a952c6d,
+		0xc1967e5ba6873bd9,
+		0xa573f69ed69c5b47,
+		0xa49782eed48e69b3,
+		0xa589e631f5b2a931,
+		0x2dcaf8921293a68d,
+		0xb61c8ef43186b5f9,
+		0xab5e49143f8ad467,
+		0xbc3829a76c7be4d3,
+		0xca3bd21a9b8ef351,
+		0x72f3a61dcb8432ad,
+		0x93d6cfafea97512b,
+		0x368b4f7fe5694f87,
+		0x62c8d5f2157a6de3,
+		0xf41e6754347e8d61,
+		0x39bdac1653618abd,
+		0xb7365c298174ca3b,
+		0x2e15f3798f45d9a7,
+		0x248ef53cbd6ae915,
+		0x9bef6a4edb5cf781,
+		0xdf6b952dc95f16ed,
+		0xe9f5b4721c82365b,
+		0xc36d17432a8654c7,
+		0x4cd9f257697a8435,
+		0xf163a45a956c83a1,
+		0x6ce2718ba46d921f,
+		0x493f512dc251af6b,
+		0x76f2de3baf43bed7,
+		0x4da81231fc37ed45,
+		0xf39dc7b32d48fcb1,
+		0xda1c27b54a5c1b2f,
+		0x3f64b876594f2a8b,
+		0x145d62f98a5249f7,
+		0xa234b17dca346975,
+		0x8bd6fe5dc54987d1,
+		0x7e6fc93ed23b964f,
+		0x6485a3e1f13e94ab,
+		0x9bad26e65361d429,
+		0xa14db9376f34e295,
+		0xda49eb376c47e2f1,
+		0x4c5bd3a98c4a216f,
+		0x9f5a46e8783a2fcb,
+		0xf69c752cb82f4e39,
+		0x65b19cdfe8326da5,
+		0xec716831f7468c13,
+		0x58c367e214268a7f,
+		0xb1c253f5432a98eb,
+		0x5e9ba787612ec859,
+		0xeb5fcd498f21e7c5,
+		0x214cb69bad15f743,
+		0x67a95f1cbc27159f,
+		0x58d71c2feb2a351d,
+		0x37954811fa1d4379,
+		0x64cb2d74391f62e5,
+		0x6849a2c87a249163,
+		0x7ec8da1765147eaf,
+		0x53de491984179e2d,
+		0x1f3a94d8721abd89,
+		0x42d1ce687deacbf5,
+		0x13ad748a9adfeb73,
+		0x465bf28edae319cf,
+		0x8a3d7c621bf6294d,
+		0x56a714c32af837b9,
+		0x2bf9ced549fc5827,
+		0x75a1fb6985fe7693,
+		0x6f3ed8aa95d184ef,
+		0xd987265cb2f4a36d,
+		0xe45382adc1f6b2d9,
+		0x26fe7badcfead147,
+		0x6e427fd21ecbdfa3,
+		0x86d792154abdfe21,
+		0x1c3e6b965ac32e7d,
+		0x38e4f52768d53ce9,
+		0xe4f3b16ba8e94c57,
+		0xfb15876a95eb6ac3,
+		0x315f864dc5de8a41,
+		0x23145ce1f3e1a79d,
+		0x37d859f323e4c71b,
+		0xef5a2cd431e6d587,
+		0x83f1d2554fb9d5e3,
+		0x51a89de87dbcf461,
+		0x4aebfd6879af13bd,
+		0x4be2d68dcad4523b,
+		0xa1f49cbfe9d651a7,
+		0xfe7a248ed5b86ef3,
+		0xd568971325cb8e71,
+		0x3de4f593239e7bcd,
+		0xfa8b514763d1ac4b,
+		0x9d4ae72761c3dab7,
+		0xa3dc21e98fb7ea25,
+		0xa1f342d87dbaf891,
+		0x517fbe2dca9b17fd,
+		0x9ca876ffe9af276b,
+		0x674ea2c21ab245d7,
+		0xe7a6bd132ac78645,
+		0x4c6afe7656c984b1,
+		0x1845b6c875ab932f,
+		0xd58bc318739ea18b,
+		0x48eb5d3ba291bfe7,
+		0x46f3c28cbf93de65,
+		0x4db23f8feb86fdc1,
+		0x47b8cea32d891c3f,
+		0x2c97d5b43a7d2c9b,
+		0xc6e8ad165a8f4b19,
+		0xf3c1ea2879b26a85,
+		0xd32e8c4cb6a578e1,
+		0x3a2eb9fdc3a8975f,
+		0xc1482b3fe27a95cb,
+		0xde7c6a91f18ec539,
+		0xdb3c7f654291e3a5,
+		0x2683a9c65e96f413,
+		0x312a9b765d98127f,
+		0x341f28a76c7931eb,
+		0x14fc53e98a7c3f49,
+		0xc57f4bdba87f4eb5,
+		0xdc83726fe7948d23,
+		0x571dac6fe3647b8f,
+		0xbd4fe792135689fb,
+		0x679d8cb4325bca69,
+		0xde82b5c5416ec8d5,
+		0x164af35a9e71f853,
+		0xa2d7f15a9d7416af,
+		0x21a34e9cbc78362d,
+		0x659a3d7fec6b3489,
+		0x5cab9f2fe97c63f5,
+		0xf35247b21a6f8273,
+		0x6937cdb5476381cf,
+		0x6be51d2874659f3d,
+		0x359b2f887246bea9,
+		0xe57c1d3a925acd17,
+		0xbe36dc8a9f4dec83,
+		0x97ae8cdcbc521adf,
+		0x63a17241fc642a5d,
+		0x856c2b921d4638c9,
+		0xfaec1d632c4b5937,
+		0xe81caf26594d67a3,
+		0x54fc7beba85f9721,
+		0xd359ce7cb652a47d,
+		0x7a4b316dc245b3e9,
+		0x8142ba6fe149d257,
+		0x73f2684edf4ae1c3,
+		0xf3a659732d4cef31,
+		0x9db3ca265c412f8d,
+		0xac43f1876b243df9,
+		0x8ebd4afa9b284d67,
+		0x8c3bf57ba8296bd3,
+		0x12a853fdc73d8b51,
+		0x3ae48b1dc42f78ad,
+		0xeb126d81f543c82b,
+		0xaf45d6b21324d697,
+		0x6dcea1b65128d6f3,
+		0x52e8df976e2bf571,
+		0x29ead5b87b2e14cd,
+		0x658c1b3bad21534b,
+		0x284a91fedc1452b7,
+		0xaf4b675feb398125,
+		0x54f2da1fe62a7f81,
+		0xab318e53251a7ced,
+		0xdb548a24341f9d5b,
+		0x19fb43576412dbc7,
+		0x712e38ca9216eb35,
+		0xafb63d587de6f9a1,
+		0x9c5eadb98cea291f,
+		0x6f95a14dcafd287b,
+		0x7a3f561dc9df36e7,
+		0x4fa5c8621bf28765,
+		0x5fd8a46439f685c1,
+		0xb49d136656e8943f,
+		0x13724e5764fca29b,
+		0x5ae7213984fec219,
+		0xf489c7dba2e1df75,
+		0xe7b162aa9cb4fed1,
+		0x14a35c2febc71d4f,
+		0x27deac421ce82dab,
+		0x5b96d7243aed4c29,
+		0x1ac967d438df4b95,
+		0xaf2d5b4768d379f1,
+		0x9bcfe87ba5d4986f,
+		0x2594df7ba3e796db,
+		0x8ba2763ed2ebc649,
+		0x48e63cd1f1ced4b5,
+		0x3d1c7f2764d1f523,
+		0xe9b17d354ec5138f,
+		0x3be46d765dc732fb,
+		0xe91863b87cdb4169,
+		0xbcf12d9878ab4fc5,
+		0x3fd5cb1ba8bf7e43,
+		0x8f742a6ed5b27c9f,
+		0x92ac7d31f4c59b1d,
+		0x5b3e9f7213d6cb79,
+		0x5179fa4432bac9e5,
+		0x29fad6e651bde963,
+		0x5472d3e76ea217bf,
+		0x7c28635a9eb5273d,
+		0xf92d6a1cbdc735a9,
+		0x87ac63ffeacb6517,
+		0xc182a571f9bd7483,
+		0x4e6b83f2169e72df,
+		0x51fc328547b3a15d,
+		0x1e326c965384afb9,
+		0x713cb28763a8ce27,
+		0xfeb146a8718aed93,
+		0xa28fb5387c6bdaef,
+		0xe5b4f93dce912b6d,
+		0xe68dc431fc843ad9,
+		0x8d2b5c421db85a47,
+		0xdb5169432c9a68b3,
+		0x91cd7fe657ad9831,
+		0x81493577647f958d,
+		0xf5d4b97ba582b4f9,
+		0x398d7b5dc2a5d367,
+		0xb3e8654dc198e2d3,
+		0x63418ebede8bf251,
+		0x9546cea43f7e21ad,
+		0xa824c7e65d824f1b,
+		0xa7f8d3465c934e87,
+		0x8abc76965a876ce3,
+		0x8fe129acb97a8c61,
+		0x6298b4eba45c79bd,
+		0x591c72eed46fa93b,
+		0xb8c659e1f362d8a7,
+		0x713bced32396e815,
+		0x85f2b6a54279f681,
+		0x3158a7d54f6a15ed,
+		0xd4172cf98d7e245b,
+		0xeb8c936bad8153c7,
+		0xf38ce24edc968235,
+		0x2bc8d9afeb6782a1,
+		0x3d815badc5487efd,
+		0x7a284592154c9e6b,
+		0xc43deba3234facd7,
+		0xbc3eaf198372ec45,
+		0x6a2c71398265fab1,
+		0xa28f54ca9e581a2f,
+		0x972e3fbbae4c298b,
+		0x84936a5dcb4d38f7,
+		0x63e29c51fc416875,
+		0x159d4b632b5486d1,
+		0xab397c832a37954f,
+		0x13eadc66564893ab,
+		0x197543f9865dc329,
+		0x72e438dba34fd195,
+		0x73fcd89ba253dfe1,
+		0xa4d8691cbd361e5f,
+		0x8b7e69a1fd372ecb,
+		0xeac935421e2b4d39,
+		0xb962d8c43b2e4ca5,
+		0x3b2a14887c528b13,
+		0xd3c4e7276a23897f,
+		0x1b53478ba62597eb,
+		0x958cba4ed42ac759,
+		0x9f826cafe32bd6c5,
+		0x612acb7ed12fe643,
+		0xec8329b76253149f,
+		0xbd17e5a76f27341d,
+		0x2f4379b76e1a4279,
+		0x9c264fb98c2b61e5,
+		0x74c1d65a9a1d7f53,
+		0x3caf725cb8217daf,
+		0xc45d239fe7149c2d,
+		0xca182b91f415bc89,
+		0xf8b1da332418caf5,
+		0x1e7f8c66541cea73,
+		0x94a2db66521de7cf,
+		0x982eb5c87ef1284d,
+		0x2d35f1a98df436b9,
+		0xcd685e4cbcf95627,
+		0x92b5167edafb7593,
+		0x28793b5dc6db73ef,
+		0xf2ac9bd217ef926d,
+		0xd8923bc546f3b1d9,
+		0xfb13942764e5cf37,
+		0xf4cd297762f7dea3,
+		0xd27a13e983eafd21,
+		0x17fad9c98fbe1c7d,
+		0xd7126bebacd13be9,
+		0xb175e9c1fce34b57,
+		0xac3b4ef21be769c3,
+		0x514ad6843aeb8941,
+		0x8c61294435ec869d,
+		0x869d2a4875dfa61b,
+		0x2fe367cba5e2d487,
+		0x4f1d3e6ba2c6d4e3,
+		0x3d81ebfdc2d9f361,
+		0x5f1b746fefca12bd,
+		0xf95a3d732fce413b,
+		0x7df186243dc14f97,
+		0x4d3fbec65ab46df3,
+		0x1dab3e965ac68d71,
+		0xa278ce1765b87acd,
+		0x3e26b7f985cd9a4b,
+		0x2697a3eed3afc9b7,
+		0xeb13d941f4c3e925,
+		0xe48b1a9323c5f791,
+		0x9f235ae542b816fd,
+		0xf821b3654fac256b,
+		0x4adcb1576cae34d7,
+		0xe325df9badc18345,
+		0xa7e8529edac583b1,
+		0x28694faed8b7912f,
+		0x635b9c8fe4a89f7b,
+		0x72b38a42148bade7,
+		0x1bfa48d3239fcd65,
+		0xe9b21df76493fbc1,
+		0x415cdb7982a61b3f,
+		0x479d52876f872a9b,
+		0xa93c61ecbe8c4a19,
+		0xb5943c8edcae4985,
+		0xd43b5a21fba287e1,
+		0xb82f35e21ba3965f,
+		0xfda14733278694cb,
+		0xb83724d6568ac439,
+		0xb25adc88748cd2a5,
+		0x7849d32ba59fe213,
+		0xa6d3f94dc3a4217f,
+		0x689fd2ebae752fdb,
+		0xb4cd1a61fd783e49,
+		0xb8d953a21e7a4db5,
+		0x92d17f854b8e7c23,
+		0xf72189354b617a8f,
+		0x4f32cba6576398fb,
+		0x9f85acecb475c869,
+		0x5d19c37cb369c7d5,
+		0x14c729eed28ce753,
+		0xe13f859dc16de4af,
+		0x1e453cf76194352d,
+		0x1ac8bd932f764389,
+		0x7be91df54d7962f5,
+		0x316a782a9d6c8173,
+		0x3a412bc8784c6ebf,
+		0x25f6ed4cb8619e3d,
+		0x74f286bfe653bda9,
+		0x8c926e51f456dc17,
+		0x7d89a5e21459eb83,
+		0x41fb9284324ae8df,
+		0x3b426fc8726f195d,
+		0xe951bca98f5237c9,
+		0x7aec19fcbe465837,
+		0x6e58273dcd4976a3,
+		0xa9452c6feb5c9621,
+		0xdc62e341f84e937d,
+		0x84be6d943851b2e9,
+		0x7fb6d4c43964d157,
+		0xbe831a587546dfb3,
+		0xc2d6bf998459fe31,
+		0x5ea7db4a924b1e8d,
+		0x4ce17f398d3e2cf9,
+		0xc7a49f2ede324c67,
+		0x7d8e6941fc256ad3,
+		0xe1f785432d398a51,
+		0xeb92f5a4392b87ad,
+		0x49cdf3a6583ea72b,
+		0xfe69547ba831d597,
+		0x167bde2ba724d5f3,
+		0x153498edc538f471,
+		0xa17935cfe24913cd,
+		0xf324a97fef1d324b,
+		0xa84d65b43e2f41b7,
+		0x32ed91876d237f15,
+		0x7bd4ce276c257e81,
+		0xfcbd92e659167bed,
+		0xd4731a29871a9c5b,
+		0xef82d65a951ebac7,
+		0xb7a98f3ed721ea35,
+		0x491f2c5fe524f8a1,
+		0x8c791b254537281f,
+		0xf1786d36531a267b,
+		0xfdca35154dfb35e7,
+		0x3712dca98cfe7465,
+		0xf12eb46a9bf284c1,
+		0x7fa3469cbae5923f,
+		0xe628f93ed7f6a19b,
+		0x3d68a9bdc4d8aef7,
+		0xb9726c4214fbce75,
+		0x8f6dace434bfecd1,
+		0x6a9528d875e31c4f,
+		0xfbe38a6871f52cab,
+		0x2396eb487fe84b29,
+		0x67a15c398dec4a95,
+		0x6fad8e1cbacd68f1,
+		0x86dac92fead1976f,
+		0xc35de8f218e395db,
+		0xa4169be328e7c549,
+		0x53d1b8c546e9d3b5,
+		0xb76cd9e986dce423,
+		0xb2e56ad873bde18f,
+		0xfd5768eba2d431fb,
+		0x76d2c3fcbec63f59,
+		0x7a589431fdb84ec5,
+		0x83b29fd21ecb7d43,
+		0x15e3a9f328ad6b9f,
+		0xea7df84658c29a1d,
+		0xbe24c9d656d3ca79,
+		0xc21f68aa94b6c8e5,
+		0x2a35916cb4cae863,
+		0xf7ab318dc29ae5bf,
+		0xb9a4326fe2bf163d,
+		0xe4a7fc2651d234a9,
+		0x721948e43fc86417,
+		0x9738f2e65eca7283,
+		0xef7ba2165b9a71df,
+		0x197eba27679c8f4d,
+		0x649a715dc681aeb9,
+		0xa729b45fe6a4cd27,
+		0xe4c532a1f4a6ec93,
+		0xfe643bd21387d9ef,
+		0x391fb675439c1a6d,
+		0xe6849c2651af28d9,
+		0xa7d946f98fb25947,
+		0x578bc6da9ea567b3,
+		0xa492315dcdba9731,
+		0xf1784bafea7b948d,
+		0x6a287b1fe67da3f9,
+		0x27c86b5439a1d267,
+		0x7b8d5e354795e1d3,
+		0x154c9b776597ef41,
+		0x5b2eca8763781f9d,
+		0xb8364a5a928c3e1b,
+		0xed2c853bae6f3d87,
+		0x7e24b35dcd826be3,
+		0x93cd51e1fd958b61,
+		0xe5b93f721c5678bd,
+		0xc91fa533296ca83b,
+		0x9c418fd4385ec6a7,
+		0x579fd18ba892e715,
+		0xac6e542cb694f581,
+		0xc84576dcb38714ed,
+		0xb1c8f4afe18a235b,
+		0xc31afd5fef6d42c7,
+		0xb9846cd32e8f7135,
+		0xd3e2ab954d637f91,
+		0x9d1f7b643a547cfd,
+		0xa67d3bf65a479d6b,
+		0x1a534b798649abd7,
+		0x27ed956ba76edb45,
+		0xbaf3682ed562f9b1,
+		0x5d4f27cfe475192f,
+		0xb3e24fa21356278b,
+		0x83f5a275415a36f7,
+		0x3e7d65998f3d4675,
+		0x925e71698c4f75d1,
+		0xd12c549bac62934f,
+		0x2c69a4fedc4592ab,
+		0x95cb1f3fea58c129,
+		0x215384ffe63acf85,
+		0xeba5f683264bcde1,
+		0x67a9f5e547621d5f,
+		0x4feb6d5873542dcb,
+		0x7c2596fba1574c39,
+		0xe56ca7d98f294ba5,
+		0xfc17234cbe4d7a13,
+		0x29da568dcb2e687f,
+		0xad952831fa3296eb,
+		0x3b65fa821b24c659,
+		0xc7624ae43928d4c5,
+		0xceb3f1a8782be543,
+		0xf69dc3b8753ce29f,
+		0xa3615f7cb762431d,
+		0x79e1c5fed2354179,
+		0x58df349cbe174fd5,
+		0x1e36a851fd1a7e53,
+		0x514369f32d1b6caf,
+		0x3cb12ef54a1f8b2d,
+		0x6e32d9165a12cb89,
+		0x8163de587814c9f5,
+		0xe685c71cb618e973,
+		0x97cf31dba419e6cf,
+		0x962b71adc52e174d,
+		0x479dab11f42135b9,
+		0xbfae563983146527,
+		0xce741bd32ef67493,
+		0x983b21554bd872ef,
+		0x87bda4265afb916d,
+		0x7c12683656ed8fc9,
+		0xcf7de82ba8f1ce37,
+		0xca4895fcb6f4eda3,
+		0x1562bfeed5e7fc21,
+		0x74edacf324f91b7d,
+		0xd857e92543fc2ae9,
+		0x485d29e761ef3a57,
+		0x9f2e1bd87fe268c3,
+		0xd817f9ebade69841,
+		0x85de961babe7859d,
+		0x7bc683aed8eca51b,
+		0x9c1edb61f6dec387,
+		0x6eb251d548c1d2e3,
+		0x869e57d548d5f261,
+		0xb7f9d15765e721bd,
+		0xb45c132874d93f2b,
+		0xaed92f6981dc3e97,
+		0x47a652c98dae5cf3,
+		0x6d4a359cbed38c71,
+		0x52849cd1fab479cd,
+		0x872cde321cd7a94b,
+		0x548abe7326dac8b7,
+		0xb1736a9547bed825,
+		0xac2e34d987c2f691,
+		0x6184fdaa96b415fd,
+		0xb6a3194dc3d8246b,
+		0xc3674f9fe1ca43d7,
+		0x5b8a21cfefbd7245,
+		0xc69e7da43eaf72b1,
+		0xca27e9154ca38e1f,
+		0xfe5b86443ca49e7b,
+		0xe7286da54896ace7,
+		0x47baf219879adc65,
+		0x8abf542a958deac1,
+		0x37629f4ed6b21a3f,
+		0x1ed5a891f3c4289b,
+		0xc38fd49323c74819,
+		0xbe581a4431cb4785,
+		0x5b1e62f54f9c76e1,
+		0x1c53d4e76c9e845f,
+		0x84bdfc187d8293cb,
+		0xb89acf2edba6c239,
+		0x56baf78fe798d1a5,
+		0x9ef78b5ed579cef1,
+		0x7a5f2ce2147bed6f,
+		0x518ecaf545812edb,
+		0xcd1ea32872a53d49,
+		0x3419fd7981974cb5,
+		0x7648ad5a9f8a7b23,
+		0x2c79febbad5c698f,
+		0x9a8fb36dca5e87fb,
+		0x7c426851fb82c769,
+		0x9dbfa2c21a84c6d5,
+		0x57e193832a89e653,
+		0x93e26da54569e3af,
+		0x65a7124a968e142d,
+		0xd6e175fdc5a14289,
+		0x6953e4bdc29461f5,
+		0x851a934dce587f63,
+		0xb675934fec486dbf,
+		0x98de2c421e5b8c3d,
+		0x95fdb1332b4f8ca9,
+		0xca4fed765a63db17,
+		0xba8e1d487965ea83,
+		0x5bd6e4fa9546e7df,
+		0x2af8675dc46b185d,
+		0xb2fac58ed35e26c9,
+		0x38756b91f2915637,
+		0x5c38b763218475a3,
+		0x265bc3d54f689521,
+		0x48c32ae65e4a927d,
+		0xd51b32a76b4ca1e9,
+		0xfe569439893ebf47,
+		0x74b9e2fba852deb3,
+		0xe8a4625dc856fd31,
+		0x5193cde1f5471c8d,
+		0xc375fb42154a2bf9,
+		0x4a879fe6524e3b67,
+		0x76fb2949825169d3,
+		0x192e368baf348951,
+		0x43a6857a9e2586ad,
+		0xba614fedcd39a62b,
+		0x165f384fea2dc497,
+		0x85eb63ced82ec4f3,
+		0xcfe986532a54f371,
+		0xed86b4c6584612cd,
+		0x4cdae2198759314b,
+		0xfe1bad59842b3fa7,
+		0x67de39cba23d6e15,
+		0x54c6ea8cbf327d81,
+		0x45f6371cbc137aed,
+		0xc6349da1fd169a5b,
+		0x8b16e5732d18b9c7,
+		0xb9a5f1c54a1cd935,
+		0xca36d7e6582fe7a1,
+		0xe62b53fba934271f,
+		0xbd8a573dc816257b,
+		0xd35ef74dc51934e7,
+		0xb57c469fe21c7365,
+		0xd4ec726cbefd73c1,
+		0xa1b835d32cde813f,
+		0xd8fca9e43ce29f8b,
+		0xf875a1c439e4adf7,
+		0x6237dba549f8cd75,
+		0xb1e98c6876f9ebd1,
+		0xd57f3e9985dcea4f,
+		0x851e7b3ed5f129ab,
+		0x16975dafe3f54a29,
+		0x36a859f212f74895,
+		0x1723b56542ea67f1,
+		0x1c9875d43edc856f,
+		0x63a18d765acf84db,
+		0x372f5ea98be2c349,
+		0xf78951dba9e6d2b5,
+		0xba96df7dc8d9e123,
+		0x5819e4ddc4b9de7f,
+		0x6c3e94f325ac1feb,
+		0xae8b37d546d13e59,
+		0x2ecb134872e34dc5,
+		0xe321645a91e87c43,
+		0xdc9617265ec86a9f,
+		0x21f6ce487ebc891d,
+		0x1fb278aedacfb879,
+		0x1d4bac71f9b2c7e5,
+		0x4cb39de21ac5e763,
+		0xbae6c15326a7e4bf,
+		0x41dea93767cb153d,
+		0x859c2a3875ce23a9,
+		0x91e34c2cb5d26317,
+		0x69a3f15dc2d57183,
+		0x72cd9b5bad956ecf,
+		0xc754b9e1fca98e4d,
+		0xdf68c4221e7c8db9,
+		0xbfc219843a9fbc27,
+		0x8b4fae2658a2eb93,
+		0x67ecd1a65694d8ef,
+		0x2b3e65dba5b8196d,
+		0x5419bd8dc4ab27d9,
+		0x284e35ced2be3847,
+		0x6c183941f2c176b3,
+		0x83be6af542c59631,
+		0x1af64c332fa6938d,
+		0x9fec57d54d78a2f9,
+		0xbf16cd265b9dc167,
+		0xef5a3d47687ebfc3,
+		0x81d297acb893fe41,
+		0xf342e87dc6851e9d,
+		0xc17d43b1f5983d1b,
+		0x9be386c2149b3c87,
+		0xead36c95428d5ae3,
+		0xac1df95873b28a61,
+		0xd9f32e765f6387bd,
+		0xa285b6ea9e86a73b,
+		0x1e73496cbd69c5a7,
+		0xcd3a641fea8cd615,
+		0x3c524f9ed97fe481,
+		0x453918e3298413ed,
+		0x2596cd354897325b,
+		0x95cf3877658941c7,
+		0x5437a8fa938b6f25,
+		0x249f751ba27d6e91,
+		0xbf3ca5ea9e517bfd,
+		0x938a2ceede539c6b,
+		0x6c5eba11fc45bad7,
+		0x89b25a621c69da45,
+		0x4b19e8c4395ce8b1,
+		0xb8ca3125485de72f,
+		0x5b4d621ba973268b,
+		0x8d5c314cb48635f7,
+		0x542396eed28a6475,
+		0x43bf2dafe26b74d1,
+		0xe61f435dce5d824f,
+		0x8ae6c7143f5291ab,
+		0x4fdb12e43d54bf19,
+		0x5eb197654b36ce85,
+		0x4d315ca76948dce1,
+		0x5a7bc399873aeb5f,
+		0x17854e3a964f1acb,
+		0xb836fcdfe7624b39,
+		0xd362b1e1f23649a5,
+		0xae6b9783245a7913,
+		0xa7158fe5413b867f,
+		0xcd6198554f2d85eb,
+		0xd76a42c98e31c459,
+		0xbc6f41aa9b24d3c5,
+		0x35eba27dcb58e243,
+		0x2b59d67dc738e19f,
+		0xa2c59741f85c321d,
+		0xfd82c952173e2f69,
+		0x8cbad97767324ed5,
+		0x52cb7a8a94267d53,
+		0x49efbc6981276baf,
+		0xe5d86fb87f1b8a2d,
+		0x5813e6487d1eba89,
+		0xf6b7823edb21c8f5,
+		0x23da98b1fb14e873,
+		0xf6b14ce32916e5cf,
+		0x7a132bc6592a164d,
+		0xb4d785a7671d24b9,
+		0x83be924ba81f5427,
+		0xe46813ddc6147293,
+		0xf615729cb32571ef,
+		0x463d51ebace68f5d,
+		0xf624a31edbf78ec9,
+		0x9675da221afcbd37,
+		0xe4dfa35328efdca3,
+		0x2438cde769e4fb21,
+		0xc9e3f82768f51a7d,
+		0xd832f97ba5f728e9,
+		0xf6d4c8ecb4fc3957,
+		0xa561427cb2fe57c3,
+		0x14698cafe3f29741,
+		0x84c5fde321f3849d,
+		0x2a98c4543fe7a41b,
+		0xb9dfec554deac287,
+		0x2bfc4e5769dbc1e3,
+		0xab64f8c878bedf51,
+		0xfa32c74a97c31fad,
+		0x5fa6d43dc7d63e2b,
+		0x89a5e1d1f4e83d97,
+		0xef39d78214da5bf3,
+		0x28e5b1a543de6b71,
+		0x6cf329a652e178cd,
+		0xbdafe2876fd3a84b,
+		0xe276d3198ed5c6b7,
+		0xc25f1bea9bcad725,
+		0x9852a6bed8bce591,
+		0xfe69a81cb69ce3fd,
+		0xf8e53cd219d4236b,
+		0x894d521438c642d7,
+		0x59d7a32986da7145,
+		0x6ae2f81873cb6fa1,
+		0xa37691c982ac7d1f,
+		0x2cd64f398fa19d7b,
+		0x8a31de7dcd93abe7,
+		0x28417ba1fca7db65,
+		0xc7b513632ba8e9c1,
+		0x64e89cd3279be83f,
+		0x5768f2c546af179b,
+		0xb658ecfba8c34719,
+		0xe367fcacb3c74685,
+		0x35b86e4dc3b975e1,
+		0x7ac968bed1ab835f,
+		0xc4f5a67edf7e82cb,
+		0xd5f92cb54fa2c139,
+		0x47e169b32d83cf95,
+		0xf2d19be54a86cdf1,
+		0xf95162354978ec6f,
+		0x25bf7ce9867a1cdb,
+		0x3cd7f81cb68f2c49,
+		0xd815642fe6924ab5,
+		0x23c5dae1f4b67a23,
+		0x9e6f58d212a9678f,
+		0xa9125c44317a86fb,
+		0x72be85d43f7eb569,
+		0xad586b387e81c4d5,
+		0x5dcb763bac96e453,
+		0xd14a926cb976e2af,
+		0x53bdc41fe98a132d,
+		0xae641d21f67d3189,
+		0x459b78c2167d3fe5,
+		0xeb16f79545927e63,
+		0x91f73ec652746cbf,
+		0xde8b3faa91678b3d,
+		0xe5c879d76f4c8ba9,
+		0xd2b85a4a9d5eca17,
+		0xf8e7b15edc61e983,
+		0x26317a5dc953e6df,
+		0xc65b7a132b68175d,
+		0xcaf71894386a25c9,
+		0xdbc25177698d4537,
+		0x63a1d84a957f64a3,
+		0x75dfb86dc6859421,
+		0x97df6eadc265917d,
+		0x29f84c6cbe368fd9,
+		0x742e83b1fd3abe47,
+		0x4e2753a21a4ecdb3,
+		0xdfb28a365b62fc31,
+		0xa4f8ce776a541b8d,
+		0x2eda4fb878462af9,
+		0x84e3927dc84b3a67,
+		0xac734e9cb64c58d3,
+		0xac21765ed34f7851,
+		0x79ea5d61f14285ad,
+		0x6e2958c43146a52b,
+		0x92b15ce54f28c397,
+		0x5e7c19876d4ac2f3,
+		0x26dcbf498b4de271,
+		0xc6a528da9a5321cd,
+		0xe78d5b9dc9452f3b,
+		0x543b129ed8263ea7,
+		0x3cb51de1f73a6d15,
+		0x7cf846d3253d6c81,
+		0x6da7eb95432f69ed,
+		0xb48239c87132a95b,
+		0x452713976f14b8c7,
+		0xb15493fbae19d835,
+		0x42af731a9c2be6a1,
+		0xc79351ecb92ce51f,
+		0x6532c8e1fa31247b,
+		0x39d81f632a1543e7,
+		0x861f3d254a197265,
+		0x9f6cdb39863a72c1,
+		0xb96dea49841b7e2f,
+		0xb8c41d6a921f7e8b,
+		0x95a436d98de1acf7,
+		0x1d76452babf3dc75,
+		0x4a79158dc9f6ead1,
+		0xd6f39a221ad8e94f,
+		0xfc57198437fd18ab,
+		0x87e34a9657ef3829,
+		0x63dec74ba8f24795,
+		0x8719b54ba4e576f1,
+		0x437ad62cb2e9846f,
+		0x3d76145dc1fa83db,
+		0xfd378ebdcfdeb249,
+		0x8241bdc43fe2d1b5,
+		0x6ef13b954bc5df13,
+		0x4825da7439b5ed7f,
+		0x46f13bd657c81deb,
+		0x1f346a2987ec2d59,
+		0xbc2f154a96df3bc5,
+		0x852f91ced6e27b43,
+		0xd95a6b7fe2d4689f,
+		0xfdae93b323e7981d,
+		0x5d8249a431ecb679,
+		0x6c2b1a743fadb6e5,
+		0x7c1e69598dc1e563,
+		0x6ea9813879a4e3bf,
+		0xe4723c8cbac8143d,
+		0x53dfc82fe7db32a9,
+		0xd3a29b81f8cd5217,
+		0xa289bcf216be5f73,
+		0x4d9bf7a434a26dcf,
+		0x9dc5fa2762b58c4d,
+		0x7e61d4a651d68cb9,
+		0xf3278eb76f9acb27,
+		0x39d564a87c8eda93,
+		0xadfc4e9cba91d7ef,
+		0x5a9c7341fab4186d,
+		0x783f52b21ab726d9,
+		0x6c5184b329cb3647,
+		0x7dc9bf8547ad65b3,
+		0x8edf432a96bf8531,
+		0x6bd2e93ba4b3928d,
+		0x51a8649dc2b5a1f9,
+		0x6b8fa39dce98bf57,
+		0x46c1e751fd79bec3,
+		0x843b9e132b8ced41,
+		0x8a126c354b821c9d,
+		0x82a437c76a953c1b,
+		0x3869aed659a63b87,
+		0xef23947cb68a59e3,
+		0x2dbf1e8dc4ad7961,
+		0xe5294d7dc28f76bd,
+		0xc139dea1f192a63b,
+		0x3b764ed32195c4a7,
+		0x75cb8fd43f89d415,
+		0x2e9fab865d7be381,
+		0x7dc64196596bf1ed,
+		0x1e5b62fbac92315b,
+		0xb632d75dc9843fb7,
+		0x13e2a58ed7986e25,
+		0xcd45e9b1f47a6d91,
+		0x549a8bc2135b6afd,
+		0x9bd2a484325f8a6b,
+		0xa67f31b65162b9d7,
+		0x71fd36298f76d945,
+		0x4817cb3a9d58e7b1,
+		0xdc5e4baa9b5ae62f,
+		0x187953aeda6e158b,
+		0xd9243acfea8134f7,
+		0x63254ca21b946375,
+		0x2791e585496873d1,
+		0xadb68398756a814f,
+		0xd1cb2977624c7f9b,
+		0x1df4c3e9825fae19,
+		0x986e17dbaf42cd85,
+		0x519f6b3bac45dbe1,
+		0x947c1e6edb37ea5f,
+		0x7bfd4e332d4a19cb,
+		0x82e59fc54b5e2a39,
+		0x3adb89487b6148a5,
+		0x413fdc9cba657813,
+		0xe98c1f6cb436857f,
+		0x53ea876dc23984eb,
+		0x835269afe14db359,
+		0x7bf19aeede3fb2c5,
+		0x5a4c78132f65e143,
+		0x26d157a43b24de8f,
+		0xc38f94d65a371efb,
+		0xe345c1d87a3b2e69,
+		0x67b4e2fa982e3cd5,
+		0x19a8e7ced9417c53,
+		0x7a29e4fed52369af,
+		0x316cbe71f436892d,
+		0x9643c5b2132ab789,
+		0x36f79a85412cb7f5,
+		0x129ae3b65e1fd673,
+		0x4c51e8a87b12e4cf,
+		0x6b3e829bac27154d,
+		0x6aef43cedc1823b9,
+		0xdf7946afea1c5327,
+		0xb1946731f82e6193,
+		0xec192f5437216edf,
+		0xd39ef61546138e5d,
+		0xb85724f763158dc9,
+		0x3e6cd4a98219bc37,
+		0x235eac476ef9dba3,
+		0xed1c32f98bfdea21,
+		0x315bd84dcbf2197d,
+		0xa53b7f2edaf427e9,
+		0x348d25a21bf93857,
+		0x9eafb16328fa56c3,
+		0x24f3b1e657fd8641,
+		0xc9fab13764ef739d,
+		0x8e17d32a95f4a31b,
+		0xa295167cb2f5c187,
+		0xf4be8cda9ec7bfd3,
+		0xab547361fbcade51,
+		0xdabe7c92189bfcad,
+		0xca2b41d65ae13d2b,
+		0xaf1c4b965ae43c97,
+		0xba58e43768d75af3,
+		0x8c4dbe3a95eb6a71,
+		0x16d23cba93eb67cd,
+		0xeb58716dc2df974b,
+		0xca5b16d1f1e2c5b7,
+		0xa59d81c431e7d625,
+		0x261e8bf43fc8e491,
+		0xa2fb5d154ba9e2fd,
+		0x9dca34b87ace126b,
+		0xc7415a3a9ac241d7,
+		0xc8723e4cb9c46f35,
+		0x45bf9a1ed5c76ea1,
+		0x763d9b2fe4b97c1f,
+		0xb58fe74213ad8c7b,
+		0xb85da9e432bf9ae7,
+		0x6253abd871c2da65,
+		0x51247bf76fa5e8c1,
+		0xb9a5f7e76ca8e73f,
+		0xc6f4d2998dac169b,
+		0x341e69aedabe3619,
+		0xc53ead71fac16485,
+		0x6f3a845329b574e1,
+		0x4f9a1d2436b7825f,
+		0xd82a719654a981cb,
+		0x219ca877638caf29,
+		0x6ecf8418718fbe95,
+		0x82b31c5a9e83dcf1,
+		0xef36852bac84eb6f,
+		0xed481b51fc871adb,
+		0x3f2ca9621d8c2b49,
+		0x4db6ae832a8e39b5,
+		0x45e2bac76ab17923,
+		0x2acd64ba95a3768f,
+		0x4bcd259ba39685fb,
+		0x98ab54eed28ab469,
+		0x5b31f7afe18cb3d5,
+		0x2965be8dce8fd253,
+		0x13f4dbe32d73e1af,
+		0xdbf843165e97312d,
+		0x7a58e2c54c682f79,
+		0xfa312eb7697a3de5,
+		0x521cf96ba98e5d63,
+		0x97e13a2dc5716abf,
+		0xad5fbc4fe5748a3d,
+		0x8c3e92a1f265b8a9,
+		0x4679f1e3236ac917,
+		0xf2567985416cd783,
+		0xcb7d15e43b4ec5df,
+		0xb7dace3a9e83165d,
+		0xc2fe184bad7624c9,
+		0xb37c941edc8a5437,
+		0x86a49dbfe97c62a3,
+		0x5d1ba271f97e8321,
+		0x68ac319327518f6d,
+		0x9c7deb6324538ed9,
+		0x613d5ac98256bd47,
+		0xdbf168487158dcb3,
+		0xd51e62998f5ceb31,
+		0x8b5decf87b3ef98d,
+		0x4789a2cedc5328f9,
+		0xc7b1ad21fc453967,
+		0xcf5d87e21b4957d3,
+		0x684791f43a4c8751,
+		0x2bf861a6563e74ad,
+		0x8a3c614a9761a42b,
+		0x3e1c8a2cb354c297,
+		0xe8915afcb257c1f3,
+		0x27698e4cbe39df61,
+		0xfb865a1dca29febd,
+		0x371e85f32c4f1e3b,
+		0x9a7ce1b65c423da7,
+		0xde4532698b376c15,
+		0xf15c4ba87a396b81,
+		0x3f675d4a952a68ed,
+		0xfa48d96dc42e985b,
+		0x49518b3fe431b6c7,
+		0xac726e81f124d735,
+		0xa9b5e3754237e5a1,
+		0x46a12f765d29e41f,
+		0xb15d49e76e2d137b,
+		0x35fb29d98b1f32e7,
+		0xe715329cbc237165,
+		0x6a84359dc9256fb1,
+		0x53e2678dc6187d2f,
+		0x9de87421f41a7d8b,
+		0x5c9f4de3241d9bf7,
+		0x8edca9f76421db75,
+		0x96fcd4587324e9d1,
+		0xba1c9f876cd5e84f,
+		0x5e4a29876df817ab,
+		0x3f9524bbabfc3729,
+		0x295a68bdcafe3695,
+		0xb6f23c9ed9e275f1,
+		0x78bc645219e4836f,
+		0x694fce2435f682db,
+		0xedf893c765fab149,
+		0x832dab7762ecbfa5,
+		0xd2b4eaf982dfce13,
+		0xf3e16bc98db2ec7f,
+		0x6abc21da9ad51ceb,
+		0xd97a8141fbe82c59,
+		0x43c6fa7219eb3ac5,
+		0x9f15c67329de6a43,
+		0x8c5273b548d1679f,
+		0x9d15423986e4971d,
+		0xc5b3298ba3e6b579,
+		0xd284165ba2d9b4e5,
+		0x6a38795cb1ecd463,
+		0xc9f1b32bac9ed2bf,
+		0x71edbc654fc5123d,
+		0xe7d581b54ed631a9,
+		0xb1fca2954ab83ef5,
+		0xc52d749769cb5e73,
+		0xf53b4ad8769d5bcf,
+		0x2bd3ec7ba6c18b4d,
+		0x57f94c2fe4d38ab9,
+		0xae4db9c1f3d6ca27,
+		0x2d4a396212cad893,
+		0xec4126b4319ac6ef,
+		0x6ef2c7b43c9ef56d,
+		0x6c8bfd287eb325d9,
+		0x83b6d5cbadc83547,
+		0x1fac835edac964b3,
+		0x27468d3fe9bc8431,
+		0x8a1472b1f5ae718d,
+		0x5e743b8325a18fe9,
+		0xc79351a324a3be57,
+		0xf9e6b1d65296bdc3,
+		0x6d82ae1872a9ec41,
+		0xf6b378d65e6bfa9d,
+		0xfa48c61a9d8f2a1b,
+		0x28f6a37fedb23a87,
+		0x25684d91fba658e3,
+		0x583ea4b32cba7861,
+		0xad5b4373268a75bd,
+		0x93bdefc5468e953b,
+		0x45126fc98591c3a7,
+		0x3c15f7acb4a6d315,
+		0xf5b18d3dc3a7e281,
+		0xdc2f13ba9b57efcd,
+		0xdf73bc4fed7c1f4b,
+		0xea2543b21c6f2eb7,
+		0x3e2adb854c936d25,
+		0xd79cb3854b856c91,
+		0xce135a95485769fd,
+		0x184f963ba45c896b,
+		0x8e6f43acb35ea8d7,
+		0x431acf2fe391d845,
+		0xd75824e1f284e6b1,
+		0xc48dba243187e52f,
+		0x6e4c5a943f6a148b,
+		0xf8b4c7265d6c23f7,
+		0x28cd736a9c8f4275,
+		0x6e53f84bab8472d1,
+		0x46591f8cb9657e3f,
+		0x97ac825ed5467e9b,
+		0xd58a71b1f45bad19,
+		0x5a8bf322134ebc85,
+		0xfbad7c865462dae1,
+		0xa35b6f187163e95f,
+		0xd2cf18587f4618cb,
+		0x62c8d9bbae5b2839,
+		0x3178f92cbc4d37a5,
+		0xa3b68e5edb5f6713,
+		0xab49f12fea52847f,
+		0xfd58cab2194583eb,
+		0xfe82d9443748b259,
+		0x36ce8d18764ab1c5,
+		0x6392ac79845dcf23,
+		0xa472b13a9241ed8f,
+		0x3ef48d2a9e341dfb,
+		0xdbea495dce372d69,
+		0x6d594eb1fc293bd5,
+		0x478965221c2d6b53,
+		0xecda5674392e58af,
+		0x8ed2fa576a43982d,
+		0x32f571dba724b689,
+		0x5f937d8ba428b6f5,
+		0x9846f15dc42bd573,
+		0xfe6423dba12bd3cf,
+		0x162ac47fef52134d,
+		0x98beaf654f1532b9,
+		0x43a8d1f76e395127,
+		0x7c15e9a76c1a5f83,
+		0xb7198527681a5cdf,
+		0x4a5cf23a981f7c5d,
+		0x7f3219bed6128bc9,
+		0xfa2c3b6fe615cb37,
+		0x751c3241f417d9a3,
+		0x8b19efc5453be921,
+		0x7a396d15421cf67d,
+		0xf2b387a54cdf16e9,
+		0x8345da1a9df23657,
+		0x857f63da9bf765c3,
+		0xdf79e65dcbfa8541,
+		0x1f5ade9dc6fb729d,
+		0xe53a76bed6fe921b,
+		0x874cf53325e1bf67,
+		0x96e7da1325f4bed3,
+		0x17c524e763f7ed51,
+		0x39d2671651e7fbad,
+		0xa238e4987fed1c2b,
+		0x963742e98cdf2b97,
+		0xa2d3fb1dcbd259f3,
+		0x51a2c861fbe56971,
+		0x3475bc9219e876cd,
+		0xadfe347327ec964b,
+		0xaf5c819435dea4b7,
+		0x83251efa97e1d425,
+		0x8c56b92ba4d5e391,
+		0x8fb2d34a92b6e1fd,
+		0x268f4eadcfda216b,
+		0xdab1247fedab2fc7,
+		0xd675a4e21cbf4e35,
+		0x39b7ca254bc36da1,
+		0x1bcef82549c57b1f,
+		0x87baf23545d68a7b,
+		0xe4c35d9764cba9e7,
+		0xe5df39cba3bec965,
+		0x57e2689ed4b2e7c1,
+		0x6789aeced1b4e63f,
+		0xcbe5f42432d7159b,
+		0x32e8ab754fcb3519,
+		0x5daec9b76ebd4385,
+		0xa1cd23f87baf63e1,
+		0xe67243ca9ab3815f,
+		0x319aeb8dc6947fab,
+		0x2bc618aed5b7ae29,
+		0x93c4eb21f38abd95,
+		0xf76b4833248dcbf1,
+		0xd7f21c354391ea6f,
+		0x317b8e2762a419db,
+		0x7ae149b76fb72a49,
+		0xfe29c4d87e9a38b5,
+		0xe94c2a8cbcad6823,
+		0xfd27ab5dca9e658f,
+		0xa72f589fe79284fb,
+		0xacbef9d218a5b369,
+		0x51ed9a743698b2d5,
+		0x2f581ac8769bd153,
+		0x2d3694a6526bce9f,
+		0x6f5412bba4932f1d,
+		0x7132fc5cbf842e79,
+		0x6371ef8cbd873ce5,
+		0xd2591b31fd8a5c63,
+		0x7fa6dc521a6c59bf,
+		0x395dbc632a6f793d,
+		0x21a3e8b54862b7a9,
+		0xe487c2bba695c817,
+		0x654ac19cb479d683,
+		0x6f51dbeba269c4df,
+		0x1e289f5cb17cf35d,
+		0x286bda5fef7123c9,
+		0xed783c521f965237,
+		0x96bfe7d54e7861a3,
+		0xc8bf26743a485def,
+		0xd9e68ba6594b7e6d,
+		0xb9254de9864f7cd9,
+		0x87fe5a1ed862bc47,
+		0xc574d12fe465dab3,
+		0x1ae2c691f468ea31,
+		0xf463dba2124af78d,
+		0x89bfec25425d17f9,
+		0x6cf4ed5a9f513867,
+		0xe17f6baa9e7456d3,
+		0xe6c4928cbd498651,
+		0xef3b164dcb4973ad,
+		0x64cfb82fe85d932b,
+		0x15bac96fe64fb197,
+		0xebc796521752bfe3,
+		0xd916e2843745de61,
+		0x974bdc665236fcbd,
+		0xd437cfe9825a1d3b,
+		0x934aed598f3e2ca7,
+		0x24173eddce426b15,
+		0xba39d7ffed346a81,
+		0x7dbc64a1fa2567ed,
+		0x5f3ed2b21c2a975b,
+		0x87cfa2b4382da5c7,
+		0x892e3b68782fc635,
+		0x76e5d2ca9753e4a1,
+		0xcb561e7ba546e31f,
+		0x3f65c94ed349127b,
+		0x2d459e1dcf2b31e7,
+		0xf2cad9bfec1d3f45,
+		0x3b569e854d326eb1,
+		0x7bc634265b147c2f,
+		0xadb8e7354a157c8b,
+		0xd1a4b32656189af7,
+		0xd8fe1a6a961dca75,
+		0xdc517fbba52fc8d1,
+		0x1a5472ddc512e74f,
+		0xdea46151f32516ab,
+		0xaecb37d6541a3629,
+		0x4c3ba6932efb3495,
+		0x21f7b3465bec64f1,
+		0x62341dc65ade726f,
+		0xbc5ea3d879f381db,
+		0xfa2e51ccb7e5af39,
+		0xd894f3bdc4f7bea5,
+		0x518ab2ffe5facd13,
+		0x9f5eb6d213ecdb7f,
+		0x1d2c3a9654f21aeb,
+		0x9842fe6871f42b59,
+		0x1cd258a76fe739c5,
+		0x63d1fa498deb6943,
+		0xea7619598adc569f,
+		0xa82569dcb9cf861d,
+		0xe3bc9a41f8e2b479,
+		0xf8c956e218d6b3e5,
+		0xd37815f547e9d263,
+		0x7d2eac3654c9d1bf,
+		0xf1a5b2c763abef2d,
+		0xbf82617ba3d12f89,
+		0xde64528a9eb43df5,
+		0x3d96a74cbec85d73,
+		0x843ba2ffe9b85acf,
+		0x7f8e534219bc7a4d,
+		0x13b65f8326cf78b9,
+		0x1f9387b658d3c927,
+		0x576fbce986c5d793,
+		0x7d3ba4f983a7c5ef,
+		0x12c7bf3a92baf46d,
+		0x37b9154dc2be14d9,
+		0x2d9fa86fefc15347,
+		0xa4e7bf221fc562b3,
+		0x24c7deb65ec98231,
+		0x8f65a9443ba96f7d,
+		0xf5b83ac5468b7de9,
+		0x92c1d3b9869fad57,
+		0x96715f8ba692dbc3,
+		0x83ef95bed5a6eb41,
+		0xd467a9ffe2a6f89d,
+		0xc2b867a434ac291b,
+		0x875c263541be2987,
+		0x4baf1d576fa157e3,
+		0x7db82f1a9eb48761,
+		0xc39147d98c9674bd,
+		0x28ce617edc8a943b,
+		0x9c47315fe68db2a7,
+		0x3dca582fe79fc215,
+		0xde7153432693df71,
+		0x6be378132374fecd,
+		0xf4b3ce5763981e4b,
+		0x9da2ebc7618a2db7,
+		0x46d1ebaa9f8e4c25,
+		0x582d43adce826b91,
+		0x24df9e5dcb7368fd,
+		0x126ed351fc75986b,
+		0x2b968c521b59a6d7,
+		0x17ab8343298dc745,
+		0x19ac23d5467fd5b1,
+		0xcae528da9683e42f,
+		0x1a27e46dc496138b,
+		0x1f9e48bdc18932f7,
+		0xc543be8edf8c4175,
+		0x268573ffeb6d5fc1,
+		0x5a73c8b32c617d3f,
+		0xe47fd1632c537d9b,
+		0x27d3ecb54b56ac19,
+		0x453bf2776749cb85,
+		0x692de459865bc9e1,
+		0x9e12bd3ba34ed85f,
+		0xcad43f7fe46317cb,
+		0xb582a471f1862739,
+		0x96e5cdf3217936a5,
+		0x269e1cb54f5c7613,
+		0x7b624cf65c4d637f,
+		0x6f429a587c5182eb,
+		0x7eb5394bac64b159,
+		0x6d35794dc836afb5,
+		0x9fae3c6ed759ce23,
+		0x1ac6f9dfe43adc8f,
+		0x79be63a2143deafb,
+		0x3d61ba8874532c69,
+		0xb6e45f2981463ad5,
+		0xed562c198f296a53,
+		0x16e4cfb98d2b57af,
+		0x982e7bdbab3e872d,
+		0x5b18d64fec31b589,
+		0xfb71269fe923b4f5,
+		0xe9f582721a28d473,
+		0xc1edf7254638d2cf,
+		0x35ab6c48763bf14d,
+		0x5439e7a9854f21b9,
+		0x9d6e54fcb2534f17,
+		0xf268d7ecbf165e83,
+		0xef65c82bac175bdf,
+		0x3a281561fc1a7b5d,
+		0x9de1f4c32b1e7ac9,
+		0x6719cd465b21ca37,
+		0x24af3e176914d8a3,
+		0xb74e8c2ba937e821,
+		0x6b542f1ba419f57d,
+		0xd8ca476cb42c15e9,
+		0x6a3fc4eed31f2457,
+		0x7e46c31edef164c3,
+		0xa6d3ef432ef68341,
+		0xec651d943cf6719d,
+		0xa51efcd43ad87ef9,
+		0xc6a8fbe548fcae67,
+		0x6bf3cd5876efacd3,
+		0x2d738c6ba7f3ec51,
+		0x3589ca1cb3e4f9ad,
+		0x1598b76fe4f81a2b,
+		0x794acfb213fc2a97,
+		0xfea871c651ed48f3,
+		0x7eb81a265fe26871,
+		0xe15b79d76be375cd,
+		0xe723db498ce7954b,
+		0xead89f5dc8e9a3b7,
+		0x7392465cb8edc325,
+		0xa3bcf5dfe6cfd291,
+		0xde29546215a2cfed,
+		0xf56be28434d61f5b,
+		0x49871c3653d82ec7,
+		0xf9c5bd4981eb4d35,
+		0x689defb87fbe5ca1,
+		0x4d6c72ba9dc27a1f,
+		0x1fd729cfecd3897b,
+		0x16dc7ab1f9c5a8e7,
+		0xf75b9cd219dac865,
+		0x6518cbf437abd6c1,
+		0x87ba2e1546aed53f,
+		0x3bf156c986d3149b,
+		0x7ed8159cb5d73419,
+		0x743b529dc1da4285,
+		0x6128b9fdcfab62e1,
+		0x241fb7aedb9c6e4f,
+		0x5843dfb32d917eab,
+		0xc9f684543cb4ad29,
+		0xcbf2419438a6bc95,
+		0xb1392ae65698caf1,
+		0xb513e8f8748bd96f,
+		0xd5c8614a938ef7db,
+		0xf361587fe5c32849,
+		0x936c2d71f1c637b5,
+		0x9e53ad2541ca6723,
+		0x7c4f63b32e9b648f,
+		0x6325aef54c8d73fb,
+		0x5ed1f4a87da1b269,
+		0x2916ed598a94b1d5,
+		0xec6ad7fcb897cf43,
+		0xad58279cb467cd9f,
+		0x2d87951fe47afc1d,
+		0xe4bd6c73248f1d79,
+		0x8492d53764923be5,
+		0xa291e6d981a75b63,
+		0x8d5671e54e6758bf,
+		0x124dfa5a9e6b783d,
+		0xfe17d26cbc5e86a9,
+		0x8ad5279feb92c617,
+		0x82693741fa94d583,
+		0xc79a62b21876c3df,
+		0x427b6fe43679f25d,
+		0x9f7a5c27657d12c9,
+		0x6197cfeba59f4137,
+		0x912ed87cb1825f93,
+		0xb84fd7ca9d645cef,
+		0xe567d39cbe487c6d,
+		0xbeda8941fc4a7bd9,
+		0xd89b6ce21c5eab47,
+		0xe59762854a61d9b3,
+		0xea83cd176a75e931,
+		0x6fde83aa9745f68d,
+		0x84c5d3ecb45a16f9,
+		0xdbf1586dc38d2567,
+		0x6ba2e4fdc17f45d3,
+		0xf8cba13fef738451,
+		0x3ad257921f4572ad,
+		0x7839fed54e58912b,
+		0x2dc8ef554c3baf87,
+		0xe87f2ad7684cade3,
+		0x573cb9dba952ed61,
+		0xa2c1fe8a9643fabd,
+		0x3965a27fe6571c3b,
+		0xb685dc21f3492ba7,
+		0x369f8bd3236d4a15,
+		0x49f21837624f5981,
+		0x6aefcb365f3276ed,
+		0xb379c2a98e24965b,
+		0xefda7c3a9d28a4c7,
+		0xb1afe32eda2bc435,
+		0x6e42b1fdc84ed3a1,
+		0x2b94537ed853e21f,
+		0x792148543945217b,
+		0x2f8dc63545362fd7,
+		0x792c45f9862a3e45,
+		0x6ab35f49823c5db1,
+		0xe57fb4a98d1e6b2f,
+		0xb4591addce127a8b,
+		0x6b3f829edc14a9f7,
+		0x4369a851fb18c975,
+		0xae762414392ac7d1,
+		0x7a5cd844381cd64f,
+		0x2a5e6d38783215ab,
+		0xe463129cb8163529,
+		0x7fa2635dc6184395,
+		0x2a61953dc42a63f1,
+		0x31f9d82badeb716f,
+		0xc4f612bba9ed6fcb,
+		0x7aefdb832cf1ae39,
+		0xad948fe329f3bda5,
+		0xd4b3fa9659f7dc13,
+		0x786c9be545e8da7f,
+		0x124b37a764daf8eb,
+		0x46d193ecb4ef1a59,
+		0x94352abed4f238c5,
+		0x4d3815afe1f76843,
+		0x98a5e3d321e8659f,
+		0x19a685d43feb851d,
+		0x26f1a7954cdea379,
+		0x38b5dec87ad1b2e5,
+		0xe83b61fa9ae5d163,
+		0x4f3e7b1986b5ceaf,
+		0x27eb934ba5b8fe2d,
+		0x35a9bc81f4dc1e89,
+		0x5a74938214be2cf5,
+		0xb39ea47764e25c73,
+		0x5d2afe3761d459cf,
+		0xb2f14da65fc8794d,
+		0x16372eb65edc87b9,
+		0xa6fdb58a9aceb827,
+		0x2fc849bfeac1d693,
+		0x625ce48ed7a3c4ef,
+		0x38f297a218b7f36d,
+		0x168ac39546ca13d9,
+		0x31674dc986cd3247,
+		0x714eb52984cf51b3,
+		0x7fd5462ba3c47f21,
+		0x1f82567a9fa46e7d,
+		0x79fd13ccbda67ce9,
+		0x8ab94251fd9bac57,
+		0x7c964a22198ebac3,
+		0xe83f426659b2ea41,
+		0x8df3152546a3f79d,
+		0x264371ca96c7281b,
+		0xc8794ebba4cb2687,
+		0xae39d86cb2ac46e3,
+		0x37c625eed2bf7561,
+		0x37a816bfef9273bd,
+		0x4bed35621fa6923b,
+		0x7e6a8bc43e98b1a7,
+		0xc7e253854b79aef3,
+		0xb9a3d6e6598dce71,
+		0x63ca52b98671fbcd,
+		0xf1b7de8dc7951d4b,
+		0x8d96b72fe4962cb7,
+		0x5d6e4821f39a4b25,
+		0x7d9abc53238d5a91,
+		0x2cbe8164318e57fd,
+		0xb376e5a54f82976b,
+		0xefb591876e84a5d7,
+		0x6372b19bad89c645,
+		0x9d346a8dc97ad4b1,
+		0xd83c1fecb87cd32f,
+		0xa87291c1f793128b,
+		0xce185bd3289531f7,
+		0x46e3b8d324983f65,
+		0x47d3a19763795ec1,
+		0x6be2c199817b6c3f,
+		0xe5968b287e4f6c9b,
+		0xe735d9fdce63ab19,
+		0xb158a79fed64ca85,
+		0xa486c9b1fa57c8e1,
+		0xc7bf9562194ad75f,
+		0x4b398f63274df5cb,
+		0x65fc28987a812639,
+		0xcfa5d74cb78634a5,
+		0x36715efdc4897513,
+		0x7e2dfa4dc15a627f,
+		0x962c54bbaf4c71eb,
+		0x2f58934edc3e8f49,
+		0x5c8d2a721d42aeb5,
+		0xb12df6854b56cd23,
+		0x2d5e87b54936db8f,
+		0x4ebc3a165638e9fb,
+		0xe8621bcba74e1b69,
+		0x69478d3dc76139d5,
+		0x2f7ab84fe2746953,
+		0xcf341d6fe13756af,
+		0x9ae4dc24314a862d,
+		0x69b472143f2da489,
+		0x149db2e76c2ea3f5,
+		0x14c8a6ba9c54d273,
+		0xa3e47bc98935d1cf,
+		0xcb57836ba827ef3d,
+		0xe16c39aed63b1fa9,
+		0x71ba3561f64d3e17,
+		0x174d369327415d83,
+		0xcd7239a764235adf,
+		0x6af9c5b981267a5d,
+		0x92efd8a65f1a78c9,
+		0xc9b5a2198e1db937,
+		0x827a36ca9b1fc7a3,
+		0xa5169b8edb34e721,
+		0xb56319dfe915f47d,
+		0x7db1f5843a2814e9,
+		0x8bd7c957691c2357,
+		0x3ae746f9871e52c3,
+		0x1c284e5cb7538241,
+		0xe568c92ba2136f8d,
+		0xf231e7a98ce47df9,
+		0xf5a2719cbcf8ad67,
+		0x2a691fcfe8f9abd3,
+		0x7ca9583329fedb51,
+		0x2c6a851437e1f8ad,
+		0x981a5f2768f5192b,
+		0x2e58cd1ba5f62897,
+		0xed25146a95ea47f3,
+		0xea7f918cb3fd5671,
+		0xb168e7fba1ef64cd,
+		0x479235eedfe2934b,
+		0x4e2b69c21fe5a2b7,
+		0x9fa6cb154de9c125,
+		0x2e81963549dacf81,
+		0x563d9c85469abced,
+		0x4128cd5a98d21e5b,
+		0x5e9d1bfba6e42dc7,
+		0xec8bf79ed6e84c35,
+		0x45c62d91f3e95ba1,
+		0xef1cab8323dc691f,
+		0x42acf7d431df687b,
+		0x9e2f83154fc2a6e7,
+		0x74d12f398ed4c765,
+		0xe254baf87ab8d5c1,
+		0xf4ba2d5a98bad43f,
+		0xe5fd8a7dc6adf29b,
+		0xb7e94121f8d24319,
+		0x7ced941329d64185,
+		0x2b8c614434b75fd1,
+		0x1edf4b7652b96d4f,
+		0x6ba289e6519c6dab,
+		0x18e4dc276eaf8c29,
+		0x325f47698ea2cb95,
+		0x6bf7c81edba5c9f1,
+		0x74ab6d9fe9a7d86f,
+		0xaef54cd21789f6db,
+		0x98f2a75438be1749,
+		0x1f46e58878c136b5,
+		0x6eb38fcba8c57623,
+		0xed69f84ba2b7638f,
+		0x468729edc1a972fb,
+		0x9f7d1eadcf8da169,
+		0xb574f96edb7e9fc5,
+		0x95a4bf221d92ce43,
+		0xe71b8fd32a74dc9f,
+		0xa2d19bc54987fb1d,
+		0x3627a4f6568b1c79,
+		0x21d6aefa968d2ae5,
+		0xb659823ed7b15a63,
+		0x8549f72ed29357bf,
+		0x9ce53161f1a6873d,
+		0x1cad9483217b85a9,
+		0x1294a6743f8db517,
+		0x23b86df65d7fc483,
+		0x374ec2f76a73c2df,
+		0xb853e6da9a86f15d,
+		0xfc42836eda7821c9,
+		0xe34685aed68b3f27,
+		0x41ca3921f57d4e93,
+		0xca1f4de324715bef,
+		0x5b8adef542837b6d,
+		0xdfba97e541657ad9,
+		0x13d2bf876f59ba47,
+		0x2ab859c87e5dc8b3,
+		0xbf7194cbab6fd831,
+		0xa5f8d13dca62f58d,
+		0xf5b47a3fea7615f9,
+		0xf8b75c221b8a2467,
+		0x4ab817f3287b54d3,
+		0xde34b1fa968e7351,
+		0x1a65d87a946271ad,
+		0x8fb1d93ba2648f1b,
+		0x4f32e78cbf35ae87,
+		0x4926d5fcbd48ace3,
+		0x9624e8a1fa4bdc61,
+		0xa63bf2c2183fe9bd,
+		0x218a39665c641a3b,
+		0x2ae578176b4529a7,
+		0x1a582f4cb86a4915,
+		0x1356fd7cb64c5781,
+		0x9bc1524ba23c65ed,
+		0x7928af3fe261945b,
+		0x1a75983fef24a3c7,
+		0xb57e2fc21f48c235,
+		0xa13df8465e49d2a1,
+		0x8edf61354829befd,
+		0x741b6cf6582dfe6b,
+		0x9cf26bdba9432ed7,
+		0xf69e4badc9273d45,
+		0x91876a4fe6385cb1,
+		0x53ad826fe43b6a2f,
+		0xeafc4562132e698b,
+		0xafbe13965231a8f7,
+		0xd8ae1c376f13c875,
+		0x7e9b2fa98e27c6d1,
+		0x1963b7598b19d54f,
+		0xe14fd5ca981cf3ab,
+		0xae9645feda3f1429,
+		0xae753141fa134295,
+		0x3f278da5493762f1,
+		0xd2cb76a434186e5f,
+		0x4e3a268653196ecb,
+		0x6c1582a8721e8d39,
+		0xb4ca5f376def9ca5,
+		0xf5a4328a9cf4db13,
+		0x47d9e5acbae4d97f,
+		0xfd538eadc8d6f7eb,
+		0x3ad9b6432afc1859,
+		0xa97d5b1438fe27c5,
+		0xd42c763989f16743,
+		0x1cb3f6a985e3649f,
+		0x9f38e1bba3f7841d,
+		0x3294a8ddc1fba279,
+		0xf21d5baa9fdca1e5,
+		0x42f79b5edacebf53,
+		0x6b7c235219b2cdaf,
+		0x5fd8ac7439b5fc2d,
+		0x6f3d9a854ae71d89,
+		0x5e3adf1767da2bf5,
+		0xcf3d857a96de4b73,
+		0xc53f264ba4d158cf,
+		0x1e3a9fbdc2e3784d,
+		0xa2365be1f1e586b9,
+		0xb2e1695431eab627,
+		0xdb1f9a732fbdc593,
+		0xdb3982a54a9db3ef,
+		0x19b6edf87ab3f26d,
+		0xf162e5d98ac612d9,
+		0x6b254d3dc9da3147,
+		0xa7169bced6cb4fa3,
+		0xbe14c5d1f5bd6e21,
+		0xe68ba41324b16c7d,
+		0xe65a297542c37be9,
+		0x61fde73541d6ab57,
+		0x38acb1d65fa8b9c3,
+		0xc61b32a87eacd941,
+		0x5ca2d4887a8fe69d,
+		0x52c7d16feac4271b,
+		0x4e5631c1fac62587,
+		0xd78c6a2218b945e3,
+		0x278945d438bc7461,
+		0x9fb2ea16549e62bd,
+		0xb96d532985c2913b,
+		0xcd596e3981b3af97,
+		0xdf6713ea9e86adf3,
+		0x61c83fecbe89cd71,
+		0xedb95481f869eacd,
+		0xf32c5b42197efa4b,
+		0x87f6bad54c932ab7,
+		0x23e1c8b769b74a25,
+		0x5a3f48d876ba5891,
+		0xf7b1cd8a938a56fd,
+		0xde81694dc29e856b,
+		0xaf4c9d1fe291a4d7,
+		0x8c9d7f1fef96c345,
+		0x6e5791c32f87d3b1,
+		0xa952cfd54c79d12f,
+		0x65ed9a24395aef7b,
+		0xb8f93ec6596d1fe7,
+		0x4cf367acba923e65,
+		0x1453c9acb7865dc1,
+		0xf3ec1b9ed4786b3f,
+		0x3e849d51f25c6a9b,
+		0x5e9dafc3236e8a19,
+		0xa528cf654271c985,
+		0x2b14af865f64c7e1,
+		0xf6ced1598c47d65f,
+		0x9d58e4287a58f4cb,
+		0x9372da4dcb7d1539,
+		0x96b845ced97f23a5,
+		0xa43b7c61fa957413,
+		0xa7bf81c32985617f,
+		0x5b7fa6e323476fdb,
+		0xc8241757625b8e49,
+		0x2e5db898714e9db5,
+		0xbd65f84a9f61dc23,
+		0xfe5c328a9c43da8f,
+		0xa7fe125dca35e8fb,
+		0x3b46ed91fc4b1a69,
+		0x6739c4d21a4c28d5,
+		0xb31a68432a6f4853,
+		0x215f34c8784265af,
+		0x8f5de36ba746852d,
+		0x63185eddc247a389,
+		0x3ba895edc14ba2f5,
+		0x64d7eafcbf4ec173,
+		0x4659af3eda31cebf,
+		0x264b3df21b24fe3d,
+		0x917b32854c361ea9,
+		0x3d987eb76b4a3d17,
+		0xc32a84b8792d4c83,
+		0xf41c59d9862e49df,
+		0x1b29754dc632795d,
+		0xd57c382fe32487c9,
+		0x864e93c1f129b837,
+		0x1953cd65412bc6a3,
+		0xb39cdf265f3ed621,
+		0x1a8f4ec76c21f37d,
+		0x2976fd398c2513e9,
+		0x45321d7cbc193257,
+		0xe5afb96ed92a51c3,
+		0x52ce981ed82c6f31,
+		0x43987fedc41f5e8d,
+		0x2c5aef6435127cf9,
+		0xf23e6d765314ac67,
+		0x38c1b4576217bad3,
+		0x94c5dfb76ef9da51,
+		0xd6e1724659fbe7ad,
+		0xcbd245a989def72b,
+		0x9f26e5bedbf32697,
+		0x5a13f4bed9e746f3,
+		0xe591bda329fa6571,
+		0xe31549a325fa63cd,
+		0xef982d4765fe824b,
+		0x916ab3d984f2a1b7,
+		0xc86f2daa92e4bf15,
+		0x5ec7fb4a9fd6ce81,
+		0xf5e2b13989a7cbed,
+		0x169b5a4fe8dafc5b,
+		0x786b94d329df1bc7,
+		0x523bd7176ae24b35,
+		0xf6859ec548e659a1,
+		0x4de568b875d9681f,
+		0x84cd32ba93ec867b,
+		0x7d4163cba2cd95e7,
+		0x2816759ed2e1c465,
+		0xc65ba9ffefb5d4c1,
+		0xeb4876921eb7d23f,
+		0xe26bd7a43dc8f19b,
+		0xa15efc776bcd3219,
+		0x4cf8957769be2f75,
+		0x26dfe3ba98b35ed1,
+		0x3b67f49ba7b56c4f,
+		0x6d2f35afe3d76cab,
+		0x6843e791f3dc8b29,
+		0x59e7fc2212ceba95,
+		0xc8f61ab653b2c8f1,
+		0xdb53c9154ea3d76f,
+		0x798623c54c96f5db,
+		0x96da7fc98dcb1649,
+		0xd8231efdc9ad24b5,
+		0x57ef8b3ed9bf6523,
+		0xf391278fe7b3628f,
+		0x394fc87326a571fb,
+		0x1eb459c323b78f59,
+		0xb3fe79a5428a9ec5,
+		0xbf41e968719ebd43,
+		0xb7ae89576e71db9f,
+		0xf7e354ca9c84fa1d,
+		0xc2d4678feda61b79,
+		0x7b4361e1fb8a29e5,
+		0xf5b398621bad4963,
+		0xbe5c49f3278e46bf,
+		0x216ecb4657a2863d,
+		0xb89e3c4873b584a9,
+		0x2938db1dc3a9b417,
+		0xf178eb4ed19bc283,
+		0x2a6d357a9e6cb1df,
+		0x9742defdcb71ef4d,
+		0x7d8baf132d741fb9,
+		0x5fd63b754c983e27,
+		0xbcd874165b7a4d93,
+		0xeabf9436576b4aef,
+		0x6572ebaa947f5a6d,
+		0xf215e36dc46278d9,
+		0x562f9bafe285b947,
+		0x24a593b1f168c7b3,
+		0x715edf25428bd731,
+		0x6c8de1332f5ce48d,
+		0x73f89ec76d7214f9,
+		0xbd7916cbad952367,
+		0xe91c5b6bab7852d3,
+		0x1b3e942eda8b7251,
+		0x49a2d61dc64b5f9d,
+		0x4e52f98ed45f7e1b,
+		0x6a5fbde21452ad87,
+		0x1b3cadf54265abe3,
+		0xea8b3d187258db61,
+		0xd9c12f365f39e8bd,
+		0x492c51f87c4df83b,
+		0x6a589e3dcd5128a7,
+		0x539a24dfec764815,
+		0x84936b11fb495681,
+		0x64fe9b32183964ed,
+		0xd7a3c613274d835b,
+		0x4b2c8a37654f92c7,
+		0xce3f297ba674c135,
+		0x71b928dba245cf91,
+		0x617af4b98e26bcfd,
+		0xf8c17bdbac29fd6b,
+		0x4329a6e1fa3e1cd7,
+		0x8bcf67e32d613c45,
+		0xdce1b8776c345ab1,
+		0x8fe9c2765a37692f,
+		0x41ca83ba952a678b,
+		0x1e65b98ba42c96f7,
+		0x9b1a27edc32fb675,
+		0x7f5b619fe243c5d1,
+		0x3d9ef5adce16d34f,
+		0x2167a9c43e17f2ab,
+		0x7314cd976e4c1329,
+		0xdeb985287c2e3195,
+		0x291c57698a325fe1,
+		0x4269731ba9136d5f,
+		0x6cf89deba7156dcb,
+		0xf9625c7fe51a8c39,
+		0xa4e27511f31d9ba5,
+		0xb1e738a5452fca13,
+		0xcadf23e65312d87f,
+		0x7f25c9d54cd3f6eb,
+		0xfbac89176df81759,
+		0x7c2ad9498bfa26c5,
+		0x98da574cbafd5643,
+		0x37d4cf2cb7de539f,
+		0x2ba4fc8fe7f4831d,
+		0xb69ae3d326f5a179,
+		0x7e598cf323e79fd5,
+		0x3fe127a762fabe53,
+		0x24cb671651edbcaf,
+		0x235961887ec1fb2d,
+		0xb921d74bade41c89,
+		0xeb1653adcbd72af5,
+		0x27c16ab1f9eb4a73,
+		0x86425df218db47cf,
+		0xa87534e328cf674d,
+		0x6c1eb23546e285b9,
+		0xf8bad3ca94e6b527,
+		0xf1e6b24ba2e8c493,
+		0x3b6f254981c9b2ef,
+		0x7e6adfca9face16d,
+		0x985deab1fec321d9,
+		0x27d9e6f21dc52f37,
+		0x61b4f3932bc74ea3,
+		0x179fe4c659ca6d21,
+		0x6a3e178546ac5b7d,
+		0xbf2d1e3874bf6ae9,
+		0x9173d2bdc4d2ba57,
+		0x3db56acfe2d5b8c3,
+		0x3ac91521f2c9d841,
+		0xf1d4967321bae59d,
+		0xbf1cea543e9df51b,
+		0xd29ceb376ec12487,
+		0xae2467598cb654e3,
+		0xc4d5f69babc97361,
+		0x9f5a378dc7a961bd,
+		0x51ac46eed59c7f2b,
+		0x475b6e8ed3af8e97,
+		0x63c274a21592acf3,
+		0x72e1f53543a5dc71,
+		0xa391bed54186e9cd,
+		0x81b6de465e7af94b,
+		0xc31289576d8e19b7,
+		0x2f8ae93dcdb14925,
+		0x7acb35dfecb45791,
+		0xdf79c8afe89765fd,
+		0x9cf82532179a846b,
+		0xbf375e83258c93d7,
+		0x1c82e548769fb245,
+		0x93615ad98594d2b1,
+		0x8cb31e6a9285ce1f,
+		0x72be15aa9d56fe7b,
+		0x45a81e9cbc6a1de7,
+		0xc7a36591fb8e2d65,
+		0x19d2bca43d825bc1,
+		0x1687be432b846a3f,
+		0x8791fb443a75689b,
+		0xe6af5248756ba819,
+		0x74e9b26ba36db785,
+		0x71b845cba37fb6e1,
+		0x9e5d18bdc182d45f,
+		0x5e18cf4ede65f3cb,
+		0x6e93a7132f7a1439,
+		0xb68c7ae54e7c32a5,
+		0x35edb6887c8e6213,
+		0x35612fa98a715e6f,
+		0x6bf7c13a98536edb,
+		0x21eabf5dc7568d49,
+		0x5c214a6fe3489cb5,
+		0xe795ca41f46dcb23,
+		0x25b63a42124ec98f,
+		0x5e6192b54152e7fb,
+		0xd1529b687f451869,
+		0xe975d4298e4927d5,
+		0x7638fc1bad6c4753,
+		0xf861c42cb93d54af,
+		0xad25b31fea61842d,
+		0xb9136271f754a289,
+		0x4edf63132847a1f5,
+		0x8b3fdc532549bf63,
+		0xabdf28165239adbf,
+		0x8f523bd8714fec3d,
+		0xfa1569c98f431da9,
+		0xf346dcacbe463c17,
+		0x6ba8d15fed294b83,
+		0x51c68d3fe92a48df,
+		0x4d7ca5921a2e685d,
+		0xfec3b9d54a3186c9,
+		0x45a1bfe98924b637,
+		0x4f8b2a7a9627c5a3,
+		0xa1dfc86cb64ad521,
+		0xb4c5261ba13be27d,
+		0xc8471b5bac2df1e9,
+		0xb94527a1fe243157,
+		0x15ef3b832d164fb3,
+		0x3a874dc65c296e31,
+		0x5f982ea5491a5c8d,
+		0xfa4c9b16571d6bf9,
+		0xefa748ddc821ab67,
+		0x934e15adc614b9d3,
+		0x29ba38dfe427d951,
+		0x5d7863b1f218e6ad,
+		0xa1bd7655431cf62b,
+		0x6cf89d143dfe1597,
+		0xd329fcb87ce145f3,
+		0xae4b7d3a9cf56471,
+		0x45efd29989f762cd,
+		0xda6b37edc7fa814b,
+		0xe19c275cb4ec8fa7,
+		0x438dabfdc4dfae15,
+		0xbde5a4f325f3cd81,
+		0xa92468d432f4caed,
+		0xaf7cb2d541e7fa5b,
+		0x39a21d765feb1ac7,
+		0xc67f5b298cde2a35,
+		0xfd72398cbce258a1,
+		0xe4761a8dcad4671f,
+		0x71b64a51f9e6857b,
+		0x4dfb63e216da94e7,
+		0xcf79d48327edb365,
+		0x31a9de2765dfb3c1,
+		0x7e5f32a985c4d13f,
+		0x3bc21a8871c4ef8b,
+		0xa42f5cea9db81ef7,
+		0x12e547bbadcb2e75,
+		0xcb829561f9ae4cd1,
+		0x3af78e632ac16b4f,
+		0xac73d49328d369ab,
+		0xc75d21a547d68a29,
+		0x95ae7b4764dab895,
+		0xe7159af984acb7f1,
+		0x73cad18a92aec56f,
+		0x14697dfdc1a2f4db,
+		0x3815964fefc71549,
+		0xcbe457321fc923b5,
+		0x7b9234d65ebc6423,
+		0xbd9831254bad518f,
+		0xab3742f658916feb,
+		0xe3789dbba7b38e59,
+		0xac2f564cb4a69dc5,
+		0xd42fba9fe5a9bc43,
+		0xcab48f1fe27bca9f,
+		0x834e5d63238fe91d,
+		0x81a4e32652c31a79,
+		0xed368f154fa628e5,
+		0xb1ed25987eba4863,
+		0xd453f1887c8a45bf,
+		0x91d7326cba9e753d,
+		0xb8793a2fe7b183a9,
+		0xb61e9341f8a5b317,
+		0xfa175e6326a7c183,
+		0xea7bc3f32367aecf,
+		0x1a46d826527ace4d,
+		0x84cde976516efdb9,
+		0x94e3bf1baf943d27,
+		0x6edf532cbe864c93,
+		0x435d716dcb6749ef,
+		0x1a3c8471fa7b596d,
+		0x3ed4ab621a5e67d9,
+		0x514cbf243a91b847,
+		0x723c4a165784c6b3,
+		0xe793fbdba598d631,
+		0x1379e42ba269e38d,
+		0x38fdc9bba16be2f9,
+		0xf8a7295dce8f1267,
+		0x7168e431fe8451d3,
+		0x14a859b32d876f41,
+		0x5934c7d32b475e9d,
+		0xd956ba25495a7d1b,
+		0x4fc7b186564e9c87,
+		0xbd3c861a9761bae3,
+		0xdea4657dc574da61,
+		0xf84d97edc245e7bd,
+		0x56f8132fe159f73b,
+		0x7d9ac464325d16a7,
+		0x29367de54e6f3715,
+		0x7f6d43ea9e736581,
+		0x94562c198b4563ed,
+		0xb5e3129bac49825b,
+		0x17ae93fed84b91c7,
+		0xeb3a928dc74daf25,
+		0xa53c7d21f652ce91,
+		0x84a752f21543cbfd,
+		0x5d72a8b54235fc6b,
+		0x349b281762491bd7,
+		0x21ed3f598f3d2b45,
+		0xc1aef4698d3f49b1,
+		0x98fc354cbc43682f,
+		0x937b214fec24768b,
+		0xfb8d269fea2895f7,
+		0xb4a38652192cb475,
+		0xd93c21e6573eb4d1,
+		0xfd714a298751d24f,
+		0x29157ed98534f1ab,
+		0x6971d82dc4583129,
+		0x48c37a1cbe1a2f85,
+		0xbe65c39bac2b4de1,
+		0x926514aeda1e4c5f,
+		0x874e69f43d126acb,
+		0xe1b7ac654c158b39,
+		0xb7f5e9254817b9a5,
+		0x69b5a7e9872bc913,
+		0xe518dbfa941dc67f,
+		0x9274c8bba421f5eb,
+		0x7b85ac3fe3241659,
+		0x7eab315edef724c5,
+		0x54ead3921efa6543,
+		0xfe6d71c43ceb529f,
+		0xa134dfb65afe721d,
+		0x6dce7b465ae18f69,
+		0xab5197c987f39ed5,
+		0xc89e523ba6f7bd53,
+		0x7b1845aa93e7cbaf,
+		0x9a85723dc3fbea2d,
+		0x26a9345212defa89,
+		0x4f759cb761e329f5,
+		0x8a731c265fe64973,
+		0x9486b1365bd846cf,
+		0xaf4739598aeb764d,
+		0x31d68f2ba8de74b9,
+		0xb148265ed9e1b427,
+		0xb8ec5691f7e5c293,
+		0x6843cfd325c6b1ef,
+		0xc735489323b8cf5d,
+		0xbfe1ad2542bafec9,
+		0x4c6a13b982cf1e37,
+		0x9af315b98fc24da3,
+		0x168b749baed76c21,
+		0x641f9a2febc85a7d,
+		0x3e59b781f7cb68e9,
+		0xdf56472218cea957,
+		0x61b537f548d1b7c3,
+		0xcd59ba8768c5d741,
+		0x1ca3d42873b6e49d,
+		0xad956fc983c9f41b,
+		0x3c5d9a8cb2cd1387,
+		0xd53a129cbdaf42e3,
+		0x42d15871fec47261,
+		0x3f75d8b21c945fad,
+		0x6f729d843ca87e2b,
+		0x97fcaeb436ab8d97,
+		0x3b897166568d9bf3,
+		0x6fd3c8aa96a2db71,
+		0x7bdce48ba493e8cd,
+		0xbe791f2ed2a6f84b,
+		0xb93285e1f2ca18b7,
+		0x291d56e541bd3825,
+		0xa8ed9f643eaf4691,
+		0xb8fde2c65c9264fd,
+		0xa1f48de87da5836b,
+		0x1a429fc76ba892d7,
+		0x4f5c821ed89cb145,
+		0x6df873adc57dbfa1,
+		0xa6b29d8fe582cd1f,
+		0x2e74ba321483fd7b,
+		0xec2bfa6543961ce7,
+		0x6df59428719a2c65,
+		0xef3b84c76f7d4ac1,
+		0xa45c3d698c7e593f,
+		0x75a1d9bdcd82679b,
+		0x25d9c43fec85a719,
+		0xa2946cb1fa79b685,
+		0x1fb97463287ab5e1,
+		0x391857f3267dc35f,
+		0xcbd724a76571f2cb,
+		0x7fc5a93cb5a61239,
+		0x1e48fb2dc29831a5,
+		0x469857cbad694ef1,
+		0x78d3954bac5b4d6f,
+		0x8cd4769fe94f5cdb,
+		0x6c3ae2f21d628c49,
+		0xc18e5d632c649ab5,
+		0xe3ad69b65968ca23,
+		0xed2583f7654ac78f,
+		0xabe59629834cd6fb,
+		0x527f146ed4821769,
+		0x39ca46bfe18426d5,
+		0x364b98ffef794653,
+		0x832d96a21e4953af,
+		0x3b81c6254e5c732d,
+		0xa36b49765c4f7189,
+		0x9625a4d87a429fe5,
+		0xf27d3b6ba945be63,
+		0x512c437a9536acbf,
+		0xa8471bedc549eb3d,
+		0xb271d89fe23dfba9,
+		0xafb93cd545623b17,
+		0xd2948c6871654a83,
+		0x6319aef65e2647df,
+		0x62f53e998e2a675d,
+		0xadeb2c998b2d75c9,
+		0xa493b87dcb2fa537,
+		0x62f4359fe952c4a3,
+		0x7c216be1f957d421,
+		0x3e1795b32638e17d,
+		0xec742f543428efd9,
+		0x9deb26c9853d1f47,
+		0x6f3d2e5a92514eb3,
+		0x8163decbaf256d31,
+		0x5d87bfcbae165b8d,
+		0x2fab5e4edc186af9,
+		0x687e3451fb1d9a67,
+		0xbf3d56c3291fa8d3,
+		0x213f54876a23d851,
+		0x3c1f7ed76714e5ad,
+		0x6b57c84a9618f52b,
+		0x5c981d3cb52c1497,
+		0x93146d7cb51d24f3,
+		0x1a437fecbdef5371,
+		0x165297ffebf361cd,
+		0xe8a423b21ce57f3b,
+		0x18be73f32bf68ea7,
+		0x2a89c5f548fbad15,
+		0xecd37b2656febc81,
+		0x28693ad875f1c9ed,
+		0x1bf8ed9ba4e3f95b,
+		0x64a8b92ed3f619c7,
+		0x4d5af31fe1fb2935,
+		0xfeb186c432fd47a1,
+		0x8e94bfd43dce561f,
+		0xc6f78b165de2847b,
+		0x7432ae876bd593e7,
+		0xb16fca998ae9b265,
+		0x54b837ea97eab2c1,
+		0x21b68e5a95acbe2f,
+		0x8396bfaed4c1fe8b,
+		0x1759ce8325c41df7,
+		0xb9adf7c543e82d75,
+		0x5da183b762e94bd1,
+		0xdb78c3276ebc5a4f,
+		0xa174f9e76dcf58ab,
+		0x8a5192ecbcd3a829,
+		0x9d185f2fead4b795,
+		0x3dfa1c4fe7c8b6f1,
+		0x28b45fa217bac46f,
+		0xc537db83259ce3db,
+		0x9f217d4987d21349,
+		0x67d2feca94d632b5,
+		0x8d324f7cb4d96123,
+		0xfd1e27b98da94e7f,
+		0xd71a63fa9c8a5deb,
+		0x6a51b94febaf7d59,
+		0x35f24cd21da29bc5,
+		0xa1fcd93329a6cb43,
+		0xb21a4df435a6c89f,
+		0xe295dc17659ae81d,
+		0xca321f6983adf679,
+		0xba14f7ddc4b127e5,
+		0xa132869fe1c54763,
+		0xcb6957aede9754bf,
+		0x93528bf21f9a743d,
+		0xa5efc7943e8d72a9,
+		0x631de7f65c9fa217,
+		0xdc128e576a92bf73,
+		0x45adc6e98674adcf,
+		0xcb25864ba587ec4d,
+		0xb81f9e5ed368fcb9,
+		0xa472db31f49e1c27,
+		0xf8a7d53325a14b93,
+		0x964ae8f6519348ef,
+		0xad1be6943f97586d,
+		0x2731e6b54e5a76d9,
+		0x3db6fa2a9c8da647,
+		0xdab859fdc97fa5b3,
+		0x15863d7fea94d531,
+		0x549ebc11f675e28d,
+		0x4c6e3ad32567e1f9,
+		0xa6df2355459c2167,
+		0x48732bf7647d2fc3,
+		0x95142dbba3926e41,
+		0xab7951398f635c9d,
+		0xcd15264bae567c1b,
+		0x4f37169fed4a9b87,
+		0x95ca2611f85ca9e3,
+		0x65fe7ca32a5fc961,
+		0x267ad9543852e6bd,
+		0x86c23e154875f63b,
+		0x1382e95cb46915a7,
+		0x3a9721fcb48c3615,
+		0xbdfa659dc27e5481,
+		0x1375f64cbf5162ed,
+		0x6e2b1831fe64815b,
+		0xa94758221d358fb7,
+		0x52ed87143c49ae25,
+		0x916a7db6584cbd91,
+		0x172d3bc6563ebafd,
+		0xe7bc2ada9742fa6b,
+		0x3d75a46dc6451ad7,
+		0x6f12793fe3692a45,
+		0x27bae5d1f25c48b1,
+		0xb2d497f4314d572f,
+		0x3d18a9654f31758b,
+		0xeb41a5776d2394f7,
+		0x6125873a9d28b375,
+		0x9a5fe1798a49b3d1,
+		0xdf71e85ba83bc14f,
+		0x425e6cdba52edf9b,
+		0x91876acfe7542f19,
+		0x538ca6b217362e85,
+		0xfb7c184765384ce1,
+		0x295436d8712a4b5f,
+		0xa4efc7276f1e59cb,
+		0xad165f7cbe218a39,
+		0x4e3a5b8dcd13b8a5,
+		0xfa81594feb27c813,
+		0x8f2945cfe819c57f,
+		0xfbe1a373271ad4eb,
+		0x2983d165471ef359,
+		0xb324751a981423c5,
+		0xcea9d81cb7186243,
+		0x5d7c13ecb328519f,
+		0x2f85ea487cd85efb,
+		0x342d516babfc7e69,
+		0xc29471fcb9ef8cd5,
+		0x38a2dc521af2bc53,
+		0x8a7961f327e4c9af,
+		0x96b5a37546f7e92d,
+		0x3b79df4654ebf789,
+		0xb5a342da94ed18f5,
+		0x7a5ef24dc5f14873,
+		0x64f91cecb1e345cf,
+		0x97f6458dcfe8754d,
+		0x2cba86d21fea73b9,
+		0x6b37d8c54ceda327,
+		0xd2be6f765adfb193,
+		0x6974f1e657b2aedf,
+		0x3f2596d987b4ce5d,
+		0xbd7e943984b6fdc9,
+		0x5d62183dc5eb1d37,
+		0x974e1b51f4de2ca3,
+		0x6a9fbe3545e36b21,
+		0xae951db541e3597d,
+		0xc27a4de43fc567e9,
+		0xdb7c28954edba857,
+		0xc2a46b3879bda6c3,
+		0xdc562bfba9bfc641,
+		0x7f13ad2dc7b2e39d,
+		0xf2a835dfe7c6f31b,
+		0xd5b682a436da1287,
+		0xc27f1e8656cb41e3,
+		0xe82b4d9873bd4f51,
+		0xbe21c9d872b15ead,
+		0xb314ed698fa47d2b,
+		0xc34856ebaeb58c97,
+		0x8ab5c31edcb89af3,
+		0x35471ce1f89dca71,
+		0x5e6b39d2168fb7cd,
+		0xf6ac278438a2f74b,
+		0xdaf9ec6548c516b7,
+		0x8acb742a96ca3725,
+		0xe72dfc6ba3bc4591,
+		0x93b4c61ba19c53fd,
+		0xa76ec49edfa1826b,
+		0x16eca4d1fea491d7,
+		0x2cd4a6f21d97af35,
+		0xd48eb1c43c78bea1,
+		0xe238a655487abc1f,
+		0xe97cb535456fec7b,
+		0x9378ec1ba6931be7,
+		0x1b698afed4a72b65,
+		0x67dc58afe3a849c1,
+		0x4f68513fe19b583f,
+		0xd35e47b3218e569b,
+		0xc1b953654f82a619,
+		0x245a3f776e93b485,
+		0xef9c58376c87b4e1,
+		0x3275cbd98a79c25f,
+		0xf26ba78a976ae1cb,
+		0x5e974a8cb56def29,
+		0xf73d984fe6832f95,
+		0x7cb93fa325864df1,
+		0x25e4687432784c6f,
+		0x135c67b541695adb,
+		0x25e9f7876f5e7b49,
+		0xa4d921398e61a9b5,
+		0x84369cecbd75c923,
+		0x72a861ceda45c68f,
+		0x2478b3ffe748d5fb,
+		0xf47b2ce2185cf469,
+		0xafb1ec54387f14d5,
+		0xf57e831ba8926453,
+		0xe8b5c47a937652af,
+		0x7182e6ccb369712d,
+		0xc7b31debae3b6f79,
+		0x4bf239ebab3c8de5,
+		0xec2684d1fc51bd63,
+		0xfdc74e621943cabf,
+		0xc4763f932946ea3d,
+		0x813cf5254637f8a9,
+		0x286ab54a985d2a17,
+		0x3c91da5cb65f2983,
+		0x23517a4cb35246df,
+		0xc31a768fe134765d,
+		0x8152d3ffef2874c9,
+		0x3e5f26c21f2ca437,
+		0xf2d914e65d4eb2a3,
+		0xd14ae3298c64d321,
+		0x9cd8ab187923cf6d,
+		0xefb149398725fed9,
+		0x148bfdadc83a1e47,
+		0x1329876fe64c2db3,
+		0xd48f632fe64f5c31,
+		0x6543dbf214325a8d,
+		0xe6d983c6512468f9,
+		0xde23cf854f18a967,
+		0x591a3bf76e1ba7d3,
+		0x2c4f5e3a9b2ec751,
+		0xfe7cd32cb921e4ad,
+		0x3c4eb85ed915f42b,
+		0x3574b2a1fa281397,
+		0x23b71e86581a42f3,
+		0xe283c457683d5271,
+		0xe71daf47631e4fbd,
+		0x7f4ec52a94127e3b,
+		0xe4f725b76ef38da7,
+		0xc4813a7a9df7ac15,
+		0x85193fbedaf9cb81,
+		0x1e34d9adc6fab8ed,
+		0x5974b68217dfe85b,
+		0x351cbae549f318c7,
+		0x2e9f3b1769f72835,
+		0xe12356a985f946a1,
+		0x6354ed7a93eb651f,
+		0x38e9576ba1fe637b,
+		0x817fc34cbfd192e7,
+		0x647bce11fde4b165,
+		0xb4fe67d32cd6afb1,
+		0xd97af65439c8bd2f,
+		0x4528f69436caed8b,
+		0xfb683d5545adebf7,
+		0xcf978dbba8e32c75,
+		0xc2e1859cb5e64ad1,
+		0x3e5a679dc2d8594f,
+		0xa3c5eb21f1ec57ab,
+		0xcf9a814431de8729,
+		0x47b2df943fd1b695,
+		0x2491ec876dc4b5f1,
+		0xaf392ed65ab7c36f,
+		0x3bfd279767a8e2db,
+		0x4369b75ba7bcf149,
+		0x6917c52ed7cf21b5,
+		0x3129a46fe7c45f13,
+		0x28f49c3213b54d7f,
+		0x4192ad8432a75ceb,
+		0x3a265d9541db7c59,
+		0xca3d17954f9e8ac5,
+		0xa173e5298eb1ca43,
+		0xde5cb7a98ba3c79f,
+		0xa64123ddc9a6e71d,
+		0x2c697f1fe6baf579,
+		0xca76db8328ac16e5,
+		0x8b12e7c548bf2563,
+		0xd86f5a2876a253bf,
+		0xe85c2fba94b6723d,
+		0x2d59c37cb2c871a9,
+		0x57b6348a9d7a8ef5,
+		0xd194e82cbc8dae73,
+		0x618ac3bfe971abcf,
+		0x26ba5f321a83eb4d,
+		0xc4685ba32875fab9,
+		0x8431af26589a1b27,
+		0xd568cae8768d2a93,
+		0xf83d726a948d37ef,
+		0x847516edc3a2576d,
+		0x683219bfe1a475d9,
+		0xbac875ffef89a547,
+		0x658c73221f7ca4b3,
+		0xecb12f365d8ec431,
+		0xe7346b865b72e18d,
+		0x172cb6865863dfe9,
+		0x928fd61cba981f57,
+		0xc457e9fcb6792ec3,
+		0x71b5f26fe68c5d41,
+		0xfcb2461fe26f4b9d,
+		0x34cb618324837a1b,
+		0x842cda1431649a87,
+		0x21be3fd54f57a8e3,
+		0xca2384187e5bc861,
+		0x4e1a6238794ec5bd,
+		0x1be7f6adca71f53b,
+		0x72d6a59feb8514a7,
+		0x7a1d8961fa893415,
+		0x1a95ed83297b5381,
+		0x9bef4c24346b51ed,
+		0xaf961e48725e6f4b,
+		0x1a4e36ca91528eb7,
+		0x2d78a5ea9f46ad25,
+		0xc274598bae47bc91,
+		0x912e6d4dca38b9fd,
+		0x9cb647d1f83de96b,
+		0x4af126743b5219d7,
+		0xb5cda2643b762945,
+		0x23c81e77695847b1,
+		0x2fa1d34a974a562f,
+		0x1432e97ba23d648b,
+		0x3a8d196cb14e83f7,
+		0x9f8265cedf43b275,
+		0xba2d5c41fe46b2d1,
+		0x3fbc6e521c27be3f,
+		0x82b7efc43a28de9b,
+		0xebd7fa66583cfd19,
+		0x12fb3caa9a412d85,
+		0x25fdb8cba8354be1,
+		0x1d2ba93dc6274a5f,
+		0x1ba94f5fe32958cb,
+		0xe1396241f12d7839,
+		0xe2574894312f97a5,
+		0x431a87976f24c713,
+		0x92cbd8576d15c47f,
+		0xb4cf57976a17d3eb,
+		0x2f6c57998a1bf259,
+		0xced8526cb93e12c5,
+		0x8634b72fea526143,
+		0x5821e36ed6134e8f,
+		0xde69ac3324165dfb,
+		0xa9e6b235431a7d69,
+		0xde59b847621c8bd5,
+		0xcad513476dfeab53,
+		0xd35c24f76be1c8af,
+		0x421573ca9af4e82d,
+		0xd761af4dcae5f689,
+		0xc53f914ed8ea17f5,
+		0x45f67ab219fd2673,
+		0xc37fb64326de34cf,
+		0xd3425e7986f2734d,
+		0x3162794983f572b9,
+		0x3e51862cb3f9a127,
+		0x8a1e2bd87edbaf83,
+		0x4ca65bd878ab9cdf,
+		0xc8e19b31f9b1ec5d,
+		0xde246f9218d3fbc9,
+		0x9b2dfae54ae81c37,
+		0xd9486b2657e92ba3,
+		0xeb2f7d3987ed5a21,
+		0xab8fd71a93cf487d,
+		0x97f4e15cb3d276e9,
+		0x36b5479ed1e4a657,
+		0xc4f659bfefd8a5c3,
+		0x57fb8da32fdbc541,
+		0x786492e43baec29d,
+		0x3c41e8976ac3f21b,
+		0xe3d2b41a9bd52187,
+		0x1a382c7a98b72fd3,
+		0xe41af78cb7ca4e51,
+		0x89b14adfe39b4cad,
+		0x82f976dfe3af6c2b,
+		0xd4f6a23213d28b97,
+		0xb2719e3541c5a9f3,
+		0x6a925c754fb8c971,
+		0x89b2ca154e89b6cd,
+		0xe16d8cb87a9de64b,
+		0xa8739fbedac215b7,
+		0x4829c35feac73625,
+		0xbc2ea9d1f7c85491,
+		0xc2b6ed5216a952fd,
+		0x52687a1434ad716b,
+		0x3d69b515429e6fc7,
+		0x69b5f12981b2ae35,
+		0x5f36b1e87f85bda1,
+		0xb7a48c3a9d87cb1f,
+		0xf56183bedc69ea7b,
+		0xe59cb68ed86cf9e7,
+		0xa8ce1d443cb12a65,
+		0xc97d6fb439a548c1,
+		0xde92b1c546a8573f,
+		0xf36e4858738a659b,
+		0x2c658a3cb3ad8519,
+		0xd416f28dc19fa385,
+		0x35b74f1dcf84b3e1,
+		0x64218cdfed86c15f,
+		0x9f7462d21c56dfab,
+		0xe5cd61243b6afe29,
+		0xaf1e58b54a7d1e95,
+		0xe86d2c1879824cf1,
+		0xeb18672ba7834b6f,
+		0x6152bfddc37659db,
+		0x716a3f9fe26b7a49,
+		0x8b49e5c1f16d98b5,
+		0x2dca8f65417fb823,
+		0xd65412843e62c58f,
+		0xd4fe68c43c65d4fb,
+		0x35eb16a87c58f369,
+		0x7f16d5ea9a7b13d5,
+		0xa584e12dca8e4253,
+		0xea65cb4ed87251af,
+		0x94b8c31fe5746f1d,
+		0xb58cad7213456e79,
+		0x4251876432498ce5,
+		0x542acfe8715dac63,
+		0x4e86c1f65d3ea9bf,
+		0x51bf63798c52e93d,
+		0x4986cf3cbc34f7a9,
+		0xdbc952afec5a2917,
+		0x39c87a41fa5c2783,
+		0x28f3adb2184c35df,
+		0xbe4529f43961745d,
+		0xf9ea5319865473c9,
+		0x6539ad1cb458a237,
+		0x5fa6b48dc259b1a3,
+		0xb69d35887c2a9def,
+		0x23a6d5ea9a2fbe6d,
+		0xc62a5d9fea32fcd9,
+		0x17ab38532c361d47,
+		0x8efb39c65a482cb3,
+		0xdc5843f8794c5b31,
+		0x439eb588762e498d,
+		0x29e375acb53167f9,
+		0x451a93eed423a867,
+		0x9adf5b1fe127a6d3,
+		0x2465c98fef2ac651,
+		0xf38e57632f1bc3ad,
+		0xda974cf65c1fe32b,
+		0x95b1f7698d341297,
+		0x3f5d2bea9b2741f3,
+		0xd76ec82cba294f61,
+		0x61d2f75ba6194ebd,
+		0xf4b867edc51e6d3b,
+		0x7d31e421f4218ca7,
+		0xcd265e743624ab15,
+		0x2e9c71365326ca81,
+		0x258bad143cf6b7ed,
+		0x7a21d9854cfae75b,
+		0xc3f9eb2769edf5c7,
+		0x4198f37dcbf12735,
+		0xa8b6132ed9f645a1,
+		0x83e4a6ced7e8641f,
+		0x39b5cfe215fa627b,
+		0xa5c49be434fc81e7,
+		0xf92a317762de9f45,
+		0xc9843da872f3aeb1,
+		0x28ed14a87ed5bc2f,
+		0x1ae52cb87ad6ec8b,
+		0x9165a74cb8c9eaf7,
+		0x8c9a6271f9de1b75,
+		0x84b621943ae249d1,
+		0x3a49bcd329d3584f,
+		0x9ed2a1b434e756ab,
+		0x51e2df3874eb8629,
+		0xcae29d1982eda495,
+		0x1843cada92cea4f1,
+		0x9521836baeb3c26f,
+		0x2bac3671fca5e1db,
+		0x483f5a621cb7ef39,
+		0x92a5ef7439cb1fa5,
+		0x31de249769bd4e13,
+		0xfd8a12b768b14c7f,
+		0x94cbd35986c35aeb,
+		0xb6ad894dc3d67b59,
+		0x561a39cfe2da89c5,
+		0x1a276c31f1cdb943,
+		0xf57bda9321aeb69f,
+		0x9fa5b7354fa3e61d,
+		0xdb7589f43db5f479,
+		0xf3ed15487cb914e5,
+		0xd27e581a9abc2463,
+		0x839d2e1ba79d42bf,
+		0xfd89137fe8b2713d,
+		0xa83b21cfe4b36f89,
+		0x694cb52213a68df5,
+		0x2e3c8b1542b9ad73,
+		0x6abe1985417b9acf,
+		0x3b8429765e7fca4d,
+		0x37bad4876d72f8b9,
+		0xf467e18dcdb61a27,
+		0xb26dc78fecba2893,
+		0x759bcf3ed78a36ef,
+		0xca8e4b32189e456d,
+		0x2c6fea8436a174d9,
+		0x692dc74986b5a347,
+		0x6532bce98497a2b3,
+		0x87fad32cb49ac231,
+		0xefa7c3198e5abf7d,
+		0x4d7136f98a5fcde9,
+		0xad674b31fc931e57,
+		0x4a8c2e721b862dc3,
+		0x5d16e4b43b895c41,
+		0x419be5a4376b4a9d,
+		0xf59463d9857e691b,
+		0x29fad14dc461a987,
+		0xd7a31b8dc284a7e3,
+		0xf34615cfe298c761,
+		0xcaf4716fef58c4bd,
+		0xf56ce4221f6ce43b,
+		0xb7a24c543c5ef2a7,
+		0x735e2af98d964315,
+		0xe98b457bac975281,
+		0x85d26c1a98574fcd,
+		0xa735f94dc75a6e4b,
+		0x47289e3dc34e6db7,
+		0xd94e1871f471ac25,
+		0x38de17b32364cb91,
+		0xd921e4a43145b8fd,
+		0xbe83cf154f39e86b,
+		0x6ca478f65c3bf6d7,
+		0x8e542bfbac6f1845,
+		0xfb4ae36edc7346b1,
+		0x5214acfeda47652f,
+		0x94d63c21f749638b,
+		0x3728c9b2164b82f7,
+		0xc94fa754364ea175,
+		0x8e3526a87452afc1,
+		0xd2753bc98154bd3f,
+		0x82fcb4987f25ed9b,
+		0x439c752bad38fc19,
+		0xf53bd9cfeb3d1c85,
+		0x3c8ea76ed94f3ae1,
+		0xa2ebc7d21b32495f,
+		0xadc7e614392457cb,
+		0x796a84f6562a8739,
+		0x69bc1f39842c96a5,
+		0xbfd4e92ba54eb613,
+		0x6e58921cb241c37f,
+		0x8f41c7dbaf14d2eb,
+		0xd7ba65cfed27f159,
+		0x2fa1dbc54e3a21c5,
+		0x9fa248e76b1c4f23,
+		0x1d8cf2b6591e3d8f,
+		0x6ebd185878125cfb,
+		0x4635ac2cb8147c69,
+		0xf5147d9dc4178ad5,
+		0xbc58263fe41cba53,
+		0xcd7341ffe21db7af,
+		0xefb1c2365431e72d,
+		0xab6c2d443de2f589,
+		0x312d7ea54ce716f5,
+		0xc6b2d4f98cfa2573,
+		0xe2f5bd8878ea43cf,
+		0x5fdb473ba8fe624d,
+		0xb67e859ed6f271b9,
+		0xc13a684ed5e49f17,
+		0xefdc897214f6ae83,
+		0xab92d1f432e79bdf,
+		0xe26a731541facb5d,
+		0x6ac982d54dbfeac9,
+		0x5c81ed4a9de41b37,
+		0x75af418cbce629a3,
+		0x3fe8ca7edbea5921,
+		0x6b8dc311f8eb467d,
+		0xd62a8fc217cd65e9,
+		0x7c6ad21438e1a457,
+		0xc38b2a4876e5a4c3,
+		0x5e8713ca95e8c341,
+		0xa594c38872e8c19d,
+		0xe3a91bf76d8acef9,
+		0x8147d5ea9badfe67,
+		0x21b95ac1fab42ed3,
+		0x81d93c532bc74d51,
+		0xf8d6317328c74bad,
+		0x5d2679c547dc6a2b,
+		0x89a621e654ce6a97,
+		0xb5ea316a95c1a8f3,
+		0xf39e5accb3d4c871,
+		0xac72314fe1a6b5cd,
+		0xa48716eedfa9e54b,
+		0x4b6d9ac21e9cf3b7,
+		0x42b1f5976dbf1425,
+		0xa92f4c887dc45391,
+		0xab936fc879a651fd,
+		0x42b1af3a97a86f5b,
+		0xf382ae7cb49a6ec7,
+		0xdb3726fdc4ae9d35,
+		0xae429c51f492bca1,
+		0xad7689332394ca1f,
+		0x542ec6d431a5e97b,
+		0xad4827143d69f8e7,
+		0xa1c85e487ead1965,
+		0xef71cb398b9f37c1,
+		0x4df2a73dcba2563f,
+		0x6abcf47fe8a5649b,
+		0x24ca65b1f6ba8419,
+		0xd82a7b62169ca285,
+		0xb32958c5458da2e1,
+		0x1fc8b4e76381be4f,
+		0x3fd1b8a76173deab,
+		0x1759fa498e76fd29,
+		0xd8e5726cbe7a1d95,
+		0x18c69a7eda7c3bf1,
+		0x58279f3ed97e3a6f,
+		0x6bc3e4221a7258db,
+		0x1df3b9732ba57849,
+		0xde9854f4346897b5,
+		0x25cfde3a958cb723,
+		0xd63b54ca926db48f,
+		0x1fb46dcba271d3fb,
+		0x2435b1adce74f269,
+		0x7be6d2a1fe7812d5,
+		0x9c4638b32e8b4153,
+		0xafb598d32a5b3e9f,
+		0x5182f3c5496f5e1d,
+		0x642dc1b98a526d79,
+		0x4791d56ba7648be5,
+		0xe3268aced458ab63,
+		0xeac9428ed249a8bf,
+		0x3ed821b1f15ec83d,
+		0x2c648af43251f6a9,
+		0x6cbe98254f652817,
+		0x2c98fbd87e592683,
+		0x8c9f51287b5934df,
+		0x8e4d1a7a9a4c635d,
+		0xe87f4d6cb84f62c9,
+		0xc64792afe964a137,
+		0x2d8f143fe645af93,
+		0xc67aedf214369cef,
+		0x8bcaf1954239bc6d,
+		0x6c783fb6513cebd9,
+		0x7d4c5e2a9f521c47,
+		0xfc467e1a9e452ab3,
+		0x8a6b3d1dcd485a31,
+		0x271cfa9feb2a478d,
+		0x6dc9b75fe82c56f9,
+		0x9a2eb3721a2f9567,
+		0xb2385de76842a5d3,
+		0x4c713e6a9837c451,
+		0xd59e6af98437c2ad,
+		0xd4e3bc8a934ae12b,
+		0xe2a6b75a9d1cef87,
+		0xea76d1fcbc412fe3,
+		0x3b65e781fc254e61,
+		0x5e31b4c32a164cbd,
+		0xcb6328954a196c3b,
+		0x57693cd5481d6ba7,
+		0xe27cad39872f9a15,
+		0xef95a67cb623c981,
+		0x1b96fc2ba314b6ed,
+		0xb1823f7ed218e65b,
+		0x68f71c9cbde9f4c7,
+		0x639aebf32efd1635,
+		0x71e3fa865cef34a1,
+		0x2c45ed987be4631f,
+		0xfdba41298af5617b,
+		0x6ad748ba95e86fd7,
+		0x83b4965ba6fb9e45,
+		0x5e72df3ba4fe9db1,
+		0xae3572ced4e1cb2f,
+		0xf59c7d3212f3ea8b,
+		0xb5471fd431d5e9f7,
+		0xa76198b54feb1a75,
+		0x35b9d2876bec38d1,
+		0xe5296bd98ace374f,
+		0x2437d56dc9e265ab,
+		0x1e4a96cedae68529,
+		0xab412e71f6e8a395,
+		0x3b45a96326dba3f1,
+		0xba8d751434cdb16f,
+		0xdc4a271653a1dfcb,
+		0xef4ac18871c4fe39,
+		0xcea62b798fc71ea5,
+		0x74cdba3a9eca4d13,
+		0xc5fb37eed9ac3b7f,
+		0x61e382ced7af49eb,
+		0x7d9b4f221bd27a59,
+		0xea1f4cd327d498c5,
+		0x6bf381e656d9b843,
+		0xaec1947763cab59f,
+		0xf9e26da983aec51d,
+		0x2ed8c1fcb2c1f379,
+		0xa75e24ddcfb613e5,
+		0x417265c1fec94263,
+		0x6b3518932da941bf,
+		0xcab217d43a9b5f2d,
+		0x72dfc41437af5e89,
+		0x7af9eb1767a28cf5,
+		0xf45361ea96b5ac73,
+		0x8ed54c6cb386a9cf,
+		0xc47f5dbfe28ac94d,
+		0xc3615ab1f18de7b9,
+		0xe94b3d1654c31927,
+		0x8a6197254fb52793,
+		0xd1f6c8b54c9735ef,
+		0x1e68cb487c9a546d,
+		0x1f8d24587a8c63d9,
+		0xe6482d1dc8af9247,
+		0x75b8142fe794a1b3,
+		0xc7b389dfe596bf21,
+		0xd256cfb21386be7d,
+		0x48b952c43268dce9,
+		0x7fc32e95418dfc57,
+		0x354c18f87f812bc3,
+		0x419ed76bae965b41,
+		0x57398dccbc76489d,
+		0x97d3b86fec7a681b,
+		0xac439821fa5d9687,
+		0xb8579362187f96e3,
+		0xda317c854893c561,
+		0xfd4bec376475c3bd,
+		0x6c824aba9478e23b,
+		0xf73a52ba926bf1a7,
+		0x837a9d5cbf8e3215,
+		0x12b68d5dcd824f71,
+		0x76431291fa634ecd,
+		0x5de6bf321c576d4b,
+		0xec86a5132a496cb7,
+		0x1b876e35486d9b25,
+		0x941c8258765fba91,
+		0x4b8c1a7a9452b7fd,
+		0xe9a27f8dc254e76b,
+		0xeba1723dc148f5d7,
+		0x58a3469fef6c1745,
+		0x47cebf932f6e35b1,
+		0x736e9b265d71642f,
+		0x84fceb287d54628b,
+		0xb137e26a9b4681f7,
+		0xfa87613cb83a9f65,
+		0x273e658ba64b9ec1,
+		0x657c4a2cb54eac3f,
+		0x8ebd63a1f342ec9b,
+		0x69dbfae32345fb19,
+		0x4b7f13e762491b85,
+		0xa9e123576f4b39e1,
+		0xf9ea31d87c2d385f,
+		0x24ce8fba9d3156cb,
+		0xc2ef18aedc248639,
+		0x16da2c9feb2794a5,
+		0x2e8c1631f84ab513,
+		0x9ef64532163cb27f,
+		0x21bac395453fc1eb,
+		0x8fc36d287532ef49,
+		0xefac6b5a92361fb5,
+		0xd9b7642baf194e23,
+		0xcb36714a9d1a3c8f,
+		0xb6437d5dc91d4afb,
+		0x419a3851fc217b69,
+		0x8b43f6e32b1389d5,
+		0x87deba654a17b953,
+		0xc1b26ed54518b6af,
+		0x9cb5f4d9851bc62d,
+		0x614d95eba31fe489,
+		0x2a6b54fdc62314f5,
+		0xe9473d1dcef62473,
+		0x132bc6fedbe742cf,
+		0x751ced632cfa614d,
+		0x54c789d328ec5fa9,
+		0xf867ca5549df8e17,
+		0x89ad2b1767f2ad83,
+		0xa6d3e84875e49adf,
+		0xc1e4b5da93f7ca5d,
+		0x43dc579cb2fae8c9,
+		0x9d6f478dc1edf937,
+		0xcaf6d13654f128a3,
+		0xe5dfb3954fe65821,
+		0xd9e2a7c43ce8457d,
+		0x1bdfac865bda64e9,
+		0xc34f26198aed9357,
+		0xd874ebfba7df92c3,
+		0x4fe63c1ed8e5c241,
+		0x7f5d8c4fe3c4bf8d,
+		0xfb3da72213b6cdf9,
+		0x2ba6ec5432cafd67,
+		0xde7b258762be1cd3,
+		0x93c74f598fd24c51,
+		0xf2a5e9487ec349ad,
+		0x48f3d62bacd7692b,
+		0x85fc691feadb6897,
+		0xa76f8d2fe6bc97f3,
+		0xd916fba328cfb671,
+		0xb517ecf436a2b4cd,
+		0x34265fd875c6e34b,
+		0x23a8d57763c8f2b7,
+		0x27e195fba4dc1325,
+		0xd8f6915bafbe4291,
+		0xe3dc642bab914fed,
+		0x92d3c1e1fca36e5b,
+		0x24dc3ba21ba56dc7,
+		0xfe49517328ba9c35,
+		0xcf957b15468d9ba1,
+		0xf7dac487658eb91f,
+		0xb5fc8a7a94a2e87b,
+		0x2183cd6cb2a4f6e7,
+		0x7125fa4fe2ca1865,
+		0xa5c3642fef9b36c1,
+		0x4b2873e21e9d453f,
+		0xf3bae6154ea1639b,
+		0xd18ace576db58319,
+		0x5b974fc76cb7a185,
+		0xf21c983ba6789fd1,
+		0xfed2341a957bad4f,
+		0x84735eca936fcdab,
+		0xa956f2dfe483fc29,
+		0x47d8615323a61c95,
+		0x7ce48d1652983af1,
+		0xac1327d54e7b396f,
+		0xc8f31e765c6e47db,
+		0x7982f3dcbda18749,
+		0x652178aedc8396b5,
+		0xbd14c8ffea98b623,
+		0x9dc5632fe569b38f,
+		0xe934db22156ac2fb,
+		0xc18ad5f4347fe169,
+		0xda6c1959869421d5,
+		0x6c893f2ba1972f43,
+		0x4f6c92798e573d9f,
+		0x3512bdca9e6a5c1d,
+		0xfc1eab4edb4e5c79,
+		0xb2c137d1fb618ae5,
+		0x4cda3e521c74ba63,
+		0xc7df58b32845a7bf,
+		0xc1db26a54659c73d,
+		0x5d416e98734ce5a9,
+		0x2d3b846ba36ef517,
+		0xf62c149ed1942583,
+		0x2983f4ecbe5643df,
+		0xa41d26b1fe49625d,
+		0x59b41f732e4b61c9,
+		0x74dac6f43b4d8f27,
+		0x54a792876b51ae93,
+		0x5f82e91767439bef,
+		0x7cab1e6a9735cb6d,
+		0x29a538ecb437ead9,
+		0x371bc59ed23cfa47,
+		0x84b7d96fe25f19b3,
+		0xbd9f734762745931,
+		0x2ba875f43f25468d,
+		0xbce718554d2865f9,
+		0xf692ebd98d2c9467,
+		0x3bdf24798a2e94d3,
+		0x4657921eda62c351,
+		0x7689fbdfe734c1ad,
+		0xfdb2915fe536df1b,
+		0xbc2d65921429fe87,
+		0xbafe7c57654b1de3,
+		0x152bc749824f3d61,
+		0x1ec6a8987f124abd,
+		0x512e8bda9e156a3b,
+		0xb7e8f93dcd1869a7,
+		0x2d1a4c6feb2ca915,
+		0x1872e5c1f92eb781,
+		0xf568ca443821b5ed,
+		0xa9e437b76813e45b,
+		0xbd7a49398516f3c7,
+		0x9cf1d83ba72b1435,
+		0xc64597fcb52d43a1,
+		0xa8d457ca9ced521f,
+		0xc3829d6bace15f6b,
+		0x76394bedcaf36ed7,
+		0x38692dc21bf79d45,
+		0xc721baf437f89cb1,
+		0x1ad3f68546ecba2f,
+		0xb97ac24654efd98b,
+		0xc18bd3fa94d2e8f7,
+		0x49d76efdc3f61975,
+		0x75ef81adc2f937d1,
+		0x14f78a5dcedb364f,
+		0x9b8af4621fde54ab,
+		0x87a23c665de18429,
+		0x873fc9276ce4a295,
+		0xf5bae91769d7a2f1,
+		0x5e834c2876c8ae5f,
+		0x39bf845874d9aecb,
+		0xd29bf54ba4bfed39,
+		0x179258c1f4e31da5,
+		0xea78f31325e74c13,
+		0xc1b98e3541d83a7f,
+		0xc1d867943fca48eb,
+		0x72de3ba54dce6859,
+		0xa5d2c6198bd197c5,
+		0x5fe9b67dcad5b743,
+		0x32e469aed7c6b49f,
+		0xc9475bd1f6b9c41d,
+		0x5ecf3a2215bce279,
+		0xa564e7f434adf1e5,
+		0xdc43e58a97d54163,
+		0xa359e6b871b53eaf,
+		0x84e2bcf87fa85e2d,
+		0x4dca12587eab5d89,
+		0xd9187aedca9d7bf5,
+		0x831b6cd1f9c1ab73,
+		0xb93257821793a8cf,
+		0xef419a5327a6c84d,
+		0x87fa6de434a8e6b9,
+		0x5b4e6ca984acf627,
+		0xe62db31ba4bf1693,
+		0xe258974cb1a234ef,
+		0xfead54bdcfa7536d,
+		0x4dca2151fea862d9,
+		0x4156f3932eac9147,
+		0xfdba83932b7d8fa3,
+		0xed8c21b76a93be21,
+		0xe7ca86f65683bc7d,
+		0x37642ae98475dbe9,
+		0x6d85b14dc389fb57,
+		0x6214bc7fe48d1ac3,
+		0xa358926fe29f3a41,
+		0xb182fd9431a2479d,
+		0xac815f443f95671b,
+		0x2f678c443e6a9587,
+		0x317b9ae76c7b95e3,
+		0x5fa816ba9a8eb461,
+		0x439b26fba871c2bd,
+		0xc1eb295ed785e13b,
+		0x6f2ca43ed365ef97,
+		0x45916be325791ef3,
+		0x2af46386548c3e71,
+		0xa94268f6516f3bcd,
+		0xb1476ea98f726c4b,
+		0x3d7154ca9e546ab7,
+		0xbfd9e25dcd689a25,
+		0x63bfc2afea5cb891,
+		0x2df41c3fe74ca6fd,
+		0xafbd68332971e56b,
+		0xc7694df32863f4d7,
+		0x64d8f71ba7891645,
+		0xba6d5f8a957a34b1,
+		0x637e5dfba17c532f,
+		0x2bf9d43bae4f518b,
+		0x93d7415cbc426fe7,
+		0x3d92b8a1fc349e65,
+		0x6f54d9b32b479dc1,
+		0xd38a46b32849ab3f,
+		0xa513f2d5463eda9b,
+		0x9e4732a98752fa19,
+		0xade6317dc7641a85,
+		0x1587ab9dc45738e1,
+		0xbe681c4ed14a375f,
+		0xb4cda5ffef2d45cb,
+		0x8adfe9421e2f7539,
+		0xa2598bc76e4293a5,
+		0xe4f9c5d98d57b413,
+		0xfcda17476a38b17f,
+		0x842e51c87628afdb,
+		0x9bd68e1ba62cde49,
+		0x14856f3ed7421eb5,
+		0xd69234a1f7564d23,
+		0xd75863e214263b8f,
+		0xd3874a66512849fb,
+		0xf38d76b54f1d5a69,
+		0xde1fab376c1f78d5,
+		0x93b8c17bad12b853,
+		0xbf9d58edc914b5af,
+		0xa81947dfe918c52d,
+		0x9c87da61f61be389,
+		0xb1e27ca4371ce2f5,
+		0x95617fe989514273,
+		0xc1da3949862541cf,
+		0xef5a637a92175f3d,
+		0x5d231b476df75ea9,
+		0x34db5f6a9cfb8d17,
+		0xa15e27fcbafe9c83,
+		0xaf13b48dc7e1a9df,
+		0xd6237ea218f3c95d,
+		0x543681d326f5e7c9,
+		0x35219ba545eaf837,
+		0xc49e6bf985fd17a3,
+		0x7e2c314ba5ef4721,
+		0x983254ccb1f2547d,
+		0x7c39f4dcbfd563e9,
+		0x6c8b4531fdea9257,
+		0xc3586de32deb91c3,
+		0x37816fb549cdaf31,
+		0x9e6518b547c1be8d,
+		0x7d9cf2e656b3dcf9,
+		0x7618dc4a94d5fc67,
+		0x31795beba5e91bd3,
+		0x59e76fbdc4ed3b51,
+		0x397b125fe1cf38ad,
+		0xa6c9ef7541e3682b,
+		0x8b9fd5632fd48697,
+		0x176589a54dc896f3,
+		0x89bd35476adcb571,
+		0xf3adb797679ea3cd,
+		0x7e5c61bba8c1e24b,
+		0x517af48ed6c4f1b7,
+		0x5e8467d1f7d93125,
+		0xbdac837325ca3f81,
+		0x2adf35b5429a3ced,
+		0x92b17f8761af4d5b,
+		0xabfec3765fa26bc7,
+		0x4295bef98ec69b35,
+		0xb61af3598dc7b9a1,
+		0xe895a1bed79ab81f,
+		0xb2e95841f59ed67b,
+		0x498c5ab328a1f5e7,
+		0x14fc5e2439c41765,
+		0xe921ca8876b835c1,
+		0x9b641e3982ba543f,
+		0xd35e97b981ad529b,
+		0xe796dcacbeaf7219,
+		0x5f64b39dcda29f75,
+		0x4ca9d681fb859ed1,
+		0x3c69a5821b87ac4f,
+		0x63abec532768dcab,
+		0x7318cd65467deb29,
+		0x2a453fc987a21b95,
+		0x94257e6cb6a539f1,
+		0x5e328d9dc2a7386f,
+		0x6547cd3fe18946db,
+		0x7f35ba1fef8d7649,
+		0xd73e6a821e7f84b5,
+		0x2fd431b76e94b523,
+		0x12b6e9854c75b28f,
+		0x92a376b65967c1fb,
+		0xe6321c79876adf59,
+		0xad86b25a946bfec5,
+		0x46fa152ed7912e43,
+		0xd86c1bafe2743c9f,
+		0x5187f4d323875b1d,
+		0x9c75b1d4316a5b79,
+		0xecb86a443f4c79e5,
+		0x258b39a87d5fa963,
+		0x674efcb98c52a6bf,
+		0xc7e941dcba75c63d,
+		0x65ef81aed857e4a9,
+		0x4812fb6fe86bf417,
+		0xbd1e3893297e1483,
+		0x6bd13ea6567142df,
+		0x63a5be4a9384615d,
+		0xbe537f1981465fb9,
+		0xc4ed356a9f4a8e27,
+		0x63c2f79bae4c8d93,
+		0x2daf49ecb93d8aef,
+		0x14c5a681f942ca6d,
+		0x69a35fd21a34e8d9,
+		0xd1fc68a32a38f947,
+		0x59c2a317675c18b3,
+		0xbdf64e7ba76e4831,
+		0x7d3c4e2cb361458d,
+		0xe9873d2dc15364f9,
+		0x19fab86edf289367,
+		0x319a4e21fe4a92d3,
+		0x57b981c43e4db251,
+		0xfcbd96e4382eaf9d,
+		0xfe39a5276943de1b,
+		0xf932de476924fd87,
+		0x4e2d891ba7481ce3,
+		0x25a1f86ed74b3c61,
+		0x26b8e7fdc42e39bd,
+		0x697823e1f241693b,
+		0x1c6e5b95412368a7,
+		0x7edbc9354f27a815,
+		0xebad16c65e2ab681,
+		0xf39e1d57691ba4ed,
+		0x56a139f9891fd35b,
+		0x1d289eacb913f2c7,
+		0xbcfa653fea481235,
+		0xec217581f73942a1,
+		0xfca9574325193efd,
+		0x27dbe686531d4e6b,
+		0xb4edf53983216cd7,
+		0x8af9cd287ef29c45,
+		0x3c4abe587df59ab1,
+		0x21d6c7398ae7b92f,
+		0x2871a95dc6fad78b,
+		0xd485f39cb5ecd6f7,
+		0xb85247d43af21875,
+		0xa86b5c9548f536d1,
+		0x681dc9b876e8354f,
+		0xd6c82f1872f953ab,
+		0xd9e86b7ba1fd7329,
+		0x8e91cb4baedf8195,
+		0x7158cefbabc39fe1,
+		0xf2b3478fe9c4ad5f,
+		0x374295d218e6adcb,
+		0xbcd5f64327daec39,
+		0xde97a25436cdfba5,
+		0xe8dcbf5a98e24b13,
+		0x9eb4c1fba5d4397f,
+		0x8ebd1c6ba2d647eb,
+		0x5916a2fed1eb6759,
+		0x98cab2dfefbd86c5,
+		0x2bfad8421ecfa643,
+		0x13f76ac54dc2b39f,
+		0x1dca34e65ab6c31d,
+		0x128c64e65ac8e179,
+		0x61c4852876a9efd5,
+		0x5e41836ba7bd1f53,
+		0x8347219dc5b13daf,
+		0xae712431f3b45c2d,
+		0x9f74ed5212d65c89,
+		0x26fd4b7431c97af5,
+		0x7cf9a6154fbd9a73,
+		0xc3a12ef54b8e97cf,
+		0x5d2c9e798ba2c74d,
+		0x6529143dc8a4e5b9,
+		0x52461e9ed8b9f527,
+		0x743a8b51f7bc1593,
+		0x5e42d632169c23ef,
+		0x5d89be7547b1526d,
+		0xcde5396873b461d9,
+		0xab13864a91b68f37,
+		0x823a7ce76f798ea3,
+		0xac65431a9e8cad21,
+		0xf91de3adc96fab7d,
+		0xb79a6841f872dae9,
+		0x43759cd21b94fa57,
+		0x8f35da2547a819c3,
+		0x9fab825767ac3941,
+		0x9a8e2368748e369d,
+		0xd3f4ba1dc4a2761b,
+		0x731feaced1b39487,
+		0x15fa43bdcf8794e3,
+		0xd617b5a1fe8ab361,
+		0x871ae4532e6ca1bd,
+		0x5c4721d4396ecf2b,
+		0x189fac554a62fe97,
+		0x3eb5c18879861df3,
+		0xe425739cb6893d71,
+		0x28d15a6cb4693acd,
+		0xa746193ed27e5a4b,
+		0x97ed6581f28169b7,
+		0xde2867443184a925,
+		0x9c8e2bf43f56b791,
+		0xf5891c243c48a5fd,
+		0xe9dbaf587a5cd46b,
+		0x5432c969895fe3d7,
+		0xcb87e39edb961345,
+		0x6f4cab1fe98743b1,
+		0xd4c75fbfe679512f,
+		0xd92378a2135a4f7b,
+		0xac8f2464324c5de7,
+		0x6be7352982719d65,
+		0x3461ecf87f549bc1,
+		0x2e67bda98d46ba3f,
+		0x12e7489bac37d89b,
+		0x9bcea64eda4ce819,
+		0x21f8ec6ed93ef785,
+		0x6ab951c32a6437e1,
+		0x175a8ef32947365f,
+		0xc2d84518763854cb,
+		0xb192378ba25c7439,
+		0x3fd5841cb14e82a5,
+		0x5a86e2bdcf64b213,
+		0x5d7c8e2cbc23ae6f,
+		0x2db65791f925aedb,
+		0xbfe2c7621b28ed49,
+		0xc85e6fd4382afcb5,
+		0x1f29dec8795f1c23,
+		0x1adc547a97423a8f,
+		0x5e9f4c8ba62548fb,
+		0x56749e1ed32a5869,
+		0x9c21548fe12b87d5,
+		0xb2834efedf1ea753,
+		0xcdf1e6543e21b4af,
+		0xb3578fd76e15c42d,
+		0xf279d1465c16e289,
+		0x53c19de87a29e1f5,
+		0x2e615cdcba4d2173,
+		0x2a18cd3a961d2ebf,
+		0xf3e256ddc7125e3d,
+		0xd174ba31f3145da9,
+		0x5afbde7434298c17,
+		0xd8ae97c6521c9b83,
+		0x146d9e543ceb98df,
+		0xbef531854aefb85d,
+		0x89dfc2187af2e6c9,
+		0xe163cf8cbae5f637,
+		0xca5fe31ed8f916a3,
+		0xb6c58f7fe8fc4621,
+		0xf9e4a6c216fe437d,
+		0x2b8c1ea545f162e9,
+		0x23fdec9983f49157,
+		0xc39bf5d871e68fb3,
+		0x329fab187fd9ae31,
+		0x9e7f1bd769ebac8d,
+		0xc2d31f9987aecbf9,
+		0x6da14f2fe9d2fb67,
+		0xfc8eda3329e61ad3,
+		0xa3e9c58548e93a51,
+		0xd75e9a2545eb37ad,
+		0x2fb49e1984de572b,
+		0x3cef274cb3e18597,
+		0xd9e37c1cb1d495f3,
+		0x261f953dcfd8b471,
+		0x75a9b861feb8a2cd,
+		0x864e3c732eacd14b,
+		0x5b8c9e43289edfa7,
+		0xfc52dbe87ac42f15,
+		0x28fd5c4879c63e81,
+		0xad96f5b985a73bed,
+		0xeca2574a93da4c5b,
+		0xbc87fa1ed2be5ac7,
+		0x2ab3dc71f2d19a35,
+		0x74186c2432d4b8a1,
+		0x6defb4843ea6b71f,
+		0x9edb14643ea9d57b,
+		0x61482c765a9bd4e7,
+		0x75c13de989aef365,
+		0x1586baeed9b534c1,
+		0x28ba4c9ed8b7523f,
+		0xd27c4831f4c8519b,
+		0xe4f3acd2139a5ef7,
+		0xca7b521432ad8e75,
+		0x82dc43b763a29cd1,
+		0xb17dcf376e83ab4f,
+		0xb3def8276e75d9ab,
+		0xfe5c8d9cbc78ea29,
+		0x61829faeda7cf895,
+		0x52f86beed79e28f1,
+		0x47abcd2219a2376f,
+		0x1879e5b3279645db,
+		0x2a4d9e7763ba7549,
+		0x1e6b32d8729c83b5,
+		0xcfd98eacb19ea423,
+		0xd942185bae72b18f,
+		0x32784bea9c63afeb,
+		0x3d526b81fb76de59,
+		0x58abfd221a68fdc5,
+		0x2379aef65a8c1d43,
+		0x5796f1d5476e2b9f,
+		0x6e3cfbaa97835a1d,
+		0x1fde938dc3845a79,
+		0xf3be17ddc26978e5,
+		0x3c1a87bfe17ca863,
+		0x879e524dce4d95bf,
+		0xdb3178432f71c53d,
+		0x36bf48132d64e3a9,
+		0xc72db1a65c68f317,
+		0xdb8cf47a9c7b1283,
+		0xa78e235a986b31df,
+		0xf74d386ba76e3f4d,
+		0xe8b6a34ed4625eb9,
+		0x1e46c721f3658d27,
+		0x63a4feb212578c93,
+		0x81b2adf4314a89ef,
+		0x68951dc54f3eb96d,
+		0xa1be3dc76c41e7d9,
+		0x1236ce9bac53f847,
+		0x16ec783edc5817b3,
+		0xf1c572afea6b4731,
+		0x48b61351f75c348d,
+		0xf83be972174e53f9,
+		0xe261879548539267,
+		0xcd12b739845691d3,
+		0x7cb8ef3a9258af41,
+		0x57be98276f28ae9d,
+		0x3c4fe7298a3ecd1b,
+		0xbe574c1edb31fc87,
+		0x46b9ed81fa451be3,
+		0xc63ef1932c483b61,
+		0x187cf6a5472938bd,
+		0xfd715b27672d583b,
+		0xefbd85aa942f56a7,
+		0x5f4832bdc643a715,
+		0xc7564b9ed236b581,
+		0x9782f5ccbf17a3ed,
+		0x56413971fe1ad25b,
+		0xdbca61543b2de1c7,
+		0x746cafd98d642135,
+		0x9d6ce5f87b253f91,
+		0x1835db9878163cfd,
+		0x574e926ba7194d6b,
+		0x1efd728ba41c5bd7,
+		0x64b8729ed31f8b45,
+		0x69a4d1c1f423a9b1,
+		0xc39b25f54315b82f,
+		0x51a8d6732ef5d68b,
+		0xe1dc84a43be9d5f7,
+		0xca2b84f76aecf475,
+		0x3ed5ba4989ef25d1,
+		0x791ef24cb9e2534f,
+		0x83b4cf9ed7f652ab,
+		0xdabf142fe5fa7129,
+		0xa9bcd86213eb7f85,
+		0x6d983e2543fc8de1,
+		0x9472bce762e1ac5f,
+		0xbaf3ec265fe3dacb,
+		0x6c8ed9587cd6eb39,
+		0xae692d487bd8f9a5,
+		0x825ab64dc9ed2a13,
+		0xe472163ed6ce287f,
+		0xc7524b8218d246eb,
+		0x5ca4f87328e47659,
+		0x9e5471b763e984c5,
+		0x9fb572d982eca543,
+		0xabde612871cda29f,
+		0x384762aa9fb3c21d,
+		0xf3bce46bacb3df69,
+		0x7fb1a2ddc9a6fed5,
+		0x71c5ae432bca1e53,
+		0xed2a6f14379b2caf,
+		0x1b7ef36657af4b2d,
+		0xd69cb58876d25b89,
+		0x46b531dba3c479f5,
+		0xa75643ddc2d8a973,
+		0x1b29583ed1ba96cf,
+		0x5aeb438dcf9eb64d,
+		0x1c365f432fa1e4b9,
+		0x2f5c68443db5f427,
+		0x1db583f76dc81493,
+		0xade29b8768a932ef,
+		0xca54f7da98ac416d,
+		0xdc6f37bba58e4fc9,
+		0x8e95316ed5b28e37,
+		0x9276ba51f2b58da3,
+		0xcd71256434b8ac21,
+		0x9edfcb243189ba7d,
+		0x976fac143f6dc8e9,
+		0x5cad2b876da1f957,
+		0xdf871eba9da518c3,
+		0x249e1fcedcb93841,
+		0x6cb23f7fe78a359d,
+		0xd7234681f79d651b,
+		0x29abdec215af6387,
+		0x216e478656a492e3,
+		0xf6d3e41984a7b261,
+		0x6d7423e651769fad,
+		0x4ed5fc387f69ce2b,
+		0x1c93f2498b5ced97,
+		0x978bf4aedb821cf3,
+		0x5e398d21fb953c71,
+		0x9feca3821a7639cd,
+		0xbc86e193287a594b,
+		0xb1c76a44346d58b7,
+		0xd2b9ef6ba47f9825,
+		0xaf762d9dc483b691,
+		0x89ec71acb175a4fd,
+		0x635924edcf58d36b,
+		0x948abcd1fc5ae2d7,
+		0x61d59e832c7df145,
+		0x1b4729376d8342b1,
+		0x1f4e7ad76a754e1f,
+		0x354f7db989564e7b,
+		0x4685b9fba6495ce7,
+		0x4a98251cb34d8c65,
+		0xb2173efed35f8ac1,
+		0xb9c537dfe162b93f,
+		0xc89a64e32154d79b,
+		0xfb5c2d943f48e719,
+		0xacf179b54d3bf685,
+		0xecf31d998b5d26e1,
+		0xc614dbebab71345f,
+		0x2641cf9ed96453cb,
+		0x5c378b2fea587239,
+		0xd5486931f64b81a5,
+		0xcb7fa6d3254b8ef1,
+		0x569a2d85423e9d6f,
+		0xb1ca37576142acdb,
+		0x184a63587f25ec49,
+		0xfcd796a98d27fab5,
+		0xe6913c2bad5c1b23,
+		0x3ba15e6dca3d298f,
+		0x67541fcfe93147fb,
+		0x5e4ca2621b235769,
+		0x6adeb1c4392786d5,
+		0x721349f9872ba653,
+		0xb368a5e8742c93af,
+		0x46dfc5ba914fb32d,
+		0x893adc2cbf23e189,
+		0x7265d1cbab14dfe5,
+		0xa1fb794fec291f63,
+		0xb9ae78543a192dbf,
+		0xf9ce78a6591e4c3d,
+		0xc7fab94768215ca9,
+		0xbf2e384ba9248b17,
+		0x18f2ab9dc5169a83,
+		0x42f81a5cb31897df,
+		0x5ba21d3fe21cb75d,
+		0xb8cf954babfed5c9,
+		0x3894a5732de1f537,
+		0x9fc582d54df615a3,
+		0x9e68f1587cf94521,
+		0x79bd82e769fa427d,
+		0x6cf95d7987fc51e9,
+		0x84372bcba5de6f47,
+		0xb2d1584dc5f28eb3,
+		0xf7534cafe4f6ad31,
+		0xefc5dba212f6ab8d,
+		0x1aed25b431e8caf9,
+		0x598d67143fcdea67,
+		0xfd35bec87ce219d3,
+		0xd7e458fbace63951,
+		0x8df2a15cb9e736ad,
+		0x54cb8f6ed8ea562b,
+		0xe19b26c1f5ed6497,
+		0x6472bf3216ce84f3,
+		0x39b7fdc656e4b371,
+		0x315d2ea763e5a1cd,
+		0x7498e5c761d7cf3b,
+		0xc3db19a65fb9dea7,
+		0x5bd4a1c98bacfd15,
+		0x7f1c536febc23d81,
+		0x5e2138d1f8b43aed,
+		0x2d46c53219d74a5b,
+		0x8f6d19b326da59c7,
+		0x8ef5396546cd8935,
+		0xf39248c764cf97a1,
+		0xc435261a94c3b61f,
+		0x2ef9b56ba1c5d47b,
+		0x31678d9cbfa8d3e7,
+		0xa7c6439fedabf265,
+		0x57c38f954dae23c1,
+		0x159f73476cb2513f,
+		0x9f36d7c659a34f8b,
+		0x9c8aed6548a65df7,
+		0x132576fa94ba8d75,
+		0xd5e7164ba49c8bd1,
+		0x57bd493dc28e9a4f,
+		0xb63e58d1f192d8ab,
+		0xb2af794431b5e829,
+		0xd5ac86332ea8f795,
+		0x8f1d94665d9b27f1,
+		0x31d268a87b9d256f,
+		0x4b261fe98a9154db,
+		0x6a3b547edab57349,
+		0x926c174fe6a782b5,
+		0xed62c131f69ba123,
+		0x47c32bf2136b9e7f,
+		0x926f1eb4326f9deb,
+		0x238574c76182ed59,
+		0x89cf51e76e74fbc5,
+		0x146d25fbae891c43,
+		0xbcd5eaf98c6b2a9f,
+		0xf385ea1dca7e491d,
+		0xb2437611fba15879,
+		0x6d892b321a9387e5,
+		0x67b3cad32598a763,
+		0x26814c76536894bf,
+		0x9cad7f29827cb43d,
+		0x4be2f959816fd2a9,
+		0xc4dfe23cbe84f217,
+		0x973fc12ede972183,
+		0xb21e784eda572ecf,
+		0xbd952e621b6a3e4d,
+		0xf18e6a33285e4db9,
+		0xa23be6f65a618c27,
+		0x43527e9ba7648b93,
+		0x84cfeb3ba34598ef,
+		0x1da956bdc249b86d,
+		0x69371d4fe14bc6d9,
+		0xa6b1e3ddcd3fe647,
+		0x6e3d45732f7416b3,
+		0xe8c9f1a65e784631,
+		0x21f94ce76c59438d,
+		0x3e9b28a87a4b52f9,
+		0xf5ca13dcba4e8167,
+		0x235e68fcb7518fc3,
+		0x6a29573ed765ae41,
+		0xb5468e31f235ac9d,
+		0x1d4c8e532348dc1b,
+		0xd2c9be75413ceb87,
+		0x1273ce865c2df9e3,
+		0xa54721da9e543a61,
+		0xb3d4172a9c2537bd,
+		0xc4572efedc29573b,
+		0xa71b2c4fe92c65a7,
+		0x5e1bac81f83e9615,
+		0xf71956d43952b481,
+		0x186423e65634a2ed,
+		0x256197398437d15b,
+		0xb897fad76128dfb7,
+		0xfd4ca5698d1bfe25,
+		0x97eb2c1bac3f2e91,
+		0x97fe341dca123bfd,
+		0x4bd57961fa154c6b,
+		0x4ef9a7132b185ad7,
+		0x97d25f64391c8a45,
+		0xdf37b916562e98b1,
+		0x8a5b2dfa9631b72f,
+		0xbd39481ba413d58b,
+		0x26e7389cb216d4f7,
+		0x6798fa3cbde9f375,
+		0x68f123afecfb24d1,
+		0x53697ab21bed324f,
+		0x9fd723b54cf251ab,
+		0xe249f6165ae46f19,
+		0x5d376f9549f67e85,
+		0x56a4ce9875f98ce1,
+		0x64d5e2c983ec9b5f,
+		0x12ab6e4982efa9cb,
+		0x5b9a6e2ed1f2ea39,
+		0xc16e35b321e4f8a5,
+		0x9baef1365fea2913,
+		0x2a7df3154cdb267f,
+		0xc2735b9769cd35eb,
+		0x49e16b8babe17459,
+		0xa29674ccb9e483c5,
+		0x56a748ced7e8a243,
+		0x3879a54fe4d8a19f,
+		0xaed7926213ca9efb,
+		0x2eb86f5432bfce69,
+		0x9b45238761b2fcd5,
+		0xae1d43298fc71d53,
+		0x4e8bfa276dc72baf,
+		0x63d17a4989cb4a2d,
+		0xba4f8c7ed7ce4a89,
+		0x5b3af72fe9c178f5,
+		0x859cfbe219d4a873,
+		0x9ef5cb3324b695cf,
+		0x2b7e915763c9b54d,
+		0x9a78fd3762acd3b9,
+		0xebf56c1a91bfe327,
+		0x6782d3ecbfc51293,
+		0xe6dac93cbca631ef,
+		0x945dc16feba83f5d,
+		0x7b63d2521b8a4ec9,
+		0xa15be38329ae6d37,
+		0x6bca178657b18ca3,
+		0xaf74b6c987c5ab21,
+		0xcfd4e72983a5b97d,
+		0xd182397cb2a8c7e9,
+		0x2ca54f8ed1ace857,
+		0x7f41d36cbd8ef6c3,
+		0xab6134532fb53741,
+		0xebcd34f32ea6349d,
+		0xfeb4c8165da9641b,
+		0xc83e46965bac6287,
+		0x1fe734dba79d81e3,
+		0xbe85316dc792af51,
+		0x4513abddc4739ead,
+		0xd61e4291f386cd2b,
+		0xeb36f2821268ec97,
+		0x6de235a5417beaf3,
+		0x18b47ad65e8f2b71,
+		0xc4e73ad76e7238cd,
+		0x6cde4f8bad96584b,
+		0x54b3ae9edc8956b7,
+		0x4afb3c1fea8c9725,
+		0xedc2a141f67ea591,
+		0x187dafc32671a3fd,
+		0x68ba1c443584d26b,
+		0xca783f965386e1d7,
+		0xd6f72be98179ef35,
+		0xd5b261e98e6c2fa1,
+		0xdb72c8ea9b6e3d1f,
+		0x364d1a8fec624d7b,
+		0x41d5e281fa645be7,
+		0x84f573b21c498b65,
+		0xa6f7db14375b89c1,
+		0x3ac6e575465da83f,
+		0xc15eda498451d69b,
+		0x564df83cb374e619,
+		0xe73a9fddc167f485,
+		0x275b49adcf6a25e1,
+		0x1c742dffed6c235f,
+		0xc2ab6d721d5f42cb,
+		0x3142dfc65d647139,
+		0xf973ad276b347f95,
+		0x83a2fe5769478df1,
+		0x96ed3129853a9c6f,
+		0x5fae3499843e9adb,
+		0x71ef3a2ed351eb49,
+		0x17fc398fe143f9b5,
+		0xda6b1f7654681a23,
+		0x31bc78654e3a278f,
+		0x1c7329865d2c36fb,
+		0xc4193de98c2f4569,
+		0x13b8fdcbab3284d5,
+		0x9bfe563edb27a453,
+		0xc81b9e6ed63792af,
+		0xa1c45761f64ab12d,
+		0x9ed675b2142dcf79,
+		0x5b7f98176431fde5,
+		0xe2d641ca92451e63,
+		0xa8cdf3b87e162cbf,
+		0xd23e5c998e194b3d,
+		0xa37edc298c1d4ba9,
+		0xa4e2f85edb2f6a17,
+		0xd62a1e91fb12a983,
+		0x4936d1b3281496df,
+		0x52ba6f743718b65d,
+		0x8f7ecd47651ad4c9,
+		0x5f138d4a951de437,
+		0xda76e23dc65214a3,
+		0xa719e2fcbef65421,
+		0x5213498cbcf6417d,
+		0x57342b6dcae74fd9,
+		0x9de258421afb6e47,
+		0x9f163be328fe7db3,
+		0xd9b7ae2768f2ac31,
+		0xf3daeb7765f3ba8d,
+		0x4de592a873e5c8f9,
+		0x6f27819cb2fae967,
+		0xf58931bba1ebf7d3,
+		0x32d6b51dcedf2851,
+		0xdba56e321fe235ad,
+		0x91c42ef43de7652b,
+		0xc795ab354cea6397,
+		0x3784acd769db82f3,
+		0xfa85321a98dea271,
+		0x7ea2654985c19fbd,
+		0x12385c6ba5d4ce3b,
+		0xe1ca3941f2c5eda7,
+		0xe59a43b323d9fc15,
+		0xe96dc72653ed2c81,
+		0xf389cad54caf29ed,
+		0x2e1bdf587ed2495b,
+		0x17e34f6a9bd458c7,
+		0xfb18d3edcbda9835,
+		0xc257bfafe7dc96a1,
+		0x4c8bf73fe6bda51f,
+		0x85c4de6326c1d37b,
+		0x26ea189435b4d2e7,
+		0xd1e846b873c8f165,
+		0xa7cd35b984da32c1,
+		0x28d5c4187d9b3e2f,
+		0x2b349a887c9f3e8b,
+		0xfb6e49cedba25cf7,
+		0x3e78d1c1fab48c75,
+		0x9fecd51329b78ad1,
+		0xa94dc6b3268ba94f,
+		0xa2be6714348ec7ab,
+		0xdc1b572985b1e729,
+		0x9c24b6fba2b3f695,
+		0xae4581bdc3b826f1,
+		0x67fb4eadce9a246f,
+		0xcb326ed1fe8c43db,
+		0xf43cb6a21daf6249,
+		0x7c563d254da381b5,
+		0xd7e394a65ba69f13,
+		0xe289cf5545869d7f,
+		0x961f2dc874689ceb,
+		0xb13d472ba37edc59,
+		0x63ae1cbed381fac5,
+		0xde75ab41f2a61b43,
+		0xba5798f431a6289f,
+		0x48ce26143f7a481d,
+		0xe9f584143e8d4679,
+		0x6b2cfd554b8f76e5,
+		0x2a4813ccbc92a563,
+		0x8a613f2dc87593bf,
+		0xa4b9d78fe678b23d,
+		0x523bde91f46bd1a9,
+		0xebf72ca2136bcef5,
+		0x34f18c2765921f73,
+		0xf37b54e761742dcf,
+		0x37e564f98f673c4d,
+		0xb39ce4887e584cb9,
+		0x725bf84bac5d6b27,
+		0x1cf847aedb5f7a93,
+		0x784e9f3ed85297ef,
+		0xe7c2d6b21954b76d,
+		0xefba79532647c5d9,
+		0xa1d5e929836be547,
+		0xc4127a59826df4b3,
+		0xf98a125dc6924531,
+		0x46fcd32cbf65428d,
+		0x8a6243fdcd4751f9,
+		0xdb2179ffec3a6f57,
+		0x7524d3621a4b7ec3,
+		0x5e8ac7f43a5f9d41,
+		0x9416bde65742ab9d,
+		0xd523e4f98745da1b,
+		0x86fc1e7cb436ea87,
+		0x7fc152ecb24af8e3,
+		0x15c8e32ed35e2961,
+		0x32bdf48fef4136bd,
+		0xeabc9d321f24563b,
+		0xf578a1243e2864a7,
+		0x8bd3e4287d3b9415,
+		0xba9dc4387b4da381,
+		0x1e6fa479873f91ed,
+		0xbd42938ba732cf4b,
+		0x4627d8adc524deb7,
+		0x2a57fd1fe438fd25,
+		0x75f281d4354b2d91,
+		0x872d4e36513c2afd,
+		0x9cea3d187f214a6b,
+		0x1567fd498e1359d7,
+		0x3ae91c2cbd178945,
+		0x4f5128bedc2a97b1,
+		0x5e2bc68ed81ca62f,
+		0xf54cbadfe61fc48b,
+		0x79c28ef54812d3f7,
+		0xc61b5ef54816f275,
+		0x2ac4f919864923d1,
+		0xb17a426a952b314f,
+		0x14c5ba776dec3f9b,
+		0x5a9de3f98bdf5e19,
+		0x6de493adcbf27d85,
+		0x52871b3ed9f58be1,
+		0xf9de537218e79a5f,
+		0xb519d4a325f9a8cb,
+		0x829d51a545fed839,
+		0x7ade4b1984e1f7a5,
+		0xc685374cb5f62813,
+		0x29c137fcb1e8257f,
+		0xd8315efbafd934eb,
+		0xac27b5e1fced6359,
+		0xb567cd821bdf72c5,
+		0x345adeb76ce5a143,
+		0x245b871437c49e8f,
+		0xcaeb35d545c69dfb,
+		0xc59b24d874eacd69,
+		0xdac52e3983acebd5,
+		0xfb39518ed6e21c53,
+		0xf5ca8b2fe1d429af,
+		0x5ce94fd431e7492d,
+		0x56d9bfe32fdb4789,
+		0xb76fc4543dbc67f5,
+		0x649efb265bcf9673,
+		0x24a8bde878b294cf,
+		0x63c5124ba8c6b34d,
+		0xf735d96fe5c7d2b9,
+		0xa35e7b91f5cbe127,
+		0x3f29bda214acef83,
+		0x47c2b6d654a12edf,
+		0x35efc94871b43e5d,
+		0xa2b379f65fa64dc9,
+		0x1b5a3f498eba6c37,
+		0x427fedb98c9d7ba3,
+		0xb7fca29ed8bf9a21,
+		0x6295e371f6a2b87d,
+		0x6b58c9a217a4c6e9,
+		0x736c45b324b9e657,
+		0xa34bdc77649af5c3,
+		0x2ecfb46a95be2641,
+		0xb7d345eba2b1439d,
+		0x97b3462dcfa5631b,
+		0x1376ef5edeb96187,
+		0xbf6318cfeb897fd3,
+		0x71f8eb332b8c9e51,
+		0xc69f4e73276f8cad,
+		0x67fd1b265783dc2b,
+		0x7c8fe5d76584eb97,
+		0x94be618ba487e9f3,
+		0xc87ea2bed49c2a71,
+		0x1e258d9cb18e27cd,
+		0x6d53ba2fef91574b,
+		0xb85f7c621f9365b7,
+		0x168fbd443ea89625,
+		0x4ab328f65d7ba491,
+		0x9fe67316586b92fd,
+		0xa5edf23a987fc16b,
+		0xe4dc893ba562dfc7,
+		0x218eb57dc486fe35,
+		0x35e6ac11f4782ea1,
+		0xda34c873247a3c1f,
+		0xac173285416e3c7b,
+		0x38d5ea954f615ae7,
+		0x1da325ea9e738a65,
+		0x342d189bad5698c1,
+		0x52b1793dcb59a73f,
+		0xda76bf4fe74dc59b,
+		0x52b76adfe76fd519,
+		0x7dc9e2821972f385,
+		0x361bcf46568724e1,
+		0xc1d5e9a98479325f,
+		0x6a5d3b29826a41cb,
+		0xa2f567c98e4d5f29,
+		0x2c56819cbd417e95,
+		0x92bac47edb548cf1,
+		0x3d298b7fea359b6f,
+		0x8fe4a6321837a9db,
+		0x84f1dcb3273cda49,
+		0xd8a293e5463fe8b5,
+		0x68597cacb8751923,
+		0x3f5e642cb345268f,
+		0xad65b82dc14835fb,
+		0x42615c9edf2c5469,
+		0x7c93e121fc2e73d5,
+		0xe53791c54e61a253,
+		0x48a92f665c3491af,
+		0x18294ea65936af1d,
+		0xd8243be65628ce79,
+		0xa94f5c29862adce5,
+		0x3de62c5ba52efc63,
+		0x71f859aed5432abf,
+		0xc8496e21f1264a3d,
+		0x45a1e264312748a9,
+		0x296ed5854f2c6917,
+		0x46b9e1765d1e9783,
+		0x2968f1d87b2195df,
+		0x73c1de4a9a13b45d,
+		0x68efda9cb816d3c9,
+		0x1a82f74ed81ae237,
+		0x9fc1b6afe62cf1a3,
+		0x94f71ac7685f4321,
+		0xc2d139f875123f6d,
+		0x2ae893c872154ed9,
+		0x4a12f3965ef86d47,
+		0xfc38b4d76df97cb3,
+		0xc3df26a98afd9b31,
+		0xaf4c912cb6efa98d,
+		0x8bf7295ed6e2c7f9,
+		0xac87bf6219f4e867,
+		0xa1ebcd6325e8f6d3,
+		0x1693fcd986fc2751,
+		0x3f952cd873fe24ad,
+		0x7895b42ba3f1642b,
+		0xf7a1ed4cbfe46297,
+		0x8da7913cbcd781f3,
+		0x8b96f41febda9f61,
+		0xa57e3b2217ca8ebd,
+		0x5e4d7c3327cfad3b,
+		0xe63d5bf546d2eca7,
+		0x524df9e987d6fb15,
+		0xde7f53cba5e92b81,
+		0x5b8a376a93ca28ed,
+		0x38eb4fadc1de385b,
+		0x9a3c7bffefd156c7,
+		0x6e58a4b21fd49735,
+		0xe7cd8f543ed795a1,
+		0x7e3214d65bc9a41f,
+		0x7f8d1b6658adc27b,
+		0x4dc3f51986afc1e7,
+		0x348d12fba7b2ef45,
+		0x7153296ed5c62fb1,
+		0x265a79dfe4b83d2f,
+		0xf65ca34212ca3d8b,
+		0x987cf4a431ad4bf7,
+		0xf2bc59d54fc18b75,
+		0x37bce5876eb489d1,
+		0x4f81d9a87cb6a84f,
+		0x2e35fa7ed798c6ab,
+		0x9174dcffe7acd629,
+		0x4f3ea96ed6afe495,
+		0x478569b438b425f1,
+		0x7bf921d545b7236f,
+		0x85da7c9763a842db,
+		0xbadf2e4982bc6149,
+		0x9eb318d87e8d6fa5,
+		0x6593dc1cbda29e13,
+		0x385f7acedb839c7f,
+		0x962b7181f8759aeb,
+		0x7b4c2ae21a78db59,
+		0xd7a3f983267be9c5,
+		0x7148cf66568ef943,
+		0xf215ae3985a3279f,
+		0xc829436cb3a6471d,
+		0x21b6cf4ed1ba4579,
+		0x2a53b91dcf8b74e5,
+		0xc6ea74d1fd8e9463,
+		0x62841ab43d7192bf,
+		0xda589fc54c85b13d,
+		0x8b9ad2543a65cf89,
+		0x2958ab154768cdf5,
+		0xa64523ba956bfd73,
+		0x5f23d7aa946e1bcf,
+		0x975d816fe5823b4d,
+		0x42d7cba1f1754ab9,
+		0xbda28e5431896a27,
+		0xfd95ae432f5c7893,
+		0x64c1be743b4c86ef,
+		0x354a9e798c71b56d,
+		0x75d29c698a63c4d9,
+		0x746ab53dca68e347,
+		0x382c71eed769f2b3,
+		0xbe521381f78d2431,
+		0x1ace47f3256f318d,
+		0xc2d643e653624fe9,
+		0x34f72dca91846e57,
+		0xdc798f476f487dc3,
+		0xdc45b3698e5b9c41,
+		0xeda2fc887b3e8a9d,
+		0x6a981f4fea52d91b,
+		0x296758e1fa43e987,
+		0x7f2db8921946f7e3,
+		0x68ab13f5495b2861,
+		0x658cda18764c25bd,
+		0xe8f621aa926f453b,
+		0xaf951d8dc15263a7,
+		0x83f7a2edcf479315,
+		0x26b41c8ede49a281,
+		0x76915dbfea298fcd,
+		0xa3cde672192dae4b,
+		0xb29f83654931edb7,
+		0x48a965c87934fc25,
+		0x734f528ba8472c91,
+		0xfc742edba53829fd,
+		0x1a9528bdc42d396b,
+		0xb873f64dc12f48d7,
+		0x3d64752fef129845,
+		0x651fc7e43f2596b1,
+		0x9ca765b54d18a52f,
+		0xfb67cda65d1ac38b,
+		0x82cd7417691dc2f7,
+		0x1f23a5dcba32f175,
+		0x9532fd4dc94632d1,
+		0xa82f4e5dc6172e3f,
+		0x8a5b1791f4183e9b,
+		0x148c9e74342c5d19,
+		0xf16ae975421f6c85,
+		0x2f179a865df28ae1,
+		0x3cd5be176ce3a95f,
+		0xf5d3a14769f5a7cb,
+		0x6e4928fcb8fad739,
+		0xe178c5fcb7fce6a5,
+		0x631f75ddc7def613,
+		0x4daf865218e3247f,
+		0xf5713ce325f643eb,
+		0xd2c9543873fa6259,
+		0x9c4613a982fb71c5,
+		0x96d5ac887ecd8f23,
+		0xa6be18387bc19d8f,
+		0x98cb374ba8d39cfb,
+		0x8c596131f8e5dc69,
+		0x5348fb9217c8ead5,
+		0x9eb54f7327dcfa53,
+		0x18d279e545ce18af,
+		0x71d54caa96e3482d,
+		0x5634c1ecb2e54689,
+		0x5f94362cb1d976f5,
+		0x67f31edcbfdc9573,
+		0xcdb24f7febad83cf,
+		0xfd7285943ec1b24d,
+		0x2b5719a43ac4d1b9,
+		0x1be987f549b6df17,
+		0x437f8ec656b9fe83,
+		0x92864cf8759a1cdf,
+		0xe3c1658a94af2c5d,
+		0x9caf8d4fe3d24bc9,
+		0x128ab5d1f1d56b37,
+		0xa41c769321d879a3,
+		0x62d79cf54fbca921,
+		0x984f21b43c9ea67d,
+		0x8e3174a76ba1c5e9,
+		0x7af61d3a9ab3e457,
+		0xf1dc38acb8a7f4c3,
+		0xf9b21d5fe8cb2541,
+		0x53b9d2c1f5ac329d,
+		0x4cd87bf436af521b,
+		0x5e67df8543b25f67,
+		0x89cf537761a57ed3,
+		0x14b389a76fa89d51,
+		0xb6f71d465e698bad,
+		0xf1973a59897eca2b,
+		0x23eb7f8edb81ea97,
+		0xc34a28bed794e8f3,
+		0x6df942743ab82971,
+		0xf84e9ad4358926cd,
+		0x6fc85b38759d364b,
+		0x7b13a6e9829f54b7,
+		0xb371fdedc1b39425,
+		0xdb64a79dcf86a391,
+		0x5496a78cbc6791fd,
+		0xbd62c45fec69af5b,
+		0xdfa98352195dbec7,
+		0xec1d23f54a81fd35,
+		0xbfde712769852da1,
+		0xe73251fa96873b1f,
+		0xdfe4763dc4693a7b,
+		0x94c5326cb26c49e7,
+		0x8625f3ced18f7965,
+		0x4ab35c6fef6397c1,
+		0x47ab25e21e75a63f,
+		0xfcbea8132e57c49b,
+		0x81b9af665c6bd419,
+		0x5dc6ab487a6de285,
+		0x279153ccba8423e1,
+		0xd572f93dc986315f,
+		0xb541e73ed4563fab,
+		0x71e2c4b1f36a5e29,
+		0x326d85e2124c6d95,
+		0x3b61cd95425e7bf1,
+		0xa4b63e165e429a6f,
+		0x39b8a2e76e34a8db,
+		0x7e65382bac37d849,
+		0x984fa36dc93ae7b5,
+		0xdfa6958dc95df723,
+		0xca3b4d9fe961258f,
+		0x57e426b2186534fb,
+		0xa9b7e8f327485369,
+		0x9d125ce9834a72d5,
+		0x715b46fba26d9153,
+		0xfd51e4b76c2d7e9f,
+		0x1d7a5e2a9c43ae1d,
+		0x4d56f98feb24cd79,
+		0xb183d2e1f927dbe5,
+		0xe8ac9622192afb63,
+		0xd5bf9c15473d19bf,
+		0x6c294d587851493d,
+		0x57962a4cb62347a9,
+		0x3f41e7bdc4396817,
+		0x8291fc6ed12b9683,
+		0x4e8bf56bae1b84df,
+		0xc5f7ba6fec1fa35d,
+		0xfe63da954e13d2c9,
+		0x36af4eb65c26e137,
+		0x34ab68965a17ef93,
+		0xfe5479c767291def,
+		0x6ea48c3a971c2e6d,
+		0xf847231cb6214cd9,
+		0x53a89d6fe5136c47,
+		0x764ac391f2167ab3,
+		0x3daefc16542b9a31,
+		0xe139f4c32efba78d,
+		0x6dc9be543aedb6f9,
+		0x2ad7e6498bf1e567,
+		0xd3fc4be989e4f5d3,
+		0x3b7deafdcaf92651,
+		0x13b2e47dc6f923ad,
+		0x1f6ca92fe6fd532b,
+		0x1ef5c3b324ef5197,
+		0x21693b8654d27fe3,
+		0xfe13d65872f59e61,
+		0x28dac7154fe68cbd,
+		0x1e8c73d76de9ac3b,
+		0xad2befc768cedba7,
+		0x68aed3bdc9d2fa15,
+		0xe35198b1f9e52a81,
+		0x957ca2b218c627ed,
+		0xdc1ea59326ea375b,
+		0x281ba4d763ed45c7,
+		0xe5d127ba92df8635,
+		0x5e386f2cb2e394a1,
+		0x42b3df8a9ec6a31f,
+		0x7d4f61ebaed8c17b,
+		0x6bd47cafe8a9bfd7,
+		0xa65482f219acde45,
+		0xacde7b9659c32eb1,
+		0xd7a83e9768b53c2f,
+		0x82d4596875d63c8b,
+		0x4e316a9983c94af7,
+		0xe4c36dfcb2cd6a75,
+		0x58af794dc2bf78d1,
+		0xb1cf695edeb2a74f,
+		0xb7c86a421f94c5ab,
+		0x5276e9f43eb8d529,
+		0x9a326d554cabe395,
+		0xb4caf8d7689ce3f1,
+		0xe1c897fba9b1326f,
+		0xe92b35ddc7a541db,
+		0xe7cb264ed4b75f39,
+		0x4b539a71f2b96ea5,
+		0x7adfb6e324ac8d13,
+		0x875cb9f4319e8b7f,
+		0xa5b2df354f72a9eb,
+		0xd5f928e76e84da59,
+		0xdea142776b97e8c5,
+		0xbfa1784dca9bf843,
+		0x4521f9ddc78d169f,
+		0xe4635ad1f8a2461d,
+		0x5f68c27218b35479,
+		0x94be31f324a873e5,
+		0xb4e56d1874ab9263,
+		0xfe3197d7627c81bf,
+		0x45f1eb987c6e9f2d,
+		0xcb852f3bad62ce89,
+		0x67e19cacba74dcf5,
+		0x2af9c58fea68fc73,
+		0x93af854328691acf,
+		0xd41fb864387e2a4d,
+		0xd942c876567148b9,
+		0x17f4ed3cb5a46927,
+		0x16fe823dc2a68793,
+		0x419237fcb16985ef,
+		0x14326afcbf5ca46d,
+		0x5db1ac2fec5fb3d9,
+		0x87ad36b21d83e247,
+		0xcd352e754c76f1b3,
+		0x98cb46e87c8a4231,
+		0x4fceb817685a2f7d,
+		0xca4bf3d9865c3de9,
+		0xeabf29ddc4816d57,
+		0xa7265cffe2647bc3,
+		0x137d6ea1f2679b41,
+		0xd537ce832147a89d,
+		0x2c1795843f4dc81b,
+		0x758ba9d54c3fd687,
+		0xd7ce43598b52f6e3,
+		0x1a4de7fcbc582761,
+		0xeda25f6dc95824bd,
+		0x49a1df3fe86c543b,
+		0x31a75821f64e52a7,
+		0x6e87192548739215,
+		0x8a4b53e763549f71,
+		0xf2cd1a5761358ecd,
+		0x83f972476f28ad4b,
+		0xf754e2876e2adcb7,
+		0x75a3c21a9a3feb25,
+		0x5d236b7fec542b91,
+		0xabf4829fe93528fd,
+		0x3578c9621a29386b,
+		0x2b7af8d4382b46d7,
+		0x82d143aa962e8745,
+		0xf95463bba64295b1,
+		0x38d7fa1cb135a42f,
+		0x6df287ebaf16c28b,
+		0x938a2d6cbd29c1f7,
+		0x29f8671fea1bdf65,
+		0x8c196db4392dfec1,
+		0x1b5d74c76a142d3f,
+		0x257b914768153d9b,
+		0x29578beba7285c19,
+		0x892671eba41c6b85,
+		0x56d1782cb42d79e1,
+		0x9f1835bed321a85f,
+		0x176c952edef2a6cb,
+		0x743b56c21ef5d639,
+		0x1cd493e32cf8e4a5,
+		0x9e7f32876aebf513,
+		0x7dab521769ed137f,
+		0x7ef8cb1a98f142eb,
+		0x743be29dc8f46159,
+		0xda79f43dc3e76fb5,
+		0x7685b34ed4fa8e23,
+		0x7feb243212eb7c8f,
+		0x945cde6431de8afb,
+		0x5f36a7854fe2db69,
+		0x91532cb76bc4e9d5,
+		0xfd91a4687bd8f953,
+		0xcf18b5aa98db17af,
+		0x862da9ecb8ce372d,
+		0x87d12c31f7e14589,
+		0x23a98b6218d374f5,
+		0xc5f1e78325e89473,
+		0x92a8b7f653d982cf,
+		0x9ba48d2872eca14d,
+		0xae9261c65d8ebfa9,
+		0x413f5eba9cb3de17,
+		0x243a1b8dcab5fd83,
+		0x51f736bfe8a71bdf,
+		0x78fb359218ca2b5d,
+		0xd9fb317326be3ac9,
+		0x3f14ae9658d16a37,
+		0xc5a2714a95d478a3,
+		0xe961235cb4d7a821,
+		0xf8e2c94cb1c9a57d,
+		0xe6419b5baf8cb4e9,
+		0xa8953dcfecafd357,
+		0xb64e7fa21da4f2c3,
+		0xafb7de376dc82341,
+		0xaf9c3e465ab8319d,
+		0xdbc61786568a3ef9,
+		0xb27df5ca95ad4e67,
+		0xa162c45cb5a17cd3,
+		0x32647c8fe3b49c51,
+		0xb9cde4a1f1b589ad,
+		0xe26b4d1431a8c92b,
+		0x8ce6f9332f6cd897,
+		0x8b5e19d54b8ed7f3,
+		0xfbd4ae7a9db42871,
+		0x41572ea98a9625cd,
+		0x12afbe4ed8a9354b,
+		0xf69d42bfe69c53b7,
+		0x85eb7ac1f6ae8325,
+		0x78d19b2546b3a291,
+		0x27e8fb6542738fed,
+		0xb31edf654186ae5b,
+		0x17bf8e354f58bdc7,
+		0x135ba7d98d7bec35,
+		0x19fad239896efba1,
+		0x4fb9e2aedb843a1f,
+		0x7ed5c261fa85397b,
+		0x256f87c21a6948e7,
+		0x5769f3a3249c7865,
+		0xe69f84a6547e86c1,
+		0xec7813da9481a53f,
+		0xd249b73ba174c39b,
+		0x8f26e79cbf67d319,
+		0x21935aedcd6ae185,
+		0xe93fa72dc95aefd1,
+		0x59c3e8432a6d1e4f,
+		0x6aebd1c549623eab,
+		0x289d15654a765d29,
+		0x25cd389ba7486c95,
+		0x4e378fda945b7af1,
+		0x37ef259cb24d896f,
+		0xbfa1c5dfe251a7db,
+		0x8c792fdfef53d749,
+		0x9ab72c821f37e6b5,
+		0xbfa23e954d5af623,
+		0x487bdfa76b5c148f,
+		0x53c619b8795e23fb,
+		0x85ab497dcb735269,
+		0xd975e26dc94671d5,
+		0x2be5197ed6598f43,
+		0xa625fc7fe23a7d9f,
+		0xc3869d13234e9c1d,
+		0x76f4b8165241dc79,
+		0xde295fb76f23dae5,
+		0xad6c2e798d27fa63,
+		0xfb3694a87c3918bf,
+		0xac1762fcba4c283d,
+		0xa824567ed82f36a9,
+		0xda584be1fa438617,
+		0xa79f34521a269583,
+		0xc591ad75452783df,
+		0xdae56288743ba25d,
+		0x8ae13f68723eb1c9,
+		0xe5d7186a9e31df27,
+		0xb57c849bac14fe93,
+		0xf1e2a67cba261cef,
+		0xb2da8391fa192c6d,
+		0x91bc8a63281c3bd9,
+		0x14a57cb4391f5b47,
+		0x3ec978f7681279b3,
+		0x814cde7cb726a931,
+		0x82f73a4cb317a68d,
+		0x6bf92d5dc21ab5f9,
+		0x4f937bebaefcd467,
+		0xcf46d17cbacfe4d3,
+		0xb524ef843df62451,
+		0xe12958354bf632ad,
+		0x834e71f76af9512b,
+		0xfa6de38656eb4f87,
+		0xf256da9985fc6de3,
+		0xf13d4aecb5f29d61,
+		0x3298715dc2f38abd,
+		0x1c67a8bfe1f6ca3b,
+		0x68dec7f321f8d9a7,
+		0x59126d443fdce915,
+		0xe9b7f3654bcef781,
+		0x4d5193a87ac326ed,
+		0x4e67cdba9ae7365b,
+		0x48d6c31cb8e954c7,
+		0x3684e2bed7ec8435,
+		0x7b386d51f5de83a1,
+		0x63f8cdb546d3a21f,
+		0xa62f3de542d3af6b,
+		0x9a1b623541c5bed7,
+		0x7b4d35e76fb9ed45,
+		0x12e37db76d9afcb1,
+		0xc176d2a989ae1b2f,
+		0xc91a3b6fe9d23a8b,
+		0xab3dc87fe8c549f7,
+		0xc92a356218da6975,
+		0xa2d7fb4435cb87d1,
+		0x2a473ec653bd964f,
+		0x8bd6cf5873d1c4ab,
+		0xf27c6b8ba1c5d429,
+		0xbe38674bafb7e295,
+		0x2e7c964cbca9e2f1,
+		0x253fb1cfebac216f,
+		0x246c9b52198e2fcb,
+		0x561d73f54ab25e39,
+		0x5b8c9d2438b46da5,
+		0x5df1983876b98c13,
+		0xb2f15397639b8a7f,
+		0x4c7e83dba27d98eb,
+		0x1f59ba8fe2b1d859,
+		0x3b89a24edf93e7c5,
+		0xb5847ad21ea8f743,
+		0xb81fc9a43d8a159f,
+		0x9a5718376b9c351d,
+		0x8bd534f76baf4379,
+		0x89f63aecb9a372e5,
+		0xae45f29ed8b79163,
+		0xba149d5dc3867eaf,
+		0xae8472c1f37a9e2d,
+		0xab5c6342126ebd89,
+		0xeb9258a54281dbf5,
+		0x4c6ed1365e84fb73,
+		0xfb12d3765d7619cf,
+		0xef2bda398c7a294d,
+		0x19d4efadca6d37b9,
+		0x6a28c13eda9f5827,
+		0x7d5b4981f7a28693,
+		0xcda67592167584ef,
+		0xa6b5e7832478a36d,
+		0x7b1423f6536ab2d9,
+		0xdf28e35a928ed147,
+		0xae6d5cb98d61efa3,
+		0xc317658cbd863f21,
+		0x87e25bddcb562e7d,
+		0xe3a84671fa583ce9,
+		0x265ba9f21a6d4c57,
+		0x35176483285f6ac3,
+		0x73c29f4768739a41,
+		0x2cdf57e98354a79d,
+		0xd1bc5e4ba358c71b,
+		0x428516adc14bd587,
+		0x57429e8baf4cd5e3,
+		0x23754ae1fe832561,
+		0xa7892eb21e6523bd,
+		0x618bd5a54d68523b,
+		0xa32f5be76c4b51a7,
+		0x4d85ea18784b6ef3,
+		0xfd69c25ba64f8e71,
+		0x34b8e26ba5428bcd,
+		0x45d7968fe235ac4b,
+		0x5842d671f136dab7,
+		0x96fe54a4314bea25,
+		0x68ca5fb54e3df891,
+		0xd2b39f576c4127fd,
+		0xd5b8ac3a9d24376b,
+		0xe38d5f2bab2845d7,
+		0x37e25b1eda2b8645,
+		0xd39c158fe73d84b1,
+		0xa3b8275ed64e932f,
+		0xce3d9ba32643c18b,
+		0xc3b7a6965324bfe7,
+		0xeb351f987128de65,
+		0x32f5be976e29fdc1,
+		0xf3247db98b2d1c3f,
+		0xfb6951ebad213c9b,
+		0x63ac12bfec245b19,
+		0x2496c171fb176a85,
+		0x5f1c67e4392a78e1,
+		0xb42c58f4361c975f,
+		0xfe745cd7641f95cb,
+		0x914726cba612d539,
+		0xd756ce3cb216e3a5,
+		0x3be42d6bade8f413,
+		0xe523784cbcea127f,
+		0x9ba1f25ed9fc31eb,
+		0x2bd365421ade3f49,
+		0xcaef857439f26eb5,
+		0xcde76a4659f68d23,
+		0x2f637da654e67b8f,
+		0x1ef79a8763ea89fb,
+		0x457cdb6982feca69,
+		0x9fe7ac4cb2f1e8d5,
+		0x18d2bfedced4f853,
+		0xdfea89c32ed716af,
+		0x3df981b54cea362d,
+		0x9cabf6765bed3489,
+		0xd2c3584879ce63f5,
+		0x71f64a9cbae49273,
+		0x5bd6381ba6d581cf,
+		0x3c41f58cb4c79f3d,
+		0xe42c51b1f2d8bea9,
+		0xad348eb323becd17,
+		0x14879cb652d1fc83,
+		0xeba871d65eb41adf,
+		0xf3e928c76ec72a5d,
+		0x9d2c7bf76bda38c9,
+		0xc3612f5cbacd5937,
+		0xac62817ed8cf67a3,
+		0x49b36281f8d4a721,
+		0x89475d6216c5a47d,
+		0x43e17ab324c7b3e9,
+		0x1fbe79c763cbd257,
+		0x8e1c9bd872ade1c3,
+		0x1c7e9d3bafc53241,
+		0xf52eab1a9ca42f8d,
+		0x2396a8edcba63df9,
+		0x7584b1e1f9ba4d67,
+		0xfb674822189c6bd3,
+		0xa79c86b437af8b51,
+		0x31c6d58545b298ad,
+		0xeb2dc53874a5c82b,
+		0x4217fe8ba2b8d697,
+		0xed7345acb19ad6f3,
+		0x7e9156ccbe9df571,
+		0x17edc431fe9124cd,
+		0x9bc8e6a21ea6534b,
+		0x9681cfe43da852b7,
+		0xfd1853e76cab8125,
+		0xa7e43296569c7f81,
+		0xd37b5f99846f7ced,
+		0x24368b5dc482ad5b,
+		0x43d5681fe284dbc7,
+		0x6c8ea3d1f198eb35,
+		0xf7ad84c4327bf9a1,
+		0x235196a54e7d291f,
+		0x8f643a965e91387b,
+		0xbe735a198c9346e7,
+		0x5c914decbca98765,
+		0x42ab983ed97a85c1,
+		0x93561beed67c943f,
+		0x75b891ffe46fa29b,
+		0xd647af843684d219,
+		0xfcea78b43284df75,
+		0xba2ce4865267fed1,
+		0x86ef51d87e6a1d4f,
+		0xdc6a8f287c5e2dab,
+		0xe514f96cbd715c29,
+		0x25f4a6dfec736b95,
+		0x8ba5d92fea5679f1,
+		0x68b4f9c2174a986f,
+		0xe8c913d3254c96db,
+		0x5f2de6c8735fc649,
+		0x1e82b74a9372e4b5,
+		0xc86324acb187f523,
+		0x1d39f87cbe59138f,
+		0x8b46d15dcd5a32fb,
+		0xd17465b1fc5e4169,
+		0x34c7e8b32b416fc5,
+		0x567d4cf32b658e43,
+		0xd297eb6548357c9f,
+		0x36c45ad876489b1d,
+		0xf4dc7219843dcb79,
+		0x589147fba23fc9e5,
+		0x8492fc3ed152f963,
+		0x26318c7ede3517bf,
+		0xd392e6421f49273d,
+		0xdf1e3a854e2c35a9,
+		0xe15364298c3e6517,
+		0xe97261fbac519483,
+		0x4e6d2b8ba93482df,
+		0xd243816dc837a15d,
+		0x4279c6aed427afb9,
+		0x5617db91f43bce27,
+		0x4d8297a2142fed93,
+		0x2e1d439762431bef,
+		0xae8d6b487f152b6d,
+		0x581c7af76e173ad9,
+		0x8d372cfa9d1c5a47,
+		0x85f196edca1e68b3,
+		0xb73dac6feb42a831,
+		0xeacb41d1f713a58d,
+		0xefc6d8532716b4f9,
+		0x38e7d1f5451ad367,
+		0x6eacb488751be2d3,
+		0x374fc5da943ef251,
+		0xcd745f198ef231ad,
+		0xc14d6a5a9ce54f1b,
+		0x914e723dcbf64e87,
+		0x7bf8431ed8f96ce3,
+		0xdf789ac329fd8c61,
+		0x89fdea7325ef79bd,
+		0xe167c38656f2c93b,
+		0x48d95a3763f4d8a7,
+		0x645e827ba3f9e815,
+		0x54eb18cba2ebf681,
+		0x127a4f3a9fbc15ed,
+		0xb587a361fde1345b,
+		0x54a26eb21de453c7,
+		0xa653b2d54ce98235,
+		0xcaf1bd2659eb82a1,
+		0xe5912b6545ba7efd,
+		0x9e6d12b874cf9e6b,
+		0x4e3517da94e2bcd7,
+		0x9528fdacb2d6ec45,
+		0x28673fdfe2d7fab1,
+		0x7658d9c543db1a2f,
+		0x516a9fd43fce298b,
+		0x8fb146c65dc148f7,
+		0xdf87ac4a9cd36875,
+		0x58b7426a9ac786d1,
+		0x642e859cb7ca954f,
+		0x5f42c1dfe5cd93ab,
+		0x275316afe5bfc329,
+		0x4f6a731326c3e195,
+		0xf1cb8d3543a5dfe1,
+		0x9fa5dc7762b81e5f,
+		0xf24a3de65f892ecb,
+		0x4c2815687cae4d39,
+		0xb5126a4a9db16ca5,
+		0xa4df8b3feac58b13,
+		0x47193bafe6b5897f,
+		0xfc7db25215a897eb,
+		0xedba58c324adc759,
+		0x37c96eb5439fd6c5,
+		0xdba846ea95b2f643,
+		0x43958dbba2b6149f,
+		0x962fea7cbfa9341d,
+		0x249ea68edeac4279,
+		0xb8a5c371fb9d61e5,
+		0xe794dcb32ca18f53,
+		0xa87c9fe329837daf,
+		0xd369218547869c2d,
+		0xe896ad365467bc89,
+		0x4ab5fc99837bcaf5,
+		0x3729415cb28fea73,
+		0x43ec761ed29318cf,
+		0x48a75b2fef96284d,
+		0xec5839d21f7836b9,
+		0x9ad547b43e9c5627,
+		0x6f9c12e54c8e7593,
+		0xf3a27d876a7183ef,
+		0x6817ef2cb984a26d,
+		0x8b457eadc576b1d9,
+		0x6ae3c85ed469cf37,
+		0x93e82141f26bdea3,
+		0x56fce174347efd21,
+		0x4e972a3651832c7d,
+		0xb8af53654f653be9,
+		0xb37dfc598e694b57,
+		0x54967cd98d5b69c3,
+		0x296f15adcb6e8941,
+		0x3f71bacfe851a69d,
+		0x6ed9b241f874c61b,
+		0xfb7ade821956d487,
+		0xbd519f832569d4e3,
+		0x3c74e129847cf361,
+		0x41e6b379836f12bd,
+		0x4ed3869baf74513b,
+		0x594cea1cbd354f97,
+		0x6ef2b7ddcb486df3,
+		0x89bad321fa4b8d71,
+		0x9cbe7da2183e7acd,
+		0xbd172a443851ca4b,
+		0x9f34e7a65643d9b7,
+		0x62f4e7dba647e925,
+		0xd3e97a5cb34af791,
+		0xb524f98ba24b16fd,
+		0x6e52d71dce3f256b,
+		0x9e1543a1fe3254d7,
+		0x36e5b7a21e278345,
+		0xd68ae9765d4983b1,
+		0x4b5de8376a4b912f,
+		0x23a9f8d6562d9f7b,
+		0x267c5faa9631bde7,
+		0x35d81e2cb723ed65,
+		0x153c278ed436fbc1,
+		0x72da849fe2491b3f,
+		0xa59f7635413d2a9b,
+		0x62d387a65e2f4a19,
+		0x1e68cda87e126985,
+		0xbf5713da9c2587e1,
+		0xc15743dbab18965f,
+		0x2e795a6ed71a94cb,
+		0x6b42a8eed71ec439,
+		0x17b94ca1f731e2a5,
+		0x87f942c65846f213,
+		0x23eacf476538217f,
+		0xc3417db763182fdb,
+		0xf13c74976dfb3e49,
+		0x3df542b87afe4db5,
+		0x5cd87febabf18c23,
+		0xedb85a6dc9e37a8f,
+		0xc49f618ed6e598fb,
+		0xfc782b4215fac869,
+		0x7c1be45324fbc7d5,
+		0x89d71fe764dfe753,
+		0xc3b426e984e315af,
+		0x68f75e3ba1f7352d,
+		0x4e168facbfea4389,
+		0xf2bc63dbacdb62f5,
+		0xe148ba31fbde8173,
+		0xdca1e89329c17ebf,
+		0x1df9c5e328c49e3d,
+		0x2f9765b436e5bda9,
+		0x98bf34e765e9dc17,
+		0xca5f986874dceb83,
+		0xabfed31872ace8df,
+		0xe7f45d3dc1e3295d,
+		0x7c2fa85fefd537c9,
+		0x8ba95ef21fda5837,
+		0xbd196ea32edc76a3,
+		0xbe83cf465bce9621,
+		0x93f25ed769c1a37d,
+		0x21e3f97987c4b2e9,
+		0x7df2356cb6c8d157,
+		0xa967d4edc4a8dfb3,
+		0x7c2e41fed4abfe31,
+		0xb361dea323af1e8d,
+		0xa76e824651b23cf9,
+		0xfa457e943fb54c67,
+		0xf74d1c265eb86ad3,
+		0xa2d4b1687dbc8a51,
+		0x1362ca7cb69e87ad,
+		0x4a271cffe8a1c72b,
+		0x932e6481f6b3d597,
+		0xa859e7f216a7d5f3,
+		0xb6a12df435baf471,
+		0x714bc397649b13cd,
+		0x15da439981af324b,
+		0x37ea24da9fa351b7,
+		0x19e456ccbda67f15,
+		0x967825fedca97e81,
+		0x261b35c1f8697bed,
+		0xaef39dc2187e9c5b,
+		0xf9e4b1743681dac7,
+		0xd25cb1e76794ea35,
+		0x3f482be87496f8a1,
+		0xc429fd6cb49a281f,
+		0x7e395dfdc19d267b,
+		0x83a67decbd8f35e7,
+		0x59a4e311fea28465,
+		0x4da1e5732e9684c1,
+		0x628531954c78923f,
+		0x2671c3d5486ca19b,
+		0xa68f7125465caef7,
+		0x98d2541ba681de75,
+		0x91f6eb7ba574fcd1,
+		0x1c9765aed3871c4f,
+		0x7341edc1f1682cab,
+		0x5268abf4317d4b29,
+		0xdf7b34632e6f4a95,
+		0x46df38165d6378f1,
+		0xf6eb2c498c54976f,
+		0xc6fb72d98a4795db,
+		0xe7f5213ed86bc549,
+		0x95b8a27dc76ed3b5,
+		0x85ad692fe781f423,
+		0xb412f9643675128f,
+		0x83c6af76546731fb,
+		0x3d8eb268716a3f59,
+		0xb3a591487f3b4ec5,
+		0xf2beda5a9c5f7d43,
+		0x389cb1fbac427b9f,
+		0x58bf9c2feb459a1d,
+		0x7c64b3d1f836ca79,
+		0x56423da2173ac8e5,
+		0x6fabc193274de863,
+		0xa7d152e9875216bf,
+		0x526e3f1ba475263d,
+		0x9b46721dc15734a9,
+		0xaf47e28dcf3b6417,
+		0x23e95fbdce4d7283,
+		0x4971ebadca3e71df,
+		0x69e583d21b329f4d,
+		0x862bda543824aeb9,
+		0x3f2ace765938cd27,
+		0xcd516988762aec93,
+		0x3f51d698742bd9ef,
+		0x7de2315dc5412a6d,
+		0x2f5a187fe12438d9,
+		0x8967abdfef185947,
+		0xac781f432f1a67b3,
+		0xe1a2c4d65e2d9731,
+		0xe2bcf9765b1f948d,
+		0xfdbe59687a12b3f9,
+		0x36f5412cba15d267,
+		0xe76c915cb728e1d3,
+		0xb395164dc62aef41,
+		0x64c5dfafe42c1f9d,
+		0x2cde73a656324e1b,
+		0xd24a981762134d87,
+		0xbe2c6f854df56be3,
+		0x48ac9de65df98b61,
+		0x6eafcb1659fa78bd,
+		0xd342618a97fea83b,
+		0x5ea6df9dc8f1d6a7,
+		0x93a84e5ed8f4e715,
+		0x617ec53326e7f581,
+		0x5b8d6ec435f914ed,
+		0x915c38a874fd235b,
+		0x5d6e74a981ef42c7,
+		0xbd2f456bafe48135,
+		0x76ef831bacd57f91,
+		0x1ed7952ba9b67cfd,
+		0x2945acd1f7ea9d6b,
+		0xad4b5e3216ceabd7,
+		0xbea5194438d1eb45,
+		0xd7e294c656d4f9b1,
+		0x5c3a76b985d7192f,
+		0xdf854b6a93ea278b,
+		0x5cf4d86ba1dc36f7,
+		0xce78436cbecf4675,
+		0x6e183571fec385d1,
+		0xe36a89421dc6934f,
+		0x4ebac8143cd792ab,
+		0x12d978f658dbc129,
+		0xb12fd3a546adcf85,
+		0x796ebd5986a2fde1,
+		0xdf5b341ba6b41d5f,
+		0x9d641cbfe3a62dcb,
+		0xa673b421f1da4c39,
+		0xdf316b9321cd4ba5,
+		0xa275f9c54ebf7a13,
+		0x23cbdf954db2987f,
+		0x2ba31e465ca496eb,
+		0xd51e9fa87ab8c659,
+		0x891af52cb79ad4c5,
+		0x734eb59dc7ade543,
+		0x84ab165fe6b2139f,
+		0x4e89fbc327b6431d,
+		0x162ab84653c84179,
+		0xa7d9314761a94fd5,
+		0x8a4b91776f9c7e53,
+		0x32694d865b7e6caf,
+		0x4216d8bbac839b2d,
+		0x46dc835fea74cb89,
+		0x694735cfe687c9f5,
+		0x6d3a5ce2168be973,
+		0x7f349583247be6cf,
+		0xc3e972f986a1274d,
+		0xc32a975982a435b9,
+		0x67f215ddc1b96527,
+		0x659de72dcf8b7493,
+		0x36d872bbac6b72ef,
+		0x6873bdafeb7f916d,
+		0x64cfe7821b62afc9,
+		0xf3ebc9d32a85ce37,
+		0x6fd8ec354867eda3,
+		0xcba9df59867afc21,
+		0x42b8571a946e1b7d,
+		0xa96dbe1dc4713ae9,
+		0xf534691fe1934a57,
+		0x4832c79fef5768c3,
+		0xf7ed31632f6b9841,
+		0x93cadb832e4c859d,
+		0xb5d8a9654c6fa51b,
+		0x731d4e5a9b62d387,
+		0xecf95d2ba976d2e3,
+		0xa365e7bdc879f261,
+		0x538ca9dfe56a21bd,
+		0x3ab29dffe46d3f2b,
+		0xd97e1a6323614e97,
+		0xde6b947651746cf3,
+		0x812d3f965f468c71,
+		0x9382b1f65e3879cd,
+		0x62deb1387c3da94b,
+		0x5ef9cb6ba93fc8b7,
+		0x1bfe5a9eda63e825,
+		0x5f91763fe845f691,
+		0xe6a35743274815fd,
+		0xbd287694375c246b,
+		0x437c12a9825e43d7,
+		0x2c8d71acb3718245,
+		0x3b7e68cbaf4582b1,
+		0x349f27ebac368e1f,
+		0x8b4ae57edc289e7b,
+		0x36b57ad1f82bace7,
+		0xed429532192fdc65,
+		0xf142ea765843fac1,
+		0xacd1b43878461a3f,
+		0x8e5fc71ba537289b,
+		0x4263dc7cb53c4819,
+		0x8163e59dc12e4785,
+		0x5ea8123dcf3286e1,
+		0xdc7f968fed13945f,
+		0x8b6914532e1693cb,
+		0xedb73f965d1ac239,
+		0x48b59ca7692cd1a5,
+		0xc34b57d7672dcef1,
+		0x6f15becba8231e6f,
+		0xde5417cba6152edb,
+		0x31b96a4fe5183d49,
+		0xc1da6341f21a4cb5,
+		0x89e2bf66541e7b23,
+		0x16ce74932cde698f,
+		0x5e9df6b54ce297fb,
+		0xe2437d665bf4c769,
+		0x281fd46879f8c6d5,
+		0x4eb23c1ba8fbe653,
+		0x6f57c4da95dce3af,
+		0xf7d6c25fe7f1342d,
+		0x8ca4b96216f54289,
+		0xab89c63543e861f5,
+		0x13e6f29651ea7f63,
+		0xa832b7954eca6dbf,
+		0x4c8e5f276abf8c3d,
+		0x91d3ce8878e2bca9,
+		0xed213f4dc9e5db17,
+		0x7d4193c1f6d7ea83,
+		0x6354a8f215b9e7df,
+		0x1ba5f26436ce185d,
+		0x6bea485875e136c9,
+		0x347bdcfba2e45637,
+		0xa831d75cb1e875a3,
+		0x61cbf3dbafdb9521,
+		0x182e4d9baebc927d,
+		0xe3f94c7ed8bfa1e9,
+		0x653849e21ab2cf47,
+		0x3ce168a328a5deb3,
+		0x7f69bc2657b8fd31,
+		0x4c2ed3b765ba1c8d,
+		0xbd4381c874ad2bf9,
+		0xfe76513dc3d14b67,
+		0x4b68137fe1c469d3,
+		0x35a976bfefc78951,
+		0x6afb34d21fb986ad,
+		0xf2154eb43e9da62b,
+		0x972de1543bafc497,
+		0xe6a4c3b879a2d4f3,
+		0x32c91edba9b6f371,
+		0x8c1a4efcb6a812cd,
+		0xb4d7865fe6ac314b,
+		0x45cab1ffe29d3fa7,
+		0xe9d78a6434b27e15,
+		0xdb67283652b47d81,
+		0xc54297143f857aed,
+		0xce9f63254e789a5b,
+		0xfed278465a6db9c7,
+		0x5a7df6ecba8fd935,
+		0xeb59127ed893f7a1,
+		0x9f48ca2fe8a6271f,
+		0x6274af9216a9257b,
+		0x4cb5e8a3259b34e7,
+		0x3d9fe6c982ae7365,
+		0xdb2f487a94a283c1,
+		0x126f94ebae85913f,
+		0x6ec1b53bad659f8b,
+		0xf6e25addcb58adf7,
+		0xd41e7b51f96bcd75,
+		0x78d6f9c3286febd1,
+		0x8ec74b2659831b4f,
+		0x87c3fad5467529ab,
+		0x2ac6df4cb5784a29,
+		0xe238f7ccb27c4895,
+		0x2c8d563cb28d67f1,
+		0xe2b6195dce71956f,
+		0x931a6c71fe6394db,
+		0xc3978a221e67c349,
+		0xf21659743c69d2b5,
+		0x58e742d76a7ce123,
+		0xe83adc16564cde7f,
+		0xdb58431a97632feb,
+		0xdb24935dc4763e59,
+		0x82c175ffe2684dc5,
+		0x42abd5e1f16b7c43,
+		0xd57ea9c3214d6a9f,
+		0x98b5ec654f52a91d,
+		0x4e9a37f65e43c879,
+		0xb27fa5998b36c7e5,
+		0x8e62d45a9b4ae763,
+		0xf84c71da973ae4bf,
+		0x3b9de67dc86f153d,
+		0x29a8b3e1f76243a9,
+		0x6fc7a84329586317,
+		0x5ce2d787645a7183,
+		0x62e89fb651396ecf,
+		0x825f97d76f2c8e4d,
+		0x42d5fe687e31adb9,
+		0x4b53e81bab34dc27,
+		0x526a98ceda26eb93,
+		0xb948ed5dc627d8ef,
+		0x85f4be33283c196d,
+		0x2a1bf535463f27d9,
+		0xf73d91cba9325847,
+		0x23f48d5ba42576b3,
+		0xe17d3a5dc24a9631,
+		0xf5ce147baf1b938d,
+		0xa9fcde1cbc1da2f9,
+		0x9641e371fc32d167,
+		0x1cd6afe32a14dfc3,
+		0x192b8ac65a27fe41,
+		0x2fa96b1657281e9d,
+		0xcef24d59872c3d1b,
+		0x5dfc4e7ba51f3c87,
+		0x8e4af17dc5126ae3,
+		0xd783b69fe3258a61,
+		0x192df3adcef587bd,
+		0xcfb92d721ef9a73b,
+		0x51ba6dc32bfdc5a7,
+		0x87d63ce54aefd615,
+		0x1b248e387ae3f481,
+		0x6e1f8c3a98f613ed,
+		0x784153edc7f9325b,
+		0x9eb2c84ed5fb41c7,
+		0xd6fe2b1dc3ed6f25,
+		0x19b6f7e434f27e91,
+		0xb98a2d3541e37bfd,
+		0xdeb54ac43fe59c6b,
+		0x9e68ac754ce8bad7,
+		0x2156fca879ecda45,
+		0xfac3457a97cfe8b1,
+		0x1d72b9fdc9d4182f,
+		0xea6327d1f7e5268b,
+		0x452f38b216d935f7,
+		0xd1a754f323ec6475,
+		0x9a8b4e7763ce74d1,
+		0x621953f983d1924f,
+		0x54d83ab87fd491ab,
+		0x9f2671e98dc6bf19,
+		0x5469c8eedab9ce85,
+		0x5a9e84c1f79adce1,
+		0x2bc573d2179deb5f,
+		0x62e3f5d547d32acb,
+		0x1a8b64f657d64b39,
+		0xecfab2d873d849a5,
+		0x35eb12cba4dc7913,
+		0xe1c3658ba1bd867f,
+		0x5e9b48fdcfa195eb,
+		0x62b54191feb3c459,
+		0x3cfe9d721ea7d3c5,
+		0xb876f4d65cbae243,
+		0xc8ea7db5478be19f,
+		0x5381f4e878af321d,
+		0x3f5b184ba7b23f69,
+		0xace3152cb3a64ed5,
+		0x5d9fb16fe2b97d53,
+		0x53c87b1fe1896baf,
+		0x7d29f864319e8a2d,
+		0xb42a71643f71ca89,
+		0x57bd81354d93c8f5,
+		0xf26971365ca6e873,
+		0x87b5d2e76978e5cf,
+		0x6f8ea24cb89c164d,
+		0xb51c62eed68f24b9,
+		0x2ed3b781f8b36427,
+		0x3e5db86215b67293,
+		0x3b6f51a5439871ef,
+		0xcbf65a15417a8f5d,
+		0x3ef17d554f5d8ec9,
+		0x847e65da9e81cd37,
+		0xf6e3d2ba9b74eca3,
+		0x78a3c46eda87fb21,
+		0xc5be6a11f8691a7d,
+		0x6394ec82176c28e9,
+		0x9436be53268f3957,
+		0xa5ebc719859267c3,
+		0x9fd8a24cb3a69741,
+		0x6cd8f94cb167849d,
+		0x3de48caa9f6ca41b,
+		0x3c8dea9cbd5ec287,
+		0x347692d1fb72d1e3,
+		0xade487332b74ef51,
+		0xb14edc7439561fad,
+		0x248af9b658693e2b,
+		0x417f3be9865c3d97,
+		0x528a467a946e5bf3,
+		0xa735c62ed4638b71,
+		0xca6b83dfe15478cd,
+		0x6c93b7dfef37a84b,
+		0x6e5cd9f21f3ac6b7,
+		0x9b4e51843c4ed725,
+		0x5e46c2b87c62f591,
+		0xdf1249698a6514fd,
+		0x249efabdca58236b,
+		0x325e976dc85a42d7,
+		0x7b95826fe86d7145,
+		0x168ef52ed34e6fa1,
+		0xb49e37f324538d1f,
+		0xc7f6eab651349d7b,
+		0xd2b317954f26abe7,
+		0xe2941fc87e2adb65,
+		0xe58b34687a3de9c1,
+		0x8f6a2b7dcb52193f,
+		0x42389b5fea34279b,
+		0x8c547bd1fa384719,
+		0xe792ac62192b4685,
+		0xaf21be65463c75e1,
+		0xfd541ec8742e835f,
+		0x2a47eb59814392cb,
+		0x3c657e1baf26c139,
+		0xf7519c8bad17cf95,
+		0x4ae7519cba29cdf1,
+		0xe539462ed81bec6f,
+		0xba52971549312cdb,
+		0x9bd352f76a153c49,
+		0xda19e28768174ab5,
+		0xc63ae82a961b7a23,
+		0x8932ed7ba31c678f,
+		0x46e2358ba21e86fb,
+		0xc13ed47cbef1c569,
+		0x7c61593febf3c4d5,
+		0x5f6e94221cf8e453,
+		0x68d495f439d8e2af,
+		0x1394a52769fc132d,
+		0x9a148bd767ef3189,
+		0x36451caa97d24fe5,
+		0x156d3a8cb4f57e63,
+		0x8b65f34ba2e76cbf,
+		0xc63527ffe1fa8b3d,
+		0x7d86c51321fe8ba9,
+		0xd5819cb54fe2da17,
+		0x79a32ef65cd4e983,
+		0x173b892549b5e6df,
+		0xa9c56d3989ea175d,
+		0xe4bc192ba7ed25c9,
+		0x179456adc8df4537,
+		0x75369ba1f6e274a3,
+		0xe65ac12436e79421,
+		0x65ae2fd543e8917d,
+		0x38af56c541ca8fd9,
+		0x49ab8f265fadbe47,
+		0x2abd98f87ca1edb3,
+		0xa48b6eca9ab5fc31,
+		0x9b8d53ffe9c61b8d,
+		0xaf61943fe6c82af9,
+		0x85bc234218cd3a67,
+		0x83f7cde326bf58d3,
+		0xdcf35b2876d39851,
+		0x2a486ed872c485ad,
+		0x165afdca91d8a52b,
+		0xf97aebc98fabc397,
+		0xb824635bab9dc2f3,
+		0x8dfa651fecb3f271,
+		0xf12bdae43ba521cd,
+		0xd13ebf7549a72f3b,
+		0x3fbc962546b93ea7,
+		0xf43a926987ac6d15,
+		0x2c7d48ba94af6c81,
+		0x54ec723cb3a279ed,
+		0x58d7c3ffe1c4a95b,
+		0x26b85d4fef96b8c7,
+		0xd2e795321f9bd835,
+		0xa2cd17643c8de6a1,
+		0x8b249c187ca3261f,
+		0x25eb6a998ca5247b,
+		0xce463f7cb9a843e7,
+		0x9bf326aed8ab7265,
+		0x2d5164cfe59d72c1,
+		0xe147a53dc38d7e2f,
+		0x4eca9f6213729e8b,
+		0xfd8b6a243184acf7,
+		0x8f9adb143f68dc75,
+		0x9f68c7d65c69ead1,
+		0xc259f1687a6ce94f,
+		0xf958e67edc7128ab,
+		0xbd24617feba54829,
+		0x21b4d9a1f6a84795,
+		0xd87b13a3258a76f1,
+		0x8e91dc43237c846f,
+		0x42d7be16526f83db,
+		0xc4b5de6ba183c249,
+		0x521a687a9f76d1b5,
+		0x8ec1f9bbac68df13,
+		0xdc82461cba49ed7f,
+		0x41aeb291f85c1deb,
+		0x854e9d332b713d59,
+		0xabf9764329734bc5,
+		0xd9f3ac8659687b43,
+		0x42dcb398734a689f,
+		0x68cb32fba35c981d,
+		0xe21f358dc14fb679,
+		0xac419f3cbf42c6e5,
+		0x6dc8e351fd47e563,
+		0x543276c21c47e3bf,
+		0x98231ac65c6b143d,
+		0xe3dc98576b5e32a9,
+		0xe95b1c6bab836217,
+		0xe7f8d61cb9546f73,
+		0xb1e625cba4356dcf,
+		0x23b564afe2398c4d,
+		0xbd57e121f13d8cb9,
+		0xc4a79284314fcb27,
+		0x4d36c7f65f42ea93,
+		0x6489a7365b24d7ef,
+		0xc146f5e87c39186d,
+		0x954b6df98a3b26d9,
+		0x28d795fdca2e3647,
+		0x69137b2fe94175b3,
+		0x4165ab31f8469531,
+		0x546eafd21536928d,
+		0x7341ca265438a1f9,
+		0x4f8ea9b7612cbf57,
+		0xdf79ae576d1fbec3,
+		0xc5d4a72a9c23fd41,
+		0xf39c784bab251c9d,
+		0x7b31ca5fea283c1b,
+		0x2db84591f91c3b87,
+		0x96d5b3a3281d59e3,
+		0xc419a8d65a328961,
+		0x4bea2358751386bd,
+		0xa16c274a9417a63b,
+		0x36c92f4cb219c4a7,
+		0xa5d8237a9efbd415,
+		0x1e58c47babfde381,
+		0x26845f7dcaf312ed,
+		0x14f6abe32cf6315b,
+		0x7d39bf8329e63fb7,
+		0x5ead293548fa6e25,
+		0xed396af875fc6d91,
+		0x5316a89873ce6afd,
+		0x5bf18e3dc3f29a6b,
+		0x68da23edc1f4b9d7,
+		0x127a386dcfe8d945,
+		0x4aecbf532fdae7b1,
+		0x6bf715e43abce62f,
+		0xa93ebf276ce1258b,
+		0x2b6de9598ad534f7,
+		0x9a6412ccbae96375,
+		0xdf9a876cb6ea73d1,
+		0x2c61fdecb5dc814f,
+		0x654c173ed2ce7f9b,
+		0x8fce746324d3be19,
+		0x42cf5d9431e4cd85,
+		0x29f3ed154fa7dbe1,
+		0x2a3f18654cb9ea5f,
+		0x9241fad768ae19cb,
+		0x6379124dcbd14a39,
+		0x845c1bafe9d348a5,
+		0x85164a31f6d97813,
+		0x857ade3214ca857f,
+		0x89b673e323ac84eb,
+		0x8d2a31e762cfb359,
+		0xd17be3c981b3d2c5,
+		0x5e8132da9fb7e143,
+		0xd5f69a887b96de8f,
+		0x9b8ae17dca891efb,
+		0x94e638c1f8ad2e69,
+		0x915b47c329a14cd5,
+		0x7db5346329b47c53,
+		0xf862bdc434b569af,
+		0x318e29a764ba892d,
+		0x734fdb2762adb789,
+		0x6b814e5ba19eb7f5,
+		0x63142f7dcfa2e673,
+		0xb1a7839edb85e4cf,
+		0x43bca9132ea9154d,
+		0xc8b712a54d8c23b9,
+		0x3efdacb76bae5327,
+		0xb3fc71298ab27193,
+		0xcab54f3a95836edf,
+		0xcd32f97cb3968e5d,
+		0x21c3d75fe2678dc9,
+		0xcb67a511f18dbc37,
+		0x6d1ab473217fdba3,
+		0xec4f78d65e84fa21,
+		0xabd381554e85197d,
+		0x4f9183c65c6827e9,
+		0x18d29c5bab9c3857,
+		0x46fea79cb98e56c3,
+		0x437b58dfe8a29641,
+		0x49b178d1f574839d,
+		0x4a7fdb532587a31b,
+		0xdbc9a575436ac187,
+		0xbc936af6516abfd3,
+		0xef4cba287c6fde51,
+		0xc625fd498c631ead,
+		0xfe83c46bac763d2b,
+		0xfa235c7feb583c97,
+		0xdb68a24fe86b5af3,
+		0xac85f9b3295e6a71,
+		0xc8571ab4365187cd,
+		0xd9fc73698563a74b,
+		0x8c1d3aea9246c5b7,
+		0x496c7fecb17ad625,
+		0x47e62c3baf5ce491,
+		0x386adfba9a4ce2fd,
+		0x7ac64e21fd74326b,
+		0x8fb1e7c32c5641d7,
+		0x6b375ef32b496f35,
+		0x327d4616584b6ea1,
+		0x753db419864d7c1f,
+		0xfc93641ba5419c7b,
+		0x4b8da5edc243bae7,
+		0x48f5a29fe137da65,
+		0xf34e692edf39e8c1,
+		0xce2395b21d2be73f,
+		0xfc1758254d3f169b,
+		0xf1a7be698d534619,
+		0x82c19d5bac276485,
+		0xe25483dcba3974e1,
+		0xd5e7f4bdc73b825f,
+		0xf7ac41eed53e81cb,
+		0xf68d37bfe541bf29,
+		0xc7d4eb921423ce95,
+		0x4ceb2d965236dcf1,
+		0xa731d9e54d18eb6f,
+		0xdc1e43f76e2c1adb,
+		0x537bde198c1f2b49,
+		0xe721386edc1249b5,
+		0xc59b7d4feb167923,
+		0xa3d6b95fe519768f,
+		0x843b9513261a85fb,
+		0xd678aec4351eb469,
+		0x7c53a1998621c3d5,
+		0xd483e1fba416e253,
+		0x1cebf4d87cd5e1af,
+		0xeb12df7bacf9312d,
+		0xd581ab3dcaeb2f79,
+		0x8145fe9cb8fc3de5,
+		0x198c6e532af17d63,
+		0x9ab4f13327e36abf,
+		0x651a87c545f68a3d,
+		0xec8f1d9653f7b8a9,
+		0xeb9576d983fdc917,
+		0x7f9c84eba1efd783,
+		0x2c1db6aa9cb2e5df,
+		0x3486ad21fce7165d,
+		0x4afd53821de824c9,
+		0xb3f691432bec5437,
+		0xa647b1f659de62a3,
+		0xcd16e3a98ae49321,
+		0xab528f7a95c38f6d,
+		0x78b21c4ba3c58ed9,
+		0x85ef3addc2e9bd47,
+		0xe2475631f1eadcb3,
+		0xc8d91f5542cfeb31,
+		0xdac381654fc31a8d,
+		0x1b93a2d54dc528f9,
+		0x47f6eda65cda3967,
+		0xbe6c342989cb57d3,
+		0x6f2d875cb9ce8751,
+		0xb239c8ffe6c184ad,
+		0xa2498dc1f6d5a42b,
+		0xb46958d214d6c297,
+		0x8b49236654b9c1f3,
+		0xefbca27652abdf61,
+		0x87b6f3d54a7cfebd,
+		0x56e91db98da42e3b,
+		0x8eb47a5a9cb53da7,
+		0xb1c594afeab96c15,
+		0xd62eba71f7ac6b81,
+		0x6bfd8a32159c68ed,
+		0xab97fd6436c1a85b,
+		0x16b4aef654a3b6c7,
+		0x2af837ca92b8d735,
+		0x3f562a4982b9e5a1,
+		0xec6d817a9d8be41f,
+		0x8a9654edcd9f137b,
+		0x219b64a1fca342e7,
+		0xbe8a61332db87165,
+		0x76eadcb43a986fb1,
+		0x3259bc65468a7d2f,
+		0x68e2f9b6546e7d8b,
+		0x6284d53a9481abf7,
+		0x3f69d82dc293db75,
+		0xea9d165dc286e9d1,
+		0xf4219dbdcd69e84f,
+		0x376acb932f6d17ab,
+		0xb71d89e54d8f3729,
+		0x9b3ec4687da24695,
+		0x6ad7e4298b9675f1,
+		0x3476d9fcba79836f,
+		0xd362a58dc56a82db,
+		0x46517baed57eb149,
+		0x68a5b27fe371cfa5,
+		0x5b98ae632485de13,
+		0xf6bc92743165ec7f,
+		0x7b53d8c54f581ceb,
+		0xae5bf1d87e6d2c59,
+		0xa3fec6598b6f3ac5,
+		0xa8c29b5edc827a43,
+		0x6149b53eda54679f,
+		0xd87153c1f658971d,
+		0xa87ef952164cb579,
+		0x94586ad3236db4e5,
+		0x25d7f48a9581e463,
+		0xe1439ba98164e2bf,
+		0x74b28d5baf68123d,
+		0x2a5981ddce5b31a9,
+		0x7b856d3dca4b3ef5,
+		0x263f157eda4f5e73,
+		0xe4dfb39219426bcf,
+		0xab7ec19329358b4d,
+		0x5931fab545368ab9,
+		0xf246a9d9854bca27,
+		0x9524edfba24ed893,
+		0xf453d17ba241d6ef,
+		0x84b971ddcf34176d,
+		0xda2c54e1fe3725d9,
+		0xab3dfe421e2b3547,
+		0x4fd2c3e65c2d64b3,
+		0x62c8f4987b5f8431,
+		0x29d3b6f87a43918d,
+		0xe9d234cba6248fe9,
+		0x85362addc428be57,
+		0x3b69275fe429bdc3,
+		0xe87ca461f23dec41,
+		0x2d8b347653421b9d,
+		0xfbad83576f253a1b,
+		0xe423a6865e163a87,
+		0xf23deb887c1a58e3,
+		0x5f37d84bab2d7861,
+		0x2b4fe18ba81f75bd,
+		0xbf31c69fe812a53b,
+		0x61cd8731f615c3a7,
+		0xb827de354729d315,
+		0x23ec17f7653be281,
+		0x94b67ae6521aefcd,
+		0x47d395a76cde1f4b,
+		0x71a459698cf23eb7,
+		0xcbd9347babf76d25,
+		0xfc6b98eedaf86c91,
+		0x2dab943dc5ea69fd,
+		0x768d4f9215fe896b,
+		0xb7c214e435f1b8d7,
+		0x8da93f1876f3d845,
+		0xabd2467983f7e6b1,
+		0x1563af4981d9e52f,
+		0x857621ca9fed148b,
+		0xc3d8765babce23f7,
+		0x8413dab1fce36275,
+		0xd7be1c643be672d1,
+		0x1de73f8329c87e3f,
+		0x14bfd86435da7e9b,
+		0xc54328f765cead19,
+		0x6b43f2ea94e1dc85,
+		0xd1426bfa93c4dae1,
+		0x61a79cdcb1c6e95f,
+		0x635ab2dfefd918cb,
+		0x9e5dca821fcd2839,
+		0x78e514f32dcf37a5,
+		0xc39b71f76cd48713,
+		0xf45e8c176ac5847f,
+		0x81c534da96c783eb,
+		0xf2b794cba6dcb259,
+		0x4276e8bed4aeb1c5,
+		0x16d5a87fe5b1df23,
+		0x2c57edf212a3ed8f,
+		0xdcae5b9542a61dfb,
+		0x36b9cef54fba2d69,
+		0x28a4fde76e9c3bd5,
+		0xa67db3998caf6b53,
+		0x6ed1a34dc9b268af,
+		0xdba5239fe7b5982d,
+		0xb8a73ec1f4c7b689,
+		0x3e824af2149ab6f5,
+		0x14bc53a324aed573,
+		0x7b2ca9876491e3cf,
+		0xc57b6eaa92b6134d,
+		0x1e45b9c98fa732b9,
+		0xa48b912dceab5127,
+		0x5438a26edb9c5f83,
+		0xd186a49cb87e5cdf,
+		0xe3c27a621a928c5d,
+		0xc8e1479326748bc9,
+		0xb6279ae54598cb37,
+		0x92c43b87647bd9a3,
+		0xde5b146ba48de921,
+		0x67ab24ddc3a2187d,
+		0xf8e42b9dcf8426e9,
+		0x67c18d41fea93657,
+		0xe9bfdc821e8a65c3,
+		0x249e75a43c9d8541,
+		0x8267fea54a6f729d,
+		0x3cbef4a87984a21b,
+		0x2794681ba584bf67,
+		0x9264d7eba467bed3,
+		0x1b835e6dc37aed51,
+		0xd7c9821fe15cfbad,
+		0x28b961a654813c2b,
+		0x375468a32f643b97,
+		0x2e85c1954d6759f3,
+		0xd3b645c98d5b6971,
+		0x53ecd629894b76cd,
+		0x4f97e5ddc85f964b,
+		0x4a6b185fe862c4b7,
+		0xba561471f687d425,
+		0xf64e9da32568e391,
+		0x23c7a9b54359e1fd,
+		0xb95f67e9837e216b,
+		0xe6534a298e513fc7,
+		0x5b81e94bad746e35,
+		0x6ecf723cbc476da1,
+		0xfe14935eda497b1f,
+		0xa5813de1f63d8a7b,
+		0xaecbfd22163fa9e7,
+		0x9d28e5143842d965,
+		0x6dce4ba98645e7c1,
+		0x8a276b4a9248e63f,
+		0x6e387fdba24c159b,
+		0xa8945f3cbf4e3519,
+		0xf19e63bede416385,
+		0x9de87a31fc4573e1,
+		0xc3f9a6832c37815f,
+		0x812ebf9439287fab,
+		0x6983a416573cae29,
+		0x5dfab348762fbd95,
+		0x84a1cdfa9643dbf1,
+		0x8e7d293cb324ea6f,
+		0x1349c72fe23719db,
+		0x8b1c9f5fef1c2a49,
+		0xd139ac432f1e38b5,
+		0x482a95b76e417823,
+		0xc5ef23a76c13758f,
+		0x4fa981d87a1684fb,
+		0x29bd3e5dc81ab369,
+		0xecd18b3ba71cb2d5,
+		0x5b37dafdc72fd153,
+		0x5e9436ddc412de9f,
+		0xca5721d545362f1d,
+		0xf42e61a653182e79,
+		0x6d1589354df93ce5,
+		0x962da3e87bfd5c63,
+		0xdbc48e9768de59bf,
+		0x2d4ac69cbaf2893d,
+		0x3fc68e2ed6f4b7a9,
+		0x143a2f8fe5f9c817,
+		0x7de9f86215fbd683,
+		0x81c6a3e323ebc4df,
+		0x6ce54f3986f2145d,
+		0xe24c657981f523c9,
+		0x35d621fbafe95237,
+		0x1437c6da9deb61a3,
+		0xd534c87a98ba5def,
+		0x5fd9734dc8bf7e6d,
+		0x645fd87217e28cd9,
+		0xdfb698a328e5bc47,
+		0x9c3d87e545e7dab3,
+		0x421a9b6875dbea31,
+		0x4589e13762bcf78d,
+		0x4218a9fcb3d127f9,
+		0x5914beadcfd43867,
+		0x6217ad31fec856d3,
+		0x7d46b8e32edb8651,
+		0xba157c9329bc73ad,
+		0x2193abe658cf932b,
+		0xe71a49c768d3c197,
+		0xcd3216f986a5bfe3,
+		0x4dce8b7ba4b8de61,
+		0x3b8f1c7ba298fcbd,
+		0xe3759281f2ae1d3b,
+		0xf2cde87542d13ca7,
+		0xedfc6b143fc46b15,
+		0x3d6ec2754ec76a81,
+		0xe72ad3954ba967ed,
+		0xb21a38e768ad975b,
+		0x219865acb69fa5c7,
+		0x7d81632fe8b2d635,
+		0xb9281451f5b6e4a1,
+		0x54fa896325a8e31f,
+		0xac27689654ac127b,
+		0xbf8154d762ad31e7,
+		0xa476cf298ea16f45,
+		0xc94a1e598d946eb1,
+		0xf19b6c8bab967c2f,
+		0x94d17cbfea697c8b,
+		0x273f459fe56c9af7,
+		0xa7c23bd2168fca75,
+		0xe76581a54693e8d1,
+		0x4c9daf276395e74f,
+		0xfe28b6a8739816ab,
+		0x782cda1cb1ac3629,
+		0x8435d1fcbf8e3495,
+		0x6ed4823dcd9274f1,
+		0xc68da25fec94826f,
+		0x16afc5932c7681db,
+		0x13eb46c32b68af39,
+		0x61cb2794376cbea5,
+		0xb742fda9867fcd13,
+		0xd857c2ea9462eb7f,
+		0xd4e2a17dc3751aeb,
+		0x83c5a47fe1782b59,
+		0x7a4d82bfef6b39c5,
+		0x84acdfb21f7e6943,
+		0x5e879fd43d51769f,
+		0xcb6184e65c74961d,
+		0xa5be6c498c56b479,
+		0x67c28b1ba869b3e5,
+		0x7d4c631cb87cd263,
+		0x2e17493ba45ed1bf,
+		0x871ba651f685213d,
+		0x925d87b213652f89,
+		0xf1c256e541683df5,
+		0xe3bc81776f4b5d73,
+		0xa724c1976b3d5acf,
+		0x8653ae7a9c518a4d,
+		0x63b4ef7edc43a8b9,
+		0x3482ac7fea46c927,
+		0x834129b1f64ad793,
+		0xe9783c42163ac5ef,
+		0x5e9dc843253ef46d,
+		0x1cdf24b9856324d9,
+		0x96f1372cb1685347,
+		0x965bd48baf4962b3,
+		0x5a2cde7cbe5c8231,
+		0x2175fcdcba2c6f7d,
+		0x576c49d1fa318de9,
+		0xd5927c321a23bd57,
+		0xf68d32a54826dbc3,
+		0x98f3bce76739eb41,
+		0x19db8e57642bf89d,
+		0xef93b45ba54f291b,
+		0x8649e37ed1423987,
+		0xfe3965adcf1657e3,
+		0x6a2479d1fe2a8761,
+		0xfae637932e1a74bd,
+		0x4f2ae9665c1e943b,
+		0x4cb91d576b31c2a7,
+		0x48b7532a9a36d215,
+		0x56d3812ba826df71,
+		0x3476fada9417fecd,
+		0x38b7af1ed52c1e4b,
+		0xc17fd36fe31f2db7,
+		0x1c6e84b874136c25,
+		0x1b9fac543ef46b91,
+		0x849a12e43be568fd,
+		0x1f2d95354cfa986b,
+		0xf4ad391658fca6d7,
+		0xfc56d98ba8efc745,
+		0x4362951dc7f3e5b1,
+		0x37f24bedc5d6e42f,
+		0x3fc648a325f9138b,
+		0xcd942b8654eb32f7,
+		0xab91647982fe4175,
+		0x8af52c687ed26fc1,
+		0x9a236bd98bc47d3f,
+		0x53f79e698ae57d9b,
+		0x5c94be6ed7e8ac19,
+		0x24cb7ea1f6edcb85,
+		0x84eb653326bfc9e1,
+		0x871adb6436c2e85f,
+		0xf3bd128764e517cb,
+		0x6df3e5a984ea2739,
+		0xf26a1dea91ec36a5,
+		0xdf6e4b5bafce7613,
+		0x13f26d5cbdc1837f,
+		0xa18732c1fac482eb,
+		0xb738a6932cd7b159,
+		0xedc9b3a327c8afb5,
+		0x4e9d361657abce23,
+		0x36f7b816549edc8f,
+		0xb6de5f3985a31cfb,
+		0xd13a692cb3d52c69,
+		0x5829bfcfe1c83ad5,
+		0x367952cfefbc6a53,
+		0xdea876421e9d57af,
+		0xb27893154eb1972d,
+		0x27e51cf54dc3b589,
+		0x1c38d4b769a7b4f5,
+		0x3c2afdea98bad473,
+		0x68f51b7a958ad2cf,
+		0x596dfa2cb59ef14d,
+		0x2863d151f5c431b9,
+		0x3f758c1323b64f17,
+		0xba9f8e6541b95e83,
+		0x4bdf79643e795bdf,
+		0xc5fd1ae54c8e7b5d,
+		0xd7eb12376d718ac9,
+		0x241c57eedb94ca37,
+		0x3972ac6fe796d8a3,
+		0x9ab7c581f69ae821,
+		0xa2e648c2148bf57d,
+		0x76fbe514348f15e9,
+		0x38af472a96b23457,
+		0x7d832e1a91a764c3,
+		0x32de467cbf9a8341,
+		0xde92b6cbae6b719d,
+		0x2a39de7cba5c7ef9,
+		0x8d6a23c1fa81be67,
+		0x5832ef721974bcd3,
+		0x294fab843987ec51,
+		0x527f8b643457f9ad,
+		0x23a49df9857d1a2b,
+		0x7c3a12fcb36f2a97,
+		0x34e6bf7dc19258f3,
+		0x26c753eedf956871,
+		0x54cbe711fe4875cd,
+		0x2a67d8321e6c954b,
+		0x76d4feb32c5ea3b7,
+		0x12a643f87b81d325,
+		0xd25e16798a75e291,
+		0xebd45f798645cfed,
+		0x175df84dc4691f5b,
+		0x123bcfaed35b2ec7,
+		0x468cb1ffe17f4d35,
+		0xab9765e542736ca1,
+		0xce879d643e457a1f,
+		0xd7251c654e36897b,
+		0x4873deb65c3ba8e7,
+		0xbd1236fa9a3ec865,
+		0xfde96a5cb952e6c1,
+		0x421ba58dc864e53f,
+		0x981732b1f657149b,
+		0x4a6ed9f3276b3419,
+		0x9e2bf188736d4285,
+		0x751fd929835f62e1,
+		0xe37abc298d327e4f,
+		0x3cfb7d198d247eab,
+		0x64f923ccbc37ad29,
+		0x651f728fe82abc95,
+		0xa368c92fe73dcaf1,
+		0x417ef6332831e96f,
+		0x2e641ab6573418db,
+		0x82714c5ba6372849,
+		0x1a7e24ba942a37b5,
+		0x47d68a1cb14d6723,
+		0xe263978bad1e648f,
+		0x46f7e32dcd1283fb,
+		0xb9d1e381fd15b269,
+		0xb8c69fe43c28b1d5,
+		0x9dc1e2a6591acf43,
+		0xcab3f6e5461bcd9f,
+		0xcf5a6e1a98432e1d,
+		0xf9e7d14cb6142d79,
+		0x5682af1dc4173be5,
+		0x498dacffe21a5b63,
+		0x8dfe62adcdea58bf,
+		0xe2a96fb21cfe783d,
+		0x9d715ce43df1b6a9,
+		0x92ebdc365bf4c617,
+		0x1c248fe76af7d583,
+		0x39dc45b876e8c3df,
+		0xbc53a76a96ebf25d,
+		0xc73e924cb5ef12c9,
+		0x498135cfe6f45137,
+		0xf2458cd212e65f93,
+		0xce869a1431d75cef,
+		0x92eb48543fea7c6d,
+		0xd6acfe154ace7bd9,
+		0xea4f5c798ae1cb47,
+		0x3b1c4deba8e4d9b3,
+		0xb41e28ddc8d7e931,
+		0x54d7afcfe4c9f68d,
+		0xdf9875b325dc16f9,
+		0x14a7fb6434df2567,
+		0xae7126f984e265d3,
+		0x9e1b763ba2e78451,
+		0xce81a4276fc872ad,
+		0x36a4fce98edc912b,
+		0x1e896dfdc9bdaf87,
+		0x2c6a7151f8a1bde3,
+		0xd983fb1329b4ed61,
+		0x65bed3a32695fabd,
+		0x6f921bd656d91c3b,
+		0x1d98b45764cd2ba7,
+		0x7de1825a93cf4a15,
+		0x7a61b48dc2d36981,
+		0xf138ce2cbfa476ed,
+		0x9b624ea1fec8965b,
+		0xbe72f3421e9ba4c7,
+		0x6c195d432baec435,
+		0x2d3fca4769b2e3a1,
+		0xda4eb82878a5e21f,
+		0x2c7e15dba6c8217b,
+		0x62c3fe8cb4a92fd7,
+		0x5f74eb3ed2ac3e45,
+		0x35972fdfe29f5db1,
+		0x3a8fdc6541a37b2f,
+		0xe4768d132f947a8b,
+		0x48d6cf743d86a9f7,
+		0x7ba9c5e54d8bc975,
+		0xfad82be7698ec7d1,
+		0x426c9dfcb891e64f,
+		0x54f13c6fe79415ab,
+		0x98e73a61f6b83529,
+		0xf9e2d43216ab4395,
+		0x8b94ed36549c63f1,
+		0x78dca346529e716f,
+		0x8eb637f65e627fcb,
+		0xc56d4f398d75ae39,
+		0xba6c5e4a9c67bda5,
+		0xb14723ffe97adc13,
+		0x2fba579fe65cda7f,
+		0x1bf2dea4387219eb,
+		0x1ac4958437842a59,
+		0x7b4d21f7649738c5,
+		0xc4b3561ba29b6843,
+		0x534cfdeba17c659f,
+		0x68b273dbae6f851d,
+		0x2c561a9ede62b379,
+		0xb71de951fc76b2e5,
+		0x5d4ce9832c79d163,
+		0x51ebd9332748ceaf,
+		0x9c5db735475bfe2d,
+		0x1df3526ba7612e89,
+		0x74fbec1ba6743cf5,
+		0x46e372ced2685c73,
+		0x8eb53c6ed14859cf,
+		0xf5ba497fef3c794d,
+		0x3b92ae721e3f87b9,
+		0x5c3fb7d54e53c827,
+		0xdb564f387c45d693,
+		0xfc2457b76937c4ef,
+		0x1c362f8a984af36d,
+		0xfd8ec7acb75e13d9,
+		0x9734cf2fe9815247,
+		0xd5e81ac1f47561b3,
+		0xe489cbd434587f21,
+		0xc98fd61541396e7d,
+		0xb85fd9354f2b7ce9,
+		0x72acd3476d2fac57,
+		0x69f13cd98b42dac3,
+		0x2e91863dcb36ea41,
+		0x4bf6a18dc826f79d,
+		0x43de5971f74c281b,
+		0x92def542193e2687,
+		0xa59f4238784156e3,
+		0xb5ced7fba7348561,
+		0x32bc4d1a912673bd,
+		0x6975fab98f1a923b,
+		0xe52c6dba9e2db1a7,
+		0xced65f4cb91daef3,
+		0x841d7e91fa23de71,
+		0x4ae71b332814fbcd,
+		0xf6478bd659281d4b,
+		0x1ef63946561a2cb7,
+		0x32fd48ba971e4b25,
+		0x3d296fadc5326a91,
+		0xf15ce29cb21367fd,
+		0x2de7836dcef4976b,
+		0x685241bfecf8a5d7,
+		0x65398c721dfbc645,
+		0x25f4ea6439fed4b1,
+		0x439c8d5769d1e32f,
+		0x48f5b2a879f5128b,
+		0x8ef5269ba6e831f7,
+		0xc7fe4a9cb4ea3f65,
+		0x59c8346ba3fb5ec1,
+		0x49ca256cb1de6c3f,
+		0x71af286431f27c9b,
+		0xe96fcd543fe5ab19,
+		0xde1c4ba43de7ca85,
+		0xaf6ec4d659dac8e1,
+		0xc917a4e768bcd75f,
+		0xdec4bf6ba8e216cb,
+		0x9ae8217ed8e52639,
+		0xc45de281f6e834a5,
+		0x8b1cd59326eb7513,
+		0x8192eac543dc627f,
+		0xf3847db652cf71eb,
+		0xbf3a78d76ec2af49,
+		0x1cfa46587dc4aeb5,
+		0x243a6e8a9ab8cd23,
+		0x46fd398dc6a9db8f,
+		0xa591437ed58ce9fb,
+		0x1af46c7438d12b69,
+		0x46ed951327c439d5,
+		0xf9123ae874d86953,
+		0x263418d872c956af,
+		0xebd384fa91bc862d,
+		0x8ebfa6287ebfa489,
+		0xe96317ddcda2b3f5,
+		0xead1b851fcb6d273,
+		0x6b973d532a97d1cf,
+		0xfe154a932789ef3d,
+		0xe3acb985468d1fa9,
+		0x417ea32a98b24e17,
+		0xe65cf1dba6b45d83,
+		0x39f781ccb2965adf,
+		0xbf96c7afe1b97a5d,
+		0x42b8951fef6d78c9,
+		0xca7f32e21e8fb937,
+		0x63e1a9c54e92d7a3,
+		0x364f1dc65ca6e721,
+		0xc4ae63b65a98f47d,
+		0xe81536dba78b14e9,
+		0xd1283a4dc8ae2357,
+		0xa37f918fe7a162c3,
+		0x6b73e9d1f5b68241,
+		0x73ab9d5212956f8d,
+		0xc4629d7431687df9,
+		0x84e9d7f43f5cad67,
+		0xb81ae2965c6fabd3,
+		0x73bfc24a9c83eb51,
+		0xc697ed1cb964f8ad,
+		0x7c8453afea78192b,
+		0x1b743521f56c2897,
+		0xa29cd462168d47f3,
+		0x6f3e98d545a28671,
+		0xb352a147628374cd,
+		0x8d523fbba187934b,
+		0x56c32b998f59a2b7,
+		0xdf91264bae7dc125,
+		0x1e2ac74cba5ecf81,
+		0xe836a51cb852fced,
+		0x734bac832a761e5b,
+		0xf87425b439582dc7,
+		0xf28b3ec7687b4c35,
+		0x149cfe39846e5ba1,
+		0xe231564cb462791f,
+		0x17b8ea3ed153987b,
+		0x2471ed5dcf35a6e7,
+		0x6a497ed1fe3ac765,
+		0x3719a5b32e4bd5c1,
+		0xc4b965d32a5ed43f,
+		0xa9db3f487c64139b,
+		0x64fd7ecbab674319,
+		0xe281743dc96a4185,
+		0x8d75c39cb64a5fd1,
+		0x9e47a36cb23c6d4f,
+		0xdb356281f2417dab,
+		0x21a7b6e43154ac29,
+		0x92465df43f26cb95,
+		0xb97d2f165d38c9f1,
+		0x23c1f9765a2bd86f,
+		0xd64b32f8782ef6db,
+		0x7435aefedb532749,
+		0xd96c134fe92736b5,
+		0x526917d1f84a7623,
+		0x6f782a42152b638f,
+		0x2d78bc96543d72fb,
+		0xf7dbce198342b169,
+		0xf19485d87e13afc5,
+		0x8d7f62ea9d17ce43,
+		0x369db5498a17dc9f,
+		0xf3e1a5bdc82afb1d,
+		0x5db7132fe82f1c79,
+		0x51b2a8f549123ae5,
+		0x6b29c7f549175a63,
+		0x43e5fab7641857bf,
+		0x58126dfa941b873d,
+		0x348957ccb21e85a9,
+		0x2371b8ca9defb517,
+		0x4691dc7cbcf2d483,
+		0xa368271cb9e5c2df,
+		0xf8156ae32ae8f15d,
+		0x6e59c72548fb21c9,
+		0x78f32ac658ed3f27,
+		0x16e52cd987f15e93,
+		0x624eb75984d35bef,
+		0x658f3d2ba2f57b6d,
+		0x236eab8dc1f87ad9,
+		0x17628fedcfedba47,
+		0x8f2d67c21edfc8b3,
+		0x312a7ce65cd4e831,
+		0x7caf68d43ac4f58d,
+		0xce81a7f76ad815f9,
+		0x51bdf9cba9ec2467,
+		0xf2ebd81ba7ce54d3,
+		0xc8fa519ed7e28351,
+		0xa925d671f3e471ad,
+		0x84e5c6d323d68f1b,
+		0x5f78642431d9ae87,
+		0xd7265cf54f9bace3,
+		0x1b834de65bafdc61,
+		0x19cd38e768a2f9bd,
+		0x27354e1dc9d61a3b,
+		0xd6a1982fe6d829a7,
+		0x8c157631f7dc4915,
+		0x1e75934326ce5781,
+		0x65ef79a434b175ed,
+		0x96fa5db872d3945b,
+		0x6f57bcd981d6a3c7,
+		0xdcfeb5198fbac235,
+		0x15d746e98e9cd2a1,
+		0x6eb4a53a987cbefd,
+		0xa478312fe9a31f6b,
+		0x3d9eb7a219a52ed7,
+		0x7d1fa56328b93d45,
+		0x52edc785469a5cb1,
+		0x4eadb898749d6a2f,
+		0x136c95fba3c1798b,
+		0x64795bddc1b3a8f7,
+		0xf3c9e62edfa6c875,
+		0xa816be91fe89c6d1,
+		0x4af6cd821c8bd54f,
+		0xbf7d8413297ef3ab,
+		0xc23465887cb53429,
+		0xe4c2b7698ab74295,
+		0xf86a91ecb7a962f1,
+		0xf2e4d81cb38a6e5f,
+		0xbf394ceba27d6ecb,
+		0x173b4681f281ad39,
+		0xac1b8e632183bca5,
+		0x5a1e96854f87db13,
+		0x9d5a24843c58d97f,
+		0x7cb8a1d5495af7eb,
+		0x7e91c26bab7f1859,
+		0x98735bceda9237c5,
+		0x61bd237fe9a86743,
+		0x926a4cdfe378649f,
+		0x1a8b3943257b841d,
+		0xb17d5f35436ea279,
+		0x362adb987382b1e5,
+		0xeaf256d98e74cf53,
+		0x8a524c687b45cdaf,
+		0x27a136da9a58fc2d,
+		0x39ba18ffea5c1d89,
+		0x2bc651aed86e2bf5,
+		0xa5bf27d21a825b73,
+		0xe5d67c13276458cf,
+		0xde3f78476359784d,
+		0x6dc54a98724c86b9,
+		0xd52947eba15eb627,
+		0x6e219fdcbf61d593,
+		0x3f2189ebab54c3ef,
+		0x4fd837cfeb47f26d,
+		0x1c456a243c5a12d9,
+		0xec23ab465b6d3147,
+		0xf74c21e7685e4fa3,
+		0x1965cebba9647e21,
+		0x5912748ba5346c7d,
+		0x64289dbdc2367be9,
+		0xcf4251bfe13cab57,
+		0x87c169fedf2eb9c3,
+		0x89fbdc243f52e941,
+		0x297b5a354c23f69d,
+		0xfd438c976d48271b,
+		0xcf7d5aba9c3b2587,
+		0x19863ceba92c45e3,
+		0x8d2315adc93f7461,
+		0x458f12cfe64372bd,
+		0x283c56a1f546913b,
+		0x52c973621326af97,
+		0xd89a27c65129adf3,
+		0x82ba91365f2ecd71,
+		0x25e89c476b21facd,
+		0x54eaf82a9d251c4b,
+		0xc574b32edc162ab7,
+		0xbfd39a8fe91b4a25,
+		0x37ed4281f72d5891,
+		0xa9783c63271e56fd,
+		0x2bf9eca54712956b,
+		0xb62e7d998315a4d7,
+		0xcb7f92eba219c345,
+		0xebd842c87ef9d3b1,
+		0xba214e998aebd12f,
+		0xc4f7a83a98cdef7b,
+		0x379f5b2dc9d32fe7,
+		0x3fbd49521af73e65,
+		0x81d2e4b437f85dc1,
+		0xcd56b39545ea6b3f,
+		0xa4e28f6653fe6a9b,
+		0xc61249f984f2ba19,
+		0x2f9d8c3cb1f3c985,
+		0xe73fd85bafd6c7e1,
+		0x7da34f1febc9d65f,
+		0xeb54693219daf4cb,
+		0xa593cb654bdf1539,
+		0x214c63587be243a5,
+		0x3fd6ce1a9ae87413,
+		0xb1ed456ba5d9617f,
+		0x59267bd983c96fdb,
+		0x5d13a2ccb2cd8e49,
+		0x91c453e1f2e1adb5,
+		0x16dfe75541e5dc23,
+		0x8d7b4ef32eb5da8f,
+		0x9176fcd43ca7e8fb,
+		0x8f19ed465bcd1a69,
+		0x93f561e879bf28d5,
+		0x9264bf1dcad26853,
+		0x4e21acbed7c465af,
+		0x2d7bc811f4c9852d,
+		0x5b7f943214dca389,
+		0x271a3fe543bda2f5,
+		0xeb5176f984c2d173,
+		0x9fd63c165d83cebf,
+		0xa81e4fb87b96fe3d,
+		0x6ea8b2387cb81ea9,
+		0x984d215fe9ac3d17,
+		0xd9a81b5fe7af4c83,
+		0x3927afb217a259df,
+		0xcb43f5a326b4795d,
+		0x5d3fb2e543b687c9,
+		0xf8ba39d762acb837,
+		0x1a9f5769819ec6a3,
+		0x832d1fccbfa3e621,
+		0x76fc3e2cbc94f37d,
+		0x856d7b11fca713e9,
+		0x89de53b21dab3257,
+		0xa97e38f54a9d51c3,
+		0x6f8e31a6589e6f31,
+		0xd41659e875926e8d,
+		0x4395bfdba3847cf9,
+		0x9cf65eaed298ac67,
+		0x164cbf9fe179bad3,
+		0x483ad6fdcf7eda51,
+		0xa31e9f532e61f7ad,
+		0xca79eb354e95182b,
+		0xb87ef6c54da82697,
+		0x483d62e87b8a46f3,
+		0x68ca1fdcba9d6571,
+		0x86b3475ba57f63cd,
+		0xcb35d29fe683924b,
+		0x41ed9721f385a1b7,
+		0xa5d1e9b32378bf15,
+		0x385c12f5426ace81,
+		0x64d2e5f43f4acbed,
+		0x15f3ca798e721d5b,
+		0xefc183da9d642bc7,
+		0xb463251edc784b35,
+		0xcd13256fe86b59a1,
+		0xb937cf6fe75c681f,
+		0x6cb35d82154f867b,
+		0x5f8b17643462a5e7,
+		0xd8153f7a9287c465,
+		0x436a751a9268d4c1,
+		0xc9476b398e5ad23f,
+		0x4f72d6598c4df19b,
+		0x9236af5fed734219,
+		0xbc9d7f2feb643f75,
+		0xefb19d432a475ed1,
+		0xbf9531d328396c4f,
+		0xf2e9adb5453d6cab,
+		0x9da18bf8754f8b29,
+		0x528efc7cb342ca95,
+		0x8d4ea92cb245c8f1,
+		0x1fc49dacbe28d76f,
+		0x495c37dfec29f5db,
+		0x1c5a74f32d3e1649,
+		0x5de8b6f87d6134b5,
+		0xe834bfca9c467523,
+		0x7c52a36a9a37628f,
+		0xd41ef78ba63971fb,
+		0x48c62dfcb42c8f59,
+		0x76dafe2cb32f9ec5,
+		0x359cd6a1f152cd43,
+		0xdca259643124db9f,
+		0xdb93e5154e27fa1d,
+		0xc8bfa9765e2c1b79,
+		0xea95b4187b1d29e5,
+		0xcae61f7cbc215963,
+		0xb4532fadc91356bf,
+		0xf1827cbfe917863d,
+		0xba648971f51b84a9,
+		0x95a61e74362db417,
+		0x7ef52cb7651fc283,
+		0x682eafc87423c1df,
+		0x9fb78c276bc3ef4d,
+		0x8921ceb87ce61fb9,
+		0x2ce1f57a9bfa3e27,
+		0x3c792f5cb8fc4d93,
+		0x45f178acb6cd4aef,
+		0x8a5cb6e218f27a6d,
+		0x5a798bc325f478d9,
+		0xd7394f2653f8b947,
+		0xa3dc294762fac7b3,
+		0xfc67da4a92fed731,
+		0xe8da15fa9ec1f48d,
+		0xd937fe2cbcd514f9,
+		0xeca3d161fce92367,
+		0xe26d9b321bea52d3,
+		0xc87125954aed7251,
+		0x5c96872436be5f9d,
+		0xae596d8876d38e1b,
+		0x3ac85fda93e4ad87,
+		0x3a745d6a92d7abe3,
+		0x897e3f5dc2eadb61,
+		0x3e2b165baf9ce8bd,
+		0xdcf357e54fd2193b,
+		0x1498adc43ed428a7,
+		0x83af2c476cd94815,
+		0xc5ae4b387adb5681,
+		0x15f64b2987ab64ed,
+		0xd126c5fba6cf835b,
+		0x7b3ad25fe5d3a2c7,
+		0x14adb9c1f4d7c135,
+		0x61a5fc3323b7cf91,
+		0x1b7ef4243198bcfd,
+		0xf4e1dc943e8cfd6b,
+		0xde897f276ea12cd7,
+		0xd4fa317a9db63c45,
+		0xfc56e9bed9c75ab1,
+		0xa423e9ced7ba692f,
+		0x75c932d1f4ad678b,
+		0x8a73fd6214ae96f7,
+		0x1459ca6434b2c675,
+		0xaeb5182873a6c5d1,
+		0xc624d31871a8d34f,
+		0x35849b776e79f2ab,
+		0x71ce289cbdae1329,
+		0xf496b87fedb24195,
+		0x41679f8eda945fe1,
+		0x792a63c21a976d5f,
+		0x34fab8e325786dcb,
+		0x95cb6a75457d8c39,
+		0xc9dbe327637f9ba5,
+		0x587cf29cb594da13,
+		0x87e13afcb194d87f,
+		0x9cbe158bad57f6eb,
+		0x7ed23cb1fe8c1759,
+		0xf3e2d9421d8e26c5,
+		0x9e1dafb65da17643,
+		0xc397ba665b84639f,
+		0x145ade276a97831d,
+		0xaf329bddc56ba179,
+		0x8ed5b34ba36b9fd5,
+		0x6f89214dc27fbe53,
+		0x8943caffe162dcaf,
+		0xc54b86f43175fb2d,
+		0xca258e143f571c89,
+		0x758efad54d6b2af5,
+		0xe74391698c6e4a73,
+		0x3a57d4ca9a6157cf,
+		0xa23d64bdca63874d,
+		0x7bd6859fe74685b9,
+		0x358a76b1f46ab527,
+		0x45b92632156dc493,
+		0xe2159a65435db2ef,
+		0x241fac698273f16d,
+		0xef9b27598f5621d9,
+		0xb3c81e5bad592f37,
+		0x57a364ea9c5b4ea3,
+		0xfda2413dca5e6d21,
+		0x3856e191f9416b7d,
+		0x657d92e218437ae9,
+		0xcd19af732836ba57,
+		0x3aeb49176549b8c3,
+		0xd26f5aea935cd841,
+		0xd1579cb9813fe59d,
+		0xa923457dcf54261b,
+		0xef3586bede362487,
+		0xd2eb6131fc2954e3,
+		0xe9df6b432d4c7361,
+		0xd5cab825493e61bd,
+		0xd5f1c43769418f2b,
+		0x5eb7fa698623ae97,
+		0x52a83f4a9526acf3,
+		0xf6ae782cb439dc71,
+		0x1e56c97cb12ae9cd,
+		0x5a86d43dcd1ef94b,
+		0x79326bd54f1329b7,
+		0x5d283a176e174925,
+		0xe4a3f9c76d2a5791,
+		0xad8e9318791a65fd,
+		0xb2d5167ba91e846b,
+		0x23b7598dc821a3d7,
+		0xa825419fe816c245,
+		0x692d75b1f537d2b1,
+		0x259dfb443428ce1f,
+		0x6978cdf5421afe7b,
+		0xfd597c354bfc1de7,
+		0xbd1cf4698cf13d65,
+		0x375d42698af45bc1,
+		0x24a65cdcb9e76a3f,
+		0x14c8e5aed5fa689b,
+		0xfdb3c78fe5fda819,
+		0x3b8f49d214efb785,
+		0xbf16eac545f3c6e1,
+		0x5e4d1cb872e6d45f,
+		0xd348e7b761e7f3cb,
+		0xd215c6498fec1439,
+		0x6ecaf78a9cde32a5,
+		0x1eba263edce47213,
+		0x5e81ba9ed9c35e6f,
+		0xef4376a218c56edb,
+		0x79f5c4e326ea8d49,
+		0x61472fd434ed9cb5,
+		0xe594bfd875dfcb23,
+		0xc129e38873c2d98f,
+		0x17df28ca91c4e7fb,
+		0x87249ebdcfda1869,
+		0xb41385d1fecb27d5,
+		0xedf3a9421dce4753,
+		0xefb196a43bc164af,
+		0x19a4d8276ac5842d,
+		0x18dc726657d6a289,
+		0xf7ec42d986c9a1f5,
+		0x7234cd6a94acbf63,
+		0xa476b12a928eadbf,
+		0x4517c8dfe1a2fc3d,
+		0xa14f928432c51da9,
+		0x826f5e154fb93c17,
+		0xed67ca965eac4b83,
+		0xa8b43f965a9c48df,
+		0xdae6154a9ab1785d,
+		0xec7ab64ed7b386c9,
+		0xc742d18fe5c8b637,
+		0x14b9c7d1f4b9c5a3,
+		0x5f17928436acd521,
+		0x78fb1935439fe27d,
+		0x912ab3c873b412e9,
+		0x57b8c31a9fb83157,
+		0xd4b6e8187d984fb3,
+		0xd3b7c9ebac9b6e31,
+		0x43a8d51cb97e5c8d,
+		0x3f9a475fe6817bf9,
+		0xf768eb221893ab67,
+		0xb8dc19632586b9d3,
+		0xd418b9f7648ad951,
+		0xbf978416527be6ad,
+		0x7d8c5e3a918ef62b,
+		0x9ea164fdcfa32597,
+		0x8f15b36dcd9745f3,
+		0xab254681fd9a6471,
+		0xc7fe32921b7a62cd,
+		0xbc19f8443a7e814b,
+		0x2769be5548619fa7,
+		0x1e524c8a9784be15,
+		0xcfbd65eba476cd81,
+		0xb3e4158a9257caed,
+		0x867c52fed16cfa5b,
+		0x43eb259ede5f1ac7,
+		0xf327d8521f824a35,
+		0x2cf41e743e7658a1,
+		0x5d21c9f54c59671f,
+		0x94b52fa76a4c857b,
+		0x74b9df1ba85d94e7,
+		0xbf8e576ed981c365,
+		0x8cfd3b6fe675d3c1,
+		0x7a3c985fe467d13f,
+		0xf594cb321247ef8b,
+		0xcfe15b75425b1ef7,
+		0x58a2bd976d4f2e75,
+		0x6cab9ed98e635cd1,
+		0x1724deca9c356b4f,
+		0x264cae5edc3769ab,
+		0xdf9a82bfe74c8a29,
+		0xc3a5e941f63eb895,
+		0xc62a54d43852c7f1,
+		0x6fba84c32743d56f,
+		0x4fb165387236f4db,
+		0xb45e31cba26b1549,
+		0xd4ba6c2a9f4d23b5,
+		0xf561daccbd5f6423,
+		0x8327bfcedc43618f,
+		0x3e9174bed9246feb,
+		0x4e2da8621b278e59,
+		0x475dbe14372a9dc5,
+		0xd9847a17672ebc43,
+		0xf24b5c987531da9f,
+		0xd192e76ba534f91d,
+		0x26e7bc9ed2361a79,
+		0xe345a9ddcf1a28e5,
+		0x9742ab31fe1d4863,
+		0x4f359c832c1e45bf,
+		0x5fb34ca76c12853d,
+		0xed5c71876c1583a9,
+		0x41d6cfa98a29b317,
+		0x1b956ceba72bc183,
+		0x6d5f3179841baecf,
+		0xd1785e9cb521fe4d,
+		0xcdb28971f3241eb9,
+		0xb93f41a654183d27,
+		0x5891ceb32ef84c93,
+		0xae71fb643bda49ef,
+		0x36ba2d554afe596d,
+		0x873bcd276af187d9,
+		0x928f514dc9f3b847,
+		0x3f594aeed5f7c6b3,
+		0x94db31ffe5fad631,
+		0x682ae57214fbe38d,
+		0xa7cb918543cde2f9,
+		0xb6de347a91f43267,
+		0x7231ace98fe751d3,
+		0x9436c2198cd96f41,
+		0x4f693e1878ca5e9d,
+		0xe1b827dba8ce7d1b,
+		0x9e5c4231f6e1ac87,
+		0xfb6ce59217d4bae3,
+		0x7cebfa9435e7da61,
+		0xebc72d9543c8e7bd,
+		0xc5f741a762dcf73b,
+		0x74fcabea92df16a7,
+		0x659e834cbfd34715,
+		0x195f64ddced76581,
+		0x184c5921fab863ed,
+		0xc5f683721adc825b,
+		0x1c4e97a438be91c7,
+		0x4b1e8fa768c1bf25,
+		0xc432a5e876b4ce91,
+		0x69da3f887395cbfd,
+		0xc76feb8a92a8fc6b,
+		0x4bc6a15fe2ac1bd7,
+		0xc6f513eedeaf2b45,
+		0xd96a35432fc359b1,
+		0x46751f243db5682f,
+		0x1d2754a43dc9768b,
+		0xf15ec9d548ab95f7,
+		0x712ef8aa98aeb475,
+		0xe834561cb7a2c4d1,
+		0x451ef82dc6a5d24f,
+		0xd836a7bfe396f1ab,
+		0x36157b2545cb3129,
+		0xb6d1c8f541ac2f85,
+		0xcae762465c8f4de1,
+		0xfa561bc87d926c5f,
+		0xd86391487d846acb,
+		0xe1f65caedca78b39,
+		0x42bdc5afe67cb9a5,
+		0xa64dc731f68ec913,
+		0x367481e32591d67f,
+		0x3ac65bf32483f5eb,
+		0x5a1d28e873b81659,
+		0x62ac47f9819a24c5,
+		0x1befc42baf9d6543,
+		0x639b428bac7e529f,
+		0xfba8625fec94821d,
+		0xfc2391dfeb748f69,
+		0xe6d9a5221a679ed5,
+		0x1534bce3287abd53,
+		0xa8f19b24345dcbaf,
+		0xedc46b398571fa2d,
+		0xb7a4f96dc3741b89,
+		0x246753adc18729f5,
+		0x187ea5bedf6b4973,
+		0xd826435fed5b46cf,
+		0xe9a5f8b21c5f764d,
+		0x6ce57df43d6284b9,
+		0xfb438e965c86b427,
+		0x854a3d987a68c293,
+		0xb461c3298659b1ef,
+		0xb4c1a7ea934bcf5d,
+		0x1a45f79ed4621fc9,
+		0x41ad7c51f1852e37,
+		0xa53d476321674da3,
+		0xf3e261b54f5a6c21,
+		0xb6d7f9354e3c5a7d,
+		0x9b4ae6f65b3f68e9,
+		0xb475e2fbac42b957,
+		0xca3951bed945b7c3,
+		0x5b4f827fe859d741,
+		0x9d1ab471f53ae49d,
+		0x8375fd43265df41b,
+		0x764d1caa95612387,
+		0x1a4b326a917652e3,
+		0x376ebc1baf497261,
+		0x12d94fe87c285fad,
+		0xd53f1b7a9a3c7e2b,
+		0x694d1f8dca2f8d97,
+		0xb5d96f8fe842abf3,
+		0x469f8d732935db71,
+		0xf6a1d8e43526e8cd,
+		0xd82e7547652af84b,
+		0xabf3248a943e18b7,
+		0xf2d5173dc3614825,
+		0x6975f8bdcf245691,
+		0xa231687cbc1764fd,
+		0x1ebd57a1fd1a836b,
+		0x59b1c7843b1c92d7,
+		0xe3d217976a2fb145,
+		0x75fd13c76823cfa1,
+		0x17ce4b998725cd1f,
+		0xdf16382a9416fd7b,
+		0x5a7e382cb42a1ce7,
+		0x9aeb475ed31e2c65,
+		0x84cd25fcbdef4ac1,
+		0xce9748a21de2693f,
+		0x639afec32df4679b,
+		0xd5679c354cf8a719,
+		0xe79128f549fcb685,
+		0xf4e53b1987fdb5e1,
+		0x9b7efcdba7e1d35f,
+		0x61ced98ba5e4f2cb,
+		0xc27ba38fe5f81239,
+		0xdf54be9324fb31a5,
+		0xeba782f652db4ef1,
+		0x48f61ec43cbe4d6f,
+		0xc63917265ae26cdb,
+		0xec485a187be58c49,
+		0x54f92abdc8e79ab5,
+		0x735e1cbed7ebca23,
+		0x38f247bfe4bdc78f,
+		0x37c4ab9325c1e6fb,
+		0xda17e62435e41769,
+		0xc3bf291873e826d5,
+		0x4ed157ca91eb4653,
+		0x29cb5a887ebc53af,
+		0x3f7e6baa9cbf732d,
+		0x98f65d4fecd3a189,
+		0x79b6ca5ed8b49fe5,
+		0xed25f68219c8be63,
+		0x17b9ea832598acbf,
+		0x2b6f3d15459ceb3d,
+		0x5c6df4a875d21ca9,
+		0xbf8ed71ba4d53b17,
+		0x52a348fdc1d74a83,
+		0x7c5df81cbea947df,
+		0x7d4c16a1feac675d,
+		0x835b9ad21daf75c9,
+		0x2fc1b5354dc2b537,
+		0xcdbe3a4659b6c4a3,
+		0xfe14c62878b9d421,
+		0x67ef94a9859ae17d,
+		0x3dcba269837befd9,
+		0x4386c72ed5b12f47,
+		0x367e21c1f1a54eb3,
+		0x83e2bda542b86d31,
+		0xefab1d532f795b8d,
+		0xa2e95c443d7c6af9,
+		0x16d528754c8f9a67,
+		0x98f345287a92b8d3,
+		0x87b96a3dc9a6d851,
+		0xd5467abdc487e5ad,
+		0x81b54d6fe48af52b,
+		0x6e9b4f7325ae1497,
+		0x9fe16a2876a154f3,
+		0xd83feb7a92b56371,
+		0x6d3e1b865f8761cd,
+		0x7291cea98d697f3b,
+		0x64583efa9b5c8ea7,
+		0x2e69f73dc97fad15,
+		0x6ec728d1f973dc81,
+		0x3f8946721764c9ed,
+		0xe1db36732467f95b,
+		0xa9de7b36546b19c7,
+		0x51eb3c4ba48e2935,
+		0x8e67d4bdc39257a1,
+		0xa476d51cbe84761f,
+		0x71fc4a3ede56847b,
+		0x48c1b5a1fc5a93e7,
+		0x3afde7621c7db265,
+		0x918dc2e5496fb2c1,
+		0x28efad765863ce2f,
+		0xf85ab2687654fe8b,
+		0x5cfb138ba4581df7,
+		0x5e19df2dc36b2d75,
+		0x3af62d1dc26e4bd1,
+		0x68bfa27ede516a4f,
+		0xb86da4521f4368ab,
+		0xa7bc8e143e46a829,
+		0xc29a8ed54d3ab795,
+		0x8f3591c8794cb6f1,
+		0x168a45fa983ec46f,
+		0xd58be41ba752f3db,
+		0xd1b4892fe8671349,
+		0x387c1a51f46932b5,
+		0xa3fec725457c6123,
+		0xb9317a26513c4e7f,
+		0x2f7b1ae65f316deb,
+		0x83ce2a987e238d59,
+		0x1e7539498d269bc5,
+		0x291b648eda29cb43,
+		0x7b18e5aed62bc89f,
+		0xfda87b6dc63fe81d,
+		0x74fcaeb32a431879,
+		0x297a5185483627e5,
+		0x8fda5b4a952a4763,
+		0x43daf699812a54bf,
+		0x71dfb35a9f1e743d,
+		0xf876d12dce3182a9,
+		0xb89d671fed35b217,
+		0x9c6dbf8fea16bf73,
+		0x31e7a6b32817adcf,
+		0x956f7de4371aec4d,
+		0xdc1b8265451efcb9,
+		0x14dfeb9ba8143c27,
+		0x1ef973adc5164b93,
+		0xd38eaf5cb21748ef,
+		0x27c4ae6cbefa586d,
+		0x4b3d85cfebfc76d9,
+		0x9c6f5ed21cefa647,
+		0x9eb76a854af2c5b3,
+		0xafce9d276af7d531,
+		0x863ec19656f7e28d,
+		0x3c1e49d875dae1f9,
+		0xa95431ccb5fe2167,
+		0x9e328facb5e14fc3,
+		0xae2b917ed2f56e41,
+		0x7abec16321f65c9d,
+		0x84297e643fe97c1b,
+		0x6f7adeb43ced9b87,
+		0xfabd374658cfa9e3,
+		0xd2964a598ae3d961,
+		0xae6f247a97c4e6bd,
+		0xfad7e13dc5d8f63b,
+		0x13b57a91f4ec15a7,
+		0x8531d74327de3615,
+		0xfb348ce875e26481,
+		0xb49a61c871c462ed,
+		0xb18ec4976fd7815b,
+		0x34dc6e765dc98fb7,
+		0xeb6573f989bcae25,
+		0xe173b94dc7afbd91,
+		0x5619a37fe692cafd,
+		0x4378b95217c4fa6b,
+		0xaed27f4435c81ad7,
+		0x83ead2f876dc2a45,
+		0xfde23a6873ce48b1,
+		0xcb3d819ba3c1672f,
+		0x8673ebfbafc3758b,
+		0x14b9e27dcdb694f7,
+		0x3d25ac71fdcab375,
+		0x6d8954f32a9cb3d1,
+		0xd615f7c4389ec14f,
+		0x2dc89bf54682ef9b,
+		0x2e9a76f987b62f19,
+		0x874bce6ba4b92e85,
+		0x79fa26ecb39a4ce1,
+		0x3fa4beddc19d4b5f,
+		0x317cab2fef8169cb,
+		0x7b2d8a321fb48a39,
+		0x374895d32e96b8a5,
+		0xf19bd7865d9ac813,
+		0x253b8a75498bc57f,
+		0xa63cd759867fd4eb,
+		0x678a2e3ed8b31459,
+		0x4d6f871fe6a723c5,
+		0x43e6a781f5ba6243,
+		0x5e9b8343238b519f,
+		0x49e67c24317c5efb,
+		0x7bad62f54f718e69,
+		0xb13a54876e739cd5,
+		0xa468b53a9d87bc53,
+		0x56ac971cb857c9af,
+		0x319587fdc76be92d,
+		0xfc1ab97ed45ef789,
+		0x8c9d5342179328f5,
+		0x1df7a8b325a64873,
+		0x819b7ae7627845cf,
+		0x87e3d61a918b754d,
+		0xa32cd1e98f5e73b9,
+		0xf6b5149dce81b327,
+		0xc3d7529fed75c193,
+		0x38a9bd2dc845aedf,
+		0xa78c56921948ce5d,
+		0x8f14e793264afdc9,
+		0x7a823ce6586f1d37,
+		0xdc21aefa96724ca3,
+		0x697a3b4dc4876b21,
+		0xd6fa128dc148597d,
+		0x7a21645dcf3b67e9,
+		0x3d52bac1fd3ea857,
+		0x6b937cd32e51b6c3,
+		0xe975d6843c75d641,
+		0x16fe92365a46e39d,
+		0x914d26887859f31b,
+		0x8e3427dcb95d1287,
+		0x4893cefcb76f41e3,
+		0x47b923eed4736f51,
+		0xbc296ea1f1345ead,
+		0x97af51b431487d2b,
+		0xce41f7843f2b8c97,
+		0xa1b73ec65c2d9af3,
+		0x3452fbd98c42da71,
+		0xa5973c298923e7cd,
+		0x3d7a819dc926f74b,
+		0x574cdb9fe83a16b7,
+		0x72349b51f84d3725,
+		0xbc1375d3273f4591,
+		0xafc21698754263fd,
+		0x6c851fba9135826b,
+		0x9e8374576f2891d7,
+		0x24b6ed798d1baf35,
+		0x963cfe19892dbea1,
+		0xa15e29dcb932dc1f,
+		0x3ca14dbfe813fc7b,
+		0x6a1597b439261be7,
+		0x52e79315481a2b65,
+		0xaf1b28e8762d49c1,
+		0xed53628a941e583f,
+		0xebd7891dc312769b,
+		0xfa5e16dcbef4a619,
+		0x9e1b5f3dcdf7b485,
+		0x1ec2843edaf9b4e1,
+		0xcd85694219ebc25f,
+		0x15f2a49437dfe1cb,
+		0x2845ce387af52139,
+		0xf2d39a1987e62f95,
+		0x1cf7845a95e84df1,
+		0xce62534a92ea4c6f,
+		0xb23f56aa91fe5adb,
+		0x78c369fedfe18b49,
+		0x54da8e621fe3a9b5,
+		0x3256c8a54de7c923,
+		0xfc5718243ad9c68f,
+		0xfb89376547cad5fb,
+		0x461c9b3987cef469,
+		0xe837645cb8e324d5,
+		0x1fc9348ed7e86453,
+		0x28435cdfe3d852af,
+		0xe9d6178434eb712d,
+		0x497fdac431cd6f79,
+		0x2681c5b54fb19de5,
+		0x83d1c9587ec4bd63,
+		0x93c47a276895cabf,
+		0xbd2ae56a97b8ea3d,
+		0x549cea7ed5bcf8a9,
+		0x4a89367fe6cf2a17,
+		0xac78942217d24983,
+		0x7eba418323b546df,
+		0x281d9e7542c9765d,
+		0x1f857c9761db74c9,
+		0xd9c41fe98fbea437,
+		0xd8e2a4fa9eb1c2a3,
+		0x6df4753fecb6d321,
+		0xb328a7cfe895cf6d,
+		0xf7ed23821687fed9,
+		0xe4269da438ac1e47,
+		0xd89c2fe6569f2db3,
+		0x27fac4ba97b46c31,
+		0x264f7eba92b45a8d,
+		0xbfda145dc1b768f9,
+		0xaef6812edf8ca967,
+		0xd2b967c1fc8ea7d3,
+		0x46cb7ef43ea2d751,
+		0xe518b4c32b83e4ad,
+		0xc98716b65a97f42b,
+		0x4e7dc5f768ab1397,
+		0x4c8e351ba79c42f3,
+		0x5adf197dc6af5271,
+		0xf791653dc3825fbd,
+		0xcbe91321f1957e3b,
+		0xefba386321968da7,
+		0x184e2dc43f7bac15,
+		0xdb7e3ca54d6ecb81,
+		0xe9dfc7665a61c8ed,
+		0xc457e38a9a73f85b,
+		0x3694af1eda9618c7,
+		0x54a16c3fe79b2835,
+		0xad328b71f58d46a1,
+		0xd34761c3248e651f,
+		0xac2de1465492837b,
+		0x7485fc17618592e7,
+		0x357ace198f79b165,
+		0xdefb43687d59afb1,
+		0xa62f9e19895cbd2f,
+		0x3a17ef9dc951fd8b,
+		0x1c8f952fe9641cf7,
+		0xf6ac4d921a682c75,
+		0xbf7ac46437694ad1,
+		0xc86edf98736c594f,
+		0xbfd23ce9824f57ab,
+		0xd3ba589dc163a729,
+		0x23d5a7edcf34b695,
+		0x51789b3dcd48b5f1,
+		0x2a897f4feb4ac36f,
+		0x3fe52782194ce2db,
+		0x847251976c731249,
+		0xab4637d98a7631b5,
+		0xbc138dfba9685f13,
+		0x1f47c82ba5394d7f,
+		0x81a32d6a923a5ceb,
+		0x96c258eed13f7c59,
+		0xdb74c13fef329ac5,
+		0x57fea3921f26ca43,
+		0xc25879e43d26c79f,
+		0x42cfed865b3ae71d,
+		0x41295cf76a2df579,
+		0xefa2869cba4126e5,
+		0xf2a89c5eda274563,
+		0xa8e3b24ed62753bf,
+		0x2c97de81f54a723d,
+		0x5deb8f63243d71a9,
+		0x8a32de75412d8ef5,
+		0x59b8a4e76f12be73,
+		0xda8f42576d14abcf,
+		0xefd167998a17eb4d,
+		0x7b983a2dc718fab9,
+		0x9b627e4ed93e1b27,
+		0x482b5d61f8214a93,
+		0x48651b93281347ef,
+		0x7afd68943418576d,
+		0xe21fc9b7631a75d9,
+		0x385e7baa921da547,
+		0x34ce8a187dfea4b3,
+		0x78945fbbacf2d431,
+		0x419ecf2cbaf4e18d,
+		0x65c7f29cb7c5dfe9,
+		0x17d59c3329ea1f57,
+		0x729c6e5547fb2ec3,
+		0x9f4be8a767ef5d41,
+		0xec942b6874f25b9d,
+		0x86352a4a93f57a1b,
+		0x59bf61adc1f69a87,
+		0x4ed3c8fa9fdba8e3,
+		0x58d21c91fbdec861,
+		0x5fab73c32ac1e5bd,
+		0x6cde84b32ad4f53b,
+		0x796b3e465be814a7,
+		0x37cfb45989eb3415,
+		0x5138cd7ba7ed5381,
+		0x54db276a94bf51ed,
+		0x84971fedc3d27f4b,
+		0x89d46731f1d48eb7,
+		0xaf91672431e8ad25,
+		0x1f8769a43fdabc91,
+		0xd269fe143a8cb9fd,
+		0x386eb4265ac1f96b,
+		0xf69ce1b98ac419d7,
+		0x4b69dfadcad82945,
+		0x6fc73b8fe6da47b1,
+		0x57d1ca6fe4bc562f,
+		0xf93b548213cf648b,
+		0xa6f3291654c293f7,
+		0x2561f4c981d6b275,
+		0xc4fe5ad76fa8b2d1,
+		0x8ab1f3276c89be3f,
+		0xa8fc3d27687cde9b,
+		0xc28ef6bedab32e19,
+		0x15479ea1f9b42d85,
+		0x891357a328a74be1,
+		0xb7d15f3326b94a5f,
+		0x89e5f375439d58cb,
+		0x23a41f7762bf7839,
+		0x4a72d53a91c2b7a5,
+		0xe925df8cbfa6c713,
+		0x76eca94cbd98c47f,
+		0xe8d1c621fa79d3eb,
+		0x8e7c4f621b8df259,
+		0x3b5f28e76ba132c5,
+		0x2b6931e98ab76143,
+		0x5134d28875964e8f,
+		0xd6afe71a93785dfb,
+		0x85cd316cb28c7d69,
+		0xfda1b2edc17f8bd5,
+		0x4bca5d1fef82cb53,
+		0x2f5476821e64c8af,
+		0xdc7846a43c67e82d,
+		0xc2ab15743c5bf689,
+		0x92d14ac76a8d17f5,
+		0xfd15be9dcba14673,
+		0x7a129e8cb78354cf,
+		0xda67813fe598734d,
+		0x2743da51f36a72b9,
+		0x678eb2c4348da127,
+		0xda9587e5416eaf83,
+		0xc16a52f54e52acdf,
+		0xd59e8ca87b64ec5d,
+		0x54c638d87a46fbc9,
+		0xc5314f9eda6b1c37,
+		0xfb59637ed86e2ba3,
+		0x7d42cb31f9836a21,
+		0x736bcea21963587d,
+		0xdb856393234576e9,
+		0xc2a975e9824ba657,
+		0xa261f979816da5c3,
+		0x1c35f24a9e6fc541,
+		0x2743f56bac53e29d,
+		0x1af3c46edc56f21b,
+		0xa6c59711fc5a2187,
+		0xce73a4f2195a2fd3,
+		0x16a9fed4396d4e51,
+		0xe7b8a5f767415cad,
+		0x34bc87ea96547c2b,
+		0x7a4ed32dc2358b97,
+		0xa6b59d2dc148a9f3,
+		0xa9516e3cbf3dc971,
+		0xc84fa37fea2fb6cd,
+		0xe735f6a21d32f64b,
+		0x792eab554d3615b7,
+		0x6249dfc98c4a3625,
+		0xbde971498a3c5491,
+		0x5bd3f46a973c52fd,
+		0x3f629b5ed742816b,
+		0x5872b4fed4238fc7,
+		0xb476a951f127ae35,
+		0xd5f7ca654238bda1,
+		0x2b3ec7654e2acb1f,
+		0x68153f754c1fea7b,
+		0xbc74f3998c231ae7,
+		0xe8c514fcbc172a65,
+		0xf7c48beeda2948c1,
+		0x2b5438aed81b573f,
+		0x4ce87921f41e659b,
+		0x5ae82cf54732a519,
+		0xd23a6fb87614b385,
+		0x3b14e5998427b3e1,
+		0x1d73bac76de8c15f,
+		0x82ec6af659e8dfab,
+		0xe2a6835878dcfe29,
+		0x275d46edcaf12e95,
+		0x396cfaeed8e54cf1,
+		0x7f6cad5218e74b6f,
+		0xdea9f51324f859db,
+		0xc8bf437653fd7a49,
+		0xc312af7762ef98b5,
+		0x932def5ba1f4c823,
+		0x4fe57a8a9ed4c58f,
+		0xc57ad4ea9ac7d4fb,
+		0x856f971feadbf369,
+		0x1c5984732ace13d5,
+		0xfa1ec5387be16253,
+		0x4783ed2768d451af,
+		0xf3dcea4985c76f1d,
+		0x6d195eb983da6e79,
+		0x684d71ea92db8ce5,
+		0x42d7f63cb1dfac63,
+		0xc98e367edea2c9bf,
+		0xdea2c5721fb5e93d,
+		0x5f4867d32dc6f7a9,
+		0x721ac3d65bdc2917,
+		0x95ec3bf76ace2783,
+		0xa8d23c7a98b145df,
+		0xf5ad324cb8c3745d,
+		0xb74c1dffe4d673c9,
+		0xd25ea141f4dba237,
+		0xc4d8763324cdb1a3,
+		0x51abc284318c9def,
+		0x8cb6e7a54f92ce6d,
+		0x92bde3665b84fcd9,
+		0xcdef5ab98cb91d47,
+		0x84bf361ed89a2cb3,
+		0x3af2bc6ed8ae5b31,
+		0xbc763411f6b1598d,
+		0x7f852bc215b367f9,
+		0x49cfb61323c5a867,
+		0xfe489cd652b9a6d3,
+		0xbde7c91982adc651,
+		0xfc89ad276e7fc3ad,
+		0x96f3ebdbad94f32b,
+		0xc9846abfedb61297,
+		0xa523871feba941f3,
+		0x4639f5132a9b4f61,
+		0xfae8bd33267c4ebd,
+		0xe96b7d1656917d3b,
+		0xd54e9ab764938ca7,
+		0x5df328adc397ab15,
+		0x2c9afe4ed279ca81,
+		0xa6c3bf2a9f5ab7ed,
+		0x72b36a4edc6fe75b,
+		0xe43671d32e9316c7,
+		0x83d952a54da82735,
+		0x49b8d2f76c8945a1,
+		0x62b5aed8798b641f,
+		0x9c1d23fba58e627b,
+		0xfead64bdc58291e7,
+		0xb2c4871ed283af45,
+		0x63197cb1f276aeb1,
+		0x5bc4af243168bc2f,
+		0xb9a843132f4aec8b,
+		0x4a6f5d943b4deaf7,
+		0xfd653b7a9d832b75,
+		0x17e2fc6bab7649d1,
+		0x64a2f71dca69584f,
+		0x8d57b29fe74c56ab,
+		0x8e1a2541f45e8629,
+		0x5f7e6c132671b495,
+		0x78cb39276375b4f1,
+		0x7dbce3498157c26f,
+		0x5e8d2c776f48e1db,
+		0x6d342ca87c4bef39,
+		0x715efbda9b4e1fa5,
+		0xb2856ecedb745e13,
+		0x9ba6cdffe9354c7f,
+		0x623fc9e218375aeb,
+		0x8c3416b3263c7b59,
+		0x87da4517643e89c5,
+		0x3e186c7ba561c943,
+		0x8fcdb17ba143c69f,
+		0x49fbe38baf37e61d,
+		0x2537e48dcd2af479,
+		0x628d7451fb3c14e5,
+		0x684daf221c5f2463,
+		0xd5f4b8376a4352bf,
+		0x3dba12998a46713d,
+		0x9eb43cfba5276f89,
+		0xf715246a942a8df5,
+		0xfd786a4cb42ead73,
+		0x3fce496ed231bacf,
+		0x13e4895dcf13ea4d,
+		0xe96fc4332e15f8b9,
+		0xf87ea9b65e3b1a27,
+		0xd7f1c4976c1d2893,
+		0x8a946dc8791d36ef,
+		0x26f8e54cba12756d,
+		0x6d12958dc81574d9,
+		0xa5c1b7dfe619a347,
+		0x971d4b21f51ca2b3,
+		0xdfa89366564ec231,
+		0x47cbaf165321cf7d,
+		0x8b7ae1d54bc2fde9,
+		0x24edfc798cf61e57,
+		0x2ed6a9b87af82dc3,
+		0x7863f51ba9fb5c41,
+		0x91ad283cb6fe4a9d,
+		0x7569bf1fe6f2791b,
+		0xd6e3482215f3a987,
+		0xbe65371324f6a7e3,
+		0x4b6fa17653fac761,
+		0xbd3c47a761fac4bd,
+		0xc5231b987dcfe43b,
+		0xd2a4e1fcbde413a7,
+		0x823ba69edce84315,
+		0x19782ba1fbea5281,
+		0xd96bfa8217b94fcd,
+		0x34675df327cd6e4b,
+		0xcb6a259545e18db7,
+		0x3b1ad6e986e4ac25,
+		0xc36db79983e6cb91,
+		0x71c52a4a91c7b8fd,
+		0xb86ac35a9face86b,
+		0x7a6298fdcbaef6d7,
+		0x84976a321ed32845,
+		0x4d8cf5943cd746b1,
+		0xb86953a54ac9652f,
+		0x7cbe8a1657dc638b,
+		0xb658c32a95bd82f7,
+		0x267bedadc6d2b175,
+		0xf67241eed3b4afc1,
+		0xa1d5c94fe1a6bd3f,
+		0x179fa3c321a7ed9b,
+		0x81e2b9543e8bfc19,
+		0xc9f5bd854daf1c85,
+		0x4b3ef8c87cb34ae1,
+		0xd3c69a298ab6495f,
+		0x846c1abed6a857cb,
+		0xc9b6a5dfe5bc8739,
+		0xe86751a1f3be96a5,
+		0xca81b53547b2c613,
+		0xebd1437652a4c37f,
+		0x71ad98665196d2eb,
+		0x52137d976e8af159,
+		0x17ae49698e9d21c5,
+		0xfd614b2bab9e4f23,
+		0xa18563fdca924d8f,
+		0xa1975d2fe7845cfb,
+		0x73be2f6215a87c69,
+		0x3146e5d3247b8ad5,
+		0xaf1b7297648eba53,
+		0x43bafde76381c7af,
+		0x51c2d43ba194e72d,
+		0x54218fccbe76f589,
+		0x6eb1879dcd8a16f5,
+		0xc8a5d361fc9d2573,
+		0x45ab7c921a7e43cf,
+		0x16d4b8f65b93724d,
+		0x68efd5b54a8571b9,
+		0x4e9b8d5ba5689f17,
+		0x673b4fca946bae83,
+		0x4c3f92a9825c9bdf,
+		0x71b25d9dc271eb5d,
+		0x8e4a5c2ede53fac9,
+		0xab7631932f681b37,
+		0xd76fba854e6b29a3,
+		0xf3b74a976c7d5921,
+		0xefbd17c98a5f467d,
+		0x2618d35cba6275e9,
+		0xf4e5128ed986a457,
+		0x2dca51bfe568a4c3,
+		0xb4ed83c1f57bc341,
+		0x69ca3b43235ec19d,
+		0xcdab38e54251def9,
+		0x9a2be6198e541f67,
+		0x63f2ce798c572ed3,
+		0x61eda23a9c6a4d51,
+		0xe736a84a983c4bad,
+		0x69e52b4ed84f6a2b,
+		0x2a8c9eb1f6428a97,
+		0xb3ae87921745a8f3,
+		0xb27c6e943549c871,
+		0x831b5cd76239b5cd,
+		0x495cb139813de54b,
+		0xc971b2fbaf5214b7,
+		0x254bd17dce673425,
+		0xf15a926fed485391,
+		0xdf12ab3fea3951fd,
+		0xdbf3ac42192c6f5b,
+		0x6718cd24382f6ec7,
+		0x1ca265387842ad35,
+		0xfbe239698635bca1,
+		0xd571be2a9437ca1f,
+		0x4395dafdc12ae97b,
+		0xd4bef81bad1cf8e7,
+		0x3aec1d71fe312965,
+		0x768f4e543e2547c1,
+		0xf1d3c5654c18563f,
+		0xcf9b17265c1a649b,
+		0x38a45f987a2d8419,
+		0xa847ef5cb71fa285,
+		0xb547d6fdc734b2e1,
+		0x265e93bdc315be4f,
+		0x7695e381f216deab,
+		0xf596ad35431afd29,
+		0xc96e48d43efc1d95,
+		0x712fc4d65ade3bf1,
+		0x21b3a9887be24a6f,
+		0xfd49b26879f458db,
+		0xa78d436dc6fa7849,
+		0xcf5a134ed4fc97b5,
+		0x218ac96ed5feb723,
+		0x84acd75325e1c48f,
+		0xdea34b8652e4d3fb,
+		0x2b6dfa1651e7f269,
+		0xaf13c4887fea12d5,
+		0x6f273c1a9ced4153,
+		0xdac9486878bd3e9f,
+		0x1c7296acb9c36e1d,
+		0x2da13eb1f8e46d79,
+		0xcad3b7f216d78be5,
+		0xf46d3ea325ecab63,
+		0x3fd1b95543cda8bf,
+		0x1548fba874c1e83d,
+		0xbaf97c5981d3f6a9,
+		0x6a12893cbfd92817,
+		0x7b39d84dcedb2683,
+		0x5c69fb1fe9ab34df,
+		0xd9ab56f21abf635d,
+		0x31e2f5a54ad372c9,
+		0xb8cd27e659d6a137,
+		0x4238f9d765c7af93,
+		0xacbf58e763a89cef,
+		0x647eb9f9829ebc6d,
+		0x54abe2ddc2a1fbd9,
+		0x1692cbafefb51c47,
+		0x926c7fa21fc72ab3,
+		0x936b18254ecb5a31,
+		0x12ab87e43bac478d,
+		0x58a6937548ae56f9,
+		0xdfe1428cb9c2a567,
+		0x13fad89dc7b6a5d3,
+		0x51df2c4fe6b9c451,
+		0x3c269ed1f389c2ad,
+		0x9426c7d4349de12b,
+		0x4c15879764c32197,
+		0xc218f4e76d952fe3,
+		0x8a54be387da84e61,
+		0xbfd987576a784cbd,
+		0xc7bd512ba98d6c3b,
+		0x6cfba95ed58f6ba7,
+		0xe21957c1f793ba15,
+		0xb96ad57326a5c981,
+		0xa15ef4b32387b6ed,
+		0x72d39b15428ae65b,
+		0x589347b7618df4c7,
+		0x1d8af34cbfa12635,
+		0x8a37eb6dce9654a1,
+		0x3f4e612edc98631f,
+		0xab534c91fc8a617b,
+		0x5d4ce972195b6fd7,
+		0x63d159e3287f9e45,
+		0x8b6fc9365673adb1,
+		0xd691eaf98475cb2f,
+		0x43ad6e1a9256ea8b,
+		0xda576e9cb15ae9f7,
+		0x61b58f2dcf6e1a75,
+		0x72b49d31fe7248d1,
+		0x42dfc6721d83574f,
+		0xcab8d3632d4765ab,
+		0xf5a692154c6b8529,
+		0x38abc5d8786da395,
+		0xea8bfd2a976ea3f1,
+		0x1dcae58cb573c16f,
+		0x859e736ba254dfcb,
+		0xec354f6ed157fe39,
+		0x4b6af924326b1ea5,
+		0x8b9fec365f6e4d13,
+		0xc91f8a476d514b7f,
+		0x25d1bac87c4359eb,
+		0xd564c8acbc367a59,
+		0xf15a397ed73a98c5,
+		0x82d73fafe75db843,
+		0x5c8f214ed43eb59f,
+		0xe789fc132763e51d,
+		0x95421f876245f379,
+		0xd96cb329826913e5,
+		0xc65e241a9f5c4263,
+		0xf5c364998c3d41bf,
+		0xce89352bab416f2d,
+		0x9be87f4edb236e89,
+		0x1235ba9fe9268cf5,
+		0xe6c3a2b21829ac73,
+		0x7d45cf94352ba9cf,
+		0x8b54ad97652fc94d,
+		0x61bfdac98432f7b9,
+		0x83f4eb1dc3461927,
+		0x7395a14dcf1a2793,
+		0xc32f567cbc1a35ef,
+		0xdb9c5211fb1e546d,
+		0xb167f8c54c2173d9,
+		0xf34219876c15a247,
+		0xf7d42c576927a1b3,
+		0xef64d5b98739bf21,
+		0xd41ceb99841abe7d,
+		0x795e6d29831fdce9,
+		0xbdf9735fe4231d57,
+		0x59c87f4edef52bc3,
+		0xa74f89332ef85b41,
+		0x9487ce532cfa489d,
+		0x38fbcd154afd681b,
+		0xbda62c854aef9687,
+		0xd28bf43a98f2a6e3,
+		0xc1a9e26cb8f7c561,
+		0x615fe7bba4f7c3bd,
+		0x7a6f253ed4fae23b,
+		0x9a17e3b323edf1a7,
+		0xe2b9154986f34215,
+		0x1c4b72876ed54f71,
+		0x1dba3ec65ab64ecd,
+		0x864d53b87ae96d4b,
+		0xadeb716a98ed6cb7,
+		0x2df5a4edc7df9b25,
+		0x2c1b5631f6e3ca91,
+		0x54f876e215c4b7fd,
+		0x1f8943e323d8e76b,
+		0x26a93eb542caf5d7,
+		0x231dc68a92de1745,
+		0xb3a758fa9fd245b1,
+		0x1483b52badc5642f,
+		0x6f7d548fecd7628b,
+		0x548263afe9ca81f7,
+		0x3c6978d218bc9f65,
+		0xb29ade1436af9ec1,
+		0xd79bf61656a2bc3f,
+		0x5427ca9763a4ec9b,
+		0xc3b96f1983c7fb19,
+		0x47b8c3eba2dc1b85,
+		0xc432fd7cbfad39e1,
+		0x54f3b6dfedb1485f,
+		0x8df7ca621ea356cb,
+		0x756f1d332dc78639,
+		0xf9b6281438cb94a5,
+		0x5b2acd6878adb513,
+		0x6fe3cad9859eb27f,
+		0xd531e4bba593d1eb,
+		0x51267eadc2a5ef49,
+		0x234761cfe2a81fb5,
+		0xba2179c651ab4e23,
+		0x841acf732e7d3c8f,
+		0x7c6faeb54d815afb,
+		0xcb1698d65da37b69,
+		0x59c3a8e87ba689d5,
+		0x1c867a9ed78ab953,
+		0x3fb28ceed47cb6af,
+		0xb13c752fe48fc62d,
+		0x72cb4fd215a2f489,
+		0xd7b9af2763a714f5,
+		0xd14ef62981ba2473,
+		0xe42a3b176e7a42cf,
+		0x174d5efa9c8e614d,
+		0x1c2fa47cbc716fa9,
+		0x7b926c4edb849e17,
+		0x13758c41f976ad83,
+		0xc8d5964216579adf,
+		0xecf968a3246bca5d,
+		0xeb2cf975435fe8c9,
+		0x9d2c567cb5941a37,
+		0xd74a6e1dc19628a3,
+		0xae2617bdcf7a5821,
+		0xe379b2ddce6b457d,
+		0x98ab4371fb5d64e9,
+		0x5917fc332d81a357,
+		0x3eb752f54b75a2c3,
+		0x5f72ce376a78c241,
+		0x27e458b76547bf8d,
+		0xa83b2648734acdf9,
+		0x61e487cba24efd67,
+		0x2d9c4f6fe1742cd3,
+		0x3d15b89fef674c51,
+		0xebac92d21f3749ad,
+		0x271e6c843e4c692b,
+		0x7218dba54c3e6897,
+		0xe4f73b198b51a7f3,
+		0x3da846fcba54c671,
+		0xe986241ba736b4cd,
+		0x4fbca96ed659e34b,
+		0x63a854ffe34cf2b7,
+		0xfa1927b5467f1325,
+		0x6f32c51983745291,
+		0xd7345c876c254fed,
+		0x1825dc687d286e5b,
+		0x73e51b298b2a6dc7,
+		0xf635cd1cba2e9c35,
+		0x968acd7fe842cba1,
+		0xc346fdbfe734c91f,
+		0x48d9b7621625e87b,
+		0x29cd7b843429f6e7,
+		0xd2fa716a943d1865,
+		0x32c48aea924f36c1,
+		0x4ef5cdbbae12653f,
+		0xa143f56dce15639b,
+		0x8c1f9dbfed2a8319,
+		0xd5496211fb2ca185,
+		0x985b1644382c9fd1,
+		0xe3694a765821bd4f,
+		0xb9ac61e65613edab,
+		0xac2671b98516fc29,
+		0x7ef49d3cb42a1c95,
+		0xd8459c2cb42c3af1,
+		0xd2bc3e9baced396f,
+		0x3c542dffecf157db,
+		0x95c8e4b21df38749,
+		0xf938c6b32cf796b5,
+		0xa9c4837659fab623,
+		0xb641ec8656ecb38f,
+		0x284ba36875dec2fb,
+		0xd2ca657cb5e3f169,
+		0x8b1a467dc4f721d5,
+		0x42cfb6aed1e92f43,
+		0xb176489321ea3d9f,
+		0x485b21743fbe5c1d,
+		0x5e68bdc54de16c79,
+		0xa2be7c976bd38ae5,
+		0xfda1637989e7ba63,
+		0x5f3c74ea95d8a7bf,
+		0x1e248fcba5ebc73d,
+		0x9275cebed3cfe5a9,
+		0x794ba85438e42617,
+		0xd52b917764e72583,
+		0xe81c92b761c843df,
+		0xb8c26f387fcb625d,
+		0x42ced3987dbe61c9,
+		0x46371debabc19f27,
+		0x4b82c39ed8c4ae93,
+		0xa25ec63ed6a59bef,
+		0x68cb37e215a8cb6d,
+		0xadfe7c13248bead9,
+		0x13fedca653befa47,
+		0x425c1fa985d429b3,
+		0xce4f968cb2d75931,
+		0x8fe9245bafb9468d,
+		0xd6b9718dcdab65f9,
+		0xb8ae49c1fcbe9467,
+		0xf6ae31532cb1a4d3,
+		0x7c2af6e54ab6c351,
+		0x1ebf6c854796c1ad,
+		0x951e8b776598df1b,
+		0x7bafd357639bfe87,
+		0x84e657cba49f1de3,
+		0x4d91f6afe2b34d61,
+		0xa138725fef854abd,
+		0x7e5cb4221f986a3b,
+		0x87abd3132e8c69a7,
+		0xdcfe53754c8ea915,
+		0x1d47ef976ba2c781,
+		0xcb2f4ada9783b5ed,
+		0x1aeb37fdc697e45b,
+		0x85e2614ed489f3c7,
+		0xc794d251f6ad1435,
+		0xd93ae583259f43a1,
+		0xa9d263b873a4621f,
+		0xcb26e4a43e845f6b,
+		0xa31fbe554c586ed7,
+		0xb9d214798c7b9d45,
+		0xeb9d765ba86e9cb1,
+		0x734be96ed871ca2f,
+		0x6cb497d1f563e98b,
+		0x2d4a35921465e8f7,
+		0xd76efa54348b1975,
+		0xb1283c97648c37d1,
+		0xbf3a15ea918e364f,
+		0xf813d62a9f7264ab,
+		0xb2f6a84dce768429,
+		0x27cfd39fed68a295,
+		0x235179ffe96ba2f1,
+		0x5cf947e2184cae5f,
+		0xe8a47c543751decb,
+		0x7a128ed65764fd39,
+		0x8ec61f4a94671da5,
+		0x6951d7acb57a4c13,
+		0x946fd3ccb15c3a7f,
+		0xc65e4bdbad3f48eb,
+		0x149a62b1fe427859,
+		0xcb9e7af21e3497c5,
+		0x3759a1f32d59b743,
+		0x2db9e3c6583ab49f,
+		0xc93a62f8785ec41d,
+		0xcfd9248cb851f279,
+		0xd7bf8a1dc87612e5,
+		0x1a56cdffe5794163,
+		0x9e6834fed1483eaf,
+		0xa4896e74314b5e2d,
+		0x7f6d14843e2f5d89,
+		0xcf2793876d328bf5,
+		0x6db531998d25ab73,
+		0x685b4f387926a8cf,
+		0x5971ca4cb72ac84d,
+		0xdbe7a93dc52de6b9,
+		0xca3b4861f9531827,
+		0x829cd5b218452693,
+		0xae4cd317652734ef,
+		0x56ecf7b9812a536d,
+		0xa1264bd87f1c62d9,
+		0x368efb5bad2f9147,
+		0x458daf2cbc129fa3,
+		0x4378cb2eda36be21,
+		0x2b8e9751f816bc7d,
+		0xd7c3b4832618dbe9,
+		0x5d19f684361dfb57,
+		0xa31b9fe987412ac3,
+		0xa7648c1cb7265a41,
+		0xf5872d1cb216479d,
+		0x53978cdbaef9671b,
+		0x62a1e73cbdfc9587,
+		0x4a5d8e9dcafd95e3,
+		0xf9d172a43bf2c461,
+		0x81da7bc438f4c2bd,
+		0x18b27d4658f7e13b,
+		0xdfa1b36654d8ef97,
+		0xb51c974985db1ef3,
+		0x3b529fcba4df3e71,
+		0x1dec589ba1f24bcd,
+		0xce1f6b2edfe56c4b,
+		0x5a3def221fe86ab7,
+		0xe47d8f243dec9a25,
+		0x5c6db2954adeb891,
+		0x21ae3b6658c1b6fd,
+		0x1dc8e36a98d3e56b,
+		0x3472d91ba5c6f4d7,
+		0x2c86b59ed7eb1645,
+		0xdc397e51f5ed34b1,
+		0xd369ae7214ce532f,
+		0x4af6edc652e3618b,
+		0x51fed2c43db46fe7,
+		0x139d8fe54dc89e65,
+		0xbeda928768ba9dc1,
+		0x64b5ca99879dab3f,
+		0xaf26153ed6c1ea9b,
+		0x5d468acfe6c4fa19,
+		0x8ef491a326d71a85,
+		0xf87c25b545ca38e1,
+		0xa24b9c8762bc375f,
+		0x1b95463871af45cb,
+		0x8924f73bafc28539,
+		0x8e23a54cbec693a5,
+		0x75fa3d4fedc9b413,
+		0x564387afe89ab17f,
+		0xab286472167cafdb,
+		0x1d5a869437a1fe49,
+		0xe3cda89767a41eb5,
+		0xac24318a96b84d23,
+		0xad492e5872a93b8f,
+		0x2e8c435ba18c49fb,
+		0x4a7698fdce8f5a69,
+		0x49b62a31fea298d5,
+		0xa29fbe821ea6b853,
+		0xeab5c6d32c87b5af,
+		0xf3d98eb5498ac52d,
+		0x623abc96567de389,
+		0x3df15a7cb8a213f5,
+		0x1c95384ed8b64273,
+		0x76e982bed39741cf,
+		0x9537b8dfe1895f3d,
+		0xc98d3743217c5ea9,
+		0xbae5d2c43e6f8d17,
+		0x4a69df265e72ac83,
+		0xe7fa49865b64a9df,
+		0x2c754b398a67c95d,
+		0xce97264cb65ae7c9,
+		0x72d4af1dc56df837,
+		0xd324b791f69127a3,
+		0xb17dfc5438a65721,
+		0xb18c95743298547d,
+		0x4a1f3276517a63e9,
+		0xed76fc398f6d9257,
+		0xb9ed61f98d6f91c3,
+		0xbc981d3bac74bf31,
+		0x4bf571edc954be8d,
+		0x925af76fe746dcf9,
+		0xd73865c2184afc67,
+		0xf2e871b5476e1bd3,
+		0x724c31ea97824b51,
+		0xbf3cd5ea926348ad,
+		0x379d468dc157682b,
+		0xd2859b4dcf3b8697,
+		0x81a5692cbd4c96f3,
+		0x126b597fec4fb571,
+		0xba429e821a52b3cd,
+		0x8adcef443a56e24b,
+		0xbd724ec65948f1b7,
+		0x8dc21e4ba97c3125,
+		0xef6b91dba65d3f81,
+		0x5c8d632ba3514ced,
+		0x6dba895fe1436d5b,
+		0x85c7a94fef256bc7,
+		0xda59c4f21f2a9b35,
+		0x61795f254e3db9a1,
+		0x8d364c965a3eb81f,
+		0xd65713b98a32e67b,
+		0x634bd1cba924f5e7,
+		0xf3e8129ed93a1765,
+		0x598ac67fe74b35c1,
+		0xf21dcb8fe62d543f,
+		0x5adcb1843541629b,
+		0x83a54d9873458219,
+		0x51b6c7e54e169f75,
+		0x473f1a976c289ed1,
+		0x5861e2d8791bac4f,
+		0xfe3b5619871fdcab,
+		0xbc32481ed813fb29,
+		0x968e27c1f8261b95,
+		0xd5bafc65472839f1,
+		0x1bdfa565451b386f,
+		0x86dcfab8731e46db,
+		0xc6175d3cb3218649,
+		0x2d764f198ef294b5,
+		0x948b1d3badf7b523,
+		0x71a3568dcae7b28f,
+		0x97b26e8ed7e9c1fb,
+		0x62ec3d5217ecdf59,
+		0x8fdb67e548e21fc5,
+		0x532f8cb878f62e43,
+		0xbea28dc874e63c9f,
+		0xb75f36c983f95b1d,
+		0x2e31f96ba1fd5b79,
+		0x6f7bd13badcf79e5,
+		0xba32e671fde2b963,
+		0xa8294ed21cd4a6bf,
+		0xe539a6d32ae8c63d,
+		0x8fceb67437dbe4a9,
+		0xbc21f4d768cdf417,
+		0x14fce89cb9e12483,
+		0x5ecd391ba6c542df,
+		0x3f8e2a4dc3e8615d,
+		0x651b279fe1d85fb9,
+		0xda18e6b431dc8e27,
+		0x956d4fb32ebf8d93,
+		0xd15b62c54cb29aef,
+		0xb92da3f659b4ca6d,
+		0xce692f8657b6e8d9,
+		0xe174569ba6cbf947,
+		0x1bc2a96ed6ce18b3,
+		0x36cd2141f7d25831,
+		0xdae5479216c3458d,
+		0x1dcb9e5432c764f9,
+		0x9a7b2c6651db9367,
+		0x25473f976fac92d3,
+		0xb49571f98dafb251,
+		0x9ec13bf87a82bf9d,
+		0x6492371dc895de1b,
+		0x53c2ab1fe5a6fd87,
+		0xa6b45193279a1ce3,
+		0x67a5e3f547ae3c61,
+		0xabd819c765a149bd,
+		0x51da762982c4693b,
+		0x4d1fe9acb1c568a7,
+		0xbfa8372dcf9ba815,
+		0xe3d7f81dce9db681,
+		0x1eb5692dc97fa4ed,
+		0x7523ac421c92e35b,
+		0x92a54e843a95f2c7,
+		0x9ca2813879ba1235,
+		0xe2915ab9879c42a1,
+		0x3bc9ae69847b3efd,
+		0xe62d75fdc3915e6b,
+		0xb6489affe1936cd7,
+		0xb643571fef879c45,
+		0x68c719d32f689ab1,
+		0x598de7643d6cb92f,
+		0x5c4791243a5fd78b,
+		0xe8c7b9165a82e6f7,
+		0x2394ef8dcba61875,
+		0x28fe547dc78936d1,
+		0xe739b5ced68b354f,
+		0x26349de1f27e53ab,
+		0xcf72581545a18329,
+		0x59e8d2c76284a195,
+		0x875d9b354d569fe1,
+		0x34fb5ea76c48ad5f,
+		0x34f795b76849adcb,
+		0x5f3cb48ba85fec39,
+		0x2b37c4ffe9731ca5,
+		0xe863bda1f9874b13,
+		0x3bc9ed421658397f,
+		0xf19de573235a47eb,
+		0x4ba2fc19824e6759,
+		0xc27d8e4ba27196c5,
+		0x65329cfbaf75b643,
+		0x51b3f6cbad46b39f,
+		0x68dc714feb59c31d,
+		0x489d6271fa4ce179,
+		0xac8dfb72183cefd5,
+		0x9b87de176a742f53,
+		0x3194752767453daf,
+		0xcba2157a96485c2d,
+		0xe8d3f29ba23b5c89,
+		0x86df9c1cb13d7af5,
+		0xa71c6b5edf41ba73,
+		0x7f5dca1fed23a7cf,
+		0x53bf72621e26c74d,
+		0xc61afd843c28e5b9,
+		0xf3c479176a3cf527,
+		0xd4ce6b298a4f1593,
+		0x4e8c9b5ba85243ef,
+		0x1ed74f5dc837526d,
+		0x87c46b1fe43861d9,
+		0xb57ad28fe12b8f37,
+		0x6975e8d5412d8ea3,
+		0x8cbed4f76f43bd21,
+		0xa7b39dc65e13cb7d,
+		0xbfc7e1a76b15dae9,
+		0xed4fc2b98b19fa57,
+		0xd7895e1cb82d19c3,
+		0x1692538ed82f3941,
+		0x37d52ec1f712469d,
+		0x4ab157843825761b,
+		0xb4961ad6531a9487,
+		0x5fbe4c68721b94e3,
+		0x482edba87efdb361,
+		0xac3bf95769efa1bd,
+		0xa5d1492989e3df2b,
+		0x2d49f7ecb8d4fe97,
+		0xd8f94a5dc7e81df3,
+		0xb1e6598328fb3d71,
+		0xebd379f325fe3acd,
+		0x62c85df875f16a4b,
+		0xc9a543e982f369b7,
+		0x2c46ea3cb1f7a925,
+		0x26ce1bd98feab791,
+		0xd34ce76989cba5fd,
+		0xc268fb9fe9cfd46b,
+		0x5df7ae421ac2f3d7,
+		0x93c81da76be81345,
+		0xfc8d7b2768e943b1,
+		0x1fa9dc4987db512f,
+		0xec5f942983cd4f7b,
+		0x72b3f4cba3c16de7,
+		0xeb8d641dc1e39d65,
+		0xfc184d7fefd69bc1,
+		0x9b45e3821ec8ba3f,
+		0xd7cb43632eacd89b,
+		0xc765b8f54abfe819,
+		0xe2f451b87bd31985,
+		0xc9e1b3dba9c637e1,
+		0x52a76c8cb7c9365f,
+		0x3a7df96fe3da54cb,
+		0x5d3e84b1f2ce7439,
+		0x4d7c6eb434d192a5,
+		0x86e3952874d6b213,
+		0x82f91ea43d95ae6f,
+		0x5f9163d54c87aedb,
+		0x42fce5d76a8bed49,
+		0xfca25e4a978efcb5,
+		0x4b36d89fe9b54c23,
+		0x26ab815fe6b53a8f,
+		0x723bc49215a748fb,
+		0xb1edc6a323bc5869,
+		0xdfe6372542ae87d5,
+		0x41da86ba92c1b753,
+		0x9e238cd87e83b4af,
+		0x92315f6bae97c42d,
+		0x6b41fc8edc7ae289,
+		0xf8b39e2ed98be1f5,
+		0xceb7da354baf2173,
+		0xd32bec6547823ebf,
+		0xe2865bf547965e3d,
+		0xbd9caf7763875da9,
+		0xc349581ba39b8c17,
+		0xb418e92dc17e9b83,
+		0x7fa614ecbe61a8df,
+		0x851bde91fe73c85d,
+		0xd325ce421d75e6c9,
+		0x4dab61932c8af637,
+		0x3f6128965b8d16a3,
+		0x29dba7398a9f4621,
+		0x1c642d8cb892537d,
+		0xfe192b8dc48562e9,
+		0x1fb4539fe38a9157,
+		0xd2596c8fe16a8fb3,
+		0xe675dc15427dae31,
+		0x25ef1cb43f51bc8d,
+		0x5ca871654c53dbf9,
+		0x3d7bc9698c45fb67,
+		0xacb134598b691ad3,
+		0x5e16f93dc97d3a51,
+		0x42a6b3ddc65f37ad,
+		0x24dcab51f583672b,
+		0x4be9a6f213648597,
+		0x7fcd1965426895f3,
+		0x3a4d9f79826cb471,
+		0x739d5e276f4ea2cd,
+		0x1fe674aa9d62e14b,
+		0xb86321fa9b43efa7,
+		0x21fe3a6edb682f15,
+		0xe5142931f95a3e81,
+		0xc86534a2174a3bed,
+		0x4ec31df3273f4c5b,
+		0x23ae7b9985426ac7,
+		0x17ef249cb2469a35,
+		0x3674f8edc247b8a1,
+		0x17e2f53a9e3ab71f,
+		0x753f6d2bac2ed57b,
+		0x8ce49b7edb31f4e7,
+		0xf819b7e32d371465,
+		0xa2e195376b5834c1,
+		0xc3489f18794a523f,
+		0x2a5ce499873d519b,
+		0x6d73b2fa942d5ef7,
+		0x49316a5dc4329e75,
+		0xfdb8176fe2359cd1,
+		0x1a63fc5ede17ab4f,
+		0xbd9851a32f18d9ab,
+		0xd15f8ab54c1dea29,
+		0xa4f125687d321a95,
+		0x52b67a8a9b2538f1,
+		0xe492568cba18376f,
+		0x1762fbddc71945db,
+		0x3198ca6fe61d7549,
+		0x14637abfe41f83b5,
+		0x41a5e3776715b423,
+		0x7152bc976325b18f,
+		0xe7abc6843cd5afeb,
+		0x2c6a87d54bf8de59,
+		0x42d835a768eafdc5,
+		0xf4295d1ba9ef1d43,
+		0xeb49163dc7e23b9f,
+		0x1a57328fe7f65a1d,
+		0xe58639f214f85a79,
+		0xd1e3c7f323fb78e5,
+		0xef196a2652fea863,
+		0x5d1eac6872e1a5bf,
+		0x2fe745198fe4c53d,
+		0xfc6219598cd6e3a9,
+		0x8f9ab56dcbdaf317,
+		0xe57b9461faed1283,
+		0xda1764f328be31df,
+		0x7416a8b438c25f4d,
+		0xd4eba62436d45eb9,
+		0x17a8eb2764e98d27,
+		0x35b9cf6872eb8c93,
+		0xb23865c871bc89ef,
+		0x7d2bc96bafb1c96d,
+		0x43918cb1fcb3e7d9,
+		0x2bc5d9f21dc6f847,
+		0x63195cb54cda17b3,
+		0x153ef7476acd4731,
+		0x235e1bd767bf348d,
+		0x6547f83ba7c263f9,
+		0x2847f91dc4d59267,
+		0xc251a73fe4c891d3,
+		0x769f3d4fe2cbaf41,
+		0x6b9fdc43218cae9d,
+		0x7d1a28354f92ed1b,
+		0xc1d26eb54da3fc87,
+		0xd3fe45776ca71be3,
+		0x6facd97989ca3b61,
+		0x37b51d8ba69c38bd,
+		0x61389ebed6af583b,
+		0xb32c9571f4c286a7,
+		0x8f56b43324c6a715,
+		0x5ba8ecf543c9b581,
+		0xfe4871d65189a3ed,
+		0x2fa159e76f8ed25b,
+		0x6db394198d92f1c7,
+		0xfe8a975dcdb72135,
+		0x4925b1aedba73f91,
+		0xb9358c7fe6783cfd,
+		0x84a5f7b2178c4d6b,
+		0x483c5a73248f5bd7,
+		0x9b3e4d6876a29b45,
+		0xc485bf987385a9b1,
+		0xc34b519ba197b82f,
+		0xdac682ea9f5ad68b,
+		0x9b45fdcbab6cd5f7,
+		0x1e8965d1fda21675,
+		0x8c7d14b32c9635d1,
+		0x8dfe1a332b98534f,
+		0xcadb52f5487952ab,
+		0x6b793c2ba68d7129,
+		0xfbc2d39ba36e7f85,
+		0xce4f831cb4739de1,
+		0xe91cb67ed174ac5f,
+		0x496d821fef46dacb,
+		0x356b97421f5aeb39,
+		0xeba5dc832c4df9a5,
+		0xd38cf5287d824a13,
+		0x3ef4cb8a9b64387f,
+		0x6123b47ba95746eb,
+		0xef4781ced84b7659,
+		0xd3b4815fe36d84c5,
+		0xfd3a815fe27fa543,
+		0x9e38db721463b29f,
+		0xcb6417f65376c21d,
+		0x7a21cde54e37df69,
+		0xd57932e76b39fed5,
+		0xda87632a9b6d1e53,
+		0x32ad795cb9513caf,
+		0x3b85df4fe9645b2d,
+		0x463c1a51f7365b89,
+		0xe6b48272163a79f5,
+		0x4b16ce93254da973,
+		0x3681ca26523e96cf,
+		0xc1b7f23a9152c64d,
+		0x7c2b1fa98f25e4b9,
+		0xa5e78f9cbd39f427,
+		0xc7fd43bfed5c1493,
+		0x4a128c9ed94c32ef,
+		0xfd89b6e43b42516d,
+		0xd172be5548235fc9,
+		0xafb13d2659268e37,
+		0x5e61b29875298da3,
+		0x351a4f8a954dac21,
+		0xe153c67a912fba7d,
+		0x7f8465ccbf12d8e9,
+		0xfd81456fed14f957,
+		0x927ca1e54e2918c3,
+		0x9834ad176d2c3841,
+		0xac9e42b76a1e359d,
+		0xd1e4f5ca9a32751b,
+		0xf8916a7dca149387,
+		0x4ea2d8bdc61792e3,
+		0xfc8769afe53ab261,
+		0x251f49cfe21b9fad,
+		0xd286b7c5431fce2b,
+		0x1a287e443ce1fd97,
+		0x1c7948376be51cf3,
+		0x351e7f976bf83c71,
+		0x9d5b4a1767f839cd,
+		0xf4379b5ba7fd594b,
+		0xb7984f1dc4ef58b7,
+		0x4312fa6fe6f3a825,
+		0xa81bd46324f5b691,
+		0xc4f9a52432e7a4fd,
+		0x79e8fc1651fad36b,
+		0x4acfd6b65fbce2d7,
+		0x326fe5dbade31245,
+		0x52bfc71bace642b1,
+		0xa796e4dcb9c74e1f,
+		0x4765ab11f6d94e7b,
+		0x945fa6c216db5ce7,
+		0x78e91f4324df8c65,
+		0x84eb2f3765e39ac1,
+		0xe5c9a36872d5b93f,
+		0x39bc2ea981e6d79b,
+		0x5496fea98fcbe719,
+		0x4b6edfcbacbdf685,
+		0xc7916231fbc236e1,
+		0xc796da221bc6345f,
+		0xe9568d7329d753cb,
+		0x1e93cf4658db7239,
+		0x35cbf6e876cd81a5,
+		0xe2f456c874ad8ef1,
+		0x847f62ba93b2ad6f,
+		0x8d9f1c6fe194acdb,
+		0xa541327edfa7ec49,
+		0xedbf86421e89fab5,
+		0x38964e165dae1b23,
+		0x83da2f465cb1398f,
+		0xeb19d52769a347fb,
+		0xe81f924cbac85769,
+		0x5427f1edc4ba86d5,
+		0x8df61acfe4bda653,
+		0x219b3e5ed28e93af,
+		0xd36c8fb215a4c32d,
+		0xd631eb9542b5e189,
+		0xb41c6d743c87dfe5,
+		0xcb436e187d9b1f63,
+		0x23fa8be7697c2dbf,
+		0x7e56a43cba915c3d,
+		0x95d837ffe7835ca9,
+		0x4d638191f5a68b17,
+		0x3527ed42157b9a83,
+		0xe6bf43a3236b97df,
+		0xb2ed5175428fb75d,
+		0x96e4ab387182e5c9,
+		0x48f3d75bae96f537,
+		0x1b7fe82dce8915a3,
+		0x543d78bfed9c4521,
+		0x32b56cd1fa8e427d,
+		0xd16fe2443b8261e9,
+		0x48c65fa32a938f47,
+		0xf82cb7d545768eb3,
+		0xfb7a16598579ad31,
+		0x143e5ac8725cab8d,
+		0x7db49539815ecaf9,
+		0xa216e73dce52fa67,
+		0x78ade141fe7619d3,
+		0x8cd94bf32e7a3951,
+		0xf8cd3ae32c5b36ad,
+		0xae913d554a7e562b,
+		0xc8f5be3bab618497,
+		0xfe93847cb87594f3,
+		0x159ac2eed568b371,
+		0xb2fad36fe358a1cd,
+		0x49ac2bffe15acf3b,
+		0xcaf84db3214fdea7,
+		0x52d4a8176f742e15,
+		0xea91f8587e563d81,
+		0x51ef8a976b473aed,
+		0x76d945a9893c4a5b,
+		0xa314d78cb83e59c7,
+		0xcf14286fe861a935,
+		0xe5823461f654b7a1,
+		0x97fcdeb32547b61f,
+		0x1bedac365239d47b,
+		0x5ef9c1b7614bd3e7,
+		0xe3a12fd98d3ef265,
+		0xcb54728bae6543c1,
+		0xa7894edcbc47513f,
+		0x64f9e7beda274f8b,
+		0x24d371bfe82a5df7,
+		0x8e76acf2192e8d75,
+		0xc18a7f6657429bd1,
+		0x95c2b4f87623ba4f,
+		0xf8eb56287325d8ab,
+		0xdf436eccb13ae829,
+		0x34c9de6bae1cf795,
+		0x69a543ecbc3e27f1,
+		0xd468a5ffec12356f,
+		0x6a41edb32c1654db,
+		0xcb49a7365c1a7349,
+		0x5e398f17691c82b5,
+		0x63a78c4a984ea123,
+		0x7651e8ca9521ae7f,
+		0xd2673eba9413adeb,
+		0x75a2896dc216ed59,
+		0xc9417b3bade7fbc5,
+		0xdb7f18532efb1c43,
+		0xfe59d2b43bed2a9f,
+		0xdac9be576bf2591d,
+		0xf7d4e1a76bf35879,
+		0x1495fb2ba9f687e5,
+		0xb762a48dc5fba763,
+		0x6e542f8ba3ec94bf,
+		0x1fe4527dc2efb43d,
+		0xa45978c214f3e2a9,
+		0x4789e1f653e6f217,
+		0x8a95fcd76fea2183,
+		0xbaef69265ab92ecf,
+		0x34c289a879bc3e4d,
+		0x2dbef36ba8e15db9,
+		0x3ef85cbed9e48c27,
+		0x4591e861f5e68b93,
+		0x728dcae214c798ef,
+		0xfac18db323ecb86d,
+		0x872feb3542bfc6d9,
+		0x62c3dafa91d2f647,
+		0x26b471da9fd716b3,
+		0x35d94a1cbeda4631,
+		0x257c3adfeacb438d,
+		0x2584691fe8bd52f9,
+		0xcb826fa43bd29167,
+		0x7b1c6f4327b48fc3,
+		0x27dcb14656c7ae41,
+		0x28f4d9c653b7ac9d,
+		0xeba581d8739adc1b,
+		0x2ab8d14a91afeb87,
+		0x5a349dbdcfb41ae3,
+		0x86bc7431fec73a61,
+		0x59bf32821ea837bd,
+		0xe4835fd32dac573b,
+		0xcfd1e29439be65a7,
+		0xf4752be989c2a615,
+		0x671492dba7c5b481,
+		0xfe15927cb496a2ed,
+		0xc6b58a9fe3a9d15b,
+		0xa16d243fe18adfb7,
+		0xc72b6ad4319dfe25,
+		0x8fb2d3765fa43e91,
+		0x1a7e9b354c853bfd,
+		0x28a3f6465d984c6b,
+		0x849bd5f7698b5ad7,
+		0x514bd8adc79e8a45,
+		0x61248a5fe692a8b1,
+		0x1a2b396fe594b72f,
+		0x5da634221396d58b,
+		0xcfad45643289d4f7,
+		0x2b5f31a7619cf375,
+		0x6a9bd1387e8f24d1,
+		0x96eb578bad93524f,
+		0x1a9d354dcd8651ab,
+		0x8ce4f59edb786f19,
+		0x67a3c481f96b7e85,
+		0x7ea36413276d8ce1,
+		0x8ed214643671ab5f,
+		0x13c96a865463d9cb,
+		0x165c3eb98276ea39,
+		0x83a7251cb169f8a5,
+		0x9ec2af3cbf7d2913,
+		0x136ed87cbc5e267f,
+		0xb4a957e1fc7245eb,
+		0x6fbae3521d867459,
+		0x35cbd1f32b6983c5,
+		0x4ebd8f97697ca243,
+		0x451da688765da19f,
+		0xf9e315c98451aefb,
+		0x253a7f6cb253de69,
+		0xdc7ef54cb146fcd5,
+		0xc8b9a51fef6a1d53,
+		0x8c3dbf521e4c2baf,
+		0xb7e8f9243c5f4a2d,
+		0x137b48d76d425a89,
+		0x8765bfaa9b3478f5,
+		0x8451fbadcb49a873,
+		0x839e4cfcb63a95cf,
+		0x97e4b6ddc63eb54d,
+		0x62b38c51f451e3b9,
+		0x47b69a821465f327,
+		0x3c28fb1874681293,
+		0x3274bde76d4931ef,
+		0x6d195cb87c2b3f5d,
+		0xdf1a38c87a2f4ec9,
+		0xfe5ba68dcb428d37,
+		0xdf45a79fe9258ca3,
+		0xda9ce381f748ab21,
+		0x43b58f92152ab97d,
+		0xf7b24d94342dc7e9,
+		0xe81b465a9431f857,
+		0xec9d612ba24517c3,
+		0xa675324cbf293741,
+		0x421d3f5cbe1a349d,
+		0xf4b5193fec2d641b,
+		0x5768b12feb1f6287,
+		0x17adb6265b2491e3,
+		0x1df25e854926af51,
+		0x5f976e1545169ead,
+		0xa39f5c487519cd2b,
+		0x576ae129831dec97,
+		0xe4197abdc5421bf3,
+		0x8b13a25dcef43b71,
+		0x46c3f29febf538cd,
+		0x26bcaf821df9584b,
+		0xd7e59ca32afc56b7,
+		0xfedb96254afe9725,
+		0xd6f9245878f2b591,
+		0xbc59a2f986e4a3fd,
+		0x65b1df8ba4f7d26b,
+		0x68cf391cb3f9e1d7,
+		0x719f8b2dc1dbef35,
+		0x8962def543de2fa1,
+		0xa34d8be65ec34d1f,
+		0x4d8e6a943ce54d7b,
+		0x658f72e54ad85be7,
+		0xafe83d9879ec8b65,
+		0x435fde1ba6de89c1,
+		0x1d536e7dc6d1b83f,
+		0x4a2e36c1f4e3d69b,
+		0xd93fc51324d7e619,
+		0xb9cefa4432daf485,
+		0xe812ad4873dc25e1,
+		0x2b68ac587dbe235f,
+		0xd269bac98ed352cb,
+		0x38dea49cbcd67139,
+		0x8f65a4cedac87f95,
+		0x4f753acfe6ba8df1,
+		0x8b759e4215ad9c6f,
+		0xa5fdcbe43591cadb,
+		0x3cb7fa8765c3eb49,
+		0xb94a28c872c6f9b5,
+		0xc8d5432a94db1a23,
+		0x456137ca9eac278f,
+		0xf139db5bac9e36fb,
+		0x9b128e31fdc27569,
+		0xeba6c5221cb684d5,
+		0xb49f5dc32bc9a453,
+		0x1dc3a295468b92af,
+		0xd519bce8769eb12d,
+		0x437acb9984a1df79,
+		0xdbec619ba293fde5,
+		0x18f95ebed2b81e63,
+		0x84b796fede782cbf,
+		0xeb9a25721f8c4b3d,
+		0xd5eb7fa32d7f4ba9,
+		0x6d14ac965db38a17,
+		0xadf349776cb5a983,
+		0xb17f825ba58796df,
+		0xb21d6a8dc48ab65d,
+		0xa8df293cb37ed4c9,
+		0xb31f628fe5a1f437,
+		0x9a4b7e6325b614a3,
+		0xd59321b873b95421,
+		0x3f2467965f8a417d,
+		0xabfec6265c6b4fd9,
+		0xd813642a9b8f6e47,
+		0x3fda7b8dca728db3,
+		0x52bafd7fe986ac31,
+		0x82abd7e1f456ba8d,
+		0xbdf96272145ac8f9,
+		0xeaf356b3235de967,
+		0xe16db828759218d3,
+		0xd47f981cb2a63851,
+		0x51dec83a9f6735ad,
+		0xb6a8957dce7a652b,
+		0xd2fb14cfec5d6397,
+		0x918aec7eda6e82f3,
+		0x4192d6b43c84b271,
+		0x98fb154327549fbd,
+		0xd15abc854657ce3b,
+		0x73dc28176349eda7,
+		0x17e2bc5a936dfc15,
+		0xa8e7246ed4723c81,
+		0xe3129dacbf5439ed,
+		0x8de2b391fe37495b,
+		0x62c3a7d21e3a58c7,
+		0xb47f96e32c4d9835,
+		0xd4a61f265b4f96a1,
+		0x453a2f698963b51f,
+		0x1f5be94ba845d37b,
+		0x15aed73cb548d2e7,
+		0x34a9c71ed34bf165,
+		0x93ad6451f46e32c1,
+		0xf13e942653614e2f,
+		0x8fae19b65f234e8b,
+		0x8c1f97554d265cf7,
+		0xb39c2da76d2a8c75,
+		0xf254e9a8793c8ad1,
+		0xd8576eccb72ea94f,
+		0xb496d3ffe632d7ab,
+		0x57aed121f635e729,
+		0xd9cf25b21428f695,
+		0xc5f428a8754b26f1,
+		0x32d576e9813d246f,
+		0x64a139b98f2153db,
+		0x37d6251cbe157249,
+		0xd4f37b8dcd2781b5,
+		0x2f34a6bedb2a9f13,
+		0x1db4a82fe61b9d7f,
+		0x1b46c373261f9ceb,
+		0xa235e9d54712ec59,
+		0x81bf9da87614fac5,
+		0x4ef8531ba6291b43,
+		0xceb3692ba31b289f,
+		0xac152d6a9efc481d,
+		0xc849a5ecbcef4679,
+		0xecb8964edbf286e5,
+		0xf9c8b6221cf7a563,
+		0xde1f593328e793bf,
+		0xef8ad39657fab23d,
+		0x4e23afd765fed1a9,
+		0x4fd6bca984c1def5,
+		0xa157436cb4e51f73,
+		0xdc625f4ba1e62dcf,
+		0xf98672dcbfe93c4d,
+		0x2ef6bdc21fed4cb9,
+		0xf65d82743cdf6b27,
+		0x2fcd6b365ce28a93,
+		0x6cfb4e2658c497ef,
+		0xaec78b1a95e8b76d,
+		0x2eb57d3984eac5d9,
+		0x3e8c17fcb3cde547,
+		0x53cad1e1f6e215b3,
+		0x7b1ecf4326e74531,
+		0xc14bf28651e7428d,
+		0x1ac6ed854eca51f9,
+		0xc87d1e654dbc6f57,
+		0x8a29c5f769af7ec3,
+		0x1942e7acb9c3ad41,
+		0xcd51968fe6c4ab9d,
+		0xbc52e7d1f5c7da1b,
+		0x675fa8e214cbea87,
+		0x4157bcf324acf8e3,
+		0x2a7639e985d23961,
+		0x2974f31981c436bd,
+		0xa257b38a9fc8563b,
+		0x5f4dc2aa9ecb64a7,
+		0x743c289fecbd9415,
+		0xb67d241fe9bfa381,
+		0x59361a432893a1ed,
+		0xeb3c49d32795cf4b,
+		0xf8692ca43496deb7,
+		0xfb8ea468749afd25,
+		0x4d5cb32984ae2d91,
+		0x6a1e2c4cb2913afd,
+		0x3289e17edf934a6b,
+		0x8dac7231fea659d7,
+		0xfb92e6d21eab8945,
+		0xce7598443c8d97b1,
+		0xcf53b215498ea62f,
+		0xb5edf7876792d48b,
+		0x18b92efba695d3f7,
+		0xb71643fdc4a9f275,
+		0xc2d1f34fe59b23d1,
+		0x8d53917fe29d314f,
+		0xb42981c432814f9b,
+		0xbdea48c43f846e19,
+		0xea5487b43e967d85,
+		0xc7e93a465c698be1,
+		0x43c16bf8786c9a5f,
+		0x426d7f8a965fa8cb,
+		0x4a1965fed672e839,
+		0xd5fb278fe384f7a5,
+		0xa92ed815469a2813,
+		0xed9b31a5438b257f,
+		0x93fc45e7617d34eb,
+		0x965c7f2baf817359,
+		0x824be96bae7482c5,
+		0x853efb6dcd78a143,
+		0x2f5b84edca479e8f,
+		0x9453a1dfe64a9dfb,
+		0x2f4ce3d2174fcd69,
+		0x9ced2f743762fbd5,
+		0x64d27a3a96871c53,
+		0x6db91cf9835729af,
+		0x86def93ba16b492d,
+		0x8176c35cbf3e4789,
+		0xf2e935bdcd4187f5,
+		0x26b85791fd54a673,
+		0x8ba9ec721b3694cf,
+		0xd561b8732a59b34d,
+		0x941e6236574cd2b9,
+		0x4eac168a985fe127,
+		0x3f728e6dc8752193,
+		0xb379f68ba3452edf,
+		0x69458efdc1483e5d,
+		0x9f6814afef2a4dc9,
+		0x92a6c5321f2e6c37,
+		0x4ce2bd765e418ba3,
+		0x4ba9dc887d45ba21,
+		0x3bf1a2876a25b87d,
+		0x3b79c41ba728c6e9,
+		0xd3a7268cb82ce657,
+		0xe371689cb62ef5c3,
+		0x437e5ba1f8753641,
+		0x528e76a21526439d,
+		0xca3f6bd87249631b,
+		0x83bde6765f2c6187,
+		0x12d9f8376b1c7fd3,
+		0x135aedca9c32ae51,
+		0x7c245e6cb8139cad,
+		0xcb9fa2dfe816dc2b,
+		0xeb7925a1f518eb97,
+		0x15bed633261be9f3,
+		0x3c4eb696563f2a71,
+		0xb35da7e9851237cd,
+		0x7b4c583ba216574b,
+		0x57af62ba9ef865b7,
+		0x9eb3415badfb9625,
+		0x3dab589dcbfda491,
+		0x9d62e73cb7ce92fd,
+		0xdf47c81329f3d16b,
+		0xa146d89326e4dfc7,
+		0xb86329d546d8fe35,
+		0x96afd81875fb2ea1,
+		0x91dba7c984ed3c1f,
+		0xc58916dba2f14c7b,
+		0x123fca9cbfd35ae7,
+		0x382e61a1fde78a65,
+		0x1c5dbae32dea98c1,
+		0x831c57f329dca73f,
+		0x2758649437dfc59b,
+		0x4c1832a878d3e519,
+		0xc182654ba7d6f385,
+		0x6d5e1f8cb6d924e1,
+		0xa4e9f23dc4db325f,
+		0x17e9ad21f2de41cb,
+		0xcedf215543d16f29,
+		0x456fc3832fc37e95,
+		0xa29e8fd54db68cf1,
+		0xf719db654ac89b6f,
+		0xe7cb3a96568ca9db,
+		0x6bef749986bfda49,
+		0xc73e25bed6c2f8b5,
+		0x7db82411f6d71923,
+		0xe9c2457214c9268f,
+		0xba7c892542ca35fb,
+		0xae3df56871ce5469,
+		0x21bade587fb183d5,
+		0x621fcaea9ec6a253,
+		0xacf59d198cb691af,
+		0xda52361dc798af1d,
+		0xa26c7511f58bce79,
+		0xe7d8a542168fdce5,
+		0x6c98e7b658b41d63,
+		0x7ad4b5c764952abf,
+		0x4831b59872b84a3d,
+		0xedc64f8871bc48a9,
+		0x2f39d64cbfae6917,
+		0x6175cbeedeb1a783,
+		0x319f7bdfeb8395df,
+		0x5ed4fb721c97b45d,
+		0x8c1564b32a78d3c9,
+		0x73e9b816589ce237,
+		0xa13d4b98768ef1a3,
+		0x3a65dfbdc8b65321,
+		0x865f372cb2953f6d,
+		0x9ad675fdc1874ed9,
+		0x859134dfef8b6d47,
+		0xd59c32a21f6e7cb3,
+		0x483da1765e82ab31,
+		0x378caf954c63b98d,
+		0x61a3deb54a65c7f9,
+		0xc95413fcb95ae867,
+		0xef972bcba57bf6d3,
+		0x5ab27e1ed69f2751,
+		0x45c3d711f58234ad,
+		0xd359cb621397642b,
+		0x197f6cb5418a6297,
+		0x726cf8465e6b81f3,
+		0x45ecf9d87c5d9f61,
+		0x38db1e587a519ebd,
+		0x4831bdfba964cd3b,
+		0x8ea415fed845eca7,
+		0x4b5ac87fe769fb15,
+		0x7e4f1894376d2b81,
+		0x8592fdb4345f28ed,
+		0xd543e6ca9372485b,
+		0xb6e71f8ba18456c7,
+		0x5fa782ecbf4a9735,
+		0x3f7c5edcbe4c95a1,
+		0x58914f7dcb5da41f,
+		0xb4ec3251fa51d27b,
+		0x3f7cb4832a54d1e7,
+		0x9bdafce32937ef45,
+		0x1845be3767592fb1,
+		0x3d46a2e9865b3d2f,
+		0xac3deb1a924f3d8b,
+		0x5493d2adc1425bf7,
+		0x15f37aeedf248b75,
+		0x7e31a651fe3789d1,
+		0xb9c56d821d2ba84f,
+		0x18924e74392ec6ab,
+		0x3c296eb87b41e629,
+		0x47213c698a23f495,
+		0xfead312cb94825f1,
+		0x728a65bdc74a236f,
+		0x2dba175fe53c42db,
+		0xf89b32cfe23f6149,
+		0xb675d13541327fa5,
+		0x8ea913b65f269e13,
+		0xe62f83d54d169c7f,
+		0x76b89e265c189aeb,
+		0x15c42ad8781edb59,
+		0x1937a28cb821f9c5,
+		0x5346a19fe9261a43,
+		0x429fb71fe516279f,
+		0x6be21cf4362a471d,
+		0x81a79357631d4579,
+		0x5ea92b39821f74e5,
+		0x436b79a98ef1a463,
+		0xe9cd41387ce492bf,
+		0x28f53eba9af7b13d,
+		0xd28fc4acb6e7cf89,
+		0xc5a6e37cb6eacdf5,
+		0x4e52c86216cefd73,
+		0x153e962546e32bcf,
+		0xbad16cf875f63b4d,
+		0xd7af4ce762f74ab9,
+		0x7a2fbc5a91fc6a27,
+		0xb47d8efbafde7893,
+		0x72f8ec3babc196ef,
+		0x92c63b51fae3b56d,
+		0x6bae73d21ae6c4d9,
+		0xc31e4db329dae347,
+		0x47dcb86657dcf2b3,
+		0xa5fc42da98df2431,
+		0xdb27ce1ba6e3418d,
+		0x89c4f3dba2c54fe9,
+		0x5fe3d27dc1d96e57,
+		0x4cb1862fefba7dc3,
+		0x5b79ca132fbe9c41,
+		0x7a5926143ec1ba9d,
+		0xfad394b65ac4d91b,
+		0x61c825d54ac5e987,
+		0x96df45c986b9f7e3,
+		0x7ac64fdcb7cd2861,
+		0xd71e834dc4af25bd,
+		0x39c182e1f4d2653b,
+		0x2acebf7212d563a7,
+		0x9f7bd12762da9315,
+		0xfe9a21c65fbca281,
+		0x8f2a67354a7b8fcd,
+		0xacd53fb87a91ce4b,
+		0x51846bcba893edb7,
+		0x752e389ed8a7fc25,
+		0x4e37c581f6ba2c91,
+		0xc79a8652158b29fd,
+		0xd8e7153324af396b,
+		0xac7258b763b258d7,
+		0xcb74f26ba1c69845,
+		0xb964e1d87fa896b1,
+		0xa3fd785a9d8ba52f,
+		0x68c3279eda7ec38b,
+		0xab6d7f4fea91d2f7,
+		0xda6b37432ba4f175,
+		0xbc6da79659a832d1,
+		0x8f2bd6c656892e3f,
+		0xdb2983c7647c3e9b,
+		0x3e58b42ba38f5d19,
+		0x34125eaed1a27c85,
+		0xe1f869ddcf758ae1,
+		0xfd19c28fed67a95f,
+		0xdc5239721e59a7cb,
+		0x73f5d6a32b6ed739,
+		0x18b9dc354b81f6a5,
+		0x4a56fd3a9ba62713,
+		0xe5f4783cb698247f,
+		0xf37e9a8dc57943eb,
+		0x9a1b843fe38d6259,
+		0xcb93781fe28f71c5,
+		0x936cdeb651849f23,
+		0x59a7ef632e549d8f,
+		0xc28f9eb43d469cfb,
+		0x942c3a765b4adc69,
+		0xef48b918784cead5,
+		0x1328b65eda821b53,
+		0x76934eced76428af,
+		0xe7684ac1f567482d,
+		0xce5d7a82135b4689,
+		0x79cd6e24324c76f5,
+		0xe73bd959816f9573,
+		0x23f1dc687e5293cf,
+		0xec362f7a9e56b24d,
+		0x9d61f2ebac47d1b9,
+		0xb7d8fa2dc94adf17,
+		0x69cbf7aed74cfe83,
+		0x7ac6e51438512cdf,
+		0x9137da8328643c5d,
+		0xcdab853875364bc9,
+		0xf23d4eca924a6b37,
+		0x19fa758cb14d79a3,
+		0x794c325cbe4fa921,
+		0x853bd76dce32b67d,
+		0xd3c17b61fb24c5e9,
+		0x5e672b421c29e457,
+		0x12cd3b86592af4c3,
+		0x4c7961598a6e2541,
+		0xb514cdeba851429d,
+		0x54db3e9dc845621b,
+		0x629e3afdc3285f67,
+		0xdebf635dc1297ed3,
+		0x185d6c7fef2c9d51,
+		0x5f3491e32e1f8bad,
+		0x82d396465e13da2b,
+		0xcb6478265c14ea97,
+		0x41bf83976a17e8f3,
+		0xa1f9348cba3c2971,
+		0xfc4ed8bba71e26cd,
+		0x57c826bfe821564b,
+		0xe48bd371f51364b7,
+		0x58c269a436189425,
+		0x1adecb37642ba391,
+		0x123d78c54cea91fd,
+		0x628fbc7549edaf5b,
+		0x43f29dc769f1dec7,
+		0x27d954cba9e4fd35,
+		0x2f517d8dc8f72da1,
+		0x85a4f6ced6e93b1f,
+		0x7c536fe215fd3a7b,
+		0xcaf6b93323df49e7,
+		0x9db2a5c873f28965,
+		0x1c54f3d982f597c1,
+		0xab14c5687ed8a63f,
+		0x632b8c487deac49b,
+		0x516e9d3cbaced419,
+		0x4a295d3fead1f285,
+		0x5e6179254ad623e1,
+		0xfeba78c549d8315f,
+		0xd82c7fa545d83fab,
+		0x6f2ce85874dc5e29,
+		0xea4132d982cf6d95,
+		0xf914b58ba2d38bf1,
+		0xa9d5341cbec49a6f,
+		0xdc9683e1fec6a8db,
+		0x5d74e3c21ecbd849,
+		0xb39e4c7329ade7b5,
+		0x1f69d4587bd41823,
+		0xd34e68c879c4258f,
+		0x8bfa76ca96c734fb,
+		0x4127af3dc4db5369,
+		0xa9b63d7fe3bc72d5,
+		0xc186a52fe2cf9153,
+		0xc58167a431b28e9f,
+		0x56ba12e43f95ae1d,
+		0xe617b4a43ea6cd79,
+		0xfabe2d754a89dbe5,
+		0x2b316a88789dfb63,
+		0x64f8bdedc7a129bf,
+		0xf6d41c7fe7b5493d,
+		0xad3ce911f3c647a9,
+		0x5cf749b324cb6817,
+		0x86d73e5542bd9683,
+		0x9834b6f6519e84df,
+		0x59ca8e287f92b35d,
+		0x8e23b1a87e85d2c9,
+		0x6a2e87dcbca9e137,
+		0x42f1ba7dc87aef93,
+		0x9682ba5dc67b1def,
+		0xf18a3cd328913e6d,
+		0x9615fdc326834cd9,
+		0xe6fb7dc653a86c47,
+		0xd9218fb762897ab3,
+		0x91274cecb28d9a31,
+		0xba1f54ea9e5fa78d,
+		0x49ea583cbd72c6f9,
+		0xec435611fc94e567,
+		0x9f42ac821b78f5d3,
+		0x3d8efcb54b9c2651,
+		0x976fe8d6587e23ad,
+		0xd953c14ba891632b,
+		0xbf58697dc5a46197,
+		0x7196a54cb2867fe3,
+		0x49158fbed27a9e61,
+		0x3975a6ffef4a8cbd,
+		0x59de3b621e5fac3b,
+		0x6dc5f7943d52eba7,
+		0x2e5693b54c76fa15,
+		0x91e6c4287c692a81,
+		0xf28e746a985a27ed,
+		0xb93de68dc86e375b,
+		0xc642f83fe48165c7,
+		0x435978e1f2849635,
+		0x4dc96573236794a1,
+		0xd6c8f3b65269a31f,
+		0x48b6d3a65f4dc17b,
+		0x2143a8d65a3ebfd7,
+		0xc345bfea9b62fe45,
+		0x89a7bd6dca562eb1,
+		0x194af83ed9583c2f,
+		0x96d7c1b1f64a3c8b,
+		0xf9dc8672163d4af7,
+		0xc74ea28436418a75,
+		0x54b96c18735498d1,
+		0x8e71faca9136a74f,
+		0x4d31eb887f28c5ab,
+		0xe28f451bae3cd529,
+		0xa941d38dcb2fe395,
+		0xd13c9bffeb6524f1,
+		0xc459de321b47326f,
+		0xa74bc196593841db,
+		0x15f824b7672b5f39,
+		0x7fd9ec39842d6ea5,
+		0x87625efcb6529d13,
+		0xbf4863adc1239b7f,
+		0xe29fa57dcf15a9eb,
+		0x7943ce61fe18da59,
+		0xcad63e932d1be8c5,
+		0xda39f1465b1ef843,
+		0xbd8416987b13269f,
+		0xb2f48e7a9a27461d,
+		0x68a3fe9dc81a5479,
+		0x6bd4527dc61b73e5,
+		0xbf52ae7ed51e9263,
+		0x37fc5dbfe43291bf,
+		0x24f738665314af2d,
+		0x1b3adcf32df4ce89,
+		0x7589bed43ae7dcf5,
+		0xca1d7fe659eafc73,
+		0xdc71b84767ed1acf,
+		0x4253dcecb8f13a4d,
+		0x5e2739ced6f348b9,
+		0x56da127fe4f86927,
+		0x8edc497214fb8793,
+		0xb54e168432db85ef,
+		0x172c6af651efa46d,
+		0xda2c19f76fe2c3d9,
+		0x3dac2bfa9cd6e247,
+		0x1c38457a9ad8f1b3,
+		0xc8f51a7edaec4231,
+		0xb5783adfe6bc2f7d,
+		0xeba47f3327c14de9,
+		0xa5346b1328e36d57,
+		0xf6d13e2654e67bc3,
+		0x1d2fca9873ea9b41,
+		0xe29854c761eca89d,
+		0xd189ec587eafc81b,
+		0x5a3842ecbdc2e687,
+		0x4cb5e73edab5f6e3,
+		0x9c8b71a43cda2761,
+		0xdc2948f438ca24bd,
+		0xa523b74768ce543b,
+		0xa841d3ea98d162a7,
+		0xd3f1895cb7d69215,
+		0xcaf6543cb3c69f71,
+		0x95841f2cb1a78ecd,
+		0xc8bda31fef8cad4b,
+		0xa37d86b21e8fdcb7,
+		0xbc6d1fa54da3fb25,
+		0xb2f1a7865dc62b91,
+		0xb86da7c659a728fd,
+		0xcd4238ea97ac386b,
+		0x83e1d9ccb5ae46d7,
+		0x3c59b86fe6c19745,
+		0x2631bd91f3c495b1,
+		0xbc6349f213b7a42f,
+		0xdfb28ea541a9c28b,
+		0xbf37d1854e8bc1f7,
+		0x21d389554b8edf65,
+		0xc4ef37598b942fc1,
+		0x6ca2ef7cba962d3f,
+		0x864f751fe6873d9b,
+		0xb783e461f68b5c19,
+		0x826bf4d2149e6b85,
+		0x6d7ac39545a289e1,
+		0xe2c357176293a85f,
+		0x8ad3c4687185a6cb,
+		0xd315a4698f7ad639,
+		0xcbe8a4da9d7ce4a5,
+		0x168347adcb8ef513,
+		0x8395cfbfeb94237f,
+		0x4c7ead521a8642eb,
+		0x452cbe843b8a6159,
+		0x7dc9a1f4347a6fb5,
+		0x23edaf6a957d8e23,
+		0x1de5c4fba3619c8f,
+		0x8512e47dc1639afb,
+		0xb8495fadcf45db69,
+		0xa76e3121fc48e9d5,
+		0xd52349721d6cf953,
+		0xe6f591c43b5e17af,
+		0x579ed4876b83472d,
+		0x73dc2fbbab764589,
+		0xcefda49cb86974f5,
+		0xbe91a3fed56c9473,
+		0xf5c7394cb35d82cf,
+		0x61cb2a51f372b14d,
+		0x4c873d932153cfa9,
+		0x46ca21843f46de17,
+		0xeb2f4ca65c49fd83,
+		0xedf152b7694a1bdf,
+		0xcb9f3429894f2b5d,
+		0x728f13ced8524ac9,
+		0x61bfd38fe9456a37,
+		0xe96bc241f54978a3,
+		0xf29a18c4365ca821,
+		0x7cb65e35423ea57d,
+		0xa1d589287251c4e9,
+		0x5317c6ba9f24e357,
+		0xb71ce8da9d47f2c3,
+		0x719ed63dcd6b2341,
+		0x8da3479fea4c319d,
+		0xb9a8273dc72d3ef9,
+		0x5ba876d21a325e67,
+		0xe1b39cf548257cd3,
+		0xba892c5876389c51,
+		0x4de398f7632b89ad,
+		0xf3524bd9813ec92b,
+		0x1a46e7dcbf21e897,
+		0x147def3cbc14e7f3,
+		0x7d32cba1fd392871,
+		0xb5dfc7443b1925cd,
+		0x784ef2b76a1d354b,
+		0x853e9a27691f53b7,
+		0x2c5d47acba149325,
+		0x3fb1de8dc736a291,
+		0xd2f36c9ba3168fed,
+		0x15a749eed219ae5b,
+		0x65f1d2ea9efabdc7,
+		0xd72e94521bdfec35,
+		0x37d6c8e65df42ca1,
+		0xb7e82d165be63a1f,
+		0x138d2c465af8397b,
+		0x67f8214a96fb48e7,
+		0x412367fcb4fe7865,
+		0x52f91e7ed5f296c1,
+		0x84e7512ed2e4a53f,
+		0xcb579a4212f6c39b,
+		0xd8c29fa652fad319,
+		0xd28ca6e54fdce185,
+		0x2b39e6d659acefd1,
+		0xe17f54298ac32e4f,
+		0x1d72c65a98d53eab,
+		0x7ebda62dc7e85d29,
+		0xa298e141f4eb6c95,
+		0x693fc57325cd7af1,
+		0xce2bd69434d1a96f,
+		0xe47b2d3652e3a7db,
+		0x15d2ab7981e6d749,
+		0x4afbde887fc9e6b5,
+		0xaf3e17ca9dbcf623,
+		0x79842dfdcabe148f,
+		0xc9762a4fe9c243fb,
+		0xcfe426a21bd75269,
+		0xf189c42438c971d5,
+		0x91af6c8656cb8f43,
+		0xa9387fc653ac7d9f,
+		0x4f1dc79984b2ac1d,
+		0xf5b376cba1b3dc79,
+		0x6c59831cbf96dae5,
+		0x75a9fb3fedb9fa63,
+		0xb8f35d432d9c18bf,
+		0xe2361cd54baf283d,
+		0xed7ba2165bc246a9,
+		0x473fd8aa9ac58617,
+		0x6ad7419cb6ca9583,
+		0x1537289cb49a83df,
+		0x951248adc39ea25d,
+		0x57426d91f3a2d1c9,
+		0x1b85e7d431a4df27,
+		0xfa1ec6332d86fe93,
+		0xe79fb1654b781cef,
+		0xa7becd265a8b2c6d,
+		0x837bd1e7687f3bd9,
+		0x694e12aed9a26b47,
+		0xa96b571fe6a579b3,
+		0xb5d7c4e1f5b8a931,
+		0xad4b53f2137ba68d,
+		0xac58f4e4327db5f9,
+		0xe421a9b982a1e467,
+		0x2cf96e887e85f4d3,
+		0x29145edcbea92451,
+		0x18375c4cbc7932ad,
+		0xd5f3426fea8d512b,
+		0x4123ac6ed96e4f87,
+		0xdb7f8a3219827de3,
+		0x2f819d7437859d61,
+		0x75af86d543568abd,
+		0xab5214d87269ca3b,
+		0x53a4cb29815ed9a7,
+		0xa2e758ccbe72f915,
+		0xcf4eb98ede752981,
+		0xce16b871fb5726ed,
+		0xa67294d21d7a365b,
+		0xe3794ad32a6d54c7,
+		0xf73cd9b76a7f8435,
+		0x6c73e24cb87493a1,
+		0x1fd2a79cb576a21f,
+		0x6712bd3dc247af6b,
+		0x2f36a8bdc149bed7,
+		0xe2453c9cbf3ced45,
+		0x956abe254f632db1,
+		0xdf5b81e54d653b2f,
+		0xf32e91765d463a8b,
+		0x73de1f976b3a49f7,
+		0xa4c7e31cba3d6975,
+		0xdc925a6cb64f87d1,
+		0x13bf8e9ed752a64f,
+		0xba2e47d1f235c4ab,
+		0x72c3e9421358d429,
+		0x482bcf37614be295,
+		0x9f57dce76d4ce2f1,
+		0xa1f4d72a9d52316f,
+		0x2dfca6998a243fcb,
+		0x61a9785dcb275e39,
+		0x165b9d4fe8296da5,
+		0x7c621d31f74d8c13,
+		0x5a48b962152e8a7f,
+		0xacd986f54532a8eb,
+		0x9ec4b5d87324d859,
+		0xdc84a35a9128e7c5,
+		0x12f436da9e1bf743,
+		0xf82db57bac2d159f,
+		0xad624c7fec32451d,
+		0x374e95b1fc145379,
+		0xdf29cb443b1872e5,
+		0xeab32d865a2b9163,
+		0x3789a1e5451b7eaf,
+		0x9125fba8751f9e2d,
+		0x86d34c1ba412cd89,
+		0x1937426ba214dbf5,
+		0xe345bcfbade6fb73,
+		0x1b9f584edbe819cf,
+		0x945e36721bfc294d,
+		0xfd34eb632aef37b9,
+		0xab418fc65bf36827,
+		0x3124ea687af58693,
+		0x43eba7fa95d784ef,
+		0x4a7dc18a94fba36d,
+		0xbc1d876ba3feb2d9,
+		0xc4ab895ed3f2e147,
+		0x746bde5321d4efa3,
+		0xad7c8b965ed83f21,
+		0x7c28d9654bc92e7d,
+		0x8b41f67658db3ce9,
+		0x43ec61d989df4c57,
+		0x28f7ac3cb8e27ac3,
+		0x1ac5673ed7e69a41,
+		0x875d6a31f3e6a79d,
+		0x1bfa7e9324eac71b,
+		0x76b8c1f432ced587,
+		0xb4dca13872c1f5e3,
+		0xf236e5da9fd72561,
+		0x1b2fd6e98ec723bd,
+		0x8bae7f4a9cda523b,
+		0x2bc867afe9cd51a7,
+		0xb7356f8dc7ad6ef3,
+		0xa149c5b328c39e71,
+		0x543dbe1325a48bcd,
+		0x6bea1f7653d7ac4b,
+		0xacedbf1652c9dab7,
+		0x2bed149981bdea25,
+		0x75e86facbfc32a91,
+		0x2d9658fcbca427fd,
+		0xd1e9a371fdc8376b,
+		0x4acb85721cba45d7,
+		0x84cb61a32abd8645,
+		0xc17bf83657af84b1,
+		0xd72b4cf987b4a32f,
+		0xdb8a15ea94a5c18b,
+		0x5fb2794ba296bfe7,
+		0xadb372fdc19ade65,
+		0xcdb9f45bae7bfdc1,
+		0xf876ec354e912c3f,
+		0x3fed6a432e843c9b,
+		0xcea81b254da75b19,
+		0x86b15f954c9b6a85,
+		0xf9ce74bba69c78e1,
+		0x8947a61cb48e975f,
+		0x7d1fc56fe482a5cb,
+		0x5dc92a31f2a6d539,
+		0x94fcbd221298e3a5,
+		0x5eb98717629bf413,
+		0xc87941e65e8d127f,
+		0x4513b8c87d8241eb,
+		0xdf2e473bac835f49,
+		0xa8ef57ddca876eb5,
+		0x692481afe97a8d23,
+		0x563bda4fe45c7b8f,
+		0x3e79cf82145e89fb,
+		0x6c2f57d43472da69,
+		0x153fbde76274e8d5,
+		0x731b9feba179f853,
+		0x567e24998e5b16af,
+		0x72cd83fbac7e362d,
+		0x93fa8d5fed715489,
+		0x932c45ffeb8473f5,
+		0x3ca7d8e21c689273,
+		0x729db1f4375981cf,
+		0x2ae736f5465b9f3d,
+		0x9751ad47634fbea9,
+		0xef297c5ba463ed17,
+		0x37fad2ecb165fc83,
+		0x29d145acbe471adf,
+		0xb3c8d911fe4b2a5d,
+		0x84ae57c21d4e38c9,
+		0x857ed6154d516937,
+		0xf25ea7c76c5487a3,
+		0xc8fa71da9b58a721,
+		0xad61847cb639a47d,
+		0xb4df256ba54cb3e9,
+		0x8f2b65adc34fd257,
+		0x92d3c47fe264f1c3,
+		0xde745af765783241,
+		0x3f5719d54e372f8d,
+		0xa87fecb65c2a3df9,
+		0x62d415a98b2e4d67,
+		0xcd437b1a9a417bd3,
+		0x6437b2ceda349b51,
+		0x31b28f9fe62598ad,
+		0xe58a31d1f539c82b,
+		0xb348ea72142cd697,
+		0xfa493dc6542ed6f3,
+		0xe5432dfba3542671,
+		0x5bc932698f1624cd,
+		0x48e5b37bae19534b,
+		0xd37c821bad1c52b7,
+		0xc37165eedb3e8125,
+		0xf87264cfea329f81,
+		0x7b6e59c327138ced,
+		0xc5972ba43716ad5b,
+		0x718baed65418dbc7,
+		0xf7ce29d9841ceb35,
+		0x3bdfe5a9832ef9a1,
+		0xb3d4186bade2391f,
+		0x34fb52edcdf4387b,
+		0x6f4b921edbf846e7,
+		0x645f82321cfb8765,
+		0x6cd2a49439fd85c1,
+		0x7da41e3657de943f,
+		0xa4c3e2b876f3c29b,
+		0x8349de1ba5f6d219,
+		0x78159e3ba2e8df75,
+		0x274651dba2c9fed1,
+		0x54f16b3baebc1d4f,
+		0x6f9be5132fe13dab,
+		0x6ac521943de45c29,
+		0x1b7d9e843ce76b95,
+		0x782d693658da79f1,
+		0x1fa3ceb875dc986f,
+		0x61b329e984cf96db,
+		0xf358b6ddc5e2d649,
+		0x538129d1f2d6e4b5,
+		0x4357ea2214d9f523,
+		0xf829e13652db138f,
+		0xb8ed32165ead32fb,
+		0xb52693498ed25169,
+		0x623a49598ab36fc5,
+		0x82935eacbac78e43,
+		0x8361ca7ed5b87c9f,
+		0x4d38c971f5ac9b1d,
+		0x3564d8c214afcb79,
+		0xfce8a56434b2d9e5,
+		0xeca632b872c5f963,
+		0x52c918e762c817bf,
+		0x75a12df98fab273d,
+		0x7fe59b498dbe35a9,
+		0x5c71b2ffedc28517,
+		0xd8e3c9a1fbc59483,
+		0xe4c56a8219a682df,
+		0xac5fd94437b9a15d,
+		0xe7a4c6d4347cafb9,
+		0x3f547217649fce27,
+		0xd5a9267984a2fd93,
+		0xf56c24eba2951bef,
+		0xdb3186fdcf982b6d,
+		0x381e7421fe7b3ad9,
+		0xb4ce39a21d9e5a47,
+		0x3f6b27954da178b3,
+		0x5afb97c76cb5a831,
+		0x97b8f2154796a58d,
+		0xe567b24ba578b4f9,
+		0x46829e5cb49cd367,
+		0xfc89765cb48fe2d3,
+		0xce746581f4b62351,
+		0x5f8a1dc5429631ad,
+		0xfb459dc43e784f1b,
+		0x7fa1dbc43d6b4e87,
+		0xb2cd6ef65a7d6ce3,
+		0xb45319ebab829c61,
+		0x15aed64dc76389bd,
+		0x857abd2fe576c93b,
+		0x35a1d6e1f359d8a7,
+		0xf34b8c93247ce815,
+		0xa2cf1935437ef681,
+		0xcde9fa18718325ed,
+		0xf1e5827a9f87345b,
+		0xf7db365bae6953c7,
+		0xf15637acbd7c8235,
+		0x832c1b5edb6e82a1,
+		0x9f2a74bdc7518efd,
+		0xf3cb6e421853ae6b,
+		0xdaeb81432645bcd7,
+		0xb14e6df87369ec45,
+		0x58ea3c18735cfab1,
+		0x7f3c65aa936e1a2f,
+		0x16a7ed9dcf52398b,
+		0x91e438ddcd3548f7,
+		0x18b79431fd3a6875,
+		0xa8be95132c4b86d1,
+		0xd7b3e6432a3d954f,
+		0xd179f8c76851c3ab,
+		0x6dbefc8ba865d329,
+		0x62c78efcb647e195,
+		0x7cdbf85ba348dfe1,
+		0x64b91e8dc24b1e5f,
+		0x7c63e52bad3f2ecb,
+		0xc75d83b21f425d39,
+		0x8b97c2a43e246ca5,
+		0xf5c9db876d498b13,
+		0x2bfeda765a2b897f,
+		0xf23c7a99862d97eb,
+		0xfe4b13ddc831d759,
+		0x812796bed723e6c5,
+		0xd7b9481fe528f643,
+		0xe743a863253a149f,
+		0xf2d84318725c341d,
+		0x4fd2a9776e1f4279,
+		0x237bce5a9d2371e5,
+		0x784ceb5bac168f53,
+		0x297513dcb9167daf,
+		0xa43568ffe71a9c2d,
+		0xb67153e1f51ebc89,
+		0xce28f1743721daf5,
+		0x34da6e965614fa73,
+		0x23b86ad8742618cf,
+		0x4bfde23a931a284d,
+		0xe1b49d387efc36b9,
+		0x7c8635dbacfe5627,
+		0x84b6e32edcf18593,
+		0x9b746d3dc9d483ef,
+		0x3678ecf219f7a26d,
+		0x57da426436f8b1d9,
+		0xa98fd2e545ebcf37,
+		0xed9f23b764cfdea3,
+		0x384fc6dba6f53e21,
+		0x2e83975ba1f52c7d,
+		0x413e9c8bafd73be9,
+		0xe1a637b1fdec4b57,
+		0x85763be21bde69c3,
+		0x637d4ce65ce2a941,
+		0x56e98dc548e3a69d,
+		0xe821da9658e7c61b,
+		0xdcf8e45a95ead487,
+		0xd184f35a95cbd4e3,
+		0x827a3fccb4cef361,
+		0x7c5e8ba1f1e432bd,
+		0xebc9da5542e7513b,
+		0xea79f1332ec84f97,
+		0xe6a52cf54cba6df3,
+		0xe83f7ca65abe8d71,
+		0x1c2f4ea767b18acd,
+		0x15e286aa97d3ca4b,
+		0xb3d1527fe4c5d9b7,
+		0x94e826d1f4cae925,
+		0x5f467de324bcf791,
+		0x15e2b96543ae16fd,
+		0xb94efa3981d2356b,
+		0x46f21dc98fb654d7,
+		0x8ca521da9eca8345,
+		0xb2e48f7a9dac83b1,
+		0x61432a8dc8ad912f,
+		0x5a61c98fe691af7b,
+		0x92c3eb521693bde7,
+		0xfe8c47a324a7ed65,
+		0xd9c4e3b65498fbc1,
+		0x3248e5b8749c1b3f,
+		0x8659e4b8718f2a9b,
+		0xab29176dcfb35a19,
+		0x7fb519eedeb46985,
+		0x6a89d721fca987e1,
+		0x8ce5f6321c8b965f,
+		0x893b54d3287e94cb,
+		0x4d73285768a1d439,
+		0x6c9b23198794e2a5,
+		0x59ae7cfcb6a8f213,
+		0x175dae9dc49a217f,
+		0xbd562f9dc17a2fdb,
+		0x6b95fe4dcd7f3e49,
+		0x39867fd21f826db5,
+		0xe736cb254e968c23,
+		0xf9da48643c567a8f,
+		0x2bd79fc5475a98fb,
+		0xd2eb678ba75ec869,
+		0x7a5e194cb681e7d5,
+		0xb1ec842ed694f753,
+		0x26df154fe38715af,
+		0x72c6ea82148a352d,
+		0x2d6f79b6517d4389,
+		0xda6b38954d7e62f5,
+		0xf89b514bae849173,
+		0xeb6912f98a547ebf,
+		0x451df87cba579e3d,
+		0x2d6cb7afe648bda9,
+		0x597e8b61f65edc17,
+		0xae6f5cb32761fb83,
+		0xfec1b274356419df,
+		0xbe57d2198367295d,
+		0x261a4399815a37c9,
+		0x96257b4baf4d5837,
+		0xd264c91cbd4f76a3,
+		0x485263bfed74a621,
+		0xed82a761fb45a37d,
+		0xe4d596b21a47b2e9,
+		0x1af9e764394bd157,
+		0x18de23b6564cdfb3,
+		0x4691783ba8742f31,
+		0x4b2fcd3ba3542e8d,
+		0x697ef4acb1463cf9,
+		0xf567ba1edf2a4c67,
+		0x4de937c1fe2c6ad3,
+		0xb71d94c32d3f8a51,
+		0x85bad3f54c3297ad,
+		0x4dc5f2876a35c72b,
+		0x7d8e2fc76a28d597,
+		0x6ecd7aba972ad5f3,
+		0x81f637ccb63df471,
+		0x83fb614fe65123cd,
+		0x169ca7d1f136524b,
+		0x93e72f85423851b7,
+		0xcad39b854e2a7f15,
+		0xe92da4665d2c7e81,
+		0xb2946c86591f7bed,
+		0xf257b6e98912ac5b,
+		0x87dc932cb814dac7,
+		0xeb9af67ed718ea35,
+		0x7ba6d8ffe52bf8a1,
+		0xf6bc5985463d281f,
+		0xfd561e798521367b,
+		0x8abc617a921345e7,
+		0x7dac6fea9ef78465,
+		0xe2341dc87df984c1,
+		0x24a31de98aeb923f,
+		0xd345e89dc7fea19b,
+		0x9427abedc6d1bef7,
+		0x6fc849a218f3de75,
+		0xaed4617435e6fcd1,
+		0x8efd7bc765e91c4f,
+		0x7b4c59e763fd2cab,
+		0x94efd75981ef4b29,
+		0x928e537cbfe26a95,
+		0x534ec9fcbcd578f1,
+		0x4f25619febd8976f,
+		0xce94f27218ea95db,
+		0x69b1ae5328dec549,
+		0xb1485d9768d1e3b5,
+		0x17c4b8aa98d6f423,
+		0xbcf6429ba5d7128f,
+		0x539d281ba4d931fb,
+		0x41d39cacb1dc3f59,
+		0xe648c39cbdaf4ec5,
+		0x95fb38e21fc28d43,
+		0xd96135732dc47b9f,
+		0xe326a9554bc79a1d,
+		0x72ba619546dbca79,
+		0x129a364876adc8e5,
+		0x8a42fd1cb7c1f863,
+		0x34b7169ed5c416bf,
+		0xd2ab6191f4c8263d,
+		0x649e832212db34a9,
+		0x34b1869652cd6417,
+		0xdc78bf965ebf7283,
+		0x4fe892d76ca381df,
+		0x8b3d5ce87ba59f4d,
+		0x682d5b3dc786aeb9,
+		0xbf417dafe69acd27,
+		0x371cdb81f58dec93,
+		0x8f9257a436921aef,
+		0xa12ef48435b42a6d,
+		0x83e791c652b638d9,
+		0x6d1af72981cb5947,
+		0x963ed7298f9d67b3,
+		0x2c63fe8cbdaf9731,
+		0xcdf897afec92a48d,
+		0x82b9f3cfea85b3f9,
+		0x9bdc48a21ba9d267,
+		0xbae7c2f5478ae1d3,
+		0x139ade46568cef41,
+		0x695fa13875812f9d,
+		0x17f8e34ba3954e1b,
+		0xfab6875dc1a64d87,
+		0x4e2985adcf796be3,
+		0xbd49e171fe7d8b61,
+		0x35d8b9e21c5f78bd,
+		0xd3c986754d72c83b,
+		0x7bd5e8643b84d6a7,
+		0x2dcb13876a89e715,
+		0xd2763e4ba67bf581,
+		0x319b265ba57c14ed,
+		0x24f5371fe691435b,
+		0x65a27b91f19452c7,
+		0x385cd21542a98135,
+		0xd642f1743e5a7f91,
+		0xc2e697143b4a7cfd,
+		0x8b63daf65a4f9d6b,
+		0x742ef6998952cbd7,
+		0x1ba5493dc976eb45,
+		0x3ebfc8aed657f9b1,
+		0x9cb3f85fe56b192f,
+		0x3268b942145e278b,
+		0x4fa8dec6538146f7,
+		0x1c3b7f9ba1938675,
+		0xd2a58fea9f4785d1,
+		0x4fe75b698d5a934f,
+		0xbc5d23498c4d92ab,
+		0x58b917eeda5fc129,
+		0x6dc9f35fe942df85,
+		0x518cadb32845fde1,
+		0xc7a6fe1437481d5f,
+		0xb74825a765492dcb,
+		0x15d3fc29825e4c39,
+		0xa29763edc2416ba5,
+		0x637dfabdcf458a13,
+		0xd1fea39dcd25987f,
+		0x3b7a5891fc2896eb,
+		0x65b37fa21b2dc659,
+		0x678fb5c4392fd4c5,
+		0xe4917cb98a62f543,
+		0x49b7cdeba846139f,
+		0x83dcf72cb759431d,
+		0x39ba781ed53c4179,
+		0x8af6d51cb12c4fd5,
+		0x4a3612cedf218e53,
+		0x743a6db32e137caf,
+		0x7586d2c54e169b2d,
+		0xd6b7ef354d17cb89,
+		0xea482d77681bc9f5,
+		0x3467bd2ba81fe973,
+		0x3159fadcb82317cf,
+		0x92fd4b1fe816274d,
+		0xc4189231f41835b9,
+		0x6d548ea4341c6527,
+		0xf1eb2597621e7493,
+		0x1b9f2c754bcd72ef,
+		0x1fed2a887cf3a16d,
+		0x8c1a57b768e4afc9,
+		0x7ef3812ba9f8ce37,
+		0x2dea861cb6f9eda3,
+		0x2a56cfdcb6edfc21,
+		0x12af7c5436f12b7d,
+		0xcf615a7325f43ae9,
+		0x9a2f34d762f84a57,
+		0x543ab8e871fa68c3,
+		0xd18c4af87fed9841,
+		0xca941ef87bcf859d,
+		0xf465e71edae3c51b,
+		0x6d248b51fae5d387,
+		0x6e32adf219c8d2e3,
+		0xb15e639548dbf261,
+		0xc6deb87656ce21bd,
+		0xa4e3b2d986d14f2b,
+		0x286db73ba2d34e97,
+		0x691f42dba1d76cf3,
+		0x9ea1234cbfda8c71,
+		0xc7894151feab79cd,
+		0x427b39e21dcfa94b,
+		0x542efab43ac2d8b7,
+		0x9fcba3254ac6e825,
+		0x7dfc246657c8f691,
+		0xbf29c4d986ba15fd,
+		0xb86e2c7ba5ce246b,
+		0xdc56214fe4c153d7,
+		0x61283da1f1d68245,
+		0xeadc716543d782b1,
+		0x7cf541243da98e1f,
+		0xae81fb543d8c9e7b,
+		0x135ec9d5498face7,
+		0x46da25f989a2ec65,
+		0x427dc6ecb795fac1,
+		0xf6a8193ed6b81a3f,
+		0x439ec5a1f4ac289b,
+		0x6bd7c3f325be4819,
+		0x359cfeb543c16785,
+		0xa31e84b872b486e1,
+		0xb2e3cd776ea7945f,
+		0x47e91df76e7893cb,
+		0xef41dc5bab8dc239,
+		0x38bef27dc98fd1a5,
+		0x14297fadc783def1,
+		0xb6d4af7328951e6f,
+		0x462f98e435872edb,
+		0x4132fa87658b3d49,
+		0x4def6b38728e4cb5,
+		0x42519abdc4a18b23,
+		0xdac9548cbe63798f,
+		0xf6dbea7dcd6597fb,
+		0x169db481fd5ac769,
+		0x57d9fe621a7bc6d5,
+		0xfd75ce432a8fe653,
+		0xf431ce27698314af,
+		0x8fd62c3ba897342d,
+		0xa6378e1dc57a4289,
+		0x79e8db2dc38b61f5,
+		0x25349e6dc18d7f63,
+		0xdb2f765dce517dbf,
+		0x3f4de8921f649c3d,
+		0x6bfa43132e45bca9,
+		0xf318d6c54c59db17,
+		0x23a49877695cea83,
+		0xb6d314e9864ce7df,
+		0x256ea47dc973285d,
+		0x2b6fc9dfe47536c9,
+		0x15e26431f28a5637,
+		0xa96fe8d2126c75a3,
+		0x7c34bf87637e9521,
+		0x2a597e476f51a27d,
+		0x89eb5a287d54b1e9,
+		0x85bf3c1a9b36cf47,
+		0x193678bba948deb3,
+		0xb97e621dc85bfd31,
+		0x75ba31ffe64f1c8d,
+		0x4be53fc217523bf9,
+		0xd8473fa328354b67,
+		0x5be614a8724869d3,
+		0x8716d59ba24c8951,
+		0x8de192387f2e86ad,
+		0x546f1cebae41c62b,
+		0x2b8547ffec23d497,
+		0x1265934fea27d4f3,
+		0xb615a7f32b4af371,
+		0x7f29c6b6584b12cd,
+		0x9daef828785f314b,
+		0x235b67ea96324fa7,
+		0x976a1c5cb4367e15,
+		0x86d3125dc2397d81,
+		0x95f4871cbf197aed,
+		0x8dce1461fd1e9a5b,
+		0x4d27c1e43e21d9c7,
+		0x1c8fb2476c14e935,
+		0x9c4d38a65b26f7a1,
+		0xa6c73de9893a271f,
+		0x35879dcba81d257b,
+		0x3581e7acb61f34e7,
+		0xf3d9578fe7128365,
+		0x1e9348b1f42683c1,
+		0x4c26b8d65428913f,
+		0x956ba7432de79f8b,
+		0x7e4cdf2439ebadf7,
+		0x261f7a3549efcd75,
+		0x4beac26878e3fbd1,
+		0x56fcb3eba8e61b4f,
+		0xf52369eed5f729ab,
+		0x3154c76fe5fc4a29,
+		0xc236d5a213fe4895,
+		0x743e98b654e287f1,
+		0x863dc45871e3956f,
+		0xa64d8f965fe694db,
+		0x8ac52f187deac349,
+		0xa352efb989ecd2b5,
+		0x73cf29dcb9cfe123,
+		0xcbf9d62fe9d4218f,
+		0xc2b36d4217c52feb,
+		0x948a3fd326d83e59,
+		0x9eb231a763ea4dc5,
+		0x1b9dc3a982de7c43,
+		0x614279f982d17a9f,
+		0x6d7cfe998fc4a91d,
+		0x16a24cdcbed5c879,
+		0x418dc2e1fab9c7e5,
+		0x946d73a21abce763,
+		0x59c3ab73279de4bf,
+		0x9c52631879c4253d,
+		0xf635c9a987d643a9,
+		0x5dfa2cecb5da6317,
+		0xaf63417cb4dc7183,
+		0xb9cf846ba19b6ecf,
+		0xb9356e4dcfa19e4d,
+		0xa59ed4321f83adb9,
+		0x5dcbfae43ea6dc27,
+		0xa291e7854ca8eb93,
+		0x62c9a755467ad8ef,
+		0x32547be987af196d,
+		0x5e68f37dc6b237d9,
+		0xabc3152fe3c65847,
+		0x3c6248e1f2c976b3,
+		0xefa3c4d324bc9631,
+		0xb26e7df541ae938d,
+		0x873cad465e81b2f9,
+		0xe153d7c98ea4d167,
+		0x64c93d587a86dfc3,
+		0x3ec5862cba89fe41,
+		0xe49f7a1dc67b1e9d,
+		0xb198a36fe68f3d1b,
+		0xbd32968216a24c87,
+		0x1e38ab4324956ae3,
+		0x4c9fbe1653b98a61,
+		0x4f98ab76516a87bd,
+		0xc6df24598f6ea73b,
+		0x94fcda1cbe81d5a7,
+		0x752f1acedc94e615,
+		0xa6941f2feb97f481,
+		0xa4879f532a7913ed,
+		0xde825fb5498d325b,
+		0xcf6eb126568f41c7,
+		0xc15fb36ba6937f25,
+		0x7125f3ecb3857e91,
+		0xe5c26f9ba1567bfd,
+		0xa638fecedf4a9c6b,
+		0x24c6e8d1fc4ebad7,
+		0x5f6794832d71ea45,
+		0xf975d4143c64f8b1,
+		0x4eb781965b67182f,
+		0x6d4a1fe8795a268b,
+		0x6d74c1fba86c35f7,
+		0x96b382edc38f6475,
+		0xb6d7253fe57384d1,
+		0x6147352fe176924f,
+		0xfa764284325791ab,
+		0x615fc8a43e4abf19,
+		0xcb2fe8654b3dce85,
+		0x8e41fcd87a52fce1,
+		0x5fba148a9a641c5f,
+		0x8234691ed8462acb,
+		0xdc9b532fe75a4b39,
+		0x38a624b1f63d49a5,
+		0x4b1af783265f7913,
+		0x7ad4e2665342967f,
+		0x8f5a6398713495eb,
+		0xe98423b87f28c459,
+		0x352e1a498e2ad3c5,
+		0xd1c9eb6bab5de243,
+		0x1746af3edb53129f,
+		0xc24d6981fa56421d,
+		0x829ae6c21a273f69,
+		0x48e59bc437294ed5,
+		0x43ecb7d9862c7d53,
+		0x2c9b81a8732e6baf,
+		0x9c54638cb1439a2d,
+		0xa73f251cbf14ca89,
+		0x7d4156ccbd17c8f5,
+		0x83415bd1fc1be873,
+		0x1e594733291be5cf,
+		0xaed39f587b31264d,
+		0x94cd38a87a1534b9,
+		0x2c9af47cba196427,
+		0x2e54176dc61b7293,
+		0x9327cdbba42b71ef,
+		0x3876a2dcb21e8f5d,
+		0x5182cedcbdf1aec9,
+		0x8afc2eb21ef4cd37,
+		0x49e61c732bf6eca3,
+		0x76f84c165ae9fb21,
+		0x7cba912658fc1a7d,
+		0x39ec1a8876df28e9,
+		0x672539adc8f24957,
+		0x2b13e46ed4f567c3,
+		0xdb2384ffe3fa9741,
+		0x47fd5b3212fb849d,
+		0xc6ab189652fea41b,
+		0xf316bce65fe1d287,
+		0xe2a3c8187bc5d1e3,
+		0x54e9b1a98ac7ef51,
+		0xb3c81a7a97c81fad,
+		0x37d5e62ba7dc3e2b,
+		0xc54b837fe5cf3d97,
+		0x6c3472a217d26bf3,
+		0xc7e4a85434e58b71,
+		0x2bef8ac542e678cd,
+		0xe8fa315761eca84b,
+		0x1c6b79e65faec6b7,
+		0xb29df43badc1e725,
+		0x748f16eedbc4f591,
+		0x1398a7bfe9b714fd,
+		0xb287af4219da236b,
+		0x2b1f6c5438bc42d7,
+		0x3ae7958768cf7145,
+		0x47a691c985c37fa1,
+		0xdec7123a93b58d1f,
+		0x7edf34bba1c69d7b,
+		0xa74bfe6dcf89abe7,
+		0x823be591fc9edb65,
+		0x9e6df2c43da2f9c1,
+		0x5c1e3d954cb5193f,
+		0x6735db954ac6279b,
+		0x1e9c8d3768cb4719,
+		0x91537d2ba7bd4685,
+		0x5e47ca2cb4af75e1,
+		0x16ae493ed4b2935f,
+		0x12c58b31f1a592cb,
+		0xfac7652542b8c139,
+		0x71d6ca832e7acf95,
+		0xe82a6c554a7bcdf1,
+		0xf9528be87b921d6f,
+		0xa96814f879842cdb,
+		0xb674ea5ed8a73c49,
+		0xa3d24b8fe6894ab5,
+		0x92e4c3a1f59d7a23,
+		0x673c9f82139e678f,
+		0x71cab8f5438296fb,
+		0x31a6b2e871a4c569,
+		0x73ab98c76f78c4d5,
+		0xa7ce82da9d8be453,
+		0xbaec7569896ce2af,
+		0x6c12493feb91432d,
+		0xd72b51c1fba54189,
+		0x657cfd2219874fe5,
+		0x8c36a973258a7e63,
+		0x28dcfb35435a6cbf,
+		0x49fd5ae8726f8b3d,
+		0x647f53b98162cba9,
+		0x36e81cdcbf65da17,
+		0x6eda542dcd57e983,
+		0xe876294dca49e6df,
+		0x1bc693532b6e175d,
+		0xb17d2fe54b7135c9,
+		0x6b94cea98b946537,
+		0xa3f5e16cb96874a3,
+		0xf514763dc67b9421,
+		0xf34265ecb35c917d,
+		0x5ac3d81cb14e8fd9,
+		0x2467fe3edf52ce47,
+		0xb5fc86d21f45edb3,
+		0xe953d6c54d58fc31,
+		0x12b37da65c4a1b8d,
+		0xc7145987684d2af9,
+		0x41ead72dcb514a67,
+		0x2617fa9dc95468d3,
+		0x297c415fe6479851,
+		0x2a7c6d31f23985ad,
+		0xe69253b2134da52b,
+		0xa72dc896514fc397,
+		0x1964df287e54d2f3,
+		0x472bc8ea9d46f271,
+		0x61b4d32a9b4821cd,
+		0x5b269aedc94a2f3b,
+		0x3e2f567dc82d3ea7,
+		0xc87be351f9427d15,
+		0xa57e918329347c81,
+		0x72c48594342579ed,
+		0x35d82eb76328a95b,
+		0xd398c147612db8c7,
+		0x2386fbaa9e1fd835,
+		0xd37851ccbd23f6a1,
+		0x67f54beedc37261f,
+		0x29a18361fc19247b,
+		0x6e83d1f32a1b43e7,
+		0xeafc1bd54a1e7265,
+		0x8ae39db8794382c1,
+		0xa6b3c18a96148e2f,
+		0x4c8219dba3159e8b,
+		0x4cae753cb218acf7,
+		0x7adb8cfa9efadc75,
+		0x1c9625ecb9fcead1,
+		0xb6149fa43ce21a4f,
+		0x4cae8db43cf428ab,
+		0x734bf2965bf74829,
+		0xb5c972a768fb4795,
+		0x17dc62fa95ec76f1,
+		0xc3b8754ba3de846f,
+		0x94b5e8fdc4f293db,
+		0x48d3c56fe1f6c249,
+		0xa9feb8d432f8d1b5,
+		0x87bd5ae54ecadf13,
+		0x162efdb439abed7f,
+		0x31f289e769c12deb,
+		0xf12bc3598ae43d59,
+		0x83b2415ba8e74bc5,
+		0xfb32749ed6ea7b43,
+		0xd3f4c67fe3dc689f,
+		0x135b4ae324cf981d,
+		0xf39185c543e2c679,
+		0x352dba6871d4c6e5,
+		0x1ef3c9487fc9e563,
+		0x98e7ab276ca9e3bf,
+		0x81a6432a9abe143d,
+		0xd2f6345febd142a9,
+		0x6c4857d1fad56217,
+		0x7ac2956219c86f73,
+		0x135b6fd324a86dcf,
+		0xb9f8cd6653ab8c4d,
+		0x9f37ab2652af8cb9,
+		0x1f63a2ba91c3db27,
+		0xd46ef3a98fb5ea93,
+		0x19b34c2bab96d7ef,
+		0xec84bd11fcab186d,
+		0x576def821bae26d9,
+		0x9e58d7443bc15647,
+		0x1dfb729769c475b3,
+		0x597c23eba7c89531,
+		0x41f39a5874ba928d,
+		0x378d965cb38ca1f9,
+		0x34b85aedc19ebf57,
+		0x5f73c14cbf82dec3,
+		0xf3a9cb632e96fd41,
+		0xe82d5a743e871c9d,
+		0x614dfe865d8a3c1b,
+		0xd64b8a165a9e3b87,
+		0x4d987cecb8a169e3,
+		0x53927e8ed7b48961,
+		0xd86ca15fe39586bd,
+		0x9d15a471f289a63b,
+		0xf38a4bd2128dc4a7,
+		0x574a23d7629fd415,
+		0x741c2de76e94f381,
+		0x49ce8f687c8612ed,
+		0xf68cbe5bad89315b,
+		0x581f76ddc96a3fb7,
+		0xb83529ddc98d6e25,
+		0x2c15eb81f6827d91,
+		0xea396b8215637afd,
+		0x698d375323759a6b,
+		0x31e9f8a54258b9d7,
+		0x5bd12ec9817cd945,
+		0x3af247c98d5fe7b1,
+		0xae63751cbd84172f,
+		0x614ac27fed76258b,
+		0x51d7ba3feb6934f7,
+		0xbfa74e921b8c6375,
+		0x29f7ac55496e73d1,
+		0xf185c9476872914f,
+		0xcb8f34a874538f9b,
+		0x7915eb2ba356be19,
+		0x2d675c3cb149cd85,
+		0x23b7f5da9f4adbe1,
+		0xd9a124bdcb3dea5f,
+		0x82bca9d21e5329cb,
+		0xe73b4f932d564a39,
+		0xea7c43276c3948a5,
+		0xd2ba3cfa9a5c7813,
+		0xf642db1ba63d857f,
+		0x2db43aedc65194eb,
+		0xf1bd936fe264c359,
+		0xb6ec3241f147d2c5,
+		0xc78fbe96526ae143,
+		0xfa5c64743c2ade8f,
+		0xae43bd665a3d1efb,
+		0xd1c2b9698c423e69,
+		0x1ba3487a9a264cd5,
+		0xf9a8371eda297c53,
+		0xb7e4952ed52b69af,
+		0xa1248391f53e892d,
+		0x9e83cda32531c789,
+		0xc51ab3276423c7f5,
+		0x4ace386a9128e673,
+		0x4c81bd576d18e4cf,
+		0x457e6d8a9e2c154d,
+		0xc1b395dbac1f23b9,
+		0x8753bd4fec146327,
+		0xe9dc1831fb267193,
+		0x7ac58eb328176edf,
+		0xc6a89fb4361a8e5d,
+		0xd73b8266541e8dc9,
+		0x8a63fe7a9521dc37,
+		0x4df8a1ca9214eba3,
+		0x56db71ca9de6fa21,
+		0xe78d49ccbcf8197d,
+		0xa9e5fc3edafb27e9,
+		0x58f9c6d21bfe3857,
+		0xf92157a54af176c3,
+		0xe265f3487af59641,
+		0x8a4f6c1875f6839d,
+		0x9b51f43985f9a31b,
+		0xd43f8c9ba3fdc187,
+		0x2c5be6aa91cebfd3,
+		0x14a3267cbdc3fe51,
+		0x85a794d32fc51ead,
+		0x3698b7f54ce83d2b,
+		0xdbc692154aeb3c97,
+		0xe5ab19d768cd5af3,
+		0x41f8c72cb9e28a71,
+		0xde837f2ba5e387cd,
+		0x3e6a7bfed3e6a74b,
+		0x495a2e11f2e9c5b7,
+		0xb8e7cd4213ecd625,
+		0x49827ca652cfe491,
+		0xfa519cd76eb413fd,
+		0xcb12e6f98ed7326b,
+		0x94df2cb98bc941d7,
+		0x25ce6fdba9cb6f35,
+		0xd18fe64dc7bd6ea1,
+		0x3791a5ffe6b28c1f,
+		0x9acd2e7215d39c7b,
+		0x3f1ab59323c5bae7,
+		0xb5e8316542c9da65,
+		0x93d8f15762abe8c1,
+		0xaefc52376c9de73f,
+		0x18b4639baec3269b,
+		0x6423facfedc74619,
+		0x32bcd581fbca6485,
+		0xfb317d9329ab74e1,
+		0x28e6a51437ad825f,
+		0xef48dc9656a291cb,
+		0xa3246b9875a4bf29,
+		0x7a35cdb982a6ce95,
+		0xdf918e2ba298dcf1,
+		0x56ce412a9d7aeb6f,
+		0x812f39cfec7f1adb,
+		0xa2b634e21ea23b49,
+		0x37c6d5932da649b5,
+		0xe8cb76d65cba7923,
+		0x2af7c895459b768f,
+		0x78a614ea947d85fb,
+		0x27e6934ed5a1c469,
+		0x825b9dafe294c3d5,
+		0xb68179e1f1a8e253,
+		0x19b7a4543278e1af,
+		0xb7e38f665f8c312d,
+		0x9e2cf7654c6e2f79,
+		0xf169cbd87b824de5,
+		0x17cdf65bab957d63,
+		0xadf892bdc8576abf,
+		0xc386b75fe56b8a3d,
+		0x156d73a1f35eb8a9,
+		0xd2a576443582d917,
+		0xd7ca39865294e783,
+		0x51dfb9654176e5df,
+		0x64dc1a598f7a165d,
+		0xdc5fa4698e6d24c9,
+		0xfac3184cbc8f5437,
+		0x2fa4395fec8472a3,
+		0x9eb4c851fb879321,
+		0x3796bd5219478f6d,
+		0xd74a3f53254a8ed9,
+		0x9bd82537635ebd47,
+		0xe421dab98461ecb3,
+		0x716f9b5ba275fb31,
+		0xc846391cbf461a8d,
+		0x6b1d7a4dcd4a28f9,
+		0xcd579631fc4d3967,
+		0x47fab6c21b4f57d3,
+		0x15a8b9f54c639751,
+		0x3297cdf7693584ad,
+		0x17dba43a9758a42b,
+		0x243ec1fba54bc297,
+		0xd745b89ba45dc1f3,
+		0xa3e5f27dc352ef61,
+		0x61735a9dce341fbd,
+		0x584e96d21f472e3b,
+		0xf8175d654e293da7,
+		0x8f5cb6487b3d6c15,
+		0x6421a5f87a3f6b81,
+		0x6827cd4ba93278ed,
+		0xacb1837ed724a85b,
+		0xda1386bfe428b6c7,
+		0x8e27b1c1f42bd735,
+		0xfbd637a3243de5a1,
+		0x17e6d5498463251f,
+		0x3946fdc98f15237b,
+		0x4a1536ea9d1842e7,
+		0x724c5f6bad2b7165,
+		0xdc42975ba92c6fb1,
+		0xa54f679cb81e7d2f,
+		0x5ea63c71f6129d8b,
+		0xfcbd5e832614abf7,
+		0x17524bd43418db75,
+		0x729fd587642ae9d1,
+		0xc8af45b8721ce84f,
+		0xa74128b76def17ab,
+		0x4a36c1ecbdf34729,
+		0x958cef6edcf74695,
+		0x4276e19edae975f1,
+		0xcb89d6a219eb836f,
+		0x47ec598436fe82db,
+		0xca74189767f2c149,
+		0x28c14be874e3cfa5,
+		0x425871da94f7de13,
+		0xa263df4a91d8ec7f,
+		0x4591a3298fda1ceb,
+		0xc472d59febdf2c59,
+		0xf56be4321de24ac5,
+		0xd5a638e32ce67a43,
+		0xe2846cd43ad8679f,
+		0x812b493656eb971d,
+		0xd4ae6c9984deb579,
+		0x5817926ba6d1c4e5,
+		0x8deb491dc2d5e463,
+		0x17b6a95ed1c6e2bf,
+		0x84f9e6d654ea123d,
+		0xfb162a754fcd31a9,
+		0xe7af9b154bad3ef5,
+		0xcd264a198bc26e73,
+		0x51d392c878a46bcf,
+		0xf482b7dba6c78b4d,
+		0x19f4873fe4dc8ab9,
+		0x42c983d1f4beca27,
+		0xad8b6e4325c1e893,
+		0x7295fa8542a3d6ef,
+		0xb234ecd652c8176d,
+		0x7529acb76fba25d9,
+		0x8d5731ca9ebd3547,
+		0x7c82d6aa9caf64b3,
+		0x8149fa2febc59431,
+		0x6381a2b1f7b5918d,
+		0xd39ea86215a68fe9,
+		0xbde34653249abe57,
+		0xa2c798e6548ebdc3,
+		0xf61c934985a2fc41,
+		0x94e5df6982a41b9d,
+		0x2934df5dcf973a1b,
+		0xf68ca5bede9b3a87,
+		0xe5924861fb9c58e3,
+		0xd843be932caf7861,
+		0x574fec243a9285bd,
+		0xf9d32ab54896a53b,
+		0x45cea8276598c3a7,
+		0x6973cb1ba69bd315,
+		0x6a74cd8cb49de281,
+		0xe24d16bdc49321ed,
+		0xe59a8f2ede852f4b,
+		0x4d635ae21f863eb7,
+		0x961ce2843e8a6d25,
+		0x19853cd54b7d6c91,
+		0x2e3f8b95485e69fd,
+		0xd7541ebdc872a96b,
+		0xf4adb93dc564b8d7,
+		0xa5468f1fe379d845,
+		0x1bdcea61f37ae6b1,
+		0x2b4fdec2137ce52f,
+		0x4cb375a76391248b,
+		0xfd759c476e8543f7,
+		0xe8d75f3bae896275,
+		0x7aef635a9c6a72d1,
+		0x64c2de1ba95b7e3f,
+		0xa9d743fdc64f7e9b,
+		0xb654de31f763bd19,
+		0x7cd483e21764dc85,
+		0x6a8e45b43457dae1,
+		0xf4d1b2a7624ae95f,
+		0x45912a68725e18cb,
+		0x2c73514cbf614839,
+		0x7a5316bdce6347a5,
+		0xb3ca147fed598713,
+		0x3a615dbfeb3a847f,
+		0x9bc785f2194c83eb,
+		0x5c6e89d4384fb259,
+		0x14582ac87863d1c5,
+		0x28e1d3ca9756df23,
+		0xb1d5638a9236ed8f,
+		0xc1257deba2491dfb,
+		0xc6e59d1cbf3e2d69,
+		0xa6213de1fe314bd5,
+		0x6c987a521e247b53,
+		0x874c9b243c2568af,
+		0x4cfb19365b3a982d,
+		0xf3c92676572db689,
+		0x3f8ad46a972eb6f5,
+		0x127dfa8dc842e573,
+		0xa3c56d4cb425e3cf,
+		0x2ace3b71f259134d,
+		0xb2c9f4d6514c32b9,
+		0x7bef25976f3e5127,
+		0x48ab9e587d216f83,
+		0x91e5ac387a136cdf,
+		0xad5e217a9a168c5d,
+		0x76852fced6178bc9,
+		0x638a4bdfe61dcb37,
+		0x6a1f795fe51fd9a3,
+		0xd7f429a65734f921,
+		0x7f9a8ed76425187d,
+		0xa4d9b6c8731826e9,
+		0xc14f7e298efb3657,
+		0xbdf4c2e98bfd65c3,
+		0xdc96f27babef8541,
+		0x9e4f72ddcaf3829d,
+		0x2978561fe8f6a21b,
+		0x4c76ad5215e8bf67,
+		0x746ead8325f9bed3,
+		0xd15fe98764fced51,
+		0x3c91a4f874f21cad,
+		0xf3ec421a91f53c2b,
+		0x9b8d4c6bafe63b97,
+		0x419ca53cbcda59f3,
+		0x8b75ed61fbed6971,
+		0x6a37928219bf76cd,
+		0xd7f4be2439e2a64b,
+		0xe5d1f7c438e5c4b7,
+		0x5cb9a47987e9d425,
+		0x254bfae985dbe391,
+		0x71d5fbe983abe1fd,
+		0x49c8f3bed4e2316b,
+		0x257a36cedeb43fc7,
+		0x8f54a7321fc86e35,
+		0xe74f91243ec96da1,
+		0x7965c8a549ac7b1f,
+		0x7eb231f546cf8a7b,
+		0x9f32c4e986c2b9e7,
+		0x5f7c893cb7c4d965,
+		0x268c59eed4b8e7c1,
+		0x8b5e647ed2bae63f,
+		0x865b9f7323ce159b,
+		0x481d352873d24519,
+		0xa9ec85387fc46385,
+		0x5e84f1b76db873e1,
+		0x8bcde1387cba815f,
+		0xfd178e2a968c7fab,
+		0xb23d147dc68fae29,
+		0x2ed17a31f6a2cd95,
+		0xec18f6932695dbf1,
+		0x94bd1a732397ea6f,
+		0x68cd94f6538a19db,
+		0x9cd241a871be2a49,
+		0xadb61cfa9fa148b5,
+		0x9d7bf12dceb57823,
+		0x467c3fbedca6758f,
+		0x2fa7913fea7984fb,
+		0xc9de75421a8db369,
+		0xe7bf1a24378fb2d5,
+		0x1643cf8878a4e153,
+		0xa79c35e76374de9f,
+		0xe15cb34ba4982f1d,
+		0x18eda9fdc18b2e79,
+		0xc5bd316baf7d3ce5,
+		0x2dec3861fe917c63,
+		0x7bda8c421d7369bf,
+		0xa73bd9e32c76893d,
+		0x12a94fe43c58b7a9,
+		0xfa317496596dc817,
+		0xbc4e561ba57fd683,
+		0xedc4135ba572e4df,
+		0x756d231fe397145d,
+		0xca2e1b51f17823c9,
+		0xcd2e1b95419c5237,
+		0xeb293d754f7e61a3,
+		0xedc7a1554b516def,
+		0x93ed54187b538e6d,
+		0x91df65287a458cd9,
+		0xfc567a8ed859bc47,
+		0xc13849ffe65cdab3,
+		0xf6b1a35ed56fea31,
+		0xfabe47632563198d,
+		0x96218cf5436527f9,
+		0x2fb685da915a3867,
+		0xd739eb698f4b56d3,
+		0x12c6847bad4e8651,
+		0x5a2f1d7cbc5183ad,
+		0x6b4a759fec65a32b,
+		0xed37a851fa46c197,
+		0x764825f21748bfe3,
+		0xe462a174374bde61,
+		0x7e8d3426543efcbd,
+		0x36d5bf2a95642d3b,
+		0x6c4e293cb1453ca7,
+		0xd73f5bedcf396b15,
+		0x51f6c38ede3c6a81,
+		0x2b4951c1fa2c67ed,
+		0xb84fec632d31a75b,
+		0xd13e67854a23b5c7,
+		0x6e95d1f87a28d635,
+		0x3b7c56d98739e4a1,
+		0xb4e852aa964be31f,
+		0x72b3f41dc54f127b,
+		0x96348faed25341e7,
+		0x2671cf8ede176f45,
+		0xbdc256943f286eb1,
+		0xb8ef3ac54d1a7c2f,
+		0xc521a6854a1e7c8b,
+		0x398a74c76921baf7,
+		0x4ad2c1fcb913da75,
+		0x149efdccb726e8d1,
+		0xeab5983dc519e74f,
+		0x85214371f42d16ab,
+		0x651c7295451f3629,
+		0x3f51ce7983126495,
+		0x4cbd2ef76de574f1,
+		0xb21cf7e65ce7826f,
+		0x1db57e976af981db,
+		0xa93fe15987ecaf39,
+		0xbe576d1a96dfbea5,
+		0x61db7e4dc7f4ed13,
+		0x7c65dea215d4eb7f,
+		0x712b9e6434f71aeb,
+		0x4ed8f12763fc2b59,
+		0xbe9f361871fe39c5,
+		0x9c8eb3fbafe17943,
+		0x53db8e6bacd3769f,
+		0x958d671dcbe7961d,
+		0x4d9ce671f8eab479,
+		0xf87cdbe218dcb3e5,
+		0x8ea362c548cfd263,
+		0x8613fbd656c3e1bf,
+		0x34c6e1aa96e7213d,
+		0xe57463dba3d72f89,
+		0xc617a85a91ca3df5,
+		0xbe81d93bafbe5d73,
+		0x4365fa7fedb16acf,
+		0xa5fb8dc21ec38a4d,
+		0xa3cd1f832cd5a8b9,
+		0x9816c53548dac927,
+		0xa628743656bcd793,
+		0x3a9efdc8749dc5ef,
+		0x1784adccb7c3156d,
+		0x1697df3fe3c624d9,
+		0x75642e31f1da5347,
+		0xdac8bef541dc62b3,
+		0x71f9a3e65fbe8231,
+		0xea5b18654ca18f7d,
+		0x3b268de65ba38de9,
+		0x5234ac6989a6bd57,
+		0xd79b458ba698dbc3,
+		0x153427fed69ceb41,
+		0x584f23adc37ef89d,
+		0xefa639c326c4391b,
+		0xcde8532542c53987,
+		0x2c5df19761b957e3,
+		0x167df4865fac8761,
+		0x7c5e3d976c8e74bd,
+		0xbd96784dcd91a43b,
+		0x36db97afeb94c2a7,
+		0x758dce61f9a8d215,
+		0x4e9bfa532689df71,
+		0x9e5c38132469fecd,
+		0x2418d9a7658f1e4b,
+		0x26aedc7984923db7,
+		0xd8f3ae1cb1a76c25,
+		0x28d579fdcf786b91,
+		0xfa14ed8cbc5a68fd,
+		0xbc3685e1fc5e986b,
+		0x8416ec932c81b6d7,
+		0x984cfb332b93d745,
+		0x17f8ac654987e5b1,
+		0xb2c6f9598679e42f,
+		0x17b24e6ba57d138b,
+		0x6d9ce2fcb48e32f7,
+		0x3c752a1fe2a36175,
+		0xf2619bcede756fc1,
+		0xe3f4bc521e587d3f,
+		0xbd489f132e4a7d9b,
+		0x721df5c54b5eac19,
+		0x42d65f987a61db85,
+		0xfc1ed56ba864d9e1,
+		0x6ac7125cb746e85f,
+		0x81b9f6dfe45917cb,
+		0x986db4c1f46d2739,
+		0xce9b32f2127f36a5,
+		0xdeb69f8872948613,
+		0xe31485d76e45837f,
+		0x12ebdc476d4782eb,
+		0x375d49f98d4cb159,
+		0x3de8457a983dafb5,
+		0x375d128dc961de23,
+		0x8f971b4ed643ec8f,
+		0x14b3dc6327461cfb,
+		0x4c1bf7d4354a2c69,
+		0xd46b18c8724c3ad5,
+		0x715dc8ba914f6a53,
+		0x857bcd2a9e3267af,
+		0x58c3eadcbe35972d,
+		0x739d48afed27b589,
+		0xcf15a49fe92ab4f5,
+		0x475c26a21a2ed473,
+		0x8eb649f65841e2cf,
+		0xa4d27fb98956124d,
+		0xc9d37b8ba64731b9,
+		0xad75219cb53a4f17,
+		0x4ef67a8cb12c5e83,
+		0xe18426da9c1e5bdf,
+		0xe27a94b1fe128b5d,
+		0xe63a94732e148ac9,
+		0xbc5fe2154d18ca37,
+		0xace6f216591bd8a3,
+		0xb25e1c68793de821,
+		0xec3f24acb932167d,
+		0x4823a6bdc71425e9,
+		0x89b34a6fe6193457,
+		0x64d3be21f21a64c3,
+		0x4a593727652d8341,
+		0x6fac21943cfe719d,
+		0x8d1fb3554bd18ef9,
+		0xf2ac3b665af3be67,
+		0xdc92afb878f6bcd3,
+		0x9f1e852ba7f9ec51,
+		0xb179c46984ebf9ad,
+		0xaf38562ed5ef1a2b,
+		0x95a6287215f23a97,
+		0x5de6fbc542e658f3,
+		0xbc2a84e652fa6871,
+		0xa2d591b54fea75cd,
+		0xb25fe9d87cde954b,
+		0x5423b18a9ae1c3b7,
+		0x18f7e26dcae6d325,
+		0x6357dba1f8d7e291,
+		0x92f8dc5215a7cfed,
+		0x42859f1436dc1f5b,
+		0x348bfc2654bf2ec7,
+		0x57e8124a94e26d35,
+		0xfe4c5b3a92e56ca1,
+		0x2f76de5a9ec87a1f,
+		0x8b7c5efbaedc897b,
+		0x9b14a281f9bda8e7,
+		0xb3598d432bc1d865,
+		0xc76415d439b4e6c1,
+		0xc192f3e548b7e53f,
+		0x84ac215876da149b,
+		0x145892bba6cd3419,
+		0x781c543cb3cf4285,
+		0x12c3b7eed3c472e1,
+		0x758fa1bdcda57e4f,
+		0x7b5d8a921f967eab,
+		0xb965ed743e8bad29,
+		0xfe842ca43a8ebc95,
+		0x8afc47b76892daf1,
+		0xf96531d987a3e96f,
+		0x8b216a7dc5a618db,
+		0x6c97dbafe5cb2849,
+		0x36718d21f2ad37b5,
+		0x6359aec214bf6723,
+		0x23f98e7651b2748f,
+		0x6fd39b554e9583fb,
+		0x4eb376a65ea8b269,
+		0xf4a621987c8ab1d5,
+		0x8e75196ba98dcf43,
+		0xdea6c83cb671ed9f,
+		0xebd9c251f7952e1d,
+		0x53afb4d215a62d79,
+		0x7e56f38324893be5,
+		0x6ac93858729d5b63,
+		0x5937cb87617e58bf,
+		0xb653e17baf72983d,
+		0x483729adce74b6a9,
+		0x5c964a7fed89c617,
+		0x41d6bc51fa7bd583,
+		0x4f926752186bc3df,
+		0x345829f76a92135d,
+		0x895bf2d7678532c9,
+		0x9d485a7cb6a95137,
+		0xc57ea8fcb27a5f93,
+		0xbd61c38a916a5cef,
+		0x376ef19bae4f7c6d,
+		0x3954ba71fe528bd9,
+		0x784cf5d21e65cb47,
+		0xf176de932c57d9b3,
+		0xe4fab7c65a6be931,
+		0x182b93a6574cf68d,
+		0xa7cef23cb87126f9,
+		0x2a41567ed8943567,
+		0x42b9a8cfe27865d3,
+		0x382d9751f27b8451,
+		0x1d824b54315c72ad,
+		0xf2b86e554e5f912b,
+		0x6a2bfed65d42bf87,
+		0x2f369ed87a45bde3,
+		0x8bc3e2da9a48ed61,
+		0x76b52ada9638fabd,
+		0xbc4f579ed75e1c3b,
+		0xbc1248d1f6513ba7,
+		0xcd45837328746a15,
+		0x6e38c74653476981,
+		0x8f673eb6513976ed,
+		0xc4d926e87f2d965b,
+		0x3abef5198d2fa4c7,
+		0xc18a243cbc62d435,
+		0x35c1e7fedb46e3a1,
+		0x97536fced948e21f,
+		0x1f7d59c4394c217b,
+		0x6e97a285463c2fd7,
+		0x4cbf126a98316e45,
+		0xea1b42ca95346db1,
+		0x83fe9cbba1367b2f,
+		0xb95d463dcf197a8b,
+		0x5da94c6cbd1ca9f7,
+		0xd1a8b32feb1fc975,
+		0xeb9257154b23e7d1,
+		0xa9c2b4143a15e64f,
+		0xe3f5dc17692815ab,
+		0x4fdec16ba81c3529,
+		0x5316cafcb71e4395,
+		0x4239d16dc64273f1,
+		0xf3a24c7ed324816f,
+		0x4dc8593bade47fcb,
+		0xfed5a2321df7ae39,
+		0xfd3584b32cf9bda5,
+		0x8326ba4659fedc13,
+		0xd2bf139658d1ea7f,
+		0x2754ca9987f419eb,
+		0xe387ba9dc6f72a59,
+		0xf275e6bed4fa38c5,
+		0x129bc6afe2fd6843,
+		0xe548ab7212de659f,
+		0xc72e354762f3951d,
+		0xd367b8254fe5b379,
+		0xf8e159d76cd8b2e5,
+		0x9a5421798aebd163,
+		0xae16f398769bceaf,
+		0xdf2785ccb8c31f2d,
+		0x6e2c1a91f6d42e89,
+		0xa9326e4216d73cf5,
+		0xb45f1cd324ea5c73,
+		0x391bcea542db59cf,
+		0x34cf2d9761cf794d,
+		0x829ad5c76fd2a7b9,
+		0x397bf82baed5c827,
+		0xf37dc1afebc8d693,
+		0x527fca8ed7a9c4ef,
+		0x75364be218acf36d,
+		0x4978d2a658c123d9,
+		0x7fc5e43989d65247,
+		0xa85bfc2a95d861b3,
+		0x451f863a94ca7f21,
+		0xe8c75b4a91ab6e7d,
+		0x93bf815bad8f7ce9,
+		0x7dae4351fea2bc57,
+		0x596fbe221e95dac3,
+		0xc29ed7b43cb8ea41,
+		0x9abd4164368af79d,
+		0xa1befd3767ae281b,
+		0xa5f821dcb9c13687,
+		0x4d7f591dc7b456e3,
+		0x27a1c5dfe3c98561,
+		0x84573921f1a973bd,
+		0x62d1fac541ad923b,
+		0x5297bc143e8fb1a7,
+		0xdcf832665c82bef3,
+		0x5d3c94a76b95de71,
+		0x9c62e1465876fbcd,
+		0x2f5ae84dc78a1d4b,
+		0xb7e8124ed58e2cb7,
+		0x9d64c211f7a16b25,
+		0x1a46d3f325b46a91,
+		0x61b8dcf4329567fd,
+		0x298ab355418a976b,
+		0xc1f35be54f6ca5d7,
+		0x7bd326ca9d8fc645,
+		0x72c3f1dbac83e4b1,
+		0x1ed8526dca86e32f,
+		0x62c53e11fa79128b,
+		0xdb4183c3298b31f7,
+		0xcf9a61d3278d3f65,
+		0xe298c54875826ec1,
+		0x6148fada92847c3f,
+		0x81db52eba1657c9b,
+		0xa5e8136dcf58ab19,
+		0x8daf465cbe4dca85,
+		0x29ce47beda5fc8e1,
+		0xa697cde21b62e75f,
+		0xc12694f43a7516cb,
+		0x1dc693265b7a2639,
+		0x75c8f63a987c34a5,
+		0x186cfa9cb68e7513,
+		0x576f4addc461827f,
+		0x5f6a749ed26481eb,
+		0x59ce714ede36af49,
+		0xa43d2bc21f38aeb5,
+		0xcfd53e154e5bcd23,
+		0xb7296a55493edb8f,
+		0x2fe8a14879531afb,
+		0x468f3abdca452b69,
+		0x34d2a17dc74839d5,
+		0xd1a2f57fe74c6953,
+		0x5f73164fe23d56af,
+		0x956a8fb43451962d,
+		0xc9243df76153b489,
+		0x38f4eb776e27b3f5,
+		0x4c17b2598e4ad273,
+		0xfa18e4d8793ad1cf,
+		0xca6425fa982cef3d,
+		0x81cbe97ed8432fa9,
+		0x28bde511f9364e17,
+		0x53e8acd217295d83,
+		0x1759a64434295adf,
+		0xd137a827632e7a5d,
+		0x9af34e187231a8c9,
+		0x1e327cfbaf14c937,
+		0xde7ca24cbe16d7a3,
+		0x6438ef5edc3ae721,
+		0x5c3b17ffe91bf47d,
+		0x9e25f8d43a2f14e9,
+		0xbec63d498b124357,
+		0x46ad9eb9891762c3,
+		0xc68325dcb73a8241,
+		0xc7d1382a931a6f8d,
+		0x4c15d9eba21c7df9,
+		0x3b8d26ca9cefad67,
+		0xf724561feaf2cbd3,
+		0xb1d5c9a32cf6eb51,
+		0x1563a98329e6f8ad,
+		0x3d291f8658fc192b,
+		0x4a98172656fe2897,
+		0x5d63bf4ba8e157f3,
+		0xdfab591dc5f48671,
+		0x8da29f7cb2f674cd,
+		0xc51b348fe1fa934b,
+		0x82a46fd431fda2b7,
+		0xba2ced554edfc125,
+		0xe3867c165bc3df81,
+		0x976ab1c658a4fced,
+		0x21be845879d81e5b,
+		0x253876ca96ea2dc7,
+		0x321ec84cb7de4c35,
+		0xcab61721f5e26ba1,
+		0xcb4f965325d4791f,
+		0x8596d7b432e5987b,
+		0xf98e216541d9a6e7,
+		0x29e68bf54fbdc765,
+		0xae3bc5487bafd5c1,
+		0xcb7ad43a9ab2e43f,
+		0xf2d8b5cfead6139b,
+		0x72be4c61f8da4319,
+		0x617abcd329dc4185,
+		0xd25cf64436ac5fd1,
+		0x392d51e765b17d4f,
+		0x7ca5e19762c37dab,
+		0x64eb159981d6ac29,
+		0xb895ed387fa8cb95,
+		0xf328ce6bad8bc9f1,
+		0xfd13582dca9ed86f,
+		0x5e6c87a32ca317db,
+		0xf7dc62843bc62749,
+		0x358b6ca548c936b5,
+		0xe24f13aa98bc7623,
+		0xa7356cda94ad638f,
+		0x84253abdc4a182fb,
+		0xfb65ca1fe2c4b169,
+		0x61ecabfede86afc5,
+		0xe976b5d21f89ce43,
+		0xcd8fb7932b6adc9f,
+		0xb7682155497efb1d,
+		0x2ca4db876ba32c79,
+		0x28af941cb8963ae5,
+		0xef467cbed7b95a63,
+		0xa67e541ed38a57bf,
+		0xd68c75e1f29e873d,
+		0x6e8cb4f32381b5a9,
+		0xf8ae941762a4c517,
+		0xa4e876d65f97d483,
+		0x26e78a365b68c2df,
+		0x4afec9298a7bf15d,
+		0xf8369decba7f21c9,
+		0xbc58e6aeda934f27,
+		0xeab63241f7865e93,
+		0x8d34e72214675bef,
+		0x76d983f3235a7b6d,
+		0xba6d3185425e7ad9,
+		0xb64581ca9281ca47,
+		0x25ea63fa9f64d8b3,
+		0x9e3c85dcbd67e831,
+		0x2735fa9dcb49f58d,
+		0x189d65ffea6c15f9,
+		0xec287bf21b8f2467,
+		0x468dbfe65a8264d3,
+		0xe47c1fb76a978351,
+		0x5fb768aa945871ad,
+		0x86dcf54a935a8f1b,
+		0x12458f6cb14dae87,
+		0x362bf4cbaf51bce3,
+		0xc7235ed1fd54ec61,
+		0x57e84ba21c35f9bd,
+		0xfa8c61b54d591a3b,
+		0x79a832f65b4d29a7,
+		0xdb1a26998a6f4915,
+		0x3769db2dca536781,
+		0x928d57acb63475ed,
+		0xdab97f4fe238945b,
+		0x76c8bea1f14ba3c7,
+		0xf53ba7c5416ec235,
+		0x2c7b5d176f53e2a1,
+		0x146ec7b65a23cefd,
+		0xba6134998c371f6b,
+		0x4ca9d7b98a392ed7,
+		0x37fed98cb92c3d45,
+		0xa7fc361ed73f5cb1,
+		0x527ca83fe6437a2f,
+		0xfb36e8a21524798b,
+		0x2a769f154326a8f7,
+		0x13a5ce77612bc875,
+		0xc51b93687f2ec6d1,
+		0xc285a61a9c21e54f,
+		0xbd286fadcd2514ab,
+		0x3af2154fec183429,
+		0x2ca4d751fa1b4295,
+		0xbcd13e85493c62f1,
+		0xf186cb94371d6e5f,
+		0xae573c4765127ecb,
+		0xc4def6298415ad39,
+		0xca8472ea9217bca5,
+		0x914d6c298ef9db13,
+		0xfdc521798aebd97f,
+		0x4e7251bba8cdf7eb,
+		0xb953a8421cf32859,
+		0x5be976832af637c5,
+		0x2bf43dc659fa6743,
+		0x32568ea875eb649f,
+		0xa1458bea95fe841d,
+		0xb467a93dc4f1b279,
+		0x38f415bdc2f4b1e5,
+		0x5f764dccbed7cf53,
+		0x9de8c7a21eb7cdaf,
+		0xce467df439bafc2d,
+		0xfc9213d54acf1d89,
+		0x1afec42879d23bf5,
+		0x3c9465bba9e65b73,
+		0xb3f4e92ba4d758cf,
+		0xade87b4dc3eb784d,
+		0x14796281f2de86b9,
+		0xf681cd7434e1c627,
+		0x5be84c7761e4d593,
+		0x5a9176e54da6c3ef,
+		0x2d9e6bf65cb9f26d,
+		0x56238ba87abc12d9,
+		0xd658a12cbacf3147,
+		0x8ec927fed8c25fa3,
+		0x6e598b31f8c67e21,
+		0xd6fc72b214b86c7d,
+		0xfa3cd59323ca7be9,
+		0x12a83be542ceab57,
+		0x94abf1c872b1d9c3,
+		0x6db241c98fb5e941,
+		0xf17ba6398ca5f69d,
+		0xc79f531fedca271b,
+		0x19a6d341fabd2587,
+		0x26b48f5219af45e3,
+		0xce7134f65ac38461,
+		0xc3df568546a572bd,
+		0x649c3a1875c8913b,
+		0x2e148fc7628baf97,
+		0x78ca1eba918cadf3,
+		0x3a249f5cbf92ed71,
+		0x2d96c58feb73facd,
+		0x45ebcf832e971c4b,
+		0x2154e9a43d892ab7,
+		0xe4185a776b9d4a25,
+		0xed1bac8767af5891,
+		0x9cb7582ba59276fd,
+		0x2a418cbed3a4956b,
+		0x369a425fe298a4d7,
+		0x1db92651f19bc345,
+		0x65ec9125428ed3b1,
+		0x7d9ba4865d83e12f,
+		0x3bd4c7f76e95218b,
+		0xadc893f65b862fe7,
+		0x6324e17a9b8a3e65,
+		0xc7fde6bba87b5dc1,
+		0x92d53b1dc57e6b3f,
+		0x53c6d121f4627a9b,
+		0xfeb6a9c32475ba19,
+		0x5bc14e843267c985,
+		0xe9acd726526ac7e1,
+		0x15f83c487e4cd65f,
+		0xc8adbf4a9e7215cb,
+		0x6d2a9e8dcd862539,
+		0x1dfc428fec7843a5,
+		0xa498d131fa8b7413,
+		0x64758b93295c617f,
+		0xdf9184e3254e6fdb,
+		0xc162a4987562ae49,
+		0xfa17b5d98264adb5,
+		0xf75d648ba168dc23,
+		0xce4856287e39da8f,
+		0x5e3d1baa9a3ce8fb,
+		0xe8934511fd512a69,
+		0xab8ed4921c6438d5,
+		0xd8cf93a32c496853,
+		0x1e75c965483965af,
+		0xcb75814a974c852d,
+		0x4eaf8c6cb54fa389,
+		0x8b7596fdc463b2f5,
+		0x9814367fe256d173,
+		0xd74e5f8bad26cebf,
+		0x8be934d21c29fe3d,
+		0x8db51e654c3d1ea9,
+		0x179be5398c524d17,
+		0x3a2b86ca9b245c83,
+		0x2def846ba82659df,
+		0x9b748dfdc62a795d,
+		0xd743f18fe42d87c9,
+		0x5483a2cfe42fb837,
+		0xcb98d6a21542d6a3,
+		0xd3641b798347e621,
+		0x3adebc965e18f37d,
+		0xc6158b987d2b13e9,
+		0xc6384e9bac1e3257,
+		0xf23bc49edb4261c3,
+		0xe816fcaeda257f31,
+		0xbe4c51a1f7156e8d,
+		0x683e4d9325187cf9,
+		0x789ac2f4341dac67,
+		0x97af85c7641fbad3,
+		0x5ac2463a9423ea51,
+		0xe573a4f76ce3f7ad,
+		0x37e41b8badf7182b,
+		0x91cef32edcfb2697,
+		0xcea65fbed9ec46f3,
+		0x8df9bc532aef6571,
+		0xc53b176548f273cd,
+		0x9eb4d6a657f6924b,
+		0x14985cd764f8a1b7,
+		0x3492615983eabf15,
+		0x65b8421a92fdce81,
+		0x396c21e98ca1fbed,
+		0x4c36d791fce41d5b,
+		0x85e4f7d21de62bc7,
+		0xf9e4b3832cea4b35,
+		0x52ea7c6548ed59a1,
+		0x1cb83ef657ce681f,
+		0xc81e46dba5e2967b,
+		0x25461f8cb3d4a5e7,
+		0x19fb536ed2e9c465,
+		0x794a2b11f2ead4c1,
+		0xeba3652541bcd23f,
+		0x63edb4765fd3129b,
+		0x642dcea87ed64219,
+		0x859c73a76bc83f75,
+		0x359abfe878b95ed1,
+		0x73f584aa97ab6c4f,
+		0x6a43591ed49f6cab,
+		0x85bc7ae1f5d3ab29,
+		0x6d93c85213d4ca95,
+		0x3c5a6e1543b7c8f1,
+		0x8c7db9e541bad76f,
+		0x2eb91da54e8cf5db,
+		0x8d467e3baec12649,
+		0x7c92db1badc634b5,
+		0x452b7c8febc97523,
+		0x1b847d5fe7ba628f,
+		0xd98fc3a3269c71fb,
+		0x536ecd1324ae8f59,
+		0xa5d4e8976492aec5,
+		0xb12d94a982a6cd43,
+		0xc358e4a87186db9f,
+		0x2b13c7a98e79fa1d,
+		0xa5748d1dcd8e1b79,
+		0x4c3a56e1fca139e5,
+		0xb6de5c721db45963,
+		0xd49fa5132a9756bf,
+		0xfc5e37a5479a863d,
+		0xc35eb947657d84a9,
+		0x3d987cbba59fb417,
+		0x2d95634dc5a4d283,
+		0xe9243dccb285c1df,
+		0x583c6d4cbc67ef4d,
+		0xfa97ed632e6a1fb9,
+		0x915dafc54c8d3e27,
+		0xc12bd7e76c815d93,
+		0x13def54769735aef,
+		0x6295dc8cb9857a6d,
+		0x942be68dc45a78d9,
+		0xb76a543fe36db947,
+		0xa8396f2fe26fc7b3,
+		0xc81be3d32594e731,
+		0xdf8649e43175f48d,
+		0x1c832a965e6814f9,
+		0xd687425a9e8c2367,
+		0xd63e128a9b7e52d3,
+		0x46e29cbedc938251,
+		0x3da8146dc8536f9d,
+		0x487de6c1f7568e1b,
+		0xdfb957421549ad87,
+		0x64e813a3245cabe3,
+		0x1d8ef468735fdb61,
+		0x54f983287152f8bd,
+		0x196452cbaf56193b,
+		0x948fed7dce4928a7,
+		0x94f3687fed6c4815,
+		0x731cb541fb4e5681,
+		0x6b5a14d32a5174ed,
+		0x1d38f9432a64935b,
+		0x3d876fb65846a2c7,
+		0xf4d6bc3a976ac135,
+		0xbd543a69834bcf91,
+		0x2d751e49813ebcfd,
+		0xa4f6e13dcf431e6b,
+		0xe4c86d71fe352cd7,
+		0xe2fdba421e293c45,
+		0xa836ce554d3c5ab1,
+		0x9e8ab3765a3d692f,
+		0x89a7f5b76a31978b,
+		0xe38f714cb823a6f7,
+		0x49826a7ed428c675,
+		0xf79db63fe439c5d1,
+		0xf376984fe12bd34f,
+		0x97c81525413ef2ab,
+		0xf926b8a87f154329,
+		0x3e7da1c98e274195,
+		0x498da6c87b285fe1,
+		0xc1f6a3b9891a6d5f,
+		0x48bfae2a971e6dcb,
+		0x28cf649fe721ac39,
+		0xb5ed4911f613cba5,
+		0xc35168954627da13,
+		0xf3ce2d554319d87f,
+		0xe2134c86521af6eb,
+		0xc17eaf476dfe1759,
+		0x43f8ea6a9df136c5,
+		0xc284a35cbcf57643,
+		0x78e5f4ddcae7639f,
+		0x5c6b184fe7fa831d,
+		0x6475bfe326fda179,
+		0x7c8eab5324ce9fd5,
+		0x2b543fd876f2ce53,
+		0x83f714b762e4dcaf,
+		0x3d9cae6981e7fb2d,
+		0x53cfad887feb1c89,
+		0xcd1a674a9bcd2af5,
+		0x2a8b9741fce15a73,
+		0x4a23d5921ad357cf,
+		0x1a9bc4332ae6874d,
+		0xba947e8436ea85b9,
+		0xd179c4a986edb527,
+		0xfb75a14985dfc493,
+		0x17eda48a94b3c2ef,
+		0x193564dcb2c5f16d,
+		0x1a8dfcbfefc821d9,
+		0x598cd7621ecb2f37,
+		0xc178aef32cbd4ea3,
+		0x29478b176bc37d21,
+		0x8d7af13659c36b7d,
+		0x5e62b4f986c57ae9,
+		0x7f286badc4d9ba57,
+		0x47f8ab2fe4adb8c3,
+		0x9bf4618fe3bfd841,
+		0x3ea57f6213b2f59d,
+		0x6491efc653d7261b,
+		0x196ca4b65fca2487,
+		0x96ae35f87dab54e3,
+		0x7bac38ea9cbe7361,
+		0x2d81b54dc9a271bd,
+		0xc8f95a4ed7a48f2b,
+		0x2c56b181f4b5ae97,
+		0x7e5693a21598acf3,
+		0xe12a6fc4349bdc71,
+		0xeb62af95427fe9cd,
+		0x75e9a6d982c31a4b,
+		0x3afc21498fa529b7,
+		0x4627ad5dceba4925,
+		0x9cd54b6fedac5791,
+		0x352b97ffe98c65fd,
+		0x8c5be9732ca1946b,
+		0x7f1bd8532894a3d7,
+		0xce754d9767a8c245,
+		0x19283ea87589d2b1,
+		0xb651a7d9837ace1f,
+		0x3d75842a916dfe7b,
+		0x9f4cd8acbf832de7,
+		0xb4c1e531fe973d65,
+		0xdfb34ea32e785bc1,
+		0xfa1b45632c7b6a3f,
+		0x8ec476143a5e689b,
+		0x48b21ea76a72b819,
+		0x3e91a4fcb693c785,
+		0xe4523a7cb487c6e1,
+		0xbda5194dc279d45f,
+		0xcb7f184fe16af3cb,
+		0x23a796c6528f1439,
+		0x493287f76f8342a5,
+		0xa7fdb9876e987213,
+		0xba86dc987b485e6f,
+		0x9db284e878496edb,
+		0x7ce41d5cb75e8d49,
+		0xdf5c791fe761acb5,
+		0x2396a571f675db23,
+		0xe48bfda21345d98f,
+		0xefd8ba643248e7fb,
+		0x2e1d3a88725d1869,
+		0xe31f27598e4f27d5,
+		0x358ec74cbe826753,
+		0xdaf5264cbc3564af,
+		0x297d3c8feb59842d,
+		0x51d2ec61f74ca289,
+		0xc4ed7383284da1f5,
+		0xbe3ad6254851cf63,
+		0xb49c12876543cdbf,
+		0xcd4eba398246fc3d,
+		0xed16547cb2481da9,
+		0x25b3f41baf4d3c17,
+		0x691fd24dcd2f4b83,
+		0x2a4b958feb3258df,
+		0x5ec789a21c24785d,
+		0x89d7b6243b2786c9,
+		0x18a9ce36592cb637,
+		0xce5a4f19872ec5a3,
+		0x57462cfcb863e521,
+		0xa1e7f35cb534f27d,
+		0xcb67a93ed34712e9,
+		0x14fd627fef2b3157,
+		0xbdae76f32e1c4fb3,
+		0x8c392b665c2f6e31,
+		0x8ac9d6465b126c8d,
+		0x79d5ca276a147bf9,
+		0x3a5698fdc918ab67,
+		0x4fadb53dc61ab9d3,
+		0x1267fdbdc62ed951,
+		0x592a3fbfe421f6ad,
+		0x7fea63954635172b,
+		0x8791ca3763182597,
+		0xc3b1d7476de945f3,
+		0x75e943698dfc6471,
+		0xfe94582879fe62cd,
+		0xe39f671dcaf2914b,
+		0x3782dbadc6e39fa7,
+		0x18274c6ed6f7be15,
+		0x4bdf359325f9cd81,
+		0x7c98f6b323f9caed,
+		0xe3ab916542defa5b,
+		0xe3c546f981f32ac7,
+		0xcd75361a9fe74a35,
+		0x37524afcbde958a1,
+		0x2bf6913dcadb671f,
+		0xd8e4c361f9de857b,
+		0xafc671b329d1a4e7,
+		0x5d43c6f329e4c365,
+		0xfd81c26656e7d3c1,
+		0xfc1859a875c9d13f,
+		0xd125ec8762caef8b,
+		0x641e8a5a92bd1ef7,
+		0x6f3215ccbfc23e75,
+		0x395e48a1feb65cd1,
+		0x76ed2ca21dc86b4f,
+		0xb3c81d9328dc69ab,
+		0xf56b813547ce8a29,
+		0x2b8c4ed767d1c895,
+		0x14fe628a96b4c7f1,
+		0xe364b28ba3b7d56f,
+		0xa58b312dc2a8f4db,
+		0x894d5eb1f2cd1549,
+		0xefa8d2c541cf23b5,
+		0x24b1c3d76fc57423,
+		0xabc793254db5618f,
+		0x29b7c8d54a976feb,
+		0x8dfa5c2767ab8e59,
+		0x6e28bf7ba68e9dc5,
+		0xfdacb63fe7a1dc43,
+		0x71a2465fe483da9f,
+		0x86ebd14324a6f91d,
+		0x83a29cd543cb1a79,
+		0xbacde28761ac28e5,
+		0xc635a1b87eaf4863,
+		0xfb96c4598d9265bf,
+		0xd87fe56cbca6853d,
+		0xc3472f6fecb783a9,
+		0x8e2cd531f89cb317,
+		0xd46b3ea3279ec183,
+		0x2d46a9f43571becf,
+		0x2b79cef76583fe4d,
+		0xa5c6b2d873861eb9,
+		0x541d7f2cb19a3d27,
+		0x5b1cd39baf7d4c93,
+		0x8b137c2bab6d49ef,
+		0xd2e7b411fc82796d,
+		0x48be75321c6487d9,
+		0x98e41b632c69b847,
+		0x953ec6b5487ac6b3,
+		0xe275d1ba978ed631,
+		0x46925d8ba571f38d,
+		0x94fda82dc48513f9,
+		0x8d927f6fe1a93267,
+		0xac96b3dfef7a51d3,
+		0x69d1fac32e7c6f41,
+		0x5cb697832b4f5e9d,
+		0xeb9f21465c638d1b,
+		0x2c95fd776b54ac87,
+		0xb14c267a9857bae3,
+		0x574af83dc75bda61,
+		0x3d16245ba34ce7bd,
+		0x41c6d9a1f572183b,
+		0x74bd53a2138426a7,
+		0xb35f78a762894715,
+		0xbed6ca187f4b6581,
+		0x1963d5287c4b63ed,
+		0xcea6f34a9c4f825b,
+		0x5162e78edb53a1c7,
+		0x6387b14ed946bf25,
+		0x2b7e6491f647ce91,
+		0x9482a5b21538cbfd,
+		0x9a3e4cd3243dfc6b,
+		0xe46a3d2984512bd7,
+		0x938d64bba1763b45,
+		0xc4b26e9baf3759b1,
+		0x1a39dcecbd3a682f,
+		0x3c6275afec2d768b,
+		0x326e1b7eda2e95f7,
+		0x2a7f48621b32c475,
+		0x1d326c765936c4d1,
+		0x95b2ec376738d24f,
+		0xf31e2bc87539f1ab,
+		0x85f623ecb65e3129,
+		0x6dbaf57dc2413f85,
+		0x95fc8a6cbf245de1,
+		0x58ca93dfed176c5f,
+		0xaf84d1332e186acb,
+		0xf9b273654c1d8b39,
+		0xf896a325481fb9a5,
+		0xbf312da98a24d913,
+		0x3d4b1f2ba814d67f,
+		0x24b79d5ba417f5eb,
+		0x9ac4b86fe42c1659,
+		0x521eabd1f31e24c5,
+		0x492ba6f986217543,
+		0x586179254de3629f,
+		0xd17fa9b65cf6821d,
+		0x12a3d7854be78f69,
+		0x218357a767fa9ed5,
+		0x14e8dfaa97febd53,
+		0x8b6d724a95e1dbaf,
+		0xdf94ae7dc5e4fa2d,
+		0xf7a9cd3324f61b89,
+		0xa29bc36543ea29f5,
+		0xbdaf358761fd4973,
+		0x781c4e965dbe46cf,
+		0xab2468da9ce2864d,
+		0x67ec532bace584b9,
+		0x81cae43edae9b427,
+		0xa48b5291f7ebc293,
+		0xadc5be8326acb1ef,
+		0x451eb7a436b1ef5d,
+		0xe7d4951765d41fc9,
+		0x6e1cf5aa94d82e37,
+		0xdfac524981e94da3,
+		0x32f5de4a9fbd6c21,
+		0x7d415fea9cbf5a7d,
+		0x2a3b9461fbc278e9,
+		0x9d752ec21cd4b957,
+		0xbcf635a329d8b7c3,
+		0x469a2ef658cbd741,
+		0x5893271765ace49d,
+		0x7f5cb29ba7d3251b,
+		0x6478fb3dc4d52387,
+		0x579e3b6ed1c852e3,
+		0xf73da4bfefcb7261,
+		0x42bed7521e8b5fad,
+		0x9ab68f443c9f7e2b,
+		0x8e3bfd954cb2ad97,
+		0xfc4e1b576895abf3,
+		0x6bd5c27a96a8db71,
+		0xc39761eba479e8cd,
+		0x713b5d9dc39df84b,
+		0x9a3182e1f4c128b7,
+		0xc9a8725213c64825,
+		0x7586bd3542c85691,
+		0xc21bdf643e8964fd,
+		0xd9e4f3b65e9d836b,
+		0xb549ae176b8f92d7,
+		0xf31e4c6edba3c145,
+		0x4e86712ed785cfa1,
+		0xc8fb392fe587cd1f,
+		0xf6d37ae21469fd7b,
+		0xbf8521a4348d1ce7,
+		0x3a5fd41984a13c65,
+		0x1542a7f982945ac1,
+		0xfe1b3d5bae87693f,
+		0xb719d3fdce5a679b,
+		0x2f4d537fec6da719,
+		0x6b31984fea7fb685,
+		0x1c8973432a83c5e1,
+		0x89f15a332986d35f,
+		0xa7bd8f554567f2cb,
+		0x36b14cfba68c1239,
+		0x7d21568cb48e31a5,
+		0x28d6e97cb3825ef1,
+		0xf95167ccbe735d6f,
+		0x7283cd51fe456cdb,
+		0x498eb7c21e5a8c49,
+		0x391ecb632c4d9ab5,
+		0xd4fa8ce6596fca23,
+		0xb81237576952d78f,
+		0x7ac1e4ba9754e6fb,
+		0x5689c3fed45a1769,
+		0x367f8a2fe37b26d5,
+		0x16795cd1f18e4653,
+		0xb13e2c55427163af,
+		0xc5dbe2154f65832d,
+		0xf64e19d65e46a189,
+		0xd5f721a76b389fe5,
+		0xf46acd29894cbe63,
+		0x3152de69863eacbf,
+		0x2a716dbdc752fb3d,
+		0xb81e2651f6451ca9,
+		0xad364f8326593b17,
+		0x5efb7927625c4a83,
+		0xb9d21fa7613c47df,
+		0x25e3af4a9f31875d,
+		0x8c61fd2bae2385c9,
+		0xaf3e4b2dcd28b537,
+		0x652b719feb29c4a3,
+		0xa57edb21f95cd421,
+		0x4ebd8973283fe17d,
+		0x85a3cdf7685421e9,
+		0x31e4857a98362f47,
+		0x27fb836a95284eb3,
+		0x41edc67ba24b6d31,
+		0x3fe1b7da9f1e5b8d,
+		0x42eda38dcd217af9,
+		0x2a7cd651fd13ba67,
+		0xa8e147632c16b8d3,
+		0x7ac5e9354b2ad851,
+		0x32b795c5471be5ad,
+		0xe352a7f9871ef52b,
+		0xf2ae7b5dc8132497,
+		0x43576f9dc61754f3,
+		0x76b1c38fe42a6371,
+		0x8ca6974cbef961cd,
+		0xc3a7fd421dec7f3b,
+		0x78a53ef32bdf8ea7,
+		0x8d94bcf76af3bd15,
+		0xa8cf9e2769f5dc81,
+		0x1e9d5a4875f6c9ed,
+		0xf6714e2984eaf95b,
+		0x1a96cf8cb4fe19c7,
+		0x89b42c1fe6f14935,
+		0x693b7da323f457a1,
+		0x6b1fc78542e8761f,
+		0x19afc5443fea847b,
+		0xe6a8c1265bdc93e7,
+		0x1ab9dc798adfb265,
+		0xfc6d1b3ba9e4d2c1,
+		0xe2f7b36ba7b5ce2f,
+		0x8ea65f4ed4c6fe8b,
+		0x8ce647f325ca1df7,
+		0xbde8572434ce2d75,
+		0x1e64d3c874e25bd1,
+		0xf6ce4ba981d36a4f,
+		0x5a61cef87fd568ab,
+		0x6a5fe8c87edba829,
+		0x3a6f892feacdb795,
+		0xb67a8e5ed8aeb6f1,
+		0x5d973c8219b2d46f,
+		0x4e5d317327a5f3db,
+		0xdfc1a34767da1349,
+		0x5f4e976986dc32b5,
+		0xc1d8942ba5ce6123,
+		0xf519d67ba2b15e7f,
+		0x716e28cbaf936deb,
+		0xdbe41a61feb68d59,
+		0xd6a39b821ea89bc5,
+		0x79e64fb32a9dcb43,
+		0x5cd24194367ec89f,
+		0x3fe8b7a767a3f81d,
+		0x4f28ae5cb6c51879,
+		0x6fd9b42dc4b927e5,
+		0x4b2786dfe2bc4763,
+		0x2c5a4dbfe19d54bf,
+		0x81723fb652b1843d,
+		0x89714c243fb482a9,
+		0xdbfa61465ea8b217,
+		0xde6b41865c89bf73,
+		0x76e9f8265769adcf,
+		0x14e23dba967fec4d,
+		0x16754affe6831db9,
+		0x528ad491f5a63c27,
+		0xc953aeb215a84b93,
+		0xb97e1a84327a48ef,
+		0xbf5c2365419e586d,
+		0x236d7e165f7186d9,
+		0x36bdc82bae93b647,
+		0xf2e953cbad87c5b3,
+		0xfbd2c61feb8ad531,
+		0x1ea623d1f76be28d,
+		0xbfed1c63276de1f9,
+		0xb813e7c659a43167,
+		0xae2d619875864fc3,
+		0x12843bcba3896e41,
+		0x1db39f29816a5c9d,
+		0xe2b1876a9f5e7c1b,
+		0x7bc5a34ede51ab87,
+		0x31aecb71fc64b9e3,
+		0xcf7693832c57d961,
+		0xc8a6f5e32948e6bd,
+		0xfc539715485cf63b,
+		0x4ed2178a986f15a7,
+		0x369f154dc8934615,
+		0x835cb96ed3976481,
+		0x9b128a4dc15862ed,
+		0x58632a4fef4c815b,
+		0xc6e7fd421e3d8fb7,
+		0x8c215f654d61be25,
+		0x418fdc976b54cd91,
+		0x412b8c976835cafd,
+		0x1b5d842a9738fa6b,
+		0x3a2ed57cb64c1ad7,
+		0xeb2a53ced76f2a45,
+		0x92637db1f46358b1,
+		0xe5d67f821345672f,
+		0xa1265ec54139758b,
+		0xfdb93c665e2b94f7,
+		0xa7c4e3198d2eb375,
+		0xecd3f28a9b52c3d1,
+		0x6835ae9cba35d14f,
+		0xf5967d2dc725ef9b,
+		0xc549d86fe74a2f19,
+		0x2be49a82173c2e85,
+		0xf61eb8a6563f4ce1,
+		0xd437c19984326b5f,
+		0x53dfc679812469cb,
+		0x45f87c9cbf178a39,
+		0x561b384a9e1cb8a5,
+		0xfae6925edb2ec813,
+		0xc43967bfea21d57f,
+		0x8c316db32913f4eb,
+		0x21e75f476b281459,
+		0xbe84f298781a23c5,
+		0x3164758ba81d6243,
+		0x87e3c4dba42e519f,
+		0x468ce9dba3126efb,
+		0x83751e9cbdf38e69,
+		0xb9567fcfebf69cd5,
+		0x6bda75221df9bc53,
+		0xacb5d7f327ebc9af,
+		0xafc5e98547cfe92d,
+		0xbd95f8a767f31a89,
+		0xe2713dcba7e628f5,
+		0xe9a8d72dc5fa4873,
+		0x261d3c9cb2ea45cf,
+		0xbde5216dc1fe754d,
+		0xbf8a791542f183b9,
+		0xb659d3754fe5b327,
+		0x6cdb31e65de7c193,
+		0x519dab7548b7aedf,
+		0x4d98ec1767bace5d,
+		0xd8521f3875aefdc9,
+		0x2d817efdc8e42d37,
+		0x4ba89c21f5e64ca3,
+		0xf9a1cbe435e96b21,
+		0xb2419de432eb597d,
+		0x9738fab541cd67e9,
+		0xf85abd476fd1b857,
+		0xf79d5a498ed4b6c3,
+		0xb52df3cbabc8d641,
+		0x8725916dc7b8e39d,
+		0x8a3b567fe7acf31b,
+		0x98d72e1439cf1287,
+		0x1847fca768c451e3,
+		0xce15769984c76f51,
+		0xd82394b762b75ead,
+		0x35b6f9a981ca7d2b,
+		0x9afeb2576fae8c97,
+		0x1a6347edcd91baf3,
+		0x1e64cb91fcb4da71,
+		0xe38924f21a95e7cd,
+		0xb9c5a71328a9f74b,
+		0x95e16b8548ad16b7,
+		0xf4e3ab7a98bf3725,
+		0x36fc875cb7c36591,
+		0x96c485fcb2a563fd,
+		0x5b362cafe1c9826b,
+		0xdfc9b73fef8b91d7,
+		0x5de276321e8daf35,
+		0xf8e653d54d82cea1,
+		0x74ebd6c65a84dc1f,
+		0x68af25c54985fc7b,
+		0x58c2934ba6891be7,
+		0xdbfe297dc79d2b65,
+		0x6b7cfe8ed58f49c1,
+		0x3d2519cfe4a2683f,
+		0x76dae92212a4769b,
+		0xe9783cb542b8a619,
+		0x81495ea43f7cb485,
+		0x3ac895f76c7db4e1,
+		0x7613ea8a9b81d25f,
+		0x79bd38cba974f1cb,
+		0x527986bfeba82139,
+		0xcd1f384fe67a2f95,
+		0x3c84a1d3267b4df1,
+		0x48ecd393237e4c6f,
+		0x6743ae1653726adb,
+		0xbec48f1ba1758b49,
+		0xf152a9698f47a9b5,
+		0x1c75d4fbae6bc923,
+		0x58c2641cba4dc68f,
+		0xe84567fed961e5fb,
+		0xf75e6d932c841569,
+		0x9fa518b43a7824d5,
+		0x68caf3d8798b6453,
+		0x41ca3eb9846c52af,
+		0xd27e489ba46f712d,
+		0xf76d8b4dc1528f79,
+		0x758cef4cbf349de5,
+		0x7a1593c1fe48bd63,
+		0x7354e2b21d38cabf,
+		0x718fe643294cea3d,
+		0xc35478f76c521ba9,
+		0xc7b62a4a9b653a17,
+		0xa3f8dbedca574983,
+		0x1c6ae7dcb53946df,
+		0xc73ba95fe23c765d,
+		0x65d284afe13f74c9,
+		0x1b27ef365162b437,
+		0xbc1367a65f46c2a3,
+		0x81da23c87e59d321,
+		0xce83b2465a29cf6d,
+		0xe7a395d7672bfed9,
+		0xd59fe28dca512e47,
+		0xab7fd28fe8254db3,
+		0xec58dba1f7486c31,
+		0x2ef478c214295a8d,
+		0x18b7f565432c68f9,
+		0x71feb346512fa967,
+		0x3d2e61498f12b7d3,
+		0x8e1dc47bae26d751,
+		0x32abc15a9b17e4ad,
+		0x48c52efed91af42b,
+		0x36cdeb41fa2e1397,
+		0xc5df14b76a4152f3,
+		0xd2f1b5698a356271,
+		0x53f81be874165fbd,
+		0xc37df9e984197e3b,
+		0x62c1478a921c8da7,
+		0x5fd62b998dfeac15,
+		0xd361924bacf2db81,
+		0x723695dcb9f3c8ed,
+		0x6c3a5f421ae6f85b,
+		0xa9e625f439fa18c7,
+		0xea54183769fd2835,
+		0x6b4c93a987ef46a1,
+		0xb386f9dba6e3751f,
+		0xa9743fbdc2f5837b,
+		0x8172439dc1f892e7,
+		0x6249acbedfecb165,
+		0x4a9753f32ecdafb1,
+		0x6eba82554ab1cd2f,
+		0xd913cf2549c3fd8b,
+		0xfb4e732659d61cf7,
+		0x528b3aea98ea2c75,
+		0x5b4fe61a96ec4ad1,
+		0xf6d4a2ccb3ce594f,
+		0xb9c756d1f3e267ab,
+		0x3f76e85213e5a729,
+		0xa42c9f8431e8b695,
+		0xafb52cd54ecab5f1,
+		0x7ec218f65badc36f,
+		0x412365e879a1f2db,
+		0x61274eadcbd61249,
+		0xf19c34bfe9d831b5,
+		0x4dcfb57fe7ca5f13,
+		0x39b265d215ab4d7f,
+		0xcf3ab763239f5ceb,
+		0xdfe932a763d28c59,
+		0xb165a9d871d49ac5,
+		0x15f28ad87fb8ca43,
+		0xe31784b76d8ac79f,
+		0x314987ecba9ce71d,
+		0xa38b76c1fbc21679,
+		0x5964aec21ab426e5,
+		0x731edbc32ac94563,
+		0xe265d98546a953bf,
+		0xfa2519b985ac723d,
+		0x9e41a56983bf71a9,
+		0x26e1f97cb1a29ef5,
+		0x9481a23dcf95be73,
+		0x9dfa687fed76abcf,
+		0xed2a3f621c79eb4d,
+		0x1f8e4793286dfab9,
+		0xd93ecf876ca13b27,
+		0x3ad629b878b54a93,
+		0x61b832dba59647ef,
+		0x5ed1796dc39a576d,
+		0xc3da648fe28c75d9,
+		0x4f5a27cfe19fa547,
+		0x93fba1c65192c4b3,
+		0x43cead765f97d431,
+		0xb5738d154c67e18d,
+		0x3682fcd54a58dfe9,
+		0xd48f217a9a8d1f57,
+		0x245e89ccb9814ec3,
+		0x684bd72fe8956d41,
+		0x5d924b71f3765b9d,
+		0xdb3ce5a324697a1b,
+		0x27eacb64325d9a87,
+		0x93d8ac66516fa8e3,
+		0x6fde5b2a9f73d861,
+		0x3c5d17298c64e5bd,
+		0x2e4d6b9bac68f53b,
+		0x243b1a5feb6c14a7,
+		0x46c38be1fa8e3415,
+		0x7a8513c54b926381,
+		0xa76b9f14387461ed,
+		0x15a49dc983567f4b,
+		0xa71edc8762498eb7,
+		0xef418d6a916cad25,
+		0x3b12d9f98e4fbc91,
+		0x96d8c1fbab42c9fd,
+		0xc91642ffec34f96b,
+		0xd753e9c32c4819d7,
+		0x4fb6e2743b6c2945,
+		0x49fcd857695e47b1,
+		0xe7c1569ba951762f,
+		0xfd769a8dc653748b,
+		0x9e4b2d6dc24693f7,
+		0xd7125affe14ab275,
+		0x14c576bfef4cb2d1,
+		0xcad972e21c2dbe3f,
+		0x8925baf54c32fe9b,
+		0x6182bc587c462e19,
+		0xc9d162f87b392d85,
+		0xce3d548a983a4be1,
+		0x19a53fccb72d4a5f,
+		0x3a6f851fe53168cb,
+		0xae95b631f524a839,
+		0x48e5fa321326b7a5,
+		0xc3ed7fa7624ac713,
+		0xb4f3dc965e1bc47f,
+		0x4d8f97c76a1fd3eb,
+		0xfe1a682cbd241359,
+		0xa5e1724edb1732c5,
+		0x5c182d6feb2a6143,
+		0x9feb74ced61a4e8f,
+		0xc65e18d3261c5dfb,
+		0x68bd3ef545218d69,
+		0x25843a6874139bd5,
+		0x6e1d538a9217cb53,
+		0x14afd3965de6c8af,
+		0x1fce29887bfae82d,
+		0x61834accbaedf689,
+		0x4b68ec3edae127f5,
+		0x9e5f4c221bf54673,
+		0x5649bef328e754cf,
+		0x6c42eba656fa734d,
+		0xdba1f73764fd72b9,
+		0xf4725eba94efa127,
+		0x28be794ba1e2bf83,
+		0xb341fe698eb4acdf,
+		0xb6c24e11fab7ec5d,
+		0xfe852ac21ad8fbc9,
+		0x98c3fd654ade1c37,
+		0x94c1fbd769e14ba3,
+		0xdfbac31989e56a21,
+		0xd321685ba4e6587d,
+		0x7146cefcb3da76e9,
+		0x8235da4dc2eda657,
+		0x5bc3d4afe1dfa5c3,
+		0x82e35d4762e3d541,
+		0x6745b1943fb5e29d,
+		0xa2d14e865dc8f21b,
+		0x94fceb876bdc2187,
+		0x841c92e878ac2fd3,
+		0x251c486cb9c26e51,
+		0x971385bfe6b35cad,
+		0xbc25d831f4d67c2b,
+		0xb57edfa213da8b97,
+		0xe6f1795542bca9f3,
+		0xe7a8d64652bfc971,
+		0x83fdbc965f92e6cd,
+		0xbf7a14e98da5f64b,
+		0x271e839badc915b7,
+		0xbfd6927feabc3625,
+		0xdeb49181f8be5491,
+		0x2d8f9c7438a162fd,
+		0x71e2a6f437c4816b,
+		0x3af2b9c543a58fc7,
+		0x45829b3872b9ae35,
+		0x48569fc8728cbda1,
+		0xf4e5acb98d7ecb1f,
+		0xdb375a2dcd82fa7b,
+		0xa29ce151fc951ae7,
+		0x528eab321db92a65,
+		0xc865ad243a9b48c1,
+		0xbc9a5f75489d573f,
+		0x9c34bed986a1759b,
+		0x64892bfdc6b4a519,
+		0xc36152bed2a7b385,
+		0x71f39a5ed289b3e1,
+		0xe18495aede7bc15f,
+		0x64927ed21c5edfab,
+		0x6be381965d841f29,
+		0xa5963fd54c862e95,
+		0x35fd97b76a784cf1,
+		0x768d1fba987a4b6f,
+		0x473e9d5ba46e59db,
+		0x5b324d1fe5718a49,
+		0x6e4d5c91f273a8b5,
+		0x3e6cd2f21497c823,
+		0x825e14a43169c58f,
+		0xe59d12743e5ad4fb,
+		0x9b64de887c5ef369,
+		0x947e8cbbac8423d5,
+		0xfe23548edc986253,
+		0x39be52ced96851af,
+		0x6d47cb5fe75a6f1d,
+		0xab5e6f72154d6e79,
+		0x97b4c8e434619ce5,
+		0xde796a298274bc63,
+		0x95c1de887145c9bf,
+		0x42856cf87f48e93d,
+		0xe15763f98d3cf7a9,
+		0x25f6c48edc5f2917,
+		0x4d8b7e91fc624783,
+		0xf62a9b721a3645df,
+		0xa68513e32a39745d,
+		0x43b72196564b73c9,
+		0x5fdb4a2a965ea237,
+		0x4891cf2cb562c1a3,
+		0xde4b1c5a9143adef,
+		0xd271e34baf25ce6d,
+		0xb5d3ca6feb27fcd9,
+		0xac9b5e832e3c1d47,
+		0xfb936ec65a4f2cb3,
+		0x9cab15e98c546b31,
+		0x61e592d87a24598d,
+		0x935d2c1cb52867f9,
+		0xcf9e651ed42ca867,
+		0xeb2817fdc42ea6d3,
+		0xe854a711f342d651,
+		0x6fd123965124e3ad,
+		0xf6d8e3165e17f32b,
+		0x4c81e7d76e3b1297,
+		0x3ab416c98b2c41f3,
+		0xa62537ea9a2e4f61,
+		0xd673ec2ba8125ebd,
+		0x476f23bfe8157d3b,
+		0x5c4b9211f4168ca7,
+		0x216a49b4362cab15,
+		0xb6dc81e6542eca81,
+		0x9cf3ea176321c7ed,
+		0x45fed8976de2f75b,
+		0xc471a36a9df516c7,
+		0x6d71e5acbcfa2735,
+		0x83b1c65ed9fc45a1,
+		0xe5fd8b7dc8ed641f,
+		0xfe295d1439f1827b,
+		0xcaf714e436f491e7,
+		0x1d59b8e763e7af45,
+		0x854ea72763f8aeb1,
+		0x32d9c5a871eabc2f,
+		0x8c791ae76dafec8b,
+		0xc6e4f1dbacd31bf7,
+		0xca2e5741fce62b75,
+		0xc3dbf8432be849d1,
+		0x7a1598b329db584f,
+		0x14c2a6b437de56ab,
+		0xe4d1c27987e1a629,
+		0x714f692ba6e3b495,
+		0xf2e89cbba3d7b4f1,
+		0x928641ccb1d9c26f,
+		0x312765ddcf9ae1db,
+		0xb2853ae21cadef39,
+		0x713f69854dc32fa5,
+		0x473ed5276bc75e13,
+		0x6c37428659b84c7f,
+		0xa9c6f35876c95aeb,
+		0x5dfe7b1ba4ce7b59,
+		0x9fc54b7fe4d1a9c5,
+		0x5d7b9a61f2d5c943,
+		0x35927cf212b5c69f,
+		0x368297c542b9e61d,
+		0x51498d743eacf479,
+		0x659bdc887caf14e5,
+		0xf682c95badc25463,
+		0xb695a41dc9a652bf,
+		0x92dc1b4fe8b9713d,
+		0xd69b31ffe4ab6f89,
+		0xbe743a62149c8df5,
+		0x76b21dc545a1bd73,
+		0x41cde6365283bacf,
+		0x4bce93887196ea4d,
+		0x1c746d365e67f8b9,
+		0xad8f1c7cbe9d1a27,
+		0x6b39e8fedcaf2893,
+		0xc5918f6eda9246ef,
+		0xbc4da5e21ba4756d,
+		0x98fcd15326a874d9,
+		0xad47ec66569ca347,
+		0xd68ca4e8758ea2b3,
+		0xa89ecd7cb6a4d231,
+		0xe2936dcba183cf7d,
+		0x267d8c9bac65fde9,
+		0x9c287ba1fd8a1e57,
+		0x3dc245a21e7b2dc3,
+		0xafe5c4143b8f5c41,
+		0x2fac61b54b725a9d,
+		0x3457bae76a85791b,
+		0x5a96284dc456a987,
+		0xa861debdc46ba7e3,
+		0x3a75c8fed38ec761,
+		0xe6bc74d1f271e4bd,
+		0x8de49b332185f43b,
+		0x68cd57954f6813a7,
+		0xefbd24687e8b4315,
+		0xfe627bda9c7d5281,
+		0xd68941b8785e4fcd,
+		0x1e79f25dc9627e4b,
+		0x9285f1dfe6548db7,
+		0x6cda8e71f468ac25,
+		0xb7a41d53245acb91,
+		0xdcb82af4324cb8fd,
+		0x6d9834b87251f86b,
+		0xd5847fba9f5418d7,
+		0x9d6a327cbe692845,
+		0xba52413dcd5a46b1,
+		0x65b2a9eeda4c652f,
+		0xdab39f1fe94f638b,
+		0x3fe86d721a5392f7,
+		0x4d28ac943946b175,
+		0x87cafed76547afc1,
+		0x943abe187249bd3f,
+		0xe293a8b8713ced9b,
+		0xa7425f8cbf532d19,
+		0xb29a73cede342c85,
+		0xd4a693e1fc374ae1,
+		0xd4cbf3621c2a495f,
+		0xda4782e4392d57cb,
+		0x28d36c165a2f8739,
+		0xb63da12a9832b6a5,
+		0x9c6d37ecb847c613,
+		0xa18f493cb428c37f,
+		0x153df47dc139d2eb,
+		0x41a3f78dce2df159,
+		0x8b5f7e976f4231c5,
+		0xb2f8e1d87d165f23,
+		0xd4328c665b164d8f,
+		0xdb15c82769185cfb,
+		0x9723146ba81d7c69,
+		0x698c5a7cb61f8ad5,
+		0x56b2df3fe712ca53,
+		0x42d183bfe314c7af,
+		0xf52abd843418e72d,
+		0xa1783ef5421bf589,
+		0x8c2a6b354dec16f5,
+		0x3f769db98cef2573,
+		0x9f25d1498ae253cf,
+		0x6c5fd87cbaf6724d,
+		0x243af8ced6f871b9,
+		0xe3b145ced5eb9f17,
+		0xd694b2a215fdae83,
+		0x6cb2598434e1abdf,
+		0x84bdcea762f3eb5d,
+		0x5dce7f1761e5fac9,
+		0xd29475a98fea1b37,
+		0x4dfb93c98ced29a3,
+		0xa1b26d9dcbdf5921,
+		0x7c93a8e1fae2567d,
+		0x5ad963f21ad475e9,
+		0x97ac863328e9a457,
+		0xa8d7196656eba4c3,
+		0xed65937986dec341,
+		0xb4379a6984c2e19d,
+		0x9f3ce61981b3def9,
+		0x2371564cbec81f67,
+		0x73b429a1fcb92ed3,
+		0x3c4ea1932ebc4d51,
+		0xb46d9a33289f4bad,
+		0x974cb6f659d37a2b,
+		0x73bda2c656d48a97,
+		0xf283d71a95c7a8f3,
+		0xdce6987ba4dbc871,
+		0xf519823ba29eb5cd,
+		0xb946782fe2c1f54b,
+		0x48b6c12432d514b7,
+		0xb9851c376fc93425,
+		0xd27e93b76ecb5391,
+		0xb127acf76a9b51fd,
+		0xa419fc28789e6f5b,
+		0x4c7369fcb6a28ec7,
+		0x2b8637cfe7b6ad35,
+		0x6e8c2731f497bca1,
+		0xcd6bf5932489ca1f,
+		0xe624ca84328de97b,
+		0xc85ed92763b219e7,
+		0xb2acd7498fb42965,
+		0xed631cfa9ea847c1,
+		0x21c47e8cbc9a563f,
+		0x679a8f2fea8d649b,
+		0x7d9cf16fe7af8419,
+		0xd4ab278219a3b285,
+		0x52fe3cb54796b2e1,
+		0x2daf68e65387be4f,
+		0xac6348765268deab,
+		0x5dc3bef9817cfd29,
+		0x5f7dc86cbf812d95,
+		0xbd9a736dcd854bf1,
+		0xf31adbcfec874a6f,
+		0x7ed832a21c6958db,
+		0xca73f8e32b6d7849,
+		0x5984f6c4386f97b5,
+		0x648d2e7ba894c723,
+		0x2bd574eba375c48f,
+		0x9b432c8ba267d3fb,
+		0x6a9bef8ed17bf269,
+		0x124a78ddcf7e12d5,
+		0x62e79cb54f926153,
+		0x3f89ec432c634e9f,
+		0xa3286c954b576e1d,
+		0x7b689a265b4a6d79,
+		0xc238f4da974c8be5,
+		0x42df6b3dc75fab63,
+		0xa4395b7ed452c8bf,
+		0xc412d681f265e83d,
+		0x56e7db921247f6a9,
+		0x2489ebc6536c2817,
+		0x813dfec87f5e2683,
+		0x9fd173498c6154df,
+		0x72e1c68bac64735d,
+		0x5b726a4edb4672c9,
+		0xacb2345fe95ba137,
+		0x29f6d5afe64caf93,
+		0xe6f92c72153d9cef,
+		0x8df14ce43542ec6d,
+		0x38fe17d76234fbd9,
+		0x7cf95e3ba2591c47,
+		0xf69b14e98f4c2ab3,
+		0x91f73a4cbd4e5a31,
+		0xb625f84fec31578d,
+		0x6f5c9a7feb2376f9,
+		0x3e45af621c28a567,
+		0x263dfa154829a5d3,
+		0xcd85a2f8783dc451,
+		0x9e1ca268753fc2ad,
+		0x8b5f3ceba654f12b,
+		0xe38f94aed3462197,
+		0x836fc7acbd182fe3,
+		0x3b1e7cd1fd2b4e61,
+		0x76e4d1f32a1e4cbd,
+		0xaef68b265d217c3b,
+		0x3967bdc65c138ba7,
+		0xa136b4e98927ba15,
+		0xd945c27cb62ac981,
+		0x8e2fd1ba941ab6ed,
+		0x5439ed7dc31fe65b,
+		0x1e9375b1f42315c7,
+		0xed46921874182635,
+		0x65f8acd43ef854a1,
+		0x6d24b8965cea631f,
+		0x6f4ced865afd617b,
+		0x86dcae3658ce6fd7,
+		0x1ce7946cb8f2ae45,
+		0xf975d21dc6f5adb1,
+		0xc7621faed4e7cb2f,
+		0xc43b8a9213f9ea8b,
+		0x419a6d7432dce9f7,
+		0x617fedb983f12a75,
+		0xf15ebc687fe548d1,
+		0x75bca84a9cd8574f,
+		0xf41d2b598ce965ab,
+		0xef428a5dcaed8529,
+		0xa6f291bfe7dfa395,
+		0x6d8c5bf328d4b3f1,
+		0xfbde427437d5c16f,
+		0x23598af543a6dfcb,
+		0xcaf85d3762cafe39,
+		0x57ed6cb982cd1ea5,
+		0x6b89f3dbafc25d13,
+		0x9cb8f56badc34b7f,
+		0xbc3e45a1fac659eb,
+		0x64a8bcd21cdb7a59,
+		0xf546bc7327bd98c5,
+		0x64a7bcd657cfb843,
+		0xab36429876b2c59f,
+		0xf81b5a4a94b6e51d,
+		0x3845f7dcb2c8f379,
+		0x8fe4579ed2cb13e5,
+		0x1a2e78cedfbe4263,
+		0x8c245b743ea251bf,
+		0x4ce587243ca46f2d,
+		0xd72eabc43cb56e89,
+		0xe72afc3547a98cf5,
+		0xd417c3f9869dac73,
+		0x27c9e3f9847ea9cf,
+		0x271b3a4dc5a2e94d,
+		0x849c5f1fe2a4f7b9,
+		0x547baf1434ca1927,
+		0xda19fb8651bc2793,
+		0x793ab5154d8c35ef,
+		0x16eabd998ea1746d,
+		0x2c5ae7b98ca473d9,
+		0x86b2af3edcb8a247,
+		0xdab5643fe789a1b3,
+		0x7adc584fe68cbf21,
+		0xe49db322146fbe7d,
+		0xeda1f9743472fce9,
+		0xc3e6b72983a61d57,
+		0x8b1945d871982bc3,
+		0x6bc1e72a9f8c5b41,
+		0x46ced75bac6e489d,
+		0xc1daf53fed92781b,
+		0x3de5ac61fc93a687,
+		0xd7cea6221b87a6e3,
+		0x186ae794398ac561,
+		0x85a362c5456ac3bd,
+		0x4acb73f9857fe23b,
+		0x7f49e3bdc59412a7,
+		0xab459f7ed3a84215,
+		0xb395f76dce694f71,
+		0xc9dea851fb594ecd,
+		0x438aec721c5e6d4b,
+		0x6b98ad243d518cb7,
+		0xe8c5fb776c74ab25,
+		0xd2ec1bf87856ca91,
+		0x4ab8d53a9548b7fd,
+		0x17def46ba34ce76b,
+		0x4cae563cb24ef5d7,
+		0xa695d141f1932745,
+		0x8954f264328745b1,
+		0xce2f9ad43e59642f,
+		0x7b1294e65e4c628b,
+		0x291e8bd76b4d81f7,
+		0x8fb13dca9b41af65,
+		0xf2438e6cb854aec1,
+		0xbc7a149ed746bc3f,
+		0xa8d34761f437ec9b,
+		0x5647fea3254cfb19,
+		0x3527b897634f1b85,
+		0xecb546a9826349e1,
+		0x21746eda9e26485f,
+		0x6bd812ca9e2856cb,
+		0x8197fa5cbd2c8639,
+		0x643a785edb2e94a5,
+		0xe7845161fa62c513,
+		0x2fb3da621934c27f,
+		0xd5ba13e54736d1eb,
+		0xbe39f1576528ef49,
+		0xa91e3c69843c1fb5,
+		0x2145b68ba15f4e23,
+		0xfe26817bae124c8f,
+		0xb4f2981dcd145afb,
+		0x192ed4a1fd187b69,
+		0x583e67c32c1b89d5,
+		0xfc6798154a1eb953,
+		0xfc94db365821c6af,
+		0x67ed32aa9814e62d,
+		0xe3d621acb516f489,
+		0xe1743a2dc62a14f5,
+		0xbf74965fe51d2473,
+		0x79e2cd3babed42cf,
+		0x271c45f43ef2714d,
+		0x185b7fa32ce36fa9,
+		0x916afc754bf69e17,
+		0x8412369657f9ad83,
+		0x3527d91765eb9adf,
+		0x7cb9f1d984efca5d,
+		0x4523fd9cb4e2f8c9,
+		0xf49bd28fe4f61a37,
+		0xc235a98214f928a3,
+		0xdbe17c3763fc5821,
+		0xc1f7da543fce457d,
+		0xa5ecb1f76cd174e9,
+		0xa6e5d1ca9ce4a357,
+		0x3f7ed24cb9e7a2c3,
+		0x69a35e2ed8eac241,
+		0x96f7a83fe4cabf8d,
+		0x9eb53d4214aecdf9,
+		0xde38ac5545d31e67,
+		0x6425df8874e62cd3,
+		0x4a6279e982e94c51,
+		0x7fe9bd376fcb49ad,
+		0xd95214398dce692b,
+		0xc39fa42fecd1a897,
+		0xd5b68fafe9c4a7f3,
+		0xb5ed61432ad8c671,
+		0x95bf836326a8b4cd,
+		0xdfae892656ace34b,
+		0xd175439764aef2b7,
+		0x5f8437ecb7d64325,
+		0x563ea18dc3d75291,
+		0x7c2841ebac974fed,
+		0x2b6e91d1fd9a6e5b,
+		0xb5a97e321b9e6dc7,
+		0x2b85a7e54db1ac35,
+		0xac6d7f965894cba1,
+		0xf27963d657a6c91f,
+		0xf31d5a8764a9e87b,
+		0x91e6c7bba39bf6e7,
+		0x2b3fc19ed3bf1865,
+		0xab16c321f2b346c1,
+		0xf38ced5321b7653f,
+		0xca5348d32fa8639b,
+		0xb91f2ca65eac8319,
+		0x37ac18b76c9ea185,
+		0xc5264a987982afd1,
+		0xb7fe8d1ba783bd4f,
+		0xaf14297dc475edab,
+		0xaf37b2dfe478fc29,
+		0x1f758963248d1c95,
+		0x4c3fd8a6548e3af1,
+		0xbf4253e871a2496f,
+		0x9b754d376f8457db,
+		0x8fa4629cbe6a8749,
+		0x4dc72e8bad7c96b5,
+		0x2f9c751eda8eb623,
+		0x2185af9fe971c38f,
+		0x5b4a2d621874d2fb,
+		0x874a1de43587f169,
+		0xbf29ace8768a21d5,
+		0xcea14d2a958c2f43,
+		0xa49d2e69816e3d9f,
+		0xce2846fbaf736c1d,
+		0x2ae8c91ede546c79,
+		0x7ba48961fc478ae5,
+		0x7ac5de621d5cba63,
+		0xe1d583c3284da7bf,
+		0x863712465961e73d,
+		0x5a164bd98763f5a9,
+		0x87adf25dc5892617,
+		0x3b9f518ed47b2583,
+		0x645b9f3dc16b43df,
+		0x2879bf4dce4f625d,
+		0x5b843c732f5371c9,
+		0x6a8179e43d459f27,
+		0x68ace4165c47ae93,
+		0x6de1b4f657389bef,
+		0xa5f31979873ecb6d,
+		0x425a1f9cb641fad9,
+		0xba78652fe8651b47,
+		0xea7c3811f45729b3,
+		0x5c94bfd3246b5931,
+		0xb1ec2346513c468d,
+		0x59731e254d2e65f9,
+		0xb851f73a9e32a467,
+		0x264ec3aa9c26a4d3,
+		0xe4b158cedb49c351,
+		0xa8c3f24fe739c1ad,
+		0x2978561fe63cdf1b,
+		0x7c8256d439421f87,
+		0x4c8f2ae767452de3,
+		0x837f6baa95384d61,
+		0xab63e9f871284abd,
+		0x126cd3798f1d6a3b,
+		0xc63e18dcbd1f69a7,
+		0xfa176d5fed23b915,
+		0x9437ed21fb25c781,
+		0x84c9b3d32917b5ed,
+		0xd4c7b9e4381ae45b,
+		0xba9e1f76561df3c7,
+		0xc7941a5cb9612435,
+		0x9b54f13dc72653a1,
+		0x365eab4dc438621f,
+		0x48e6932bade85f6b,
+		0x769b31fdcbfa6ed7,
+		0xa825fb421bfe9d45,
+		0xef21d58549f2acb1,
+		0x8f9cda1658e4ca2f,
+		0x65798bc546f5e98b,
+		0x8cf19b2764d9e8f7,
+		0x591f2edcb4fd1975,
+		0x94d125acb4ef37d1,
+		0xfb167e3ed1e2564f,
+		0x8b63fe4321f564ab,
+		0xdc91ae643fea8429,
+		0x21fbe3c54deca295,
+		0x15b3f7e769cda2f1,
+		0xef2965c878c1be5f,
+		0xdb7612f986a3decb,
+		0x538dcf2cb5c6fd39,
+		0x589d7421f4e91da5,
+		0xa98cb4f326ed4c13,
+		0x5ed9f8c542ce3a7f,
+		0x8cdfe7a761d258eb,
+		0xf9821a476fd47859,
+		0xf93aeb176ed897c5,
+		0xc86213fa9adcb743,
+		0xbe45218dc7adb49f,
+		0xa8d62b41f8b2e41d,
+		0x85943bd218c4f279,
+		0x6e25df9547c812e5,
+		0xf41e697987db4163,
+		0x5d39e417629b3eaf,
+		0xb23c9e4981af5e2d,
+		0x58d24f3bafb26d89,
+		0xdae2967dcda48bf5,
+		0x7641c8d1fdc8ab73,
+		0x43ba69d21b79a8cf,
+		0x93e86c73279ec84d,
+		0x8fcd7a3547a1f6b9,
+		0x264938cba9c51827,
+		0xf9123d7cb5c82693,
+		0x3df6e54cb2a934ef,
+		0x47f1d8cfe1ac536d,
+		0x2b643e9dce8f62d9,
+		0x7a9c86f32fb3a147,
+		0x83bf76132d859fa3,
+		0xd7c824b65c98be21,
+		0x92adf6154869bc7d,
+		0xda948158756cdbe9,
+		0x83b941fed8a21c57,
+		0x7da125ffe6952ac3,
+		0x192e65c1f3b85a41,
+		0x89ade3f2128a479d,
+		0x8e9671c5429d671b,
+		0x5bdf42643e6f9587,
+		0xedcf6a387d82a5e3,
+		0xb75ef84bad97c461,
+		0xc247efbba967c2bd,
+		0x87e4a52ed87ae13b,
+		0xc38ae17ed45cef97,
+		0xe1a35d6547812ef3,
+		0xd2a518c436954e71,
+		0xa19d8f3652764bcd,
+		0x9f1d5ca981796c4b,
+		0x7b152fe98f4d6ab7,
+		0x5a76138cbd6f9a25,
+		0xd791625fed63c891,
+		0xc6b7193fe954b6fd,
+		0x694d5fc21a48e56b,
+		0xe86f15c3285af4d7,
+		0xc6a45fe8798e1645,
+		0x3467f9cba78254b1,
+		0xc371d24cb485632f,
+		0x17f3469ed257618b,
+		0x9edf164cbd396fe7,
+		0xab196341fd3c9e65,
+		0xe3f75ab32b4f9dc1,
+		0x36ec25854a52cb3f,
+		0xf9b12c465834ea9b,
+		0x3afc7de76847fa19,
+		0x6187f9dcb74c1a85,
+		0x7e325afcb65d38e1,
+		0x317986aed361475f,
+		0x2e3bd941f14365cb,
+		0xd3ec875321478539,
+		0x5ba2f8354f2b93a5,
+		0x6d834f187e5db413,
+		0xe387af476a3eb17f,
+		0x14bce8a87832cfdb,
+		0x612d5afcb825fe49,
+		0xa368e7bed7381eb5,
+		0xc3b69271f75b4d23,
+		0xdaf8bce2152d3b8f,
+		0x2e5bd877643159fb,
+		0xdfb514e981237a69,
+		0x4932bcd87f1698d5,
+		0xae8dc52a9e1ab853,
+		0xb63c5249891cb5af,
+		0xdc34981cb91fc52d,
+		0xbc342f1fea12f389,
+		0xf78b6a254a2713f5,
+		0x13f4cad7691a4273,
+		0xde9a32b8762a41cf,
+		0xda54e379841c5f3d,
+		0x624e713cb3216ea9,
+		0x93f216bbaef39d17,
+		0xa2618f7cbdf5ac83,
+		0x263ebf8dc8e6a9df,
+		0x4cb6e8d218fac95d,
+		0xa31f6ce326fde7c9,
+		0x3d142c576af21937,
+		0xcdaf586a98f527a3,
+		0x91a36d2cb6f95721,
+		0x3ec6a17cb2fa547d,
+		0x1239aeccb1fc63e9,
+		0xfb43825dcedf9257,
+		0xde4c15732fe4a1c3,
+		0x1a7c3be54cd6bf31,
+		0x26db4c5439c6be8d,
+		0xd8b1ae6546b8dcf9,
+		0x1f64d53985bdfc67,
+		0x69732bdba7e12bd3,
+		0xeb45678ed7e64b51,
+		0x96e4bd71f2e648ad,
+		0xd2bf368213ea682b,
+		0x284deb6431ed8697,
+		0xe9dcf3a54dbe96f3,
+		0x5e619cf98ed3c571,
+		0x93ed18f879a5b3cd,
+		0x9e381bdba9c8e24b,
+		0x67a9248ed6caf1b7,
+		0x1a596c41f8ce3125,
+		0x5192874437c24f81,
+		0xb174a6d325a34ced,
+		0xda81265542c76d5b,
+		0xac2e47d651d96bc7,
+		0x3cf2b5d87fad9b35,
+		0x23419cf87d8fb9a1,
+		0xe21bc6fedba3c81f,
+		0x37a4d211f9a4e67b,
+		0x6b928c5219a8f5e7,
+		0xafc892b439bc1765,
+		0x758ad1e767ae35c1,
+		0x3a48cf5a97b1643f,
+		0x5cf3647ba3c4629b,
+		0x7f54e32ed3c78219,
+		0x92dba3fdce8a9f75,
+		0xe3d68ac1fc7b9ed1,
+		0xde397c621b7eac4f,
+		0xc6fa74543972ecab,
+		0x3adf98554a85fb29,
+		0xa32cb97767a81b95,
+		0x6b18592ba68b39f1,
+		0xfca2e3dcb49d386f,
+		0x816b3a2fe39156db,
+		0x1543aec1f1b38649,
+		0x391bec8321a794b5,
+		0xf6ba25154f8ab523,
+		0xfd3cb1e54d6cb28f,
+		0x8cfab766596ec1fb,
+		0x42615c798a72ef59,
+		0xd84c536cb9861fc5,
+		0x4ab79f1ed7892e43,
+		0x3a879cdfe46a3c9f,
+		0xc6fae143247e5b1d,
+		0x8fa3571543816b79,
+		0xfc371957617389e5,
+		0x25acbf498f57b963,
+		0xef2dc9187d48a6bf,
+		0xf17d62ba9a5bc63d,
+		0x4b2af98dc85fe4a9,
+		0x918cb431fb942517,
+		0xe38da6c21b972483,
+		0x768f9a54376842df,
+		0x6c9d7a19847b615d,
+		0xbfa1ce28724d5fb9,
+		0x759e1dfcb3619e27,
+		0x187d6a9cbf54ad93,
+		0x36742f1cbc359aef,
+		0xdbe5c6a1fb38ca6d,
+		0x27b89ca21a3be8d9,
+		0x3e8bc6432a3ef947,
+		0xbf385d187a6428b3,
+		0x14c273acba675831,
+		0xe5a6932cb639458d,
+		0xf63bda5dc23b64f9,
+		0x29bc83aed14e9367,
+		0x1dc8a5ffef51a2d3,
+		0x9fa824643f46c251,
+		0x47f2b5843c25bf9d,
+		0xb74ec8265a38de1b,
+		0x94e2db16592bfd87,
+		0xaef6185a984f1ce3,
+		0x8be21c7ed9534c61,
+		0x9a3c174fe62549bd,
+		0xe45a1c71f428693b,
+		0x4ec8d2b2132c68a7,
+		0x9d23c417623ea815,
+		0xd25b6e487f32c681,
+		0x4ec98fa87c13b4ed,
+		0x7a8b421a9c17e35b,
+		0xf2a189dcba19f2c7,
+		0xfd7a6b1fea4d1235,
+		0x8234f79fe83f42a1,
+		0x4cf78d1437124efd,
+		0x475e1c9437145e6b,
+		0xab8c239653186cd7,
+		0x6ecbd1a9821b9c45,
+		0x21b5f3776efd9ab1,
+		0x3f48c2587adeb92f,
+		0x3fa5b42dcaf2e78b,
+		0x5831fa7dc9d4e6f7,
+		0xf6b7ac332bfa1875,
+		0x68925d7548fb36d1,
+		0x7c2b84a767ed354f,
+		0x695ce3b985f163ab,
+		0xc1a6758cb4f58329,
+		0x324ae85dc2f7a195,
+		0x3c2b4d5badc89fe1,
+		0x5a3fc84fe9cbad5f,
+		0x2bf74862189fadcb,
+		0xe6fb9a854ad2fc39,
+		0xfd5eab3549e61ca5,
+		0x391afb4878e94b13,
+		0x276f9ed985db397f,
+		0x1ea67c4a93cd47eb,
+		0x415a37bed3e18759,
+		0x14358921f1e396c5,
+		0xd84165f321e8b643,
+		0xe3c584632ec8b39f,
+		0x14fe69765eabc31d,
+		0x13bf2a765abfe179,
+		0xe5a3f8ba9ac421e5,
+		0x43265adcb9c72f53,
+		0x1543f78dc5b73daf,
+		0x5164bdc1f4ba5c2d,
+		0x5273b4d213be5c89,
+		0xc21fa6d543c18af5,
+		0xb38a295761d4ba73,
+		0xac6398754e95a7cf,
+		0x81279ed76ea9c74d,
+		0xc83f42187a8ce5b9,
+		0x43f7958dc9aef527,
+		0x7ac19461fac42593,
+		0xcbf98d3218a643ef,
+		0xdf7ec6b437b9526d,
+		0x1acd24e654ab61d9,
+		0x95cfb8a762ad8f37,
+		0x192fc34982b19ea3,
+		0x967f8d5baf95bd21,
+		0x6132dc9bae85cb7d,
+		0x8de153b1fb67dae9,
+		0x82e4a6b21b8cfa57,
+		0x9ae638c54a8f19c3,
+		0x9ae486587ab35941,
+		0x2e36dc1987a5469d,
+		0x4fb7932dc4a9761b,
+		0x3f958abed2ac9487,
+		0x7d29148dc18d94e3,
+		0x1a4fb3cfef92c361,
+		0xf6b7da132f74c1bd,
+		0xdf524e843c76df2b,
+		0x4a19bd543b58fe97,
+		0x8d5217b7697b1df3,
+		0xb875649ba98f3d71,
+		0x4d73825cb6724acd,
+		0x3b52cadfe3856a4b,
+		0xe96a8b41f25869b7,
+		0x7e2538a2137ca925,
+		0x93af56b5426eb791,
+		0xf3b987154e61b5fd,
+		0x5e7fd3198d73e46b,
+		0xf87edbca9b56f3d7,
+		0xe8f537cedc8b1345,
+		0x8cf39d6fe97d43b1,
+		0x63a85feed87e512f,
+		0xcb53f98218625f7b,
+		0xe97adb6323546de7,
+		0x368aef5872489d65,
+		0xaecd6138725a9bc1,
+		0x45b928e87e4dba3f,
+		0xed7bc8fbad41e89b,
+		0x642a315edc54f819,
+		0x892ea651fc471985,
+		0x371d8ba32b5a37e1,
+		0xfd6819a3294c365f,
+		0xa47df9e7673f54cb,
+		0x647eaf9cb7628439,
+		0x9a32468dc34692a5,
+		0x8fc4139ed469b213,
+		0x7c948edcbd29ae6f,
+		0x7a68d5e1f92caedb,
+		0xdecb15432c31fd49,
+		0xb28d5c176c341db5,
+		0x2c9ba6487b584c23,
+		0xf4ea215767293a8f,
+		0x3125d6aa962c48fb,
+		0x8937d52dc42f5869,
+		0x5423dbcfe43297d5,
+		0x74d835b1f126b753,
+		0x59fe4d743127b4af,
+		0xf217ce465f1ac42d,
+		0x12dba9c65c1de289,
+		0x75ac4f3a9c4312f5,
+		0x8129eaccbc264173,
+		0x9d216ceba8163ebf,
+		0x64ab3e8dc7195e3d,
+		0xe632b871f41c5da9,
+		0x27de19f4352f8c17,
+		0x7fb493a76512ab83,
+		0xfba87d576214a8df,
+		0x52137ba54ef6c85d,
+		0x3bfa76465bf8e6c9,
+		0xfbc5d27a9aecf637,
+		0xd5a12b8dc9ef16a3,
+		0xfd3c798feaf45621,
+		0xac4e8d5219f6537d
+};
+
+}  // namespace detail
+
+}  // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/functors/EngineCaller.hpp b/corsika/detail/framework/random/random_iterator/detail/functors/EngineCaller.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b20ede7fd3a925e2bee0588b18297718e2a6888a
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/functors/EngineCaller.hpp
@@ -0,0 +1,90 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * EngineCaller.hpp
+ *
+ *  Created on: 23/02/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+namespace random_iterator {
+
+namespace detail {
+
+template<typename DistibutionType, typename EngineType>
+struct EngineCaller
+{
+	typedef EngineType   engine_type;
+	typedef typename     engine_type::state_type     state_type;
+	typedef typename     engine_type::seed_type       seed_type;
+	typedef typename     engine_type::advance_type advance_type;
+	typedef typename     engine_type::init_type       init_type;
+
+	typedef DistibutionType distribution_type;
+	typedef typename  distribution_type::result_type   result_type;
+
+	EngineCaller() = delete;
+
+	EngineCaller(distribution_type const& dist , seed_type seed, uint32_t stream ):
+		distribution_(dist),
+		seed_(seed),
+		stream_(stream)
+	{}
+
+	EngineCaller( EngineCaller<DistibutionType, EngineType> const& other ):
+		distribution_(other.distribution_),
+		seed_(other.seed_),
+		stream_(other.stream_)
+	{ }
+
+	EngineCaller<DistibutionType, EngineType>&
+	operator=( EngineCaller<DistibutionType, EngineType> const& other ){
+
+		if(this == &other) return *this;
+
+			distribution_   = other.distribution_  ;
+			seed_   = other.seed_  ;
+			stream_ = other.stream_;
+
+		 return *this;
+     }
+
+	inline result_type operator()(advance_type n) const {
+
+		EngineType eng(seed_, stream_ );
+		eng.discard(n);
+
+		return static_cast<distribution_type>(distribution_)(eng);
+
+	}
+
+	distribution_type distribution_;
+	seed_type seed_;
+	uint32_t stream_;
+};
+
+}  // namespace detail
+
+} // namespace random_iterator
diff --git a/corsika/detail/framework/random/random_iterator/detail/mulhilo64.h b/corsika/detail/framework/random/random_iterator/detail/mulhilo64.h
new file mode 100644
index 0000000000000000000000000000000000000000..db302b745423cf65eb6b8b060007ca6ba5fcd2e2
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/mulhilo64.h
@@ -0,0 +1,56 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * mulhilo64.h
+ *
+ *  Created on: 12/03/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <cmath>
+#include <cstdint>
+
+#ifdef __powerpc64__
+static inline uint64_t  _mulhilo_asm_64(uint64_t ax, uint64_t b, uint64_t *hip){
+    uint64_t dx;
+    __asm__("\n\t"
+        "mulhdu" " %2\n\t"
+        : "=a"(ax), "=d"(dx)
+        : "r"(b), "0"(ax)
+        );
+    *hip = dx;
+    return ax;
+}
+#else
+static inline uint64_t  _mulhilo_asm_64(uint64_t ax, uint64_t b, uint64_t *hip){
+    uint64_t dx;
+    __asm__("\n\t"
+        "mulq" " %2\n\t"
+        : "=a"(ax), "=d"(dx)
+        : "r"(b), "0"(ax)
+        );
+    *hip = dx;
+    return ax;
+}
+
+#endif /* __powerpc64__ */
diff --git a/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_tbb_windef.h b/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_tbb_windef.h
new file mode 100644
index 0000000000000000000000000000000000000000..e43d9db696e9d023ad3a6ca1431393418a2832a5
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_tbb_windef.h
@@ -0,0 +1,69 @@
+/*
+    Copyright (c) 2005-2020 Intel Corporation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef __RANDOM_ITERATOR_TBB_tbb_windef_H
+#error Do not #include this internal file directly; use public TBB headers instead.
+#endif /* __RANDOM_ITERATOR_TBB_tbb_windef_H */
+
+// Check that the target Windows version has all API calls required for TBB.
+// Do not increase the version in condition beyond 0x0500 without prior discussion!
+#if defined(_WIN32_WINNT) && _WIN32_WINNT<0x0501
+#error TBB is unable to run on old Windows versions; _WIN32_WINNT must be 0x0501 or greater.
+#endif
+
+#if !defined(_MT)
+#error TBB requires linkage with multithreaded C/C++ runtime library. \
+       Choose multithreaded DLL runtime in project settings, or use /MD[d] compiler switch.
+#endif
+
+// Workaround for the problem with MVSC headers failing to define namespace std
+namespace std {
+  using ::size_t; using ::ptrdiff_t;
+}
+
+#define __RANDOM_ITERATOR_TBB_STRING_AUX(x) #x
+#define __RANDOM_ITERATOR_TBB_STRING(x) __RANDOM_ITERATOR_TBB_STRING_AUX(x)
+
+// Default setting of RANDOM_ITERATOR_TBB_USE_DEBUG
+#ifdef RANDOM_ITERATOR_TBB_USE_DEBUG
+#    if RANDOM_ITERATOR_TBB_USE_DEBUG
+#        if !defined(_DEBUG)
+#            pragma message(__FILE__ "(" __RANDOM_ITERATOR_TBB_STRING(__LINE__) ") : Warning: Recommend using /MDd if compiling with RANDOM_ITERATOR_TBB_USE_DEBUG!=0")
+#        endif
+#    else
+#        if defined(_DEBUG)
+#            pragma message(__FILE__ "(" __RANDOM_ITERATOR_TBB_STRING(__LINE__) ") : Warning: Recommend using /MD if compiling with RANDOM_ITERATOR_TBB_USE_DEBUG==0")
+#        endif
+#    endif
+#endif
+
+#if (__RANDOM_ITERATOR_TBB_BUILD || __RANDOM_ITERATOR_TBBMALLOC_BUILD || __RANDOM_ITERATOR_TBBBIND_BUILD) && !defined(__RANDOM_ITERATOR_TBB_NO_IMPLICIT_LINKAGE)
+#define __RANDOM_ITERATOR_TBB_NO_IMPLICIT_LINKAGE 1
+#endif
+
+#if _MSC_VER
+    #if !__RANDOM_ITERATOR_TBB_NO_IMPLICIT_LINKAGE
+        #ifdef __RANDOM_ITERATOR_TBB_LIB_NAME
+	        #pragma comment(lib, __RANDOM_ITERATOR_TBB_STRING(__RANDOM_ITERATOR_TBB_LIB_NAME))
+        #else
+			#ifdef _DEBUG
+				#pragma comment(lib, "tbb_debug.lib")
+			#else
+				#pragma comment(lib, "tbb.lib")
+			#endif
+        #endif
+    #endif
+#endif
diff --git a/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_template_helpers.h b/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_template_helpers.h
new file mode 100644
index 0000000000000000000000000000000000000000..f9f4de0c8e9dafdcd5e43d967d9171594bce97ea
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/tbb/internal/_template_helpers.h
@@ -0,0 +1,311 @@
+/*
+    Copyright (c) 2005-2020 Intel Corporation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef __RANDOM_ITERATOR_TBB_template_helpers_H
+#define __RANDOM_ITERATOR_TBB_template_helpers_H
+
+#include <utility>
+#include <cstddef>
+#include "../tbb_config.h"
+#if __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT
+#include <type_traits>
+#endif
+#if __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+#include <iterator>
+#include <memory> // allocator_traits
+#endif
+
+namespace random_iterator_tbb { namespace internal {
+
+//! Enables one or the other code branches
+template<bool Condition, typename T = void> struct enable_if {};
+template<typename T> struct enable_if<true, T> { typedef T type; };
+
+//! Strips its template type argument from cv- and ref-qualifiers
+template<typename T> struct strip                     { typedef T type; };
+template<typename T> struct strip<const T>            { typedef T type; };
+template<typename T> struct strip<volatile T>         { typedef T type; };
+template<typename T> struct strip<const volatile T>   { typedef T type; };
+template<typename T> struct strip<T&>                 { typedef T type; };
+template<typename T> struct strip<const T&>           { typedef T type; };
+template<typename T> struct strip<volatile T&>        { typedef T type; };
+template<typename T> struct strip<const volatile T&>  { typedef T type; };
+//! Specialization for function pointers
+template<typename T> struct strip<T(&)()>             { typedef T(*type)(); };
+#if __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT
+template<typename T> struct strip<T&&>                { typedef T type; };
+template<typename T> struct strip<const T&&>          { typedef T type; };
+template<typename T> struct strip<volatile T&&>       { typedef T type; };
+template<typename T> struct strip<const volatile T&&> { typedef T type; };
+#endif
+//! Specialization for arrays converts to a corresponding pointer
+template<typename T, std::size_t N> struct strip<T(&)[N]>                { typedef T* type; };
+template<typename T, std::size_t N> struct strip<const T(&)[N]>          { typedef const T* type; };
+template<typename T, std::size_t N> struct strip<volatile T(&)[N]>       { typedef volatile T* type; };
+template<typename T, std::size_t N> struct strip<const volatile T(&)[N]> { typedef const volatile T* type; };
+
+//! Detects whether two given types are the same
+template<class U, class V> struct is_same_type      { static const bool value = false; };
+template<class W>          struct is_same_type<W,W> { static const bool value = true; };
+
+template<typename T> struct is_ref { static const bool value = false; };
+template<typename U> struct is_ref<U&> { static const bool value = true; };
+
+//! Partial support for std::is_integral
+template<typename T> struct is_integral_impl             { static const bool value = false; };
+template<>           struct is_integral_impl<bool>       { static const bool value = true;  };
+template<>           struct is_integral_impl<char>       { static const bool value = true;  };
+#if __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+template<>           struct is_integral_impl<char16_t>   { static const bool value = true;  };
+template<>           struct is_integral_impl<char32_t>   { static const bool value = true;  };
+#endif
+template<>           struct is_integral_impl<wchar_t>    { static const bool value = true;  };
+template<>           struct is_integral_impl<short>      { static const bool value = true;  };
+template<>           struct is_integral_impl<int>        { static const bool value = true;  };
+template<>           struct is_integral_impl<long>       { static const bool value = true;  };
+template<>           struct is_integral_impl<long long>  { static const bool value = true;  };
+
+template<typename T>
+struct is_integral : is_integral_impl<typename strip<T>::type> {};
+
+#if __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+//! std::void_t internal implementation (to avoid GCC < 4.7 "template aliases" absence)
+template<typename...> struct void_t { typedef void type; };
+#endif
+
+#if __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT
+
+// Generic SFINAE helper for expression checks, based on the idea demonstrated in ISO C++ paper n4502
+template<typename T, typename, template<typename> class... Checks>
+struct supports_impl { typedef std::false_type type; };
+template<typename T, template<typename> class... Checks>
+struct supports_impl<T, typename void_t<Checks<T>...>::type, Checks...> { typedef std::true_type type; };
+
+template<typename T, template<typename> class... Checks>
+using supports = typename supports_impl<T, void, Checks...>::type;
+
+#endif /* __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT */
+
+#if __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+
+//! Allows to store a function parameter pack as a variable and later pass it to another function
+template< typename... Types >
+struct stored_pack;
+
+template<>
+struct stored_pack<>
+{
+    typedef stored_pack<> pack_type;
+    stored_pack() {}
+
+    // Friend front-end functions
+    template< typename F, typename Pack > friend void call( F&& f, Pack&& p );
+    template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p );
+
+protected:
+    // Ideally, ref-qualified non-static methods would be used,
+    // but that would greatly reduce the set of compilers where it works.
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, const pack_type& /*pack*/, Preceding&&... params ) {
+        return std::forward<F>(f)( std::forward<Preceding>(params)... );
+    }
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, pack_type&& /*pack*/, Preceding&&... params ) {
+        return std::forward<F>(f)( std::forward<Preceding>(params)... );
+    }
+};
+
+template< typename T, typename... Types >
+struct stored_pack<T, Types...> : stored_pack<Types...>
+{
+    typedef stored_pack<T, Types...> pack_type;
+    typedef stored_pack<Types...> pack_remainder;
+    // Since lifetime of original values is out of control, copies should be made.
+    // Thus references should be stripped away from the deduced type.
+    typename strip<T>::type leftmost_value;
+
+    // Here rvalue references act in the same way as forwarding references,
+    // as long as class template parameters were deduced via forwarding references.
+    stored_pack( T&& t, Types&&... types )
+    : pack_remainder(std::forward<Types>(types)...), leftmost_value(std::forward<T>(t)) {}
+
+    // Friend front-end functions
+    template< typename F, typename Pack > friend void call( F&& f, Pack&& p );
+    template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p );
+
+protected:
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, pack_type& pack, Preceding&&... params ) {
+        return pack_remainder::template call<Ret>(
+            std::forward<F>(f), static_cast<pack_remainder&>(pack),
+            std::forward<Preceding>(params)... , pack.leftmost_value
+        );
+    }
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, const pack_type& pack, Preceding&&... params ) {
+        return pack_remainder::template call<Ret>(
+            std::forward<F>(f), static_cast<const pack_remainder&>(pack),
+            std::forward<Preceding>(params)... , pack.leftmost_value
+        );
+    }
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, pack_type&& pack, Preceding&&... params ) {
+        return pack_remainder::template call<Ret>(
+            std::forward<F>(f), static_cast<pack_remainder&&>(pack),
+            std::forward<Preceding>(params)... , std::move(pack.leftmost_value)
+        );
+    }
+};
+
+//! Calls the given function with arguments taken from a stored_pack
+template< typename F, typename Pack >
+void call( F&& f, Pack&& p ) {
+    strip<Pack>::type::template call<void>( std::forward<F>(f), std::forward<Pack>(p) );
+}
+
+template< typename Ret, typename F, typename Pack >
+Ret call_and_return( F&& f, Pack&& p ) {
+    return strip<Pack>::type::template call<Ret>( std::forward<F>(f), std::forward<Pack>(p) );
+}
+
+template< typename... Types >
+stored_pack<Types...> save_pack( Types&&... types ) {
+    return stored_pack<Types...>( std::forward<Types>(types)... );
+}
+
+#endif /* __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+
+#if __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT
+
+using std::index_sequence;
+using std::make_index_sequence;
+
+#elif __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT
+
+template<std::size_t... S> class index_sequence {};
+
+template<std::size_t N, std::size_t... S>
+struct make_index_sequence_impl : make_index_sequence_impl < N - 1, N - 1, S... > {};
+
+template<std::size_t... S>
+struct make_index_sequence_impl <0, S...> {
+    using type = index_sequence<S...>;
+};
+
+template<std::size_t N>
+using make_index_sequence = typename tbb::internal::make_index_sequence_impl<N>::type;
+
+#endif /* __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT */
+
+#if __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+template<typename... Args>
+struct conjunction;
+
+template<typename First, typename... Args>
+struct conjunction<First, Args...>
+    : std::conditional<bool(First::value), conjunction<Args...>, First>::type {};
+
+template<typename T>
+struct conjunction<T> : T {};
+
+template<>
+struct conjunction<> : std::true_type {};
+
+#endif
+
+#if __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+
+template< typename Iter >
+using iterator_value_t = typename std::iterator_traits<Iter>::value_type;
+
+template< typename Iter >
+using iterator_key_t = typename std::remove_const<typename iterator_value_t<Iter>::first_type>::type;
+
+template< typename Iter >
+using iterator_mapped_t = typename iterator_value_t<Iter>::second_type;
+
+template< typename A > using value_type = typename A::value_type;
+template< typename A > using alloc_ptr_t = typename std::allocator_traits<A>::pointer;
+template< typename A > using has_allocate = decltype(std::declval<alloc_ptr_t<A>&>() = std::declval<A>().allocate(0));
+template< typename A > using has_deallocate = decltype(std::declval<A>().deallocate(std::declval<alloc_ptr_t<A>>(), 0));
+
+// value_type should be checked first because it can be used in other checks (via allocator_traits)
+template< typename T >
+using is_allocator = supports<T, value_type, has_allocate, has_deallocate>;
+
+#if __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT
+
+template< typename T >
+static constexpr bool is_allocator_v = is_allocator<T>::value;
+
+#endif /*__RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES */
+
+template< std::size_t N, typename... Args >
+struct pack_element {
+    using type = void;
+};
+
+template< std::size_t N, typename T, typename... Args >
+struct pack_element<N, T, Args...> {
+    using type = typename pack_element<N - 1, Args...>::type;
+};
+
+template< typename T, typename... Args >
+struct pack_element<0, T, Args...> {
+    using type = T;
+};
+
+template< std::size_t N, typename... Args >
+using pack_element_t = typename pack_element<N, Args...>::type;
+
+// Helper alias for heterogeneous lookup functions in containers
+// template parameter K and std::conditional are needed to provide immediate context
+// and postpone getting is_trasparent from the compare functor until method instantiation.
+template <typename Comp, typename K>
+using is_transparent = typename std::conditional<true, Comp, K>::type::is_transparent;
+
+#endif /* __RANDOM_ITERATOR_TBB_CPP11_PRESENT */
+
+template <typename F>
+struct body_arg_detector;
+
+template <typename Callable, typename ReturnType, typename T>
+struct body_arg_detector<ReturnType(Callable::*)(T)> {
+    typedef T arg_type;
+};
+
+template <typename Callable, typename ReturnType, typename T>
+struct body_arg_detector<ReturnType(Callable::*)(T) const> {
+    typedef T arg_type;
+};
+
+#if __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+using std::conditional;
+#else
+template <bool C, typename T, typename U>
+struct conditional {
+    typedef U type;
+};
+
+template <typename T, typename U>
+struct conditional<true, T, U> {
+    typedef T type;
+};
+#endif
+
+} } // namespace internal, namespace random_iterator_tbb
+
+#endif /* __RANDOM_ITERATOR_TBB_template_helpers_H */
diff --git a/corsika/detail/framework/random/random_iterator/detail/tbb/iterators.h b/corsika/detail/framework/random/random_iterator/detail/tbb/iterators.h
new file mode 100644
index 0000000000000000000000000000000000000000..46b407aaaeb727307caaaffe458c42767610233e
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/tbb/iterators.h
@@ -0,0 +1,366 @@
+/*
+    Copyright (c) 2017-2020 Intel Corporation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef __RANDOM_ITERATOR_TBB_iterators_H
+#define __RANDOM_ITERATOR_TBB_iterators_H
+
+#include <iterator>
+#include <limits>
+
+#include "tbb_config.h"
+#include "tbb_stddef.h"
+
+#if __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+
+#include <type_traits>
+
+namespace random_iterator_tbb {
+
+
+template <typename Type>
+class constant_iterator {
+
+public:
+    typedef typename std::size_t difference_type;
+    typedef Type value_type;
+    typedef const Type* pointer;
+    typedef const Type& reference;
+    typedef std::random_access_iterator_tag iterator_category;
+
+    constant_iterator() : my_value() {}
+    explicit constant_iterator(Type init) : my_value(init) {}
+
+    inline reference operator*() const { return my_value; }
+    inline value_type operator[](difference_type i) const { return my_value; }
+
+    inline difference_type operator-(const constant_iterator<Type>& it) const { return 0; }
+
+    inline constant_iterator<Type>& operator+=(difference_type forward)  const { return *this; }
+    inline constant_iterator<Type>& operator-=(difference_type backward) const { return *this; }
+    inline constant_iterator<Type>& operator++() const { return *this; }
+    inline constant_iterator<Type>& operator--() const { return *this; }
+
+    inline constant_iterator<Type> operator++(int) { return constant_iterator<Type>(my_value); }
+
+    inline constant_iterator<Type> operator--(int) { return constant_iterator<Type>(my_value); }
+
+    inline constant_iterator<Type> operator-(difference_type backward) const { return constant_iterator<Type>(my_value); }
+    inline constant_iterator<Type> operator+(difference_type forward) const { return constant_iterator<Type>(my_value); }
+    friend constant_iterator<Type> operator+(difference_type forward, const constant_iterator<Type> it) { return constant_iterator<Type>(*it); }
+
+    inline bool operator==(const constant_iterator<Type>& it) const { return  (my_value - *it) == 0; }
+    inline bool operator!=(const constant_iterator<Type>& it) const { return !(my_value == *it); }
+
+private:
+   const value_type my_value;
+};
+
+
+template <typename IntType>
+class counting_iterator {
+	__RANDOM_ITERATOR_TBB_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer, "Cannot instantiate counting_iterator with a non-integer type");
+public:
+	typedef typename std::make_signed<IntType>::type difference_type;
+	typedef IntType value_type;
+	typedef const IntType* pointer;
+	typedef const IntType& reference;
+	typedef std::random_access_iterator_tag iterator_category;
+
+	counting_iterator() : my_counter() {}
+	explicit counting_iterator(IntType init) : my_counter(init) {}
+
+	inline reference operator*() const { return my_counter; }
+	inline value_type operator[](difference_type i) const { return *(*this + i); }
+
+	inline difference_type operator-(const counting_iterator& it) const { return my_counter - it.my_counter; }
+
+	inline counting_iterator& operator+=(difference_type forward) { my_counter += forward; return *this; }
+	inline counting_iterator& operator-=(difference_type backward) { return *this += -backward; }
+	inline counting_iterator& operator++() { return *this += 1; }
+	inline counting_iterator& operator--() { return *this -= 1; }
+
+	inline counting_iterator operator++(int) {
+		counting_iterator it(*this);
+		++(*this);
+		return it;
+	}
+	inline counting_iterator operator--(int) {
+		counting_iterator it(*this);
+		--(*this);
+		return it;
+	}
+
+	inline counting_iterator operator-(difference_type backward) const { return counting_iterator(my_counter - backward); }
+	inline  counting_iterator operator+(difference_type forward) const { return counting_iterator(my_counter + forward); }
+	friend counting_iterator operator+(difference_type forward, const counting_iterator it) { return it + forward; }
+
+	inline bool operator==(const counting_iterator& it) const { return *this - it == 0; }
+	inline bool operator!=(const counting_iterator& it) const { return !(*this == it); }
+	inline bool operator<(const counting_iterator& it) const {return *this - it < 0; }
+	inline bool operator>(const counting_iterator& it) const { return it < *this; }
+	inline bool operator<=(const counting_iterator& it) const { return !(*this > it); }
+	inline bool operator>=(const counting_iterator& it) const { return !(*this < it); }
+
+private:
+	IntType my_counter;
+};
+} //namespace random_iterator_tbb
+
+
+#include <tuple>
+
+#include "internal/_template_helpers.h" // index_sequence, make_index_sequence
+
+namespace random_iterator_tbb {
+namespace internal {
+
+template<size_t N>
+struct tuple_util {
+    template<typename TupleType, typename DifferenceType>
+    static void increment(TupleType& it, DifferenceType forward) {
+        std::get<N-1>(it) += forward;
+        tuple_util<N-1>::increment(it, forward);
+    }
+    template<typename TupleType, typename DifferenceType>
+    static bool check_sync(const TupleType& it1, const TupleType& it2, DifferenceType val) {
+        if(std::get<N-1>(it1) - std::get<N-1>(it2) != val)
+            return false;
+        return tuple_util<N-1>::check_sync(it1, it2, val);
+    }
+};
+
+template<>
+struct tuple_util<0> {
+    template<typename TupleType, typename DifferenceType>
+    static void increment(TupleType&, DifferenceType) {}
+    template<typename TupleType, typename DifferenceType>
+    static bool check_sync(const TupleType&, const TupleType&, DifferenceType) { return true;}
+};
+
+template <typename TupleReturnType>
+struct make_references {
+    template <typename TupleType, std::size_t... Is>
+    TupleReturnType operator()(const TupleType& t, random_iterator_tbb::internal::index_sequence<Is...>) {
+        return std::tie( *std::get<Is>(t)... );
+    }
+};
+
+// A simple wrapper over a tuple of references.
+// The class is designed to hold a temporary tuple of reference
+// after dereferencing a zip_iterator; in particular, it is needed
+// to swap these rvalue tuples. Any other usage is not supported.
+template<typename... T>
+struct tuplewrapper : public std::tuple<typename std::enable_if<std::is_reference<T>::value, T&&>::type...> {
+    // In the context of this class, T is a reference, so T&& is a "forwarding reference"
+    typedef std::tuple<T&&...> base_type;
+    // Construct from the result of std::tie
+    tuplewrapper(const base_type& in) : base_type(in) {}
+#if __INTEL_COMPILER
+    // ICC cannot generate copy ctor & assignment
+    tuplewrapper(const tuplewrapper& rhs) : base_type(rhs) {}
+    tuplewrapper& operator=(const tuplewrapper& rhs) {
+        *this = base_type(rhs);
+        return *this;
+    }
+#endif
+    // Assign any tuple convertible to std::tuple<T&&...>: *it = a_tuple;
+    template<typename... U>
+    tuplewrapper& operator=(const std::tuple<U...>& other) {
+        base_type::operator=(other);
+        return *this;
+    }
+#if _LIBCPP_VERSION
+    // (Necessary for libc++ tuples) Convert to a tuple of values: v = *it;
+    operator std::tuple<typename std::remove_reference<T>::type...>() { return base_type(*this); }
+#endif
+    // Swap rvalue tuples: swap(*it1,*it2);
+    friend void swap(tuplewrapper&& a, tuplewrapper&& b) {
+        std::swap<T&&...>(a,b);
+    }
+};
+
+} //namespace internal
+
+template <typename... Types>
+class zip_iterator {
+    __RANDOM_ITERATOR_TBB_STATIC_ASSERT(sizeof...(Types)>0, "Cannot instantiate zip_iterator with empty template parameter pack");
+    static const std::size_t num_types = sizeof...(Types);
+    typedef std::tuple<Types...> it_types;
+public:
+    typedef typename std::make_signed<std::size_t>::type difference_type;
+    typedef std::tuple<typename std::iterator_traits<Types>::value_type...> value_type;
+#if __INTEL_COMPILER && __INTEL_COMPILER < 1800 && _MSC_VER
+    typedef std::tuple<typename std::iterator_traits<Types>::reference...> reference;
+#else
+    typedef random_iterator_tbb::internal::tuplewrapper<typename std::iterator_traits<Types>::reference...> reference;
+#endif
+    typedef std::tuple<typename std::iterator_traits<Types>::pointer...> pointer;
+    typedef std::random_access_iterator_tag iterator_category;
+
+    zip_iterator() : my_it() {}
+    explicit zip_iterator(Types... args) : my_it(std::make_tuple(args...)) {}
+    zip_iterator(const zip_iterator& input) : my_it(input.my_it) {}
+    zip_iterator& operator=(const zip_iterator& input) {
+        my_it = input.my_it;
+        return *this;
+    }
+
+    reference operator*() const {
+        return random_iterator_tbb::internal::make_references<reference>()(my_it, random_iterator_tbb::internal::make_index_sequence<num_types>());
+    }
+    reference operator[](difference_type i) const { return *(*this + i); }
+
+    difference_type operator-(const zip_iterator& it) const {
+        __RANDOM_ITERATOR_TBB_ASSERT(internal::tuple_util<num_types>::check_sync(my_it, it.my_it, std::get<0>(my_it) - std::get<0>(it.my_it)),
+                     "Components of zip_iterator are not synchronous");
+        return std::get<0>(my_it) - std::get<0>(it.my_it);
+    }
+
+    zip_iterator& operator+=(difference_type forward) {
+        internal::tuple_util<num_types>::increment(my_it, forward);
+        return *this;
+    }
+    zip_iterator& operator-=(difference_type backward) { return *this += -backward; }
+    zip_iterator& operator++() { return *this += 1; }
+    zip_iterator& operator--() { return *this -= 1; }
+
+    zip_iterator operator++(int) {
+        zip_iterator it(*this);
+        ++(*this);
+        return it;
+    }
+    zip_iterator operator--(int) {
+        zip_iterator it(*this);
+        --(*this);
+        return it;
+    }
+
+    zip_iterator operator-(difference_type backward) const {
+        zip_iterator it(*this);
+        return it -= backward;
+    }
+    zip_iterator operator+(difference_type forward) const {
+        zip_iterator it(*this);
+        return it += forward;
+    }
+    friend zip_iterator operator+(difference_type forward, const zip_iterator& it) { return it + forward; }
+
+    bool operator==(const zip_iterator& it) const {
+        return *this - it == 0;
+    }
+    it_types base() const { return my_it; }
+
+    bool operator!=(const zip_iterator& it) const { return !(*this == it); }
+    bool operator<(const zip_iterator& it) const { return *this - it < 0; }
+    bool operator>(const zip_iterator& it) const { return it < *this; }
+    bool operator<=(const zip_iterator& it) const { return !(*this > it); }
+    bool operator>=(const zip_iterator& it) const { return !(*this < it); }
+private:
+    it_types my_it;
+};
+
+template<typename... T>
+zip_iterator<T...> make_zip_iterator(T... args) { return zip_iterator<T...>(args...); }
+
+template <typename UnaryFunc, typename Iter>
+class transform_iterator {
+public:
+    typedef typename std::iterator_traits<Iter>::value_type value_type;
+    typedef typename std::iterator_traits<Iter>::difference_type difference_type;
+#if __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT
+    typedef typename std::invoke_result<UnaryFunc, typename std::iterator_traits<Iter>::reference>::type reference;
+#else
+    typedef typename std::result_of<UnaryFunc(typename std::iterator_traits<Iter>::reference)>::type reference;
+#endif
+    typedef typename std::iterator_traits<Iter>::pointer pointer;
+    typedef typename std::random_access_iterator_tag iterator_category;
+
+    transform_iterator(Iter it, UnaryFunc unary_func) : my_it(it), my_unary_func(unary_func) {
+        __RANDOM_ITERATOR_TBB_STATIC_ASSERT((std::is_same<typename std::iterator_traits<Iter>::iterator_category,
+                             std::random_access_iterator_tag>::value), "Random access iterator required.");
+    }
+    transform_iterator(const transform_iterator& input) : my_it(input.my_it), my_unary_func(input.my_unary_func) { }
+    transform_iterator& operator=(const transform_iterator& input) {
+        my_it = input.my_it;
+        return *this;
+    }
+    reference operator*() const {
+        return my_unary_func(*my_it);
+    }
+    reference operator[](difference_type i) const {
+        return *(*this + i);
+    }
+    transform_iterator& operator++() {
+        ++my_it;
+        return *this;
+    }
+    transform_iterator& operator--() {
+        --my_it;
+        return *this;
+    }
+    transform_iterator operator++(int) {
+        transform_iterator it(*this);
+        ++(*this);
+        return it;
+    }
+    transform_iterator operator--(int) {
+        transform_iterator it(*this);
+        --(*this);
+        return it;
+    }
+    transform_iterator operator+(difference_type forward) const {
+        return { my_it + forward, my_unary_func };
+    }
+    transform_iterator operator-(difference_type backward) const {
+        return { my_it - backward, my_unary_func };
+    }
+    transform_iterator& operator+=(difference_type forward) {
+        my_it += forward;
+        return *this;
+    }
+    transform_iterator& operator-=(difference_type backward) {
+        my_it -= backward;
+        return *this;
+    }
+    friend transform_iterator operator+(difference_type forward, const transform_iterator& it) {
+        return it + forward;
+    }
+    difference_type operator-(const transform_iterator& it) const {
+        return my_it - it.my_it;
+    }
+    bool operator==(const transform_iterator& it) const { return *this - it == 0; }
+    bool operator!=(const transform_iterator& it) const { return !(*this == it); }
+    bool operator<(const transform_iterator& it) const { return *this - it < 0; }
+    bool operator>(const transform_iterator& it) const { return it < *this; }
+    bool operator<=(const transform_iterator& it) const { return !(*this > it); }
+    bool operator>=(const transform_iterator& it) const { return !(*this < it); }
+
+    Iter base() const { return my_it; }
+private:
+    Iter my_it;
+    const UnaryFunc my_unary_func;
+};
+
+template<typename UnaryFunc, typename Iter>
+transform_iterator<UnaryFunc, Iter> make_transform_iterator(Iter it, UnaryFunc unary_func) {
+    return transform_iterator<UnaryFunc, Iter>(it, unary_func);
+}
+
+} //namespace random_iterator_tbb
+
+#endif //__RANDOM_ITERATOR_TBB_CPP11_PRESENT
+
+#endif /* __RANDOM_ITERATOR_TBB_iterators_H */
diff --git a/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_config.h b/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_config.h
new file mode 100644
index 0000000000000000000000000000000000000000..a185aeab879de7dccf16e3e06447f237959e490a
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_config.h
@@ -0,0 +1,873 @@
+/*
+    Copyright (c) 2005-2020 Intel Corporation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef __RANDOM_ITERATOR_TBB_tbb_config_H
+#define __RANDOM_ITERATOR_TBB_tbb_config_H
+
+/** This header is supposed to contain macro definitions and C style comments only.
+    The macros defined here are intended to control such aspects of TBB build as
+    - presence of compiler features
+    - compilation modes
+    - feature sets
+    - known compiler/platform issues
+**/
+
+/* This macro marks incomplete code or comments describing ideas which are considered for the future.
+ * See also for plain comment with TODO and FIXME marks for small improvement opportunities.
+ */
+#define __RANDOM_ITERATOR_TBB_TODO 0
+
+/* Check which standard library we use. */
+/* __RANDOM_ITERATOR_TBB_SYMBOL is defined only while processing exported symbols list where C++ is not allowed. */
+#if !defined(__RANDOM_ITERATOR_TBB_SYMBOL) && !__RANDOM_ITERATOR_TBB_CONFIG_PREPROC_ONLY
+    #include <cstddef>
+#endif
+
+// Note that when ICC or Clang is in use, __RANDOM_ITERATOR_TBB_GCC_VERSION might not fully match
+// the actual GCC version on the system.
+#define __RANDOM_ITERATOR_TBB_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+
+// Prior to GCC 7, GNU libstdc++ did not have a convenient version macro.
+// Therefore we use different ways to detect its version.
+#if defined(RANDOM_ITERATOR_TBB_USE_GLIBCXX_VERSION) && !defined(_GLIBCXX_RELEASE)
+// The version is explicitly specified in our public RANDOM_ITERATOR_TBB_USE_GLIBCXX_VERSION macro.
+// Its format should match the __RANDOM_ITERATOR_TBB_GCC_VERSION above, e.g. 70301 for libstdc++ coming with GCC 7.3.1.
+#define __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION RANDOM_ITERATOR_TBB_USE_GLIBCXX_VERSION
+#elif _GLIBCXX_RELEASE && _GLIBCXX_RELEASE != __GNUC__
+// Reported versions of GCC and libstdc++ do not match; trust the latter
+#define __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION (_GLIBCXX_RELEASE*10000)
+#elif __GLIBCPP__ || __GLIBCXX__
+// The version macro is not defined or matches the GCC version; use __RANDOM_ITERATOR_TBB_GCC_VERSION
+#define __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION __RANDOM_ITERATOR_TBB_GCC_VERSION
+#endif
+
+#if __clang__
+    // according to clang documentation, version can be vendor specific
+    #define __RANDOM_ITERATOR_TBB_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
+#endif
+
+/** Target OS is either iOS* or iOS* simulator **/
+#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
+    #define __RANDOM_ITERATOR_TBB_IOS 1
+#endif
+
+#if __APPLE__
+    #if __INTEL_COMPILER && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1099 \
+                         && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101000
+        // ICC does not correctly set the macro if -mmacosx-min-version is not specified
+        #define __RANDOM_ITERATOR_TBB_MACOS_TARGET_VERSION  (100000 + 10*(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - 1000))
+    #else
+        #define __RANDOM_ITERATOR_TBB_MACOS_TARGET_VERSION  __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+    #endif
+#endif
+
+/** Preprocessor symbols to determine HW architecture **/
+
+#if _WIN32||_WIN64
+#   if defined(_M_X64)||defined(__x86_64__)  // the latter for MinGW support
+#       define __RANDOM_ITERATOR_TBB_x86_64 1
+#   elif defined(_M_IA64)
+#       define __RANDOM_ITERATOR_TBB_ipf 1
+#   elif defined(_M_IX86)||defined(__i386__) // the latter for MinGW support
+#       define __RANDOM_ITERATOR_TBB_x86_32 1
+#   else
+#       define __RANDOM_ITERATOR_TBB_generic_arch 1
+#   endif
+#else /* Assume generic Unix */
+#   if !__linux__ && !__APPLE__
+#       define __RANDOM_ITERATOR_TBB_generic_os 1
+#   endif
+#   if __RANDOM_ITERATOR_TBB_IOS
+#       define __RANDOM_ITERATOR_TBB_generic_arch 1
+#   elif __x86_64__
+#       define __RANDOM_ITERATOR_TBB_x86_64 1
+#   elif __ia64__
+#       define __RANDOM_ITERATOR_TBB_ipf 1
+#   elif __i386__||__i386  // __i386 is for Sun OS
+#       define __RANDOM_ITERATOR_TBB_x86_32 1
+#   else
+#       define __RANDOM_ITERATOR_TBB_generic_arch 1
+#   endif
+#endif
+
+#if __MIC__ || __MIC2__
+#define __RANDOM_ITERATOR_TBB_DEFINE_MIC 1
+#endif
+
+#define __RANDOM_ITERATOR_TBB_TSX_AVAILABLE  ((__RANDOM_ITERATOR_TBB_x86_32 || __RANDOM_ITERATOR_TBB_x86_64) && !__RANDOM_ITERATOR_TBB_DEFINE_MIC)
+
+/** Presence of compiler features **/
+
+#if __INTEL_COMPILER == 9999 && __INTEL_COMPILER_BUILD_DATE == 20110811
+/* Intel(R) Composer XE 2011 Update 6 incorrectly sets __INTEL_COMPILER. Fix it. */
+    #undef __INTEL_COMPILER
+    #define __INTEL_COMPILER 1210
+#endif
+
+#if __clang__ && !__INTEL_COMPILER
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_OPTIONAL_RTTI __has_feature(cxx_rtti)
+#elif defined(_CPPRTTI)
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_OPTIONAL_RTTI 1
+#else
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_OPTIONAL_RTTI (__GXX_RTTI || __RTTI || __INTEL_RTTI__)
+#endif
+
+#if __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400 && !defined(__INTEL_COMPILER)
+    /** warning suppression pragmas available in GCC since 4.4 **/
+    #define __RANDOM_ITERATOR_TBB_GCC_WARNING_SUPPRESSION_PRESENT 1
+#endif
+
+/* Select particular features of C++11 based on compiler version.
+   ICC 12.1 (Linux*), GCC 4.3 and higher, clang 2.9 and higher
+   set __GXX_EXPERIMENTAL_CXX0X__ in c++11 mode.
+
+   Compilers that mimics other compilers (ICC, clang) must be processed before
+   compilers they mimic (GCC, MSVC).
+
+   TODO: The following conditions should be extended when new compilers/runtimes
+   support added.
+ */
+
+/**
+    __RANDOM_ITERATOR_TBB_CPP11_PRESENT macro indicates that the compiler supports vast majority of C++11 features.
+    Depending on the compiler, some features might still be unsupported or work incorrectly.
+    Use it when enabling C++11 features individually is not practical, and be aware that
+    some "good enough" compilers might be excluded. **/
+#define __RANDOM_ITERATOR_TBB_CPP11_PRESENT (__cplusplus >= 201103L || _MSC_VER >= 1900)
+
+#define __RANDOM_ITERATOR_TBB_CPP17_FALLTHROUGH_PRESENT (__cplusplus >= 201703L)
+#define __RANDOM_ITERATOR_TBB_FALLTHROUGH_PRESENT       (__RANDOM_ITERATOR_TBB_GCC_VERSION >= 70000 && !__INTEL_COMPILER)
+
+/** C++11 mode detection macros for Intel(R) C++ Compiler (enabled by -std=c++XY option):
+    __INTEL_CXX11_MODE__ for version >=13.0 (not available for ICC 15.0 if -std=c++14 is used),
+    __STDC_HOSTED__ for version >=12.0 (useful only on Windows),
+    __GXX_EXPERIMENTAL_CXX0X__ for version >=12.0 on Linux and macOS. **/
+#if __INTEL_COMPILER &&  !__INTEL_CXX11_MODE__
+    // __INTEL_CXX11_MODE__ is not set, try to deduce it
+    #define __INTEL_CXX11_MODE__ (__GXX_EXPERIMENTAL_CXX0X__ || (_MSC_VER && __STDC_HOSTED__))
+#endif
+
+#if __INTEL_COMPILER && (!_MSC_VER || __INTEL_CXX11_MODE__)
+    //  On Windows, C++11 features supported by Visual Studio 2010 and higher are enabled by default,
+    //  so in absence of /Qstd= use MSVC branch for feature detection.
+    //  On other platforms, no -std= means C++03.
+
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT          (__INTEL_CXX11_MODE__ && __VARIADIC_TEMPLATES)
+    // Both r-value reference support in compiler and std::move/std::forward
+    // presence in C++ standard library is checked.
+    #define __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT                  ((_MSC_VER >= 1700 || __GXX_EXPERIMENTAL_CXX0X__ && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40500 || _LIBCPP_VERSION)) && __INTEL_COMPILER >= 1400)
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT                     (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1400 && (_MSC_VER >= 1900 || __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40600 || __clang__))
+    #if  _MSC_VER >= 1600
+        #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                 ( __INTEL_COMPILER > 1300                                                \
+                                                            /*ICC 12.1 Upd 10 and 13 beta Upd 2 fixed exception_ptr linking  issue*/ \
+                                                            || (__INTEL_COMPILER == 1300 && __INTEL_COMPILER_BUILD_DATE >= 20120530) \
+                                                            || (__INTEL_COMPILER == 1210 && __INTEL_COMPILER_BUILD_DATE >= 20120410) )
+    /** libstdc++ that comes with GCC 4.6 use C++11 features not supported by ICC 12.1.
+     *  Because of that ICC 12.1 does not support C++11 mode with gcc 4.6 (or higher),
+     *  and therefore does not define __GXX_EXPERIMENTAL_CXX0X__ macro **/
+    #elif __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40404 && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION < 40600
+        #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                 (__GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1200)
+    #elif __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600
+        #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                 (__GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1300)
+    #elif _LIBCPP_VERSION
+        #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                 __GXX_EXPERIMENTAL_CXX0X__
+    #else
+        #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                 0
+    #endif
+    #define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT                     (__INTEL_CXX11_MODE__ || _MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TUPLE_PRESENT                       (_MSC_VER >= 1600 || __GXX_EXPERIMENTAL_CXX0X__ && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40300 || _LIBCPP_VERSION))
+    #define __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT                 (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1400 && (_MSC_VER >= 1800 || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40400 || _LIBCPP_VERSION))
+    #define __RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT                         (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1400)
+    #define __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT        (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1200)
+    /** ICC seems to disable support of noexcept event in c++11 when compiling in compatibility mode for gcc <4.6 **/
+    #define __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT                          (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1300 && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600 || _LIBCPP_VERSION || _MSC_VER))
+    #define __RANDOM_ITERATOR_TBB_CPP11_STD_BEGIN_END_PRESENT               (_MSC_VER >= 1700 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1310 && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600 || _LIBCPP_VERSION))
+    #define __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT                        (_MSC_VER >= 1600 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1210)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT                    (_MSC_VER >= 1600 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1210)
+    #define __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT                     (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1200)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT  (_MSC_VER >= 1800 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1210)
+    #define __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT                          (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1400)
+    #define __RANDOM_ITERATOR_TBB_ALIGNAS_PRESENT                           (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1500)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT            (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1210)
+    #define __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT            (__cplusplus >= 201402L)
+    #define __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT          (__cplusplus >= 201402L)
+    #define __RANDOM_ITERATOR_TBB_CPP17_DEDUCTION_GUIDES_PRESENT            (__INTEL_COMPILER > 1910) // a future version
+    #define __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT               (__cplusplus >= 201703L)
+#elif __clang__
+/** TODO: these options need to be rechecked **/
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT          __has_feature(__cxx_variadic_templates__)
+    #define __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT                  (__has_feature(__cxx_rvalue_references__) && (_LIBCPP_VERSION || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40500))
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT                     __has_feature(cxx_implicit_moves)
+/** TODO: extend exception_ptr related conditions to cover libstdc++ **/
+    #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                     (__cplusplus >= 201103L && (_LIBCPP_VERSION || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600))
+    #define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT                     __has_feature(__cxx_static_assert__)
+    #if (__cplusplus >= 201103L && __has_include(<tuple>))
+        #define __RANDOM_ITERATOR_TBB_CPP11_TUPLE_PRESENT                   1
+    #endif
+    #if (__has_feature(__cxx_generalized_initializers__) && __has_include(<initializer_list>))
+        #define __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT             1
+    #endif
+    #define __RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT                         __has_feature(__cxx_constexpr__)
+    #define __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT        (__has_feature(__cxx_defaulted_functions__) && __has_feature(__cxx_deleted_functions__))
+    /**For some unknown reason  __has_feature(__cxx_noexcept) does not yield true for all cases. Compiler bug ? **/
+    #define __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT                          (__cplusplus >= 201103L)
+    #define __RANDOM_ITERATOR_TBB_CPP11_STD_BEGIN_END_PRESENT               (__has_feature(__cxx_range_for__) && (_LIBCPP_VERSION || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600))
+    #define __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT                        __has_feature(__cxx_auto_type__)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT                    __has_feature(__cxx_decltype__)
+    #define __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT                     __has_feature(cxx_lambdas)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT  __has_feature(cxx_default_function_template_args)
+    #define __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT                          __has_feature(cxx_override_control)
+    #define __RANDOM_ITERATOR_TBB_ALIGNAS_PRESENT                           __has_feature(cxx_alignas)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT            __has_feature(cxx_alias_templates)
+    #define __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT            (__cplusplus >= 201402L)
+    #define __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT          (__has_feature(cxx_variable_templates))
+    #define __RANDOM_ITERATOR_TBB_CPP17_DEDUCTION_GUIDES_PRESENT            (__has_feature(__cpp_deduction_guides))
+    #define __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT               (__has_feature(__cpp_lib_is_invocable))
+#elif __GNUC__
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT          __GXX_EXPERIMENTAL_CXX0X__
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_FIXED_LENGTH_EXP_PRESENT   (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40700)
+    #define __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT                  (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40500)
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT                     (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40600)
+    /** __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 here is a substitution for _GLIBCXX_ATOMIC_BUILTINS_4, which is a prerequisite
+        for exception_ptr but cannot be used in this file because it is defined in a header, not by the compiler.
+        If the compiler has no atomic intrinsics, the C++ library should not expect those as well. **/
+    #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                     (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40404 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
+    #define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT                     (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40300)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TUPLE_PRESENT                       (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40300)
+    #define __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT                 (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400)
+    /** gcc seems have to support constexpr from 4.4 but tests in (test_atomic) seeming reasonable fail to compile prior 4.6**/
+    #define __RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT                         (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400)
+    #define __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT        (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400)
+    #define __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT                          (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_STD_BEGIN_END_PRESENT               (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT                        (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT                    (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40400)
+    #define __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT                     (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40500)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT  (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40300)
+    #define __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT                          (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40700)
+    #define __RANDOM_ITERATOR_TBB_ALIGNAS_PRESENT                           (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40800)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT            (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40700)
+    #define __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT            (__cplusplus >= 201402L     && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 50000)
+    #define __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT          (__cplusplus >= 201402L     && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 50000)
+    #define __RANDOM_ITERATOR_TBB_CPP17_DEDUCTION_GUIDES_PRESENT            (__cpp_deduction_guides >= 201606L)
+    #define __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT               (__cplusplus >= 201703L     && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 70000)
+#elif _MSC_VER
+    // These definitions are also used with Intel C++ Compiler in "default" mode (__INTEL_CXX11_MODE__ == 0);
+    // see a comment in "__INTEL_COMPILER" section above.
+
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT          (_MSC_VER >= 1800)
+    // Contains a workaround for ICC 13
+    #define __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT                  (_MSC_VER >= 1700 && (!__INTEL_COMPILER || __INTEL_COMPILER >= 1400))
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT                     (_MSC_VER >= 1900)
+    #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                     (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT                     (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TUPLE_PRESENT                       (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT                 (_MSC_VER >= 1800)
+    #define __RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT                         (_MSC_VER >= 1900)
+    #define __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT        (_MSC_VER >= 1800)
+    #define __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT                          (_MSC_VER >= 1900)
+    #define __RANDOM_ITERATOR_TBB_CPP11_STD_BEGIN_END_PRESENT               (_MSC_VER >= 1700)
+    #define __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT                        (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT                    (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT                     (_MSC_VER >= 1600)
+    #define __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT  (_MSC_VER >= 1800)
+    #define __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT                          (_MSC_VER >= 1700)
+    #define __RANDOM_ITERATOR_TBB_ALIGNAS_PRESENT                           (_MSC_VER >= 1900)
+    #define __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT            (_MSC_VER >= 1800)
+    #define __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT            (_MSC_VER >= 1900)
+    /* Variable templates are supported in VS2015 Update 2 or later */
+    #define __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT          (_MSC_FULL_VER >= 190023918 && (!__INTEL_COMPILER || __INTEL_COMPILER >= 1700))
+    #define __RANDOM_ITERATOR_TBB_CPP17_DEDUCTION_GUIDES_PRESENT            (_MSVC_LANG >= 201703L && _MSC_VER >= 1914)
+    #define __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT               (_MSVC_LANG >= 201703L && _MSC_VER >= 1911)
+#else
+    #define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT          __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT                  __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT                     __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT                     __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT                     __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_TUPLE_PRESENT                       __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT                 __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT                         __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT        __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT                          __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_STD_BEGIN_END_PRESENT               __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT                        __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT                    __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT                     __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT  __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT                          __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_ALIGNAS_PRESENT                           __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT            __RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CPP14_INTEGER_SEQUENCE_PRESENT            (__cplusplus >= 201402L)
+    #define __RANDOM_ITERATOR_TBB_CPP14_VARIABLE_TEMPLATES_PRESENT          (__cplusplus >= 201402L)
+    #define __RANDOM_ITERATOR_TBB_CPP17_DEDUCTION_GUIDES_PRESENT            (__cplusplus >= 201703L)
+    #define __RANDOM_ITERATOR_TBB_CPP17_INVOKE_RESULT_PRESENT               (__cplusplus >= 201703L)
+#endif
+
+// C++11 standard library features
+
+#define __RANDOM_ITERATOR_TBB_CPP11_ARRAY_PRESENT                           (_MSC_VER >= 1700 || _LIBCPP_VERSION || __GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40300)
+
+#ifndef __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_FIXED_LENGTH_EXP_PRESENT
+#define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_FIXED_LENGTH_EXP_PRESENT       __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif
+#define __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TUPLE_PRESENT                  (!_MSC_VER || _MSC_VER >= 1800)
+
+#define __RANDOM_ITERATOR_TBB_CPP11_TYPE_PROPERTIES_PRESENT                 (_LIBCPP_VERSION || _MSC_VER >= 1700 || (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 50000 && __GXX_EXPERIMENTAL_CXX0X__))
+// GCC supported some of type properties since 4.7
+#define __RANDOM_ITERATOR_TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT           (__GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40700 || __RANDOM_ITERATOR_TBB_CPP11_TYPE_PROPERTIES_PRESENT)
+
+// In GCC, std::move_if_noexcept appeared later than noexcept
+#define __RANDOM_ITERATOR_TBB_MOVE_IF_NOEXCEPT_PRESENT                      (__RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40700 || _MSC_VER >= 1900 || _LIBCPP_VERSION))
+#define __RANDOM_ITERATOR_TBB_ALLOCATOR_TRAITS_PRESENT                      (__cplusplus >= 201103L && _LIBCPP_VERSION  || _MSC_VER >= 1800 ||  \
+                                                            __GXX_EXPERIMENTAL_CXX0X__ && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40700 && !(__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION == 40700 && __RANDOM_ITERATOR_TBB_DEFINE_MIC))
+#define __RANDOM_ITERATOR_TBB_MAKE_EXCEPTION_PTR_PRESENT                    (__RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT && (_MSC_VER >= 1700 || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600 || _LIBCPP_VERSION || __SUNPRO_CC))
+
+// Due to libc++ limitations in C++03 mode, do not pass rvalues to std::make_shared()
+#define __RANDOM_ITERATOR_TBB_CPP11_SMART_POINTERS_PRESENT                  ( _MSC_VER >= 1600 || _LIBCPP_VERSION   \
+                                                            || ((__cplusplus >= 201103L || __GXX_EXPERIMENTAL_CXX0X__)  \
+                                                            && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40500 || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40400 && __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_OPTIONAL_RTTI)) )
+
+#define __RANDOM_ITERATOR_TBB_CPP11_FUTURE_PRESENT                          (_MSC_VER >= 1700 || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40600 && __GXX_EXPERIMENTAL_CXX0X__ || _LIBCPP_VERSION)
+
+#define __RANDOM_ITERATOR_TBB_CPP11_GET_NEW_HANDLER_PRESENT                 (_MSC_VER >= 1900 || __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION >= 40900 && __GXX_EXPERIMENTAL_CXX0X__ || _LIBCPP_VERSION)
+
+#define __RANDOM_ITERATOR_TBB_CPP17_UNCAUGHT_EXCEPTIONS_PRESENT             (_MSC_VER >= 1900 || __GLIBCXX__ && __cpp_lib_uncaught_exceptions \
+                                                            || _LIBCPP_VERSION >= 3700 && (!__RANDOM_ITERATOR_TBB_MACOS_TARGET_VERSION || __RANDOM_ITERATOR_TBB_MACOS_TARGET_VERSION >= 101200))
+// TODO: wait when memory_resource will be fully supported in clang and define the right macro
+// Currently it is in experimental stage since 6 version.
+#define __RANDOM_ITERATOR_TBB_CPP17_MEMORY_RESOURCE_PRESENT                 (_MSC_VER >= 1913 && (_MSVC_LANG > 201402L || __cplusplus > 201402L) || \
+                                                            __GLIBCXX__ && __cpp_lib_memory_resource >= 201603)
+#define __RANDOM_ITERATOR_TBB_CPP17_HW_INTERFERENCE_SIZE_PRESENT            (_MSC_VER >= 1911)
+// std::swap is in <utility> only since C++11, though MSVC had it at least since VS2005
+#if _MSC_VER>=1400 || _LIBCPP_VERSION || __GXX_EXPERIMENTAL_CXX0X__
+#define __RANDOM_ITERATOR_TBB_STD_SWAP_HEADER <utility>
+#else
+#define __RANDOM_ITERATOR_TBB_STD_SWAP_HEADER <algorithm>
+#endif
+
+//TODO: not clear how exactly this macro affects exception_ptr - investigate
+// On linux ICC fails to find existing std::exception_ptr in libstdc++ without this define
+#if __INTEL_COMPILER && __GNUC__ && __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
+    #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#endif
+
+// Work around a bug in MinGW32
+#if __MINGW32__ && __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT && !defined(_GLIBCXX_ATOMIC_BUILTINS_4)
+    #define _GLIBCXX_ATOMIC_BUILTINS_4
+#endif
+
+#if __GNUC__ || __SUNPRO_CC || __IBMCPP__
+    /* ICC defines __GNUC__ and so is covered */
+    #define __RANDOM_ITERATOR_TBB_ATTRIBUTE_ALIGNED_PRESENT 1
+#elif _MSC_VER && (_MSC_VER >= 1300 || __INTEL_COMPILER)
+    #define __RANDOM_ITERATOR_TBB_DECLSPEC_ALIGN_PRESENT 1
+#endif
+
+/* Actually ICC supports gcc __sync_* intrinsics starting 11.1,
+ * but 64 bit support for 32 bit target comes in later ones*/
+/* TODO: change the version back to 4.1.2 once macro __RANDOM_ITERATOR_TBB_WORD_SIZE become optional */
+/* Assumed that all clang versions have these gcc compatible intrinsics. */
+#if __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40306 || __INTEL_COMPILER >= 1200 || __clang__
+    /** built-in atomics available in GCC since 4.1.2 **/
+    #define __RANDOM_ITERATOR_TBB_GCC_BUILTIN_ATOMICS_PRESENT 1
+#endif
+
+#if __RANDOM_ITERATOR_TBB_GCC_VERSION >= 70000 && !__INTEL_COMPILER && !__clang__
+    // After GCC7 there was possible reordering problem in generic atomic load/store operations.
+    // So always using builtins.
+    #define RANDOM_ITERATOR_TBB_USE_GCC_BUILTINS 1
+#endif
+
+#if __INTEL_COMPILER >= 1200
+    /** built-in C++11 style atomics available in ICC since 12.0 **/
+    #define __RANDOM_ITERATOR_TBB_ICC_BUILTIN_ATOMICS_PRESENT 1
+#endif
+
+#if _MSC_VER>=1600 && (!__INTEL_COMPILER || __INTEL_COMPILER>=1310)
+    #define __RANDOM_ITERATOR_TBB_MSVC_PART_WORD_INTERLOCKED_INTRINSICS_PRESENT 1
+#endif
+
+#define __RANDOM_ITERATOR_TBB_TSX_INTRINSICS_PRESENT ((__RTM__ || _MSC_VER>=1700 || __INTEL_COMPILER>=1300) && !__RANDOM_ITERATOR_TBB_DEFINE_MIC && !__ANDROID__)
+
+/** Macro helpers **/
+#define __RANDOM_ITERATOR_TBB_CONCAT_AUX(A,B) A##B
+// The additional level of indirection is needed to expand macros A and B (not to get the AB macro).
+// See [cpp.subst] and [cpp.concat] for more details.
+#define __RANDOM_ITERATOR_TBB_CONCAT(A,B) __RANDOM_ITERATOR_TBB_CONCAT_AUX(A,B)
+// The IGNORED argument and comma are needed to always have 2 arguments (even when A is empty).
+#define __RANDOM_ITERATOR_TBB_IS_MACRO_EMPTY(A,IGNORED) __RANDOM_ITERATOR_TBB_CONCAT_AUX(__RANDOM_ITERATOR_TBB_MACRO_EMPTY,A)
+#define __RANDOM_ITERATOR_TBB_MACRO_EMPTY 1
+
+/** User controlled TBB features & modes **/
+#ifndef RANDOM_ITERATOR_TBB_USE_DEBUG
+/*
+There are four cases that are supported:
+  1. "_DEBUG is undefined" means "no debug";
+  2. "_DEBUG defined to something that is evaluated to 0" (including "garbage", as per [cpp.cond]) means "no debug";
+  3. "_DEBUG defined to something that is evaluated to a non-zero value" means "debug";
+  4. "_DEBUG defined to nothing (empty)" means "debug".
+*/
+#ifdef _DEBUG
+// Check if _DEBUG is empty.
+#define __RANDOM_ITERATOR_TBB_IS__DEBUG_EMPTY (__RANDOM_ITERATOR_TBB_IS_MACRO_EMPTY(_DEBUG,IGNORED)==__RANDOM_ITERATOR_TBB_MACRO_EMPTY)
+#if __RANDOM_ITERATOR_TBB_IS__DEBUG_EMPTY
+#define RANDOM_ITERATOR_TBB_USE_DEBUG 1
+#else
+#define RANDOM_ITERATOR_TBB_USE_DEBUG _DEBUG
+#endif /* __RANDOM_ITERATOR_TBB_IS__DEBUG_EMPTY */
+#else
+#define RANDOM_ITERATOR_TBB_USE_DEBUG 0
+#endif
+#endif /* RANDOM_ITERATOR_TBB_USE_DEBUG */
+
+#ifndef RANDOM_ITERATOR_TBB_USE_ASSERT
+#define RANDOM_ITERATOR_TBB_USE_ASSERT RANDOM_ITERATOR_TBB_USE_DEBUG
+#endif /* RANDOM_ITERATOR_TBB_USE_ASSERT */
+
+#ifndef RANDOM_ITERATOR_TBB_USE_THREADING_TOOLS
+#define RANDOM_ITERATOR_TBB_USE_THREADING_TOOLS RANDOM_ITERATOR_TBB_USE_DEBUG
+#endif /* RANDOM_ITERATOR_TBB_USE_THREADING_TOOLS */
+
+#ifndef RANDOM_ITERATOR_TBB_USE_PERFORMANCE_WARNINGS
+#ifdef RANDOM_ITERATOR_TBB_PERFORMANCE_WARNINGS
+#define RANDOM_ITERATOR_TBB_USE_PERFORMANCE_WARNINGS RANDOM_ITERATOR_TBB_PERFORMANCE_WARNINGS
+#else
+#define RANDOM_ITERATOR_TBB_USE_PERFORMANCE_WARNINGS RANDOM_ITERATOR_TBB_USE_DEBUG
+#endif /* RANDOM_ITERATOR_TBB_PERFORMANCE_WARNINGS */
+#endif /* RANDOM_ITERATOR_TBB_USE_PERFORMANCE_WARNINGS */
+
+#if __RANDOM_ITERATOR_TBB_DEFINE_MIC
+    #if RANDOM_ITERATOR_TBB_USE_EXCEPTIONS
+        #error The platform does not properly support exception handling. Please do not set RANDOM_ITERATOR_TBB_USE_EXCEPTIONS macro or set it to 0.
+    #elif !defined(RANDOM_ITERATOR_TBB_USE_EXCEPTIONS)
+        #define RANDOM_ITERATOR_TBB_USE_EXCEPTIONS 0
+    #endif
+#elif !(__EXCEPTIONS || defined(_CPPUNWIND) || __SUNPRO_CC)
+    #if RANDOM_ITERATOR_TBB_USE_EXCEPTIONS
+        #error Compilation settings do not support exception handling. Please do not set RANDOM_ITERATOR_TBB_USE_EXCEPTIONS macro or set it to 0.
+    #elif !defined(RANDOM_ITERATOR_TBB_USE_EXCEPTIONS)
+        #define RANDOM_ITERATOR_TBB_USE_EXCEPTIONS 0
+    #endif
+#elif !defined(RANDOM_ITERATOR_TBB_USE_EXCEPTIONS)
+    #define RANDOM_ITERATOR_TBB_USE_EXCEPTIONS 1
+#endif
+
+#ifndef RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X
+/** By default, use C++11 classes if available **/
+    #if __clang__
+        /* Old versions of Intel C++ Compiler do not have __has_include or cannot use it in #define */
+        #if (__INTEL_COMPILER && (__INTEL_COMPILER < 1500 || __INTEL_COMPILER == 1500 && __INTEL_COMPILER_UPDATE <= 1))
+            #define RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X (__cplusplus < 201103L || !_LIBCPP_VERSION)
+        #else
+            #define RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X (__cplusplus < 201103L || (!__has_include(<thread>) && !__has_include(<condition_variable>)))
+        #endif
+    #elif __GNUC__
+        #define RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X (__RANDOM_ITERATOR_TBB_GCC_VERSION < 40400 || !__GXX_EXPERIMENTAL_CXX0X__)
+    #elif _MSC_VER
+        #define RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X (_MSC_VER < 1700)
+    #else
+        // TODO: Reconsider general approach to be more reliable, e.g. (!(__cplusplus >= 201103L && __ STDC_HOSTED__))
+        #define RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X (!__STDCPP_THREADS__)
+    #endif
+#endif /* RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X */
+
+/* RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION should be explicitly set to either 0 or 1, as it is used as C++ const */
+#ifndef RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION
+    /** IA-64 architecture pre-built TBB binaries do not support exception_ptr. **/
+    #if __RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT && !defined(__ia64__)
+        #define RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION 0
+    #else
+        #define RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION 1
+    #endif
+#else /* defined RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION */
+    #if !RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION && !__RANDOM_ITERATOR_TBB_EXCEPTION_PTR_PRESENT
+        #error Current runtime does not support std::exception_ptr. Set RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION and make sure that your code is ready to catch tbb::captured_exception.
+    #endif
+#endif /* defined RANDOM_ITERATOR_TBB_USE_CAPTURED_EXCEPTION */
+
+/** Check whether the request to use GCC atomics can be satisfied **/
+#if RANDOM_ITERATOR_TBB_USE_GCC_BUILTINS && !__RANDOM_ITERATOR_TBB_GCC_BUILTIN_ATOMICS_PRESENT
+    #error "GCC atomic built-ins are not supported."
+#endif
+
+/** Internal TBB features & modes **/
+
+/** __RANDOM_ITERATOR_TBB_CONCURRENT_ORDERED_CONTAINERS indicates that all conditions of use
+ * concurrent_map and concurrent_set are met. **/
+// TODO: Add cpp11 random generation macro
+#ifndef __RANDOM_ITERATOR_TBB_CONCURRENT_ORDERED_CONTAINERS_PRESENT
+    #define __RANDOM_ITERATOR_TBB_CONCURRENT_ORDERED_CONTAINERS_PRESENT ( __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT \
+     && __RANDOM_ITERATOR_TBB_IMPLICIT_MOVE_PRESENT  && __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_LAMBDAS_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_ARRAY_PRESENT \
+     && __RANDOM_ITERATOR_TBB_INITIALIZER_LISTS_PRESENT )
+#endif
+
+/** __RANDOM_ITERATOR_TBB_WEAK_SYMBOLS_PRESENT denotes that the system supports the weak symbol mechanism **/
+#ifndef __RANDOM_ITERATOR_TBB_WEAK_SYMBOLS_PRESENT
+#define __RANDOM_ITERATOR_TBB_WEAK_SYMBOLS_PRESENT ( !_WIN32 && !__APPLE__ && !__sun && (__RANDOM_ITERATOR_TBB_GCC_VERSION >= 40000 || __INTEL_COMPILER ) )
+#endif
+
+/** __RANDOM_ITERATOR_TBB_DYNAMIC_LOAD_ENABLED describes the system possibility to load shared libraries at run time **/
+#ifndef __RANDOM_ITERATOR_TBB_DYNAMIC_LOAD_ENABLED
+    #define __RANDOM_ITERATOR_TBB_DYNAMIC_LOAD_ENABLED 1
+#endif
+
+/** __RANDOM_ITERATOR_TBB_SOURCE_DIRECTLY_INCLUDED is a mode used in whitebox testing when
+    it's necessary to test internal functions not exported from TBB DLLs
+**/
+#if (_WIN32||_WIN64) && (__RANDOM_ITERATOR_TBB_SOURCE_DIRECTLY_INCLUDED || RANDOM_ITERATOR_TBB_USE_PREVIEW_BINARY)
+    #define __RANDOM_ITERATOR_TBB_NO_IMPLICIT_LINKAGE 1
+    #define __RANDOM_ITERATOR_TBBMALLOC_NO_IMPLICIT_LINKAGE 1
+#endif
+
+#ifndef __RANDOM_ITERATOR_TBB_COUNT_TASK_NODES
+    #define __RANDOM_ITERATOR_TBB_COUNT_TASK_NODES RANDOM_ITERATOR_TBB_USE_ASSERT
+#endif
+
+#ifndef __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT
+    #define __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT 1
+#endif /* __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT */
+
+#ifndef __RANDOM_ITERATOR_TBB_SCHEDULER_OBSERVER
+    #define __RANDOM_ITERATOR_TBB_SCHEDULER_OBSERVER 1
+#endif /* __RANDOM_ITERATOR_TBB_SCHEDULER_OBSERVER */
+
+#ifndef __RANDOM_ITERATOR_TBB_FP_CONTEXT
+    #define __RANDOM_ITERATOR_TBB_FP_CONTEXT __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT
+#endif /* __RANDOM_ITERATOR_TBB_FP_CONTEXT */
+
+#if __RANDOM_ITERATOR_TBB_FP_CONTEXT && !__RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT
+    #error __RANDOM_ITERATOR_TBB_FP_CONTEXT requires __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT to be enabled
+#endif
+
+#define __RANDOM_ITERATOR_TBB_RECYCLE_TO_ENQUEUE __RANDOM_ITERATOR_TBB_BUILD // keep non-official
+
+#ifndef __RANDOM_ITERATOR_TBB_ARENA_OBSERVER
+    #define __RANDOM_ITERATOR_TBB_ARENA_OBSERVER __RANDOM_ITERATOR_TBB_SCHEDULER_OBSERVER
+#endif /* __RANDOM_ITERATOR_TBB_ARENA_OBSERVER */
+
+#ifndef __RANDOM_ITERATOR_TBB_TASK_ISOLATION
+    #define __RANDOM_ITERATOR_TBB_TASK_ISOLATION 1
+#endif /* __RANDOM_ITERATOR_TBB_TASK_ISOLATION */
+
+#if RANDOM_ITERATOR_TBB_USE_EXCEPTIONS && !__RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT
+    #error RANDOM_ITERATOR_TBB_USE_EXCEPTIONS requires __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT to be enabled
+#endif
+
+#ifndef __RANDOM_ITERATOR_TBB_TASK_PRIORITY
+    #define __RANDOM_ITERATOR_TBB_TASK_PRIORITY (__RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT)
+#endif /* __RANDOM_ITERATOR_TBB_TASK_PRIORITY */
+
+#if __RANDOM_ITERATOR_TBB_TASK_PRIORITY && !__RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT
+    #error __RANDOM_ITERATOR_TBB_TASK_PRIORITY requires __RANDOM_ITERATOR_TBB_TASK_GROUP_CONTEXT to be enabled
+#endif
+
+#if RANDOM_ITERATOR_TBB_PREVIEW_NUMA_SUPPORT || __RANDOM_ITERATOR_TBB_BUILD
+    #define __RANDOM_ITERATOR_TBB_NUMA_SUPPORT 1
+#endif
+
+#if RANDOM_ITERATOR_TBB_PREVIEW_WAITING_FOR_WORKERS || __RANDOM_ITERATOR_TBB_BUILD
+    #define __RANDOM_ITERATOR_TBB_SUPPORTS_WORKERS_WAITING_IN_TERMINATE 1
+#endif
+
+#ifndef __RANDOM_ITERATOR_TBB_ENQUEUE_ENFORCED_CONCURRENCY
+    #define __RANDOM_ITERATOR_TBB_ENQUEUE_ENFORCED_CONCURRENCY 1
+#endif
+
+#if !defined(__RANDOM_ITERATOR_TBB_SURVIVE_THREAD_SWITCH) && \
+          (_WIN32 || _WIN64 || __APPLE__ || (__linux__ && !__ANDROID__))
+    #define __RANDOM_ITERATOR_TBB_SURVIVE_THREAD_SWITCH 1
+#endif /* __RANDOM_ITERATOR_TBB_SURVIVE_THREAD_SWITCH */
+
+#ifndef __RANDOM_ITERATOR_TBB_DEFAULT_PARTITIONER
+#define __RANDOM_ITERATOR_TBB_DEFAULT_PARTITIONER tbb::auto_partitioner
+#endif
+
+#ifndef __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES 1
+#endif
+
+#ifndef __RANDOM_ITERATOR_TBB_ENABLE_RANGE_FEEDBACK
+#define __RANDOM_ITERATOR_TBB_ENABLE_RANGE_FEEDBACK 0
+#endif
+
+#ifdef _VARIADIC_MAX
+    #define __RANDOM_ITERATOR_TBB_VARIADIC_MAX _VARIADIC_MAX
+#else
+    #if _MSC_VER == 1700
+        #define __RANDOM_ITERATOR_TBB_VARIADIC_MAX 5 // VS11 setting, issue resolved in VS12
+    #elif _MSC_VER == 1600
+        #define __RANDOM_ITERATOR_TBB_VARIADIC_MAX 10 // VS10 setting
+    #else
+        #define __RANDOM_ITERATOR_TBB_VARIADIC_MAX 15
+    #endif
+#endif
+
+// Intel C++ Compiler starts analyzing usages of the deprecated content at the template
+// instantiation site, which is too late for suppression of the corresponding messages for internal
+// stuff.
+#if !defined(__INTEL_COMPILER) && (!defined(TBB_SUPPRESS_DEPRECATED_MESSAGES) || (TBB_SUPPRESS_DEPRECATED_MESSAGES == 0))
+    #if (__cplusplus >= 201402L)
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED [[deprecated]]
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED_MSG(msg) [[deprecated(msg)]]
+    #elif _MSC_VER
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED __declspec(deprecated)
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))
+    #elif (__GNUC__ && __RANDOM_ITERATOR_TBB_GCC_VERSION >= 40805) || __clang__
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED __attribute__((deprecated))
+        #define __RANDOM_ITERATOR_TBB_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
+    #endif
+#endif  // !defined(TBB_SUPPRESS_DEPRECATED_MESSAGES) || (TBB_SUPPRESS_DEPRECATED_MESSAGES == 0)
+
+#if !defined(__RANDOM_ITERATOR_TBB_DEPRECATED)
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED_MSG(msg)
+#elif !defined(__RANDOM_ITERATOR_TBB_SUPPRESS_INTERNAL_DEPRECATED_MESSAGES)
+    // Suppress deprecated messages from self
+    #define __RANDOM_ITERATOR_TBB_SUPPRESS_INTERNAL_DEPRECATED_MESSAGES 1
+#endif
+
+#if defined(TBB_SUPPRESS_DEPRECATED_MESSAGES) && (TBB_SUPPRESS_DEPRECATED_MESSAGES == 0)
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED_IN_VERBOSE_MODE __RANDOM_ITERATOR_TBB_DEPRECATED
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED_IN_VERBOSE_MODE_MSG(msg) __RANDOM_ITERATOR_TBB_DEPRECATED_MSG(msg)
+#else
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED_IN_VERBOSE_MODE
+    #define __RANDOM_ITERATOR_TBB_DEPRECATED_IN_VERBOSE_MODE_MSG(msg)
+#endif // (TBB_SUPPRESS_DEPRECATED_MESSAGES == 0)
+
+#if (!defined(TBB_SUPPRESS_DEPRECATED_MESSAGES) || (TBB_SUPPRESS_DEPRECATED_MESSAGES == 0)) && !__RANDOM_ITERATOR_TBB_CPP11_PRESENT
+    #pragma message("TBB Warning: Support for C++98/03 is deprecated. Please use the compiler that supports C++11 features at least.")
+#endif
+
+/** __RANDOM_ITERATOR_TBB_WIN8UI_SUPPORT enables support of Windows* Store Apps and limit a possibility to load
+    shared libraries at run time only from application container **/
+// TODO: Separate this single macro into two for Windows 8 Store* (win8ui mode) and UWP/UWD modes.
+#if defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP
+    #define __RANDOM_ITERATOR_TBB_WIN8UI_SUPPORT 1
+#else
+    #define __RANDOM_ITERATOR_TBB_WIN8UI_SUPPORT 0
+#endif
+
+/** Macros of the form __RANDOM_ITERATOR_TBB_XXX_BROKEN denote known issues that are caused by
+    the bugs in compilers, standard or OS specific libraries. They should be
+    removed as soon as the corresponding bugs are fixed or the buggy OS/compiler
+    versions go out of the support list.
+**/
+
+#if __SIZEOF_POINTER__ < 8 && __ANDROID__ && __RANDOM_ITERATOR_TBB_GCC_VERSION <= 40403 && !__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+    /** Necessary because on Android 8-byte CAS and F&A are not available for some processor architectures,
+        but no mandatory warning message appears from GCC 4.4.3. Instead, only a linkage error occurs when
+        these atomic operations are used (such as in unit test test_atomic.exe). **/
+    #define __RANDOM_ITERATOR_TBB_GCC_64BIT_ATOMIC_BUILTINS_BROKEN 1
+#elif __RANDOM_ITERATOR_TBB_x86_32 && __RANDOM_ITERATOR_TBB_GCC_VERSION == 40102 && ! __GNUC_RH_RELEASE__
+    /** GCC 4.1.2 erroneously emit call to external function for 64 bit sync_ intrinsics.
+        However these functions are not defined anywhere. It seems that this problem was fixed later on
+        and RHEL got an updated version of gcc 4.1.2. **/
+    #define __RANDOM_ITERATOR_TBB_GCC_64BIT_ATOMIC_BUILTINS_BROKEN 1
+#endif
+
+#if __GNUC__ && __RANDOM_ITERATOR_TBB_x86_64 && __INTEL_COMPILER == 1200
+    #define __RANDOM_ITERATOR_TBB_ICC_12_0_INL_ASM_FSTCW_BROKEN 1
+#endif
+
+#if _MSC_VER && __INTEL_COMPILER && (__INTEL_COMPILER<1110 || __INTEL_COMPILER==1110 && __INTEL_COMPILER_BUILD_DATE < 20091012)
+    /** Necessary to avoid ICL error (or warning in non-strict mode):
+        "exception specification for implicitly declared virtual destructor is
+        incompatible with that of overridden one". **/
+    #define __RANDOM_ITERATOR_TBB_DEFAULT_DTOR_THROW_SPEC_BROKEN 1
+#endif
+
+#if !__INTEL_COMPILER && (_MSC_VER && _MSC_VER < 1500 || __GNUC__ && __RANDOM_ITERATOR_TBB_GCC_VERSION < 40102)
+    /** gcc 3.4.6 (and earlier) and VS2005 (and earlier) do not allow declaring template class as a friend
+        of classes defined in other namespaces. **/
+    #define __RANDOM_ITERATOR_TBB_TEMPLATE_FRIENDS_BROKEN 1
+#endif
+
+#if __GLIBC__==2 && __GLIBC_MINOR__==3 ||  (__APPLE__ && ( __INTEL_COMPILER==1200 && !RANDOM_ITERATOR_TBB_USE_DEBUG))
+    /** Macro controlling EH usages in TBB tests.
+        Some older versions of glibc crash when exception handling happens concurrently. **/
+    #define __RANDOM_ITERATOR_TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN 1
+#endif
+
+#if (_WIN32||_WIN64) && __INTEL_COMPILER == 1110
+    /** That's a bug in Intel C++ Compiler 11.1.044/IA-32 architecture/Windows* OS, that leads to a worker thread crash on the thread's startup. **/
+    #define __RANDOM_ITERATOR_TBB_ICL_11_1_CODE_GEN_BROKEN 1
+#endif
+
+#if __clang__ || (__GNUC__==3 && __GNUC_MINOR__==3 && !defined(__INTEL_COMPILER))
+    /** Bugs with access to nested classes declared in protected area */
+    #define __RANDOM_ITERATOR_TBB_PROTECTED_NESTED_CLASS_BROKEN 1
+#endif
+
+#if __MINGW32__ && __RANDOM_ITERATOR_TBB_GCC_VERSION < 40200
+    /** MinGW has a bug with stack alignment for routines invoked from MS RTLs.
+        Since GCC 4.2, the bug can be worked around via a special attribute. **/
+    #define __RANDOM_ITERATOR_TBB_SSE_STACK_ALIGNMENT_BROKEN 1
+#endif
+
+#if __RANDOM_ITERATOR_TBB_GCC_VERSION==40300 && !__INTEL_COMPILER && !__clang__
+    /* GCC of this version may rashly ignore control dependencies */
+    #define __RANDOM_ITERATOR_TBB_GCC_OPTIMIZER_ORDERING_BROKEN 1
+#endif
+
+#if __FreeBSD__
+    /** A bug in FreeBSD 8.0 results in kernel panic when there is contention
+        on a mutex created with this attribute. **/
+    #define __RANDOM_ITERATOR_TBB_PRIO_INHERIT_BROKEN 1
+
+    /** A bug in FreeBSD 8.0 results in test hanging when an exception occurs
+        during (concurrent?) object construction by means of placement new operator. **/
+    #define __RANDOM_ITERATOR_TBB_PLACEMENT_NEW_EXCEPTION_SAFETY_BROKEN 1
+#endif /* __FreeBSD__ */
+
+#if (__linux__ || __APPLE__) && __i386__ && defined(__INTEL_COMPILER)
+    /** The Intel C++ Compiler for IA-32 architecture (Linux* OS|macOS) crashes or generates
+        incorrect code when __asm__ arguments have a cast to volatile. **/
+    #define __RANDOM_ITERATOR_TBB_ICC_ASM_VOLATILE_BROKEN 1
+#endif
+
+#if !__INTEL_COMPILER && (_MSC_VER && _MSC_VER < 1700 || __GNUC__==3 && __GNUC_MINOR__<=2)
+    /** Bug in GCC 3.2 and MSVC compilers that sometimes return 0 for __alignof(T)
+        when T has not yet been instantiated. **/
+    #define __RANDOM_ITERATOR_TBB_ALIGNOF_NOT_INSTANTIATED_TYPES_BROKEN 1
+#endif
+
+#if __RANDOM_ITERATOR_TBB_DEFINE_MIC
+    /** Main thread and user's thread have different default thread affinity masks. **/
+    #define __RANDOM_ITERATOR_TBB_MAIN_THREAD_AFFINITY_BROKEN 1
+#endif
+
+#if __GXX_EXPERIMENTAL_CXX0X__ && !defined(__EXCEPTIONS) && \
+    ((!__INTEL_COMPILER && !__clang__ && (__RANDOM_ITERATOR_TBB_GCC_VERSION>=40400 && __RANDOM_ITERATOR_TBB_GCC_VERSION<40600)) || \
+     (__INTEL_COMPILER<=1400 && (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION>=40400 && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION<=40801)))
+/* There is an issue for specific GCC toolchain when C++11 is enabled
+   and exceptions are disabled:
+   exceprion_ptr.h/nested_exception.h use throw unconditionally.
+   GCC can ignore 'throw' since 4.6; but with ICC the issue still exists.
+ */
+    #define __RANDOM_ITERATOR_TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN 1
+#endif
+
+#if __INTEL_COMPILER==1300 && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION>=40700 && defined(__GXX_EXPERIMENTAL_CXX0X__)
+/* Some C++11 features used inside libstdc++ are not supported by Intel C++ Compiler. */
+    #define __RANDOM_ITERATOR_TBB_ICC_13_0_CPP11_STDLIB_SUPPORT_BROKEN 1
+#endif
+
+#if (__GNUC__==4 && __GNUC_MINOR__==4 ) && !defined(__INTEL_COMPILER) && !defined(__clang__)
+    /** excessive warnings related to strict aliasing rules in GCC 4.4 **/
+    #define __RANDOM_ITERATOR_TBB_GCC_STRICT_ALIASING_BROKEN 1
+    /* topical remedy: #pragma GCC diagnostic ignored "-Wstrict-aliasing" */
+    #if !__RANDOM_ITERATOR_TBB_GCC_WARNING_SUPPRESSION_PRESENT
+        #error Warning suppression is not supported, while should.
+    #endif
+#endif
+
+/* In a PIC mode some versions of GCC 4.1.2 generate incorrect inlined code for 8 byte __sync_val_compare_and_swap intrinsic */
+#if __RANDOM_ITERATOR_TBB_GCC_VERSION == 40102 && __PIC__ && !defined(__INTEL_COMPILER) && !defined(__clang__)
+    #define __RANDOM_ITERATOR_TBB_GCC_CAS8_BUILTIN_INLINING_BROKEN 1
+#endif
+
+#if __RANDOM_ITERATOR_TBB_x86_32 && ( __INTEL_COMPILER || (__GNUC__==5 && __GNUC_MINOR__>=2 && __GXX_EXPERIMENTAL_CXX0X__) \
+    || (__GNUC__==3 && __GNUC_MINOR__==3) || (__MINGW32__ && __GNUC__==4 && __GNUC_MINOR__==5) || __SUNPRO_CC )
+    // Some compilers for IA-32 architecture fail to provide 8-byte alignment of objects on the stack,
+    // even if the object specifies 8-byte alignment. On such platforms, the implementation
+    // of 64 bit atomics for IA-32 architecture (e.g. atomic<long long>) use different tactics
+    // depending upon whether the object is properly aligned or not.
+    #define __RANDOM_ITERATOR_TBB_FORCE_64BIT_ALIGNMENT_BROKEN 1
+#else
+    // Define to 0 explicitly because the macro is used in a compiled code of test_atomic
+    #define __RANDOM_ITERATOR_TBB_FORCE_64BIT_ALIGNMENT_BROKEN 0
+#endif
+
+#if __GNUC__ && !__INTEL_COMPILER && !__clang__ && __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && __RANDOM_ITERATOR_TBB_GCC_VERSION < 40700
+    #define __RANDOM_ITERATOR_TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN 1
+#endif
+
+#if _MSC_VER && _MSC_VER <= 1800 && !__INTEL_COMPILER
+    // With MSVC, when an array is passed by const reference to a template function,
+    // constness from the function parameter may get propagated to the template parameter.
+    #define __RANDOM_ITERATOR_TBB_CONST_REF_TO_ARRAY_TEMPLATE_PARAM_BROKEN 1
+#endif
+
+// A compiler bug: a disabled copy constructor prevents use of the moving constructor
+#define __RANDOM_ITERATOR_TBB_IF_NO_COPY_CTOR_MOVE_SEMANTICS_BROKEN (_MSC_VER && (__INTEL_COMPILER >= 1300 && __INTEL_COMPILER <= 1310) && !__INTEL_CXX11_MODE__)
+
+#define __RANDOM_ITERATOR_TBB_CPP11_DECLVAL_BROKEN (_MSC_VER == 1600 || (__GNUC__ && __RANDOM_ITERATOR_TBB_GCC_VERSION < 40500) )
+// Intel C++ Compiler has difficulties with copying std::pair with VC11 std::reference_wrapper being a const member
+#define __RANDOM_ITERATOR_TBB_COPY_FROM_NON_CONST_REF_BROKEN (_MSC_VER == 1700 && __INTEL_COMPILER && __INTEL_COMPILER < 1600)
+
+// The implicit upcasting of the tuple of a reference of a derived class to a base class fails on icc 13.X if the system's gcc environment is 4.8
+// Also in gcc 4.4 standard library the implementation of the tuple<&> conversion (tuple<A&> a = tuple<B&>, B is inherited from A) is broken.
+#if __GXX_EXPERIMENTAL_CXX0X__ && __GLIBCXX__ && ((__INTEL_COMPILER >=1300 && __INTEL_COMPILER <=1310 && __RANDOM_ITERATOR_TBB_GLIBCXX_VERSION>=40700) || (__RANDOM_ITERATOR_TBB_GLIBCXX_VERSION < 40500))
+#define __RANDOM_ITERATOR_TBB_UPCAST_OF_TUPLE_OF_REF_BROKEN 1
+#endif
+
+// In some cases decltype of a function adds a reference to a return type.
+#define __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_OF_FUNCTION_RETURN_TYPE_BROKEN (_MSC_VER == 1600 && !__INTEL_COMPILER)
+
+// Visual Studio 2013 does not delete the copy constructor when a user-defined move constructor is provided
+#if _MSC_VER && _MSC_VER <= 1800
+    #define __RANDOM_ITERATOR_TBB_IMPLICIT_COPY_DELETION_BROKEN 1
+#endif
+
+/** End of __RANDOM_ITERATOR_TBB_XXX_BROKEN macro section **/
+
+#if defined(_MSC_VER) && _MSC_VER>=1500 && !defined(__INTEL_COMPILER)
+    // A macro to suppress erroneous or benign "unreachable code" MSVC warning (4702)
+    #define __RANDOM_ITERATOR_TBB_MSVC_UNREACHABLE_CODE_IGNORED 1
+#endif
+
+#define __RANDOM_ITERATOR_TBB_ATOMIC_CTORS     (__RANDOM_ITERATOR_TBB_CONSTEXPR_PRESENT && __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && (!__RANDOM_ITERATOR_TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN))
+
+// Many OS versions (Android 4.0.[0-3] for example) need workaround for dlopen to avoid non-recursive loader lock hang
+// Setting the workaround for all compile targets ($APP_PLATFORM) below Android 4.4 (android-19)
+#if __ANDROID__
+#include <android/api-level.h>
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_USE_DLOPEN_REENTRANCY_WORKAROUND  (__ANDROID_API__ < 19)
+#endif
+
+#define __RANDOM_ITERATOR_TBB_ALLOCATOR_CONSTRUCT_VARIADIC      (__RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT)
+
+#define __RANDOM_ITERATOR_TBB_VARIADIC_PARALLEL_INVOKE          (RANDOM_ITERATOR_TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT)
+#define __RANDOM_ITERATOR_TBB_FLOW_GRAPH_CPP11_FEATURES         (__RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT \
+                                                && __RANDOM_ITERATOR_TBB_CPP11_SMART_POINTERS_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_AUTO_PRESENT) \
+                                                && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TUPLE_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT \
+                                                && !__RANDOM_ITERATOR_TBB_UPCAST_OF_TUPLE_OF_REF_BROKEN
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_STREAMING_NODE            (__RANDOM_ITERATOR_TBB_CPP11_VARIADIC_FIXED_LENGTH_EXP_PRESENT && __RANDOM_ITERATOR_TBB_FLOW_GRAPH_CPP11_FEATURES \
+                                                && RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_NODES && !RANDOM_ITERATOR_TBB_IMPLEMENT_CPP0X && !__RANDOM_ITERATOR_TBB_UPCAST_OF_TUPLE_OF_REF_BROKEN)
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_OPENCL_NODE               (__RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_STREAMING_NODE && __RANDOM_ITERATOR_TBB_CPP11_TEMPLATE_ALIASES_PRESENT)
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_MESSAGE_BASED_KEY_MATCHING (RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_FEATURES || __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_OPENCL_NODE)
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_ASYNC_MSG                 (RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_FEATURES && __RANDOM_ITERATOR_TBB_FLOW_GRAPH_CPP11_FEATURES)
+
+
+#ifndef __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_PRIORITIES
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_PRIORITIES     RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#endif
+
+// This feature works only in combination with critical tasks (__RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_CRITICAL_TASKS)
+#ifndef __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_RESUMABLE_TASKS
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_RESUMABLE_TASKS           ((__RANDOM_ITERATOR_TBB_CPF_BUILD || RANDOM_ITERATOR_TBB_PREVIEW_RESUMABLE_TASKS) && !__RANDOM_ITERATOR_TBB_WIN8UI_SUPPORT && !__ANDROID__ && !__RANDOM_ITERATOR_TBB_ipf)
+#endif
+
+#ifndef __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_CRITICAL_TASKS
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_CRITICAL_TASKS            (__RANDOM_ITERATOR_TBB_CPF_BUILD || __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_PRIORITIES || __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_RESUMABLE_TASKS)
+#endif
+
+#ifndef __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_NODE_SET
+#define __RANDOM_ITERATOR_RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_NODE_SET       (RANDOM_ITERATOR_TBB_PREVIEW_FLOW_GRAPH_FEATURES && __RANDOM_ITERATOR_TBB_CPP11_PRESENT && __RANDOM_ITERATOR_TBB_FLOW_GRAPH_CPP11_FEATURES)
+#endif
+
+#endif /* __RANDOM_ITERATOR_TBB_tbb_config_H */
diff --git a/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_stddef.h b/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_stddef.h
new file mode 100644
index 0000000000000000000000000000000000000000..fa0c658feab158c3cefce59984c246b928b656e0
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/tbb/tbb_stddef.h
@@ -0,0 +1,565 @@
+/*
+    Copyright (c) 2005-2020 Intel Corporation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef __RANDOM_ITERATOR_TBB_tbb_stddef_H
+#define __RANDOM_ITERATOR_TBB_tbb_stddef_H
+
+// Marketing-driven product version
+#define RANDOM_ITERATOR_TBB_VERSION_MAJOR 2020
+#define RANDOM_ITERATOR_TBB_VERSION_MINOR 3
+
+// Engineering-focused interface version
+#define RANDOM_ITERATOR_TBB_INTERFACE_VERSION 11103
+#define RANDOM_ITERATOR_TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000
+
+// The oldest major interface version still supported
+// To be used in SONAME, manifests, etc.
+#define RANDOM_ITERATOR_TBB_COMPATIBLE_INTERFACE_VERSION 2
+
+#define __RANDOM_ITERATOR_TBB_STRING_AUX(x) #x
+#define __RANDOM_ITERATOR_TBB_STRING(x) __RANDOM_ITERATOR_TBB_STRING_AUX(x)
+
+// We do not need defines below for resource processing on windows
+#if !defined RC_INVOKED
+
+// Define groups for Doxygen documentation
+/**
+ * @defgroup algorithms         Algorithms
+ * @defgroup containers         Containers
+ * @defgroup memory_allocation  Memory Allocation
+ * @defgroup synchronization    Synchronization
+ * @defgroup timing             Timing
+ * @defgroup task_scheduling    Task Scheduling
+ */
+
+// Simple text that is displayed on the main page of Doxygen documentation.
+/**
+ * \mainpage Main Page
+ *
+ * Click the tabs above for information about the
+ * - <a href="./modules.html">Modules</a> (groups of functionality) implemented by the library
+ * - <a href="./annotated.html">Classes</a> provided by the library
+ * - <a href="./files.html">Files</a> constituting the library.
+ * .
+ * Please note that significant part of TBB functionality is implemented in the form of
+ * template functions, descriptions of which are not accessible on the <a href="./annotated.html">Classes</a>
+ * tab. Use <a href="./modules.html">Modules</a> or <a href="./namespacemembers.html">Namespace/Namespace Members</a>
+ * tabs to find them.
+ *
+ * Additional pieces of information can be found here
+ * - \subpage concepts
+ * .
+ */
+
+/** \page concepts TBB concepts
+
+    A concept is a set of requirements to a type, which are necessary and sufficient
+    for the type to model a particular behavior or a set of behaviors. Some concepts
+    are specific to a particular algorithm (e.g. algorithm body), while other ones
+    are common to several algorithms (e.g. range concept).
+
+    All TBB algorithms make use of different classes implementing various concepts.
+    Implementation classes are supplied by the user as type arguments of template
+    parameters and/or as objects passed as function call arguments. The library
+    provides predefined  implementations of some concepts (e.g. several kinds of
+    \ref range_req "ranges"), while other ones must always be implemented by the user.
+
+    TBB defines a set of minimal requirements each concept must conform to. Here is
+    the list of different concepts hyperlinked to the corresponding requirements specifications:
+    - \subpage range_req
+    - \subpage parallel_do_body_req
+    - \subpage parallel_for_body_req
+    - \subpage parallel_reduce_body_req
+    - \subpage parallel_scan_body_req
+    - \subpage parallel_sort_iter_req
+**/
+
+// tbb_config.h should be included the first since it contains macro definitions used in other headers
+#include "tbb_config.h"
+
+#if _MSC_VER >=1400
+    #define __RANDOM_ITERATOR_TBB_EXPORTED_FUNC   __cdecl
+    #define __RANDOM_ITERATOR_TBB_EXPORTED_METHOD __thiscall
+#else
+    #define __RANDOM_ITERATOR_TBB_EXPORTED_FUNC
+    #define __RANDOM_ITERATOR_TBB_EXPORTED_METHOD
+#endif
+
+#if __INTEL_COMPILER || _MSC_VER
+#define __RANDOM_ITERATOR_TBB_NOINLINE(decl) __declspec(noinline) decl
+#elif __GNUC__
+#define __RANDOM_ITERATOR_TBB_NOINLINE(decl) decl __attribute__ ((noinline))
+#else
+#define __RANDOM_ITERATOR_TBB_NOINLINE(decl) decl
+#endif
+
+#if __RANDOM_ITERATOR_TBB_NOEXCEPT_PRESENT
+#define __RANDOM_ITERATOR_TBB_NOEXCEPT(expression) noexcept(expression)
+#else
+#define __RANDOM_ITERATOR_TBB_NOEXCEPT(expression)
+#endif
+
+#include <cstddef>      /* Need size_t and ptrdiff_t */
+
+#if _MSC_VER
+    #define __RANDOM_ITERATOR_TBB_tbb_windef_H
+    #include "internal/_tbb_windef.h"
+    #undef __RANDOM_ITERATOR_TBB_tbb_windef_H
+#endif
+#if !defined(_MSC_VER) || _MSC_VER>=1600
+    #include <stdint.h>
+#endif
+
+//! Type for an assertion handler
+typedef void(*assertion_handler_type)( const char* filename, int line, const char* expression, const char * comment );
+
+#if __RANDOM_ITERATOR_TBBMALLOC_BUILD
+namespace rml { namespace internal {
+ #define __RANDOM_ITERATOR_TBB_ASSERT_RELEASE(predicate,message) ((predicate)?((void)0) : rml::internal::assertion_failure(__FILE__,__LINE__,#predicate,message))
+#else
+namespace random_iterator_tbb {
+ #define __RANDOM_ITERATOR_TBB_ASSERT_RELEASE(predicate,message) ((predicate)?((void)0) : tbb::assertion_failure(__FILE__,__LINE__,#predicate,message))
+#endif
+
+    //! Set assertion handler and return previous value of it.
+    assertion_handler_type __RANDOM_ITERATOR_TBB_EXPORTED_FUNC set_assertion_handler( assertion_handler_type new_handler );
+
+    //! Process an assertion failure.
+    /** Normally called from __RANDOM_ITERATOR_TBB_ASSERT macro.
+        If assertion handler is null, print message for assertion failure and abort.
+        Otherwise call the assertion handler. */
+    void __RANDOM_ITERATOR_TBB_EXPORTED_FUNC assertion_failure( const char* filename, int line, const char* expression, const char* comment );
+
+#if __RANDOM_ITERATOR_TBBMALLOC_BUILD
+}}  // namespace rml::internal
+#else
+} // namespace random_iterator_tbb
+#endif
+
+#if RANDOM_ITERATOR_TBB_USE_ASSERT
+
+    //! Assert that predicate is true.
+    /** If predicate is false, print assertion failure message.
+        If the comment argument is not NULL, it is printed as part of the failure message.
+        The comment argument has no other effect. */
+    #define __RANDOM_ITERATOR_TBB_ASSERT(predicate,message) __RANDOM_ITERATOR_TBB_ASSERT_RELEASE(predicate,message)
+
+    #define __RANDOM_ITERATOR_TBB_ASSERT_EX __RANDOM_ITERATOR_TBB_ASSERT
+
+#else /* !RANDOM_ITERATOR_TBB_USE_ASSERT */
+
+    //! No-op version of __RANDOM_ITERATOR_TBB_ASSERT.
+    #define __RANDOM_ITERATOR_TBB_ASSERT(predicate,comment) ((void)0)
+    //! "Extended" version is useful to suppress warnings if a variable is only used with an assert
+    #define __RANDOM_ITERATOR_TBB_ASSERT_EX(predicate,comment) ((void)(1 && (predicate)))
+
+#endif /* !RANDOM_ITERATOR_TBB_USE_ASSERT */
+
+//! The namespace random_iterator_tbb contains all components of the library.
+namespace random_iterator_tbb {
+
+    namespace internal {
+#if _MSC_VER && _MSC_VER<1600
+        typedef __int8 int8_t;
+        typedef __int16 int16_t;
+        typedef __int32 int32_t;
+        typedef __int64 int64_t;
+        typedef unsigned __int8 uint8_t;
+        typedef unsigned __int16 uint16_t;
+        typedef unsigned __int32 uint32_t;
+        typedef unsigned __int64 uint64_t;
+#else /* Posix */
+        using ::int8_t;
+        using ::int16_t;
+        using ::int32_t;
+        using ::int64_t;
+        using ::uint8_t;
+        using ::uint16_t;
+        using ::uint32_t;
+        using ::uint64_t;
+#endif /* Posix */
+    } // namespace internal
+
+    using std::size_t;
+    using std::ptrdiff_t;
+
+//! The function returns the interface version of the TBB shared library being used.
+/**
+ * The version it returns is determined at runtime, not at compile/link time.
+ * So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.
+ */
+extern "C" int __RANDOM_ITERATOR_TBB_EXPORTED_FUNC TBB_runtime_interface_version();
+
+/**
+ * @cond INTERNAL
+ * @brief Identifiers declared inside namespace internal should never be used directly by client code.
+ */
+namespace internal {
+
+//! Compile-time constant that is upper bound on cache line/sector size.
+/** It should be used only in situations where having a compile-time upper
+    bound is more useful than a run-time exact answer.
+    @ingroup memory_allocation */
+const size_t NFS_MaxLineSize = 128;
+
+/** Label for data that may be accessed from different threads, and that may eventually become wrapped
+    in a formal atomic type.
+
+    Note that no problems have yet been observed relating to the definition currently being empty,
+    even if at least "volatile" would seem to be in order to avoid data sometimes temporarily hiding
+    in a register (although "volatile" as a "poor man's atomic" lacks several other features of a proper
+    atomic, some of which are now provided instead through specialized functions).
+
+    Note that usage is intentionally compatible with a definition as qualifier "volatile",
+    both as a way to have the compiler help enforce use of the label and to quickly rule out
+    one potential issue.
+
+    Note however that, with some architecture/compiler combinations, e.g. on IA-64 architecture, "volatile"
+    also has non-portable memory semantics that are needlessly expensive for "relaxed" operations.
+
+    Note that this must only be applied to data that will not change bit patterns when cast to/from
+    an integral type of the same length; tbb::atomic must be used instead for, e.g., floating-point types.
+
+    TODO: apply wherever relevant **/
+#define __RANDOM_ITERATOR_TBB_atomic // intentionally empty, see above
+
+#if __RANDOM_ITERATOR_TBB_OVERRIDE_PRESENT
+#define __RANDOM_ITERATOR_TBB_override override
+#else
+#define __RANDOM_ITERATOR_TBB_override // formal comment only
+#endif
+
+#if __RANDOM_ITERATOR_TBB_CPP17_FALLTHROUGH_PRESENT
+#define __RANDOM_ITERATOR_TBB_fallthrough [[fallthrough]]
+#elif __RANDOM_ITERATOR_TBB_FALLTHROUGH_PRESENT
+#define __RANDOM_ITERATOR_TBB_fallthrough __attribute__ ((fallthrough))
+#else
+#define __RANDOM_ITERATOR_TBB_fallthrough
+#endif
+
+template<class T, size_t S, size_t R>
+struct padded_base : T {
+    char pad[S - R];
+};
+template<class T, size_t S> struct padded_base<T, S, 0> : T {};
+
+//! Pads type T to fill out to a multiple of cache line size.
+template<class T, size_t S = NFS_MaxLineSize>
+struct padded : padded_base<T, S, sizeof(T) % S> {};
+
+//! Extended variant of the standard offsetof macro
+/** The standard offsetof macro is not sufficient for TBB as it can be used for
+    POD-types only. The constant 0x1000 (not NULL) is necessary to appease GCC. **/
+#define __RANDOM_ITERATOR_TBB_offsetof(class_name, member_name) \
+    ((ptrdiff_t)&(reinterpret_cast<class_name*>(0x1000)->member_name) - 0x1000)
+
+//! Returns address of the object containing a member with the given name and address
+#define __RANDOM_ITERATOR_TBB_get_object_ref(class_name, member_name, member_addr) \
+    (*reinterpret_cast<class_name*>((char*)member_addr - __RANDOM_ITERATOR_TBB_offsetof(class_name, member_name)))
+
+//! Throws std::runtime_error with what() returning error_code description prefixed with aux_info
+void __RANDOM_ITERATOR_TBB_EXPORTED_FUNC handle_perror( int error_code, const char* aux_info );
+
+#if RANDOM_ITERATOR_TBB_USE_EXCEPTIONS
+    #define __RANDOM_ITERATOR_TBB_TRY try
+    #define __RANDOM_ITERATOR_TBB_CATCH(e) catch(e)
+    #define __RANDOM_ITERATOR_TBB_THROW(e) throw e
+    #define __RANDOM_ITERATOR_TBB_RETHROW() throw
+#else /* !RANDOM_ITERATOR_TBB_USE_EXCEPTIONS */
+    inline bool __RANDOM_ITERATOR_TBB_false() { return false; }
+    #define __RANDOM_ITERATOR_TBB_TRY
+    #define __RANDOM_ITERATOR_TBB_CATCH(e) if ( tbb::internal::__RANDOM_ITERATOR_TBB_false() )
+    #define __RANDOM_ITERATOR_TBB_THROW(e) tbb::internal::suppress_unused_warning(e)
+    #define __RANDOM_ITERATOR_TBB_RETHROW() ((void)0)
+#endif /* !RANDOM_ITERATOR_TBB_USE_EXCEPTIONS */
+
+//! Report a runtime warning.
+void __RANDOM_ITERATOR_TBB_EXPORTED_FUNC runtime_warning( const char* format, ... );
+
+#if RANDOM_ITERATOR_TBB_USE_ASSERT
+static void* const poisoned_ptr = reinterpret_cast<void*>(-1);
+
+//! Set p to invalid pointer value.
+//  Also works for regular (non-__RANDOM_ITERATOR_TBB_atomic) pointers.
+template<typename T>
+inline void poison_pointer( T* __RANDOM_ITERATOR_TBB_atomic & p ) { p = reinterpret_cast<T*>(poisoned_ptr); }
+
+/** Expected to be used in assertions only, thus no empty form is defined. **/
+template<typename T>
+inline bool is_poisoned( T* p ) { return p == reinterpret_cast<T*>(poisoned_ptr); }
+#else
+template<typename T>
+inline void poison_pointer( T* __RANDOM_ITERATOR_TBB_atomic & ) {/*do nothing*/}
+#endif /* !RANDOM_ITERATOR_TBB_USE_ASSERT */
+
+//! Cast between unrelated pointer types.
+/** This method should be used sparingly as a last resort for dealing with
+    situations that inherently break strict ISO C++ aliasing rules. */
+// T is a pointer type because it will be explicitly provided by the programmer as a template argument;
+// U is a referent type to enable the compiler to check that "ptr" is a pointer, deducing U in the process.
+template<typename T, typename U>
+inline T punned_cast( U* ptr ) {
+    uintptr_t x = reinterpret_cast<uintptr_t>(ptr);
+    return reinterpret_cast<T>(x);
+}
+
+#if __RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT
+
+//! Base class for types that should not be assigned.
+class no_assign {
+public:
+    void operator=( const no_assign& ) = delete;
+    no_assign( const no_assign& ) = default;
+    no_assign() = default;
+};
+
+//! Base class for types that should not be copied or assigned.
+class no_copy: no_assign {
+public:
+    no_copy( const no_copy& ) = delete;
+    no_copy() = default;
+};
+
+#else /*__RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT*/
+
+//! Base class for types that should not be assigned.
+class no_assign {
+    // Deny assignment
+    void operator=( const no_assign& );
+public:
+#if __GNUC__
+    //! Explicitly define default construction, because otherwise gcc issues gratuitous warning.
+    no_assign() {}
+#endif /* __GNUC__ */
+};
+
+//! Base class for types that should not be copied or assigned.
+class no_copy: no_assign {
+    //! Deny copy construction
+    no_copy( const no_copy& );
+public:
+    //! Allow default construction
+    no_copy() {}
+};
+
+#endif /*__RANDOM_ITERATOR_TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT*/
+
+#if TBB_DEPRECATED_MUTEX_COPYING
+class mutex_copy_deprecated_and_disabled {};
+#else
+// By default various implementations of mutexes are not copy constructible
+// and not copy assignable.
+class mutex_copy_deprecated_and_disabled : no_copy {};
+#endif
+
+//! A function to check if passed in pointer is aligned on a specific border
+template<typename T>
+inline bool is_aligned(T* pointer, uintptr_t alignment) {
+    return 0==((uintptr_t)pointer & (alignment-1));
+}
+
+//! A function to check if passed integer is a power of 2
+template<typename integer_type>
+inline bool is_power_of_two(integer_type arg) {
+    return arg && (0 == (arg & (arg - 1)));
+}
+
+//! A function to compute arg modulo divisor where divisor is a power of 2.
+template<typename argument_integer_type, typename divisor_integer_type>
+inline argument_integer_type modulo_power_of_two(argument_integer_type arg, divisor_integer_type divisor) {
+    __RANDOM_ITERATOR_TBB_ASSERT( is_power_of_two(divisor), "Divisor should be a power of two" );
+    return (arg & (divisor - 1));
+}
+
+
+//! A function to determine if arg is a power of 2 at least as big as another power of 2.
+// i.e. for strictly positive i and j, with j being a power of 2,
+// determines whether i==j<<k for some nonnegative k (so i==j yields true).
+template<typename argument_integer_type, typename power2_integer_type>
+inline bool is_power_of_two_at_least(argument_integer_type arg, power2_integer_type power2) {
+    __RANDOM_ITERATOR_TBB_ASSERT( is_power_of_two(power2), "Divisor should be a power of two" );
+    return 0 == (arg & (arg - power2));
+}
+
+//! Utility template function to prevent "unused" warnings by various compilers.
+template<typename T1> void suppress_unused_warning( const T1& ) {}
+template<typename T1, typename T2> void suppress_unused_warning( const T1&, const T2& ) {}
+template<typename T1, typename T2, typename T3> void suppress_unused_warning( const T1&, const T2&, const T3& ) {}
+
+// Struct to be used as a version tag for inline functions.
+/** Version tag can be necessary to prevent loader on Linux from using the wrong
+    symbol in debug builds (when inline functions are compiled as out-of-line). **/
+struct version_tag_v3 {};
+
+typedef version_tag_v3 version_tag;
+
+} // internal
+
+//! Dummy type that distinguishes splitting constructor from copy constructor.
+/**
+ * See description of parallel_for and parallel_reduce for example usages.
+ * @ingroup algorithms
+ */
+class split {
+};
+
+//! Type enables transmission of splitting proportion from partitioners to range objects
+/**
+ * In order to make use of such facility Range objects must implement
+ * splitting constructor with this type passed and initialize static
+ * constant boolean field 'is_splittable_in_proportion' with the value
+ * of 'true'
+ */
+class proportional_split: internal::no_assign {
+public:
+    proportional_split(size_t _left = 1, size_t _right = 1) : my_left(_left), my_right(_right) { }
+
+    size_t left() const { return my_left; }
+    size_t right() const { return my_right; }
+
+    // used when range does not support proportional split
+    operator split() const { return split(); }
+
+#if __RANDOM_ITERATOR_TBB_ENABLE_RANGE_FEEDBACK
+    void set_proportion(size_t _left, size_t _right) {
+        my_left = _left;
+        my_right = _right;
+    }
+#endif
+private:
+    size_t my_left, my_right;
+};
+
+} // tbb
+
+// Following is a set of classes and functions typically used in compile-time "metaprogramming".
+// TODO: move all that to a separate header
+
+#if __RANDOM_ITERATOR_TBB_CPP11_SMART_POINTERS_PRESENT
+#include <memory> // for unique_ptr
+#endif
+
+#if __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT || __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT || _LIBCPP_VERSION
+#include <utility> // for std::move, std::forward, std::declval
+#endif
+
+namespace random_iterator_tbb {
+namespace internal {
+
+#if __RANDOM_ITERATOR_TBB_CPP11_SMART_POINTERS_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT && __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename T, typename... Args>
+    std::unique_ptr<T> make_unique(Args&&... args) {
+        return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+    }
+#endif
+
+//! Class for determining type of std::allocator<T>::value_type.
+template<typename T>
+struct allocator_type {
+    typedef T value_type;
+};
+
+#if _MSC_VER
+//! Microsoft std::allocator has non-standard extension that strips const from a type.
+template<typename T>
+struct allocator_type<const T> {
+    typedef T value_type;
+};
+#endif
+
+// Ad-hoc implementation of true_type & false_type
+// Intended strictly for internal use! For public APIs (traits etc), use C++11 analogues.
+template <bool v>
+struct bool_constant {
+    static /*constexpr*/ const bool value = v;
+};
+typedef bool_constant<true> true_type;
+typedef bool_constant<false> false_type;
+
+//! A template to select either 32-bit or 64-bit constant as compile time, depending on machine word size.
+template <unsigned u, unsigned long long ull >
+struct select_size_t_constant {
+    //Explicit cast is needed to avoid compiler warnings about possible truncation.
+    //The value of the right size,   which is selected by ?:, is anyway not truncated or promoted.
+    static const size_t value = (size_t)((sizeof(size_t)==sizeof(u)) ? u : ull);
+};
+
+#if __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT
+using std::move;
+using std::forward;
+#elif defined(_LIBCPP_NAMESPACE)
+// libc++ defines "pre-C++11 move and forward" similarly to ours; use it to avoid name conflicts in some cases.
+using std::_LIBCPP_NAMESPACE::move;
+using std::_LIBCPP_NAMESPACE::forward;
+#else
+// It is assumed that cv qualifiers, if any, are part of the deduced type.
+template <typename T>
+T& move( T& x ) { return x; }
+template <typename T>
+T& forward( T& x ) { return x; }
+#endif /* __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT */
+
+// Helper macros to simplify writing templates working with both C++03 and C++11.
+#if __RANDOM_ITERATOR_TBB_CPP11_RVALUE_REF_PRESENT
+#define  __RANDOM_ITERATOR_TBB_FORWARDING_REF(A) A&&
+#else
+// It is assumed that cv qualifiers, if any, are part of a deduced type.
+// Thus this macro should not be used in public interfaces.
+#define  __RANDOM_ITERATOR_TBB_FORWARDING_REF(A) A&
+#endif
+#if __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#define __RANDOM_ITERATOR_TBB_PARAMETER_PACK ...
+#define __RANDOM_ITERATOR_TBB_PACK_EXPANSION(A) A...
+#else
+#define __RANDOM_ITERATOR_TBB_PARAMETER_PACK
+#define __RANDOM_ITERATOR_TBB_PACK_EXPANSION(A) A
+#endif /* __RANDOM_ITERATOR_TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+
+#if __RANDOM_ITERATOR_TBB_CPP11_DECLTYPE_PRESENT
+#if __RANDOM_ITERATOR_TBB_CPP11_DECLVAL_BROKEN
+// Ad-hoc implementation of std::declval
+template <class T> __RANDOM_ITERATOR_TBB_FORWARDING_REF(T) declval() /*noexcept*/;
+#else
+using std::declval;
+#endif
+#endif
+
+template <bool condition>
+struct STATIC_ASSERTION_FAILED;
+
+template <>
+struct STATIC_ASSERTION_FAILED<false> { enum {value=1};};
+
+template<>
+struct STATIC_ASSERTION_FAILED<true>; //intentionally left undefined to cause compile time error
+
+//! @endcond
+}} // namespace random_iterator_tbb::internal
+
+#if __RANDOM_ITERATOR_TBB_STATIC_ASSERT_PRESENT
+#define __RANDOM_ITERATOR_TBB_STATIC_ASSERT(condition,msg) static_assert(condition,msg)
+#else
+//please note condition is intentionally inverted to get a bit more understandable error msg
+#define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_IMPL1(condition,msg,line)       \
+    enum {static_assert_on_line_##line = tbb::internal::STATIC_ASSERTION_FAILED<!(condition)>::value}
+
+#define __RANDOM_ITERATOR_TBB_STATIC_ASSERT_IMPL(condition,msg,line) __RANDOM_ITERATOR_TBB_STATIC_ASSERT_IMPL1(condition,msg,line)
+//! Verify condition, at compile time
+#define __RANDOM_ITERATOR_TBB_STATIC_ASSERT(condition,msg) __RANDOM_ITERATOR_TBB_STATIC_ASSERT_IMPL(condition,msg,__LINE__)
+#endif
+
+#endif /* RC_INVOKED */
+#endif /* __RANDOM_ITERATOR_TBB_tbb_stddef_H */
diff --git a/corsika/detail/framework/random/random_iterator/detail/uint128.hpp b/corsika/detail/framework/random/random_iterator/detail/uint128.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..863fc100b546a5a7755fb322bb15725ef85a26be
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/uint128.hpp
@@ -0,0 +1,562 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * uint128_t.hpp
+ *
+ *  Created on: 13/03/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <cstdint>
+#include <ostream>
+#include <stdexcept>
+#include <string>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
+#include "Macros.h"
+
+namespace random_iterator {
+
+class  uint128_t;
+}
+
+namespace std {  // This is probably not a good idea
+    template <> struct is_arithmetic<random_iterator::uint128_t> : std::true_type {};
+    template <> struct is_integral<random_iterator::uint128_t> : std::true_type {};
+    template <> struct is_unsigned<random_iterator::uint128_t> : std::true_type {};
+}
+
+
+namespace random_iterator {
+
+// Give uint128_t type traits
+
+class uint128_t
+{
+
+public:
+	// Constructors
+	uint128_t() = default;
+
+	uint128_t(uint128_t const& rhs) = default;
+
+	uint128_t(uint128_t && rhs) = default;
+
+	uint128_t(std::string & s);
+
+	uint128_t(const char *s);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	uint128_t(const T & rhs)
+#ifdef __BIG_ENDIAN__
+: UPPER(0), LOWER(rhs)
+#endif
+#ifdef __LITTLE_ENDIAN__
+  : LOWER(rhs), UPPER(0)
+#endif
+    {
+		if (std::is_signed<T>::value) {
+			if (rhs < T(0)) {
+				UPPER = -1;
+			}
+		}
+    }
+
+	template <typename S, typename T, typename = typename std::enable_if <std::is_integral<S>::value && std::is_integral<T>::value, void>::type>
+	uint128_t(const S & upper_rhs, const T & lower_rhs)
+#ifdef __BIG_ENDIAN__
+	: UPPER(upper_rhs), LOWER(lower_rhs)
+#endif
+#ifdef __LITTLE_ENDIAN__
+	  : LOWER(lower_rhs), UPPER(upper_rhs)
+#endif
+	    {}
+
+	//  RHS input args only
+
+	// Assignment Operator
+	inline uint128_t & operator=(const uint128_t & rhs) = default;
+
+	inline uint128_t & operator=(uint128_t && rhs) = default;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator=(const T & rhs){
+		UPPER = 0;
+
+		if (std::is_signed<T>::value) {
+			if (rhs < T(0)) {
+				UPPER = -1;
+			}
+		}
+
+		LOWER = rhs;
+		return *this;
+	}
+
+	// Typecast Operators
+	inline  operator     bool() const;
+	inline  operator  uint8_t() const;
+	inline  operator uint16_t() const;
+	inline  operator uint32_t() const;
+	inline  operator uint64_t() const;
+
+	// Bitwise Operators
+	inline  uint128_t operator&(const uint128_t & rhs) const;
+
+	//inline  void export_bits(std::vector<uint8_t> & ret) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline   uint128_t operator&(const T & rhs) const{
+		return uint128_t(0, LOWER & (uint64_t) rhs);
+	}
+
+	inline   uint128_t & operator&=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator&=(const T & rhs){
+		UPPER = 0;
+		LOWER &= rhs;
+		return *this;
+	}
+
+	inline  uint128_t operator|(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator|(const T & rhs) const{
+		return uint128_t(UPPER, LOWER | (uint64_t) rhs);
+	}
+
+	inline  uint128_t & operator|=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator|=(const T & rhs){
+		LOWER |= (uint64_t) rhs;
+		return *this;
+	}
+
+	inline  uint128_t operator^(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator^(const T & rhs) const{
+		return uint128_t(UPPER, LOWER ^ (uint64_t) rhs);
+	}
+
+	inline  uint128_t & operator^=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator^=(const T & rhs){
+		LOWER ^= (uint64_t) rhs;
+		return *this;
+	}
+
+	inline uint128_t operator~() const;
+
+	// Bit Shift Operators
+	inline  uint128_t operator<<(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t operator<<(const T & rhs) const{
+		return *this << uint128_t(rhs);
+	}
+
+	inline  uint128_t & operator<<=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator<<=(const T & rhs){
+		*this = *this << uint128_t(rhs);
+		return *this;
+	}
+
+	inline   uint128_t operator>>(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator>>(const T & rhs) const{
+		return *this >> uint128_t(rhs);
+	}
+
+	inline  uint128_t & operator>>=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline   uint128_t & operator>>=(const T & rhs){
+		*this = *this >> uint128_t(rhs);
+		return *this;
+	}
+
+	// Logical Operators
+	inline  bool operator!() const;
+	inline  bool operator&&(const uint128_t & rhs) const;
+	inline  bool operator||(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator&&(const T & rhs) const{
+		return static_cast <bool> (*this && rhs);
+	}
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline bool operator||(const T & rhs) const{
+		return static_cast <bool> (*this || rhs);
+	}
+
+	// Comparison Operators
+	inline bool operator==(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator==(const T & rhs) const{
+		return (!UPPER && (LOWER == (uint64_t) rhs));
+	}
+
+	inline bool operator!=(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator!=(const T & rhs) const{
+		return (UPPER | (LOWER != (uint64_t) rhs));
+	}
+
+	inline bool operator>(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline bool operator>(const T & rhs) const{
+		return (UPPER || (LOWER > (uint64_t) rhs));
+	}
+
+	inline  bool operator<(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator<(const T & rhs) const{
+		return (!UPPER)?(LOWER < (uint64_t) rhs):false;
+	}
+
+	inline bool operator>=(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator>=(const T & rhs) const{
+		return ((*this > rhs) | (*this == rhs));
+	}
+
+	inline  bool operator<=(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  bool operator<=(const T & rhs) const{
+		return ((*this < rhs) | (*this == rhs));
+	}
+
+	// Arithmetic Operators
+	inline  uint128_t operator+(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator+(const T & rhs) const{
+		return uint128_t(UPPER + ((LOWER + (uint64_t) rhs) < LOWER), LOWER + (uint64_t) rhs);
+	}
+
+	inline  uint128_t & operator+=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t & operator+=(const T & rhs){
+		return *this += uint128_t(rhs);
+	}
+
+	inline uint128_t operator-(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator-(const T & rhs) const{
+		return uint128_t((uint64_t) (UPPER - ((LOWER - rhs) > LOWER)), (uint64_t) (LOWER - rhs));
+	}
+
+	inline  uint128_t & operator-=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t & operator-=(const T & rhs){
+		return *this = *this - uint128_t(rhs);
+	}
+
+	inline uint128_t operator*(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t operator*(const T & rhs) const{
+		return *this * uint128_t(rhs);
+	}
+
+	inline uint128_t & operator*=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t & operator*=(const T & rhs){
+		return *this = *this * uint128_t(rhs);
+	}
+
+	inline  uint128_t operator/(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator/(const T & rhs) const{
+		return *this / uint128_t(rhs);
+	}
+
+	inline  uint128_t & operator/=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t & operator/=(const T & rhs){
+		return *this = *this / uint128_t(rhs);
+	}
+
+	inline uint128_t operator%(const uint128_t & rhs) const;
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline  uint128_t operator%(const T & rhs) const{
+		return *this % uint128_t(rhs);
+	}
+
+	inline uint128_t & operator%=(const uint128_t & rhs);
+
+	template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+	inline uint128_t & operator%=(const T & rhs){
+		return *this = *this % uint128_t(rhs);
+	}
+
+	// Increment Operator
+	inline  uint128_t & operator++();
+	inline  uint128_t operator++(int);
+
+	// Decrement Operator
+	inline   uint128_t & operator--();
+	inline   uint128_t operator--(int);
+
+	// Nothing done since promotion doesn't work here
+	inline  uint128_t operator+() const;
+
+	// two's complement
+	inline  uint128_t operator-() const;
+
+	// Get private values
+	inline   uint64_t upper() const;
+	inline   uint64_t lower() const;
+
+
+
+	// Get bitsize of value
+	inline  uint8_t bits() const;
+
+	// rotate right 64
+	inline  uint128_t rotate_right() const;
+
+	// Get string representation of value
+	inline  std::string str(uint8_t base = 10, const unsigned int & len = 0) const;
+
+private:
+
+	std::pair <uint128_t, uint128_t> divmod(const uint128_t & lhs, const uint128_t & rhs) const;
+	void init(const char * s);
+	void _init_hex(const char *s);
+	void _init_dec(const char *s);
+	void _init_oct(const char *s);
+
+	static inline uint128_t  mul128(uint128_t  const x, uint128_t  const y)
+	{
+		uint128_t z;
+#ifdef __powerpc64__
+asm( "mulhdu %3\n\t"
+		: "=a" (z.LOWER), "=d" (z.UPPER)
+		  : "%0" (x.LOWER), "rm" (y.LOWER));
+#else
+asm( "mulq %3\n\t"
+		: "=a" (z.LOWER), "=d" (z.UPPER)
+		  : "%0" (x.LOWER), "rm" (y.LOWER));
+#endif
+z.UPPER +=(x.UPPER * y.LOWER) + (x.LOWER * y.UPPER);
+return z;
+	}
+
+#ifdef __BIG_ENDIAN__
+	uint64_t UPPER, LOWER;
+#endif
+#ifdef __LITTLE_ENDIAN__
+	uint64_t LOWER, UPPER;
+#endif
+
+};
+
+// lhs type T as first arguemnt
+// If the output is not a bool, casts to type T
+
+// Bitwise Operators
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator&(const T & lhs, const uint128_t & rhs){
+	return rhs & lhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator&=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (rhs & lhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator|(const T & lhs, const uint128_t & rhs){
+	return rhs | lhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator|=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (rhs | lhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator^(const T & lhs, const uint128_t & rhs){
+	return rhs ^ lhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator^=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (rhs ^ lhs);
+}
+
+// Bitshift operators
+inline   uint128_t operator<<(const bool     & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const uint8_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const uint16_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const uint32_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const uint64_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const int8_t   & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const int16_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const int32_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator<<(const int64_t  & lhs, const uint128_t & rhs);
+
+template <typename T,
+typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline   T & operator<<=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (uint128_t(lhs) << rhs);
+}
+
+inline   uint128_t operator>>(const bool     & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const uint8_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const uint16_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const uint32_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const uint64_t & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const int8_t   & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const int16_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const int32_t  & lhs, const uint128_t & rhs);
+inline   uint128_t operator>>(const int64_t  & lhs, const uint128_t & rhs);
+
+template <typename T,
+typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline   T & operator>>=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (uint128_t(lhs) >> rhs);
+}
+
+// Comparison Operators
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator==(const T & lhs, const uint128_t & rhs){
+	return (!rhs.upper() && ((uint64_t) lhs == rhs.lower()));
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator!=(const T & lhs, const uint128_t & rhs){
+	return (rhs.upper() | ((uint64_t) lhs != rhs.lower()));
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator>(const T & lhs, const uint128_t & rhs){
+	return (!rhs.upper()) && ((uint64_t) lhs > rhs.lower());
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator<(const T & lhs, const uint128_t & rhs){
+	if (rhs.upper()){
+		return true;
+	}
+	return ((uint64_t) lhs < rhs.lower());
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator>=(const T & lhs, const uint128_t & rhs){
+	if (rhs.upper()){
+		return false;
+	}
+	return ((uint64_t) lhs >= rhs.lower());
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  bool operator<=(const T & lhs, const uint128_t & rhs){
+	if (rhs.upper()){
+		return true;
+	}
+	return ((uint64_t) lhs <= rhs.lower());
+}
+
+// Arithmetic Operators
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator+(const T & lhs, const uint128_t & rhs){
+	return rhs + lhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator+=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (rhs + lhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator-(const T & lhs, const uint128_t & rhs){
+	return -(rhs - lhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator-=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (-(rhs - lhs));
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator*(const T & lhs, const uint128_t & rhs){
+	return rhs * lhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator*=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (rhs * lhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator/(const T & lhs, const uint128_t & rhs){
+	return uint128_t(lhs) / rhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator/=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (uint128_t(lhs) / rhs);
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  uint128_t operator%(const T & lhs, const uint128_t & rhs){
+	return uint128_t(lhs) % rhs;
+}
+
+template <typename T, typename = typename std::enable_if<std::is_integral<T>::value, T>::type >
+inline  T & operator%=(T & lhs, const uint128_t & rhs){
+	return lhs = static_cast <T> (uint128_t(lhs) % rhs);
+}
+
+// IO Operator
+inline   std::ostream & operator<<(std::ostream & stream, const uint128_t & rhs);
+
+}  // namespace random_iterator
+
+
+#include "uint128.inl"
diff --git a/corsika/detail/framework/random/random_iterator/detail/uint128.inl b/corsika/detail/framework/random/random_iterator/detail/uint128.inl
new file mode 100644
index 0000000000000000000000000000000000000000..281b948bde616925d1305b27660def0de1b5017f
--- /dev/null
+++ b/corsika/detail/framework/random/random_iterator/detail/uint128.inl
@@ -0,0 +1,569 @@
+/*----------------------------------------------------------------------------
+ *
+ *   Copyright (C) 2021 Antonio Augusto Alves Junior
+ *
+ *   This file is part of RandomIterator.
+ *
+ *   RandomIterator is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   RandomIterator is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with RandomIterator.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *---------------------------------------------------------------------------*/
+/*
+ * uint128_t.inl
+ *
+ *  Created on: 13/03/2021
+ *      Author: Antonio Augusto Alves Junior
+ */
+
+#pragma once
+
+#include <cstring>
+
+
+namespace random_iterator {
+
+const uint128_t uint128_0(0);
+const uint128_t uint128_1(1);
+
+inline uint128_t::uint128_t(std::string & s) {
+    init(s.c_str());
+}
+
+inline uint128_t::uint128_t(const char *s) {
+    init(s);
+}
+
+inline void uint128_t::init(const char *s) {
+    if (s == NULL || s[0] == 0){
+        LOWER = UPPER = 0;
+        return;
+    }
+
+    while (*s == ' ') ++s;
+
+    if (std::memcmp(s, "0x", 2) == 0){
+        _init_hex(&s[2]);
+    }
+    else if (std::memcmp(s, "0o", 2) == 0){
+        _init_oct(&s[2]);
+    }
+    else{
+        _init_dec(s);
+    }
+}
+
+inline void uint128_t::_init_hex(const char *s) {
+    // 2**128 = 0x100000000000000000000000000000000.
+    LOWER = UPPER = 0;
+    int i;
+    for (i = 0; *s && i < 16; ++s, ++i){
+        if ('0' <= *s && *s <= '9'){
+            LOWER *= 16;
+            LOWER += *s - '0';
+        }
+        else if ('A' <= *s && *s <= 'F'){
+            LOWER *= 16;
+            LOWER += *s + (10 - 'A');
+        }
+        else if ('a' <= *s && *s <= 'f'){
+            LOWER *= 16;
+            LOWER += *s + (10 - 'a');
+        }
+        else{
+            return;
+        }
+    }
+    for (; *s && i < 32; ++s, ++i){
+        if ('0' <= *s && *s <= '9'){
+            *this *= 16;
+            *this += *s - '0';
+        }
+        else if ('A' <= *s && *s <= 'F'){
+            *this *= 16;
+            *this += *s + (10 - 'A');
+        }
+        else if ('a' <= *s && *s <= 'f'){
+            *this *= 16;
+            *this += *s + (10 - 'a');
+        }
+        else{
+            return;
+        }
+    }
+}
+
+inline void uint128_t::_init_dec(const char *s){
+    // 2**128 = 340282366920938463463374607431768211456.
+    LOWER = UPPER = 0;
+    for (int i = 0; '0' <= *s && *s <= '9' && i < 39; ++s, ++i){
+        *this *= 10;
+        *this += *s - '0';
+    }
+}
+
+inline void uint128_t::_init_oct(const char *s){
+    // 2**128 = 0o4000000000000000000000000000000000000000000.
+    LOWER = UPPER = 0;
+    for (int i = 0; '0' <= *s && *s <= '7' && i < 43; ++s, ++i){
+        *this *= 8;
+        *this += *s - '0';
+    }
+}
+
+inline uint128_t::operator bool() const{
+    return (bool) (UPPER | LOWER);
+}
+
+inline uint128_t::operator uint8_t() const{
+    return (uint8_t) LOWER;
+}
+
+inline uint128_t::operator uint16_t() const{
+    return (uint16_t) LOWER;
+}
+
+inline uint128_t::operator uint32_t() const{
+    return (uint32_t) LOWER;
+}
+
+inline uint128_t::operator uint64_t() const{
+    return (uint64_t) LOWER;
+}
+
+inline uint128_t uint128_t::operator&(const uint128_t & rhs) const{
+    return uint128_t(UPPER & rhs.UPPER, LOWER & rhs.LOWER);
+}
+
+inline uint128_t & uint128_t::operator&=(const uint128_t & rhs){
+    UPPER &= rhs.UPPER;
+    LOWER &= rhs.LOWER;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator|(const uint128_t & rhs) const{
+    return uint128_t(UPPER | rhs.UPPER, LOWER | rhs.LOWER);
+}
+
+inline uint128_t & uint128_t::operator|=(const uint128_t & rhs){
+    UPPER |= rhs.UPPER;
+    LOWER |= rhs.LOWER;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator^(const uint128_t & rhs) const{
+    return uint128_t(UPPER ^ rhs.UPPER, LOWER ^ rhs.LOWER);
+}
+
+inline uint128_t & uint128_t::operator^=(const uint128_t & rhs){
+    UPPER ^= rhs.UPPER;
+    LOWER ^= rhs.LOWER;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator~() const{
+    return uint128_t(~UPPER, ~LOWER);
+}
+
+inline uint128_t uint128_t::operator<<(const uint128_t & rhs) const{
+    const uint64_t shift = rhs.LOWER;
+    if (((bool) rhs.UPPER) || (shift >= 128)){
+        return uint128_0;
+    }
+    else if (shift == 64){
+        return uint128_t(LOWER, 0);
+    }
+    else if (shift == 0){
+        return *this;
+    }
+    else if (shift < 64){
+        return uint128_t((UPPER << shift) + (LOWER >> (64 - shift)), LOWER << shift);
+    }
+    else if ((128 > shift) && (shift > 64)){
+        return uint128_t(LOWER << (shift - 64), 0);
+    }
+    else{
+        return uint128_0;
+    }
+}
+
+inline uint128_t & uint128_t::operator<<=(const uint128_t & rhs){
+    *this = *this << rhs;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator>>(const uint128_t & rhs) const{
+
+    const uint64_t shift = rhs.LOWER;
+    if (((bool) rhs.UPPER) || (shift >= 128)){
+        return uint128_0;
+    }
+    else if (shift == 64){
+        return uint128_t(0, UPPER);
+    }
+    else if (shift == 0){
+        return *this;
+    }
+    else if (shift < 64){
+        return uint128_t(UPPER >> shift, (UPPER << (64 - shift)) + (LOWER >> shift));
+    }
+    else if ((128 > shift) && (shift > 64)){
+        return uint128_t(0, (UPPER >> (shift - 64)));
+    }
+    else{
+        return uint128_0;
+    }
+}
+
+inline uint128_t & uint128_t::operator>>=(const uint128_t & rhs){
+    *this = *this >> rhs;
+    return *this;
+}
+
+inline bool uint128_t::operator!() const{
+    return !(bool) (UPPER | LOWER);
+}
+
+inline bool uint128_t::operator&&(const uint128_t & rhs) const{
+    return ((bool) *this && rhs);
+}
+
+inline bool uint128_t::operator||(const uint128_t & rhs) const{
+     return ((bool) *this || rhs);
+}
+
+inline bool uint128_t::operator==(const uint128_t & rhs) const{
+    return ((UPPER == rhs.UPPER) && (LOWER == rhs.LOWER));
+}
+
+inline bool uint128_t::operator!=(const uint128_t & rhs) const{
+    return ((UPPER != rhs.UPPER) | (LOWER != rhs.LOWER));
+}
+
+inline bool uint128_t::operator>(const uint128_t & rhs) const{
+    if (UPPER == rhs.UPPER){
+        return (LOWER > rhs.LOWER);
+    }
+    return (UPPER > rhs.UPPER);
+}
+
+inline bool uint128_t::operator<(const uint128_t & rhs) const{
+    if (UPPER == rhs.UPPER){
+        return (LOWER < rhs.LOWER);
+    }
+    return (UPPER < rhs.UPPER);
+}
+
+inline bool uint128_t::operator>=(const uint128_t & rhs) const{
+    return ((*this > rhs) | (*this == rhs));
+}
+
+inline bool uint128_t::operator<=(const uint128_t & rhs) const{
+    return ((*this < rhs) | (*this == rhs));
+}
+
+inline uint128_t uint128_t::operator+(const uint128_t & rhs) const{
+    return uint128_t(UPPER + rhs.UPPER + ((LOWER + rhs.LOWER) < LOWER), LOWER + rhs.LOWER);
+}
+
+inline uint128_t & uint128_t::operator+=(const uint128_t & rhs){
+    UPPER += rhs.UPPER + ((LOWER + rhs.LOWER) < LOWER);
+    LOWER += rhs.LOWER;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator-(const uint128_t & rhs) const{
+    return uint128_t(UPPER - rhs.UPPER - ((LOWER - rhs.LOWER) > LOWER), LOWER - rhs.LOWER);
+}
+
+inline uint128_t & uint128_t::operator-=(const uint128_t & rhs){
+    *this = *this - rhs;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator*(const uint128_t & rhs) const {
+
+#ifdef __powerpc64__
+	return mul128(*this, rhs);
+#elif __x86_64__
+	return mul128(*this, rhs);
+#else
+
+    // split values into 4 32-bit parts
+    uint64_t top[4] = {UPPER >> 32, UPPER & 0xffffffff, LOWER >> 32, LOWER & 0xffffffff};
+    uint64_t bottom[4] = {rhs.UPPER >> 32, rhs.UPPER & 0xffffffff, rhs.LOWER >> 32, rhs.LOWER & 0xffffffff};
+    uint64_t products[4][4];
+
+    // multiply each component of the values
+    for(int y = 3; y > -1; y--){
+        for(int x = 3; x > -1; x--){
+            products[3 - x][y] = top[x] * bottom[y];
+        }
+    }
+
+    // first row
+    uint64_t fourth32 = (products[0][3] & 0xffffffff);
+    uint64_t third32  = (products[0][2] & 0xffffffff) + (products[0][3] >> 32);
+    uint64_t second32 = (products[0][1] & 0xffffffff) + (products[0][2] >> 32);
+    uint64_t first32  = (products[0][0] & 0xffffffff) + (products[0][1] >> 32);
+
+    // second row
+    third32  += (products[1][3] & 0xffffffff);
+    second32 += (products[1][2] & 0xffffffff) + (products[1][3] >> 32);
+    first32  += (products[1][1] & 0xffffffff) + (products[1][2] >> 32);
+
+    // third row
+    second32 += (products[2][3] & 0xffffffff);
+    first32  += (products[2][2] & 0xffffffff) + (products[2][3] >> 32);
+
+    // fourth row
+    first32  += (products[3][3] & 0xffffffff);
+
+    // move carry to next digit
+    third32  += fourth32 >> 32;
+    second32 += third32  >> 32;
+    first32  += second32 >> 32;
+
+    // remove carry from current digit
+    fourth32 &= 0xffffffff;
+    third32  &= 0xffffffff;
+    second32 &= 0xffffffff;
+    first32  &= 0xffffffff;
+
+    // combine components
+    return uint128_t((first32 << 32) | second32, (third32 << 32) | fourth32);
+#endif
+}
+
+inline uint128_t & uint128_t::operator*=(const uint128_t & rhs){
+    *this = *this * rhs;
+    return *this;
+}
+
+inline std::pair <uint128_t, uint128_t> uint128_t::divmod(const uint128_t & lhs, const uint128_t & rhs) const{
+    // Save some calculations /////////////////////
+    if (rhs == uint128_0){
+        throw std::domain_error("Error: division or modulus by 0");
+    }
+    else if (rhs == uint128_1){
+        return std::pair <uint128_t, uint128_t> (lhs, uint128_0);
+    }
+    else if (lhs == rhs){
+        return std::pair <uint128_t, uint128_t> (uint128_1, uint128_0);
+    }
+    else if ((lhs == uint128_0) || (lhs < rhs)){
+        return std::pair <uint128_t, uint128_t> (uint128_0, lhs);
+    }
+
+    std::pair <uint128_t, uint128_t> qr (uint128_0, uint128_0);
+    for(uint8_t x = lhs.bits(); x > 0; x--){
+        qr.first  <<= uint128_1;
+        qr.second <<= uint128_1;
+
+        if ((lhs >> (x - 1U)) & 1){
+            ++qr.second;
+        }
+
+        if (qr.second >= rhs){
+            qr.second -= rhs;
+            ++qr.first;
+        }
+    }
+    return qr;
+}
+
+inline uint128_t uint128_t::operator/(const uint128_t & rhs) const{
+    return divmod(*this, rhs).first;
+}
+
+inline uint128_t & uint128_t::operator/=(const uint128_t & rhs){
+    *this = *this / rhs;
+    return *this;
+}
+
+inline uint128_t uint128_t::operator%(const uint128_t & rhs) const{
+    return divmod(*this, rhs).second;
+}
+
+inline uint128_t & uint128_t::operator%=(const uint128_t & rhs){
+    *this = *this % rhs;
+    return *this;
+}
+
+inline uint128_t & uint128_t::operator++(){
+    return *this += uint128_1;
+}
+
+inline uint128_t uint128_t::operator++(int){
+    uint128_t temp(*this);
+    ++*this;
+    return temp;
+}
+
+inline uint128_t & uint128_t::operator--(){
+    return *this -= uint128_1;
+}
+
+inline uint128_t uint128_t::operator--(int){
+    uint128_t temp(*this);
+    --*this;
+    return temp;
+}
+
+inline uint128_t uint128_t::operator+() const{
+    return *this;
+}
+
+inline uint128_t uint128_t::operator-() const{
+    return ~*this + uint128_1;
+}
+
+inline uint64_t uint128_t::upper() const{
+    return UPPER;
+}
+
+inline uint64_t uint128_t::lower() const{
+    return LOWER;
+}
+
+inline uint8_t uint128_t::bits() const{
+    uint8_t out = 0;
+    if (UPPER){
+        out = 64;
+        uint64_t up = UPPER;
+        while (up){
+            up >>= 1;
+            out++;
+        }
+    }
+    else{
+        uint64_t low = LOWER;
+        while (low){
+            low >>= 1;
+            out++;
+        }
+    }
+    return out;
+}
+
+inline  uint128_t uint128_t::rotate_right() const{
+
+	return uint128_t(LOWER, UPPER);
+}
+
+inline std::string uint128_t::str(uint8_t base, const unsigned int & len) const{
+    if ((base < 2) || (base > 16)){
+        throw std::invalid_argument("Base must be in the range [2, 16]");
+    }
+    std::string out = "";
+    if (!(*this)){
+        out = "0";
+    }
+    else{
+        std::pair <uint128_t, uint128_t> qr(*this, uint128_0);
+        do{
+            qr = divmod(qr.first, base);
+            out = "0123456789abcdef"[(uint8_t) qr.second] + out;
+        } while (qr.first);
+    }
+    if (out.size() < len){
+        out = std::string(len - out.size(), '0') + out;
+    }
+    return out;
+}
+
+inline uint128_t operator<<(const bool & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const uint8_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const uint16_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const uint32_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const uint64_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const int8_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const int16_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const int32_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator<<(const int64_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) << rhs;
+}
+
+inline uint128_t operator>>(const bool & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const uint8_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const uint16_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const uint32_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const uint64_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const int8_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const int16_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const int32_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline uint128_t operator>>(const int64_t & lhs, const uint128_t & rhs){
+    return uint128_t(lhs) >> rhs;
+}
+
+inline std::ostream & operator<<(std::ostream & stream, const uint128_t & rhs){
+    if (stream.flags() & stream.oct){
+        stream << rhs.str(8);
+    }
+    else if (stream.flags() & stream.dec){
+        stream << rhs.str(10);
+    }
+    else if (stream.flags() & stream.hex){
+        stream << rhs.str(16);
+    }
+    return stream;
+}
+
+}  // namespace random_iterator
diff --git a/corsika/detail/modules/conex/CONEXhybrid.inl b/corsika/detail/modules/conex/CONEXhybrid.inl
index 6fbfb02e18acba5dddf6a5108bdfd91126a802fc..3990a6225e9c5d34afa0361465e6d8f8795252c6 100644
--- a/corsika/detail/modules/conex/CONEXhybrid.inl
+++ b/corsika/detail/modules/conex/CONEXhybrid.inl
@@ -112,7 +112,7 @@ namespace corsika {
         theta, phi);
 
     int ipart = static_cast<int>(primaryPDG);
-    auto rng = RNGManager::getInstance().getRandomStream("cascade");
+    auto rng = RNGManager<>::getInstance().getRandomStream("cascade");
 
     double dimpact = 0.; // valid only if shower core is fixed on the observation plane;
                          // for skimming showers an offset is needed like in CONEX
diff --git a/corsika/framework/core/Cascade.hpp b/corsika/framework/core/Cascade.hpp
index 1804f406e98e915fd15970cb5dce75f9d721e6cc..10f9eb9a2d4820643a7562ae76be890b68febfc7 100644
--- a/corsika/framework/core/Cascade.hpp
+++ b/corsika/framework/core/Cascade.hpp
@@ -133,7 +133,7 @@ namespace corsika {
     TProcessList& sequence_;
     TOutput& output_;
     TStack& stack_;
-    default_prng_type& rng_ = RNGManager::getInstance().getRandomStream("cascade");
+    default_prng_type& rng_ = RNGManager<>::getInstance().getRandomStream("cascade");
     unsigned int count_ = 0;
 
     // but this here temporarily. Should go into dedicated file later:
diff --git a/corsika/framework/random/RNGManager.hpp b/corsika/framework/random/RNGManager.hpp
index 0e687adf45d3a93dca4f2e0975d0b9b7d5b82c0d..1bf2f41da7520b10299afacff6046bc8d1857022 100644
--- a/corsika/framework/random/RNGManager.hpp
+++ b/corsika/framework/random/RNGManager.hpp
@@ -15,27 +15,28 @@
 
 #include <corsika/framework/utility/Singleton.hpp>
 #include <corsika/framework/core/Logging.hpp>
-
+#include <corsika/detail/framework/random/random_iterator/Stream.hpp>
 /*!
  * With this class modules can register streams of random numbers.
  */
 
 namespace corsika {
 
-  class RNGManager : public corsika::Singleton<RNGManager> {
+template<typename CBPRNG=random_iterator::philox>
+  class RNGManager : public corsika::Singleton<RNGManager<CBPRNG>> {
 
-    friend class corsika::Singleton<RNGManager>;
+    friend class corsika::Singleton<RNGManager<CBPRNG>>;
 
   public:
-    typedef std::mt19937_64 prng_type;
+
+    typedef CBPRNG prng_type;
     typedef std::uint64_t seed_type;
     typedef std::string string_type;
     typedef std::map<std::string, prng_type> streams_type;
-    typedef std::map<std::string, std::seed_seq> seeds_type;
 
-    RNGManager(RNGManager const&) = delete; // since it is a singleton
+    RNGManager(RNGManager<CBPRNG> const&) = delete; // since it is a singleton
 
-    RNGManager& operator=(RNGManager const&) = delete;
+    RNGManager<CBPRNG>& operator=(RNGManager<CBPRNG> const&) = delete;
 
     /*!
      * This function is to be called by a module requiring a random-number
@@ -43,35 +44,25 @@ namespace corsika {
      *
      * \throws sth. when stream \a pModuleName is already registered
      */
-    void registerRandomStream(string_type const& streamName);
+    inline void registerRandomStream(string_type const& streamName);
 
     /*!
      * returns the pre-stored stream of given name \a pStreamName if
      * available
      */
-    prng_type& getRandomStream(string_type const& streamName);
+    inline prng_type& getRandomStream(string_type const& streamName);
 
     /*!
      * Check whether a stream has been registered.
      */
-    bool isRegistered(string_type const& streamName) const;
+    inline bool isRegistered(string_type const& streamName) const;
 
     /*!
      * dumps the names and states of all registered random-number streams
      * into a std::stringstream.
      */
-    std::stringstream dumpState() const;
-
-    /**
-     * Set explicit seeds for all currently registered streams. The actual seed values
-     * are incremented from \a vSeed.
-     */
-    void seedAll(seed_type seed);
+    inline std::stringstream dumpState() const;
 
-    /**
-     * Set seeds for all currently registered streams.
-     */
-    void seedAll(void); //!< seed all currently registered streams with "real" randomness
 
     /**
      * @fn const streams_type getRngs&()const
@@ -83,15 +74,6 @@ namespace corsika {
      */
     const streams_type& getRngs() const { return rngs_; }
 
-    /**
-     * @fn const seeds_type getSeeds&()const
-     * @brief Constant access to the seeds.
-     *
-     * @pre
-     * @post
-     * @return RNGManager::seeds_type
-     */
-    const seeds_type& getSeeds() const { return seeds_; }
 
     /**
      * @fn streams_type Rngs()
@@ -101,27 +83,29 @@ namespace corsika {
      * @post
      * @return RNGManager::streams_type&
      */
-    streams_type Rngs() { return rngs_; }
+    streams_type& Rngs() { return rngs_; }
 
-    /**
-     * @fn seeds_type Seeds&()
-     * @brief Non-constant access to seeds.
-     *
-     * @pre
-     * @post
-     * @return RNGManager::seeds_type&
-     */
-    seeds_type& getSeeds() { return seeds_; }
+	seed_type getSeed() const {
+		return seed_;
+	}
+
+	void setSeed(seed_type seed) {
+		seed_ = seed;
+        //update the rgn states
+		for (auto& [streamName, rng] : rngs_)  rng.setSeed(seed_) ;
+
+	}
 
   protected:
+
     RNGManager() = default;
 
   private:
     streams_type rngs_;
-    seeds_type seeds_;
+    seed_type  seed_;
   };
 
-  typedef typename RNGManager::prng_type default_prng_type;
+  typedef typename RNGManager<>::prng_type default_prng_type;
 
 } // namespace corsika
 
diff --git a/corsika/modules/pythia8/Interaction.hpp b/corsika/modules/pythia8/Interaction.hpp
index f1a6e0d935c63367472025e10444aad4820eabc0..c099997a4019de54deb00980ef7349669b744e08 100644
--- a/corsika/modules/pythia8/Interaction.hpp
+++ b/corsika/modules/pythia8/Interaction.hpp
@@ -47,7 +47,7 @@ namespace corsika::pythia8 {
     void doInteraction(TView&);
 
   private:
-    default_prng_type& RNG_ = RNGManager::getInstance().getRandomStream("pythia");
+    default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("pythia");
     Pythia8::SigmaTotal sigma_;
     const bool internalDecays_ = true;
     int count_ = 0;
diff --git a/corsika/modules/pythia8/Random.hpp b/corsika/modules/pythia8/Random.hpp
index 0e04cdb6ba49801610b9903cd2ce152f9735ddd8..5e1b8d4a53341e65d9efba31316592cfc15d6118 100644
--- a/corsika/modules/pythia8/Random.hpp
+++ b/corsika/modules/pythia8/Random.hpp
@@ -19,7 +19,7 @@ namespace corsika::pythia8 {
 
   private:
     std::uniform_real_distribution<double> Dist_;
-    default_prng_type& RNG_ = RNGManager::getInstance().getRandomStream("pythia");
+    default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("pythia");
   };
 
 } // namespace corsika::pythia8
diff --git a/corsika/modules/qgsjetII/Interaction.hpp b/corsika/modules/qgsjetII/Interaction.hpp
index 63c878df5d4cea4feadbe2ff028760a79643e741..4f2f1c1db733322a93d3becd6d73ce5790c4f8c1 100644
--- a/corsika/modules/qgsjetII/Interaction.hpp
+++ b/corsika/modules/qgsjetII/Interaction.hpp
@@ -57,7 +57,7 @@ namespace corsika::qgsjetII {
         QgsjetIIHadronType::PiPlusType; // for pi0, rho0 projectiles
 
     corsika::default_prng_type& rng_ =
-        corsika::RNGManager::getInstance().getRandomStream("qgsjet");
+        corsika::RNGManager<>::getInstance().getRandomStream("qgsjet");
     const int maxMassNumber_ = 208;
   };
 
diff --git a/corsika/modules/qgsjetII/Random.hpp b/corsika/modules/qgsjetII/Random.hpp
index 1ba33351dff63470f1bdd2fe299999df33e1e374..83a5d0903192cb64c34f898587f69263aa927dd0 100644
--- a/corsika/modules/qgsjetII/Random.hpp
+++ b/corsika/modules/qgsjetII/Random.hpp
@@ -15,7 +15,7 @@ namespace qgsjetII {
 
   double rndm_interface() {
     static corsika::default_prng_type& rng =
-        corsika::RNGManager::getInstance().getRandomStream("qgsjet");
+        corsika::RNGManager<>::getInstance().getRandomStream("qgsjet");
     std::uniform_real_distribution<double> dist;
     return dist(rng);
   }
diff --git a/corsika/modules/sibyll/Interaction.hpp b/corsika/modules/sibyll/Interaction.hpp
index c00c68ac995cf0dfd4dc9bace54af082952b2dda..423d9319b9c9458265d65f1a28f0a0f1a17240f2 100644
--- a/corsika/modules/sibyll/Interaction.hpp
+++ b/corsika/modules/sibyll/Interaction.hpp
@@ -56,7 +56,7 @@ namespace corsika::sibyll {
     HEPEnergyType getMinEnergyCoM() const { return minEnergyCoM_; }
     HEPEnergyType getMaxEnergyCoM() const { return maxEnergyCoM_; }
 
-    default_prng_type& RNG_ = RNGManager::getInstance().getRandomStream("sibyll");
+    default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("sibyll");
     const HEPEnergyType minEnergyCoM_ = 10. * 1e9 * electronvolt;
     const HEPEnergyType maxEnergyCoM_ = 1.e6 * 1e9 * electronvolt;
     const int maxTargetMassNumber_ = 18;
diff --git a/corsika/modules/sibyll/NuclearInteraction.hpp b/corsika/modules/sibyll/NuclearInteraction.hpp
index 22a70bcb2f98389dabd60af44ecbbc5c3c0cab69..7196363131bd7bca26961bbe427d995927e134d0 100644
--- a/corsika/modules/sibyll/NuclearInteraction.hpp
+++ b/corsika/modules/sibyll/NuclearInteraction.hpp
@@ -53,7 +53,7 @@ namespace corsika::sibyll {
     TEnvironment const& environment_;
     sibyll::Interaction& hadronicInteraction_;
     std::map<Code, int> targetComponentsIndex_;
-    default_prng_type& RNG_ = RNGManager::getInstance().getRandomStream("sibyll");
+    default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("sibyll");
     static unsigned int constexpr gNSample_ =
         500; // number of samples in MC estimation of cross section
     static unsigned int constexpr gMaxNucleusAProjectile_ = 56;
diff --git a/corsika/modules/sibyll/Random.hpp b/corsika/modules/sibyll/Random.hpp
index b3f3d86ba899e1dce4ac18687c2d1e4aaa47853a..a54d628db86343365a70aa4df10f3c25433c52ba 100644
--- a/corsika/modules/sibyll/Random.hpp
+++ b/corsika/modules/sibyll/Random.hpp
@@ -23,7 +23,7 @@ namespace sibyll {
 
   double rndm_interface() {
     static corsika::default_prng_type& rng =
-        corsika::RNGManager::getInstance().getRandomStream("sibyll");
+        corsika::RNGManager<>::getInstance().getRandomStream("sibyll");
     std::uniform_real_distribution<double> dist;
     return dist(rng);
   }
diff --git a/corsika/modules/urqmd/Random.hpp b/corsika/modules/urqmd/Random.hpp
index aa8f555e022b06eba90aaf0e97bb277f4d3a730d..37a5d2df4a8d3371dcdbb24e3e629436e918af42 100644
--- a/corsika/modules/urqmd/Random.hpp
+++ b/corsika/modules/urqmd/Random.hpp
@@ -18,7 +18,7 @@ namespace urqmd {
    */
   double rndm_interface() {
     static corsika::default_prng_type& rng =
-        corsika::RNGManager::getInstance().getRandomStream("urqmd");
+        corsika::RNGManager<>::getInstance().getRandomStream("urqmd");
     static std::uniform_real_distribution<double> dist;
     return dist(rng);
   }
diff --git a/corsika/modules/urqmd/UrQMD.hpp b/corsika/modules/urqmd/UrQMD.hpp
index ca857e170ac5007367b16f9f526cd0e719434ddb..e83c6e8c0f1b71a1987378d9ccf0068736c72953 100644
--- a/corsika/modules/urqmd/UrQMD.hpp
+++ b/corsika/modules/urqmd/UrQMD.hpp
@@ -47,7 +47,7 @@ namespace corsika::urqmd {
     void readXSFile(boost::filesystem::path);
 
     // data members
-    default_prng_type& RNG_ = RNGManager::getInstance().getRandomStream("urqmd");
+    default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("urqmd");
     std::uniform_int_distribution<int> booleanDist_{0, 1};
     boost::multi_array<CrossSectionType, 3> xs_interp_support_table_;
   };
diff --git a/tests/framework/testCascade.cpp b/tests/framework/testCascade.cpp
index b069c23b9f8b49c5e70fc873b078198ffc08bd09..607daac9929bf407aae9bb87d904cf7c09f6cb51 100644
--- a/tests/framework/testCascade.cpp
+++ b/tests/framework/testCascade.cpp
@@ -144,7 +144,7 @@ TEST_CASE("Cascade", "[Cascade]") {
 
   HEPEnergyType E0 = 100_GeV;
 
-  RNGManager& rmng = RNGManager::getInstance();
+  auto& rmng = RNGManager<>::getInstance();
   rmng.registerRandomStream("cascade");
 
   auto env = make_dummy_env();
diff --git a/tests/framework/testRandom.cpp b/tests/framework/testRandom.cpp
index 2d0c0720ae163f2777c80837d8179b9355aba044..26363a914b21b457eb6b2629c24025f659f5547f 100644
--- a/tests/framework/testRandom.cpp
+++ b/tests/framework/testRandom.cpp
@@ -20,7 +20,7 @@ using namespace corsika;
 
 SCENARIO("random-number streams can be registered and retrieved") {
   GIVEN("a RNGManager") {
-    RNGManager& rngManager = RNGManager::getInstance();
+    RNGManager<>& rngManager = RNGManager<>::getInstance();
 
     WHEN("the sequence name is not registered") {
       CHECK(rngManager.isRegistered("stream_A") == false);
diff --git a/tests/modules/testCONEX.cpp b/tests/modules/testCONEX.cpp
index 63ca1fd573b3e7e2d0bbfff907d75ea609c7f6f2..05e76b8b7c4c601268b24de4f5fbe30040781915 100644
--- a/tests/modules/testCONEX.cpp
+++ b/tests/modules/testCONEX.cpp
@@ -40,8 +40,8 @@ TEST_CASE("CONEXSourceCut") {
 
   logging::set_level(logging::level::info);
 
-  RNGManager::getInstance().registerRandomStream("cascade");
-  RNGManager::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("cascade");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
 
   feenableexcept(FE_INVALID);
 
diff --git a/tests/modules/testPythia8.cpp b/tests/modules/testPythia8.cpp
index d07c791f5a73cfeb8801597cc62d2c77091e727b..e6cd55e8f51fe9d96c1f92c508362e68de0b9969 100644
--- a/tests/modules/testPythia8.cpp
+++ b/tests/modules/testPythia8.cpp
@@ -63,7 +63,7 @@ TEST_CASE("Pythia8", "modules") {
 
     std::set<Code> const particleList = {Code::PiPlus, Code::PiMinus, Code::KPlus,
                                          Code::KMinus, Code::K0Long,  Code::K0Short};
-    RNGManager::getInstance().registerRandomStream("pythia");
+    RNGManager<>::getInstance().registerRandomStream("pythia");
     corsika::pythia8::Decay decay(particleList);
   }
 }
@@ -114,7 +114,7 @@ TEST_CASE("Pythia8Interface", "modules") {
     std::set<Code> const particleList = {Code::PiPlus, Code::PiMinus, Code::KPlus,
                                          Code::KMinus, Code::K0Long,  Code::K0Short};
 
-    RNGManager::getInstance().registerRandomStream("pythia");
+    RNGManager<>::getInstance().registerRandomStream("pythia");
 
     corsika::pythia8::Decay decay(particleList);
 
diff --git a/tests/modules/testQGSJetII.cpp b/tests/modules/testQGSJetII.cpp
index 1dfe2f57379d46206ea2d36e7268205b3bcec9c2..25765146ea86573b7da40882918f5bf49aef1e8c 100644
--- a/tests/modules/testQGSJetII.cpp
+++ b/tests/modules/testQGSJetII.cpp
@@ -137,7 +137,7 @@ TEST_CASE("QgsjetIIInterface", "[processes]") {
   [[maybe_unused]] auto const& env_dummy = env;
   [[maybe_unused]] auto const& node_dummy = nodePtr;
 
-  RNGManager::getInstance().registerRandomStream("qgsjet");
+  RNGManager<>::getInstance().registerRandomStream("qgsjet");
 
   SECTION("InteractionInterface") {
 
diff --git a/tests/modules/testSibyll.cpp b/tests/modules/testSibyll.cpp
index 41f511a47742e1eef4ddd70b3673b71597194474..58af6a2937df8ff21126e3b5ffd570f68d0b38f1 100644
--- a/tests/modules/testSibyll.cpp
+++ b/tests/modules/testSibyll.cpp
@@ -107,7 +107,7 @@ TEST_CASE("SibyllInterface", "[processes]") {
   auto const& cs = *csPtr;
   [[maybe_unused]] auto const& env_dummy = env;
 
-  RNGManager::getInstance().registerRandomStream("sibyll");
+  RNGManager<>::getInstance().registerRandomStream("sibyll");
 
   SECTION("InteractionInterface - valid targets") {
 
diff --git a/tests/modules/testUrQMD.cpp b/tests/modules/testUrQMD.cpp
index f55aa032948c22026b170776d8946dc074c6e688..b5c207a59e7b48487897404cdfee93a376aa1049 100644
--- a/tests/modules/testUrQMD.cpp
+++ b/tests/modules/testUrQMD.cpp
@@ -68,7 +68,7 @@ TEST_CASE("UrQMD") {
   }
 
   feenableexcept(FE_INVALID);
-  RNGManager::getInstance().registerRandomStream("urqmd");
+  RNGManager<>::getInstance().registerRandomStream("urqmd");
   UrQMD urqmd;
 
   SECTION("interaction length") {