Ver Fonte

adopting cl code to more cl compilers

Nicolas Winkler há 4 anos atrás
pai
commit
c18af8ee3d

+ 7 - 0
include/Almond.h

@@ -21,6 +21,10 @@
 
 #include <memory>
 
+///
+/// \brief contains a viewport that can be restored when switching
+///        between mandelbrot set and julia set
+///
 struct ViewState
 {
     mnd::MandelViewport viewport;
@@ -36,6 +40,9 @@ enum ViewType
 };
 
 
+///
+/// \brief The main window of the Almond application
+///
 class Almond : public QMainWindow
 {
     Q_OBJECT

+ 1 - 1
libmandel/src/Mandel.cpp

@@ -236,7 +236,7 @@ std::vector<std::unique_ptr<MandelDevice>> MandelContext::createDevices(void)
             //printf("    using opencl device: %s\n", md.name.c_str());
             try {
                 md.mandelGenerators.insert({ Precision::FLOAT, std::make_unique<ClGeneratorFloat>(md) });
-                md.mandelGenerators.insert({ Precision::FIXED64, std::make_unique<ClGenerator64>(md) });
+                //md.mandelGenerators.insert({ Precision::FIXED64, std::make_unique<ClGenerator64>(md) });
                 //md.mandelGenerators.insert({ GeneratorType::FIXED128, std::make_unique<ClGenerator128>(md) });
             }
             catch (const std::string& err) {

+ 2 - 1
libmandel/src/opencl/doubledouble.cl

@@ -1,4 +1,5 @@
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
 
 inline double2 twoSum(double a, double b) {
     double s = a + b;
@@ -85,4 +86,4 @@ __kernel void iterate(__global float* A, const int width,
     }
     //               A[index] = ((float)n) + 1 - (a * a + b * b - 16) / (256 - 16);
     //           A[get_global_id(0)] = 5;
-}
+}

+ 205 - 210
libmandel/src/opencl/doubledouble.h

@@ -2,230 +2,225 @@ unsigned char doubledouble_cl[] = {
   0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
   0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
   0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d,
-  0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20,
-  0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62,
-  0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73,
-  0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0d,
-  0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
+  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
+  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
+  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
   0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20,
-  0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73,
-  0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d,
-  0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x71, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x61,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d,
-  0x20, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
+  0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
+  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53,
+  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
+  0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+  0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28,
+  0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e,
+  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20,
+  0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28,
+  0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65,
+  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x6d, 0x75, 0x6c,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
+  0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b,
+  0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e,
+  0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20,
+  0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
+  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e,
+  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x73, 0x71, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
+  0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61,
+  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a,
+  0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b,
+  0x3d, 0x20, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
   0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
   0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
+  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61,
+  0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
+  0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73,
+  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x2e, 0x73,
+  0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20,
+  0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
+  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x65, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
   0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73,
-  0x65, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x6d,
-  0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31,
-  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
+  0x32, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73,
+  0x31, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
   0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
   0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f,
-  0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0d, 0x0a,
+  0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f,
+  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
+  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c,
+  0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20,
+  0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x79, 0x32, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79,
+  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32,
+  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x20,
-  0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78,
-  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a,
+  0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x6a, 0x79, 0x32, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
+  0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
+  0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
+  0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
+  0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69,
+  0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
+  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
   0x65, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75,
   0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
+  0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
+  0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c,
+  0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c,
+  0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
+  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b,
+  0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28,
   0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x78, 0x29, 0x2c,
-  0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70,
-  0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20,
-  0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21,
-  0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x29, 0x20, 0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a,
-  0x78, 0x32, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63,
-  0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x29, 0x20, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79,
-  0x32, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20,
-  0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68,
-  0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78,
-  0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c,
-  0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c,
+  0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
+  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70,
+  0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20,
+  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f,
+  0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x20,
+  0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x29, 0x29, 0x20,
+  0x3a, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75,
+  0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x20, 0x28, 0x6a,
+  0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x29, 0x20, 0x3a, 0x20,
+  0x62, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d,
+  0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61,
+  0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x62,
   0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20,
-  0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20,
-  0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62,
-  0x62, 0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62,
-  0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e,
-  0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e,
-  0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20,
-  0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c,
-  0x6f, 0x67, 0x20, 0x32, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d,
-  0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x6d, 0x61, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d,
+  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x2d, 0x62,
+  0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
+  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61,
+  0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c,
+  0x20, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64,
+  0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63,
+  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20,
+  0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20,
+  0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20,
+  0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c,
+  0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20,
+  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78,
+  0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
+  0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
+  0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20,
+  0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
+  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+  0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c,
+  0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20,
+  0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73,
+  0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20,
+  0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30,
+  0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
+  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
+  0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
   0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d,
-  0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73,
-  0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20,
-  0x2f, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32,
-  0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20,
-  0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61,
-  0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31,
-  0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20,
-  0x31, 0x36, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
-  0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f,
-  0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0d,
-  0x0a, 0x7d
+  0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20,
+  0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a,
+  0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28,
+  0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+  0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20,
+  0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d, 0x0a
 };
-unsigned int doubledouble_cl_len = 2726;
+unsigned int doubledouble_cl_len = 2671;

+ 11 - 27
libmandel/src/opencl/doublefloat.cl

@@ -2,6 +2,7 @@
 // Real Numbers and Computers 7, Jul 2006, Nancy, France. pp.23-32. ffhal-00021443
 // https://hal.archives-ouvertes.fr/hal-00021443/document
 // added some optimizations using fma
+#pragma OPENCL FP_CONTRACT OFF
 
 float2 twoSum(float a, float b) {
     float s = a + b;
@@ -25,7 +26,11 @@ float2 split(float a) {
 }
 
 float2 twoProd(float a, float b) {
-    /*
+#ifdef FP_FAST_FMA
+    float p = a * b;
+    float e = fma(a, b, -p);
+    return (float2)(p, e);
+#else
     float x = a * b;
     float2 aex = split(a);
     float2 bex = split(b);
@@ -34,30 +39,9 @@ float2 twoProd(float a, float b) {
     float errz = erry - (aex.s0 * bex.s1);
     float y = (aex.s1 * bex.s1) - errz;
     return (float2)(x, y);
-    */
-    float p = a * b;
-    float e = fma(a, b, -p);
-    return (float2)(p, e);
-}
-
-float2 twoProdSq(float a) {
-    float p = a * a;
-    float e = fma(a, a, -p);
-    return (float2)(p, e);
+#endif
 }
 
-/*float2 add(float2 a, float2 b) {
-    float r = a.s0 + b.s0;
-    float s;
-    if (fabs(a.s0) >= fabs(b.s0)) {
-        s = (((a.s0 - r) + b.s0) + b.s1) + a.s1;
-    }
-    else {
-        s = (((b.s0 - r) + a.s0) + a.s1) + b.s1;
-    }
-    return twoSum(r, s);
-}*/
-
 float2 add(float2 a, float2 b) {
     float2 se = twoSum(a.s0, b.s0);
     se.s1 += a.s1 + b.s1;
@@ -71,9 +55,9 @@ float2 mul(float2 a, float2 b) {
 }
 
 float2 sq(float2 a) {
-    float2 t = twoProdSq(a.s0);
-    float e = a.s0 * a.s1;
-    t.s1 += e + e;
+    float2 t = twoProd(a.s0, a.s0);
+    float e = 2 * a.s0 * a.s1;
+    t.s1 += e;
     return quickTwoSum(t.s0, t.s1);
 }
 
@@ -126,4 +110,4 @@ __kernel void iterate(__global float* A, const int width,
         else
             A[index] = ((float)n);
     }
-}
+}

+ 238 - 275
libmandel/src/opencl/doublefloat.h

@@ -8,295 +8,258 @@ unsigned char doublefloat_cl[] = {
   0x2d, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61,
   0x74, 0x6f, 0x72, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x67, 0x72, 0x61, 0x70,
   0x68, 0x69, 0x63, 0x73, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72,
-  0x65, 0x2e, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x52, 0x65, 0x61, 0x6c, 0x20,
-  0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20,
-  0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x73, 0x20, 0x37, 0x2c,
-  0x20, 0x4a, 0x75, 0x6c, 0x20, 0x32, 0x30, 0x30, 0x36, 0x2c, 0x20, 0x4e,
-  0x61, 0x6e, 0x63, 0x79, 0x2c, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65,
-  0x2e, 0x20, 0x70, 0x70, 0x2e, 0x32, 0x33, 0x2d, 0x33, 0x32, 0x2e, 0x20,
-  0x66, 0x66, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32, 0x31, 0x34,
-  0x34, 0x33, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73,
-  0x3a, 0x2f, 0x2f, 0x68, 0x61, 0x6c, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69,
-  0x76, 0x65, 0x73, 0x2d, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x74, 0x65, 0x73,
-  0x2e, 0x66, 0x72, 0x2f, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32,
-  0x31, 0x34, 0x34, 0x33, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
-  0x74, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20,
-  0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
-  0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67,
-  0x20, 0x66, 0x6d, 0x61, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b,
-  0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x76, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
-  0x20, 0x2d, 0x20, 0x76, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20,
-  0x2d, 0x20, 0x76, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x4e,
+  0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x43,
+  0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x73, 0x20, 0x37, 0x2c, 0x20,
+  0x4a, 0x75, 0x6c, 0x20, 0x32, 0x30, 0x30, 0x36, 0x2c, 0x20, 0x4e, 0x61,
+  0x6e, 0x63, 0x79, 0x2c, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x2e,
+  0x20, 0x70, 0x70, 0x2e, 0x32, 0x33, 0x2d, 0x33, 0x32, 0x2e, 0x20, 0x66,
+  0x66, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32, 0x31, 0x34, 0x34,
+  0x33, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
+  0x2f, 0x68, 0x61, 0x6c, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65,
+  0x73, 0x2d, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x74, 0x65, 0x73, 0x2e, 0x66,
+  0x72, 0x2f, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32, 0x31, 0x34,
+  0x34, 0x33, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x0a,
+  0x2f, 0x2f, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x6d,
+  0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
+  0x6f, 0x6e, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6d,
+  0x61, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50,
+  0x45, 0x4e, 0x43, 0x4c, 0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54,
+  0x52, 0x41, 0x43, 0x54, 0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x66, 0x6c,
+  0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
+  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20,
-  0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b,
-  0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x20, 0x76, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20,
+  0x2d, 0x20, 0x76, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d,
+  0x20, 0x76, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
+  0x28, 0x73, 0x2c, 0x20, 0x72, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d,
+  0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x73, 0x2c,
+  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x32, 0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x28, 0x34,
   0x30, 0x39, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x61,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x61, 0x62, 0x69, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20,
-  0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x61, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20,
-  0x61, 0x62, 0x69, 0x67, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x61,
-  0x20, 0x2d, 0x20, 0x61, 0x68, 0x69, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x29, 0x28, 0x61, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x6c,
-  0x6f, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2f, 0x2a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20,
-  0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x61, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x6c,
-  0x69, 0x74, 0x28, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x65, 0x78, 0x20, 0x3d,
-  0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x62, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x72,
-  0x72, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x65,
-  0x78, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x65, 0x72,
-  0x72, 0x78, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x65, 0x78, 0x2e, 0x73, 0x31,
-  0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65,
-  0x72, 0x72, 0x7a, 0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x2d,
-  0x20, 0x28, 0x61, 0x65, 0x78, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62,
-  0x65, 0x78, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28,
-  0x61, 0x65, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78,
-  0x2e, 0x73, 0x31, 0x29, 0x20, 0x2d, 0x20, 0x65, 0x72, 0x72, 0x7a, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c,
-  0x20, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20,
-  0x2d, 0x70, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x53, 0x71, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x61, 0x62, 0x69, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20, 0x61,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x61, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20, 0x61, 0x62,
+  0x69, 0x67, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x20, 0x61, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2d, 0x20,
+  0x61, 0x68, 0x69, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
+  0x28, 0x61, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x6c, 0x6f, 0x29, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77,
+  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20,
+  0x7b, 0x0a, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x46, 0x50, 0x5f,
+  0x46, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4d, 0x41, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61,
+  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
   0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28,
-  0x61, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65,
-  0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2a, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x61,
-  0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66,
-  0x61, 0x62, 0x73, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x3e, 0x3d,
-  0x20, 0x66, 0x61, 0x62, 0x73, 0x28, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x73, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20,
-  0x2d, 0x20, 0x72, 0x29, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29,
-  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x61,
-  0x2e, 0x73, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x20, 0x3d,
-  0x20, 0x28, 0x28, 0x28, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2d, 0x20, 0x72,
-  0x29, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2b, 0x20,
-  0x61, 0x2e, 0x73, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x72, 0x2c, 0x20, 0x73, 0x29, 0x3b, 0x0d, 0x0a,
-  0x7d, 0x2a, 0x2f, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
+  0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29,
+  0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x20,
+  0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x32, 0x20, 0x61, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x70,
+  0x6c, 0x69, 0x74, 0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x65, 0x78, 0x20, 0x3d,
+  0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x62, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72,
+  0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x65, 0x78,
+  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x30,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+  0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x78,
+  0x20, 0x2d, 0x20, 0x28, 0x61, 0x65, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2a,
+  0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x7a,
+  0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x2d, 0x20, 0x28, 0x61,
+  0x65, 0x78, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x65, 0x78, 0x2e,
+  0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x31, 0x29,
+  0x20, 0x2d, 0x20, 0x65, 0x72, 0x72, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a,
+  0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c,
+  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+  0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73,
+  0x65, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31,
+  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63,
   0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x65, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a,
-  0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x6d, 0x75, 0x6c, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61,
-  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a,
-  0x20, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x61, 0x2e,
-  0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x71,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x53, 0x71, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d,
-  0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x3d, 0x20, 0x65, 0x20, 0x2b, 0x20, 0x65, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a,
-  0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
+  0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d,
+  0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x75, 0x6c,
+  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e,
+  0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28,
+  0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31,
+  0x29, 0x20, 0x2b, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20,
+  0x62, 0x2e, 0x73, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
+  0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31,
+  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
+  0x20, 0x73, 0x71, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61,
+  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
+  0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x2e, 0x73,
+  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x61, 0x2e,
+  0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x65,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x29,
+  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
   0x6d, 0x75, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x66, 0x6c, 0x6f,
   0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x2e, 0x73,
-  0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a,
-  0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69,
-  0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f,
-  0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0d, 0x0a, 0x20,
+  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
+  0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
+  0x2b, 0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+  0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75,
+  0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31,
+  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e,
+  0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72,
+  0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63,
+  0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64,
+  0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79,
-  0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x32, 0x2c,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x31, 0x2c, 0x20,
+  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c,
+  0x6f, 0x61, 0x74, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x20, 0x79, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f,
-  0x6f, 0x74, 0x68, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77,
+  0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x32,
+  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x68, 0x31, 0x2c,
+  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69,
-  0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x78, 0x31,
-  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x78, 0x32, 0x2c,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20,
-  0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69,
-  0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a,
+  0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a,
+  0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79,
+  0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79, 0x32,
+  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
+  0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f,
+  0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78,
+  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77,
+  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
   0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x79,
-  0x74, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
-  0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x77, 0x31,
-  0x2c, 0x20, 0x70, 0x77, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20,
-  0x70, 0x68, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74,
-  0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x70, 0x78,
-  0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a,
-  0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x20, 0x3d,
-  0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x46, 0x6c, 0x6f, 0x61,
-  0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x70,
-  0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20,
-  0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x61,
-  0x20, 0x3d, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x62,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61,
+  0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x78, 0x6c,
   0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28,
-  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d,
-  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x6a, 0x79,
-  0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20,
-  0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x73, 0x71,
-  0x28, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x62, 0x20,
-  0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x69, 0x6e,
-  0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x69,
-  0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20,
-  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x62,
-  0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0d,
+  0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d,
+  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x79, 0x31,
+  0x2c, 0x20, 0x79, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
+  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
+  0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77,
+  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
+  0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
+  0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x29, 0x3b,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
+  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
+  0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
+  0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x29, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b,
+  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
+  0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78,
+  0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
+  0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
+  0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
+  0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
+  0x74, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b,
+  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
+  0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79,
+  0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
+  0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d,
+  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
+  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61,
+  0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28,
+  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20,
+  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x6a, 0x79, 0x31,
+  0x2c, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e,
+  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68,
+  0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78,
+  0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61,
+  0x61, 0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+  0x32, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
+  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75,
+  0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
+  0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73,
+  0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20,
+  0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61, 0x2c, 0x20,
+  0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x61,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62,
+  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61,
+  0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
   0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e,
   0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65,
-  0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e,
-  0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28,
-  0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29,
-  0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d,
-  0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d,
-  0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67,
-  0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30,
-  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c,
-  0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x7d
+  0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31,
+  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20,
+  0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c,
+  0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
+  0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20,
+  0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
+  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61,
+  0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
+  0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20,
+  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
+  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e,
+  0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28,
+  0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61,
+  0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a,
+  0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20,
+  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
+  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
+  0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a
 };
-unsigned int doublefloat_cl_len = 3585;
+unsigned int doublefloat_cl_len = 3141;

+ 1 - 0
libmandel/src/opencl/hexdouble.cl

@@ -1,4 +1,5 @@
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
 
 
 typedef struct hex_double {

+ 533 - 549
libmandel/src/opencl/hexdouble.h

@@ -2,603 +2,587 @@ unsigned char hexdouble_cl[] = {
   0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
   0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
   0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73,
-  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x5b, 0x36, 0x5d, 0x3b,
-  0x0d, 0x0a, 0x7d, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
+  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
+  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
+  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64,
+  0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x68, 0x65,
+  0x78, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x7b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x5b,
+  0x36, 0x5d, 0x3b, 0x0a, 0x7d, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
   0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
   0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
   0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
+  0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
+  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20,
+  0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73,
+  0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65,
+  0x72, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
   0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62,
-  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b,
-  0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72,
-  0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20,
-  0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20,
-  0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72,
-  0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d,
-  0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d,
-  0x20, 0x62, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20,
-  0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28,
-  0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b,
-  0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61,
-  0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c,
-  0x20, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d,
+  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a,
   0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x63, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e, 0x73,
-  0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x29, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x66, 0x6f, 0x75, 0x72,
+  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
   0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
+  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
+  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20,
+  0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d,
+  0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c,
+  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
+  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
+  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e,
+  0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c,
+  0x20, 0x79, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x33, 0x29, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53,
+  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x64, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x20, 0x3d,
+  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
+  0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x63, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x7a, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x66, 0x69, 0x76,
-  0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x29, 0x0d, 0x0a, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28,
-  0x77, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x79, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x7a, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x77, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x73, 0x69, 0x78,
-  0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
+  0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x79,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x72, 0x20, 0x3d,
+  0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e,
+  0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x7a, 0x2e,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
+  0x29, 0x28, 0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x72, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x32,
+  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
+  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x66, 0x69,
+  0x76, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
   0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
   0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
   0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x29, 0x0d, 0x0a, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x61, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53,
-  0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x29, 0x0a, 0x7b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
+  0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
+  0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
+  0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x77, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x79, 0x2e, 0x73, 0x31,
+  0x20, 0x2b, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x77, 0x2e,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
+  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
+  0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x29, 0x0a,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x33, 0x20, 0x61, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
+  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
   0x33, 0x20, 0x62, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
   0x53, 0x75, 0x6d, 0x28, 0x64, 0x2c, 0x20, 0x65, 0x2c, 0x20, 0x66, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x74,
-  0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x32, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x62, 0x76, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x34, 0x20, 0x3d,
-  0x20, 0x61, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e,
-  0x73, 0x32, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x74, 0x35, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x31, 0x74,
-  0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x74, 0x33, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x34, 0x20,
-  0x2b, 0x20, 0x74, 0x32, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20,
-  0x72, 0x32, 0x74, 0x35, 0x2e, 0x73, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x31, 0x74, 0x31, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x74, 0x31, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e,
+  0x73, 0x30, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
+  0x74, 0x32, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
+  0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x76, 0x2e,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x74, 0x34, 0x20, 0x3d, 0x20, 0x61, 0x76, 0x2e,
+  0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x32, 0x3b, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x72, 0x32, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
+  0x75, 0x6d, 0x28, 0x72, 0x31, 0x74, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20,
+  0x74, 0x32, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x33, 0x20,
+  0x3d, 0x20, 0x74, 0x34, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x74, 0x33, 0x2e,
+  0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x35, 0x2e, 0x73, 0x31,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72,
+  0x31, 0x74, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x74, 0x35,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
+  0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
   0x62, 0x6c, 0x65, 0x33, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72,
   0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
   0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
   0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20,
   0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x67, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x68, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x69, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x76, 0x20,
-  0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x76,
-  0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x64, 0x2c, 0x20, 0x65, 0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63,
-  0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
-  0x28, 0x67, 0x2c, 0x20, 0x68, 0x2c, 0x20, 0x69, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32,
-  0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x61, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x72,
-  0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6f,
-  0x75, 0x72, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x62, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x63, 0x76, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x61, 0x76, 0x2e, 0x73,
-  0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20,
-  0x63, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72, 0x31, 0x74, 0x31,
-  0x74, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x33,
-  0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x32,
-  0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20,
-  0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x33, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72,
-  0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32,
-  0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72,
-  0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70,
-  0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0d, 0x0a, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x70, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x67, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x68, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x69, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x76, 0x20, 0x3d, 0x20, 0x74,
+  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62,
+  0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x76, 0x20, 0x3d, 0x20, 0x74,
+  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x2c, 0x20, 0x65,
+  0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63, 0x76, 0x20, 0x3d, 0x20, 0x74,
+  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x67, 0x2c, 0x20, 0x68,
+  0x2c, 0x20, 0x69, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x72,
+  0x31, 0x74, 0x31, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65,
+  0x65, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x62, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x30,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x20,
+  0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76,
+  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20,
+  0x63, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74,
+  0x32, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x61,
+  0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x32,
+  0x20, 0x2b, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72,
+  0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72,
+  0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x2b,
+  0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x32,
+  0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e,
+  0x73, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29,
+  0x28, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x72, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e,
+  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+  0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48,
+  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c,
+  0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69,
+  0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x70, 0x20,
   0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31,
-  0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0d,
+  0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30,
+  0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x62, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c,
+  0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63,
+  0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
+  0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
+  0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x64, 0x70, 0x20, 0x3d, 0x20, 0x74,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33,
+  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x64, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x65, 0x70, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x34,
-  0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x61,
-  0x70, 0x2e, 0x73, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31, 0x70, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x70, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x62, 0x70, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d,
+  0x20, 0x65, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
+  0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x20, 0x3d,
+  0x20, 0x61, 0x70, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31, 0x70, 0x31,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x70,
+  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x70, 0x2e, 0x73, 0x30, 0x29, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
   0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x68,
   0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x62, 0x70, 0x2e, 0x73, 0x31,
   0x2c, 0x20, 0x63, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x70,
-  0x31, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x74, 0x33, 0x70, 0x34,
-  0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d,
-  0x28, 0x63, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x64, 0x70, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x32, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x34, 0x70, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x69,
-  0x76, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x70, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x65, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74,
-  0x33, 0x70, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33,
-  0x70, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x70,
-  0x34, 0x35, 0x36, 0x2e, 0x73, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x35, 0x20,
-  0x3d, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x65, 0x70,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x34, 0x70, 0x37, 0x2e, 0x73,
-  0x31, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74,
-  0x30, 0x2c, 0x20, 0x74, 0x31, 0x70, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x31, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x32, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x70, 0x37, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x72, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x33, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b, 0x20,
-  0x72, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x72, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x72, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70,
-  0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x62, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x30, 0x20, 0x3d, 0x20,
+  0x31, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35,
+  0x36, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28,
+  0x63, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x64, 0x70, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x31, 0x2c,
+  0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x32, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x74, 0x34, 0x70, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x76, 0x65,
+  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x70, 0x2e, 0x73, 0x31,
+  0x2c, 0x20, 0x65, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x70,
+  0x34, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34,
+  0x35, 0x36, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35,
+  0x36, 0x2e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x61,
+  0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x2d, 0x3e,
+  0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x65, 0x70, 0x2e, 0x73, 0x31,
+  0x20, 0x2b, 0x20, 0x74, 0x34, 0x70, 0x37, 0x2e, 0x73, 0x31, 0x3b, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x30, 0x2c, 0x20, 0x74, 0x31,
+  0x70, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x20, 0x3d,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x70, 0x32,
+  0x70, 0x33, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x20, 0x3d,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34,
+  0x35, 0x36, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x33, 0x20, 0x3d,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x70, 0x37,
+  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x34, 0x35, 0x20, 0x3d, 0x20,
+  0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
+  0x72, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x29, 0x3b, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b,
+  0x20, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73,
+  0x30, 0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x72, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x7d, 0x3b, 0x0a, 0x7d,
+  0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x65,
+  0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x28,
+  0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76,
+  0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+  0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65,
+  0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0a,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
+  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
+  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71,
+  0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
+  0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
+  0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x31, 0x20, 0x3d, 0x20,
   0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78,
-  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
-  0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b,
-  0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x71, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
-  0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
-  0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
+  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d,
+  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
+  0x72, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
+  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
+  0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x20, 0x3d,
   0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
   0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32,
-  0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78,
-  0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0d,
+  0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33,
+  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x33,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x30, 0x20,
+  0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
+  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62,
+  0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x32, 0x20,
   0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
-  0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74,
+  0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
+  0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30,
+  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
+  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20,
+  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
+  0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
+  0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74,
   0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b,
-  0x33, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x34, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
-  0x34, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x31, 0x20, 0x3d, 0x20,
-  0x70, 0x30, 0x2e, 0x73, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x32, 0x4c, 0x33,
-  0x34, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
-  0x28, 0x70, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x71, 0x30, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x74, 0x33, 0x4c, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x30,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x72, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36,
-  0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72,
-  0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x73, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x73, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x33,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73,
-  0x32, 0x2c, 0x20, 0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x78, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69,
-  0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x73,
-  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x73, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x74, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x74, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x20, 0x3d, 0x20,
-  0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x78, 0x31, 0x32,
-  0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73,
-  0x32, 0x2c, 0x20, 0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x32, 0x2c,
-  0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x30,
-  0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x36, 0x20, 0x3d, 0x20,
-  0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x74,
-  0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x35,
-  0x4c, 0x36, 0x37, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x30, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d,
-  0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x34,
-  0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x20,
-  0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x20, 0x2a, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d,
-  0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31,
-  0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x20,
-  0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x65, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x76, 0x31, 0x2c, 0x20, 0x74, 0x32,
-  0x4c, 0x33, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
+  0x32, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
+  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
+  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x34,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
+  0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
+  0x5b, 0x34, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x31, 0x20, 0x3d, 0x20, 0x70,
+  0x30, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x20,
+  0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x70,
+  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x71, 0x30, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x71, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x33, 0x4c,
+  0x34, 0x35, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65,
+  0x65, 0x53, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20,
+  0x71, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x30, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x2e,
+  0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x31,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x33, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x6e,
+  0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
+  0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x31,
+  0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2e,
+  0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73,
+  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74,
+  0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x78, 0x31,
+  0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72,
+  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2e, 0x73, 0x31, 0x2c,
+  0x20, 0x73, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2e, 0x73,
+  0x31, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x35,
+  0x4c, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72,
+  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73,
+  0x30, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20,
+  0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x4c,
+  0x34, 0x35, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36,
+  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76,
+  0x36, 0x20, 0x3d, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x32,
+  0x20, 0x2b, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x31, 0x20,
+  0x2b, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x32, 0x20, 0x2b,
+  0x20, 0x74, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x2e,
+  0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b,
+  0x20, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x34, 0x2e,
+  0x73, 0x31, 0x20, 0x2b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2a, 0x20, 0x62,
+  0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e,
+  0x78, 0x5b, 0x34, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
+  0x31, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d,
+  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2b,
+  0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x62,
+  0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e,
+  0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
+  0x34, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
+  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x3b, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x72, 0x65, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
+  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x76, 0x31, 0x2c, 0x20, 0x74,
+  0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
   0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65,
   0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
   0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a,
+  0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
+  0x65, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
+  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x31, 0x2c,
+  0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x65, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x65, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x32, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72,
-  0x65, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x76, 0x36, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b,
-  0x20, 0x72, 0x65, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x31,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x34,
-  0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x34, 0x35, 0x2e, 0x73,
-  0x31, 0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6c,
-  0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
-  0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x76, 0x29, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20,
-  0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
-  0x5b, 0x30, 0x5d, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x76, 0x5b, 0x31, 0x5d, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x32, 0x5d, 0x2c, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x33, 0x5d,
-  0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
-  0x5b, 0x34, 0x5d, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x76, 0x5b, 0x35, 0x5d, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69,
-  0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f,
-  0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0d, 0x0a, 0x20,
+  0x72, 0x65, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x32, 0x2e, 0x73, 0x31,
+  0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x30, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x20, 0x72, 0x65, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
+  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x33, 0x2e,
+  0x73, 0x31, 0x2c, 0x20, 0x76, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x48, 0x65, 0x78,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b, 0x20, 0x72, 0x65, 0x30,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x72, 0x65, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x33,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x34, 0x35, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x72, 0x65, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x7d, 0x3b,
+  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x63, 0x6f,
+  0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61,
+  0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x76,
+  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x76, 0x5b, 0x30, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x76, 0x5b, 0x31, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x32, 0x5d, 0x2c, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x33, 0x5d, 0x2c,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x34,
+  0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
+  0x5b, 0x35, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
+  0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74,
+  0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
+  0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
+  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63,
-  0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x79, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x78, 0x2c, 0x20, 0x5f, 0x5f,
+  0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x79, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61,
-  0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x70,
-  0x77, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
-  0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x70, 0x68,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x0d, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73,
+  0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a,
+  0x20, 0x70, 0x77, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+  0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
+  0x70, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c,
+  0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c,
+  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f,
+  0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x63,
   0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f,
-  0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x2a, 0x20, 0x6a, 0x79, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
+  0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
   0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
   0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
-  0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79,
-  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78,
-  0x6c, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x78,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x6c,
-  0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x70, 0x77,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64,
-  0x48, 0x64, 0x28, 0x70, 0x68, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20,
+  0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64,
+  0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d,
+  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64,
+  0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20,
+  0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x70, 0x78, 0x68, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x78, 0x2c,
-  0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
-  0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48,
-  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x79, 0x68,
-  0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20,
-  0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d,
-  0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
+  0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64,
+  0x28, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+  0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61,
+  0x64, 0x48, 0x64, 0x28, 0x70, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70,
+  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d,
+  0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x70, 0x68, 0x29, 0x3b,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x78, 0x68, 0x20, 0x3d, 0x20, 0x7b, 0x20,
+  0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
+  0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70,
+  0x79, 0x68, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x79, 0x2c, 0x20, 0x30,
+  0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30,
+  0x20, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
   0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x4f, 0x66, 0x66,
   0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x70, 0x69, 0x78, 0x65,
   0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x26, 0x70, 0x78,
-  0x68, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x62, 0x4f, 0x66, 0x66,
-  0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x26, 0x70, 0x79,
-  0x68, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x26, 0x63, 0x61, 0x4f, 0x66, 0x66, 0x2c, 0x20,
-  0x26, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70,
-  0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x62,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x63, 0x62, 0x4f, 0x66,
-  0x66, 0x2c, 0x20, 0x26, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20,
-  0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x63, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21,
-  0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61,
-  0x64, 0x48, 0x64, 0x28, 0x6a, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6c,
-  0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x6a, 0x79, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d,
+  0x68, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x62, 0x4f, 0x66, 0x66, 0x20,
+  0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x70, 0x69, 0x78, 0x65, 0x6c,
+  0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x26, 0x70, 0x79, 0x68,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64,
+  0x64, 0x28, 0x26, 0x63, 0x61, 0x4f, 0x66, 0x66, 0x2c, 0x20, 0x26, 0x78,
+  0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+  0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20,
+  0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20,
+  0x61, 0x64, 0x64, 0x28, 0x26, 0x63, 0x62, 0x4f, 0x66, 0x66, 0x2c, 0x20,
+  0x26, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
+  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70,
+  0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48,
+  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x20, 0x3d,
+  0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
+  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x63,
+  0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6a,
+  0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x20,
+  0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x6a, 0x78, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62,
+  0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x6a, 0x79,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28,
   0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x61,
-  0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c, 0x20, 0x26,
-  0x61, 0x29, 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x20,
-  0x61, 0x64, 0x64, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x69, 0x6e, 0x67,
-  0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65,
-  0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x62, 0x2c, 0x20, 0x26, 0x62, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48,
-  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x62, 0x20,
-  0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c, 0x20, 0x26, 0x62,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x69,
-  0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x2d, 0x62,
-  0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b,
-  0x32, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x33, 0x5d,
-  0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20,
-  0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x7d, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x61, 0x6d, 0x62, 0x62,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x61, 0x2c, 0x20,
-  0x26, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x3b, 0x0d, 0x0a,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48,
+  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x61, 0x20,
+  0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c, 0x20, 0x26, 0x61,
+  0x29, 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x20, 0x61,
+  0x64, 0x64, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20,
+  0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x62, 0x61, 0x62, 0x20, 0x3d,
-  0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x62, 0x2c, 0x20, 0x26, 0x61,
-  0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x61,
-  0x6d, 0x62, 0x62, 0x2c, 0x20, 0x26, 0x63, 0x61, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x62, 0x61, 0x62, 0x2c, 0x20, 0x26,
-  0x63, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x78, 0x5b, 0x30,
-  0x5d, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20,
-  0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b,
-  0x2b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20,
-  0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67,
-  0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20,
-  0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20,
-  0x2d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
-  0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74,
-  0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20,
-  0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61,
-  0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x78, 0x5b,
-  0x30, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20,
-  0x2a, 0x20, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x20, 0x2a, 0x20,
-  0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d,
+  0x75, 0x6c, 0x28, 0x26, 0x62, 0x2c, 0x20, 0x26, 0x62, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d,
+  0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c, 0x20, 0x26, 0x62, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62,
+  0x62, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b,
+  0x30, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x31, 0x5d,
+  0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
+  0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x2d, 0x62,
+  0x62, 0x2e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
+  0x78, 0x5b, 0x35, 0x5d, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x61, 0x61, 0x6d, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64,
+  0x64, 0x28, 0x26, 0x61, 0x61, 0x2c, 0x20, 0x26, 0x6d, 0x69, 0x6e, 0x75,
+  0x73, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x61, 0x62, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26,
+  0x61, 0x62, 0x2c, 0x20, 0x26, 0x61, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64,
+  0x64, 0x28, 0x26, 0x61, 0x61, 0x6d, 0x62, 0x62, 0x2c, 0x20, 0x26, 0x63,
+  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x62, 0x61,
+  0x62, 0x2c, 0x20, 0x26, 0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e,
+  0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x78, 0x5b,
+  0x30, 0x5d, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65,
+  0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31,
+  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20,
+  0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c,
+  0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
+  0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20,
+  0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
+  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61,
+  0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
+  0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20,
+  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
+  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e,
+  0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32,
+  0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20,
+  0x2a, 0x20, 0x61, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x62,
+  0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x78, 0x5b,
+  0x30, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36,
-  0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31,
-  0x36, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
-  0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
-  0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0d, 0x0a,
-  0x7d, 0x0d, 0x0a, 0x0d, 0x0a
+  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
+  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29,
+  0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20,
+  0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20,
+  0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d,
+  0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
+  0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f,
+  0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a
 };
-unsigned int hexdouble_cl_len = 7205;
+unsigned int hexdouble_cl_len = 7011;

+ 2 - 1
libmandel/src/opencl/quaddouble.cl

@@ -1,4 +1,5 @@
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
 
 inline double2 twoSum(double a, double b) {
     double s = a + b;
@@ -249,4 +250,4 @@ __kernel void iterate(__global float* A, const int width,
     }
     //               A[index] = ((float)n) + 1 - (a * a + b * b - 16) / (256 - 16);
     //           A[get_global_id(0)] = 5;
-}
+}

+ 513 - 510
libmandel/src/opencl/quaddouble.h

@@ -2,543 +2,546 @@ unsigned char quaddouble_cl[] = {
   0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
   0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
   0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d,
-  0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20,
-  0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20,
-  0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20,
+  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
+  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
+  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
+  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
   0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
   0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
   0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61,
-  0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29,
-  0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x73, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20,
-  0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20,
-  0x62, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20,
-  0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
+  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
+  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
+  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20,
+  0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73,
+  0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65,
+  0x72, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
+  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62,
+  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a,
+  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
   0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
   0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a,
+  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
+  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
+  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
+  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
+  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73,
+  0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20,
+  0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28,
+  0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20,
+  0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d,
+  0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c,
+  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
+  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77,
+  0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65,
+  0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a,
+  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72,
   0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c,
   0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20,
-  0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28,
-  0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x76, 0x6f, 0x69, 0x64, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x63, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x2a, 0x61, 0x2c, 0x20, 0x2a, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x74, 0x33,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x63,
-  0x2c, 0x20, 0x74, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x63, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2a, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x74, 0x33,
-  0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x62, 0x20,
-  0x3d, 0x20, 0x62, 0x63, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2a, 0x63, 0x20, 0x3d, 0x20, 0x62, 0x63, 0x2e, 0x73, 0x31, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x76, 0x6f, 0x69, 0x64, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x32, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x63, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x2a, 0x61, 0x2c, 0x20, 0x2a, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x74,
-  0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a,
-  0x63, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2a, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73,
-  0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x62, 0x20, 0x3d, 0x20,
-  0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73,
-  0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a, 0x63, 0x30, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a, 0x63, 0x31, 0x2c,
-  0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x2a, 0x63, 0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20,
-  0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30,
-  0x2c, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63,
-  0x33, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x63, 0x34, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63,
-  0x32, 0x2c, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x33, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x31,
-  0x2c, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x2a, 0x63, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x30,
-  0x2c, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x31, 0x29, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x2a, 0x63, 0x30, 0x3b, 0x0a,
-  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x2a, 0x63, 0x31, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74,
-  0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a,
-  0x63, 0x32, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
+  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x2a, 0x20, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x61, 0x2c, 0x20, 0x2a,
+  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x61, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x2c, 0x20, 0x74, 0x2e, 0x73,
+  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x62, 0x63, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x74,
+  0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a,
+  0x61, 0x20, 0x3d, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x2a, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x63, 0x2e,
+  0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x63, 0x20, 0x3d,
+  0x20, 0x62, 0x63, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
+  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x32, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x2a, 0x20, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d,
+  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x61, 0x2c, 0x20,
+  0x2a, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74,
+  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x2c, 0x20, 0x74, 0x2e,
+  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x61, 0x20,
+  0x3d, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x2a, 0x62, 0x20, 0x3d, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
+  0x2b, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x0a,
+  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64,
+  0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x2a, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x2a, 0x63, 0x31, 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
+  0x63, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
+  0x63, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
+  0x63, 0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73,
+  0x32, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x20,
+  0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x73, 0x30,
+  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
+  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x2a, 0x63,
+  0x34, 0x2c, 0x20, 0x63, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x30,
+  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
+  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x73, 0x30,
+  0x2c, 0x20, 0x63, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x30, 0x20,
+  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f,
+  0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2c,
+  0x20, 0x63, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63, 0x30, 0x20,
+  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f,
+  0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x30, 0x2c, 0x20, 0x73, 0x30, 0x2c,
+  0x20, 0x63, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x73, 0x30, 0x20,
+  0x3d, 0x20, 0x2a, 0x63, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x31, 0x20,
+  0x3d, 0x20, 0x2a, 0x63, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66,
+  0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
+  0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
+  0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x26,
+  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
+  0x28, 0x73, 0x32, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
+  0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20,
+  0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x66, 0x20, 0x28, 0x73, 0x33, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e,
+  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
+  0x33, 0x20, 0x2b, 0x3d, 0x20, 0x2a, 0x63, 0x34, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75,
+  0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28,
+  0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73,
+  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
+  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
+  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x33,
+  0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x32, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x2e, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f,
   0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20,
-  0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x33, 0x20,
-  0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x73, 0x33, 0x20, 0x2b, 0x3d, 0x20, 0x2a, 0x63,
-  0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32,
+  0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71,
+  0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
+  0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73,
+  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
+  0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f,
+  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20,
+  0x2a, 0x63, 0x32, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d,
+  0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
+  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c,
+  0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x32,
+  0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75,
+  0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28,
+  0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
+  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
   0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34,
-  0x2c, 0x20, 0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34,
+  0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31,
-  0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b,
+  0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
+  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30,
+  0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b,
   0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73,
-  0x32, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71,
+  0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71,
   0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73,
-  0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
+  0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73,
+  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
   0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77,
-  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63,
-  0x34, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x73, 0x30, 0x2c, 0x20, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x26, 0x73,
-  0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x73, 0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26,
-  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x73, 0x32, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30,
-  0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34,
-  0x2c, 0x20, 0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31,
-  0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20,
-  0x26, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e,
-  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77,
-  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63,
-  0x34, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73,
-  0x30, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a,
-  0x0a, 0x20, 0x20, 0x2a, 0x63, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x30, 0x3b,
-  0x0a, 0x20, 0x20, 0x2a, 0x63, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x31, 0x3b,
-  0x0a, 0x20, 0x20, 0x2a, 0x63, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x3b,
-  0x0a, 0x20, 0x20, 0x2a, 0x63, 0x33, 0x20, 0x3d, 0x20, 0x73, 0x33, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x64, 0x64, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73,
-  0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73,
-  0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x2c, 0x20, 0x74, 0x32,
-  0x2c, 0x20, 0x74, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b,
-  0x30, 0x5d, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31,
-  0x5d, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x61, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x32, 0x5d,
-  0x2c, 0x20, 0x26, 0x74, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x73, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x61, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x33, 0x5d, 0x2c,
-  0x20, 0x26, 0x74, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30,
+  0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77,
+  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x2a, 0x63,
+  0x34, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x2a, 0x63,
+  0x30, 0x20, 0x3d, 0x20, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
+  0x31, 0x20, 0x3d, 0x20, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
+  0x32, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
+  0x33, 0x20, 0x3d, 0x20, 0x73, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
+  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x34, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31,
+  0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c,
+  0x20, 0x74, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61,
+  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26,
+  0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b,
+  0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x74,
+  0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d,
+  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b, 0x32,
+  0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x74, 0x32,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b, 0x33, 0x5d,
+  0x2c, 0x20, 0x62, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x26, 0x74, 0x33, 0x29,
+  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20,
+  0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26,
+  0x73, 0x32, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x31,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
+  0x53, 0x75, 0x6d, 0x32, 0x28, 0x26, 0x73, 0x33, 0x2c, 0x20, 0x26, 0x74,
+  0x30, 0x2c, 0x20, 0x26, 0x74, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x30, 0x20, 0x2b, 0x20, 0x74,
+  0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x26, 0x73, 0x30, 0x2c,
+  0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x2c, 0x20, 0x26,
+  0x73, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x73,
+  0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x29, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x30,
+  0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33,
+  0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x30, 0x2c,
+  0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x71, 0x33, 0x2c,
+  0x20, 0x71, 0x34, 0x2c, 0x20, 0x71, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c, 0x20,
+  0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73,
+  0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x30, 0x20, 0x3d,
+  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b,
+  0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x71,
+  0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x31, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61,
+  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26,
+  0x71, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61,
+  0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26,
+  0x71, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x33,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
+  0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
+  0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
+  0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
+  0x26, 0x71, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x35,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
+  0x61, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
+  0x26, 0x71, 0x35, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f,
+  0x2a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x63, 0x63, 0x75,
+  0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
+  0x28, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26,
+  0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a,
+  0x20, 0x53, 0x69, 0x78, 0x2d, 0x54, 0x68, 0x72, 0x65, 0x65, 0x20, 0x53,
+  0x75, 0x6d, 0x20, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x71,
+  0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70,
+  0x34, 0x2c, 0x20, 0x70, 0x35, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26,
+  0x70, 0x32, 0x2c, 0x20, 0x26, 0x71, 0x31, 0x2c, 0x20, 0x26, 0x71, 0x32,
   0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x26, 0x73, 0x32, 0x2c, 0x20, 0x26, 0x74, 0x30,
-  0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x32, 0x28, 0x26, 0x73,
-  0x33, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x32, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x30, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d,
-  0x28, 0x26, 0x73, 0x30, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26,
-  0x73, 0x32, 0x2c, 0x20, 0x26, 0x73, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28,
-  0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20,
-  0x73, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20,
-  0x6d, 0x75, 0x6c, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x70, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70,
-  0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70,
-  0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x71, 0x30, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32,
-  0x2c, 0x20, 0x71, 0x33, 0x2c, 0x20, 0x71, 0x34, 0x2c, 0x20, 0x71, 0x35,
+  0x53, 0x75, 0x6d, 0x28, 0x26, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x70, 0x34,
+  0x2c, 0x20, 0x26, 0x70, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x2f, 0x2a, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x20, 0x28,
+  0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x29, 0x20,
+  0x3d, 0x20, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71,
+  0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34,
+  0x2c, 0x20, 0x70, 0x35, 0x29, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
+  0x75, 0x6d, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x26,
+  0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x31,
+  0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x32, 0x20,
+  0x2b, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73,
+  0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x2b, 0x3d, 0x20, 0x28,
+  0x74, 0x30, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x4f, 0x28, 0x65, 0x70, 0x73, 0x5e,
+  0x33, 0x29, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x65, 0x72,
+  0x6d, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
+  0x20, 0x2b, 0x3d, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2a, 0x62, 0x5b, 0x33,
+  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x2a, 0x62, 0x5b, 0x32,
+  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x32, 0x5d, 0x2a, 0x62, 0x5b, 0x31,
+  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x33, 0x5d, 0x2a, 0x62, 0x5b, 0x30,
+  0x5d, 0x20, 0x2b, 0x20, 0x71, 0x30, 0x20, 0x2b, 0x20, 0x71, 0x33, 0x20,
+  0x2b, 0x20, 0x71, 0x34, 0x20, 0x2b, 0x20, 0x71, 0x35, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x26, 0x70,
+  0x30, 0x2c, 0x20, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x30, 0x2c,
+  0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x70, 0x30, 0x2c,
+  0x20, 0x70, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x29,
+  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x73, 0x71, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70,
+  0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70,
+  0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x30,
+  0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x71, 0x33,
   0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x74, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20,
-  0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c, 0x20,
+  0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30,
-  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b,
-  0x31, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b,
-  0x30, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62,
-  0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x20,
+  0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x30,
+  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
+  0x6f, 0x64, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30,
+  0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x31,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x32, 0x2e, 0x30,
+  0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x32,
+  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
+  0x6f, 0x64, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31,
+  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
+  0x75, 0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x26,
+  0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x71, 0x30,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71,
+  0x30, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x26, 0x71, 0x31, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33,
+  0x2c, 0x20, 0x26, 0x70, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
+  0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x26, 0x74,
+  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d,
+  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x31, 0x2c,
+  0x20, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
+  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c,
+  0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74,
+  0x30, 0x20, 0x2b, 0x3d, 0x20, 0x74, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
+  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c,
+  0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
+  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30,
+  0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
+  0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x74,
+  0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x32,
+  0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20,
+  0x61, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x35,
+  0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x31,
+  0x5d, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x32, 0x5d, 0x3b, 0x0a, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62,
-  0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x34, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x70, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62,
-  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x35, 0x29, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74,
-  0x20, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
-  0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26,
-  0x70, 0x32, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x53, 0x69, 0x78, 0x2d, 0x54, 0x68,
-  0x72, 0x65, 0x65, 0x20, 0x53, 0x75, 0x6d, 0x20, 0x20, 0x6f, 0x66, 0x20,
-  0x70, 0x32, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20,
-  0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x2e, 0x20,
-  0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26, 0x71, 0x31,
-  0x2c, 0x20, 0x26, 0x71, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26, 0x70, 0x33,
-  0x2c, 0x20, 0x26, 0x70, 0x34, 0x2c, 0x20, 0x26, 0x70, 0x35, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x63, 0x6f, 0x6d, 0x70,
-  0x75, 0x74, 0x65, 0x20, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c,
-  0x20, 0x73, 0x32, 0x29, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x32, 0x2c, 0x20,
-  0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x70,
-  0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x29, 0x2e, 0x20,
-  0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x32, 0x2c, 0x20,
-  0x70, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x71, 0x31, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x26,
-  0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20,
-  0x3d, 0x20, 0x71, 0x32, 0x20, 0x2b, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20,
-  0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32,
-  0x20, 0x2b, 0x3d, 0x20, 0x28, 0x74, 0x30, 0x20, 0x2b, 0x20, 0x74, 0x31,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x4f,
-  0x28, 0x65, 0x70, 0x73, 0x5e, 0x33, 0x29, 0x20, 0x6f, 0x72, 0x64, 0x65,
-  0x72, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x5b, 0x30,
-  0x5d, 0x2a, 0x62, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x31,
-  0x5d, 0x2a, 0x62, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x32,
-  0x5d, 0x2a, 0x62, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x33,
-  0x5d, 0x2a, 0x62, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x71, 0x30, 0x20,
-  0x2b, 0x20, 0x71, 0x33, 0x20, 0x2b, 0x20, 0x71, 0x34, 0x20, 0x2b, 0x20,
-  0x71, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f,
+  0x73, 0x75, 0x6d, 0x28, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x2c, 0x20,
+  0x26, 0x70, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x71, 0x32,
+  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71,
+  0x32, 0x2c, 0x20, 0x71, 0x33, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29, 0x3b,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74,
+  0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x34, 0x2c, 0x20, 0x71,
+  0x32, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x20, 0x2b, 0x20, 0x70,
+  0x35, 0x20, 0x2b, 0x20, 0x71, 0x33, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
+  0x6d, 0x28, 0x70, 0x33, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x70,
+  0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d,
+  0x20, 0x70, 0x34, 0x20, 0x2b, 0x20, 0x71, 0x30, 0x20, 0x2b, 0x20, 0x74,
+  0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f,
   0x72, 0x6d, 0x28, 0x26, 0x70, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x31, 0x2c,
-  0x20, 0x26, 0x73, 0x30, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26,
-  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x20, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26, 0x70, 0x33, 0x2c, 0x20, 0x26,
+  0x70, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
   0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x29, 0x28, 0x70, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x73, 0x30,
-  0x2c, 0x20, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x20, 0x73, 0x71, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20,
-  0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20,
-  0x70, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20,
-  0x70, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x71, 0x30, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71,
-  0x32, 0x2c, 0x20, 0x71, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x74, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d,
-  0x2c, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x32, 0x2e, 0x30, 0x20,
-  0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d,
-  0x2c, 0x20, 0x26, 0x71, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f,
-  0x64, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d,
-  0x2c, 0x20, 0x61, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x32, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b, 0x31, 0x5d,
-  0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20,
-  0x70, 0x31, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x71, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20,
-  0x26, 0x71, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70,
-  0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x70, 0x33, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x70,
-  0x32, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x71, 0x31, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x74,
-  0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x74, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x74, 0x31,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x26,
-  0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x33, 0x20,
-  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x74, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20,
-  0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70,
-  0x34, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b,
-  0x30, 0x5d, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x70, 0x35, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20,
-  0x2a, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x32,
-  0x5d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x34, 0x2c,
-  0x20, 0x70, 0x35, 0x2c, 0x20, 0x26, 0x70, 0x35, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x71, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x71, 0x32, 0x2c, 0x20, 0x71, 0x33, 0x2c, 0x20,
-  0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74,
-  0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28,
-  0x70, 0x34, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74,
-  0x31, 0x20, 0x2b, 0x20, 0x70, 0x35, 0x20, 0x2b, 0x20, 0x71, 0x33, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x33, 0x2c, 0x20, 0x74,
-  0x30, 0x2c, 0x20, 0x26, 0x70, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x34, 0x20, 0x2b, 0x20, 0x71,
-  0x30, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x26, 0x70, 0x30, 0x2c,
-  0x20, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26,
-  0x70, 0x33, 0x2c, 0x20, 0x26, 0x70, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x70, 0x30, 0x2c, 0x20, 0x70,
-  0x31, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
-  0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74,
-  0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x29, 0x28, 0x70, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32,
+  0x2c, 0x20, 0x70, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f,
+  0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64,
+  0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67,
+  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a,
+  0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
+  0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x78, 0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x79, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x79, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x79, 0x34, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78,
+  0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x31,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x33, 0x2c, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x34, 0x2c, 0x0a, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x33,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x34,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x33,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x34,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x34, 0x2c, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d,
+  0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75,
+  0x6c, 0x69, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x78, 0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x79, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6a, 0x79, 0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
-  0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
-  0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d,
-  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x34, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20,
-  0x78, 0x32, 0x2c, 0x20, 0x78, 0x33, 0x2c, 0x20, 0x78, 0x34, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32, 0x2c, 0x20,
-  0x79, 0x33, 0x2c, 0x20, 0x79, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x70, 0x77, 0x31,
-  0x2c, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20,
-  0x70, 0x77, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70,
-  0x68, 0x32, 0x2c, 0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x70, 0x68, 0x34,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x34, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
-  0x28, 0x6d, 0x75, 0x6c, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63,
-  0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x29, 0x20, 0x28, 0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20,
-  0x30, 0x2c, 0x20, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b,
-  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78,
-  0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d,
-  0x75, 0x6c, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x59, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x29, 0x20, 0x28, 0x70, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
-  0x20, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f,
-  0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
+  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
+  0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
+  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
+  0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
+  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
+  0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
+  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
+  0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
+  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70,
+  0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20,
+  0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
+  0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
+  0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20,
-  0x61, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x20, 0x3d, 0x20,
-  0x63, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61,
+  0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x34, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x78,
+  0x33, 0x2c, 0x20, 0x78, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x79, 0x74, 0x20, 0x3d,
+  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x79,
+  0x31, 0x2c, 0x20, 0x79, 0x32, 0x2c, 0x20, 0x79, 0x33, 0x2c, 0x20, 0x79,
+  0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x34, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
+  0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32,
+  0x2c, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x70, 0x77, 0x34, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
+  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
   0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29,
-  0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x6a,
-  0x78, 0x33, 0x2c, 0x20, 0x6a, 0x78, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x6a, 0x79, 0x31,
-  0x2c, 0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20, 0x6a, 0x79, 0x33, 0x2c, 0x20,
-  0x6a, 0x79, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d,
-  0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c,
-  0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d,
-  0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x61,
-  0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x2d, 0x62,
-  0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x2d, 0x62,
-  0x62, 0x2e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61,
-  0x64, 0x64, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73,
-  0x62, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62,
-  0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73,
-  0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20,
-  0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f,
-  0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
-  0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e,
-  0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d,
-  0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20,
+  0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x70,
+  0x68, 0x33, 0x2c, 0x20, 0x70, 0x68, 0x34, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x63,
+  0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x28,
+  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c,
+  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x20, 0x28,
+  0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29,
+  0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70,
+  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a,
+  0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x63, 0x62, 0x20,
+  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x28, 0x70, 0x69,
+  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x20, 0x28, 0x70, 0x79,
+  0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x29, 0x2c,
+  0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
+  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70,
+  0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63,
+  0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x62, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6a, 0x75, 0x6c, 0x69, 0x61,
+  0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x6a, 0x78, 0x31, 0x2c,
+  0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x6a, 0x78, 0x33, 0x2c, 0x20, 0x6a,
+  0x78, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x34, 0x29, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32,
+  0x2c, 0x20, 0x6a, 0x79, 0x33, 0x2c, 0x20, 0x6a, 0x79, 0x34, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20,
+  0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x73, 0x71,
+  0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x62, 0x20,
+  0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
+  0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c,
+  0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x6d, 0x69, 0x6e,
+  0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x34, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62,
+  0x2e, 0x73, 0x32, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x33, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20,
+  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61,
+  0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20,
+  0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64,
+  0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
+  0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62,
+  0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62,
+  0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
+  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b,
+  0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f,
+  0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f,
+  0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
+  0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20,
+  0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
+  0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
+  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21,
+  0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
+  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
+  0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
+  0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a,
+  0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30,
+  0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x32,
+  0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
+  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d,
+  0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f,
-  0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b,
-  0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30,
-  0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67,
-  0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
-  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20,
-  0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20,
-  0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30,
-  0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d
+  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+  0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61,
+  0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62,
+  0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35,
+  0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
+  0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20,
+  0x35, 0x3b, 0x0a, 0x7d, 0x0a
 };
-unsigned int quaddouble_cl_len = 6489;
+unsigned int quaddouble_cl_len = 6521;

+ 3 - 1
libmandel/src/opencl/tripledouble.cl

@@ -1,4 +1,6 @@
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
+
 
 inline double2 twoSum(double a, double b) {
     double s = a + b;
@@ -100,4 +102,4 @@ __kernel void iterate(__global float* A, const int width,
     }
     //               A[index] = ((float)n) + 1 - (a * a + b * b - 16) / (256 - 16);
     //           A[get_global_id(0)] = 5;
-}
+}

+ 257 - 263
libmandel/src/opencl/tripledouble.h

@@ -2,284 +2,278 @@ unsigned char tripledouble_cl[] = {
   0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
   0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
   0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d,
-  0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20,
-  0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62,
-  0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
+  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
+  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
+  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
+  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
+  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77,
   0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
   0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73,
-  0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0d,
-  0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74,
-  0x68, 0x72, 0x65, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x63, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28,
-  0x72, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x72, 0x74, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
+  0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d,
+  0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d,
+  0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
+  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
+  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
+  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
+  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
+  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
+  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61,
+  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61,
+  0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20,
+  0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
+  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x68,
+  0x72, 0x65, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
+  0x72, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
+  0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x74, 0x2e,
+  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
+  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d,
+  0x75, 0x6c, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x29,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x32, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
   0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74,
-  0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x70, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x33, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x70, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x70, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73,
-  0x32, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x61,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x32, 0x20, 0x2b,
-  0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x72, 0x65, 0x30, 0x71, 0x20, 0x3d, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x72, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30,
-  0x71, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x30,
-  0x71, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x72, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x72, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a,
-  0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x73, 0x71, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f,
-  0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x75,
-  0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
-  0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x74, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x74, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x32, 0x20,
-  0x3d, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74,
-  0x33, 0x34, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32,
-  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x32, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
+  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77,
+  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+  0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x31,
+  0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
+  0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x54, 0x77, 0x6f,
+  0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x70,
+  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x33, 0x2e, 0x73, 0x30, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x31,
+  0x20, 0x2b, 0x20, 0x70, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x70,
+  0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32, 0x20,
+  0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73,
+  0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x61,
+  0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x65, 0x31, 0x74, 0x34, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x74, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x74, 0x33, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x65, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x72, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
+  0x72, 0x65, 0x30, 0x71, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
+  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
+  0x65, 0x72, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
+  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73, 0x31,
+  0x2c, 0x20, 0x74, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
   0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72,
-  0x65, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
+  0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73, 0x30, 0x2c,
+  0x20, 0x72, 0x65, 0x72, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x72,
+  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
+  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
+  0x73, 0x71, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61,
+  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54,
+  0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x7d,
+  0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x33, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x74, 0x20,
+  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73,
+  0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
+  0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
+  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
+  0x74, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x72, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e,
+  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32,
+  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x34, 0x2e, 0x73, 0x31,
+  0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x2e,
+  0x73, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x31, 0x74, 0x34, 0x20, 0x3d,
+  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
+  0x28, 0x72, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x34, 0x2e,
+  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x32, 0x33, 0x20, 0x3d, 0x20,
+  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34,
+  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34,
+  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x30,
+  0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
+  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
   0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75,
   0x62, 0x6c, 0x65, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
   0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54,
-  0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x62, 0x2c, 0x20, 0x30, 0x2e, 0x30,
-  0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20,
-  0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65,
-  0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
-  0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f,
+  0x44, 0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d,
+  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x33, 0x29, 0x28, 0x62, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20,
+  0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f,
+  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
+  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c,
+  0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20,
+  0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
+  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x79, 0x33, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
+  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78,
+  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x31,
+  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x33, 0x2c, 0x0a,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x33, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x69, 0x6e,
+  0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73,
+  0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x33, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x33, 0x29, 0x20,
-  0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78,
-  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0d, 0x0a,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c,
-  0x20, 0x78, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x79, 0x31,
-  0x2c, 0x20, 0x79, 0x32, 0x2c, 0x20, 0x79, 0x33, 0x29, 0x3b, 0x0d, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c,
+  0x69, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x79, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
+  0x79, 0x33, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
+  0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65,
+  0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
+  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
+  0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25,
+  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64,
+  0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
+  0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x33, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c, 0x20,
+  0x78, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x33, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x64,
+  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20,
+  0x79, 0x32, 0x2c, 0x20, 0x79, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x70, 0x69, 0x78,
+  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x70, 0x77, 0x31,
+  0x2c, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x70, 0x77, 0x33, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
+  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
+  0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29,
+  0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x70,
+  0x68, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
+  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
+  0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70,
+  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20,
+  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x78, 0x29,
+  0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69,
+  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20,
+  0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x20, 0x3d, 0x20,
+  0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
+  0x59, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20,
+  0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f,
+  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
+  0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63,
+  0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d,
+  0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
+  0x65, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78,
+  0x32, 0x2c, 0x20, 0x6a, 0x78, 0x33, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x61,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+  0x33, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
+  0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f,
+  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x79, 0x31, 0x2c,
+  0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20, 0x6a, 0x79, 0x33, 0x29, 0x29, 0x20,
+  0x3a, 0x20, 0x62, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
+  0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c,
+  0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x33, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
+  0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20,
+  0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20,
+  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x62, 0x20, 0x3d,
+  0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
+  0x6c, 0x65, 0x33, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20,
   0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28,
-  0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x70, 0x77,
-  0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63,
-  0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68,
-  0x32, 0x2c, 0x20, 0x70, 0x68, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x20,
-  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x29, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20,
-  0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75,
-  0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20, 0x79,
-  0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
-  0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20,
-  0x2b, 0x20, 0x79, 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20,
-  0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x20, 0x28,
-  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x6a, 0x78,
-  0x33, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63, 0x62,
-  0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x29, 0x20, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32,
-  0x2c, 0x20, 0x6a, 0x79, 0x33, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x62, 0x3b,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c,
-  0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75,
-  0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62,
-  0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61,
-  0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d, 0x69, 0x6e, 0x75,
-  0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62,
-  0x62, 0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62,
-  0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e,
-  0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e,
-  0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20,
-  0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c,
-  0x6f, 0x67, 0x20, 0x32, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
+  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
+  0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x32, 0x29, 0x3b,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d,
+  0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61, 0x2c,
+  0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63,
+  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28,
+  0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29,
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
+  0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62,
+  0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72,
+  0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20,
+  0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67,
+  0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20,
+  0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
   0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d,
-  0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x6d, 0x61, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x2e, 0x30,
-  0x66, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67,
-  0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30,
-  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d,
+  0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
+  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
+  0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d,
+  0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d,
   0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20,
-  0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d,
-  0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20,
-  0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20,
-  0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f,
-  0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29,
-  0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0d, 0x0a, 0x7d
+  0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2d, 0x20,
+  0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73,
+  0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62,
+  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20,
+  0x2a, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
+  0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66,
+  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
+  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b,
+  0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20,
+  0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36,
+  0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31,
+  0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67,
+  0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
+  0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d, 0x0a
 };
-unsigned int tripledouble_cl_len = 3381;
+unsigned int tripledouble_cl_len = 3312;

+ 18 - 8
mandelvid/src/main.cpp

@@ -2,19 +2,25 @@
 #include <iostream>
 
 #include <boost/program_options.hpp>
+#include <boost/optional.hpp>
 
 namespace progOpts = boost::program_options;
 
 int main(int argc, char** argv)
 {
     progOpts::options_description desc("Available options");
+    progOpts::positional_options_description p;
+
+    boost::optional<std::string> inPath;
+    boost::optional<std::string> outPath;
     desc.add_options()
         ("help", "display this help message")
         ("render-image,i", "render a mandelbrot view")
-        ("file,f", progOpts::value<std::string>(), "specifies a file to load")
-        ("output,o", progOpts::value<std::string>(), "file to output")
+        ("file,f", progOpts::value(&inPath), "specifies a file to load")
+        ("output,o", progOpts::value(&outPath), "file to output")
     ;
-    progOpts::positional_options_description p;
+
+
     p.add("file", 1);
     progOpts::variables_map vm;
     progOpts::store(progOpts::command_line_parser(argc, argv)
@@ -26,12 +32,16 @@ int main(int argc, char** argv)
         return 0;
     }
 
-    std::string out = vm["output"].as<std::string>();
-
     if (vm.count("render-image")) {
-        std::string inPath = vm["file"].as<std::string>();
-        std::cout << "rendering image " << inPath << std::endl;
-        renderImage(inPath, out);
+        if (!inPath) {
+            std::cout << "Please specify a path" << std::endl;
+            return 1;
+        }
+        if (!outPath) {
+            std::cout << "Please specify an output file" << std::endl;
+            return 1;
+        }
+        renderImage(*inPath, *outPath);
     } else {
         std::cout << "No files specified" << std::endl;
     }