From http://www.jwz.org/xscreensaver/xscreensaver-5.18.tar.gz
authorZygo Blaxell <zblaxell@faye.furryterror.org>
Wed, 4 Jul 2012 02:01:42 +0000 (22:01 -0400)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:55:14 +0000 (12:55 -0500)
-rw-r--r-- 1 zblaxell zblaxell 7363800 Jul  3 17:45 xscreensaver-5.18.tar.gz
a9f66d3f5094d2c1ef46c1209730e7cb653f33a7  xscreensaver-5.18.tar.gz

197 files changed:
OSX/PrefsReader.m
OSX/SaverListController.m
OSX/SaverRunner.h
OSX/SaverRunner.m
OSX/SaverRunner.plist
OSX/XScreenSaver.plist
OSX/XScreenSaverConfigSheet.m
OSX/XScreenSaverGLView.m
OSX/XScreenSaverView.h
OSX/XScreenSaverView.m
OSX/bindist.rtf
OSX/iSaverRunner.plist
OSX/iSaverRunner1024.png [new file with mode: 0644]
OSX/iosgrabimage.m [new file with mode: 0644]
OSX/iostextclient.m
OSX/jwxyz-timers.m
OSX/jwxyz.h
OSX/jwxyz.m
OSX/osxgrabscreen.m
README
config.h.in
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/subprocs.c
driver/xscreensaver.c
driver/xscreensaver.h
hacks/Makefile.in
hacks/abstractile.c
hacks/anemone.c
hacks/apollonian.c
hacks/apple2-main.c
hacks/asm6502.c
hacks/asm6502.h
hacks/barcode.c
hacks/bouboule.c
hacks/braid.c
hacks/bsod.c
hacks/ccurve.c
hacks/check-configs.pl
hacks/compass.c
hacks/config/README
hacks/config/antspotlight.xml
hacks/config/boxfit.xml
hacks/config/bumps.xml
hacks/config/dnalogo.xml
hacks/config/flipscreen3d.xml
hacks/config/gleidescope.xml
hacks/config/jigsaw.xml
hacks/config/pedal.xml
hacks/config/pipes.xml
hacks/config/ripples.xml
hacks/config/rotzoomer.xml
hacks/config/sonar.xml
hacks/config/spotlight.xml
hacks/coral.c
hacks/crystal.c
hacks/decayscreen.c
hacks/demon.c
hacks/discrete.c
hacks/distort.c
hacks/drift.c
hacks/eruption.c
hacks/euler2d.c
hacks/fadeplot.c
hacks/flag.c
hacks/flame.c
hacks/flow.c
hacks/galaxy.c
hacks/glx/Makefile.in
hacks/glx/antmaze.c
hacks/glx/atunnel.c
hacks/glx/boing.c
hacks/glx/bouncingcow.c
hacks/glx/carousel.c
hacks/glx/chessgames.h
hacks/glx/chessmodels.c
hacks/glx/chessmodels.h
hacks/glx/companion.c
hacks/glx/crackberg.c
hacks/glx/cube21.c
hacks/glx/cubenetic.c
hacks/glx/cubicgrid.c
hacks/glx/dangerball.c
hacks/glx/dnalogo.c
hacks/glx/dnapizza.h [new file with mode: 0644]
hacks/glx/endgame.c
hacks/glx/engine.c
hacks/glx/flipflop.c
hacks/glx/flyingtoasters.c
hacks/glx/gears.c
hacks/glx/gflux.c
hacks/glx/glcells.c
hacks/glx/glknots.c
hacks/glx/glplanet.c
hacks/glx/glschool.c
hacks/glx/glschool_alg.c
hacks/glx/glschool_alg.h
hacks/glx/glschool_gl.c
hacks/glx/glschool_gl.h
hacks/glx/gltext.c
hacks/glx/gltrackball.c
hacks/glx/glxfonts.c
hacks/glx/hilbert.c
hacks/glx/jigglypuff.c
hacks/glx/jigsaw.c
hacks/glx/juggler3d.c
hacks/glx/jwzgles.c
hacks/glx/jwzglesI.h
hacks/glx/lament.c
hacks/glx/menger.c
hacks/glx/mirrorblob.c
hacks/glx/moebius.c
hacks/glx/moebiusgears.c
hacks/glx/molecule.c
hacks/glx/pinion.c
hacks/glx/pipes.c
hacks/glx/polyhedra-gl.c
hacks/glx/providence.c
hacks/glx/queens.c
hacks/glx/rubik.c
hacks/glx/rubikblocks.c
hacks/glx/sballs.c
hacks/glx/sierpinski3d.c
hacks/glx/skytentacles.c
hacks/glx/sonar-icmp.c
hacks/glx/sonar-sim.c
hacks/glx/sonar.c
hacks/glx/sonar.h
hacks/glx/sonar.man
hacks/glx/spheremonics.c
hacks/glx/stairs.c
hacks/glx/stonerview-move.c
hacks/glx/stonerview-move.h
hacks/glx/stonerview-view.c
hacks/glx/stonerview.c
hacks/glx/stonerview.h
hacks/glx/surfaces.c
hacks/glx/tangram.c
hacks/glx/tangram_shapes.c
hacks/glx/tangram_shapes.h
hacks/glx/teapot.c
hacks/glx/teapot2.h [new file with mode: 0644]
hacks/glx/topblock.c
hacks/glx/trackball.c
hacks/glx/trackball.h
hacks/glx/tronbit.c
hacks/glx/tunnel_draw.c
hacks/glx/tunnel_draw.h
hacks/goop.c
hacks/grav.c
hacks/interference.c
hacks/julia.c
hacks/julia.man
hacks/loop.c
hacks/m6502.c
hacks/memscroller.c
hacks/moire2.c
hacks/mountain.c
hacks/munge-ad.pl
hacks/noseguy.c
hacks/pacman.c
hacks/pacman.h
hacks/pacman_ai.c
hacks/pacman_ai.h
hacks/pacman_level.c
hacks/pacman_level.h
hacks/penetrate.c
hacks/penrose.c
hacks/piecewise.c
hacks/polyominoes.c
hacks/popsquares.c
hacks/sierpinski.c
hacks/slidescreen.c
hacks/speedmine.c
hacks/squiral.c
hacks/starfish.c
hacks/strange.c
hacks/swirl.c
hacks/thornbird.c
hacks/triangle.c
hacks/truchet.c
hacks/vermiculate.c
hacks/wander.c
hacks/whirlwindwarp.c
hacks/xlyap.c
hacks/xrayswarm.c
po/Makefile.in.in
po/POTFILES.in
utils/Makefile.in
utils/grabclient.c
utils/grabscreen.h
utils/version.h
xscreensaver.spec
xscreensaver.xcodeproj/project.pbxproj

index dd9170fe9fa938ac4c0421b812d0659fcefa4081..95dc8ebe66dd35affbcbdc894babdaf105cf1164 100644 (file)
   NSRange r = [name rangeOfString:@"." options:NSBackwardsSearch];
   if (r.length)
     name = [name substringFromIndex:r.location+1];
+  name = [name stringByReplacingOccurrencesOfString:@" " withString:@""];
   saver_name = [name retain];
 
   [self registerXrmKeys:opts defaults:defs];
index 75e8751ba2b59a0f7529e0e5c873ea0b01c37c37..484cb1685449bdb50a625d1a7ccfe445c23e27eb 100644 (file)
@@ -16,6 +16,7 @@
 
 #import "SaverListController.h"
 #import "SaverRunner.h"
+#import "yarandom.h"
 #import "version.h"
 
 #undef countof
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
-  if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
   [s loadSaver: cell.textLabel.text];
 }
 
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
-  if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
   [s openPreferences: cell.textLabel.text];
 }
 
 }
 
 
+/* We need this to respond to "shake" gestures
+ */
+- (BOOL)canBecomeFirstResponder
+{
+  return YES;
+}
+
+- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+
+/* Shake means load a random screen saver.
+ */
+- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+  NSMutableArray *a = [NSMutableArray arrayWithCapacity: 200];
+  for (NSArray *sec in letter_sections)
+    for (NSString *s in sec)
+      [a addObject: s];
+  int n = [a count];
+  if (! n) return;
+  NSString *which = [a objectAtIndex: (random() % n)];
+
+  SaverRunner *s = 
+    (SaverRunner *) [[UIApplication sharedApplication] delegate];
+  if (! s) return;
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
+  [self scrollTo: which];
+  [s loadSaver: which];
+}
+
+
 - (void)dealloc
 {
   for (int i = 0; i < countof(list_by_letter); i++)
index 2c5d0461f92afb0064a8699df5573ed6678878ee..0a35ca195fe6a9a6a2f344e3039fda247451405a 100644 (file)
 # endif // USE_IPHONE
 }
 
-- (void) aboutPanel: (id)sender;
-- (void)loadSaver:(NSString *)name launch:(BOOL)launch;
+- (void) loadSaver: (NSString *)name launch:(BOOL)launch;
 - (void) loadSaver: (NSString *)name;
-- (void)selectedSaverDidChange:(NSDictionary *)change;
+- (void) selectedSaverDidChange:(NSDictionary *)change;
 
 #ifndef USE_IPHONE
+- (void) aboutPanel: (id)sender;
 - (void) openPreferences: (id)sender;
 #else  // USE_IPHONE
 - (void) openPreferences: (NSString *)which;
index 60233a087b6b7c5028b54357b2d99b7ad76d4e7b..3fd451d9ae2b23cb7680e6d34cb3f3b93bc06e5c 100644 (file)
    of bundles that have executable code in them.  Bleh.
  */
 
+#import <TargetConditionals.h>
 #import "SaverRunner.h"
 #import "SaverListController.h"
 #import "XScreenSaverGLView.h"
-#import <TargetConditionals.h>
+#import "yarandom.h"
 
 #ifdef USE_IPHONE
 
@@ -417,11 +418,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
   [prefs synchronize];
 
   if (saverName && [saverName isEqualToString: name]) {
-    if (launch && ![saverView isAnimating]) {
-      [window addSubview: saverView];
-      [saverView startAnimation];
-    }
-    return;
+    if ([saverView isAnimating])
+      return;
+    else
+      goto LAUNCH;
   }
 
   saverName = name;
@@ -452,8 +452,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
     selector:@selector(didRotate:)
     name:UIDeviceOrientationDidChangeNotification object:nil];
 
+ LAUNCH:
   if (launch) {
+    [self saveScreenshot];
     [window addSubview: saverView];
+    [saverView becomeFirstResponder];
     [saverView startAnimation];
   }
 # endif // USE_IPHONE
@@ -466,9 +469,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
 }
 
 
+# ifndef USE_IPHONE
+
 - (void)aboutPanel:(id)sender
 {
-# ifndef USE_IPHONE
   NSDictionary *bd = [saverBundle infoDictionary];
   NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20];
 
@@ -484,28 +488,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
 
   [[NSApplication sharedApplication]
     orderFrontStandardAboutPanelWithOptions:d];
-
-# else  // USE_IPHONE
-
-  NSDictionary *bd = [[NSBundle mainBundle] infoDictionary];
-  NSString *body = [bd objectForKey:@"CFBundleGetInfoString"];
-
-  body = [body stringByReplacingOccurrencesOfString:@", " withString:@",\n"];
-  body = [body stringByAppendingString:
-               @"\n\n"
-               "Double-tap to run.\n\n"
-               "Double-tap again to\n"
-               "return to this list."];
-
-  [[[UIAlertView alloc] initWithTitle: @""
-                        message: body
-                        delegate: nil
-                        cancelButtonTitle: @"OK"
-                        otherButtonTitles: nil]
-    show];
+}
 
 # endif // USE_IPHONE
-}
 
 
 
@@ -916,6 +901,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
                                 initWithNames:saverNames
                                 descriptions:[self makeDescTable]];
   [rootViewController pushViewController:menu animated:YES];
+  [menu becomeFirstResponder];
 
   [window makeKeyAndVisible];
   [window setAutoresizesSubviews:YES];
@@ -923,8 +909,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
             (UIViewAutoresizingFlexibleWidth | 
              UIViewAutoresizingFlexibleHeight)];
 
-  // Has to be after the list window is up, or we get black.
-  [self saveScreenshot];
+  application.applicationSupportsShakeToEdit = YES;
 
 # endif // USE_IPHONE
 
index 5ac695ff2fcb21a79bf1b101b2e69e1f65590995..b116fb8f49f7eaf2925c2ce73247d5798f43d647 100644 (file)
@@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSHumanReadableCopyright</key>
index 6beac27735c36046eeec93dd064f246c495779e8..fa9f4870d0d0cf533a2b82ee2cb06bd0e47ec496 100644 (file)
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
index e179dd0b0f8b4160ba63397e0c1faa5c6f39dbaf..1df862b2a33fb182ce63af45501f0774aa48d1db 100644 (file)
@@ -48,6 +48,7 @@
 #endif // USE_IPHONE
 
 #undef LABEL_ABOVE_SLIDER
+#define USE_HTML_LABELS
 
 
 #pragma mark XML Parser
@@ -191,6 +192,222 @@ typedef enum { SimpleXMLCommentKind,
 # endif // !USE_PICKER_VIEW
 
 
+# pragma mark Implementing labels with clickable links
+
+#if defined(USE_IPHONE) && defined(USE_HTML_LABELS)
+
+@interface HTMLLabel : UIView <UIWebViewDelegate>
+{
+  NSString *html;
+  UIFont *font;
+  UIWebView *webView;
+}
+
+@property(nonatomic, retain) NSString *html;
+@property(nonatomic, retain) UIWebView *webView;
+
+- (id) initWithHTML:(NSString *)h font:(UIFont *)f;
+- (id) initWithText:(NSString *)t font:(UIFont *)f;
+- (void) setHTML:(NSString *)h;
+- (void) setText:(NSString *)t;
+- (void) sizeToFit;
+
+@end
+
+@implementation HTMLLabel
+
+@synthesize html;
+@synthesize webView;
+
+- (id) initWithHTML:(NSString *)h font:(UIFont *)f
+{
+  self = [super init];
+  if (! self) return 0;
+  font = [f retain];
+  webView = [[UIWebView alloc] init];
+  webView.delegate = self;
+  webView.dataDetectorTypes = UIDataDetectorTypeNone;
+  self.   autoresizingMask = (UIViewAutoresizingFlexibleWidth |
+                              UIViewAutoresizingFlexibleHeight);
+  webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
+                              UIViewAutoresizingFlexibleHeight);
+  [self addSubview: webView];
+  [self setHTML: h];
+  return self;
+}
+
+- (id) initWithText:(NSString *)t font:(UIFont *)f
+{
+  self = [self initWithHTML:@"" font:f];
+  if (! self) return 0;
+  [self setText: t];
+  return self;
+}
+
+
+- (void) setHTML: (NSString *)h
+{
+  if (! h) return;
+  [h retain];
+  if (html) [html release];
+  html = h;
+  NSString *h2 =
+    [NSString stringWithFormat:
+                @"<!DOCTYPE HTML PUBLIC "
+                   "\"-//W3C//DTD HTML 4.01 Transitional//EN\""
+                   " \"http://www.w3.org/TR/html4/loose.dtd\">"
+                 "<HTML>"
+                  "<HEAD>"
+//                   "<META NAME=\"viewport\" CONTENT=\""
+//                      "width=device-width"
+//                      "initial-scale=1.0;"
+//                      "maximum-scale=1.0;\">"
+                   "<STYLE>"
+                    "<!--\n"
+                      "body {"
+                      " margin: 0; padding: 0; border: 0;"
+                      " font-family: \"%@\";"
+                      " font-size: %.4fpx;"    // Must be "px", not "pt"!
+                      " line-height: %.4fpx;"   // And no spaces before it.
+                      "}"
+                    "\n//-->\n"
+                   "</STYLE>"
+                  "</HEAD>"
+                  "<BODY>"
+                   "%@"
+                  "</BODY>"
+                 "</HTML>",
+              [font fontName],
+              [font pointSize],
+              [font lineHeight],
+              h];
+  [webView loadHTMLString:h2 baseURL:[NSURL URLWithString:@""]];
+}
+
+
+static char *anchorize (const char *url);
+
+- (void) setText: (NSString *)t
+{
+  t = [t stringByReplacingOccurrencesOfString:@"&" withString:@"&amp;"];
+  t = [t stringByReplacingOccurrencesOfString:@"<" withString:@"&lt;"];
+  t = [t stringByReplacingOccurrencesOfString:@">" withString:@"&gt;"];
+  t = [t stringByReplacingOccurrencesOfString:@"\n\n" withString:@" <P> "];
+  t = [t stringByReplacingOccurrencesOfString:@"<P>  "
+         withString:@"<P> &nbsp; &nbsp; &nbsp; &nbsp; "];
+  t = [t stringByReplacingOccurrencesOfString:@"\n "
+         withString:@"<BR> &nbsp; &nbsp; &nbsp; &nbsp; "];
+
+  NSString *h = @"";
+  for (NSString *s in
+         [t componentsSeparatedByCharactersInSet:
+              [NSCharacterSet whitespaceAndNewlineCharacterSet]]) {
+    if ([s hasPrefix:@"http://"] ||
+        [s hasPrefix:@"https://"]) {
+      char *anchor = anchorize ([s cStringUsingEncoding:NSUTF8StringEncoding]);
+      NSString *a2 = [NSString stringWithCString: anchor
+                               encoding: NSUTF8StringEncoding];
+      s = [NSString stringWithFormat: @"<A HREF=\"%@\">%@</A><BR>", s, a2];
+      free (anchor);
+    }
+    h = [NSString stringWithFormat: @"%@ %@", h, s];
+  }
+  [self setHTML: h];
+}
+
+
+-(BOOL) webView:(UIWebView *)wv
+        shouldStartLoadWithRequest:(NSURLRequest *)req
+        navigationType:(UIWebViewNavigationType)type
+{
+  // Force clicked links to open in Safari, not in this window.
+  if (type == UIWebViewNavigationTypeLinkClicked) {
+    [[UIApplication sharedApplication] openURL:[req URL]];
+    return NO;
+  }
+  return YES;
+}
+
+
+- (void) setFrame: (CGRect)r
+{
+  [super setFrame: r];
+  r.origin.x = 0;
+  r.origin.y = 0;
+  [webView setFrame: r];
+  [self setHTML: html];
+  [webView reload];
+}
+
+
+- (NSString *) stripTags:(NSString *)str
+{
+  NSString *result = @"";
+
+  str = [str stringByReplacingOccurrencesOfString:@"<P>"
+             withString:@"<BR><BR>"
+             options:NSCaseInsensitiveSearch
+             range:NSMakeRange(0, [str length])];
+  str = [str stringByReplacingOccurrencesOfString:@"<BR>"
+             withString:@"\n"
+             options:NSCaseInsensitiveSearch
+             range:NSMakeRange(0, [str length])];
+
+  for (NSString *s in [str componentsSeparatedByString: @"<"]) {
+    NSRange r = [s rangeOfString:@">"];
+    if (r.length > 0)
+      s = [s substringFromIndex: r.location + r.length];
+    result = [result stringByAppendingString: s];
+  }
+  return result;
+}
+
+
+- (void) sizeToFit
+{
+  CGRect r = [self frame];
+
+  /* It would be sensible to just ask the UIWebView how tall the page is,
+     instead of hoping that NSString and UIWebView measure fonts and do
+     wrapping in exactly the same way, but I can't make that work.
+     Maybe because it loads async?
+   */
+# if 0
+  r.size.height = [[webView
+                     stringByEvaluatingJavaScriptFromString:
+                       @"document.body.offsetHeight"]
+                    doubleValue];
+# else
+  NSString *text = [self stripTags: html];
+  CGSize s = r.size;
+  s.height = 999999;
+  s = [text sizeWithFont: font
+            constrainedToSize: s
+            lineBreakMode: UILineBreakModeWordWrap];
+
+  // GAAAH. Add one more line, or the UIWebView is still scrollable!
+  // The text is sized right, but it lets you scroll it up anyway.
+  s.height += [font pointSize];
+
+  r.size.height = s.height;
+# endif
+
+  [self setFrame: r];
+}
+
+
+- (void) dealloc
+{
+  [html release];
+  [font release];
+  [webView release];
+  [super dealloc];
+}
+
+@end
+
+#endif // USE_IPHONE && USE_HTML_LABELS
+
 
 @interface XScreenSaverConfigSheet (Private)
 
@@ -682,6 +899,8 @@ anchorize (const char *url)
 }
 
 
+#if !defined(USE_IPHONE) || !defined(USE_HTML_LABELS)
+
 /* Converts any http: URLs in the given text field to clickable links.
  */
 static void
@@ -766,6 +985,9 @@ hreffify (NSText *nstext)
 # endif
 }
 
+#endif /* !USE_IPHONE || !USE_HTML_LABELS */
+
+
 
 #pragma mark Creating controls from XML
 
@@ -813,6 +1035,26 @@ hreffify (NSText *nstext)
     if ([val length] == 0)
       [dict removeObjectForKey:key];
   }
+
+# ifdef USE_IPHONE
+  // Kludge for starwars.xml:
+  // If there is a "_low-label" and no "_label", but "_low-label" contains
+  // spaces, divide them.
+  NSString *lab = [dict objectForKey:@"_label"];
+  NSString *low = [dict objectForKey:@"_low-label"];
+  if (low && !lab) {
+    NSArray *split =
+      [[[low stringByTrimmingCharactersInSet:
+               [NSCharacterSet whitespaceAndNewlineCharacterSet]]
+         componentsSeparatedByString: @"  "]
+        filteredArrayUsingPredicate:
+          [NSPredicate predicateWithFormat:@"length > 0"]];
+    if (split && [split count] == 2) {
+      [dict setValue:[split objectAtIndex:0] forKey:@"_label"];
+      [dict setValue:[split objectAtIndex:1] forKey:@"_low-label"];
+    }
+  }
+# endif // USE_IPHONE
 }
 
 
@@ -1479,25 +1721,25 @@ set_menu_item_object (NSMenuItem *item, NSObject *obj)
   hreffify (lab);
   boldify (lab);
   [lab sizeToFit];
-# else  // USE_IPHONE
 
-  /* There's no way to put rich text or links inside a UILabel.
-
-     I guess Apple expects us to use a UIWebView for this -- but there's
-     no way to measure how tall the HTML-rendered text is (the answer is
-     not: "document.height" via JavaScript) so we can't put the
-     properly-sized cell in the table.
-
-     This is some serious bullshit.
+# else  // USE_IPHONE
 
-     Another option would be to subclass UILabel and replace its drawRect
-     with new code that uses CTLineDraw.  But that's a huge hassle.
-   */
+#  ifndef USE_HTML_LABELS
 
   UILabel *lab = [self makeLabel:text];
   [lab setFont:[NSFont systemFontOfSize: [NSFont systemFontSize]]];
   hreffify (lab);
+
+#  else  // USE_HTML_LABELS
+  HTMLLabel *lab = [[HTMLLabel alloc] 
+                     initWithText:text
+                     font:[NSFont systemFontOfSize: [NSFont systemFontSize]]];
+  [lab setFrame:rect];
+  [lab sizeToFit];
+#  endif // USE_HTML_LABELS
+
   [self placeSeparator];
+
 # endif // USE_IPHONE
 
   [self placeChild:lab on:parent];
@@ -2024,7 +2266,6 @@ find_text_field_of_button (NSButton *button)
 
 - (void) makeImageLoaderControlBox:(NSXMLNode *)node on:(NSView *)parent
 {
-# ifndef USE_IPHONE
   /*
     [x]  Grab desktop images
     [ ]  Choose random image:
@@ -2039,11 +2280,19 @@ find_text_field_of_button (NSButton *button)
 
   NSXMLElement *node2;
 
+# ifndef USE_IPHONE
+#  define SCREENS "Grab desktop images"
+#  define PHOTOS  "Choose random images"
+# else
+#  define SCREENS "Grab screenshots"
+#  define PHOTOS  "Use photo library"
+# endif
+
   node2 = [[NSXMLElement alloc] initWithName:@"boolean"];
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"grabDesktopImages",   @"id",
-                        @"Grab desktop images", @"_label",
+                        @ SCREENS,              @"_label",
                         @"-no-grab-desktop",    @"arg-unset",
                         nil]];
   [self makeCheckbox:node2 on:parent];
@@ -2052,7 +2301,7 @@ find_text_field_of_button (NSButton *button)
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"chooseRandomImages",    @"id",
-                        @"Choose random images",  @"_label",
+                        @ PHOTOS,                 @"_label",
                         @"-choose-random-images", @"arg-set",
                         nil]];
   [self makeCheckbox:node2 on:parent];
@@ -2067,6 +2316,10 @@ find_text_field_of_button (NSButton *button)
   [self makeFileSelector:node2 on:parent
         dirsOnly:YES withLabel:YES editable:YES];
 
+# undef SCREENS
+# undef PHOTOS
+
+# ifndef USE_IPHONE
   // Add a second, explanatory label below the file/URL selector.
 
   LABEL *lab2 = 0;
@@ -2079,7 +2332,7 @@ find_text_field_of_button (NSButton *button)
   r2.origin.y += 14;
   [lab2 setFrameOrigin:r2.origin];
   [lab2 release];
-# endif // !USE_IPHONE
+# endif // USE_IPHONE
 }
 
 
@@ -2612,6 +2865,8 @@ wrap_with_buttons (NSWindow *window, NSView *panel)
   }
 
   saver_name = [self parseXScreenSaverTag: node];
+  saver_name = [saver_name stringByReplacingOccurrencesOfString:@" "
+                           withString:@""];
   [saver_name retain];
   
 # ifndef USE_IPHONE
@@ -2831,7 +3086,20 @@ wrap_with_buttons (NSWindow *window, NSView *panel)
     [t sizeToFit];
     r = t.frame;
     h = r.size.height + LINE_SPACING * 3;
+# ifdef USE_HTML_LABELS
+
+  } else if ([ctl isKindOfClass:[HTMLLabel class]]) {
+    
+    HTMLLabel *t = (HTMLLabel *) ctl;
+    CGRect r = t.frame;
+    r.size.width = [tv frame].size.width;
+    r.size.width -= LEFT_MARGIN * 2;
+    [t setFrame:r];
+    [t sizeToFit];
+    r = t.frame;
+    h = r.size.height + LINE_SPACING * 3;
 
+# endif // USE_HTML_LABELS
   } else {
     CGFloat h2 = [ctl frame].size.height;
     h2 += LINE_SPACING * 2;
index da155211a3c058f32d5f7a5424179cf519be41c8..58144ee1c342b1645749d37571d6770c4cd46233 100644 (file)
@@ -47,6 +47,8 @@ extern void check_gl_error (const char *type);
 # ifndef USE_IPHONE
   [NSOpenGLContext clearCurrentContext];
 # endif // !USE_IPHONE
+
+  clear_gl_error();    // This hack is defunct, don't let this linger.
 }
 
 
@@ -240,14 +242,19 @@ extern void check_gl_error (const char *type);
  */
 
 
-// redefine these now since they don't work when not inside an ObjC method.
+// redefine NSAssert, etc. here since they don't work when not inside
+// an ObjC method.
 
 #undef NSAssert
 #undef NSAssert1
 #undef NSAssert2
-#define NSAssert(CC,S)      do { if (!(CC)) { NSLog(S);    abort();}} while(0)
-#define NSAssert1(CC,S,A)   do { if (!(CC)) { NSLog(S,A);  abort();}} while(0)
-#define NSAssert2(CC,S,A,B) do { if (!(CC)) { NSLog(S,A,B);abort();}} while(0)
+#define NSASS(S) \
+  jwxyz_abort ("%s", [(S) cStringUsingEncoding:NSUTF8StringEncoding])
+#define NSAssert(CC,S)      do { if (!(CC)) { NSASS((S)); }} while(0)
+#define NSAssert1(CC,S,A)   do { if (!(CC)) { \
+  NSASS(([NSString stringWithFormat: S, A])); }} while(0)
+#define NSAssert2(CC,S,A,B) do { if (!(CC)) { \
+  NSASS(([NSString stringWithFormat: S, A, B])); }} while(0)
 
 
 /* Called by OpenGL savers using the XLockmore API.
index eb241b39863c61214df6002cf40889ac3d7a87eb..7365b9d82080e0566111c4ccdfb95f502215aaf8 100644 (file)
@@ -53,6 +53,9 @@
 
 
 @interface XScreenSaverView : ScreenSaverView
+# ifdef USE_IPHONE
+                             <UIAlertViewDelegate>
+# endif
 {
   struct xscreensaver_function_table *xsft;
   PrefsReader *prefsReader;
@@ -70,7 +73,8 @@
 
 # ifdef USE_IPHONE
   UIDeviceOrientation orientation, new_orientation;
-  NSTimer *orientation_Timer;
+  double tap_time;
+  CGPoint tap_point;
   BOOL screenLocked;
 
   GLfloat rotation_ratio;      // ratio thru rotation anim, or -1
index 55c5516b99c9a36d1ca72f2565beb94e2c20d8b5..438c05f9c712922a7c8ef8087477df1c508088c1 100644 (file)
@@ -91,6 +91,11 @@ int mono_p = 0;
 
 
 
+@interface XScreenSaverView (Private)
+- (void) stopAndClose;
+- (void) stopAndClose:(Bool)relaunch;
+@end
+
 @implementation XScreenSaverView
 
 // Given a lower-cased saver name, returns the function table for it.
@@ -113,7 +118,9 @@ int mono_p = 0;
   if (! name)
     name = [[path lastPathComponent] stringByDeletingPathExtension];
 
-  NSString *table_name = [[name lowercaseString]
+  NSString *table_name = [[[name lowercaseString]
+                            stringByReplacingOccurrencesOfString:@" "
+                            withString:@""]
                            stringByAppendingString:
                              @"_xscreensaver_function_table"];
   void *addr = CFBundleGetDataPointerForName (cfb, (CFStringRef) table_name);
@@ -146,7 +153,7 @@ int mono_p = 0;
   strcat (npath, opath);
   if (putenv (npath)) {
     perror ("putenv");
-    abort();
+    NSAssert1 (0, @"putenv \"%s\" failed", npath);
   }
 
   /* Don't free (npath) -- MacOS's putenv() does not copy it. */
@@ -167,7 +174,7 @@ int mono_p = 0;
   strcat (env, s);
   if (putenv (env)) {
     perror ("putenv");
-    abort();
+    NSAssert1 (0, @"putenv \"%s\" failed", env);
   }
   /* Don't free (env) -- MacOS's putenv() does not copy it. */
 }
@@ -213,7 +220,11 @@ add_default_options (const XrmOptionDescRec *opts,
     ".textURL:            http://twitter.com/statuses/public_timeline.atom",
  // ".textProgram:        ",
     ".grabDesktopImages:  yes",
+# ifndef USE_IPHONE
     ".chooseRandomImages: no",
+# else
+    ".chooseRandomImages: yes",
+# endif
     ".imageDirectory:     ~/Pictures",
     ".relaunchDelay:      2",
     0
@@ -325,7 +336,7 @@ double_time (void)
      "org.jwz.xscreensaver.<SAVERNAME>.<NUMBERS>.plist"
    */
   NSString *name = [NSString stringWithCString:xsft->progclass
-                                      encoding:NSUTF8StringEncoding];
+                             encoding:NSISOLatin1StringEncoding];
   name = [@"org.jwz.xscreensaver." stringByAppendingString:name];
   [self setResourcesEnv:name];
 
@@ -375,7 +386,6 @@ double_time (void)
 
   // xsft
   // fpst
-  // orientation_timer
 
   [super dealloc];
 }
@@ -611,12 +621,41 @@ double current_device_rotation (void)
     [self setFrame:[self frame]];
 }
 
+
+- (void)alertView:(UIAlertView *)av clickedButtonAtIndex:(NSInteger)i
+{
+  if (i == 0) exit (-1);       // Cancel
+  [self stopAndClose];         // Keep going
+}
+
+- (void) handleException: (NSException *)e
+{
+  NSLog (@"Caught exception: %@", e);
+  [[[UIAlertView alloc] initWithTitle:
+                          [NSString stringWithFormat: @"%s crashed!",
+                                    xsft->progclass]
+                        message:
+                          [NSString stringWithFormat:
+                                      @"The error message was:"
+                                    "\n\n%@\n\n"
+                                    "If it keeps crashing, try "
+                                    "resetting its options.",
+                                    e]
+                        delegate: self
+                        cancelButtonTitle: @"Exit"
+                        otherButtonTitles: @"Keep going", nil]
+    show];
+  [self stopAnimation];
+}
+
 #endif // USE_IPHONE
 
 
 - (void) render_x11
 {
 # ifdef USE_IPHONE
+  @try {
+
   if (orientation == UIDeviceOrientationUnknown)
     [self didRotate:nil];
   [self hackRotation];
@@ -760,7 +799,6 @@ double current_device_rotation (void)
     resized_p = NO;
   }
 
-
   // Run any XtAppAddInput callbacks now.
   // (Note that XtAppAddTimeOut callbacks have already been run by
   // the Cocoa event loop.)
@@ -817,6 +855,13 @@ double current_device_rotation (void)
     }
   }
 # endif // DO_GC_HACKERY
+
+# ifdef USE_IPHONE
+  }
+  @catch (NSException *e) {
+    [self handleException: e];
+  }
+# endif // USE_IPHONE
 }
 
 
@@ -969,7 +1014,7 @@ double current_device_rotation (void)
 {
   NSBundle *bundle = [NSBundle bundleForClass:[self class]];
   NSString *file = [NSString stringWithCString:xsft->progclass
-                                      encoding:NSUTF8StringEncoding];
+                                      encoding:NSISOLatin1StringEncoding];
   file = [file lowercaseString];
   NSString *path = [bundle pathForResource:file ofType:@"xml"];
   if (!path) {
@@ -1116,7 +1161,8 @@ double current_device_rotation (void)
         break;
       }
     default:
-      abort();
+      NSAssert (0, @"unknown X11 event type: %d", type);
+      break;
   }
 
   [self lockFocus];
@@ -1196,6 +1242,47 @@ double current_device_rotation (void)
 #else  // USE_IPHONE
 
 
+- (void) stopAndClose
+{
+  if ([self isAnimating])
+    [self stopAnimation];
+
+  /* Need to make the SaverListController be the firstResponder again
+     so that it can continue to receive its own shake events.  I
+     suppose that this abstraction-breakage means that I'm adding
+     XScreenSaverView to the UINavigationController wrong...
+   */
+  UIViewController *v = [[self window] rootViewController];
+  if ([v isKindOfClass: [UINavigationController class]]) {
+    UINavigationController *n = (UINavigationController *) v;
+    [[n topViewController] becomeFirstResponder];
+  }
+
+  // [self removeFromSuperview];
+  [UIView animateWithDuration: 0.5
+          animations:^{ self.alpha = 0.0; }
+          completion:^(BOOL finished) {
+            [self removeFromSuperview];
+             self.alpha = 1.0;
+          }];
+}
+
+
+- (void) stopAndClose:(Bool)relaunch_p
+{
+  [self stopAndClose];
+
+  if (relaunch_p) {   // Fake a shake on the SaverListController.
+    UIViewController *v = [[self window] rootViewController];
+    if ([v isKindOfClass: [UINavigationController class]]) {
+      UINavigationController *n = (UINavigationController *) v;
+      [[n topViewController] motionEnded: UIEventSubtypeMotionShake
+                               withEvent: nil];
+    }
+  }
+}
+
+
 /* Called after the device's orientation has changed.
 
    Note: we could include a subclass of UIViewController which
@@ -1311,7 +1398,11 @@ double current_device_rotation (void)
 }
 
 
-/* In the simulator, multi-touch sequences look like this:
+/* I believe we can't use UIGestureRecognizer for tracking touches
+   because UIPanGestureRecognizer doesn't give us enough detail in its
+   callbacks.
+
+   In the simulator, multi-touch sequences look like this:
 
      touchesBegan [touchA, touchB]
      touchesEnd [touchA, touchB]
@@ -1345,8 +1436,29 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 }
 
 
+#if 0  // AudioToolbox/AudioToolbox.h
+- (void) beep
+{
+  // There's no way to play a standard system alert sound!
+  // We'd have to include our own WAV for that.  Eh, fuck it.
+  AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
+# if TARGET_IPHONE_SIMULATOR
+  NSLog(@"BEEP");  // The sim doesn't vibrate.
+# endif
+}
+#endif
+
+
+/* We distinguish between taps and drags.
+   - Drags (down, motion, up) are sent to the saver to handle.
+   - Single-taps exit the saver.
+   This means a saver cannot respond to a single-tap.  Only a few try to.
+ */
+
 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
+  tap_time = 0;
+
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
@@ -1363,8 +1475,16 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       xe.xbutton.y      = s * p.y;
       rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
+
+      // Ignore return code: don't care whether the hack handled it.
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
+
+      // Remember when/where this was, to determine tap versus drag or hold.
+      tap_time = double_time();
+      tap_point = p;
+
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
@@ -1372,18 +1492,6 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 
 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
-
-  // Double-tap means "exit" and return to selection menu.
-  //
-  for (UITouch *touch in touches) {
-    if ([touch tapCount] >= 2) {
-      if ([self isAnimating])
-        [self stopAnimation];
-      [self removeFromSuperview];
-      return;
-    }
-  }
-
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
@@ -1393,6 +1501,18 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
       CGPoint p = [touch locationInView:self];
+
+      // If the ButtonRelease came less than half a second after ButtonPress,
+      // and didn't move far, then this was a tap, not a drag or a hold.
+      // Interpret it as "exit".
+      //
+      double dist = sqrt (((p.x - tap_point.x) * (p.x - tap_point.x)) +
+                          ((p.y - tap_point.y) * (p.y - tap_point.y)));
+      if (tap_time + 0.5 >= double_time() && dist < 20) {
+        [self stopAndClose];
+        return;
+      }
+
       xe.xany.type      = ButtonRelease;
       xe.xbutton.button = i + 1;
       xe.xbutton.x      = s * p.x;
@@ -1401,6 +1521,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
@@ -1424,6 +1545,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       jwxyz_mouse_moved (xdpy, xwindow, xe.xmotion.x, xe.xmotion.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
@@ -1431,10 +1553,27 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 
 /* We need this to respond to "shake" gestures
  */
-- (BOOL)canBecomeFirstResponder {
+- (BOOL)canBecomeFirstResponder
+{
   return YES;
 }
 
+- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+
+- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+/* Shake means exit and launch a new saver.
+ */
+- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+  [self stopAndClose:YES];
+}
+
 
 - (void)setScreenLocked:(BOOL)locked
 {
@@ -1462,7 +1601,7 @@ static PrefsReader *
 get_prefsReader (Display *dpy)
 {
   XScreenSaverView *view = jwxyz_window_view (XRootWindow (dpy, 0));
-  if (!view) abort();
+  if (!view) return 0;
   return [view prefsReader];
 }
 
index 1afbd8ea7379333c107a6873492d3f2f87ad8606..c1677625e143482102dad9c0b6d0d679199d6874 100644 (file)
@@ -16,8 +16,8 @@ XScreenSaver\
 by Jamie Zawinski\
 and many others\
 \
-version 5.17\
-22-Jun-2012\
+version 5.18\
+03-Jul-2012\
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}
 \
index 89e572fa9dabbb968d9eb2c962bfce43f77fb064..a296b33b1d5eeec819e376e8d66f32172c3b5324 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
@@ -19,7 +19,7 @@
        <key>UIStatusBarHidden</key>
        <true/>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
diff --git a/OSX/iSaverRunner1024.png b/OSX/iSaverRunner1024.png
new file mode 100644 (file)
index 0000000..a548d1c
Binary files /dev/null and b/OSX/iSaverRunner1024.png differ
diff --git a/OSX/iosgrabimage.m b/OSX/iosgrabimage.m
new file mode 100644 (file)
index 0000000..faf2348
--- /dev/null
@@ -0,0 +1,125 @@
+/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+/* This iOS code to choose and return a random image from the user's
+ * photo gallery.
+ *
+ * Much of the following written by:
+ *
+ *  Created by David Oster on 6/23/12.
+ *  Copyright (c) 2012 Google. All rights reserved.
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#ifdef USE_IPHONE  // whole file
+
+#import <AssetsLibrary/AssetsLibrary.h>
+#import "grabscreen.h"
+#import "yarandom.h"
+
+/* ALAssetsLibrary is an async API, so we need to fire it off and then
+   call a callback when it's done.  Fortunately, this fits the same
+   interaction model already used in xscreensaver by load_image_async(),
+   so it works out nicely.
+ */
+
+typedef struct {
+  void (*callback) (void *uiimage, const char *fn, void *closure);
+  void *closure;
+
+  ALAssetsLibrary *library;
+  NSMutableArray *assets;
+
+} ios_loader_data;
+
+
+static void
+ios_random_image_done (ios_loader_data *d, BOOL ok)
+{
+  UIImage *img = 0;
+  const char *fn = 0;
+  int n = ok ? [d->assets count] : 0;
+  if (n > 0) {
+    ALAsset *asset = [d->assets objectAtIndex: random() % n];
+    ALAssetRepresentation *rep = [asset defaultRepresentation];
+
+    // "fullScreenImage" returns a smaller image than "fullResolutionImage",
+    // but this function still takes a significant fraction of a second,
+    // causing a visible glitch in e.g. "glslideshow".
+    CGImageRef cgi = [rep fullScreenImage];
+    if (cgi) {
+      UIImageOrientation orient = (UIImageOrientation) 
+        [[asset valueForProperty:ALAssetPropertyOrientation] intValue];
+      img = [UIImage imageWithCGImage: cgi
+                     scale: 1
+                     orientation: orient];
+      if (img)
+        fn = [[rep filename] cStringUsingEncoding:NSISOLatin1StringEncoding];
+    }
+  }
+
+  [d->assets release];
+  [d->library release];
+
+  d->callback (img, fn, d->closure);
+  free (d);
+}
+
+
+void
+ios_load_random_image (void (*callback) (void *uiimage, const char *fn,
+                                         void *closure),
+                       void *closure)
+{
+  ios_loader_data *d = (ios_loader_data *) calloc (1, sizeof(*d));
+  d->callback = callback;
+  d->closure = closure;
+
+  d->library = [[[ALAssetsLibrary alloc] init] retain];
+  d->assets = [[NSMutableArray array] retain];
+
+  // The closures passed in here are called later, after we have returned.
+  //
+  [d->library enumerateGroupsWithTypes: ALAssetsGroupAll
+              usingBlock: ^(ALAssetsGroup *group, BOOL *stop) {
+    NSString *name = [group valueForProperty:ALAssetsGroupPropertyName];
+    if ([name length]) {
+      [group enumerateAssetsUsingBlock: ^(ALAsset *asset, NSUInteger index,
+                                          BOOL *stop) {
+        if ([[asset valueForProperty: ALAssetPropertyType]
+              isEqual: ALAssetTypePhoto]) {
+          [d->assets addObject:asset];
+        }
+      }];
+    }
+
+    if (! group) {   // done
+      ios_random_image_done (d, YES);
+    }
+  } failureBlock:^(NSError *error) {
+    // E.g., ALAssetsLibraryErrorDomain: "The user has denied the
+    // application access to their media."
+    NSLog(@"reading Photo Library: %@", error);
+    ios_random_image_done (d, NO);
+  }];
+}
+
+#endif  // USE_IPHONE - whole file
index 646436c323fcbcb1bb026353b0225e0ca4558291..09c6298561b41493cb9faf8f7b5503f80c16510f 100644 (file)
@@ -38,15 +38,6 @@ struct text_data {
 };
 
 
-void
-textclient_reshape (text_data *d,
-                    int pix_w, int pix_h,
-                    int char_w, int char_h)
-{
-  d->columns = char_w;
-}
-
-
 text_data *
 textclient_open (Display *dpy)
 {
@@ -405,6 +396,7 @@ wrap_text (char *body, int columns)
 {
   int col = 0, last_col = 0;
   char *last_space = 0;
+  if (! body) return;
   for (char *p = body; *p; p++) {
     if (*p == '\r' || *p == '\n' || *p == ' ' || *p == '\t') {
       if (col > columns && last_space) {
@@ -425,6 +417,23 @@ wrap_text (char *body, int columns)
 }
 
 
+static void
+rewrap_text (char *body, int columns)
+{
+  if (! body) return;
+  for (char *p = body; *p; p++) {
+    if (*p == '\n') {
+      if (p[1] == '\n')
+        p++;
+      else
+        *p = ' ';
+    }
+  }
+  wrap_text (body, columns);
+}
+
+
+
 static void
 strip_backslashes (char *s)
 {
@@ -553,4 +562,14 @@ textclient_putc (text_data *d, XKeyEvent *k)
   return False;
 }
 
+
+void
+textclient_reshape (text_data *d,
+                    int pix_w, int pix_h,
+                    int char_w, int char_h)
+{
+  d->columns = char_w;
+  rewrap_text (d->buf, d->columns);
+}
+
 #endif /* USE_IPHONE -- whole file */
index 6e478f61725b1104be9f66f54bf7761e8d3f0b8f..be31b2dcf57c41eccef1ffd0a37095c7f6bf6f4d 100644 (file)
 # define LOGI(str,arg1,arg2,arg3)
 #endif
 
+#define ASSERT_RET(C,S) do {                    \
+    if (!(C)) {                                 \
+      jwxyz_abort ("jwxyz-timers: %s",(S));     \
+      return;                                   \
+ }} while(0)
+
 
 XtAppContext
 XtDisplayToApplicationContext (Display *dpy)
@@ -96,7 +102,7 @@ jwxyz_timer_release (const void *arg)
   struct jwxyz_XtIntervalId *data = (struct jwxyz_XtIntervalId *) arg;
   data->refcount--;
   LOGT(@"timer  0x%08X: release %d", (unsigned int) data, data->refcount);
-  if (data->refcount < 0) abort();
+  ASSERT_RET (data->refcount >= 0, "double free");
   if (data->refcount == 0) free (data);
 }
 
@@ -117,7 +123,7 @@ jwxyz_source_release (const void *arg)
   data->refcount--;
   LOGI(@"source 0x%08X %2d: release %d", (unsigned int) data, data->fd,
        data->refcount);
-  if (data->refcount < 0) abort();
+  ASSERT_RET (data->refcount >= 0, "double free");
   if (data->refcount == 0) {
 # ifdef USE_COCOA_SOURCES
     if (data->socket)
@@ -165,8 +171,8 @@ jwxyz_source_cb (CFSocketRef s, CFSocketCallBackType type,
 {
   struct jwxyz_XtInputId *data = (struct jwxyz_XtInputId *) info;
 
-  if (type != kCFSocketReadCallBack) abort();
-  if (call_data != 0) abort();  // not used for kCFSocketRead
+  ASSERT_RET (type == kCFSocketReadCallBack, "unnknown type");
+  ASSERT_RET (!call_data, "no call data");  // not used for kCFSocketRead
 
   // We are sometimes called when there is not, in fact, data available!
   // So don't call data->cb if we're being fed a pack of lies.
@@ -218,9 +224,8 @@ void
 XtRemoveTimeOut (XtIntervalId id)
 {
   LOGT(@"timer  0x%08X: remove", (unsigned int) id, 0);
-  if (id->refcount <= 0) abort();
-  if (!id->cftimer) abort();
-
+  ASSERT_RET (id->refcount > 0, "already freed");
+  ASSERT_RET (id->cftimer, "timers corrupted");
   CFRunLoopRemoveTimer (CFRunLoopGetCurrent(), id->cftimer,
                         kCFRunLoopCommonModes);
   CFRunLoopTimerInvalidate (id->cftimer);
@@ -253,8 +258,8 @@ static void
 jwxyz_source_select (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
-  if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort();
-  if (td->ids[id->fd]) abort();
+  ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range");
+  ASSERT_RET (td->ids[id->fd] == 0, "sources corrupted");
   td->ids[id->fd] = id;
   td->count++;
 }
@@ -263,9 +268,9 @@ static void
 jwxyz_source_deselect (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
-  if (td->count <= 0) abort();
-  if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort();
-  if (td->ids[id->fd] != id) abort();
+  ASSERT_RET (td->count > 0, "sources corrupted");
+  ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range");
+  ASSERT_RET (td->ids[id->fd] == id, "sources corrupted");
   td->ids[id->fd] = 0;
   td->count--;
 }
@@ -288,14 +293,14 @@ jwxyz_sources_run (jwxyz_sources_data *td)
     }
   }
 
-  if (!max) abort();
+  ASSERT_RET (max > 0, "no fds");
 
   if (0 < select (max+1, &fds, NULL, NULL, &tv)) {
     for (i = 0; i < FD_SETSIZE; i++) {
       if (FD_ISSET (i, &fds)) {
         XtInputId id = td->ids[i];
-        if (!id || !id->cb) abort();
-        if (id->fd != i) abort();
+        ASSERT_RET (id && id->cb, "sources corrupted");
+        ASSERT_RET (id->fd == i, "sources corrupted");
         id->cb (id->closure, &id->fd, &id);
       }
     }
@@ -353,10 +358,10 @@ void
 XtRemoveInput (XtInputId id)
 {
   LOGI(@"source 0x%08X %2d: remove", (unsigned int) id, id->fd, 0);
-  if (id->refcount <= 0) abort();
+  ASSERT_RET (id->refcount > 0, "sources corrupted");
 # ifdef USE_COCOA_SOURCES
-  if (! id->cfsource) abort();
-  if (! id->socket) abort();
+  ASSERT_RET (id->cfsource, "sources corrupted");
+  ASSERT_RET (id->socket, "sources corrupted");
 
   CFRunLoopRemoveSource (CFRunLoopGetCurrent(), id->cfsource,
                          kCFRunLoopCommonModes);
@@ -375,7 +380,7 @@ void
 jwxyz_XtRemoveInput_all (Display *dpy)
 {
 # ifdef USE_COCOA_SOURCES
-  abort();
+  ASSERT_RET (0, "unimplemented");
 # else  /* !USE_COCOA_SOURCES */
 
   jwxyz_sources_data *td = display_sources_data (dpy);
index 58d17fe497f3b5035d084c07c41380bd60d49c46..c8607e7d64372bd95d664b3ebc49b731582a1b90 100644 (file)
@@ -19,6 +19,9 @@
 #ifndef __JWXYZ_H__
 #define __JWXYZ_H__
 
+extern void jwxyz_abort(const char *fmt, ...) __dead2;
+#define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
+
 typedef int Bool;
 typedef int Status;
 typedef void * XPointer;
@@ -449,6 +452,7 @@ extern int visual_class (Screen *, Visual *);
 // also declared in utils/grabclient.h
 extern Bool use_subwindow_mode_p (Screen *, Window);
 
+
 struct jwxyz_Visual {
   VisualID visualid;   /* visual id of this visual */
   int class;           /* class of screen (monochrome, etc.) */
index 7643c4400003513f5a7508fa54c0e727ce3b5089..b7e99525b6be63c925dd25c8cd03cf3f11e1dd0d 100644 (file)
@@ -23,6 +23,7 @@
 # import <UIKit/UIKit.h>
 # import <UIKit/UIScreen.h>
 # import <QuartzCore/QuartzCore.h>
+# import <CoreText/CTFont.h>
 # define NSView  UIView
 # define NSRect  CGRect
 # define NSPoint CGPoint
 
 #import "jwxyz.h"
 #import "jwxyz-timers.h"
+#import "yarandom.h"
 
 #undef  Assert
-#define Assert(C,S) do { \
-  if (!(C)) { \
-    NSLog(@"%s",S); \
-    abort(); \
-  }} while(0)
+#define Assert(C,S) do { if (!(C)) jwxyz_abort ("%s",(S)); } while(0)
 
 # undef MAX
 # undef MIN
@@ -111,12 +109,38 @@ struct jwxyz_Font {
 };
 
 
+/* Instead of calling abort(), throw a real exception, so that
+   XScreenSaverView can catch it and display a dialog.
+ */
+void
+jwxyz_abort (const char *fmt, ...)
+{
+  char s[10240];
+  if (!fmt || !*fmt)
+    strcpy (s, "abort");
+  else
+    {
+      va_list args;
+      va_start (args, fmt);
+      vsprintf (s, fmt, args);
+      va_end (args);
+    }
+  [[NSException exceptionWithName: NSInternalInconsistencyException
+                reason: [NSString stringWithCString: s
+                                  encoding:NSUTF8StringEncoding]
+                userInfo: nil]
+    raise];
+  abort();  // not reached
+}
+
+
 Display *
 jwxyz_make_display (void *nsview_arg, void *cgc_arg)
 {
   CGContextRef cgc = (CGContextRef) cgc_arg;
   NSView *view = (NSView *) nsview_arg;
-  if (!view) abort();
+  Assert (view, "no view");
+  if (!view) return 0;
 
   Display *d = (Display *) calloc (1, sizeof(*d));
   d->screen = (Screen *) calloc (1, sizeof(Screen));
@@ -393,7 +417,7 @@ push_gc (Drawable d, GC gc)
     case GXxor:   CGContextSetBlendMode (cgc, kCGBlendModeDifference); break;
     case GXor:    CGContextSetBlendMode (cgc, kCGBlendModeLighten);    break;
     case GXand:   CGContextSetBlendMode (cgc, kCGBlendModeDarken);     break;
-    default: abort(); break;
+    default: Assert(0, "unknown gcv function"); break;
   }
 
   if (gc->gcv.clip_mask)
@@ -782,7 +806,8 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
       // No cgi means src == dst, and both are Windows.
 
 # ifdef USE_IPHONE
-      abort();  // No NSCopyBits on iOS, but shouldn't be reached anyway.
+      Assert (0, "NSCopyBits unimplemented"); // shouldn't be reached anyway
+      return 0;
 # else // !USE_IPHONE
       NSRect nsfrom;
       nsfrom.origin.x    = src_rect.origin.x;    // NSRect != CGRect on 10.4
@@ -1174,8 +1199,8 @@ static void
 set_gcv (GC gc, XGCValues *from, unsigned long mask)
 {
   if (! mask) return;
-  if (! gc) abort();
-  if (! from) abort();
+  Assert (gc && from, "no gc");
+  if (!gc || !from) return;
 
   if (mask & GCFunction)       gc->gcv.function        = from->function;
   if (mask & GCForeground)     gc->gcv.foreground      = from->foreground;
@@ -1196,17 +1221,18 @@ set_gcv (GC gc, XGCValues *from, unsigned long mask)
   if (mask & GCBackground) validate_pixel (from->background, gc->depth,
                                            gc->gcv.alpha_allowed_p);
     
-  if (mask & GCLineStyle)      abort();
-  if (mask & GCPlaneMask)      abort();
-  if (mask & GCFillStyle)      abort();
-  if (mask & GCTile)           abort();
-  if (mask & GCStipple)                abort();
-  if (mask & GCTileStipXOrigin)        abort();
-  if (mask & GCTileStipYOrigin)        abort();
-  if (mask & GCGraphicsExposures) abort();
-  if (mask & GCDashOffset)     abort();
-  if (mask & GCDashList)       abort();
-  if (mask & GCArcMode)                abort();
+  Assert ((! (mask & (GCLineStyle |
+                      GCPlaneMask |
+                      GCFillStyle |
+                      GCTile |
+                      GCStipple |
+                      GCTileStipXOrigin |
+                      GCTileStipYOrigin |
+                      GCGraphicsExposures |
+                      GCDashOffset |
+                      GCDashList |
+                      GCArcMode))),
+          "unimplemented gcvalues mask");
 }
 
 
@@ -1453,7 +1479,7 @@ XInitImage (XImage *ximage)
     ximage->f.put_pixel = ximage_putpixel_32;
     ximage->f.get_pixel = ximage_getpixel_32;
   } else {
-    abort();
+    Assert (0, "unknown depth");
   }
   return 1;
 }
@@ -2141,12 +2167,12 @@ static void
 query_font (Font fid)
 {
   if (!fid || !fid->nsfont) {
-    NSLog(@"no NSFont in fid");
-    abort();
+    Assert (0, "no NSFont in fid");
+    return;
   }
   if (![fid->nsfont fontName]) {
-    NSLog(@"broken NSFont in fid");
-    abort();
+    Assert(0, @"broken NSFont in fid");
+    return;
   }
 
   int first = 32;
@@ -2176,7 +2202,13 @@ query_font (Font fid)
 
 # ifndef USE_IPHONE
   NSBezierPath *bpath = [NSBezierPath bezierPath];
-# endif
+# else  // USE_IPHONE
+  CTFontRef ctfont =
+    CTFontCreateWithName ((CFStringRef) [fid->nsfont fontName],
+                          [fid->nsfont pointSize],
+                          NULL);
+  Assert (ctfont, @"no CTFontRef for UIFont");
+# endif // USE_IPHONE
 
   for (i = first; i <= last; i++) {
     unsigned char str[2];
@@ -2185,8 +2217,8 @@ query_font (Font fid)
 
     NSString *nsstr = [NSString stringWithCString:(char *) str
                                          encoding:NSISOLatin1StringEncoding];
-    NSPoint advancement;
-    NSRect bbox;
+    NSPoint advancement = { 0, };
+    NSRect bbox = {{ 0, }, };
 
 # ifndef USE_IPHONE
 
@@ -2235,33 +2267,35 @@ query_font (Font fid)
 
 # else  // USE_IPHONE
 
-    UIFont *ff = fid->nsfont;
-    CGSize size = [nsstr sizeWithFont:ff];
-
-    /* sizeWithFont gives us a character's "width" and "height".
-       There is no way to get a character's "lbearing", "rbearing",
-       or "descent".  We do have the font's overall "descent", though.
-
-       drawAtPoint (to an offscreen CGContext) returns "width" and the
-       "ascent" of the font (not of the glyph, I think) so that doesn't
-       help.
+    /* There is no way to get "lbearing", "rbearing" or "descent" out of
+       NSFont.  'sizeWithFont' gives us "width" and "height" only.
+       Likewise, 'drawAtPoint' (to an offscreen CGContext) gives us the
+       width of the character and the ascent of the font.
 
-       CGFontGetGlyphBBoxes might help (if it actually returns a bounding
-       box and not just the ascent/width again, which I don't know) but
-       we can't use it anyway because there is no way to map a unichar to
-       a CGGlyph.
-
-       Fuck you sideways, Apple.
+       Maybe we could use CGFontGetGlyphBBoxes() and avoid linking in
+       the CoreText library, but there's no non-CoreText way to turn a
+       unichar into a CGGlyph.
      */
-
-    bbox.origin.x = 0;
-    bbox.origin.y = [ff descender];
-    bbox.size.width  = size.width;
-    bbox.size.height = size.height;
-
-    advancement.x = size.width;
-    advancement.y = 0;
-
+    UniChar uchar = [nsstr characterAtIndex: 0];
+    CGGlyph cgglyph = 0;
+
+    if (CTFontGetGlyphsForCharacters (ctfont, &uchar, &cgglyph, 1))
+      {
+        bbox = CTFontGetBoundingRectsForGlyphs (ctfont,
+                                                kCTFontDefaultOrientation,
+                                                &cgglyph, NULL, 1);
+        CGSize adv = { 0, };
+        CTFontGetAdvancesForGlyphs (ctfont, kCTFontDefaultOrientation,
+                                    &cgglyph, &adv, 1);
+        advancement.x = adv.width;
+        advancement.y = adv.height;
+
+        // Seems to be clipping by a pixel or two.  Add a margin to be safe.
+        bbox.origin.x    -= 2;
+        bbox.origin.y    -= 2;
+        bbox.size.width  += 4;
+        bbox.size.height += 4;
+      }
 # endif // USE_IPHONE
 
     /* Now that we know the advancement and bounding box, we can compute
@@ -2304,6 +2338,10 @@ query_font (Font fid)
             (int) advancement.x, (int) advancement.y);
 #endif
   }
+
+# ifdef USE_IPHONE
+  CFRelease (ctfont);
+# endif
 }
 
 
@@ -2651,7 +2689,8 @@ XLoadFont (Display *dpy, const char *name)
 
   // We should never return NULL for XLFD fonts.
   if (!fid->nsfont) {
-    abort();
+    Assert (0, "no font");
+    return 0;
   }
   CFRetain (fid->nsfont);   // needed for garbage collection?
 
index 9dc5001cd6169e26afe91f168d05e62004115767..8de3a09cae63cd646fcb5d6f324444bc5d6b4c43 100644 (file)
@@ -253,7 +253,7 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
        /* What a hack!
 
            On iOS, our application delegate, SaverRunner, grabs an image
-           of itself as a UIImage before creating the XScreenSaverView.
+           of itself as a UIImage before mapping the XScreenSaverView.
            In this code, we ask SaverRunner for that UIImage, then copy
            it to the root window.
          */
@@ -262,18 +262,12 @@ Bool
 osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
                         XRectangle *geom_ret)
 {
-
-  /* Just for a little variety, let's return colorbars every other time. */
-  static int counter = 0;
-  if (counter++ & 1)
-    return False;
-
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s)
     return False;
   if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+    return False;
   UIImage *img = [s screenshot];
   if (! img)
     return False;
@@ -444,16 +438,7 @@ osx_load_image_file (Screen *screen, Window xwindow, Drawable drawable,
 
 # else  /* USE_IPHONE */
 
-  /* It would be nice to select a random image from the Photo Album and
-     load that, but that looks like a gigantic pain in the ass, because
-     it's an asynchronous API, and might require manual authorization
-     by the user.  (ALAssetsLibrary, enumerateGroupsWithTypes.)
-
-     Possibly useful sample code to check out:
-       http://www.fiveminutes.eu/accessing-photo-library-using-assets-library-framework-on-iphone/
-
-     So, in the meantime, return False, acquire colorbars.
-   */
+  /* This is handled differently: see grabclient.c and iosgrabimage.m. */
   return False;
 
 # endif /* USE_IPHONE */
diff --git a/README b/README
index dfc9e3888dea302eab7b46e58afc2f6440fc9fc0..48860ab40771726655436e4b57839605d642353c 100644 (file)
--- a/README
+++ b/README
@@ -38,6 +38,16 @@ XScreenSaver has an extensive manual -- please read it!
 
 ===============================================================================
 
+Changes since 5.17:   * iOS responds to shake gestures to randomize.
+                      * iOS can load images from your Photo Library.
+                      * iOS has clickable Wikipedia links in Settings panels.
+                      * Made `pipes' be ridiculously less efficient, but spin.
+                      * Added better mouse control to `rubik', `cube21',
+                        `crackberg', and `julia'.
+                      * Cosmetic improvements to `queens' and `endgame'.
+                      * `sonar' can now ping local subnet on DHCP.
+                      * Most savers now resize/rotate properly.
+                      * Various fixes.
 Changes since 5.16:   * More iOS tweaks.
                       * Fixed some compilation problems.
                       * Enlarged the texture image for `lament'.
index 0905154df62e9f485af9546cbb50dfbe196afbf4..c11d0e630af0d7e52fed913b8509533eae8d0ad0 100644 (file)
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
+/* Define this if you have the getifaddrs() function. */
+#undef HAVE_GETIFADDRS
+
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
index 70097080f79b424d83e30fb58a7a4f23c3f1cbc9..04b0328012e8688cc337e44ff9e817125f0dbfe6 100755 (executable)
--- a/configure
+++ b/configure
@@ -2213,6 +2213,9 @@ echo "command line was: $0 $@"
 
 
 
+
+
+
 
 
 
@@ -2377,6 +2380,7 @@ fi
 
 
 
+
 ###############################################################################
 #
 #       Some utility functions to make checking for X things easier.
@@ -6243,6 +6247,68 @@ $as_echo "$ac_cv_have_icmphdr" >&6; }
 _ACEOF
 
  fi
+{ $as_echo "$as_me:$LINENO: checking for getifaddrs" >&5
+$as_echo_n "checking for getifaddrs... " >&6; }
+if test "${ac_cv_have_getifaddrs+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+                   #include <unistd.h>
+                   #include <arpa/inet.h>
+                   #include <ifaddrs.h>
+int
+main ()
+{
+struct ifaddrs *ifa;
+                   getifaddrs (&ifa);
+                   ifa->ifa_next = 0;
+                   ifa->ifa_addr->sa_family = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -rf conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -rf conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_getifaddrs=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_getifaddrs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_getifaddrs" >&5
+$as_echo "$ac_cv_have_getifaddrs" >&6; }
+ if test "$ac_cv_have_getifaddrs" = yes ; then
+   cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETIFADDRS 1
+_ACEOF
+
+ fi
 
 
 for ac_header in crypt.h sys/select.h
@@ -17409,7 +17475,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 17416 "configure"
+#line 17482 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
index 85703d44c58b8a817cdce1ad5d0b48343ea8deb4..11ba5c19356a656d33f1b82f0dff7f34037a037b 100644 (file)
@@ -299,6 +299,9 @@ AH_TEMPLATE([HAVE_ICMPHDR],
            [Define this if you do pings with a `struct icmphdr' and an
             `un.echo.id' slot.])
 
+AH_TEMPLATE([HAVE_GETIFADDRS],
+           [Define this if you have the getifaddrs() function.])
+
 AH_TEMPLATE([HAVE_FORKPTY],
            [Define this if you have the 'forkpty' function:
             This allows 'phosphor' and 'apple2' to run curses-based
@@ -973,6 +976,21 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
     ;;
   esac])
 
+AC_DEFUN(AC_CHECK_GETIFADDRS,
+ [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs,
+  [AC_TRY_COMPILE([#include <stdlib.h>
+                   #include <unistd.h>
+                   #include <arpa/inet.h>
+                   #include <ifaddrs.h>],
+                  [struct ifaddrs *ifa;
+                   getifaddrs (&ifa);
+                   ifa->ifa_next = 0;
+                   ifa->ifa_addr->sa_family = 0;],
+                  [ac_cv_have_getifaddrs=yes],
+                  [ac_cv_have_getifaddrs=no])])
+ if test "$ac_cv_have_getifaddrs" = yes ; then
+   AC_DEFINE(HAVE_GETIFADDRS)
+ fi])
 
 
 ###############################################################################
@@ -1171,6 +1189,7 @@ AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
 AC_CHECK_FUNCS(setlocale)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
+AC_CHECK_GETIFADDRS
 AC_CHECK_HEADERS(crypt.h sys/select.h)
 AC_PROG_PERL
 
index ccf98ea25157f4c1b8855665ce8bd22a24f42330..e071dac52690508e78f4eafe563f647061779ca4 100644 (file)
@@ -673,11 +673,13 @@ update_ad_version::
   files="XScreenSaver.ad.in ../hacks/config/README ../OSX/bindist.rtf" ;    \
   U=$(UTILS_SRC)/version.h ;                                               \
   V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' < $$U` ;              \
+  Y=`date '+%Y'` ;                                                         \
   D=`date '+%d-%b-%Y'` ;                                                   \
   for S in $$files ; do                                                            \
     T=/tmp/xs.$$$$ ;                                                       \
     sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9]*[ab]*[0-9]*\(.*\)/\1$$V\2/"  \
         -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9]*\)/$$D/"        \
+        -e "s/\( [0-9][0-9][0-9][0-9]-\)[0-9][0-9][0-9][0-9] /\1$$Y /"     \
       < $$S > $$T ;                                                        \
     if cmp -s $$S $$T ; then                                               \
       true ;                                                               \
index 29517ceb066270318399896da7b091537d329b62..bdfc2dc28db147e534514e07fee10b97c330a7fb 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 5.17
-!                              22-Jun-2012
+!                              version 5.18
+!                              03-Jul-2012
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
@@ -415,7 +415,7 @@ XScreenSaver.bourneShell:           /bin/sh
 *passwd.uname:                  True
 
 *splash.heading.label:         XScreenSaver %s
-*splash.body.label:            Copyright Â© 1991-2010 by
+*splash.body.label:            Copyright Â© 1991-2012 by
 *splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
 *splash.demo.label:            Settings
 *splash.help.label:            Help
index 824da10b29b7653fca6b5e1fa19ccbde7905298d..d916213599470c9cff480c27d93f0650e7ba8784 100644 (file)
 "*passwd.asterisks:              True",
 "*passwd.uname:                  True",
 "*splash.heading.label:                XScreenSaver %s",
-"*splash.body.label:           Copyright Â© 1991-2010 by",
+"*splash.body.label:           Copyright Â© 1991-2012 by",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
 "*splash.demo.label:           Settings",
 "*splash.help.label:           Help",
index fb621cdef69fd39b243a27f02a4276a3eb4b3e8c..2a8f163ec6522da4bde3bb3e5e72d25ae5c611f0 100644 (file)
@@ -1,5 +1,5 @@
 /* subprocs.c --- choosing, spawning, and killing screenhacks.
- * xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -484,6 +484,7 @@ static RETSIGTYPE
 sigchld_handler (int sig)
 {
   saver_info *si = global_si_kludge;   /* I hate C so much... */
+  in_signal_handler_p++;
 
   if (si->prefs.debug_p)
     {
@@ -510,6 +511,7 @@ sigchld_handler (int sig)
     }
 
   init_sigchld();
+  in_signal_handler_p--;
 }
 #endif /* SIGCHLD */
 
index 95f6b2b1f98d669ecc8d8880187eceff1660103d..ed5bf3032fbc7e86b1c477c304ae22dc23491b7f 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2011 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -299,14 +299,28 @@ xscreensaver %s, copyright (c) 1991-2008 by Jamie Zawinski <jwz@jwz.org>\n\
 }
 
 
+Bool in_signal_handler_p = 0;  /* I hate C so much... */
+
 char *
 timestring (void)
 {
-  time_t now = time ((time_t *) 0);
-  char *str = (char *) ctime (&now);
-  char *nl = (char *) strchr (str, '\n');
-  if (nl) *nl = 0; /* take off that dang newline */
-  return str;
+  if (in_signal_handler_p)
+    {
+      /* Turns out that ctime() and even localtime_r() call malloc() on Linux!
+         So we can't call them from inside SIGCHLD.  WTF.
+       */
+      static char buf[30];
+      strcpy (buf, "... ... ..   signal ....");
+      return buf;
+    }
+  else
+    {
+      time_t now = time ((time_t *) 0);
+      char *str = (char *) ctime (&now);
+      char *nl = (char *) strchr (str, '\n');
+      if (nl) *nl = 0; /* take off that dang newline */
+      return str;
+    }
 }
 
 static Bool blurb_timestamp_p = True;   /* kludge */
index 26d9fcd37babf1e8fd2b98bf503767dc7dd239b9..98aa4450d6036f7d6bbaa8046850688ef4fc4e5d 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993-2011 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -189,6 +189,7 @@ extern void restart_process (saver_info *si);
 extern int saver_ehandler (Display *dpy, XErrorEvent *error);
 extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error);
 extern Bool window_exists_p (Display *dpy, Window window);
+extern Bool in_signal_handler_p;
 extern char *timestring (void);
 extern Bool display_is_on_console_p (saver_info *si);
 extern Visual *get_best_gl_visual (saver_info *si, Screen *screen);
index 0d6c8000f26901cb3c26e7ab93ba6f8fb7640295..da0c9c467c151223e933ca01a42d78c22d56747a 100644 (file)
@@ -1078,6 +1078,7 @@ apple2.o: $(UTILS_SRC)/visual.h
 apple2.o: $(UTILS_SRC)/xshm.h
 apple2.o: $(UTILS_SRC)/yarandom.h
 asm6502.o: $(srcdir)/asm6502.h
+asm6502.o: $(UTILS_SRC)/yarandom.h
 attraction.o: ../config.h
 attraction.o: $(srcdir)/fps.h
 attraction.o: $(srcdir)/screenhackI.h
index 9d7e968c74cf036e0fb5984e7342e63311be235c..647b7aab93180c8e8db6294e1e511fdaf4d252ef 100644 (file)
@@ -64,8 +64,6 @@
 #define WAVES                  6
 #define STRETCHES              8
 
-const double PI = 3.1415926535;
-
 struct lineStruct {
     unsigned int x, y, len, obj, color, ndol;
     int deo;
@@ -171,10 +169,10 @@ _wave(struct state *st, int x, int h, int l, int wave)
   l+=1; 
   switch(wave) {
     case 0:                                         /* cos wave*/
-      return((int)(cos((double)x*PI/l)*h));
+      return((int)(cos((double)x*M_PI/l)*h));
     case 1:                                      /* double wave*/
     case 2:                                      /* double wave*/
-      return((int)(cos((double)x*PI/l)*h)+(int)(sin((double)x*PI/l/st->cs1[1])*h));
+      return((int)(cos((double)x*M_PI/l)*h)+(int)(sin((double)x*M_PI/l/st->cs1[1])*h));
     case 3:                                         /* zig zag */
       return(abs((x%(l*2)-l))*h/l);
     case 4:                                   /* giant zig zag */
@@ -774,10 +772,10 @@ _pattern(struct state *st, int x, int y, int n)
       x+=_wave(st,st->gridy-y,st->gridy/(1+st->cs1[n]),st->gridy,0);
       break;
     case 4:                                           /* U curves */
-      x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
     case 5:
-      x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
   }
   switch(st->wsy[0]) {
@@ -794,10 +792,10 @@ _pattern(struct state *st, int x, int y, int n)
       y+=_wave(st,st->gridx-ox,st->gridx/(1+st->cs1[n]),st->gridx,0);
       break;
     case 4:                                         /* U curves */
-      y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
     case 5:
-      y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
   }
   switch(st->pattern[n]) {
index 0cf342ea4c1d4f27c9c5712ef89c583f64673026..f69e0967f1354a29cb592eae9b2f16c4651f7e11 100644 (file)
@@ -380,11 +380,20 @@ static void
 anemone_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
-  /* need to re-make pixmaps too...
   struct state *st = (struct state *) closure;
   st->scrWidth = w;
   st->scrHeight = h;
-  */
+#if 0
+  if (st->dbuf) {
+    XWindowAttributes wa;
+    XGetWindowAttributes(dpy, window, &wa);
+    if (st->ba) XFreePixmap (dpy, st->ba);
+    if (st->bb) XFreePixmap (dpy, st->bb);
+    st->ba = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth);
+    st->bb = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth);
+    st->b = st->ba;
+  }
+#endif
 }
 
 static Bool
index ab34e04abc67d1766ca5e5fba004e3c76cfd7133..be2e6ab4c6b7b340fca9a0f692dad1fc9f82ba71 100644 (file)
@@ -74,7 +74,6 @@ static const char sccsid[] = "@(#)apollonian.c        5.02 2001/07/01 xlockmore";
                                        "*fpsSolid: true   \n" \
 
 # define refresh_apollonian 0
-# define reshape_apollonian 0
 # define apollonian_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -822,6 +821,13 @@ draw_apollonian (ModeInfo * mi)
       }
 }
 
+ENTRYPOINT void
+reshape_apollonian(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_apollonian (mi);
+}
+
 ENTRYPOINT void
 release_apollonian (ModeInfo * mi)
 {
index facde4c0dbdf2bbadb2160030694256b7f62f460..0e1508ff1ad514e1a0ca064ab9f58df78634df81 100644 (file)
@@ -915,6 +915,9 @@ a2_vt100_printc (apple2_sim_t *sim, struct terminal_controller_data *state,
             }
           break;
         case 10: /* LF */
+# ifndef HAVE_FORKPTY
+          state->cursor_x = 0; /* No ptys on iPhone; assume CRLF. */
+# endif
         case 11: /* VT */
         case 12: /* FF */
           if (state->cursor_y < rows - 1)
index 3a8fe1a851a92afc3faff82806f66bd98543fbda..c3aa2a34ebe102916229f03dc6ead13c5601f0a5 100644 (file)
 #include <stdint.h>
 #include <unistd.h>
 
+#include "yarandom.h"
 #include "asm6502.h"
 
-#ifdef DEBUGGER
+/*#ifdef DEBUGGER
 #  define random rand
+#endif*/
+
+#ifndef USE_IPHONE
+# define READ_FILES
 #endif
 
 typedef enum{
@@ -68,7 +73,7 @@ typedef BOOL (*CharTest) (char);
 /*typedef void (*JumpFunc) (machine_6502* AddrMode);*/
 
 typedef struct {
-  AddrMode type;
+  m6502_AddrMode type;
   Bit32 value[MAX_PARAM_VALUE];
   unsigned int vp; /*value pointer, index into the value table.*/
   char *label;
@@ -259,7 +264,7 @@ static Bit8 nibble(Bit8 value, Side side){
 
 
 /* used for tracing. XXX: combined with function getvalue */
-static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit16 PC){
+static BOOL peekValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer, Bit16 PC){
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
@@ -324,7 +329,7 @@ static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit
 
 
 /* Figure out how to get the value from the addrmode and get it.*/
-static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){
+static BOOL getValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer){
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
@@ -385,7 +390,8 @@ static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){
 
 }
 
-static void dismem(machine_6502 *machine, AddrMode adm, char *output){
+#if 0
+static void dismem(machine_6502 *machine, m6502_AddrMode adm, char *output){
   Bit8 zp;
   Bit16 n;
   switch(adm){
@@ -442,6 +448,7 @@ static void dismem(machine_6502 *machine, AddrMode adm, char *output){
     break;
   }
 }
+#endif
 
 /* manZeroNeg - Manage the negative and zero flags */
 static void manZeroNeg(machine_6502 *machine, Bit8 value){
@@ -455,7 +462,7 @@ static void warnValue(BOOL isValue){
   }
 }
 
-static void jmpADC(machine_6502 *machine, AddrMode adm){
+static void jmpADC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit16 tmp;
   Bit8 c = bitOn(machine->regP, CARRY_FL);
@@ -506,7 +513,7 @@ static void jmpADC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpAND(machine_6502 *machine, AddrMode adm){
+static void jmpAND(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -514,7 +521,7 @@ static void jmpAND(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpASL(machine_6502 *machine, AddrMode adm){
+static void jmpASL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
@@ -533,7 +540,7 @@ static void jmpASL(machine_6502 *machine, AddrMode adm){
   
 }
 
-static void jmpBIT(machine_6502 *machine, AddrMode adm){
+static void jmpBIT(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -550,7 +557,7 @@ static void jumpBranch(machine_6502 *machine, Bit16 offset){
     machine->regPC = machine->regPC + offset;
 }
 
-static void jmpBPL(machine_6502 *machine, AddrMode adm){
+static void jmpBPL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -559,7 +566,7 @@ static void jmpBPL(machine_6502 *machine, AddrMode adm){
     
 }
 
-static void jmpBMI(machine_6502 *machine, AddrMode adm){
+static void jmpBMI(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -568,7 +575,7 @@ static void jmpBMI(machine_6502 *machine, AddrMode adm){
 
 }
 
-static void jmpBVC(machine_6502 *machine, AddrMode adm){
+static void jmpBVC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -576,7 +583,7 @@ static void jmpBVC(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBVS(machine_6502 *machine, AddrMode adm){
+static void jmpBVS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -584,7 +591,7 @@ static void jmpBVS(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBCC(machine_6502 *machine, AddrMode adm){
+static void jmpBCC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -592,7 +599,7 @@ static void jmpBCC(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBCS(machine_6502 *machine, AddrMode adm){
+static void jmpBCS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -600,7 +607,7 @@ static void jmpBCS(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBNE(machine_6502 *machine, AddrMode adm){
+static void jmpBNE(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -608,7 +615,7 @@ static void jmpBNE(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBEQ(machine_6502 *machine, AddrMode adm){
+static void jmpBEQ(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -621,28 +628,28 @@ static void doCompare(machine_6502 *machine, Bit16 reg, Pointer *ptr){
   manZeroNeg(machine,(reg - ptr->value));
 }
 
-static void jmpCMP(machine_6502 *machine, AddrMode adm){
+static void jmpCMP(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regA,&ptr);
 }
 
-static void jmpCPX(machine_6502 *machine, AddrMode adm){
+static void jmpCPX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regX,&ptr);
 }
 
-static void jmpCPY(machine_6502 *machine, AddrMode adm){
+static void jmpCPY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regY,&ptr);
 }
 
-static void jmpDEC(machine_6502 *machine, AddrMode adm){
+static void jmpDEC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -654,7 +661,7 @@ static void jmpDEC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,ptr.value);
 }
 
-static void jmpEOR(machine_6502 *machine, AddrMode adm){
+static void jmpEOR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -662,35 +669,35 @@ static void jmpEOR(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpCLC(machine_6502 *machine, AddrMode adm){
+static void jmpCLC(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, CARRY_FL, 0);
 }
 
-static void jmpSEC(machine_6502 *machine, AddrMode adm){
+static void jmpSEC(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, CARRY_FL, 1);
 }
 
-static void jmpCLI(machine_6502 *machine, AddrMode adm){
+static void jmpCLI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 0);
 }
 
-static void jmpSEI(machine_6502 *machine, AddrMode adm){
+static void jmpSEI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 1);
 }
 
-static void jmpCLV(machine_6502 *machine, AddrMode adm){
+static void jmpCLV(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, OVERFLOW_FL, 0);
 }
 
-static void jmpCLD(machine_6502 *machine, AddrMode adm){
+static void jmpCLD(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, DECIMAL_FL, 0);
 }
 
-static void jmpSED(machine_6502 *machine, AddrMode adm){
+static void jmpSED(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, DECIMAL_FL, 1);
 }
 
-static void jmpINC(machine_6502 *machine, AddrMode adm){
+static void jmpINC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -699,14 +706,14 @@ static void jmpINC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,ptr.value);
 }
 
-static void jmpJMP(machine_6502 *machine, AddrMode adm){
+static void jmpJMP(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   machine->regPC = ptr.addr;
 }
 
-static void jmpJSR(machine_6502 *machine, AddrMode adm){
+static void jmpJSR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   /* Move past the 2 byte parameter. JSR is always followed by
      absolute address. */
@@ -718,7 +725,7 @@ static void jmpJSR(machine_6502 *machine, AddrMode adm){
   machine->regPC = ptr.addr;  
 }
 
-static void jmpLDA(machine_6502 *machine, AddrMode adm){
+static void jmpLDA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -726,7 +733,7 @@ static void jmpLDA(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpLDX(machine_6502 *machine, AddrMode adm){
+static void jmpLDX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -734,7 +741,7 @@ static void jmpLDX(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpLDY(machine_6502 *machine, AddrMode adm){
+static void jmpLDY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -742,7 +749,7 @@ static void jmpLDY(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpLSR(machine_6502 *machine, AddrMode adm){
+static void jmpLSR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
@@ -764,11 +771,11 @@ static void jmpLSR(machine_6502 *machine, AddrMode adm){
   }
 }
 
-static void jmpNOP(machine_6502 *machine, AddrMode adm){
+static void jmpNOP(machine_6502 *machine, m6502_AddrMode adm){
   /* no operation */
 }
 
-static void jmpORA(machine_6502 *machine, AddrMode adm){
+static void jmpORA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -776,17 +783,17 @@ static void jmpORA(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpTAX(machine_6502 *machine, AddrMode adm){
+static void jmpTAX(machine_6502 *machine, m6502_AddrMode adm){
   machine->regX = machine->regA;
   manZeroNeg(machine,machine->regX);
 }
 
-static void jmpTXA(machine_6502 *machine, AddrMode adm){
+static void jmpTXA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = machine->regX;
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpDEX(machine_6502 *machine, AddrMode adm){
+static void jmpDEX(machine_6502 *machine, m6502_AddrMode adm){
   if (machine->regX > 0)
     machine->regX--;
   else
@@ -794,23 +801,23 @@ static void jmpDEX(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpINX(machine_6502 *machine, AddrMode adm){
+static void jmpINX(machine_6502 *machine, m6502_AddrMode adm){
   Bit16 value = machine->regX + 1;
   machine->regX = value & 0xFF;
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpTAY(machine_6502 *machine, AddrMode adm){
+static void jmpTAY(machine_6502 *machine, m6502_AddrMode adm){
   machine->regY = machine->regA;
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpTYA(machine_6502 *machine, AddrMode adm){
+static void jmpTYA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = machine->regY;
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpDEY(machine_6502 *machine, AddrMode adm){
+static void jmpDEY(machine_6502 *machine, m6502_AddrMode adm){
   if (machine->regY > 0)
     machine->regY--;
   else
@@ -818,13 +825,13 @@ static void jmpDEY(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpINY(machine_6502 *machine, AddrMode adm){
+static void jmpINY(machine_6502 *machine, m6502_AddrMode adm){
   Bit16 value = machine->regY + 1;
   machine->regY = value & 0xff;
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpROR(machine_6502 *machine, AddrMode adm){
+static void jmpROR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
@@ -849,7 +856,7 @@ static void jmpROR(machine_6502 *machine, AddrMode adm){
   }
 }
 
-static void jmpROL(machine_6502 *machine, AddrMode adm){
+static void jmpROL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
@@ -874,12 +881,12 @@ static void jmpROL(machine_6502 *machine, AddrMode adm){
   }
 }
 
-static void jmpRTI(machine_6502 *machine, AddrMode adm){
+static void jmpRTI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = stackPop(machine);
   machine->regPC = stackPop(machine);
 }
 
-static void jmpRTS(machine_6502 *machine, AddrMode adm){
+static void jmpRTS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   Bit16 nr = stackPop(machine);
@@ -888,7 +895,7 @@ static void jmpRTS(machine_6502 *machine, AddrMode adm){
   machine->regPC = (nl << 8) | nr;
 }
 
-static void jmpSBC(machine_6502 *machine, AddrMode adm){
+static void jmpSBC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   /*Bit8 vflag;*/
   Bit8 c = bitOn(machine->regP, CARRY_FL);
@@ -944,48 +951,48 @@ static void jmpSBC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpSTA(machine_6502 *machine, AddrMode adm){
+static void jmpSTA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regA);
 }
 
-static void jmpTXS(machine_6502 *machine, AddrMode adm){
+static void jmpTXS(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine,machine->regX);
 }
 
-static void jmpTSX(machine_6502 *machine, AddrMode adm){
+static void jmpTSX(machine_6502 *machine, m6502_AddrMode adm){
   machine->regX = stackPop(machine);
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpPHA(machine_6502 *machine, AddrMode adm){
+static void jmpPHA(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine, machine->regA);
 }
 
-static void jmpPLA(machine_6502 *machine, AddrMode adm){
+static void jmpPLA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = stackPop(machine);
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpPHP(machine_6502 *machine, AddrMode adm){
+static void jmpPHP(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine,machine->regP);
 }
 
-static void jmpPLP(machine_6502 *machine, AddrMode adm){
+static void jmpPLP(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = stackPop(machine);
   machine->regP = setBit(machine->regP, FUTURE_FL, 1);
 }
 
-static void jmpSTX(machine_6502 *machine, AddrMode adm){
+static void jmpSTX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regX);
 }
 
-static void jmpSTY(machine_6502 *machine, AddrMode adm){
+static void jmpSTY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -995,7 +1002,7 @@ static void jmpSTY(machine_6502 *machine, AddrMode adm){
 \f
 
 /* OPCODES */
-static void assignOpCodes(Opcodes *opcodes){
+static void assignOpCodes(m6502_Opcodes *opcodes){
 
  #define SETOP(num, _name, _Imm, _ZP, _ZPX, _ZPY, _ABS, _ABSX, _ABSY, _INDX, _INDY, _SNGL, _BRA, _func) \
 {opcodes[num].name[3] = '\0'; \
@@ -1117,7 +1124,7 @@ static void buildIndexCache(machine_6502 *machine){
 /* opIndex() - Search the opcode table for a match. If found return
    the index into the optable and the address mode of the opcode. If
    the opcode is not found then return -1. */
-static int opIndex(machine_6502 *machine, Bit8 opcode, AddrMode *adm){ 
+static int opIndex(machine_6502 *machine, Bit8 opcode, m6502_AddrMode *adm){ 
   /* XXX could catch errors by setting a addressmode of error or something */
   *adm = machine->opcache[opcode].adm;
   return machine->opcache[opcode].index;
@@ -1663,6 +1670,7 @@ static AsmLine *parseAssembly(machine_6502 *machine, BOOL *codeOk, const char *c
   return listp;
 }
     
+#ifdef READ_FILES
 /* fileToBuffer() - Allocates a buffer and loads all of the file into memory. */
 static char *fileToBuffer(const char *filename){
   const int defaultSize = 1024;
@@ -1695,6 +1703,7 @@ static char *fileToBuffer(const char *filename){
   buffer[i+1] = '\0';
   return buffer;
 }
+#endif
 
 \f
 /* Routines */
@@ -1724,7 +1733,7 @@ static void reset(machine_6502 *machine){
 }
 
 /* hexDump() - Dump the memory to output */
-void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
+void m6502_hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
   Bit32 address;
   Bit32 i;
   for( i = 0; i < numbytes; i++){
@@ -1756,7 +1765,7 @@ void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
 /*   fclose(ofp); */
 /* } */
 
-static BOOL translate(Opcodes *op,Param *param, machine_6502 *machine){
+static BOOL translate(m6502_Opcodes *op,Param *param, machine_6502 *machine){
    switch(param->type){
     case SINGLE:
       if (op->SNGL)
@@ -1940,7 +1949,7 @@ static BOOL compileLine(AsmLine *asmline, void *args){
   else{
     int i;
     char *command = asmline->command;
-    Opcodes op;
+    m6502_Opcodes op;
     for(i = 0; i < NUM_OPCODES; i++){
       if (strcmp(machine->opcodes[i].name, command) == 0){
        op = machine->opcodes[i];
@@ -2069,7 +2078,7 @@ static BOOL compileCode(machine_6502 *machine, const char *code){
 
 static void execute(machine_6502 *machine){
   Bit8 opcode;
-  AddrMode adm;
+  m6502_AddrMode adm;
   int opidx;
 
   if(!machine->codeRunning) return;
@@ -2090,7 +2099,7 @@ static void execute(machine_6502 *machine){
   }
 }
 
-machine_6502 *build6502(){
+machine_6502 *m6502_build(void){
   machine_6502 *machine;
   machine = ecalloc(1, sizeof(machine_6502));
   assignOpCodes(machine->opcodes);
@@ -2099,14 +2108,14 @@ machine_6502 *build6502(){
   return machine;
 }
 
-void destroy6502(machine_6502 *machine){
+void m6502_destroy6502(machine_6502 *machine){
   free(machine);
   machine = NULL;
 }
 
-void trace(machine_6502 *machine, FILE *output){
+void m6502_trace(machine_6502 *machine, FILE *output){
   Bit8 opcode = memReadByte(machine,machine->regPC);
-  AddrMode adm;
+  m6502_AddrMode adm;
   Pointer ptr;
   int opidx = opIndex(machine,opcode,&adm);
   int stacksz = STACK_TOP - machine->regSP;
@@ -2132,15 +2141,16 @@ void trace(machine_6502 *machine, FILE *output){
       fprintf(output,"\n");
   }
   fprintf(output,"STACK:");
-  hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output);
+  m6502_hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output);
 }
 
+#if 0
 void disassemble(machine_6502 *machine, FILE *output){
   /* Read the opcode
      increment the program counter
      print the opcode
      loop until end of program. */
-  AddrMode adm;
+  m6502_AddrMode adm;
   Bit16 addr;
   Bit8 opcode;
   int opidx;
@@ -2161,9 +2171,11 @@ void disassemble(machine_6502 *machine, FILE *output){
   free(mem);
   machine->regPC = opc;
 }
+#endif
 
 \f
-void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){
+#ifdef READ_FILES
+void m6502_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){
   char *code = NULL;
 
   machine->plot = plot;
@@ -2186,7 +2198,7 @@ void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *
   }while(machine->codeRunning);
 }
 
-void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){
+void m6502_start_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){
   char *code = NULL;
   reset(machine);
 
@@ -2203,9 +2215,10 @@ void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot,
   machine->codeRunning = TRUE;
   execute(machine);
 }
+#endif /* READ_FILES */
 
-void start_eval_string(machine_6502 *machine, const char *code,
-                      Plotter plot, void *plotterState){
+void m6502_start_eval_string(machine_6502 *machine, const char *code,
+                      m6502_Plotter plot, void *plotterState){
   reset(machine);
 
   machine->plot = plot;
@@ -2239,7 +2252,7 @@ void start_eval_string(machine_6502 *machine, const char *code,
 /*   execute(machine); */
 /* } */
 
-void next_eval(machine_6502 *machine, int insno){
+void m6502_next_eval(machine_6502 *machine, int insno){
   int i = 0;
   for (i = 1; i < insno; i++){
     if (machine->codeRunning){
index 6f64d218ae4811eb0bb277dda58e3fdb16141b88..79b13a2b0144b0c9e1337370b3591358ec989a3c 100644 (file)
@@ -56,7 +56,7 @@ typedef enum{
     ZERO, ZERO_X, ZERO_Y,
     ABS_VALUE, ABS_OR_BRANCH, ABS_X, ABS_Y,
     ABS_LABEL_X, ABS_LABEL_Y, DCB_PARAM
-} AddrMode;
+} m6502_AddrMode;
 
 typedef struct machine_6502 machine_6502;
 
@@ -73,14 +73,14 @@ typedef struct {
   Bit8 INDY;
   Bit8 SNGL;
   Bit8 BRA;
-  void (*func) (machine_6502*, AddrMode);
-} Opcodes;
+  void (*func) (machine_6502*, m6502_AddrMode);
+} m6502_Opcodes;
 
 /* Used to cache the index of each opcode */
 typedef struct {
   Bit8 index;
-  AddrMode adm;
-} OpcodeIndex;
+  m6502_AddrMode adm;
+} m6502_OpcodeIndex;
 
 /* Plotter is a function that will be called everytime a pixel
    needs to be updated. The first two parameter are the x and y
@@ -108,7 +108,7 @@ typedef struct {
    parameter. You can use this parameter to store state information.
 
 */
-typedef void (*Plotter) (Bit8, Bit8, Bit8, void*);
+typedef void (*m6502_Plotter) (Bit8, Bit8, Bit8, void*);
 
 struct machine_6502 {
   BOOL codeCompiledOK;
@@ -124,54 +124,54 @@ struct machine_6502 {
   int labelPtr;
   BOOL codeRunning;
   int myInterval;
-  Opcodes opcodes[NUM_OPCODES];
+  m6502_Opcodes opcodes[NUM_OPCODES];
   int screen[32][32];
   int codeLen;
-  OpcodeIndex opcache[0xff];
-  Plotter plot;
+  m6502_OpcodeIndex opcache[0xff];
+  m6502_Plotter plot;
   void *plotterState;
 };
 
 /* build6502() - Creates an instance of the 6502 machine */
-machine_6502 *build6502(void);
+machine_6502 *m6502_build(void);
 
 /* destroy6502() - compile the file and exectue it until the program
    is finished */
-void destroy6502(machine_6502 *machine);
+void m6502_destroy6502(machine_6502 *machine);
 
 /* eval_file() - Compiles and runs a file until the program is
    finished */
-void eval_file(machine_6502 *machine, const char *filename, 
-              Plotter plot, void *plotterState);
+void m6502_eval_file(machine_6502 *machine, const char *filename, 
+              m6502_Plotter plot, void *plotterState);
 
 /* start_eval_file() - Compile the file and execute the first
    instruction */
-void start_eval_file(machine_6502 *machine, const char *filename, 
-                    Plotter plot, void *plotterState);
+void m6502_start_eval_file(machine_6502 *machine, const char *filename, 
+                    m6502_Plotter plot, void *plotterState);
 
 /* XXX
-void start_eval_binary(machine_6502 *machine, Bit8 *program,
+void m6502_start_eval_binary(machine_6502 *machine, Bit8 *program,
                       unsigned int proglen,
                       Plotter plot, void *plotterState);
 */
 
-void start_eval_string(machine_6502 *machine, const char *code,
-                      Plotter plot, void *plotterState);
+void m6502_start_eval_string(machine_6502 *machine, const char *code,
+                      m6502_Plotter plot, void *plotterState);
 
 /* next_eval() - Execute the next insno of machine instructions */
-void next_eval(machine_6502 *machine, int insno);
+void m6502_next_eval(machine_6502 *machine, int insno);
 
 /* hexDump() - Dumps memory to output */
-void hexDump(machine_6502 *machine, Bit16 start, 
+void m6502_hexDump(machine_6502 *machine, Bit16 start, 
             Bit16 numbytes, FILE *output);
 
 /* Disassemble() - Prints the assembly code for the program currently
    loaded in memory.*/
-void disassemble(machine_6502 *machine, FILE *output);
+void m6502_disassemble(machine_6502 *machine, FILE *output);
 
 /* trace() - Prints to output the current value of registers, the
    current nmemonic, memory address and value. */
-void trace(machine_6502 *machine, FILE *output);
+void m6502_trace(machine_6502 *machine, FILE *output);
 
 /* save_program() - Writes a binary file of the program loaded in
    memory. */
index 7e15d0d4b01622348a533abc5f70156a50068e47..d6592163f496492db7f104570cbcf0b2bf47bcbf 100644 (file)
@@ -1898,6 +1898,9 @@ static void
 barcode_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->windowWidth = w;
+  st->windowHeight = h;
 }
 
 static void
index 15bf2278441b01174e98bbb352c5f0cced89104d..081ba4851c57dc286b35fd16bce13c3a0e2c91ad 100644 (file)
@@ -87,7 +87,6 @@ static const char sccsid[] = "@(#)bouboule.c  4.00 97/01/01 xlockmore";
                                        "*fpsSolid:             true    \n"
 
 # define SMOOTH_COLORS
-# define reshape_bouboule 0
 # define bouboule_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -838,6 +837,24 @@ release_bouboule(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_bouboule(ModeInfo * mi, int width, int height)
+{
+       StarField  *sp = &starfield[MI_SCREEN(mi)];
+       sp->width  = width;
+       sp->height = height;
+    sininit(&sp->x,
+        sp->x.alpha, sp->x.step,
+        ((double) sp->width) / 4.0,
+        3.0 * ((double) sp->width) / 4.0,
+        POSCANRAND);
+    sininit(&sp->y,
+        sp->y.alpha, sp->y.step,
+        ((double) sp->height) / 4.0,
+        3.0 * ((double) sp->height) / 4.0,
+        POSCANRAND);
+}
+
 ENTRYPOINT void
 refresh_bouboule(ModeInfo * mi)
 {
index 20eeed8ab66a858d42520f3ddb816f8fa7578964..9ba52c1489275ea9c29b168cfc02705041b7f574 100644 (file)
@@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)braid.c     5.00 2000/11/01 xlockmore";
                                   "*fpsSolid: true \n" \
 
 # define UNIFORM_COLORS
-# define reshape_braid 0
 # define braid_handle_event 0
 # include "xlockmore.h"
 # include "erase.h"
@@ -447,6 +446,13 @@ draw_braid(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_braid(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_braid (mi);
+}
+
 ENTRYPOINT void
 release_braid(ModeInfo * mi)
 {
index 5bfc225b1653b3a7f7e33f3b280ba614cc731cb2..ce2e496916d38eae5328a860a4702f67cf7b8a60 100644 (file)
@@ -2452,7 +2452,7 @@ hppa_linux (Display *dpy, Window window)
      { -1, "Soft power switch enabled, polling @ 0xf0400804.\n" },
      { -1, "pty: 256 Unix98 ptys configured\n" },
      { -1, "Generic RTC Driver v1.07\n" },
-     { -1, "Serial: 8250/16550 driver $Revision: 1.96 $ 13 ports, "
+     { -1, "Serial: 8250/16550 driver $Revision: 1.97 $ 13 ports, "
            "IRQ sharing disabled\n" },
      { -1, "ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A\n" },
      { -1, "ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A\n" },
@@ -3922,6 +3922,8 @@ bsod_event (Display *dpy, Window window, void *closure, XEvent *event)
   /* pick a new mode and restart when mouse clicked, or certain keys typed. */
 
   if (event->type == ButtonPress)
+    return True;
+  else if (event->type == ButtonRelease)
     reset_p = True;
   else if (event->type == KeyPress)
     {
index 9e7e2de3ca53e197a0c03958a2cd5beb1e5624c2..6f547bea4f51ed2b46849d14e64455081a86364a 100644 (file)
@@ -813,6 +813,14 @@ static void
 ccurve_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XWindowAttributes xgwa;
+  st->width = w;
+  st->height = h;
+  XGetWindowAttributes (st->dpy, st->window, &xgwa);
+  XFreePixmap (dpy, st->pixmap);
+  st->pixmap = XCreatePixmap (st->dpy, st->window, st->width, st->height,
+                              xgwa.depth);
 }
 
 static Bool
index 231d8f7bed8551d853693a5c9c7ef0023b015407..165af0891d25615082b53f564a2b39be40f55974 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright Â© 2008-2011 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2008-2012 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -19,7 +19,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
+my $version = q{ $Revision: 1.5 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
 
 my $verbose = 0;
 
@@ -32,6 +32,12 @@ $xlockmore_default_opts .=
  "{\"-wireframe\", \".wireframe\", XrmoptionNoArg, \"true\"},\n" .
  "{\"-3d\", \".use3d\", XrmoptionNoArg, \"true\"},\n";
 
+my $analogtv_default_opts = '';
+foreach (qw(color tint brightness contrast)) {
+  $analogtv_default_opts .= "{\"-tv-$_\", \".TV$_\", XrmoptionSepArg, 0},\n";
+}
+
+
 
 # Returns two tables:
 # - A table of the default resource values.
@@ -56,12 +62,13 @@ sub parse_src($) {
   close IN;
   $file =~ s@^.*/@@;
 
+  my $xlockmore_p = 0;
+  my $analogtv_p = ($body =~ m/ANALOGTV_DEFAULTS/);
+
   $body =~ s@/\*.*?\*/@@gs;
   $body =~ s@^#\s*(if|ifdef|ifndef|elif|else|endif).*$@@gm;
   $body =~ s/ANALOGTV_(DEFAULTS|OPTIONS)//gs;
 
-  my $xlockmore_p = 0;
-
   print STDERR "$progname: $file: defaults:\n" if ($verbose > 2);
   my %res_to_val;
   if ($body =~ m/_defaults\s*\[\]\s*=\s*{(.*?)}\s*;/s) {
@@ -116,9 +123,11 @@ sub parse_src($) {
   $switch_to_res{-fps}  = 'doFPS: true';
 
   my ($ign, $opts) = ($body =~ m/(_options|\bopts)\s*\[\]\s*=\s*{(.*?)}\s*;/s);
-  if  ($xlockmore_p || $opts) {
+  if  ($xlockmore_p || $analogtv_p || $opts) {
     $opts = '' unless $opts;
     $opts .= ",\n$xlockmore_default_opts" if ($xlockmore_p);
+    $opts .= ",\n$analogtv_default_opts" if ($analogtv_p);
+
     foreach (split (/,\s*\n/, $opts)) {
       s/^\s*//s;
       s/\s*$//s;
@@ -277,7 +286,10 @@ sub check_config($) {
     error ("$saver: unparsable xml claim: $_") unless $compare;
 
     my $sval = $src_opts->{$res};
-    if (!defined($sval)) {
+    if ($res =~ m/^TV/) {
+      print STDERR "$progname: $saver: OK: skipping \"$res\"\n"
+        if ($verbose > 1);
+    } elsif (!defined($sval)) {
       print STDERR "$progname: $saver: $res: not in source\n";
     } elsif ($compare eq '!='
              ? $sval eq $xval
index 5b9ba4990ec51febf325ae04183ec366d5bc14cf..415e7c0a499d2e69a6075386d9651d3ecc4a94d9 100644 (file)
@@ -933,6 +933,11 @@ static void
 compass_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  st->size2 = MIN(st->xgwa.width, st->xgwa.height);
+  st->x = st->xgwa.width/2;
+  st->y = st->xgwa.height/2;
 }
 
 static Bool
index 393addefcd01f122c4a11b387fcf30ba1dcb89a6..d1a1815a610a88465cacd80bc12a848105dde2f8 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 5.17
-                               22-Jun-2012
+                              version 5.18
+                               03-Jul-2012
 
                      http://www.jwz.org/xscreensaver/
 
index 409fa39b31fba7b9be7f1a70bdff115c9fa34a32..368d24a158ea3c14475ce87616ac8c1015dd48cf 100644 (file)
@@ -14,8 +14,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Draws an ant (with a headlight) who walks on top of an
-image of your desktop or other image.  
+Draws an ant (with a headlight) who walks around on top of a loaded image.
 
 Written by Blair Tennessy; 2003.
   </_description>
index 19a1340a0386f2a250d107e0bf6bcb2d50675076..a7d35bf94ed9a807382d0221cfc1ebea3c8ed48e 100644 (file)
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Packs the screen with growing squares or circles, colored according to a
-horizontal or vertical gradient, or according to the colors of the
-desktop or a loaded image file.  The objects grow until they touch,
-then stop.  When the screen is full, they shrink away and the process
-restarts.
+Packs the screen with growing squares or circles, colored according to
+a horizontal or vertical gradient, or according to the colors of a
+loaded image.  The objects grow until they touch, then stop.  When the
+screen is full, they shrink away and the process restarts.
 
 Written by Jamie Zawinski; 2005.
   </_description>
index dc0c0f625c0fe70e6a958ebe0e2395d93227caf1..5c49021cd32729eb184a76624d7402ba486cebd3 100644 (file)
@@ -25,8 +25,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-A spotlight roams across an embossed version of your desktop or
-other picture.
+A spotlight roams across an embossed version of a loaded image.
 
 Written by Shane Smit; 1999.
   </_description>
index 3694be5383d40bb7cb65fd70607ba6480bdfc76e..9942905e7df78769163f955b9a550e36cfd9b7a8 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<screensaver name="DNAlogo" _label="DNA Logo">
+<screensaver name="DNAlogo" _label="DNA Logo" gl="yes">
 
   <command arg="-root"/>
 
index 4d5ec3d04df51fd878d035bca16c152261882006..662f8ff233fd1bbaffce9ac6e6b24bd0f2dbdea2 100644 (file)
@@ -16,7 +16,7 @@
   <xscreensaver-image />
 
   <_description>
-Grabs an image of the desktop and spins and deforms it in 3D.
+Spins and deforms an image.
 
 Written by Ben Buxton and Jamie Zawinski; 2001.
   </_description>
index f9a4de44f89a7534fff390b971fbf6b32ae82f94..025fec8830397006e531c2292d7b62bdd78fca1e 100644 (file)
@@ -28,7 +28,7 @@
   <xscreensaver-image />
 
   <_description>
-A kaleidoscope that operates on your desktop image, or other pictures.
+A kaleidoscope that operates on a loaded image.
 
 http://en.wikipedia.org/wiki/Kaleidoscope
 
index e74396c9f459405818df8265cc6f63e8b85ec46b..6e665499531b325692aa458b36be1ce2745a5289 100644 (file)
@@ -22,7 +22,7 @@
 
     <number id="resolution" type="slider" arg="-resolution %"
              _label="Resolution" _low-label="Chunky" _high-label="Smooth"
-             low="25" high="200" default="100"/>
+             low="50" high="300" default="100"/>
    </vgroup>
   </hgroup>
 
@@ -37,8 +37,7 @@
   </hgroup>
 
   <_description>
-This grabs a screen image, carves it up into a jigsaw puzzle,
-shuffles it, and then solves the puzzle.
+This carves an image up into a jigsaw puzzle, shuffles it, and solves it.
 
 http://en.wikipedia.org/wiki/Jigsaw_puzzle
 http://en.wikipedia.org/wiki/Tessellation
index eae2c8507c13f1fa4f3ebe705fb4438fc000b262..6f08472069aa474afa842f6b511bf8bb07f9c7f9 100644 (file)
@@ -21,6 +21,9 @@
   <_description>
 A demonstration of the even-odd winding rule.
 
+http://en.wikipedia.org/wiki/Even-odd_rule
+http://en.wikipedia.org/wiki/Nonzero-rule
+
 Written by Dale Moore; 1995.
   </_description>
 </screensaver>
index 946eb1d72cf9e0be855dc4d5ddf0c367b562b16b..2fa82e23f5d06f75b9fadb38abce7f54708f6656 100644 (file)
   <hgroup>
    <boolean id="fisheye" _label="Fisheye lens" arg-unset="-no-fisheye"/>
    <boolean id="tight"   _label="Allow tight turns" arg-set="-tightturns"/>
-  <select id="style">
-    <option id="curves" _label="Curved pipes"   arg-set="-count 0"/>
+   <select id="style">
+    <option id="curves" _label="Curved pipes"   arg-set="-count 3"/>
     <option id="balls"  _label="Ball joints"    arg-set="-count 1"/>
     <option id="fit"    _label="Bolted fittings"/>
-  </select>
-
+    <option id="random" _label="Random style"   arg-set="-count 0"/>
+   </select>
   </hgroup>
+
+  <hgroup>
    <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+   <boolean id="wire"    _label="Wireframe" arg-set="-wireframe"/>
+  </hgroup>
 
   <_description>
 A growing plumbing system, with bolts and valves.
index 7ea18c7a1d399ff49de40cf34346af2264cabf2c..9d750f3dc30935b8f685f0aa366e0ef892bb0070 100644 (file)
@@ -43,8 +43,8 @@
   </hgroup>
 
   <_description>
-This draws rippling interference patterns like splashing water,
-overlayed on the desktop or an image.
+Rippling interference patterns reminiscent of splashing water
+distort a loaded image.
 
 Written by Tom Hammersley; 1999.
   </_description>
index 8669669910695807d0bfe40ab281a40874b5df8a..c2d5d8c52e4c4db860c4212d951778352f146926 100644 (file)
@@ -30,7 +30,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Creates a collage of rotated and scaled portions of the screen. 
+Distorts an image by rotating and scaling random sections of it.
 
 Written by Claudio Matsuoka; 2001.
   </_description>
index 2c006c76c1cac02f2a585b124a76b8ed7cffb5bf..21fcc28f2b2c523d3dd0c0c16a9604377f86c002 100644 (file)
@@ -16,6 +16,8 @@
              low="0.1" high="8.0" default="1.0"/>
 
     <select id="ping">
+     <option id="sn" _label="Ping local subnet"/>
+<!--
      <option id="24" _label="Ping subnet/24 (254 hosts)" arg-set="-ping subnet/24"/>
      <option id="25" _label="Ping subnet/25 (126 hosts)" arg-set="-ping subnet/25"/>
      <option id="26" _label="Ping subnet/26 (62 hosts)"  arg-set="-ping subnet/26"/>
      <option id="28" _label="Ping subnet/28 (14 hosts)"/>
      <option id="29" _label="Ping subnet/29 (6 hosts)"   arg-set="-ping subnet/29"/>
      <option id="30" _label="Ping subnet/30 (2 hosts)"   arg-set="-ping subnet/30"/>
+-->
+
      <option id="ssh" _label="Ping known SSH hosts"      arg-set="-ping /etc/hosts,$HOME/.ssh/known_hosts,$HOME/.ssh/known_hosts2"/>
-     <option id="ssh" _label="Simulation (don't ping)"   arg-set="-ping simulation"/>
+
+     <option id="popular" _label="Ping Google, Facebook, etc." arg-set="-ping google.com,facebook.com,twitter.com,yahoo.com,flickr.com,www.apple.com,wikipedia.org,linux.org,youtube.com,disqus.com,blogger.com,wordpress.com,tumblr.com,whitehouse.gov"/>
+
+     <option id="sim" _label="Simulation (don't ping)"   arg-set="-ping simulation"/>
     </select>
    </vgroup>
 
@@ -67,7 +74,8 @@ milliseconds respectively.
 
 Alternately, it can run a simulation that doesn't involve hosts.
 
-(If pinging doesn't work, you may need to make the executable be setuid.)
+(If pinging doesn't work on Linux, you may need to make the executable
+be setuid.)
 
 http://en.wikipedia.org/wiki/Ping#History
 
index e77480bd883d738c234372e9219251669dff2d35..8c283a39540a4a3a8b0f721e0899dbf27b233ba3 100644 (file)
@@ -22,8 +22,8 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Draws a spotlight scanning across a black screen, illuminating the
-underlying desktop (or a picture) when it passes.
+A spotlight scanning across a black screen, illuminating a loaded
+image when it passes.
 
 Written by Rick Schultz and Jamie Zawinski; 1999.
   </_description>
index 7b4e482063e2419bda07b761199f3265c2de014e..62df14cda924e0d08202ed9a61b4b98e269d9a7b 100644 (file)
@@ -261,6 +261,8 @@ static void
 coral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  init_coral(st);
 }
 
 static Bool
index 491577a2511944f2827768419f04c1dc35319d55..a1c501d84978099dd886ceb4dd11a3a531996ba0 100644 (file)
@@ -76,7 +76,6 @@ static const char sccsid[] = "@(#)crystal.c   4.12 98/09/10 xlockmore";
                                                 "*ncolors:               100   \n" \
                                                 "*fpsSolid:              true  \n" \
 
-# define reshape_crystal 0
 # define crystal_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1270,4 +1269,11 @@ init_crystal(ModeInfo * mi)
        XSetFunction(display, cryst->gc, GXcopy);
 }
 
+ENTRYPOINT void
+reshape_crystal(ModeInfo * mi, int width, int height)
+{
+  release_crystal(mi);
+  init_crystal(mi);
+}
+
 XSCREENSAVER_MODULE ("Crystal", crystal)
index cfb2a0a424d2e8d605c03ee48bcfe4be630dda25..42f8149a1d2d02dc79b4c30819886fc17a286af0 100644 (file)
@@ -40,6 +40,9 @@
 struct state {
   Display *dpy;
   Window window;
+  XWindowAttributes xgwa;
+  Pixmap saved;
+  int saved_w, saved_h;
 
   int sizex, sizey;
   int delay;
@@ -79,6 +82,7 @@ decayscreen_load_image (struct state *st)
   st->sizex = xgwa.width;
   st->sizey = xgwa.height;
   if (st->img_loader) abort();
+
   st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
                                             st->window, 0, 0);
 }
@@ -88,7 +92,6 @@ decayscreen_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   XGCValues gcv;
-  XWindowAttributes xgwa;
   long gcflags;
   unsigned long bg;
   char *s;
@@ -125,15 +128,15 @@ decayscreen_init (Display *dpy, Window window)
   st->duration = get_integer_resource (st->dpy, "duration", "Seconds");
   if (st->duration < 1) st->duration = 1;
 
-  XGetWindowAttributes (st->dpy, st->window, &xgwa);
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
 
   gcv.function = GXcopy;
   gcv.subwindow_mode = IncludeInferiors;
-  bg = get_pixel_resource (st->dpy, xgwa.colormap, "background", "Background");
+  bg = get_pixel_resource (st->dpy, st->xgwa.colormap, "background", "Background");
   gcv.foreground = bg;
 
   gcflags = GCForeground | GCFunction;
-  if (use_subwindow_mode_p(xgwa.screen, st->window)) /* see grabscreen.c */
+  if (use_subwindow_mode_p(st->xgwa.screen, st->window)) /* see grabscreen.c */
     gcflags |= GCSubwindowMode;
   st->gc = XCreateGC (st->dpy, st->window, gcflags, &gcv);
 
@@ -181,6 +184,16 @@ decayscreen_draw (Display *dpy, Window window, void *closure)
           if (st->mode == MELT || st->mode == STRETCH)
             /* make sure screen eventually turns background color */
             XDrawLine (st->dpy, st->window, st->gc, 0, 0, st->sizex, 0); 
+
+          if (!st->saved) {
+            st->saved = XCreatePixmap (st->dpy, st->window,
+                                       st->sizex, st->sizey,
+                                       st->xgwa.depth);
+            st->saved_w = st->sizex;
+            st->saved_h = st->sizey;
+          }
+          XCopyArea (st->dpy, st->window, st->saved, st->gc, 0, 0,
+                     st->sizex, st->sizey, 0, 0);
         }
       return st->delay;
     }
@@ -316,6 +329,11 @@ decayscreen_reshape (Display *dpy, Window window, void *closure,
                  unsigned int w, unsigned int h)
 {
   struct state *st = (struct state *) closure;
+  XClearWindow (st->dpy, st->window);
+  XCopyArea (st->dpy, st->saved, st->window, st->gc,
+             0, 0, st->saved_w, st->saved_h,
+             (w - st->saved_w) / 2,
+             (h - st->saved_h) / 2);
   st->sizex = w;
   st->sizey = h;
 }
index ab7a19b9fc79d77e0a6ebe682e0496406634e253..3d35dca5aef3b6f52cddbdf4a2f287c975b1fd4a 100644 (file)
@@ -59,7 +59,6 @@ static const char sccsid[] = "@(#)demon.c     5.00 2000/11/01 xlockmore";
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
-# define reshape_demon 0
 # define demon_handle_event 0
 # define UNIFORM_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -947,6 +946,14 @@ draw_demon (ModeInfo * mi)
 }
 
 
+ENTRYPOINT void
+reshape_demon(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_demon (mi);
+}
+
+
 ENTRYPOINT void
 release_demon (ModeInfo * mi)
 {
index 34c17671cc9534901ad693620e42f1d57a45e543..1746f726c2e08653c9c0b79de3ccd92dfd5c2aea 100644 (file)
@@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)discrete.c  5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_discrete 0
 # define discrete_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -423,6 +422,15 @@ draw_discrete (ModeInfo * mi)
 }
 
 
+ENTRYPOINT void
+reshape_discrete(ModeInfo * mi, int width, int height)
+{
+  discretestruct *hp = &discretes[MI_SCREEN(mi)];
+  hp->maxx = width;
+  hp->maxy = height;
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
 ENTRYPOINT void
 release_discrete(ModeInfo * mi)
 {
index 4e4c809e63cf4a9fd23f05f673c5b23c93e27f33..92cc0de32b7e801369ff93b5916e32cb084fcc11 100644 (file)
@@ -781,6 +781,12 @@ static void
 distort_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  /* XClearWindow (dpy, window); */
+  /* Why doesn't this work? */
+  XPutImage (st->dpy, st->window, st->gc, st->orig_map,
+             0, 0, st->orig_map->width, st->orig_map->height, 0, 0);
 }
 
 static Bool
index 56e89b0a1ef85aa61372448008d00dfb8bd7c198..711bc09e96991348213b0b49e5af500fcd4e42b8 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)drift.c     5.00 2000/11/01 xlockmore";
                                  "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_drift 0
 # define drift_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -684,6 +683,13 @@ release_drift(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_drift(ModeInfo * mi, int width, int height)
+{
+  MI_CLEARWINDOW(mi);
+  init_drift (mi);
+}
+
 ENTRYPOINT void
 refresh_drift(ModeInfo * mi)
 {
index 03b9645ecf48b9153bf544fb363dcd07ecaf04ef..5749aa6d7692e0f720f3ee50b6025068fcc66449 100644 (file)
@@ -449,6 +449,21 @@ static void
 eruption_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+#if 0
+  struct state *st = (struct state *) closure;
+  int i;
+  for (i = 0; i < st->iWinHeight; ++i)
+    free (st->fire[i]);
+
+  st->iWinWidth = w;
+  st->iWinHeight = h;
+
+  free (st->fire);
+  st->fire = calloc( st->iWinHeight, sizeof(unsigned char*));
+  for (i = 0; i < st->iWinHeight; ++i)
+    st->fire[i] = calloc( st->iWinWidth, sizeof(unsigned char));
+  st->draw_i = -1;
+#endif
 }
 
 static Bool
index bb3054d19be3c7e2f5ca630e14a8493c0052336b..2a3700bf4053c5a1e8c9501126647302acc011f6 100644 (file)
@@ -48,7 +48,6 @@ static const char sccsid[] = "@(#)euler2d.c   5.00 2000/11/01 xlockmore";
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
-# define reshape_euler2d 0
 # define euler2d_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -857,6 +856,13 @@ draw_euler2d (ModeInfo * mi)
 
 }
 
+ENTRYPOINT void
+reshape_euler2d(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_euler2d (mi);
+}
+
 ENTRYPOINT void
 release_euler2d (ModeInfo * mi)
 {
index babec31c6efb7d72deedde20bd545e387f21cae8..9fa65f8f13f10acb2ff58f6304c194683d7c9d56 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)fadeplot.c  5.00 2000/11/01 xlockmore";
 
 # define BRIGHT_COLORS
 # define UNIFORM_COLORS
-# define reshape_fadeplot 0
 # define fadeplot_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -212,10 +211,20 @@ draw_fadeplot (ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_fadeplot(ModeInfo * mi, int width, int height)
+{
+       fadeplotstruct *fp = &fadeplots[MI_SCREEN(mi)];
+    fp->width  = width;
+    fp->height = height;
+       fp->min = MAX(MIN(fp->width, fp->height) / 2, 1);
+       fp->factor.x = MAX(fp->width / (2 * fp->min), 1);
+       fp->factor.y = MAX(fp->height / (2 * fp->min), 1);
+}
+
 ENTRYPOINT void
 refresh_fadeplot (ModeInfo * mi)
 {
-       MI_CLEARWINDOW(mi);
 }
 
 ENTRYPOINT void
index 1cd68094b7ec6e641616a71488f6b8218b4fc785..351ca0002fca3df1a015a5e148e9eb72ecb3a5c1 100644 (file)
@@ -268,7 +268,7 @@ make_flag_bits(ModeInfo *mi)
 # if defined(_AIX)
                          sprintf(text, "%s\n%s %s.%s",
                                          uts.nodename, uts.sysname, uts.version, uts.release);
-#  elif defined(__APPLE__)  /* MacOS X + XDarwin */
+#  elif defined(__APPLE__) && !defined(USE_IPHONE)  /* MacOS X + XDarwin */
               {
                 const char *file = 
                   "/System/Library/CoreServices/SystemVersion.plist";
index 46570ea9194e9a806cf55453619b51f426ea448f..eed6287cefd3a6141475b8100533527789d6fb8a 100644 (file)
@@ -434,6 +434,9 @@ static void
 flame_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
 }
 
 static Bool
index a2c819916bc98ec32b5b780022bb1e9d71484373..794776f1200cba66fe36e633095b93bf2d5f33ad 100644 (file)
@@ -104,7 +104,6 @@ static const char sccsid[] = "@(#)flow.c    5.00 2000/11/01 xlockmore";
                                        "*cycles:      10000 \n" \
                                        "*ncolors:     200   \n"
 
-# define reshape_flow 0
 # define flow_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1201,6 +1200,13 @@ draw_flow (ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_flow(ModeInfo * mi, int width, int height)
+{
+  init_flow (mi);
+}
+
+
 ENTRYPOINT void
 release_flow (ModeInfo * mi)
 {
index 6a72738e508dda81b089ba216c6e082809ff7e97..43a0b5bf49500f609d58bbc90393bda0d5b5ae48 100644 (file)
@@ -47,7 +47,6 @@ static const char sccsid[] = "@(#)galaxy.c 4.04 97/07/28 xlockmore";
                                        "*fpsSolid:  true   \n" \
 
 # define UNIFORM_COLORS
-# define reshape_galaxy 0
 # define galaxy_handle_event 0
 # include "xlockmore.h"    /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -440,6 +439,13 @@ draw_galaxy(ModeInfo * mi)
     startover(mi);
 }
 
+ENTRYPOINT void
+reshape_galaxy(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_galaxy (mi);
+}
+
 ENTRYPOINT void
 release_galaxy(ModeInfo * mi)
 {
index 36a0bb18f0ea2f735d9c658a1ba4dd213eb85361..9f256641cc61ad4ec53c37c4d8c6e2ca64bf97da 100644 (file)
@@ -203,7 +203,7 @@ HDRS                = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
                  texfont.h tangram_shapes.h sproingies.h extrusion.h \
                  glschool.h glschool_gl.h glschool_alg.h topblock.h \
                  involute.h teapot.h sonar.h dropshadow.h starwars.h \
-                 jwzgles.h jwzglesI.h
+                 jwzgles.h jwzglesI.h teapot2.h dnapizza.h
 GL_MEN         = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  cubenetic.man dangerball.man engine.man extrusion.man \
                  flipscreen3d.man gears.man gflux.man \
@@ -525,9 +525,9 @@ MOEBIUS_OBJS=sphere.o tube.o xpm-ximage.o $(HACK_TRACK_OBJS)
 moebius:       moebius.o       $(MOEBIUS_OBJS)
        $(CC_HACK) -o $@ $@.o   $(MOEBIUS_OBJS) $(HACK_LIBS) $(XPM_LIBS)
 
-PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o
-pipes:         pipes.o         $(PIPE_OBJS) $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(PIPE_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o normals.o
+pipes:         pipes.o         $(PIPE_OBJS) $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(PIPE_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 superquadrics: superquadrics.o $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
@@ -535,8 +535,8 @@ superquadrics:      superquadrics.o $(HACK_OBJS)
 morph3d:       morph3d.o       $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
-rubik:         rubik.o         $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+rubik:         rubik.o         $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 stairs:                stairs.o        sphere.o xpm-ximage.o $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   sphere.o xpm-ximage.o $(HACK_TRACK_OBJS) \
@@ -580,7 +580,8 @@ SW_OBJS=starwars.o glut_stroke.o glut_swidth.o \
 starwars:                      $(SW_OBJS)
        $(CC_HACK) -o $@        $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
-GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o $(TEXT) $(HACK_TRACK_OBJS)
+GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o sphere.o \
+        $(TEXT) $(HACK_TRACK_OBJS)
 gltext:                                $(GLT_OBJS)
        $(CC_HACK) -o $@        $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
@@ -746,8 +747,8 @@ crackberg:  crackberg.o     $(HACK_OBJS)
 glhanoi:       glhanoi.o       $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
-cube21:                cube21.o        $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+cube21:                cube21.o        $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 TIMETUNNEL_OBJS = xpm-ximage.o  $(HACK_TRACK_OBJS)
 timetunnel:    timetunnel.o    $(TIMETUNNEL_OBJS)
@@ -791,7 +792,8 @@ SONAR_OBJS=sonar-sim.o sonar-icmp.o ${FONT_OBJS} $(HACK_TRACK_OBJS)
 sonar:         sonar.o         $(SONAR_OBJS)
        $(CC_HACK) -o $@ $@.o   $(SONAR_OBJS) $(HACK_LIBS)
 
-JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS)
+JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o \
+       ${FONT_OBJS} $(HACK_TRACK_GRAB_OBJS)
 jigsaw:                jigsaw.o        $(JIGSAW_OBJS)
        $(CC_HACK) -o $@ $@.o   $(JIGSAW_OBJS) $(HACK_LIBS)
 
@@ -823,8 +825,10 @@ tronbit:                   $(TBIT_OBJS)
 antinspect.o: ../../config.h
 antinspect.o: $(HACK_SRC)/fps.h
 antinspect.o: $(srcdir)/gltrackball.h
+antinspect.o: $(srcdir)/jwzglesI.h
 antinspect.o: $(srcdir)/jwzgles.h
 antinspect.o: $(HACK_SRC)/screenhackI.h
+antinspect.o: $(srcdir)/sphere.h
 antinspect.o: $(UTILS_SRC)/colors.h
 antinspect.o: $(UTILS_SRC)/grabscreen.h
 antinspect.o: $(UTILS_SRC)/hsv.h
@@ -839,9 +843,12 @@ antmaze.o: $(srcdir)/ants.h
 antmaze.o: ../../config.h
 antmaze.o: $(HACK_SRC)/fps.h
 antmaze.o: $(srcdir)/gltrackball.h
+antmaze.o: $(srcdir)/jwzglesI.h
 antmaze.o: $(srcdir)/jwzgles.h
 antmaze.o: $(srcdir)/rotator.h
 antmaze.o: $(HACK_SRC)/screenhackI.h
+antmaze.o: $(srcdir)/sphere.h
+antmaze.o: $(srcdir)/tube.h
 antmaze.o: $(UTILS_SRC)/colors.h
 antmaze.o: $(UTILS_SRC)/grabscreen.h
 antmaze.o: $(UTILS_SRC)/hsv.h
@@ -857,9 +864,12 @@ antspotlight.o: ../../config.h
 antspotlight.o: $(HACK_SRC)/fps.h
 antspotlight.o: $(srcdir)/gltrackball.h
 antspotlight.o: $(srcdir)/grab-ximage.h
+antspotlight.o: $(srcdir)/jwzglesI.h
 antspotlight.o: $(srcdir)/jwzgles.h
 antspotlight.o: $(srcdir)/rotator.h
 antspotlight.o: $(HACK_SRC)/screenhackI.h
+antspotlight.o: $(srcdir)/sphere.h
+antspotlight.o: $(srcdir)/tube.h
 antspotlight.o: $(UTILS_SRC)/colors.h
 antspotlight.o: $(UTILS_SRC)/grabscreen.h
 antspotlight.o: $(UTILS_SRC)/hsv.h
@@ -874,6 +884,7 @@ atlantis.o: $(srcdir)/atlantis.h
 atlantis.o: ../../config.h
 atlantis.o: $(HACK_SRC)/fps.h
 atlantis.o: $(HACK_SRC)/images/sea-texture.xpm
+atlantis.o: $(srcdir)/jwzglesI.h
 atlantis.o: $(srcdir)/jwzgles.h
 atlantis.o: $(HACK_SRC)/screenhackI.h
 atlantis.o: $(UTILS_SRC)/colors.h
@@ -895,6 +906,7 @@ atunnel.o: $(HACK_SRC)/images/tunnel2.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel3.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel4.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel5.xpm
+atunnel.o: $(srcdir)/jwzglesI.h
 atunnel.o: $(srcdir)/jwzgles.h
 atunnel.o: $(HACK_SRC)/screenhackI.h
 atunnel.o: $(srcdir)/tunnel_draw.h
@@ -912,6 +924,7 @@ atunnel.o: $(srcdir)/xpm-ximage.h
 b_draw.o: $(srcdir)/bubble3d.h
 b_draw.o: ../../config.h
 b_draw.o: $(HACK_SRC)/fps.h
+b_draw.o: $(srcdir)/jwzglesI.h
 b_draw.o: $(srcdir)/jwzgles.h
 b_draw.o: $(HACK_SRC)/screenhackI.h
 b_draw.o: $(UTILS_SRC)/colors.h
@@ -925,6 +938,7 @@ b_draw.o: $(UTILS_SRC)/yarandom.h
 b_draw.o: $(HACK_SRC)/xlockmoreI.h
 blinkbox.o: ../../config.h
 blinkbox.o: $(HACK_SRC)/fps.h
+blinkbox.o: $(srcdir)/jwzglesI.h
 blinkbox.o: $(srcdir)/jwzgles.h
 blinkbox.o: $(HACK_SRC)/screenhackI.h
 blinkbox.o: $(srcdir)/sphere.h
@@ -941,6 +955,7 @@ blinkbox.o: $(HACK_SRC)/xlockmore.h
 b_lockglue.o: $(srcdir)/bubble3d.h
 b_lockglue.o: ../../config.h
 b_lockglue.o: $(HACK_SRC)/fps.h
+b_lockglue.o: $(srcdir)/jwzglesI.h
 b_lockglue.o: $(srcdir)/jwzgles.h
 b_lockglue.o: $(HACK_SRC)/screenhackI.h
 b_lockglue.o: $(UTILS_SRC)/colors.h
@@ -956,6 +971,7 @@ b_lockglue.o: $(HACK_SRC)/xlockmore.h
 blocktube.o: ../../config.h
 blocktube.o: $(HACK_SRC)/fps.h
 blocktube.o: $(HACK_SRC)/images/blocktube.xpm
+blocktube.o: $(srcdir)/jwzglesI.h
 blocktube.o: $(srcdir)/jwzgles.h
 blocktube.o: $(HACK_SRC)/screenhackI.h
 blocktube.o: $(UTILS_SRC)/colors.h
@@ -972,6 +988,7 @@ blocktube.o: $(srcdir)/xpm-ximage.h
 boing.o: ../../config.h
 boing.o: $(HACK_SRC)/fps.h
 boing.o: $(srcdir)/gltrackball.h
+boing.o: $(srcdir)/jwzglesI.h
 boing.o: $(srcdir)/jwzgles.h
 boing.o: $(HACK_SRC)/screenhackI.h
 boing.o: $(UTILS_SRC)/colors.h
@@ -988,6 +1005,7 @@ bouncingcow.o: ../../config.h
 bouncingcow.o: $(HACK_SRC)/fps.h
 bouncingcow.o: $(srcdir)/gllist.h
 bouncingcow.o: $(srcdir)/gltrackball.h
+bouncingcow.o: $(srcdir)/jwzglesI.h
 bouncingcow.o: $(srcdir)/jwzgles.h
 bouncingcow.o: $(srcdir)/rotator.h
 bouncingcow.o: $(HACK_SRC)/screenhackI.h
@@ -1005,6 +1023,7 @@ bouncingcow.o: $(srcdir)/xpm-ximage.h
 boxed.o: $(srcdir)/boxed.h
 boxed.o: ../../config.h
 boxed.o: $(HACK_SRC)/fps.h
+boxed.o: $(srcdir)/jwzglesI.h
 boxed.o: $(srcdir)/jwzgles.h
 boxed.o: $(HACK_SRC)/screenhackI.h
 boxed.o: $(UTILS_SRC)/colors.h
@@ -1020,6 +1039,7 @@ boxed.o: $(HACK_SRC)/xlockmore.h
 b_sphere.o: $(srcdir)/bubble3d.h
 b_sphere.o: ../../config.h
 b_sphere.o: $(HACK_SRC)/fps.h
+b_sphere.o: $(srcdir)/jwzglesI.h
 b_sphere.o: $(srcdir)/jwzgles.h
 b_sphere.o: $(HACK_SRC)/screenhackI.h
 b_sphere.o: $(UTILS_SRC)/colors.h
@@ -1034,6 +1054,7 @@ b_sphere.o: $(HACK_SRC)/xlockmoreI.h
 bubble3d.o: $(srcdir)/bubble3d.h
 bubble3d.o: ../../config.h
 bubble3d.o: $(HACK_SRC)/fps.h
+bubble3d.o: $(srcdir)/jwzglesI.h
 bubble3d.o: $(srcdir)/jwzgles.h
 bubble3d.o: $(HACK_SRC)/screenhackI.h
 bubble3d.o: $(UTILS_SRC)/colors.h
@@ -1046,9 +1067,13 @@ bubble3d.o: $(UTILS_SRC)/xshm.h
 bubble3d.o: $(UTILS_SRC)/yarandom.h
 bubble3d.o: $(HACK_SRC)/xlockmoreI.h
 buildlwo.o: $(srcdir)/buildlwo.h
+buildlwo.o: ../../config.h
+buildlwo.o: $(srcdir)/jwzglesI.h
+buildlwo.o: $(srcdir)/jwzgles.h
 cage.o: ../../config.h
-cage.o: $(srcdir)/e_textures.h
 cage.o: $(HACK_SRC)/fps.h
+cage.o: $(HACK_SRC)/images/wood.xpm
+cage.o: $(srcdir)/jwzglesI.h
 cage.o: $(srcdir)/jwzgles.h
 cage.o: $(HACK_SRC)/screenhackI.h
 cage.o: $(UTILS_SRC)/colors.h
@@ -1061,10 +1086,12 @@ cage.o: $(UTILS_SRC)/xshm.h
 cage.o: $(UTILS_SRC)/yarandom.h
 cage.o: $(HACK_SRC)/xlockmoreI.h
 cage.o: $(HACK_SRC)/xlockmore.h
+cage.o: $(srcdir)/xpm-ximage.h
 carousel.o: ../../config.h
 carousel.o: $(HACK_SRC)/fps.h
 carousel.o: $(srcdir)/gltrackball.h
 carousel.o: $(srcdir)/grab-ximage.h
+carousel.o: $(srcdir)/jwzglesI.h
 carousel.o: $(srcdir)/jwzgles.h
 carousel.o: $(srcdir)/rotator.h
 carousel.o: $(HACK_SRC)/screenhackI.h
@@ -1080,9 +1107,13 @@ carousel.o: $(UTILS_SRC)/yarandom.h
 carousel.o: $(HACK_SRC)/xlockmoreI.h
 carousel.o: $(HACK_SRC)/xlockmore.h
 chessmodels.o: $(srcdir)/chessmodels.h
+chessmodels.o: ../../config.h
+chessmodels.o: $(srcdir)/jwzglesI.h
+chessmodels.o: $(srcdir)/jwzgles.h
 circuit.o: ../../config.h
 circuit.o: $(srcdir)/font-ximage.h
 circuit.o: $(HACK_SRC)/fps.h
+circuit.o: $(srcdir)/jwzglesI.h
 circuit.o: $(srcdir)/jwzgles.h
 circuit.o: $(HACK_SRC)/screenhackI.h
 circuit.o: $(UTILS_SRC)/colors.h
@@ -1095,12 +1126,19 @@ circuit.o: $(UTILS_SRC)/xshm.h
 circuit.o: $(UTILS_SRC)/yarandom.h
 circuit.o: $(HACK_SRC)/xlockmoreI.h
 circuit.o: $(HACK_SRC)/xlockmore.h
+companion_disc.o: ../../config.h
 companion_disc.o: $(srcdir)/gllist.h
+companion_disc.o: $(srcdir)/jwzglesI.h
+companion_disc.o: $(srcdir)/jwzgles.h
+companion_heart.o: ../../config.h
 companion_heart.o: $(srcdir)/gllist.h
+companion_heart.o: $(srcdir)/jwzglesI.h
+companion_heart.o: $(srcdir)/jwzgles.h
 companion.o: ../../config.h
 companion.o: $(HACK_SRC)/fps.h
 companion.o: $(srcdir)/gllist.h
 companion.o: $(srcdir)/gltrackball.h
+companion.o: $(srcdir)/jwzglesI.h
 companion.o: $(srcdir)/jwzgles.h
 companion.o: $(srcdir)/rotator.h
 companion.o: $(HACK_SRC)/screenhackI.h
@@ -1115,15 +1153,37 @@ companion.o: $(UTILS_SRC)/yarandom.h
 companion.o: $(HACK_SRC)/xlockmoreI.h
 companion.o: $(HACK_SRC)/xlockmore.h
 companion.o: $(srcdir)/xpm-ximage.h
+companion_quad.o: ../../config.h
 companion_quad.o: $(srcdir)/gllist.h
+companion_quad.o: $(srcdir)/jwzglesI.h
+companion_quad.o: $(srcdir)/jwzgles.h
+cow_face.o: ../../config.h
 cow_face.o: $(srcdir)/gllist.h
+cow_face.o: $(srcdir)/jwzglesI.h
+cow_face.o: $(srcdir)/jwzgles.h
+cow_hide.o: ../../config.h
 cow_hide.o: $(srcdir)/gllist.h
+cow_hide.o: $(srcdir)/jwzglesI.h
+cow_hide.o: $(srcdir)/jwzgles.h
+cow_hoofs.o: ../../config.h
 cow_hoofs.o: $(srcdir)/gllist.h
+cow_hoofs.o: $(srcdir)/jwzglesI.h
+cow_hoofs.o: $(srcdir)/jwzgles.h
+cow_horns.o: ../../config.h
 cow_horns.o: $(srcdir)/gllist.h
+cow_horns.o: $(srcdir)/jwzglesI.h
+cow_horns.o: $(srcdir)/jwzgles.h
+cow_tail.o: ../../config.h
 cow_tail.o: $(srcdir)/gllist.h
+cow_tail.o: $(srcdir)/jwzglesI.h
+cow_tail.o: $(srcdir)/jwzgles.h
+cow_udder.o: ../../config.h
 cow_udder.o: $(srcdir)/gllist.h
+cow_udder.o: $(srcdir)/jwzglesI.h
+cow_udder.o: $(srcdir)/jwzgles.h
 crackberg.o: ../../config.h
 crackberg.o: $(HACK_SRC)/fps.h
+crackberg.o: $(srcdir)/jwzglesI.h
 crackberg.o: $(srcdir)/jwzgles.h
 crackberg.o: $(HACK_SRC)/screenhackI.h
 crackberg.o: $(UTILS_SRC)/colors.h
@@ -1138,6 +1198,8 @@ crackberg.o: $(HACK_SRC)/xlockmoreI.h
 crackberg.o: $(HACK_SRC)/xlockmore.h
 cube21.o: ../../config.h
 cube21.o: $(HACK_SRC)/fps.h
+cube21.o: $(srcdir)/gltrackball.h
+cube21.o: $(srcdir)/jwzglesI.h
 cube21.o: $(srcdir)/jwzgles.h
 cube21.o: $(HACK_SRC)/screenhackI.h
 cube21.o: $(UTILS_SRC)/colors.h
@@ -1153,6 +1215,7 @@ cube21.o: $(HACK_SRC)/xlockmore.h
 cubenetic.o: ../../config.h
 cubenetic.o: $(HACK_SRC)/fps.h
 cubenetic.o: $(srcdir)/gltrackball.h
+cubenetic.o: $(srcdir)/jwzglesI.h
 cubenetic.o: $(srcdir)/jwzgles.h
 cubenetic.o: $(srcdir)/rotator.h
 cubenetic.o: $(HACK_SRC)/screenhackI.h
@@ -1169,6 +1232,7 @@ cubenetic.o: $(HACK_SRC)/xlockmore.h
 cubestorm.o: ../../config.h
 cubestorm.o: $(HACK_SRC)/fps.h
 cubestorm.o: $(srcdir)/gltrackball.h
+cubestorm.o: $(srcdir)/jwzglesI.h
 cubestorm.o: $(srcdir)/jwzgles.h
 cubestorm.o: $(srcdir)/rotator.h
 cubestorm.o: $(HACK_SRC)/screenhackI.h
@@ -1185,6 +1249,7 @@ cubestorm.o: $(HACK_SRC)/xlockmore.h
 cubicgrid.o: ../../config.h
 cubicgrid.o: $(HACK_SRC)/fps.h
 cubicgrid.o: $(srcdir)/gltrackball.h
+cubicgrid.o: $(srcdir)/jwzglesI.h
 cubicgrid.o: $(srcdir)/jwzgles.h
 cubicgrid.o: $(srcdir)/rotator.h
 cubicgrid.o: $(HACK_SRC)/screenhackI.h
@@ -1201,6 +1266,7 @@ cubicgrid.o: $(HACK_SRC)/xlockmore.h
 dangerball.o: ../../config.h
 dangerball.o: $(HACK_SRC)/fps.h
 dangerball.o: $(srcdir)/gltrackball.h
+dangerball.o: $(srcdir)/jwzglesI.h
 dangerball.o: $(srcdir)/jwzgles.h
 dangerball.o: $(srcdir)/rotator.h
 dangerball.o: $(HACK_SRC)/screenhackI.h
@@ -1217,8 +1283,10 @@ dangerball.o: $(UTILS_SRC)/yarandom.h
 dangerball.o: $(HACK_SRC)/xlockmoreI.h
 dangerball.o: $(HACK_SRC)/xlockmore.h
 dnalogo.o: ../../config.h
+dnalogo.o: $(srcdir)/dnapizza.h
 dnalogo.o: $(HACK_SRC)/fps.h
 dnalogo.o: $(srcdir)/gltrackball.h
+dnalogo.o: $(srcdir)/jwzglesI.h
 dnalogo.o: $(srcdir)/jwzgles.h
 dnalogo.o: $(srcdir)/normals.h
 dnalogo.o: $(srcdir)/rotator.h
@@ -1237,6 +1305,8 @@ dnalogo.o: $(HACK_SRC)/xlockmore.h
 dolphin.o: $(srcdir)/atlantis.h
 dolphin.o: ../../config.h
 dolphin.o: $(HACK_SRC)/fps.h
+dolphin.o: $(srcdir)/jwzglesI.h
+dolphin.o: $(srcdir)/jwzgles.h
 dolphin.o: $(HACK_SRC)/screenhackI.h
 dolphin.o: $(UTILS_SRC)/colors.h
 dolphin.o: $(UTILS_SRC)/grabscreen.h
@@ -1245,12 +1315,16 @@ dolphin.o: $(UTILS_SRC)/resources.h
 dolphin.o: $(UTILS_SRC)/usleep.h
 dolphin.o: $(UTILS_SRC)/visual.h
 dolphin.o: $(UTILS_SRC)/yarandom.h
+dropshadow.o: ../../config.h
 dropshadow.o: $(srcdir)/dropshadow.h
+dropshadow.o: $(srcdir)/jwzglesI.h
+dropshadow.o: $(srcdir)/jwzgles.h
 endgame.o: $(srcdir)/chessgames.h
 endgame.o: $(srcdir)/chessmodels.h
 endgame.o: ../../config.h
 endgame.o: $(HACK_SRC)/fps.h
 endgame.o: $(srcdir)/gltrackball.h
+endgame.o: $(srcdir)/jwzglesI.h
 endgame.o: $(srcdir)/jwzgles.h
 endgame.o: $(HACK_SRC)/screenhackI.h
 endgame.o: $(UTILS_SRC)/colors.h
@@ -1267,9 +1341,11 @@ engine.o: ../../config.h
 engine.o: $(HACK_SRC)/fps.h
 engine.o: $(srcdir)/gltrackball.h
 engine.o: $(srcdir)/glxfonts.h
+engine.o: $(srcdir)/jwzglesI.h
 engine.o: $(srcdir)/jwzgles.h
 engine.o: $(srcdir)/rotator.h
 engine.o: $(HACK_SRC)/screenhackI.h
+engine.o: $(srcdir)/texfont.h
 engine.o: $(UTILS_SRC)/colors.h
 engine.o: $(UTILS_SRC)/grabscreen.h
 engine.o: $(UTILS_SRC)/hsv.h
@@ -1282,16 +1358,25 @@ engine.o: $(HACK_SRC)/xlockmoreI.h
 engine.o: $(HACK_SRC)/xlockmore.h
 extrusion-helix2.o: ../../config.h
 extrusion-helix2.o: $(srcdir)/extrusion.h
+extrusion-helix2.o: $(srcdir)/jwzglesI.h
+extrusion-helix2.o: $(srcdir)/jwzgles.h
 extrusion-helix3.o: ../../config.h
 extrusion-helix3.o: $(srcdir)/extrusion.h
+extrusion-helix3.o: $(srcdir)/jwzglesI.h
+extrusion-helix3.o: $(srcdir)/jwzgles.h
 extrusion-helix4.o: ../../config.h
 extrusion-helix4.o: $(srcdir)/extrusion.h
+extrusion-helix4.o: $(srcdir)/jwzglesI.h
+extrusion-helix4.o: $(srcdir)/jwzgles.h
 extrusion-joinoffset.o: ../../config.h
 extrusion-joinoffset.o: $(srcdir)/extrusion.h
+extrusion-joinoffset.o: $(srcdir)/jwzglesI.h
+extrusion-joinoffset.o: $(srcdir)/jwzgles.h
 extrusion.o: ../../config.h
 extrusion.o: $(srcdir)/extrusion.h
 extrusion.o: $(HACK_SRC)/fps.h
 extrusion.o: $(srcdir)/gltrackball.h
+extrusion.o: $(srcdir)/jwzglesI.h
 extrusion.o: $(srcdir)/jwzgles.h
 extrusion.o: $(srcdir)/rotator.h
 extrusion.o: $(HACK_SRC)/screenhackI.h
@@ -1308,14 +1393,21 @@ extrusion.o: $(HACK_SRC)/xlockmore.h
 extrusion.o: $(srcdir)/xpm-ximage.h
 extrusion-screw.o: ../../config.h
 extrusion-screw.o: $(srcdir)/extrusion.h
+extrusion-screw.o: $(srcdir)/jwzglesI.h
+extrusion-screw.o: $(srcdir)/jwzgles.h
 extrusion-taper.o: ../../config.h
 extrusion-taper.o: $(srcdir)/extrusion.h
+extrusion-taper.o: $(srcdir)/jwzglesI.h
+extrusion-taper.o: $(srcdir)/jwzgles.h
 extrusion-twistoid.o: ../../config.h
 extrusion-twistoid.o: $(srcdir)/extrusion.h
+extrusion-twistoid.o: $(srcdir)/jwzglesI.h
+extrusion-twistoid.o: $(srcdir)/jwzgles.h
 flipflop.o: ../../config.h
 flipflop.o: $(HACK_SRC)/fps.h
 flipflop.o: $(srcdir)/gltrackball.h
 flipflop.o: $(srcdir)/grab-ximage.h
+flipflop.o: $(srcdir)/jwzglesI.h
 flipflop.o: $(srcdir)/jwzgles.h
 flipflop.o: $(HACK_SRC)/screenhackI.h
 flipflop.o: $(UTILS_SRC)/colors.h
@@ -1332,6 +1424,7 @@ flipscreen3d.o: ../../config.h
 flipscreen3d.o: $(HACK_SRC)/fps.h
 flipscreen3d.o: $(srcdir)/gltrackball.h
 flipscreen3d.o: $(srcdir)/grab-ximage.h
+flipscreen3d.o: $(srcdir)/jwzglesI.h
 flipscreen3d.o: $(srcdir)/jwzgles.h
 flipscreen3d.o: $(HACK_SRC)/screenhackI.h
 flipscreen3d.o: $(UTILS_SRC)/colors.h
@@ -1346,6 +1439,7 @@ flipscreen3d.o: $(HACK_SRC)/xlockmoreI.h
 flipscreen3d.o: $(HACK_SRC)/xlockmore.h
 fliptext.o: ../../config.h
 fliptext.o: $(HACK_SRC)/fps.h
+fliptext.o: $(srcdir)/jwzglesI.h
 fliptext.o: $(srcdir)/jwzgles.h
 fliptext.o: $(HACK_SRC)/screenhackI.h
 fliptext.o: $(srcdir)/texfont.h
@@ -1353,6 +1447,7 @@ fliptext.o: $(UTILS_SRC)/colors.h
 fliptext.o: $(UTILS_SRC)/grabscreen.h
 fliptext.o: $(UTILS_SRC)/hsv.h
 fliptext.o: $(UTILS_SRC)/resources.h
+fliptext.o: $(UTILS_SRC)/textclient.h
 fliptext.o: $(UTILS_SRC)/usleep.h
 fliptext.o: $(UTILS_SRC)/visual.h
 fliptext.o: $(UTILS_SRC)/xshm.h
@@ -1363,6 +1458,7 @@ flurry.o: ../../config.h
 flurry.o: $(srcdir)/flurry.h
 flurry.o: $(HACK_SRC)/fps.h
 flurry.o: $(srcdir)/gltrackball.h
+flurry.o: $(srcdir)/jwzglesI.h
 flurry.o: $(srcdir)/jwzgles.h
 flurry.o: $(srcdir)/rotator.h
 flurry.o: $(HACK_SRC)/screenhackI.h
@@ -1379,21 +1475,29 @@ flurry.o: $(HACK_SRC)/xlockmore.h
 flurry-smoke.o: ../../config.h
 flurry-smoke.o: $(srcdir)/flurry.h
 flurry-smoke.o: $(srcdir)/gltrackball.h
+flurry-smoke.o: $(srcdir)/jwzglesI.h
+flurry-smoke.o: $(srcdir)/jwzgles.h
 flurry-smoke.o: $(srcdir)/rotator.h
 flurry-smoke.o: $(UTILS_SRC)/yarandom.h
 flurry-spark.o: ../../config.h
 flurry-spark.o: $(srcdir)/flurry.h
 flurry-spark.o: $(srcdir)/gltrackball.h
+flurry-spark.o: $(srcdir)/jwzglesI.h
+flurry-spark.o: $(srcdir)/jwzgles.h
 flurry-spark.o: $(srcdir)/rotator.h
 flurry-spark.o: $(UTILS_SRC)/yarandom.h
 flurry-star.o: ../../config.h
 flurry-star.o: $(srcdir)/flurry.h
 flurry-star.o: $(srcdir)/gltrackball.h
+flurry-star.o: $(srcdir)/jwzglesI.h
+flurry-star.o: $(srcdir)/jwzgles.h
 flurry-star.o: $(srcdir)/rotator.h
 flurry-star.o: $(UTILS_SRC)/yarandom.h
 flurry-texture.o: ../../config.h
 flurry-texture.o: $(srcdir)/flurry.h
 flurry-texture.o: $(srcdir)/gltrackball.h
+flurry-texture.o: $(srcdir)/jwzglesI.h
+flurry-texture.o: $(srcdir)/jwzgles.h
 flurry-texture.o: $(srcdir)/rotator.h
 flurry-texture.o: $(UTILS_SRC)/yarandom.h
 flyingtoasters.o: ../../config.h
@@ -1402,6 +1506,7 @@ flyingtoasters.o: $(srcdir)/gllist.h
 flyingtoasters.o: $(srcdir)/gltrackball.h
 flyingtoasters.o: $(HACK_SRC)/images/chromesphere.xpm
 flyingtoasters.o: $(HACK_SRC)/images/toast.xpm
+flyingtoasters.o: $(srcdir)/jwzglesI.h
 flyingtoasters.o: $(srcdir)/jwzgles.h
 flyingtoasters.o: $(HACK_SRC)/screenhackI.h
 flyingtoasters.o: $(UTILS_SRC)/colors.h
@@ -1417,13 +1522,16 @@ flyingtoasters.o: $(HACK_SRC)/xlockmore.h
 flyingtoasters.o: $(srcdir)/xpm-ximage.h
 font-ximage.o: ../../config.h
 font-ximage.o: $(srcdir)/font-ximage.h
+font-ximage.o: $(srcdir)/jwzglesI.h
 font-ximage.o: $(srcdir)/jwzgles.h
 fps-gl.o: ../../config.h
 fps-gl.o: $(HACK_SRC)/fpsI.h
 fps-gl.o: $(HACK_SRC)/fps.h
 fps-gl.o: $(srcdir)/glxfonts.h
+fps-gl.o: $(srcdir)/jwzglesI.h
 fps-gl.o: $(srcdir)/jwzgles.h
 fps-gl.o: $(HACK_SRC)/screenhackI.h
+fps-gl.o: $(srcdir)/texfont.h
 fps-gl.o: $(UTILS_SRC)/colors.h
 fps-gl.o: $(UTILS_SRC)/grabscreen.h
 fps-gl.o: $(UTILS_SRC)/hsv.h
@@ -1437,6 +1545,7 @@ gears.o: ../../config.h
 gears.o: $(HACK_SRC)/fps.h
 gears.o: $(srcdir)/gltrackball.h
 gears.o: $(srcdir)/involute.h
+gears.o: $(srcdir)/jwzglesI.h
 gears.o: $(srcdir)/jwzgles.h
 gears.o: $(srcdir)/normals.h
 gears.o: $(srcdir)/rotator.h
@@ -1456,6 +1565,7 @@ gflux.o: ../../config.h
 gflux.o: $(HACK_SRC)/fps.h
 gflux.o: $(srcdir)/gltrackball.h
 gflux.o: $(srcdir)/grab-ximage.h
+gflux.o: $(srcdir)/jwzglesI.h
 gflux.o: $(srcdir)/jwzgles.h
 gflux.o: $(HACK_SRC)/screenhackI.h
 gflux.o: $(UTILS_SRC)/colors.h
@@ -1471,6 +1581,7 @@ gflux.o: $(HACK_SRC)/xlockmore.h
 glblur.o: ../../config.h
 glblur.o: $(HACK_SRC)/fps.h
 glblur.o: $(srcdir)/gltrackball.h
+glblur.o: $(srcdir)/jwzglesI.h
 glblur.o: $(srcdir)/jwzgles.h
 glblur.o: $(srcdir)/rotator.h
 glblur.o: $(HACK_SRC)/screenhackI.h
@@ -1486,6 +1597,7 @@ glblur.o: $(HACK_SRC)/xlockmoreI.h
 glblur.o: $(HACK_SRC)/xlockmore.h
 glcells.o: ../../config.h
 glcells.o: $(HACK_SRC)/fps.h
+glcells.o: $(srcdir)/jwzglesI.h
 glcells.o: $(srcdir)/jwzgles.h
 glcells.o: $(HACK_SRC)/screenhackI.h
 glcells.o: $(UTILS_SRC)/colors.h
@@ -1501,6 +1613,7 @@ glcells.o: $(HACK_SRC)/xlockmore.h
 gleidescope.o: ../../config.h
 gleidescope.o: $(HACK_SRC)/fps.h
 gleidescope.o: $(srcdir)/grab-ximage.h
+gleidescope.o: $(srcdir)/jwzglesI.h
 gleidescope.o: $(srcdir)/jwzgles.h
 gleidescope.o: $(HACK_SRC)/screenhackI.h
 gleidescope.o: $(UTILS_SRC)/colors.h
@@ -1519,6 +1632,7 @@ glforestfire.o: $(HACK_SRC)/fps.h
 glforestfire.o: $(srcdir)/gltrackball.h
 glforestfire.o: $(HACK_SRC)/images/ground.xpm
 glforestfire.o: $(HACK_SRC)/images/tree.xpm
+glforestfire.o: $(srcdir)/jwzglesI.h
 glforestfire.o: $(srcdir)/jwzgles.h
 glforestfire.o: $(HACK_SRC)/screenhackI.h
 glforestfire.o: $(UTILS_SRC)/colors.h
@@ -1534,6 +1648,7 @@ glforestfire.o: $(HACK_SRC)/xlockmore.h
 glforestfire.o: $(srcdir)/xpm-ximage.h
 glhanoi.o: ../../config.h
 glhanoi.o: $(HACK_SRC)/fps.h
+glhanoi.o: $(srcdir)/jwzglesI.h
 glhanoi.o: $(srcdir)/jwzgles.h
 glhanoi.o: $(srcdir)/rotator.h
 glhanoi.o: $(HACK_SRC)/screenhackI.h
@@ -1550,6 +1665,7 @@ glhanoi.o: $(HACK_SRC)/xlockmore.h
 glknots.o: ../../config.h
 glknots.o: $(HACK_SRC)/fps.h
 glknots.o: $(srcdir)/gltrackball.h
+glknots.o: $(srcdir)/jwzglesI.h
 glknots.o: $(srcdir)/jwzgles.h
 glknots.o: $(srcdir)/rotator.h
 glknots.o: $(HACK_SRC)/screenhackI.h
@@ -1564,10 +1680,14 @@ glknots.o: $(UTILS_SRC)/xshm.h
 glknots.o: $(UTILS_SRC)/yarandom.h
 glknots.o: $(HACK_SRC)/xlockmoreI.h
 glknots.o: $(HACK_SRC)/xlockmore.h
+gllist.o: ../../config.h
 gllist.o: $(srcdir)/gllist.h
+gllist.o: $(srcdir)/jwzglesI.h
+gllist.o: $(srcdir)/jwzgles.h
 glmatrix.o: ../../config.h
 glmatrix.o: $(HACK_SRC)/fps.h
 glmatrix.o: $(HACK_SRC)/images/matrix3.xpm
+glmatrix.o: $(srcdir)/jwzglesI.h
 glmatrix.o: $(srcdir)/jwzgles.h
 glmatrix.o: $(HACK_SRC)/screenhackI.h
 glmatrix.o: $(UTILS_SRC)/colors.h
@@ -1585,6 +1705,7 @@ glplanet.o: ../../config.h
 glplanet.o: $(HACK_SRC)/fps.h
 glplanet.o: $(srcdir)/gltrackball.h
 glplanet.o: $(HACK_SRC)/images/earth.xpm
+glplanet.o: $(srcdir)/jwzglesI.h
 glplanet.o: $(srcdir)/jwzgles.h
 glplanet.o: $(srcdir)/rotator.h
 glplanet.o: $(HACK_SRC)/screenhackI.h
@@ -1603,8 +1724,10 @@ glplanet.o: $(srcdir)/xpm-ximage.h
 glschool_alg.o: ../../config.h
 glschool_alg.o: $(srcdir)/glschool_alg.h
 glschool_alg.o: $(UTILS_SRC)/yarandom.h
+glschool_gl.o: ../../config.h
 glschool_gl.o: $(srcdir)/glschool_alg.h
 glschool_gl.o: $(srcdir)/glschool_gl.h
+glschool_gl.o: $(srcdir)/jwzglesI.h
 glschool_gl.o: $(srcdir)/jwzgles.h
 glschool_gl.o: $(srcdir)/sphere.h
 glschool_gl.o: $(srcdir)/tube.h
@@ -1613,6 +1736,7 @@ glschool.o: $(HACK_SRC)/fps.h
 glschool.o: $(srcdir)/glschool_alg.h
 glschool.o: $(srcdir)/glschool_gl.h
 glschool.o: $(srcdir)/glschool.h
+glschool.o: $(srcdir)/jwzglesI.h
 glschool.o: $(srcdir)/jwzgles.h
 glschool.o: $(HACK_SRC)/screenhackI.h
 glschool.o: $(UTILS_SRC)/colors.h
@@ -1629,8 +1753,10 @@ glslideshow.o: ../../config.h
 glslideshow.o: $(HACK_SRC)/fps.h
 glslideshow.o: $(srcdir)/glxfonts.h
 glslideshow.o: $(srcdir)/grab-ximage.h
+glslideshow.o: $(srcdir)/jwzglesI.h
 glslideshow.o: $(srcdir)/jwzgles.h
 glslideshow.o: $(HACK_SRC)/screenhackI.h
+glslideshow.o: $(srcdir)/texfont.h
 glslideshow.o: $(UTILS_SRC)/colors.h
 glslideshow.o: $(UTILS_SRC)/grabscreen.h
 glslideshow.o: $(UTILS_SRC)/hsv.h
@@ -1644,8 +1770,10 @@ glslideshow.o: $(HACK_SRC)/xlockmore.h
 glsnake.o: ../../config.h
 glsnake.o: $(HACK_SRC)/fps.h
 glsnake.o: $(srcdir)/glxfonts.h
+glsnake.o: $(srcdir)/jwzglesI.h
 glsnake.o: $(srcdir)/jwzgles.h
 glsnake.o: $(HACK_SRC)/screenhackI.h
+glsnake.o: $(srcdir)/texfont.h
 glsnake.o: $(UTILS_SRC)/colors.h
 glsnake.o: $(UTILS_SRC)/grabscreen.h
 glsnake.o: $(UTILS_SRC)/hsv.h
@@ -1661,14 +1789,17 @@ gltext.o: $(HACK_SRC)/fps.h
 gltext.o: $(srcdir)/gltrackball.h
 gltext.o: $(srcdir)/glut_roman.h
 gltext.o: $(srcdir)/glutstroke.h
+gltext.o: $(srcdir)/jwzglesI.h
 gltext.o: $(srcdir)/jwzgles.h
 gltext.o: $(srcdir)/rotator.h
 gltext.o: $(HACK_SRC)/screenhackI.h
+gltext.o: $(srcdir)/sphere.h
 gltext.o: $(srcdir)/tube.h
 gltext.o: $(UTILS_SRC)/colors.h
 gltext.o: $(UTILS_SRC)/grabscreen.h
 gltext.o: $(UTILS_SRC)/hsv.h
 gltext.o: $(UTILS_SRC)/resources.h
+gltext.o: $(UTILS_SRC)/textclient.h
 gltext.o: $(UTILS_SRC)/usleep.h
 gltext.o: $(UTILS_SRC)/visual.h
 gltext.o: $(UTILS_SRC)/xshm.h
@@ -1677,20 +1808,27 @@ gltext.o: $(HACK_SRC)/xlockmoreI.h
 gltext.o: $(HACK_SRC)/xlockmore.h
 gltrackball.o: ../../config.h
 gltrackball.o: $(srcdir)/gltrackball.h
+gltrackball.o: $(srcdir)/jwzglesI.h
 gltrackball.o: $(srcdir)/jwzgles.h
 gltrackball.o: $(srcdir)/trackball.h
 glut_stroke.o: ../../config.h
 glut_stroke.o: $(srcdir)/glutstroke.h
+glut_stroke.o: $(srcdir)/jwzglesI.h
 glut_stroke.o: $(srcdir)/jwzgles.h
 glut_swidth.o: ../../config.h
 glut_swidth.o: $(srcdir)/glutstroke.h
+glut_swidth.o: $(srcdir)/jwzglesI.h
 glut_swidth.o: $(srcdir)/jwzgles.h
 glxfonts.o: ../../config.h
+glxfonts.o: $(HACK_SRC)/fps.h
 glxfonts.o: $(srcdir)/glxfonts.h
+glxfonts.o: $(srcdir)/jwzglesI.h
 glxfonts.o: $(srcdir)/jwzgles.h
+glxfonts.o: $(srcdir)/texfont.h
 glxfonts.o: $(UTILS_SRC)/resources.h
 grab-ximage.o: ../../config.h
 grab-ximage.o: $(srcdir)/grab-ximage.h
+grab-ximage.o: $(srcdir)/jwzglesI.h
 grab-ximage.o: $(srcdir)/jwzgles.h
 grab-ximage.o: $(UTILS_SRC)/grabscreen.h
 grab-ximage.o: $(UTILS_SRC)/resources.h
@@ -1699,6 +1837,7 @@ grab-ximage.o: $(UTILS_SRC)/xshm.h
 hilbert.o: ../../config.h
 hilbert.o: $(HACK_SRC)/fps.h
 hilbert.o: $(srcdir)/gltrackball.h
+hilbert.o: $(srcdir)/jwzglesI.h
 hilbert.o: $(srcdir)/jwzgles.h
 hilbert.o: $(srcdir)/rotator.h
 hilbert.o: $(HACK_SRC)/screenhackI.h
@@ -1717,6 +1856,7 @@ hilbert.o: $(HACK_SRC)/xlockmore.h
 hypertorus.o: ../../config.h
 hypertorus.o: $(HACK_SRC)/fps.h
 hypertorus.o: $(srcdir)/gltrackball.h
+hypertorus.o: $(srcdir)/jwzglesI.h
 hypertorus.o: $(srcdir)/jwzgles.h
 hypertorus.o: $(HACK_SRC)/screenhackI.h
 hypertorus.o: $(UTILS_SRC)/colors.h
@@ -1731,6 +1871,7 @@ hypertorus.o: $(HACK_SRC)/xlockmoreI.h
 hypertorus.o: $(HACK_SRC)/xlockmore.h
 hypnowheel.o: ../../config.h
 hypnowheel.o: $(HACK_SRC)/fps.h
+hypnowheel.o: $(srcdir)/jwzglesI.h
 hypnowheel.o: $(srcdir)/jwzgles.h
 hypnowheel.o: $(srcdir)/rotator.h
 hypnowheel.o: $(HACK_SRC)/screenhackI.h
@@ -1747,6 +1888,7 @@ hypnowheel.o: $(HACK_SRC)/xlockmore.h
 involute.o: ../../config.h
 involute.o: $(HACK_SRC)/fps.h
 involute.o: $(srcdir)/involute.h
+involute.o: $(srcdir)/jwzglesI.h
 involute.o: $(srcdir)/jwzgles.h
 involute.o: $(srcdir)/normals.h
 involute.o: $(HACK_SRC)/screenhackI.h
@@ -1761,6 +1903,7 @@ jigglypuff.o: ../../config.h
 jigglypuff.o: $(HACK_SRC)/fps.h
 jigglypuff.o: $(srcdir)/gltrackball.h
 jigglypuff.o: $(HACK_SRC)/images/jigglymap.xpm
+jigglypuff.o: $(srcdir)/jwzglesI.h
 jigglypuff.o: $(srcdir)/jwzgles.h
 jigglypuff.o: $(HACK_SRC)/screenhackI.h
 jigglypuff.o: $(UTILS_SRC)/colors.h
@@ -1778,10 +1921,12 @@ jigsaw.o: ../../config.h
 jigsaw.o: $(HACK_SRC)/fps.h
 jigsaw.o: $(srcdir)/gltrackball.h
 jigsaw.o: $(srcdir)/grab-ximage.h
+jigsaw.o: $(srcdir)/jwzglesI.h
 jigsaw.o: $(srcdir)/jwzgles.h
 jigsaw.o: $(srcdir)/normals.h
 jigsaw.o: $(srcdir)/rotator.h
 jigsaw.o: $(HACK_SRC)/screenhackI.h
+jigsaw.o: $(srcdir)/texfont.h
 jigsaw.o: $(UTILS_SRC)/colors.h
 jigsaw.o: $(UTILS_SRC)/grabscreen.h
 jigsaw.o: $(UTILS_SRC)/hsv.h
@@ -1797,10 +1942,12 @@ juggler3d.o: ../../config.h
 juggler3d.o: $(HACK_SRC)/fps.h
 juggler3d.o: $(srcdir)/gltrackball.h
 juggler3d.o: $(srcdir)/glxfonts.h
+juggler3d.o: $(srcdir)/jwzglesI.h
 juggler3d.o: $(srcdir)/jwzgles.h
 juggler3d.o: $(srcdir)/rotator.h
 juggler3d.o: $(HACK_SRC)/screenhackI.h
 juggler3d.o: $(srcdir)/sphere.h
+juggler3d.o: $(srcdir)/texfont.h
 juggler3d.o: $(srcdir)/tube.h
 juggler3d.o: $(UTILS_SRC)/colors.h
 juggler3d.o: $(UTILS_SRC)/grabscreen.h
@@ -1813,10 +1960,11 @@ juggler3d.o: $(UTILS_SRC)/yarandom.h
 juggler3d.o: $(HACK_SRC)/xlockmoreI.h
 juggler3d.o: $(HACK_SRC)/xlockmore.h
 jwzgles.o: ../../config.h
-jwzgles.o: $(srcdir)/jwzgles.h
+jwzgles.o: $(srcdir)/jwzglesI.h
 klein.o: ../../config.h
 klein.o: $(HACK_SRC)/fps.h
 klein.o: $(srcdir)/gltrackball.h
+klein.o: $(srcdir)/jwzglesI.h
 klein.o: $(srcdir)/jwzgles.h
 klein.o: $(HACK_SRC)/screenhackI.h
 klein.o: $(UTILS_SRC)/colors.h
@@ -1832,7 +1980,8 @@ klein.o: $(HACK_SRC)/xlockmore.h
 lament.o: ../../config.h
 lament.o: $(HACK_SRC)/fps.h
 lament.o: $(srcdir)/gltrackball.h
-lament.o: $(HACK_SRC)/images/lament.xpm
+lament.o: $(HACK_SRC)/images/lament512.xpm
+lament.o: $(srcdir)/jwzglesI.h
 lament.o: $(srcdir)/jwzgles.h
 lament.o: $(srcdir)/normals.h
 lament.o: $(srcdir)/rotator.h
@@ -1851,6 +2000,7 @@ lament.o: $(srcdir)/xpm-ximage.h
 lavalite.o: ../../config.h
 lavalite.o: $(HACK_SRC)/fps.h
 lavalite.o: $(srcdir)/gltrackball.h
+lavalite.o: $(srcdir)/jwzglesI.h
 lavalite.o: $(srcdir)/jwzgles.h
 lavalite.o: $(srcdir)/marching.h
 lavalite.o: $(srcdir)/rotator.h
@@ -1868,6 +2018,7 @@ lavalite.o: $(HACK_SRC)/xlockmore.h
 lavalite.o: $(srcdir)/xpm-ximage.h
 lockward.o: ../../config.h
 lockward.o: $(HACK_SRC)/fps.h
+lockward.o: $(srcdir)/jwzglesI.h
 lockward.o: $(srcdir)/jwzgles.h
 lockward.o: $(HACK_SRC)/screenhackI.h
 lockward.o: $(UTILS_SRC)/colors.h
@@ -1881,12 +2032,14 @@ lockward.o: $(UTILS_SRC)/yarandom.h
 lockward.o: $(HACK_SRC)/xlockmoreI.h
 lockward.o: $(HACK_SRC)/xlockmore.h
 marching.o: ../../config.h
+marching.o: $(srcdir)/jwzglesI.h
 marching.o: $(srcdir)/jwzgles.h
 marching.o: $(srcdir)/marching.h
 marching.o: $(srcdir)/normals.h
 menger.o: ../../config.h
 menger.o: $(HACK_SRC)/fps.h
 menger.o: $(srcdir)/gltrackball.h
+menger.o: $(srcdir)/jwzglesI.h
 menger.o: $(srcdir)/jwzgles.h
 menger.o: $(srcdir)/rotator.h
 menger.o: $(HACK_SRC)/screenhackI.h
@@ -1904,6 +2057,7 @@ mirrorblob.o: ../../config.h
 mirrorblob.o: $(HACK_SRC)/fps.h
 mirrorblob.o: $(srcdir)/gltrackball.h
 mirrorblob.o: $(srcdir)/grab-ximage.h
+mirrorblob.o: $(srcdir)/jwzglesI.h
 mirrorblob.o: $(srcdir)/jwzgles.h
 mirrorblob.o: $(HACK_SRC)/screenhackI.h
 mirrorblob.o: $(UTILS_SRC)/colors.h
@@ -1920,6 +2074,7 @@ moebiusgears.o: ../../config.h
 moebiusgears.o: $(HACK_SRC)/fps.h
 moebiusgears.o: $(srcdir)/gltrackball.h
 moebiusgears.o: $(srcdir)/involute.h
+moebiusgears.o: $(srcdir)/jwzglesI.h
 moebiusgears.o: $(srcdir)/jwzgles.h
 moebiusgears.o: $(srcdir)/normals.h
 moebiusgears.o: $(srcdir)/rotator.h
@@ -1935,12 +2090,14 @@ moebiusgears.o: $(UTILS_SRC)/yarandom.h
 moebiusgears.o: $(HACK_SRC)/xlockmoreI.h
 moebiusgears.o: $(HACK_SRC)/xlockmore.h
 moebius.o: ../../config.h
-moebius.o: $(srcdir)/e_textures.h
 moebius.o: $(HACK_SRC)/fps.h
 moebius.o: $(srcdir)/gltrackball.h
+moebius.o: $(srcdir)/jwzglesI.h
 moebius.o: $(srcdir)/jwzgles.h
 moebius.o: $(srcdir)/rotator.h
 moebius.o: $(HACK_SRC)/screenhackI.h
+moebius.o: $(srcdir)/sphere.h
+moebius.o: $(srcdir)/tube.h
 moebius.o: $(UTILS_SRC)/colors.h
 moebius.o: $(UTILS_SRC)/grabscreen.h
 moebius.o: $(UTILS_SRC)/hsv.h
@@ -1955,11 +2112,13 @@ molecule.o: ../../config.h
 molecule.o: $(HACK_SRC)/fps.h
 molecule.o: $(srcdir)/gltrackball.h
 molecule.o: $(srcdir)/glxfonts.h
+molecule.o: $(srcdir)/jwzglesI.h
 molecule.o: $(srcdir)/jwzgles.h
 molecule.o: molecules.h
 molecule.o: $(srcdir)/rotator.h
 molecule.o: $(HACK_SRC)/screenhackI.h
 molecule.o: $(srcdir)/sphere.h
+molecule.o: $(srcdir)/texfont.h
 molecule.o: $(srcdir)/tube.h
 molecule.o: $(UTILS_SRC)/colors.h
 molecule.o: $(UTILS_SRC)/grabscreen.h
@@ -1973,6 +2132,7 @@ molecule.o: $(HACK_SRC)/xlockmoreI.h
 molecule.o: $(HACK_SRC)/xlockmore.h
 morph3d.o: ../../config.h
 morph3d.o: $(HACK_SRC)/fps.h
+morph3d.o: $(srcdir)/jwzglesI.h
 morph3d.o: $(srcdir)/jwzgles.h
 morph3d.o: $(HACK_SRC)/screenhackI.h
 morph3d.o: $(UTILS_SRC)/colors.h
@@ -1987,6 +2147,7 @@ morph3d.o: $(HACK_SRC)/xlockmoreI.h
 morph3d.o: $(HACK_SRC)/xlockmore.h
 noof.o: ../../config.h
 noof.o: $(HACK_SRC)/fps.h
+noof.o: $(srcdir)/jwzglesI.h
 noof.o: $(srcdir)/jwzgles.h
 noof.o: $(HACK_SRC)/screenhackI.h
 noof.o: $(UTILS_SRC)/colors.h
@@ -2000,11 +2161,14 @@ noof.o: $(UTILS_SRC)/yarandom.h
 noof.o: $(HACK_SRC)/xlockmoreI.h
 noof.o: $(HACK_SRC)/xlockmore.h
 normals.o: ../../config.h
+normals.o: $(srcdir)/jwzglesI.h
+normals.o: $(srcdir)/jwzgles.h
 normals.o: $(srcdir)/normals.h
 photopile.o: ../../config.h
 photopile.o: $(srcdir)/dropshadow.h
 photopile.o: $(HACK_SRC)/fps.h
 photopile.o: $(srcdir)/grab-ximage.h
+photopile.o: $(srcdir)/jwzglesI.h
 photopile.o: $(srcdir)/jwzgles.h
 photopile.o: $(HACK_SRC)/screenhackI.h
 photopile.o: $(srcdir)/texfont.h
@@ -2023,9 +2187,11 @@ pinion.o: $(HACK_SRC)/fps.h
 pinion.o: $(srcdir)/gltrackball.h
 pinion.o: $(srcdir)/glxfonts.h
 pinion.o: $(srcdir)/involute.h
+pinion.o: $(srcdir)/jwzglesI.h
 pinion.o: $(srcdir)/jwzgles.h
 pinion.o: $(srcdir)/normals.h
 pinion.o: $(HACK_SRC)/screenhackI.h
+pinion.o: $(srcdir)/texfont.h
 pinion.o: $(UTILS_SRC)/colors.h
 pinion.o: $(UTILS_SRC)/grabscreen.h
 pinion.o: $(UTILS_SRC)/hsv.h
@@ -2037,11 +2203,17 @@ pinion.o: $(UTILS_SRC)/yarandom.h
 pinion.o: $(HACK_SRC)/xlockmoreI.h
 pinion.o: $(HACK_SRC)/xlockmore.h
 pipeobjs.o: $(srcdir)/buildlwo.h
+pipeobjs.o: ../../config.h
+pipeobjs.o: $(srcdir)/jwzglesI.h
+pipeobjs.o: $(srcdir)/jwzgles.h
 pipes.o: $(srcdir)/buildlwo.h
 pipes.o: ../../config.h
 pipes.o: $(HACK_SRC)/fps.h
+pipes.o: $(srcdir)/gltrackball.h
+pipes.o: $(srcdir)/jwzglesI.h
 pipes.o: $(srcdir)/jwzgles.h
 pipes.o: $(HACK_SRC)/screenhackI.h
+pipes.o: $(srcdir)/sphere.h
 pipes.o: $(srcdir)/teapot.h
 pipes.o: $(UTILS_SRC)/colors.h
 pipes.o: $(UTILS_SRC)/grabscreen.h
@@ -2057,12 +2229,14 @@ polyhedra-gl.o: ../../config.h
 polyhedra-gl.o: $(HACK_SRC)/fps.h
 polyhedra-gl.o: $(srcdir)/gltrackball.h
 polyhedra-gl.o: $(srcdir)/glxfonts.h
+polyhedra-gl.o: $(srcdir)/jwzglesI.h
 polyhedra-gl.o: $(srcdir)/jwzgles.h
 polyhedra-gl.o: $(srcdir)/normals.h
 polyhedra-gl.o: $(srcdir)/polyhedra.h
 polyhedra-gl.o: $(srcdir)/rotator.h
 polyhedra-gl.o: $(HACK_SRC)/screenhackI.h
 polyhedra-gl.o: $(srcdir)/teapot.h
+polyhedra-gl.o: $(srcdir)/texfont.h
 polyhedra-gl.o: $(UTILS_SRC)/colors.h
 polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h
 polyhedra-gl.o: $(UTILS_SRC)/hsv.h
@@ -2078,6 +2252,7 @@ polyhedra.o: $(srcdir)/polyhedra.h
 polytopes.o: ../../config.h
 polytopes.o: $(HACK_SRC)/fps.h
 polytopes.o: $(srcdir)/gltrackball.h
+polytopes.o: $(srcdir)/jwzglesI.h
 polytopes.o: $(srcdir)/jwzgles.h
 polytopes.o: $(HACK_SRC)/screenhackI.h
 polytopes.o: $(UTILS_SRC)/colors.h
@@ -2093,6 +2268,7 @@ polytopes.o: $(HACK_SRC)/xlockmore.h
 providence.o: ../../config.h
 providence.o: $(HACK_SRC)/fps.h
 providence.o: $(srcdir)/gltrackball.h
+providence.o: $(srcdir)/jwzglesI.h
 providence.o: $(srcdir)/jwzgles.h
 providence.o: $(HACK_SRC)/screenhackI.h
 providence.o: $(UTILS_SRC)/colors.h
@@ -2107,6 +2283,7 @@ providence.o: $(HACK_SRC)/xlockmoreI.h
 providence.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: ../../config.h
 pulsar.o: $(HACK_SRC)/fps.h
+pulsar.o: $(srcdir)/jwzglesI.h
 pulsar.o: $(srcdir)/jwzgles.h
 pulsar.o: $(HACK_SRC)/screenhackI.h
 pulsar.o: $(UTILS_SRC)/colors.h
@@ -2120,9 +2297,11 @@ pulsar.o: $(UTILS_SRC)/yarandom.h
 pulsar.o: $(HACK_SRC)/xlockmoreI.h
 pulsar.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: $(srcdir)/xpm-ximage.h
+queens.o: $(srcdir)/chessmodels.h
 queens.o: ../../config.h
 queens.o: $(HACK_SRC)/fps.h
 queens.o: $(srcdir)/gltrackball.h
+queens.o: $(srcdir)/jwzglesI.h
 queens.o: $(srcdir)/jwzgles.h
 queens.o: $(HACK_SRC)/screenhackI.h
 queens.o: $(UTILS_SRC)/colors.h
@@ -2141,6 +2320,7 @@ rotator.o: $(UTILS_SRC)/yarandom.h
 rubikblocks.o: ../../config.h
 rubikblocks.o: $(HACK_SRC)/fps.h
 rubikblocks.o: $(srcdir)/gltrackball.h
+rubikblocks.o: $(srcdir)/jwzglesI.h
 rubikblocks.o: $(srcdir)/jwzgles.h
 rubikblocks.o: $(srcdir)/rotator.h
 rubikblocks.o: $(HACK_SRC)/screenhackI.h
@@ -2156,6 +2336,8 @@ rubikblocks.o: $(HACK_SRC)/xlockmoreI.h
 rubikblocks.o: $(HACK_SRC)/xlockmore.h
 rubik.o: ../../config.h
 rubik.o: $(HACK_SRC)/fps.h
+rubik.o: $(srcdir)/gltrackball.h
+rubik.o: $(srcdir)/jwzglesI.h
 rubik.o: $(srcdir)/jwzgles.h
 rubik.o: $(HACK_SRC)/screenhackI.h
 rubik.o: $(UTILS_SRC)/colors.h
@@ -2168,18 +2350,40 @@ rubik.o: $(UTILS_SRC)/xshm.h
 rubik.o: $(UTILS_SRC)/yarandom.h
 rubik.o: $(HACK_SRC)/xlockmoreI.h
 rubik.o: $(HACK_SRC)/xlockmore.h
+s1_1.o: ../../config.h
 s1_1.o: $(srcdir)/gllist.h
+s1_1.o: $(srcdir)/jwzglesI.h
+s1_1.o: $(srcdir)/jwzgles.h
+s1_2.o: ../../config.h
 s1_2.o: $(srcdir)/gllist.h
+s1_2.o: $(srcdir)/jwzglesI.h
+s1_2.o: $(srcdir)/jwzgles.h
+s1_3.o: ../../config.h
 s1_3.o: $(srcdir)/gllist.h
+s1_3.o: $(srcdir)/jwzglesI.h
+s1_3.o: $(srcdir)/jwzgles.h
+s1_4.o: ../../config.h
 s1_4.o: $(srcdir)/gllist.h
+s1_4.o: $(srcdir)/jwzglesI.h
+s1_4.o: $(srcdir)/jwzgles.h
+s1_5.o: ../../config.h
 s1_5.o: $(srcdir)/gllist.h
+s1_5.o: $(srcdir)/jwzglesI.h
+s1_5.o: $(srcdir)/jwzgles.h
+s1_6.o: ../../config.h
 s1_6.o: $(srcdir)/gllist.h
+s1_6.o: $(srcdir)/jwzglesI.h
+s1_6.o: $(srcdir)/jwzgles.h
+s1_b.o: ../../config.h
 s1_b.o: $(srcdir)/gllist.h
+s1_b.o: $(srcdir)/jwzglesI.h
+s1_b.o: $(srcdir)/jwzgles.h
 sballs.o: ../../config.h
 sballs.o: $(HACK_SRC)/fps.h
 sballs.o: $(srcdir)/gltrackball.h
 sballs.o: $(HACK_SRC)/images/sball-bg.xpm
 sballs.o: $(HACK_SRC)/images/sball.xpm
+sballs.o: $(srcdir)/jwzglesI.h
 sballs.o: $(srcdir)/jwzgles.h
 sballs.o: $(HACK_SRC)/screenhackI.h
 sballs.o: $(UTILS_SRC)/colors.h
@@ -2196,6 +2400,8 @@ sballs.o: $(srcdir)/xpm-ximage.h
 shark.o: $(srcdir)/atlantis.h
 shark.o: ../../config.h
 shark.o: $(HACK_SRC)/fps.h
+shark.o: $(srcdir)/jwzglesI.h
+shark.o: $(srcdir)/jwzgles.h
 shark.o: $(HACK_SRC)/screenhackI.h
 shark.o: $(UTILS_SRC)/colors.h
 shark.o: $(UTILS_SRC)/grabscreen.h
@@ -2207,6 +2413,7 @@ shark.o: $(UTILS_SRC)/yarandom.h
 sierpinski3d.o: ../../config.h
 sierpinski3d.o: $(HACK_SRC)/fps.h
 sierpinski3d.o: $(srcdir)/gltrackball.h
+sierpinski3d.o: $(srcdir)/jwzglesI.h
 sierpinski3d.o: $(srcdir)/jwzgles.h
 sierpinski3d.o: $(srcdir)/rotator.h
 sierpinski3d.o: $(HACK_SRC)/screenhackI.h
@@ -2224,6 +2431,7 @@ skytentacles.o: ../../config.h
 skytentacles.o: $(HACK_SRC)/fps.h
 skytentacles.o: $(srcdir)/gltrackball.h
 skytentacles.o: $(HACK_SRC)/images/scales.xpm
+skytentacles.o: $(srcdir)/jwzglesI.h
 skytentacles.o: $(srcdir)/jwzgles.h
 skytentacles.o: $(srcdir)/normals.h
 skytentacles.o: $(srcdir)/rotator.h
@@ -2254,6 +2462,7 @@ sonar-icmp.o: $(UTILS_SRC)/yarandom.h
 sonar.o: ../../config.h
 sonar.o: $(HACK_SRC)/fps.h
 sonar.o: $(srcdir)/gltrackball.h
+sonar.o: $(srcdir)/jwzglesI.h
 sonar.o: $(srcdir)/jwzgles.h
 sonar.o: $(srcdir)/rotator.h
 sonar.o: $(HACK_SRC)/screenhackI.h
@@ -2284,10 +2493,12 @@ spheremonics.o: ../../config.h
 spheremonics.o: $(HACK_SRC)/fps.h
 spheremonics.o: $(srcdir)/gltrackball.h
 spheremonics.o: $(srcdir)/glxfonts.h
+spheremonics.o: $(srcdir)/jwzglesI.h
 spheremonics.o: $(srcdir)/jwzgles.h
 spheremonics.o: $(srcdir)/normals.h
 spheremonics.o: $(srcdir)/rotator.h
 spheremonics.o: $(HACK_SRC)/screenhackI.h
+spheremonics.o: $(srcdir)/texfont.h
 spheremonics.o: $(UTILS_SRC)/colors.h
 spheremonics.o: $(UTILS_SRC)/grabscreen.h
 spheremonics.o: $(UTILS_SRC)/hsv.h
@@ -2299,11 +2510,13 @@ spheremonics.o: $(UTILS_SRC)/yarandom.h
 spheremonics.o: $(HACK_SRC)/xlockmoreI.h
 spheremonics.o: $(HACK_SRC)/xlockmore.h
 sphere.o: ../../config.h
+sphere.o: $(srcdir)/jwzglesI.h
 sphere.o: $(srcdir)/jwzgles.h
 sphere.o: $(srcdir)/sphere.h
 sproingies.o: ../../config.h
 sproingies.o: $(HACK_SRC)/fps.h
 sproingies.o: $(srcdir)/gllist.h
+sproingies.o: $(srcdir)/jwzglesI.h
 sproingies.o: $(srcdir)/jwzgles.h
 sproingies.o: $(HACK_SRC)/screenhackI.h
 sproingies.o: $(srcdir)/sproingies.h
@@ -2318,6 +2531,7 @@ sproingies.o: $(UTILS_SRC)/yarandom.h
 sproingies.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: ../../config.h
 sproingiewrap.o: $(HACK_SRC)/fps.h
+sproingiewrap.o: $(srcdir)/jwzglesI.h
 sproingiewrap.o: $(srcdir)/jwzgles.h
 sproingiewrap.o: $(HACK_SRC)/screenhackI.h
 sproingiewrap.o: $(srcdir)/sproingies.h
@@ -2332,9 +2546,10 @@ sproingiewrap.o: $(UTILS_SRC)/yarandom.h
 sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: $(HACK_SRC)/xlockmore.h
 stairs.o: ../../config.h
-stairs.o: $(srcdir)/e_textures.h
 stairs.o: $(HACK_SRC)/fps.h
 stairs.o: $(srcdir)/gltrackball.h
+stairs.o: $(HACK_SRC)/images/wood.xpm
+stairs.o: $(srcdir)/jwzglesI.h
 stairs.o: $(srcdir)/jwzgles.h
 stairs.o: $(HACK_SRC)/screenhackI.h
 stairs.o: $(srcdir)/sphere.h
@@ -2348,17 +2563,21 @@ stairs.o: $(UTILS_SRC)/xshm.h
 stairs.o: $(UTILS_SRC)/yarandom.h
 stairs.o: $(HACK_SRC)/xlockmoreI.h
 stairs.o: $(HACK_SRC)/xlockmore.h
+stairs.o: $(srcdir)/xpm-ximage.h
 starwars.o: ../../config.h
 starwars.o: $(HACK_SRC)/fps.h
 starwars.o: $(srcdir)/glut_roman.h
 starwars.o: $(srcdir)/glutstroke.h
+starwars.o: $(srcdir)/jwzglesI.h
 starwars.o: $(srcdir)/jwzgles.h
 starwars.o: $(HACK_SRC)/screenhackI.h
+starwars.o: $(srcdir)/starwars.h
 starwars.o: $(srcdir)/texfont.h
 starwars.o: $(UTILS_SRC)/colors.h
 starwars.o: $(UTILS_SRC)/grabscreen.h
 starwars.o: $(UTILS_SRC)/hsv.h
 starwars.o: $(UTILS_SRC)/resources.h
+starwars.o: $(UTILS_SRC)/textclient.h
 starwars.o: $(UTILS_SRC)/usleep.h
 starwars.o: $(UTILS_SRC)/visual.h
 starwars.o: $(UTILS_SRC)/xshm.h
@@ -2366,6 +2585,7 @@ starwars.o: $(UTILS_SRC)/yarandom.h
 starwars.o: $(HACK_SRC)/xlockmoreI.h
 starwars.o: $(HACK_SRC)/xlockmore.h
 stonerview-move.o: ../../config.h
+stonerview-move.o: $(srcdir)/jwzglesI.h
 stonerview-move.o: $(srcdir)/jwzgles.h
 stonerview-move.o: $(srcdir)/stonerview.h
 stonerview-move.o: $(srcdir)/stonerview-move.h
@@ -2374,6 +2594,7 @@ stonerview-move.o: $(UTILS_SRC)/yarandom.h
 stonerview.o: ../../config.h
 stonerview.o: $(HACK_SRC)/fps.h
 stonerview.o: $(srcdir)/gltrackball.h
+stonerview.o: $(srcdir)/jwzglesI.h
 stonerview.o: $(srcdir)/jwzgles.h
 stonerview.o: $(HACK_SRC)/screenhackI.h
 stonerview.o: $(srcdir)/stonerview.h
@@ -2390,18 +2611,21 @@ stonerview.o: $(UTILS_SRC)/yarandom.h
 stonerview.o: $(HACK_SRC)/xlockmoreI.h
 stonerview.o: $(HACK_SRC)/xlockmore.h
 stonerview-osc.o: ../../config.h
+stonerview-osc.o: $(srcdir)/jwzglesI.h
 stonerview-osc.o: $(srcdir)/jwzgles.h
 stonerview-osc.o: $(srcdir)/stonerview.h
 stonerview-osc.o: $(srcdir)/stonerview-move.h
 stonerview-osc.o: $(srcdir)/stonerview-osc.h
 stonerview-osc.o: $(UTILS_SRC)/yarandom.h
 stonerview-view.o: ../../config.h
+stonerview-view.o: $(srcdir)/jwzglesI.h
 stonerview-view.o: $(srcdir)/jwzgles.h
 stonerview-view.o: $(srcdir)/stonerview.h
 stonerview-view.o: $(srcdir)/stonerview-move.h
 stonerview-view.o: $(srcdir)/stonerview-osc.h
 superquadrics.o: ../../config.h
 superquadrics.o: $(HACK_SRC)/fps.h
+superquadrics.o: $(srcdir)/jwzglesI.h
 superquadrics.o: $(srcdir)/jwzgles.h
 superquadrics.o: $(HACK_SRC)/screenhackI.h
 superquadrics.o: $(UTILS_SRC)/colors.h
@@ -2417,6 +2641,7 @@ superquadrics.o: $(HACK_SRC)/xlockmore.h
 surfaces.o: ../../config.h
 surfaces.o: $(HACK_SRC)/fps.h
 surfaces.o: $(srcdir)/gltrackball.h
+surfaces.o: $(srcdir)/jwzglesI.h
 surfaces.o: $(srcdir)/jwzgles.h
 surfaces.o: $(srcdir)/rotator.h
 surfaces.o: $(HACK_SRC)/screenhackI.h
@@ -2433,6 +2658,7 @@ surfaces.o: $(HACK_SRC)/xlockmore.h
 swim.o: $(srcdir)/atlantis.h
 swim.o: ../../config.h
 swim.o: $(HACK_SRC)/fps.h
+swim.o: $(srcdir)/jwzglesI.h
 swim.o: $(srcdir)/jwzgles.h
 swim.o: $(HACK_SRC)/screenhackI.h
 swim.o: $(UTILS_SRC)/colors.h
@@ -2447,9 +2673,11 @@ swim.o: $(HACK_SRC)/xlockmoreI.h
 tangram.o: ../../config.h
 tangram.o: $(HACK_SRC)/fps.h
 tangram.o: $(srcdir)/glxfonts.h
+tangram.o: $(srcdir)/jwzglesI.h
 tangram.o: $(srcdir)/jwzgles.h
 tangram.o: $(HACK_SRC)/screenhackI.h
 tangram.o: $(srcdir)/tangram_shapes.h
+tangram.o: $(srcdir)/texfont.h
 tangram.o: $(UTILS_SRC)/colors.h
 tangram.o: $(UTILS_SRC)/grabscreen.h
 tangram.o: $(UTILS_SRC)/hsv.h
@@ -2460,11 +2688,19 @@ tangram.o: $(UTILS_SRC)/xshm.h
 tangram.o: $(UTILS_SRC)/yarandom.h
 tangram.o: $(HACK_SRC)/xlockmoreI.h
 tangram.o: $(HACK_SRC)/xlockmore.h
+tangram_shapes.o: ../../config.h
+tangram_shapes.o: $(srcdir)/jwzglesI.h
+tangram_shapes.o: $(srcdir)/jwzgles.h
 tangram_shapes.o: $(srcdir)/tangram_shapes.h
 teapot.o: ../../config.h
+teapot.o: $(srcdir)/jwzglesI.h
 teapot.o: $(srcdir)/jwzgles.h
+teapot.o: $(srcdir)/normals.h
+teapot.o: $(srcdir)/teapot2.h
 teapot.o: $(srcdir)/teapot.h
 texfont.o: ../../config.h
+texfont.o: $(srcdir)/jwzglesI.h
+texfont.o: $(srcdir)/jwzgles.h
 texfont.o: $(srcdir)/texfont.h
 texfont.o: $(UTILS_SRC)/resources.h
 timetunnel.o: ../../config.h
@@ -2474,6 +2710,7 @@ timetunnel.o: $(HACK_SRC)/images/timetunnel0.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel1.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel2.xpm
 timetunnel.o: $(HACK_SRC)/images/tunnelstar.xpm
+timetunnel.o: $(srcdir)/jwzglesI.h
 timetunnel.o: $(srcdir)/jwzgles.h
 timetunnel.o: $(srcdir)/rotator.h
 timetunnel.o: $(HACK_SRC)/screenhackI.h
@@ -2489,23 +2726,55 @@ timetunnel.o: $(UTILS_SRC)/yarandom.h
 timetunnel.o: $(HACK_SRC)/xlockmoreI.h
 timetunnel.o: $(HACK_SRC)/xlockmore.h
 timetunnel.o: $(srcdir)/xpm-ximage.h
+toast2.o: ../../config.h
 toast2.o: $(srcdir)/gllist.h
+toast2.o: $(srcdir)/jwzglesI.h
+toast2.o: $(srcdir)/jwzgles.h
+toaster_base.o: ../../config.h
 toaster_base.o: $(srcdir)/gllist.h
+toaster_base.o: $(srcdir)/jwzglesI.h
+toaster_base.o: $(srcdir)/jwzgles.h
+toaster_handle2.o: ../../config.h
 toaster_handle2.o: $(srcdir)/gllist.h
+toaster_handle2.o: $(srcdir)/jwzglesI.h
+toaster_handle2.o: $(srcdir)/jwzgles.h
+toaster_handle.o: ../../config.h
 toaster_handle.o: $(srcdir)/gllist.h
+toaster_handle.o: $(srcdir)/jwzglesI.h
+toaster_handle.o: $(srcdir)/jwzgles.h
+toaster_jet.o: ../../config.h
 toaster_jet.o: $(srcdir)/gllist.h
+toaster_jet.o: $(srcdir)/jwzglesI.h
+toaster_jet.o: $(srcdir)/jwzgles.h
+toaster_knob.o: ../../config.h
 toaster_knob.o: $(srcdir)/gllist.h
+toaster_knob.o: $(srcdir)/jwzglesI.h
+toaster_knob.o: $(srcdir)/jwzgles.h
+toaster.o: ../../config.h
 toaster.o: $(srcdir)/gllist.h
+toaster.o: $(srcdir)/jwzglesI.h
+toaster.o: $(srcdir)/jwzgles.h
+toaster_slots.o: ../../config.h
 toaster_slots.o: $(srcdir)/gllist.h
+toaster_slots.o: $(srcdir)/jwzglesI.h
+toaster_slots.o: $(srcdir)/jwzgles.h
+toaster_wing.o: ../../config.h
 toaster_wing.o: $(srcdir)/gllist.h
+toaster_wing.o: $(srcdir)/jwzglesI.h
+toaster_wing.o: $(srcdir)/jwzgles.h
+toast.o: ../../config.h
 toast.o: $(srcdir)/gllist.h
+toast.o: $(srcdir)/jwzglesI.h
+toast.o: $(srcdir)/jwzgles.h
 topblock.o: ../../config.h
 topblock.o: $(HACK_SRC)/fps.h
 topblock.o: $(srcdir)/gltrackball.h
+topblock.o: $(srcdir)/jwzglesI.h
 topblock.o: $(srcdir)/jwzgles.h
 topblock.o: $(HACK_SRC)/screenhackI.h
 topblock.o: $(srcdir)/sphere.h
 topblock.o: $(srcdir)/topblock.h
+topblock.o: $(srcdir)/tube.h
 topblock.o: $(UTILS_SRC)/colors.h
 topblock.o: $(UTILS_SRC)/grabscreen.h
 topblock.o: $(UTILS_SRC)/hsv.h
@@ -2518,13 +2787,23 @@ topblock.o: $(HACK_SRC)/xlockmoreI.h
 topblock.o: $(HACK_SRC)/xlockmore.h
 trackball.o: ../../config.h
 trackball.o: $(srcdir)/trackball.h
+tronbit_idle1.o: ../../config.h
 tronbit_idle1.o: $(srcdir)/gllist.h
+tronbit_idle1.o: $(srcdir)/jwzglesI.h
+tronbit_idle1.o: $(srcdir)/jwzgles.h
+tronbit_idle2.o: ../../config.h
 tronbit_idle2.o: $(srcdir)/gllist.h
+tronbit_idle2.o: $(srcdir)/jwzglesI.h
+tronbit_idle2.o: $(srcdir)/jwzgles.h
+tronbit_no.o: ../../config.h
 tronbit_no.o: $(srcdir)/gllist.h
+tronbit_no.o: $(srcdir)/jwzglesI.h
+tronbit_no.o: $(srcdir)/jwzgles.h
 tronbit.o: ../../config.h
 tronbit.o: $(HACK_SRC)/fps.h
 tronbit.o: $(srcdir)/gllist.h
 tronbit.o: $(srcdir)/gltrackball.h
+tronbit.o: $(srcdir)/jwzglesI.h
 tronbit.o: $(srcdir)/jwzgles.h
 tronbit.o: $(srcdir)/rotator.h
 tronbit.o: $(HACK_SRC)/screenhackI.h
@@ -2539,12 +2818,17 @@ tronbit.o: $(UTILS_SRC)/xshm.h
 tronbit.o: $(UTILS_SRC)/yarandom.h
 tronbit.o: $(HACK_SRC)/xlockmoreI.h
 tronbit.o: $(HACK_SRC)/xlockmore.h
+tronbit_yes.o: ../../config.h
 tronbit_yes.o: $(srcdir)/gllist.h
+tronbit_yes.o: $(srcdir)/jwzglesI.h
+tronbit_yes.o: $(srcdir)/jwzgles.h
 tube.o: ../../config.h
+tube.o: $(srcdir)/jwzglesI.h
 tube.o: $(srcdir)/jwzgles.h
 tube.o: $(srcdir)/tube.h
 tunnel_draw.o: ../../config.h
 tunnel_draw.o: $(HACK_SRC)/fps.h
+tunnel_draw.o: $(srcdir)/jwzglesI.h
 tunnel_draw.o: $(srcdir)/jwzgles.h
 tunnel_draw.o: $(HACK_SRC)/screenhackI.h
 tunnel_draw.o: $(srcdir)/tunnel_draw.h
@@ -2559,6 +2843,7 @@ tunnel_draw.o: $(UTILS_SRC)/yarandom.h
 tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h
 voronoi.o: ../../config.h
 voronoi.o: $(HACK_SRC)/fps.h
+voronoi.o: $(srcdir)/jwzglesI.h
 voronoi.o: $(srcdir)/jwzgles.h
 voronoi.o: $(HACK_SRC)/screenhackI.h
 voronoi.o: $(UTILS_SRC)/colors.h
@@ -2574,6 +2859,8 @@ voronoi.o: $(HACK_SRC)/xlockmore.h
 whale.o: $(srcdir)/atlantis.h
 whale.o: ../../config.h
 whale.o: $(HACK_SRC)/fps.h
+whale.o: $(srcdir)/jwzglesI.h
+whale.o: $(srcdir)/jwzgles.h
 whale.o: $(HACK_SRC)/screenhackI.h
 whale.o: $(UTILS_SRC)/colors.h
 whale.o: $(UTILS_SRC)/grabscreen.h
@@ -2585,8 +2872,10 @@ whale.o: $(UTILS_SRC)/yarandom.h
 xlock-gl-utils.o: ../../config.h
 xlock-gl-utils.o: $(HACK_SRC)/fps.h
 xlock-gl-utils.o: $(srcdir)/glxfonts.h
+xlock-gl-utils.o: $(srcdir)/jwzglesI.h
 xlock-gl-utils.o: $(srcdir)/jwzgles.h
 xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h
+xlock-gl-utils.o: $(srcdir)/texfont.h
 xlock-gl-utils.o: $(UTILS_SRC)/colors.h
 xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h
 xlock-gl-utils.o: $(UTILS_SRC)/hsv.h
index 3c9e1de3da3f1ce7aea10fb83065e6c3a0cc6940..0ca7f05f433bc7f9042b05a2ba4379693f05b556 100644 (file)
@@ -1504,9 +1504,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)),  */
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */
 
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0);
 
@@ -1539,9 +1537,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
   glTranslatef(0.0, 0.0, -16.0);
   glRotatef(60.0, 1.0, 0.0, 0.0);
   glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* sync */
   if(!draw_antmaze_strip(mi)) {
index ee244ea5c137b38fe7bdd95d488ef9258c2cb090..29eee782af6de99df3e09307f59b3e209cf5c5e7 100644 (file)
@@ -196,7 +196,7 @@ static void Init(ModeInfo * mi)
                LoadTexture(mi, texture5,5);
                glEnable(GL_TEXTURE_2D);
        }
-       sa->ts = InitTunnel();
+       sa->ts = atunnel_InitTunnel();
        
        /* Set lighting parameters */
        if (do_light)
@@ -270,8 +270,8 @@ ENTRYPOINT void draw_atunnel(ModeInfo * mi)
 
        glLoadIdentity();
 
-       DrawTunnel(sa->ts, do_texture, do_light, sa->texture);
-       SplashScreen(sa->ts, do_wire, do_texture, do_light);
+       atunnel_DrawTunnel(sa->ts, do_texture, do_light, sa->texture);
+       atunnel_SplashScreen(sa->ts, do_wire, do_texture, do_light);
 
        glFlush();  
        /* manage framerate display */
index 979907210a19beacc86b0ad42d38e4c578ba1326..3396217ffeabe84c5fe0b091722734d93d154c7b 100644 (file)
@@ -1,4 +1,4 @@
-/* boing, Copyright (c) 2005-2008 Jamie Zawinski <jwz@jwz.org>
+/* boing, Copyright (c) 2005-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -461,6 +461,13 @@ reshape_boing (ModeInfo *mi, int width, int height)
 
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
+
+  if (height > width)
+    {
+      GLfloat s = width / (GLfloat) height;
+      glScalef (s, s, s);
+    }
+
   gluPerspective (8.0, 1/h, 1.0, 10.0);
 
   glMatrixMode(GL_MODELVIEW);
@@ -629,8 +636,19 @@ draw_boing (ModeInfo *mi)
     tick_physics (mi);
 
   glPushMatrix ();
+
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (1/s, s, 1);
+      }
+  }
+
   gltrackball_rotate (bp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos);
 
index 21ece3c7dc714d70dc88716f40f40faf61ac0974..b769c1172c9eea34f4dc829bf6c5da125c77e1da 100644 (file)
@@ -447,6 +447,8 @@ draw_floater (ModeInfo *mi, floater *f)
   glPushMatrix();
   glTranslatef (f->x, f->y, f->z);
 
+  gltrackball_rotate (bp->trackball);
+
   glRotatef (y * 360, 0.0, 1.0, 0.0);
   if (f->spinner_p)
     {
@@ -500,7 +502,6 @@ draw_cow (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-  gltrackball_rotate (bp->trackball);
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   glScalef (0.5, 0.5, 0.5);
index 2a2a0ceeb3f08bdd26f04f07c7902adbdcfd7bd3..49abc5814cb4ff786507ba09257dcaa5cdc6a5f9 100644 (file)
@@ -516,13 +516,23 @@ loading_msg (ModeInfo *mi, int n)
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
-  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
 
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+  }
+
+  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
   glTranslatef ((MI_WIDTH(mi)  - ss->loading_sw) / 2,
                 (MI_HEIGHT(mi) - ss->loading_sh) / 2,
                 0);
@@ -833,6 +843,8 @@ draw_carousel (ModeInfo *mi)
 
   glPushMatrix();
 
+  glRotatef(current_device_rotation(), 0, 0, 1);
+
 
   /* Run the startup "un-shrink" animation.
    */
@@ -868,7 +880,6 @@ draw_carousel (ModeInfo *mi)
   {
     double x, y, z;
     gltrackball_rotate (ss->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     /* Tilt the tube up or down by up to 30 degrees */
     get_position (ss->rot, &x, &y, &z, !ss->button_down_p);
index a752d4f75de06af0c2e52e659caf2123f172a2ef..28f5c57070eda9fdf6ed71545183c587e76447ef 100644 (file)
@@ -42,7 +42,7 @@ typedef struct {
 } ChessGame;
 
 #define GAMES 7
-ChessGame games[GAMES] = {
+static ChessGame games[GAMES] = {
   
   /** 
       game 1:
index d47895aaaa896b953705aa03d37d059f3c45a26c..eac7b25273d631f177c828e7406dbe853e3b187c 100644 (file)
 #define SETBACKREF 65524
 #define BACKREF 65523
 
-unsigned short classic_pawn_data[] = {
+static unsigned short classic_pawn_data[] = {
   SPIN,16,
   350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880,
   SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340,
   ENDOFDATA
 };
 
-unsigned short classic_rook_data[] = {
+static unsigned short classic_rook_data[] = {
   SPIN,16,
   380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300,
   ENDOFDATA
 };
 
-unsigned short classic_knight_data[] = {
+static unsigned short classic_knight_data[] = {
   SPIN,16,
   410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580,
 
@@ -161,7 +161,7 @@ unsigned short classic_knight_data[] = {
   ENDOFDATA
 };
 
-unsigned short classic_bishop_data[] = {
+static unsigned short classic_bishop_data[] = {
   SPIN,16,
   400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940,
   SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480,
@@ -169,7 +169,7 @@ unsigned short classic_bishop_data[] = {
   ENDOFDATA
 };
 
-unsigned short classic_queen_data[] = {
+static unsigned short classic_queen_data[] = {
   SPIN,16,
   480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180,
   SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920,
@@ -178,7 +178,7 @@ unsigned short classic_queen_data[] = {
   ENDOFDATA
 };
 
-unsigned short classic_king_data[] = {
+static unsigned short classic_king_data[] = {
   SPIN,16,
   500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260,
   SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970,
@@ -205,7 +205,7 @@ unsigned short classic_king_data[] = {
   ENDOFDATA
 };
 
-unsigned short knight_data[] = {
+static unsigned short knight_data[] = {
   VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611,
   6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611,
   2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517,
@@ -1016,7 +1016,7 @@ unsigned short knight_data[] = {
   ENDOFDATA
 };
 
-unsigned short bishop_data[] = {
+static unsigned short bishop_data[] = {
   VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790,
   4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532,
   1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154,
@@ -1109,7 +1109,7 @@ unsigned short bishop_data[] = {
   ENDOFDATA
 };
 
-unsigned short king_data[] = {
+static unsigned short king_data[] = {
   SPIN,20,
   11378,0,11378,856,SEAM,10928,1152,
   11302,1684,11302,2209,11065,2684,
@@ -1165,7 +1165,7 @@ unsigned short king_data[] = {
   ENDOFDATA
 };
 
-unsigned short queen_data[] = {
+static unsigned short queen_data[] = {
   SPIN,24,
   11092,0,11092,914,SEAM,10653,1284,
   11018,1798,11018,2358,10787,2866,
@@ -1185,7 +1185,7 @@ unsigned short queen_data[] = {
   ENDOFDATA
 };
 
-unsigned short pawn_data[] = {
+static unsigned short pawn_data[] = {
   SPIN,16,
   7395,0,7395,609,
   SEAM,7102,910,7345,1199,7345,1572,7191,1910,
@@ -1200,7 +1200,7 @@ unsigned short pawn_data[] = {
   ENDOFDATA
 };
 
-unsigned short rook_data[] = {
+static unsigned short rook_data[] = {
   SPIN,20,
   9374,0,9374,756,SEAM,9003,1062,9311,1487,
   9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595,
@@ -1268,7 +1268,8 @@ unsigned short rook_data[] = {
 
 static double piece_size;
 
-static int enumerate_ring_vertices( int steps, unsigned short *data, void *h,
+static int
+enumerate_ring_vertices( int steps, unsigned short *data, void *h,
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   int patlen = 1,i;
@@ -1293,7 +1294,8 @@ static int enumerate_ring_vertices( int steps, unsigned short *data, void *h,
   return pts + patlen * 2 - data;
 }
 
-static void enumerate_vertices( unsigned short *data, void *h,
+static void
+enumerate_vertices( unsigned short *data, void *h,
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   while(1) {
@@ -1368,7 +1370,8 @@ static void enumerate_vertices( unsigned short *data, void *h,
   }
 }
 
-static void enumerate_ring_faces( int basevertex, int steps,
+static void
+enumerate_ring_faces( int basevertex, int steps,
   int prevbase, int prevsteps, void *h, int *count_ret,
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
@@ -1415,7 +1418,8 @@ static void enumerate_ring_faces( int basevertex, int steps,
   }
 }
 
-static void enumerate_faces( unsigned short *data, void *h, int *count_ret,
+static void
+enumerate_faces( unsigned short *data, void *h, int *count_ret,
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
   int basevertex = 0, startofvertices = 0;
@@ -1546,7 +1550,8 @@ static void enumerate_faces( unsigned short *data, void *h, int *count_ret,
   }
 }
 
-static void normalize( float v[3]) {
+static void
+normalize( float v[3]) {
   float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
 
   if( d == 0.0) {
@@ -1562,7 +1567,8 @@ static void normalize( float v[3]) {
   v[2] /= d;
 }
 
-static void normcrossprod( float v1[3], float v2[3], float out[3])
+static void
+normcrossprod( float v1[3], float v2[3], float out[3])
 {
   out[0] = v1[1] * v2[2] - v1[2] * v2[1];
   out[1] = v1[2] * v2[0] - v1[0] * v2[2];
@@ -1580,16 +1586,18 @@ static void normcrossprod( float v1[3], float v2[3], float out[3])
         (v1)[1] += (v2)[1], \
         (v1)[2] += (v2)[2])
 
-int numverts;
-float *vertices;
-float *normals;
+static int numverts;
+static float *vertices;
+static float *normals;
 
-static void count_vertex( void *dummy, double x, double y, double z)
+static void
+count_vertex( void *dummy, double x, double y, double z)
 {
   numverts++;
 }
 
-static void add_normal( void *dummy, int v1, int v2, int v3, int v4)
+static void
+add_normal( void *dummy, int v1, int v2, int v3, int v4)
 {
   float surfnormal[3],d1[3],d2[3];
 
@@ -1620,7 +1628,8 @@ static void add_normal( void *dummy, int v1, int v2, int v3, int v4)
   }
 }
 
-static void collect_vertex( void *curvert, double x, double y, double z)
+static void
+collect_vertex( void *curvert, double x, double y, double z)
 {
   (*(float**)curvert)[0] = x;
   (*(float**)curvert)[1] = y;
@@ -1628,7 +1637,8 @@ static void collect_vertex( void *curvert, double x, double y, double z)
   (*(float**)curvert) += 3;
 }
 
-static void draw_face( void *dummy, int v1, int v2, int v3, int v4)
+static void
+draw_face( void *dummy, int v1, int v2, int v3, int v4)
 {
   glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS);
   glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]);
@@ -1644,7 +1654,8 @@ static void draw_face( void *dummy, int v1, int v2, int v3, int v4)
   glEnd();
 }
 
-static int draw_piece( unsigned short *piece_data)
+static int
+draw_piece( unsigned short *piece_data)
 {
   int i;
   float *curvert;
@@ -1685,7 +1696,7 @@ static int draw_piece( unsigned short *piece_data)
   return count;
 }
 
-void gen_model_lists( int classic, int poly_count[PIECES]) {
+void chessmodels_gen_lists( int classic, int poly_count[PIECES]) {
 
   Bool queen_only_p = classic < 0;
   if (classic < 0) classic = 0;
index 87a26a52da6983f60d8aef274b9b5f89fecd2dc1..6e41e22414c3421adb474fec9fee7d5b07788934 100644 (file)
@@ -40,5 +40,5 @@
 #define BROOK    12
 #define BPAWN    13 
 
-extern void gen_model_lists( int classic, int poly_count[PIECES]);
+extern void chessmodels_gen_lists( int classic, int poly_count[PIECES]);
 
index 3dc86d832b66269d9f20a32be774de1aac771733..d0c84ed083a67cb7ba459db2633e729bbd5be9ca 100644 (file)
@@ -575,8 +575,8 @@ draw_cube (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-  gltrackball_rotate (bp->trackball);
   glRotatef(current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (bp->trackball);
 
   glScalef (2, 2, 2);
 
index c4e925c73670fdcc389bce8954db781cad9f0004..2d8acbd47db7afad3a7e1281ec90d37d380d8949 100644 (file)
@@ -131,6 +131,10 @@ struct _cberg_state {
 
     double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b,
            vf0r,vf0g,vf0b, vf1r, vf1g, vf1b;
+
+    Bool button_down_p;
+    int mouse_x, mouse_y;
+    struct timeval paused;
 };
 
 
@@ -1297,6 +1301,38 @@ ENTRYPOINT Bool crackberg_handle_event (ModeInfo *mi, XEvent *ev)
                 break;
             default:            return False;
         }
+    } else if (ev->xany.type == ButtonPress &&
+               ev->xbutton.button == Button1) {
+      cberg->button_down_p = True;
+      cberg->mouse_x = ev->xbutton.x;
+      cberg->mouse_y = ev->xbutton.y;
+      cberg->motion_state = MOTION_MANUAL;
+      cberg->paused.tv_sec = 0;
+    } else if (ev->xany.type == ButtonRelease &&
+               ev->xbutton.button == Button1) {
+      cberg->button_down_p = False;
+      cberg->motion_state = MOTION_AUTO;
+      /* After mouse-up, don't go back into auto-motion mode for a second, so
+         that repeated click-and-drag gestures don't fight with auto-motion. */
+      gettimeofday(&cberg->paused, NULL);
+    } else if (ev->xany.type == MotionNotify &&
+               cberg->button_down_p) {
+      int dx = ev->xmotion.x - cberg->mouse_x;
+      int dy = ev->xmotion.y - cberg->mouse_y;
+      cberg->mouse_x = ev->xmotion.x;
+      cberg->mouse_y = ev->xmotion.y;
+      cberg->motion_state = MOTION_MANUAL;
+
+      /* Take the larger dimension, since motion_state doesn't scale */
+      if (dx > 0 && dx > dy) dy = 0;
+      if (dx < 0 && dx < dy) dy = 0;
+      if (dy > 0 && dy > dx) dx = 0;
+      if (dy < 0 && dy < dx) dx = 0;
+
+      if      (dx > 0) cberg->motion_state |= MOTION_LEFT;
+      else if (dx < 0) cberg->motion_state |= MOTION_RIGHT;
+      else if (dy > 0) cberg->motion_state |= MOTION_FORW;
+      else if (dy < 0) cberg->motion_state |= MOTION_BACK;
     } else
         return False;
     return True;
@@ -1320,7 +1356,8 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
 
         cberg->elapsed = cur_frame - cberg->prev_frame;
 
-        if (cberg->motion_state == MOTION_AUTO) {
+        if (cberg->motion_state == MOTION_AUTO &&
+            cberg->paused.tv_sec < cur_frame_t.tv_sec) {
             cberg->x += cberg->dx * cberg->elapsed;
             cberg->y += cberg->dy * cberg->elapsed;
             /* cberg->z */
index d4cd8eb30deee4b120d9e41705fd488f29cf2641..5a477bce5e553dc0a646992cb2052c945eea5a9b 100644 (file)
@@ -26,7 +26,7 @@
 
 /* TODO:
  *  some simple "solve mode"
- *  use rotator and trackball
+ *  use rotator
  */
 
 /*-
                    "*wireframe:     False         \n"
 
 # define refresh_cube21 0
-# define cube21_handle_event 0
 #include "xlockmore.h"
 
+#include "gltrackball.h"
+
 #ifdef USE_GL
 
 #define DEF_SPIN        "True"
@@ -178,6 +179,9 @@ typedef struct {
   GLfloat texp, texq, posc[6];
   GLfloat color_inner[4];
 
+  Bool button_down_p;
+  trackball_state *trackball;
+
 } cube21_conf;
 
 static cube21_conf *cube21 = NULL;
@@ -510,6 +514,12 @@ static Bool draw_main(ModeInfo *mi, cube21_conf *cp)
   else
     glTranslatef(0, 0, zpos);
   glScalef(size, size, size);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   glRotatef(cp->xrot, 1.0, 0.0, 0.0);
   glRotatef(cp->yrot, 0.0, 1.0, 0.0);
   if(cp->wire) glColor3f(0.7, 0.7, 0.7);
@@ -833,6 +843,49 @@ ENTRYPOINT void reshape_cube21(ModeInfo *mi, int width, int height)
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
+ENTRYPOINT Bool
+cube21_handle_event (ModeInfo *mi, XEvent *event)
+{
+  cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      cp->button_down_p = True;
+      gltrackball_start (cp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      cp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (cp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           cp->button_down_p)
+    {
+      gltrackball_track (cp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
 ENTRYPOINT void release_cube21(ModeInfo *mi) 
 {
   if (cube21 != NULL) {
@@ -858,6 +911,8 @@ ENTRYPOINT void init_cube21(ModeInfo *mi)
   }
   cp = &cube21[MI_SCREEN(mi)];
 
+  cp->trackball = gltrackball_init ();
+
   if(!cp->texp) {
     init_posc(cp);
     make_texture(cp);
index 5e8c3a042309503b90aa649667ea448a279d98f2..8ae8143f0670b567d5db44e89e393ba53dd24a78 100644 (file)
@@ -560,7 +560,10 @@ draw_cube (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (cc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index deb6774c497e4962b40730644793fbc7c7e51863..400af7437f27eb6a2641ae39fdc58b05847b4e35 100644 (file)
@@ -141,7 +141,12 @@ static Bool draw_main(cubicgrid_conf *cp)
   glTranslatef(0, 0, zpos);
 
   glScalef(size/ticks, size/ticks, size/ticks);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p);
   glRotatef (x * 360, 1.0, 0.0, 0.0);
   glRotatef (y * 360, 0.0, 1.0, 0.0);
index 621e70cdca9929b92adae478c304a16edeb2a058..7b709092580fd76e24434a116e7c3e3c59700194 100644 (file)
@@ -336,7 +336,10 @@ draw_ball (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 6d04233e4ef2cc8f1af8d6894b28cfa087ebe4e6..1b192428deb070565135ed6ebe71cf54bb5f20b3 100644 (file)
 
 #ifdef USE_GL /* whole file */
 
+#ifdef HAVE_JWZGLES
+# include "dnapizza.h"
+#else
+# define HAVE_TESS
+#endif
+
 typedef enum {
   HELIX_IN, HELIX, HELIX_OUT, 
   PIZZA_IN, PIZZA, PIZZA_OUT,
@@ -1373,6 +1379,8 @@ make_frame (logo_configuration *dc, int wire)
 /* Make some pizza.
  */
 
+#ifdef HAVE_TESS
+
 typedef struct {
   GLdouble *points;
   int i;
@@ -1423,12 +1431,13 @@ tess_end_cb (void)
   glEnd();
 }
 
+#endif /* HAVE_TESS */
+
 
 static int
 make_pizza (logo_configuration *dc, int facetted, int wire)
 {
   int polys = 0;
-
   int topfaces = (facetted ? 48 : 120);
   int discfaces = (facetted ? 12 : 120);
   int npoints = topfaces * 2 + 100;
@@ -1440,18 +1449,19 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4;
   GLfloat th, x, y, s;
   int i, j, k;
-  tess_out TO, *to = &TO;
-  GLUtesselator *tess = gluNewTess();
   int endpoints;
   int endedge1;
 
+# ifdef HAVE_TESS
+  tess_out TO, *to = &TO;
+  GLUtesselator *tess = gluNewTess();
+
   to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble));
   to->i = 0;
 
-
-# ifndef  _GLUfuncptr
-#  define _GLUfuncptr void(*)(void)
-# endif
+#  ifndef  _GLUfuncptr
+#   define _GLUfuncptr void(*)(void)
+#  endif
 
   gluTessCallback(tess,GLU_TESS_BEGIN,      (_GLUfuncptr)tess_begin_cb);
   gluTessCallback(tess,GLU_TESS_VERTEX,     (_GLUfuncptr)glVertex3dv);
@@ -1462,6 +1472,8 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire);
   gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
 
+# endif /* HAVE_TESS */
+
   glPushMatrix();
 
   s = 1.9;
@@ -1546,6 +1558,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       y = p[1];
       polys++;
     }
+
   do_normal (points[0], points[1],  -thick2,
              points[0], points[1],   thick2,
              x,         y,           thick2);
@@ -1556,6 +1569,21 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   polys++;
   glEnd();
 
+# ifndef HAVE_TESS
+  if (wire)
+    {
+      /* Outline of slice */
+      glBegin (GL_LINE_LOOP);
+      for (i = 0; i < endpoints; i++)
+        glVertex3f (points[i*3], points[i*3+1], -thick2);
+      glEnd();
+      glBegin (GL_LINE_LOOP);
+      for (i = 0; i < endpoints; i++)
+        glVertex3f (points[i*3], points[i*3+1], thick2);
+      glEnd();
+    }
+# endif /* HAVE_TESS */
+
   /* Compute the holes */
   step = M_PI * 2 / discfaces;
   for (k = 0; k < nholes; k++)
@@ -1583,6 +1611,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   for (k = 0; k < nholes; k++)
     {
       GLdouble *p = holes + (discfaces * 3 * k);
+
       glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
       for (i = 0; i < discfaces; i++)
         {
@@ -1599,8 +1628,23 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       glVertex3f (p[0], p[1],  thick2);
       polys++;
       glEnd();
+# ifndef HAVE_TESS
+      if (wire)
+        {
+          /* Outline of holes */
+          glBegin (GL_LINE_LOOP);
+          for (i = 0; i < discfaces; i++)
+            glVertex3f (p[i*3], p[i*3+1], -thick2);
+          glEnd();
+          glBegin (GL_LINE_LOOP);
+          for (i = 0; i < discfaces; i++)
+            glVertex3f (p[i*3], p[i*3+1], thick2);
+          glEnd();
+        }
+# endif /* !HAVE_TESS */
     }
 
+# ifdef HAVE_TESS
   glTranslatef (0, 0, -thick2);
   for (y = 0; y <= 1; y++)
     {
@@ -1640,8 +1684,32 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
 
       gluTessEndPolygon (tess);
     }
+
   glTranslatef (0, 0, -thick2);
 
+# else  /* !HAVE_TESS */
+  if (! wire)
+    {
+      glDisableClientState (GL_COLOR_ARRAY);
+      glDisableClientState (GL_NORMAL_ARRAY);
+      glDisableClientState (GL_TEXTURE_COORD_ARRAY);
+      glEnableClientState (GL_VERTEX_ARRAY);
+      glVertexPointer (3, GL_FLOAT, 0, dnapizza_triangles);
+
+      glTranslatef(0, 0, thick2);
+      glNormal3f (0, 0, 1);
+      glFrontFace (GL_CW);
+      glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+
+      glTranslatef(0, 0, -thick2*2);
+      glNormal3f (0, 0, -1);
+      glFrontFace (GL_CCW);
+      glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+
+      glTranslatef(0, 0, thick2);
+    }
+# endif /* !HAVE_TESS */
+
 
   /* Compute the crust */
 
@@ -1748,10 +1816,13 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       glEnd();
     }
 
+# ifdef HAVE_TESS
   gluDeleteTess (tess);
+  free (to->points);
+# endif /* HAVE_TESS */
+
   free (points);
   free (holes);
-  free (to->points);
 
   glPopMatrix();
 
@@ -2150,8 +2221,6 @@ draw_logo (ModeInfo *mi)
   mi->polygon_count = 0;
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
 
-  glRotatef(current_device_rotation(), 0, 0, 1);
-
   if (!wire &&
       dc->wire_overlay == 0 &&
       (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
@@ -2232,10 +2301,15 @@ draw_logo (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
   {
     GLfloat scale = 0;
     glScalef(3, 3, 3);
 
+# ifdef USE_IPHONE
+    glScalef (0.7, 0.7, 0.7);  /* make room for the frame */
+# endif
+
     glColor3f(dc->color[0], dc->color[1], dc->color[2]);
 
     /* Draw frame before trackball rotation */
@@ -2253,6 +2327,7 @@ draw_logo (ModeInfo *mi)
       glScalef (1, scale, scale);
       if (wire)
         {
+          glDisable (GL_LIGHTING);
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
         }
@@ -2260,6 +2335,7 @@ draw_logo (ModeInfo *mi)
         {
           glCallList (dc->frame_list);
           glDisable (GL_LIGHTING);
+          glColor3fv (dc->color);
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
           if (!wire) glEnable (GL_LIGHTING);
@@ -2299,6 +2375,7 @@ draw_logo (ModeInfo *mi)
 
       if (wire)
         {
+          glDisable (GL_LIGHTING);
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
         }
@@ -2306,9 +2383,11 @@ draw_logo (ModeInfo *mi)
         {
           glCallList (dc->gasket_list);
           glDisable (GL_LIGHTING);
+          glColor3fv (dc->color);
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
           if (!wire) glEnable (GL_LIGHTING);
+          glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor);
         }
       else
         {
@@ -2338,6 +2417,7 @@ draw_logo (ModeInfo *mi)
 
     if (wire)
       {
+        glDisable (GL_LIGHTING);
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
         else
@@ -2352,6 +2432,7 @@ draw_logo (ModeInfo *mi)
           glCallList (dc->helix_list_facetted);
 
         glDisable (GL_LIGHTING);
+        glColor3fv (dc->color);
 
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
@@ -2381,6 +2462,6 @@ draw_logo (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
-XSCREENSAVER_MODULE_2 ("DNAlogo", dnalogo, logo)
+XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo)
 
 #endif /* USE_GL */
diff --git a/hacks/glx/dnapizza.h b/hacks/glx/dnapizza.h
new file mode 100644 (file)
index 0000000..6dd48b9
--- /dev/null
@@ -0,0 +1,122 @@
+/* DNA Pizza Logo, Copyright (c) 2011-2012 Jamie Zawinski <jwz@dnalounge.com>
+
+   Since GLUtesselator doesn't exist in the iOS build, the slice shape
+   of the DNA Pizza logo is hardcoded there, instead of being generated.
+   (These vertexes were generated by GLUtesselator and saved.)
+ */
+
+static const GLfloat dnapizza_triangles[]={
+       0.315,0.213301,0,       0.296699,0.195,0,       0.309,0.455,0,
+       0.296699,0.195,0,       0.29,0.17,0,    0.309,0.455,0,
+       0.309,0.455,0,  0.29,0.17,0,    0.26,0.452,0,
+       0.29,0.17,0,    0.23,0.042,0,   0.26,0.452,0,
+       0.26,0.452,0,   0.23,0.042,0,   0.216,0.293,0,
+       0.23,0.042,0,   0.21,0,0,       0.216,0.293,0,
+       0.216,0.293,0,  0.21,0,0,       0.149,0.178,0,
+       0.21,0,0,       0.102,0.178,0,  0.149,0.178,0,
+       0.376,0.572,0,  0.353,0.613,0,  0.411,0.68402,0,
+       0.376,0.572,0,  0.411,0.68402,0,        0.383301,0.195,0,
+       0.376,0.572,0,  0.383301,0.195,0,       0.365,0.213301,0,
+       0.376,0.572,0,  0.365,0.213301,0,       0.34,0.22,0,
+       0.376,0.572,0,  0.34,0.22,0,    0.315,0.213301,0,
+       0.376,0.572,0,  0.315,0.213301,0,       0.309,0.455,0,
+       0.39,0.17,0,    0.383301,0.195,0,       0.411,0.68402,0,
+       0.39,0.17,0,    0.411,0.68402,0,        0.48,0.17,0,
+       0.39,0.17,0,    0.48,0.17,0,    0.488039,0.14,0,
+       0.39,0.17,0,    0.488039,0.14,0,        0.51,0.118038,0,
+       0.39,0.17,0,    0.51,0.118038,0,        0.616,0.042,0,
+       0.39,0.17,0,    0.616,0.042,0,  0.383301,0.145,0,
+       0.798,0,0,      0.641,0,0,      0.645595,0.469053,0,
+       0.798,0,0,      0.645595,0.469053,0,    0.653683,0.457714,0,
+       0.798,0,0,      0.653683,0.457714,0,    0.661572,0.446236,0,
+       0.798,0,0,      0.661572,0.446236,0,    0.669259,0.434622,0,
+       0.798,0,0,      0.669259,0.434622,0,    0.676742,0.422876,0,
+       0.798,0,0,      0.676742,0.422876,0,    0.68402,0.411,0,
+       0.798,0,0,      0.68402,0.411,0,        0.691088,0.399,0,
+       0.798,0,0,      0.691088,0.399,0,       0.697947,0.386878,0,
+       0.798,0,0,      0.697947,0.386878,0,    0.704592,0.374638,0,
+       0.798,0,0,      0.704592,0.374638,0,    0.711023,0.362284,0,
+       0.798,0,0,      0.711023,0.362284,0,    0.717238,0.34982,0,
+       0.798,0,0,      0.717238,0.34982,0,     0.723234,0.337249,0,
+       0.798,0,0,      0.723234,0.337249,0,    0.729009,0.324576,0,
+       0.798,0,0,      0.729009,0.324576,0,    0.734563,0.311803,0,
+       0.798,0,0,      0.734563,0.311803,0,    0.739893,0.298936,0,
+       0.798,0,0,      0.739893,0.298936,0,    0.744997,0.285978,0,
+       0.798,0,0,      0.744997,0.285978,0,    0.749875,0.272932,0,
+       0.798,0,0,      0.749875,0.272932,0,    0.754524,0.259803,0,
+       0.798,0,0,      0.754524,0.259803,0,    0.758943,0.246596,0,
+       0.798,0,0,      0.758943,0.246596,0,    0.763131,0.233313,0,
+       0.798,0,0,      0.763131,0.233313,0,    0.767087,0.219959,0,
+       0.798,0,0,      0.767087,0.219959,0,    0.770809,0.206538,0,
+       0.798,0,0,      0.770809,0.206538,0,    0.774296,0.193054,0,
+       0.798,0,0,      0.774296,0.193054,0,    0.777547,0.179511,0,
+       0.798,0,0,      0.777547,0.179511,0,    0.780562,0.165914,0,
+       0.798,0,0,      0.780562,0.165914,0,    0.783338,0.152266,0,
+       0.798,0,0,      0.783338,0.152266,0,    0.785877,0.138571,0,
+       0.798,0,0,      0.785877,0.138571,0,    0.788175,0.124835,0,
+       0.798,0,0,      0.788175,0.124835,0,    0.790234,0.11106,0,
+       0.798,0,0,      0.790234,0.11106,0,     0.792052,0.097252,0,
+       0.798,0,0,      0.792052,0.097252,0,    0.793628,0.083414,0,
+       0.798,0,0,      0.793628,0.083414,0,    0.794963,0.06955,0,
+       0.798,0,0,      0.794963,0.06955,0,     0.796056,0.055666,0,
+       0.798,0,0,      0.796056,0.055666,0,    0.796906,0.041764,0,
+       0.798,0,0,      0.796906,0.041764,0,    0.797514,0.02785,0,
+       0.798,0,0,      0.797514,0.02785,0,     0.797878,0.013927,0,
+       0.641,0,0,      0.616,0.042,0,  0.620162,0.502198,0,
+       0.641,0,0,      0.620162,0.502198,0,    0.628833,0.491298,0,
+       0.641,0,0,      0.628833,0.491298,0,    0.637311,0.480248,0,
+       0.641,0,0,      0.637311,0.480248,0,    0.645595,0.469053,0,
+       0.616,0.042,0,  0.51,0.118038,0,        0.54,0.11,0,
+       0.616,0.042,0,  0.54,0.11,0,    0.57,0.118038,0,
+       0.616,0.042,0,  0.57,0.118038,0,        0.591962,0.14,0,
+       0.616,0.042,0,  0.591962,0.14,0,        0.6,0.17,0,
+       0.616,0.042,0,  0.6,0.17,0,     0.601962,0.33,0,
+       0.616,0.042,0,  0.601962,0.33,0,        0.61,0.36,0,
+       0.616,0.042,0,  0.61,0.36,0,    0.611303,0.512945,0,
+       0.616,0.042,0,  0.611303,0.512945,0,    0.620162,0.502198,0,
+       0.48,0.17,0,    0.411,0.68402,0,        0.422875,0.676743,0,
+       0.48,0.17,0,    0.422875,0.676743,0,    0.434622,0.669259,0,
+       0.48,0.17,0,    0.434622,0.669259,0,    0.446236,0.661572,0,
+       0.48,0.17,0,    0.446236,0.661572,0,    0.457714,0.653684,0,
+       0.48,0.17,0,    0.457714,0.653684,0,    0.469052,0.645596,0,
+       0.48,0.17,0,    0.469052,0.645596,0,    0.480248,0.637311,0,
+       0.48,0.17,0,    0.480248,0.637311,0,    0.488038,0.2,0,
+       0.616,0.042,0,  0.23,0.042,0,   0.315,0.126699,0,
+       0.616,0.042,0,  0.315,0.126699,0,       0.34,0.12,0,
+       0.616,0.042,0,  0.34,0.12,0,    0.365,0.126699,0,
+       0.616,0.042,0,  0.365,0.126699,0,       0.383301,0.145,0,
+       0.23,0.042,0,   0.29,0.17,0,    0.296699,0.145,0,
+       0.23,0.042,0,   0.296699,0.145,0,       0.315,0.126699,0,
+       0.58362,0.544235,0,     0.593029,0.533966,0,    0.601961,0.39,0,
+       0.593029,0.533966,0,    0.602258,0.523535,0,    0.601961,0.39,0,
+       0.601961,0.39,0,        0.602258,0.523535,0,    0.61,0.36,0,
+       0.602258,0.523535,0,    0.611303,0.512945,0,    0.61,0.36,0,
+       0.58,0.411962,0,        0.55,0.42,0,    0.554337,0.574033,0,
+       0.58,0.411962,0,        0.554337,0.574033,0,    0.564271,0.564271,0,
+       0.58,0.411962,0,        0.564271,0.564271,0,    0.574033,0.554338,0,
+       0.58,0.411962,0,        0.574033,0.554338,0,    0.58362,0.544235,0,
+       0.58,0.411962,0,        0.58362,0.544235,0,     0.601961,0.39,0,
+       0.55,0.42,0,    0.52,0.411962,0,        0.523535,0.602258,0,
+       0.55,0.42,0,    0.523535,0.602258,0,    0.533966,0.59303,0,
+       0.55,0.42,0,    0.533966,0.59303,0,     0.544235,0.58362,0,
+       0.55,0.42,0,    0.544235,0.58362,0,     0.554337,0.574033,0,
+       0.51,0.221962,0,        0.488038,0.2,0, 0.49,0.36,0,
+       0.488038,0.2,0, 0.491298,0.628833,0,    0.49,0.36,0,
+       0.49,0.36,0,    0.491298,0.628833,0,    0.498038,0.39,0,
+       0.491298,0.628833,0,    0.502197,0.620163,0,    0.498038,0.39,0,
+       0.498038,0.39,0,        0.502197,0.620163,0,    0.52,0.411962,0,
+       0.502197,0.620163,0,    0.512944,0.611304,0,    0.52,0.411962,0,
+       0.52,0.411962,0,        0.512944,0.611304,0,    0.523535,0.602258,0,
+       0.49,0.36,0,    0.498039,0.33,0,        0.51,0.221962,0,
+       0.498039,0.33,0,        0.52,0.308039,0,        0.51,0.221962,0,
+       0.51,0.221962,0,        0.52,0.308039,0,        0.54,0.23,0,
+       0.52,0.308039,0,        0.55,0.3,0,     0.54,0.23,0,
+       0.54,0.23,0,    0.55,0.3,0,     0.57,0.221962,0,
+       0.55,0.3,0,     0.58,0.308039,0,        0.57,0.221962,0,
+       0.57,0.221962,0,        0.58,0.308039,0,        0.591962,0.2,0,
+       0.58,0.308039,0,        0.601962,0.33,0,        0.591962,0.2,0,
+       0.591962,0.2,0, 0.601962,0.33,0,        0.6,0.17,0,
+       0.488038,0.2,0, 0.480248,0.637311,0,    0.491298,0.628833,0,
+       0.26,0.452,0,   0.216,0.293,0,  0.192,0.332,0,
+       0.102,0.178,0,  0.21,0,0,       0,0,0,
+};
index eabc91c81d0f3ad2a5e382014be667d69997bec2..e1c83eabbe157bf9215a912387dd72c3acb2e2b9 100644 (file)
@@ -333,33 +333,42 @@ static void drawMovingPiece(ModeInfo *mi, Chesscreen *cs, int shadow)
       cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN;
   }
   else if(cs->mpiece % PIECES == KNIGHT) {
-    GLfloat shine[1];
-    GLfloat spec[4];
-    GLfloat mult;
-    glTranslatef(cs->steps < 50 ? cs->from[1] : cs->to[1], 0.0, 
-                cs->steps < 50 ? cs->from[0] : cs->to[0]);
-
-    mult = cs->steps < 10 
-      ? (1.0 - cs->steps / 10.0) : 100 - cs->steps < 10 
-      ? (1.0 - (100 - cs->steps) / 10.0) : 0.0;
-
-    shine[0] = mult*shininess[0];
-    spec[0] = mult*specular[0];
-    spec[1] = mult*specular[1];
-    spec[2] = mult*specular[2];
-    spec[3] = 1.0;
-    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shine);
-    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+    /* If there is nothing in the path of a knight, move it by sliding,
+       just like the other pieces.  But if there are any pieces on the
+       middle two squares in its path, the knight would intersect them,
+       so in that case, move it in an airborne arc. */
+    GLfloat y;
+    int i, j;
+    Bool blocked_p = False;
+    int fromx = MIN(cs->from[1], cs->to[1]);
+    int fromy = MIN(cs->from[0], cs->to[0]);
+    int tox   = MAX(cs->from[1], cs->to[1]);
+    int toy   = MAX(cs->from[0], cs->to[0]);
+    if (fromx == tox-2) fromx = tox = fromx+1;
+    if (fromy == toy-2) fromy = toy = fromy+1;
+    for (i = fromy; i <= toy; i++) {
+      for (j = fromx; j <= tox; j++) {
+        if (cs->game.board[i][j]) {
+          blocked_p = True;
+          break;
+        }
+      }
+    }
 
-    glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->mpiece/7][0], 
-             shadow ? MaterialShadow[1] : cs->colors[cs->mpiece/7][1], 
-             shadow ? MaterialShadow[2] : cs->colors[cs->mpiece/7][2],
-             fabs(49-cs->steps)/49.0);
+    if (!blocked_p)
+      goto SLIDE;
 
-    glScalef(fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0);
-  }
-  else
+    /* Move by hopping. */
+    y = 1.5 * sin (M_PI * cs->steps / 100.0);
+    glTranslatef(cs->from[1]+cs->steps*cs->dx, y,
+                 cs->from[0]+cs->steps*cs->dz);
+
+  } else {
+  SLIDE:
+    /* Move by sliding. */
     glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz);
+  }
+
 
   if(!cs->wire)
     glEnable(GL_BLEND);
@@ -434,15 +443,87 @@ static void drawBoard(ModeInfo *mi, Chesscreen *cs)
 
       mi->polygon_count++;
     }
-
-  /* chop underneath board */
-/*   glColor3f(0, 0, 0); */
-/*   glNormal3f(0, -1, 0); */
-/*   glVertex3f(0,         0,  BOARDSIZE); */
-/*   glVertex3f(0,         0,  0); */
-/*   glVertex3f(BOARDSIZE, 0,  0); */
-/*   glVertex3f(BOARDSIZE, 0,  BOARDSIZE); */
   glEnd();
+
+  {
+    GLfloat off = 0.01;
+    GLfloat w = BOARDSIZE;
+    GLfloat h = 0.1;
+
+    /* Give the board a slight lip. */
+    /* #### oops, normals are wrong here, but you can't tell */
+
+    glColor3f(0.3, 0.3, 0.3);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    mi->polygon_count += 4;
+
+    /* Fill in the underside of the board with an invisible black box
+       to hide the reflections that are not on tiles.  Probably there's
+       a way to do this with stencils instead.
+     */
+    w -= off*2;
+    h = 5;
+
+    glPushMatrix();
+    glTranslatef (off, 0, off);
+    glDisable(GL_LIGHTING);
+    glColor3f(0,0,0);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    mi->polygon_count += 4;
+    glPopMatrix();
+    if (!cs->wire)
+      glEnable(GL_LIGHTING);
+  }
 }
 
 static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) 
@@ -639,11 +720,10 @@ static void display(ModeInfo *mi, Chesscreen *cs)
   /** setup perspectiv */
   glTranslatef(0.0, 0.0, -1.5*BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (cs->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
-  glRotatef(cs->theta*100, 0.0, 1.0, 0.0);
+  if (rotate)
+    glRotatef(cs->theta*100, 0.0, 1.0, 0.0);
   glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE);
 
 /*   cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */
@@ -799,7 +879,7 @@ ENTRYPOINT void init_chess(ModeInfo *mi)
     make_piece_texture(cs);
     make_board_texture(cs);
   }
-  gen_model_lists( classic, cs->poly_counts);
+  chessmodels_gen_lists( classic, cs->poly_counts);
 
   if(!cs->wire) {
     setup_lights(cs);
index d83c0e45a6a55437c257461330c4d073e73e6425..bd0803130d70269f8ead02df2b6b7af5227abaac 100644 (file)
@@ -618,6 +618,7 @@ static int display(Engine *e)
             e->lookat[0], e->lookat[1], e->lookat[2], 
             0.0, 1.0, 0.0);
   glPushMatrix();
+
   glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
   glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp);
@@ -627,9 +628,15 @@ static int display(Engine *e)
     get_position (e->rot, &x, &y, &z, !e->button_down_p);
     glTranslatef(x*16-9, y*14-7, z*16-10);
   }
+
   if (spin) {
     double x, y, z;
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (e->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
     get_rotation(e->rot, &x, &y, &z, !e->button_down_p);
     glRotatef(x*ONEREV, 1.0, 0.0, 0.0);
     glRotatef(y*ONEREV, 0.0, 1.0, 0.0);
@@ -983,6 +990,7 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
 
   mi->polygon_count = display(e);
 
+  glColor3f (1, 1, 0);
   if (do_titles)
       print_gl_string (mi->dpy, 
 # ifdef HAVE_GLBITMAP
index 0d534e53785b81fc5bb92cf48fb35acdcc3fbaa9..640f21f704f996220c2e396656b48d8d4d43c887 100644 (file)
@@ -270,9 +270,7 @@ display(Flipflopcreen *c)
     /** setup perspectif */
     glTranslatef(0.0, 0.0, -c->reldist*board_avg_size);
     glRotatef(22.5, 1.0, 0.0, 0.0);  
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (c->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
     glRotatef(c->theta*100, 0.0, 1.0, 0.0);
     glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */
 
index b9915f5a7fc7c5e3e9c100cee8290bdff4e86e8e..23217f03a178617ae0892bbbd6b58833c9cb803b 100644 (file)
@@ -810,10 +810,11 @@ draw_toasters (ModeInfo *mi)
   glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(bp->view_x, 1, 0, 0);
   glRotatef(bp->view_y, 0, 1, 0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
-  gltrackball_rotate (bp->user_trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
+  /* Rotate the scene around a point that's a little deeper in. */
+  glTranslatef (0, 0, -50);
+  gltrackball_rotate (bp->user_trackball);
+  glTranslatef (0, 0,  50);
 
 #if 0
   {
index 42a9e70b02fe5ae2a4a6ca04e34ba138cd8f7741..bc925dd542b37629058448af639211711e2b7624 100644 (file)
@@ -869,7 +869,10 @@ draw_gears (ModeInfo *mi)
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 80310cc285efe7b7e950b5721daaf002be94798d..f3829b59c707efa6960344dd2da98bf92fbf92d5 100644 (file)
@@ -281,7 +281,10 @@ gflux_handle_event (ModeInfo *mi, XEvent *event)
 static void
 userRot(gfluxstruct *gp)
 {
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (gp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 }
 
 /* draw the gflux once */
index 0ec1af3f48e4ea8e91cb15f5efc766b2a0706088..e652048ae8901f08956a76778991868c83663eb0 100644 (file)
@@ -1197,8 +1197,7 @@ reshape_glcells( ModeInfo *mi, int width, int height )
   
   if (st->food) free( st->food );
   st->food = (int *)malloc( ((width*height)/16)*sizeof(int) );
-  
-  create_cells( st );
+  /* create_cells( st );*/
 }
 
 ENTRYPOINT void 
index 4738b71d999546596e50dbc6934565db1c6cb45f..6bf5ccd95df246d56f6eb9dca29dcfdbf1db0f10 100644 (file)
@@ -416,7 +416,10 @@ draw_knot (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 21cf1f4db00680bc01fd55015817191df7a29bb7..98e13e8d38334fe36cc3846f41bbe4cf710e68d1 100644 (file)
@@ -589,7 +589,10 @@ draw_planet (ModeInfo * mi)
                (y - 0.5) * 15,
                (z - 0.5) * 8);
 
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (gp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 
   glRotatef (90,1,0,0);
 
index 1ef4c130db171c0969c93526a194406e376de92f..eb522a031b2b0b7e9f256c2b1a1e5001d25974f6 100644 (file)
@@ -126,11 +126,12 @@ reshape_glschool(ModeInfo *mi, int width, int height)
 
        glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
        if (sc->school != (School *)0) {
-               setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
+               glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
                glDeleteLists(sc->bboxList, 1);
-                createBBoxList(&SCHOOL_BBOX(sc->school), &sc->bboxList, wire);
+                glschool_createBBoxList(&SCHOOL_BBOX(sc->school),
+                                        &sc->bboxList, wire);
        }
-       reshape(width, height);
+       glschool_reshape(width, height);
 }
 
 ENTRYPOINT void
@@ -162,7 +163,7 @@ init_glschool(ModeInfo *mi)
                                        sc->colors, &sc->nColors,
                                        False, 0, False);
 
-       sc->school = initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum,
+       sc->school = glschool_initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum,
                                                        MinRadius, AvoidFact, MatchFact, CenterFact, TargetFact,
                                                        DistComp);
        if (sc->school == (School *)0) {
@@ -172,11 +173,12 @@ init_glschool(ModeInfo *mi)
 
        reshape_glschool(mi, width, height);
 
-       initGLEnv(DoFog);
-       initFishes(sc->school);
-       createDrawLists(&SCHOOL_BBOX(sc->school), &sc->bboxList, &sc->goalList, &sc->fishList,
-                        &sc->fish_polys, &sc->box_polys, wire);
-       computeAccelerations(sc->school);
+       glschool_initGLEnv(DoFog);
+       glschool_initFishes(sc->school);
+       glschool_createDrawLists(&SCHOOL_BBOX(sc->school), 
+                                 &sc->bboxList, &sc->goalList, &sc->fishList,
+                                 &sc->fish_polys, &sc->box_polys, wire);
+       glschool_computeAccelerations(sc->school);
 }
 
 ENTRYPOINT void
@@ -196,17 +198,19 @@ draw_glschool(ModeInfo *mi)
         mi->polygon_count = 0;
 
        if ((sc->goalCounter % GoalChgFreq) == 0)
-               newGoal(sc->school);
+               glschool_newGoal(sc->school);
        sc->goalCounter++;
 
        sc->rotCounter++;
        sc->rotCounter = (sc->rotCounter%360);
 
-       applyMovements(sc->school);
-       drawSchool(sc->colors, sc->school, sc->bboxList, sc->goalList, sc->fishList, sc->rotCounter, sc->drawGoal, sc->drawBBox, 
-                   sc->fish_polys, sc->box_polys,
-                   &mi->polygon_count);
-       computeAccelerations(sc->school);
+       glschool_applyMovements(sc->school);
+       glschool_drawSchool(sc->colors, sc->school, sc->bboxList, 
+                            sc->goalList, sc->fishList, sc->rotCounter, 
+                              sc->drawGoal, sc->drawBBox, 
+                            sc->fish_polys, sc->box_polys,
+                            &mi->polygon_count);
+       glschool_computeAccelerations(sc->school);
 
        if (mi->fps_p)
                do_fps(mi);
index 5eef4e67482635ffbfef75a6b39087c37baaba27..32b4a5f4c403ef5afc628dbf4d48f0f195fe61a6 100644 (file)
@@ -77,7 +77,7 @@ getDifferenceVector(double *v0, double *v1, double *diff)
 
 
 void
-initFish(Fish *f, double *mins, double *ranges)
+glschool_initFish(Fish *f, double *mins, double *ranges)
 {
        int i;
 
@@ -92,7 +92,7 @@ initFish(Fish *f, double *mins, double *ranges)
 
 
 void
-initFishes(School *s)
+glschool_initFishes(School *s)
 {
        int             i;
        Fish    *f = (Fish *)0;
@@ -103,11 +103,11 @@ initFishes(School *s)
        Fish    *theFishes = SCHOOL_FISHES(s);
 
        for(i = 0, f = theFishes; i < nFish; i++, f++)
-               initFish(f, mins, ranges);
+               glschool_initFish(f, mins, ranges);
 }
 
 
-void
+static void
 applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double momentum)
 {
        int                     i;
@@ -141,7 +141,7 @@ applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double mom
 
 
 void
-applyMovements(School *s)
+glschool_applyMovements(School *s)
 {
        int             i = 0;
        Fish    *f = (Fish *)0;
@@ -158,7 +158,7 @@ applyMovements(School *s)
 
 
 School *
-initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum,
+glschool_initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum,
                   double minRadius, double avoidFact, double matchFact, double centerFact, double targetFact,
                   double distComp)
 {
@@ -193,14 +193,14 @@ initSchool(int nFish, double accLimit, double maxV, double minV, double distExp,
 }
 
 void
-freeSchool(School *s)
+glschool_freeSchool(School *s)
 {
        free(SCHOOL_FISHES(s));
        free(s);
 }
 
 void
-setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
+glschool_setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
 {
        int             i;
        BBox    *bbox = &SCHOOL_BBOX(s);
@@ -217,7 +217,7 @@ setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zM
 
 
 void
-newGoal(School *s)
+glschool_newGoal(School *s)
 {
        SCHOOL_IGOAL(s,0) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,0) + SCHOOL_IMID(s,0);
        SCHOOL_IGOAL(s,1) = 0.40*(drand48()-0.5)*SCHOOL_IRANGE(s,1) + SCHOOL_IMID(s,1);
@@ -226,7 +226,7 @@ newGoal(School *s)
 
 
 double
-computeNormalAndThetaToPlusZ(double *v, double *xV)
+glschool_computeNormalAndThetaToPlusZ(double *v, double *xV)
 {
        double  x1 = 0.0;
        double  y1 = 0.0;
@@ -255,7 +255,7 @@ computeNormalAndThetaToPlusZ(double *v, double *xV)
 
 
 int
-computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel)
+glschool_computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel)
 {
        int             i;
        double  dist;
@@ -296,7 +296,7 @@ computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, d
 
 
 void
-computeAccelerations(School *s)
+glschool_computeAccelerations(School *s)
 {
        int             i;
        int             j;
@@ -326,7 +326,7 @@ computeAccelerations(School *s)
                clearVector(centroid);
                clearVector(avoidance);
                clearVector(FISH_ACC(ref));
-               neighborCount = computeGroupVectors(s, ref, avoidance, centroid, avgVel);
+               neighborCount = glschool_computeGroupVectors(s, ref, avoidance, centroid, avgVel);
 
                /* avoidanceAccel[] = avoidance[] * AvoidFact */
                scaleVector(avoidance, avoidFact);
index 88f8800eb5df703f356d5805b015268bfc5f4e73..339e778fe51f69463f9b1033d94cb621e81728b4 100644 (file)
@@ -107,20 +107,20 @@ typedef struct {
 #define SCHOOL_FISHES(s)               ((s)->theFish)
 #define SCHOOL_IFISH(s,i)              ((s)->theFish[i])
 
-extern void            initFishes(School *);
-extern void            initFish(Fish *, double *, double *);
+extern void            glschool_initFishes(School *);
+extern void            glschool_initFish(Fish *, double *, double *);
 
-extern void            applyMovements(School *);
-extern void            applyFishMovements(Fish *, BBox *, double, double, double);
+extern void            glschool_applyMovements(School *);
+/* extern void         applyFishMovements(Fish *, BBox *, double, double, double); */
 
-extern void            freeSchool(School *);
-extern School          *initSchool(int, double, double, double, double, double, double, double, double, double, double, double);
+extern void            glschool_freeSchool(School *);
+extern School          *glschool_initSchool(int, double, double, double, double, double, double, double, double, double, double, double);
 
-extern void            newGoal(School *);
-extern void            setBBox(School *, double, double, double, double, double, double);
+extern void            glschool_newGoal(School *);
+extern void            glschool_setBBox(School *, double, double, double, double, double, double);
 
-extern void            computeAccelerations(School *);
-extern double          computeNormalAndThetaToPlusZ(double *, double *);
-int                    computeGroupVectors(School *, Fish *, double *, double *, double *);
+extern void            glschool_computeAccelerations(School *);
+extern double          glschool_computeNormalAndThetaToPlusZ(double *, double *);
+int                    glschool_computeGroupVectors(School *, Fish *, double *, double *, double *);
 
 #endif /* __GLSCHOOL_ALG_H__ */
index 3775b109c5d705d6007f3fc5f6fac4f4d9037e97..660580b98538b016ee560f02154dd7709c267058 100644 (file)
@@ -15,7 +15,7 @@
 #include "tube.h"
 
 void
-drawGoal(double *goal, GLuint goalList)
+glschool_drawGoal(double *goal, GLuint goalList)
 {
        glColor3f(1.0, 0.0, 0.0);
        glPushMatrix();
@@ -28,7 +28,7 @@ drawGoal(double *goal, GLuint goalList)
 }
 
 int
-drawBoundingBox(BBox *bbox, Bool wire)
+glschool_drawBoundingBox(BBox *bbox, Bool wire)
 {
   int polys = 0;
        double          xMin = BBOX_XMIN(bbox);
@@ -98,18 +98,18 @@ drawBoundingBox(BBox *bbox, Bool wire)
 }
 
 int
-createBBoxList(BBox *bbox, GLuint *bboxList, int wire)
+glschool_createBBoxList(BBox *bbox, GLuint *bboxList, int wire)
 {
   int polys = 0;
        *bboxList = glGenLists(1);
        glNewList(*bboxList, GL_COMPILE);
-       polys = drawBoundingBox(bbox, wire);
+       polys = glschool_drawBoundingBox(bbox, wire);
        glEndList();
         return polys;
 }
 
 void
-createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire)
+glschool_createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire)
 {
 
         int faces = 16;
@@ -117,7 +117,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList
         *box_polys = 0;
         *fish_polys = 0;
 
-        *box_polys +=  createBBoxList(bbox, bboxList, wire);
+        *box_polys += glschool_createBBoxList(bbox, bboxList, wire);
 
         *box_polys = 0;
         *fish_polys = 0;
@@ -145,7 +145,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList
 
 
 void
-initLights(void)
+glschool_initLights(void)
 {
        GLfloat         amb[4] = {0.1, 0.1, 0.1, 1.0};
        GLfloat         dif[4] = {1.0, 1.0, 1.0, 1.0};
@@ -165,7 +165,7 @@ initLights(void)
 }
 
 void
-initFog()
+glschool_initFog(void)
 {
        GLfloat         fog[4] = {0.0, 0.0, 0.15, 1.0};
 
@@ -177,7 +177,7 @@ initFog()
 }
 
 void
-initGLEnv(Bool doFog)
+glschool_initGLEnv(Bool doFog)
 {
        GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
 
@@ -194,12 +194,12 @@ initGLEnv(Bool doFog)
        glShadeModel(GL_SMOOTH);
        glEnable(GL_CULL_FACE);
 
-       initLights();
-       if (doFog) initFog();
+       glschool_initLights();
+       if (doFog) glschool_initFog();
 }
 
 void
-reshape(int width, int height)
+glschool_reshape(int width, int height)
 {
        GLfloat h = (GLfloat) width / (GLfloat) height;
 
@@ -214,7 +214,7 @@ reshape(int width, int height)
 }
 
 void
-getColorVect(XColor *colors, int index, double *colorVect)
+glschool_getColorVect(XColor *colors, int index, double *colorVect)
 {
        colorVect[0] = colors[index].red / 65535.0;
        colorVect[1] = colors[index].green / 65535.0;
@@ -222,7 +222,7 @@ getColorVect(XColor *colors, int index, double *colorVect)
 }
 
 void
-drawSchool(XColor *colors, School *s,
+glschool_drawSchool(XColor *colors, School *s,
                   GLuint bboxList, GLuint goalList, GLuint fishList,
                   int rotCounter, Bool drawGoal_p, Bool drawBBox_p,
            int fish_polys, int box_polys, unsigned long *polys)
@@ -248,16 +248,16 @@ drawSchool(XColor *colors, School *s,
                 *polys += box_polys;
        }
 
-       if (drawGoal_p) drawGoal(SCHOOL_GOAL(s), goalList);
+       if (drawGoal_p) glschool_drawGoal(SCHOOL_GOAL(s), goalList);
 
        for(i = 0, f = theFishes; i < nFish; i++, f++) {
-               colTheta = computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect);
-               rotTheta = computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect);
+               colTheta = glschool_computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect);
+               rotTheta = glschool_computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect);
 
                if (FISH_IAVGVEL(f,2) < 0.0) colTheta = 180.0 - colTheta;
                if (FISH_VZ(f) < 0.0) rotTheta = 180.0 - rotTheta;
 
-               getColorVect(colors, (int)(colTheta+240)%360, colorVect);
+               glschool_getColorVect(colors, (int)(colTheta+240)%360, colorVect);
                glColor3f(colorVect[0], colorVect[1], colorVect[2]);
 
                glPushMatrix();
index 7676a0fd3febc782011181d4e86b9c23ea44de3f..ac311f7db7e80d20b50419f61e4ba522403d04e5 100644 (file)
 
 #include "glschool_alg.h"
 
-extern void initFog(void);
-extern void initGLEnv(Bool);
-extern void initLights(void);
-extern void reshape(int, int);
-extern void drawGoal(double *, GLuint);
-extern void getColorVect(XColor *, int, double *);
-extern int drawBoundingBox(BBox *, Bool);
-extern int createBBoxList(BBox *, GLuint *, int);
-extern void createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool);
-extern void drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, 
+extern void glschool_initFog(void);
+extern void glschool_initGLEnv(Bool);
+extern void glschool_initLights(void);
+extern void glschool_reshape(int, int);
+extern void glschool_drawGoal(double *, GLuint);
+extern void glschool_getColorVect(XColor *, int, double *);
+extern int glschool_drawBoundingBox(BBox *, Bool);
+extern int glschool_createBBoxList(BBox *, GLuint *, int);
+extern void glschool_createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool);
+extern void glschool_drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, 
                        int, int, unsigned long *);
 
 #endif /* __GLSCHOOL_GL_H__ */
index 070a4e33d49d10c67561fb3d9f18d20bdcf6c11a..43d50fb9649b45d2bfe2e31c1eee42d5bef3dcc9 100644 (file)
@@ -1,4 +1,4 @@
-/* gltext, Copyright (c) 2001-2008 Jamie Zawinski <jwz@jwz.org>
+/* gltext, Copyright (c) 2001-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -30,6 +30,7 @@
 #include "xlockmore.h"
 #include "colors.h"
 #include "tube.h"
+#include "sphere.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "textclient.h"
@@ -233,6 +234,10 @@ parse_text (ModeInfo *mi)
 #  if defined(_AIX)
           sprintf(tp->text, "%s\n%s %s.%s",
                   uts.nodename, uts.sysname, uts.version, uts.release);
+#  elif defined(USE_IPHONE)
+          /* "My iPhone\n iPhone4,1\n Darwin 11.0.0" */
+          sprintf(tp->text, "%s\n%s\n%s %s",
+                  uts.nodename, uts.machine, uts.sysname, uts.release);
 #  elif defined(__APPLE__)  /* MacOS X + XDarwin */
           {
             const char *file = 
@@ -444,14 +449,26 @@ fill_character (GLUTstrokeFont font, int c, Bool wire, int *polysP)
 # else
             int smooth = False;
 # endif
+
             if (j != stroke->num_coords)
               *polysP += tube (lx,       ly,       0,
                                coord->x, coord->y, 0,
                                tube_width,
                                tube_width * 0.15,
-                               TUBE_FACES, smooth, True, wire);
+                               TUBE_FACES, smooth, False, wire);
             lx = coord->x;
             ly = coord->y;
+
+            /* Put a sphere at the endpoint of every line segment.  Wasteful
+               on curves like "0" but necessary on corners like "4". */
+            if (! wire)
+              {
+                glPushMatrix();
+                glTranslatef (lx, ly, 0);
+                glScalef (tube_width, tube_width, tube_width);
+                *polysP += unit_sphere (TUBE_FACES, TUBE_FACES, wire);
+                glPopMatrix();
+              }
           }
       }
       return (int) (ch->right + tube_width);
@@ -586,6 +603,7 @@ draw_text (ModeInfo *mi)
 
   glPushMatrix ();
   glScalef(1.1, 1.1, 1.1);
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   {
     double x, y, z;
@@ -595,7 +613,6 @@ draw_text (ModeInfo *mi)
                  (z - 0.5) * 8);
 
     gltrackball_rotate (tp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     if (face_front_p)
       {
index c0ccaa133d54f246f8e53a170b63733a8c40333b..93d4c54263ef97e2610616d794013e10f0acbc5d 100644 (file)
@@ -29,6 +29,8 @@
 #include "trackball.h"
 #include "gltrackball.h"
 
+extern double current_device_rotation (void);  /* Bah, it's in fps.h */
+
 struct trackball_state {
   int x, y;
   GLfloat q[4];
@@ -55,6 +57,7 @@ gltrackball_reset (trackball_state *ts)
   trackball (ts->q, 0, 0, 0, 0);
 }
 
+
 /* Begin tracking the mouse: Call this when the mouse button goes down.
    x and y are the mouse position relative to the window.
    w and h are the size of the window.
index 669a842299551923416cfcbb1e46a47009f2fe5f..db068d77bec8080c39be8d9f608cca6a975ab06e 100644 (file)
@@ -59,6 +59,10 @@ extern char *progname;
                */
 
 
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+
 /* Width (and optionally height) of the string in pixels.
  */
 int
@@ -413,6 +417,7 @@ print_gl_string (Display *dpy,
   int tabs = cw * 7;
   int lines = 0;
   const char *c;
+  GLfloat color[4];
 
 # ifdef HAVE_GLBITMAP
   /* Sadly, this causes a stall of the graphics pipeline (as would the
@@ -445,6 +450,8 @@ print_gl_string (Display *dpy,
     glGetIntegerv (GL_BLEND_DST, &oblend);
 # endif /* !HAVE_GLBITMAP */
 
+    glGetFloatv (GL_CURRENT_COLOR, color);
+
   for (c = string; *c; c++)
     if (*c == '\n') lines++;
 
@@ -468,6 +475,7 @@ print_gl_string (Display *dpy,
 
     glDisable (GL_LIGHTING);
 
+
       if (!in_scene_p)
         glDisable (GL_DEPTH_TEST);
     glDisable (GL_CULL_FACE);
@@ -531,6 +539,11 @@ print_gl_string (Display *dpy,
         check_gl_error ("glOrtho");
 # endif
 
+        /* Let's always dropshadow the FPS and Title text. */
+        if (! in_scene_p)
+          clear_background_p = True;
+
+#if 0
         if (clear_background_p)
           {
             int w, h;
@@ -554,6 +567,8 @@ print_gl_string (Display *dpy,
 # endif /* !HAVE_GLBITMAP */
             glColor3f (1, 1, 1);
           }
+#endif /* 0 */
+
 
         /* draw the text */
 
@@ -583,23 +598,43 @@ print_gl_string (Display *dpy,
               }
             else
               {
+                /* outline font in black */
+                const XPoint offsets[] = {{ -1, -1 },
+                                          { -1,  1 },
+                                          {  1,  1 },
+                                          {  1, -1 },
+                                          {  0,  0 }};
+                int j;
+# ifndef HAVE_GLBITMAP
+                char s[2];
+                s[0] = c;
+                s[1] = 0;
+# endif /* !HAVE_GLBITMAP */
+
+                glColor3f (0, 0, 0);
+                for (j = 0; j < countof(offsets); j++)
+                  {
+                    if (! clear_background_p)
+                      j = countof(offsets)-1;
+                    if (offsets[j].x == 0)
+                      glColor4fv (color);
+
+# ifdef HAVE_GLBITMAP
+                    glRasterPos2f (x2 + offsets[j].x, y + offsets[j].y);
+                    glCallList (font_dlist + (int)(c));
+# else /* !HAVE_GLBITMAP */
+                    glPushMatrix();
+                    glTranslatef (x2 + offsets[j].x, y + offsets[j].y, 0);
+                    print_texture_string (font_data, s);
+                    glPopMatrix();
+# endif /* !HAVE_GLBITMAP */
+                  }
 # ifdef HAVE_GLBITMAP
-                glRasterPos2f (x2, y);
-                glCallList (font_dlist + (int)(c));
                 x2 += (font->per_char
                        ? font->per_char[c - font->min_char_or_byte2].width
                        : font->min_bounds.width);
 # else /* !HAVE_GLBITMAP */
-                glPushMatrix();
-                glTranslatef (x2, y, 0);
-                {
-                  char s[2];
-                  s[0] = c;
-                  s[1] = 0;
-                  print_texture_string (font_data, s);
-                  x2 += texture_string_width (font_data, s, 0);
-                }
-                glPopMatrix();
+                x2 += texture_string_width (font_data, s, 0);
 # endif /* !HAVE_GLBITMAP */
               }
           }
index c9ee163f648c4e73d6f89675330dd24a5e9e9620..d8966f45c339eed72cc0e5f09c2079ffb531c598 100644 (file)
@@ -1017,7 +1017,10 @@ draw_hilbert (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 67c2c4b19e42c41274512260d8ddda9701ae3b81..63b832947e63328a2143ff1ddf4857de0f2602f7 100644 (file)
@@ -990,7 +990,11 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi)
            js->axis -= 2*M_PI;
        }
     }
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate(js->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     if(js->color_style == COLOR_STYLE_CYCLE) {
        int i;
index 9d1371a16bb1b1263fb050101326f0be80b0cb0a..3ffd08d66effe7ab1b2b6c4695a0b70f12424891 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 #define DEF_WOBBLE       "True"
 #define DEF_DEBUG        "False"
 
+#define DEF_FONT "-*-helvetica-bold-r-normal-*-240-*"
 #define DEFAULTS  "*delay:             20000   \n" \
                  "*showFPS:            False   \n" \
+                 "*font:            " DEF_FONT"\n" \
                  "*wireframe:          False   \n" \
                  "*desktopGrabber:   xscreensaver-getimage -no-desktop %s\n" \
                  "*grabDesktopImages:  False   \n" \
 # include <GL/glu.h>
 #endif
 
-#ifdef HAVE_JWZGLES
-# include "jwzgles.h"
-#endif /* HAVE_JWZGLES */
-
 #include "xlockmore.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "spline.h"
 #include "normals.h"
 #include "grab-ximage.h"
+#include "texfont.h"
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#else /* !HAVE_JWZGLES */
+# define HAVE_TESS
+#endif /* !HAVE_JWZGLES */
 
 #undef BELLRAND
 #define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
@@ -122,12 +127,15 @@ struct jigsaw_configuration {
   trackball_state *trackball;
   rotator *rot;
   Bool button_down_p;
+  texture_font_data *texfont;
+  GLuint loading_dlist;
 
   int puzzle_width;
   int puzzle_height;
   puzzle_piece *puzzle;
 
-  enum { PUZZLE_LOADING,
+  enum { PUZZLE_LOADING_MSG,
+         PUZZLE_LOADING,
          PUZZLE_UNSCATTER,
          PUZZLE_SOLVE, 
          PUZZLE_SCATTER } state;
@@ -211,6 +219,8 @@ make_puzzle_curve (int pixels)
 }
 
 
+#ifdef HAVE_TESS
+
 static void
 tess_error_cb (GLenum errorCode)
 {
@@ -260,6 +270,149 @@ tess_vertex_cb (void *vertex_data, void *closure)
   glVertex3d (x, y, z);
 }
 
+#else  /* HAVE_TESS */
+
+/* Writes triangles into the array of floats.
+   Returns the number of floats written (triangles * 9).
+ */
+static int
+make_piece_eighth (jigsaw_configuration *jc, const spline *s,
+                   int resolution, int type, GLfloat *out,
+                   Bool flip_x, Bool flip_y, Bool rotate_p)
+{
+  GLfloat *oout = out;
+  int cx = resolution/2;
+  int cy = resolution/2;
+  int np = (s->n_points / 2) + 1;
+  int last_x = -999999, last_y = -999999;
+  Bool inflected = False;
+  int i;
+
+  if (type == FLAT)
+    {
+      *out++ = cx;
+      *out++ = 0;
+      *out++ = 0;
+
+      *out++ = cx;
+      *out++ = cy;
+      *out++ = 0;
+
+      *out++ = 0;
+      *out++ = 0;
+      *out++ = 0;
+
+      goto END;
+    }
+
+  for (i = (type == IN ? np-1 : 0); 
+       (type == IN ? i >= 0 : i < np);
+       i += (type == IN ? -1 : 1))
+    {
+      int x = s->points[i].x;
+      int y = s->points[i].y;
+
+      if (type == IN)
+        y = -y;
+
+      if (last_x != -999999)
+        {
+          if (!inflected &&
+              (type == IN
+               ? x >= last_x 
+               : x < last_x))
+            {
+              inflected = True;
+
+              *out++ = cx;
+              *out++ = cy;
+              *out++ = 0;
+
+              *out++ = last_x;
+              *out++ = last_y;
+              *out++ = 0;
+
+              if (type == IN)
+                {
+                  cx = 0;
+                  cy = 0;
+                }
+              else
+                {
+                  cy = y;
+                }
+
+              *out++ = cx;
+              *out++ = cy;
+              *out++ = 0;
+            }
+
+          *out++ = cx;
+          *out++ = cy;
+          *out++ = 0;
+
+          *out++ = last_x;
+          *out++ = last_y;
+          *out++ = 0;
+
+          *out++ = x;
+          *out++ = y;
+          *out++ = 0;
+        }
+
+      last_x = x;
+      last_y = y;
+    }
+ END:
+
+  {
+    int count = out - oout;
+    Bool cw_p;
+
+    if (flip_x)
+      for (i = 0; i < count; i += 3)
+        oout[i] = resolution - oout[i];
+
+    if (flip_y)
+      for (i = 0; i < count; i += 3)
+        oout[i+1] = resolution - oout[i+1];
+
+    cw_p = (type == IN);
+    if (flip_x) cw_p = !cw_p;
+    if (flip_y) cw_p = !cw_p;
+
+    if (cw_p)
+      for (i = 0; i < count; i += 9)
+        {
+          GLfloat x1 = oout[i+0];
+          GLfloat y1 = oout[i+1];
+          GLfloat x2 = oout[i+3];
+          GLfloat y2 = oout[i+4];
+          GLfloat x3 = oout[i+6];
+          GLfloat y3 = oout[i+7];
+          oout[i+0] = x2;
+          oout[i+1] = y2;
+          oout[i+3] = x1;
+          oout[i+4] = y1;
+          oout[i+6] = x3;
+          oout[i+7] = y3;
+        }
+
+    if (rotate_p)
+      for (i = 0; i < count; i += 3)
+        {
+          GLfloat x = oout[i];
+          GLfloat y = oout[i+1];
+          oout[i]   = resolution - y;
+          oout[i+1] = x;
+        }
+
+    return count;
+  }
+}
+
+#endif /* !HAVE_TESS */
+
 
 
 /* Draws a puzzle piece.  The top/right/bottom/left_type args
@@ -331,11 +484,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
     }
   }
 
-  free_spline (s);
-
-  { GLfloat s = 1.0 / resolution; glScalef (s, s, s); }
+  { GLfloat ss = 1.0 / resolution; glScalef (ss, ss, ss); }
 
+# ifndef HAVE_JWZGLES
   glPolygonMode (GL_FRONT_AND_BACK, wire ? GL_LINE : GL_FILL);
+# endif
 
   if (wire)
     {
@@ -345,9 +498,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
     }
   else
     {
-# ifndef  _GLUfuncptr
-#  define _GLUfuncptr void(*)(void)
-# endif
+# ifdef HAVE_TESS
+
+#  ifndef  _GLUfuncptr
+#   define _GLUfuncptr void(*)(void)
+#  endif
       GLUtesselator *tess = gluNewTess();
       gluTessCallback(tess, GLU_TESS_BEGIN,      (_GLUfuncptr)glBegin);
       gluTessCallback(tess, GLU_TESS_VERTEX_DATA,(_GLUfuncptr)tess_vertex_cb);
@@ -389,9 +544,104 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
       gluTessEndContour(tess);
       gluTessEndPolygon(tess);
       gluDeleteTess(tess);
+
+      /* Put it back */
+      for (i = 0; i < o; i += 3)
+        {
+          GLdouble *p = pts + i;
+          p[2] = -p[2];
+        }
+
+# else  /* !HAVE_TESS */
+
+      GLfloat *tri = (GLfloat *)
+        (GLfloat *) malloc (s->n_points * 4 * 3 * 3 * sizeof(*pts));
+      GLfloat *otri = tri;
+      int count;
+      GLdouble zz;
+
+      tri += make_piece_eighth (jc, s, resolution, top_type,    tri, 0, 0, 0);
+      tri += make_piece_eighth (jc, s, resolution, top_type,    tri, 1, 0, 0);
+      tri += make_piece_eighth (jc, s, resolution, left_type,   tri, 0, 1, 1);
+      tri += make_piece_eighth (jc, s, resolution, left_type,   tri, 1, 1, 1);
+      tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 0, 1, 0);
+      tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 1, 1, 0);
+      tri += make_piece_eighth (jc, s, resolution, right_type,  tri, 0, 0, 1);
+      tri += make_piece_eighth (jc, s, resolution, right_type,  tri, 1, 0, 1);
+      count = (tri - otri) / 9;
+
+      if (! wire)
+        {
+          glEnable (GL_TEXTURE_2D);
+          glEnable (GL_BLEND);
+          glEnable (GL_LIGHTING);
+          glBindTexture(GL_TEXTURE_2D, jc->texid);
+        }
+
+      for (zz = z; zz >= -z; zz -= 2*z)
+        {
+          int i;
+          glFrontFace (zz > 0 ? GL_CCW : GL_CW);
+          glNormal3f (0, 0, (zz > 0 ? 1 : -1));
+
+          if (zz < 0)
+            glDisable (GL_TEXTURE_2D); /* back face */
+
+          glPushMatrix();
+          glTranslatef (0, 0, zz);
+
+          tri = otri;
+          if (wire)
+            {
+              for (i = 0; i < count; i++)
+                {
+                  glBegin (GL_LINE_LOOP);
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glEnd();
+                }
+            }
+          else
+            {
+              GLfloat pw = p->jc->puzzle_width;
+              GLfloat ph = p->jc->puzzle_height;
+              GLfloat r = resolution;
+
+              glBegin (GL_TRIANGLES);
+              for (i = 0; i < count * 3; i++)
+                {
+                  GLfloat x = *tri++;
+                  GLfloat y = *tri++;
+                  GLfloat z = *tri++;
+
+                  /* 0-1 from piece origin */
+                  GLfloat xx = x / r;
+                  GLfloat yy = y / r;
+
+                  /* 0-1 from puzzle origin */
+                  GLfloat tx = (p->home.x + xx)      / pw;
+                  GLfloat ty = (ph - p->home.y - yy) / ph;
+
+                  tx = p->jc->tex_x + (tx * p->jc->tex_width);
+                  ty = p->jc->tex_y + (ty * p->jc->tex_height);
+
+                  glTexCoord2f (tx, ty);
+                  glVertex3f (x, y, z);
+                }
+              glEnd();
+            }
+
+          polys += count;
+          glPopMatrix();
+        }
+
+      free (otri);
+# endif /* !HAVE_TESS */
     }
 
   /* side faces */
+
   glFrontFace (GL_CCW);
   glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
   for (i = 0; i < o; i += 3)
@@ -402,12 +652,12 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
       GLdouble *pj = pts + j;
       GLdouble *pk = pts + k;
 
-      do_normal  (pj[0], pj[1], -pj[2],
-                  pj[0], pj[1],  pj[2],
+      do_normal  (pj[0], pj[1],  pj[2],
+                  pj[0], pj[1], -pj[2],
                   pk[0], pk[1],  pk[2]);
 
-      glVertex3f (p[0], p[1], -p[2]);
       glVertex3f (p[0], p[1],  p[2]);
+      glVertex3f (p[0], p[1], -p[2]);
       polys++;
     }
   glEnd();
@@ -415,6 +665,8 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
   if (! wire)
     glColor3f (0.3, 0.3, 0.3);
 
+  /* outline the edges in gray */
+
   glDisable (GL_TEXTURE_2D);
   glDisable (GL_LIGHTING);
   glLineWidth (jc->line_thickness);
@@ -431,6 +683,7 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
   glEnd();
   polys += o/3;
 
+  free_spline (s);
   free (pts);
 
   return polys;
@@ -823,8 +1076,14 @@ move_one_piece (ModeInfo *mi)
       p1->to   = p0->current;
       p1->to.r = proper_rotation (jc, p1, p1->to.x, p1->to.y);
 
-      p0->arc_height = 0.5 + frand(3.0);
-      p1->arc_height = 1.0 + frand(3.0);
+      /* Try to avoid having them intersect each other in the air. */
+      p0->arc_height = 0;
+      p1->arc_height = 0;
+      while (fabs (p0->arc_height - p1->arc_height) < 1.5)
+        {
+          p0->arc_height = 0.5 + frand(3.0);
+          p1->arc_height = 1.0 + frand(3.0);
+        }
 
 # define RTILT(V) \
          V = 90 - BELLRAND(180);       \
@@ -892,6 +1151,91 @@ anim_tick (ModeInfo *mi)
 }
 
 
+static void
+loading_msg (ModeInfo *mi)
+{
+  jigsaw_configuration *jc = &sps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
+  const char *text = "Loading...";
+  int h;
+  int w = texture_string_width (jc->texfont, text, &h);
+
+  if (wire) return;
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  if (! jc->loading_dlist)
+    {
+      GLfloat othick = jc->line_thickness;
+      puzzle_piece P = { 0, };
+      P.jc = jc;
+      jc->loading_dlist = glGenLists (1);
+      glNewList (jc->loading_dlist, GL_COMPILE);
+      jc->line_thickness = 1;
+      draw_piece (jc, &P,
+                  resolution_arg, thickness_arg,
+                  OUT, OUT, IN, OUT, True);
+      jc->line_thickness = othick;
+      glEndList();
+    }
+
+  glColor3f (0.2, 0.2, 0.4);
+
+  glPushMatrix();
+  {
+    double x, y, z;
+    get_position (jc->rot, &x, &y, &z, True);
+    glRotatef (x * 360, 1, 0, 0);
+    glRotatef (y * 360, 0, 1, 0);
+    glRotatef (z * 360, 0, 0, 1);
+    glScalef (5, 5, 5);
+    glTranslatef (-0.5, -0.5, 0);
+    glCallList (jc->loading_dlist);
+  }
+  glPopMatrix();
+
+  glColor3f (0.7, 0.7, 1);
+
+
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glLoadIdentity();
+
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+  }
+
+  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
+  glTranslatef ((MI_WIDTH(mi)  - w) / 2,
+                (MI_HEIGHT(mi) - h) / 2,
+                0);
+  glEnable (GL_TEXTURE_2D);
+  glPolygonMode (GL_FRONT, GL_FILL);
+  glDisable (GL_LIGHTING);
+  glEnable (GL_BLEND);
+  glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+  print_texture_string (jc->texfont, text);
+  glEnable (GL_DEPTH_TEST);
+  glPopMatrix();
+
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+
+  glMatrixMode(GL_MODELVIEW);
+}
+
+
 static void
 animate (ModeInfo *mi)
 {
@@ -899,10 +1243,16 @@ animate (ModeInfo *mi)
   double slow = 0.01;
   double fast = 0.04;
 
-  if (jc->button_down_p) return;
+  if (jc->button_down_p && jc->state != PUZZLE_LOADING_MSG)
+    return;
 
   switch (jc->state)
     {
+    case PUZZLE_LOADING_MSG:
+      if (! jc->puzzle)
+        loading_msg (mi);
+      /* fall through */
+
     case PUZZLE_LOADING:
       if (!jc->puzzle) break;  /* still loading */
       jc->tick_speed = slow;
@@ -1081,11 +1431,18 @@ init_jigsaw (ModeInfo *mi)
 
   jc->trackball = gltrackball_init ();
   jc->rot = make_rotator (0, 0, 0, 0, speed * 0.002, True);
+  jc->texfont = load_texture_font (MI_DISPLAY(mi), "font");
 
-  jc->state = PUZZLE_LOADING;
+  jc->state = PUZZLE_LOADING_MSG;
 
   resolution_arg /= complexity_arg;
 
+# ifndef HAVE_TESS
+  /* If it's not even, we get crosses. */
+  if (resolution_arg & 1)
+    resolution_arg++;
+# endif /* !HAVE_TESS */
+
   if (wire)
     make_puzzle_grid (mi);
   else
@@ -1104,16 +1461,17 @@ draw_jigsaw (ModeInfo *mi)
   if (!jc->glx_context)
     return;
 
-  animate (mi);
-
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context));
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  glPushMatrix ();
+  mi->polygon_count = 0;
 
-  gltrackball_rotate (jc->trackball);
+  glPushMatrix ();
   glRotatef(current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (jc->trackball);
+
+  animate (mi);
 
   if (wobble_p && jc->puzzle)
     {
@@ -1125,18 +1483,16 @@ draw_jigsaw (ModeInfo *mi)
       glRotatef (max/2 - z*max, 0, 1, 0);
     }
 
-  mi->polygon_count = 0;
-
-  glEnable(GL_CULL_FACE);
-  glEnable(GL_DEPTH_TEST);
-  glEnable(GL_NORMALIZE);
-  glEnable(GL_LINE_SMOOTH);
-
   if (jc->puzzle)
     {
       GLfloat s = 14.0 / jc->puzzle_height;
       int x, y;
 
+      glEnable(GL_CULL_FACE);
+      glEnable(GL_DEPTH_TEST);
+      glEnable(GL_NORMALIZE);
+      glEnable(GL_LINE_SMOOTH);
+
       glScalef (s, s, s);
       glTranslatef (-jc->puzzle_width / 2.0, -jc->puzzle_height / 2.0, 0);
 
index 02c1f179dddea37f648e4c69e1abd2e30f1b19d9..1a7fe36b0a1a47ca939d3b3208a54a2adce03cf4 100644 (file)
@@ -2908,6 +2908,7 @@ draw_juggle (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glTranslatef(0,-3,0);
 
@@ -2919,7 +2920,6 @@ draw_juggle (ModeInfo *mi)
                  (z - 0.5) * 15);
 
     gltrackball_rotate (sp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
 
index 15284ca801a384ed2b019cff54b00309f9827031..f70b120ba1e1c2436cbdacfe3e7d6d4d2e7d774d 100644 (file)
       lockward        Puts verts in lists without glBegin!
       pinion         Uses glSelectBuffer and gluPickMatrix for mouse-clicks.
       pipes           Uses glMap2f for the Utah Teapot.
-      polyhedra       Uses GLUtesselator; also Utah Teapot.
+      polyhedra       Uses GLUtesselator (concave objects); also Utah Teapot.
       skytentacles    Uses GL_LINE in -cel mode.
       timetunnel      Uses GL_CONSTANT_ALPHA and all kinds of other stuff.
 
 #elif defined(HAVE_COCOA)
 # include <OpenGL/gl.h>
 # include <OpenGL/glu.h>
-#else
+#else /* X11 */
+# ifndef  GL_GLEXT_PROTOTYPES
+#  define GL_GLEXT_PROTOTYPES /* for glBindBuffer */
+# endif
 # include <GL/glx.h>
 # include <GL/glu.h>
 #endif
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #undef  Assert
-#define Assert(C,S) do { \
-  if (!(C)) { \
-    fprintf (stderr, "jwzgles: %s\n", S); \
-    abort(); \
-  }} while(0)
+
+#ifdef HAVE_COCOA
+  extern void jwxyz_abort (const char *fmt, ...) __dead2;
+# define Assert(C,S) do { if (!(C)) { jwxyz_abort ("%s",S); }} while(0)
+#else
+# define Assert(C,S) do { \
+    if (!(C)) { \
+      fprintf (stderr, "jwzgles: %s\n", S); \
+      abort(); \
+    }} while(0)
+#endif
 
 
 typedef struct { GLfloat x, y, z; }    XYZ;
@@ -228,7 +237,7 @@ typedef void (*list_fn_cb) (void);
 typedef union { const void *v; GLfloat f; GLuint i; } void_int;
 
 typedef struct {               /* saved args for glDrawArrays */
-  int size, type, stride, bytes;
+  int binding, size, type, stride, bytes;
   void *data;
 } draw_array;
 
@@ -261,14 +270,18 @@ typedef struct {          /* A single element of a display list */
 } list_fn;
 
 
-typedef struct {       /* saved activity within glNewList */
+typedef struct {       /* a display list: saved activity within glNewList */
   int id;
   int size, count;
   list_fn *fns;
+
+  /* Named buffer that should be freed when this display list is deleted. */
+  GLuint buffer;
+
 } list;
 
 
-typedef struct {       /* A display list */
+typedef struct {       /* All display lists */
   list *lists;
   int count, size;
 } list_set;
@@ -349,19 +362,16 @@ mode_desc (int mode)      /* for debugging messages */
   switch (mode) {
 # define SS(X) case GL_##X: return STRINGIFY(X);
   SS(ALPHA)
+  SS(ALPHA_TEST)
   SS(AMBIENT)
   SS(AMBIENT_AND_DIFFUSE)
+  SS(ARRAY_BUFFER)
   SS(AUTO_NORMAL)
   SS(BACK)
   SS(BLEND)
   SS(BLEND_DST)
   SS(BLEND_SRC)
   SS(BLEND_SRC_ALPHA)
-  SS(RGBA_MODE)
-  SS(DOUBLEBUFFER)
-  SS(GREATER)
-  SS(ALPHA_TEST)
-  SS(LESS)
   SS(BYTE)
   SS(C3F_V3F)
   SS(C4F_N3F_V3F)
@@ -370,6 +380,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(CCW)
   SS(CLAMP)
   SS(COLOR_ARRAY)
+  SS(COLOR_ARRAY_BUFFER_BINDING);
   SS(COLOR_MATERIAL)
   SS(COLOR_MATERIAL_FACE)
   SS(COLOR_MATERIAL_PARAMETER)
@@ -380,8 +391,11 @@ mode_desc (int mode)       /* for debugging messages */
   SS(DEPTH_BUFFER_BIT)
   SS(DEPTH_TEST)
   SS(DIFFUSE)
+  SS(DOUBLEBUFFER)
   SS(DST_ALPHA)
   SS(DST_COLOR)
+  SS(DYNAMIC_DRAW)
+  SS(ELEMENT_ARRAY_BUFFER)
   SS(EYE_LINEAR)
   SS(EYE_PLANE)
   SS(FEEDBACK)
@@ -391,10 +405,12 @@ mode_desc (int mode)      /* for debugging messages */
   SS(FOG)
   SS(FRONT)
   SS(FRONT_AND_BACK)
+  SS(GREATER)
   SS(INTENSITY)
   SS(INVALID_ENUM)
   SS(INVALID_OPERATION)
   SS(INVALID_VALUE)
+  SS(LESS)
   SS(LIGHT0)
   SS(LIGHT1)
   SS(LIGHT2)
@@ -422,6 +438,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(NEAREST_MIPMAP_NEAREST)
   SS(NORMALIZE)
   SS(NORMAL_ARRAY)
+  SS(NORMAL_ARRAY_BUFFER_BINDING);
   SS(OBJECT_LINEAR)
   SS(OBJECT_PLANE)
   SS(ONE_MINUS_DST_ALPHA)
@@ -445,6 +462,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(REPEAT)
   SS(RGB)
   SS(RGBA)
+  SS(RGBA_MODE)
   SS(S)
   SS(SELECT)
   SS(SEPARATE_SPECULAR_COLOR)
@@ -460,6 +478,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(SRC_COLOR)
   SS(STACK_OVERFLOW)
   SS(STACK_UNDERFLOW)
+  SS(STATIC_DRAW)
   SS(STENCIL_BUFFER_BIT)
   SS(T)
   SS(T2F_C3F_V3F)
@@ -479,6 +498,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(TEXTURE_BORDER_COLOR)
   SS(TEXTURE_COMPONENTS)
   SS(TEXTURE_COORD_ARRAY)
+  SS(TEXTURE_COORD_ARRAY_BUFFER_BINDING);
   SS(TEXTURE_ENV)
   SS(TEXTURE_ENV_COLOR)
   SS(TEXTURE_ENV_MODE)
@@ -507,6 +527,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(V2F)
   SS(V3F)
   SS(VERTEX_ARRAY)
+  SS(VERTEX_ARRAY_BUFFER_BINDING);
 /*SS(COLOR_BUFFER_BIT) -- same value as GL_LIGHT0 */
 # undef SS
   case (GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT):
@@ -539,6 +560,20 @@ check_gl_error (const char *s)
 #endif /* DEBUG */
 
 
+static void
+make_room (const char *name, void **array, int span, int *count, int *size)
+{
+  if (*count + 1 >= *size)
+    {
+      int new_size = (*count + 20) * 1.2;   /* mildly exponential */
+      *array = realloc (*array, new_size * span);
+      Assert (*array, "out of memory");
+      /* LOG3("%s: grew %d -> %d", name, *size, new_size); */
+      *size = new_size;
+    }
+}
+
+
 int
 jwzgles_glGenLists (int n)
 {
@@ -557,19 +592,10 @@ jwzgles_glGenLists (int n)
     {
       list *L;
       int id = 0;
-
-      /* Adding a new list at the end.  Make room for it.
-       */
-      if (state->lists.count >= state->lists.size - 1)
-        {
-          int new_size = 20 + (state->lists.size * 1.2);
-          state->lists.lists = (list *) 
-            realloc (state->lists.lists, 
-                     new_size * sizeof (*state->lists.lists));
-          Assert (state->lists.lists, "out of memory");
-          state->lists.size = new_size;
-          LOG1("glGenLists grew -> %d", new_size);
-        }
+      make_room ("glGenLists", 
+                 (void **) &state->lists.lists,
+                 sizeof (*state->lists.lists),
+                 &state->lists.count, &state->lists.size);
       state->lists.count++;
       id = state->lists.count;
       L = &state->lists.lists[id-1];
@@ -608,6 +634,11 @@ jwzgles_glNewList (int id, int mode)
 }
 
 
+static void save_arrays (list_fn *, int);
+static void restore_arrays (list_fn *, int);
+static void copy_array_data (draw_array *, int, const char *);
+static void optimize_arrays (void);
+
 void
 jwzgles_glEndList (void)
 {
@@ -615,14 +646,11 @@ jwzgles_glEndList (void)
   Assert (state->set.count == 0, "missing glEnd");
   Assert (!state->compiling_verts, "glEndList not allowed inside glBegin");
   LOG1("glEndList %d", state->compiling_list);
+  optimize_arrays();
   state->compiling_list = 0;
 }
 
 
-static void save_arrays (list_fn *, int);
-static void restore_arrays (list_fn *, int);
-static void copy_array_data (draw_array *, int, const char *);
-
 static void
 list_push (const char * const name, 
            list_fn_cb fn, fn_proto proto, void_int *av)
@@ -637,16 +665,10 @@ list_push (const char * const name,
   L = &state->lists.lists[state->compiling_list-1];
   Assert (L, "glNewList: no list");
 
-  if (L->count >= L->size - 1)
-    {
-      int new_size = 20 + (L->size * 1.2);
-      L->fns = (list_fn *) realloc (L->fns, new_size * sizeof (*L->fns));
-      Assert (L->fns, "glNewList: no functions");
-      L->size = new_size;
-    }
-
+  make_room ("glNewLists", 
+             (void **) &L->fns, sizeof (*L->fns),
+             &L->count, &L->size);
   memset (&L->fns[L->count], 0, sizeof (*L->fns));
-
   F = L->fns + L->count;
 
   F->name = name;
@@ -678,7 +700,8 @@ list_push (const char * const name,
     LOG2 ("  push %-12s %7.3f", name, av[0].f);
     break;
   case PROTO_II:
-    if (fn == (list_fn_cb) &jwzgles_glBindTexture)
+    if (fn == (list_fn_cb) &jwzgles_glBindTexture ||
+        fn == (list_fn_cb) &jwzgles_glBindBuffer)
       LOG3 ("  push %-12s %s %d", name, mode_desc (av[0].i), av[1].i);
     else
       LOG3 ("  push %-12s %d %d", name, av[0].i, av[1].i);
@@ -834,14 +857,17 @@ jwzgles_glDeleteLists (int id0, int range)
                 {
                   int j;
                   for (j = 0; j < 4; j++)
-                    {
-                      if (lf->arrays[j].data)
-                        free (lf->arrays[j].data);
-                    }
+                    /* If there's a binding, 'data' is an index, not a ptr. */
+                    if (!lf->arrays[j].binding &&
+                        lf->arrays[j].data)
+                      free (lf->arrays[j].data);
+                  free (lf->arrays);
                 }
             }
           if (L->fns) 
             free (L->fns);
+          if (L->buffer)
+            glDeleteBuffers (1, &L->buffer);
 
           memset (L, 0, sizeof (*L));
           L->id = id;
@@ -878,14 +904,16 @@ jwzgles_glNormal3fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2]);
 
-      state->set.cnorm.x = v[0];
-      state->set.cnorm.y = v[1];
-      state->set.cnorm.z = v[2];
-      state->set.ncount++;
-      if (state->set.count > 0 && state->set.ncount == 1)  /* not first! */
-        state->set.ncount++;
-
-      if (! state->compiling_verts)    /* outside glBegin */
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.cnorm.x = v[0];
+          state->set.cnorm.y = v[1];
+          state->set.cnorm.z = v[2];
+          state->set.ncount++;
+          if (state->set.count > 0 && state->set.ncount == 1)  /* not first! */
+            state->set.ncount++;
+        }
+      else                             /* outside glBegin */
         {
           glNormal3f (v[0], v[1], v[2]);
           CHECK("glNormal3f");
@@ -926,15 +954,18 @@ jwzgles_glTexCoord4fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
-      state->set.ctex.s = v[0];
-      state->set.ctex.t = v[1];
-      state->set.ctex.r = v[2];
-      state->set.ctex.q = v[3];
-      state->set.tcount++;
-      if (state->set.count > 0 && state->set.tcount == 1)  /* not first! */
-        state->set.tcount++;
-
       Assert (state->compiling_verts, "glTexCoord4fv outside glBegin");
+
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.ctex.s = v[0];
+          state->set.ctex.t = v[1];
+          state->set.ctex.r = v[2];
+          state->set.ctex.q = v[3];
+          state->set.tcount++;
+          if (state->set.count > 0 && state->set.tcount == 1)  /* not first! */
+            state->set.tcount++;
+        }
     }
 }
 
@@ -1018,15 +1049,17 @@ jwzgles_glColor4fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
-      state->set.ccolor.r = v[0];
-      state->set.ccolor.g = v[1];
-      state->set.ccolor.b = v[2];
-      state->set.ccolor.a = v[3];
-      state->set.ccount++;
-      if (state->set.count > 0 && state->set.ccount == 1)  /* not first! */
-        state->set.ccount++;
-
-      if (! state->compiling_verts)    /* outside glBegin */
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.ccolor.r = v[0];
+          state->set.ccolor.g = v[1];
+          state->set.ccolor.b = v[2];
+          state->set.ccolor.a = v[3];
+          state->set.ccount++;
+          if (state->set.count > 0 && state->set.ccount == 1)  /* not first! */
+            state->set.ccount++;
+        }
+      else                             /* outside glBegin */
         {
           glColor4f (v[0], v[1], v[2], v[3]);
           CHECK("glColor4");
@@ -1556,6 +1589,8 @@ jwzgles_glEnd (void)
   Assert (state->compiling_verts == 1, "missing glBegin");
   state->compiling_verts--;
 
+  Assert (!state->replaying_list, "how did glEnd get into a display list?");
+
   if (!state->replaying_list)
     {
       LOG5 ("%s  [V = %d, N = %d, T = %d, C = %d]",
@@ -1601,6 +1636,14 @@ jwzgles_glEnd (void)
   was_color = jwzgles_glIsEnabled (GL_COLOR_ARRAY);
   was_mat   = jwzgles_glIsEnabled (GL_COLOR_MATERIAL);
 
+  /* If we're executing glEnd in immediate mode, not from inside a display
+     list (which is the only way it happens, because glEnd doesn't go into
+     display lists), make sure we're not stomping on a saved buffer list:
+     in immediate mode, vertexes are client-side only.
+   */
+  if (! state->compiling_list)
+    jwzgles_glBindBuffer (GL_ARRAY_BUFFER, 0);
+
   if (s->ncount > 1)
     {
       is_norm = 1;
@@ -1654,7 +1697,9 @@ jwzgles_glEnd (void)
   else
     is_mat = 0;
 
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* This comes later. */
   jwzgles_glDrawArrays (s->mode, 0, s->count);
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
 
 # define RESET(VAR,FN,ARG) do { \
          if (is_##VAR != was_##VAR) { \
@@ -1675,6 +1720,116 @@ jwzgles_glEnd (void)
 }
 
 
+/* The display list is full of calls to glDrawArrays(), plus saved arrays
+   of the values we need to restore before calling it.  "Restore" means
+   "ship them off to the GPU before each call".
+
+   So instead, this function walks through the display list and
+   combines all of those vertex, normal, texture and color values into
+   a single VBO array; ships those values off to the GPU *once* at the
+   time of glEndList; and when running the list with glCallList, the
+   values are already on the GPU and don't need to be sent over again.
+
+   The VBO persists in the GPU until the display list is deleted.
+ */
+static void
+optimize_arrays (void)
+{
+  list *L = &state->lists.lists[state->compiling_list-1];
+  int i, j;
+  GLfloat *combo = 0;
+  int combo_count = 0;
+  int combo_size = 0;
+  GLuint buf_name = 0;
+
+  Assert (state->compiling_list, "not compiling a list");
+  Assert (L, "no list");
+  Assert (!L->buffer, "list already has a buffer");
+
+  glGenBuffers (1, &buf_name);
+  CHECK("glGenBuffers");
+  if (! buf_name) return;
+
+  L->buffer = buf_name;
+
+  /* Go through the list and dump the contents of the various saved arrays
+     into one large array.
+   */
+  for (i = 0; i < L->count; i++)
+    {
+      list_fn *F = &L->fns[i];
+      int count;
+      if (! F->arrays)
+        continue;
+      count = F->argv[2].i;  /* 3rd arg to glDrawArrays */
+
+      for (j = 0; j < 4; j++)
+        {
+          draw_array *A = &F->arrays[j];
+          int ocount = combo_count;
+
+          /* If some caller is using arrays that don't have floats in them,
+             we just leave them as-is and ship them over at each call.
+             Doubt this ever really happens.
+           */
+          if (A->type != GL_FLOAT)
+            continue;
+
+          if (! A->data)       /* No array. */
+            continue;
+
+          Assert (A->bytes > 0, "no bytes in draw_array");
+          Assert (((unsigned long) A->data > 0xFFFF),
+                  "buffer data not a pointer");
+
+          combo_count += A->bytes / sizeof(*combo);
+          make_room ("optimize_arrays",
+                     (void **) &combo, sizeof(*combo),
+                     &combo_count, &combo_size);
+          memcpy (combo + ocount, A->data, A->bytes);
+          A->binding = buf_name;
+          free (A->data);
+          /* 'data' is now the byte offset into the VBO. */
+          A->data = (void *) (ocount * sizeof(*combo));
+          /* LOG3("    loaded %lu floats to pos %d of buffer %d",
+               A->bytes / sizeof(*combo), ocount, buf_name); */
+        }
+    }
+
+  if (combo_count == 0)                /* Nothing to do! */
+    {
+      if (combo) free (combo);
+      glDeleteBuffers (1, &buf_name);
+      L->buffer = 0;
+      return;
+    }
+
+  glBindBuffer (GL_ARRAY_BUFFER, buf_name);
+  glBufferData (GL_ARRAY_BUFFER, 
+                combo_count * sizeof (*combo),
+                combo,
+                GL_STATIC_DRAW);
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
+
+  LOG3("  loaded %d floats of list %d into VBO %d",
+       combo_count, state->compiling_list, buf_name);
+
+# ifdef DEBUG
+#  if 0
+  for (i = 0; i < combo_count; i++)
+    {
+      if (i % 4 == 0)
+        fprintf (stderr, "\njwzgles:    %4d: ", i);
+      fprintf (stderr, " %7.3f", combo[i]);
+    }
+  fprintf (stderr, "\n");
+#  endif
+# endif /* DEBUG */
+
+  if (combo) free (combo);
+}
+
+
 void
 jwzgles_glCallList (int id)
 {
@@ -1735,7 +1890,8 @@ jwzgles_glCallList (int id)
             break;
 
           case PROTO_II:
-            if (fn == (list_fn_cb) &jwzgles_glBindTexture)
+            if (fn == (list_fn_cb) &jwzgles_glBindTexture ||
+                fn == (list_fn_cb) &jwzgles_glBindBuffer)
               LOG3 ("  call %-12s %s %d", F->name, 
                     mode_desc (av[0].i), av[1].i);
             else
@@ -1902,6 +2058,7 @@ save_arrays (list_fn *F, int count)
 
 /*  if (state->set.count > 0) */
     {
+      glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A[i].stride);
@@ -1914,6 +2071,7 @@ save_arrays (list_fn *F, int count)
   if (state->set.ncount > 1)
     {
       A[i].size = 3;
+      glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A[i].stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A[i].data);
@@ -1924,6 +2082,7 @@ save_arrays (list_fn *F, int count)
   i++;
   if (state->set.tcount > 1)
     {
+      glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A[i].stride);
@@ -1935,6 +2094,7 @@ save_arrays (list_fn *F, int count)
   i++;
   if (state->set.ccount > 1)
     {
+      glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A[i].stride);
@@ -1958,20 +2118,64 @@ dump_array_data (draw_array *A, int count,
 {
   int bytes = count * A->stride;
 
-  Assert (bytes == A->bytes, "array data corrupted");
+  if (A->binding)
+    {
+      fprintf (stderr, 
+               "jwzgles:     %s %s %d %s %2d, %4d = %5d   bind %d @ %d\n", 
+               action, name,
+               A->size, mode_desc(A->type), A->stride, 
+               count, bytes, A->binding, (int) A->data);
+    }
+  else
+    {
+      Assert (bytes == A->bytes, "array data corrupted");
+
+      fprintf (stderr, "jwzgles:     %s %s %d %s %2d, %4d = %5d @ %lX", 
+               action, name,
+               A->size, mode_desc(A->type), A->stride, 
+               count, bytes, (unsigned long) A->data);
+      if (old)
+        fprintf (stderr, " / %lX", (unsigned long) old);
+      fprintf (stderr, "\n");
+    }
 
-  fprintf (stderr, "jwzgles:     %s %s %d %s %2d, %4d = %5d @ %lX", 
-           action, name,
-           A->size, mode_desc(A->type), A->stride, 
-           count, bytes, (unsigned long) A->data);
-  if (old)
-    fprintf (stderr, " / %lX", (unsigned long) old);
-  fprintf (stderr, "\n");
+  if (A->binding)
+    {
+      Assert (((unsigned long) A->data < 0xFFFF),
+              "buffer binding should be a numeric index,"
+              " but looks like a pointer");
 
 # if 0
-  {
+      /* glGetBufferSubData doesn't actually exist in OpenGLES, but this
+         was helpful for debugging on real OpenGL... */
+      GLfloat *d;
+      int i;
+      fprintf (stderr, "jwzgles: read back:\n");
+      d = (GLfloat *) malloc (A->bytes);
+      glGetBufferSubData (GL_ARRAY_BUFFER, (int) A->data,
+                          count * A->stride, (void *) d);
+      CHECK("glGetBufferSubData");
+      for (i = 0; i < count * A->size; i++)
+        {
+          if (i % 4 == 0)
+            fprintf (stderr, "\njwzgles:    %4d: ", 
+                     i + (int) A->data / sizeof(GLfloat));
+          fprintf (stderr, " %7.3f", d[i]);
+        }
+      fprintf (stderr, "\n");
+      free (d);
+# endif
+    }
+# if 0
+  else
+    {
       unsigned char *b = (unsigned char *) A->data;
       int i;
+      if ((unsigned long) A->data < 0xFFFF)
+        {
+          Assert (0, "buffer data not a pointer");
+          return;
+        }
       for (i = 0; i < count; i++)
         {
           int j;
@@ -1991,10 +2195,11 @@ dump_array_data (draw_array *A, int count,
 static void
 dump_direct_array_data (int count)
 {
-  draw_array A;
+  draw_array A = { 0, };
 
   if (jwzgles_glIsEnabled (GL_VERTEX_ARRAY))
     {
+      glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A.stride);
@@ -2005,6 +2210,7 @@ dump_direct_array_data (int count)
   if (jwzgles_glIsEnabled (GL_NORMAL_ARRAY))
     {
       A.size = 0;
+      glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A.stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A.data);
@@ -2013,6 +2219,7 @@ dump_direct_array_data (int count)
     }
   if (jwzgles_glIsEnabled (GL_TEXTURE_COORD_ARRAY))
     {
+      glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A.stride);
@@ -2022,6 +2229,7 @@ dump_direct_array_data (int count)
     }
   if (jwzgles_glIsEnabled (GL_COLOR_ARRAY))
     {
+      glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A.stride);
@@ -2051,7 +2259,11 @@ copy_array_data (draw_array *A, int count, const char *name)
   const unsigned char *IB;
   unsigned char *OB;
 
-  if (! A->data) return;
+  if (((unsigned long) A->data) < 0xFFFF)
+    {
+      Assert (0, "buffer data not a pointer");
+      return;
+    }
 
   Assert (A->size >= 2 && A->size <= 4, "bogus array size");
 
@@ -2114,8 +2326,17 @@ restore_arrays (list_fn *F, int count)
 
   for (i = 0; i < 4; i++)
     {
-      const char *name;
-      if (! A[i].data) continue;
+      const char *name = 0;
+
+      if (!A[i].size)
+        continue;
+
+      Assert ((A[i].binding || A[i].data),
+              "array has neither buffer binding nor data");
+
+      glBindBuffer (GL_ARRAY_BUFFER, A[i].binding);
+      CHECK("glBindBuffer");
+
       switch (i) {
       case 0: glVertexPointer  (A[i].size, A[i].type, A[i].stride, A[i].data);
         name = "vertex ";
@@ -2140,6 +2361,8 @@ restore_arrays (list_fn *F, int count)
       dump_array_data (&A[i], count, "restored", name, 0);
 # endif
     }
+
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
 }
 
 
@@ -2396,16 +2619,22 @@ jwzgles_glEnableClientState (GLuint cap)
     }
 
   switch (cap) {
+  case GL_VERTEX_ARRAY:
+    state->enabled |= ISENABLED_VERT_ARRAY;
+    break;
   case GL_NORMAL_ARRAY:
-    state->set.ncount += 2;
+    if (! state->compiling_verts)
+      state->set.ncount += 2;
     state->enabled |= ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
-    state->set.tcount += 2;
+    if (! state->compiling_verts)
+      state->set.tcount += 2;
     state->enabled |= ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
-    state->set.ccount += 2;
+    if (! state->compiling_verts)
+      state->set.ccount += 2;
     state->enabled |= ISENABLED_COLOR_ARRAY;
     break;
   default: break;
@@ -2433,16 +2662,22 @@ jwzgles_glDisableClientState (GLuint cap)
     }
 
   switch (cap) {
+  case GL_VERTEX_ARRAY:
+    state->enabled &= ~ISENABLED_VERT_ARRAY;
+    break;
   case GL_NORMAL_ARRAY:
-    state->set.ncount = 0;
+    if (! state->compiling_verts)
+      state->set.ncount = 0;
     state->enabled &= ~ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
-    state->set.tcount = 0;
+    if (! state->compiling_verts)
+      state->set.tcount = 0;
     state->enabled &= ~ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
-    state->set.ccount = 0;
+    if (! state->compiling_verts)
+      state->set.ccount = 0;
     state->enabled &= ~ISENABLED_COLOR_ARRAY;
     break;
   default:
@@ -3046,8 +3281,10 @@ jwzgles_gluErrorString (GLenum error)
 }
 
 
-/* These can be included inside glNewList, but they actually execute
-   immediately anyway. 
+/* These four *Pointer calls (plus glBindBuffer and glBufferData) can
+   be included inside glNewList, but they actually execute immediately
+   anyway, because their data is recorded in the list by the
+   subsequently-recorded call to glDrawArrays.  This is a little weird.
  */
 void
 jwzgles_glVertexPointer (GLuint size, GLuint type, GLuint stride, 
@@ -3092,6 +3329,26 @@ jwzgles_glTexCoordPointer (GLuint size, GLuint type, GLuint stride,
   CHECK("glTexCoordPointer");
 }
 
+void
+jwzgles_glBindBuffer (GLuint target, GLuint buffer)
+{
+  if (! state->replaying_list)
+    LOG3 ("direct %-12s %s %d", "glBindBuffer", mode_desc(target), buffer);
+  glBindBuffer (target, buffer);  /* the real one */
+  CHECK("glBindBuffer");
+}
+
+void
+jwzgles_glBufferData (GLenum target, GLsizeiptr size, const void *data,
+                      GLenum usage)
+{
+  if (! state->replaying_list)
+    LOG5 ("direct %-12s %s %ld 0x%lX %s", "glBufferData",
+          mode_desc(target), size, (unsigned long) data, mode_desc(usage));
+  glBufferData (target, size, data, usage);  /* the real one */
+  CHECK("glBufferData");
+}
+
 
 void
 jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param)
@@ -3108,6 +3365,11 @@ jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param)
   /* We implement 1D textures as 2D textures. */
   if (target == GL_TEXTURE_1D) target = GL_TEXTURE_2D;
 
+  /* Apparently this is another invalid enum. Just ignore it. */
+  if ((pname == GL_TEXTURE_WRAP_S || pname == GL_TEXTURE_WRAP_T) &&
+      param == GL_CLAMP)
+    return;
+
   if (state->compiling_list)
     {
       void_int vv[3];
index 3260e74f88066a9989e11f49d9af29a66f277a1d..faa26efd9a69749b2885ec05f901ac3345576167 100644 (file)
@@ -306,6 +306,8 @@ extern void jwzgles_glVertexPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *);
 extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *);
+extern void jwzgles_glBindBuffer (GLuint, GLuint);
+extern void jwzgles_glBufferData (GLenum, GLsizeiptr, const void *, GLenum);
 extern const char *jwzgles_gluErrorString (GLenum error);
 
 #endif /* __JWZGLES_I_H__ */
index f0526cc5fed3e5a170abdbe0a936a21a9da540b0..ab4bf83e1109ca7d472c34538b13459a8202f401 100644 (file)
@@ -1422,7 +1422,10 @@ draw(ModeInfo *mi)
 
   glPushMatrix();
 
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (lc->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 
   /* Make into the screen be +Y right be +X, and up be +Z. */
   glRotatef(-90.0, 1.0, 0.0, 0.0);
index c620dfd0cc75268b38d70814987828c7fd78d37b..2319af764055d0a0036dae2ff22dde3324423a76 100644 (file)
@@ -486,7 +486,10 @@ draw_sponge (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (sp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index d6fbdc1c8234a643d5655213add3f86b05792e88..d8b0915de1e563fcf08e992144825b7b1c748433 100644 (file)
@@ -246,7 +246,7 @@ typedef struct
 #define PMM {  sqrt_3, -sqrt_3, -sqrt_3 }       /* +X, -Y, -Z */
 
 /* Structure describing a tetrahedron */
-Vector3D tetrahedron[4][3] = {
+static Vector3D tetrahedron[4][3] = {
     {PPP, MMP, MPM},
     {PMM, MPM, MMP},
     {PPP, MPM, PMM},
@@ -257,7 +257,7 @@ Vector3D tetrahedron[4][3] = {
  * Static blob data
  *****************************************************************************/
 
-const Vector3D zero_vector = { 0.0, 0.0, 0.0 };
+static const Vector3D zero_vector = { 0.0, 0.0, 0.0 };
 
 /* Use 2 textures to allow a gradual fade between images */
 #define NUM_TEXTURES 2
@@ -1412,12 +1412,12 @@ draw_blob (mirrorblobstruct *gp)
 
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* Move down the z-axis. */
   glTranslatef (0.0, 0.0, -4.0);
 
   gltrackball_rotate (gp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* glColor4ub (255, 0, 0, 128); */
   glBegin(GL_TRIANGLES);
index a9dddf50c026f86de8487cddc9a4a0a88745cc8c..e37294a1580dbb96eebcc990a668fe9d7816d2d3 100644 (file)
@@ -761,7 +761,10 @@ draw_moebius (ModeInfo * mi)
 
        glTranslatef(0.0, 0.0, -10.0);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (mp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
        if (!MI_IS_ICONIC(mi)) {
                glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window);
index bf38150cfe5e33d58073f4b3b44955cd71bedfeb..03381b70d6ae9b81849e34324230f0afadc2f77c 100644 (file)
@@ -339,7 +339,10 @@ draw_mgears (ModeInfo *mi)
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index b3998f2d8d285e909142b4dbd9f396ad5c5c3410..3720294cb51ab925d427f3aa149eb502f12a6dc9 100644 (file)
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
-const char * const builtin_pdb_data[] = {
+static const char * const builtin_pdb_data[] = {
 # include "molecules.h"
 };
 
 
+#ifndef USE_IPHONE
+# define LOAD_FILES
+#endif
+
+
 typedef struct {
   const char *name;
   GLfloat size, size2;
@@ -884,6 +889,7 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
 }
 
 
+#ifdef LOAD_FILES
 static int
 parse_pdb_file (molecule *m, const char *name)
 {
@@ -930,6 +936,7 @@ parse_pdb_file (molecule *m, const char *name)
 
   return 0;
 }
+#endif /* LOAD_FILES */
 
 
 typedef struct { char *atom; int count; } atom_and_count;
@@ -1047,16 +1054,17 @@ static void
 load_molecules (ModeInfo *mi)
 {
   molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
-  int wire = MI_IS_WIREFRAME(mi);
   int i;
 
   mc->nmolecules = 0;
+# ifdef LOAD_FILES
   if (molecule_str && *molecule_str && 
       strcmp(molecule_str, "(default)"))       /* try external PDB files */
     {
       /* The -molecule option can point to a .pdb file, or to
          a directory of them.
       */
+      int wire = MI_IS_WIREFRAME(mi);
       struct stat st;
       int nfiles = 0;
       int list_size = 0;
@@ -1160,6 +1168,7 @@ load_molecules (ModeInfo *mi)
       files = 0;
       mc->nmolecules = molecule_ctr;
     }
+# endif /* LOAD_FILES */
 
   if (mc->nmolecules == 0)     /* do the builtins if no files */
     {
@@ -1448,6 +1457,8 @@ draw_labels (ModeInfo *mi)
 
       glTranslatef (0, 0, (size * 1.1));           /* move toward camera */
 
+      glRotatef (current_device_rotation(), 0, 0, 1);  /* right side up */
+
 # ifdef HAVE_GLBITMAP
       glRasterPos3f (0, 0, 0);                     /* draw text here */
 
@@ -1643,7 +1654,10 @@ draw_molecule (ModeInfo *mi)
                  (y - 0.5) * 9,
                  (z - 0.5) * 9);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (mc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (mc->rot, &x, &y, &z, !mc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 015dc1f29e54ea7239359e6adeac9a43da4d02cc..4da81e39a3e6997c54170875264e20a34c5c60f9 100644 (file)
@@ -1458,9 +1458,7 @@ draw_pinion (ModeInfo *mi)
 
   glPushMatrix ();
   {
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (pp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
     mi->polygon_count = 0;
 
     glScalef (16, 16, 16);   /* map vp_width/height to the screen */
index 104f880be23103df37780f661cb8f04a422a710b..9ca14d2453d880836bcc1be91bcb609dee343e3c 100644 (file)
@@ -37,21 +37,37 @@ static const char sccsid[] = "@(#)pipes.c   4.07 97/11/24 xlockmore";
  * Marcelo F. Vianna (Apr-09-1997)
  *
  * Revision History:
+ * 24-Jun-12: Eliminate single-buffer dependency.
  * 29-Apr-97: Factory equipment by Ed Mackey.  Productive day today, eh?
  * 29-Apr-97: Less tight turns Jeff Epler <jepler@inetnebr.com>
  * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
  */
 
+/* This program was originally written to be single-buffered: it kept
+   building up new objects in the front buffer by never clearing the
+   depth or color buffers at the end of each frame.  In that way, it
+   was drawing a very small number of polygons per frame.  However,
+   modern systems make it difficult to live in a single-buffered world
+   like that.  So I changed it to re-generate the scene at every
+   frame, which makes it vastly less efficient, but also, makes it
+   work right on modern hardware.  It generates the entire system up
+   front, putting each "frame" of the animation into its own display
+   list; then it draws successively more of those display lists each
+   time the redisplay method is called.  When it reaches the end,
+   it regenerates a new system and re-populates the existing display
+   lists. -- jwz.
+ */
+
 #ifdef STANDALONE
 # define DEFAULTS      "*delay:                10000   \n"                     \
                                        "*count:                2       \n"                     \
                                        "*cycles:               5       \n"                     \
                                        "*size:                 500     \n"                     \
                        "*showFPS:      False   \n"                 \
-                       "*fpsSolid:     True    \n"
+                       "*fpsSolid:     True    \n"                 \
+                       "*wireframe:    False   \n"
 
 # define refresh_pipes 0
-# define pipes_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
@@ -74,17 +90,16 @@ static const char sccsid[] = "@(#)pipes.c   4.07 97/11/24 xlockmore";
 #include "sphere.h"
 #include "buildlwo.h"
 #include "teapot.h"
+#include "gltrackball.h"
 
 #define DEF_FACTORY     "2"
 #define DEF_FISHEYE     "True"
 #define DEF_TIGHTTURNS  "False"
 #define DEF_ROTATEPIPES "True"
-#define DEF_DBUF        "False"
 #define NofSysTypes     3
 
 static int  factory;
 static Bool fisheye, tightturns, rotatepipes;
-static Bool dbuf_p;
 
 static XrmOptionDescRec opts[] =
 {
@@ -95,8 +110,6 @@ static XrmOptionDescRec opts[] =
        {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"},
       {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"},
       {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"},
-      {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, "on"},
-      {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, "off"},
 };
 static argtype vars[] =
 {
@@ -104,7 +117,6 @@ static argtype vars[] =
        {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
        {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
        {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool},
-       {&dbuf_p, "doubleBuffer", "DoubleBuffer", DEF_DBUF, t_Bool}
 };
 static OptionStruct desc[] =
 {
@@ -112,7 +124,6 @@ static OptionStruct desc[] =
        {"-/+fisheye", "turn on/off zoomed-in view of pipes"},
        {"-/+tightturns", "turn on/off tight turns"},
        {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"},
-       {"-/+db", "turn on/off double buffering"}
 };
 
 ENTRYPOINT ModeSpecOpt pipes_opts =
@@ -129,7 +140,6 @@ ModStruct   pipes_description =
 #endif
 
 #define Scale4Window               0.1
-#define Scale4Iconic               0.07
 
 #define one_third                  0.3333333333333333333
 
@@ -151,7 +161,6 @@ ModStruct   pipes_description =
 typedef struct {
        int         flip;
 
-       GLint       WindH, WindW;
        int         Cells[HCELLS][VCELLS][HCELLS];
        int         usedcolors[DEFINEDCOLORS];
        int         directions[6];
@@ -170,8 +179,16 @@ typedef struct {
        GLuint      valve, bolts, betweenbolts, elbowbolts, elbowcoins;
        GLuint      guagehead, guageface, guagedial, guageconnector, teapot;
     int         teapot_polys;
-    int         reset;
        GLXContext *glx_context;
+
+    Bool button_down_p;
+    trackball_state *trackball;
+    GLuint *dlists, *poly_counts;
+    int dlist_count, dlist_size;
+    int system_index, system_size;
+
+    int fadeout;
+
 } pipesstruct;
 
 extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D;
@@ -204,8 +221,10 @@ static pipesstruct *pipes = NULL;
 static void
 MakeTube(ModeInfo *mi, int direction)
 {
+    Bool        wire = MI_IS_WIREFRAME(mi);
        float       an;
        float       SINan_3, COSan_3;
+    int facets = (wire ? 5 : 24);
 
        /*dirUP    = 00000000 */
        /*dirDOWN  = 00000001 */
@@ -218,8 +237,8 @@ MakeTube(ModeInfo *mi, int direction)
                glRotatef(90.0, (direction & 2) ? 0.0 : 1.0,
                          (direction & 2) ? 1.0 : 0.0, 0.0);
        }
-       glBegin(GL_QUAD_STRIP);
-       for (an = 0.0; an <= 2.0 * M_PI; an += M_PI / 12.0) {
+       glBegin(wire ? GL_LINE_STRIP : GL_QUAD_STRIP);
+       for (an = 0.0; an <= 2.0 * M_PI; an += M_PI * 2 / facets) {
                glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0);
                glVertex3f(COSan_3, SINan_3, one_third);
                glVertex3f(COSan_3, SINan_3, -one_third);
@@ -250,13 +269,14 @@ mySphere(float radius, Bool wire)
 static void
 myElbow(ModeInfo * mi, int bolted)
 {
-#define nsides 25
-#define rings 25
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+    Bool        wire = MI_IS_WIREFRAME(mi);
+
+    int nsides = (wire ? 6 : 25);
+    int rings  = nsides;
 #define r one_third
 #define R one_third
 
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
        int         i, j;
        GLfloat     p0[3], p1[3], p2[3], p3[3];
        GLfloat     n0[3], n1[3], n2[3], n3[3];
@@ -303,7 +323,7 @@ myElbow(ModeInfo * mi, int bolted)
                        p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi));
                        p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1));
 
-                       glBegin(GL_QUADS);
+                       glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
                        glNormal3fv(n3);
                        glVertex3fv(p3);
                        glNormal3fv(n2);
@@ -547,34 +567,8 @@ pinit(ModeInfo * mi, int zera)
        pipesstruct *pp = &pipes[MI_SCREEN(mi)];
        int         X, Y, Z;
 
-    if (zera)
-      mi->polygon_count = 0;
-
-       glClearDepth(1.0);
-       glColor3f(1.0, 1.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_NORMALIZE);
-       glEnable(GL_CULL_FACE);
-
-       glShadeModel(GL_SMOOTH);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
        if (zera) {
                pp->system_number = 1;
-               glDrawBuffer(dbuf_p ? GL_BACK : GL_FRONT);
                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                (void) memset(pp->Cells, 0, sizeof (pp->Cells));
                for (X = 0; X < HCELLS; X++) {
@@ -592,9 +586,6 @@ pinit(ModeInfo * mi, int zera)
                        }
                }
                (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors));
-               if ((pp->initial_rotation += 10.0) > 45.0) {
-                       pp->initial_rotation -= 90.0;
-               }
        }
        pp->counter = 0;
        pp->turncounter = 0;
@@ -659,13 +650,11 @@ pinit(ModeInfo * mi, int zera)
        pp->nowdir = SelectNeighbor(mi);
 }
 
+
 ENTRYPOINT void
 reshape_pipes(ModeInfo * mi, int width, int height)
 {
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-    pinit(mi, 1);
-
-       glViewport(0, 0, pp->WindW = (GLint) width, pp->WindH = (GLint) height);
+       glViewport(0, 0, width, (GLint) height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */
@@ -675,6 +664,53 @@ reshape_pipes(ModeInfo * mi, int width, int height)
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
+ENTRYPOINT Bool
+pipes_handle_event (ModeInfo *mi, XEvent *event)
+{
+  pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      pp->button_down_p = True;
+      gltrackball_start (pp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      pp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (pp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           pp->button_down_p)
+    {
+      gltrackball_track (pp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
+
+static void generate_system (ModeInfo *);
+
+
 ENTRYPOINT void
 init_pipes (ModeInfo * mi)
 {
@@ -688,11 +724,6 @@ init_pipes (ModeInfo * mi)
        }
        pp = &pipes[screen];
 
-#ifdef HAVE_JWZGLES
-    /* Single-buffering on iOS is so confusing! */
-    dbuf_p = True;
-#endif
-
        pp->window = MI_WINDOW(mi);
        if ((pp->glx_context = init_GL(mi)) != NULL) {
 
@@ -741,50 +772,65 @@ init_pipes (ModeInfo * mi)
        } else {
                MI_CLEARWINDOW(mi);
        }
+
+    pp->trackball = gltrackball_init ();
+    generate_system (mi);
 }
 
-ENTRYPOINT void
-draw_pipes (ModeInfo * mi)
+
+static GLuint
+get_dlist (ModeInfo *mi, int i)
 {
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+  pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+  if (i >= pp->dlist_count)
+    {
+      pp->dlist_count++;
+      if (pp->dlist_count >= pp->dlist_size)
+        {
+          int s2 = (pp->dlist_size + 100) * 1.2;
+          pp->dlists = (GLuint *)
+            realloc (pp->dlists, s2 * sizeof(*pp->dlists));
+          if (! pp->dlists) abort();
+          pp->poly_counts = (GLuint *)
+            realloc (pp->poly_counts, s2 * sizeof(*pp->poly_counts));
+          if (! pp->poly_counts) abort();
+          pp->dlist_size = s2;
+        }
+      pp->dlists [i] = glGenLists (1);
+      pp->poly_counts [i] = 0;
+    }
+  return pp->dlists[i];
+}
 
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
+
+
+static void
+generate_system (ModeInfo * mi)
+{
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
     Bool        wire = MI_IS_WIREFRAME(mi);
 
        int         newdir;
        int         OPX, OPY, OPZ;
 
-       if (!pp->glx_context)
-               return;
+    Bool reset_p = False;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+    pp->system_index = 0;
+    pp->system_size = 0;
+    pinit (mi, 1);
 
-    if (pp->reset) {
-      if (--pp->reset) {
-        /* Would be nice to fade to black here, by drawing successive quads
-           over the whole scene with gamma. */
-        return;
-      }
-      pinit(mi, 1);
-    }
+    while (1) {
+      glNewList (get_dlist (mi, pp->system_size++), GL_COMPILE);
+      mi->polygon_count = 0;
 
        glPushMatrix();
 
-       glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8);
-       if (rotatepipes)
-               glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               /* Width/height ratio handled by gluPerspective() now. */
-               glScalef(Scale4Window, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic, Scale4Iconic, Scale4Iconic);
-       }
-
        FindNeighbors(mi);
 
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
+    if (wire)
+      glColor4fv (pp->system_color);
+    else
+      glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
 
        /* If it's the begining of a system, draw a sphere */
        if (pp->olddir == dirNone) {
@@ -805,15 +851,12 @@ draw_pipes (ModeInfo * mi)
                /* If the maximum number of system was drawn, restart (clearing the screen), */
                /* else start a new system. */
                if (++pp->system_number > pp->number_of_systems) {
-          /* pause doing nothing for N seconds before clearing the screen. */
-          int secs = 3;
-          pp->reset = secs * 1000000 / (MI_PAUSE(mi) ? MI_PAUSE(mi) : 100);
+          reset_p = True;
                } else {
                        pinit(mi, 0);
                }
 
-               glPopMatrix();
-               return;
+        goto NEXT;
        }
        pp->counter++;
        pp->turncounter++;
@@ -1032,16 +1075,110 @@ draw_pipes (ModeInfo * mi)
        glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0);
        MakeTube(mi, newdir);
 
+    NEXT:
        glPopMatrix();
+    glEndList();
+    pp->poly_counts [pp->system_size-1] = mi->polygon_count;
+
+    if (reset_p)
+      break;
+    }
+}
 
-       glFlush();
+
+ENTRYPOINT void
+draw_pipes (ModeInfo * mi)
+{
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+       Display *display = MI_DISPLAY(mi);
+       Window    window = MI_WINDOW(mi);
+    Bool        wire = MI_IS_WIREFRAME(mi);
+    int i = 0;
+
+       if (!pp->glx_context)
+               return;
+
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+       glColor3f(1.0, 1.0, 1.0);
+
+       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
+       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
+       glLightfv(GL_LIGHT0, GL_POSITION, position0);
+       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1);
+       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1);
+       glLightfv(GL_LIGHT1, GL_POSITION, position1);
+       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+
+    if (wire)
+      glDisable(GL_LIGHTING);
+    else
+      {
+        glEnable(GL_LIGHTING);
+        glEnable(GL_LIGHT0);
+        /* This looks crappy. */
+        /* glEnable(GL_LIGHT1); */
+        glEnable(GL_DEPTH_TEST);
+        glEnable(GL_NORMALIZE);
+        glEnable(GL_CULL_FACE);
+      }
+
+       glShadeModel(GL_SMOOTH);
+       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+
+    glPushMatrix();
+
+    pp->initial_rotation += 0.02;
+
+       glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8);
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
+    gltrackball_rotate (pp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
+       if (rotatepipes)
+      glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0);
+
+    glScalef(Scale4Window, Scale4Window, Scale4Window);
+
+    mi->polygon_count = 0;
+
+    if (pp->fadeout)
+      {
+        GLfloat s = (pp->fadeout * pp->fadeout) / 10000.0;
+        glScalef (s, s, s);
+        glRotatef (90 * (1 - (pp->fadeout/100.0)), 1, 0, 0.1);
+        pp->fadeout -= 4;
+        if (pp->fadeout <= 0)
+          {
+            pp->fadeout = 0;
+            generate_system (mi);
+          }
+      }
+    else if (pp->system_index < pp->system_size)
+      pp->system_index++;
+    else
+      pp->fadeout = 100;
+
+    for (i = 0; i < pp->system_index; i++)
+      {
+        glCallList (pp->dlists[i]);
+        mi->polygon_count += pp->poly_counts[i];
+      }
+
+    glPopMatrix();
 
     if (mi->fps_p) do_fps (mi);
+    glFinish();
 
-    if (dbuf_p)
-      glXSwapBuffers(display, window);
+    glXSwapBuffers(display, window);
 }
 
+
 #ifndef STANDALONE
 ENTRYPOINT void
 change_pipes (ModeInfo * mi)
@@ -1093,6 +1230,14 @@ release_pipes (ModeInfo * mi)
                                        glDeleteLists(pp->guageconnector, 1);
                                if (pp->teapot)
                                        glDeleteLists(pp->teapot, 1);
+                if (pp->dlists)
+                  {
+                    int i;
+                    for (i = 0; i < pp->dlist_count; i++)
+                      glDeleteLists (pp->dlists[i], 1);
+                    free (pp->dlists);
+                    free (pp->poly_counts);
+                  }
                        }
                }
 
index 1b2d7eb7a787027610dba9656bf9b8317205f543..48e7ec53a58bf2a6d481469fb201524d4513c403 100644 (file)
 # include <X11/keysymdef.h>
 #endif
 
+#ifndef HAVE_JWZGLES
+# define HAVE_TESS
+#endif
+
+
 #ifdef USE_GL /* whole file */
 
 typedef struct {
@@ -381,13 +386,16 @@ new_label (ModeInfo *mi)
 }
 
 
+#ifdef HAVE_TESS
 static void
 tess_error (GLenum errorCode)
 {
   fprintf (stderr, "%s: tesselation error: %s\n",
            progname, gluErrorString(errorCode));
-  exit (0);
+  abort();
 }
+#endif /* HAVE_TESS */
+
 
 static void
 new_polyhedron (ModeInfo *mi)
@@ -400,11 +408,13 @@ new_polyhedron (ModeInfo *mi)
   /* Use the GLU polygon tesselator so that nonconvex faces are displayed
      correctly (e.g., for the "pentagrammic concave deltohedron").
    */
+# ifdef HAVE_TESS
   GLUtesselator *tobj = gluNewTess();
   gluTessCallback (tobj, GLU_TESS_BEGIN,  (void (*) (void)) &glBegin);
   gluTessCallback (tobj, GLU_TESS_END,    (void (*) (void)) &glEnd);
   gluTessCallback (tobj, GLU_TESS_VERTEX, (void (*) (void)) &glVertex3dv);
   gluTessCallback (tobj, GLU_TESS_ERROR,  (void (*) (void)) &tess_error);
+# endif /* HAVE_TESS */
 
   mi->polygon_count = 0;
 
@@ -431,10 +441,20 @@ new_polyhedron (ModeInfo *mi)
   glNewList (bp->object_list, GL_COMPILE);
   if (bp->which == bp->npolyhedra-1)
     {
+      GLfloat bcolor[4];
+      bcolor[0] = bp->colors[0].red   / 65536.0;
+      bcolor[1] = bp->colors[0].green / 65536.0;
+      bcolor[2] = bp->colors[0].blue  / 65536.0;
+      bcolor[3] = 1.0;
+      if (wire)
+        glColor3f (0, 1, 0);
+      else
+        glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
+
       glScalef (0.8, 0.8, 0.8);
       p->nfaces = unit_teapot (6, wire);
-      p->nedges = p->nfaces * 2;           /* #### is this right? */
-      p->npoints = p->nfaces / 3;          /* #### is this right? */
+      p->nedges = p->nfaces * 3 / 2;
+      p->npoints = p->nfaces * 3;
       p->logical_faces = p->nfaces;
       p->logical_vertices = p->npoints;
     }
@@ -455,12 +475,13 @@ new_polyhedron (ModeInfo *mi)
               bcolor[0] = bp->colors[f->color].red   / 65536.0;
               bcolor[1] = bp->colors[f->color].green / 65536.0;
               bcolor[2] = bp->colors[f->color].blue  / 65536.0;
-              bcolor[2] = 1.0;
+              bcolor[3] = 1.0;
               glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
             }
 
           kludge_normal (f->npoints, f->points, p->points);
       
+# ifdef HAVE_TESS
           gluTessBeginPolygon (tobj, 0);
           gluTessBeginContour (tobj);
           for (j = 0; j < f->npoints; j++)
@@ -470,12 +491,26 @@ new_polyhedron (ModeInfo *mi)
             }
           gluTessEndContour (tobj);
           gluTessEndPolygon (tobj);
+# else  /* !HAVE_TESS */
+          glBegin (wire ? GL_LINE_LOOP :
+                   f->npoints == 3 ? GL_TRIANGLES :
+                   f->npoints == 4 ? GL_QUADS :
+                   GL_POLYGON);
+          for (j = 0; j < f->npoints; j++)
+            {
+              point *pp = &p->points[f->points[j]];
+              glVertex3f (pp->x, pp->y, pp->z);
+            }
+          glEnd();
+# endif /* !HAVE_TESS */
         }
     }
   glEndList ();
 
   mi->polygon_count += p->nfaces;
+# ifdef HAVE_TESS
   gluDeleteTess (tobj);
+# endif
 }
 
 
@@ -676,7 +711,10 @@ draw_polyhedra (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 1f9e3bda979f3b1eeec919498dd8843ddd49856f..585bb42c9f7e3750822a18de19d932e501c67cf3 100644 (file)
@@ -782,9 +782,7 @@ ENTRYPOINT void draw_providence(ModeInfo * mi)
   /* rotate providence */
   glTranslatef(0.0, 0.0, mp->camera_z + sin(mp->theta/4.0));
   glRotatef(10.0+20.0*sin(mp->theta/2.0), 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0);
 
   /* draw providence */
index b0df56686e401e34f816f0d09e77511b27152c81..88592b13fe024724aa7c6028d1dee911f68c0e89 100644 (file)
@@ -352,11 +352,93 @@ static int drawBoard(Queenscreen *qs)
     }
 
   glEnd();
+
+  {
+    GLfloat off = 0.01;
+    GLfloat w = qs->BOARDSIZE;
+    GLfloat h = 0.1;
+
+    /* Give the board a slight lip. */
+    /* #### oops, normals are wrong here, but you can't tell */
+
+    glColor3f(0.3, 0.3, 0.3);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    polys += 4;
+
+    /* Fill in the underside of the board with an invisible black box
+       to hide the reflections that are not on tiles.  Probably there's
+       a way to do this with stencils instead.
+     */
+    w -= off*2;
+    h = 5;
+
+    glPushMatrix();
+    glTranslatef (off, 0, off);
+    glDisable(GL_LIGHTING);
+    glColor3f(0,0,0);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    polys += 4;
+    glPopMatrix();
+    if (!wire)
+      glEnable(GL_LIGHTING);
+  }
+
   return polys;
 }
 
 static int display(Queenscreen *qs) 
 {
+  int max = 1024;
   int polys = 0;
   glClear(clearbits);
   
@@ -366,6 +448,7 @@ static int display(Queenscreen *qs)
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* setup light attenuation */
+  /* #### apparently this does nothing */
   glEnable(GL_COLOR_MATERIAL);
   glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs)));
   glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06);
@@ -373,9 +456,7 @@ static int display(Queenscreen *qs)
   /** setup perspective */
   glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (qs->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(qs->theta*100, 0.0, 1.0, 0.0);
   glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE);
 
@@ -390,6 +471,18 @@ static int display(Queenscreen *qs)
     glEnable(GL_LIGHT0);
   }
 
+  /* Since the lighting attenuation trick up there doesn't seem to be working,
+     let's drop the old board down and drop the new board in. */
+  if (qs->steps < (max/8.0)) {
+    GLfloat y = qs->steps / (max/8.0);
+    y = sin (M_PI/2 * y);
+    glTranslatef (0, 10 - (y * 10), 0);
+  } else if (qs->steps > max-(max/8.0)) {
+    GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0);
+    y = 1 - sin (M_PI/2 * (1-y));
+    glTranslatef (0, -y * 15, 0);
+  }
+
   /* draw reflections */
   if(!wire) {
     polys += draw_reflections(qs);
@@ -409,7 +502,7 @@ static int display(Queenscreen *qs)
     qs->theta += .002;
 
   /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */
-  if(++qs->steps == 1024) {
+  if(++qs->steps == max) {
     qs->steps = 0;
     blank(qs);
     qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1));
@@ -500,7 +593,7 @@ ENTRYPOINT void init_queens(ModeInfo *mi)
 
   qs->BOARDSIZE = 8; /* 8 cuz its classic */
 
-  gen_model_lists(-1, poly_counts);
+  chessmodels_gen_lists(-1, poly_counts);
   qs->queen_list = QUEEN;
   qs->queen_polys = poly_counts[QUEEN];
 
index 0f40347c998cfeefaaf8eea539cf54c9ea6d0dd9..20ced9733cab4ca1d516fdee602e08f7e32cade0 100644 (file)
@@ -111,13 +111,14 @@ static const char sccsid[] = "@(#)rubik.c 5.01 2001/03/01 xlockmore";
                                        "*cycles: 20 \n"                \
                                        "*size:  -6 \n"
 # define refresh_rubik 0
-# define rubik_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
 # include "vis.h"
 #endif /* !STANDALONE */
 
+#include "gltrackball.h"
+
 #ifdef MODE_rubik
 
 #define DEF_SIZEX     "0"
@@ -372,6 +373,8 @@ typedef struct {
        GLfloat     rotatestep;
        GLfloat     PX, PY, VX, VY;
        GLXContext *glx_context;
+    Bool button_down_p;
+    trackball_state *trackball;
 } rubikstruct;
 
 static const float front_shininess[] = {60.0};
@@ -1816,6 +1819,49 @@ reshape_rubik(ModeInfo * mi, int width, int height)
 
 }
 
+ENTRYPOINT Bool
+rubik_handle_event (ModeInfo *mi, XEvent *event)
+{
+  rubikstruct *rp = &rubik[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      rp->button_down_p = True;
+      gltrackball_start (rp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      rp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (rp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           rp->button_down_p)
+    {
+      gltrackball_track (rp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
 static Bool
 pinit(ModeInfo * mi)
 {
@@ -1897,6 +1943,8 @@ init_rubik(ModeInfo * mi)
        rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
        rp->PY = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
 
+    rp->trackball = gltrackball_init ();
+
        if ((rp->glx_context = init_GL(mi)) != NULL) {
 
                reshape_rubik(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
@@ -1983,6 +2031,11 @@ draw_rubik(ModeInfo * mi)
                glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic);
        }
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
+    gltrackball_rotate (rp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
        glRotatef(rp->step * 100, 1, 0, 0);
        glRotatef(rp->step * 95, 0, 1, 0);
        glRotatef(rp->step * 90, 0, 0, 1);
index e8caf32f140d18a94205848a1f5a5224a018bec9..86968ad97d52731291e93831c204e12742df9e85 100644 (file)
@@ -262,7 +262,12 @@ draw_main(ModeInfo *mi, rubikblocks_conf *cp)
   glLoadIdentity();
   get_position(cp->rot, &x, &y, &z, !cp->button_down);
   glTranslatef((x-0.5)*6, (y-0.5)*6, -20);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   get_rotation(cp->rot, &x, &y, &z, !cp->button_down);
   glRotatef(x*360, 1, 0, 0);
   glRotatef(y*360, 0, 1, 0);
index 76b60ec03fe996e369ead30e9f4aa9884e263923..833b0001ed7fade4429f3c154c2fbde46413e98a 100644 (file)
@@ -580,7 +580,10 @@ static void Draw(ModeInfo * mi)
     glEnd();
     mi->polygon_count++;
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (sb->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     /* rotate the balls */
     glRotatef(sb->rotm[0], 1.0f, 0.0f, 0.0f);
index 078369987583a6ab0e48a054a047c0ae478b23bf..7bcefcf2c4a447837af5dcd5ce62389033292ecc 100644 (file)
@@ -327,7 +327,10 @@ draw(ModeInfo *mi)
                  (y - 0.5) * 10,
                  (z - 0.5) * 20);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (gp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index ace1e594073e558e65722d1f8b28e673e36beabb..c9f1febe9f4fc6cbef90044c1b154c7745b7baa6 100644 (file)
@@ -993,7 +993,7 @@ draw_tentacles (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
 # if 1
   glScalef (3, 3, 3);
@@ -1017,7 +1017,6 @@ draw_tentacles (ModeInfo *mi)
 # endif
 
   gltrackball_rotate (tc->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   mi->polygon_count = 0;
 
index dfa277d45f7bf89c8d2ce4fab7dcc684703063cc..fa1ea893df64faca035eaac4ab1381fd8fd26f33 100644 (file)
   */
 #endif
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
 #if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR)
 # include <unistd.h>
 # include <sys/stat.h>
@@ -57,6 +61,9 @@
 # include <netinet/udp.h>
 # include <arpa/inet.h>
 # include <netdb.h>
+# ifdef HAVE_GETIFADDRS
+#  include <ifaddrs.h>
+# endif
 #endif /* HAVE_ICMP || HAVE_ICMPHDR */
 
 #if defined(HAVE_ICMP)
 # undef HAVE_PING
 #endif
 
+#ifndef USE_IPHONE
+# define LOAD_FILES
+#endif
+
 #ifndef HAVE_PING
 
 sonar_sensor_data *
-init_ping (Display *dpy, char **error_ret, const char *subnet, int timeout,
+init_ping (Display *dpy, char **error_ret, char **desc_ret, 
+           const char *subnet, int timeout,
            Bool resolve_p, Bool times_p, Bool debug_p)
 {
   if (! (!subnet || !*subnet || !strcmp(subnet, "default")))
@@ -330,11 +342,13 @@ bogie_for_host (sonar_sensor_data *ssd, const char *name, Bool resolve_p)
   return b;
 
  FAIL:
-  if (b) free_bogie (ssd, b);
+  if (b) sonar_free_bogie (ssd, b);
   return 0;
 }
 
 
+#ifdef READ_FILES
+
 /* Return a list of bogies read from a file.
    The file can be like /etc/hosts or .ssh/known_hosts or probably
    just about anything that has host names in it.
@@ -442,6 +456,7 @@ read_hosts_file (sonar_sensor_data *ssd, const char *filename)
   fclose(fp);
   return list;
 }
+#endif /* READ_FILES */
 
 
 static sonar_bogie *
@@ -484,22 +499,41 @@ delete_duplicate_hosts (sonar_sensor_data *ssd, sonar_bogie *list)
 }
 
 
+static unsigned int
+width_mask (int width)
+{
+  unsigned int m = 0;
+  int i;
+  for (i = 0; i < width; i++)
+    m |= (1L << (31-i));
+  return m;
+}
+
+
+#ifdef HAVE_GETIFADDRS
+static int
+mask_width (unsigned int mask)
+{
+  int i;
+  for (i = 0; i < 32; i++)
+    if (mask & (1 << i))
+      break;
+  return 32-i;
+}
+#endif
+
+
 /* Generate a list of bogies consisting of all of the entries on
   the same subnet.  'base' ip is in network order; 0 means localhost.
  */
 static sonar_bogie *
-subnet_hosts (sonar_sensor_data *ssd, char **error_ret,
+subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
               unsigned long n_base, int subnet_width)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   unsigned long h_mask;   /* host order */
   unsigned long h_base;   /* host order */
-
-  /* Local Variables */
-
-  char hostname[BUFSIZ];
   char address[BUFSIZ];
-  struct hostent *hent;
   char *p;
   int i;
   sonar_bogie *new;
@@ -532,79 +566,172 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret,
   if (pd->debug_p)
     fprintf (stderr, "%s:   adding %d-bit subnet\n", progname, subnet_width);
 
-  /* Get our hostname */
 
-  if (gethostname(hostname, BUFSIZ)) 
+  if (! n_base)
     {
-      *error_ret = strdup ("Unable to determine\n"
-                           "local host name!");
-      return 0;
-    }
+# ifdef HAVE_GETIFADDRS
 
-  /* Get our IP address and convert it to a string */
+      /* To determine the local subnet, we need to know the local IP address.
+         Do this by looking at the IPs of every network interface.
+      */
+      struct in_addr in = { 0, };
+      struct ifaddrs *all = 0, *ifa;
+
+      if (pd->debug_p)
+        fprintf (stderr, "%s:   listing network interfaces\n", progname);
+
+      getifaddrs (&all);
+      for (ifa = all; ifa; ifa = ifa->ifa_next)
+        {
+          struct in_addr in2;
+          unsigned long mask;
+          if (ifa->ifa_addr->sa_family != AF_INET)
+            {
+              if (pd->debug_p)
+                fprintf (stderr, "%s:     if: %4s: %s\n", progname,
+                         ifa->ifa_name,
+                         (ifa->ifa_addr->sa_family == AF_UNIX  ? "local" :
+                          ifa->ifa_addr->sa_family == AF_LINK  ? "link"  :
+                          ifa->ifa_addr->sa_family == AF_INET6 ? "ipv6"  :
+                          "other"));
+              continue;
+            }
+          in2 = ((struct sockaddr_in *) ifa->ifa_addr)->sin_addr;
+          mask = ntohl (((struct sockaddr_in *) ifa->ifa_netmask)
+                        ->sin_addr.s_addr);
+          if (pd->debug_p)
+            fprintf (stderr, "%s:     if: %4s: inet = %s /%d 0x%08lx\n",
+                     progname,
+                     ifa->ifa_name,
+                     inet_ntoa (in2),
+                     mask_width (mask),
+                     mask);
+          if (in2.s_addr == 0x0100007f ||   /* 127.0.0.1 in network order */
+              mask == 0)
+            continue;
+
+          /* At least on the AT&T 3G network, pinging either of the two
+             hosts on a /31 network doesn't work, so don't try.
+           */
+          if (mask_width (mask) == 31)
+            {
+              char buf[255];
+              sprintf (buf,
+                       "Can't ping subnet:\n"
+                       "local network is\n"
+                       "%s/%d,\n"
+                       "a p2p bridge\n"
+                       "on if %s.",
+                       inet_ntoa (in2), mask_width (mask), ifa->ifa_name);
+              if (*error_ret) free (*error_ret);
+              *error_ret = strdup (buf);
+              continue;
+            }
+
+          in = in2;
+          subnet_width = mask_width (mask);
+        }
+
+      if (in.s_addr)
+        {
+          if (*error_ret) free (*error_ret);
+          *error_ret = 0;
+          n_base = in.s_addr;  /* already in network order, I think? */
+        }
+      else if (!*error_ret)
+        *error_ret = strdup ("Unable to determine\nlocal IP address\n");
+
+      if (all) 
+        freeifaddrs (all);
+
+      if (*error_ret)
+        return 0;
+
+# else /* !HAVE_GETIFADDRS */
+
+      /* If we can't walk the list of network interfaces to figure out
+         our local IP address, try to do it by finding the local host
+         name, then resolving that.
+      */
+      char hostname[BUFSIZ];
+      struct hostent *hent = 0;
+
+      if (gethostname(hostname, BUFSIZ)) 
+        {
+          *error_ret = strdup ("Unable to determine\n"
+                               "local host name!");
+          return 0;
+        }
+
+      /* Get our IP address and convert it to a string */
 
-  hent = gethostbyname(hostname);
-  if (! hent)
-    {
-      strcat (hostname, ".local");     /* Necessary on iphone */
       hent = gethostbyname(hostname);
-    }
+      if (! hent)
+        {
+          strcat (hostname, ".local"); /* Necessary on iphone */
+          hent = gethostbyname(hostname);
+        }
 
-  if (! hent)
-    {
-      /* Without being able to resolve localhost to an IP, we don't know
-         what our local subnet is.  I don't know another way to find that,
-         short of running "ifconfig" and parsing the output...
-       */
-      sprintf(buf, 
-              "Unable to resolve\n"
-              "local host \"%s\"", 
-              hostname);
-      *error_ret = strdup(buf);
-      return 0;
+      if (! hent)
+        {
+          sprintf(buf, 
+                  "Unable to resolve\n"
+                  "local host \"%s\"", 
+                  hostname);
+          *error_ret = strdup(buf);
+          return 0;
+        }
+
+      strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0])));
+      n_base = pack_addr (hent->h_addr_list[0][0],
+                          hent->h_addr_list[0][1],
+                          hent->h_addr_list[0][2],
+                          hent->h_addr_list[0][3]);
+
+      if (n_base == 0x0100007f)   /* 127.0.0.1 in network order */
+        {
+          unsigned int a, b, c, d;
+          unpack_addr (n_base, &a, &b, &c, &d);
+          sprintf (buf,
+                   "Unable to determine\n"
+                   "local subnet address:\n"
+                   "\"%s\"\n"
+                   "resolves to\n"
+                   "loopback address\n"
+                   "%u.%u.%u.%u.",
+                   hostname, a, b, c, d);
+          *error_ret = strdup(buf);
+          return 0;
+        }
+
+# endif /* !HAVE_GETIFADDRS */
     }
 
-  strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0])));
 
   /* Construct targets for all addresses in this subnet */
 
-  h_mask = 0;
-  for (i = 0; i < subnet_width; i++)
-    h_mask |= (1L << (31-i));
-
-  /* If no base IP specified, assume localhost. */
-  if (n_base == 0)
-    n_base = pack_addr (hent->h_addr_list[0][0],
-                        hent->h_addr_list[0][1],
-                        hent->h_addr_list[0][2],
-                        hent->h_addr_list[0][3]);
+  h_mask = width_mask (subnet_width);
   h_base = ntohl (n_base);
 
-  if (h_base == 0x7F000001L)   /* 127.0.0.1 in host order */
-    {
-      unsigned int a, b, c, d;
-      unpack_addr (n_base, &a, &b, &c, &d);
-      sprintf (buf,
-               "Unable to determine\n"
-               "local subnet address:\n"
-               "\"%s\"\n"
-               "resolves to\n"
-               "loopback address\n"
-               "%u.%u.%u.%u.",
-               hostname, a, b, c, d);
-      *error_ret = strdup(buf);
-      return 0;
-    }
+  if (desc_ret && !*desc_ret) {
+    unsigned int a, b, c, d;
+    char buf[255];
+    unpack_addr (n_base, &a, &b, &c, &d);
+    sprintf (buf, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width);
+    *desc_ret = strdup (buf);
+  }
 
   for (i = 255; i >= 0; i--) {
     unsigned int a, b, c, d;
     int ip = (h_base & 0xFFFFFF00L) | i;     /* host order */
       
-    if ((ip & h_mask) != (h_base & h_mask))  /* not in mask range at all */
+    if ((ip & h_mask) != (h_base & h_mask))  /* skip out-of-subnet host */
       continue;
-    if ((ip & ~h_mask) == 0)                 /* broadcast address */
+    else if (subnet_width == 31)            /* 1-bit bridge: 2 hosts */
+      ;
+    else if ((ip & ~h_mask) == 0)           /* skip network address */
       continue;
-    if ((ip & ~h_mask) == ~h_mask)           /* broadcast address */
+    else if ((ip & ~h_mask) == ~h_mask)             /* skip broadcast address */
       continue;
 
     unpack_addr (htonl (ip), &a, &b, &c, &d);
@@ -749,7 +876,7 @@ checksum (u_short *packet, int size)
 static sonar_bogie *
 copy_ping_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 {
-  sonar_bogie *b2 = copy_bogie (ssd, b);
+  sonar_bogie *b2 = sonar_copy_bogie (ssd, b);
   if (b->closure)
     {
       ping_bogie *pb  = (ping_bogie *) b->closure;
@@ -949,7 +1076,7 @@ ping_free_data (sonar_sensor_data *ssd, void *closure)
   while (b)
     {
       sonar_bogie *b2 = b->next;
-      free_bogie (ssd, b);
+      sonar_free_bogie (ssd, b);
       b = b2;
     }
   free (pd);
@@ -1007,25 +1134,32 @@ ping_scan (sonar_sensor_data *ssd)
 /* Returns a list of hosts to ping based on the "-ping" argument.
  */
 static sonar_bogie *
-parse_mode (sonar_sensor_data *ssd, char **error_ret,
+parse_mode (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
             const char *ping_arg, Bool ping_works_p)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   char *source, *token, *end, dummy;
   sonar_bogie *hostlist = 0;
+  const char *fallback = "subnet";
 
-  if (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default"))
-    source = strdup("subnet/28");
-  else
+ AGAIN:
+
+  if (fallback && (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default")))
+    source = strdup(fallback);
+  else if (ping_arg)
     source = strdup(ping_arg);
+  else
+    return 0;
 
   token = source;
   end = source + strlen(source);
   while (token < end)
     {
       char *next;
-      sonar_bogie *new;
+      sonar_bogie *new = 0;
+# ifdef READ_FILES
       struct stat st;
+# endif
       unsigned int n0=0, n1=0, n2=0, n3=0, m=0;
       char d;
 
@@ -1054,7 +1188,7 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
              subnet: A.B.C/M
            */
           unsigned long ip = pack_addr (n0, n1, n2, n3);
-          new = subnet_hosts (ssd, error_ret, ip, m);
+          new = subnet_hosts (ssd, error_ret, desc_ret, ip, m);
         }
       else if (4 == sscanf (token, "%u.%u.%u.%u %c", &n0, &n1, &n2, &n3, &d))
         {
@@ -1064,20 +1198,27 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
         }
       else if (!strcmp (token, "subnet"))
         {
-          new = subnet_hosts (ssd, error_ret, 0, 24);
+          new = subnet_hosts (ssd, error_ret, desc_ret, 0, 24);
         }
       else if (1 == sscanf (token, "subnet/%u %c", &m, &dummy))
         {
-          new = subnet_hosts (ssd, error_ret, 0, m);
+          new = subnet_hosts (ssd, error_ret, desc_ret, 0, m);
         }
       else if (*token == '.' || *token == '/' || 
-               *token == '$' || *token == '~' ||
-               !stat (token, &st))
+               *token == '$' || *token == '~')
         {
-          /* file name
-           */
+# ifdef READ_FILES
           new = read_hosts_file (ssd, token);
+# else
+          if (pd->debug_p) fprintf (stderr, "%s:  skipping file\n", progname);
+# endif
         }
+# ifdef READ_FILES
+      else if (!stat (token, &st))
+        {
+          new = read_hosts_file (ssd, token);
+        }
+# endif /* READ_FILES */
       else
         {
           /* not an existant file - must be a host name
@@ -1102,20 +1243,35 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
     }
 
   free (source);
+
+  /* If the arg was completely unparsable, fall back to the local subnet.
+     This happens if the default is "/etc/hosts" but READ_FILES is off.
+     Or if we're on a /31 network, in which case we try twice then fail.
+   */
+  if (!hostlist && fallback)
+    {
+      if (pd->debug_p)
+        fprintf (stderr, "%s: no hosts parsed! Trying %s\n", 
+                 progname, fallback);
+      ping_arg = fallback;
+      fallback = 0;
+      goto AGAIN;
+    }
+
   return hostlist;
 }
 
 
 sonar_sensor_data *
-init_ping (Display *dpy, char **error_ret, 
-           const char *subnet, int timeout,
-           Bool resolve_p, Bool times_p, Bool debug_p)
+sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret,
+                 const char *subnet, int timeout,
+                 Bool resolve_p, Bool times_p, Bool debug_p)
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   ping_data *pd = (ping_data *) calloc (1, sizeof(*pd));
   sonar_bogie *b;
   char *s;
-  int i, div;
+  int i;
 
   Bool socket_initted_p = False;
   Bool socket_raw_p     = False;
@@ -1188,7 +1344,8 @@ init_ping (Display *dpy, char **error_ret,
 
   /* Generate a list of targets */
 
-  pd->targets = parse_mode (ssd, error_ret, subnet, socket_initted_p);
+  pd->targets = parse_mode (ssd, error_ret, desc_ret, subnet,
+                            socket_initted_p);
   pd->targets = delete_duplicate_hosts (ssd, pd->targets);
 
   if (debug_p)
@@ -1220,12 +1377,21 @@ init_ping (Display *dpy, char **error_ret,
       return 0;
     }
 
-  /* Distribute them evenly around the display field.
+  /* Distribute them evenly around the display field, clockwise.
+     Even on a /24, allocated IPs tend to cluster together, so
+     don't put any two hosts closer together than N degrees to
+     avoid unnecessary overlap when we have plenty of space due
+     to addresses that probably won't respond.
    */
-  div = pd->target_count;
-  if (div > 90) div = 90;  /* no closer together than 4 degrees */
-  for (i = 0, b = pd->targets; b; b = b->next, i++)
-    b->th = M_PI * 2 * ((div - i) % div) / div;
+  {
+    int min_separation = 23;  /* degrees */
+    int div = pd->target_count;
+    if (div > 360 / min_separation)
+      div = 360 / min_separation;
+    for (i = 0, b = pd->targets; b; b = b->next, i++)
+      b->th = (M_PI/2 -
+               M_PI * 2 * ((div - i) % div) / div);
+  }
 
   return ssd;
 }
index f87de66491b6adb5ac7fc806040d618ddb3c4181..ea5452e7e21305e37c196afe479a08148602d53b 100644 (file)
@@ -1,4 +1,4 @@
-/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin
+/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -53,7 +53,7 @@ sim_scan (sonar_sensor_data *ssd)
       while (b->r < 0.2) b->r += scale * 0.1;
       while (b->r > 0.9) b->r -= scale * 0.1;
 
-      b2 = copy_bogie (ssd, b);
+      b2 = sonar_copy_bogie (ssd, b);
       b2->next = list;
       list = b2;
     }
@@ -86,10 +86,10 @@ make_bogies (sonar_sensor_data *ssd)
 
 
 sonar_sensor_data *
-init_simulation (Display *dpy, char **error_ret,
-                 const char *team_a_name, const char *team_b_name,
-                 int team_a_count, int team_b_count,
-                 Bool debug_p)
+sonar_init_simulation (Display *dpy, char **error_ret, char **desc_ret,
+                       const char *team_a_name, const char *team_b_name,
+                       int team_a_count, int team_b_count,
+                       Bool debug_p)
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   sim_data *sd = (sim_data *) calloc (1, sizeof(*sd));
index ac51a2ce1feb3a1a55ff186048482ba9b6834f5f..bafb43edc17d3bee72e519e7b72e0e235305a426 100644 (file)
  *
  * It should be easy to extend this code to support other sorts of sensors.
  * Some ideas:
+ *
  *   - search the output of "netstat" for the list of hosts to ping;
  *   - plot the contents of /proc/interrupts;
  *   - plot the process table, by process size, cpu usage, or total time;
  *   - plot the logged on users by idle time or cpu usage.
- *
+ *   - plot IM contacts or Facebook friends and their last-activity times.
  */
 
 #define DEF_FONT "-*-lucidatypewriter-bold-r-normal-*-*-480-*-*-*-*-iso8859-1"
@@ -108,8 +109,10 @@ typedef struct {
 
   texture_font_data *texfont;
 
+  enum { MSG, RESOLVE, RUN } state;
   sonar_sensor_data *ssd;
   char *error;
+  char *desc;
 
   sonar_bogie *displayed;      /* on screen and fading */
   sonar_bogie *pending;                /* returned by sensor, not yet on screen */
@@ -331,10 +334,10 @@ draw_text (ModeInfo *mi, const char *string, GLfloat r, GLfloat th,
   char *string2 = strdup (string);
   char *token = string2;
   char *line;
-  GLfloat color[4];
 
   if (size <= 0)   /* if size not specified, draw in yellow with alpha */
     {
+      GLfloat color[4];
       color[0] = 1;
       color[1] = 1;
       color[2] = 0;
@@ -499,7 +502,7 @@ draw_bogies (ModeInfo *mi)
 
 /* called from sonar-sim.c and sonar-icmp.c */
 sonar_bogie *
-copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
+sonar_copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 {
   sonar_bogie *b2 = (sonar_bogie *) calloc (1, sizeof(*b2));
   b2->name = strdup (b->name);
@@ -519,7 +522,7 @@ copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 
 /* called from sonar-icmp.c */
 void
-free_bogie (sonar_sensor_data *ssd, sonar_bogie *b)
+sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b)
 {
   if (b->closure)
     ssd->free_bogie_cb (ssd, b->closure);
@@ -542,7 +545,7 @@ delete_bogie (sonar_sensor_data *ssd, sonar_bogie *b,
           prev->next = b->next;
         else
           (*from_list) = b->next;
-        free_bogie (ssd, b);
+        sonar_free_bogie (ssd, b);
         break;
       }
 }
@@ -569,7 +572,7 @@ copy_and_insert_bogie (sonar_sensor_data *ssd, sonar_bogie *b,
         }
     }
 
-  b = copy_bogie (ssd, b);
+  b = sonar_copy_bogie (ssd, b);
   b->next = *to_list;
   *to_list = b;
 }
@@ -727,7 +730,7 @@ draw_startup_blurb (ModeInfo *mi)
 
   /* only leave error message up for N seconds */
   if (sp->error &&
-      sp->start_time + 4 < double_time())
+      sp->start_time + 6 < double_time())
     {
       free (sp->error);
       sp->error = 0;
@@ -852,6 +855,7 @@ init_sonar (ModeInfo *mi)
   sp->start_time = double_time ();
   sp->sweep_offset = random() % 60;
   sp->sweep_th = -1;
+  sp->state = MSG;
 }
 
 
@@ -865,18 +869,21 @@ init_sensor (ModeInfo *mi)
   if (!ping_arg || !*ping_arg ||
       !strcmp(ping_arg, "default") ||
       !!strcmp (ping_arg, "simulation"))
-    sp->ssd = init_ping (MI_DISPLAY (mi), &sp->error, ping_arg,
-                         ping_timeout, resolve_p, times_p, debug_p);
+    sp->ssd = sonar_init_ping (MI_DISPLAY (mi), &sp->error, &sp->desc,
+                               ping_arg, ping_timeout, resolve_p, times_p,
+                               debug_p);
+
+  sp->start_time = double_time ();  /* for error message timing */
 
   /* Disavow privs.  This was already done in init_ping(), but
      we might not have called that at all, so do it again. */
   setuid(getuid());
 
   if (!sp->ssd)
-    sp->ssd = init_simulation (MI_DISPLAY (mi), &sp->error,
-                               team_a_name, team_b_name,
-                               team_a_count, team_b_count,
-                               debug_p);
+    sp->ssd = sonar_init_simulation (MI_DISPLAY (mi), &sp->error, &sp->desc,
+                                     team_a_name, team_b_name,
+                                     team_a_count, team_b_count,
+                                     debug_p);
   if (!sp->ssd)
     abort();
 }
@@ -923,6 +930,8 @@ draw_sonar (ModeInfo *mi)
     }
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
+
   {
     GLfloat s = 7;
     if (MI_WIDTH(mi) < MI_HEIGHT(mi))
@@ -931,7 +940,6 @@ draw_sonar (ModeInfo *mi)
   }
 
   gltrackball_rotate (sp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   if (wobble_p)
     {
@@ -969,8 +977,33 @@ draw_sonar (ModeInfo *mi)
   glCallList (sp->grid_list);
   mi->polygon_count += sp->screen_polys;
 
-  if (! sp->ssd || sp->error)
+  if (sp->desc)                                                /* local subnet */
+    {
+      glPushMatrix();
+      glTranslatef (0, 0, 0.00002);
+      mi->polygon_count += draw_text (mi, sp->desc, 1.35, M_PI * 0.75, 0, 10);
+      /* glRotatef (45, 0, 0, 1); */
+      /* mi->polygon_count += draw_text (mi, sp->desc, 1.2, M_PI/2, 0, 10); */
+      glPopMatrix();
+    }
+
+  if (sp->error)
+    sp->state = MSG;
+
+  switch (sp->state) {
+  case MSG:                    /* Frame 1: get "Resolving Hosts" on screen. */
     draw_startup_blurb(mi);
+    sp->state++;
+    break;
+  case RESOLVE:                        /* Frame 2: gethostbyaddr may take a while. */
+    if (! sp->ssd)
+      init_sensor (mi);
+    sp->state++;
+    break;
+  case RUN:                    /* Frame N: ping away */
+    sweep (sp);
+    break;
+  }
 
   glPopMatrix ();
 
@@ -978,12 +1011,6 @@ draw_sonar (ModeInfo *mi)
   glFinish();
 
   glXSwapBuffers(dpy, window);
-
-  if (! sp->ssd)
-    /* Just starting up.  "Resolving hosts" text printed.  Go stall. */
-    init_sensor (mi);
-  else
-    sweep (sp);
 }
 
 ENTRYPOINT void
index 595dcac95e67f4a128b812876814778b7584cbf0..d6473e003e47de2684b58e72086538d1984d3aa9 100644 (file)
@@ -1,4 +1,4 @@
-/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin
+/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -42,27 +42,30 @@ struct sonar_sensor_data {
 };
 
 /* frees bogie and its contents, including calling the free_bogie_cb. */
-extern void free_bogie (sonar_sensor_data *ssd, sonar_bogie *b);
+extern void sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b);
 
 /* makes a copy of the bogie, not including the 'closure' data. */
-extern sonar_bogie *copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b);
+extern sonar_bogie *sonar_copy_bogie (sonar_sensor_data *,
+                                      const sonar_bogie *);
 
 
 /* Set up and return sensor state for ICMP pings. */
-extern sonar_sensor_data *init_ping (Display *dpy, 
-                                     char **error_ret,
-                                     const char *subnets,
-                                     int ping_timeout,
-                                     Bool resolve_p, Bool times_p,
-                                     Bool debug_p);
-
-/* Set up and return sensor state for the simulation. */
-extern sonar_sensor_data *init_simulation (Display *dpy,
+extern sonar_sensor_data *sonar_init_ping (Display *dpy, 
                                            char **error_ret,
-                                           const char *team_a_name, 
-                                           const char *team_b_name,
-                                           int team_a_count, 
-                                           int team_b_count,
+                                           char **desc_ret,
+                                           const char *subnets,
+                                           int ping_timeout,
+                                           Bool resolve_p, Bool times_p,
                                            Bool debug_p);
 
+/* Set up and return sensor state for the simulation. */
+extern sonar_sensor_data *sonar_init_simulation (Display *dpy,
+                                                 char **error_ret,
+                                                 char **desc_ret,
+                                                 const char *team_a_name, 
+                                                 const char *team_b_name,
+                                                 int team_a_count, 
+                                                 int team_b_count,
+                                                 Bool debug_p);
+
 #endif /* __SONAR_XSCREENSAVER_H__ */
index bb3b07e1ea1128017a551398d1956b6b77f97e17..9927b3bb56cfbc7e1eaba3aabc04c54e446cb308 100644 (file)
@@ -54,19 +54,22 @@ Run in simulation mode instead of pinging real hosts.
 Ping the given host.
 .TP 12
 .I A.B.C.D
-Ping the given IP address.
+Ping the given IPv4 address.
 .TP 12
 .B subnet
-Ping the local class C subnet (the nearest 255 addresses).
+Ping the local subnet.  On systems where we can determine the local
+network mask, we use that; otherwise, we assume Class C (254 hosts).
 .TP 12
 .B subnet/\fINN\fP
 Ping a different-sized local subnet: e.g., \fBsubnet/28\fP would ping
-a 4-bit subnet (the nearest 15 addresses).
+a 4-bit subnet (the nearest 14 addresses).  On systems where we can
+determine the local network mask, we always use that.
 .TP 12
 .I A.B.C.D/NN
-Ping an arbitrary other subnet.  The IP address specifies the base address,
-and the part after the slash is how wide the subnet is.  Typical values
-are /24 (for 255 addresses) and /28 (for 15 addresses).
+Ping an arbitrary other IPv4 subnet.  The address specifies
+the base address, and the part after the slash is how wide the
+subnet is.  Typical values are /24 (for 254 addresses) and /28 (for
+14 addresses).
 .TP 12
 .I filename
 Ping the hosts listed in the given file.  This file can be in the
@@ -138,12 +141,15 @@ This means that if any the hosts you are pinging take longer than 2
 seconds to respond, they won't show up; and if you are pinging several
 hosts with very fast response times, they will all appear close to the
 center of the screen (making their names hard to read.)
+.SH BUGS
+Does not support IPv6.
 .SH SEE ALSO
 .BR X (1),
 .BR xscreensaver (1),
-.BR ping (8)
+.BR ping (8),
+.BR ping6 (8)
 .SH COPYRIGHT
-Copyright \(co 2000-2008 by Jamie Zawinski <jwz@jwz.org>
+Copyright \(co 2000-2012 by Jamie Zawinski <jwz@jwz.org>
 .RE
 Copyright \(co 1998 by Stephen Martin. <smartin@canada.com>
 
index 4ad36c8e170ad98bd5ed9e750e8dd780741bfcb3..0da7b0c77c49e94aba190178a8e3618fc9d84db3 100644 (file)
@@ -851,7 +851,10 @@ draw_spheremonics (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 8);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (cc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 0bd61c2e62ac0ee19bfe7372e1e2cacf52fe83d8..b300ee13c1126b57c3ea588cb091b1b1616c69d5 100644 (file)
@@ -496,6 +496,7 @@ ENTRYPOINT void
 draw_stairs (ModeInfo * mi)
 {
        stairsstruct *sp = &stairs[MI_SCREEN(mi)];
+    GLfloat rot = current_device_rotation();
 
        Display    *display = MI_DISPLAY(mi);
        Window      window = MI_WINDOW(mi);
@@ -509,6 +510,14 @@ draw_stairs (ModeInfo * mi)
 
        glPushMatrix();
 
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+
        glTranslatef(0.0, 0.0, -10.0);
 
        if (!MI_IS_ICONIC(mi)) {
@@ -518,7 +527,6 @@ draw_stairs (ModeInfo * mi)
        }
 
     gltrackball_rotate (sp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     glTranslatef(0, 0.5, 0);
        glRotatef(44.5, 1, 0, 0);
index b8a2041b17b4fb1fffd3359d2dd382b77fba8508..fc2931d4a4bc5d81e9e2eef4ac7c1cdc88dd5c3d 100644 (file)
@@ -32,7 +32,7 @@
 
 
 void
-init_move(stonerview_state *st)
+stonerview_init_move(stonerview_state *st)
 {
   /*st->theta = new_osc_linear(
     new_osc_wrap(0, 36000, 25),
@@ -95,15 +95,12 @@ init_move(stonerview_state *st)
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 17)),
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 7)));
 
-  move_increment(st);
-}
-
-void final_move(stonerview_state *st)
-{
+  stonerview_move_increment(st);
 }
 
 /* Set up the list of polygon data for rendering. */
-void move_increment(stonerview_state *st)
+void
+stonerview_move_increment(stonerview_state *st)
 {
   int ix, val;
 /*  GLfloat fval; */
@@ -112,7 +109,7 @@ void move_increment(stonerview_state *st)
   GLfloat ptrad, pttheta;
     
   for (ix=0; ix<st->num_els; ix++) {
-    elem_t *el = &st->elist[ix];
+    stonerview_elem_t *el = &st->elist[ix];
         
     /* Grab r and theta... */
     val = osc_get(st, st->theta, ix);
index 096dbbc105c8697e3053cc1c135b8a6784e1d59c..a3e0acd281c5899fb7d8fd54aecc153e7380e480 100644 (file)
 #ifndef __STONERVIEW_MOVE_H__
 #define __STONERVIEW_MOVE_H__
 
-typedef struct elem_struct {
+typedef struct {
   GLfloat pos[3];
   GLfloat vervec[2];
   GLfloat col[4];
-} elem_t;
+} stonerview_elem_t;
 
-extern void init_move(stonerview_state *);
-extern void final_move(stonerview_state *);
-extern void move_increment(stonerview_state *);
+extern void stonerview_init_move(stonerview_state *);
+extern void stonerview_final_move(stonerview_state *);
+extern void stonerview_move_increment(stonerview_state *);
 
 
-extern stonerview_state * init_view(int wireframe_p, int transparent_p);
-extern void win_draw(stonerview_state *);
-extern void win_release(stonerview_state *);
+extern stonerview_state * stonerview_init_view(int wireframe_p, 
+                                               int transparent_p);
+extern void stonerview_win_draw(stonerview_state *);
+extern void stonerview_win_release(stonerview_state *);
 
 #endif /* __STONERVIEW_MOVE_H__ */
index 08fc525e9a7e4a007f53dca57b4598307aa480c2..d66eab28ce505ac2a271f448a7f3841ddcb88651 100644 (file)
@@ -27,14 +27,14 @@ static GLfloat view_scale = 4.0;
 
 
 stonerview_state *
-init_view(int wireframe_p, int transparent_p)
+stonerview_init_view(int wireframe_p, int transparent_p)
 {
   stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st));
 
   st->wireframe = wireframe_p;
   st->transparent = transparent_p;
   st->num_els = NUM_ELS;
-  st->elist = (elem_t *) calloc (st->num_els, sizeof(*st->elist));
+  st->elist = (stonerview_elem_t *) calloc (st->num_els, sizeof(*st->elist));
 
   st->osctail = &st->oscroot;
 
@@ -59,7 +59,8 @@ init_view(int wireframe_p, int transparent_p)
 }
 
 /* callback: draw everything */
-void win_draw(stonerview_state *st)
+void
+stonerview_win_draw(stonerview_state *st)
 {
   int ix;
   static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
@@ -78,7 +79,7 @@ void win_draw(stonerview_state *st)
   glShadeModel(GL_FLAT);
 
   for (ix=0; ix < st->num_els; ix++) {
-    elem_t *el = &st->elist[ix];
+    stonerview_elem_t *el = &st->elist[ix];
 
     glNormal3f(0.0, 0.0, 1.0);
 
@@ -106,7 +107,8 @@ void win_draw(stonerview_state *st)
   glPopMatrix();
 }
 
-void win_release(stonerview_state *st)
+void
+stonerview_win_release(stonerview_state *st)
 {
   free (st->elist);
   /*free (st->oscroot);  -- #### how do we free this? */
index 79b17fb6b5673958107de234e15a869790280ed7..0e11395e2ace623c7c2b8c2603daddba80e4e598 100644 (file)
@@ -95,8 +95,8 @@ init_stonerview (ModeInfo *mi)
   bp->glx_context = init_GL(mi);
 
   bp->trackball = gltrackball_init ();
-  bp->st = init_view(MI_IS_WIREFRAME(mi), transparent_p);
-  init_move(bp->st);
+  bp->st = stonerview_init_view(MI_IS_WIREFRAME(mi), transparent_p);
+  stonerview_init_move(bp->st);
 
   reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
   clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
@@ -111,10 +111,12 @@ draw_stonerview (ModeInfo *mi)
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
 
   glPushMatrix ();
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (bp->trackball);
-  win_draw(bp->st);
+
+  stonerview_win_draw(bp->st);
   if (! bp->button_down_p)
-    move_increment(bp->st);
+    stonerview_move_increment(bp->st);
   glPopMatrix ();
 
   mi->polygon_count = NUM_ELS;
@@ -132,7 +134,7 @@ release_stonerview (ModeInfo *mi)
     for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
       stonerview_configuration *bp = &bps[screen];
       if (bp->st)
-        win_release (bp->st);
+        stonerview_win_release (bp->st);
     }
     free (bps);
     bps = 0;
index 0946923aafef2566f3953d376adfb7c639afe8ed..afbd53c51e8ff1422fd6df9cfb94093d30d9d630 100644 (file)
@@ -38,7 +38,7 @@ struct stonerview_state {
   /* The list of polygons. This is filled in by move_increment(), and rendered
      by perform_render(). */
   int num_els;
-  elem_t *elist;
+  stonerview_elem_t *elist;
 
   /* A linked list of all osc_t objects created. New objects are added
      to the end of the list, not the beginning. */
index 459d12245a257e7b1af45c28288872b5ae46aced..9dac523bfb649778a38ad5aae086feccefa4fc75 100644 (file)
@@ -163,7 +163,10 @@ static void draw(ModeInfo *mi)
     get_position(sp->rot, &x, &y, &z, !sp->button_down_p);
     glTranslatef((x-0.5)*10, (y-0.5)*10, (z-0.5)*20);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate(sp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation(sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef(x*360, 1.0, 0.0, 0.0);
index a7af6428f88954da8d13a1398381524ab908cdda..022477598dc3e5857fbad4085bac605008284dfd 100644 (file)
@@ -840,13 +840,13 @@ static void init_shapes(ModeInfo * mi)
                       &tp->tlg2, &tp->sq, &tp->rh);
     get_solved_puzzle(mi, &tp->n_tsm1, &tp->n_tsm2, &tp->n_tm, &tp->n_tlg1,
                       &tp->n_tlg2, &tp->n_sq, &tp->n_rh);
-    tp->tsm1.dl = get_sm_tri_dl(wire);
-    tp->tsm2.dl = get_sm_tri_dl(wire);
-    tp->tm.dl = get_md_tri_dl(wire);
-    tp->tlg1.dl = get_lg_tri_dl(wire);
-    tp->tlg2.dl = get_lg_tri_dl(wire);
-    tp->sq.dl = get_square_dl(wire);
-    tp->rh.dl = get_rhomboid_dl(wire);
+    tp->tsm1.dl = tangram_get_sm_tri_dl(wire);
+    tp->tsm2.dl = tangram_get_sm_tri_dl(wire);
+    tp->tm.dl = tangram_get_md_tri_dl(wire);
+    tp->tlg1.dl = tangram_get_lg_tri_dl(wire);
+    tp->tlg2.dl = tangram_get_lg_tri_dl(wire);
+    tp->sq.dl = tangram_get_square_dl(wire);
+    tp->rh.dl = tangram_get_rhomboid_dl(wire);
 }
 
 static void gl_init(ModeInfo * mi)
index 32b7014c51bee5485352daea84ebc01e938a04c0..19f065b056f2dd43be07047bf255d1d2c1cf3ace 100644 (file)
@@ -29,7 +29,8 @@
 
 #define alpha (0.05)
 
-static void tri_45_90(int wire)
+static void
+tri_45_90(int wire)
 {
     GLfloat vertices[][3] = {
         {0, alpha, 0},
@@ -87,8 +88,8 @@ static void tri_45_90(int wire)
     glEnd();
 }
 
-static
-void unit_cube(int wire)
+static void
+unit_cube(int wire)
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
@@ -132,8 +133,8 @@ void unit_cube(int wire)
     glEnd();
 }
 
-static
-void unit_rhomboid(int wire)
+static void
+unit_rhomboid(int wire)
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
@@ -179,7 +180,8 @@ void unit_rhomboid(int wire)
 
 /* All of the pieces have the same thickness so all of the Y values are the same */
 
-GLuint get_sm_tri_dl(int wire)
+GLuint
+tangram_get_sm_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -189,7 +191,8 @@ GLuint get_sm_tri_dl(int wire)
     return triangle;
 }
 
-GLuint get_lg_tri_dl(int wire)
+GLuint
+tangram_get_lg_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -199,7 +202,8 @@ GLuint get_lg_tri_dl(int wire)
     return triangle;
 }
 
-GLuint get_md_tri_dl(int wire)
+GLuint
+tangram_get_md_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -209,7 +213,8 @@ GLuint get_md_tri_dl(int wire)
     return triangle;
 }
 
-GLuint get_square_dl(int wire)
+GLuint
+tangram_get_square_dl(int wire)
 {
     GLuint square = glGenLists(1);
     glNewList(square, GL_COMPILE);
@@ -219,7 +224,8 @@ GLuint get_square_dl(int wire)
     return square;
 }
 
-GLuint get_rhomboid_dl(int wire)
+GLuint
+tangram_get_rhomboid_dl(int wire)
 {
     GLuint rhomboid = glGenLists(1);
     glNewList(rhomboid, GL_COMPILE);
index 95410f86ffb82f084938e069c8ecc4f99c024f45..254f8f34eee27c62d02ae1865ea63761ee0eba6d 100644 (file)
@@ -2,14 +2,14 @@
 #define TANGRAM_SHAPES_H
 
 /* get_sm_tri_dl - Get small triangle Display List */
-GLuint get_sm_tri_dl(int wire);
+GLuint tangram_get_sm_tri_dl(int wire);
 /* get_lg_tri_dl - Get large triangle Display List */
-GLuint get_lg_tri_dl(int wire);
+GLuint tangram_get_lg_tri_dl(int wire);
 /* get_md_tri_dl - Get medium triangle Display List */
-GLuint get_md_tri_dl(int wire);
+GLuint tangram_get_md_tri_dl(int wire);
 /* get_square_dl - Get square Display List */
-GLuint get_square_dl(int wire);
+GLuint tangram_get_square_dl(int wire);
 /* get_rhomboid_dl - Get rhomboid Display List */
-GLuint get_rhomboid_dl(int wire);
+GLuint tangram_get_rhomboid_dl(int wire);
 
 #endif
index 3fc95ee3fe885ddf77485e3f7bef5bcdbc9ab99f..05d652ed11e121ce03121dcba052f0ff2aa0fdb7 100644 (file)
@@ -50,19 +50,18 @@ OpenGL(TM) is a trademark of Silicon Graphics, Inc.
 
 #include "teapot.h"
 
-#ifdef HAVE_JWZGLES
-int unit_teapot (int grid, int wire_p) { return 0; }
-#else /* !HAVE_JWZGLES */
-
-
 #ifndef HAVE_COCOA
 # include <GL/gl.h>
 #endif
 
 #ifdef HAVE_JWZGLES
 # include "jwzgles.h"
-#endif /* HAVE_JWZGLES */
+#else
+# define HAVE_GLMAP
+#endif
+
 
+#ifdef HAVE_GLMAP
 
 /* Rim, body, lid, and bottom data must be reflected in x
    and y; handle and spout data across the y axis only.  */
@@ -198,20 +197,20 @@ unit_teapot (int grid, int wire_p)
       &p[0][0][0]);
     glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
     glEvalMesh2(type, 0, grid, 0, grid);
-    polys += grid*grid;
+    polys += grid*grid*2;
     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
       &q[0][0][0]);
     glEvalMesh2(type, 0, grid, 0, grid);
-    polys += grid*grid;
+    polys += grid*grid*2;
     if (i < 6) {
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &r[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
-      polys += grid*grid;
+      polys += grid*grid*2;
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &s[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
-      polys += grid*grid;
+      polys += grid*grid*2;
     }
   }
   glPopMatrix();
@@ -220,4 +219,64 @@ unit_teapot (int grid, int wire_p)
   return polys;
 }
 
-#endif /* !HAVE_JWZGLES */
+#else  /* !HAVE_GLMAP */
+
+# include "normals.h"
+# include "teapot2.h"
+
+int
+unit_teapot (int grid, int wire_p)
+{
+  int polys = sizeof (teapot_triangles) / sizeof (*teapot_triangles) / 9;
+  int i;
+  const GLfloat *p = teapot_triangles;
+  GLfloat scale = 1 / 2.3;
+
+  glPushMatrix();
+  glScalef (scale, scale, scale);
+  glTranslatef (0, -1.25, 0);
+
+  if (wire_p)
+    {
+      glBegin (GL_LINES);
+      for (i = 0; i < polys; i++)
+        {
+          XYZ p1, p2, p3;
+          p1.x = *p++; p1.y = *p++; p1.z = *p++;
+          p2.x = *p++; p2.y = *p++; p2.z = *p++;
+          p3.x = *p++; p3.y = *p++; p3.z = *p++;
+          glVertex3f (p1.x, p1.y, p1.z);   /* Draw 2 edges of each triangle */
+          glVertex3f (p2.x, p2.y, p2.z);
+          glVertex3f (p1.x, p1.y, p1.z);
+          glVertex3f (p3.x, p3.y, p3.z);
+          i++;                            /* Skip every other triangle */
+          p += 9;
+        }
+      glEnd();
+      polys /= 2;
+    }
+  else
+    {
+      glFrontFace (GL_CCW);
+      glBegin (GL_TRIANGLES);
+      for (i = 0; i < polys; i++)
+        {
+          XYZ p1, p2, p3;
+          p1.x = *p++; p1.y = *p++; p1.z = *p++;
+          p2.x = *p++; p2.y = *p++; p2.z = *p++;
+          p3.x = *p++; p3.y = *p++; p3.z = *p++;
+          do_normal (p1.x, p1.y, p1.z,
+                     p2.x, p2.y, p2.z,
+                     p3.x, p3.y, p3.z);
+          glVertex3f (p1.x, p1.y, p1.z);
+          glVertex3f (p2.x, p2.y, p2.z);
+          glVertex3f (p3.x, p3.y, p3.z);
+        }
+      glEnd();
+    }
+  glPopMatrix();
+
+  return polys;
+}
+
+#endif /* !HAVE_GLMAP */
diff --git a/hacks/glx/teapot2.h b/hacks/glx/teapot2.h
new file mode 100644 (file)
index 0000000..c9d4def
--- /dev/null
@@ -0,0 +1,6330 @@
+/* The Utah Teapot.  Martin Newell, 1975.
+
+   Since GLUtesselator doesn't exist in the iOS build, we use these
+   triangles there instead of generating the teapot from Newell's
+   original Bezier patches, because I didn't feel like re-implementing
+   that code.
+ */
+
+static const GLfloat teapot_triangles[] = {
+       1.368074,2.435437,-0.227403,    1.381968,2.4,-0.229712, 1.4,2.4,0,
+       1.4,2.4,0,      1.385925,2.435437,0,    1.368074,2.435437,-0.227403,
+       1.316296,2.435437,-0.442166,    1.329664,2.4,-0.446656, 1.381968,2.4,-0.229712,
+       1.381968,2.4,-0.229712, 1.368074,2.435437,-0.227403,    1.316296,2.435437,-0.442166,
+       1.233252,2.435437,-0.641628,    1.245776,2.4,-0.648144, 1.329664,2.4,-0.446656,
+       1.329664,2.4,-0.446656, 1.316296,2.435437,-0.442166,    1.233252,2.435437,-0.641628,
+       1.121601,2.435437,-0.823129,    1.132992,2.4,-0.831488, 1.245776,2.4,-0.648144,
+       1.245776,2.4,-0.648144, 1.233252,2.435437,-0.641628,    1.121601,2.435437,-0.823129,
+       0.984007,2.435437,-0.984007,    0.994,2.4,-0.994,       1.132992,2.4,-0.831488,
+       1.132992,2.4,-0.831488, 1.121601,2.435437,-0.823129,    0.984007,2.435437,-0.984007,
+       0.823129,2.435437,-1.121601,    0.831488,2.4,-1.132992, 0.994,2.4,-0.994,
+       0.994,2.4,-0.994,       0.984007,2.435437,-0.984007,    0.823129,2.435437,-1.121601,
+       0.641628,2.435437,-1.233252,    0.648144,2.4,-1.245776, 0.831488,2.4,-1.132992,
+       0.831488,2.4,-1.132992, 0.823129,2.435437,-1.121601,    0.641628,2.435437,-1.233252,
+       0.442166,2.435437,-1.316296,    0.446656,2.4,-1.329664, 0.648144,2.4,-1.245776,
+       0.648144,2.4,-1.245776, 0.641628,2.435437,-1.233252,    0.442166,2.435437,-1.316296,
+       0.227403,2.435437,-1.368074,    0.229712,2.4,-1.381968, 0.446656,2.4,-1.329664,
+       0.446656,2.4,-1.329664, 0.442166,2.435437,-1.316296,    0.227403,2.435437,-1.368074,
+       0,2.435437,-1.385925,   0,2.4,-1.4,     0.229712,2.4,-1.381968,
+       0.229712,2.4,-1.381968, 0.227403,2.435437,-1.368074,    0,2.435437,-1.385925,
+       1.36262,2.463,-0.226496,        1.368074,2.435437,-0.227403,    1.385925,2.435437,0,
+       1.385925,2.435437,0,    1.3804,2.463,0, 1.36262,2.463,-0.226496,
+       1.311049,2.463,-0.440403,       1.316296,2.435437,-0.442166,    1.368074,2.435437,-0.227403,
+       1.368074,2.435437,-0.227403,    1.36262,2.463,-0.226496,        1.311049,2.463,-0.440403,
+       1.228335,2.463,-0.63907,        1.233252,2.435437,-0.641628,    1.316296,2.435437,-0.442166,
+       1.316296,2.435437,-0.442166,    1.311049,2.463,-0.440403,       1.228335,2.463,-0.63907,
+       1.11713,2.463,-0.819847,        1.121601,2.435437,-0.823129,    1.233252,2.435437,-0.641628,
+       1.233252,2.435437,-0.641628,    1.228335,2.463,-0.63907,        1.11713,2.463,-0.819847,
+       0.980084,2.463,-0.980084,       0.984007,2.435437,-0.984007,    1.121601,2.435437,-0.823129,
+       1.121601,2.435437,-0.823129,    1.11713,2.463,-0.819847,        0.980084,2.463,-0.980084,
+       0.819847,2.463,-1.11713,        0.823129,2.435437,-1.121601,    0.984007,2.435437,-0.984007,
+       0.984007,2.435437,-0.984007,    0.980084,2.463,-0.980084,       0.819847,2.463,-1.11713,
+       0.63907,2.463,-1.228335,        0.641628,2.435437,-1.233252,    0.823129,2.435437,-1.121601,
+       0.823129,2.435437,-1.121601,    0.819847,2.463,-1.11713,        0.63907,2.463,-1.228335,
+       0.440403,2.463,-1.311049,       0.442166,2.435437,-1.316296,    0.641628,2.435437,-1.233252,
+       0.641628,2.435437,-1.233252,    0.63907,2.463,-1.228335,        0.440403,2.463,-1.311049,
+       0.226496,2.463,-1.36262,        0.227403,2.435437,-1.368074,    0.442166,2.435437,-1.316296,
+       0.442166,2.435437,-1.316296,    0.440403,2.463,-1.311049,       0.226496,2.463,-1.36262,
+       0,2.463,-1.3804,        0,2.435437,-1.385925,   0.227403,2.435437,-1.368074,
+       0.227403,2.435437,-1.368074,    0.226496,2.463,-1.36262,        0,2.463,-1.3804,
+       1.364422,2.482687,-0.226795,    1.36262,2.463,-0.226496,        1.3804,2.463,0,
+       1.3804,2.463,0, 1.382225,2.482687,0,    1.364422,2.482687,-0.226795,
+       1.312782,2.482687,-0.440985,    1.311049,2.463,-0.440403,       1.36262,2.463,-0.226496,
+       1.36262,2.463,-0.226496,        1.364422,2.482687,-0.226795,    1.312782,2.482687,-0.440985,
+       1.229959,2.482687,-0.639915,    1.228335,2.463,-0.63907,        1.311049,2.463,-0.440403,
+       1.311049,2.463,-0.440403,       1.312782,2.482687,-0.440985,    1.229959,2.482687,-0.639915,
+       1.118607,2.482687,-0.820931,    1.11713,2.463,-0.819847,        1.228335,2.463,-0.63907,
+       1.228335,2.463,-0.63907,        1.229959,2.482687,-0.639915,    1.118607,2.482687,-0.820931,
+       0.98138,2.482687,-0.98138,      0.980084,2.463,-0.980084,       1.11713,2.463,-0.819847,
+       1.11713,2.463,-0.819847,        1.118607,2.482687,-0.820931,    0.98138,2.482687,-0.98138,
+       0.820931,2.482687,-1.118607,    0.819847,2.463,-1.11713,        0.980084,2.463,-0.980084,
+       0.980084,2.463,-0.980084,       0.98138,2.482687,-0.98138,      0.820931,2.482687,-1.118607,
+       0.639915,2.482687,-1.229959,    0.63907,2.463,-1.228335,        0.819847,2.463,-1.11713,
+       0.819847,2.463,-1.11713,        0.820931,2.482687,-1.118607,    0.639915,2.482687,-1.229959,
+       0.440985,2.482687,-1.312782,    0.440403,2.463,-1.311049,       0.63907,2.463,-1.228335,
+       0.63907,2.463,-1.228335,        0.639915,2.482687,-1.229959,    0.440985,2.482687,-1.312782,
+       0.226795,2.482687,-1.364422,    0.226496,2.463,-1.36262,        0.440403,2.463,-1.311049,
+       0.440403,2.463,-1.311049,       0.440985,2.482687,-1.312782,    0.226795,2.482687,-1.364422,
+       0,2.482687,-1.382225,   0,2.463,-1.3804,        0.226496,2.463,-1.36262,
+       0.226496,2.463,-1.36262,        0.226795,2.482687,-1.364422,    0,2.482687,-1.382225,
+       1.372294,2.4945,-0.228104,      1.364422,2.482687,-0.226795,    1.382225,2.482687,0,
+       1.382225,2.482687,0,    1.3902,2.4945,0,        1.372294,2.4945,-0.228104,
+       1.320356,2.4945,-0.443529,      1.312782,2.482687,-0.440985,    1.364422,2.482687,-0.226795,
+       1.364422,2.482687,-0.226795,    1.372294,2.4945,-0.228104,      1.320356,2.4945,-0.443529,
+       1.237056,2.4945,-0.643607,      1.229959,2.482687,-0.639915,    1.312782,2.482687,-0.440985,
+       1.312782,2.482687,-0.440985,    1.320356,2.4945,-0.443529,      1.237056,2.4945,-0.643607,
+       1.125061,2.4945,-0.825668,      1.118607,2.482687,-0.820931,    1.229959,2.482687,-0.639915,
+       1.229959,2.482687,-0.639915,    1.237056,2.4945,-0.643607,      1.125061,2.4945,-0.825668,
+       0.987042,2.4945,-0.987042,      0.98138,2.482687,-0.98138,      1.118607,2.482687,-0.820931,
+       1.118607,2.482687,-0.820931,    1.125061,2.4945,-0.825668,      0.987042,2.4945,-0.987042,
+       0.825668,2.4945,-1.125061,      0.820931,2.482687,-1.118607,    0.98138,2.482687,-0.98138,
+       0.98138,2.482687,-0.98138,      0.987042,2.4945,-0.987042,      0.825668,2.4945,-1.125061,
+       0.643607,2.4945,-1.237056,      0.639915,2.482687,-1.229959,    0.820931,2.482687,-1.118607,
+       0.820931,2.482687,-1.118607,    0.825668,2.4945,-1.125061,      0.643607,2.4945,-1.237056,
+       0.443529,2.4945,-1.320356,      0.440985,2.482687,-1.312782,    0.639915,2.482687,-1.229959,
+       0.639915,2.482687,-1.229959,    0.643607,2.4945,-1.237056,      0.443529,2.4945,-1.320356,
+       0.228104,2.4945,-1.372294,      0.226795,2.482687,-1.364422,    0.440985,2.482687,-1.312782,
+       0.440985,2.482687,-1.312782,    0.443529,2.4945,-1.320356,      0.228104,2.4945,-1.372294,
+       0,2.4945,-1.3902,       0,2.482687,-1.382225,   0.226795,2.482687,-1.364422,
+       0.226795,2.482687,-1.364422,    0.228104,2.4945,-1.372294,      0,2.4945,-1.3902,
+       1.385053,2.498438,-0.230225,    1.372294,2.4945,-0.228104,      1.3902,2.4945,0,
+       1.3902,2.4945,0,        1.403125,2.498438,0,    1.385053,2.498438,-0.230225,
+       1.332632,2.498438,-0.447653,    1.320356,2.4945,-0.443529,      1.372294,2.4945,-0.228104,
+       1.372294,2.4945,-0.228104,      1.385053,2.498438,-0.230225,    1.332632,2.498438,-0.447653,
+       1.248557,2.498438,-0.649591,    1.237056,2.4945,-0.643607,      1.320356,2.4945,-0.443529,
+       1.320356,2.4945,-0.443529,      1.332632,2.498438,-0.447653,    1.248557,2.498438,-0.649591,
+       1.135521,2.498438,-0.833344,    1.125061,2.4945,-0.825668,      1.237056,2.4945,-0.643607,
+       1.237056,2.4945,-0.643607,      1.248557,2.498438,-0.649591,    1.135521,2.498438,-0.833344,
+       0.996219,2.498438,-0.996219,    0.987042,2.4945,-0.987042,      1.125061,2.4945,-0.825668,
+       1.125061,2.4945,-0.825668,      1.135521,2.498438,-0.833344,    0.996219,2.498438,-0.996219,
+       0.833344,2.498438,-1.135521,    0.825668,2.4945,-1.125061,      0.987042,2.4945,-0.987042,
+       0.987042,2.4945,-0.987042,      0.996219,2.498438,-0.996219,    0.833344,2.498438,-1.135521,
+       0.649591,2.498438,-1.248557,    0.643607,2.4945,-1.237056,      0.825668,2.4945,-1.125061,
+       0.825668,2.4945,-1.125061,      0.833344,2.498438,-1.135521,    0.649591,2.498438,-1.248557,
+       0.447653,2.498438,-1.332632,    0.443529,2.4945,-1.320356,      0.643607,2.4945,-1.237056,
+       0.643607,2.4945,-1.237056,      0.649591,2.498438,-1.248557,    0.447653,2.498438,-1.332632,
+       0.230225,2.498438,-1.385053,    0.228104,2.4945,-1.372294,      0.443529,2.4945,-1.320356,
+       0.443529,2.4945,-1.320356,      0.447653,2.498438,-1.332632,    0.230225,2.498438,-1.385053,
+       0,2.498438,-1.403125,   0,2.4945,-1.3902,       0.228104,2.4945,-1.372294,
+       0.228104,2.4945,-1.372294,      0.230225,2.498438,-1.385053,    0,2.498438,-1.403125,
+       1.401513,2.4945,-0.232961,      1.385053,2.498438,-0.230225,    1.403125,2.498438,0,
+       1.403125,2.498438,0,    1.4198,2.4945,0,        1.401513,2.4945,-0.232961,
+       1.348469,2.4945,-0.452973,      1.332632,2.498438,-0.447653,    1.385053,2.498438,-0.230225,
+       1.385053,2.498438,-0.230225,    1.401513,2.4945,-0.232961,      1.348469,2.4945,-0.452973,
+       1.263395,2.4945,-0.657311,      1.248557,2.498438,-0.649591,    1.332632,2.498438,-0.447653,
+       1.332632,2.498438,-0.447653,    1.348469,2.4945,-0.452973,      1.263395,2.4945,-0.657311,
+       1.149016,2.4945,-0.843248,      1.135521,2.498438,-0.833344,    1.248557,2.498438,-0.649591,
+       1.248557,2.498438,-0.649591,    1.263395,2.4945,-0.657311,      1.149016,2.4945,-0.843248,
+       1.008058,2.4945,-1.008058,      0.996219,2.498438,-0.996219,    1.135521,2.498438,-0.833344,
+       1.135521,2.498438,-0.833344,    1.149016,2.4945,-0.843248,      1.008058,2.4945,-1.008058,
+       0.843248,2.4945,-1.149016,      0.833344,2.498438,-1.135521,    0.996219,2.498438,-0.996219,
+       0.996219,2.498438,-0.996219,    1.008058,2.4945,-1.008058,      0.843248,2.4945,-1.149016,
+       0.657311,2.4945,-1.263395,      0.649591,2.498438,-1.248557,    0.833344,2.498438,-1.135521,
+       0.833344,2.498438,-1.135521,    0.843248,2.4945,-1.149016,      0.657311,2.4945,-1.263395,
+       0.452973,2.4945,-1.348469,      0.447653,2.498438,-1.332632,    0.649591,2.498438,-1.248557,
+       0.649591,2.498438,-1.248557,    0.657311,2.4945,-1.263395,      0.452973,2.4945,-1.348469,
+       0.232961,2.4945,-1.401513,      0.230225,2.498438,-1.385053,    0.447653,2.498438,-1.332632,
+       0.447653,2.498438,-1.332632,    0.452973,2.4945,-1.348469,      0.232961,2.4945,-1.401513,
+       0,2.4945,-1.4198,       0,2.498438,-1.403125,   0.230225,2.498438,-1.385053,
+       0.230225,2.498438,-1.385053,    0.232961,2.4945,-1.401513,      0,2.4945,-1.4198,
+       1.42049,2.482687,-0.236115,     1.401513,2.4945,-0.232961,      1.4198,2.4945,0,
+       1.4198,2.4945,0,        1.439025,2.482687,0,    1.42049,2.482687,-0.236115,
+       1.366728,2.482687,-0.459107,    1.348469,2.4945,-0.452973,      1.401513,2.4945,-0.232961,
+       1.401513,2.4945,-0.232961,      1.42049,2.482687,-0.236115,     1.366728,2.482687,-0.459107,
+       1.280502,2.482687,-0.666211,    1.263395,2.4945,-0.657311,      1.348469,2.4945,-0.452973,
+       1.348469,2.4945,-0.452973,      1.366728,2.482687,-0.459107,    1.280502,2.482687,-0.666211,
+       1.164574,2.482687,-0.854666,    1.149016,2.4945,-0.843248,      1.263395,2.4945,-0.657311,
+       1.263395,2.4945,-0.657311,      1.280502,2.482687,-0.666211,    1.164574,2.482687,-0.854666,
+       1.021708,2.482687,-1.021708,    1.008058,2.4945,-1.008058,      1.149016,2.4945,-0.843248,
+       1.149016,2.4945,-0.843248,      1.164574,2.482687,-0.854666,    1.021708,2.482687,-1.021708,
+       0.854666,2.482687,-1.164574,    0.843248,2.4945,-1.149016,      1.008058,2.4945,-1.008058,
+       1.008058,2.4945,-1.008058,      1.021708,2.482687,-1.021708,    0.854666,2.482687,-1.164574,
+       0.666211,2.482687,-1.280502,    0.657311,2.4945,-1.263395,      0.843248,2.4945,-1.149016,
+       0.843248,2.4945,-1.149016,      0.854666,2.482687,-1.164574,    0.666211,2.482687,-1.280502,
+       0.459107,2.482687,-1.366728,    0.452973,2.4945,-1.348469,      0.657311,2.4945,-1.263395,
+       0.657311,2.4945,-1.263395,      0.666211,2.482687,-1.280502,    0.459107,2.482687,-1.366728,
+       0.236115,2.482687,-1.42049,     0.232961,2.4945,-1.401513,      0.452973,2.4945,-1.348469,
+       0.452973,2.4945,-1.348469,      0.459107,2.482687,-1.366728,    0.236115,2.482687,-1.42049,
+       0,2.482687,-1.439025,   0,2.4945,-1.4198,       0.232961,2.4945,-1.401513,
+       0.232961,2.4945,-1.401513,      0.236115,2.482687,-1.42049,     0,2.482687,-1.439025,
+       1.4408,2.463,-0.239491, 1.42049,2.482687,-0.236115,     1.439025,2.482687,0,
+       1.439025,2.482687,0,    1.4596,2.463,0, 1.4408,2.463,-0.239491,
+       1.38627,2.463,-0.465671,        1.366728,2.482687,-0.459107,    1.42049,2.482687,-0.236115,
+       1.42049,2.482687,-0.236115,     1.4408,2.463,-0.239491, 1.38627,2.463,-0.465671,
+       1.29881,2.463,-0.675736,        1.280502,2.482687,-0.666211,    1.366728,2.482687,-0.459107,
+       1.366728,2.482687,-0.459107,    1.38627,2.463,-0.465671,        1.29881,2.463,-0.675736,
+       1.181225,2.463,-0.866886,       1.164574,2.482687,-0.854666,    1.280502,2.482687,-0.666211,
+       1.280502,2.482687,-0.666211,    1.29881,2.463,-0.675736,        1.181225,2.463,-0.866886,
+       1.036316,2.463,-1.036316,       1.021708,2.482687,-1.021708,    1.164574,2.482687,-0.854666,
+       1.164574,2.482687,-0.854666,    1.181225,2.463,-0.866886,       1.036316,2.463,-1.036316,
+       0.866886,2.463,-1.181225,       0.854666,2.482687,-1.164574,    1.021708,2.482687,-1.021708,
+       1.021708,2.482687,-1.021708,    1.036316,2.463,-1.036316,       0.866886,2.463,-1.181225,
+       0.675736,2.463,-1.29881,        0.666211,2.482687,-1.280502,    0.854666,2.482687,-1.164574,
+       0.854666,2.482687,-1.164574,    0.866886,2.463,-1.181225,       0.675736,2.463,-1.29881,
+       0.465671,2.463,-1.38627,        0.459107,2.482687,-1.366728,    0.666211,2.482687,-1.280502,
+       0.666211,2.482687,-1.280502,    0.675736,2.463,-1.29881,        0.465671,2.463,-1.38627,
+       0.239491,2.463,-1.4408, 0.236115,2.482687,-1.42049,     0.459107,2.482687,-1.366728,
+       0.459107,2.482687,-1.366728,    0.465671,2.463,-1.38627,        0.239491,2.463,-1.4408,
+       0,2.463,-1.4596,        0,2.482687,-1.439025,   0.236115,2.482687,-1.42049,
+       0.236115,2.482687,-1.42049,     0.239491,2.463,-1.4408, 0,2.463,-1.4596,
+       1.461258,2.435437,-0.242892,    1.4408,2.463,-0.239491, 1.4596,2.463,0,
+       1.4596,2.463,0, 1.480325,2.435437,0,    1.461258,2.435437,-0.242892,
+       1.405953,2.435437,-0.472283,    1.38627,2.463,-0.465671,        1.4408,2.463,-0.239491,
+       1.4408,2.463,-0.239491, 1.461258,2.435437,-0.242892,    1.405953,2.435437,-0.472283,
+       1.317252,2.435437,-0.685331,    1.29881,2.463,-0.675736,        1.38627,2.463,-0.465671,
+       1.38627,2.463,-0.465671,        1.405953,2.435437,-0.472283,    1.317252,2.435437,-0.685331,
+       1.197997,2.435437,-0.879195,    1.181225,2.463,-0.866886,       1.29881,2.463,-0.675736,
+       1.29881,2.463,-0.675736,        1.317252,2.435437,-0.685331,    1.197997,2.435437,-0.879195,
+       1.051031,2.435437,-1.051031,    1.036316,2.463,-1.036316,       1.181225,2.463,-0.866886,
+       1.181225,2.463,-0.866886,       1.197997,2.435437,-0.879195,    1.051031,2.435437,-1.051031,
+       0.879195,2.435437,-1.197997,    0.866886,2.463,-1.181225,       1.036316,2.463,-1.036316,
+       1.036316,2.463,-1.036316,       1.051031,2.435437,-1.051031,    0.879195,2.435437,-1.197997,
+       0.685331,2.435437,-1.317252,    0.675736,2.463,-1.29881,        0.866886,2.463,-1.181225,
+       0.866886,2.463,-1.181225,       0.879195,2.435437,-1.197997,    0.685331,2.435437,-1.317252,
+       0.472283,2.435437,-1.405953,    0.465671,2.463,-1.38627,        0.675736,2.463,-1.29881,
+       0.675736,2.463,-1.29881,        0.685331,2.435437,-1.317252,    0.472283,2.435437,-1.405953,
+       0.242892,2.435437,-1.461258,    0.239491,2.463,-1.4408, 0.465671,2.463,-1.38627,
+       0.465671,2.463,-1.38627,        0.472283,2.435437,-1.405953,    0.242892,2.435437,-1.461258,
+       0,2.435437,-1.480325,   0,2.463,-1.4596,        0.239491,2.463,-1.4408,
+       0.239491,2.463,-1.4408, 0.242892,2.435437,-1.461258,    0,2.435437,-1.480325,
+       1.48068,2.4,-0.24612,   1.461258,2.435437,-0.242892,    1.480325,2.435437,0,
+       1.480325,2.435437,0,    1.5,2.4,0,      1.48068,2.4,-0.24612,
+       1.42464,2.4,-0.47856,   1.405953,2.435437,-0.472283,    1.461258,2.435437,-0.242892,
+       1.461258,2.435437,-0.242892,    1.48068,2.4,-0.24612,   1.42464,2.4,-0.47856,
+       1.33476,2.4,-0.69444,   1.317252,2.435437,-0.685331,    1.405953,2.435437,-0.472283,
+       1.405953,2.435437,-0.472283,    1.42464,2.4,-0.47856,   1.33476,2.4,-0.69444,
+       1.21392,2.4,-0.89088,   1.197997,2.435437,-0.879195,    1.317252,2.435437,-0.685331,
+       1.317252,2.435437,-0.685331,    1.33476,2.4,-0.69444,   1.21392,2.4,-0.89088,
+       1.065,2.4,-1.065,       1.051031,2.435437,-1.051031,    1.197997,2.435437,-0.879195,
+       1.197997,2.435437,-0.879195,    1.21392,2.4,-0.89088,   1.065,2.4,-1.065,
+       0.89088,2.4,-1.21392,   0.879195,2.435437,-1.197997,    1.051031,2.435437,-1.051031,
+       1.051031,2.435437,-1.051031,    1.065,2.4,-1.065,       0.89088,2.4,-1.21392,
+       0.69444,2.4,-1.33476,   0.685331,2.435437,-1.317252,    0.879195,2.435437,-1.197997,
+       0.879195,2.435437,-1.197997,    0.89088,2.4,-1.21392,   0.69444,2.4,-1.33476,
+       0.47856,2.4,-1.42464,   0.472283,2.435437,-1.405953,    0.685331,2.435437,-1.317252,
+       0.685331,2.435437,-1.317252,    0.69444,2.4,-1.33476,   0.47856,2.4,-1.42464,
+       0.24612,2.4,-1.48068,   0.242892,2.435437,-1.461258,    0.472283,2.435437,-1.405953,
+       0.472283,2.435437,-1.405953,    0.47856,2.4,-1.42464,   0.24612,2.4,-1.48068,
+       0,2.4,-1.5,     0,2.435437,-1.480325,   0.242892,2.435437,-1.461258,
+       0.242892,2.435437,-1.461258,    0.24612,2.4,-1.48068,   0,2.4,-1.5,
+       -0.227403,2.435437,-1.368074,   -0.229712,2.4,-1.381968,        0,2.4,-1.4,
+       0,2.4,-1.4,     0,2.435437,-1.385925,   -0.227403,2.435437,-1.368074,
+       -0.442166,2.435437,-1.316296,   -0.446656,2.4,-1.329664,        -0.229712,2.4,-1.381968,
+       -0.229712,2.4,-1.381968,        -0.227403,2.435437,-1.368074,   -0.442166,2.435437,-1.316296,
+       -0.641628,2.435437,-1.233252,   -0.648144,2.4,-1.245776,        -0.446656,2.4,-1.329664,
+       -0.446656,2.4,-1.329664,        -0.442166,2.435437,-1.316296,   -0.641628,2.435437,-1.233252,
+       -0.823129,2.435437,-1.121601,   -0.831488,2.4,-1.132992,        -0.648144,2.4,-1.245776,
+       -0.648144,2.4,-1.245776,        -0.641628,2.435437,-1.233252,   -0.823129,2.435437,-1.121601,
+       -0.984007,2.435437,-0.984007,   -0.994,2.4,-0.994,      -0.831488,2.4,-1.132992,
+       -0.831488,2.4,-1.132992,        -0.823129,2.435437,-1.121601,   -0.984007,2.435437,-0.984007,
+       -1.121601,2.435437,-0.823129,   -1.132992,2.4,-0.831488,        -0.994,2.4,-0.994,
+       -0.994,2.4,-0.994,      -0.984007,2.435437,-0.984007,   -1.121601,2.435437,-0.823129,
+       -1.233252,2.435437,-0.641628,   -1.245776,2.4,-0.648144,        -1.132992,2.4,-0.831488,
+       -1.132992,2.4,-0.831488,        -1.121601,2.435437,-0.823129,   -1.233252,2.435437,-0.641628,
+       -1.316296,2.435437,-0.442166,   -1.329664,2.4,-0.446656,        -1.245776,2.4,-0.648144,
+       -1.245776,2.4,-0.648144,        -1.233252,2.435437,-0.641628,   -1.316296,2.435437,-0.442166,
+       -1.368074,2.435437,-0.227403,   -1.381968,2.4,-0.229712,        -1.329664,2.4,-0.446656,
+       -1.329664,2.4,-0.446656,        -1.316296,2.435437,-0.442166,   -1.368074,2.435437,-0.227403,
+       -1.385925,2.435437,0,   -1.4,2.4,0,     -1.381968,2.4,-0.229712,
+       -1.381968,2.4,-0.229712,        -1.368074,2.435437,-0.227403,   -1.385925,2.435437,0,
+       -0.226496,2.463,-1.36262,       -0.227403,2.435437,-1.368074,   0,2.435437,-1.385925,
+       0,2.435437,-1.385925,   0,2.463,-1.3804,        -0.226496,2.463,-1.36262,
+       -0.440403,2.463,-1.311049,      -0.442166,2.435437,-1.316296,   -0.227403,2.435437,-1.368074,
+       -0.227403,2.435437,-1.368074,   -0.226496,2.463,-1.36262,       -0.440403,2.463,-1.311049,
+       -0.63907,2.463,-1.228335,       -0.641628,2.435437,-1.233252,   -0.442166,2.435437,-1.316296,
+       -0.442166,2.435437,-1.316296,   -0.440403,2.463,-1.311049,      -0.63907,2.463,-1.228335,
+       -0.819847,2.463,-1.11713,       -0.823129,2.435437,-1.121601,   -0.641628,2.435437,-1.233252,
+       -0.641628,2.435437,-1.233252,   -0.63907,2.463,-1.228335,       -0.819847,2.463,-1.11713,
+       -0.980084,2.463,-0.980084,      -0.984007,2.435437,-0.984007,   -0.823129,2.435437,-1.121601,
+       -0.823129,2.435437,-1.121601,   -0.819847,2.463,-1.11713,       -0.980084,2.463,-0.980084,
+       -1.11713,2.463,-0.819847,       -1.121601,2.435437,-0.823129,   -0.984007,2.435437,-0.984007,
+       -0.984007,2.435437,-0.984007,   -0.980084,2.463,-0.980084,      -1.11713,2.463,-0.819847,
+       -1.228335,2.463,-0.63907,       -1.233252,2.435437,-0.641628,   -1.121601,2.435437,-0.823129,
+       -1.121601,2.435437,-0.823129,   -1.11713,2.463,-0.819847,       -1.228335,2.463,-0.63907,
+       -1.311049,2.463,-0.440403,      -1.316296,2.435437,-0.442166,   -1.233252,2.435437,-0.641628,
+       -1.233252,2.435437,-0.641628,   -1.228335,2.463,-0.63907,       -1.311049,2.463,-0.440403,
+       -1.36262,2.463,-0.226496,       -1.368074,2.435437,-0.227403,   -1.316296,2.435437,-0.442166,
+       -1.316296,2.435437,-0.442166,   -1.311049,2.463,-0.440403,      -1.36262,2.463,-0.226496,
+       -1.3804,2.463,0,        -1.385925,2.435437,0,   -1.368074,2.435437,-0.227403,
+       -1.368074,2.435437,-0.227403,   -1.36262,2.463,-0.226496,       -1.3804,2.463,0,
+       -0.226795,2.482687,-1.364422,   -0.226496,2.463,-1.36262,       0,2.463,-1.3804,
+       0,2.463,-1.3804,        0,2.482687,-1.382225,   -0.226795,2.482687,-1.364422,
+       -0.440985,2.482687,-1.312782,   -0.440403,2.463,-1.311049,      -0.226496,2.463,-1.36262,
+       -0.226496,2.463,-1.36262,       -0.226795,2.482687,-1.364422,   -0.440985,2.482687,-1.312782,
+       -0.639915,2.482687,-1.229959,   -0.63907,2.463,-1.228335,       -0.440403,2.463,-1.311049,
+       -0.440403,2.463,-1.311049,      -0.440985,2.482687,-1.312782,   -0.639915,2.482687,-1.229959,
+       -0.820931,2.482687,-1.118607,   -0.819847,2.463,-1.11713,       -0.63907,2.463,-1.228335,
+       -0.63907,2.463,-1.228335,       -0.639915,2.482687,-1.229959,   -0.820931,2.482687,-1.118607,
+       -0.98138,2.482687,-0.98138,     -0.980084,2.463,-0.980084,      -0.819847,2.463,-1.11713,
+       -0.819847,2.463,-1.11713,       -0.820931,2.482687,-1.118607,   -0.98138,2.482687,-0.98138,
+       -1.118607,2.482687,-0.820931,   -1.11713,2.463,-0.819847,       -0.980084,2.463,-0.980084,
+       -0.980084,2.463,-0.980084,      -0.98138,2.482687,-0.98138,     -1.118607,2.482687,-0.820931,
+       -1.229959,2.482687,-0.639915,   -1.228335,2.463,-0.63907,       -1.11713,2.463,-0.819847,
+       -1.11713,2.463,-0.819847,       -1.118607,2.482687,-0.820931,   -1.229959,2.482687,-0.639915,
+       -1.312782,2.482687,-0.440985,   -1.311049,2.463,-0.440403,      -1.228335,2.463,-0.63907,
+       -1.228335,2.463,-0.63907,       -1.229959,2.482687,-0.639915,   -1.312782,2.482687,-0.440985,
+       -1.364422,2.482687,-0.226795,   -1.36262,2.463,-0.226496,       -1.311049,2.463,-0.440403,
+       -1.311049,2.463,-0.440403,      -1.312782,2.482687,-0.440985,   -1.364422,2.482687,-0.226795,
+       -1.382225,2.482687,0,   -1.3804,2.463,0,        -1.36262,2.463,-0.226496,
+       -1.36262,2.463,-0.226496,       -1.364422,2.482687,-0.226795,   -1.382225,2.482687,0,
+       -0.228104,2.4945,-1.372294,     -0.226795,2.482687,-1.364422,   0,2.482687,-1.382225,
+       0,2.482687,-1.382225,   0,2.4945,-1.3902,       -0.228104,2.4945,-1.372294,
+       -0.443529,2.4945,-1.320356,     -0.440985,2.482687,-1.312782,   -0.226795,2.482687,-1.364422,
+       -0.226795,2.482687,-1.364422,   -0.228104,2.4945,-1.372294,     -0.443529,2.4945,-1.320356,
+       -0.643607,2.4945,-1.237056,     -0.639915,2.482687,-1.229959,   -0.440985,2.482687,-1.312782,
+       -0.440985,2.482687,-1.312782,   -0.443529,2.4945,-1.320356,     -0.643607,2.4945,-1.237056,
+       -0.825668,2.4945,-1.125061,     -0.820931,2.482687,-1.118607,   -0.639915,2.482687,-1.229959,
+       -0.639915,2.482687,-1.229959,   -0.643607,2.4945,-1.237056,     -0.825668,2.4945,-1.125061,
+       -0.987042,2.4945,-0.987042,     -0.98138,2.482687,-0.98138,     -0.820931,2.482687,-1.118607,
+       -0.820931,2.482687,-1.118607,   -0.825668,2.4945,-1.125061,     -0.987042,2.4945,-0.987042,
+       -1.125061,2.4945,-0.825668,     -1.118607,2.482687,-0.820931,   -0.98138,2.482687,-0.98138,
+       -0.98138,2.482687,-0.98138,     -0.987042,2.4945,-0.987042,     -1.125061,2.4945,-0.825668,
+       -1.237056,2.4945,-0.643607,     -1.229959,2.482687,-0.639915,   -1.118607,2.482687,-0.820931,
+       -1.118607,2.482687,-0.820931,   -1.125061,2.4945,-0.825668,     -1.237056,2.4945,-0.643607,
+       -1.320356,2.4945,-0.443529,     -1.312782,2.482687,-0.440985,   -1.229959,2.482687,-0.639915,
+       -1.229959,2.482687,-0.639915,   -1.237056,2.4945,-0.643607,     -1.320356,2.4945,-0.443529,
+       -1.372294,2.4945,-0.228104,     -1.364422,2.482687,-0.226795,   -1.312782,2.482687,-0.440985,
+       -1.312782,2.482687,-0.440985,   -1.320356,2.4945,-0.443529,     -1.372294,2.4945,-0.228104,
+       -1.3902,2.4945,0,       -1.382225,2.482687,0,   -1.364422,2.482687,-0.226795,
+       -1.364422,2.482687,-0.226795,   -1.372294,2.4945,-0.228104,     -1.3902,2.4945,0,
+       -0.230225,2.498438,-1.385053,   -0.228104,2.4945,-1.372294,     0,2.4945,-1.3902,
+       0,2.4945,-1.3902,       0,2.498438,-1.403125,   -0.230225,2.498438,-1.385053,
+       -0.447653,2.498438,-1.332632,   -0.443529,2.4945,-1.320356,     -0.228104,2.4945,-1.372294,
+       -0.228104,2.4945,-1.372294,     -0.230225,2.498438,-1.385053,   -0.447653,2.498438,-1.332632,
+       -0.649591,2.498438,-1.248557,   -0.643607,2.4945,-1.237056,     -0.443529,2.4945,-1.320356,
+       -0.443529,2.4945,-1.320356,     -0.447653,2.498438,-1.332632,   -0.649591,2.498438,-1.248557,
+       -0.833344,2.498438,-1.135521,   -0.825668,2.4945,-1.125061,     -0.643607,2.4945,-1.237056,
+       -0.643607,2.4945,-1.237056,     -0.649591,2.498438,-1.248557,   -0.833344,2.498438,-1.135521,
+       -0.996219,2.498438,-0.996219,   -0.987042,2.4945,-0.987042,     -0.825668,2.4945,-1.125061,
+       -0.825668,2.4945,-1.125061,     -0.833344,2.498438,-1.135521,   -0.996219,2.498438,-0.996219,
+       -1.135521,2.498438,-0.833344,   -1.125061,2.4945,-0.825668,     -0.987042,2.4945,-0.987042,
+       -0.987042,2.4945,-0.987042,     -0.996219,2.498438,-0.996219,   -1.135521,2.498438,-0.833344,
+       -1.248557,2.498438,-0.649591,   -1.237056,2.4945,-0.643607,     -1.125061,2.4945,-0.825668,
+       -1.125061,2.4945,-0.825668,     -1.135521,2.498438,-0.833344,   -1.248557,2.498438,-0.649591,
+       -1.332632,2.498438,-0.447653,   -1.320356,2.4945,-0.443529,     -1.237056,2.4945,-0.643607,
+       -1.237056,2.4945,-0.643607,     -1.248557,2.498438,-0.649591,   -1.332632,2.498438,-0.447653,
+       -1.385053,2.498438,-0.230225,   -1.372294,2.4945,-0.228104,     -1.320356,2.4945,-0.443529,
+       -1.320356,2.4945,-0.443529,     -1.332632,2.498438,-0.447653,   -1.385053,2.498438,-0.230225,
+       -1.403125,2.498438,0,   -1.3902,2.4945,0,       -1.372294,2.4945,-0.228104,
+       -1.372294,2.4945,-0.228104,     -1.385053,2.498438,-0.230225,   -1.403125,2.498438,0,
+       -0.232961,2.4945,-1.401513,     -0.230225,2.498438,-1.385053,   0,2.498438,-1.403125,
+       0,2.498438,-1.403125,   0,2.4945,-1.4198,       -0.232961,2.4945,-1.401513,
+       -0.452973,2.4945,-1.348469,     -0.447653,2.498438,-1.332632,   -0.230225,2.498438,-1.385053,
+       -0.230225,2.498438,-1.385053,   -0.232961,2.4945,-1.401513,     -0.452973,2.4945,-1.348469,
+       -0.657311,2.4945,-1.263395,     -0.649591,2.498438,-1.248557,   -0.447653,2.498438,-1.332632,
+       -0.447653,2.498438,-1.332632,   -0.452973,2.4945,-1.348469,     -0.657311,2.4945,-1.263395,
+       -0.843248,2.4945,-1.149016,     -0.833344,2.498438,-1.135521,   -0.649591,2.498438,-1.248557,
+       -0.649591,2.498438,-1.248557,   -0.657311,2.4945,-1.263395,     -0.843248,2.4945,-1.149016,
+       -1.008058,2.4945,-1.008058,     -0.996219,2.498438,-0.996219,   -0.833344,2.498438,-1.135521,
+       -0.833344,2.498438,-1.135521,   -0.843248,2.4945,-1.149016,     -1.008058,2.4945,-1.008058,
+       -1.149016,2.4945,-0.843248,     -1.135521,2.498438,-0.833344,   -0.996219,2.498438,-0.996219,
+       -0.996219,2.498438,-0.996219,   -1.008058,2.4945,-1.008058,     -1.149016,2.4945,-0.843248,
+       -1.263395,2.4945,-0.657311,     -1.248557,2.498438,-0.649591,   -1.135521,2.498438,-0.833344,
+       -1.135521,2.498438,-0.833344,   -1.149016,2.4945,-0.843248,     -1.263395,2.4945,-0.657311,
+       -1.348469,2.4945,-0.452973,     -1.332632,2.498438,-0.447653,   -1.248557,2.498438,-0.649591,
+       -1.248557,2.498438,-0.649591,   -1.263395,2.4945,-0.657311,     -1.348469,2.4945,-0.452973,
+       -1.401513,2.4945,-0.232961,     -1.385053,2.498438,-0.230225,   -1.332632,2.498438,-0.447653,
+       -1.332632,2.498438,-0.447653,   -1.348469,2.4945,-0.452973,     -1.401513,2.4945,-0.232961,
+       -1.4198,2.4945,0,       -1.403125,2.498438,0,   -1.385053,2.498438,-0.230225,
+       -1.385053,2.498438,-0.230225,   -1.401513,2.4945,-0.232961,     -1.4198,2.4945,0,
+       -0.236115,2.482687,-1.42049,    -0.232961,2.4945,-1.401513,     0,2.4945,-1.4198,
+       0,2.4945,-1.4198,       0,2.482687,-1.439025,   -0.236115,2.482687,-1.42049,
+       -0.459107,2.482687,-1.366728,   -0.452973,2.4945,-1.348469,     -0.232961,2.4945,-1.401513,
+       -0.232961,2.4945,-1.401513,     -0.236115,2.482687,-1.42049,    -0.459107,2.482687,-1.366728,
+       -0.666211,2.482687,-1.280502,   -0.657311,2.4945,-1.263395,     -0.452973,2.4945,-1.348469,
+       -0.452973,2.4945,-1.348469,     -0.459107,2.482687,-1.366728,   -0.666211,2.482687,-1.280502,
+       -0.854666,2.482687,-1.164574,   -0.843248,2.4945,-1.149016,     -0.657311,2.4945,-1.263395,
+       -0.657311,2.4945,-1.263395,     -0.666211,2.482687,-1.280502,   -0.854666,2.482687,-1.164574,
+       -1.021708,2.482687,-1.021708,   -1.008058,2.4945,-1.008058,     -0.843248,2.4945,-1.149016,
+       -0.843248,2.4945,-1.149016,     -0.854666,2.482687,-1.164574,   -1.021708,2.482687,-1.021708,
+       -1.164574,2.482687,-0.854666,   -1.149016,2.4945,-0.843248,     -1.008058,2.4945,-1.008058,
+       -1.008058,2.4945,-1.008058,     -1.021708,2.482687,-1.021708,   -1.164574,2.482687,-0.854666,
+       -1.280502,2.482687,-0.666211,   -1.263395,2.4945,-0.657311,     -1.149016,2.4945,-0.843248,
+       -1.149016,2.4945,-0.843248,     -1.164574,2.482687,-0.854666,   -1.280502,2.482687,-0.666211,
+       -1.366728,2.482687,-0.459107,   -1.348469,2.4945,-0.452973,     -1.263395,2.4945,-0.657311,
+       -1.263395,2.4945,-0.657311,     -1.280502,2.482687,-0.666211,   -1.366728,2.482687,-0.459107,
+       -1.42049,2.482687,-0.236115,    -1.401513,2.4945,-0.232961,     -1.348469,2.4945,-0.452973,
+       -1.348469,2.4945,-0.452973,     -1.366728,2.482687,-0.459107,   -1.42049,2.482687,-0.236115,
+       -1.439025,2.482687,0,   -1.4198,2.4945,0,       -1.401513,2.4945,-0.232961,
+       -1.401513,2.4945,-0.232961,     -1.42049,2.482687,-0.236115,    -1.439025,2.482687,0,
+       -0.239491,2.463,-1.4408,        -0.236115,2.482687,-1.42049,    0,2.482687,-1.439025,
+       0,2.482687,-1.439025,   0,2.463,-1.4596,        -0.239491,2.463,-1.4408,
+       -0.465671,2.463,-1.38627,       -0.459107,2.482687,-1.366728,   -0.236115,2.482687,-1.42049,
+       -0.236115,2.482687,-1.42049,    -0.239491,2.463,-1.4408,        -0.465671,2.463,-1.38627,
+       -0.675736,2.463,-1.29881,       -0.666211,2.482687,-1.280502,   -0.459107,2.482687,-1.366728,
+       -0.459107,2.482687,-1.366728,   -0.465671,2.463,-1.38627,       -0.675736,2.463,-1.29881,
+       -0.866886,2.463,-1.181225,      -0.854666,2.482687,-1.164574,   -0.666211,2.482687,-1.280502,
+       -0.666211,2.482687,-1.280502,   -0.675736,2.463,-1.29881,       -0.866886,2.463,-1.181225,
+       -1.036316,2.463,-1.036316,      -1.021708,2.482687,-1.021708,   -0.854666,2.482687,-1.164574,
+       -0.854666,2.482687,-1.164574,   -0.866886,2.463,-1.181225,      -1.036316,2.463,-1.036316,
+       -1.181225,2.463,-0.866886,      -1.164574,2.482687,-0.854666,   -1.021708,2.482687,-1.021708,
+       -1.021708,2.482687,-1.021708,   -1.036316,2.463,-1.036316,      -1.181225,2.463,-0.866886,
+       -1.29881,2.463,-0.675736,       -1.280502,2.482687,-0.666211,   -1.164574,2.482687,-0.854666,
+       -1.164574,2.482687,-0.854666,   -1.181225,2.463,-0.866886,      -1.29881,2.463,-0.675736,
+       -1.38627,2.463,-0.465671,       -1.366728,2.482687,-0.459107,   -1.280502,2.482687,-0.666211,
+       -1.280502,2.482687,-0.666211,   -1.29881,2.463,-0.675736,       -1.38627,2.463,-0.465671,
+       -1.4408,2.463,-0.239491,        -1.42049,2.482687,-0.236115,    -1.366728,2.482687,-0.459107,
+       -1.366728,2.482687,-0.459107,   -1.38627,2.463,-0.465671,       -1.4408,2.463,-0.239491,
+       -1.4596,2.463,0,        -1.439025,2.482687,0,   -1.42049,2.482687,-0.236115,
+       -1.42049,2.482687,-0.236115,    -1.4408,2.463,-0.239491,        -1.4596,2.463,0,
+       -0.242892,2.435437,-1.461258,   -0.239491,2.463,-1.4408,        0,2.463,-1.4596,
+       0,2.463,-1.4596,        0,2.435437,-1.480325,   -0.242892,2.435437,-1.461258,
+       -0.472283,2.435437,-1.405953,   -0.465671,2.463,-1.38627,       -0.239491,2.463,-1.4408,
+       -0.239491,2.463,-1.4408,        -0.242892,2.435437,-1.461258,   -0.472283,2.435437,-1.405953,
+       -0.685331,2.435437,-1.317252,   -0.675736,2.463,-1.29881,       -0.465671,2.463,-1.38627,
+       -0.465671,2.463,-1.38627,       -0.472283,2.435437,-1.405953,   -0.685331,2.435437,-1.317252,
+       -0.879195,2.435437,-1.197997,   -0.866886,2.463,-1.181225,      -0.675736,2.463,-1.29881,
+       -0.675736,2.463,-1.29881,       -0.685331,2.435437,-1.317252,   -0.879195,2.435437,-1.197997,
+       -1.051031,2.435437,-1.051031,   -1.036316,2.463,-1.036316,      -0.866886,2.463,-1.181225,
+       -0.866886,2.463,-1.181225,      -0.879195,2.435437,-1.197997,   -1.051031,2.435437,-1.051031,
+       -1.197997,2.435437,-0.879195,   -1.181225,2.463,-0.866886,      -1.036316,2.463,-1.036316,
+       -1.036316,2.463,-1.036316,      -1.051031,2.435437,-1.051031,   -1.197997,2.435437,-0.879195,
+       -1.317252,2.435437,-0.685331,   -1.29881,2.463,-0.675736,       -1.181225,2.463,-0.866886,
+       -1.181225,2.463,-0.866886,      -1.197997,2.435437,-0.879195,   -1.317252,2.435437,-0.685331,
+       -1.405953,2.435437,-0.472283,   -1.38627,2.463,-0.465671,       -1.29881,2.463,-0.675736,
+       -1.29881,2.463,-0.675736,       -1.317252,2.435437,-0.685331,   -1.405953,2.435437,-0.472283,
+       -1.461258,2.435437,-0.242892,   -1.4408,2.463,-0.239491,        -1.38627,2.463,-0.465671,
+       -1.38627,2.463,-0.465671,       -1.405953,2.435437,-0.472283,   -1.461258,2.435437,-0.242892,
+       -1.480325,2.435437,0,   -1.4596,2.463,0,        -1.4408,2.463,-0.239491,
+       -1.4408,2.463,-0.239491,        -1.461258,2.435437,-0.242892,   -1.480325,2.435437,0,
+       -0.24612,2.4,-1.48068,  -0.242892,2.435437,-1.461258,   0,2.435437,-1.480325,
+       0,2.435437,-1.480325,   0,2.4,-1.5,     -0.24612,2.4,-1.48068,
+       -0.47856,2.4,-1.42464,  -0.472283,2.435437,-1.405953,   -0.242892,2.435437,-1.461258,
+       -0.242892,2.435437,-1.461258,   -0.24612,2.4,-1.48068,  -0.47856,2.4,-1.42464,
+       -0.69444,2.4,-1.33476,  -0.685331,2.435437,-1.317252,   -0.472283,2.435437,-1.405953,
+       -0.472283,2.435437,-1.405953,   -0.47856,2.4,-1.42464,  -0.69444,2.4,-1.33476,
+       -0.89088,2.4,-1.21392,  -0.879195,2.435437,-1.197997,   -0.685331,2.435437,-1.317252,
+       -0.685331,2.435437,-1.317252,   -0.69444,2.4,-1.33476,  -0.89088,2.4,-1.21392,
+       -1.065,2.4,-1.065,      -1.051031,2.435437,-1.051031,   -0.879195,2.435437,-1.197997,
+       -0.879195,2.435437,-1.197997,   -0.89088,2.4,-1.21392,  -1.065,2.4,-1.065,
+       -1.21392,2.4,-0.89088,  -1.197997,2.435437,-0.879195,   -1.051031,2.435437,-1.051031,
+       -1.051031,2.435437,-1.051031,   -1.065,2.4,-1.065,      -1.21392,2.4,-0.89088,
+       -1.33476,2.4,-0.69444,  -1.317252,2.435437,-0.685331,   -1.197997,2.435437,-0.879195,
+       -1.197997,2.435437,-0.879195,   -1.21392,2.4,-0.89088,  -1.33476,2.4,-0.69444,
+       -1.42464,2.4,-0.47856,  -1.405953,2.435437,-0.472283,   -1.317252,2.435437,-0.685331,
+       -1.317252,2.435437,-0.685331,   -1.33476,2.4,-0.69444,  -1.42464,2.4,-0.47856,
+       -1.48068,2.4,-0.24612,  -1.461258,2.435437,-0.242892,   -1.405953,2.435437,-0.472283,
+       -1.405953,2.435437,-0.472283,   -1.42464,2.4,-0.47856,  -1.48068,2.4,-0.24612,
+       -1.5,2.4,0,     -1.480325,2.435437,0,   -1.461258,2.435437,-0.242892,
+       -1.461258,2.435437,-0.242892,   -1.48068,2.4,-0.24612,  -1.5,2.4,0,
+       -1.368074,2.435437,0.227403,    -1.381968,2.4,0.229712, -1.4,2.4,0,
+       -1.4,2.4,0,     -1.385925,2.435437,0,   -1.368074,2.435437,0.227403,
+       -1.316296,2.435437,0.442166,    -1.329664,2.4,0.446656, -1.381968,2.4,0.229712,
+       -1.381968,2.4,0.229712, -1.368074,2.435437,0.227403,    -1.316296,2.435437,0.442166,
+       -1.233252,2.435437,0.641628,    -1.245776,2.4,0.648144, -1.329664,2.4,0.446656,
+       -1.329664,2.4,0.446656, -1.316296,2.435437,0.442166,    -1.233252,2.435437,0.641628,
+       -1.121601,2.435437,0.823129,    -1.132992,2.4,0.831488, -1.245776,2.4,0.648144,
+       -1.245776,2.4,0.648144, -1.233252,2.435437,0.641628,    -1.121601,2.435437,0.823129,
+       -0.984007,2.435437,0.984007,    -0.994,2.4,0.994,       -1.132992,2.4,0.831488,
+       -1.132992,2.4,0.831488, -1.121601,2.435437,0.823129,    -0.984007,2.435437,0.984007,
+       -0.823129,2.435437,1.121601,    -0.831488,2.4,1.132992, -0.994,2.4,0.994,
+       -0.994,2.4,0.994,       -0.984007,2.435437,0.984007,    -0.823129,2.435437,1.121601,
+       -0.641628,2.435437,1.233252,    -0.648144,2.4,1.245776, -0.831488,2.4,1.132992,
+       -0.831488,2.4,1.132992, -0.823129,2.435437,1.121601,    -0.641628,2.435437,1.233252,
+       -0.442166,2.435437,1.316296,    -0.446656,2.4,1.329664, -0.648144,2.4,1.245776,
+       -0.648144,2.4,1.245776, -0.641628,2.435437,1.233252,    -0.442166,2.435437,1.316296,
+       -0.227403,2.435437,1.368074,    -0.229712,2.4,1.381968, -0.446656,2.4,1.329664,
+       -0.446656,2.4,1.329664, -0.442166,2.435437,1.316296,    -0.227403,2.435437,1.368074,
+       0,2.435437,1.385925,    0,2.4,1.4,      -0.229712,2.4,1.381968,
+       -0.229712,2.4,1.381968, -0.227403,2.435437,1.368074,    0,2.435437,1.385925,
+       -1.36262,2.463,0.226496,        -1.368074,2.435437,0.227403,    -1.385925,2.435437,0,
+       -1.385925,2.435437,0,   -1.3804,2.463,0,        -1.36262,2.463,0.226496,
+       -1.311049,2.463,0.440403,       -1.316296,2.435437,0.442166,    -1.368074,2.435437,0.227403,
+       -1.368074,2.435437,0.227403,    -1.36262,2.463,0.226496,        -1.311049,2.463,0.440403,
+       -1.228335,2.463,0.63907,        -1.233252,2.435437,0.641628,    -1.316296,2.435437,0.442166,
+       -1.316296,2.435437,0.442166,    -1.311049,2.463,0.440403,       -1.228335,2.463,0.63907,
+       -1.11713,2.463,0.819847,        -1.121601,2.435437,0.823129,    -1.233252,2.435437,0.641628,
+       -1.233252,2.435437,0.641628,    -1.228335,2.463,0.63907,        -1.11713,2.463,0.819847,
+       -0.980084,2.463,0.980084,       -0.984007,2.435437,0.984007,    -1.121601,2.435437,0.823129,
+       -1.121601,2.435437,0.823129,    -1.11713,2.463,0.819847,        -0.980084,2.463,0.980084,
+       -0.819847,2.463,1.11713,        -0.823129,2.435437,1.121601,    -0.984007,2.435437,0.984007,
+       -0.984007,2.435437,0.984007,    -0.980084,2.463,0.980084,       -0.819847,2.463,1.11713,
+       -0.63907,2.463,1.228335,        -0.641628,2.435437,1.233252,    -0.823129,2.435437,1.121601,
+       -0.823129,2.435437,1.121601,    -0.819847,2.463,1.11713,        -0.63907,2.463,1.228335,
+       -0.440403,2.463,1.311049,       -0.442166,2.435437,1.316296,    -0.641628,2.435437,1.233252,
+       -0.641628,2.435437,1.233252,    -0.63907,2.463,1.228335,        -0.440403,2.463,1.311049,
+       -0.226496,2.463,1.36262,        -0.227403,2.435437,1.368074,    -0.442166,2.435437,1.316296,
+       -0.442166,2.435437,1.316296,    -0.440403,2.463,1.311049,       -0.226496,2.463,1.36262,
+       0,2.463,1.3804, 0,2.435437,1.385925,    -0.227403,2.435437,1.368074,
+       -0.227403,2.435437,1.368074,    -0.226496,2.463,1.36262,        0,2.463,1.3804,
+       -1.364422,2.482687,0.226795,    -1.36262,2.463,0.226496,        -1.3804,2.463,0,
+       -1.3804,2.463,0,        -1.382225,2.482687,0,   -1.364422,2.482687,0.226795,
+       -1.312782,2.482687,0.440985,    -1.311049,2.463,0.440403,       -1.36262,2.463,0.226496,
+       -1.36262,2.463,0.226496,        -1.364422,2.482687,0.226795,    -1.312782,2.482687,0.440985,
+       -1.229959,2.482687,0.639915,    -1.228335,2.463,0.63907,        -1.311049,2.463,0.440403,
+       -1.311049,2.463,0.440403,       -1.312782,2.482687,0.440985,    -1.229959,2.482687,0.639915,
+       -1.118607,2.482687,0.820931,    -1.11713,2.463,0.819847,        -1.228335,2.463,0.63907,
+       -1.228335,2.463,0.63907,        -1.229959,2.482687,0.639915,    -1.118607,2.482687,0.820931,
+       -0.98138,2.482687,0.98138,      -0.980084,2.463,0.980084,       -1.11713,2.463,0.819847,
+       -1.11713,2.463,0.819847,        -1.118607,2.482687,0.820931,    -0.98138,2.482687,0.98138,
+       -0.820931,2.482687,1.118607,    -0.819847,2.463,1.11713,        -0.980084,2.463,0.980084,
+       -0.980084,2.463,0.980084,       -0.98138,2.482687,0.98138,      -0.820931,2.482687,1.118607,
+       -0.639915,2.482687,1.229959,    -0.63907,2.463,1.228335,        -0.819847,2.463,1.11713,
+       -0.819847,2.463,1.11713,        -0.820931,2.482687,1.118607,    -0.639915,2.482687,1.229959,
+       -0.440985,2.482687,1.312782,    -0.440403,2.463,1.311049,       -0.63907,2.463,1.228335,
+       -0.63907,2.463,1.228335,        -0.639915,2.482687,1.229959,    -0.440985,2.482687,1.312782,
+       -0.226795,2.482687,1.364422,    -0.226496,2.463,1.36262,        -0.440403,2.463,1.311049,
+       -0.440403,2.463,1.311049,       -0.440985,2.482687,1.312782,    -0.226795,2.482687,1.364422,
+       0,2.482687,1.382225,    0,2.463,1.3804, -0.226496,2.463,1.36262,
+       -0.226496,2.463,1.36262,        -0.226795,2.482687,1.364422,    0,2.482687,1.382225,
+       -1.372294,2.4945,0.228104,      -1.364422,2.482687,0.226795,    -1.382225,2.482687,0,
+       -1.382225,2.482687,0,   -1.3902,2.4945,0,       -1.372294,2.4945,0.228104,
+       -1.320356,2.4945,0.443529,      -1.312782,2.482687,0.440985,    -1.364422,2.482687,0.226795,
+       -1.364422,2.482687,0.226795,    -1.372294,2.4945,0.228104,      -1.320356,2.4945,0.443529,
+       -1.237056,2.4945,0.643607,      -1.229959,2.482687,0.639915,    -1.312782,2.482687,0.440985,
+       -1.312782,2.482687,0.440985,    -1.320356,2.4945,0.443529,      -1.237056,2.4945,0.643607,
+       -1.125061,2.4945,0.825668,      -1.118607,2.482687,0.820931,    -1.229959,2.482687,0.639915,
+       -1.229959,2.482687,0.639915,    -1.237056,2.4945,0.643607,      -1.125061,2.4945,0.825668,
+       -0.987042,2.4945,0.987042,      -0.98138,2.482687,0.98138,      -1.118607,2.482687,0.820931,
+       -1.118607,2.482687,0.820931,    -1.125061,2.4945,0.825668,      -0.987042,2.4945,0.987042,
+       -0.825668,2.4945,1.125061,      -0.820931,2.482687,1.118607,    -0.98138,2.482687,0.98138,
+       -0.98138,2.482687,0.98138,      -0.987042,2.4945,0.987042,      -0.825668,2.4945,1.125061,
+       -0.643607,2.4945,1.237056,      -0.639915,2.482687,1.229959,    -0.820931,2.482687,1.118607,
+       -0.820931,2.482687,1.118607,    -0.825668,2.4945,1.125061,      -0.643607,2.4945,1.237056,
+       -0.443529,2.4945,1.320356,      -0.440985,2.482687,1.312782,    -0.639915,2.482687,1.229959,
+       -0.639915,2.482687,1.229959,    -0.643607,2.4945,1.237056,      -0.443529,2.4945,1.320356,
+       -0.228104,2.4945,1.372294,      -0.226795,2.482687,1.364422,    -0.440985,2.482687,1.312782,
+       -0.440985,2.482687,1.312782,    -0.443529,2.4945,1.320356,      -0.228104,2.4945,1.372294,
+       0,2.4945,1.3902,        0,2.482687,1.382225,    -0.226795,2.482687,1.364422,
+       -0.226795,2.482687,1.364422,    -0.228104,2.4945,1.372294,      0,2.4945,1.3902,
+       -1.385053,2.498438,0.230225,    -1.372294,2.4945,0.228104,      -1.3902,2.4945,0,
+       -1.3902,2.4945,0,       -1.403125,2.498438,0,   -1.385053,2.498438,0.230225,
+       -1.332632,2.498438,0.447653,    -1.320356,2.4945,0.443529,      -1.372294,2.4945,0.228104,
+       -1.372294,2.4945,0.228104,      -1.385053,2.498438,0.230225,    -1.332632,2.498438,0.447653,
+       -1.248557,2.498438,0.649591,    -1.237056,2.4945,0.643607,      -1.320356,2.4945,0.443529,
+       -1.320356,2.4945,0.443529,      -1.332632,2.498438,0.447653,    -1.248557,2.498438,0.649591,
+       -1.135521,2.498438,0.833344,    -1.125061,2.4945,0.825668,      -1.237056,2.4945,0.643607,
+       -1.237056,2.4945,0.643607,      -1.248557,2.498438,0.649591,    -1.135521,2.498438,0.833344,
+       -0.996219,2.498438,0.996219,    -0.987042,2.4945,0.987042,      -1.125061,2.4945,0.825668,
+       -1.125061,2.4945,0.825668,      -1.135521,2.498438,0.833344,    -0.996219,2.498438,0.996219,
+       -0.833344,2.498438,1.135521,    -0.825668,2.4945,1.125061,      -0.987042,2.4945,0.987042,
+       -0.987042,2.4945,0.987042,      -0.996219,2.498438,0.996219,    -0.833344,2.498438,1.135521,
+       -0.649591,2.498438,1.248557,    -0.643607,2.4945,1.237056,      -0.825668,2.4945,1.125061,
+       -0.825668,2.4945,1.125061,      -0.833344,2.498438,1.135521,    -0.649591,2.498438,1.248557,
+       -0.447653,2.498438,1.332632,    -0.443529,2.4945,1.320356,      -0.643607,2.4945,1.237056,
+       -0.643607,2.4945,1.237056,      -0.649591,2.498438,1.248557,    -0.447653,2.498438,1.332632,
+       -0.230225,2.498438,1.385053,    -0.228104,2.4945,1.372294,      -0.443529,2.4945,1.320356,
+       -0.443529,2.4945,1.320356,      -0.447653,2.498438,1.332632,    -0.230225,2.498438,1.385053,
+       0,2.498438,1.403125,    0,2.4945,1.3902,        -0.228104,2.4945,1.372294,
+       -0.228104,2.4945,1.372294,      -0.230225,2.498438,1.385053,    0,2.498438,1.403125,
+       -1.401513,2.4945,0.232961,      -1.385053,2.498438,0.230225,    -1.403125,2.498438,0,
+       -1.403125,2.498438,0,   -1.4198,2.4945,0,       -1.401513,2.4945,0.232961,
+       -1.348469,2.4945,0.452973,      -1.332632,2.498438,0.447653,    -1.385053,2.498438,0.230225,
+       -1.385053,2.498438,0.230225,    -1.401513,2.4945,0.232961,      -1.348469,2.4945,0.452973,
+       -1.263395,2.4945,0.657311,      -1.248557,2.498438,0.649591,    -1.332632,2.498438,0.447653,
+       -1.332632,2.498438,0.447653,    -1.348469,2.4945,0.452973,      -1.263395,2.4945,0.657311,
+       -1.149016,2.4945,0.843248,      -1.135521,2.498438,0.833344,    -1.248557,2.498438,0.649591,
+       -1.248557,2.498438,0.649591,    -1.263395,2.4945,0.657311,      -1.149016,2.4945,0.843248,
+       -1.008058,2.4945,1.008058,      -0.996219,2.498438,0.996219,    -1.135521,2.498438,0.833344,
+       -1.135521,2.498438,0.833344,    -1.149016,2.4945,0.843248,      -1.008058,2.4945,1.008058,
+       -0.843248,2.4945,1.149016,      -0.833344,2.498438,1.135521,    -0.996219,2.498438,0.996219,
+       -0.996219,2.498438,0.996219,    -1.008058,2.4945,1.008058,      -0.843248,2.4945,1.149016,
+       -0.657311,2.4945,1.263395,      -0.649591,2.498438,1.248557,    -0.833344,2.498438,1.135521,
+       -0.833344,2.498438,1.135521,    -0.843248,2.4945,1.149016,      -0.657311,2.4945,1.263395,
+       -0.452973,2.4945,1.348469,      -0.447653,2.498438,1.332632,    -0.649591,2.498438,1.248557,
+       -0.649591,2.498438,1.248557,    -0.657311,2.4945,1.263395,      -0.452973,2.4945,1.348469,
+       -0.232961,2.4945,1.401513,      -0.230225,2.498438,1.385053,    -0.447653,2.498438,1.332632,
+       -0.447653,2.498438,1.332632,    -0.452973,2.4945,1.348469,      -0.232961,2.4945,1.401513,
+       0,2.4945,1.4198,        0,2.498438,1.403125,    -0.230225,2.498438,1.385053,
+       -0.230225,2.498438,1.385053,    -0.232961,2.4945,1.401513,      0,2.4945,1.4198,
+       -1.42049,2.482687,0.236115,     -1.401513,2.4945,0.232961,      -1.4198,2.4945,0,
+       -1.4198,2.4945,0,       -1.439025,2.482687,0,   -1.42049,2.482687,0.236115,
+       -1.366728,2.482687,0.459107,    -1.348469,2.4945,0.452973,      -1.401513,2.4945,0.232961,
+       -1.401513,2.4945,0.232961,      -1.42049,2.482687,0.236115,     -1.366728,2.482687,0.459107,
+       -1.280502,2.482687,0.666211,    -1.263395,2.4945,0.657311,      -1.348469,2.4945,0.452973,
+       -1.348469,2.4945,0.452973,      -1.366728,2.482687,0.459107,    -1.280502,2.482687,0.666211,
+       -1.164574,2.482687,0.854666,    -1.149016,2.4945,0.843248,      -1.263395,2.4945,0.657311,
+       -1.263395,2.4945,0.657311,      -1.280502,2.482687,0.666211,    -1.164574,2.482687,0.854666,
+       -1.021708,2.482687,1.021708,    -1.008058,2.4945,1.008058,      -1.149016,2.4945,0.843248,
+       -1.149016,2.4945,0.843248,      -1.164574,2.482687,0.854666,    -1.021708,2.482687,1.021708,
+       -0.854666,2.482687,1.164574,    -0.843248,2.4945,1.149016,      -1.008058,2.4945,1.008058,
+       -1.008058,2.4945,1.008058,      -1.021708,2.482687,1.021708,    -0.854666,2.482687,1.164574,
+       -0.666211,2.482687,1.280502,    -0.657311,2.4945,1.263395,      -0.843248,2.4945,1.149016,
+       -0.843248,2.4945,1.149016,      -0.854666,2.482687,1.164574,    -0.666211,2.482687,1.280502,
+       -0.459107,2.482687,1.366728,    -0.452973,2.4945,1.348469,      -0.657311,2.4945,1.263395,
+       -0.657311,2.4945,1.263395,      -0.666211,2.482687,1.280502,    -0.459107,2.482687,1.366728,
+       -0.236115,2.482687,1.42049,     -0.232961,2.4945,1.401513,      -0.452973,2.4945,1.348469,
+       -0.452973,2.4945,1.348469,      -0.459107,2.482687,1.366728,    -0.236115,2.482687,1.42049,
+       0,2.482687,1.439025,    0,2.4945,1.4198,        -0.232961,2.4945,1.401513,
+       -0.232961,2.4945,1.401513,      -0.236115,2.482687,1.42049,     0,2.482687,1.439025,
+       -1.4408,2.463,0.239491, -1.42049,2.482687,0.236115,     -1.439025,2.482687,0,
+       -1.439025,2.482687,0,   -1.4596,2.463,0,        -1.4408,2.463,0.239491,
+       -1.38627,2.463,0.465671,        -1.366728,2.482687,0.459107,    -1.42049,2.482687,0.236115,
+       -1.42049,2.482687,0.236115,     -1.4408,2.463,0.239491, -1.38627,2.463,0.465671,
+       -1.29881,2.463,0.675736,        -1.280502,2.482687,0.666211,    -1.366728,2.482687,0.459107,
+       -1.366728,2.482687,0.459107,    -1.38627,2.463,0.465671,        -1.29881,2.463,0.675736,
+       -1.181225,2.463,0.866886,       -1.164574,2.482687,0.854666,    -1.280502,2.482687,0.666211,
+       -1.280502,2.482687,0.666211,    -1.29881,2.463,0.675736,        -1.181225,2.463,0.866886,
+       -1.036316,2.463,1.036316,       -1.021708,2.482687,1.021708,    -1.164574,2.482687,0.854666,
+       -1.164574,2.482687,0.854666,    -1.181225,2.463,0.866886,       -1.036316,2.463,1.036316,
+       -0.866886,2.463,1.181225,       -0.854666,2.482687,1.164574,    -1.021708,2.482687,1.021708,
+       -1.021708,2.482687,1.021708,    -1.036316,2.463,1.036316,       -0.866886,2.463,1.181225,
+       -0.675736,2.463,1.29881,        -0.666211,2.482687,1.280502,    -0.854666,2.482687,1.164574,
+       -0.854666,2.482687,1.164574,    -0.866886,2.463,1.181225,       -0.675736,2.463,1.29881,
+       -0.465671,2.463,1.38627,        -0.459107,2.482687,1.366728,    -0.666211,2.482687,1.280502,
+       -0.666211,2.482687,1.280502,    -0.675736,2.463,1.29881,        -0.465671,2.463,1.38627,
+       -0.239491,2.463,1.4408, -0.236115,2.482687,1.42049,     -0.459107,2.482687,1.366728,
+       -0.459107,2.482687,1.366728,    -0.465671,2.463,1.38627,        -0.239491,2.463,1.4408,
+       0,2.463,1.4596, 0,2.482687,1.439025,    -0.236115,2.482687,1.42049,
+       -0.236115,2.482687,1.42049,     -0.239491,2.463,1.4408, 0,2.463,1.4596,
+       -1.461258,2.435437,0.242892,    -1.4408,2.463,0.239491, -1.4596,2.463,0,
+       -1.4596,2.463,0,        -1.480325,2.435437,0,   -1.461258,2.435437,0.242892,
+       -1.405953,2.435437,0.472283,    -1.38627,2.463,0.465671,        -1.4408,2.463,0.239491,
+       -1.4408,2.463,0.239491, -1.461258,2.435437,0.242892,    -1.405953,2.435437,0.472283,
+       -1.317252,2.435437,0.685331,    -1.29881,2.463,0.675736,        -1.38627,2.463,0.465671,
+       -1.38627,2.463,0.465671,        -1.405953,2.435437,0.472283,    -1.317252,2.435437,0.685331,
+       -1.197997,2.435437,0.879195,    -1.181225,2.463,0.866886,       -1.29881,2.463,0.675736,
+       -1.29881,2.463,0.675736,        -1.317252,2.435437,0.685331,    -1.197997,2.435437,0.879195,
+       -1.051031,2.435437,1.051031,    -1.036316,2.463,1.036316,       -1.181225,2.463,0.866886,
+       -1.181225,2.463,0.866886,       -1.197997,2.435437,0.879195,    -1.051031,2.435437,1.051031,
+       -0.879195,2.435437,1.197997,    -0.866886,2.463,1.181225,       -1.036316,2.463,1.036316,
+       -1.036316,2.463,1.036316,       -1.051031,2.435437,1.051031,    -0.879195,2.435437,1.197997,
+       -0.685331,2.435437,1.317252,    -0.675736,2.463,1.29881,        -0.866886,2.463,1.181225,
+       -0.866886,2.463,1.181225,       -0.879195,2.435437,1.197997,    -0.685331,2.435437,1.317252,
+       -0.472283,2.435437,1.405953,    -0.465671,2.463,1.38627,        -0.675736,2.463,1.29881,
+       -0.675736,2.463,1.29881,        -0.685331,2.435437,1.317252,    -0.472283,2.435437,1.405953,
+       -0.242892,2.435437,1.461258,    -0.239491,2.463,1.4408, -0.465671,2.463,1.38627,
+       -0.465671,2.463,1.38627,        -0.472283,2.435437,1.405953,    -0.242892,2.435437,1.461258,
+       0,2.435437,1.480325,    0,2.463,1.4596, -0.239491,2.463,1.4408,
+       -0.239491,2.463,1.4408, -0.242892,2.435437,1.461258,    0,2.435437,1.480325,
+       -1.48068,2.4,0.24612,   -1.461258,2.435437,0.242892,    -1.480325,2.435437,0,
+       -1.480325,2.435437,0,   -1.5,2.4,0,     -1.48068,2.4,0.24612,
+       -1.42464,2.4,0.47856,   -1.405953,2.435437,0.472283,    -1.461258,2.435437,0.242892,
+       -1.461258,2.435437,0.242892,    -1.48068,2.4,0.24612,   -1.42464,2.4,0.47856,
+       -1.33476,2.4,0.69444,   -1.317252,2.435437,0.685331,    -1.405953,2.435437,0.472283,
+       -1.405953,2.435437,0.472283,    -1.42464,2.4,0.47856,   -1.33476,2.4,0.69444,
+       -1.21392,2.4,0.89088,   -1.197997,2.435437,0.879195,    -1.317252,2.435437,0.685331,
+       -1.317252,2.435437,0.685331,    -1.33476,2.4,0.69444,   -1.21392,2.4,0.89088,
+       -1.065,2.4,1.065,       -1.051031,2.435437,1.051031,    -1.197997,2.435437,0.879195,
+       -1.197997,2.435437,0.879195,    -1.21392,2.4,0.89088,   -1.065,2.4,1.065,
+       -0.89088,2.4,1.21392,   -0.879195,2.435437,1.197997,    -1.051031,2.435437,1.051031,
+       -1.051031,2.435437,1.051031,    -1.065,2.4,1.065,       -0.89088,2.4,1.21392,
+       -0.69444,2.4,1.33476,   -0.685331,2.435437,1.317252,    -0.879195,2.435437,1.197997,
+       -0.879195,2.435437,1.197997,    -0.89088,2.4,1.21392,   -0.69444,2.4,1.33476,
+       -0.47856,2.4,1.42464,   -0.472283,2.435437,1.405953,    -0.685331,2.435437,1.317252,
+       -0.685331,2.435437,1.317252,    -0.69444,2.4,1.33476,   -0.47856,2.4,1.42464,
+       -0.24612,2.4,1.48068,   -0.242892,2.435437,1.461258,    -0.472283,2.435437,1.405953,
+       -0.472283,2.435437,1.405953,    -0.47856,2.4,1.42464,   -0.24612,2.4,1.48068,
+       0,2.4,1.5,      0,2.435437,1.480325,    -0.242892,2.435437,1.461258,
+       -0.242892,2.435437,1.461258,    -0.24612,2.4,1.48068,   0,2.4,1.5,
+       0.227403,2.435437,1.368074,     0.229712,2.4,1.381968,  0,2.4,1.4,
+       0,2.4,1.4,      0,2.435437,1.385925,    0.227403,2.435437,1.368074,
+       0.442166,2.435437,1.316296,     0.446656,2.4,1.329664,  0.229712,2.4,1.381968,
+       0.229712,2.4,1.381968,  0.227403,2.435437,1.368074,     0.442166,2.435437,1.316296,
+       0.641628,2.435437,1.233252,     0.648144,2.4,1.245776,  0.446656,2.4,1.329664,
+       0.446656,2.4,1.329664,  0.442166,2.435437,1.316296,     0.641628,2.435437,1.233252,
+       0.823129,2.435437,1.121601,     0.831488,2.4,1.132992,  0.648144,2.4,1.245776,
+       0.648144,2.4,1.245776,  0.641628,2.435437,1.233252,     0.823129,2.435437,1.121601,
+       0.984007,2.435437,0.984007,     0.994,2.4,0.994,        0.831488,2.4,1.132992,
+       0.831488,2.4,1.132992,  0.823129,2.435437,1.121601,     0.984007,2.435437,0.984007,
+       1.121601,2.435437,0.823129,     1.132992,2.4,0.831488,  0.994,2.4,0.994,
+       0.994,2.4,0.994,        0.984007,2.435437,0.984007,     1.121601,2.435437,0.823129,
+       1.233252,2.435437,0.641628,     1.245776,2.4,0.648144,  1.132992,2.4,0.831488,
+       1.132992,2.4,0.831488,  1.121601,2.435437,0.823129,     1.233252,2.435437,0.641628,
+       1.316296,2.435437,0.442166,     1.329664,2.4,0.446656,  1.245776,2.4,0.648144,
+       1.245776,2.4,0.648144,  1.233252,2.435437,0.641628,     1.316296,2.435437,0.442166,
+       1.368074,2.435437,0.227403,     1.381968,2.4,0.229712,  1.329664,2.4,0.446656,
+       1.329664,2.4,0.446656,  1.316296,2.435437,0.442166,     1.368074,2.435437,0.227403,
+       1.385925,2.435437,0,    1.4,2.4,0,      1.381968,2.4,0.229712,
+       1.381968,2.4,0.229712,  1.368074,2.435437,0.227403,     1.385925,2.435437,0,
+       0.226496,2.463,1.36262, 0.227403,2.435437,1.368074,     0,2.435437,1.385925,
+       0,2.435437,1.385925,    0,2.463,1.3804, 0.226496,2.463,1.36262,
+       0.440403,2.463,1.311049,        0.442166,2.435437,1.316296,     0.227403,2.435437,1.368074,
+       0.227403,2.435437,1.368074,     0.226496,2.463,1.36262, 0.440403,2.463,1.311049,
+       0.63907,2.463,1.228335, 0.641628,2.435437,1.233252,     0.442166,2.435437,1.316296,
+       0.442166,2.435437,1.316296,     0.440403,2.463,1.311049,        0.63907,2.463,1.228335,
+       0.819847,2.463,1.11713, 0.823129,2.435437,1.121601,     0.641628,2.435437,1.233252,
+       0.641628,2.435437,1.233252,     0.63907,2.463,1.228335, 0.819847,2.463,1.11713,
+       0.980084,2.463,0.980084,        0.984007,2.435437,0.984007,     0.823129,2.435437,1.121601,
+       0.823129,2.435437,1.121601,     0.819847,2.463,1.11713, 0.980084,2.463,0.980084,
+       1.11713,2.463,0.819847, 1.121601,2.435437,0.823129,     0.984007,2.435437,0.984007,
+       0.984007,2.435437,0.984007,     0.980084,2.463,0.980084,        1.11713,2.463,0.819847,
+       1.228335,2.463,0.63907, 1.233252,2.435437,0.641628,     1.121601,2.435437,0.823129,
+       1.121601,2.435437,0.823129,     1.11713,2.463,0.819847, 1.228335,2.463,0.63907,
+       1.311049,2.463,0.440403,        1.316296,2.435437,0.442166,     1.233252,2.435437,0.641628,
+       1.233252,2.435437,0.641628,     1.228335,2.463,0.63907, 1.311049,2.463,0.440403,
+       1.36262,2.463,0.226496, 1.368074,2.435437,0.227403,     1.316296,2.435437,0.442166,
+       1.316296,2.435437,0.442166,     1.311049,2.463,0.440403,        1.36262,2.463,0.226496,
+       1.3804,2.463,0, 1.385925,2.435437,0,    1.368074,2.435437,0.227403,
+       1.368074,2.435437,0.227403,     1.36262,2.463,0.226496, 1.3804,2.463,0,
+       0.226795,2.482687,1.364422,     0.226496,2.463,1.36262, 0,2.463,1.3804,
+       0,2.463,1.3804, 0,2.482687,1.382225,    0.226795,2.482687,1.364422,
+       0.440985,2.482687,1.312782,     0.440403,2.463,1.311049,        0.226496,2.463,1.36262,
+       0.226496,2.463,1.36262, 0.226795,2.482687,1.364422,     0.440985,2.482687,1.312782,
+       0.639915,2.482687,1.229959,     0.63907,2.463,1.228335, 0.440403,2.463,1.311049,
+       0.440403,2.463,1.311049,        0.440985,2.482687,1.312782,     0.639915,2.482687,1.229959,
+       0.820931,2.482687,1.118607,     0.819847,2.463,1.11713, 0.63907,2.463,1.228335,
+       0.63907,2.463,1.228335, 0.639915,2.482687,1.229959,     0.820931,2.482687,1.118607,
+       0.98138,2.482687,0.98138,       0.980084,2.463,0.980084,        0.819847,2.463,1.11713,
+       0.819847,2.463,1.11713, 0.820931,2.482687,1.118607,     0.98138,2.482687,0.98138,
+       1.118607,2.482687,0.820931,     1.11713,2.463,0.819847, 0.980084,2.463,0.980084,
+       0.980084,2.463,0.980084,        0.98138,2.482687,0.98138,       1.118607,2.482687,0.820931,
+       1.229959,2.482687,0.639915,     1.228335,2.463,0.63907, 1.11713,2.463,0.819847,
+       1.11713,2.463,0.819847, 1.118607,2.482687,0.820931,     1.229959,2.482687,0.639915,
+       1.312782,2.482687,0.440985,     1.311049,2.463,0.440403,        1.228335,2.463,0.63907,
+       1.228335,2.463,0.63907, 1.229959,2.482687,0.639915,     1.312782,2.482687,0.440985,
+       1.364422,2.482687,0.226795,     1.36262,2.463,0.226496, 1.311049,2.463,0.440403,
+       1.311049,2.463,0.440403,        1.312782,2.482687,0.440985,     1.364422,2.482687,0.226795,
+       1.382225,2.482687,0,    1.3804,2.463,0, 1.36262,2.463,0.226496,
+       1.36262,2.463,0.226496, 1.364422,2.482687,0.226795,     1.382225,2.482687,0,
+       0.228104,2.4945,1.372294,       0.226795,2.482687,1.364422,     0,2.482687,1.382225,
+       0,2.482687,1.382225,    0,2.4945,1.3902,        0.228104,2.4945,1.372294,
+       0.443529,2.4945,1.320356,       0.440985,2.482687,1.312782,     0.226795,2.482687,1.364422,
+       0.226795,2.482687,1.364422,     0.228104,2.4945,1.372294,       0.443529,2.4945,1.320356,
+       0.643607,2.4945,1.237056,       0.639915,2.482687,1.229959,     0.440985,2.482687,1.312782,
+       0.440985,2.482687,1.312782,     0.443529,2.4945,1.320356,       0.643607,2.4945,1.237056,
+       0.825668,2.4945,1.125061,       0.820931,2.482687,1.118607,     0.639915,2.482687,1.229959,
+       0.639915,2.482687,1.229959,     0.643607,2.4945,1.237056,       0.825668,2.4945,1.125061,
+       0.987042,2.4945,0.987042,       0.98138,2.482687,0.98138,       0.820931,2.482687,1.118607,
+       0.820931,2.482687,1.118607,     0.825668,2.4945,1.125061,       0.987042,2.4945,0.987042,
+       1.125061,2.4945,0.825668,       1.118607,2.482687,0.820931,     0.98138,2.482687,0.98138,
+       0.98138,2.482687,0.98138,       0.987042,2.4945,0.987042,       1.125061,2.4945,0.825668,
+       1.237056,2.4945,0.643607,       1.229959,2.482687,0.639915,     1.118607,2.482687,0.820931,
+       1.118607,2.482687,0.820931,     1.125061,2.4945,0.825668,       1.237056,2.4945,0.643607,
+       1.320356,2.4945,0.443529,       1.312782,2.482687,0.440985,     1.229959,2.482687,0.639915,
+       1.229959,2.482687,0.639915,     1.237056,2.4945,0.643607,       1.320356,2.4945,0.443529,
+       1.372294,2.4945,0.228104,       1.364422,2.482687,0.226795,     1.312782,2.482687,0.440985,
+       1.312782,2.482687,0.440985,     1.320356,2.4945,0.443529,       1.372294,2.4945,0.228104,
+       1.3902,2.4945,0,        1.382225,2.482687,0,    1.364422,2.482687,0.226795,
+       1.364422,2.482687,0.226795,     1.372294,2.4945,0.228104,       1.3902,2.4945,0,
+       0.230225,2.498438,1.385053,     0.228104,2.4945,1.372294,       0,2.4945,1.3902,
+       0,2.4945,1.3902,        0,2.498438,1.403125,    0.230225,2.498438,1.385053,
+       0.447653,2.498438,1.332632,     0.443529,2.4945,1.320356,       0.228104,2.4945,1.372294,
+       0.228104,2.4945,1.372294,       0.230225,2.498438,1.385053,     0.447653,2.498438,1.332632,
+       0.649591,2.498438,1.248557,     0.643607,2.4945,1.237056,       0.443529,2.4945,1.320356,
+       0.443529,2.4945,1.320356,       0.447653,2.498438,1.332632,     0.649591,2.498438,1.248557,
+       0.833344,2.498438,1.135521,     0.825668,2.4945,1.125061,       0.643607,2.4945,1.237056,
+       0.643607,2.4945,1.237056,       0.649591,2.498438,1.248557,     0.833344,2.498438,1.135521,
+       0.996219,2.498438,0.996219,     0.987042,2.4945,0.987042,       0.825668,2.4945,1.125061,
+       0.825668,2.4945,1.125061,       0.833344,2.498438,1.135521,     0.996219,2.498438,0.996219,
+       1.135521,2.498438,0.833344,     1.125061,2.4945,0.825668,       0.987042,2.4945,0.987042,
+       0.987042,2.4945,0.987042,       0.996219,2.498438,0.996219,     1.135521,2.498438,0.833344,
+       1.248557,2.498438,0.649591,     1.237056,2.4945,0.643607,       1.125061,2.4945,0.825668,
+       1.125061,2.4945,0.825668,       1.135521,2.498438,0.833344,     1.248557,2.498438,0.649591,
+       1.332632,2.498438,0.447653,     1.320356,2.4945,0.443529,       1.237056,2.4945,0.643607,
+       1.237056,2.4945,0.643607,       1.248557,2.498438,0.649591,     1.332632,2.498438,0.447653,
+       1.385053,2.498438,0.230225,     1.372294,2.4945,0.228104,       1.320356,2.4945,0.443529,
+       1.320356,2.4945,0.443529,       1.332632,2.498438,0.447653,     1.385053,2.498438,0.230225,
+       1.403125,2.498438,0,    1.3902,2.4945,0,        1.372294,2.4945,0.228104,
+       1.372294,2.4945,0.228104,       1.385053,2.498438,0.230225,     1.403125,2.498438,0,
+       0.232961,2.4945,1.401513,       0.230225,2.498438,1.385053,     0,2.498438,1.403125,
+       0,2.498438,1.403125,    0,2.4945,1.4198,        0.232961,2.4945,1.401513,
+       0.452973,2.4945,1.348469,       0.447653,2.498438,1.332632,     0.230225,2.498438,1.385053,
+       0.230225,2.498438,1.385053,     0.232961,2.4945,1.401513,       0.452973,2.4945,1.348469,
+       0.657311,2.4945,1.263395,       0.649591,2.498438,1.248557,     0.447653,2.498438,1.332632,
+       0.447653,2.498438,1.332632,     0.452973,2.4945,1.348469,       0.657311,2.4945,1.263395,
+       0.843248,2.4945,1.149016,       0.833344,2.498438,1.135521,     0.649591,2.498438,1.248557,
+       0.649591,2.498438,1.248557,     0.657311,2.4945,1.263395,       0.843248,2.4945,1.149016,
+       1.008058,2.4945,1.008058,       0.996219,2.498438,0.996219,     0.833344,2.498438,1.135521,
+       0.833344,2.498438,1.135521,     0.843248,2.4945,1.149016,       1.008058,2.4945,1.008058,
+       1.149016,2.4945,0.843248,       1.135521,2.498438,0.833344,     0.996219,2.498438,0.996219,
+       0.996219,2.498438,0.996219,     1.008058,2.4945,1.008058,       1.149016,2.4945,0.843248,
+       1.263395,2.4945,0.657311,       1.248557,2.498438,0.649591,     1.135521,2.498438,0.833344,
+       1.135521,2.498438,0.833344,     1.149016,2.4945,0.843248,       1.263395,2.4945,0.657311,
+       1.348469,2.4945,0.452973,       1.332632,2.498438,0.447653,     1.248557,2.498438,0.649591,
+       1.248557,2.498438,0.649591,     1.263395,2.4945,0.657311,       1.348469,2.4945,0.452973,
+       1.401513,2.4945,0.232961,       1.385053,2.498438,0.230225,     1.332632,2.498438,0.447653,
+       1.332632,2.498438,0.447653,     1.348469,2.4945,0.452973,       1.401513,2.4945,0.232961,
+       1.4198,2.4945,0,        1.403125,2.498438,0,    1.385053,2.498438,0.230225,
+       1.385053,2.498438,0.230225,     1.401513,2.4945,0.232961,       1.4198,2.4945,0,
+       0.236115,2.482687,1.42049,      0.232961,2.4945,1.401513,       0,2.4945,1.4198,
+       0,2.4945,1.4198,        0,2.482687,1.439025,    0.236115,2.482687,1.42049,
+       0.459107,2.482687,1.366728,     0.452973,2.4945,1.348469,       0.232961,2.4945,1.401513,
+       0.232961,2.4945,1.401513,       0.236115,2.482687,1.42049,      0.459107,2.482687,1.366728,
+       0.666211,2.482687,1.280502,     0.657311,2.4945,1.263395,       0.452973,2.4945,1.348469,
+       0.452973,2.4945,1.348469,       0.459107,2.482687,1.366728,     0.666211,2.482687,1.280502,
+       0.854666,2.482687,1.164574,     0.843248,2.4945,1.149016,       0.657311,2.4945,1.263395,
+       0.657311,2.4945,1.263395,       0.666211,2.482687,1.280502,     0.854666,2.482687,1.164574,
+       1.021708,2.482687,1.021708,     1.008058,2.4945,1.008058,       0.843248,2.4945,1.149016,
+       0.843248,2.4945,1.149016,       0.854666,2.482687,1.164574,     1.021708,2.482687,1.021708,
+       1.164574,2.482687,0.854666,     1.149016,2.4945,0.843248,       1.008058,2.4945,1.008058,
+       1.008058,2.4945,1.008058,       1.021708,2.482687,1.021708,     1.164574,2.482687,0.854666,
+       1.280502,2.482687,0.666211,     1.263395,2.4945,0.657311,       1.149016,2.4945,0.843248,
+       1.149016,2.4945,0.843248,       1.164574,2.482687,0.854666,     1.280502,2.482687,0.666211,
+       1.366728,2.482687,0.459107,     1.348469,2.4945,0.452973,       1.263395,2.4945,0.657311,
+       1.263395,2.4945,0.657311,       1.280502,2.482687,0.666211,     1.366728,2.482687,0.459107,
+       1.42049,2.482687,0.236115,      1.401513,2.4945,0.232961,       1.348469,2.4945,0.452973,
+       1.348469,2.4945,0.452973,       1.366728,2.482687,0.459107,     1.42049,2.482687,0.236115,
+       1.439025,2.482687,0,    1.4198,2.4945,0,        1.401513,2.4945,0.232961,
+       1.401513,2.4945,0.232961,       1.42049,2.482687,0.236115,      1.439025,2.482687,0,
+       0.239491,2.463,1.4408,  0.236115,2.482687,1.42049,      0,2.482687,1.439025,
+       0,2.482687,1.439025,    0,2.463,1.4596, 0.239491,2.463,1.4408,
+       0.465671,2.463,1.38627, 0.459107,2.482687,1.366728,     0.236115,2.482687,1.42049,
+       0.236115,2.482687,1.42049,      0.239491,2.463,1.4408,  0.465671,2.463,1.38627,
+       0.675736,2.463,1.29881, 0.666211,2.482687,1.280502,     0.459107,2.482687,1.366728,
+       0.459107,2.482687,1.366728,     0.465671,2.463,1.38627, 0.675736,2.463,1.29881,
+       0.866886,2.463,1.181225,        0.854666,2.482687,1.164574,     0.666211,2.482687,1.280502,
+       0.666211,2.482687,1.280502,     0.675736,2.463,1.29881, 0.866886,2.463,1.181225,
+       1.036316,2.463,1.036316,        1.021708,2.482687,1.021708,     0.854666,2.482687,1.164574,
+       0.854666,2.482687,1.164574,     0.866886,2.463,1.181225,        1.036316,2.463,1.036316,
+       1.181225,2.463,0.866886,        1.164574,2.482687,0.854666,     1.021708,2.482687,1.021708,
+       1.021708,2.482687,1.021708,     1.036316,2.463,1.036316,        1.181225,2.463,0.866886,
+       1.29881,2.463,0.675736, 1.280502,2.482687,0.666211,     1.164574,2.482687,0.854666,
+       1.164574,2.482687,0.854666,     1.181225,2.463,0.866886,        1.29881,2.463,0.675736,
+       1.38627,2.463,0.465671, 1.366728,2.482687,0.459107,     1.280502,2.482687,0.666211,
+       1.280502,2.482687,0.666211,     1.29881,2.463,0.675736, 1.38627,2.463,0.465671,
+       1.4408,2.463,0.239491,  1.42049,2.482687,0.236115,      1.366728,2.482687,0.459107,
+       1.366728,2.482687,0.459107,     1.38627,2.463,0.465671, 1.4408,2.463,0.239491,
+       1.4596,2.463,0, 1.439025,2.482687,0,    1.42049,2.482687,0.236115,
+       1.42049,2.482687,0.236115,      1.4408,2.463,0.239491,  1.4596,2.463,0,
+       0.242892,2.435437,1.461258,     0.239491,2.463,1.4408,  0,2.463,1.4596,
+       0,2.463,1.4596, 0,2.435437,1.480325,    0.242892,2.435437,1.461258,
+       0.472283,2.435437,1.405953,     0.465671,2.463,1.38627, 0.239491,2.463,1.4408,
+       0.239491,2.463,1.4408,  0.242892,2.435437,1.461258,     0.472283,2.435437,1.405953,
+       0.685331,2.435437,1.317252,     0.675736,2.463,1.29881, 0.465671,2.463,1.38627,
+       0.465671,2.463,1.38627, 0.472283,2.435437,1.405953,     0.685331,2.435437,1.317252,
+       0.879195,2.435437,1.197997,     0.866886,2.463,1.181225,        0.675736,2.463,1.29881,
+       0.675736,2.463,1.29881, 0.685331,2.435437,1.317252,     0.879195,2.435437,1.197997,
+       1.051031,2.435437,1.051031,     1.036316,2.463,1.036316,        0.866886,2.463,1.181225,
+       0.866886,2.463,1.181225,        0.879195,2.435437,1.197997,     1.051031,2.435437,1.051031,
+       1.197997,2.435437,0.879195,     1.181225,2.463,0.866886,        1.036316,2.463,1.036316,
+       1.036316,2.463,1.036316,        1.051031,2.435437,1.051031,     1.197997,2.435437,0.879195,
+       1.317252,2.435437,0.685331,     1.29881,2.463,0.675736, 1.181225,2.463,0.866886,
+       1.181225,2.463,0.866886,        1.197997,2.435437,0.879195,     1.317252,2.435437,0.685331,
+       1.405953,2.435437,0.472283,     1.38627,2.463,0.465671, 1.29881,2.463,0.675736,
+       1.29881,2.463,0.675736, 1.317252,2.435437,0.685331,     1.405953,2.435437,0.472283,
+       1.461258,2.435437,0.242892,     1.4408,2.463,0.239491,  1.38627,2.463,0.465671,
+       1.38627,2.463,0.465671, 1.405953,2.435437,0.472283,     1.461258,2.435437,0.242892,
+       1.480325,2.435437,0,    1.4596,2.463,0, 1.4408,2.463,0.239491,
+       1.4408,2.463,0.239491,  1.461258,2.435437,0.242892,     1.480325,2.435437,0,
+       0.24612,2.4,1.48068,    0.242892,2.435437,1.461258,     0,2.435437,1.480325,
+       0,2.435437,1.480325,    0,2.4,1.5,      0.24612,2.4,1.48068,
+       0.47856,2.4,1.42464,    0.472283,2.435437,1.405953,     0.242892,2.435437,1.461258,
+       0.242892,2.435437,1.461258,     0.24612,2.4,1.48068,    0.47856,2.4,1.42464,
+       0.69444,2.4,1.33476,    0.685331,2.435437,1.317252,     0.472283,2.435437,1.405953,
+       0.472283,2.435437,1.405953,     0.47856,2.4,1.42464,    0.69444,2.4,1.33476,
+       0.89088,2.4,1.21392,    0.879195,2.435437,1.197997,     0.685331,2.435437,1.317252,
+       0.685331,2.435437,1.317252,     0.69444,2.4,1.33476,    0.89088,2.4,1.21392,
+       1.065,2.4,1.065,        1.051031,2.435437,1.051031,     0.879195,2.435437,1.197997,
+       0.879195,2.435437,1.197997,     0.89088,2.4,1.21392,    1.065,2.4,1.065,
+       1.21392,2.4,0.89088,    1.197997,2.435437,0.879195,     1.051031,2.435437,1.051031,
+       1.051031,2.435437,1.051031,     1.065,2.4,1.065,        1.21392,2.4,0.89088,
+       1.33476,2.4,0.69444,    1.317252,2.435437,0.685331,     1.197997,2.435437,0.879195,
+       1.197997,2.435437,0.879195,     1.21392,2.4,0.89088,    1.33476,2.4,0.69444,
+       1.42464,2.4,0.47856,    1.405953,2.435437,0.472283,     1.317252,2.435437,0.685331,
+       1.317252,2.435437,0.685331,     1.33476,2.4,0.69444,    1.42464,2.4,0.47856,
+       1.48068,2.4,0.24612,    1.461258,2.435437,0.242892,     1.405953,2.435437,0.472283,
+       1.405953,2.435437,0.472283,     1.42464,2.4,0.47856,    1.48068,2.4,0.24612,
+       1.5,2.4,0,      1.480325,2.435437,0,    1.461258,2.435437,0.242892,
+       1.461258,2.435437,0.242892,     1.48068,2.4,0.24612,    1.5,2.4,0,
+       1.554467,2.242575,-0.258385,    1.48068,2.4,-0.24612,   1.5,2.4,0,
+       1.5,2.4,0,      1.57475,2.242575,0,     1.554467,2.242575,-0.258385,
+       1.495635,2.242575,-0.502408,    1.42464,2.4,-0.47856,   1.48068,2.4,-0.24612,
+       1.48068,2.4,-0.24612,   1.554467,2.242575,-0.258385,    1.495635,2.242575,-0.502408,
+       1.401276,2.242575,-0.729046,    1.33476,2.4,-0.69444,   1.42464,2.4,-0.47856,
+       1.42464,2.4,-0.47856,   1.495635,2.242575,-0.502408,    1.401276,2.242575,-0.729046,
+       1.274414,2.242575,-0.935276,    1.21392,2.4,-0.89088,   1.33476,2.4,-0.69444,
+       1.33476,2.4,-0.69444,   1.401276,2.242575,-0.729046,    1.274414,2.242575,-0.935276,
+       1.118073,2.242575,-1.118073,    1.065,2.4,-1.065,       1.21392,2.4,-0.89088,
+       1.21392,2.4,-0.89088,   1.274414,2.242575,-0.935276,    1.118073,2.242575,-1.118073,
+       0.935276,2.242575,-1.274414,    0.89088,2.4,-1.21392,   1.065,2.4,-1.065,
+       1.065,2.4,-1.065,       1.118073,2.242575,-1.118073,    0.935276,2.242575,-1.274414,
+       0.729046,2.242575,-1.401276,    0.69444,2.4,-1.33476,   0.89088,2.4,-1.21392,
+       0.89088,2.4,-1.21392,   0.935276,2.242575,-1.274414,    0.729046,2.242575,-1.401276,
+       0.502408,2.242575,-1.495635,    0.47856,2.4,-1.42464,   0.69444,2.4,-1.33476,
+       0.69444,2.4,-1.33476,   0.729046,2.242575,-1.401276,    0.502408,2.242575,-1.495635,
+       0.258385,2.242575,-1.554467,    0.24612,2.4,-1.48068,   0.47856,2.4,-1.42464,
+       0.47856,2.4,-1.42464,   0.502408,2.242575,-1.495635,    0.258385,2.242575,-1.554467,
+       0,2.242575,-1.57475,    0,2.4,-1.5,     0.24612,2.4,-1.48068,
+       0.24612,2.4,-1.48068,   0.258385,2.242575,-1.554467,    0,2.242575,-1.57475,
+       1.626774,2.0856,-0.270404,      1.554467,2.242575,-0.258385,    1.57475,2.242575,0,
+       1.57475,2.242575,0,     1.648,2.0856,0, 1.626774,2.0856,-0.270404,
+       1.565204,2.0856,-0.525778,      1.495635,2.242575,-0.502408,    1.554467,2.242575,-0.258385,
+       1.554467,2.242575,-0.258385,    1.626774,2.0856,-0.270404,      1.565204,2.0856,-0.525778,
+       1.466456,2.0856,-0.762958,      1.401276,2.242575,-0.729046,    1.495635,2.242575,-0.502408,
+       1.495635,2.242575,-0.502408,    1.565204,2.0856,-0.525778,      1.466456,2.0856,-0.762958,
+       1.333693,2.0856,-0.97878,       1.274414,2.242575,-0.935276,    1.401276,2.242575,-0.729046,
+       1.401276,2.242575,-0.729046,    1.466456,2.0856,-0.762958,      1.333693,2.0856,-0.97878,
+       1.17008,2.0856,-1.17008,        1.118073,2.242575,-1.118073,    1.274414,2.242575,-0.935276,
+       1.274414,2.242575,-0.935276,    1.333693,2.0856,-0.97878,       1.17008,2.0856,-1.17008,
+       0.97878,2.0856,-1.333693,       0.935276,2.242575,-1.274414,    1.118073,2.242575,-1.118073,
+       1.118073,2.242575,-1.118073,    1.17008,2.0856,-1.17008,        0.97878,2.0856,-1.333693,
+       0.762958,2.0856,-1.466456,      0.729046,2.242575,-1.401276,    0.935276,2.242575,-1.274414,
+       0.935276,2.242575,-1.274414,    0.97878,2.0856,-1.333693,       0.762958,2.0856,-1.466456,
+       0.525778,2.0856,-1.565204,      0.502408,2.242575,-1.495635,    0.729046,2.242575,-1.401276,
+       0.729046,2.242575,-1.401276,    0.762958,2.0856,-1.466456,      0.525778,2.0856,-1.565204,
+       0.270404,2.0856,-1.626774,      0.258385,2.242575,-1.554467,    0.502408,2.242575,-1.495635,
+       0.502408,2.242575,-1.495635,    0.525778,2.0856,-1.565204,      0.270404,2.0856,-1.626774,
+       0,2.0856,-1.648,        0,2.242575,-1.57475,    0.258385,2.242575,-1.554467,
+       0.258385,2.242575,-1.554467,    0.270404,2.0856,-1.626774,      0,2.0856,-1.648,
+       1.696119,1.929525,-0.28193,     1.626774,2.0856,-0.270404,      1.648,2.0856,0,
+       1.648,2.0856,0, 1.71825,1.929525,0,     1.696119,1.929525,-0.28193,
+       1.631925,1.929525,-0.54819,     1.565204,2.0856,-0.525778,      1.626774,2.0856,-0.270404,
+       1.626774,2.0856,-0.270404,      1.696119,1.929525,-0.28193,     1.631925,1.929525,-0.54819,
+       1.528968,1.929525,-0.795481,    1.466456,2.0856,-0.762958,      1.565204,2.0856,-0.525778,
+       1.565204,2.0856,-0.525778,      1.631925,1.929525,-0.54819,     1.528968,1.929525,-0.795481,
+       1.390545,1.929525,-1.020503,    1.333693,2.0856,-0.97878,       1.466456,2.0856,-0.762958,
+       1.466456,2.0856,-0.762958,      1.528968,1.929525,-0.795481,    1.390545,1.929525,-1.020503,
+       1.219958,1.929525,-1.219958,    1.17008,2.0856,-1.17008,        1.333693,2.0856,-0.97878,
+       1.333693,2.0856,-0.97878,       1.390545,1.929525,-1.020503,    1.219958,1.929525,-1.219958,
+       1.020503,1.929525,-1.390545,    0.97878,2.0856,-1.333693,       1.17008,2.0856,-1.17008,
+       1.17008,2.0856,-1.17008,        1.219958,1.929525,-1.219958,    1.020503,1.929525,-1.390545,
+       0.795481,1.929525,-1.528968,    0.762958,2.0856,-1.466456,      0.97878,2.0856,-1.333693,
+       0.97878,2.0856,-1.333693,       1.020503,1.929525,-1.390545,    0.795481,1.929525,-1.528968,
+       0.54819,1.929525,-1.631925,     0.525778,2.0856,-1.565204,      0.762958,2.0856,-1.466456,
+       0.762958,2.0856,-1.466456,      0.795481,1.929525,-1.528968,    0.54819,1.929525,-1.631925,
+       0.28193,1.929525,-1.696119,     0.270404,2.0856,-1.626774,      0.525778,2.0856,-1.565204,
+       0.525778,2.0856,-1.565204,      0.54819,1.929525,-1.631925,     0.28193,1.929525,-1.696119,
+       0,1.929525,-1.71825,    0,2.0856,-1.648,        0.270404,2.0856,-1.626774,
+       0.270404,2.0856,-1.626774,      0.28193,1.929525,-1.696119,     0,1.929525,-1.71825,
+       1.761022,1.7748,-0.292719,      1.696119,1.929525,-0.28193,     1.71825,1.929525,0,
+       1.71825,1.929525,0,     1.784,1.7748,0, 1.761022,1.7748,-0.292719,
+       1.694372,1.7748,-0.569167,      1.631925,1.929525,-0.54819,     1.696119,1.929525,-0.28193,
+       1.696119,1.929525,-0.28193,     1.761022,1.7748,-0.292719,      1.694372,1.7748,-0.569167,
+       1.587475,1.7748,-0.825921,      1.528968,1.929525,-0.795481,    1.631925,1.929525,-0.54819,
+       1.631925,1.929525,-0.54819,     1.694372,1.7748,-0.569167,      1.587475,1.7748,-0.825921,
+       1.443756,1.7748,-1.059553,      1.390545,1.929525,-1.020503,    1.528968,1.929525,-0.795481,
+       1.528968,1.929525,-0.795481,    1.587475,1.7748,-0.825921,      1.443756,1.7748,-1.059553,
+       1.26664,1.7748,-1.26664,        1.219958,1.929525,-1.219958,    1.390545,1.929525,-1.020503,
+       1.390545,1.929525,-1.020503,    1.443756,1.7748,-1.059553,      1.26664,1.7748,-1.26664,
+       1.059553,1.7748,-1.443756,      1.020503,1.929525,-1.390545,    1.219958,1.929525,-1.219958,
+       1.219958,1.929525,-1.219958,    1.26664,1.7748,-1.26664,        1.059553,1.7748,-1.443756,
+       0.825921,1.7748,-1.587475,      0.795481,1.929525,-1.528968,    1.020503,1.929525,-1.390545,
+       1.020503,1.929525,-1.390545,    1.059553,1.7748,-1.443756,      0.825921,1.7748,-1.587475,
+       0.569167,1.7748,-1.694372,      0.54819,1.929525,-1.631925,     0.795481,1.929525,-1.528968,
+       0.795481,1.929525,-1.528968,    0.825921,1.7748,-1.587475,      0.569167,1.7748,-1.694372,
+       0.292719,1.7748,-1.761022,      0.28193,1.929525,-1.696119,     0.54819,1.929525,-1.631925,
+       0.54819,1.929525,-1.631925,     0.569167,1.7748,-1.694372,      0.292719,1.7748,-1.761022,
+       0,1.7748,-1.784,        0,1.929525,-1.71825,    0.28193,1.929525,-1.696119,
+       0.28193,1.929525,-1.696119,     0.292719,1.7748,-1.761022,      0,1.7748,-1.784,
+       1.820003,1.621875,-0.302523,    1.761022,1.7748,-0.292719,      1.784,1.7748,0,
+       1.784,1.7748,0, 1.84375,1.621875,0,     1.820003,1.621875,-0.302523,
+       1.75112,1.621875,-0.58823,      1.694372,1.7748,-0.569167,      1.761022,1.7748,-0.292719,
+       1.761022,1.7748,-0.292719,      1.820003,1.621875,-0.302523,    1.75112,1.621875,-0.58823,
+       1.640643,1.621875,-0.853583,    1.587475,1.7748,-0.825921,      1.694372,1.7748,-0.569167,
+       1.694372,1.7748,-0.569167,      1.75112,1.621875,-0.58823,      1.640643,1.621875,-0.853583,
+       1.49211,1.621875,-1.09504,      1.443756,1.7748,-1.059553,      1.587475,1.7748,-0.825921,
+       1.587475,1.7748,-0.825921,      1.640643,1.621875,-0.853583,    1.49211,1.621875,-1.09504,
+       1.309063,1.621875,-1.309063,    1.26664,1.7748,-1.26664,        1.443756,1.7748,-1.059553,
+       1.443756,1.7748,-1.059553,      1.49211,1.621875,-1.09504,      1.309063,1.621875,-1.309063,
+       1.09504,1.621875,-1.49211,      1.059553,1.7748,-1.443756,      1.26664,1.7748,-1.26664,
+       1.26664,1.7748,-1.26664,        1.309063,1.621875,-1.309063,    1.09504,1.621875,-1.49211,
+       0.853583,1.621875,-1.640643,    0.825921,1.7748,-1.587475,      1.059553,1.7748,-1.443756,
+       1.059553,1.7748,-1.443756,      1.09504,1.621875,-1.49211,      0.853583,1.621875,-1.640643,
+       0.58823,1.621875,-1.75112,      0.569167,1.7748,-1.694372,      0.825921,1.7748,-1.587475,
+       0.825921,1.7748,-1.587475,      0.853583,1.621875,-1.640643,    0.58823,1.621875,-1.75112,
+       0.302522,1.621875,-1.820003,    0.292719,1.7748,-1.761022,      0.569167,1.7748,-1.694372,
+       0.569167,1.7748,-1.694372,      0.58823,1.621875,-1.75112,      0.302522,1.621875,-1.820003,
+       0,1.621875,-1.84375,    0,1.7748,-1.784,        0.292719,1.7748,-1.761022,
+       0.292719,1.7748,-1.761022,      0.302522,1.621875,-1.820003,    0,1.621875,-1.84375,
+       1.87158,1.4712,-0.311096,       1.820003,1.621875,-0.302523,    1.84375,1.621875,0,
+       1.84375,1.621875,0,     1.896,1.4712,0, 1.87158,1.4712,-0.311096,
+       1.800745,1.4712,-0.6049,        1.75112,1.621875,-0.58823,      1.820003,1.621875,-0.302523,
+       1.820003,1.621875,-0.302523,    1.87158,1.4712,-0.311096,       1.800745,1.4712,-0.6049,
+       1.687137,1.4712,-0.877772,      1.640643,1.621875,-0.853583,    1.75112,1.621875,-0.58823,
+       1.75112,1.621875,-0.58823,      1.800745,1.4712,-0.6049,        1.687137,1.4712,-0.877772,
+       1.534395,1.4712,-1.126072,      1.49211,1.621875,-1.09504,      1.640643,1.621875,-0.853583,
+       1.640643,1.621875,-0.853583,    1.687137,1.4712,-0.877772,      1.534395,1.4712,-1.126072,
+       1.34616,1.4712,-1.34616,        1.309063,1.621875,-1.309063,    1.49211,1.621875,-1.09504,
+       1.49211,1.621875,-1.09504,      1.534395,1.4712,-1.126072,      1.34616,1.4712,-1.34616,
+       1.126072,1.4712,-1.534395,      1.09504,1.621875,-1.49211,      1.309063,1.621875,-1.309063,
+       1.309063,1.621875,-1.309063,    1.34616,1.4712,-1.34616,        1.126072,1.4712,-1.534395,
+       0.877772,1.4712,-1.687137,      0.853583,1.621875,-1.640643,    1.09504,1.621875,-1.49211,
+       1.09504,1.621875,-1.49211,      1.126072,1.4712,-1.534395,      0.877772,1.4712,-1.687137,
+       0.6049,1.4712,-1.800745,        0.58823,1.621875,-1.75112,      0.853583,1.621875,-1.640643,
+       0.853583,1.621875,-1.640643,    0.877772,1.4712,-1.687137,      0.6049,1.4712,-1.800745,
+       0.311096,1.4712,-1.87158,       0.302522,1.621875,-1.820003,    0.58823,1.621875,-1.75112,
+       0.58823,1.621875,-1.75112,      0.6049,1.4712,-1.800745,        0.311096,1.4712,-1.87158,
+       0,1.4712,-1.896,        0,1.621875,-1.84375,    0.302522,1.621875,-1.820003,
+       0.302522,1.621875,-1.820003,    0.311096,1.4712,-1.87158,       0,1.4712,-1.896,
+       1.914272,1.323225,-0.318192,    1.87158,1.4712,-0.311096,       1.896,1.4712,0,
+       1.896,1.4712,0, 1.93925,1.323225,0,     1.914272,1.323225,-0.318192,
+       1.841822,1.323225,-0.618698,    1.800745,1.4712,-0.6049,        1.87158,1.4712,-0.311096,
+       1.87158,1.4712,-0.311096,       1.914272,1.323225,-0.318192,    1.841822,1.323225,-0.618698,
+       1.725622,1.323225,-0.897795,    1.687137,1.4712,-0.877772,      1.800745,1.4712,-0.6049,
+       1.800745,1.4712,-0.6049,        1.841822,1.323225,-0.618698,    1.725622,1.323225,-0.897795,
+       1.569396,1.323225,-1.151759,    1.534395,1.4712,-1.126072,      1.687137,1.4712,-0.877772,
+       1.687137,1.4712,-0.877772,      1.725622,1.323225,-0.897795,    1.569396,1.323225,-1.151759,
+       1.376867,1.323225,-1.376868,    1.34616,1.4712,-1.34616,        1.534395,1.4712,-1.126072,
+       1.534395,1.4712,-1.126072,      1.569396,1.323225,-1.151759,    1.376867,1.323225,-1.376868,
+       1.151759,1.323225,-1.569396,    1.126072,1.4712,-1.534395,      1.34616,1.4712,-1.34616,
+       1.34616,1.4712,-1.34616,        1.376867,1.323225,-1.376868,    1.151759,1.323225,-1.569396,
+       0.897795,1.323225,-1.725622,    0.877772,1.4712,-1.687137,      1.126072,1.4712,-1.534395,
+       1.126072,1.4712,-1.534395,      1.151759,1.323225,-1.569396,    0.897795,1.323225,-1.725622,
+       0.618698,1.323225,-1.841822,    0.6049,1.4712,-1.800745,        0.877772,1.4712,-1.687137,
+       0.877772,1.4712,-1.687137,      0.897795,1.323225,-1.725622,    0.618698,1.323225,-1.841822,
+       0.318192,1.323225,-1.914272,    0.311096,1.4712,-1.87158,       0.6049,1.4712,-1.800745,
+       0.6049,1.4712,-1.800745,        0.618698,1.323225,-1.841822,    0.318192,1.323225,-1.914272,
+       0,1.323225,-1.93925,    0,1.4712,-1.896,        0.311096,1.4712,-1.87158,
+       0.311096,1.4712,-1.87158,       0.318192,1.323225,-1.914272,    0,1.323225,-1.93925,
+       1.946601,1.1784,-0.323566,      1.914272,1.323225,-0.318192,    1.93925,1.323225,0,
+       1.93925,1.323225,0,     1.972,1.1784,0, 1.946601,1.1784,-0.323566,
+       1.872927,1.1784,-0.629147,      1.841822,1.323225,-0.618698,    1.914272,1.323225,-0.318192,
+       1.914272,1.323225,-0.318192,    1.946601,1.1784,-0.323566,      1.872927,1.1784,-0.629147,
+       1.754764,1.1784,-0.912957,      1.725622,1.323225,-0.897795,    1.841822,1.323225,-0.618698,
+       1.841822,1.323225,-0.618698,    1.872927,1.1784,-0.629147,      1.754764,1.1784,-0.912957,
+       1.5959,1.1784,-1.17121, 1.569396,1.323225,-1.151759,    1.725622,1.323225,-0.897795,
+       1.725622,1.323225,-0.897795,    1.754764,1.1784,-0.912957,      1.5959,1.1784,-1.17121,
+       1.40012,1.1784,-1.40012,        1.376867,1.323225,-1.376868,    1.569396,1.323225,-1.151759,
+       1.569396,1.323225,-1.151759,    1.5959,1.1784,-1.17121, 1.40012,1.1784,-1.40012,
+       1.17121,1.1784,-1.5959, 1.151759,1.323225,-1.569396,    1.376867,1.323225,-1.376868,
+       1.376867,1.323225,-1.376868,    1.40012,1.1784,-1.40012,        1.17121,1.1784,-1.5959,
+       0.912957,1.1784,-1.754764,      0.897795,1.323225,-1.725622,    1.151759,1.323225,-1.569396,
+       1.151759,1.323225,-1.569396,    1.17121,1.1784,-1.5959, 0.912957,1.1784,-1.754764,
+       0.629147,1.1784,-1.872927,      0.618698,1.323225,-1.841822,    0.897795,1.323225,-1.725622,
+       0.897795,1.323225,-1.725622,    0.912957,1.1784,-1.754764,      0.629147,1.1784,-1.872927,
+       0.323566,1.1784,-1.946601,      0.318192,1.323225,-1.914272,    0.618698,1.323225,-1.841822,
+       0.618698,1.323225,-1.841822,    0.629147,1.1784,-1.872927,      0.323566,1.1784,-1.946601,
+       0,1.1784,-1.972,        0,1.323225,-1.93925,    0.318192,1.323225,-1.914272,
+       0.318192,1.323225,-1.914272,    0.323566,1.1784,-1.946601,      0,1.1784,-1.972,
+       1.967083,1.037175,-0.32697,     1.946601,1.1784,-0.323566,      1.972,1.1784,0,
+       1.972,1.1784,0, 1.99275,1.037175,0,     1.967083,1.037175,-0.32697,
+       1.892634,1.037175,-0.635767,    1.872927,1.1784,-0.629147,      1.946601,1.1784,-0.323566,
+       1.946601,1.1784,-0.323566,      1.967083,1.037175,-0.32697,     1.892634,1.037175,-0.635767,
+       1.773229,1.037175,-0.922564,    1.754764,1.1784,-0.912957,      1.872927,1.1784,-0.629147,
+       1.872927,1.1784,-0.629147,      1.892634,1.037175,-0.635767,    1.773229,1.037175,-0.922564,
+       1.612693,1.037175,-1.183534,    1.5959,1.1784,-1.17121, 1.754764,1.1784,-0.912957,
+       1.754764,1.1784,-0.912957,      1.773229,1.037175,-0.922564,    1.612693,1.037175,-1.183534,
+       1.414853,1.037175,-1.414853,    1.40012,1.1784,-1.40012,        1.5959,1.1784,-1.17121,
+       1.5959,1.1784,-1.17121, 1.612693,1.037175,-1.183534,    1.414853,1.037175,-1.414853,
+       1.183534,1.037175,-1.612693,    1.17121,1.1784,-1.5959, 1.40012,1.1784,-1.40012,
+       1.40012,1.1784,-1.40012,        1.414853,1.037175,-1.414853,    1.183534,1.037175,-1.612693,
+       0.922564,1.037175,-1.773229,    0.912957,1.1784,-1.754764,      1.17121,1.1784,-1.5959,
+       1.17121,1.1784,-1.5959, 1.183534,1.037175,-1.612693,    0.922564,1.037175,-1.773229,
+       0.635767,1.037175,-1.892634,    0.629147,1.1784,-1.872927,      0.912957,1.1784,-1.754764,
+       0.912957,1.1784,-1.754764,      0.922564,1.037175,-1.773229,    0.635767,1.037175,-1.892634,
+       0.32697,1.037175,-1.967083,     0.323566,1.1784,-1.946601,      0.629147,1.1784,-1.872927,
+       0.629147,1.1784,-1.872927,      0.635767,1.037175,-1.892634,    0.32697,1.037175,-1.967083,
+       0,1.037175,-1.99275,    0,1.1784,-1.972,        0.323566,1.1784,-1.946601,
+       0.323566,1.1784,-1.946601,      0.32697,1.037175,-1.967083,     0,1.037175,-1.99275,
+       1.97424,0.9,-0.32816,   1.967083,1.037175,-0.32697,     1.99275,1.037175,0,
+       1.99275,1.037175,0,     2,0.9,0,        1.97424,0.9,-0.32816,
+       1.89952,0.9,-0.63808,   1.892634,1.037175,-0.635767,    1.967083,1.037175,-0.32697,
+       1.967083,1.037175,-0.32697,     1.97424,0.9,-0.32816,   1.89952,0.9,-0.63808,
+       1.77968,0.9,-0.92592,   1.773229,1.037175,-0.922564,    1.892634,1.037175,-0.635767,
+       1.892634,1.037175,-0.635767,    1.89952,0.9,-0.63808,   1.77968,0.9,-0.92592,
+       1.61856,0.9,-1.18784,   1.612693,1.037175,-1.183534,    1.773229,1.037175,-0.922564,
+       1.773229,1.037175,-0.922564,    1.77968,0.9,-0.92592,   1.61856,0.9,-1.18784,
+       1.42,0.9,-1.42, 1.414853,1.037175,-1.414853,    1.612693,1.037175,-1.183534,
+       1.612693,1.037175,-1.183534,    1.61856,0.9,-1.18784,   1.42,0.9,-1.42,
+       1.18784,0.9,-1.61856,   1.183534,1.037175,-1.612693,    1.414853,1.037175,-1.414853,
+       1.414853,1.037175,-1.414853,    1.42,0.9,-1.42, 1.18784,0.9,-1.61856,
+       0.92592,0.9,-1.77968,   0.922564,1.037175,-1.773229,    1.183534,1.037175,-1.612693,
+       1.183534,1.037175,-1.612693,    1.18784,0.9,-1.61856,   0.92592,0.9,-1.77968,
+       0.63808,0.9,-1.89952,   0.635767,1.037175,-1.892634,    0.922564,1.037175,-1.773229,
+       0.922564,1.037175,-1.773229,    0.92592,0.9,-1.77968,   0.63808,0.9,-1.89952,
+       0.32816,0.9,-1.97424,   0.32697,1.037175,-1.967083,     0.635767,1.037175,-1.892634,
+       0.635767,1.037175,-1.892634,    0.63808,0.9,-1.89952,   0.32816,0.9,-1.97424,
+       0,0.9,-2,       0,1.037175,-1.99275,    0.32697,1.037175,-1.967083,
+       0.32697,1.037175,-1.967083,     0.32816,0.9,-1.97424,   0,0.9,-2,
+       -0.258385,2.242575,-1.554467,   -0.24612,2.4,-1.48068,  0,2.4,-1.5,
+       0,2.4,-1.5,     0,2.242575,-1.57475,    -0.258385,2.242575,-1.554467,
+       -0.502408,2.242575,-1.495635,   -0.47856,2.4,-1.42464,  -0.24612,2.4,-1.48068,
+       -0.24612,2.4,-1.48068,  -0.258385,2.242575,-1.554467,   -0.502408,2.242575,-1.495635,
+       -0.729046,2.242575,-1.401276,   -0.69444,2.4,-1.33476,  -0.47856,2.4,-1.42464,
+       -0.47856,2.4,-1.42464,  -0.502408,2.242575,-1.495635,   -0.729046,2.242575,-1.401276,
+       -0.935276,2.242575,-1.274414,   -0.89088,2.4,-1.21392,  -0.69444,2.4,-1.33476,
+       -0.69444,2.4,-1.33476,  -0.729046,2.242575,-1.401276,   -0.935276,2.242575,-1.274414,
+       -1.118073,2.242575,-1.118073,   -1.065,2.4,-1.065,      -0.89088,2.4,-1.21392,
+       -0.89088,2.4,-1.21392,  -0.935276,2.242575,-1.274414,   -1.118073,2.242575,-1.118073,
+       -1.274414,2.242575,-0.935276,   -1.21392,2.4,-0.89088,  -1.065,2.4,-1.065,
+       -1.065,2.4,-1.065,      -1.118073,2.242575,-1.118073,   -1.274414,2.242575,-0.935276,
+       -1.401276,2.242575,-0.729046,   -1.33476,2.4,-0.69444,  -1.21392,2.4,-0.89088,
+       -1.21392,2.4,-0.89088,  -1.274414,2.242575,-0.935276,   -1.401276,2.242575,-0.729046,
+       -1.495635,2.242575,-0.502408,   -1.42464,2.4,-0.47856,  -1.33476,2.4,-0.69444,
+       -1.33476,2.4,-0.69444,  -1.401276,2.242575,-0.729046,   -1.495635,2.242575,-0.502408,
+       -1.554467,2.242575,-0.258385,   -1.48068,2.4,-0.24612,  -1.42464,2.4,-0.47856,
+       -1.42464,2.4,-0.47856,  -1.495635,2.242575,-0.502408,   -1.554467,2.242575,-0.258385,
+       -1.57475,2.242575,0,    -1.5,2.4,0,     -1.48068,2.4,-0.24612,
+       -1.48068,2.4,-0.24612,  -1.554467,2.242575,-0.258385,   -1.57475,2.242575,0,
+       -0.270404,2.0856,-1.626774,     -0.258385,2.242575,-1.554467,   0,2.242575,-1.57475,
+       0,2.242575,-1.57475,    0,2.0856,-1.648,        -0.270404,2.0856,-1.626774,
+       -0.525778,2.0856,-1.565204,     -0.502408,2.242575,-1.495635,   -0.258385,2.242575,-1.554467,
+       -0.258385,2.242575,-1.554467,   -0.270404,2.0856,-1.626774,     -0.525778,2.0856,-1.565204,
+       -0.762958,2.0856,-1.466456,     -0.729046,2.242575,-1.401276,   -0.502408,2.242575,-1.495635,
+       -0.502408,2.242575,-1.495635,   -0.525778,2.0856,-1.565204,     -0.762958,2.0856,-1.466456,
+       -0.97878,2.0856,-1.333693,      -0.935276,2.242575,-1.274414,   -0.729046,2.242575,-1.401276,
+       -0.729046,2.242575,-1.401276,   -0.762958,2.0856,-1.466456,     -0.97878,2.0856,-1.333693,
+       -1.17008,2.0856,-1.17008,       -1.118073,2.242575,-1.118073,   -0.935276,2.242575,-1.274414,
+       -0.935276,2.242575,-1.274414,   -0.97878,2.0856,-1.333693,      -1.17008,2.0856,-1.17008,
+       -1.333693,2.0856,-0.97878,      -1.274414,2.242575,-0.935276,   -1.118073,2.242575,-1.118073,
+       -1.118073,2.242575,-1.118073,   -1.17008,2.0856,-1.17008,       -1.333693,2.0856,-0.97878,
+       -1.466456,2.0856,-0.762958,     -1.401276,2.242575,-0.729046,   -1.274414,2.242575,-0.935276,
+       -1.274414,2.242575,-0.935276,   -1.333693,2.0856,-0.97878,      -1.466456,2.0856,-0.762958,
+       -1.565204,2.0856,-0.525778,     -1.495635,2.242575,-0.502408,   -1.401276,2.242575,-0.729046,
+       -1.401276,2.242575,-0.729046,   -1.466456,2.0856,-0.762958,     -1.565204,2.0856,-0.525778,
+       -1.626774,2.0856,-0.270404,     -1.554467,2.242575,-0.258385,   -1.495635,2.242575,-0.502408,
+       -1.495635,2.242575,-0.502408,   -1.565204,2.0856,-0.525778,     -1.626774,2.0856,-0.270404,
+       -1.648,2.0856,0,        -1.57475,2.242575,0,    -1.554467,2.242575,-0.258385,
+       -1.554467,2.242575,-0.258385,   -1.626774,2.0856,-0.270404,     -1.648,2.0856,0,
+       -0.28193,1.929525,-1.696119,    -0.270404,2.0856,-1.626774,     0,2.0856,-1.648,
+       0,2.0856,-1.648,        0,1.929525,-1.71825,    -0.28193,1.929525,-1.696119,
+       -0.54819,1.929525,-1.631925,    -0.525778,2.0856,-1.565204,     -0.270404,2.0856,-1.626774,
+       -0.270404,2.0856,-1.626774,     -0.28193,1.929525,-1.696119,    -0.54819,1.929525,-1.631925,
+       -0.795481,1.929525,-1.528968,   -0.762958,2.0856,-1.466456,     -0.525778,2.0856,-1.565204,
+       -0.525778,2.0856,-1.565204,     -0.54819,1.929525,-1.631925,    -0.795481,1.929525,-1.528968,
+       -1.020503,1.929525,-1.390545,   -0.97878,2.0856,-1.333693,      -0.762958,2.0856,-1.466456,
+       -0.762958,2.0856,-1.466456,     -0.795481,1.929525,-1.528968,   -1.020503,1.929525,-1.390545,
+       -1.219958,1.929525,-1.219958,   -1.17008,2.0856,-1.17008,       -0.97878,2.0856,-1.333693,
+       -0.97878,2.0856,-1.333693,      -1.020503,1.929525,-1.390545,   -1.219958,1.929525,-1.219958,
+       -1.390545,1.929525,-1.020503,   -1.333693,2.0856,-0.97878,      -1.17008,2.0856,-1.17008,
+       -1.17008,2.0856,-1.17008,       -1.219958,1.929525,-1.219958,   -1.390545,1.929525,-1.020503,
+       -1.528968,1.929525,-0.795481,   -1.466456,2.0856,-0.762958,     -1.333693,2.0856,-0.97878,
+       -1.333693,2.0856,-0.97878,      -1.390545,1.929525,-1.020503,   -1.528968,1.929525,-0.795481,
+       -1.631925,1.929525,-0.54819,    -1.565204,2.0856,-0.525778,     -1.466456,2.0856,-0.762958,
+       -1.466456,2.0856,-0.762958,     -1.528968,1.929525,-0.795481,   -1.631925,1.929525,-0.54819,
+       -1.696119,1.929525,-0.28193,    -1.626774,2.0856,-0.270404,     -1.565204,2.0856,-0.525778,
+       -1.565204,2.0856,-0.525778,     -1.631925,1.929525,-0.54819,    -1.696119,1.929525,-0.28193,
+       -1.71825,1.929525,0,    -1.648,2.0856,0,        -1.626774,2.0856,-0.270404,
+       -1.626774,2.0856,-0.270404,     -1.696119,1.929525,-0.28193,    -1.71825,1.929525,0,
+       -0.292719,1.7748,-1.761022,     -0.28193,1.929525,-1.696119,    0,1.929525,-1.71825,
+       0,1.929525,-1.71825,    0,1.7748,-1.784,        -0.292719,1.7748,-1.761022,
+       -0.569167,1.7748,-1.694372,     -0.54819,1.929525,-1.631925,    -0.28193,1.929525,-1.696119,
+       -0.28193,1.929525,-1.696119,    -0.292719,1.7748,-1.761022,     -0.569167,1.7748,-1.694372,
+       -0.825921,1.7748,-1.587475,     -0.795481,1.929525,-1.528968,   -0.54819,1.929525,-1.631925,
+       -0.54819,1.929525,-1.631925,    -0.569167,1.7748,-1.694372,     -0.825921,1.7748,-1.587475,
+       -1.059553,1.7748,-1.443756,     -1.020503,1.929525,-1.390545,   -0.795481,1.929525,-1.528968,
+       -0.795481,1.929525,-1.528968,   -0.825921,1.7748,-1.587475,     -1.059553,1.7748,-1.443756,
+       -1.26664,1.7748,-1.26664,       -1.219958,1.929525,-1.219958,   -1.020503,1.929525,-1.390545,
+       -1.020503,1.929525,-1.390545,   -1.059553,1.7748,-1.443756,     -1.26664,1.7748,-1.26664,
+       -1.443756,1.7748,-1.059553,     -1.390545,1.929525,-1.020503,   -1.219958,1.929525,-1.219958,
+       -1.219958,1.929525,-1.219958,   -1.26664,1.7748,-1.26664,       -1.443756,1.7748,-1.059553,
+       -1.587475,1.7748,-0.825921,     -1.528968,1.929525,-0.795481,   -1.390545,1.929525,-1.020503,
+       -1.390545,1.929525,-1.020503,   -1.443756,1.7748,-1.059553,     -1.587475,1.7748,-0.825921,
+       -1.694372,1.7748,-0.569167,     -1.631925,1.929525,-0.54819,    -1.528968,1.929525,-0.795481,
+       -1.528968,1.929525,-0.795481,   -1.587475,1.7748,-0.825921,     -1.694372,1.7748,-0.569167,
+       -1.761022,1.7748,-0.292719,     -1.696119,1.929525,-0.28193,    -1.631925,1.929525,-0.54819,
+       -1.631925,1.929525,-0.54819,    -1.694372,1.7748,-0.569167,     -1.761022,1.7748,-0.292719,
+       -1.784,1.7748,0,        -1.71825,1.929525,0,    -1.696119,1.929525,-0.28193,
+       -1.696119,1.929525,-0.28193,    -1.761022,1.7748,-0.292719,     -1.784,1.7748,0,
+       -0.302523,1.621875,-1.820003,   -0.292719,1.7748,-1.761022,     0,1.7748,-1.784,
+       0,1.7748,-1.784,        0,1.621875,-1.84375,    -0.302523,1.621875,-1.820003,
+       -0.58823,1.621875,-1.75112,     -0.569167,1.7748,-1.694372,     -0.292719,1.7748,-1.761022,
+       -0.292719,1.7748,-1.761022,     -0.302523,1.621875,-1.820003,   -0.58823,1.621875,-1.75112,
+       -0.853583,1.621875,-1.640643,   -0.825921,1.7748,-1.587475,     -0.569167,1.7748,-1.694372,
+       -0.569167,1.7748,-1.694372,     -0.58823,1.621875,-1.75112,     -0.853583,1.621875,-1.640643,
+       -1.09504,1.621875,-1.49211,     -1.059553,1.7748,-1.443756,     -0.825921,1.7748,-1.587475,
+       -0.825921,1.7748,-1.587475,     -0.853583,1.621875,-1.640643,   -1.09504,1.621875,-1.49211,
+       -1.309063,1.621875,-1.309063,   -1.26664,1.7748,-1.26664,       -1.059553,1.7748,-1.443756,
+       -1.059553,1.7748,-1.443756,     -1.09504,1.621875,-1.49211,     -1.309063,1.621875,-1.309063,
+       -1.49211,1.621875,-1.09504,     -1.443756,1.7748,-1.059553,     -1.26664,1.7748,-1.26664,
+       -1.26664,1.7748,-1.26664,       -1.309063,1.621875,-1.309063,   -1.49211,1.621875,-1.09504,
+       -1.640643,1.621875,-0.853583,   -1.587475,1.7748,-0.825921,     -1.443756,1.7748,-1.059553,
+       -1.443756,1.7748,-1.059553,     -1.49211,1.621875,-1.09504,     -1.640643,1.621875,-0.853583,
+       -1.75112,1.621875,-0.58823,     -1.694372,1.7748,-0.569167,     -1.587475,1.7748,-0.825921,
+       -1.587475,1.7748,-0.825921,     -1.640643,1.621875,-0.853583,   -1.75112,1.621875,-0.58823,
+       -1.820003,1.621875,-0.302522,   -1.761022,1.7748,-0.292719,     -1.694372,1.7748,-0.569167,
+       -1.694372,1.7748,-0.569167,     -1.75112,1.621875,-0.58823,     -1.820003,1.621875,-0.302522,
+       -1.84375,1.621875,0,    -1.784,1.7748,0,        -1.761022,1.7748,-0.292719,
+       -1.761022,1.7748,-0.292719,     -1.820003,1.621875,-0.302522,   -1.84375,1.621875,0,
+       -0.311096,1.4712,-1.87158,      -0.302523,1.621875,-1.820003,   0,1.621875,-1.84375,
+       0,1.621875,-1.84375,    0,1.4712,-1.896,        -0.311096,1.4712,-1.87158,
+       -0.6049,1.4712,-1.800745,       -0.58823,1.621875,-1.75112,     -0.302523,1.621875,-1.820003,
+       -0.302523,1.621875,-1.820003,   -0.311096,1.4712,-1.87158,      -0.6049,1.4712,-1.800745,
+       -0.877772,1.4712,-1.687137,     -0.853583,1.621875,-1.640643,   -0.58823,1.621875,-1.75112,
+       -0.58823,1.621875,-1.75112,     -0.6049,1.4712,-1.800745,       -0.877772,1.4712,-1.687137,
+       -1.126072,1.4712,-1.534395,     -1.09504,1.621875,-1.49211,     -0.853583,1.621875,-1.640643,
+       -0.853583,1.621875,-1.640643,   -0.877772,1.4712,-1.687137,     -1.126072,1.4712,-1.534395,
+       -1.34616,1.4712,-1.34616,       -1.309063,1.621875,-1.309063,   -1.09504,1.621875,-1.49211,
+       -1.09504,1.621875,-1.49211,     -1.126072,1.4712,-1.534395,     -1.34616,1.4712,-1.34616,
+       -1.534395,1.4712,-1.126072,     -1.49211,1.621875,-1.09504,     -1.309063,1.621875,-1.309063,
+       -1.309063,1.621875,-1.309063,   -1.34616,1.4712,-1.34616,       -1.534395,1.4712,-1.126072,
+       -1.687137,1.4712,-0.877772,     -1.640643,1.621875,-0.853583,   -1.49211,1.621875,-1.09504,
+       -1.49211,1.621875,-1.09504,     -1.534395,1.4712,-1.126072,     -1.687137,1.4712,-0.877772,
+       -1.800745,1.4712,-0.6049,       -1.75112,1.621875,-0.58823,     -1.640643,1.621875,-0.853583,
+       -1.640643,1.621875,-0.853583,   -1.687137,1.4712,-0.877772,     -1.800745,1.4712,-0.6049,
+       -1.87158,1.4712,-0.311096,      -1.820003,1.621875,-0.302522,   -1.75112,1.621875,-0.58823,
+       -1.75112,1.621875,-0.58823,     -1.800745,1.4712,-0.6049,       -1.87158,1.4712,-0.311096,
+       -1.896,1.4712,0,        -1.84375,1.621875,0,    -1.820003,1.621875,-0.302522,
+       -1.820003,1.621875,-0.302522,   -1.87158,1.4712,-0.311096,      -1.896,1.4712,0,
+       -0.318192,1.323225,-1.914272,   -0.311096,1.4712,-1.87158,      0,1.4712,-1.896,
+       0,1.4712,-1.896,        0,1.323225,-1.93925,    -0.318192,1.323225,-1.914272,
+       -0.618698,1.323225,-1.841822,   -0.6049,1.4712,-1.800745,       -0.311096,1.4712,-1.87158,
+       -0.311096,1.4712,-1.87158,      -0.318192,1.323225,-1.914272,   -0.618698,1.323225,-1.841822,
+       -0.897795,1.323225,-1.725622,   -0.877772,1.4712,-1.687137,     -0.6049,1.4712,-1.800745,
+       -0.6049,1.4712,-1.800745,       -0.618698,1.323225,-1.841822,   -0.897795,1.323225,-1.725622,
+       -1.151759,1.323225,-1.569396,   -1.126072,1.4712,-1.534395,     -0.877772,1.4712,-1.687137,
+       -0.877772,1.4712,-1.687137,     -0.897795,1.323225,-1.725622,   -1.151759,1.323225,-1.569396,
+       -1.376868,1.323225,-1.376867,   -1.34616,1.4712,-1.34616,       -1.126072,1.4712,-1.534395,
+       -1.126072,1.4712,-1.534395,     -1.151759,1.323225,-1.569396,   -1.376868,1.323225,-1.376867,
+       -1.569396,1.323225,-1.151759,   -1.534395,1.4712,-1.126072,     -1.34616,1.4712,-1.34616,
+       -1.34616,1.4712,-1.34616,       -1.376868,1.323225,-1.376867,   -1.569396,1.323225,-1.151759,
+       -1.725622,1.323225,-0.897795,   -1.687137,1.4712,-0.877772,     -1.534395,1.4712,-1.126072,
+       -1.534395,1.4712,-1.126072,     -1.569396,1.323225,-1.151759,   -1.725622,1.323225,-0.897795,
+       -1.841822,1.323225,-0.618698,   -1.800745,1.4712,-0.6049,       -1.687137,1.4712,-0.877772,
+       -1.687137,1.4712,-0.877772,     -1.725622,1.323225,-0.897795,   -1.841822,1.323225,-0.618698,
+       -1.914272,1.323225,-0.318192,   -1.87158,1.4712,-0.311096,      -1.800745,1.4712,-0.6049,
+       -1.800745,1.4712,-0.6049,       -1.841822,1.323225,-0.618698,   -1.914272,1.323225,-0.318192,
+       -1.93925,1.323225,0,    -1.896,1.4712,0,        -1.87158,1.4712,-0.311096,
+       -1.87158,1.4712,-0.311096,      -1.914272,1.323225,-0.318192,   -1.93925,1.323225,0,
+       -0.323566,1.1784,-1.946601,     -0.318192,1.323225,-1.914272,   0,1.323225,-1.93925,
+       0,1.323225,-1.93925,    0,1.1784,-1.972,        -0.323566,1.1784,-1.946601,
+       -0.629147,1.1784,-1.872927,     -0.618698,1.323225,-1.841822,   -0.318192,1.323225,-1.914272,
+       -0.318192,1.323225,-1.914272,   -0.323566,1.1784,-1.946601,     -0.629147,1.1784,-1.872927,
+       -0.912957,1.1784,-1.754764,     -0.897795,1.323225,-1.725622,   -0.618698,1.323225,-1.841822,
+       -0.618698,1.323225,-1.841822,   -0.629147,1.1784,-1.872927,     -0.912957,1.1784,-1.754764,
+       -1.17121,1.1784,-1.5959,        -1.151759,1.323225,-1.569396,   -0.897795,1.323225,-1.725622,
+       -0.897795,1.323225,-1.725622,   -0.912957,1.1784,-1.754764,     -1.17121,1.1784,-1.5959,
+       -1.40012,1.1784,-1.40012,       -1.376868,1.323225,-1.376867,   -1.151759,1.323225,-1.569396,
+       -1.151759,1.323225,-1.569396,   -1.17121,1.1784,-1.5959,        -1.40012,1.1784,-1.40012,
+       -1.5959,1.1784,-1.17121,        -1.569396,1.323225,-1.151759,   -1.376868,1.323225,-1.376867,
+       -1.376868,1.323225,-1.376867,   -1.40012,1.1784,-1.40012,       -1.5959,1.1784,-1.17121,
+       -1.754764,1.1784,-0.912957,     -1.725622,1.323225,-0.897795,   -1.569396,1.323225,-1.151759,
+       -1.569396,1.323225,-1.151759,   -1.5959,1.1784,-1.17121,        -1.754764,1.1784,-0.912957,
+       -1.872927,1.1784,-0.629147,     -1.841822,1.323225,-0.618698,   -1.725622,1.323225,-0.897795,
+       -1.725622,1.323225,-0.897795,   -1.754764,1.1784,-0.912957,     -1.872927,1.1784,-0.629147,
+       -1.946601,1.1784,-0.323566,     -1.914272,1.323225,-0.318192,   -1.841822,1.323225,-0.618698,
+       -1.841822,1.323225,-0.618698,   -1.872927,1.1784,-0.629147,     -1.946601,1.1784,-0.323566,
+       -1.972,1.1784,0,        -1.93925,1.323225,0,    -1.914272,1.323225,-0.318192,
+       -1.914272,1.323225,-0.318192,   -1.946601,1.1784,-0.323566,     -1.972,1.1784,0,
+       -0.32697,1.037175,-1.967083,    -0.323566,1.1784,-1.946601,     0,1.1784,-1.972,
+       0,1.1784,-1.972,        0,1.037175,-1.99275,    -0.32697,1.037175,-1.967083,
+       -0.635767,1.037175,-1.892634,   -0.629147,1.1784,-1.872927,     -0.323566,1.1784,-1.946601,
+       -0.323566,1.1784,-1.946601,     -0.32697,1.037175,-1.967083,    -0.635767,1.037175,-1.892634,
+       -0.922564,1.037175,-1.773229,   -0.912957,1.1784,-1.754764,     -0.629147,1.1784,-1.872927,
+       -0.629147,1.1784,-1.872927,     -0.635767,1.037175,-1.892634,   -0.922564,1.037175,-1.773229,
+       -1.183534,1.037175,-1.612693,   -1.17121,1.1784,-1.5959,        -0.912957,1.1784,-1.754764,
+       -0.912957,1.1784,-1.754764,     -0.922564,1.037175,-1.773229,   -1.183534,1.037175,-1.612693,
+       -1.414853,1.037175,-1.414853,   -1.40012,1.1784,-1.40012,       -1.17121,1.1784,-1.5959,
+       -1.17121,1.1784,-1.5959,        -1.183534,1.037175,-1.612693,   -1.414853,1.037175,-1.414853,
+       -1.612693,1.037175,-1.183534,   -1.5959,1.1784,-1.17121,        -1.40012,1.1784,-1.40012,
+       -1.40012,1.1784,-1.40012,       -1.414853,1.037175,-1.414853,   -1.612693,1.037175,-1.183534,
+       -1.773229,1.037175,-0.922564,   -1.754764,1.1784,-0.912957,     -1.5959,1.1784,-1.17121,
+       -1.5959,1.1784,-1.17121,        -1.612693,1.037175,-1.183534,   -1.773229,1.037175,-0.922564,
+       -1.892634,1.037175,-0.635767,   -1.872927,1.1784,-0.629147,     -1.754764,1.1784,-0.912957,
+       -1.754764,1.1784,-0.912957,     -1.773229,1.037175,-0.922564,   -1.892634,1.037175,-0.635767,
+       -1.967083,1.037175,-0.32697,    -1.946601,1.1784,-0.323566,     -1.872927,1.1784,-0.629147,
+       -1.872927,1.1784,-0.629147,     -1.892634,1.037175,-0.635767,   -1.967083,1.037175,-0.32697,
+       -1.99275,1.037175,0,    -1.972,1.1784,0,        -1.946601,1.1784,-0.323566,
+       -1.946601,1.1784,-0.323566,     -1.967083,1.037175,-0.32697,    -1.99275,1.037175,0,
+       -0.32816,0.9,-1.97424,  -0.32697,1.037175,-1.967083,    0,1.037175,-1.99275,
+       0,1.037175,-1.99275,    0,0.9,-2,       -0.32816,0.9,-1.97424,
+       -0.63808,0.9,-1.89952,  -0.635767,1.037175,-1.892634,   -0.32697,1.037175,-1.967083,
+       -0.32697,1.037175,-1.967083,    -0.32816,0.9,-1.97424,  -0.63808,0.9,-1.89952,
+       -0.92592,0.9,-1.77968,  -0.922564,1.037175,-1.773229,   -0.635767,1.037175,-1.892634,
+       -0.635767,1.037175,-1.892634,   -0.63808,0.9,-1.89952,  -0.92592,0.9,-1.77968,
+       -1.18784,0.9,-1.61856,  -1.183534,1.037175,-1.612693,   -0.922564,1.037175,-1.773229,
+       -0.922564,1.037175,-1.773229,   -0.92592,0.9,-1.77968,  -1.18784,0.9,-1.61856,
+       -1.42,0.9,-1.42,        -1.414853,1.037175,-1.414853,   -1.183534,1.037175,-1.612693,
+       -1.183534,1.037175,-1.612693,   -1.18784,0.9,-1.61856,  -1.42,0.9,-1.42,
+       -1.61856,0.9,-1.18784,  -1.612693,1.037175,-1.183534,   -1.414853,1.037175,-1.414853,
+       -1.414853,1.037175,-1.414853,   -1.42,0.9,-1.42,        -1.61856,0.9,-1.18784,
+       -1.77968,0.9,-0.92592,  -1.773229,1.037175,-0.922564,   -1.612693,1.037175,-1.183534,
+       -1.612693,1.037175,-1.183534,   -1.61856,0.9,-1.18784,  -1.77968,0.9,-0.92592,
+       -1.89952,0.9,-0.63808,  -1.892634,1.037175,-0.635767,   -1.773229,1.037175,-0.922564,
+       -1.773229,1.037175,-0.922564,   -1.77968,0.9,-0.92592,  -1.89952,0.9,-0.63808,
+       -1.97424,0.9,-0.32816,  -1.967083,1.037175,-0.32697,    -1.892634,1.037175,-0.635767,
+       -1.892634,1.037175,-0.635767,   -1.89952,0.9,-0.63808,  -1.97424,0.9,-0.32816,
+       -2,0.9,0,       -1.99275,1.037175,0,    -1.967083,1.037175,-0.32697,
+       -1.967083,1.037175,-0.32697,    -1.97424,0.9,-0.32816,  -2,0.9,0,
+       -1.554467,2.242575,0.258385,    -1.48068,2.4,0.24612,   -1.5,2.4,0,
+       -1.5,2.4,0,     -1.57475,2.242575,0,    -1.554467,2.242575,0.258385,
+       -1.495635,2.242575,0.502408,    -1.42464,2.4,0.47856,   -1.48068,2.4,0.24612,
+       -1.48068,2.4,0.24612,   -1.554467,2.242575,0.258385,    -1.495635,2.242575,0.502408,
+       -1.401276,2.242575,0.729046,    -1.33476,2.4,0.69444,   -1.42464,2.4,0.47856,
+       -1.42464,2.4,0.47856,   -1.495635,2.242575,0.502408,    -1.401276,2.242575,0.729046,
+       -1.274414,2.242575,0.935276,    -1.21392,2.4,0.89088,   -1.33476,2.4,0.69444,
+       -1.33476,2.4,0.69444,   -1.401276,2.242575,0.729046,    -1.274414,2.242575,0.935276,
+       -1.118073,2.242575,1.118073,    -1.065,2.4,1.065,       -1.21392,2.4,0.89088,
+       -1.21392,2.4,0.89088,   -1.274414,2.242575,0.935276,    -1.118073,2.242575,1.118073,
+       -0.935276,2.242575,1.274414,    -0.89088,2.4,1.21392,   -1.065,2.4,1.065,
+       -1.065,2.4,1.065,       -1.118073,2.242575,1.118073,    -0.935276,2.242575,1.274414,
+       -0.729046,2.242575,1.401276,    -0.69444,2.4,1.33476,   -0.89088,2.4,1.21392,
+       -0.89088,2.4,1.21392,   -0.935276,2.242575,1.274414,    -0.729046,2.242575,1.401276,
+       -0.502408,2.242575,1.495635,    -0.47856,2.4,1.42464,   -0.69444,2.4,1.33476,
+       -0.69444,2.4,1.33476,   -0.729046,2.242575,1.401276,    -0.502408,2.242575,1.495635,
+       -0.258385,2.242575,1.554467,    -0.24612,2.4,1.48068,   -0.47856,2.4,1.42464,
+       -0.47856,2.4,1.42464,   -0.502408,2.242575,1.495635,    -0.258385,2.242575,1.554467,
+       0,2.242575,1.57475,     0,2.4,1.5,      -0.24612,2.4,1.48068,
+       -0.24612,2.4,1.48068,   -0.258385,2.242575,1.554467,    0,2.242575,1.57475,
+       -1.626774,2.0856,0.270404,      -1.554467,2.242575,0.258385,    -1.57475,2.242575,0,
+       -1.57475,2.242575,0,    -1.648,2.0856,0,        -1.626774,2.0856,0.270404,
+       -1.565204,2.0856,0.525778,      -1.495635,2.242575,0.502408,    -1.554467,2.242575,0.258385,
+       -1.554467,2.242575,0.258385,    -1.626774,2.0856,0.270404,      -1.565204,2.0856,0.525778,
+       -1.466456,2.0856,0.762958,      -1.401276,2.242575,0.729046,    -1.495635,2.242575,0.502408,
+       -1.495635,2.242575,0.502408,    -1.565204,2.0856,0.525778,      -1.466456,2.0856,0.762958,
+       -1.333693,2.0856,0.97878,       -1.274414,2.242575,0.935276,    -1.401276,2.242575,0.729046,
+       -1.401276,2.242575,0.729046,    -1.466456,2.0856,0.762958,      -1.333693,2.0856,0.97878,
+       -1.17008,2.0856,1.17008,        -1.118073,2.242575,1.118073,    -1.274414,2.242575,0.935276,
+       -1.274414,2.242575,0.935276,    -1.333693,2.0856,0.97878,       -1.17008,2.0856,1.17008,
+       -0.97878,2.0856,1.333693,       -0.935276,2.242575,1.274414,    -1.118073,2.242575,1.118073,
+       -1.118073,2.242575,1.118073,    -1.17008,2.0856,1.17008,        -0.97878,2.0856,1.333693,
+       -0.762958,2.0856,1.466456,      -0.729046,2.242575,1.401276,    -0.935276,2.242575,1.274414,
+       -0.935276,2.242575,1.274414,    -0.97878,2.0856,1.333693,       -0.762958,2.0856,1.466456,
+       -0.525778,2.0856,1.565204,      -0.502408,2.242575,1.495635,    -0.729046,2.242575,1.401276,
+       -0.729046,2.242575,1.401276,    -0.762958,2.0856,1.466456,      -0.525778,2.0856,1.565204,
+       -0.270404,2.0856,1.626774,      -0.258385,2.242575,1.554467,    -0.502408,2.242575,1.495635,
+       -0.502408,2.242575,1.495635,    -0.525778,2.0856,1.565204,      -0.270404,2.0856,1.626774,
+       0,2.0856,1.648, 0,2.242575,1.57475,     -0.258385,2.242575,1.554467,
+       -0.258385,2.242575,1.554467,    -0.270404,2.0856,1.626774,      0,2.0856,1.648,
+       -1.696119,1.929525,0.28193,     -1.626774,2.0856,0.270404,      -1.648,2.0856,0,
+       -1.648,2.0856,0,        -1.71825,1.929525,0,    -1.696119,1.929525,0.28193,
+       -1.631925,1.929525,0.54819,     -1.565204,2.0856,0.525778,      -1.626774,2.0856,0.270404,
+       -1.626774,2.0856,0.270404,      -1.696119,1.929525,0.28193,     -1.631925,1.929525,0.54819,
+       -1.528968,1.929525,0.795481,    -1.466456,2.0856,0.762958,      -1.565204,2.0856,0.525778,
+       -1.565204,2.0856,0.525778,      -1.631925,1.929525,0.54819,     -1.528968,1.929525,0.795481,
+       -1.390545,1.929525,1.020503,    -1.333693,2.0856,0.97878,       -1.466456,2.0856,0.762958,
+       -1.466456,2.0856,0.762958,      -1.528968,1.929525,0.795481,    -1.390545,1.929525,1.020503,
+       -1.219958,1.929525,1.219958,    -1.17008,2.0856,1.17008,        -1.333693,2.0856,0.97878,
+       -1.333693,2.0856,0.97878,       -1.390545,1.929525,1.020503,    -1.219958,1.929525,1.219958,
+       -1.020503,1.929525,1.390545,    -0.97878,2.0856,1.333693,       -1.17008,2.0856,1.17008,
+       -1.17008,2.0856,1.17008,        -1.219958,1.929525,1.219958,    -1.020503,1.929525,1.390545,
+       -0.795481,1.929525,1.528968,    -0.762958,2.0856,1.466456,      -0.97878,2.0856,1.333693,
+       -0.97878,2.0856,1.333693,       -1.020503,1.929525,1.390545,    -0.795481,1.929525,1.528968,
+       -0.54819,1.929525,1.631925,     -0.525778,2.0856,1.565204,      -0.762958,2.0856,1.466456,
+       -0.762958,2.0856,1.466456,      -0.795481,1.929525,1.528968,    -0.54819,1.929525,1.631925,
+       -0.28193,1.929525,1.696119,     -0.270404,2.0856,1.626774,      -0.525778,2.0856,1.565204,
+       -0.525778,2.0856,1.565204,      -0.54819,1.929525,1.631925,     -0.28193,1.929525,1.696119,
+       0,1.929525,1.71825,     0,2.0856,1.648, -0.270404,2.0856,1.626774,
+       -0.270404,2.0856,1.626774,      -0.28193,1.929525,1.696119,     0,1.929525,1.71825,
+       -1.761022,1.7748,0.292719,      -1.696119,1.929525,0.28193,     -1.71825,1.929525,0,
+       -1.71825,1.929525,0,    -1.784,1.7748,0,        -1.761022,1.7748,0.292719,
+       -1.694372,1.7748,0.569167,      -1.631925,1.929525,0.54819,     -1.696119,1.929525,0.28193,
+       -1.696119,1.929525,0.28193,     -1.761022,1.7748,0.292719,      -1.694372,1.7748,0.569167,
+       -1.587475,1.7748,0.825921,      -1.528968,1.929525,0.795481,    -1.631925,1.929525,0.54819,
+       -1.631925,1.929525,0.54819,     -1.694372,1.7748,0.569167,      -1.587475,1.7748,0.825921,
+       -1.443756,1.7748,1.059553,      -1.390545,1.929525,1.020503,    -1.528968,1.929525,0.795481,
+       -1.528968,1.929525,0.795481,    -1.587475,1.7748,0.825921,      -1.443756,1.7748,1.059553,
+       -1.26664,1.7748,1.26664,        -1.219958,1.929525,1.219958,    -1.390545,1.929525,1.020503,
+       -1.390545,1.929525,1.020503,    -1.443756,1.7748,1.059553,      -1.26664,1.7748,1.26664,
+       -1.059553,1.7748,1.443756,      -1.020503,1.929525,1.390545,    -1.219958,1.929525,1.219958,
+       -1.219958,1.929525,1.219958,    -1.26664,1.7748,1.26664,        -1.059553,1.7748,1.443756,
+       -0.825921,1.7748,1.587475,      -0.795481,1.929525,1.528968,    -1.020503,1.929525,1.390545,
+       -1.020503,1.929525,1.390545,    -1.059553,1.7748,1.443756,      -0.825921,1.7748,1.587475,
+       -0.569167,1.7748,1.694372,      -0.54819,1.929525,1.631925,     -0.795481,1.929525,1.528968,
+       -0.795481,1.929525,1.528968,    -0.825921,1.7748,1.587475,      -0.569167,1.7748,1.694372,
+       -0.292719,1.7748,1.761022,      -0.28193,1.929525,1.696119,     -0.54819,1.929525,1.631925,
+       -0.54819,1.929525,1.631925,     -0.569167,1.7748,1.694372,      -0.292719,1.7748,1.761022,
+       0,1.7748,1.784, 0,1.929525,1.71825,     -0.28193,1.929525,1.696119,
+       -0.28193,1.929525,1.696119,     -0.292719,1.7748,1.761022,      0,1.7748,1.784,
+       -1.820003,1.621875,0.302523,    -1.761022,1.7748,0.292719,      -1.784,1.7748,0,
+       -1.784,1.7748,0,        -1.84375,1.621875,0,    -1.820003,1.621875,0.302523,
+       -1.75112,1.621875,0.58823,      -1.694372,1.7748,0.569167,      -1.761022,1.7748,0.292719,
+       -1.761022,1.7748,0.292719,      -1.820003,1.621875,0.302523,    -1.75112,1.621875,0.58823,
+       -1.640643,1.621875,0.853583,    -1.587475,1.7748,0.825921,      -1.694372,1.7748,0.569167,
+       -1.694372,1.7748,0.569167,      -1.75112,1.621875,0.58823,      -1.640643,1.621875,0.853583,
+       -1.49211,1.621875,1.09504,      -1.443756,1.7748,1.059553,      -1.587475,1.7748,0.825921,
+       -1.587475,1.7748,0.825921,      -1.640643,1.621875,0.853583,    -1.49211,1.621875,1.09504,
+       -1.309063,1.621875,1.309063,    -1.26664,1.7748,1.26664,        -1.443756,1.7748,1.059553,
+       -1.443756,1.7748,1.059553,      -1.49211,1.621875,1.09504,      -1.309063,1.621875,1.309063,
+       -1.09504,1.621875,1.49211,      -1.059553,1.7748,1.443756,      -1.26664,1.7748,1.26664,
+       -1.26664,1.7748,1.26664,        -1.309063,1.621875,1.309063,    -1.09504,1.621875,1.49211,
+       -0.853583,1.621875,1.640643,    -0.825921,1.7748,1.587475,      -1.059553,1.7748,1.443756,
+       -1.059553,1.7748,1.443756,      -1.09504,1.621875,1.49211,      -0.853583,1.621875,1.640643,
+       -0.58823,1.621875,1.75112,      -0.569167,1.7748,1.694372,      -0.825921,1.7748,1.587475,
+       -0.825921,1.7748,1.587475,      -0.853583,1.621875,1.640643,    -0.58823,1.621875,1.75112,
+       -0.302522,1.621875,1.820003,    -0.292719,1.7748,1.761022,      -0.569167,1.7748,1.694372,
+       -0.569167,1.7748,1.694372,      -0.58823,1.621875,1.75112,      -0.302522,1.621875,1.820003,
+       0,1.621875,1.84375,     0,1.7748,1.784, -0.292719,1.7748,1.761022,
+       -0.292719,1.7748,1.761022,      -0.302522,1.621875,1.820003,    0,1.621875,1.84375,
+       -1.87158,1.4712,0.311096,       -1.820003,1.621875,0.302523,    -1.84375,1.621875,0,
+       -1.84375,1.621875,0,    -1.896,1.4712,0,        -1.87158,1.4712,0.311096,
+       -1.800745,1.4712,0.6049,        -1.75112,1.621875,0.58823,      -1.820003,1.621875,0.302523,
+       -1.820003,1.621875,0.302523,    -1.87158,1.4712,0.311096,       -1.800745,1.4712,0.6049,
+       -1.687137,1.4712,0.877772,      -1.640643,1.621875,0.853583,    -1.75112,1.621875,0.58823,
+       -1.75112,1.621875,0.58823,      -1.800745,1.4712,0.6049,        -1.687137,1.4712,0.877772,
+       -1.534395,1.4712,1.126072,      -1.49211,1.621875,1.09504,      -1.640643,1.621875,0.853583,
+       -1.640643,1.621875,0.853583,    -1.687137,1.4712,0.877772,      -1.534395,1.4712,1.126072,
+       -1.34616,1.4712,1.34616,        -1.309063,1.621875,1.309063,    -1.49211,1.621875,1.09504,
+       -1.49211,1.621875,1.09504,      -1.534395,1.4712,1.126072,      -1.34616,1.4712,1.34616,
+       -1.126072,1.4712,1.534395,      -1.09504,1.621875,1.49211,      -1.309063,1.621875,1.309063,
+       -1.309063,1.621875,1.309063,    -1.34616,1.4712,1.34616,        -1.126072,1.4712,1.534395,
+       -0.877772,1.4712,1.687137,      -0.853583,1.621875,1.640643,    -1.09504,1.621875,1.49211,
+       -1.09504,1.621875,1.49211,      -1.126072,1.4712,1.534395,      -0.877772,1.4712,1.687137,
+       -0.6049,1.4712,1.800745,        -0.58823,1.621875,1.75112,      -0.853583,1.621875,1.640643,
+       -0.853583,1.621875,1.640643,    -0.877772,1.4712,1.687137,      -0.6049,1.4712,1.800745,
+       -0.311096,1.4712,1.87158,       -0.302522,1.621875,1.820003,    -0.58823,1.621875,1.75112,
+       -0.58823,1.621875,1.75112,      -0.6049,1.4712,1.800745,        -0.311096,1.4712,1.87158,
+       0,1.4712,1.896, 0,1.621875,1.84375,     -0.302522,1.621875,1.820003,
+       -0.302522,1.621875,1.820003,    -0.311096,1.4712,1.87158,       0,1.4712,1.896,
+       -1.914272,1.323225,0.318192,    -1.87158,1.4712,0.311096,       -1.896,1.4712,0,
+       -1.896,1.4712,0,        -1.93925,1.323225,0,    -1.914272,1.323225,0.318192,
+       -1.841822,1.323225,0.618698,    -1.800745,1.4712,0.6049,        -1.87158,1.4712,0.311096,
+       -1.87158,1.4712,0.311096,       -1.914272,1.323225,0.318192,    -1.841822,1.323225,0.618698,
+       -1.725622,1.323225,0.897795,    -1.687137,1.4712,0.877772,      -1.800745,1.4712,0.6049,
+       -1.800745,1.4712,0.6049,        -1.841822,1.323225,0.618698,    -1.725622,1.323225,0.897795,
+       -1.569396,1.323225,1.151759,    -1.534395,1.4712,1.126072,      -1.687137,1.4712,0.877772,
+       -1.687137,1.4712,0.877772,      -1.725622,1.323225,0.897795,    -1.569396,1.323225,1.151759,
+       -1.376867,1.323225,1.376868,    -1.34616,1.4712,1.34616,        -1.534395,1.4712,1.126072,
+       -1.534395,1.4712,1.126072,      -1.569396,1.323225,1.151759,    -1.376867,1.323225,1.376868,
+       -1.151759,1.323225,1.569396,    -1.126072,1.4712,1.534395,      -1.34616,1.4712,1.34616,
+       -1.34616,1.4712,1.34616,        -1.376867,1.323225,1.376868,    -1.151759,1.323225,1.569396,
+       -0.897795,1.323225,1.725622,    -0.877772,1.4712,1.687137,      -1.126072,1.4712,1.534395,
+       -1.126072,1.4712,1.534395,      -1.151759,1.323225,1.569396,    -0.897795,1.323225,1.725622,
+       -0.618698,1.323225,1.841822,    -0.6049,1.4712,1.800745,        -0.877772,1.4712,1.687137,
+       -0.877772,1.4712,1.687137,      -0.897795,1.323225,1.725622,    -0.618698,1.323225,1.841822,
+       -0.318192,1.323225,1.914272,    -0.311096,1.4712,1.87158,       -0.6049,1.4712,1.800745,
+       -0.6049,1.4712,1.800745,        -0.618698,1.323225,1.841822,    -0.318192,1.323225,1.914272,
+       0,1.323225,1.93925,     0,1.4712,1.896, -0.311096,1.4712,1.87158,
+       -0.311096,1.4712,1.87158,       -0.318192,1.323225,1.914272,    0,1.323225,1.93925,
+       -1.946601,1.1784,0.323566,      -1.914272,1.323225,0.318192,    -1.93925,1.323225,0,
+       -1.93925,1.323225,0,    -1.972,1.1784,0,        -1.946601,1.1784,0.323566,
+       -1.872927,1.1784,0.629147,      -1.841822,1.323225,0.618698,    -1.914272,1.323225,0.318192,
+       -1.914272,1.323225,0.318192,    -1.946601,1.1784,0.323566,      -1.872927,1.1784,0.629147,
+       -1.754764,1.1784,0.912957,      -1.725622,1.323225,0.897795,    -1.841822,1.323225,0.618698,
+       -1.841822,1.323225,0.618698,    -1.872927,1.1784,0.629147,      -1.754764,1.1784,0.912957,
+       -1.5959,1.1784,1.17121, -1.569396,1.323225,1.151759,    -1.725622,1.323225,0.897795,
+       -1.725622,1.323225,0.897795,    -1.754764,1.1784,0.912957,      -1.5959,1.1784,1.17121,
+       -1.40012,1.1784,1.40012,        -1.376867,1.323225,1.376868,    -1.569396,1.323225,1.151759,
+       -1.569396,1.323225,1.151759,    -1.5959,1.1784,1.17121, -1.40012,1.1784,1.40012,
+       -1.17121,1.1784,1.5959, -1.151759,1.323225,1.569396,    -1.376867,1.323225,1.376868,
+       -1.376867,1.323225,1.376868,    -1.40012,1.1784,1.40012,        -1.17121,1.1784,1.5959,
+       -0.912957,1.1784,1.754764,      -0.897795,1.323225,1.725622,    -1.151759,1.323225,1.569396,
+       -1.151759,1.323225,1.569396,    -1.17121,1.1784,1.5959, -0.912957,1.1784,1.754764,
+       -0.629147,1.1784,1.872927,      -0.618698,1.323225,1.841822,    -0.897795,1.323225,1.725622,
+       -0.897795,1.323225,1.725622,    -0.912957,1.1784,1.754764,      -0.629147,1.1784,1.872927,
+       -0.323566,1.1784,1.946601,      -0.318192,1.323225,1.914272,    -0.618698,1.323225,1.841822,
+       -0.618698,1.323225,1.841822,    -0.629147,1.1784,1.872927,      -0.323566,1.1784,1.946601,
+       0,1.1784,1.972, 0,1.323225,1.93925,     -0.318192,1.323225,1.914272,
+       -0.318192,1.323225,1.914272,    -0.323566,1.1784,1.946601,      0,1.1784,1.972,
+       -1.967083,1.037175,0.32697,     -1.946601,1.1784,0.323566,      -1.972,1.1784,0,
+       -1.972,1.1784,0,        -1.99275,1.037175,0,    -1.967083,1.037175,0.32697,
+       -1.892634,1.037175,0.635767,    -1.872927,1.1784,0.629147,      -1.946601,1.1784,0.323566,
+       -1.946601,1.1784,0.323566,      -1.967083,1.037175,0.32697,     -1.892634,1.037175,0.635767,
+       -1.773229,1.037175,0.922564,    -1.754764,1.1784,0.912957,      -1.872927,1.1784,0.629147,
+       -1.872927,1.1784,0.629147,      -1.892634,1.037175,0.635767,    -1.773229,1.037175,0.922564,
+       -1.612693,1.037175,1.183534,    -1.5959,1.1784,1.17121, -1.754764,1.1784,0.912957,
+       -1.754764,1.1784,0.912957,      -1.773229,1.037175,0.922564,    -1.612693,1.037175,1.183534,
+       -1.414853,1.037175,1.414853,    -1.40012,1.1784,1.40012,        -1.5959,1.1784,1.17121,
+       -1.5959,1.1784,1.17121, -1.612693,1.037175,1.183534,    -1.414853,1.037175,1.414853,
+       -1.183534,1.037175,1.612693,    -1.17121,1.1784,1.5959, -1.40012,1.1784,1.40012,
+       -1.40012,1.1784,1.40012,        -1.414853,1.037175,1.414853,    -1.183534,1.037175,1.612693,
+       -0.922564,1.037175,1.773229,    -0.912957,1.1784,1.754764,      -1.17121,1.1784,1.5959,
+       -1.17121,1.1784,1.5959, -1.183534,1.037175,1.612693,    -0.922564,1.037175,1.773229,
+       -0.635767,1.037175,1.892634,    -0.629147,1.1784,1.872927,      -0.912957,1.1784,1.754764,
+       -0.912957,1.1784,1.754764,      -0.922564,1.037175,1.773229,    -0.635767,1.037175,1.892634,
+       -0.32697,1.037175,1.967083,     -0.323566,1.1784,1.946601,      -0.629147,1.1784,1.872927,
+       -0.629147,1.1784,1.872927,      -0.635767,1.037175,1.892634,    -0.32697,1.037175,1.967083,
+       0,1.037175,1.99275,     0,1.1784,1.972, -0.323566,1.1784,1.946601,
+       -0.323566,1.1784,1.946601,      -0.32697,1.037175,1.967083,     0,1.037175,1.99275,
+       -1.97424,0.9,0.32816,   -1.967083,1.037175,0.32697,     -1.99275,1.037175,0,
+       -1.99275,1.037175,0,    -2,0.9,0,       -1.97424,0.9,0.32816,
+       -1.89952,0.9,0.63808,   -1.892634,1.037175,0.635767,    -1.967083,1.037175,0.32697,
+       -1.967083,1.037175,0.32697,     -1.97424,0.9,0.32816,   -1.89952,0.9,0.63808,
+       -1.77968,0.9,0.92592,   -1.773229,1.037175,0.922564,    -1.892634,1.037175,0.635767,
+       -1.892634,1.037175,0.635767,    -1.89952,0.9,0.63808,   -1.77968,0.9,0.92592,
+       -1.61856,0.9,1.18784,   -1.612693,1.037175,1.183534,    -1.773229,1.037175,0.922564,
+       -1.773229,1.037175,0.922564,    -1.77968,0.9,0.92592,   -1.61856,0.9,1.18784,
+       -1.42,0.9,1.42, -1.414853,1.037175,1.414853,    -1.612693,1.037175,1.183534,
+       -1.612693,1.037175,1.183534,    -1.61856,0.9,1.18784,   -1.42,0.9,1.42,
+       -1.18784,0.9,1.61856,   -1.183534,1.037175,1.612693,    -1.414853,1.037175,1.414853,
+       -1.414853,1.037175,1.414853,    -1.42,0.9,1.42, -1.18784,0.9,1.61856,
+       -0.92592,0.9,1.77968,   -0.922564,1.037175,1.773229,    -1.183534,1.037175,1.612693,
+       -1.183534,1.037175,1.612693,    -1.18784,0.9,1.61856,   -0.92592,0.9,1.77968,
+       -0.63808,0.9,1.89952,   -0.635767,1.037175,1.892634,    -0.922564,1.037175,1.773229,
+       -0.922564,1.037175,1.773229,    -0.92592,0.9,1.77968,   -0.63808,0.9,1.89952,
+       -0.32816,0.9,1.97424,   -0.32697,1.037175,1.967083,     -0.635767,1.037175,1.892634,
+       -0.635767,1.037175,1.892634,    -0.63808,0.9,1.89952,   -0.32816,0.9,1.97424,
+       0,0.9,2,        0,1.037175,1.99275,     -0.32697,1.037175,1.967083,
+       -0.32697,1.037175,1.967083,     -0.32816,0.9,1.97424,   0,0.9,2,
+       0.258385,2.242575,1.554467,     0.24612,2.4,1.48068,    0,2.4,1.5,
+       0,2.4,1.5,      0,2.242575,1.57475,     0.258385,2.242575,1.554467,
+       0.502408,2.242575,1.495635,     0.47856,2.4,1.42464,    0.24612,2.4,1.48068,
+       0.24612,2.4,1.48068,    0.258385,2.242575,1.554467,     0.502408,2.242575,1.495635,
+       0.729046,2.242575,1.401276,     0.69444,2.4,1.33476,    0.47856,2.4,1.42464,
+       0.47856,2.4,1.42464,    0.502408,2.242575,1.495635,     0.729046,2.242575,1.401276,
+       0.935276,2.242575,1.274414,     0.89088,2.4,1.21392,    0.69444,2.4,1.33476,
+       0.69444,2.4,1.33476,    0.729046,2.242575,1.401276,     0.935276,2.242575,1.274414,
+       1.118073,2.242575,1.118073,     1.065,2.4,1.065,        0.89088,2.4,1.21392,
+       0.89088,2.4,1.21392,    0.935276,2.242575,1.274414,     1.118073,2.242575,1.118073,
+       1.274414,2.242575,0.935276,     1.21392,2.4,0.89088,    1.065,2.4,1.065,
+       1.065,2.4,1.065,        1.118073,2.242575,1.118073,     1.274414,2.242575,0.935276,
+       1.401276,2.242575,0.729046,     1.33476,2.4,0.69444,    1.21392,2.4,0.89088,
+       1.21392,2.4,0.89088,    1.274414,2.242575,0.935276,     1.401276,2.242575,0.729046,
+       1.495635,2.242575,0.502408,     1.42464,2.4,0.47856,    1.33476,2.4,0.69444,
+       1.33476,2.4,0.69444,    1.401276,2.242575,0.729046,     1.495635,2.242575,0.502408,
+       1.554467,2.242575,0.258385,     1.48068,2.4,0.24612,    1.42464,2.4,0.47856,
+       1.42464,2.4,0.47856,    1.495635,2.242575,0.502408,     1.554467,2.242575,0.258385,
+       1.57475,2.242575,0,     1.5,2.4,0,      1.48068,2.4,0.24612,
+       1.48068,2.4,0.24612,    1.554467,2.242575,0.258385,     1.57475,2.242575,0,
+       0.270404,2.0856,1.626774,       0.258385,2.242575,1.554467,     0,2.242575,1.57475,
+       0,2.242575,1.57475,     0,2.0856,1.648, 0.270404,2.0856,1.626774,
+       0.525778,2.0856,1.565204,       0.502408,2.242575,1.495635,     0.258385,2.242575,1.554467,
+       0.258385,2.242575,1.554467,     0.270404,2.0856,1.626774,       0.525778,2.0856,1.565204,
+       0.762958,2.0856,1.466456,       0.729046,2.242575,1.401276,     0.502408,2.242575,1.495635,
+       0.502408,2.242575,1.495635,     0.525778,2.0856,1.565204,       0.762958,2.0856,1.466456,
+       0.97878,2.0856,1.333693,        0.935276,2.242575,1.274414,     0.729046,2.242575,1.401276,
+       0.729046,2.242575,1.401276,     0.762958,2.0856,1.466456,       0.97878,2.0856,1.333693,
+       1.17008,2.0856,1.17008, 1.118073,2.242575,1.118073,     0.935276,2.242575,1.274414,
+       0.935276,2.242575,1.274414,     0.97878,2.0856,1.333693,        1.17008,2.0856,1.17008,
+       1.333693,2.0856,0.97878,        1.274414,2.242575,0.935276,     1.118073,2.242575,1.118073,
+       1.118073,2.242575,1.118073,     1.17008,2.0856,1.17008, 1.333693,2.0856,0.97878,
+       1.466456,2.0856,0.762958,       1.401276,2.242575,0.729046,     1.274414,2.242575,0.935276,
+       1.274414,2.242575,0.935276,     1.333693,2.0856,0.97878,        1.466456,2.0856,0.762958,
+       1.565204,2.0856,0.525778,       1.495635,2.242575,0.502408,     1.401276,2.242575,0.729046,
+       1.401276,2.242575,0.729046,     1.466456,2.0856,0.762958,       1.565204,2.0856,0.525778,
+       1.626774,2.0856,0.270404,       1.554467,2.242575,0.258385,     1.495635,2.242575,0.502408,
+       1.495635,2.242575,0.502408,     1.565204,2.0856,0.525778,       1.626774,2.0856,0.270404,
+       1.648,2.0856,0, 1.57475,2.242575,0,     1.554467,2.242575,0.258385,
+       1.554467,2.242575,0.258385,     1.626774,2.0856,0.270404,       1.648,2.0856,0,
+       0.28193,1.929525,1.696119,      0.270404,2.0856,1.626774,       0,2.0856,1.648,
+       0,2.0856,1.648, 0,1.929525,1.71825,     0.28193,1.929525,1.696119,
+       0.54819,1.929525,1.631925,      0.525778,2.0856,1.565204,       0.270404,2.0856,1.626774,
+       0.270404,2.0856,1.626774,       0.28193,1.929525,1.696119,      0.54819,1.929525,1.631925,
+       0.795481,1.929525,1.528968,     0.762958,2.0856,1.466456,       0.525778,2.0856,1.565204,
+       0.525778,2.0856,1.565204,       0.54819,1.929525,1.631925,      0.795481,1.929525,1.528968,
+       1.020503,1.929525,1.390545,     0.97878,2.0856,1.333693,        0.762958,2.0856,1.466456,
+       0.762958,2.0856,1.466456,       0.795481,1.929525,1.528968,     1.020503,1.929525,1.390545,
+       1.219958,1.929525,1.219958,     1.17008,2.0856,1.17008, 0.97878,2.0856,1.333693,
+       0.97878,2.0856,1.333693,        1.020503,1.929525,1.390545,     1.219958,1.929525,1.219958,
+       1.390545,1.929525,1.020503,     1.333693,2.0856,0.97878,        1.17008,2.0856,1.17008,
+       1.17008,2.0856,1.17008, 1.219958,1.929525,1.219958,     1.390545,1.929525,1.020503,
+       1.528968,1.929525,0.795481,     1.466456,2.0856,0.762958,       1.333693,2.0856,0.97878,
+       1.333693,2.0856,0.97878,        1.390545,1.929525,1.020503,     1.528968,1.929525,0.795481,
+       1.631925,1.929525,0.54819,      1.565204,2.0856,0.525778,       1.466456,2.0856,0.762958,
+       1.466456,2.0856,0.762958,       1.528968,1.929525,0.795481,     1.631925,1.929525,0.54819,
+       1.696119,1.929525,0.28193,      1.626774,2.0856,0.270404,       1.565204,2.0856,0.525778,
+       1.565204,2.0856,0.525778,       1.631925,1.929525,0.54819,      1.696119,1.929525,0.28193,
+       1.71825,1.929525,0,     1.648,2.0856,0, 1.626774,2.0856,0.270404,
+       1.626774,2.0856,0.270404,       1.696119,1.929525,0.28193,      1.71825,1.929525,0,
+       0.292719,1.7748,1.761022,       0.28193,1.929525,1.696119,      0,1.929525,1.71825,
+       0,1.929525,1.71825,     0,1.7748,1.784, 0.292719,1.7748,1.761022,
+       0.569167,1.7748,1.694372,       0.54819,1.929525,1.631925,      0.28193,1.929525,1.696119,
+       0.28193,1.929525,1.696119,      0.292719,1.7748,1.761022,       0.569167,1.7748,1.694372,
+       0.825921,1.7748,1.587475,       0.795481,1.929525,1.528968,     0.54819,1.929525,1.631925,
+       0.54819,1.929525,1.631925,      0.569167,1.7748,1.694372,       0.825921,1.7748,1.587475,
+       1.059553,1.7748,1.443756,       1.020503,1.929525,1.390545,     0.795481,1.929525,1.528968,
+       0.795481,1.929525,1.528968,     0.825921,1.7748,1.587475,       1.059553,1.7748,1.443756,
+       1.26664,1.7748,1.26664, 1.219958,1.929525,1.219958,     1.020503,1.929525,1.390545,
+       1.020503,1.929525,1.390545,     1.059553,1.7748,1.443756,       1.26664,1.7748,1.26664,
+       1.443756,1.7748,1.059553,       1.390545,1.929525,1.020503,     1.219958,1.929525,1.219958,
+       1.219958,1.929525,1.219958,     1.26664,1.7748,1.26664, 1.443756,1.7748,1.059553,
+       1.587475,1.7748,0.825921,       1.528968,1.929525,0.795481,     1.390545,1.929525,1.020503,
+       1.390545,1.929525,1.020503,     1.443756,1.7748,1.059553,       1.587475,1.7748,0.825921,
+       1.694372,1.7748,0.569167,       1.631925,1.929525,0.54819,      1.528968,1.929525,0.795481,
+       1.528968,1.929525,0.795481,     1.587475,1.7748,0.825921,       1.694372,1.7748,0.569167,
+       1.761022,1.7748,0.292719,       1.696119,1.929525,0.28193,      1.631925,1.929525,0.54819,
+       1.631925,1.929525,0.54819,      1.694372,1.7748,0.569167,       1.761022,1.7748,0.292719,
+       1.784,1.7748,0, 1.71825,1.929525,0,     1.696119,1.929525,0.28193,
+       1.696119,1.929525,0.28193,      1.761022,1.7748,0.292719,       1.784,1.7748,0,
+       0.302523,1.621875,1.820003,     0.292719,1.7748,1.761022,       0,1.7748,1.784,
+       0,1.7748,1.784, 0,1.621875,1.84375,     0.302523,1.621875,1.820003,
+       0.58823,1.621875,1.75112,       0.569167,1.7748,1.694372,       0.292719,1.7748,1.761022,
+       0.292719,1.7748,1.761022,       0.302523,1.621875,1.820003,     0.58823,1.621875,1.75112,
+       0.853583,1.621875,1.640643,     0.825921,1.7748,1.587475,       0.569167,1.7748,1.694372,
+       0.569167,1.7748,1.694372,       0.58823,1.621875,1.75112,       0.853583,1.621875,1.640643,
+       1.09504,1.621875,1.49211,       1.059553,1.7748,1.443756,       0.825921,1.7748,1.587475,
+       0.825921,1.7748,1.587475,       0.853583,1.621875,1.640643,     1.09504,1.621875,1.49211,
+       1.309063,1.621875,1.309063,     1.26664,1.7748,1.26664, 1.059553,1.7748,1.443756,
+       1.059553,1.7748,1.443756,       1.09504,1.621875,1.49211,       1.309063,1.621875,1.309063,
+       1.49211,1.621875,1.09504,       1.443756,1.7748,1.059553,       1.26664,1.7748,1.26664,
+       1.26664,1.7748,1.26664, 1.309063,1.621875,1.309063,     1.49211,1.621875,1.09504,
+       1.640643,1.621875,0.853583,     1.587475,1.7748,0.825921,       1.443756,1.7748,1.059553,
+       1.443756,1.7748,1.059553,       1.49211,1.621875,1.09504,       1.640643,1.621875,0.853583,
+       1.75112,1.621875,0.58823,       1.694372,1.7748,0.569167,       1.587475,1.7748,0.825921,
+       1.587475,1.7748,0.825921,       1.640643,1.621875,0.853583,     1.75112,1.621875,0.58823,
+       1.820003,1.621875,0.302522,     1.761022,1.7748,0.292719,       1.694372,1.7748,0.569167,
+       1.694372,1.7748,0.569167,       1.75112,1.621875,0.58823,       1.820003,1.621875,0.302522,
+       1.84375,1.621875,0,     1.784,1.7748,0, 1.761022,1.7748,0.292719,
+       1.761022,1.7748,0.292719,       1.820003,1.621875,0.302522,     1.84375,1.621875,0,
+       0.311096,1.4712,1.87158,        0.302523,1.621875,1.820003,     0,1.621875,1.84375,
+       0,1.621875,1.84375,     0,1.4712,1.896, 0.311096,1.4712,1.87158,
+       0.6049,1.4712,1.800745, 0.58823,1.621875,1.75112,       0.302523,1.621875,1.820003,
+       0.302523,1.621875,1.820003,     0.311096,1.4712,1.87158,        0.6049,1.4712,1.800745,
+       0.877772,1.4712,1.687137,       0.853583,1.621875,1.640643,     0.58823,1.621875,1.75112,
+       0.58823,1.621875,1.75112,       0.6049,1.4712,1.800745, 0.877772,1.4712,1.687137,
+       1.126072,1.4712,1.534395,       1.09504,1.621875,1.49211,       0.853583,1.621875,1.640643,
+       0.853583,1.621875,1.640643,     0.877772,1.4712,1.687137,       1.126072,1.4712,1.534395,
+       1.34616,1.4712,1.34616, 1.309063,1.621875,1.309063,     1.09504,1.621875,1.49211,
+       1.09504,1.621875,1.49211,       1.126072,1.4712,1.534395,       1.34616,1.4712,1.34616,
+       1.534395,1.4712,1.126072,       1.49211,1.621875,1.09504,       1.309063,1.621875,1.309063,
+       1.309063,1.621875,1.309063,     1.34616,1.4712,1.34616, 1.534395,1.4712,1.126072,
+       1.687137,1.4712,0.877772,       1.640643,1.621875,0.853583,     1.49211,1.621875,1.09504,
+       1.49211,1.621875,1.09504,       1.534395,1.4712,1.126072,       1.687137,1.4712,0.877772,
+       1.800745,1.4712,0.6049, 1.75112,1.621875,0.58823,       1.640643,1.621875,0.853583,
+       1.640643,1.621875,0.853583,     1.687137,1.4712,0.877772,       1.800745,1.4712,0.6049,
+       1.87158,1.4712,0.311096,        1.820003,1.621875,0.302522,     1.75112,1.621875,0.58823,
+       1.75112,1.621875,0.58823,       1.800745,1.4712,0.6049, 1.87158,1.4712,0.311096,
+       1.896,1.4712,0, 1.84375,1.621875,0,     1.820003,1.621875,0.302522,
+       1.820003,1.621875,0.302522,     1.87158,1.4712,0.311096,        1.896,1.4712,0,
+       0.318192,1.323225,1.914272,     0.311096,1.4712,1.87158,        0,1.4712,1.896,
+       0,1.4712,1.896, 0,1.323225,1.93925,     0.318192,1.323225,1.914272,
+       0.618698,1.323225,1.841822,     0.6049,1.4712,1.800745, 0.311096,1.4712,1.87158,
+       0.311096,1.4712,1.87158,        0.318192,1.323225,1.914272,     0.618698,1.323225,1.841822,
+       0.897795,1.323225,1.725622,     0.877772,1.4712,1.687137,       0.6049,1.4712,1.800745,
+       0.6049,1.4712,1.800745, 0.618698,1.323225,1.841822,     0.897795,1.323225,1.725622,
+       1.151759,1.323225,1.569396,     1.126072,1.4712,1.534395,       0.877772,1.4712,1.687137,
+       0.877772,1.4712,1.687137,       0.897795,1.323225,1.725622,     1.151759,1.323225,1.569396,
+       1.376868,1.323225,1.376867,     1.34616,1.4712,1.34616, 1.126072,1.4712,1.534395,
+       1.126072,1.4712,1.534395,       1.151759,1.323225,1.569396,     1.376868,1.323225,1.376867,
+       1.569396,1.323225,1.151759,     1.534395,1.4712,1.126072,       1.34616,1.4712,1.34616,
+       1.34616,1.4712,1.34616, 1.376868,1.323225,1.376867,     1.569396,1.323225,1.151759,
+       1.725622,1.323225,0.897795,     1.687137,1.4712,0.877772,       1.534395,1.4712,1.126072,
+       1.534395,1.4712,1.126072,       1.569396,1.323225,1.151759,     1.725622,1.323225,0.897795,
+       1.841822,1.323225,0.618698,     1.800745,1.4712,0.6049, 1.687137,1.4712,0.877772,
+       1.687137,1.4712,0.877772,       1.725622,1.323225,0.897795,     1.841822,1.323225,0.618698,
+       1.914272,1.323225,0.318192,     1.87158,1.4712,0.311096,        1.800745,1.4712,0.6049,
+       1.800745,1.4712,0.6049, 1.841822,1.323225,0.618698,     1.914272,1.323225,0.318192,
+       1.93925,1.323225,0,     1.896,1.4712,0, 1.87158,1.4712,0.311096,
+       1.87158,1.4712,0.311096,        1.914272,1.323225,0.318192,     1.93925,1.323225,0,
+       0.323566,1.1784,1.946601,       0.318192,1.323225,1.914272,     0,1.323225,1.93925,
+       0,1.323225,1.93925,     0,1.1784,1.972, 0.323566,1.1784,1.946601,
+       0.629147,1.1784,1.872927,       0.618698,1.323225,1.841822,     0.318192,1.323225,1.914272,
+       0.318192,1.323225,1.914272,     0.323566,1.1784,1.946601,       0.629147,1.1784,1.872927,
+       0.912957,1.1784,1.754764,       0.897795,1.323225,1.725622,     0.618698,1.323225,1.841822,
+       0.618698,1.323225,1.841822,     0.629147,1.1784,1.872927,       0.912957,1.1784,1.754764,
+       1.17121,1.1784,1.5959,  1.151759,1.323225,1.569396,     0.897795,1.323225,1.725622,
+       0.897795,1.323225,1.725622,     0.912957,1.1784,1.754764,       1.17121,1.1784,1.5959,
+       1.40012,1.1784,1.40012, 1.376868,1.323225,1.376867,     1.151759,1.323225,1.569396,
+       1.151759,1.323225,1.569396,     1.17121,1.1784,1.5959,  1.40012,1.1784,1.40012,
+       1.5959,1.1784,1.17121,  1.569396,1.323225,1.151759,     1.376868,1.323225,1.376867,
+       1.376868,1.323225,1.376867,     1.40012,1.1784,1.40012, 1.5959,1.1784,1.17121,
+       1.754764,1.1784,0.912957,       1.725622,1.323225,0.897795,     1.569396,1.323225,1.151759,
+       1.569396,1.323225,1.151759,     1.5959,1.1784,1.17121,  1.754764,1.1784,0.912957,
+       1.872927,1.1784,0.629147,       1.841822,1.323225,0.618698,     1.725622,1.323225,0.897795,
+       1.725622,1.323225,0.897795,     1.754764,1.1784,0.912957,       1.872927,1.1784,0.629147,
+       1.946601,1.1784,0.323566,       1.914272,1.323225,0.318192,     1.841822,1.323225,0.618698,
+       1.841822,1.323225,0.618698,     1.872927,1.1784,0.629147,       1.946601,1.1784,0.323566,
+       1.972,1.1784,0, 1.93925,1.323225,0,     1.914272,1.323225,0.318192,
+       1.914272,1.323225,0.318192,     1.946601,1.1784,0.323566,       1.972,1.1784,0,
+       0.32697,1.037175,1.967083,      0.323566,1.1784,1.946601,       0,1.1784,1.972,
+       0,1.1784,1.972, 0,1.037175,1.99275,     0.32697,1.037175,1.967083,
+       0.635767,1.037175,1.892634,     0.629147,1.1784,1.872927,       0.323566,1.1784,1.946601,
+       0.323566,1.1784,1.946601,       0.32697,1.037175,1.967083,      0.635767,1.037175,1.892634,
+       0.922564,1.037175,1.773229,     0.912957,1.1784,1.754764,       0.629147,1.1784,1.872927,
+       0.629147,1.1784,1.872927,       0.635767,1.037175,1.892634,     0.922564,1.037175,1.773229,
+       1.183534,1.037175,1.612693,     1.17121,1.1784,1.5959,  0.912957,1.1784,1.754764,
+       0.912957,1.1784,1.754764,       0.922564,1.037175,1.773229,     1.183534,1.037175,1.612693,
+       1.414853,1.037175,1.414853,     1.40012,1.1784,1.40012, 1.17121,1.1784,1.5959,
+       1.17121,1.1784,1.5959,  1.183534,1.037175,1.612693,     1.414853,1.037175,1.414853,
+       1.612693,1.037175,1.183534,     1.5959,1.1784,1.17121,  1.40012,1.1784,1.40012,
+       1.40012,1.1784,1.40012, 1.414853,1.037175,1.414853,     1.612693,1.037175,1.183534,
+       1.773229,1.037175,0.922564,     1.754764,1.1784,0.912957,       1.5959,1.1784,1.17121,
+       1.5959,1.1784,1.17121,  1.612693,1.037175,1.183534,     1.773229,1.037175,0.922564,
+       1.892634,1.037175,0.635767,     1.872927,1.1784,0.629147,       1.754764,1.1784,0.912957,
+       1.754764,1.1784,0.912957,       1.773229,1.037175,0.922564,     1.892634,1.037175,0.635767,
+       1.967083,1.037175,0.32697,      1.946601,1.1784,0.323566,       1.872927,1.1784,0.629147,
+       1.872927,1.1784,0.629147,       1.892634,1.037175,0.635767,     1.967083,1.037175,0.32697,
+       1.99275,1.037175,0,     1.972,1.1784,0, 1.946601,1.1784,0.323566,
+       1.946601,1.1784,0.323566,       1.967083,1.037175,0.32697,      1.99275,1.037175,0,
+       0.32816,0.9,1.97424,    0.32697,1.037175,1.967083,      0,1.037175,1.99275,
+       0,1.037175,1.99275,     0,0.9,2,        0.32816,0.9,1.97424,
+       0.63808,0.9,1.89952,    0.635767,1.037175,1.892634,     0.32697,1.037175,1.967083,
+       0.32697,1.037175,1.967083,      0.32816,0.9,1.97424,    0.63808,0.9,1.89952,
+       0.92592,0.9,1.77968,    0.922564,1.037175,1.773229,     0.635767,1.037175,1.892634,
+       0.635767,1.037175,1.892634,     0.63808,0.9,1.89952,    0.92592,0.9,1.77968,
+       1.18784,0.9,1.61856,    1.183534,1.037175,1.612693,     0.922564,1.037175,1.773229,
+       0.922564,1.037175,1.773229,     0.92592,0.9,1.77968,    1.18784,0.9,1.61856,
+       1.42,0.9,1.42,  1.414853,1.037175,1.414853,     1.183534,1.037175,1.612693,
+       1.183534,1.037175,1.612693,     1.18784,0.9,1.61856,    1.42,0.9,1.42,
+       1.61856,0.9,1.18784,    1.612693,1.037175,1.183534,     1.414853,1.037175,1.414853,
+       1.414853,1.037175,1.414853,     1.42,0.9,1.42,  1.61856,0.9,1.18784,
+       1.77968,0.9,0.92592,    1.773229,1.037175,0.922564,     1.612693,1.037175,1.183534,
+       1.612693,1.037175,1.183534,     1.61856,0.9,1.18784,    1.77968,0.9,0.92592,
+       1.89952,0.9,0.63808,    1.892634,1.037175,0.635767,     1.773229,1.037175,0.922564,
+       1.773229,1.037175,0.922564,     1.77968,0.9,0.92592,    1.89952,0.9,0.63808,
+       1.97424,0.9,0.32816,    1.967083,1.037175,0.32697,      1.892634,1.037175,0.635767,
+       1.892634,1.037175,0.635767,     1.89952,0.9,0.63808,    1.97424,0.9,0.32816,
+       2,0.9,0,        1.99275,1.037175,0,     1.967083,1.037175,0.32697,
+       1.967083,1.037175,0.32697,      1.97424,0.9,0.32816,    2,0.9,0,
+       1.96042,0.771675,-0.325863,     1.97424,0.9,-0.32816,   2,0.9,0,
+       2,0.9,0,        1.986,0.771675,0,       1.96042,0.771675,-0.325863,
+       1.886223,0.771675,-0.633613,    1.89952,0.9,-0.63808,   1.97424,0.9,-0.32816,
+       1.97424,0.9,-0.32816,   1.96042,0.771675,-0.325863,     1.886223,0.771675,-0.633613,
+       1.767222,0.771675,-0.919439,    1.77968,0.9,-0.92592,   1.89952,0.9,-0.63808,
+       1.89952,0.9,-0.63808,   1.886223,0.771675,-0.633613,    1.767222,0.771675,-0.919439,
+       1.60723,0.771675,-1.179525,     1.61856,0.9,-1.18784,   1.77968,0.9,-0.92592,
+       1.77968,0.9,-0.92592,   1.767222,0.771675,-0.919439,    1.60723,0.771675,-1.179525,
+       1.41006,0.771675,-1.41006,      1.42,0.9,-1.42, 1.61856,0.9,-1.18784,
+       1.61856,0.9,-1.18784,   1.60723,0.771675,-1.179525,     1.41006,0.771675,-1.41006,
+       1.179525,0.771675,-1.60723,     1.18784,0.9,-1.61856,   1.42,0.9,-1.42,
+       1.42,0.9,-1.42, 1.41006,0.771675,-1.41006,      1.179525,0.771675,-1.60723,
+       0.919439,0.771675,-1.767222,    0.92592,0.9,-1.77968,   1.18784,0.9,-1.61856,
+       1.18784,0.9,-1.61856,   1.179525,0.771675,-1.60723,     0.919439,0.771675,-1.767222,
+       0.633613,0.771675,-1.886223,    0.63808,0.9,-1.89952,   0.92592,0.9,-1.77968,
+       0.92592,0.9,-1.77968,   0.919439,0.771675,-1.767222,    0.633613,0.771675,-1.886223,
+       0.325863,0.771675,-1.96042,     0.32816,0.9,-1.97424,   0.63808,0.9,-1.89952,
+       0.63808,0.9,-1.89952,   0.633613,0.771675,-1.886223,    0.325863,0.771675,-1.96042,
+       0,0.771675,-1.986,      0,0.9,-2,       0.32816,0.9,-1.97424,
+       0.32816,0.9,-1.97424,   0.325863,0.771675,-1.96042,     0,0.771675,-1.986,
+       1.92291,0.6564,-0.319628,       1.96042,0.771675,-0.325863,     1.986,0.771675,0,
+       1.986,0.771675,0,       1.948,0.6564,0, 1.92291,0.6564,-0.319628,
+       1.850132,0.6564,-0.62149,       1.886223,0.771675,-0.633613,    1.96042,0.771675,-0.325863,
+       1.96042,0.771675,-0.325863,     1.92291,0.6564,-0.319628,       1.850132,0.6564,-0.62149,
+       1.733408,0.6564,-0.901846,      1.767222,0.771675,-0.919439,    1.886223,0.771675,-0.633613,
+       1.886223,0.771675,-0.633613,    1.850132,0.6564,-0.62149,       1.733408,0.6564,-0.901846,
+       1.576477,0.6564,-1.156956,      1.60723,0.771675,-1.179525,     1.767222,0.771675,-0.919439,
+       1.767222,0.771675,-0.919439,    1.733408,0.6564,-0.901846,      1.576477,0.6564,-1.156956,
+       1.38308,0.6564,-1.38308,        1.41006,0.771675,-1.41006,      1.60723,0.771675,-1.179525,
+       1.60723,0.771675,-1.179525,     1.576477,0.6564,-1.156956,      1.38308,0.6564,-1.38308,
+       1.156956,0.6564,-1.576477,      1.179525,0.771675,-1.60723,     1.41006,0.771675,-1.41006,
+       1.41006,0.771675,-1.41006,      1.38308,0.6564,-1.38308,        1.156956,0.6564,-1.576477,
+       0.901846,0.6564,-1.733408,      0.919439,0.771675,-1.767222,    1.179525,0.771675,-1.60723,
+       1.179525,0.771675,-1.60723,     1.156956,0.6564,-1.576477,      0.901846,0.6564,-1.733408,
+       0.62149,0.6564,-1.850132,       0.633613,0.771675,-1.886223,    0.919439,0.771675,-1.767222,
+       0.919439,0.771675,-1.767222,    0.901846,0.6564,-1.733408,      0.62149,0.6564,-1.850132,
+       0.319628,0.6564,-1.92291,       0.325863,0.771675,-1.96042,     0.633613,0.771675,-1.886223,
+       0.633613,0.771675,-1.886223,    0.62149,0.6564,-1.850132,       0.319628,0.6564,-1.92291,
+       0,0.6564,-1.948,        0,0.771675,-1.986,      0.325863,0.771675,-1.96042,
+       0.325863,0.771675,-1.96042,     0.319628,0.6564,-1.92291,       0,0.6564,-1.948,
+       1.867631,0.553725,-0.310439,    1.92291,0.6564,-0.319628,       1.948,0.6564,0,
+       1.948,0.6564,0, 1.892,0.553725,0,       1.867631,0.553725,-0.310439,
+       1.796946,0.553725,-0.603624,    1.850132,0.6564,-0.62149,       1.92291,0.6564,-0.319628,
+       1.92291,0.6564,-0.319628,       1.867631,0.553725,-0.310439,    1.796946,0.553725,-0.603624,
+       1.683577,0.553725,-0.87592,     1.733408,0.6564,-0.901846,      1.850132,0.6564,-0.62149,
+       1.850132,0.6564,-0.62149,       1.796946,0.553725,-0.603624,    1.683577,0.553725,-0.87592,
+       1.531158,0.553725,-1.123697,    1.576477,0.6564,-1.156956,      1.733408,0.6564,-0.901846,
+       1.733408,0.6564,-0.901846,      1.683577,0.553725,-0.87592,     1.531158,0.553725,-1.123697,
+       1.34332,0.553725,-1.34332,      1.38308,0.6564,-1.38308,        1.576477,0.6564,-1.156956,
+       1.576477,0.6564,-1.156956,      1.531158,0.553725,-1.123697,    1.34332,0.553725,-1.34332,
+       1.123697,0.553725,-1.531158,    1.156956,0.6564,-1.576477,      1.38308,0.6564,-1.38308,
+       1.38308,0.6564,-1.38308,        1.34332,0.553725,-1.34332,      1.123697,0.553725,-1.531158,
+       0.87592,0.553725,-1.683577,     0.901846,0.6564,-1.733408,      1.156956,0.6564,-1.576477,
+       1.156956,0.6564,-1.576477,      1.123697,0.553725,-1.531158,    0.87592,0.553725,-1.683577,
+       0.603624,0.553725,-1.796946,    0.62149,0.6564,-1.850132,       0.901846,0.6564,-1.733408,
+       0.901846,0.6564,-1.733408,      0.87592,0.553725,-1.683577,     0.603624,0.553725,-1.796946,
+       0.310439,0.553725,-1.867631,    0.319628,0.6564,-1.92291,       0.62149,0.6564,-1.850132,
+       0.62149,0.6564,-1.850132,       0.603624,0.553725,-1.796946,    0.310439,0.553725,-1.867631,
+       0,0.553725,-1.892,      0,0.6564,-1.948,        0.319628,0.6564,-1.92291,
+       0.319628,0.6564,-1.92291,       0.310439,0.553725,-1.867631,    0,0.553725,-1.892,
+       1.800507,0.4632,-0.299282,      1.867631,0.553725,-0.310439,    1.892,0.553725,0,
+       1.892,0.553725,0,       1.824,0.4632,0, 1.800507,0.4632,-0.299282,
+       1.732362,0.4632,-0.581929,      1.796946,0.553725,-0.603624,    1.867631,0.553725,-0.310439,
+       1.867631,0.553725,-0.310439,    1.800507,0.4632,-0.299282,      1.732362,0.4632,-0.581929,
+       1.623068,0.4632,-0.844439,      1.683577,0.553725,-0.87592,     1.796946,0.553725,-0.603624,
+       1.796946,0.553725,-0.603624,    1.732362,0.4632,-0.581929,      1.623068,0.4632,-0.844439,
+       1.476127,0.4632,-1.08331,       1.531158,0.553725,-1.123697,    1.683577,0.553725,-0.87592,
+       1.683577,0.553725,-0.87592,     1.623068,0.4632,-0.844439,      1.476127,0.4632,-1.08331,
+       1.29504,0.4632,-1.29504,        1.34332,0.553725,-1.34332,      1.531158,0.553725,-1.123697,
+       1.531158,0.553725,-1.123697,    1.476127,0.4632,-1.08331,       1.29504,0.4632,-1.29504,
+       1.08331,0.4632,-1.476127,       1.123697,0.553725,-1.531158,    1.34332,0.553725,-1.34332,
+       1.34332,0.553725,-1.34332,      1.29504,0.4632,-1.29504,        1.08331,0.4632,-1.476127,
+       0.844439,0.4632,-1.623068,      0.87592,0.553725,-1.683577,     1.123697,0.553725,-1.531158,
+       1.123697,0.553725,-1.531158,    1.08331,0.4632,-1.476127,       0.844439,0.4632,-1.623068,
+       0.581929,0.4632,-1.732362,      0.603624,0.553725,-1.796946,    0.87592,0.553725,-1.683577,
+       0.87592,0.553725,-1.683577,     0.844439,0.4632,-1.623068,      0.581929,0.4632,-1.732362,
+       0.299282,0.4632,-1.800507,      0.310439,0.553725,-1.867631,    0.603624,0.553725,-1.796946,
+       0.603624,0.553725,-1.796946,    0.581929,0.4632,-1.732362,      0.299282,0.4632,-1.800507,
+       0,0.4632,-1.824,        0,0.553725,-1.892,      0.310439,0.553725,-1.867631,
+       0.310439,0.553725,-1.867631,    0.299282,0.4632,-1.800507,      0,0.4632,-1.824,
+       1.72746,0.384375,-0.28714,      1.800507,0.4632,-0.299282,      1.824,0.4632,0,
+       1.824,0.4632,0, 1.75,0.384375,0,        1.72746,0.384375,-0.28714,
+       1.66208,0.384375,-0.55832,      1.732362,0.4632,-0.581929,      1.800507,0.4632,-0.299282,
+       1.800507,0.4632,-0.299282,      1.72746,0.384375,-0.28714,      1.66208,0.384375,-0.55832,
+       1.55722,0.384375,-0.81018,      1.623068,0.4632,-0.844439,      1.732362,0.4632,-0.581929,
+       1.732362,0.4632,-0.581929,      1.66208,0.384375,-0.55832,      1.55722,0.384375,-0.81018,
+       1.41624,0.384375,-1.03936,      1.476127,0.4632,-1.08331,       1.623068,0.4632,-0.844439,
+       1.623068,0.4632,-0.844439,      1.55722,0.384375,-0.81018,      1.41624,0.384375,-1.03936,
+       1.2425,0.384375,-1.2425,        1.29504,0.4632,-1.29504,        1.476127,0.4632,-1.08331,
+       1.476127,0.4632,-1.08331,       1.41624,0.384375,-1.03936,      1.2425,0.384375,-1.2425,
+       1.03936,0.384375,-1.41624,      1.08331,0.4632,-1.476127,       1.29504,0.4632,-1.29504,
+       1.29504,0.4632,-1.29504,        1.2425,0.384375,-1.2425,        1.03936,0.384375,-1.41624,
+       0.81018,0.384375,-1.55722,      0.844439,0.4632,-1.623068,      1.08331,0.4632,-1.476127,
+       1.08331,0.4632,-1.476127,       1.03936,0.384375,-1.41624,      0.81018,0.384375,-1.55722,
+       0.55832,0.384375,-1.66208,      0.581929,0.4632,-1.732362,      0.844439,0.4632,-1.623068,
+       0.844439,0.4632,-1.623068,      0.81018,0.384375,-1.55722,      0.55832,0.384375,-1.66208,
+       0.28714,0.384375,-1.72746,      0.299282,0.4632,-1.800507,      0.581929,0.4632,-1.732362,
+       0.581929,0.4632,-1.732362,      0.55832,0.384375,-1.66208,      0.28714,0.384375,-1.72746,
+       0,0.384375,-1.75,       0,0.4632,-1.824,        0.299282,0.4632,-1.800507,
+       0.299282,0.4632,-1.800507,      0.28714,0.384375,-1.72746,      0,0.384375,-1.75,
+       1.654413,0.3168,-0.274998,      1.72746,0.384375,-0.28714,      1.75,0.384375,0,
+       1.75,0.384375,0,        1.676,0.3168,0, 1.654413,0.3168,-0.274998,
+       1.591798,0.3168,-0.534711,      1.66208,0.384375,-0.55832,      1.72746,0.384375,-0.28714,
+       1.72746,0.384375,-0.28714,      1.654413,0.3168,-0.274998,      1.591798,0.3168,-0.534711,
+       1.491372,0.3168,-0.775921,      1.55722,0.384375,-0.81018,      1.66208,0.384375,-0.55832,
+       1.66208,0.384375,-0.55832,      1.591798,0.3168,-0.534711,      1.491372,0.3168,-0.775921,
+       1.356353,0.3168,-0.99541,       1.41624,0.384375,-1.03936,      1.55722,0.384375,-0.81018,
+       1.55722,0.384375,-0.81018,      1.491372,0.3168,-0.775921,      1.356353,0.3168,-0.99541,
+       1.18996,0.3168,-1.18996,        1.2425,0.384375,-1.2425,        1.41624,0.384375,-1.03936,
+       1.41624,0.384375,-1.03936,      1.356353,0.3168,-0.99541,       1.18996,0.3168,-1.18996,
+       0.99541,0.3168,-1.356353,       1.03936,0.384375,-1.41624,      1.2425,0.384375,-1.2425,
+       1.2425,0.384375,-1.2425,        1.18996,0.3168,-1.18996,        0.99541,0.3168,-1.356353,
+       0.775921,0.3168,-1.491372,      0.81018,0.384375,-1.55722,      1.03936,0.384375,-1.41624,
+       1.03936,0.384375,-1.41624,      0.99541,0.3168,-1.356353,       0.775921,0.3168,-1.491372,
+       0.534711,0.3168,-1.591798,      0.55832,0.384375,-1.66208,      0.81018,0.384375,-1.55722,
+       0.81018,0.384375,-1.55722,      0.775921,0.3168,-1.491372,      0.534711,0.3168,-1.591798,
+       0.274998,0.3168,-1.654413,      0.28714,0.384375,-1.72746,      0.55832,0.384375,-1.66208,
+       0.55832,0.384375,-1.66208,      0.534711,0.3168,-1.591798,      0.274998,0.3168,-1.654413,
+       0,0.3168,-1.676,        0,0.384375,-1.75,       0.28714,0.384375,-1.72746,
+       0.28714,0.384375,-1.72746,      0.274998,0.3168,-1.654413,      0,0.3168,-1.676,
+       1.587289,0.260025,-0.263841,    1.654413,0.3168,-0.274998,      1.676,0.3168,0,
+       1.676,0.3168,0, 1.608,0.260025,0,       1.587289,0.260025,-0.263841,
+       1.527214,0.260025,-0.513016,    1.591798,0.3168,-0.534711,      1.654413,0.3168,-0.274998,
+       1.654413,0.3168,-0.274998,      1.587289,0.260025,-0.263841,    1.527214,0.260025,-0.513016,
+       1.430863,0.260025,-0.74444,     1.491372,0.3168,-0.775921,      1.591798,0.3168,-0.534711,
+       1.591798,0.3168,-0.534711,      1.527214,0.260025,-0.513016,    1.430863,0.260025,-0.74444,
+       1.301322,0.260025,-0.955023,    1.356353,0.3168,-0.99541,       1.491372,0.3168,-0.775921,
+       1.491372,0.3168,-0.775921,      1.430863,0.260025,-0.74444,     1.301322,0.260025,-0.955023,
+       1.14168,0.260025,-1.14168,      1.18996,0.3168,-1.18996,        1.356353,0.3168,-0.99541,
+       1.356353,0.3168,-0.99541,       1.301322,0.260025,-0.955023,    1.14168,0.260025,-1.14168,
+       0.955023,0.260025,-1.301322,    0.99541,0.3168,-1.356353,       1.18996,0.3168,-1.18996,
+       1.18996,0.3168,-1.18996,        1.14168,0.260025,-1.14168,      0.955023,0.260025,-1.301322,
+       0.74444,0.260025,-1.430863,     0.775921,0.3168,-1.491372,      0.99541,0.3168,-1.356353,
+       0.99541,0.3168,-1.356353,       0.955023,0.260025,-1.301322,    0.74444,0.260025,-1.430863,
+       0.513016,0.260025,-1.527214,    0.534711,0.3168,-1.591798,      0.775921,0.3168,-1.491372,
+       0.775921,0.3168,-1.491372,      0.74444,0.260025,-1.430863,     0.513016,0.260025,-1.527214,
+       0.263841,0.260025,-1.587289,    0.274998,0.3168,-1.654413,      0.534711,0.3168,-1.591798,
+       0.534711,0.3168,-1.591798,      0.513016,0.260025,-1.527214,    0.263841,0.260025,-1.587289,
+       0,0.260025,-1.608,      0,0.3168,-1.676,        0.274998,0.3168,-1.654413,
+       0.274998,0.3168,-1.654413,      0.263841,0.260025,-1.587289,    0,0.260025,-1.608,
+       1.53201,0.2136,-0.254652,       1.587289,0.260025,-0.263841,    1.608,0.260025,0,
+       1.608,0.260025,0,       1.552,0.2136,0, 1.53201,0.2136,-0.254652,
+       1.474028,0.2136,-0.49515,       1.527214,0.260025,-0.513016,    1.587289,0.260025,-0.263841,
+       1.587289,0.260025,-0.263841,    1.53201,0.2136,-0.254652,       1.474028,0.2136,-0.49515,
+       1.381032,0.2136,-0.718514,      1.430863,0.260025,-0.74444,     1.527214,0.260025,-0.513016,
+       1.527214,0.260025,-0.513016,    1.474028,0.2136,-0.49515,       1.381032,0.2136,-0.718514,
+       1.256003,0.2136,-0.921764,      1.301322,0.260025,-0.955023,    1.430863,0.260025,-0.74444,
+       1.430863,0.260025,-0.74444,     1.381032,0.2136,-0.718514,      1.256003,0.2136,-0.921764,
+       1.10192,0.2136,-1.10192,        1.14168,0.260025,-1.14168,      1.301322,0.260025,-0.955023,
+       1.301322,0.260025,-0.955023,    1.256003,0.2136,-0.921764,      1.10192,0.2136,-1.10192,
+       0.921764,0.2136,-1.256003,      0.955023,0.260025,-1.301322,    1.14168,0.260025,-1.14168,
+       1.14168,0.260025,-1.14168,      1.10192,0.2136,-1.10192,        0.921764,0.2136,-1.256003,
+       0.718514,0.2136,-1.381032,      0.74444,0.260025,-1.430863,     0.955023,0.260025,-1.301322,
+       0.955023,0.260025,-1.301322,    0.921764,0.2136,-1.256003,      0.718514,0.2136,-1.381032,
+       0.49515,0.2136,-1.474028,       0.513016,0.260025,-1.527214,    0.74444,0.260025,-1.430863,
+       0.74444,0.260025,-1.430863,     0.718514,0.2136,-1.381032,      0.49515,0.2136,-1.474028,
+       0.254652,0.2136,-1.53201,       0.263841,0.260025,-1.587289,    0.513016,0.260025,-1.527214,
+       0.513016,0.260025,-1.527214,    0.49515,0.2136,-1.474028,       0.254652,0.2136,-1.53201,
+       0,0.2136,-1.552,        0,0.260025,-1.608,      0.263841,0.260025,-1.587289,
+       0.263841,0.260025,-1.587289,    0.254652,0.2136,-1.53201,       0,0.2136,-1.552,
+       1.4945,0.177075,-0.248417,      1.53201,0.2136,-0.254652,       1.552,0.2136,0,
+       1.552,0.2136,0, 1.514,0.177075,0,       1.4945,0.177075,-0.248417,
+       1.437937,0.177075,-0.483027,    1.474028,0.2136,-0.49515,       1.53201,0.2136,-0.254652,
+       1.53201,0.2136,-0.254652,       1.4945,0.177075,-0.248417,      1.437937,0.177075,-0.483027,
+       1.347218,0.177075,-0.700921,    1.381032,0.2136,-0.718514,      1.474028,0.2136,-0.49515,
+       1.474028,0.2136,-0.49515,       1.437937,0.177075,-0.483027,    1.347218,0.177075,-0.700921,
+       1.22525,0.177075,-0.899195,     1.256003,0.2136,-0.921764,      1.381032,0.2136,-0.718514,
+       1.381032,0.2136,-0.718514,      1.347218,0.177075,-0.700921,    1.22525,0.177075,-0.899195,
+       1.07494,0.177075,-1.07494,      1.10192,0.2136,-1.10192,        1.256003,0.2136,-0.921764,
+       1.256003,0.2136,-0.921764,      1.22525,0.177075,-0.899195,     1.07494,0.177075,-1.07494,
+       0.899195,0.177075,-1.22525,     0.921764,0.2136,-1.256003,      1.10192,0.2136,-1.10192,
+       1.10192,0.2136,-1.10192,        1.07494,0.177075,-1.07494,      0.899195,0.177075,-1.22525,
+       0.700921,0.177075,-1.347218,    0.718514,0.2136,-1.381032,      0.921764,0.2136,-1.256003,
+       0.921764,0.2136,-1.256003,      0.899195,0.177075,-1.22525,     0.700921,0.177075,-1.347218,
+       0.483027,0.177075,-1.437937,    0.49515,0.2136,-1.474028,       0.718514,0.2136,-1.381032,
+       0.718514,0.2136,-1.381032,      0.700921,0.177075,-1.347218,    0.483027,0.177075,-1.437937,
+       0.248417,0.177075,-1.4945,      0.254652,0.2136,-1.53201,       0.49515,0.2136,-1.474028,
+       0.49515,0.2136,-1.474028,       0.483027,0.177075,-1.437937,    0.248417,0.177075,-1.4945,
+       0,0.177075,-1.514,      0,0.2136,-1.552,        0.254652,0.2136,-1.53201,
+       0.254652,0.2136,-1.53201,       0.248417,0.177075,-1.4945,      0,0.177075,-1.514,
+       1.48068,0.15,-0.24612,  1.4945,0.177075,-0.248417,      1.514,0.177075,0,
+       1.514,0.177075,0,       1.5,0.15,0,     1.48068,0.15,-0.24612,
+       1.42464,0.15,-0.47856,  1.437937,0.177075,-0.483027,    1.4945,0.177075,-0.248417,
+       1.4945,0.177075,-0.248417,      1.48068,0.15,-0.24612,  1.42464,0.15,-0.47856,
+       1.33476,0.15,-0.69444,  1.347218,0.177075,-0.700921,    1.437937,0.177075,-0.483027,
+       1.437937,0.177075,-0.483027,    1.42464,0.15,-0.47856,  1.33476,0.15,-0.69444,
+       1.21392,0.15,-0.89088,  1.22525,0.177075,-0.899195,     1.347218,0.177075,-0.700921,
+       1.347218,0.177075,-0.700921,    1.33476,0.15,-0.69444,  1.21392,0.15,-0.89088,
+       1.065,0.15,-1.065,      1.07494,0.177075,-1.07494,      1.22525,0.177075,-0.899195,
+       1.22525,0.177075,-0.899195,     1.21392,0.15,-0.89088,  1.065,0.15,-1.065,
+       0.89088,0.15,-1.21392,  0.899195,0.177075,-1.22525,     1.07494,0.177075,-1.07494,
+       1.07494,0.177075,-1.07494,      1.065,0.15,-1.065,      0.89088,0.15,-1.21392,
+       0.69444,0.15,-1.33476,  0.700921,0.177075,-1.347218,    0.899195,0.177075,-1.22525,
+       0.899195,0.177075,-1.22525,     0.89088,0.15,-1.21392,  0.69444,0.15,-1.33476,
+       0.47856,0.15,-1.42464,  0.483027,0.177075,-1.437937,    0.700921,0.177075,-1.347218,
+       0.700921,0.177075,-1.347218,    0.69444,0.15,-1.33476,  0.47856,0.15,-1.42464,
+       0.24612,0.15,-1.48068,  0.248417,0.177075,-1.4945,      0.483027,0.177075,-1.437937,
+       0.483027,0.177075,-1.437937,    0.47856,0.15,-1.42464,  0.24612,0.15,-1.48068,
+       0,0.15,-1.5,    0,0.177075,-1.514,      0.248417,0.177075,-1.4945,
+       0.248417,0.177075,-1.4945,      0.24612,0.15,-1.48068,  0,0.15,-1.5,
+       -0.325863,0.771675,-1.96042,    -0.32816,0.9,-1.97424,  0,0.9,-2,
+       0,0.9,-2,       0,0.771675,-1.986,      -0.325863,0.771675,-1.96042,
+       -0.633613,0.771675,-1.886223,   -0.63808,0.9,-1.89952,  -0.32816,0.9,-1.97424,
+       -0.32816,0.9,-1.97424,  -0.325863,0.771675,-1.96042,    -0.633613,0.771675,-1.886223,
+       -0.919439,0.771675,-1.767222,   -0.92592,0.9,-1.77968,  -0.63808,0.9,-1.89952,
+       -0.63808,0.9,-1.89952,  -0.633613,0.771675,-1.886223,   -0.919439,0.771675,-1.767222,
+       -1.179525,0.771675,-1.60723,    -1.18784,0.9,-1.61856,  -0.92592,0.9,-1.77968,
+       -0.92592,0.9,-1.77968,  -0.919439,0.771675,-1.767222,   -1.179525,0.771675,-1.60723,
+       -1.41006,0.771675,-1.41006,     -1.42,0.9,-1.42,        -1.18784,0.9,-1.61856,
+       -1.18784,0.9,-1.61856,  -1.179525,0.771675,-1.60723,    -1.41006,0.771675,-1.41006,
+       -1.60723,0.771675,-1.179525,    -1.61856,0.9,-1.18784,  -1.42,0.9,-1.42,
+       -1.42,0.9,-1.42,        -1.41006,0.771675,-1.41006,     -1.60723,0.771675,-1.179525,
+       -1.767222,0.771675,-0.919439,   -1.77968,0.9,-0.92592,  -1.61856,0.9,-1.18784,
+       -1.61856,0.9,-1.18784,  -1.60723,0.771675,-1.179525,    -1.767222,0.771675,-0.919439,
+       -1.886223,0.771675,-0.633613,   -1.89952,0.9,-0.63808,  -1.77968,0.9,-0.92592,
+       -1.77968,0.9,-0.92592,  -1.767222,0.771675,-0.919439,   -1.886223,0.771675,-0.633613,
+       -1.96042,0.771675,-0.325863,    -1.97424,0.9,-0.32816,  -1.89952,0.9,-0.63808,
+       -1.89952,0.9,-0.63808,  -1.886223,0.771675,-0.633613,   -1.96042,0.771675,-0.325863,
+       -1.986,0.771675,0,      -2,0.9,0,       -1.97424,0.9,-0.32816,
+       -1.97424,0.9,-0.32816,  -1.96042,0.771675,-0.325863,    -1.986,0.771675,0,
+       -0.319628,0.6564,-1.92291,      -0.325863,0.771675,-1.96042,    0,0.771675,-1.986,
+       0,0.771675,-1.986,      0,0.6564,-1.948,        -0.319628,0.6564,-1.92291,
+       -0.62149,0.6564,-1.850132,      -0.633613,0.771675,-1.886223,   -0.325863,0.771675,-1.96042,
+       -0.325863,0.771675,-1.96042,    -0.319628,0.6564,-1.92291,      -0.62149,0.6564,-1.850132,
+       -0.901846,0.6564,-1.733408,     -0.919439,0.771675,-1.767222,   -0.633613,0.771675,-1.886223,
+       -0.633613,0.771675,-1.886223,   -0.62149,0.6564,-1.850132,      -0.901846,0.6564,-1.733408,
+       -1.156956,0.6564,-1.576477,     -1.179525,0.771675,-1.60723,    -0.919439,0.771675,-1.767222,
+       -0.919439,0.771675,-1.767222,   -0.901846,0.6564,-1.733408,     -1.156956,0.6564,-1.576477,
+       -1.38308,0.6564,-1.38308,       -1.41006,0.771675,-1.41006,     -1.179525,0.771675,-1.60723,
+       -1.179525,0.771675,-1.60723,    -1.156956,0.6564,-1.576477,     -1.38308,0.6564,-1.38308,
+       -1.576477,0.6564,-1.156956,     -1.60723,0.771675,-1.179525,    -1.41006,0.771675,-1.41006,
+       -1.41006,0.771675,-1.41006,     -1.38308,0.6564,-1.38308,       -1.576477,0.6564,-1.156956,
+       -1.733408,0.6564,-0.901846,     -1.767222,0.771675,-0.919439,   -1.60723,0.771675,-1.179525,
+       -1.60723,0.771675,-1.179525,    -1.576477,0.6564,-1.156956,     -1.733408,0.6564,-0.901846,
+       -1.850132,0.6564,-0.62149,      -1.886223,0.771675,-0.633613,   -1.767222,0.771675,-0.919439,
+       -1.767222,0.771675,-0.919439,   -1.733408,0.6564,-0.901846,     -1.850132,0.6564,-0.62149,
+       -1.92291,0.6564,-0.319628,      -1.96042,0.771675,-0.325863,    -1.886223,0.771675,-0.633613,
+       -1.886223,0.771675,-0.633613,   -1.850132,0.6564,-0.62149,      -1.92291,0.6564,-0.319628,
+       -1.948,0.6564,0,        -1.986,0.771675,0,      -1.96042,0.771675,-0.325863,
+       -1.96042,0.771675,-0.325863,    -1.92291,0.6564,-0.319628,      -1.948,0.6564,0,
+       -0.310439,0.553725,-1.867631,   -0.319628,0.6564,-1.92291,      0,0.6564,-1.948,
+       0,0.6564,-1.948,        0,0.553725,-1.892,      -0.310439,0.553725,-1.867631,
+       -0.603624,0.553725,-1.796946,   -0.62149,0.6564,-1.850132,      -0.319628,0.6564,-1.92291,
+       -0.319628,0.6564,-1.92291,      -0.310439,0.553725,-1.867631,   -0.603624,0.553725,-1.796946,
+       -0.87592,0.553725,-1.683577,    -0.901846,0.6564,-1.733408,     -0.62149,0.6564,-1.850132,
+       -0.62149,0.6564,-1.850132,      -0.603624,0.553725,-1.796946,   -0.87592,0.553725,-1.683577,
+       -1.123697,0.553725,-1.531158,   -1.156956,0.6564,-1.576477,     -0.901846,0.6564,-1.733408,
+       -0.901846,0.6564,-1.733408,     -0.87592,0.553725,-1.683577,    -1.123697,0.553725,-1.531158,
+       -1.34332,0.553725,-1.34332,     -1.38308,0.6564,-1.38308,       -1.156956,0.6564,-1.576477,
+       -1.156956,0.6564,-1.576477,     -1.123697,0.553725,-1.531158,   -1.34332,0.553725,-1.34332,
+       -1.531158,0.553725,-1.123697,   -1.576477,0.6564,-1.156956,     -1.38308,0.6564,-1.38308,
+       -1.38308,0.6564,-1.38308,       -1.34332,0.553725,-1.34332,     -1.531158,0.553725,-1.123697,
+       -1.683577,0.553725,-0.87592,    -1.733408,0.6564,-0.901846,     -1.576477,0.6564,-1.156956,
+       -1.576477,0.6564,-1.156956,     -1.531158,0.553725,-1.123697,   -1.683577,0.553725,-0.87592,
+       -1.796946,0.553725,-0.603624,   -1.850132,0.6564,-0.62149,      -1.733408,0.6564,-0.901846,
+       -1.733408,0.6564,-0.901846,     -1.683577,0.553725,-0.87592,    -1.796946,0.553725,-0.603624,
+       -1.867631,0.553725,-0.310439,   -1.92291,0.6564,-0.319628,      -1.850132,0.6564,-0.62149,
+       -1.850132,0.6564,-0.62149,      -1.796946,0.553725,-0.603624,   -1.867631,0.553725,-0.310439,
+       -1.892,0.553725,0,      -1.948,0.6564,0,        -1.92291,0.6564,-0.319628,
+       -1.92291,0.6564,-0.319628,      -1.867631,0.553725,-0.310439,   -1.892,0.553725,0,
+       -0.299282,0.4632,-1.800507,     -0.310439,0.553725,-1.867631,   0,0.553725,-1.892,
+       0,0.553725,-1.892,      0,0.4632,-1.824,        -0.299282,0.4632,-1.800507,
+       -0.581929,0.4632,-1.732362,     -0.603624,0.553725,-1.796946,   -0.310439,0.553725,-1.867631,
+       -0.310439,0.553725,-1.867631,   -0.299282,0.4632,-1.800507,     -0.581929,0.4632,-1.732362,
+       -0.844439,0.4632,-1.623068,     -0.87592,0.553725,-1.683577,    -0.603624,0.553725,-1.796946,
+       -0.603624,0.553725,-1.796946,   -0.581929,0.4632,-1.732362,     -0.844439,0.4632,-1.623068,
+       -1.08331,0.4632,-1.476127,      -1.123697,0.553725,-1.531158,   -0.87592,0.553725,-1.683577,
+       -0.87592,0.553725,-1.683577,    -0.844439,0.4632,-1.623068,     -1.08331,0.4632,-1.476127,
+       -1.29504,0.4632,-1.29504,       -1.34332,0.553725,-1.34332,     -1.123697,0.553725,-1.531158,
+       -1.123697,0.553725,-1.531158,   -1.08331,0.4632,-1.476127,      -1.29504,0.4632,-1.29504,
+       -1.476127,0.4632,-1.08331,      -1.531158,0.553725,-1.123697,   -1.34332,0.553725,-1.34332,
+       -1.34332,0.553725,-1.34332,     -1.29504,0.4632,-1.29504,       -1.476127,0.4632,-1.08331,
+       -1.623068,0.4632,-0.844439,     -1.683577,0.553725,-0.87592,    -1.531158,0.553725,-1.123697,
+       -1.531158,0.553725,-1.123697,   -1.476127,0.4632,-1.08331,      -1.623068,0.4632,-0.844439,
+       -1.732362,0.4632,-0.581929,     -1.796946,0.553725,-0.603624,   -1.683577,0.553725,-0.87592,
+       -1.683577,0.553725,-0.87592,    -1.623068,0.4632,-0.844439,     -1.732362,0.4632,-0.581929,
+       -1.800507,0.4632,-0.299282,     -1.867631,0.553725,-0.310439,   -1.796946,0.553725,-0.603624,
+       -1.796946,0.553725,-0.603624,   -1.732362,0.4632,-0.581929,     -1.800507,0.4632,-0.299282,
+       -1.824,0.4632,0,        -1.892,0.553725,0,      -1.867631,0.553725,-0.310439,
+       -1.867631,0.553725,-0.310439,   -1.800507,0.4632,-0.299282,     -1.824,0.4632,0,
+       -0.28714,0.384375,-1.72746,     -0.299282,0.4632,-1.800507,     0,0.4632,-1.824,
+       0,0.4632,-1.824,        0,0.384375,-1.75,       -0.28714,0.384375,-1.72746,
+       -0.55832,0.384375,-1.66208,     -0.581929,0.4632,-1.732362,     -0.299282,0.4632,-1.800507,
+       -0.299282,0.4632,-1.800507,     -0.28714,0.384375,-1.72746,     -0.55832,0.384375,-1.66208,
+       -0.81018,0.384375,-1.55722,     -0.844439,0.4632,-1.623068,     -0.581929,0.4632,-1.732362,
+       -0.581929,0.4632,-1.732362,     -0.55832,0.384375,-1.66208,     -0.81018,0.384375,-1.55722,
+       -1.03936,0.384375,-1.41624,     -1.08331,0.4632,-1.476127,      -0.844439,0.4632,-1.623068,
+       -0.844439,0.4632,-1.623068,     -0.81018,0.384375,-1.55722,     -1.03936,0.384375,-1.41624,
+       -1.2425,0.384375,-1.2425,       -1.29504,0.4632,-1.29504,       -1.08331,0.4632,-1.476127,
+       -1.08331,0.4632,-1.476127,      -1.03936,0.384375,-1.41624,     -1.2425,0.384375,-1.2425,
+       -1.41624,0.384375,-1.03936,     -1.476127,0.4632,-1.08331,      -1.29504,0.4632,-1.29504,
+       -1.29504,0.4632,-1.29504,       -1.2425,0.384375,-1.2425,       -1.41624,0.384375,-1.03936,
+       -1.55722,0.384375,-0.81018,     -1.623068,0.4632,-0.844439,     -1.476127,0.4632,-1.08331,
+       -1.476127,0.4632,-1.08331,      -1.41624,0.384375,-1.03936,     -1.55722,0.384375,-0.81018,
+       -1.66208,0.384375,-0.55832,     -1.732362,0.4632,-0.581929,     -1.623068,0.4632,-0.844439,
+       -1.623068,0.4632,-0.844439,     -1.55722,0.384375,-0.81018,     -1.66208,0.384375,-0.55832,
+       -1.72746,0.384375,-0.28714,     -1.800507,0.4632,-0.299282,     -1.732362,0.4632,-0.581929,
+       -1.732362,0.4632,-0.581929,     -1.66208,0.384375,-0.55832,     -1.72746,0.384375,-0.28714,
+       -1.75,0.384375,0,       -1.824,0.4632,0,        -1.800507,0.4632,-0.299282,
+       -1.800507,0.4632,-0.299282,     -1.72746,0.384375,-0.28714,     -1.75,0.384375,0,
+       -0.274998,0.3168,-1.654413,     -0.28714,0.384375,-1.72746,     0,0.384375,-1.75,
+       0,0.384375,-1.75,       0,0.3168,-1.676,        -0.274998,0.3168,-1.654413,
+       -0.534711,0.3168,-1.591798,     -0.55832,0.384375,-1.66208,     -0.28714,0.384375,-1.72746,
+       -0.28714,0.384375,-1.72746,     -0.274998,0.3168,-1.654413,     -0.534711,0.3168,-1.591798,
+       -0.775921,0.3168,-1.491372,     -0.81018,0.384375,-1.55722,     -0.55832,0.384375,-1.66208,
+       -0.55832,0.384375,-1.66208,     -0.534711,0.3168,-1.591798,     -0.775921,0.3168,-1.491372,
+       -0.99541,0.3168,-1.356353,      -1.03936,0.384375,-1.41624,     -0.81018,0.384375,-1.55722,
+       -0.81018,0.384375,-1.55722,     -0.775921,0.3168,-1.491372,     -0.99541,0.3168,-1.356353,
+       -1.18996,0.3168,-1.18996,       -1.2425,0.384375,-1.2425,       -1.03936,0.384375,-1.41624,
+       -1.03936,0.384375,-1.41624,     -0.99541,0.3168,-1.356353,      -1.18996,0.3168,-1.18996,
+       -1.356353,0.3168,-0.99541,      -1.41624,0.384375,-1.03936,     -1.2425,0.384375,-1.2425,
+       -1.2425,0.384375,-1.2425,       -1.18996,0.3168,-1.18996,       -1.356353,0.3168,-0.99541,
+       -1.491372,0.3168,-0.775921,     -1.55722,0.384375,-0.81018,     -1.41624,0.384375,-1.03936,
+       -1.41624,0.384375,-1.03936,     -1.356353,0.3168,-0.99541,      -1.491372,0.3168,-0.775921,
+       -1.591798,0.3168,-0.534711,     -1.66208,0.384375,-0.55832,     -1.55722,0.384375,-0.81018,
+       -1.55722,0.384375,-0.81018,     -1.491372,0.3168,-0.775921,     -1.591798,0.3168,-0.534711,
+       -1.654413,0.3168,-0.274998,     -1.72746,0.384375,-0.28714,     -1.66208,0.384375,-0.55832,
+       -1.66208,0.384375,-0.55832,     -1.591798,0.3168,-0.534711,     -1.654413,0.3168,-0.274998,
+       -1.676,0.3168,0,        -1.75,0.384375,0,       -1.72746,0.384375,-0.28714,
+       -1.72746,0.384375,-0.28714,     -1.654413,0.3168,-0.274998,     -1.676,0.3168,0,
+       -0.263841,0.260025,-1.587289,   -0.274998,0.3168,-1.654413,     0,0.3168,-1.676,
+       0,0.3168,-1.676,        0,0.260025,-1.608,      -0.263841,0.260025,-1.587289,
+       -0.513016,0.260025,-1.527214,   -0.534711,0.3168,-1.591798,     -0.274998,0.3168,-1.654413,
+       -0.274998,0.3168,-1.654413,     -0.263841,0.260025,-1.587289,   -0.513016,0.260025,-1.527214,
+       -0.74444,0.260025,-1.430863,    -0.775921,0.3168,-1.491372,     -0.534711,0.3168,-1.591798,
+       -0.534711,0.3168,-1.591798,     -0.513016,0.260025,-1.527214,   -0.74444,0.260025,-1.430863,
+       -0.955023,0.260025,-1.301322,   -0.99541,0.3168,-1.356353,      -0.775921,0.3168,-1.491372,
+       -0.775921,0.3168,-1.491372,     -0.74444,0.260025,-1.430863,    -0.955023,0.260025,-1.301322,
+       -1.14168,0.260025,-1.14168,     -1.18996,0.3168,-1.18996,       -0.99541,0.3168,-1.356353,
+       -0.99541,0.3168,-1.356353,      -0.955023,0.260025,-1.301322,   -1.14168,0.260025,-1.14168,
+       -1.301322,0.260025,-0.955023,   -1.356353,0.3168,-0.99541,      -1.18996,0.3168,-1.18996,
+       -1.18996,0.3168,-1.18996,       -1.14168,0.260025,-1.14168,     -1.301322,0.260025,-0.955023,
+       -1.430863,0.260025,-0.74444,    -1.491372,0.3168,-0.775921,     -1.356353,0.3168,-0.99541,
+       -1.356353,0.3168,-0.99541,      -1.301322,0.260025,-0.955023,   -1.430863,0.260025,-0.74444,
+       -1.527214,0.260025,-0.513016,   -1.591798,0.3168,-0.534711,     -1.491372,0.3168,-0.775921,
+       -1.491372,0.3168,-0.775921,     -1.430863,0.260025,-0.74444,    -1.527214,0.260025,-0.513016,
+       -1.587289,0.260025,-0.263841,   -1.654413,0.3168,-0.274998,     -1.591798,0.3168,-0.534711,
+       -1.591798,0.3168,-0.534711,     -1.527214,0.260025,-0.513016,   -1.587289,0.260025,-0.263841,
+       -1.608,0.260025,0,      -1.676,0.3168,0,        -1.654413,0.3168,-0.274998,
+       -1.654413,0.3168,-0.274998,     -1.587289,0.260025,-0.263841,   -1.608,0.260025,0,
+       -0.254652,0.2136,-1.53201,      -0.263841,0.260025,-1.587289,   0,0.260025,-1.608,
+       0,0.260025,-1.608,      0,0.2136,-1.552,        -0.254652,0.2136,-1.53201,
+       -0.49515,0.2136,-1.474028,      -0.513016,0.260025,-1.527214,   -0.263841,0.260025,-1.587289,
+       -0.263841,0.260025,-1.587289,   -0.254652,0.2136,-1.53201,      -0.49515,0.2136,-1.474028,
+       -0.718514,0.2136,-1.381032,     -0.74444,0.260025,-1.430863,    -0.513016,0.260025,-1.527214,
+       -0.513016,0.260025,-1.527214,   -0.49515,0.2136,-1.474028,      -0.718514,0.2136,-1.381032,
+       -0.921764,0.2136,-1.256003,     -0.955023,0.260025,-1.301322,   -0.74444,0.260025,-1.430863,
+       -0.74444,0.260025,-1.430863,    -0.718514,0.2136,-1.381032,     -0.921764,0.2136,-1.256003,
+       -1.10192,0.2136,-1.10192,       -1.14168,0.260025,-1.14168,     -0.955023,0.260025,-1.301322,
+       -0.955023,0.260025,-1.301322,   -0.921764,0.2136,-1.256003,     -1.10192,0.2136,-1.10192,
+       -1.256003,0.2136,-0.921764,     -1.301322,0.260025,-0.955023,   -1.14168,0.260025,-1.14168,
+       -1.14168,0.260025,-1.14168,     -1.10192,0.2136,-1.10192,       -1.256003,0.2136,-0.921764,
+       -1.381032,0.2136,-0.718514,     -1.430863,0.260025,-0.74444,    -1.301322,0.260025,-0.955023,
+       -1.301322,0.260025,-0.955023,   -1.256003,0.2136,-0.921764,     -1.381032,0.2136,-0.718514,
+       -1.474028,0.2136,-0.49515,      -1.527214,0.260025,-0.513016,   -1.430863,0.260025,-0.74444,
+       -1.430863,0.260025,-0.74444,    -1.381032,0.2136,-0.718514,     -1.474028,0.2136,-0.49515,
+       -1.53201,0.2136,-0.254652,      -1.587289,0.260025,-0.263841,   -1.527214,0.260025,-0.513016,
+       -1.527214,0.260025,-0.513016,   -1.474028,0.2136,-0.49515,      -1.53201,0.2136,-0.254652,
+       -1.552,0.2136,0,        -1.608,0.260025,0,      -1.587289,0.260025,-0.263841,
+       -1.587289,0.260025,-0.263841,   -1.53201,0.2136,-0.254652,      -1.552,0.2136,0,
+       -0.248417,0.177075,-1.4945,     -0.254652,0.2136,-1.53201,      0,0.2136,-1.552,
+       0,0.2136,-1.552,        0,0.177075,-1.514,      -0.248417,0.177075,-1.4945,
+       -0.483027,0.177075,-1.437937,   -0.49515,0.2136,-1.474028,      -0.254652,0.2136,-1.53201,
+       -0.254652,0.2136,-1.53201,      -0.248417,0.177075,-1.4945,     -0.483027,0.177075,-1.437937,
+       -0.700921,0.177075,-1.347218,   -0.718514,0.2136,-1.381032,     -0.49515,0.2136,-1.474028,
+       -0.49515,0.2136,-1.474028,      -0.483027,0.177075,-1.437937,   -0.700921,0.177075,-1.347218,
+       -0.899195,0.177075,-1.22525,    -0.921764,0.2136,-1.256003,     -0.718514,0.2136,-1.381032,
+       -0.718514,0.2136,-1.381032,     -0.700921,0.177075,-1.347218,   -0.899195,0.177075,-1.22525,
+       -1.07494,0.177075,-1.07494,     -1.10192,0.2136,-1.10192,       -0.921764,0.2136,-1.256003,
+       -0.921764,0.2136,-1.256003,     -0.899195,0.177075,-1.22525,    -1.07494,0.177075,-1.07494,
+       -1.22525,0.177075,-0.899195,    -1.256003,0.2136,-0.921764,     -1.10192,0.2136,-1.10192,
+       -1.10192,0.2136,-1.10192,       -1.07494,0.177075,-1.07494,     -1.22525,0.177075,-0.899195,
+       -1.347218,0.177075,-0.700921,   -1.381032,0.2136,-0.718514,     -1.256003,0.2136,-0.921764,
+       -1.256003,0.2136,-0.921764,     -1.22525,0.177075,-0.899195,    -1.347218,0.177075,-0.700921,
+       -1.437937,0.177075,-0.483027,   -1.474028,0.2136,-0.49515,      -1.381032,0.2136,-0.718514,
+       -1.381032,0.2136,-0.718514,     -1.347218,0.177075,-0.700921,   -1.437937,0.177075,-0.483027,
+       -1.4945,0.177075,-0.248417,     -1.53201,0.2136,-0.254652,      -1.474028,0.2136,-0.49515,
+       -1.474028,0.2136,-0.49515,      -1.437937,0.177075,-0.483027,   -1.4945,0.177075,-0.248417,
+       -1.514,0.177075,0,      -1.552,0.2136,0,        -1.53201,0.2136,-0.254652,
+       -1.53201,0.2136,-0.254652,      -1.4945,0.177075,-0.248417,     -1.514,0.177075,0,
+       -0.24612,0.15,-1.48068, -0.248417,0.177075,-1.4945,     0,0.177075,-1.514,
+       0,0.177075,-1.514,      0,0.15,-1.5,    -0.24612,0.15,-1.48068,
+       -0.47856,0.15,-1.42464, -0.483027,0.177075,-1.437937,   -0.248417,0.177075,-1.4945,
+       -0.248417,0.177075,-1.4945,     -0.24612,0.15,-1.48068, -0.47856,0.15,-1.42464,
+       -0.69444,0.15,-1.33476, -0.700921,0.177075,-1.347218,   -0.483027,0.177075,-1.437937,
+       -0.483027,0.177075,-1.437937,   -0.47856,0.15,-1.42464, -0.69444,0.15,-1.33476,
+       -0.89088,0.15,-1.21392, -0.899195,0.177075,-1.22525,    -0.700921,0.177075,-1.347218,
+       -0.700921,0.177075,-1.347218,   -0.69444,0.15,-1.33476, -0.89088,0.15,-1.21392,
+       -1.065,0.15,-1.065,     -1.07494,0.177075,-1.07494,     -0.899195,0.177075,-1.22525,
+       -0.899195,0.177075,-1.22525,    -0.89088,0.15,-1.21392, -1.065,0.15,-1.065,
+       -1.21392,0.15,-0.89088, -1.22525,0.177075,-0.899195,    -1.07494,0.177075,-1.07494,
+       -1.07494,0.177075,-1.07494,     -1.065,0.15,-1.065,     -1.21392,0.15,-0.89088,
+       -1.33476,0.15,-0.69444, -1.347218,0.177075,-0.700921,   -1.22525,0.177075,-0.899195,
+       -1.22525,0.177075,-0.899195,    -1.21392,0.15,-0.89088, -1.33476,0.15,-0.69444,
+       -1.42464,0.15,-0.47856, -1.437937,0.177075,-0.483027,   -1.347218,0.177075,-0.700921,
+       -1.347218,0.177075,-0.700921,   -1.33476,0.15,-0.69444, -1.42464,0.15,-0.47856,
+       -1.48068,0.15,-0.24612, -1.4945,0.177075,-0.248417,     -1.437937,0.177075,-0.483027,
+       -1.437937,0.177075,-0.483027,   -1.42464,0.15,-0.47856, -1.48068,0.15,-0.24612,
+       -1.5,0.15,0,    -1.514,0.177075,0,      -1.4945,0.177075,-0.248417,
+       -1.4945,0.177075,-0.248417,     -1.48068,0.15,-0.24612, -1.5,0.15,0,
+       -1.96042,0.771675,0.325863,     -1.97424,0.9,0.32816,   -2,0.9,0,
+       -2,0.9,0,       -1.986,0.771675,0,      -1.96042,0.771675,0.325863,
+       -1.886223,0.771675,0.633613,    -1.89952,0.9,0.63808,   -1.97424,0.9,0.32816,
+       -1.97424,0.9,0.32816,   -1.96042,0.771675,0.325863,     -1.886223,0.771675,0.633613,
+       -1.767222,0.771675,0.919439,    -1.77968,0.9,0.92592,   -1.89952,0.9,0.63808,
+       -1.89952,0.9,0.63808,   -1.886223,0.771675,0.633613,    -1.767222,0.771675,0.919439,
+       -1.60723,0.771675,1.179525,     -1.61856,0.9,1.18784,   -1.77968,0.9,0.92592,
+       -1.77968,0.9,0.92592,   -1.767222,0.771675,0.919439,    -1.60723,0.771675,1.179525,
+       -1.41006,0.771675,1.41006,      -1.42,0.9,1.42, -1.61856,0.9,1.18784,
+       -1.61856,0.9,1.18784,   -1.60723,0.771675,1.179525,     -1.41006,0.771675,1.41006,
+       -1.179525,0.771675,1.60723,     -1.18784,0.9,1.61856,   -1.42,0.9,1.42,
+       -1.42,0.9,1.42, -1.41006,0.771675,1.41006,      -1.179525,0.771675,1.60723,
+       -0.919439,0.771675,1.767222,    -0.92592,0.9,1.77968,   -1.18784,0.9,1.61856,
+       -1.18784,0.9,1.61856,   -1.179525,0.771675,1.60723,     -0.919439,0.771675,1.767222,
+       -0.633613,0.771675,1.886223,    -0.63808,0.9,1.89952,   -0.92592,0.9,1.77968,
+       -0.92592,0.9,1.77968,   -0.919439,0.771675,1.767222,    -0.633613,0.771675,1.886223,
+       -0.325863,0.771675,1.96042,     -0.32816,0.9,1.97424,   -0.63808,0.9,1.89952,
+       -0.63808,0.9,1.89952,   -0.633613,0.771675,1.886223,    -0.325863,0.771675,1.96042,
+       0,0.771675,1.986,       0,0.9,2,        -0.32816,0.9,1.97424,
+       -0.32816,0.9,1.97424,   -0.325863,0.771675,1.96042,     0,0.771675,1.986,
+       -1.92291,0.6564,0.319628,       -1.96042,0.771675,0.325863,     -1.986,0.771675,0,
+       -1.986,0.771675,0,      -1.948,0.6564,0,        -1.92291,0.6564,0.319628,
+       -1.850132,0.6564,0.62149,       -1.886223,0.771675,0.633613,    -1.96042,0.771675,0.325863,
+       -1.96042,0.771675,0.325863,     -1.92291,0.6564,0.319628,       -1.850132,0.6564,0.62149,
+       -1.733408,0.6564,0.901846,      -1.767222,0.771675,0.919439,    -1.886223,0.771675,0.633613,
+       -1.886223,0.771675,0.633613,    -1.850132,0.6564,0.62149,       -1.733408,0.6564,0.901846,
+       -1.576477,0.6564,1.156956,      -1.60723,0.771675,1.179525,     -1.767222,0.771675,0.919439,
+       -1.767222,0.771675,0.919439,    -1.733408,0.6564,0.901846,      -1.576477,0.6564,1.156956,
+       -1.38308,0.6564,1.38308,        -1.41006,0.771675,1.41006,      -1.60723,0.771675,1.179525,
+       -1.60723,0.771675,1.179525,     -1.576477,0.6564,1.156956,      -1.38308,0.6564,1.38308,
+       -1.156956,0.6564,1.576477,      -1.179525,0.771675,1.60723,     -1.41006,0.771675,1.41006,
+       -1.41006,0.771675,1.41006,      -1.38308,0.6564,1.38308,        -1.156956,0.6564,1.576477,
+       -0.901846,0.6564,1.733408,      -0.919439,0.771675,1.767222,    -1.179525,0.771675,1.60723,
+       -1.179525,0.771675,1.60723,     -1.156956,0.6564,1.576477,      -0.901846,0.6564,1.733408,
+       -0.62149,0.6564,1.850132,       -0.633613,0.771675,1.886223,    -0.919439,0.771675,1.767222,
+       -0.919439,0.771675,1.767222,    -0.901846,0.6564,1.733408,      -0.62149,0.6564,1.850132,
+       -0.319628,0.6564,1.92291,       -0.325863,0.771675,1.96042,     -0.633613,0.771675,1.886223,
+       -0.633613,0.771675,1.886223,    -0.62149,0.6564,1.850132,       -0.319628,0.6564,1.92291,
+       0,0.6564,1.948, 0,0.771675,1.986,       -0.325863,0.771675,1.96042,
+       -0.325863,0.771675,1.96042,     -0.319628,0.6564,1.92291,       0,0.6564,1.948,
+       -1.867631,0.553725,0.310439,    -1.92291,0.6564,0.319628,       -1.948,0.6564,0,
+       -1.948,0.6564,0,        -1.892,0.553725,0,      -1.867631,0.553725,0.310439,
+       -1.796946,0.553725,0.603624,    -1.850132,0.6564,0.62149,       -1.92291,0.6564,0.319628,
+       -1.92291,0.6564,0.319628,       -1.867631,0.553725,0.310439,    -1.796946,0.553725,0.603624,
+       -1.683577,0.553725,0.87592,     -1.733408,0.6564,0.901846,      -1.850132,0.6564,0.62149,
+       -1.850132,0.6564,0.62149,       -1.796946,0.553725,0.603624,    -1.683577,0.553725,0.87592,
+       -1.531158,0.553725,1.123697,    -1.576477,0.6564,1.156956,      -1.733408,0.6564,0.901846,
+       -1.733408,0.6564,0.901846,      -1.683577,0.553725,0.87592,     -1.531158,0.553725,1.123697,
+       -1.34332,0.553725,1.34332,      -1.38308,0.6564,1.38308,        -1.576477,0.6564,1.156956,
+       -1.576477,0.6564,1.156956,      -1.531158,0.553725,1.123697,    -1.34332,0.553725,1.34332,
+       -1.123697,0.553725,1.531158,    -1.156956,0.6564,1.576477,      -1.38308,0.6564,1.38308,
+       -1.38308,0.6564,1.38308,        -1.34332,0.553725,1.34332,      -1.123697,0.553725,1.531158,
+       -0.87592,0.553725,1.683577,     -0.901846,0.6564,1.733408,      -1.156956,0.6564,1.576477,
+       -1.156956,0.6564,1.576477,      -1.123697,0.553725,1.531158,    -0.87592,0.553725,1.683577,
+       -0.603624,0.553725,1.796946,    -0.62149,0.6564,1.850132,       -0.901846,0.6564,1.733408,
+       -0.901846,0.6564,1.733408,      -0.87592,0.553725,1.683577,     -0.603624,0.553725,1.796946,
+       -0.310439,0.553725,1.867631,    -0.319628,0.6564,1.92291,       -0.62149,0.6564,1.850132,
+       -0.62149,0.6564,1.850132,       -0.603624,0.553725,1.796946,    -0.310439,0.553725,1.867631,
+       0,0.553725,1.892,       0,0.6564,1.948, -0.319628,0.6564,1.92291,
+       -0.319628,0.6564,1.92291,       -0.310439,0.553725,1.867631,    0,0.553725,1.892,
+       -1.800507,0.4632,0.299282,      -1.867631,0.553725,0.310439,    -1.892,0.553725,0,
+       -1.892,0.553725,0,      -1.824,0.4632,0,        -1.800507,0.4632,0.299282,
+       -1.732362,0.4632,0.581929,      -1.796946,0.553725,0.603624,    -1.867631,0.553725,0.310439,
+       -1.867631,0.553725,0.310439,    -1.800507,0.4632,0.299282,      -1.732362,0.4632,0.581929,
+       -1.623068,0.4632,0.844439,      -1.683577,0.553725,0.87592,     -1.796946,0.553725,0.603624,
+       -1.796946,0.553725,0.603624,    -1.732362,0.4632,0.581929,      -1.623068,0.4632,0.844439,
+       -1.476127,0.4632,1.08331,       -1.531158,0.553725,1.123697,    -1.683577,0.553725,0.87592,
+       -1.683577,0.553725,0.87592,     -1.623068,0.4632,0.844439,      -1.476127,0.4632,1.08331,
+       -1.29504,0.4632,1.29504,        -1.34332,0.553725,1.34332,      -1.531158,0.553725,1.123697,
+       -1.531158,0.553725,1.123697,    -1.476127,0.4632,1.08331,       -1.29504,0.4632,1.29504,
+       -1.08331,0.4632,1.476127,       -1.123697,0.553725,1.531158,    -1.34332,0.553725,1.34332,
+       -1.34332,0.553725,1.34332,      -1.29504,0.4632,1.29504,        -1.08331,0.4632,1.476127,
+       -0.844439,0.4632,1.623068,      -0.87592,0.553725,1.683577,     -1.123697,0.553725,1.531158,
+       -1.123697,0.553725,1.531158,    -1.08331,0.4632,1.476127,       -0.844439,0.4632,1.623068,
+       -0.581929,0.4632,1.732362,      -0.603624,0.553725,1.796946,    -0.87592,0.553725,1.683577,
+       -0.87592,0.553725,1.683577,     -0.844439,0.4632,1.623068,      -0.581929,0.4632,1.732362,
+       -0.299282,0.4632,1.800507,      -0.310439,0.553725,1.867631,    -0.603624,0.553725,1.796946,
+       -0.603624,0.553725,1.796946,    -0.581929,0.4632,1.732362,      -0.299282,0.4632,1.800507,
+       0,0.4632,1.824, 0,0.553725,1.892,       -0.310439,0.553725,1.867631,
+       -0.310439,0.553725,1.867631,    -0.299282,0.4632,1.800507,      0,0.4632,1.824,
+       -1.72746,0.384375,0.28714,      -1.800507,0.4632,0.299282,      -1.824,0.4632,0,
+       -1.824,0.4632,0,        -1.75,0.384375,0,       -1.72746,0.384375,0.28714,
+       -1.66208,0.384375,0.55832,      -1.732362,0.4632,0.581929,      -1.800507,0.4632,0.299282,
+       -1.800507,0.4632,0.299282,      -1.72746,0.384375,0.28714,      -1.66208,0.384375,0.55832,
+       -1.55722,0.384375,0.81018,      -1.623068,0.4632,0.844439,      -1.732362,0.4632,0.581929,
+       -1.732362,0.4632,0.581929,      -1.66208,0.384375,0.55832,      -1.55722,0.384375,0.81018,
+       -1.41624,0.384375,1.03936,      -1.476127,0.4632,1.08331,       -1.623068,0.4632,0.844439,
+       -1.623068,0.4632,0.844439,      -1.55722,0.384375,0.81018,      -1.41624,0.384375,1.03936,
+       -1.2425,0.384375,1.2425,        -1.29504,0.4632,1.29504,        -1.476127,0.4632,1.08331,
+       -1.476127,0.4632,1.08331,       -1.41624,0.384375,1.03936,      -1.2425,0.384375,1.2425,
+       -1.03936,0.384375,1.41624,      -1.08331,0.4632,1.476127,       -1.29504,0.4632,1.29504,
+       -1.29504,0.4632,1.29504,        -1.2425,0.384375,1.2425,        -1.03936,0.384375,1.41624,
+       -0.81018,0.384375,1.55722,      -0.844439,0.4632,1.623068,      -1.08331,0.4632,1.476127,
+       -1.08331,0.4632,1.476127,       -1.03936,0.384375,1.41624,      -0.81018,0.384375,1.55722,
+       -0.55832,0.384375,1.66208,      -0.581929,0.4632,1.732362,      -0.844439,0.4632,1.623068,
+       -0.844439,0.4632,1.623068,      -0.81018,0.384375,1.55722,      -0.55832,0.384375,1.66208,
+       -0.28714,0.384375,1.72746,      -0.299282,0.4632,1.800507,      -0.581929,0.4632,1.732362,
+       -0.581929,0.4632,1.732362,      -0.55832,0.384375,1.66208,      -0.28714,0.384375,1.72746,
+       0,0.384375,1.75,        0,0.4632,1.824, -0.299282,0.4632,1.800507,
+       -0.299282,0.4632,1.800507,      -0.28714,0.384375,1.72746,      0,0.384375,1.75,
+       -1.654413,0.3168,0.274998,      -1.72746,0.384375,0.28714,      -1.75,0.384375,0,
+       -1.75,0.384375,0,       -1.676,0.3168,0,        -1.654413,0.3168,0.274998,
+       -1.591798,0.3168,0.534711,      -1.66208,0.384375,0.55832,      -1.72746,0.384375,0.28714,
+       -1.72746,0.384375,0.28714,      -1.654413,0.3168,0.274998,      -1.591798,0.3168,0.534711,
+       -1.491372,0.3168,0.775921,      -1.55722,0.384375,0.81018,      -1.66208,0.384375,0.55832,
+       -1.66208,0.384375,0.55832,      -1.591798,0.3168,0.534711,      -1.491372,0.3168,0.775921,
+       -1.356353,0.3168,0.99541,       -1.41624,0.384375,1.03936,      -1.55722,0.384375,0.81018,
+       -1.55722,0.384375,0.81018,      -1.491372,0.3168,0.775921,      -1.356353,0.3168,0.99541,
+       -1.18996,0.3168,1.18996,        -1.2425,0.384375,1.2425,        -1.41624,0.384375,1.03936,
+       -1.41624,0.384375,1.03936,      -1.356353,0.3168,0.99541,       -1.18996,0.3168,1.18996,
+       -0.99541,0.3168,1.356353,       -1.03936,0.384375,1.41624,      -1.2425,0.384375,1.2425,
+       -1.2425,0.384375,1.2425,        -1.18996,0.3168,1.18996,        -0.99541,0.3168,1.356353,
+       -0.775921,0.3168,1.491372,      -0.81018,0.384375,1.55722,      -1.03936,0.384375,1.41624,
+       -1.03936,0.384375,1.41624,      -0.99541,0.3168,1.356353,       -0.775921,0.3168,1.491372,
+       -0.534711,0.3168,1.591798,      -0.55832,0.384375,1.66208,      -0.81018,0.384375,1.55722,
+       -0.81018,0.384375,1.55722,      -0.775921,0.3168,1.491372,      -0.534711,0.3168,1.591798,
+       -0.274998,0.3168,1.654413,      -0.28714,0.384375,1.72746,      -0.55832,0.384375,1.66208,
+       -0.55832,0.384375,1.66208,      -0.534711,0.3168,1.591798,      -0.274998,0.3168,1.654413,
+       0,0.3168,1.676, 0,0.384375,1.75,        -0.28714,0.384375,1.72746,
+       -0.28714,0.384375,1.72746,      -0.274998,0.3168,1.654413,      0,0.3168,1.676,
+       -1.587289,0.260025,0.263841,    -1.654413,0.3168,0.274998,      -1.676,0.3168,0,
+       -1.676,0.3168,0,        -1.608,0.260025,0,      -1.587289,0.260025,0.263841,
+       -1.527214,0.260025,0.513016,    -1.591798,0.3168,0.534711,      -1.654413,0.3168,0.274998,
+       -1.654413,0.3168,0.274998,      -1.587289,0.260025,0.263841,    -1.527214,0.260025,0.513016,
+       -1.430863,0.260025,0.74444,     -1.491372,0.3168,0.775921,      -1.591798,0.3168,0.534711,
+       -1.591798,0.3168,0.534711,      -1.527214,0.260025,0.513016,    -1.430863,0.260025,0.74444,
+       -1.301322,0.260025,0.955023,    -1.356353,0.3168,0.99541,       -1.491372,0.3168,0.775921,
+       -1.491372,0.3168,0.775921,      -1.430863,0.260025,0.74444,     -1.301322,0.260025,0.955023,
+       -1.14168,0.260025,1.14168,      -1.18996,0.3168,1.18996,        -1.356353,0.3168,0.99541,
+       -1.356353,0.3168,0.99541,       -1.301322,0.260025,0.955023,    -1.14168,0.260025,1.14168,
+       -0.955023,0.260025,1.301322,    -0.99541,0.3168,1.356353,       -1.18996,0.3168,1.18996,
+       -1.18996,0.3168,1.18996,        -1.14168,0.260025,1.14168,      -0.955023,0.260025,1.301322,
+       -0.74444,0.260025,1.430863,     -0.775921,0.3168,1.491372,      -0.99541,0.3168,1.356353,
+       -0.99541,0.3168,1.356353,       -0.955023,0.260025,1.301322,    -0.74444,0.260025,1.430863,
+       -0.513016,0.260025,1.527214,    -0.534711,0.3168,1.591798,      -0.775921,0.3168,1.491372,
+       -0.775921,0.3168,1.491372,      -0.74444,0.260025,1.430863,     -0.513016,0.260025,1.527214,
+       -0.263841,0.260025,1.587289,    -0.274998,0.3168,1.654413,      -0.534711,0.3168,1.591798,
+       -0.534711,0.3168,1.591798,      -0.513016,0.260025,1.527214,    -0.263841,0.260025,1.587289,
+       0,0.260025,1.608,       0,0.3168,1.676, -0.274998,0.3168,1.654413,
+       -0.274998,0.3168,1.654413,      -0.263841,0.260025,1.587289,    0,0.260025,1.608,
+       -1.53201,0.2136,0.254652,       -1.587289,0.260025,0.263841,    -1.608,0.260025,0,
+       -1.608,0.260025,0,      -1.552,0.2136,0,        -1.53201,0.2136,0.254652,
+       -1.474028,0.2136,0.49515,       -1.527214,0.260025,0.513016,    -1.587289,0.260025,0.263841,
+       -1.587289,0.260025,0.263841,    -1.53201,0.2136,0.254652,       -1.474028,0.2136,0.49515,
+       -1.381032,0.2136,0.718514,      -1.430863,0.260025,0.74444,     -1.527214,0.260025,0.513016,
+       -1.527214,0.260025,0.513016,    -1.474028,0.2136,0.49515,       -1.381032,0.2136,0.718514,
+       -1.256003,0.2136,0.921764,      -1.301322,0.260025,0.955023,    -1.430863,0.260025,0.74444,
+       -1.430863,0.260025,0.74444,     -1.381032,0.2136,0.718514,      -1.256003,0.2136,0.921764,
+       -1.10192,0.2136,1.10192,        -1.14168,0.260025,1.14168,      -1.301322,0.260025,0.955023,
+       -1.301322,0.260025,0.955023,    -1.256003,0.2136,0.921764,      -1.10192,0.2136,1.10192,
+       -0.921764,0.2136,1.256003,      -0.955023,0.260025,1.301322,    -1.14168,0.260025,1.14168,
+       -1.14168,0.260025,1.14168,      -1.10192,0.2136,1.10192,        -0.921764,0.2136,1.256003,
+       -0.718514,0.2136,1.381032,      -0.74444,0.260025,1.430863,     -0.955023,0.260025,1.301322,
+       -0.955023,0.260025,1.301322,    -0.921764,0.2136,1.256003,      -0.718514,0.2136,1.381032,
+       -0.49515,0.2136,1.474028,       -0.513016,0.260025,1.527214,    -0.74444,0.260025,1.430863,
+       -0.74444,0.260025,1.430863,     -0.718514,0.2136,1.381032,      -0.49515,0.2136,1.474028,
+       -0.254652,0.2136,1.53201,       -0.263841,0.260025,1.587289,    -0.513016,0.260025,1.527214,
+       -0.513016,0.260025,1.527214,    -0.49515,0.2136,1.474028,       -0.254652,0.2136,1.53201,
+       0,0.2136,1.552, 0,0.260025,1.608,       -0.263841,0.260025,1.587289,
+       -0.263841,0.260025,1.587289,    -0.254652,0.2136,1.53201,       0,0.2136,1.552,
+       -1.4945,0.177075,0.248417,      -1.53201,0.2136,0.254652,       -1.552,0.2136,0,
+       -1.552,0.2136,0,        -1.514,0.177075,0,      -1.4945,0.177075,0.248417,
+       -1.437937,0.177075,0.483027,    -1.474028,0.2136,0.49515,       -1.53201,0.2136,0.254652,
+       -1.53201,0.2136,0.254652,       -1.4945,0.177075,0.248417,      -1.437937,0.177075,0.483027,
+       -1.347218,0.177075,0.700921,    -1.381032,0.2136,0.718514,      -1.474028,0.2136,0.49515,
+       -1.474028,0.2136,0.49515,       -1.437937,0.177075,0.483027,    -1.347218,0.177075,0.700921,
+       -1.22525,0.177075,0.899195,     -1.256003,0.2136,0.921764,      -1.381032,0.2136,0.718514,
+       -1.381032,0.2136,0.718514,      -1.347218,0.177075,0.700921,    -1.22525,0.177075,0.899195,
+       -1.07494,0.177075,1.07494,      -1.10192,0.2136,1.10192,        -1.256003,0.2136,0.921764,
+       -1.256003,0.2136,0.921764,      -1.22525,0.177075,0.899195,     -1.07494,0.177075,1.07494,
+       -0.899195,0.177075,1.22525,     -0.921764,0.2136,1.256003,      -1.10192,0.2136,1.10192,
+       -1.10192,0.2136,1.10192,        -1.07494,0.177075,1.07494,      -0.899195,0.177075,1.22525,
+       -0.700921,0.177075,1.347218,    -0.718514,0.2136,1.381032,      -0.921764,0.2136,1.256003,
+       -0.921764,0.2136,1.256003,      -0.899195,0.177075,1.22525,     -0.700921,0.177075,1.347218,
+       -0.483027,0.177075,1.437937,    -0.49515,0.2136,1.474028,       -0.718514,0.2136,1.381032,
+       -0.718514,0.2136,1.381032,      -0.700921,0.177075,1.347218,    -0.483027,0.177075,1.437937,
+       -0.248417,0.177075,1.4945,      -0.254652,0.2136,1.53201,       -0.49515,0.2136,1.474028,
+       -0.49515,0.2136,1.474028,       -0.483027,0.177075,1.437937,    -0.248417,0.177075,1.4945,
+       0,0.177075,1.514,       0,0.2136,1.552, -0.254652,0.2136,1.53201,
+       -0.254652,0.2136,1.53201,       -0.248417,0.177075,1.4945,      0,0.177075,1.514,
+       -1.48068,0.15,0.24612,  -1.4945,0.177075,0.248417,      -1.514,0.177075,0,
+       -1.514,0.177075,0,      -1.5,0.15,0,    -1.48068,0.15,0.24612,
+       -1.42464,0.15,0.47856,  -1.437937,0.177075,0.483027,    -1.4945,0.177075,0.248417,
+       -1.4945,0.177075,0.248417,      -1.48068,0.15,0.24612,  -1.42464,0.15,0.47856,
+       -1.33476,0.15,0.69444,  -1.347218,0.177075,0.700921,    -1.437937,0.177075,0.483027,
+       -1.437937,0.177075,0.483027,    -1.42464,0.15,0.47856,  -1.33476,0.15,0.69444,
+       -1.21392,0.15,0.89088,  -1.22525,0.177075,0.899195,     -1.347218,0.177075,0.700921,
+       -1.347218,0.177075,0.700921,    -1.33476,0.15,0.69444,  -1.21392,0.15,0.89088,
+       -1.065,0.15,1.065,      -1.07494,0.177075,1.07494,      -1.22525,0.177075,0.899195,
+       -1.22525,0.177075,0.899195,     -1.21392,0.15,0.89088,  -1.065,0.15,1.065,
+       -0.89088,0.15,1.21392,  -0.899195,0.177075,1.22525,     -1.07494,0.177075,1.07494,
+       -1.07494,0.177075,1.07494,      -1.065,0.15,1.065,      -0.89088,0.15,1.21392,
+       -0.69444,0.15,1.33476,  -0.700921,0.177075,1.347218,    -0.899195,0.177075,1.22525,
+       -0.899195,0.177075,1.22525,     -0.89088,0.15,1.21392,  -0.69444,0.15,1.33476,
+       -0.47856,0.15,1.42464,  -0.483027,0.177075,1.437937,    -0.700921,0.177075,1.347218,
+       -0.700921,0.177075,1.347218,    -0.69444,0.15,1.33476,  -0.47856,0.15,1.42464,
+       -0.24612,0.15,1.48068,  -0.248417,0.177075,1.4945,      -0.483027,0.177075,1.437937,
+       -0.483027,0.177075,1.437937,    -0.47856,0.15,1.42464,  -0.24612,0.15,1.48068,
+       0,0.15,1.5,     0,0.177075,1.514,       -0.248417,0.177075,1.4945,
+       -0.248417,0.177075,1.4945,      -0.24612,0.15,1.48068,  0,0.15,1.5,
+       0.325863,0.771675,1.96042,      0.32816,0.9,1.97424,    0,0.9,2,
+       0,0.9,2,        0,0.771675,1.986,       0.325863,0.771675,1.96042,
+       0.633613,0.771675,1.886223,     0.63808,0.9,1.89952,    0.32816,0.9,1.97424,
+       0.32816,0.9,1.97424,    0.325863,0.771675,1.96042,      0.633613,0.771675,1.886223,
+       0.919439,0.771675,1.767222,     0.92592,0.9,1.77968,    0.63808,0.9,1.89952,
+       0.63808,0.9,1.89952,    0.633613,0.771675,1.886223,     0.919439,0.771675,1.767222,
+       1.179525,0.771675,1.60723,      1.18784,0.9,1.61856,    0.92592,0.9,1.77968,
+       0.92592,0.9,1.77968,    0.919439,0.771675,1.767222,     1.179525,0.771675,1.60723,
+       1.41006,0.771675,1.41006,       1.42,0.9,1.42,  1.18784,0.9,1.61856,
+       1.18784,0.9,1.61856,    1.179525,0.771675,1.60723,      1.41006,0.771675,1.41006,
+       1.60723,0.771675,1.179525,      1.61856,0.9,1.18784,    1.42,0.9,1.42,
+       1.42,0.9,1.42,  1.41006,0.771675,1.41006,       1.60723,0.771675,1.179525,
+       1.767222,0.771675,0.919439,     1.77968,0.9,0.92592,    1.61856,0.9,1.18784,
+       1.61856,0.9,1.18784,    1.60723,0.771675,1.179525,      1.767222,0.771675,0.919439,
+       1.886223,0.771675,0.633613,     1.89952,0.9,0.63808,    1.77968,0.9,0.92592,
+       1.77968,0.9,0.92592,    1.767222,0.771675,0.919439,     1.886223,0.771675,0.633613,
+       1.96042,0.771675,0.325863,      1.97424,0.9,0.32816,    1.89952,0.9,0.63808,
+       1.89952,0.9,0.63808,    1.886223,0.771675,0.633613,     1.96042,0.771675,0.325863,
+       1.986,0.771675,0,       2,0.9,0,        1.97424,0.9,0.32816,
+       1.97424,0.9,0.32816,    1.96042,0.771675,0.325863,      1.986,0.771675,0,
+       0.319628,0.6564,1.92291,        0.325863,0.771675,1.96042,      0,0.771675,1.986,
+       0,0.771675,1.986,       0,0.6564,1.948, 0.319628,0.6564,1.92291,
+       0.62149,0.6564,1.850132,        0.633613,0.771675,1.886223,     0.325863,0.771675,1.96042,
+       0.325863,0.771675,1.96042,      0.319628,0.6564,1.92291,        0.62149,0.6564,1.850132,
+       0.901846,0.6564,1.733408,       0.919439,0.771675,1.767222,     0.633613,0.771675,1.886223,
+       0.633613,0.771675,1.886223,     0.62149,0.6564,1.850132,        0.901846,0.6564,1.733408,
+       1.156956,0.6564,1.576477,       1.179525,0.771675,1.60723,      0.919439,0.771675,1.767222,
+       0.919439,0.771675,1.767222,     0.901846,0.6564,1.733408,       1.156956,0.6564,1.576477,
+       1.38308,0.6564,1.38308, 1.41006,0.771675,1.41006,       1.179525,0.771675,1.60723,
+       1.179525,0.771675,1.60723,      1.156956,0.6564,1.576477,       1.38308,0.6564,1.38308,
+       1.576477,0.6564,1.156956,       1.60723,0.771675,1.179525,      1.41006,0.771675,1.41006,
+       1.41006,0.771675,1.41006,       1.38308,0.6564,1.38308, 1.576477,0.6564,1.156956,
+       1.733408,0.6564,0.901846,       1.767222,0.771675,0.919439,     1.60723,0.771675,1.179525,
+       1.60723,0.771675,1.179525,      1.576477,0.6564,1.156956,       1.733408,0.6564,0.901846,
+       1.850132,0.6564,0.62149,        1.886223,0.771675,0.633613,     1.767222,0.771675,0.919439,
+       1.767222,0.771675,0.919439,     1.733408,0.6564,0.901846,       1.850132,0.6564,0.62149,
+       1.92291,0.6564,0.319628,        1.96042,0.771675,0.325863,      1.886223,0.771675,0.633613,
+       1.886223,0.771675,0.633613,     1.850132,0.6564,0.62149,        1.92291,0.6564,0.319628,
+       1.948,0.6564,0, 1.986,0.771675,0,       1.96042,0.771675,0.325863,
+       1.96042,0.771675,0.325863,      1.92291,0.6564,0.319628,        1.948,0.6564,0,
+       0.310439,0.553725,1.867631,     0.319628,0.6564,1.92291,        0,0.6564,1.948,
+       0,0.6564,1.948, 0,0.553725,1.892,       0.310439,0.553725,1.867631,
+       0.603624,0.553725,1.796946,     0.62149,0.6564,1.850132,        0.319628,0.6564,1.92291,
+       0.319628,0.6564,1.92291,        0.310439,0.553725,1.867631,     0.603624,0.553725,1.796946,
+       0.87592,0.553725,1.683577,      0.901846,0.6564,1.733408,       0.62149,0.6564,1.850132,
+       0.62149,0.6564,1.850132,        0.603624,0.553725,1.796946,     0.87592,0.553725,1.683577,
+       1.123697,0.553725,1.531158,     1.156956,0.6564,1.576477,       0.901846,0.6564,1.733408,
+       0.901846,0.6564,1.733408,       0.87592,0.553725,1.683577,      1.123697,0.553725,1.531158,
+       1.34332,0.553725,1.34332,       1.38308,0.6564,1.38308, 1.156956,0.6564,1.576477,
+       1.156956,0.6564,1.576477,       1.123697,0.553725,1.531158,     1.34332,0.553725,1.34332,
+       1.531158,0.553725,1.123697,     1.576477,0.6564,1.156956,       1.38308,0.6564,1.38308,
+       1.38308,0.6564,1.38308, 1.34332,0.553725,1.34332,       1.531158,0.553725,1.123697,
+       1.683577,0.553725,0.87592,      1.733408,0.6564,0.901846,       1.576477,0.6564,1.156956,
+       1.576477,0.6564,1.156956,       1.531158,0.553725,1.123697,     1.683577,0.553725,0.87592,
+       1.796946,0.553725,0.603624,     1.850132,0.6564,0.62149,        1.733408,0.6564,0.901846,
+       1.733408,0.6564,0.901846,       1.683577,0.553725,0.87592,      1.796946,0.553725,0.603624,
+       1.867631,0.553725,0.310439,     1.92291,0.6564,0.319628,        1.850132,0.6564,0.62149,
+       1.850132,0.6564,0.62149,        1.796946,0.553725,0.603624,     1.867631,0.553725,0.310439,
+       1.892,0.553725,0,       1.948,0.6564,0, 1.92291,0.6564,0.319628,
+       1.92291,0.6564,0.319628,        1.867631,0.553725,0.310439,     1.892,0.553725,0,
+       0.299282,0.4632,1.800507,       0.310439,0.553725,1.867631,     0,0.553725,1.892,
+       0,0.553725,1.892,       0,0.4632,1.824, 0.299282,0.4632,1.800507,
+       0.581929,0.4632,1.732362,       0.603624,0.553725,1.796946,     0.310439,0.553725,1.867631,
+       0.310439,0.553725,1.867631,     0.299282,0.4632,1.800507,       0.581929,0.4632,1.732362,
+       0.844439,0.4632,1.623068,       0.87592,0.553725,1.683577,      0.603624,0.553725,1.796946,
+       0.603624,0.553725,1.796946,     0.581929,0.4632,1.732362,       0.844439,0.4632,1.623068,
+       1.08331,0.4632,1.476127,        1.123697,0.553725,1.531158,     0.87592,0.553725,1.683577,
+       0.87592,0.553725,1.683577,      0.844439,0.4632,1.623068,       1.08331,0.4632,1.476127,
+       1.29504,0.4632,1.29504, 1.34332,0.553725,1.34332,       1.123697,0.553725,1.531158,
+       1.123697,0.553725,1.531158,     1.08331,0.4632,1.476127,        1.29504,0.4632,1.29504,
+       1.476127,0.4632,1.08331,        1.531158,0.553725,1.123697,     1.34332,0.553725,1.34332,
+       1.34332,0.553725,1.34332,       1.29504,0.4632,1.29504, 1.476127,0.4632,1.08331,
+       1.623068,0.4632,0.844439,       1.683577,0.553725,0.87592,      1.531158,0.553725,1.123697,
+       1.531158,0.553725,1.123697,     1.476127,0.4632,1.08331,        1.623068,0.4632,0.844439,
+       1.732362,0.4632,0.581929,       1.796946,0.553725,0.603624,     1.683577,0.553725,0.87592,
+       1.683577,0.553725,0.87592,      1.623068,0.4632,0.844439,       1.732362,0.4632,0.581929,
+       1.800507,0.4632,0.299282,       1.867631,0.553725,0.310439,     1.796946,0.553725,0.603624,
+       1.796946,0.553725,0.603624,     1.732362,0.4632,0.581929,       1.800507,0.4632,0.299282,
+       1.824,0.4632,0, 1.892,0.553725,0,       1.867631,0.553725,0.310439,
+       1.867631,0.553725,0.310439,     1.800507,0.4632,0.299282,       1.824,0.4632,0,
+       0.28714,0.384375,1.72746,       0.299282,0.4632,1.800507,       0,0.4632,1.824,
+       0,0.4632,1.824, 0,0.384375,1.75,        0.28714,0.384375,1.72746,
+       0.55832,0.384375,1.66208,       0.581929,0.4632,1.732362,       0.299282,0.4632,1.800507,
+       0.299282,0.4632,1.800507,       0.28714,0.384375,1.72746,       0.55832,0.384375,1.66208,
+       0.81018,0.384375,1.55722,       0.844439,0.4632,1.623068,       0.581929,0.4632,1.732362,
+       0.581929,0.4632,1.732362,       0.55832,0.384375,1.66208,       0.81018,0.384375,1.55722,
+       1.03936,0.384375,1.41624,       1.08331,0.4632,1.476127,        0.844439,0.4632,1.623068,
+       0.844439,0.4632,1.623068,       0.81018,0.384375,1.55722,       1.03936,0.384375,1.41624,
+       1.2425,0.384375,1.2425, 1.29504,0.4632,1.29504, 1.08331,0.4632,1.476127,
+       1.08331,0.4632,1.476127,        1.03936,0.384375,1.41624,       1.2425,0.384375,1.2425,
+       1.41624,0.384375,1.03936,       1.476127,0.4632,1.08331,        1.29504,0.4632,1.29504,
+       1.29504,0.4632,1.29504, 1.2425,0.384375,1.2425, 1.41624,0.384375,1.03936,
+       1.55722,0.384375,0.81018,       1.623068,0.4632,0.844439,       1.476127,0.4632,1.08331,
+       1.476127,0.4632,1.08331,        1.41624,0.384375,1.03936,       1.55722,0.384375,0.81018,
+       1.66208,0.384375,0.55832,       1.732362,0.4632,0.581929,       1.623068,0.4632,0.844439,
+       1.623068,0.4632,0.844439,       1.55722,0.384375,0.81018,       1.66208,0.384375,0.55832,
+       1.72746,0.384375,0.28714,       1.800507,0.4632,0.299282,       1.732362,0.4632,0.581929,
+       1.732362,0.4632,0.581929,       1.66208,0.384375,0.55832,       1.72746,0.384375,0.28714,
+       1.75,0.384375,0,        1.824,0.4632,0, 1.800507,0.4632,0.299282,
+       1.800507,0.4632,0.299282,       1.72746,0.384375,0.28714,       1.75,0.384375,0,
+       0.274998,0.3168,1.654413,       0.28714,0.384375,1.72746,       0,0.384375,1.75,
+       0,0.384375,1.75,        0,0.3168,1.676, 0.274998,0.3168,1.654413,
+       0.534711,0.3168,1.591798,       0.55832,0.384375,1.66208,       0.28714,0.384375,1.72746,
+       0.28714,0.384375,1.72746,       0.274998,0.3168,1.654413,       0.534711,0.3168,1.591798,
+       0.775921,0.3168,1.491372,       0.81018,0.384375,1.55722,       0.55832,0.384375,1.66208,
+       0.55832,0.384375,1.66208,       0.534711,0.3168,1.591798,       0.775921,0.3168,1.491372,
+       0.99541,0.3168,1.356353,        1.03936,0.384375,1.41624,       0.81018,0.384375,1.55722,
+       0.81018,0.384375,1.55722,       0.775921,0.3168,1.491372,       0.99541,0.3168,1.356353,
+       1.18996,0.3168,1.18996, 1.2425,0.384375,1.2425, 1.03936,0.384375,1.41624,
+       1.03936,0.384375,1.41624,       0.99541,0.3168,1.356353,        1.18996,0.3168,1.18996,
+       1.356353,0.3168,0.99541,        1.41624,0.384375,1.03936,       1.2425,0.384375,1.2425,
+       1.2425,0.384375,1.2425, 1.18996,0.3168,1.18996, 1.356353,0.3168,0.99541,
+       1.491372,0.3168,0.775921,       1.55722,0.384375,0.81018,       1.41624,0.384375,1.03936,
+       1.41624,0.384375,1.03936,       1.356353,0.3168,0.99541,        1.491372,0.3168,0.775921,
+       1.591798,0.3168,0.534711,       1.66208,0.384375,0.55832,       1.55722,0.384375,0.81018,
+       1.55722,0.384375,0.81018,       1.491372,0.3168,0.775921,       1.591798,0.3168,0.534711,
+       1.654413,0.3168,0.274998,       1.72746,0.384375,0.28714,       1.66208,0.384375,0.55832,
+       1.66208,0.384375,0.55832,       1.591798,0.3168,0.534711,       1.654413,0.3168,0.274998,
+       1.676,0.3168,0, 1.75,0.384375,0,        1.72746,0.384375,0.28714,
+       1.72746,0.384375,0.28714,       1.654413,0.3168,0.274998,       1.676,0.3168,0,
+       0.263841,0.260025,1.587289,     0.274998,0.3168,1.654413,       0,0.3168,1.676,
+       0,0.3168,1.676, 0,0.260025,1.608,       0.263841,0.260025,1.587289,
+       0.513016,0.260025,1.527214,     0.534711,0.3168,1.591798,       0.274998,0.3168,1.654413,
+       0.274998,0.3168,1.654413,       0.263841,0.260025,1.587289,     0.513016,0.260025,1.527214,
+       0.74444,0.260025,1.430863,      0.775921,0.3168,1.491372,       0.534711,0.3168,1.591798,
+       0.534711,0.3168,1.591798,       0.513016,0.260025,1.527214,     0.74444,0.260025,1.430863,
+       0.955023,0.260025,1.301322,     0.99541,0.3168,1.356353,        0.775921,0.3168,1.491372,
+       0.775921,0.3168,1.491372,       0.74444,0.260025,1.430863,      0.955023,0.260025,1.301322,
+       1.14168,0.260025,1.14168,       1.18996,0.3168,1.18996, 0.99541,0.3168,1.356353,
+       0.99541,0.3168,1.356353,        0.955023,0.260025,1.301322,     1.14168,0.260025,1.14168,
+       1.301322,0.260025,0.955023,     1.356353,0.3168,0.99541,        1.18996,0.3168,1.18996,
+       1.18996,0.3168,1.18996, 1.14168,0.260025,1.14168,       1.301322,0.260025,0.955023,
+       1.430863,0.260025,0.74444,      1.491372,0.3168,0.775921,       1.356353,0.3168,0.99541,
+       1.356353,0.3168,0.99541,        1.301322,0.260025,0.955023,     1.430863,0.260025,0.74444,
+       1.527214,0.260025,0.513016,     1.591798,0.3168,0.534711,       1.491372,0.3168,0.775921,
+       1.491372,0.3168,0.775921,       1.430863,0.260025,0.74444,      1.527214,0.260025,0.513016,
+       1.587289,0.260025,0.263841,     1.654413,0.3168,0.274998,       1.591798,0.3168,0.534711,
+       1.591798,0.3168,0.534711,       1.527214,0.260025,0.513016,     1.587289,0.260025,0.263841,
+       1.608,0.260025,0,       1.676,0.3168,0, 1.654413,0.3168,0.274998,
+       1.654413,0.3168,0.274998,       1.587289,0.260025,0.263841,     1.608,0.260025,0,
+       0.254652,0.2136,1.53201,        0.263841,0.260025,1.587289,     0,0.260025,1.608,
+       0,0.260025,1.608,       0,0.2136,1.552, 0.254652,0.2136,1.53201,
+       0.49515,0.2136,1.474028,        0.513016,0.260025,1.527214,     0.263841,0.260025,1.587289,
+       0.263841,0.260025,1.587289,     0.254652,0.2136,1.53201,        0.49515,0.2136,1.474028,
+       0.718514,0.2136,1.381032,       0.74444,0.260025,1.430863,      0.513016,0.260025,1.527214,
+       0.513016,0.260025,1.527214,     0.49515,0.2136,1.474028,        0.718514,0.2136,1.381032,
+       0.921764,0.2136,1.256003,       0.955023,0.260025,1.301322,     0.74444,0.260025,1.430863,
+       0.74444,0.260025,1.430863,      0.718514,0.2136,1.381032,       0.921764,0.2136,1.256003,
+       1.10192,0.2136,1.10192, 1.14168,0.260025,1.14168,       0.955023,0.260025,1.301322,
+       0.955023,0.260025,1.301322,     0.921764,0.2136,1.256003,       1.10192,0.2136,1.10192,
+       1.256003,0.2136,0.921764,       1.301322,0.260025,0.955023,     1.14168,0.260025,1.14168,
+       1.14168,0.260025,1.14168,       1.10192,0.2136,1.10192, 1.256003,0.2136,0.921764,
+       1.381032,0.2136,0.718514,       1.430863,0.260025,0.74444,      1.301322,0.260025,0.955023,
+       1.301322,0.260025,0.955023,     1.256003,0.2136,0.921764,       1.381032,0.2136,0.718514,
+       1.474028,0.2136,0.49515,        1.527214,0.260025,0.513016,     1.430863,0.260025,0.74444,
+       1.430863,0.260025,0.74444,      1.381032,0.2136,0.718514,       1.474028,0.2136,0.49515,
+       1.53201,0.2136,0.254652,        1.587289,0.260025,0.263841,     1.527214,0.260025,0.513016,
+       1.527214,0.260025,0.513016,     1.474028,0.2136,0.49515,        1.53201,0.2136,0.254652,
+       1.552,0.2136,0, 1.608,0.260025,0,       1.587289,0.260025,0.263841,
+       1.587289,0.260025,0.263841,     1.53201,0.2136,0.254652,        1.552,0.2136,0,
+       0.248417,0.177075,1.4945,       0.254652,0.2136,1.53201,        0,0.2136,1.552,
+       0,0.2136,1.552, 0,0.177075,1.514,       0.248417,0.177075,1.4945,
+       0.483027,0.177075,1.437937,     0.49515,0.2136,1.474028,        0.254652,0.2136,1.53201,
+       0.254652,0.2136,1.53201,        0.248417,0.177075,1.4945,       0.483027,0.177075,1.437937,
+       0.700921,0.177075,1.347218,     0.718514,0.2136,1.381032,       0.49515,0.2136,1.474028,
+       0.49515,0.2136,1.474028,        0.483027,0.177075,1.437937,     0.700921,0.177075,1.347218,
+       0.899195,0.177075,1.22525,      0.921764,0.2136,1.256003,       0.718514,0.2136,1.381032,
+       0.718514,0.2136,1.381032,       0.700921,0.177075,1.347218,     0.899195,0.177075,1.22525,
+       1.07494,0.177075,1.07494,       1.10192,0.2136,1.10192, 0.921764,0.2136,1.256003,
+       0.921764,0.2136,1.256003,       0.899195,0.177075,1.22525,      1.07494,0.177075,1.07494,
+       1.22525,0.177075,0.899195,      1.256003,0.2136,0.921764,       1.10192,0.2136,1.10192,
+       1.10192,0.2136,1.10192, 1.07494,0.177075,1.07494,       1.22525,0.177075,0.899195,
+       1.347218,0.177075,0.700921,     1.381032,0.2136,0.718514,       1.256003,0.2136,0.921764,
+       1.256003,0.2136,0.921764,       1.22525,0.177075,0.899195,      1.347218,0.177075,0.700921,
+       1.437937,0.177075,0.483027,     1.474028,0.2136,0.49515,        1.381032,0.2136,0.718514,
+       1.381032,0.2136,0.718514,       1.347218,0.177075,0.700921,     1.437937,0.177075,0.483027,
+       1.4945,0.177075,0.248417,       1.53201,0.2136,0.254652,        1.474028,0.2136,0.49515,
+       1.474028,0.2136,0.49515,        1.437937,0.177075,0.483027,     1.4945,0.177075,0.248417,
+       1.514,0.177075,0,       1.552,0.2136,0, 1.53201,0.2136,0.254652,
+       1.53201,0.2136,0.254652,        1.4945,0.177075,0.248417,       1.514,0.177075,0,
+       0.24612,0.15,1.48068,   0.248417,0.177075,1.4945,       0,0.177075,1.514,
+       0,0.177075,1.514,       0,0.15,1.5,     0.24612,0.15,1.48068,
+       0.47856,0.15,1.42464,   0.483027,0.177075,1.437937,     0.248417,0.177075,1.4945,
+       0.248417,0.177075,1.4945,       0.24612,0.15,1.48068,   0.47856,0.15,1.42464,
+       0.69444,0.15,1.33476,   0.700921,0.177075,1.347218,     0.483027,0.177075,1.437937,
+       0.483027,0.177075,1.437937,     0.47856,0.15,1.42464,   0.69444,0.15,1.33476,
+       0.89088,0.15,1.21392,   0.899195,0.177075,1.22525,      0.700921,0.177075,1.347218,
+       0.700921,0.177075,1.347218,     0.69444,0.15,1.33476,   0.89088,0.15,1.21392,
+       1.065,0.15,1.065,       1.07494,0.177075,1.07494,       0.899195,0.177075,1.22525,
+       0.899195,0.177075,1.22525,      0.89088,0.15,1.21392,   1.065,0.15,1.065,
+       1.21392,0.15,0.89088,   1.22525,0.177075,0.899195,      1.07494,0.177075,1.07494,
+       1.07494,0.177075,1.07494,       1.065,0.15,1.065,       1.21392,0.15,0.89088,
+       1.33476,0.15,0.69444,   1.347218,0.177075,0.700921,     1.22525,0.177075,0.899195,
+       1.22525,0.177075,0.899195,      1.21392,0.15,0.89088,   1.33476,0.15,0.69444,
+       1.42464,0.15,0.47856,   1.437937,0.177075,0.483027,     1.347218,0.177075,0.700921,
+       1.347218,0.177075,0.700921,     1.33476,0.15,0.69444,   1.42464,0.15,0.47856,
+       1.48068,0.15,0.24612,   1.4945,0.177075,0.248417,       1.437937,0.177075,0.483027,
+       1.437937,0.177075,0.483027,     1.42464,0.15,0.47856,   1.48068,0.15,0.24612,
+       1.5,0.15,0,     1.514,0.177075,0,       1.4945,0.177075,0.248417,
+       1.4945,0.177075,0.248417,       1.48068,0.15,0.24612,   1.5,0.15,0,
+       -1.800455,2.031069,-0.081,      -1.5972,2.0313,-0.081,  -1.6,2.025,0,
+       -1.6,2.025,0,   -1.8009,2.024775,0,     -1.800455,2.031069,-0.081,
+       -1.799246,2.048152,-0.144,      -1.5896,2.0484,-0.144,  -1.5972,2.0313,-0.081,
+       -1.5972,2.0313,-0.081,  -1.800455,2.031069,-0.081,      -1.799246,2.048152,-0.144,
+       -1.797466,2.073326,-0.189,      -1.5784,2.0736,-0.189,  -1.5896,2.0484,-0.144,
+       -1.5896,2.0484,-0.144,  -1.799246,2.048152,-0.144,      -1.797466,2.073326,-0.189,
+       -1.795303,2.103896,-0.216,      -1.5648,2.1042,-0.216,  -1.5784,2.0736,-0.189,
+       -1.5784,2.0736,-0.189,  -1.797466,2.073326,-0.189,      -1.795303,2.103896,-0.216,
+       -1.79295,2.137163,-0.225,       -1.55,2.1375,-0.225,    -1.5648,2.1042,-0.216,
+       -1.5648,2.1042,-0.216,  -1.795303,2.103896,-0.216,      -1.79295,2.137163,-0.225,
+       -1.790597,2.170429,-0.216,      -1.5352,2.1708,-0.216,  -1.55,2.1375,-0.225,
+       -1.55,2.1375,-0.225,    -1.79295,2.137163,-0.225,       -1.790597,2.170429,-0.216,
+       -1.788434,2.200999,-0.189,      -1.5216,2.2014,-0.189,  -1.5352,2.1708,-0.216,
+       -1.5352,2.1708,-0.216,  -1.790597,2.170429,-0.216,      -1.788434,2.200999,-0.189,
+       -1.786654,2.226173,-0.144,      -1.5104,2.2266,-0.144,  -1.5216,2.2014,-0.189,
+       -1.5216,2.2014,-0.189,  -1.788434,2.200999,-0.189,      -1.786654,2.226173,-0.144,
+       -1.785445,2.243256,-0.081,      -1.5028,2.2437,-0.081,  -1.5104,2.2266,-0.144,
+       -1.5104,2.2266,-0.144,  -1.786654,2.226173,-0.144,      -1.785445,2.243256,-0.081,
+       -1.785,2.24955,0,       -1.5,2.25,0,    -1.5028,2.2437,-0.081,
+       -1.5028,2.2437,-0.081,  -1.785445,2.243256,-0.081,      -1.785,2.24955,0,
+       -1.98479,2.02945,-0.081,        -1.800455,2.031069,-0.081,      -1.8009,2.024775,0,
+       -1.8009,2.024775,0,     -1.9832,2.0232,0,       -1.98479,2.02945,-0.081,
+       -1.989107,2.046413,-0.144,      -1.799246,2.048152,-0.144,      -1.800455,2.031069,-0.081,
+       -1.800455,2.031069,-0.081,      -1.98479,2.02945,-0.081,        -1.989107,2.046413,-0.144,
+       -1.995469,2.071411,-0.189,      -1.797466,2.073326,-0.189,      -1.799246,2.048152,-0.144,
+       -1.799246,2.048152,-0.144,      -1.989107,2.046413,-0.144,      -1.995469,2.071411,-0.189,
+       -2.003194,2.101766,-0.216,      -1.795303,2.103896,-0.216,      -1.797466,2.073326,-0.189,
+       -1.797466,2.073326,-0.189,      -1.995469,2.071411,-0.189,      -2.003194,2.101766,-0.216,
+       -2.0116,2.1348,-0.225,  -1.79295,2.137163,-0.225,       -1.795303,2.103896,-0.216,
+       -1.795303,2.103896,-0.216,      -2.003194,2.101766,-0.216,      -2.0116,2.1348,-0.225,
+       -2.020006,2.167834,-0.216,      -1.790597,2.170429,-0.216,      -1.79295,2.137163,-0.225,
+       -1.79295,2.137163,-0.225,       -2.0116,2.1348,-0.225,  -2.020006,2.167834,-0.216,
+       -2.027731,2.198189,-0.189,      -1.788434,2.200999,-0.189,      -1.790597,2.170429,-0.216,
+       -1.790597,2.170429,-0.216,      -2.020006,2.167834,-0.216,      -2.027731,2.198189,-0.189,
+       -2.034093,2.223187,-0.144,      -1.786654,2.226173,-0.144,      -1.788434,2.200999,-0.189,
+       -1.788434,2.200999,-0.189,      -2.027731,2.198189,-0.189,      -2.034093,2.223187,-0.144,
+       -2.03841,2.24015,-0.081,        -1.785445,2.243256,-0.081,      -1.786654,2.226173,-0.144,
+       -1.786654,2.226173,-0.144,      -2.034093,2.223187,-0.144,      -2.03841,2.24015,-0.081,
+       -2.04,2.2464,0, -1.785,2.24955,0,       -1.785445,2.243256,-0.081,
+       -1.785445,2.243256,-0.081,      -2.03841,2.24015,-0.081,        -2.04,2.2464,0,
+       -2.149624,2.025055,-0.081,      -1.98479,2.02945,-0.081,        -1.9832,2.0232,0,
+       -1.9832,2.0232,0,       -2.1463,2.018925,0,     -2.149624,2.025055,-0.081,
+       -2.158645,2.041693,-0.144,      -1.989107,2.046413,-0.144,      -1.98479,2.02945,-0.081,
+       -1.98479,2.02945,-0.081,        -2.149624,2.025055,-0.081,      -2.158645,2.041693,-0.144,
+       -2.171939,2.066213,-0.189,      -1.995469,2.071411,-0.189,      -1.989107,2.046413,-0.144,
+       -1.989107,2.046413,-0.144,      -2.158645,2.041693,-0.144,      -2.171939,2.066213,-0.189,
+       -2.188082,2.095987,-0.216,      -2.003194,2.101766,-0.216,      -1.995469,2.071411,-0.189,
+       -1.995469,2.071411,-0.189,      -2.171939,2.066213,-0.189,      -2.188082,2.095987,-0.216,
+       -2.20565,2.128388,-0.225,       -2.0116,2.1348,-0.225,  -2.003194,2.101766,-0.216,
+       -2.003194,2.101766,-0.216,      -2.188082,2.095987,-0.216,      -2.20565,2.128388,-0.225,
+       -2.223218,2.160788,-0.216,      -2.020006,2.167834,-0.216,      -2.0116,2.1348,-0.225,
+       -2.0116,2.1348,-0.225,  -2.20565,2.128388,-0.225,       -2.223218,2.160788,-0.216,
+       -2.239361,2.190562,-0.189,      -2.027731,2.198189,-0.189,      -2.020006,2.167834,-0.216,
+       -2.020006,2.167834,-0.216,      -2.223218,2.160788,-0.216,      -2.239361,2.190562,-0.189,
+       -2.252655,2.215082,-0.144,      -2.034093,2.223187,-0.144,      -2.027731,2.198189,-0.189,
+       -2.027731,2.198189,-0.189,      -2.239361,2.190562,-0.189,      -2.252655,2.215082,-0.144,
+       -2.261676,2.23172,-0.081,       -2.03841,2.24015,-0.081,        -2.034093,2.223187,-0.144,
+       -2.034093,2.223187,-0.144,      -2.252655,2.215082,-0.144,      -2.261676,2.23172,-0.081,
+       -2.265,2.23785,0,       -2.04,2.2464,0, -2.03841,2.24015,-0.081,
+       -2.03841,2.24015,-0.081,        -2.261676,2.23172,-0.081,       -2.265,2.23785,0,
+       -2.294371,2.016497,-0.081,      -2.149624,2.025055,-0.081,      -2.1463,2.018925,0,
+       -2.1463,2.018925,0,     -2.2896,2.0106,0,       -2.294371,2.016497,-0.081,
+       -2.307322,2.032502,-0.144,      -2.158645,2.041693,-0.144,      -2.149624,2.025055,-0.081,
+       -2.149624,2.025055,-0.081,      -2.294371,2.016497,-0.081,      -2.307322,2.032502,-0.144,
+       -2.326406,2.05609,-0.189,       -2.171939,2.066213,-0.189,      -2.158645,2.041693,-0.144,
+       -2.158645,2.041693,-0.144,      -2.307322,2.032502,-0.144,      -2.326406,2.05609,-0.189,
+       -2.349581,2.084731,-0.216,      -2.188082,2.095987,-0.216,      -2.171939,2.066213,-0.189,
+       -2.171939,2.066213,-0.189,      -2.326406,2.05609,-0.189,       -2.349581,2.084731,-0.216,
+       -2.3748,2.1159,-0.225,  -2.20565,2.128388,-0.225,       -2.188082,2.095987,-0.216,
+       -2.188082,2.095987,-0.216,      -2.349581,2.084731,-0.216,      -2.3748,2.1159,-0.225,
+       -2.400019,2.147069,-0.216,      -2.223218,2.160788,-0.216,      -2.20565,2.128388,-0.225,
+       -2.20565,2.128388,-0.225,       -2.3748,2.1159,-0.225,  -2.400019,2.147069,-0.216,
+       -2.423194,2.17571,-0.189,       -2.239361,2.190562,-0.189,      -2.223218,2.160788,-0.216,
+       -2.223218,2.160788,-0.216,      -2.400019,2.147069,-0.216,      -2.423194,2.17571,-0.189,
+       -2.442278,2.199298,-0.144,      -2.252655,2.215082,-0.144,      -2.239361,2.190562,-0.189,
+       -2.239361,2.190562,-0.189,      -2.423194,2.17571,-0.189,       -2.442278,2.199298,-0.144,
+       -2.455229,2.215303,-0.081,      -2.261676,2.23172,-0.081,       -2.252655,2.215082,-0.144,
+       -2.252655,2.215082,-0.144,      -2.442278,2.199298,-0.144,      -2.455229,2.215303,-0.081,
+       -2.46,2.2212,0, -2.265,2.23785,0,       -2.261676,2.23172,-0.081,
+       -2.261676,2.23172,-0.081,       -2.455229,2.215303,-0.081,      -2.46,2.2212,0,
+       -2.41845,2.002387,-0.081,       -2.294371,2.016497,-0.081,      -2.2896,2.0106,0,
+       -2.2896,2.0106,0,       -2.4125,1.996875,0,     -2.41845,2.002387,-0.081,
+       -2.4346,2.01735,-0.144, -2.307322,2.032502,-0.144,      -2.294371,2.016497,-0.081,
+       -2.294371,2.016497,-0.081,      -2.41845,2.002387,-0.081,       -2.4346,2.01735,-0.144,
+       -2.4584,2.0394,-0.189,  -2.326406,2.05609,-0.189,       -2.307322,2.032502,-0.144,
+       -2.307322,2.032502,-0.144,      -2.4346,2.01735,-0.144, -2.4584,2.0394,-0.189,
+       -2.4873,2.066175,-0.216,        -2.349581,2.084731,-0.216,      -2.326406,2.05609,-0.189,
+       -2.326406,2.05609,-0.189,       -2.4584,2.0394,-0.189,  -2.4873,2.066175,-0.216,
+       -2.51875,2.095312,-0.225,       -2.3748,2.1159,-0.225,  -2.349581,2.084731,-0.216,
+       -2.349581,2.084731,-0.216,      -2.4873,2.066175,-0.216,        -2.51875,2.095312,-0.225,
+       -2.5502,2.12445,-0.216, -2.400019,2.147069,-0.216,      -2.3748,2.1159,-0.225,
+       -2.3748,2.1159,-0.225,  -2.51875,2.095312,-0.225,       -2.5502,2.12445,-0.216,
+       -2.5791,2.151225,-0.189,        -2.423194,2.17571,-0.189,       -2.400019,2.147069,-0.216,
+       -2.400019,2.147069,-0.216,      -2.5502,2.12445,-0.216, -2.5791,2.151225,-0.189,
+       -2.6029,2.173275,-0.144,        -2.442278,2.199298,-0.144,      -2.423194,2.17571,-0.189,
+       -2.423194,2.17571,-0.189,       -2.5791,2.151225,-0.189,        -2.6029,2.173275,-0.144,
+       -2.61905,2.188238,-0.081,       -2.455229,2.215303,-0.081,      -2.442278,2.199298,-0.144,
+       -2.442278,2.199298,-0.144,      -2.6029,2.173275,-0.144,        -2.61905,2.188238,-0.081,
+       -2.625,2.19375,0,       -2.46,2.2212,0, -2.455229,2.215303,-0.081,
+       -2.455229,2.215303,-0.081,      -2.61905,2.188238,-0.081,       -2.625,2.19375,0,
+       -2.521277,1.981339,-0.081,      -2.41845,2.002387,-0.081,       -2.4125,1.996875,0,
+       -2.4125,1.996875,0,     -2.5144,1.9764,0,       -2.521277,1.981339,-0.081,
+       -2.539942,1.994746,-0.144,      -2.4346,2.01735,-0.144, -2.41845,2.002387,-0.081,
+       -2.41845,2.002387,-0.081,       -2.521277,1.981339,-0.081,      -2.539942,1.994746,-0.144,
+       -2.56745,2.014502,-0.189,       -2.4584,2.0394,-0.189,  -2.4346,2.01735,-0.144,
+       -2.4346,2.01735,-0.144, -2.539942,1.994746,-0.144,      -2.56745,2.014502,-0.189,
+       -2.600851,2.038493,-0.216,      -2.4873,2.066175,-0.216,        -2.4584,2.0394,-0.189,
+       -2.4584,2.0394,-0.189,  -2.56745,2.014502,-0.189,       -2.600851,2.038493,-0.216,
+       -2.6372,2.0646,-0.225,  -2.51875,2.095312,-0.225,       -2.4873,2.066175,-0.216,
+       -2.4873,2.066175,-0.216,        -2.600851,2.038493,-0.216,      -2.6372,2.0646,-0.225,
+       -2.673549,2.090707,-0.216,      -2.5502,2.12445,-0.216, -2.51875,2.095312,-0.225,
+       -2.51875,2.095312,-0.225,       -2.6372,2.0646,-0.225,  -2.673549,2.090707,-0.216,
+       -2.70695,2.114698,-0.189,       -2.5791,2.151225,-0.189,        -2.5502,2.12445,-0.216,
+       -2.5502,2.12445,-0.216, -2.673549,2.090707,-0.216,      -2.70695,2.114698,-0.189,
+       -2.734458,2.134454,-0.144,      -2.6029,2.173275,-0.144,        -2.5791,2.151225,-0.189,
+       -2.5791,2.151225,-0.189,        -2.70695,2.114698,-0.189,       -2.734458,2.134454,-0.144,
+       -2.753123,2.147861,-0.081,      -2.61905,2.188238,-0.081,       -2.6029,2.173275,-0.144,
+       -2.6029,2.173275,-0.144,        -2.734458,2.134454,-0.144,      -2.753123,2.147861,-0.081,
+       -2.76,2.1528,0, -2.625,2.19375,0,       -2.61905,2.188238,-0.081,
+       -2.61905,2.188238,-0.081,       -2.753123,2.147861,-0.081,      -2.76,2.1528,0,
+       -2.602268,1.951964,-0.081,      -2.521277,1.981339,-0.081,      -2.5144,1.9764,0,
+       -2.5144,1.9764,0,       -2.5947,1.947825,0,     -2.602268,1.951964,-0.081,
+       -2.622811,1.963199,-0.144,      -2.539942,1.994746,-0.144,      -2.521277,1.981339,-0.081,
+       -2.521277,1.981339,-0.081,      -2.602268,1.951964,-0.081,      -2.622811,1.963199,-0.144,
+       -2.653085,1.979755,-0.189,      -2.56745,2.014502,-0.189,       -2.539942,1.994746,-0.144,
+       -2.539942,1.994746,-0.144,      -2.622811,1.963199,-0.144,      -2.653085,1.979755,-0.189,
+       -2.689846,1.999859,-0.216,      -2.600851,2.038493,-0.216,      -2.56745,2.014502,-0.189,
+       -2.56745,2.014502,-0.189,       -2.653085,1.979755,-0.189,      -2.689846,1.999859,-0.216,
+       -2.72985,2.021737,-0.225,       -2.6372,2.0646,-0.225,  -2.600851,2.038493,-0.216,
+       -2.600851,2.038493,-0.216,      -2.689846,1.999859,-0.216,      -2.72985,2.021737,-0.225,
+       -2.769854,2.043616,-0.216,      -2.673549,2.090707,-0.216,      -2.6372,2.0646,-0.225,
+       -2.6372,2.0646,-0.225,  -2.72985,2.021737,-0.225,       -2.769854,2.043616,-0.216,
+       -2.806615,2.06372,-0.189,       -2.70695,2.114698,-0.189,       -2.673549,2.090707,-0.216,
+       -2.673549,2.090707,-0.216,      -2.769854,2.043616,-0.216,      -2.806615,2.06372,-0.189,
+       -2.836889,2.080276,-0.144,      -2.734458,2.134454,-0.144,      -2.70695,2.114698,-0.189,
+       -2.70695,2.114698,-0.189,       -2.806615,2.06372,-0.189,       -2.836889,2.080276,-0.144,
+       -2.857432,2.091511,-0.081,      -2.753123,2.147861,-0.081,      -2.734458,2.134454,-0.144,
+       -2.734458,2.134454,-0.144,      -2.836889,2.080276,-0.144,      -2.857432,2.091511,-0.081,
+       -2.865,2.09565,0,       -2.76,2.1528,0, -2.753123,2.147861,-0.081,
+       -2.753123,2.147861,-0.081,      -2.857432,2.091511,-0.081,      -2.865,2.09565,0,
+       -2.660842,1.912874,-0.081,      -2.602268,1.951964,-0.081,      -2.5947,1.947825,0,
+       -2.5947,1.947825,0,     -2.6528,1.9098,0,       -2.660842,1.912874,-0.081,
+       -2.682669,1.921219,-0.144,      -2.622811,1.963199,-0.144,      -2.602268,1.951964,-0.081,
+       -2.602268,1.951964,-0.081,      -2.660842,1.912874,-0.081,      -2.682669,1.921219,-0.144,
+       -2.714835,1.933517,-0.189,      -2.653085,1.979755,-0.189,      -2.622811,1.963199,-0.144,
+       -2.622811,1.963199,-0.144,      -2.682669,1.921219,-0.144,      -2.714835,1.933517,-0.189,
+       -2.753894,1.94845,-0.216,       -2.689846,1.999859,-0.216,      -2.653085,1.979755,-0.189,
+       -2.653085,1.979755,-0.189,      -2.714835,1.933517,-0.189,      -2.753894,1.94845,-0.216,
+       -2.7964,1.9647,-0.225,  -2.72985,2.021737,-0.225,       -2.689846,1.999859,-0.216,
+       -2.689846,1.999859,-0.216,      -2.753894,1.94845,-0.216,       -2.7964,1.9647,-0.225,
+       -2.838906,1.98095,-0.216,       -2.769854,2.043616,-0.216,      -2.72985,2.021737,-0.225,
+       -2.72985,2.021737,-0.225,       -2.7964,1.9647,-0.225,  -2.838906,1.98095,-0.216,
+       -2.877965,1.995883,-0.189,      -2.806615,2.06372,-0.189,       -2.769854,2.043616,-0.216,
+       -2.769854,2.043616,-0.216,      -2.838906,1.98095,-0.216,       -2.877965,1.995883,-0.189,
+       -2.910131,2.008181,-0.144,      -2.836889,2.080276,-0.144,      -2.806615,2.06372,-0.189,
+       -2.806615,2.06372,-0.189,       -2.877965,1.995883,-0.189,      -2.910131,2.008181,-0.144,
+       -2.931958,2.016526,-0.081,      -2.857432,2.091511,-0.081,      -2.836889,2.080276,-0.144,
+       -2.836889,2.080276,-0.144,      -2.910131,2.008181,-0.144,      -2.931958,2.016526,-0.081,
+       -2.94,2.0196,0, -2.865,2.09565,0,       -2.857432,2.091511,-0.081,
+       -2.857432,2.091511,-0.081,      -2.931958,2.016526,-0.081,      -2.94,2.0196,0,
+       -2.696413,1.862682,-0.081,      -2.660842,1.912874,-0.081,      -2.6528,1.9098,0,
+       -2.6528,1.9098,0,       -2.6881,1.860975,0,     -2.696413,1.862682,-0.081,
+       -2.718978,1.867316,-0.144,      -2.682669,1.921219,-0.144,      -2.660842,1.912874,-0.081,
+       -2.660842,1.912874,-0.081,      -2.696413,1.862682,-0.081,      -2.718978,1.867316,-0.144,
+       -2.75223,1.874146,-0.189,       -2.714835,1.933517,-0.189,      -2.682669,1.921219,-0.144,
+       -2.682669,1.921219,-0.144,      -2.718978,1.867316,-0.144,      -2.75223,1.874146,-0.189,
+       -2.792609,1.882438,-0.216,      -2.753894,1.94845,-0.216,       -2.714835,1.933517,-0.189,
+       -2.714835,1.933517,-0.189,      -2.75223,1.874146,-0.189,       -2.792609,1.882438,-0.216,
+       -2.83655,1.891463,-0.225,       -2.7964,1.9647,-0.225,  -2.753894,1.94845,-0.216,
+       -2.753894,1.94845,-0.216,       -2.792609,1.882438,-0.216,      -2.83655,1.891463,-0.225,
+       -2.880491,1.900487,-0.216,      -2.838906,1.98095,-0.216,       -2.7964,1.9647,-0.225,
+       -2.7964,1.9647,-0.225,  -2.83655,1.891463,-0.225,       -2.880491,1.900487,-0.216,
+       -2.92087,1.908779,-0.189,       -2.877965,1.995883,-0.189,      -2.838906,1.98095,-0.216,
+       -2.838906,1.98095,-0.216,       -2.880491,1.900487,-0.216,      -2.92087,1.908779,-0.189,
+       -2.954122,1.915609,-0.144,      -2.910131,2.008181,-0.144,      -2.877965,1.995883,-0.189,
+       -2.877965,1.995883,-0.189,      -2.92087,1.908779,-0.189,       -2.954122,1.915609,-0.144,
+       -2.976687,1.920243,-0.081,      -2.931958,2.016526,-0.081,      -2.910131,2.008181,-0.144,
+       -2.910131,2.008181,-0.144,      -2.954122,1.915609,-0.144,      -2.976687,1.920243,-0.081,
+       -2.985,1.92195,0,       -2.94,2.0196,0, -2.931958,2.016526,-0.081,
+       -2.931958,2.016526,-0.081,      -2.976687,1.920243,-0.081,      -2.985,1.92195,0,
+       -2.7084,1.8,-0.081,     -2.696413,1.862682,-0.081,      -2.6881,1.860975,0,
+       -2.6881,1.860975,0,     -2.7,1.8,0,     -2.7084,1.8,-0.081,
+       -2.7312,1.8,-0.144,     -2.718978,1.867316,-0.144,      -2.696413,1.862682,-0.081,
+       -2.696413,1.862682,-0.081,      -2.7084,1.8,-0.081,     -2.7312,1.8,-0.144,
+       -2.7648,1.8,-0.189,     -2.75223,1.874146,-0.189,       -2.718978,1.867316,-0.144,
+       -2.718978,1.867316,-0.144,      -2.7312,1.8,-0.144,     -2.7648,1.8,-0.189,
+       -2.8056,1.8,-0.216,     -2.792609,1.882438,-0.216,      -2.75223,1.874146,-0.189,
+       -2.75223,1.874146,-0.189,       -2.7648,1.8,-0.189,     -2.8056,1.8,-0.216,
+       -2.85,1.8,-0.225,       -2.83655,1.891463,-0.225,       -2.792609,1.882438,-0.216,
+       -2.792609,1.882438,-0.216,      -2.8056,1.8,-0.216,     -2.85,1.8,-0.225,
+       -2.8944,1.8,-0.216,     -2.880491,1.900487,-0.216,      -2.83655,1.891463,-0.225,
+       -2.83655,1.891463,-0.225,       -2.85,1.8,-0.225,       -2.8944,1.8,-0.216,
+       -2.9352,1.8,-0.189,     -2.92087,1.908779,-0.189,       -2.880491,1.900487,-0.216,
+       -2.880491,1.900487,-0.216,      -2.8944,1.8,-0.216,     -2.9352,1.8,-0.189,
+       -2.9688,1.8,-0.144,     -2.954122,1.915609,-0.144,      -2.92087,1.908779,-0.189,
+       -2.92087,1.908779,-0.189,       -2.9352,1.8,-0.189,     -2.9688,1.8,-0.144,
+       -2.9916,1.8,-0.081,     -2.976687,1.920243,-0.081,      -2.954122,1.915609,-0.144,
+       -2.954122,1.915609,-0.144,      -2.9688,1.8,-0.144,     -2.9916,1.8,-0.081,
+       -3,1.8,0,       -2.985,1.92195,0,       -2.976687,1.920243,-0.081,
+       -2.976687,1.920243,-0.081,      -2.9916,1.8,-0.081,     -3,1.8,0,
+       -1.785445,2.243256,0.081,       -1.5028,2.2437,0.081,   -1.5,2.25,0,
+       -1.5,2.25,0,    -1.785,2.24955,0,       -1.785445,2.243256,0.081,
+       -1.786654,2.226173,0.144,       -1.5104,2.2266,0.144,   -1.5028,2.2437,0.081,
+       -1.5028,2.2437,0.081,   -1.785445,2.243256,0.081,       -1.786654,2.226173,0.144,
+       -1.788434,2.200999,0.189,       -1.5216,2.2014,0.189,   -1.5104,2.2266,0.144,
+       -1.5104,2.2266,0.144,   -1.786654,2.226173,0.144,       -1.788434,2.200999,0.189,
+       -1.790597,2.170429,0.216,       -1.5352,2.1708,0.216,   -1.5216,2.2014,0.189,
+       -1.5216,2.2014,0.189,   -1.788434,2.200999,0.189,       -1.790597,2.170429,0.216,
+       -1.79295,2.137163,0.225,        -1.55,2.1375,0.225,     -1.5352,2.1708,0.216,
+       -1.5352,2.1708,0.216,   -1.790597,2.170429,0.216,       -1.79295,2.137163,0.225,
+       -1.795303,2.103896,0.216,       -1.5648,2.1042,0.216,   -1.55,2.1375,0.225,
+       -1.55,2.1375,0.225,     -1.79295,2.137163,0.225,        -1.795303,2.103896,0.216,
+       -1.797466,2.073326,0.189,       -1.5784,2.0736,0.189,   -1.5648,2.1042,0.216,
+       -1.5648,2.1042,0.216,   -1.795303,2.103896,0.216,       -1.797466,2.073326,0.189,
+       -1.799246,2.048152,0.144,       -1.5896,2.0484,0.144,   -1.5784,2.0736,0.189,
+       -1.5784,2.0736,0.189,   -1.797466,2.073326,0.189,       -1.799246,2.048152,0.144,
+       -1.800455,2.031069,0.081,       -1.5972,2.0313,0.081,   -1.5896,2.0484,0.144,
+       -1.5896,2.0484,0.144,   -1.799246,2.048152,0.144,       -1.800455,2.031069,0.081,
+       -1.8009,2.024775,0,     -1.6,2.025,0,   -1.5972,2.0313,0.081,
+       -1.5972,2.0313,0.081,   -1.800455,2.031069,0.081,       -1.8009,2.024775,0,
+       -2.03841,2.24015,0.081, -1.785445,2.243256,0.081,       -1.785,2.24955,0,
+       -1.785,2.24955,0,       -2.04,2.2464,0, -2.03841,2.24015,0.081,
+       -2.034093,2.223187,0.144,       -1.786654,2.226173,0.144,       -1.785445,2.243256,0.081,
+       -1.785445,2.243256,0.081,       -2.03841,2.24015,0.081, -2.034093,2.223187,0.144,
+       -2.027731,2.198189,0.189,       -1.788434,2.200999,0.189,       -1.786654,2.226173,0.144,
+       -1.786654,2.226173,0.144,       -2.034093,2.223187,0.144,       -2.027731,2.198189,0.189,
+       -2.020006,2.167834,0.216,       -1.790597,2.170429,0.216,       -1.788434,2.200999,0.189,
+       -1.788434,2.200999,0.189,       -2.027731,2.198189,0.189,       -2.020006,2.167834,0.216,
+       -2.0116,2.1348,0.225,   -1.79295,2.137163,0.225,        -1.790597,2.170429,0.216,
+       -1.790597,2.170429,0.216,       -2.020006,2.167834,0.216,       -2.0116,2.1348,0.225,
+       -2.003194,2.101766,0.216,       -1.795303,2.103896,0.216,       -1.79295,2.137163,0.225,
+       -1.79295,2.137163,0.225,        -2.0116,2.1348,0.225,   -2.003194,2.101766,0.216,
+       -1.995469,2.071411,0.189,       -1.797466,2.073326,0.189,       -1.795303,2.103896,0.216,
+       -1.795303,2.103896,0.216,       -2.003194,2.101766,0.216,       -1.995469,2.071411,0.189,
+       -1.989107,2.046413,0.144,       -1.799246,2.048152,0.144,       -1.797466,2.073326,0.189,
+       -1.797466,2.073326,0.189,       -1.995469,2.071411,0.189,       -1.989107,2.046413,0.144,
+       -1.98479,2.02945,0.081, -1.800455,2.031069,0.081,       -1.799246,2.048152,0.144,
+       -1.799246,2.048152,0.144,       -1.989107,2.046413,0.144,       -1.98479,2.02945,0.081,
+       -1.9832,2.0232,0,       -1.8009,2.024775,0,     -1.800455,2.031069,0.081,
+       -1.800455,2.031069,0.081,       -1.98479,2.02945,0.081, -1.9832,2.0232,0,
+       -2.261676,2.23172,0.081,        -2.03841,2.24015,0.081, -2.04,2.2464,0,
+       -2.04,2.2464,0, -2.265,2.23785,0,       -2.261676,2.23172,0.081,
+       -2.252655,2.215082,0.144,       -2.034093,2.223187,0.144,       -2.03841,2.24015,0.081,
+       -2.03841,2.24015,0.081, -2.261676,2.23172,0.081,        -2.252655,2.215082,0.144,
+       -2.239361,2.190562,0.189,       -2.027731,2.198189,0.189,       -2.034093,2.223187,0.144,
+       -2.034093,2.223187,0.144,       -2.252655,2.215082,0.144,       -2.239361,2.190562,0.189,
+       -2.223218,2.160788,0.216,       -2.020006,2.167834,0.216,       -2.027731,2.198189,0.189,
+       -2.027731,2.198189,0.189,       -2.239361,2.190562,0.189,       -2.223218,2.160788,0.216,
+       -2.20565,2.128387,0.225,        -2.0116,2.1348,0.225,   -2.020006,2.167834,0.216,
+       -2.020006,2.167834,0.216,       -2.223218,2.160788,0.216,       -2.20565,2.128387,0.225,
+       -2.188082,2.095987,0.216,       -2.003194,2.101766,0.216,       -2.0116,2.1348,0.225,
+       -2.0116,2.1348,0.225,   -2.20565,2.128387,0.225,        -2.188082,2.095987,0.216,
+       -2.171939,2.066213,0.189,       -1.995469,2.071411,0.189,       -2.003194,2.101766,0.216,
+       -2.003194,2.101766,0.216,       -2.188082,2.095987,0.216,       -2.171939,2.066213,0.189,
+       -2.158645,2.041693,0.144,       -1.989107,2.046413,0.144,       -1.995469,2.071411,0.189,
+       -1.995469,2.071411,0.189,       -2.171939,2.066213,0.189,       -2.158645,2.041693,0.144,
+       -2.149624,2.025055,0.081,       -1.98479,2.02945,0.081, -1.989107,2.046413,0.144,
+       -1.989107,2.046413,0.144,       -2.158645,2.041693,0.144,       -2.149624,2.025055,0.081,
+       -2.1463,2.018925,0,     -1.9832,2.0232,0,       -1.98479,2.02945,0.081,
+       -1.98479,2.02945,0.081, -2.149624,2.025055,0.081,       -2.1463,2.018925,0,
+       -2.455229,2.215303,0.081,       -2.261676,2.23172,0.081,        -2.265,2.23785,0,
+       -2.265,2.23785,0,       -2.46,2.2212,0, -2.455229,2.215303,0.081,
+       -2.442278,2.199298,0.144,       -2.252655,2.215082,0.144,       -2.261676,2.23172,0.081,
+       -2.261676,2.23172,0.081,        -2.455229,2.215303,0.081,       -2.442278,2.199298,0.144,
+       -2.423194,2.17571,0.189,        -2.239361,2.190562,0.189,       -2.252655,2.215082,0.144,
+       -2.252655,2.215082,0.144,       -2.442278,2.199298,0.144,       -2.423194,2.17571,0.189,
+       -2.400019,2.147069,0.216,       -2.223218,2.160788,0.216,       -2.239361,2.190562,0.189,
+       -2.239361,2.190562,0.189,       -2.423194,2.17571,0.189,        -2.400019,2.147069,0.216,
+       -2.3748,2.1159,0.225,   -2.20565,2.128387,0.225,        -2.223218,2.160788,0.216,
+       -2.223218,2.160788,0.216,       -2.400019,2.147069,0.216,       -2.3748,2.1159,0.225,
+       -2.349581,2.084731,0.216,       -2.188082,2.095987,0.216,       -2.20565,2.128387,0.225,
+       -2.20565,2.128387,0.225,        -2.3748,2.1159,0.225,   -2.349581,2.084731,0.216,
+       -2.326406,2.05609,0.189,        -2.171939,2.066213,0.189,       -2.188082,2.095987,0.216,
+       -2.188082,2.095987,0.216,       -2.349581,2.084731,0.216,       -2.326406,2.05609,0.189,
+       -2.307322,2.032502,0.144,       -2.158645,2.041693,0.144,       -2.171939,2.066213,0.189,
+       -2.171939,2.066213,0.189,       -2.326406,2.05609,0.189,        -2.307322,2.032502,0.144,
+       -2.294371,2.016497,0.081,       -2.149624,2.025055,0.081,       -2.158645,2.041693,0.144,
+       -2.158645,2.041693,0.144,       -2.307322,2.032502,0.144,       -2.294371,2.016497,0.081,
+       -2.2896,2.0106,0,       -2.1463,2.018925,0,     -2.149624,2.025055,0.081,
+       -2.149624,2.025055,0.081,       -2.294371,2.016497,0.081,       -2.2896,2.0106,0,
+       -2.61905,2.188238,0.081,        -2.455229,2.215303,0.081,       -2.46,2.2212,0,
+       -2.46,2.2212,0, -2.625,2.19375,0,       -2.61905,2.188238,0.081,
+       -2.6029,2.173275,0.144, -2.442278,2.199298,0.144,       -2.455229,2.215303,0.081,
+       -2.455229,2.215303,0.081,       -2.61905,2.188238,0.081,        -2.6029,2.173275,0.144,
+       -2.5791,2.151225,0.189, -2.423194,2.17571,0.189,        -2.442278,2.199298,0.144,
+       -2.442278,2.199298,0.144,       -2.6029,2.173275,0.144, -2.5791,2.151225,0.189,
+       -2.5502,2.12445,0.216,  -2.400019,2.147069,0.216,       -2.423194,2.17571,0.189,
+       -2.423194,2.17571,0.189,        -2.5791,2.151225,0.189, -2.5502,2.12445,0.216,
+       -2.51875,2.095312,0.225,        -2.3748,2.1159,0.225,   -2.400019,2.147069,0.216,
+       -2.400019,2.147069,0.216,       -2.5502,2.12445,0.216,  -2.51875,2.095312,0.225,
+       -2.4873,2.066175,0.216, -2.349581,2.084731,0.216,       -2.3748,2.1159,0.225,
+       -2.3748,2.1159,0.225,   -2.51875,2.095312,0.225,        -2.4873,2.066175,0.216,
+       -2.4584,2.0394,0.189,   -2.326406,2.05609,0.189,        -2.349581,2.084731,0.216,
+       -2.349581,2.084731,0.216,       -2.4873,2.066175,0.216, -2.4584,2.0394,0.189,
+       -2.4346,2.01735,0.144,  -2.307322,2.032502,0.144,       -2.326406,2.05609,0.189,
+       -2.326406,2.05609,0.189,        -2.4584,2.0394,0.189,   -2.4346,2.01735,0.144,
+       -2.41845,2.002388,0.081,        -2.294371,2.016497,0.081,       -2.307322,2.032502,0.144,
+       -2.307322,2.032502,0.144,       -2.4346,2.01735,0.144,  -2.41845,2.002388,0.081,
+       -2.4125,1.996875,0,     -2.2896,2.0106,0,       -2.294371,2.016497,0.081,
+       -2.294371,2.016497,0.081,       -2.41845,2.002388,0.081,        -2.4125,1.996875,0,
+       -2.753123,2.147861,0.081,       -2.61905,2.188238,0.081,        -2.625,2.19375,0,
+       -2.625,2.19375,0,       -2.76,2.1528,0, -2.753123,2.147861,0.081,
+       -2.734458,2.134454,0.144,       -2.6029,2.173275,0.144, -2.61905,2.188238,0.081,
+       -2.61905,2.188238,0.081,        -2.753123,2.147861,0.081,       -2.734458,2.134454,0.144,
+       -2.70695,2.114698,0.189,        -2.5791,2.151225,0.189, -2.6029,2.173275,0.144,
+       -2.6029,2.173275,0.144, -2.734458,2.134454,0.144,       -2.70695,2.114698,0.189,
+       -2.673549,2.090707,0.216,       -2.5502,2.12445,0.216,  -2.5791,2.151225,0.189,
+       -2.5791,2.151225,0.189, -2.70695,2.114698,0.189,        -2.673549,2.090707,0.216,
+       -2.6372,2.0646,0.225,   -2.51875,2.095312,0.225,        -2.5502,2.12445,0.216,
+       -2.5502,2.12445,0.216,  -2.673549,2.090707,0.216,       -2.6372,2.0646,0.225,
+       -2.600851,2.038493,0.216,       -2.4873,2.066175,0.216, -2.51875,2.095312,0.225,
+       -2.51875,2.095312,0.225,        -2.6372,2.0646,0.225,   -2.600851,2.038493,0.216,
+       -2.56745,2.014502,0.189,        -2.4584,2.0394,0.189,   -2.4873,2.066175,0.216,
+       -2.4873,2.066175,0.216, -2.600851,2.038493,0.216,       -2.56745,2.014502,0.189,
+       -2.539942,1.994746,0.144,       -2.4346,2.01735,0.144,  -2.4584,2.0394,0.189,
+       -2.4584,2.0394,0.189,   -2.56745,2.014502,0.189,        -2.539942,1.994746,0.144,
+       -2.521277,1.981339,0.081,       -2.41845,2.002388,0.081,        -2.4346,2.01735,0.144,
+       -2.4346,2.01735,0.144,  -2.539942,1.994746,0.144,       -2.521277,1.981339,0.081,
+       -2.5144,1.9764,0,       -2.4125,1.996875,0,     -2.41845,2.002388,0.081,
+       -2.41845,2.002388,0.081,        -2.521277,1.981339,0.081,       -2.5144,1.9764,0,
+       -2.857432,2.091511,0.081,       -2.753123,2.147861,0.081,       -2.76,2.1528,0,
+       -2.76,2.1528,0, -2.865,2.09565,0,       -2.857432,2.091511,0.081,
+       -2.836889,2.080276,0.144,       -2.734458,2.134454,0.144,       -2.753123,2.147861,0.081,
+       -2.753123,2.147861,0.081,       -2.857432,2.091511,0.081,       -2.836889,2.080276,0.144,
+       -2.806615,2.06372,0.189,        -2.70695,2.114698,0.189,        -2.734458,2.134454,0.144,
+       -2.734458,2.134454,0.144,       -2.836889,2.080276,0.144,       -2.806615,2.06372,0.189,
+       -2.769854,2.043616,0.216,       -2.673549,2.090707,0.216,       -2.70695,2.114698,0.189,
+       -2.70695,2.114698,0.189,        -2.806615,2.06372,0.189,        -2.769854,2.043616,0.216,
+       -2.72985,2.021737,0.225,        -2.6372,2.0646,0.225,   -2.673549,2.090707,0.216,
+       -2.673549,2.090707,0.216,       -2.769854,2.043616,0.216,       -2.72985,2.021737,0.225,
+       -2.689846,1.999859,0.216,       -2.600851,2.038493,0.216,       -2.6372,2.0646,0.225,
+       -2.6372,2.0646,0.225,   -2.72985,2.021737,0.225,        -2.689846,1.999859,0.216,
+       -2.653085,1.979755,0.189,       -2.56745,2.014502,0.189,        -2.600851,2.038493,0.216,
+       -2.600851,2.038493,0.216,       -2.689846,1.999859,0.216,       -2.653085,1.979755,0.189,
+       -2.622811,1.963199,0.144,       -2.539942,1.994746,0.144,       -2.56745,2.014502,0.189,
+       -2.56745,2.014502,0.189,        -2.653085,1.979755,0.189,       -2.622811,1.963199,0.144,
+       -2.602268,1.951964,0.081,       -2.521277,1.981339,0.081,       -2.539942,1.994746,0.144,
+       -2.539942,1.994746,0.144,       -2.622811,1.963199,0.144,       -2.602268,1.951964,0.081,
+       -2.5947,1.947825,0,     -2.5144,1.9764,0,       -2.521277,1.981339,0.081,
+       -2.521277,1.981339,0.081,       -2.602268,1.951964,0.081,       -2.5947,1.947825,0,
+       -2.931958,2.016526,0.081,       -2.857432,2.091511,0.081,       -2.865,2.09565,0,
+       -2.865,2.09565,0,       -2.94,2.0196,0, -2.931958,2.016526,0.081,
+       -2.910131,2.008181,0.144,       -2.836889,2.080276,0.144,       -2.857432,2.091511,0.081,
+       -2.857432,2.091511,0.081,       -2.931958,2.016526,0.081,       -2.910131,2.008181,0.144,
+       -2.877965,1.995883,0.189,       -2.806615,2.06372,0.189,        -2.836889,2.080276,0.144,
+       -2.836889,2.080276,0.144,       -2.910131,2.008181,0.144,       -2.877965,1.995883,0.189,
+       -2.838906,1.98095,0.216,        -2.769854,2.043616,0.216,       -2.806615,2.06372,0.189,
+       -2.806615,2.06372,0.189,        -2.877965,1.995883,0.189,       -2.838906,1.98095,0.216,
+       -2.7964,1.9647,0.225,   -2.72985,2.021737,0.225,        -2.769854,2.043616,0.216,
+       -2.769854,2.043616,0.216,       -2.838906,1.98095,0.216,        -2.7964,1.9647,0.225,
+       -2.753894,1.94845,0.216,        -2.689846,1.999859,0.216,       -2.72985,2.021737,0.225,
+       -2.72985,2.021737,0.225,        -2.7964,1.9647,0.225,   -2.753894,1.94845,0.216,
+       -2.714835,1.933517,0.189,       -2.653085,1.979755,0.189,       -2.689846,1.999859,0.216,
+       -2.689846,1.999859,0.216,       -2.753894,1.94845,0.216,        -2.714835,1.933517,0.189,
+       -2.682669,1.921219,0.144,       -2.622811,1.963199,0.144,       -2.653085,1.979755,0.189,
+       -2.653085,1.979755,0.189,       -2.714835,1.933517,0.189,       -2.682669,1.921219,0.144,
+       -2.660842,1.912874,0.081,       -2.602268,1.951964,0.081,       -2.622811,1.963199,0.144,
+       -2.622811,1.963199,0.144,       -2.682669,1.921219,0.144,       -2.660842,1.912874,0.081,
+       -2.6528,1.9098,0,       -2.5947,1.947825,0,     -2.602268,1.951964,0.081,
+       -2.602268,1.951964,0.081,       -2.660842,1.912874,0.081,       -2.6528,1.9098,0,
+       -2.976687,1.920243,0.081,       -2.931958,2.016526,0.081,       -2.94,2.0196,0,
+       -2.94,2.0196,0, -2.985,1.92195,0,       -2.976687,1.920243,0.081,
+       -2.954122,1.915609,0.144,       -2.910131,2.008181,0.144,       -2.931958,2.016526,0.081,
+       -2.931958,2.016526,0.081,       -2.976687,1.920243,0.081,       -2.954122,1.915609,0.144,
+       -2.92087,1.908779,0.189,        -2.877965,1.995883,0.189,       -2.910131,2.008181,0.144,
+       -2.910131,2.008181,0.144,       -2.954122,1.915609,0.144,       -2.92087,1.908779,0.189,
+       -2.880491,1.900487,0.216,       -2.838906,1.98095,0.216,        -2.877965,1.995883,0.189,
+       -2.877965,1.995883,0.189,       -2.92087,1.908779,0.189,        -2.880491,1.900487,0.216,
+       -2.83655,1.891463,0.225,        -2.7964,1.9647,0.225,   -2.838906,1.98095,0.216,
+       -2.838906,1.98095,0.216,        -2.880491,1.900487,0.216,       -2.83655,1.891463,0.225,
+       -2.792609,1.882438,0.216,       -2.753894,1.94845,0.216,        -2.7964,1.9647,0.225,
+       -2.7964,1.9647,0.225,   -2.83655,1.891463,0.225,        -2.792609,1.882438,0.216,
+       -2.75223,1.874146,0.189,        -2.714835,1.933517,0.189,       -2.753894,1.94845,0.216,
+       -2.753894,1.94845,0.216,        -2.792609,1.882438,0.216,       -2.75223,1.874146,0.189,
+       -2.718978,1.867316,0.144,       -2.682669,1.921219,0.144,       -2.714835,1.933517,0.189,
+       -2.714835,1.933517,0.189,       -2.75223,1.874146,0.189,        -2.718978,1.867316,0.144,
+       -2.696413,1.862682,0.081,       -2.660842,1.912874,0.081,       -2.682669,1.921219,0.144,
+       -2.682669,1.921219,0.144,       -2.718978,1.867316,0.144,       -2.696413,1.862682,0.081,
+       -2.6881,1.860975,0,     -2.6528,1.9098,0,       -2.660842,1.912874,0.081,
+       -2.660842,1.912874,0.081,       -2.696413,1.862682,0.081,       -2.6881,1.860975,0,
+       -2.9916,1.8,0.081,      -2.976687,1.920243,0.081,       -2.985,1.92195,0,
+       -2.985,1.92195,0,       -3,1.8,0,       -2.9916,1.8,0.081,
+       -2.9688,1.8,0.144,      -2.954122,1.915609,0.144,       -2.976687,1.920243,0.081,
+       -2.976687,1.920243,0.081,       -2.9916,1.8,0.081,      -2.9688,1.8,0.144,
+       -2.9352,1.8,0.189,      -2.92087,1.908779,0.189,        -2.954122,1.915609,0.144,
+       -2.954122,1.915609,0.144,       -2.9688,1.8,0.144,      -2.9352,1.8,0.189,
+       -2.8944,1.8,0.216,      -2.880491,1.900487,0.216,       -2.92087,1.908779,0.189,
+       -2.92087,1.908779,0.189,        -2.9352,1.8,0.189,      -2.8944,1.8,0.216,
+       -2.85,1.8,0.225,        -2.83655,1.891463,0.225,        -2.880491,1.900487,0.216,
+       -2.880491,1.900487,0.216,       -2.8944,1.8,0.216,      -2.85,1.8,0.225,
+       -2.8056,1.8,0.216,      -2.792609,1.882438,0.216,       -2.83655,1.891463,0.225,
+       -2.83655,1.891463,0.225,        -2.85,1.8,0.225,        -2.8056,1.8,0.216,
+       -2.7648,1.8,0.189,      -2.75223,1.874146,0.189,        -2.792609,1.882438,0.216,
+       -2.792609,1.882438,0.216,       -2.8056,1.8,0.216,      -2.7648,1.8,0.189,
+       -2.7312,1.8,0.144,      -2.718978,1.867316,0.144,       -2.75223,1.874146,0.189,
+       -2.75223,1.874146,0.189,        -2.7648,1.8,0.189,      -2.7312,1.8,0.144,
+       -2.7084,1.8,0.081,      -2.696413,1.862682,0.081,       -2.718978,1.867316,0.144,
+       -2.718978,1.867316,0.144,       -2.7312,1.8,0.144,      -2.7084,1.8,0.081,
+       -2.7,1.8,0,     -2.6881,1.860975,0,     -2.696413,1.862682,0.081,
+       -2.696413,1.862682,0.081,       -2.7084,1.8,0.081,      -2.7,1.8,0,
+       -2.702175,1.724519,-0.081,      -2.7084,1.8,-0.081,     -2.7,1.8,0,
+       -2.7,1.8,0,     -2.6939,1.7262,0,       -2.702175,1.724519,-0.081,
+       -2.724637,1.719956,-0.144,      -2.7312,1.8,-0.144,     -2.7084,1.8,-0.081,
+       -2.7084,1.8,-0.081,     -2.702175,1.724519,-0.081,      -2.724637,1.719956,-0.144,
+       -2.757739,1.713232,-0.189,      -2.7648,1.8,-0.189,     -2.7312,1.8,-0.144,
+       -2.7312,1.8,-0.144,     -2.724637,1.719956,-0.144,      -2.757739,1.713232,-0.189,
+       -2.797934,1.705067,-0.216,      -2.8056,1.8,-0.216,     -2.7648,1.8,-0.189,
+       -2.7648,1.8,-0.189,     -2.757739,1.713232,-0.189,      -2.797934,1.705067,-0.216,
+       -2.841675,1.696181,-0.225,      -2.85,1.8,-0.225,       -2.8056,1.8,-0.216,
+       -2.8056,1.8,-0.216,     -2.797934,1.705067,-0.216,      -2.841675,1.696181,-0.225,
+       -2.885416,1.687296,-0.216,      -2.8944,1.8,-0.216,     -2.85,1.8,-0.225,
+       -2.85,1.8,-0.225,       -2.841675,1.696181,-0.225,      -2.885416,1.687296,-0.216,
+       -2.925611,1.679131,-0.189,      -2.9352,1.8,-0.189,     -2.8944,1.8,-0.216,
+       -2.8944,1.8,-0.216,     -2.885416,1.687296,-0.216,      -2.925611,1.679131,-0.189,
+       -2.958713,1.672406,-0.144,      -2.9688,1.8,-0.144,     -2.9352,1.8,-0.189,
+       -2.9352,1.8,-0.189,     -2.925611,1.679131,-0.189,      -2.958713,1.672406,-0.144,
+       -2.981175,1.667844,-0.081,      -2.9916,1.8,-0.081,     -2.9688,1.8,-0.144,
+       -2.9688,1.8,-0.144,     -2.958713,1.672406,-0.144,      -2.981175,1.667844,-0.081,
+       -2.98945,1.666162,0,    -3,1.8,0,       -2.9916,1.8,-0.081,
+       -2.9916,1.8,-0.081,     -2.981175,1.667844,-0.081,      -2.98945,1.666162,0,
+       -2.683107,1.63861,-0.081,       -2.702175,1.724519,-0.081,      -2.6939,1.7262,0,
+       -2.6939,1.7262,0,       -2.6752,1.6416,0,       -2.683107,1.63861,-0.081,
+       -2.70457,1.630493,-0.144,       -2.724637,1.719956,-0.144,      -2.702175,1.724519,-0.081,
+       -2.702175,1.724519,-0.081,      -2.683107,1.63861,-0.081,       -2.70457,1.630493,-0.144,
+       -2.736198,1.618531,-0.189,      -2.757739,1.713232,-0.189,      -2.724637,1.719956,-0.144,
+       -2.724637,1.719956,-0.144,      -2.70457,1.630493,-0.144,       -2.736198,1.618531,-0.189,
+       -2.774605,1.604006,-0.216,      -2.797934,1.705067,-0.216,      -2.757739,1.713232,-0.189,
+       -2.757739,1.713232,-0.189,      -2.736198,1.618531,-0.189,      -2.774605,1.604006,-0.216,
+       -2.8164,1.5882,-0.225,  -2.841675,1.696181,-0.225,      -2.797934,1.705067,-0.216,
+       -2.797934,1.705067,-0.216,      -2.774605,1.604006,-0.216,      -2.8164,1.5882,-0.225,
+       -2.858195,1.572394,-0.216,      -2.885416,1.687296,-0.216,      -2.841675,1.696181,-0.225,
+       -2.841675,1.696181,-0.225,      -2.8164,1.5882,-0.225,  -2.858195,1.572394,-0.216,
+       -2.896602,1.557869,-0.189,      -2.925611,1.679131,-0.189,      -2.885416,1.687296,-0.216,
+       -2.885416,1.687296,-0.216,      -2.858195,1.572394,-0.216,      -2.896602,1.557869,-0.189,
+       -2.92823,1.545907,-0.144,       -2.958713,1.672406,-0.144,      -2.925611,1.679131,-0.189,
+       -2.925611,1.679131,-0.189,      -2.896602,1.557869,-0.189,      -2.92823,1.545907,-0.144,
+       -2.949693,1.53779,-0.081,       -2.981175,1.667844,-0.081,      -2.958713,1.672406,-0.144,
+       -2.958713,1.672406,-0.144,      -2.92823,1.545907,-0.144,       -2.949693,1.53779,-0.081,
+       -2.9576,1.5348,0,       -2.98945,1.666162,0,    -2.981175,1.667844,-0.081,
+       -2.981175,1.667844,-0.081,      -2.949693,1.53779,-0.081,       -2.9576,1.5348,0,
+       -2.650604,1.544903,-0.081,      -2.683107,1.63861,-0.081,       -2.6752,1.6416,0,
+       -2.6752,1.6416,0,       -2.6433,1.5489,0,       -2.650604,1.544903,-0.081,
+       -2.670428,1.534053,-0.144,      -2.70457,1.630493,-0.144,       -2.683107,1.63861,-0.081,
+       -2.683107,1.63861,-0.081,       -2.650604,1.544903,-0.081,      -2.670428,1.534053,-0.144,
+       -2.699644,1.518063,-0.189,      -2.736198,1.618531,-0.189,      -2.70457,1.630493,-0.144,
+       -2.70457,1.630493,-0.144,       -2.670428,1.534053,-0.144,      -2.699644,1.518063,-0.189,
+       -2.735119,1.498648,-0.216,      -2.774605,1.604006,-0.216,      -2.736198,1.618531,-0.189,
+       -2.736198,1.618531,-0.189,      -2.699644,1.518063,-0.189,      -2.735119,1.498648,-0.216,
+       -2.773725,1.477519,-0.225,      -2.8164,1.5882,-0.225,  -2.774605,1.604006,-0.216,
+       -2.774605,1.604006,-0.216,      -2.735119,1.498648,-0.216,      -2.773725,1.477519,-0.225,
+       -2.812331,1.45639,-0.216,       -2.858195,1.572394,-0.216,      -2.8164,1.5882,-0.225,
+       -2.8164,1.5882,-0.225,  -2.773725,1.477519,-0.225,      -2.812331,1.45639,-0.216,
+       -2.847806,1.436974,-0.189,      -2.896602,1.557869,-0.189,      -2.858195,1.572394,-0.216,
+       -2.858195,1.572394,-0.216,      -2.812331,1.45639,-0.216,       -2.847806,1.436974,-0.189,
+       -2.877022,1.420985,-0.144,      -2.92823,1.545907,-0.144,       -2.896602,1.557869,-0.189,
+       -2.896602,1.557869,-0.189,      -2.847806,1.436974,-0.189,      -2.877022,1.420985,-0.144,
+       -2.896846,1.410135,-0.081,      -2.949693,1.53779,-0.081,       -2.92823,1.545907,-0.144,
+       -2.92823,1.545907,-0.144,       -2.877022,1.420985,-0.144,      -2.896846,1.410135,-0.081,
+       -2.90415,1.406137,0,    -2.9576,1.5348,0,       -2.949693,1.53779,-0.081,
+       -2.949693,1.53779,-0.081,       -2.896846,1.410135,-0.081,      -2.90415,1.406137,0,
+       -2.604074,1.446029,-0.081,      -2.650604,1.544903,-0.081,      -2.6433,1.5489,0,
+       -2.6433,1.5489,0,       -2.5976,1.4508,0,       -2.604074,1.446029,-0.081,
+       -2.621645,1.433078,-0.144,      -2.670428,1.534053,-0.144,      -2.650604,1.544903,-0.081,
+       -2.650604,1.544903,-0.081,      -2.604074,1.446029,-0.081,      -2.621645,1.433078,-0.144,
+       -2.647539,1.413994,-0.189,      -2.699644,1.518063,-0.189,      -2.670428,1.534053,-0.144,
+       -2.670428,1.534053,-0.144,      -2.621645,1.433078,-0.144,      -2.647539,1.413994,-0.189,
+       -2.678982,1.390819,-0.216,      -2.735119,1.498648,-0.216,      -2.699644,1.518063,-0.189,
+       -2.699644,1.518063,-0.189,      -2.647539,1.413994,-0.189,      -2.678982,1.390819,-0.216,
+       -2.7132,1.3656,-0.225,  -2.773725,1.477519,-0.225,      -2.735119,1.498648,-0.216,
+       -2.735119,1.498648,-0.216,      -2.678982,1.390819,-0.216,      -2.7132,1.3656,-0.225,
+       -2.747418,1.340381,-0.216,      -2.812331,1.45639,-0.216,       -2.773725,1.477519,-0.225,
+       -2.773725,1.477519,-0.225,      -2.7132,1.3656,-0.225,  -2.747418,1.340381,-0.216,
+       -2.778861,1.317206,-0.189,      -2.847806,1.436974,-0.189,      -2.812331,1.45639,-0.216,
+       -2.812331,1.45639,-0.216,       -2.747418,1.340381,-0.216,      -2.778861,1.317206,-0.189,
+       -2.804755,1.298122,-0.144,      -2.877022,1.420985,-0.144,      -2.847806,1.436974,-0.189,
+       -2.847806,1.436974,-0.189,      -2.778861,1.317206,-0.189,      -2.804755,1.298122,-0.144,
+       -2.822326,1.285171,-0.081,      -2.896846,1.410135,-0.081,      -2.877022,1.420985,-0.144,
+       -2.877022,1.420985,-0.144,      -2.804755,1.298122,-0.144,      -2.822326,1.285171,-0.081,
+       -2.8288,1.2804,0,       -2.90415,1.406137,0,    -2.896846,1.410135,-0.081,
+       -2.896846,1.410135,-0.081,      -2.822326,1.285171,-0.081,      -2.8288,1.2804,0,
+       -2.542925,1.344619,-0.081,      -2.604074,1.446029,-0.081,      -2.5976,1.4508,0,
+       -2.5976,1.4508,0,       -2.5375,1.35,0, -2.542925,1.344619,-0.081,
+       -2.55765,1.330013,-0.144,       -2.621645,1.433078,-0.144,      -2.604074,1.446029,-0.081,
+       -2.604074,1.446029,-0.081,      -2.542925,1.344619,-0.081,      -2.55765,1.330013,-0.144,
+       -2.57935,1.308488,-0.189,       -2.647539,1.413994,-0.189,      -2.621645,1.433078,-0.144,
+       -2.621645,1.433078,-0.144,      -2.55765,1.330013,-0.144,       -2.57935,1.308488,-0.189,
+       -2.6057,1.28235,-0.216, -2.678982,1.390819,-0.216,      -2.647539,1.413994,-0.189,
+       -2.647539,1.413994,-0.189,      -2.57935,1.308488,-0.189,       -2.6057,1.28235,-0.216,
+       -2.634375,1.253906,-0.225,      -2.7132,1.3656,-0.225,  -2.678982,1.390819,-0.216,
+       -2.678982,1.390819,-0.216,      -2.6057,1.28235,-0.216, -2.634375,1.253906,-0.225,
+       -2.66305,1.225463,-0.216,       -2.747418,1.340381,-0.216,      -2.7132,1.3656,-0.225,
+       -2.7132,1.3656,-0.225,  -2.634375,1.253906,-0.225,      -2.66305,1.225463,-0.216,
+       -2.6894,1.199325,-0.189,        -2.778861,1.317206,-0.189,      -2.747418,1.340381,-0.216,
+       -2.747418,1.340381,-0.216,      -2.66305,1.225463,-0.216,       -2.6894,1.199325,-0.189,
+       -2.7111,1.1778,-0.144,  -2.804755,1.298122,-0.144,      -2.778861,1.317206,-0.189,
+       -2.778861,1.317206,-0.189,      -2.6894,1.199325,-0.189,        -2.7111,1.1778,-0.144,
+       -2.725825,1.163194,-0.081,      -2.822326,1.285171,-0.081,      -2.804755,1.298122,-0.144,
+       -2.804755,1.298122,-0.144,      -2.7111,1.1778,-0.144,  -2.725825,1.163194,-0.081,
+       -2.73125,1.157813,0,    -2.8288,1.2804,0,       -2.822326,1.285171,-0.081,
+       -2.822326,1.285171,-0.081,      -2.725825,1.163194,-0.081,      -2.73125,1.157813,0,
+       -2.466566,1.243303,-0.081,      -2.542925,1.344619,-0.081,      -2.5375,1.35,0,
+       -2.5375,1.35,0, -2.4624,1.2492,0,       -2.466566,1.243303,-0.081,
+       -2.477875,1.227298,-0.144,      -2.55765,1.330013,-0.144,       -2.542925,1.344619,-0.081,
+       -2.542925,1.344619,-0.081,      -2.466566,1.243303,-0.081,      -2.477875,1.227298,-0.144,
+       -2.494541,1.20371,-0.189,       -2.57935,1.308488,-0.189,       -2.55765,1.330013,-0.144,
+       -2.55765,1.330013,-0.144,       -2.477875,1.227298,-0.144,      -2.494541,1.20371,-0.189,
+       -2.514778,1.175069,-0.216,      -2.6057,1.28235,-0.216, -2.57935,1.308488,-0.189,
+       -2.57935,1.308488,-0.189,       -2.494541,1.20371,-0.189,       -2.514778,1.175069,-0.216,
+       -2.5368,1.1439,-0.225,  -2.634375,1.253906,-0.225,      -2.6057,1.28235,-0.216,
+       -2.6057,1.28235,-0.216, -2.514778,1.175069,-0.216,      -2.5368,1.1439,-0.225,
+       -2.558822,1.112731,-0.216,      -2.66305,1.225463,-0.216,       -2.634375,1.253906,-0.225,
+       -2.634375,1.253906,-0.225,      -2.5368,1.1439,-0.225,  -2.558822,1.112731,-0.216,
+       -2.579059,1.08409,-0.189,       -2.6894,1.199325,-0.189,        -2.66305,1.225463,-0.216,
+       -2.66305,1.225463,-0.216,       -2.558822,1.112731,-0.216,      -2.579059,1.08409,-0.189,
+       -2.595725,1.060502,-0.144,      -2.7111,1.1778,-0.144,  -2.6894,1.199325,-0.189,
+       -2.6894,1.199325,-0.189,        -2.579059,1.08409,-0.189,       -2.595725,1.060502,-0.144,
+       -2.607034,1.044497,-0.081,      -2.725825,1.163194,-0.081,      -2.7111,1.1778,-0.144,
+       -2.7111,1.1778,-0.144,  -2.595725,1.060502,-0.144,      -2.607034,1.044497,-0.081,
+       -2.6112,1.0386,0,       -2.73125,1.157813,0,    -2.725825,1.163194,-0.081,
+       -2.725825,1.163194,-0.081,      -2.607034,1.044497,-0.081,      -2.6112,1.0386,0,
+       -2.374406,1.144713,-0.081,      -2.466566,1.243303,-0.081,      -2.4624,1.2492,0,
+       -2.4624,1.2492,0,       -2.3717,1.1511,0,       -2.374406,1.144713,-0.081,
+       -2.381752,1.127376,-0.144,      -2.477875,1.227298,-0.144,      -2.466566,1.243303,-0.081,
+       -2.466566,1.243303,-0.081,      -2.374406,1.144713,-0.081,      -2.381752,1.127376,-0.144,
+       -2.392576,1.101828,-0.189,      -2.494541,1.20371,-0.189,       -2.477875,1.227298,-0.144,
+       -2.477875,1.227298,-0.144,      -2.381752,1.127376,-0.144,      -2.392576,1.101828,-0.189,
+       -2.405721,1.070804,-0.216,      -2.514778,1.175069,-0.216,      -2.494541,1.20371,-0.189,
+       -2.494541,1.20371,-0.189,       -2.392576,1.101828,-0.189,      -2.405721,1.070804,-0.216,
+       -2.420025,1.037044,-0.225,      -2.5368,1.1439,-0.225,  -2.514778,1.175069,-0.216,
+       -2.514778,1.175069,-0.216,      -2.405721,1.070804,-0.216,      -2.420025,1.037044,-0.225,
+       -2.434329,1.003283,-0.216,      -2.558822,1.112731,-0.216,      -2.5368,1.1439,-0.225,
+       -2.5368,1.1439,-0.225,  -2.420025,1.037044,-0.225,      -2.434329,1.003283,-0.216,
+       -2.447474,0.97226,-0.189,       -2.579059,1.08409,-0.189,       -2.558822,1.112731,-0.216,
+       -2.558822,1.112731,-0.216,      -2.434329,1.003283,-0.216,      -2.447474,0.97226,-0.189,
+       -2.458298,0.946711,-0.144,      -2.595725,1.060502,-0.144,      -2.579059,1.08409,-0.189,
+       -2.579059,1.08409,-0.189,       -2.447474,0.97226,-0.189,       -2.458298,0.946711,-0.144,
+       -2.465644,0.929375,-0.081,      -2.607034,1.044497,-0.081,      -2.595725,1.060502,-0.144,
+       -2.595725,1.060502,-0.144,      -2.458298,0.946711,-0.144,      -2.465644,0.929375,-0.081,
+       -2.46835,0.922987,0,    -2.6112,1.0386,0,       -2.607034,1.044497,-0.081,
+       -2.607034,1.044497,-0.081,      -2.465644,0.929375,-0.081,      -2.46835,0.922987,0,
+       -2.265853,1.051478,-0.081,      -2.374406,1.144713,-0.081,      -2.3717,1.1511,0,
+       -2.3717,1.1511,0,       -2.2648,1.0584,0,       -2.265853,1.051478,-0.081,
+       -2.26871,1.032691,-0.144,       -2.381752,1.127376,-0.144,      -2.374406,1.144713,-0.081,
+       -2.374406,1.144713,-0.081,      -2.265853,1.051478,-0.081,      -2.26871,1.032691,-0.144,
+       -2.272922,1.005005,-0.189,      -2.392576,1.101828,-0.189,      -2.381752,1.127376,-0.144,
+       -2.381752,1.127376,-0.144,      -2.26871,1.032691,-0.144,       -2.272922,1.005005,-0.189,
+       -2.278035,0.971386,-0.216,      -2.405721,1.070804,-0.216,      -2.392576,1.101828,-0.189,
+       -2.392576,1.101828,-0.189,      -2.272922,1.005005,-0.189,      -2.278035,0.971386,-0.216,
+       -2.2836,0.9348,-0.225,  -2.420025,1.037044,-0.225,      -2.405721,1.070804,-0.216,
+       -2.405721,1.070804,-0.216,      -2.278035,0.971386,-0.216,      -2.2836,0.9348,-0.225,
+       -2.289165,0.898214,-0.216,      -2.434329,1.003283,-0.216,      -2.420025,1.037044,-0.225,
+       -2.420025,1.037044,-0.225,      -2.2836,0.9348,-0.225,  -2.289165,0.898214,-0.216,
+       -2.294278,0.864595,-0.189,      -2.447474,0.97226,-0.189,       -2.434329,1.003283,-0.216,
+       -2.434329,1.003283,-0.216,      -2.289165,0.898214,-0.216,      -2.294278,0.864595,-0.189,
+       -2.29849,0.836909,-0.144,       -2.458298,0.946711,-0.144,      -2.447474,0.97226,-0.189,
+       -2.447474,0.97226,-0.189,       -2.294278,0.864595,-0.189,      -2.29849,0.836909,-0.144,
+       -2.301347,0.818122,-0.081,      -2.465644,0.929375,-0.081,      -2.458298,0.946711,-0.144,
+       -2.458298,0.946711,-0.144,      -2.29849,0.836909,-0.144,       -2.301347,0.818122,-0.081,
+       -2.3024,0.8112,0,       -2.46835,0.922987,0,    -2.465644,0.929375,-0.081,
+       -2.465644,0.929375,-0.081,      -2.301347,0.818122,-0.081,      -2.3024,0.8112,0,
+       -2.140315,0.966231,-0.081,      -2.265853,1.051478,-0.081,      -2.2648,1.0584,0,
+       -2.2648,1.0584,0,       -2.1411,0.9738,0,       -2.140315,0.966231,-0.081,
+       -2.138183,0.945685,-0.144,      -2.26871,1.032691,-0.144,       -2.265853,1.051478,-0.081,
+       -2.265853,1.051478,-0.081,      -2.140315,0.966231,-0.081,      -2.138183,0.945685,-0.144,
+       -2.135041,0.915407,-0.189,      -2.272922,1.005005,-0.189,      -2.26871,1.032691,-0.144,
+       -2.26871,1.032691,-0.144,       -2.138183,0.945685,-0.144,      -2.135041,0.915407,-0.189,
+       -2.131226,0.878641,-0.216,      -2.278035,0.971386,-0.216,      -2.272922,1.005005,-0.189,
+       -2.272922,1.005005,-0.189,      -2.135041,0.915407,-0.189,      -2.131226,0.878641,-0.216,
+       -2.127075,0.838631,-0.225,      -2.2836,0.9348,-0.225,  -2.278035,0.971386,-0.216,
+       -2.278035,0.971386,-0.216,      -2.131226,0.878641,-0.216,      -2.127075,0.838631,-0.225,
+       -2.122924,0.798621,-0.216,      -2.289165,0.898214,-0.216,      -2.2836,0.9348,-0.225,
+       -2.2836,0.9348,-0.225,  -2.127075,0.838631,-0.225,      -2.122924,0.798621,-0.216,
+       -2.119109,0.761855,-0.189,      -2.294278,0.864595,-0.189,      -2.289165,0.898214,-0.216,
+       -2.289165,0.898214,-0.216,      -2.122924,0.798621,-0.216,      -2.119109,0.761855,-0.189,
+       -2.115967,0.731578,-0.144,      -2.29849,0.836909,-0.144,       -2.294278,0.864595,-0.189,
+       -2.294278,0.864595,-0.189,      -2.119109,0.761855,-0.189,      -2.115967,0.731578,-0.144,
+       -2.113835,0.711032,-0.081,      -2.301347,0.818122,-0.081,      -2.29849,0.836909,-0.144,
+       -2.29849,0.836909,-0.144,       -2.115967,0.731578,-0.144,      -2.113835,0.711032,-0.081,
+       -2.11305,0.703463,0,    -2.3024,0.8112,0,       -2.301347,0.818122,-0.081,
+       -2.301347,0.818122,-0.081,      -2.113835,0.711032,-0.081,      -2.11305,0.703463,0,
+       -1.9972,0.8916,-0.081,  -2.140315,0.966231,-0.081,      -2.1411,0.9738,0,
+       -2.1411,0.9738,0,       -2,0.9,0,       -1.9972,0.8916,-0.081,
+       -1.9896,0.8688,-0.144,  -2.138183,0.945685,-0.144,      -2.140315,0.966231,-0.081,
+       -2.140315,0.966231,-0.081,      -1.9972,0.8916,-0.081,  -1.9896,0.8688,-0.144,
+       -1.9784,0.8352,-0.189,  -2.135041,0.915407,-0.189,      -2.138183,0.945685,-0.144,
+       -2.138183,0.945685,-0.144,      -1.9896,0.8688,-0.144,  -1.9784,0.8352,-0.189,
+       -1.9648,0.7944,-0.216,  -2.131226,0.878641,-0.216,      -2.135041,0.915407,-0.189,
+       -2.135041,0.915407,-0.189,      -1.9784,0.8352,-0.189,  -1.9648,0.7944,-0.216,
+       -1.95,0.75,-0.225,      -2.127075,0.838631,-0.225,      -2.131226,0.878641,-0.216,
+       -2.131226,0.878641,-0.216,      -1.9648,0.7944,-0.216,  -1.95,0.75,-0.225,
+       -1.9352,0.7056,-0.216,  -2.122924,0.798621,-0.216,      -2.127075,0.838631,-0.225,
+       -2.127075,0.838631,-0.225,      -1.95,0.75,-0.225,      -1.9352,0.7056,-0.216,
+       -1.9216,0.6648,-0.189,  -2.119109,0.761855,-0.189,      -2.122924,0.798621,-0.216,
+       -2.122924,0.798621,-0.216,      -1.9352,0.7056,-0.216,  -1.9216,0.6648,-0.189,
+       -1.9104,0.6312,-0.144,  -2.115967,0.731578,-0.144,      -2.119109,0.761855,-0.189,
+       -2.119109,0.761855,-0.189,      -1.9216,0.6648,-0.189,  -1.9104,0.6312,-0.144,
+       -1.9028,0.6084,-0.081,  -2.113835,0.711032,-0.081,      -2.115967,0.731578,-0.144,
+       -2.115967,0.731578,-0.144,      -1.9104,0.6312,-0.144,  -1.9028,0.6084,-0.081,
+       -1.9,0.6,0,     -2.11305,0.703463,0,    -2.113835,0.711032,-0.081,
+       -2.113835,0.711032,-0.081,      -1.9028,0.6084,-0.081,  -1.9,0.6,0,
+       -2.981175,1.667844,0.081,       -2.9916,1.8,0.081,      -3,1.8,0,
+       -3,1.8,0,       -2.98945,1.666162,0,    -2.981175,1.667844,0.081,
+       -2.958713,1.672406,0.144,       -2.9688,1.8,0.144,      -2.9916,1.8,0.081,
+       -2.9916,1.8,0.081,      -2.981175,1.667844,0.081,       -2.958713,1.672406,0.144,
+       -2.925611,1.679131,0.189,       -2.9352,1.8,0.189,      -2.9688,1.8,0.144,
+       -2.9688,1.8,0.144,      -2.958713,1.672406,0.144,       -2.925611,1.679131,0.189,
+       -2.885416,1.687296,0.216,       -2.8944,1.8,0.216,      -2.9352,1.8,0.189,
+       -2.9352,1.8,0.189,      -2.925611,1.679131,0.189,       -2.885416,1.687296,0.216,
+       -2.841675,1.696181,0.225,       -2.85,1.8,0.225,        -2.8944,1.8,0.216,
+       -2.8944,1.8,0.216,      -2.885416,1.687296,0.216,       -2.841675,1.696181,0.225,
+       -2.797934,1.705067,0.216,       -2.8056,1.8,0.216,      -2.85,1.8,0.225,
+       -2.85,1.8,0.225,        -2.841675,1.696181,0.225,       -2.797934,1.705067,0.216,
+       -2.757739,1.713232,0.189,       -2.7648,1.8,0.189,      -2.8056,1.8,0.216,
+       -2.8056,1.8,0.216,      -2.797934,1.705067,0.216,       -2.757739,1.713232,0.189,
+       -2.724637,1.719956,0.144,       -2.7312,1.8,0.144,      -2.7648,1.8,0.189,
+       -2.7648,1.8,0.189,      -2.757739,1.713232,0.189,       -2.724637,1.719956,0.144,
+       -2.702175,1.724519,0.081,       -2.7084,1.8,0.081,      -2.7312,1.8,0.144,
+       -2.7312,1.8,0.144,      -2.724637,1.719956,0.144,       -2.702175,1.724519,0.081,
+       -2.6939,1.7262,0,       -2.7,1.8,0,     -2.7084,1.8,0.081,
+       -2.7084,1.8,0.081,      -2.702175,1.724519,0.081,       -2.6939,1.7262,0,
+       -2.949693,1.53779,0.081,        -2.981175,1.667844,0.081,       -2.98945,1.666162,0,
+       -2.98945,1.666162,0,    -2.9576,1.5348,0,       -2.949693,1.53779,0.081,
+       -2.92823,1.545907,0.144,        -2.958713,1.672406,0.144,       -2.981175,1.667844,0.081,
+       -2.981175,1.667844,0.081,       -2.949693,1.53779,0.081,        -2.92823,1.545907,0.144,
+       -2.896602,1.557869,0.189,       -2.925611,1.679131,0.189,       -2.958713,1.672406,0.144,
+       -2.958713,1.672406,0.144,       -2.92823,1.545907,0.144,        -2.896602,1.557869,0.189,
+       -2.858195,1.572394,0.216,       -2.885416,1.687296,0.216,       -2.925611,1.679131,0.189,
+       -2.925611,1.679131,0.189,       -2.896602,1.557869,0.189,       -2.858195,1.572394,0.216,
+       -2.8164,1.5882,0.225,   -2.841675,1.696181,0.225,       -2.885416,1.687296,0.216,
+       -2.885416,1.687296,0.216,       -2.858195,1.572394,0.216,       -2.8164,1.5882,0.225,
+       -2.774605,1.604006,0.216,       -2.797934,1.705067,0.216,       -2.841675,1.696181,0.225,
+       -2.841675,1.696181,0.225,       -2.8164,1.5882,0.225,   -2.774605,1.604006,0.216,
+       -2.736198,1.618531,0.189,       -2.757739,1.713232,0.189,       -2.797934,1.705067,0.216,
+       -2.797934,1.705067,0.216,       -2.774605,1.604006,0.216,       -2.736198,1.618531,0.189,
+       -2.70457,1.630493,0.144,        -2.724637,1.719956,0.144,       -2.757739,1.713232,0.189,
+       -2.757739,1.713232,0.189,       -2.736198,1.618531,0.189,       -2.70457,1.630493,0.144,
+       -2.683107,1.63861,0.081,        -2.702175,1.724519,0.081,       -2.724637,1.719956,0.144,
+       -2.724637,1.719956,0.144,       -2.70457,1.630493,0.144,        -2.683107,1.63861,0.081,
+       -2.6752,1.6416,0,       -2.6939,1.7262,0,       -2.702175,1.724519,0.081,
+       -2.702175,1.724519,0.081,       -2.683107,1.63861,0.081,        -2.6752,1.6416,0,
+       -2.896846,1.410135,0.081,       -2.949693,1.53779,0.081,        -2.9576,1.5348,0,
+       -2.9576,1.5348,0,       -2.90415,1.406137,0,    -2.896846,1.410135,0.081,
+       -2.877022,1.420985,0.144,       -2.92823,1.545907,0.144,        -2.949693,1.53779,0.081,
+       -2.949693,1.53779,0.081,        -2.896846,1.410135,0.081,       -2.877022,1.420985,0.144,
+       -2.847806,1.436974,0.189,       -2.896602,1.557869,0.189,       -2.92823,1.545907,0.144,
+       -2.92823,1.545907,0.144,        -2.877022,1.420985,0.144,       -2.847806,1.436974,0.189,
+       -2.812331,1.45639,0.216,        -2.858195,1.572394,0.216,       -2.896602,1.557869,0.189,
+       -2.896602,1.557869,0.189,       -2.847806,1.436974,0.189,       -2.812331,1.45639,0.216,
+       -2.773725,1.477519,0.225,       -2.8164,1.5882,0.225,   -2.858195,1.572394,0.216,
+       -2.858195,1.572394,0.216,       -2.812331,1.45639,0.216,        -2.773725,1.477519,0.225,
+       -2.735119,1.498648,0.216,       -2.774605,1.604006,0.216,       -2.8164,1.5882,0.225,
+       -2.8164,1.5882,0.225,   -2.773725,1.477519,0.225,       -2.735119,1.498648,0.216,
+       -2.699644,1.518063,0.189,       -2.736198,1.618531,0.189,       -2.774605,1.604006,0.216,
+       -2.774605,1.604006,0.216,       -2.735119,1.498648,0.216,       -2.699644,1.518063,0.189,
+       -2.670428,1.534053,0.144,       -2.70457,1.630493,0.144,        -2.736198,1.618531,0.189,
+       -2.736198,1.618531,0.189,       -2.699644,1.518063,0.189,       -2.670428,1.534053,0.144,
+       -2.650604,1.544903,0.081,       -2.683107,1.63861,0.081,        -2.70457,1.630493,0.144,
+       -2.70457,1.630493,0.144,        -2.670428,1.534053,0.144,       -2.650604,1.544903,0.081,
+       -2.6433,1.5489,0,       -2.6752,1.6416,0,       -2.683107,1.63861,0.081,
+       -2.683107,1.63861,0.081,        -2.650604,1.544903,0.081,       -2.6433,1.5489,0,
+       -2.822326,1.285171,0.081,       -2.896846,1.410135,0.081,       -2.90415,1.406137,0,
+       -2.90415,1.406137,0,    -2.8288,1.2804,0,       -2.822326,1.285171,0.081,
+       -2.804755,1.298122,0.144,       -2.877022,1.420985,0.144,       -2.896846,1.410135,0.081,
+       -2.896846,1.410135,0.081,       -2.822326,1.285171,0.081,       -2.804755,1.298122,0.144,
+       -2.778861,1.317206,0.189,       -2.847806,1.436974,0.189,       -2.877022,1.420985,0.144,
+       -2.877022,1.420985,0.144,       -2.804755,1.298122,0.144,       -2.778861,1.317206,0.189,
+       -2.747418,1.340381,0.216,       -2.812331,1.45639,0.216,        -2.847806,1.436974,0.189,
+       -2.847806,1.436974,0.189,       -2.778861,1.317206,0.189,       -2.747418,1.340381,0.216,
+       -2.7132,1.3656,0.225,   -2.773725,1.477519,0.225,       -2.812331,1.45639,0.216,
+       -2.812331,1.45639,0.216,        -2.747418,1.340381,0.216,       -2.7132,1.3656,0.225,
+       -2.678982,1.390819,0.216,       -2.735119,1.498648,0.216,       -2.773725,1.477519,0.225,
+       -2.773725,1.477519,0.225,       -2.7132,1.3656,0.225,   -2.678982,1.390819,0.216,
+       -2.647539,1.413994,0.189,       -2.699644,1.518063,0.189,       -2.735119,1.498648,0.216,
+       -2.735119,1.498648,0.216,       -2.678982,1.390819,0.216,       -2.647539,1.413994,0.189,
+       -2.621645,1.433078,0.144,       -2.670428,1.534053,0.144,       -2.699644,1.518063,0.189,
+       -2.699644,1.518063,0.189,       -2.647539,1.413994,0.189,       -2.621645,1.433078,0.144,
+       -2.604074,1.446029,0.081,       -2.650604,1.544903,0.081,       -2.670428,1.534053,0.144,
+       -2.670428,1.534053,0.144,       -2.621645,1.433078,0.144,       -2.604074,1.446029,0.081,
+       -2.5976,1.4508,0,       -2.6433,1.5489,0,       -2.650604,1.544903,0.081,
+       -2.650604,1.544903,0.081,       -2.604074,1.446029,0.081,       -2.5976,1.4508,0,
+       -2.725825,1.163194,0.081,       -2.822326,1.285171,0.081,       -2.8288,1.2804,0,
+       -2.8288,1.2804,0,       -2.73125,1.157813,0,    -2.725825,1.163194,0.081,
+       -2.7111,1.1778,0.144,   -2.804755,1.298122,0.144,       -2.822326,1.285171,0.081,
+       -2.822326,1.285171,0.081,       -2.725825,1.163194,0.081,       -2.7111,1.1778,0.144,
+       -2.6894,1.199325,0.189, -2.778861,1.317206,0.189,       -2.804755,1.298122,0.144,
+       -2.804755,1.298122,0.144,       -2.7111,1.1778,0.144,   -2.6894,1.199325,0.189,
+       -2.66305,1.225463,0.216,        -2.747418,1.340381,0.216,       -2.778861,1.317206,0.189,
+       -2.778861,1.317206,0.189,       -2.6894,1.199325,0.189, -2.66305,1.225463,0.216,
+       -2.634375,1.253906,0.225,       -2.7132,1.3656,0.225,   -2.747418,1.340381,0.216,
+       -2.747418,1.340381,0.216,       -2.66305,1.225463,0.216,        -2.634375,1.253906,0.225,
+       -2.6057,1.28235,0.216,  -2.678982,1.390819,0.216,       -2.7132,1.3656,0.225,
+       -2.7132,1.3656,0.225,   -2.634375,1.253906,0.225,       -2.6057,1.28235,0.216,
+       -2.57935,1.308488,0.189,        -2.647539,1.413994,0.189,       -2.678982,1.390819,0.216,
+       -2.678982,1.390819,0.216,       -2.6057,1.28235,0.216,  -2.57935,1.308488,0.189,
+       -2.55765,1.330013,0.144,        -2.621645,1.433078,0.144,       -2.647539,1.413994,0.189,
+       -2.647539,1.413994,0.189,       -2.57935,1.308488,0.189,        -2.55765,1.330013,0.144,
+       -2.542925,1.344619,0.081,       -2.604074,1.446029,0.081,       -2.621645,1.433078,0.144,
+       -2.621645,1.433078,0.144,       -2.55765,1.330013,0.144,        -2.542925,1.344619,0.081,
+       -2.5375,1.35,0, -2.5976,1.4508,0,       -2.604074,1.446029,0.081,
+       -2.604074,1.446029,0.081,       -2.542925,1.344619,0.081,       -2.5375,1.35,0,
+       -2.607034,1.044497,0.081,       -2.725825,1.163194,0.081,       -2.73125,1.157813,0,
+       -2.73125,1.157813,0,    -2.6112,1.0386,0,       -2.607034,1.044497,0.081,
+       -2.595725,1.060502,0.144,       -2.7111,1.1778,0.144,   -2.725825,1.163194,0.081,
+       -2.725825,1.163194,0.081,       -2.607034,1.044497,0.081,       -2.595725,1.060502,0.144,
+       -2.579059,1.08409,0.189,        -2.6894,1.199325,0.189, -2.7111,1.1778,0.144,
+       -2.7111,1.1778,0.144,   -2.595725,1.060502,0.144,       -2.579059,1.08409,0.189,
+       -2.558822,1.112731,0.216,       -2.66305,1.225463,0.216,        -2.6894,1.199325,0.189,
+       -2.6894,1.199325,0.189, -2.579059,1.08409,0.189,        -2.558822,1.112731,0.216,
+       -2.5368,1.1439,0.225,   -2.634375,1.253906,0.225,       -2.66305,1.225463,0.216,
+       -2.66305,1.225463,0.216,        -2.558822,1.112731,0.216,       -2.5368,1.1439,0.225,
+       -2.514778,1.175069,0.216,       -2.6057,1.28235,0.216,  -2.634375,1.253906,0.225,
+       -2.634375,1.253906,0.225,       -2.5368,1.1439,0.225,   -2.514778,1.175069,0.216,
+       -2.494541,1.20371,0.189,        -2.57935,1.308488,0.189,        -2.6057,1.28235,0.216,
+       -2.6057,1.28235,0.216,  -2.514778,1.175069,0.216,       -2.494541,1.20371,0.189,
+       -2.477875,1.227298,0.144,       -2.55765,1.330013,0.144,        -2.57935,1.308488,0.189,
+       -2.57935,1.308488,0.189,        -2.494541,1.20371,0.189,        -2.477875,1.227298,0.144,
+       -2.466566,1.243303,0.081,       -2.542925,1.344619,0.081,       -2.55765,1.330013,0.144,
+       -2.55765,1.330013,0.144,        -2.477875,1.227298,0.144,       -2.466566,1.243303,0.081,
+       -2.4624,1.2492,0,       -2.5375,1.35,0, -2.542925,1.344619,0.081,
+       -2.542925,1.344619,0.081,       -2.466566,1.243303,0.081,       -2.4624,1.2492,0,
+       -2.465644,0.929375,0.081,       -2.607034,1.044497,0.081,       -2.6112,1.0386,0,
+       -2.6112,1.0386,0,       -2.46835,0.922987,0,    -2.465644,0.929375,0.081,
+       -2.458298,0.946711,0.144,       -2.595725,1.060502,0.144,       -2.607034,1.044497,0.081,
+       -2.607034,1.044497,0.081,       -2.465644,0.929375,0.081,       -2.458298,0.946711,0.144,
+       -2.447474,0.97226,0.189,        -2.579059,1.08409,0.189,        -2.595725,1.060502,0.144,
+       -2.595725,1.060502,0.144,       -2.458298,0.946711,0.144,       -2.447474,0.97226,0.189,
+       -2.434329,1.003283,0.216,       -2.558822,1.112731,0.216,       -2.579059,1.08409,0.189,
+       -2.579059,1.08409,0.189,        -2.447474,0.97226,0.189,        -2.434329,1.003283,0.216,
+       -2.420025,1.037044,0.225,       -2.5368,1.1439,0.225,   -2.558822,1.112731,0.216,
+       -2.558822,1.112731,0.216,       -2.434329,1.003283,0.216,       -2.420025,1.037044,0.225,
+       -2.405721,1.070804,0.216,       -2.514778,1.175069,0.216,       -2.5368,1.1439,0.225,
+       -2.5368,1.1439,0.225,   -2.420025,1.037044,0.225,       -2.405721,1.070804,0.216,
+       -2.392576,1.101828,0.189,       -2.494541,1.20371,0.189,        -2.514778,1.175069,0.216,
+       -2.514778,1.175069,0.216,       -2.405721,1.070804,0.216,       -2.392576,1.101828,0.189,
+       -2.381752,1.127376,0.144,       -2.477875,1.227298,0.144,       -2.494541,1.20371,0.189,
+       -2.494541,1.20371,0.189,        -2.392576,1.101828,0.189,       -2.381752,1.127376,0.144,
+       -2.374406,1.144713,0.081,       -2.466566,1.243303,0.081,       -2.477875,1.227298,0.144,
+       -2.477875,1.227298,0.144,       -2.381752,1.127376,0.144,       -2.374406,1.144713,0.081,
+       -2.3717,1.1511,0,       -2.4624,1.2492,0,       -2.466566,1.243303,0.081,
+       -2.466566,1.243303,0.081,       -2.374406,1.144713,0.081,       -2.3717,1.1511,0,
+       -2.301347,0.818122,0.081,       -2.465644,0.929375,0.081,       -2.46835,0.922987,0,
+       -2.46835,0.922987,0,    -2.3024,0.8112,0,       -2.301347,0.818122,0.081,
+       -2.29849,0.836909,0.144,        -2.458298,0.946711,0.144,       -2.465644,0.929375,0.081,
+       -2.465644,0.929375,0.081,       -2.301347,0.818122,0.081,       -2.29849,0.836909,0.144,
+       -2.294278,0.864595,0.189,       -2.447474,0.97226,0.189,        -2.458298,0.946711,0.144,
+       -2.458298,0.946711,0.144,       -2.29849,0.836909,0.144,        -2.294278,0.864595,0.189,
+       -2.289165,0.898214,0.216,       -2.434329,1.003283,0.216,       -2.447474,0.97226,0.189,
+       -2.447474,0.97226,0.189,        -2.294278,0.864595,0.189,       -2.289165,0.898214,0.216,
+       -2.2836,0.9348,0.225,   -2.420025,1.037044,0.225,       -2.434329,1.003283,0.216,
+       -2.434329,1.003283,0.216,       -2.289165,0.898214,0.216,       -2.2836,0.9348,0.225,
+       -2.278035,0.971386,0.216,       -2.405721,1.070804,0.216,       -2.420025,1.037044,0.225,
+       -2.420025,1.037044,0.225,       -2.2836,0.9348,0.225,   -2.278035,0.971386,0.216,
+       -2.272922,1.005005,0.189,       -2.392576,1.101828,0.189,       -2.405721,1.070804,0.216,
+       -2.405721,1.070804,0.216,       -2.278035,0.971386,0.216,       -2.272922,1.005005,0.189,
+       -2.26871,1.032691,0.144,        -2.381752,1.127376,0.144,       -2.392576,1.101828,0.189,
+       -2.392576,1.101828,0.189,       -2.272922,1.005005,0.189,       -2.26871,1.032691,0.144,
+       -2.265853,1.051478,0.081,       -2.374406,1.144713,0.081,       -2.381752,1.127376,0.144,
+       -2.381752,1.127376,0.144,       -2.26871,1.032691,0.144,        -2.265853,1.051478,0.081,
+       -2.2648,1.0584,0,       -2.3717,1.1511,0,       -2.374406,1.144713,0.081,
+       -2.374406,1.144713,0.081,       -2.265853,1.051478,0.081,       -2.2648,1.0584,0,
+       -2.113835,0.711032,0.081,       -2.301347,0.818122,0.081,       -2.3024,0.8112,0,
+       -2.3024,0.8112,0,       -2.11305,0.703463,0,    -2.113835,0.711032,0.081,
+       -2.115967,0.731578,0.144,       -2.29849,0.836909,0.144,        -2.301347,0.818122,0.081,
+       -2.301347,0.818122,0.081,       -2.113835,0.711032,0.081,       -2.115967,0.731578,0.144,
+       -2.119109,0.761855,0.189,       -2.294278,0.864595,0.189,       -2.29849,0.836909,0.144,
+       -2.29849,0.836909,0.144,        -2.115967,0.731578,0.144,       -2.119109,0.761855,0.189,
+       -2.122924,0.798621,0.216,       -2.289165,0.898214,0.216,       -2.294278,0.864595,0.189,
+       -2.294278,0.864595,0.189,       -2.119109,0.761855,0.189,       -2.122924,0.798621,0.216,
+       -2.127075,0.838631,0.225,       -2.2836,0.9348,0.225,   -2.289165,0.898214,0.216,
+       -2.289165,0.898214,0.216,       -2.122924,0.798621,0.216,       -2.127075,0.838631,0.225,
+       -2.131226,0.878641,0.216,       -2.278035,0.971386,0.216,       -2.2836,0.9348,0.225,
+       -2.2836,0.9348,0.225,   -2.127075,0.838631,0.225,       -2.131226,0.878641,0.216,
+       -2.135041,0.915407,0.189,       -2.272922,1.005005,0.189,       -2.278035,0.971386,0.216,
+       -2.278035,0.971386,0.216,       -2.131226,0.878641,0.216,       -2.135041,0.915407,0.189,
+       -2.138183,0.945685,0.144,       -2.26871,1.032691,0.144,        -2.272922,1.005005,0.189,
+       -2.272922,1.005005,0.189,       -2.135041,0.915407,0.189,       -2.138183,0.945685,0.144,
+       -2.140315,0.966231,0.081,       -2.265853,1.051478,0.081,       -2.26871,1.032691,0.144,
+       -2.26871,1.032691,0.144,        -2.138183,0.945685,0.144,       -2.140315,0.966231,0.081,
+       -2.1411,0.9738,0,       -2.2648,1.0584,0,       -2.265853,1.051478,0.081,
+       -2.265853,1.051478,0.081,       -2.140315,0.966231,0.081,       -2.1411,0.9738,0,
+       -1.9028,0.6084,0.081,   -2.113835,0.711032,0.081,       -2.11305,0.703463,0,
+       -2.11305,0.703463,0,    -1.9,0.6,0,     -1.9028,0.6084,0.081,
+       -1.9104,0.6312,0.144,   -2.115967,0.731578,0.144,       -2.113835,0.711032,0.081,
+       -2.113835,0.711032,0.081,       -1.9028,0.6084,0.081,   -1.9104,0.6312,0.144,
+       -1.9216,0.6648,0.189,   -2.119109,0.761855,0.189,       -2.115967,0.731578,0.144,
+       -2.115967,0.731578,0.144,       -1.9104,0.6312,0.144,   -1.9216,0.6648,0.189,
+       -1.9352,0.7056,0.216,   -2.122924,0.798621,0.216,       -2.119109,0.761855,0.189,
+       -2.119109,0.761855,0.189,       -1.9216,0.6648,0.189,   -1.9352,0.7056,0.216,
+       -1.95,0.75,0.225,       -2.127075,0.838631,0.225,       -2.122924,0.798621,0.216,
+       -2.122924,0.798621,0.216,       -1.9352,0.7056,0.216,   -1.95,0.75,0.225,
+       -1.9648,0.7944,0.216,   -2.131226,0.878641,0.216,       -2.127075,0.838631,0.225,
+       -2.127075,0.838631,0.225,       -1.95,0.75,0.225,       -1.9648,0.7944,0.216,
+       -1.9784,0.8352,0.189,   -2.135041,0.915407,0.189,       -2.131226,0.878641,0.216,
+       -2.131226,0.878641,0.216,       -1.9648,0.7944,0.216,   -1.9784,0.8352,0.189,
+       -1.9896,0.8688,0.144,   -2.138183,0.945685,0.144,       -2.135041,0.915407,0.189,
+       -2.135041,0.915407,0.189,       -1.9784,0.8352,0.189,   -1.9896,0.8688,0.144,
+       -1.9972,0.8916,0.081,   -2.140315,0.966231,0.081,       -2.138183,0.945685,0.144,
+       -2.138183,0.945685,0.144,       -1.9896,0.8688,0.144,   -1.9972,0.8916,0.081,
+       -2,0.9,0,       -2.1411,0.9738,0,       -2.140315,0.966231,0.081,
+       -2.140315,0.966231,0.081,       -1.9972,0.8916,0.081,   -2,0.9,0,
+       1.939394,1.423221,-0.1751,      1.7,1.4019,-0.1782,     1.7,1.425,0,
+       1.7,1.425,0,    1.9359,1.4442,0,        1.939394,1.423221,-0.1751,
+       1.948879,1.366278,-0.31129,     1.7,1.3392,-0.3168,     1.7,1.4019,-0.1782,
+       1.7,1.4019,-0.1782,     1.939394,1.423221,-0.1751,      1.948879,1.366278,-0.31129,
+       1.962857,1.282362,-0.408568,    1.7,1.2468,-0.4158,     1.7,1.3392,-0.3168,
+       1.7,1.3392,-0.3168,     1.948879,1.366278,-0.31129,     1.962857,1.282362,-0.408568,
+       1.97983,1.180464,-0.466934,     1.7,1.1346,-0.4752,     1.7,1.2468,-0.4158,
+       1.7,1.2468,-0.4158,     1.962857,1.282362,-0.408568,    1.97983,1.180464,-0.466934,
+       1.9983,1.069575,-0.48639,       1.7,1.0125,-0.495,      1.7,1.1346,-0.4752,
+       1.7,1.1346,-0.4752,     1.97983,1.180464,-0.466934,     1.9983,1.069575,-0.48639,
+       2.01677,0.958686,-0.466934,     1.7,0.8904,-0.4752,     1.7,1.0125,-0.495,
+       1.7,1.0125,-0.495,      1.9983,1.069575,-0.48639,       2.01677,0.958686,-0.466934,
+       2.033743,0.856788,-0.408568,    1.7,0.7782,-0.4158,     1.7,0.8904,-0.4752,
+       1.7,0.8904,-0.4752,     2.01677,0.958686,-0.466934,     2.033743,0.856788,-0.408568,
+       2.047721,0.772872,-0.31129,     1.7,0.6858,-0.3168,     1.7,0.7782,-0.4158,
+       1.7,0.7782,-0.4158,     2.033743,0.856788,-0.408568,    2.047721,0.772872,-0.31129,
+       2.057206,0.715929,-0.1751,      1.7,0.6231,-0.1782,     1.7,0.6858,-0.3168,
+       1.7,0.6858,-0.3168,     2.047721,0.772872,-0.31129,     2.057206,0.715929,-0.1751,
+       2.0607,0.69495,0,       1.7,0.6,0,      1.7,0.6231,-0.1782,
+       1.7,0.6231,-0.1782,     2.057206,0.715929,-0.1751,      2.0607,0.69495,0,
+       2.116979,1.47912,-0.166687,     1.939394,1.423221,-0.1751,      1.9359,1.4442,0,
+       1.9359,1.4442,0,        2.1112,1.4976,0,        2.116979,1.47912,-0.166687,
+       2.132666,1.42896,-0.296333,     1.948879,1.366278,-0.31129,     1.939394,1.423221,-0.1751,
+       1.939394,1.423221,-0.1751,      2.116979,1.47912,-0.166687,     2.132666,1.42896,-0.296333,
+       2.155782,1.35504,-0.388937,     1.962857,1.282362,-0.408568,    1.948879,1.366278,-0.31129,
+       1.948879,1.366278,-0.31129,     2.132666,1.42896,-0.296333,     2.155782,1.35504,-0.388937,
+       2.183853,1.26528,-0.444499,     1.97983,1.180464,-0.466934,     1.962857,1.282362,-0.408568,
+       1.962857,1.282362,-0.408568,    2.155782,1.35504,-0.388937,     2.183853,1.26528,-0.444499,
+       2.2144,1.1676,-0.46302, 1.9983,1.069575,-0.48639,       1.97983,1.180464,-0.466934,
+       1.97983,1.180464,-0.466934,     2.183853,1.26528,-0.444499,     2.2144,1.1676,-0.46302,
+       2.244947,1.06992,-0.444499,     2.01677,0.958686,-0.466934,     1.9983,1.069575,-0.48639,
+       1.9983,1.069575,-0.48639,       2.2144,1.1676,-0.46302, 2.244947,1.06992,-0.444499,
+       2.273018,0.98016,-0.388937,     2.033743,0.856788,-0.408568,    2.01677,0.958686,-0.466934,
+       2.01677,0.958686,-0.466934,     2.244947,1.06992,-0.444499,     2.273018,0.98016,-0.388937,
+       2.296134,0.90624,-0.296333,     2.047721,0.772872,-0.31129,     2.033743,0.856788,-0.408568,
+       2.033743,0.856788,-0.408568,    2.273018,0.98016,-0.388937,     2.296134,0.90624,-0.296333,
+       2.311821,0.85608,-0.166687,     2.057206,0.715929,-0.1751,      2.047721,0.772872,-0.31129,
+       2.047721,0.772872,-0.31129,     2.296134,0.90624,-0.296333,     2.311821,0.85608,-0.166687,
+       2.3176,0.8376,0,        2.0607,0.69495,0,       2.057206,0.715929,-0.1751,
+       2.057206,0.715929,-0.1751,      2.311821,0.85608,-0.166687,     2.3176,0.8376,0,
+       2.244457,1.563171,-0.154289,    2.116979,1.47912,-0.166687,     2.1112,1.4976,0,
+       2.1112,1.4976,0,        2.2373,1.5789,0,        2.244457,1.563171,-0.154289,
+       2.263882,1.520478,-0.274291,    2.132666,1.42896,-0.296333,     2.116979,1.47912,-0.166687,
+       2.116979,1.47912,-0.166687,     2.244457,1.563171,-0.154289,    2.263882,1.520478,-0.274291,
+       2.29251,1.457562,-0.360007,     2.155782,1.35504,-0.388937,     2.132666,1.42896,-0.296333,
+       2.132666,1.42896,-0.296333,     2.263882,1.520478,-0.274291,    2.29251,1.457562,-0.360007,
+       2.327271,1.381164,-0.411437,    2.183853,1.26528,-0.444499,     2.155782,1.35504,-0.388937,
+       2.155782,1.35504,-0.388937,     2.29251,1.457562,-0.360007,     2.327271,1.381164,-0.411437,
+       2.3651,1.298025,-0.42858,       2.2144,1.1676,-0.46302, 2.183853,1.26528,-0.444499,
+       2.183853,1.26528,-0.444499,     2.327271,1.381164,-0.411437,    2.3651,1.298025,-0.42858,
+       2.402929,1.214886,-0.411437,    2.244947,1.06992,-0.444499,     2.2144,1.1676,-0.46302,
+       2.2144,1.1676,-0.46302, 2.3651,1.298025,-0.42858,       2.402929,1.214886,-0.411437,
+       2.43769,1.138488,-0.360007,     2.273018,0.98016,-0.388937,     2.244947,1.06992,-0.444499,
+       2.244947,1.06992,-0.444499,     2.402929,1.214886,-0.411437,    2.43769,1.138488,-0.360007,
+       2.466318,1.075572,-0.274291,    2.296134,0.90624,-0.296333,     2.273018,0.98016,-0.388937,
+       2.273018,0.98016,-0.388937,     2.43769,1.138488,-0.360007,     2.466318,1.075572,-0.274291,
+       2.485743,1.032879,-0.154289,    2.311821,0.85608,-0.166687,     2.296134,0.90624,-0.296333,
+       2.296134,0.90624,-0.296333,     2.466318,1.075572,-0.274291,    2.485743,1.032879,-0.154289,
+       2.4929,1.01715,0,       2.3176,0.8376,0,        2.311821,0.85608,-0.166687,
+       2.311821,0.85608,-0.166687,     2.485743,1.032879,-0.154289,    2.4929,1.01715,0,
+       2.33353,1.668948,-0.139234,     2.244457,1.563171,-0.154289,    2.2373,1.5789,0,
+       2.2373,1.5789,0,        2.3256,1.6818,0,        2.33353,1.668948,-0.139234,
+       2.355053,1.634064,-0.247526,    2.263882,1.520478,-0.274291,    2.244457,1.563171,-0.154289,
+       2.244457,1.563171,-0.154289,    2.33353,1.668948,-0.139234,     2.355053,1.634064,-0.247526,
+       2.386771,1.582656,-0.324878,    2.29251,1.457562,-0.360007,     2.263882,1.520478,-0.274291,
+       2.263882,1.520478,-0.274291,    2.355053,1.634064,-0.247526,    2.386771,1.582656,-0.324878,
+       2.425286,1.520232,-0.37129,     2.327271,1.381164,-0.411437,    2.29251,1.457562,-0.360007,
+       2.29251,1.457562,-0.360007,     2.386771,1.582656,-0.324878,    2.425286,1.520232,-0.37129,
+       2.4672,1.4523,-0.38676, 2.3651,1.298025,-0.42858,       2.327271,1.381164,-0.411437,
+       2.327271,1.381164,-0.411437,    2.425286,1.520232,-0.37129,     2.4672,1.4523,-0.38676,
+       2.509114,1.384368,-0.37129,     2.402929,1.214886,-0.411437,    2.3651,1.298025,-0.42858,
+       2.3651,1.298025,-0.42858,       2.4672,1.4523,-0.38676, 2.509114,1.384368,-0.37129,
+       2.547629,1.321944,-0.324878,    2.43769,1.138488,-0.360007,     2.402929,1.214886,-0.411437,
+       2.402929,1.214886,-0.411437,    2.509114,1.384368,-0.37129,     2.547629,1.321944,-0.324878,
+       2.579347,1.270536,-0.247526,    2.466318,1.075572,-0.274291,    2.43769,1.138488,-0.360007,
+       2.43769,1.138488,-0.360007,     2.547629,1.321944,-0.324878,    2.579347,1.270536,-0.247526,
+       2.60087,1.235652,-0.139234,     2.485743,1.032879,-0.154289,    2.466318,1.075572,-0.274291,
+       2.466318,1.075572,-0.274291,    2.579347,1.270536,-0.247526,    2.60087,1.235652,-0.139234,
+       2.6088,1.2228,0,        2.4929,1.01715,0,       2.485743,1.032879,-0.154289,
+       2.485743,1.032879,-0.154289,    2.60087,1.235652,-0.139234,     2.6088,1.2228,0,
+       2.3959,1.790025,-0.12285,       2.33353,1.668948,-0.139234,     2.3256,1.6818,0,
+       2.3256,1.6818,0,        2.3875,1.8,0,   2.3959,1.790025,-0.12285,
+       2.4187,1.76295,-0.2184, 2.355053,1.634064,-0.247526,    2.33353,1.668948,-0.139234,
+       2.33353,1.668948,-0.139234,     2.3959,1.790025,-0.12285,       2.4187,1.76295,-0.2184,
+       2.4523,1.72305,-0.28665,        2.386771,1.582656,-0.324878,    2.355053,1.634064,-0.247526,
+       2.355053,1.634064,-0.247526,    2.4187,1.76295,-0.2184, 2.4523,1.72305,-0.28665,
+       2.4931,1.6746,-0.3276,  2.425286,1.520232,-0.37129,     2.386771,1.582656,-0.324878,
+       2.386771,1.582656,-0.324878,    2.4523,1.72305,-0.28665,        2.4931,1.6746,-0.3276,
+       2.5375,1.621875,-0.34125,       2.4672,1.4523,-0.38676, 2.425286,1.520232,-0.37129,
+       2.425286,1.520232,-0.37129,     2.4931,1.6746,-0.3276,  2.5375,1.621875,-0.34125,
+       2.5819,1.56915,-0.3276, 2.509114,1.384368,-0.37129,     2.4672,1.4523,-0.38676,
+       2.4672,1.4523,-0.38676, 2.5375,1.621875,-0.34125,       2.5819,1.56915,-0.3276,
+       2.6227,1.5207,-0.28665, 2.547629,1.321944,-0.324878,    2.509114,1.384368,-0.37129,
+       2.509114,1.384368,-0.37129,     2.5819,1.56915,-0.3276, 2.6227,1.5207,-0.28665,
+       2.6563,1.4808,-0.2184,  2.579347,1.270536,-0.247526,    2.547629,1.321944,-0.324878,
+       2.547629,1.321944,-0.324878,    2.6227,1.5207,-0.28665, 2.6563,1.4808,-0.2184,
+       2.6791,1.453725,-0.12285,       2.60087,1.235652,-0.139234,     2.579347,1.270536,-0.247526,
+       2.579347,1.270536,-0.247526,    2.6563,1.4808,-0.2184,  2.6791,1.453725,-0.12285,
+       2.6875,1.44375,0,       2.6088,1.2228,0,        2.60087,1.235652,-0.139234,
+       2.60087,1.235652,-0.139234,     2.6791,1.453725,-0.12285,       2.6875,1.44375,0,
+       2.44327,1.919976,-0.106466,     2.3959,1.790025,-0.12285,       2.3875,1.8,0,
+       2.3875,1.8,0,   2.4344,1.9272,0,        2.44327,1.919976,-0.106466,
+       2.467347,1.900368,-0.189274,    2.4187,1.76295,-0.2184, 2.3959,1.790025,-0.12285,
+       2.3959,1.790025,-0.12285,       2.44327,1.919976,-0.106466,     2.467347,1.900368,-0.189274,
+       2.502829,1.871472,-0.248422,    2.4523,1.72305,-0.28665,        2.4187,1.76295,-0.2184,
+       2.4187,1.76295,-0.2184, 2.467347,1.900368,-0.189274,    2.502829,1.871472,-0.248422,
+       2.545914,1.836384,-0.28391,     2.4931,1.6746,-0.3276,  2.4523,1.72305,-0.28665,
+       2.4523,1.72305,-0.28665,        2.502829,1.871472,-0.248422,    2.545914,1.836384,-0.28391,
+       2.5928,1.7982,-0.29574, 2.5375,1.621875,-0.34125,       2.4931,1.6746,-0.3276,
+       2.4931,1.6746,-0.3276,  2.545914,1.836384,-0.28391,     2.5928,1.7982,-0.29574,
+       2.639686,1.760016,-0.28391,     2.5819,1.56915,-0.3276, 2.5375,1.621875,-0.34125,
+       2.5375,1.621875,-0.34125,       2.5928,1.7982,-0.29574, 2.639686,1.760016,-0.28391,
+       2.682771,1.724928,-0.248422,    2.6227,1.5207,-0.28665, 2.5819,1.56915,-0.3276,
+       2.5819,1.56915,-0.3276, 2.639686,1.760016,-0.28391,     2.682771,1.724928,-0.248422,
+       2.718253,1.696032,-0.189274,    2.6563,1.4808,-0.2184,  2.6227,1.5207,-0.28665,
+       2.6227,1.5207,-0.28665, 2.682771,1.724928,-0.248422,    2.718253,1.696032,-0.189274,
+       2.74233,1.676424,-0.106466,     2.6791,1.453725,-0.12285,       2.6563,1.4808,-0.2184,
+       2.6563,1.4808,-0.2184,  2.718253,1.696032,-0.189274,    2.74233,1.676424,-0.106466,
+       2.7512,1.6692,0,        2.6875,1.44375,0,       2.6791,1.453725,-0.12285,
+       2.6791,1.453725,-0.12285,       2.74233,1.676424,-0.106466,     2.7512,1.6692,0,
+       2.487343,2.052375,-0.091411,    2.44327,1.919976,-0.106466,     2.4344,1.9272,0,
+       2.4344,1.9272,0,        2.4777,2.0571,0,        2.487343,2.052375,-0.091411,
+       2.513518,2.03955,-0.162509,     2.467347,1.900368,-0.189274,    2.44327,1.919976,-0.106466,
+       2.44327,1.919976,-0.106466,     2.487343,2.052375,-0.091411,    2.513518,2.03955,-0.162509,
+       2.55209,2.02065,-0.213293,      2.502829,1.871472,-0.248422,    2.467347,1.900368,-0.189274,
+       2.467347,1.900368,-0.189274,    2.513518,2.03955,-0.162509,     2.55209,2.02065,-0.213293,
+       2.598929,1.9977,-0.243763,      2.545914,1.836384,-0.28391,     2.502829,1.871472,-0.248422,
+       2.502829,1.871472,-0.248422,    2.55209,2.02065,-0.213293,      2.598929,1.9977,-0.243763,
+       2.6499,1.972725,-0.25392,       2.5928,1.7982,-0.29574, 2.545914,1.836384,-0.28391,
+       2.545914,1.836384,-0.28391,     2.598929,1.9977,-0.243763,      2.6499,1.972725,-0.25392,
+       2.700871,1.94775,-0.243763,     2.639686,1.760016,-0.28391,     2.5928,1.7982,-0.29574,
+       2.5928,1.7982,-0.29574, 2.6499,1.972725,-0.25392,       2.700871,1.94775,-0.243763,
+       2.74771,1.9248,-0.213293,       2.682771,1.724928,-0.248422,    2.639686,1.760016,-0.28391,
+       2.639686,1.760016,-0.28391,     2.700871,1.94775,-0.243763,     2.74771,1.9248,-0.213293,
+       2.786282,1.9059,-0.162509,      2.718253,1.696032,-0.189274,    2.682771,1.724928,-0.248422,
+       2.682771,1.724928,-0.248422,    2.74771,1.9248,-0.213293,       2.786282,1.9059,-0.162509,
+       2.812457,1.893075,-0.091411,    2.74233,1.676424,-0.106466,     2.718253,1.696032,-0.189274,
+       2.718253,1.696032,-0.189274,    2.786282,1.9059,-0.162509,      2.812457,1.893075,-0.091411,
+       2.8221,1.88835,0,       2.7512,1.6692,0,        2.74233,1.676424,-0.106466,
+       2.74233,1.676424,-0.106466,     2.812457,1.893075,-0.091411,    2.8221,1.88835,0,
+       2.539821,2.180796,-0.079013,    2.487343,2.052375,-0.091411,    2.4777,2.0571,0,
+       2.4777,2.0571,0,        2.5288,2.1834,0,        2.539821,2.180796,-0.079013,
+       2.569734,2.173728,-0.140467,    2.513518,2.03955,-0.162509,     2.487343,2.052375,-0.091411,
+       2.487343,2.052375,-0.091411,    2.539821,2.180796,-0.079013,    2.569734,2.173728,-0.140467,
+       2.613818,2.163312,-0.184363,    2.55209,2.02065,-0.213293,      2.513518,2.03955,-0.162509,
+       2.513518,2.03955,-0.162509,     2.569734,2.173728,-0.140467,    2.613818,2.163312,-0.184363,
+       2.667347,2.150664,-0.210701,    2.598929,1.9977,-0.243763,      2.55209,2.02065,-0.213293,
+       2.55209,2.02065,-0.213293,      2.613818,2.163312,-0.184363,    2.667347,2.150664,-0.210701,
+       2.7256,2.1369,-0.21948, 2.6499,1.972725,-0.25392,       2.598929,1.9977,-0.243763,
+       2.598929,1.9977,-0.243763,      2.667347,2.150664,-0.210701,    2.7256,2.1369,-0.21948,
+       2.783853,2.123136,-0.210701,    2.700871,1.94775,-0.243763,     2.6499,1.972725,-0.25392,
+       2.6499,1.972725,-0.25392,       2.7256,2.1369,-0.21948, 2.783853,2.123136,-0.210701,
+       2.837382,2.110488,-0.184363,    2.74771,1.9248,-0.213293,       2.700871,1.94775,-0.243763,
+       2.700871,1.94775,-0.243763,     2.783853,2.123136,-0.210701,    2.837382,2.110488,-0.184363,
+       2.881466,2.100072,-0.140467,    2.786282,1.9059,-0.162509,      2.74771,1.9248,-0.213293,
+       2.74771,1.9248,-0.213293,       2.837382,2.110488,-0.184363,    2.881466,2.100072,-0.140467,
+       2.911379,2.093004,-0.079013,    2.812457,1.893075,-0.091411,    2.786282,1.9059,-0.162509,
+       2.786282,1.9059,-0.162509,      2.881466,2.100072,-0.140467,    2.911379,2.093004,-0.079013,
+       2.9224,2.0904,0,        2.8221,1.88835,0,       2.812457,1.893075,-0.091411,
+       2.812457,1.893075,-0.091411,    2.911379,2.093004,-0.079013,    2.9224,2.0904,0,
+       2.612406,2.298813,-0.0706,      2.539821,2.180796,-0.079013,    2.5288,2.1834,0,
+       2.5288,2.1834,0,        2.5991,2.2998,0,        2.612406,2.298813,-0.0706,
+       2.648521,2.296134,-0.12551,     2.569734,2.173728,-0.140467,    2.539821,2.180796,-0.079013,
+       2.539821,2.180796,-0.079013,    2.612406,2.298813,-0.0706,      2.648521,2.296134,-0.12551,
+       2.701743,2.292186,-0.164732,    2.613818,2.163312,-0.184363,    2.569734,2.173728,-0.140467,
+       2.569734,2.173728,-0.140467,    2.648521,2.296134,-0.12551,     2.701743,2.292186,-0.164732,
+       2.76637,2.287392,-0.188266,     2.667347,2.150664,-0.210701,    2.613818,2.163312,-0.184363,
+       2.613818,2.163312,-0.184363,    2.701743,2.292186,-0.164732,    2.76637,2.287392,-0.188266,
+       2.8367,2.282175,-0.19611,       2.7256,2.1369,-0.21948, 2.667347,2.150664,-0.210701,
+       2.667347,2.150664,-0.210701,    2.76637,2.287392,-0.188266,     2.8367,2.282175,-0.19611,
+       2.90703,2.276958,-0.188266,     2.783853,2.123136,-0.210701,    2.7256,2.1369,-0.21948,
+       2.7256,2.1369,-0.21948, 2.8367,2.282175,-0.19611,       2.90703,2.276958,-0.188266,
+       2.971657,2.272164,-0.164732,    2.837382,2.110488,-0.184363,    2.783853,2.123136,-0.210701,
+       2.783853,2.123136,-0.210701,    2.90703,2.276958,-0.188266,     2.971657,2.272164,-0.164732,
+       3.024879,2.268216,-0.12551,     2.881466,2.100072,-0.140467,    2.837382,2.110488,-0.184363,
+       2.837382,2.110488,-0.184363,    2.971657,2.272164,-0.164732,    3.024879,2.268216,-0.12551,
+       3.060994,2.265537,-0.0706,      2.911379,2.093004,-0.079013,    2.881466,2.100072,-0.140467,
+       2.881466,2.100072,-0.140467,    3.024879,2.268216,-0.12551,     3.060994,2.265537,-0.0706,
+       3.0743,2.26455,0,       2.9224,2.0904,0,        2.911379,2.093004,-0.079013,
+       2.911379,2.093004,-0.079013,    3.060994,2.265537,-0.0706,      3.0743,2.26455,0,
+       2.7168,2.4,-0.0675,     2.612406,2.298813,-0.0706,      2.5991,2.2998,0,
+       2.5991,2.2998,0,        2.7,2.4,0,      2.7168,2.4,-0.0675,
+       2.7624,2.4,-0.12,       2.648521,2.296134,-0.12551,     2.612406,2.298813,-0.0706,
+       2.612406,2.298813,-0.0706,      2.7168,2.4,-0.0675,     2.7624,2.4,-0.12,
+       2.8296,2.4,-0.1575,     2.701743,2.292186,-0.164732,    2.648521,2.296134,-0.12551,
+       2.648521,2.296134,-0.12551,     2.7624,2.4,-0.12,       2.8296,2.4,-0.1575,
+       2.9112,2.4,-0.18,       2.76637,2.287392,-0.188266,     2.701743,2.292186,-0.164732,
+       2.701743,2.292186,-0.164732,    2.8296,2.4,-0.1575,     2.9112,2.4,-0.18,
+       3,2.4,-0.1875,  2.8367,2.282175,-0.19611,       2.76637,2.287392,-0.188266,
+       2.76637,2.287392,-0.188266,     2.9112,2.4,-0.18,       3,2.4,-0.1875,
+       3.0888,2.4,-0.18,       2.90703,2.276958,-0.188266,     2.8367,2.282175,-0.19611,
+       2.8367,2.282175,-0.19611,       3,2.4,-0.1875,  3.0888,2.4,-0.18,
+       3.1704,2.4,-0.1575,     2.971657,2.272164,-0.164732,    2.90703,2.276958,-0.188266,
+       2.90703,2.276958,-0.188266,     3.0888,2.4,-0.18,       3.1704,2.4,-0.1575,
+       3.2376,2.4,-0.12,       3.024879,2.268216,-0.12551,     2.971657,2.272164,-0.164732,
+       2.971657,2.272164,-0.164732,    3.1704,2.4,-0.1575,     3.2376,2.4,-0.12,
+       3.2832,2.4,-0.0675,     3.060994,2.265537,-0.0706,      3.024879,2.268216,-0.12551,
+       3.024879,2.268216,-0.12551,     3.2376,2.4,-0.12,       3.2832,2.4,-0.0675,
+       3.3,2.4,0,      3.0743,2.26455,0,       3.060994,2.265537,-0.0706,
+       3.060994,2.265537,-0.0706,      3.2832,2.4,-0.0675,     3.3,2.4,0,
+       2.057206,0.715929,0.1751,       1.7,0.6231,0.1782,      1.7,0.6,0,
+       1.7,0.6,0,      2.0607,0.69495,0,       2.057206,0.715929,0.1751,
+       2.047721,0.772872,0.31129,      1.7,0.6858,0.3168,      1.7,0.6231,0.1782,
+       1.7,0.6231,0.1782,      2.057206,0.715929,0.1751,       2.047721,0.772872,0.31129,
+       2.033743,0.856788,0.408568,     1.7,0.7782,0.4158,      1.7,0.6858,0.3168,
+       1.7,0.6858,0.3168,      2.047721,0.772872,0.31129,      2.033743,0.856788,0.408568,
+       2.01677,0.958686,0.466934,      1.7,0.8904,0.4752,      1.7,0.7782,0.4158,
+       1.7,0.7782,0.4158,      2.033743,0.856788,0.408568,     2.01677,0.958686,0.466934,
+       1.9983,1.069575,0.48639,        1.7,1.0125,0.495,       1.7,0.8904,0.4752,
+       1.7,0.8904,0.4752,      2.01677,0.958686,0.466934,      1.9983,1.069575,0.48639,
+       1.97983,1.180464,0.466934,      1.7,1.1346,0.4752,      1.7,1.0125,0.495,
+       1.7,1.0125,0.495,       1.9983,1.069575,0.48639,        1.97983,1.180464,0.466934,
+       1.962857,1.282362,0.408568,     1.7,1.2468,0.4158,      1.7,1.1346,0.4752,
+       1.7,1.1346,0.4752,      1.97983,1.180464,0.466934,      1.962857,1.282362,0.408568,
+       1.948879,1.366278,0.31129,      1.7,1.3392,0.3168,      1.7,1.2468,0.4158,
+       1.7,1.2468,0.4158,      1.962857,1.282362,0.408568,     1.948879,1.366278,0.31129,
+       1.939394,1.423221,0.1751,       1.7,1.4019,0.1782,      1.7,1.3392,0.3168,
+       1.7,1.3392,0.3168,      1.948879,1.366278,0.31129,      1.939394,1.423221,0.1751,
+       1.9359,1.4442,0,        1.7,1.425,0,    1.7,1.4019,0.1782,
+       1.7,1.4019,0.1782,      1.939394,1.423221,0.1751,       1.9359,1.4442,0,
+       2.311821,0.85608,0.166687,      2.057206,0.715929,0.1751,       2.0607,0.69495,0,
+       2.0607,0.69495,0,       2.3176,0.8376,0,        2.311821,0.85608,0.166687,
+       2.296134,0.90624,0.296333,      2.047721,0.772872,0.31129,      2.057206,0.715929,0.1751,
+       2.057206,0.715929,0.1751,       2.311821,0.85608,0.166687,      2.296134,0.90624,0.296333,
+       2.273018,0.98016,0.388937,      2.033743,0.856788,0.408568,     2.047721,0.772872,0.31129,
+       2.047721,0.772872,0.31129,      2.296134,0.90624,0.296333,      2.273018,0.98016,0.388937,
+       2.244947,1.06992,0.444499,      2.01677,0.958686,0.466934,      2.033743,0.856788,0.408568,
+       2.033743,0.856788,0.408568,     2.273018,0.98016,0.388937,      2.244947,1.06992,0.444499,
+       2.2144,1.1676,0.46302,  1.9983,1.069575,0.48639,        2.01677,0.958686,0.466934,
+       2.01677,0.958686,0.466934,      2.244947,1.06992,0.444499,      2.2144,1.1676,0.46302,
+       2.183853,1.26528,0.444499,      1.97983,1.180464,0.466934,      1.9983,1.069575,0.48639,
+       1.9983,1.069575,0.48639,        2.2144,1.1676,0.46302,  2.183853,1.26528,0.444499,
+       2.155782,1.35504,0.388937,      1.962857,1.282362,0.408568,     1.97983,1.180464,0.466934,
+       1.97983,1.180464,0.466934,      2.183853,1.26528,0.444499,      2.155782,1.35504,0.388937,
+       2.132666,1.42896,0.296333,      1.948879,1.366278,0.31129,      1.962857,1.282362,0.408568,
+       1.962857,1.282362,0.408568,     2.155782,1.35504,0.388937,      2.132666,1.42896,0.296333,
+       2.116979,1.47912,0.166687,      1.939394,1.423221,0.1751,       1.948879,1.366278,0.31129,
+       1.948879,1.366278,0.31129,      2.132666,1.42896,0.296333,      2.116979,1.47912,0.166687,
+       2.1112,1.4976,0,        1.9359,1.4442,0,        1.939394,1.423221,0.1751,
+       1.939394,1.423221,0.1751,       2.116979,1.47912,0.166687,      2.1112,1.4976,0,
+       2.485743,1.032879,0.154289,     2.311821,0.85608,0.166687,      2.3176,0.8376,0,
+       2.3176,0.8376,0,        2.4929,1.01715,0,       2.485743,1.032879,0.154289,
+       2.466318,1.075572,0.274291,     2.296134,0.90624,0.296333,      2.311821,0.85608,0.166687,
+       2.311821,0.85608,0.166687,      2.485743,1.032879,0.154289,     2.466318,1.075572,0.274291,
+       2.43769,1.138488,0.360007,      2.273018,0.98016,0.388937,      2.296134,0.90624,0.296333,
+       2.296134,0.90624,0.296333,      2.466318,1.075572,0.274291,     2.43769,1.138488,0.360007,
+       2.402929,1.214886,0.411437,     2.244947,1.06992,0.444499,      2.273018,0.98016,0.388937,
+       2.273018,0.98016,0.388937,      2.43769,1.138488,0.360007,      2.402929,1.214886,0.411437,
+       2.3651,1.298025,0.42858,        2.2144,1.1676,0.46302,  2.244947,1.06992,0.444499,
+       2.244947,1.06992,0.444499,      2.402929,1.214886,0.411437,     2.3651,1.298025,0.42858,
+       2.327271,1.381164,0.411437,     2.183853,1.26528,0.444499,      2.2144,1.1676,0.46302,
+       2.2144,1.1676,0.46302,  2.3651,1.298025,0.42858,        2.327271,1.381164,0.411437,
+       2.29251,1.457562,0.360007,      2.155782,1.35504,0.388937,      2.183853,1.26528,0.444499,
+       2.183853,1.26528,0.444499,      2.327271,1.381164,0.411437,     2.29251,1.457562,0.360007,
+       2.263882,1.520478,0.274291,     2.132666,1.42896,0.296333,      2.155782,1.35504,0.388937,
+       2.155782,1.35504,0.388937,      2.29251,1.457562,0.360007,      2.263882,1.520478,0.274291,
+       2.244457,1.563171,0.154289,     2.116979,1.47912,0.166687,      2.132666,1.42896,0.296333,
+       2.132666,1.42896,0.296333,      2.263882,1.520478,0.274291,     2.244457,1.563171,0.154289,
+       2.2373,1.5789,0,        2.1112,1.4976,0,        2.116979,1.47912,0.166687,
+       2.116979,1.47912,0.166687,      2.244457,1.563171,0.154289,     2.2373,1.5789,0,
+       2.60087,1.235652,0.139234,      2.485743,1.032879,0.154289,     2.4929,1.01715,0,
+       2.4929,1.01715,0,       2.6088,1.2228,0,        2.60087,1.235652,0.139234,
+       2.579347,1.270536,0.247526,     2.466318,1.075572,0.274291,     2.485743,1.032879,0.154289,
+       2.485743,1.032879,0.154289,     2.60087,1.235652,0.139234,      2.579347,1.270536,0.247526,
+       2.547629,1.321944,0.324878,     2.43769,1.138488,0.360007,      2.466318,1.075572,0.274291,
+       2.466318,1.075572,0.274291,     2.579347,1.270536,0.247526,     2.547629,1.321944,0.324878,
+       2.509114,1.384368,0.37129,      2.402929,1.214886,0.411437,     2.43769,1.138488,0.360007,
+       2.43769,1.138488,0.360007,      2.547629,1.321944,0.324878,     2.509114,1.384368,0.37129,
+       2.4672,1.4523,0.38676,  2.3651,1.298025,0.42858,        2.402929,1.214886,0.411437,
+       2.402929,1.214886,0.411437,     2.509114,1.384368,0.37129,      2.4672,1.4523,0.38676,
+       2.425286,1.520232,0.37129,      2.327271,1.381164,0.411437,     2.3651,1.298025,0.42858,
+       2.3651,1.298025,0.42858,        2.4672,1.4523,0.38676,  2.425286,1.520232,0.37129,
+       2.386771,1.582656,0.324878,     2.29251,1.457562,0.360007,      2.327271,1.381164,0.411437,
+       2.327271,1.381164,0.411437,     2.425286,1.520232,0.37129,      2.386771,1.582656,0.324878,
+       2.355053,1.634064,0.247526,     2.263882,1.520478,0.274291,     2.29251,1.457562,0.360007,
+       2.29251,1.457562,0.360007,      2.386771,1.582656,0.324878,     2.355053,1.634064,0.247526,
+       2.33353,1.668948,0.139234,      2.244457,1.563171,0.154289,     2.263882,1.520478,0.274291,
+       2.263882,1.520478,0.274291,     2.355053,1.634064,0.247526,     2.33353,1.668948,0.139234,
+       2.3256,1.6818,0,        2.2373,1.5789,0,        2.244457,1.563171,0.154289,
+       2.244457,1.563171,0.154289,     2.33353,1.668948,0.139234,      2.3256,1.6818,0,
+       2.6791,1.453725,0.12285,        2.60087,1.235652,0.139234,      2.6088,1.2228,0,
+       2.6088,1.2228,0,        2.6875,1.44375,0,       2.6791,1.453725,0.12285,
+       2.6563,1.4808,0.2184,   2.579347,1.270536,0.247526,     2.60087,1.235652,0.139234,
+       2.60087,1.235652,0.139234,      2.6791,1.453725,0.12285,        2.6563,1.4808,0.2184,
+       2.6227,1.5207,0.28665,  2.547629,1.321944,0.324878,     2.579347,1.270536,0.247526,
+       2.579347,1.270536,0.247526,     2.6563,1.4808,0.2184,   2.6227,1.5207,0.28665,
+       2.5819,1.56915,0.3276,  2.509114,1.384368,0.37129,      2.547629,1.321944,0.324878,
+       2.547629,1.321944,0.324878,     2.6227,1.5207,0.28665,  2.5819,1.56915,0.3276,
+       2.5375,1.621875,0.34125,        2.4672,1.4523,0.38676,  2.509114,1.384368,0.37129,
+       2.509114,1.384368,0.37129,      2.5819,1.56915,0.3276,  2.5375,1.621875,0.34125,
+       2.4931,1.6746,0.3276,   2.425286,1.520232,0.37129,      2.4672,1.4523,0.38676,
+       2.4672,1.4523,0.38676,  2.5375,1.621875,0.34125,        2.4931,1.6746,0.3276,
+       2.4523,1.72305,0.28665, 2.386771,1.582656,0.324878,     2.425286,1.520232,0.37129,
+       2.425286,1.520232,0.37129,      2.4931,1.6746,0.3276,   2.4523,1.72305,0.28665,
+       2.4187,1.76295,0.2184,  2.355053,1.634064,0.247526,     2.386771,1.582656,0.324878,
+       2.386771,1.582656,0.324878,     2.4523,1.72305,0.28665, 2.4187,1.76295,0.2184,
+       2.3959,1.790025,0.12285,        2.33353,1.668948,0.139234,      2.355053,1.634064,0.247526,
+       2.355053,1.634064,0.247526,     2.4187,1.76295,0.2184,  2.3959,1.790025,0.12285,
+       2.3875,1.8,0,   2.3256,1.6818,0,        2.33353,1.668948,0.139234,
+       2.33353,1.668948,0.139234,      2.3959,1.790025,0.12285,        2.3875,1.8,0,
+       2.74233,1.676424,0.106466,      2.6791,1.453725,0.12285,        2.6875,1.44375,0,
+       2.6875,1.44375,0,       2.7512,1.6692,0,        2.74233,1.676424,0.106466,
+       2.718253,1.696032,0.189274,     2.6563,1.4808,0.2184,   2.6791,1.453725,0.12285,
+       2.6791,1.453725,0.12285,        2.74233,1.676424,0.106466,      2.718253,1.696032,0.189274,
+       2.682771,1.724928,0.248422,     2.6227,1.5207,0.28665,  2.6563,1.4808,0.2184,
+       2.6563,1.4808,0.2184,   2.718253,1.696032,0.189274,     2.682771,1.724928,0.248422,
+       2.639686,1.760016,0.28391,      2.5819,1.56915,0.3276,  2.6227,1.5207,0.28665,
+       2.6227,1.5207,0.28665,  2.682771,1.724928,0.248422,     2.639686,1.760016,0.28391,
+       2.5928,1.7982,0.29574,  2.5375,1.621875,0.34125,        2.5819,1.56915,0.3276,
+       2.5819,1.56915,0.3276,  2.639686,1.760016,0.28391,      2.5928,1.7982,0.29574,
+       2.545914,1.836384,0.28391,      2.4931,1.6746,0.3276,   2.5375,1.621875,0.34125,
+       2.5375,1.621875,0.34125,        2.5928,1.7982,0.29574,  2.545914,1.836384,0.28391,
+       2.502829,1.871472,0.248422,     2.4523,1.72305,0.28665, 2.4931,1.6746,0.3276,
+       2.4931,1.6746,0.3276,   2.545914,1.836384,0.28391,      2.502829,1.871472,0.248422,
+       2.467347,1.900368,0.189274,     2.4187,1.76295,0.2184,  2.4523,1.72305,0.28665,
+       2.4523,1.72305,0.28665, 2.502829,1.871472,0.248422,     2.467347,1.900368,0.189274,
+       2.44327,1.919976,0.106466,      2.3959,1.790025,0.12285,        2.4187,1.76295,0.2184,
+       2.4187,1.76295,0.2184,  2.467347,1.900368,0.189274,     2.44327,1.919976,0.106466,
+       2.4344,1.9272,0,        2.3875,1.8,0,   2.3959,1.790025,0.12285,
+       2.3959,1.790025,0.12285,        2.44327,1.919976,0.106466,      2.4344,1.9272,0,
+       2.812457,1.893075,0.091411,     2.74233,1.676424,0.106466,      2.7512,1.6692,0,
+       2.7512,1.6692,0,        2.8221,1.88835,0,       2.812457,1.893075,0.091411,
+       2.786282,1.9059,0.162509,       2.718253,1.696032,0.189274,     2.74233,1.676424,0.106466,
+       2.74233,1.676424,0.106466,      2.812457,1.893075,0.091411,     2.786282,1.9059,0.162509,
+       2.74771,1.9248,0.213293,        2.682771,1.724928,0.248422,     2.718253,1.696032,0.189274,
+       2.718253,1.696032,0.189274,     2.786282,1.9059,0.162509,       2.74771,1.9248,0.213293,
+       2.700871,1.94775,0.243763,      2.639686,1.760016,0.28391,      2.682771,1.724928,0.248422,
+       2.682771,1.724928,0.248422,     2.74771,1.9248,0.213293,        2.700871,1.94775,0.243763,
+       2.6499,1.972725,0.25392,        2.5928,1.7982,0.29574,  2.639686,1.760016,0.28391,
+       2.639686,1.760016,0.28391,      2.700871,1.94775,0.243763,      2.6499,1.972725,0.25392,
+       2.598929,1.9977,0.243763,       2.545914,1.836384,0.28391,      2.5928,1.7982,0.29574,
+       2.5928,1.7982,0.29574,  2.6499,1.972725,0.25392,        2.598929,1.9977,0.243763,
+       2.55209,2.02065,0.213293,       2.502829,1.871472,0.248422,     2.545914,1.836384,0.28391,
+       2.545914,1.836384,0.28391,      2.598929,1.9977,0.243763,       2.55209,2.02065,0.213293,
+       2.513518,2.03955,0.162509,      2.467347,1.900368,0.189274,     2.502829,1.871472,0.248422,
+       2.502829,1.871472,0.248422,     2.55209,2.02065,0.213293,       2.513518,2.03955,0.162509,
+       2.487343,2.052375,0.091411,     2.44327,1.919976,0.106466,      2.467347,1.900368,0.189274,
+       2.467347,1.900368,0.189274,     2.513518,2.03955,0.162509,      2.487343,2.052375,0.091411,
+       2.4777,2.0571,0,        2.4344,1.9272,0,        2.44327,1.919976,0.106466,
+       2.44327,1.919976,0.106466,      2.487343,2.052375,0.091411,     2.4777,2.0571,0,
+       2.911379,2.093004,0.079013,     2.812457,1.893075,0.091411,     2.8221,1.88835,0,
+       2.8221,1.88835,0,       2.9224,2.0904,0,        2.911379,2.093004,0.079013,
+       2.881466,2.100072,0.140467,     2.786282,1.9059,0.162509,       2.812457,1.893075,0.091411,
+       2.812457,1.893075,0.091411,     2.911379,2.093004,0.079013,     2.881466,2.100072,0.140467,
+       2.837382,2.110488,0.184363,     2.74771,1.9248,0.213293,        2.786282,1.9059,0.162509,
+       2.786282,1.9059,0.162509,       2.881466,2.100072,0.140467,     2.837382,2.110488,0.184363,
+       2.783853,2.123136,0.210701,     2.700871,1.94775,0.243763,      2.74771,1.9248,0.213293,
+       2.74771,1.9248,0.213293,        2.837382,2.110488,0.184363,     2.783853,2.123136,0.210701,
+       2.7256,2.1369,0.21948,  2.6499,1.972725,0.25392,        2.700871,1.94775,0.243763,
+       2.700871,1.94775,0.243763,      2.783853,2.123136,0.210701,     2.7256,2.1369,0.21948,
+       2.667347,2.150664,0.210701,     2.598929,1.9977,0.243763,       2.6499,1.972725,0.25392,
+       2.6499,1.972725,0.25392,        2.7256,2.1369,0.21948,  2.667347,2.150664,0.210701,
+       2.613818,2.163312,0.184363,     2.55209,2.02065,0.213293,       2.598929,1.9977,0.243763,
+       2.598929,1.9977,0.243763,       2.667347,2.150664,0.210701,     2.613818,2.163312,0.184363,
+       2.569734,2.173728,0.140467,     2.513518,2.03955,0.162509,      2.55209,2.02065,0.213293,
+       2.55209,2.02065,0.213293,       2.613818,2.163312,0.184363,     2.569734,2.173728,0.140467,
+       2.539821,2.180796,0.079013,     2.487343,2.052375,0.091411,     2.513518,2.03955,0.162509,
+       2.513518,2.03955,0.162509,      2.569734,2.173728,0.140467,     2.539821,2.180796,0.079013,
+       2.5288,2.1834,0,        2.4777,2.0571,0,        2.487343,2.052375,0.091411,
+       2.487343,2.052375,0.091411,     2.539821,2.180796,0.079013,     2.5288,2.1834,0,
+       3.060994,2.265537,0.0706,       2.911379,2.093004,0.079013,     2.9224,2.0904,0,
+       2.9224,2.0904,0,        3.0743,2.26455,0,       3.060994,2.265537,0.0706,
+       3.024879,2.268216,0.12551,      2.881466,2.100072,0.140467,     2.911379,2.093004,0.079013,
+       2.911379,2.093004,0.079013,     3.060994,2.265537,0.0706,       3.024879,2.268216,0.12551,
+       2.971657,2.272164,0.164732,     2.837382,2.110488,0.184363,     2.881466,2.100072,0.140467,
+       2.881466,2.100072,0.140467,     3.024879,2.268216,0.12551,      2.971657,2.272164,0.164732,
+       2.90703,2.276958,0.188266,      2.783853,2.123136,0.210701,     2.837382,2.110488,0.184363,
+       2.837382,2.110488,0.184363,     2.971657,2.272164,0.164732,     2.90703,2.276958,0.188266,
+       2.8367,2.282175,0.19611,        2.7256,2.1369,0.21948,  2.783853,2.123136,0.210701,
+       2.783853,2.123136,0.210701,     2.90703,2.276958,0.188266,      2.8367,2.282175,0.19611,
+       2.76637,2.287392,0.188266,      2.667347,2.150664,0.210701,     2.7256,2.1369,0.21948,
+       2.7256,2.1369,0.21948,  2.8367,2.282175,0.19611,        2.76637,2.287392,0.188266,
+       2.701743,2.292186,0.164732,     2.613818,2.163312,0.184363,     2.667347,2.150664,0.210701,
+       2.667347,2.150664,0.210701,     2.76637,2.287392,0.188266,      2.701743,2.292186,0.164732,
+       2.648521,2.296134,0.12551,      2.569734,2.173728,0.140467,     2.613818,2.163312,0.184363,
+       2.613818,2.163312,0.184363,     2.701743,2.292186,0.164732,     2.648521,2.296134,0.12551,
+       2.612406,2.298813,0.0706,       2.539821,2.180796,0.079013,     2.569734,2.173728,0.140467,
+       2.569734,2.173728,0.140467,     2.648521,2.296134,0.12551,      2.612406,2.298813,0.0706,
+       2.5991,2.2998,0,        2.5288,2.1834,0,        2.539821,2.180796,0.079013,
+       2.539821,2.180796,0.079013,     2.612406,2.298813,0.0706,       2.5991,2.2998,0,
+       3.2832,2.4,0.0675,      3.060994,2.265537,0.0706,       3.0743,2.26455,0,
+       3.0743,2.26455,0,       3.3,2.4,0,      3.2832,2.4,0.0675,
+       3.2376,2.4,0.12,        3.024879,2.268216,0.12551,      3.060994,2.265537,0.0706,
+       3.060994,2.265537,0.0706,       3.2832,2.4,0.0675,      3.2376,2.4,0.12,
+       3.1704,2.4,0.1575,      2.971657,2.272164,0.164732,     3.024879,2.268216,0.12551,
+       3.024879,2.268216,0.12551,      3.2376,2.4,0.12,        3.1704,2.4,0.1575,
+       3.0888,2.4,0.18,        2.90703,2.276958,0.188266,      2.971657,2.272164,0.164732,
+       2.971657,2.272164,0.164732,     3.1704,2.4,0.1575,      3.0888,2.4,0.18,
+       3,2.4,0.1875,   2.8367,2.282175,0.19611,        2.90703,2.276958,0.188266,
+       2.90703,2.276958,0.188266,      3.0888,2.4,0.18,        3,2.4,0.1875,
+       2.9112,2.4,0.18,        2.76637,2.287392,0.188266,      2.8367,2.282175,0.19611,
+       2.8367,2.282175,0.19611,        3,2.4,0.1875,   2.9112,2.4,0.18,
+       2.8296,2.4,0.1575,      2.701743,2.292186,0.164732,     2.76637,2.287392,0.188266,
+       2.76637,2.287392,0.188266,      2.9112,2.4,0.18,        2.8296,2.4,0.1575,
+       2.7624,2.4,0.12,        2.648521,2.296134,0.12551,      2.701743,2.292186,0.164732,
+       2.701743,2.292186,0.164732,     2.8296,2.4,0.1575,      2.7624,2.4,0.12,
+       2.7168,2.4,0.0675,      2.612406,2.298813,0.0706,       2.648521,2.296134,0.12551,
+       2.648521,2.296134,0.12551,      2.7624,2.4,0.12,        2.7168,2.4,0.0675,
+       2.7,2.4,0,      2.5991,2.2998,0,        2.612406,2.298813,0.0706,
+       2.612406,2.298813,0.0706,       2.7168,2.4,0.0675,      2.7,2.4,0,
+       2.747407,2.420406,-0.066744,    2.7168,2.4,-0.0675,     2.7,2.4,0,
+       2.7,2.4,0,      2.7298,2.42025,0,       2.747407,2.420406,-0.066744,
+       2.795198,2.420829,-0.118656,    2.7624,2.4,-0.12,       2.7168,2.4,-0.0675,
+       2.7168,2.4,-0.0675,     2.747407,2.420406,-0.066744,    2.795198,2.420829,-0.118656,
+       2.865626,2.421453,-0.155736,    2.8296,2.4,-0.1575,     2.7624,2.4,-0.12,
+       2.7624,2.4,-0.12,       2.795198,2.420829,-0.118656,    2.865626,2.421453,-0.155736,
+       2.951146,2.42221,-0.177984,     2.9112,2.4,-0.18,       2.8296,2.4,-0.1575,
+       2.8296,2.4,-0.1575,     2.865626,2.421453,-0.155736,    2.951146,2.42221,-0.177984,
+       3.044212,2.423034,-0.1854,      3,2.4,-0.1875,  2.9112,2.4,-0.18,
+       2.9112,2.4,-0.18,       2.951146,2.42221,-0.177984,     3.044212,2.423034,-0.1854,
+       3.137279,2.423859,-0.177984,    3.0888,2.4,-0.18,       3,2.4,-0.1875,
+       3,2.4,-0.1875,  3.044212,2.423034,-0.1854,      3.137279,2.423859,-0.177984,
+       3.222799,2.424616,-0.155736,    3.1704,2.4,-0.1575,     3.0888,2.4,-0.18,
+       3.0888,2.4,-0.18,       3.137279,2.423859,-0.177984,    3.222799,2.424616,-0.155736,
+       3.293227,2.42524,-0.118656,     3.2376,2.4,-0.12,       3.1704,2.4,-0.1575,
+       3.1704,2.4,-0.1575,     3.222799,2.424616,-0.155736,    3.293227,2.42524,-0.118656,
+       3.341018,2.425663,-0.066744,    3.2832,2.4,-0.0675,     3.2376,2.4,-0.12,
+       3.2376,2.4,-0.12,       3.293227,2.42524,-0.118656,     3.341018,2.425663,-0.066744,
+       3.358625,2.425819,0,    3.3,2.4,0,      3.2832,2.4,-0.0675,
+       3.2832,2.4,-0.0675,     3.341018,2.425663,-0.066744,    3.358625,2.425819,0,
+       2.776365,2.436302,-0.064692,    2.747407,2.420406,-0.066744,    2.7298,2.42025,0,
+       2.7298,2.42025,0,       2.7584,2.436,0, 2.776365,2.436302,-0.064692,
+       2.825126,2.437123,-0.115008,    2.795198,2.420829,-0.118656,    2.747407,2.420406,-0.066744,
+       2.747407,2.420406,-0.066744,    2.776365,2.436302,-0.064692,    2.825126,2.437123,-0.115008,
+       2.896986,2.438333,-0.150948,    2.865626,2.421453,-0.155736,    2.795198,2.420829,-0.118656,
+       2.795198,2.420829,-0.118656,    2.825126,2.437123,-0.115008,    2.896986,2.438333,-0.150948,
+       2.984243,2.439802,-0.172512,    2.951146,2.42221,-0.177984,     2.865626,2.421453,-0.155736,
+       2.865626,2.421453,-0.155736,    2.896986,2.438333,-0.150948,    2.984243,2.439802,-0.172512,
+       3.0792,2.4414,-0.1797,  3.044212,2.423034,-0.1854,      2.951146,2.42221,-0.177984,
+       2.951146,2.42221,-0.177984,     2.984243,2.439802,-0.172512,    3.0792,2.4414,-0.1797,
+       3.174157,2.442998,-0.172512,    3.137279,2.423859,-0.177984,    3.044212,2.423034,-0.1854,
+       3.044212,2.423034,-0.1854,      3.0792,2.4414,-0.1797,  3.174157,2.442998,-0.172512,
+       3.261414,2.444467,-0.150948,    3.222799,2.424616,-0.155736,    3.137279,2.423859,-0.177984,
+       3.137279,2.423859,-0.177984,    3.174157,2.442998,-0.172512,    3.261414,2.444467,-0.150948,
+       3.333274,2.445677,-0.115008,    3.293227,2.42524,-0.118656,     3.222799,2.424616,-0.155736,
+       3.222799,2.424616,-0.155736,    3.261414,2.444467,-0.150948,    3.333274,2.445677,-0.115008,
+       3.382035,2.446498,-0.064692,    3.341018,2.425663,-0.066744,    3.293227,2.42524,-0.118656,
+       3.293227,2.42524,-0.118656,     3.333274,2.445677,-0.115008,    3.382035,2.446498,-0.064692,
+       3.4,2.4468,0,   3.358625,2.425819,0,    3.341018,2.425663,-0.066744,
+       3.341018,2.425663,-0.066744,    3.382035,2.446498,-0.064692,    3.4,2.4468,0,
+       2.802528,2.44768,-0.061668,     2.776365,2.436302,-0.064692,    2.7584,2.436,0,
+       2.7584,2.436,0, 2.7846,2.44725,0,       2.802528,2.44768,-0.061668,
+       2.851189,2.448847,-0.109632,    2.825126,2.437123,-0.115008,    2.776365,2.436302,-0.064692,
+       2.776365,2.436302,-0.064692,    2.802528,2.44768,-0.061668,     2.851189,2.448847,-0.109632,
+       2.922899,2.450567,-0.143892,    2.896986,2.438333,-0.150948,    2.825126,2.437123,-0.115008,
+       2.825126,2.437123,-0.115008,    2.851189,2.448847,-0.109632,    2.922899,2.450567,-0.143892,
+       3.009977,2.452655,-0.164448,    2.984243,2.439802,-0.172512,    2.896986,2.438333,-0.150948,
+       2.896986,2.438333,-0.150948,    2.922899,2.450567,-0.143892,    3.009977,2.452655,-0.164448,
+       3.104737,2.454928,-0.1713,      3.0792,2.4414,-0.1797,  2.984243,2.439802,-0.172512,
+       2.984243,2.439802,-0.172512,    3.009977,2.452655,-0.164448,    3.104737,2.454928,-0.1713,
+       3.199498,2.457201,-0.164448,    3.174157,2.442998,-0.172512,    3.0792,2.4414,-0.1797,
+       3.0792,2.4414,-0.1797,  3.104737,2.454928,-0.1713,      3.199498,2.457201,-0.164448,
+       3.286576,2.459289,-0.143892,    3.261414,2.444467,-0.150948,    3.174157,2.442998,-0.172512,
+       3.174157,2.442998,-0.172512,    3.199498,2.457201,-0.164448,    3.286576,2.459289,-0.143892,
+       3.358286,2.461009,-0.109632,    3.333274,2.445677,-0.115008,    3.261414,2.444467,-0.150948,
+       3.261414,2.444467,-0.150948,    3.286576,2.459289,-0.143892,    3.358286,2.461009,-0.109632,
+       3.406947,2.462176,-0.061668,    3.382035,2.446498,-0.064692,    3.333274,2.445677,-0.115008,
+       3.333274,2.445677,-0.115008,    3.358286,2.461009,-0.109632,    3.406947,2.462176,-0.061668,
+       3.424875,2.462606,0,    3.4,2.4468,0,   3.382035,2.446498,-0.064692,
+       3.382035,2.446498,-0.064692,    3.406947,2.462176,-0.061668,    3.424875,2.462606,0,
+       2.82475,2.454529,-0.057996,     2.802528,2.44768,-0.061668,     2.7846,2.44725,0,
+       2.7846,2.44725,0,       2.8072,2.454,0, 2.82475,2.454529,-0.057996,
+       2.872387,2.455966,-0.103104,    2.851189,2.448847,-0.109632,    2.802528,2.44768,-0.061668,
+       2.802528,2.44768,-0.061668,     2.82475,2.454529,-0.057996,     2.872387,2.455966,-0.103104,
+       2.942589,2.458082,-0.135324,    2.922899,2.450567,-0.143892,    2.851189,2.448847,-0.109632,
+       2.851189,2.448847,-0.109632,    2.872387,2.455966,-0.103104,    2.942589,2.458082,-0.135324,
+       3.027834,2.460653,-0.154656,    3.009977,2.452655,-0.164448,    2.922899,2.450567,-0.143892,
+       2.922899,2.450567,-0.143892,    2.942589,2.458082,-0.135324,    3.027834,2.460653,-0.154656,
+       3.1206,2.46345,-0.1611, 3.104737,2.454928,-0.1713,      3.009977,2.452655,-0.164448,
+       3.009977,2.452655,-0.164448,    3.027834,2.460653,-0.154656,    3.1206,2.46345,-0.1611,
+       3.213366,2.466247,-0.154656,    3.199498,2.457201,-0.164448,    3.104737,2.454928,-0.1713,
+       3.104737,2.454928,-0.1713,      3.1206,2.46345,-0.1611, 3.213366,2.466247,-0.154656,
+       3.298611,2.468818,-0.135324,    3.286576,2.459289,-0.143892,    3.199498,2.457201,-0.164448,
+       3.199498,2.457201,-0.164448,    3.213366,2.466247,-0.154656,    3.298611,2.468818,-0.135324,
+       3.368813,2.470934,-0.103104,    3.358286,2.461009,-0.109632,    3.286576,2.459289,-0.143892,
+       3.286576,2.459289,-0.143892,    3.298611,2.468818,-0.135324,    3.368813,2.470934,-0.103104,
+       3.41645,2.472371,-0.057996,     3.406947,2.462176,-0.061668,    3.358286,2.461009,-0.109632,
+       3.358286,2.461009,-0.109632,    3.368813,2.470934,-0.103104,    3.41645,2.472371,-0.057996,
+       3.434,2.4729,0, 3.424875,2.462606,0,    3.406947,2.462176,-0.061668,
+       3.406947,2.462176,-0.061668,    3.41645,2.472371,-0.057996,     3.434,2.4729,0,
+       2.841887,2.456841,-0.054,       2.82475,2.454529,-0.057996,     2.8072,2.454,0,
+       2.8072,2.454,0, 2.825,2.45625,0,        2.841887,2.456841,-0.054,
+       2.887725,2.458444,-0.096,       2.872387,2.455966,-0.103104,    2.82475,2.454529,-0.057996,
+       2.82475,2.454529,-0.057996,     2.841887,2.456841,-0.054,       2.887725,2.458444,-0.096,
+       2.955275,2.460806,-0.126,       2.942589,2.458082,-0.135324,    2.872387,2.455966,-0.103104,
+       2.872387,2.455966,-0.103104,    2.887725,2.458444,-0.096,       2.955275,2.460806,-0.126,
+       3.0373,2.463675,-0.144, 3.027834,2.460653,-0.154656,    2.942589,2.458082,-0.135324,
+       2.942589,2.458082,-0.135324,    2.955275,2.460806,-0.126,       3.0373,2.463675,-0.144,
+       3.126562,2.466797,-0.15,        3.1206,2.46345,-0.1611, 3.027834,2.460653,-0.154656,
+       3.027834,2.460653,-0.154656,    3.0373,2.463675,-0.144, 3.126562,2.466797,-0.15,
+       3.215825,2.469919,-0.144,       3.213366,2.466247,-0.154656,    3.1206,2.46345,-0.1611,
+       3.1206,2.46345,-0.1611, 3.126562,2.466797,-0.15,        3.215825,2.469919,-0.144,
+       3.29785,2.472787,-0.126,        3.298611,2.468818,-0.135324,    3.213366,2.466247,-0.154656,
+       3.213366,2.466247,-0.154656,    3.215825,2.469919,-0.144,       3.29785,2.472787,-0.126,
+       3.3654,2.47515,-0.096,  3.368813,2.470934,-0.103104,    3.298611,2.468818,-0.135324,
+       3.298611,2.468818,-0.135324,    3.29785,2.472787,-0.126,        3.3654,2.47515,-0.096,
+       3.411237,2.476753,-0.054,       3.41645,2.472371,-0.057996,     3.368813,2.470934,-0.103104,
+       3.368813,2.470934,-0.103104,    3.3654,2.47515,-0.096,  3.411237,2.476753,-0.054,
+       3.428125,2.477344,0,    3.434,2.4729,0, 3.41645,2.472371,-0.057996,
+       3.41645,2.472371,-0.057996,     3.411237,2.476753,-0.054,       3.428125,2.477344,0,
+       2.852794,2.454605,-0.050004,    2.841887,2.456841,-0.054,       2.825,2.45625,0,
+       2.825,2.45625,0,        2.8368,2.454,0, 2.852794,2.454605,-0.050004,
+       2.896205,2.456246,-0.088896,    2.887725,2.458444,-0.096,       2.841887,2.456841,-0.054,
+       2.841887,2.456841,-0.054,       2.852794,2.454605,-0.050004,    2.896205,2.456246,-0.088896,
+       2.960179,2.458666,-0.116676,    2.955275,2.460806,-0.126,       2.887725,2.458444,-0.096,
+       2.887725,2.458444,-0.096,       2.896205,2.456246,-0.088896,    2.960179,2.458666,-0.116676,
+       3.037862,2.461603,-0.133344,    3.0373,2.463675,-0.144, 2.955275,2.460806,-0.126,
+       2.955275,2.460806,-0.126,       2.960179,2.458666,-0.116676,    3.037862,2.461603,-0.133344,
+       3.1224,2.4648,-0.1389,  3.126562,2.466797,-0.15,        3.0373,2.463675,-0.144,
+       3.0373,2.463675,-0.144, 3.037862,2.461603,-0.133344,    3.1224,2.4648,-0.1389,
+       3.206938,2.467997,-0.133344,    3.215825,2.469919,-0.144,       3.126562,2.466797,-0.15,
+       3.126562,2.466797,-0.15,        3.1224,2.4648,-0.1389,  3.206938,2.467997,-0.133344,
+       3.284621,2.470934,-0.116676,    3.29785,2.472787,-0.126,        3.215825,2.469919,-0.144,
+       3.215825,2.469919,-0.144,       3.206938,2.467997,-0.133344,    3.284621,2.470934,-0.116676,
+       3.348595,2.473354,-0.088896,    3.3654,2.47515,-0.096,  3.29785,2.472787,-0.126,
+       3.29785,2.472787,-0.126,        3.284621,2.470934,-0.116676,    3.348595,2.473354,-0.088896,
+       3.392006,2.474995,-0.050004,    3.411237,2.476753,-0.054,       3.3654,2.47515,-0.096,
+       3.3654,2.47515,-0.096,  3.348595,2.473354,-0.088896,    3.392006,2.474995,-0.050004,
+       3.408,2.4756,0, 3.428125,2.477344,0,    3.411237,2.476753,-0.054,
+       3.411237,2.476753,-0.054,       3.392006,2.474995,-0.050004,    3.408,2.4756,0,
+       2.856323,2.447812,-0.046332,    2.852794,2.454605,-0.050004,    2.8368,2.454,0,
+       2.8368,2.454,0, 2.8414,2.44725,0,       2.856323,2.447812,-0.046332,
+       2.896829,2.449338,-0.082368,    2.896205,2.456246,-0.088896,    2.852794,2.454605,-0.050004,
+       2.852794,2.454605,-0.050004,    2.856323,2.447812,-0.046332,    2.896829,2.449338,-0.082368,
+       2.956523,2.451588,-0.108108,    2.960179,2.458666,-0.116676,    2.896205,2.456246,-0.088896,
+       2.896205,2.456246,-0.088896,    2.896829,2.449338,-0.082368,    2.956523,2.451588,-0.108108,
+       3.029007,2.454319,-0.123552,    3.037862,2.461603,-0.133344,    2.960179,2.458666,-0.116676,
+       2.960179,2.458666,-0.116676,    2.956523,2.451588,-0.108108,    3.029007,2.454319,-0.123552,
+       3.107887,2.457291,-0.1287,      3.1224,2.4648,-0.1389,  3.037862,2.461603,-0.133344,
+       3.037862,2.461603,-0.133344,    3.029007,2.454319,-0.123552,    3.107887,2.457291,-0.1287,
+       3.186768,2.460263,-0.123552,    3.206938,2.467997,-0.133344,    3.1224,2.4648,-0.1389,
+       3.1224,2.4648,-0.1389,  3.107887,2.457291,-0.1287,      3.186768,2.460263,-0.123552,
+       3.259252,2.462994,-0.108108,    3.284621,2.470934,-0.116676,    3.206938,2.467997,-0.133344,
+       3.206938,2.467997,-0.133344,    3.186768,2.460263,-0.123552,    3.259252,2.462994,-0.108108,
+       3.318946,2.465243,-0.082368,    3.348595,2.473354,-0.088896,    3.284621,2.470934,-0.116676,
+       3.284621,2.470934,-0.116676,    3.259252,2.462994,-0.108108,    3.318946,2.465243,-0.082368,
+       3.359452,2.466769,-0.046332,    3.392006,2.474995,-0.050004,    3.348595,2.473354,-0.088896,
+       3.348595,2.473354,-0.088896,    3.318946,2.465243,-0.082368,    3.359452,2.466769,-0.046332,
+       3.374375,2.467331,0,    3.408,2.4756,0, 3.392006,2.474995,-0.050004,
+       3.392006,2.474995,-0.050004,    3.359452,2.466769,-0.046332,    3.374375,2.467331,0,
+       2.851331,2.436454,-0.043308,    2.856323,2.447812,-0.046332,    2.8414,2.44725,0,
+       2.8414,2.44725,0,       2.8376,2.436,0, 2.851331,2.436454,-0.043308,
+       2.888602,2.437685,-0.076992,    2.896829,2.449338,-0.082368,    2.856323,2.447812,-0.046332,
+       2.856323,2.447812,-0.046332,    2.851331,2.436454,-0.043308,    2.888602,2.437685,-0.076992,
+       2.943526,2.439499,-0.101052,    2.956523,2.451588,-0.108108,    2.896829,2.449338,-0.082368,
+       2.896829,2.449338,-0.082368,    2.888602,2.437685,-0.076992,    2.943526,2.439499,-0.101052,
+       3.010221,2.441702,-0.115488,    3.029007,2.454319,-0.123552,    2.956523,2.451588,-0.108108,
+       2.956523,2.451588,-0.108108,    2.943526,2.439499,-0.101052,    3.010221,2.441702,-0.115488,
+       3.0828,2.4441,-0.1203,  3.107887,2.457291,-0.1287,      3.029007,2.454319,-0.123552,
+       3.029007,2.454319,-0.123552,    3.010221,2.441702,-0.115488,    3.0828,2.4441,-0.1203,
+       3.155379,2.446498,-0.115488,    3.186768,2.460263,-0.123552,    3.107887,2.457291,-0.1287,
+       3.107887,2.457291,-0.1287,      3.0828,2.4441,-0.1203,  3.155379,2.446498,-0.115488,
+       3.222074,2.448701,-0.101052,    3.259252,2.462994,-0.108108,    3.186768,2.460263,-0.123552,
+       3.186768,2.460263,-0.123552,    3.155379,2.446498,-0.115488,    3.222074,2.448701,-0.101052,
+       3.276998,2.450515,-0.076992,    3.318946,2.465243,-0.082368,    3.259252,2.462994,-0.108108,
+       3.259252,2.462994,-0.108108,    3.222074,2.448701,-0.101052,    3.276998,2.450515,-0.076992,
+       3.314269,2.451746,-0.043308,    3.359452,2.466769,-0.046332,    3.318946,2.465243,-0.082368,
+       3.318946,2.465243,-0.082368,    3.276998,2.450515,-0.076992,    3.314269,2.451746,-0.043308,
+       3.328,2.4522,0, 3.374375,2.467331,0,    3.359452,2.466769,-0.046332,
+       3.359452,2.466769,-0.046332,    3.314269,2.451746,-0.043308,    3.328,2.4522,0,
+       2.836672,2.420519,-0.041256,    2.851331,2.436454,-0.043308,    2.8376,2.436,0,
+       2.8376,2.436,0, 2.8242,2.42025,0,       2.836672,2.420519,-0.041256,
+       2.870524,2.42125,-0.073344,     2.888602,2.437685,-0.076992,    2.851331,2.436454,-0.043308,
+       2.851331,2.436454,-0.043308,    2.836672,2.420519,-0.041256,    2.870524,2.42125,-0.073344,
+       2.920412,2.422328,-0.096264,    2.943526,2.439499,-0.101052,    2.888602,2.437685,-0.076992,
+       2.888602,2.437685,-0.076992,    2.870524,2.42125,-0.073344,     2.920412,2.422328,-0.096264,
+       2.98099,2.423636,-0.110016,     3.010221,2.441702,-0.115488,    2.943526,2.439499,-0.101052,
+       2.943526,2.439499,-0.101052,    2.920412,2.422328,-0.096264,    2.98099,2.423636,-0.110016,
+       3.046912,2.425059,-0.1146,      3.0828,2.4441,-0.1203,  3.010221,2.441702,-0.115488,
+       3.010221,2.441702,-0.115488,    2.98099,2.423636,-0.110016,     3.046912,2.425059,-0.1146,
+       3.112835,2.426483,-0.110016,    3.155379,2.446498,-0.115488,    3.0828,2.4441,-0.1203,
+       3.0828,2.4441,-0.1203,  3.046912,2.425059,-0.1146,      3.112835,2.426483,-0.110016,
+       3.173413,2.427791,-0.096264,    3.222074,2.448701,-0.101052,    3.155379,2.446498,-0.115488,
+       3.155379,2.446498,-0.115488,    3.112835,2.426483,-0.110016,    3.173413,2.427791,-0.096264,
+       3.223301,2.428868,-0.073344,    3.276998,2.450515,-0.076992,    3.222074,2.448701,-0.101052,
+       3.222074,2.448701,-0.101052,    3.173413,2.427791,-0.096264,    3.223301,2.428868,-0.073344,
+       3.257153,2.429599,-0.041256,    3.314269,2.451746,-0.043308,    3.276998,2.450515,-0.076992,
+       3.276998,2.450515,-0.076992,    3.223301,2.428868,-0.073344,    3.257153,2.429599,-0.041256,
+       3.269625,2.429869,0,    3.328,2.4522,0, 3.314269,2.451746,-0.043308,
+       3.314269,2.451746,-0.043308,    3.257153,2.429599,-0.041256,    3.269625,2.429869,0,
+       2.8112,2.4,-0.0405,     2.836672,2.420519,-0.041256,    2.8242,2.42025,0,
+       2.8242,2.42025,0,       2.8,2.4,0,      2.8112,2.4,-0.0405,
+       2.8416,2.4,-0.072,      2.870524,2.42125,-0.073344,     2.836672,2.420519,-0.041256,
+       2.836672,2.420519,-0.041256,    2.8112,2.4,-0.0405,     2.8416,2.4,-0.072,
+       2.8864,2.4,-0.0945,     2.920412,2.422328,-0.096264,    2.870524,2.42125,-0.073344,
+       2.870524,2.42125,-0.073344,     2.8416,2.4,-0.072,      2.8864,2.4,-0.0945,
+       2.9408,2.4,-0.108,      2.98099,2.423636,-0.110016,     2.920412,2.422328,-0.096264,
+       2.920412,2.422328,-0.096264,    2.8864,2.4,-0.0945,     2.9408,2.4,-0.108,
+       3,2.4,-0.1125,  3.046912,2.425059,-0.1146,      2.98099,2.423636,-0.110016,
+       2.98099,2.423636,-0.110016,     2.9408,2.4,-0.108,      3,2.4,-0.1125,
+       3.0592,2.4,-0.108,      3.112835,2.426483,-0.110016,    3.046912,2.425059,-0.1146,
+       3.046912,2.425059,-0.1146,      3,2.4,-0.1125,  3.0592,2.4,-0.108,
+       3.1136,2.4,-0.0945,     3.173413,2.427791,-0.096264,    3.112835,2.426483,-0.110016,
+       3.112835,2.426483,-0.110016,    3.0592,2.4,-0.108,      3.1136,2.4,-0.0945,
+       3.1584,2.4,-0.072,      3.223301,2.428868,-0.073344,    3.173413,2.427791,-0.096264,
+       3.173413,2.427791,-0.096264,    3.1136,2.4,-0.0945,     3.1584,2.4,-0.072,
+       3.1888,2.4,-0.0405,     3.257153,2.429599,-0.041256,    3.223301,2.428868,-0.073344,
+       3.223301,2.428868,-0.073344,    3.1584,2.4,-0.072,      3.1888,2.4,-0.0405,
+       3.2,2.4,0,      3.269625,2.429869,0,    3.257153,2.429599,-0.041256,
+       3.257153,2.429599,-0.041256,    3.1888,2.4,-0.0405,     3.2,2.4,0,
+       3.341018,2.425663,0.066744,     3.2832,2.4,0.0675,      3.3,2.4,0,
+       3.3,2.4,0,      3.358625,2.425819,0,    3.341018,2.425663,0.066744,
+       3.293227,2.42524,0.118656,      3.2376,2.4,0.12,        3.2832,2.4,0.0675,
+       3.2832,2.4,0.0675,      3.341018,2.425663,0.066744,     3.293227,2.42524,0.118656,
+       3.222799,2.424616,0.155736,     3.1704,2.4,0.1575,      3.2376,2.4,0.12,
+       3.2376,2.4,0.12,        3.293227,2.42524,0.118656,      3.222799,2.424616,0.155736,
+       3.137279,2.423859,0.177984,     3.0888,2.4,0.18,        3.1704,2.4,0.1575,
+       3.1704,2.4,0.1575,      3.222799,2.424616,0.155736,     3.137279,2.423859,0.177984,
+       3.044212,2.423034,0.1854,       3,2.4,0.1875,   3.0888,2.4,0.18,
+       3.0888,2.4,0.18,        3.137279,2.423859,0.177984,     3.044212,2.423034,0.1854,
+       2.951146,2.42221,0.177984,      2.9112,2.4,0.18,        3,2.4,0.1875,
+       3,2.4,0.1875,   3.044212,2.423034,0.1854,       2.951146,2.42221,0.177984,
+       2.865626,2.421453,0.155736,     2.8296,2.4,0.1575,      2.9112,2.4,0.18,
+       2.9112,2.4,0.18,        2.951146,2.42221,0.177984,      2.865626,2.421453,0.155736,
+       2.795198,2.420829,0.118656,     2.7624,2.4,0.12,        2.8296,2.4,0.1575,
+       2.8296,2.4,0.1575,      2.865626,2.421453,0.155736,     2.795198,2.420829,0.118656,
+       2.747407,2.420406,0.066744,     2.7168,2.4,0.0675,      2.7624,2.4,0.12,
+       2.7624,2.4,0.12,        2.795198,2.420829,0.118656,     2.747407,2.420406,0.066744,
+       2.7298,2.42025,0,       2.7,2.4,0,      2.7168,2.4,0.0675,
+       2.7168,2.4,0.0675,      2.747407,2.420406,0.066744,     2.7298,2.42025,0,
+       3.382035,2.446498,0.064692,     3.341018,2.425663,0.066744,     3.358625,2.425819,0,
+       3.358625,2.425819,0,    3.4,2.4468,0,   3.382035,2.446498,0.064692,
+       3.333274,2.445677,0.115008,     3.293227,2.42524,0.118656,      3.341018,2.425663,0.066744,
+       3.341018,2.425663,0.066744,     3.382035,2.446498,0.064692,     3.333274,2.445677,0.115008,
+       3.261414,2.444467,0.150948,     3.222799,2.424616,0.155736,     3.293227,2.42524,0.118656,
+       3.293227,2.42524,0.118656,      3.333274,2.445677,0.115008,     3.261414,2.444467,0.150948,
+       3.174157,2.442998,0.172512,     3.137279,2.423859,0.177984,     3.222799,2.424616,0.155736,
+       3.222799,2.424616,0.155736,     3.261414,2.444467,0.150948,     3.174157,2.442998,0.172512,
+       3.0792,2.4414,0.1797,   3.044212,2.423034,0.1854,       3.137279,2.423859,0.177984,
+       3.137279,2.423859,0.177984,     3.174157,2.442998,0.172512,     3.0792,2.4414,0.1797,
+       2.984243,2.439802,0.172512,     2.951146,2.42221,0.177984,      3.044212,2.423034,0.1854,
+       3.044212,2.423034,0.1854,       3.0792,2.4414,0.1797,   2.984243,2.439802,0.172512,
+       2.896986,2.438333,0.150948,     2.865626,2.421453,0.155736,     2.951146,2.42221,0.177984,
+       2.951146,2.42221,0.177984,      2.984243,2.439802,0.172512,     2.896986,2.438333,0.150948,
+       2.825126,2.437123,0.115008,     2.795198,2.420829,0.118656,     2.865626,2.421453,0.155736,
+       2.865626,2.421453,0.155736,     2.896986,2.438333,0.150948,     2.825126,2.437123,0.115008,
+       2.776365,2.436302,0.064692,     2.747407,2.420406,0.066744,     2.795198,2.420829,0.118656,
+       2.795198,2.420829,0.118656,     2.825126,2.437123,0.115008,     2.776365,2.436302,0.064692,
+       2.7584,2.436,0, 2.7298,2.42025,0,       2.747407,2.420406,0.066744,
+       2.747407,2.420406,0.066744,     2.776365,2.436302,0.064692,     2.7584,2.436,0,
+       3.406947,2.462176,0.061668,     3.382035,2.446498,0.064692,     3.4,2.4468,0,
+       3.4,2.4468,0,   3.424875,2.462606,0,    3.406947,2.462176,0.061668,
+       3.358286,2.461009,0.109632,     3.333274,2.445677,0.115008,     3.382035,2.446498,0.064692,
+       3.382035,2.446498,0.064692,     3.406947,2.462176,0.061668,     3.358286,2.461009,0.109632,
+       3.286576,2.459289,0.143892,     3.261414,2.444467,0.150948,     3.333274,2.445677,0.115008,
+       3.333274,2.445677,0.115008,     3.358286,2.461009,0.109632,     3.286576,2.459289,0.143892,
+       3.199498,2.457201,0.164448,     3.174157,2.442998,0.172512,     3.261414,2.444467,0.150948,
+       3.261414,2.444467,0.150948,     3.286576,2.459289,0.143892,     3.199498,2.457201,0.164448,
+       3.104738,2.454928,0.1713,       3.0792,2.4414,0.1797,   3.174157,2.442998,0.172512,
+       3.174157,2.442998,0.172512,     3.199498,2.457201,0.164448,     3.104738,2.454928,0.1713,
+       3.009977,2.452655,0.164448,     2.984243,2.439802,0.172512,     3.0792,2.4414,0.1797,
+       3.0792,2.4414,0.1797,   3.104738,2.454928,0.1713,       3.009977,2.452655,0.164448,
+       2.922899,2.450567,0.143892,     2.896986,2.438333,0.150948,     2.984243,2.439802,0.172512,
+       2.984243,2.439802,0.172512,     3.009977,2.452655,0.164448,     2.922899,2.450567,0.143892,
+       2.851189,2.448847,0.109632,     2.825126,2.437123,0.115008,     2.896986,2.438333,0.150948,
+       2.896986,2.438333,0.150948,     2.922899,2.450567,0.143892,     2.851189,2.448847,0.109632,
+       2.802528,2.44768,0.061668,      2.776365,2.436302,0.064692,     2.825126,2.437123,0.115008,
+       2.825126,2.437123,0.115008,     2.851189,2.448847,0.109632,     2.802528,2.44768,0.061668,
+       2.7846,2.44725,0,       2.7584,2.436,0, 2.776365,2.436302,0.064692,
+       2.776365,2.436302,0.064692,     2.802528,2.44768,0.061668,      2.7846,2.44725,0,
+       3.41645,2.472371,0.057996,      3.406947,2.462176,0.061668,     3.424875,2.462606,0,
+       3.424875,2.462606,0,    3.434,2.4729,0, 3.41645,2.472371,0.057996,
+       3.368813,2.470934,0.103104,     3.358286,2.461009,0.109632,     3.406947,2.462176,0.061668,
+       3.406947,2.462176,0.061668,     3.41645,2.472371,0.057996,      3.368813,2.470934,0.103104,
+       3.298611,2.468818,0.135324,     3.286576,2.459289,0.143892,     3.358286,2.461009,0.109632,
+       3.358286,2.461009,0.109632,     3.368813,2.470934,0.103104,     3.298611,2.468818,0.135324,
+       3.213366,2.466247,0.154656,     3.199498,2.457201,0.164448,     3.286576,2.459289,0.143892,
+       3.286576,2.459289,0.143892,     3.298611,2.468818,0.135324,     3.213366,2.466247,0.154656,
+       3.1206,2.46345,0.1611,  3.104738,2.454928,0.1713,       3.199498,2.457201,0.164448,
+       3.199498,2.457201,0.164448,     3.213366,2.466247,0.154656,     3.1206,2.46345,0.1611,
+       3.027834,2.460653,0.154656,     3.009977,2.452655,0.164448,     3.104738,2.454928,0.1713,
+       3.104738,2.454928,0.1713,       3.1206,2.46345,0.1611,  3.027834,2.460653,0.154656,
+       2.942589,2.458082,0.135324,     2.922899,2.450567,0.143892,     3.009977,2.452655,0.164448,
+       3.009977,2.452655,0.164448,     3.027834,2.460653,0.154656,     2.942589,2.458082,0.135324,
+       2.872387,2.455966,0.103104,     2.851189,2.448847,0.109632,     2.922899,2.450567,0.143892,
+       2.922899,2.450567,0.143892,     2.942589,2.458082,0.135324,     2.872387,2.455966,0.103104,
+       2.82475,2.454529,0.057996,      2.802528,2.44768,0.061668,      2.851189,2.448847,0.109632,
+       2.851189,2.448847,0.109632,     2.872387,2.455966,0.103104,     2.82475,2.454529,0.057996,
+       2.8072,2.454,0, 2.7846,2.44725,0,       2.802528,2.44768,0.061668,
+       2.802528,2.44768,0.061668,      2.82475,2.454529,0.057996,      2.8072,2.454,0,
+       3.411237,2.476753,0.054,        3.41645,2.472371,0.057996,      3.434,2.4729,0,
+       3.434,2.4729,0, 3.428125,2.477344,0,    3.411237,2.476753,0.054,
+       3.3654,2.47515,0.096,   3.368813,2.470934,0.103104,     3.41645,2.472371,0.057996,
+       3.41645,2.472371,0.057996,      3.411237,2.476753,0.054,        3.3654,2.47515,0.096,
+       3.29785,2.472788,0.126, 3.298611,2.468818,0.135324,     3.368813,2.470934,0.103104,
+       3.368813,2.470934,0.103104,     3.3654,2.47515,0.096,   3.29785,2.472788,0.126,
+       3.215825,2.469919,0.144,        3.213366,2.466247,0.154656,     3.298611,2.468818,0.135324,
+       3.298611,2.468818,0.135324,     3.29785,2.472788,0.126, 3.215825,2.469919,0.144,
+       3.126562,2.466797,0.15, 3.1206,2.46345,0.1611,  3.213366,2.466247,0.154656,
+       3.213366,2.466247,0.154656,     3.215825,2.469919,0.144,        3.126562,2.466797,0.15,
+       3.0373,2.463675,0.144,  3.027834,2.460653,0.154656,     3.1206,2.46345,0.1611,
+       3.1206,2.46345,0.1611,  3.126562,2.466797,0.15, 3.0373,2.463675,0.144,
+       2.955275,2.460806,0.126,        2.942589,2.458082,0.135324,     3.027834,2.460653,0.154656,
+       3.027834,2.460653,0.154656,     3.0373,2.463675,0.144,  2.955275,2.460806,0.126,
+       2.887725,2.458444,0.096,        2.872387,2.455966,0.103104,     2.942589,2.458082,0.135324,
+       2.942589,2.458082,0.135324,     2.955275,2.460806,0.126,        2.887725,2.458444,0.096,
+       2.841887,2.456841,0.054,        2.82475,2.454529,0.057996,      2.872387,2.455966,0.103104,
+       2.872387,2.455966,0.103104,     2.887725,2.458444,0.096,        2.841887,2.456841,0.054,
+       2.825,2.45625,0,        2.8072,2.454,0, 2.82475,2.454529,0.057996,
+       2.82475,2.454529,0.057996,      2.841887,2.456841,0.054,        2.825,2.45625,0,
+       3.392006,2.474995,0.050004,     3.411237,2.476753,0.054,        3.428125,2.477344,0,
+       3.428125,2.477344,0,    3.408,2.4756,0, 3.392006,2.474995,0.050004,
+       3.348595,2.473354,0.088896,     3.3654,2.47515,0.096,   3.411237,2.476753,0.054,
+       3.411237,2.476753,0.054,        3.392006,2.474995,0.050004,     3.348595,2.473354,0.088896,
+       3.284621,2.470934,0.116676,     3.29785,2.472788,0.126, 3.3654,2.47515,0.096,
+       3.3654,2.47515,0.096,   3.348595,2.473354,0.088896,     3.284621,2.470934,0.116676,
+       3.206938,2.467997,0.133344,     3.215825,2.469919,0.144,        3.29785,2.472788,0.126,
+       3.29785,2.472788,0.126, 3.284621,2.470934,0.116676,     3.206938,2.467997,0.133344,
+       3.1224,2.4648,0.1389,   3.126562,2.466797,0.15, 3.215825,2.469919,0.144,
+       3.215825,2.469919,0.144,        3.206938,2.467997,0.133344,     3.1224,2.4648,0.1389,
+       3.037862,2.461603,0.133344,     3.0373,2.463675,0.144,  3.126562,2.466797,0.15,
+       3.126562,2.466797,0.15, 3.1224,2.4648,0.1389,   3.037862,2.461603,0.133344,
+       2.960179,2.458666,0.116676,     2.955275,2.460806,0.126,        3.0373,2.463675,0.144,
+       3.0373,2.463675,0.144,  3.037862,2.461603,0.133344,     2.960179,2.458666,0.116676,
+       2.896205,2.456246,0.088896,     2.887725,2.458444,0.096,        2.955275,2.460806,0.126,
+       2.955275,2.460806,0.126,        2.960179,2.458666,0.116676,     2.896205,2.456246,0.088896,
+       2.852794,2.454605,0.050004,     2.841887,2.456841,0.054,        2.887725,2.458444,0.096,
+       2.887725,2.458444,0.096,        2.896205,2.456246,0.088896,     2.852794,2.454605,0.050004,
+       2.8368,2.454,0, 2.825,2.45625,0,        2.841887,2.456841,0.054,
+       2.841887,2.456841,0.054,        2.852794,2.454605,0.050004,     2.8368,2.454,0,
+       3.359452,2.466769,0.046332,     3.392006,2.474995,0.050004,     3.408,2.4756,0,
+       3.408,2.4756,0, 3.374375,2.467331,0,    3.359452,2.466769,0.046332,
+       3.318946,2.465243,0.082368,     3.348595,2.473354,0.088896,     3.392006,2.474995,0.050004,
+       3.392006,2.474995,0.050004,     3.359452,2.466769,0.046332,     3.318946,2.465243,0.082368,
+       3.259252,2.462994,0.108108,     3.284621,2.470934,0.116676,     3.348595,2.473354,0.088896,
+       3.348595,2.473354,0.088896,     3.318946,2.465243,0.082368,     3.259252,2.462994,0.108108,
+       3.186768,2.460263,0.123552,     3.206938,2.467997,0.133344,     3.284621,2.470934,0.116676,
+       3.284621,2.470934,0.116676,     3.259252,2.462994,0.108108,     3.186768,2.460263,0.123552,
+       3.107887,2.457291,0.1287,       3.1224,2.4648,0.1389,   3.206938,2.467997,0.133344,
+       3.206938,2.467997,0.133344,     3.186768,2.460263,0.123552,     3.107887,2.457291,0.1287,
+       3.029007,2.454319,0.123552,     3.037862,2.461603,0.133344,     3.1224,2.4648,0.1389,
+       3.1224,2.4648,0.1389,   3.107887,2.457291,0.1287,       3.029007,2.454319,0.123552,
+       2.956523,2.451588,0.108108,     2.960179,2.458666,0.116676,     3.037862,2.461603,0.133344,
+       3.037862,2.461603,0.133344,     3.029007,2.454319,0.123552,     2.956523,2.451588,0.108108,
+       2.896829,2.449338,0.082368,     2.896205,2.456246,0.088896,     2.960179,2.458666,0.116676,
+       2.960179,2.458666,0.116676,     2.956523,2.451588,0.108108,     2.896829,2.449338,0.082368,
+       2.856323,2.447812,0.046332,     2.852794,2.454605,0.050004,     2.896205,2.456246,0.088896,
+       2.896205,2.456246,0.088896,     2.896829,2.449338,0.082368,     2.856323,2.447812,0.046332,
+       2.8414,2.44725,0,       2.8368,2.454,0, 2.852794,2.454605,0.050004,
+       2.852794,2.454605,0.050004,     2.856323,2.447812,0.046332,     2.8414,2.44725,0,
+       3.314269,2.451746,0.043308,     3.359452,2.466769,0.046332,     3.374375,2.467331,0,
+       3.374375,2.467331,0,    3.328,2.4522,0, 3.314269,2.451746,0.043308,
+       3.276998,2.450515,0.076992,     3.318946,2.465243,0.082368,     3.359452,2.466769,0.046332,
+       3.359452,2.466769,0.046332,     3.314269,2.451746,0.043308,     3.276998,2.450515,0.076992,
+       3.222074,2.448701,0.101052,     3.259252,2.462994,0.108108,     3.318946,2.465243,0.082368,
+       3.318946,2.465243,0.082368,     3.276998,2.450515,0.076992,     3.222074,2.448701,0.101052,
+       3.155379,2.446498,0.115488,     3.186768,2.460263,0.123552,     3.259252,2.462994,0.108108,
+       3.259252,2.462994,0.108108,     3.222074,2.448701,0.101052,     3.155379,2.446498,0.115488,
+       3.0828,2.4441,0.1203,   3.107887,2.457291,0.1287,       3.186768,2.460263,0.123552,
+       3.186768,2.460263,0.123552,     3.155379,2.446498,0.115488,     3.0828,2.4441,0.1203,
+       3.010221,2.441702,0.115488,     3.029007,2.454319,0.123552,     3.107887,2.457291,0.1287,
+       3.107887,2.457291,0.1287,       3.0828,2.4441,0.1203,   3.010221,2.441702,0.115488,
+       2.943526,2.439499,0.101052,     2.956523,2.451588,0.108108,     3.029007,2.454319,0.123552,
+       3.029007,2.454319,0.123552,     3.010221,2.441702,0.115488,     2.943526,2.439499,0.101052,
+       2.888602,2.437685,0.076992,     2.896829,2.449338,0.082368,     2.956523,2.451588,0.108108,
+       2.956523,2.451588,0.108108,     2.943526,2.439499,0.101052,     2.888602,2.437685,0.076992,
+       2.851331,2.436454,0.043308,     2.856323,2.447812,0.046332,     2.896829,2.449338,0.082368,
+       2.896829,2.449338,0.082368,     2.888602,2.437685,0.076992,     2.851331,2.436454,0.043308,
+       2.8376,2.436,0, 2.8414,2.44725,0,       2.856323,2.447812,0.046332,
+       2.856323,2.447812,0.046332,     2.851331,2.436454,0.043308,     2.8376,2.436,0,
+       3.257153,2.429599,0.041256,     3.314269,2.451746,0.043308,     3.328,2.4522,0,
+       3.328,2.4522,0, 3.269625,2.429869,0,    3.257153,2.429599,0.041256,
+       3.223301,2.428868,0.073344,     3.276998,2.450515,0.076992,     3.314269,2.451746,0.043308,
+       3.314269,2.451746,0.043308,     3.257153,2.429599,0.041256,     3.223301,2.428868,0.073344,
+       3.173413,2.427791,0.096264,     3.222074,2.448701,0.101052,     3.276998,2.450515,0.076992,
+       3.276998,2.450515,0.076992,     3.223301,2.428868,0.073344,     3.173413,2.427791,0.096264,
+       3.112835,2.426483,0.110016,     3.155379,2.446498,0.115488,     3.222074,2.448701,0.101052,
+       3.222074,2.448701,0.101052,     3.173413,2.427791,0.096264,     3.112835,2.426483,0.110016,
+       3.046912,2.425059,0.1146,       3.0828,2.4441,0.1203,   3.155379,2.446498,0.115488,
+       3.155379,2.446498,0.115488,     3.112835,2.426483,0.110016,     3.046912,2.425059,0.1146,
+       2.98099,2.423636,0.110016,      3.010221,2.441702,0.115488,     3.0828,2.4441,0.1203,
+       3.0828,2.4441,0.1203,   3.046912,2.425059,0.1146,       2.98099,2.423636,0.110016,
+       2.920412,2.422328,0.096264,     2.943526,2.439499,0.101052,     3.010221,2.441702,0.115488,
+       3.010221,2.441702,0.115488,     2.98099,2.423636,0.110016,      2.920412,2.422328,0.096264,
+       2.870524,2.42125,0.073344,      2.888602,2.437685,0.076992,     2.943526,2.439499,0.101052,
+       2.943526,2.439499,0.101052,     2.920412,2.422328,0.096264,     2.870524,2.42125,0.073344,
+       2.836672,2.420519,0.041256,     2.851331,2.436454,0.043308,     2.888602,2.437685,0.076992,
+       2.888602,2.437685,0.076992,     2.870524,2.42125,0.073344,      2.836672,2.420519,0.041256,
+       2.8242,2.42025,0,       2.8376,2.436,0, 2.851331,2.436454,0.043308,
+       2.851331,2.436454,0.043308,     2.836672,2.420519,0.041256,     2.8242,2.42025,0,
+       3.1888,2.4,0.0405,      3.257153,2.429599,0.041256,     3.269625,2.429869,0,
+       3.269625,2.429869,0,    3.2,2.4,0,      3.1888,2.4,0.0405,
+       3.1584,2.4,0.072,       3.223301,2.428868,0.073344,     3.257153,2.429599,0.041256,
+       3.257153,2.429599,0.041256,     3.1888,2.4,0.0405,      3.1584,2.4,0.072,
+       3.1136,2.4,0.0945,      3.173413,2.427791,0.096264,     3.223301,2.428868,0.073344,
+       3.223301,2.428868,0.073344,     3.1584,2.4,0.072,       3.1136,2.4,0.0945,
+       3.0592,2.4,0.108,       3.112835,2.426483,0.110016,     3.173413,2.427791,0.096264,
+       3.173413,2.427791,0.096264,     3.1136,2.4,0.0945,      3.0592,2.4,0.108,
+       3,2.4,0.1125,   3.046912,2.425059,0.1146,       3.112835,2.426483,0.110016,
+       3.112835,2.426483,0.110016,     3.0592,2.4,0.108,       3,2.4,0.1125,
+       2.9408,2.4,0.108,       2.98099,2.423636,0.110016,      3.046912,2.425059,0.1146,
+       3.046912,2.425059,0.1146,       3,2.4,0.1125,   2.9408,2.4,0.108,
+       2.8864,2.4,0.0945,      2.920412,2.422328,0.096264,     2.98099,2.423636,0.110016,
+       2.98099,2.423636,0.110016,      2.9408,2.4,0.108,       2.8864,2.4,0.0945,
+       2.8416,2.4,0.072,       2.870524,2.42125,0.073344,      2.920412,2.422328,0.096264,
+       2.920412,2.422328,0.096264,     2.8864,2.4,0.0945,      2.8416,2.4,0.072,
+       2.8112,2.4,0.0405,      2.836672,2.420519,0.041256,     2.870524,2.42125,0.073344,
+       2.870524,2.42125,0.073344,      2.8416,2.4,0.072,       2.8112,2.4,0.0405,
+       2.8,2.4,0,      2.8242,2.42025,0,       2.836672,2.420519,0.041256,
+       2.836672,2.420519,0.041256,     2.8112,2.4,0.0405,      2.8,2.4,0,
+       0,3.15,0,       0.1946,3.14145,0,       0.192107,3.14145,-0.032048,
+       0,3.15,0,       0.192107,3.14145,-0.032048,     0.18487,3.14145,-0.062272,
+       0,3.15,0,       0.18487,3.14145,-0.062272,      0.173255,3.14145,-0.090306,
+       0,3.15,0,       0.173255,3.14145,-0.090306,     0.157626,3.14145,-0.115787,
+       0,3.15,0,       0.157626,3.14145,-0.115787,     0.138348,3.14145,-0.138348,
+       0,3.15,0,       0.138348,3.14145,-0.138348,     0.115787,3.14145,-0.157626,
+       0,3.15,0,       0.115787,3.14145,-0.157626,     0.090306,3.14145,-0.173255,
+       0,3.15,0,       0.090306,3.14145,-0.173255,     0.062272,3.14145,-0.18487,
+       0,3.15,0,       0.062272,3.14145,-0.18487,      0.032048,3.14145,-0.192107,
+       0,3.15,0,       0.032048,3.14145,-0.192107,     0,3.14145,-0.1946,
+       0.304843,3.1176,-0.050855,      0.192107,3.14145,-0.032048,     0.1946,3.14145,0,
+       0.1946,3.14145,0,       0.3088,3.1176,0,        0.304843,3.1176,-0.050855,
+       0.29336,3.1176,-0.098814,       0.18487,3.14145,-0.062272,      0.192107,3.14145,-0.032048,
+       0.192107,3.14145,-0.032048,     0.304843,3.1176,-0.050855,      0.29336,3.1176,-0.098814,
+       0.274928,3.1176,-0.143301,      0.173255,3.14145,-0.090306,     0.18487,3.14145,-0.062272,
+       0.18487,3.14145,-0.062272,      0.29336,3.1176,-0.098814,       0.274928,3.1176,-0.143301,
+       0.250127,3.1176,-0.183734,      0.157626,3.14145,-0.115787,     0.173255,3.14145,-0.090306,
+       0.173255,3.14145,-0.090306,     0.274928,3.1176,-0.143301,      0.250127,3.1176,-0.183734,
+       0.219536,3.1176,-0.219536,      0.138348,3.14145,-0.138348,     0.157626,3.14145,-0.115787,
+       0.157626,3.14145,-0.115787,     0.250127,3.1176,-0.183734,      0.219536,3.1176,-0.219536,
+       0.183734,3.1176,-0.250127,      0.115787,3.14145,-0.157626,     0.138348,3.14145,-0.138348,
+       0.138348,3.14145,-0.138348,     0.219536,3.1176,-0.219536,      0.183734,3.1176,-0.250127,
+       0.143301,3.1176,-0.274928,      0.090306,3.14145,-0.173255,     0.115787,3.14145,-0.157626,
+       0.115787,3.14145,-0.157626,     0.183734,3.1176,-0.250127,      0.143301,3.1176,-0.274928,
+       0.098814,3.1176,-0.29336,       0.062272,3.14145,-0.18487,      0.090306,3.14145,-0.173255,
+       0.090306,3.14145,-0.173255,     0.143301,3.1176,-0.274928,      0.098814,3.1176,-0.29336,
+       0.050855,3.1176,-0.304843,      0.032048,3.14145,-0.192107,     0.062272,3.14145,-0.18487,
+       0.062272,3.14145,-0.18487,      0.098814,3.1176,-0.29336,       0.050855,3.1176,-0.304843,
+       0,3.1176,-0.3088,       0,3.14145,-0.1946,      0.032048,3.14145,-0.192107,
+       0.032048,3.14145,-0.192107,     0.050855,3.1176,-0.304843,      0,3.1176,-0.3088,
+       0.35361,3.08115,-0.058988,      0.304843,3.1176,-0.050855,      0.3088,3.1176,0,
+       0.3088,3.1176,0,        0.3582,3.08115,0,       0.35361,3.08115,-0.058988,
+       0.340289,3.08115,-0.114619,     0.29336,3.1176,-0.098814,       0.304843,3.1176,-0.050855,
+       0.304843,3.1176,-0.050855,      0.35361,3.08115,-0.058988,      0.340289,3.08115,-0.114619,
+       0.318907,3.08115,-0.166221,     0.274928,3.1176,-0.143301,      0.29336,3.1176,-0.098814,
+       0.29336,3.1176,-0.098814,       0.340289,3.08115,-0.114619,     0.318907,3.08115,-0.166221,
+       0.290138,3.08115,-0.213123,     0.250127,3.1176,-0.183734,      0.274928,3.1176,-0.143301,
+       0.274928,3.1176,-0.143301,      0.318907,3.08115,-0.166221,     0.290138,3.08115,-0.213123,
+       0.254653,3.08115,-0.254653,     0.219536,3.1176,-0.219536,      0.250127,3.1176,-0.183734,
+       0.250127,3.1176,-0.183734,      0.290138,3.08115,-0.213123,     0.254653,3.08115,-0.254653,
+       0.213123,3.08115,-0.290138,     0.183734,3.1176,-0.250127,      0.219536,3.1176,-0.219536,
+       0.219536,3.1176,-0.219536,      0.254653,3.08115,-0.254653,     0.213123,3.08115,-0.290138,
+       0.166221,3.08115,-0.318907,     0.143301,3.1176,-0.274928,      0.183734,3.1176,-0.250127,
+       0.183734,3.1176,-0.250127,      0.213123,3.08115,-0.290138,     0.166221,3.08115,-0.318907,
+       0.114619,3.08115,-0.340289,     0.098814,3.1176,-0.29336,       0.143301,3.1176,-0.274928,
+       0.143301,3.1176,-0.274928,      0.166221,3.08115,-0.318907,     0.114619,3.08115,-0.340289,
+       0.058988,3.08115,-0.35361,      0.050855,3.1176,-0.304843,      0.098814,3.1176,-0.29336,
+       0.098814,3.1176,-0.29336,       0.114619,3.08115,-0.340289,     0.058988,3.08115,-0.35361,
+       0,3.08115,-0.3582,      0,3.1176,-0.3088,       0.050855,3.1176,-0.304843,
+       0.050855,3.1176,-0.304843,      0.058988,3.08115,-0.35361,      0,3.08115,-0.3582,
+       0.353807,3.0348,-0.059016,      0.35361,3.08115,-0.058988,      0.3582,3.08115,0,
+       0.3582,3.08115,0,       0.3584,3.0348,0,        0.353807,3.0348,-0.059016,
+       0.340477,3.0348,-0.114676,      0.340289,3.08115,-0.114619,     0.35361,3.08115,-0.058988,
+       0.35361,3.08115,-0.058988,      0.353807,3.0348,-0.059016,      0.340477,3.0348,-0.114676,
+       0.319082,3.0348,-0.166306,      0.318907,3.08115,-0.166221,     0.340289,3.08115,-0.114619,
+       0.340289,3.08115,-0.114619,     0.340477,3.0348,-0.114676,      0.319082,3.0348,-0.166306,
+       0.290295,3.0348,-0.213234,      0.290138,3.08115,-0.213123,     0.318907,3.08115,-0.166221,
+       0.318907,3.08115,-0.166221,     0.319082,3.0348,-0.166306,      0.290295,3.0348,-0.213234,
+       0.254788,3.0348,-0.254788,      0.254653,3.08115,-0.254653,     0.290138,3.08115,-0.213123,
+       0.290138,3.08115,-0.213123,     0.290295,3.0348,-0.213234,      0.254788,3.0348,-0.254788,
+       0.213234,3.0348,-0.290295,      0.213123,3.08115,-0.290138,     0.254653,3.08115,-0.254653,
+       0.254653,3.08115,-0.254653,     0.254788,3.0348,-0.254788,      0.213234,3.0348,-0.290295,
+       0.166306,3.0348,-0.319082,      0.166221,3.08115,-0.318907,     0.213123,3.08115,-0.290138,
+       0.213123,3.08115,-0.290138,     0.213234,3.0348,-0.290295,      0.166306,3.0348,-0.319082,
+       0.114676,3.0348,-0.340477,      0.114619,3.08115,-0.340289,     0.166221,3.08115,-0.318907,
+       0.166221,3.08115,-0.318907,     0.166306,3.0348,-0.319082,      0.114676,3.0348,-0.340477,
+       0.059016,3.0348,-0.353807,      0.058988,3.08115,-0.35361,      0.114619,3.08115,-0.340289,
+       0.114619,3.08115,-0.340289,     0.114676,3.0348,-0.340477,      0.059016,3.0348,-0.353807,
+       0,3.0348,-0.3584,       0,3.08115,-0.3582,      0.058988,3.08115,-0.35361,
+       0.058988,3.08115,-0.35361,      0.059016,3.0348,-0.353807,      0,3.0348,-0.3584,
+       0.320834,2.98125,-0.053508,     0.353807,3.0348,-0.059016,      0.3584,3.0348,0,
+       0.3584,3.0348,0,        0.325,2.98125,0,        0.320834,2.98125,-0.053508,
+       0.308744,2.98125,-0.103976,     0.340477,3.0348,-0.114676,      0.353807,3.0348,-0.059016,
+       0.353807,3.0348,-0.059016,      0.320834,2.98125,-0.053508,     0.308744,2.98125,-0.103976,
+       0.28934,2.98125,-0.150793,      0.319082,3.0348,-0.166306,      0.340477,3.0348,-0.114676,
+       0.340477,3.0348,-0.114676,      0.308744,2.98125,-0.103976,     0.28934,2.98125,-0.150793,
+       0.263232,2.98125,-0.193348,     0.290295,3.0348,-0.213234,      0.319082,3.0348,-0.166306,
+       0.319082,3.0348,-0.166306,      0.28934,2.98125,-0.150793,      0.263232,2.98125,-0.193348,
+       0.231031,2.98125,-0.231031,     0.254788,3.0348,-0.254788,      0.290295,3.0348,-0.213234,
+       0.290295,3.0348,-0.213234,      0.263232,2.98125,-0.193348,     0.231031,2.98125,-0.231031,
+       0.193348,2.98125,-0.263232,     0.213234,3.0348,-0.290295,      0.254788,3.0348,-0.254788,
+       0.254788,3.0348,-0.254788,      0.231031,2.98125,-0.231031,     0.193348,2.98125,-0.263232,
+       0.150793,2.98125,-0.28934,      0.166306,3.0348,-0.319082,      0.213234,3.0348,-0.290295,
+       0.213234,3.0348,-0.290295,      0.193348,2.98125,-0.263232,     0.150793,2.98125,-0.28934,
+       0.103976,2.98125,-0.308744,     0.114676,3.0348,-0.340477,      0.166306,3.0348,-0.319082,
+       0.166306,3.0348,-0.319082,      0.150793,2.98125,-0.28934,      0.103976,2.98125,-0.308744,
+       0.053508,2.98125,-0.320834,     0.059016,3.0348,-0.353807,      0.114676,3.0348,-0.340477,
+       0.114676,3.0348,-0.340477,      0.103976,2.98125,-0.308744,     0.053508,2.98125,-0.320834,
+       0,2.98125,-0.325,       0,3.0348,-0.3584,       0.059016,3.0348,-0.353807,
+       0.059016,3.0348,-0.353807,      0.053508,2.98125,-0.320834,     0,2.98125,-0.325,
+       0.270092,2.9232,-0.045032,      0.320834,2.98125,-0.053508,     0.325,2.98125,0,
+       0.325,2.98125,0,        0.2736,2.9232,0,        0.270092,2.9232,-0.045032,
+       0.25991,2.9232,-0.087511,       0.308744,2.98125,-0.103976,     0.320834,2.98125,-0.053508,
+       0.320834,2.98125,-0.053508,     0.270092,2.9232,-0.045032,      0.25991,2.9232,-0.087511,
+       0.243569,2.9232,-0.12692,       0.28934,2.98125,-0.150793,      0.308744,2.98125,-0.103976,
+       0.308744,2.98125,-0.103976,     0.25991,2.9232,-0.087511,       0.243569,2.9232,-0.12692,
+       0.221585,2.9232,-0.162745,      0.263232,2.98125,-0.193348,     0.28934,2.98125,-0.150793,
+       0.28934,2.98125,-0.150793,      0.243569,2.9232,-0.12692,       0.221585,2.9232,-0.162745,
+       0.194472,2.9232,-0.194472,      0.231031,2.98125,-0.231031,     0.263232,2.98125,-0.193348,
+       0.263232,2.98125,-0.193348,     0.221585,2.9232,-0.162745,      0.194472,2.9232,-0.194472,
+       0.162745,2.9232,-0.221585,      0.193348,2.98125,-0.263232,     0.231031,2.98125,-0.231031,
+       0.231031,2.98125,-0.231031,     0.194472,2.9232,-0.194472,      0.162745,2.9232,-0.221585,
+       0.12692,2.9232,-0.243569,       0.150793,2.98125,-0.28934,      0.193348,2.98125,-0.263232,
+       0.193348,2.98125,-0.263232,     0.162745,2.9232,-0.221585,      0.12692,2.9232,-0.243569,
+       0.087511,2.9232,-0.25991,       0.103976,2.98125,-0.308744,     0.150793,2.98125,-0.28934,
+       0.150793,2.98125,-0.28934,      0.12692,2.9232,-0.243569,       0.087511,2.9232,-0.25991,
+       0.045032,2.9232,-0.270092,      0.053508,2.98125,-0.320834,     0.103976,2.98125,-0.308744,
+       0.103976,2.98125,-0.308744,     0.087511,2.9232,-0.25991,       0.045032,2.9232,-0.270092,
+       0,2.9232,-0.2736,       0,2.98125,-0.325,       0.053508,2.98125,-0.320834,
+       0.053508,2.98125,-0.320834,     0.045032,2.9232,-0.270092,      0,2.9232,-0.2736,
+       0.216979,2.86335,-0.036157,     0.270092,2.9232,-0.045032,      0.2736,2.9232,0,
+       0.2736,2.9232,0,        0.2198,2.86335,0,       0.216979,2.86335,-0.036157,
+       0.208794,2.86335,-0.07027,      0.25991,2.9232,-0.087511,       0.270092,2.9232,-0.045032,
+       0.270092,2.9232,-0.045032,      0.216979,2.86335,-0.036157,     0.208794,2.86335,-0.07027,
+       0.195658,2.86335,-0.101925,     0.243569,2.9232,-0.12692,       0.25991,2.9232,-0.087511,
+       0.25991,2.9232,-0.087511,       0.208794,2.86335,-0.07027,      0.195658,2.86335,-0.101925,
+       0.177989,2.86335,-0.130707,     0.221585,2.9232,-0.162745,      0.243569,2.9232,-0.12692,
+       0.243569,2.9232,-0.12692,       0.195658,2.86335,-0.101925,     0.177989,2.86335,-0.130707,
+       0.1562,2.86335,-0.1562, 0.194472,2.9232,-0.194472,      0.221585,2.9232,-0.162745,
+       0.221585,2.9232,-0.162745,      0.177989,2.86335,-0.130707,     0.1562,2.86335,-0.1562,
+       0.130707,2.86335,-0.177989,     0.162745,2.9232,-0.221585,      0.194472,2.9232,-0.194472,
+       0.194472,2.9232,-0.194472,      0.1562,2.86335,-0.1562, 0.130707,2.86335,-0.177989,
+       0.101925,2.86335,-0.195658,     0.12692,2.9232,-0.243569,       0.162745,2.9232,-0.221585,
+       0.162745,2.9232,-0.221585,      0.130707,2.86335,-0.177989,     0.101925,2.86335,-0.195658,
+       0.07027,2.86335,-0.208794,      0.087511,2.9232,-0.25991,       0.12692,2.9232,-0.243569,
+       0.12692,2.9232,-0.243569,       0.101925,2.86335,-0.195658,     0.07027,2.86335,-0.208794,
+       0.036157,2.86335,-0.216979,     0.045032,2.9232,-0.270092,      0.087511,2.9232,-0.25991,
+       0.087511,2.9232,-0.25991,       0.07027,2.86335,-0.208794,      0.036157,2.86335,-0.216979,
+       0,2.86335,-0.2198,      0,2.9232,-0.2736,       0.045032,2.9232,-0.270092,
+       0.045032,2.9232,-0.270092,      0.036157,2.86335,-0.216979,     0,2.86335,-0.2198,
+       0.176897,2.8044,-0.02945,       0.216979,2.86335,-0.036157,     0.2198,2.86335,0,
+       0.2198,2.86335,0,       0.1792,2.8044,0,        0.176897,2.8044,-0.02945,
+       0.170215,2.8044,-0.057246,      0.208794,2.86335,-0.07027,      0.216979,2.86335,-0.036157,
+       0.216979,2.86335,-0.036157,     0.176897,2.8044,-0.02945,       0.170215,2.8044,-0.057246,
+       0.159496,2.8044,-0.083047,      0.195658,2.86335,-0.101925,     0.208794,2.86335,-0.07027,
+       0.208794,2.86335,-0.07027,      0.170215,2.8044,-0.057246,      0.159496,2.8044,-0.083047,
+       0.145078,2.8044,-0.106513,      0.177989,2.86335,-0.130707,     0.195658,2.86335,-0.101925,
+       0.195658,2.86335,-0.101925,     0.159496,2.8044,-0.083047,      0.145078,2.8044,-0.106513,
+       0.127304,2.8044,-0.127304,      0.1562,2.86335,-0.1562, 0.177989,2.86335,-0.130707,
+       0.177989,2.86335,-0.130707,     0.145078,2.8044,-0.106513,      0.127304,2.8044,-0.127304,
+       0.106513,2.8044,-0.145078,      0.130707,2.86335,-0.177989,     0.1562,2.86335,-0.1562,
+       0.1562,2.86335,-0.1562, 0.127304,2.8044,-0.127304,      0.106513,2.8044,-0.145078,
+       0.083047,2.8044,-0.159496,      0.101925,2.86335,-0.195658,     0.130707,2.86335,-0.177989,
+       0.130707,2.86335,-0.177989,     0.106513,2.8044,-0.145078,      0.083047,2.8044,-0.159496,
+       0.057246,2.8044,-0.170215,      0.07027,2.86335,-0.208794,      0.101925,2.86335,-0.195658,
+       0.101925,2.86335,-0.195658,     0.083047,2.8044,-0.159496,      0.057246,2.8044,-0.170215,
+       0.02945,2.8044,-0.176897,       0.036157,2.86335,-0.216979,     0.07027,2.86335,-0.208794,
+       0.07027,2.86335,-0.208794,      0.057246,2.8044,-0.170215,      0.02945,2.8044,-0.176897,
+       0,2.8044,-0.1792,       0,2.86335,-0.2198,      0.036157,2.86335,-0.216979,
+       0.036157,2.86335,-0.216979,     0.02945,2.8044,-0.176897,       0,2.8044,-0.1792,
+       0.165245,2.74905,-0.02748,      0.176897,2.8044,-0.02945,       0.1792,2.8044,0,
+       0.1792,2.8044,0,        0.1674,2.74905,0,       0.165245,2.74905,-0.02748,
+       0.158995,2.74905,-0.053428,     0.170215,2.8044,-0.057246,      0.176897,2.8044,-0.02945,
+       0.176897,2.8044,-0.02945,       0.165245,2.74905,-0.02748,      0.158995,2.74905,-0.053428,
+       0.148969,2.74905,-0.077523,     0.159496,2.8044,-0.083047,      0.170215,2.8044,-0.057246,
+       0.170215,2.8044,-0.057246,      0.158995,2.74905,-0.053428,     0.148969,2.74905,-0.077523,
+       0.135489,2.74905,-0.099446,     0.145078,2.8044,-0.106513,      0.159496,2.8044,-0.083047,
+       0.159496,2.8044,-0.083047,      0.148969,2.74905,-0.077523,     0.135489,2.74905,-0.099446,
+       0.118874,2.74905,-0.118874,     0.127304,2.8044,-0.127304,      0.145078,2.8044,-0.106513,
+       0.145078,2.8044,-0.106513,      0.135489,2.74905,-0.099446,     0.118874,2.74905,-0.118874,
+       0.099446,2.74905,-0.135489,     0.106513,2.8044,-0.145078,      0.127304,2.8044,-0.127304,
+       0.127304,2.8044,-0.127304,      0.118874,2.74905,-0.118874,     0.099446,2.74905,-0.135489,
+       0.077523,2.74905,-0.148969,     0.083047,2.8044,-0.159496,      0.106513,2.8044,-0.145078,
+       0.106513,2.8044,-0.145078,      0.099446,2.74905,-0.135489,     0.077523,2.74905,-0.148969,
+       0.053428,2.74905,-0.158995,     0.057246,2.8044,-0.170215,      0.083047,2.8044,-0.159496,
+       0.083047,2.8044,-0.159496,      0.077523,2.74905,-0.148969,     0.053428,2.74905,-0.158995,
+       0.02748,2.74905,-0.165245,      0.02945,2.8044,-0.176897,       0.057246,2.8044,-0.170215,
+       0.057246,2.8044,-0.170215,      0.053428,2.74905,-0.158995,     0.02748,2.74905,-0.165245,
+       0,2.74905,-0.1674,      0,2.8044,-0.1792,       0.02945,2.8044,-0.176897,
+       0.02945,2.8044,-0.176897,       0.02748,2.74905,-0.165245,      0,2.74905,-0.1674,
+       0.197424,2.7,-0.032816, 0.165245,2.74905,-0.02748,      0.1674,2.74905,0,
+       0.1674,2.74905,0,       0.2,2.7,0,      0.197424,2.7,-0.032816,
+       0.189952,2.7,-0.063808, 0.158995,2.74905,-0.053428,     0.165245,2.74905,-0.02748,
+       0.165245,2.74905,-0.02748,      0.197424,2.7,-0.032816, 0.189952,2.7,-0.063808,
+       0.177968,2.7,-0.092592, 0.148969,2.74905,-0.077523,     0.158995,2.74905,-0.053428,
+       0.158995,2.74905,-0.053428,     0.189952,2.7,-0.063808, 0.177968,2.7,-0.092592,
+       0.161856,2.7,-0.118784, 0.135489,2.74905,-0.099446,     0.148969,2.74905,-0.077523,
+       0.148969,2.74905,-0.077523,     0.177968,2.7,-0.092592, 0.161856,2.7,-0.118784,
+       0.142,2.7,-0.142,       0.118874,2.74905,-0.118874,     0.135489,2.74905,-0.099446,
+       0.135489,2.74905,-0.099446,     0.161856,2.7,-0.118784, 0.142,2.7,-0.142,
+       0.118784,2.7,-0.161856, 0.099446,2.74905,-0.135489,     0.118874,2.74905,-0.118874,
+       0.118874,2.74905,-0.118874,     0.142,2.7,-0.142,       0.118784,2.7,-0.161856,
+       0.092592,2.7,-0.177968, 0.077523,2.74905,-0.148969,     0.099446,2.74905,-0.135489,
+       0.099446,2.74905,-0.135489,     0.118784,2.7,-0.161856, 0.092592,2.7,-0.177968,
+       0.063808,2.7,-0.189952, 0.053428,2.74905,-0.158995,     0.077523,2.74905,-0.148969,
+       0.077523,2.74905,-0.148969,     0.092592,2.7,-0.177968, 0.063808,2.7,-0.189952,
+       0.032816,2.7,-0.197424, 0.02748,2.74905,-0.165245,      0.053428,2.74905,-0.158995,
+       0.053428,2.74905,-0.158995,     0.063808,2.7,-0.189952, 0.032816,2.7,-0.197424,
+       0,2.7,-0.2,     0,2.74905,-0.1674,      0.02748,2.74905,-0.165245,
+       0.02748,2.74905,-0.165245,      0.032816,2.7,-0.197424, 0,2.7,-0.2,
+       0,3.15,0,       0,3.14145,-0.1946,      -0.032048,3.14145,-0.192107,
+       0,3.15,0,       -0.032048,3.14145,-0.192107,    -0.062272,3.14145,-0.18487,
+       0,3.15,0,       -0.062272,3.14145,-0.18487,     -0.090306,3.14145,-0.173255,
+       0,3.15,0,       -0.090306,3.14145,-0.173255,    -0.115787,3.14145,-0.157626,
+       0,3.15,0,       -0.115787,3.14145,-0.157626,    -0.138348,3.14145,-0.138348,
+       0,3.15,0,       -0.138348,3.14145,-0.138348,    -0.157626,3.14145,-0.115787,
+       0,3.15,0,       -0.157626,3.14145,-0.115787,    -0.173255,3.14145,-0.090306,
+       0,3.15,0,       -0.173255,3.14145,-0.090306,    -0.18487,3.14145,-0.062272,
+       0,3.15,0,       -0.18487,3.14145,-0.062272,     -0.192107,3.14145,-0.032048,
+       0,3.15,0,       -0.192107,3.14145,-0.032048,    -0.1946,3.14145,0,
+       -0.050855,3.1176,-0.304843,     -0.032048,3.14145,-0.192107,    0,3.14145,-0.1946,
+       0,3.14145,-0.1946,      0,3.1176,-0.3088,       -0.050855,3.1176,-0.304843,
+       -0.098814,3.1176,-0.29336,      -0.062272,3.14145,-0.18487,     -0.032048,3.14145,-0.192107,
+       -0.032048,3.14145,-0.192107,    -0.050855,3.1176,-0.304843,     -0.098814,3.1176,-0.29336,
+       -0.143301,3.1176,-0.274928,     -0.090306,3.14145,-0.173255,    -0.062272,3.14145,-0.18487,
+       -0.062272,3.14145,-0.18487,     -0.098814,3.1176,-0.29336,      -0.143301,3.1176,-0.274928,
+       -0.183734,3.1176,-0.250127,     -0.115787,3.14145,-0.157626,    -0.090306,3.14145,-0.173255,
+       -0.090306,3.14145,-0.173255,    -0.143301,3.1176,-0.274928,     -0.183734,3.1176,-0.250127,
+       -0.219536,3.1176,-0.219536,     -0.138348,3.14145,-0.138348,    -0.115787,3.14145,-0.157626,
+       -0.115787,3.14145,-0.157626,    -0.183734,3.1176,-0.250127,     -0.219536,3.1176,-0.219536,
+       -0.250127,3.1176,-0.183734,     -0.157626,3.14145,-0.115787,    -0.138348,3.14145,-0.138348,
+       -0.138348,3.14145,-0.138348,    -0.219536,3.1176,-0.219536,     -0.250127,3.1176,-0.183734,
+       -0.274928,3.1176,-0.143301,     -0.173255,3.14145,-0.090306,    -0.157626,3.14145,-0.115787,
+       -0.157626,3.14145,-0.115787,    -0.250127,3.1176,-0.183734,     -0.274928,3.1176,-0.143301,
+       -0.29336,3.1176,-0.098814,      -0.18487,3.14145,-0.062272,     -0.173255,3.14145,-0.090306,
+       -0.173255,3.14145,-0.090306,    -0.274928,3.1176,-0.143301,     -0.29336,3.1176,-0.098814,
+       -0.304843,3.1176,-0.050855,     -0.192107,3.14145,-0.032048,    -0.18487,3.14145,-0.062272,
+       -0.18487,3.14145,-0.062272,     -0.29336,3.1176,-0.098814,      -0.304843,3.1176,-0.050855,
+       -0.3088,3.1176,0,       -0.1946,3.14145,0,      -0.192107,3.14145,-0.032048,
+       -0.192107,3.14145,-0.032048,    -0.304843,3.1176,-0.050855,     -0.3088,3.1176,0,
+       -0.058988,3.08115,-0.35361,     -0.050855,3.1176,-0.304843,     0,3.1176,-0.3088,
+       0,3.1176,-0.3088,       0,3.08115,-0.3582,      -0.058988,3.08115,-0.35361,
+       -0.114619,3.08115,-0.340289,    -0.098814,3.1176,-0.29336,      -0.050855,3.1176,-0.304843,
+       -0.050855,3.1176,-0.304843,     -0.058988,3.08115,-0.35361,     -0.114619,3.08115,-0.340289,
+       -0.166221,3.08115,-0.318907,    -0.143301,3.1176,-0.274928,     -0.098814,3.1176,-0.29336,
+       -0.098814,3.1176,-0.29336,      -0.114619,3.08115,-0.340289,    -0.166221,3.08115,-0.318907,
+       -0.213123,3.08115,-0.290138,    -0.183734,3.1176,-0.250127,     -0.143301,3.1176,-0.274928,
+       -0.143301,3.1176,-0.274928,     -0.166221,3.08115,-0.318907,    -0.213123,3.08115,-0.290138,
+       -0.254653,3.08115,-0.254653,    -0.219536,3.1176,-0.219536,     -0.183734,3.1176,-0.250127,
+       -0.183734,3.1176,-0.250127,     -0.213123,3.08115,-0.290138,    -0.254653,3.08115,-0.254653,
+       -0.290138,3.08115,-0.213123,    -0.250127,3.1176,-0.183734,     -0.219536,3.1176,-0.219536,
+       -0.219536,3.1176,-0.219536,     -0.254653,3.08115,-0.254653,    -0.290138,3.08115,-0.213123,
+       -0.318907,3.08115,-0.166221,    -0.274928,3.1176,-0.143301,     -0.250127,3.1176,-0.183734,
+       -0.250127,3.1176,-0.183734,     -0.290138,3.08115,-0.213123,    -0.318907,3.08115,-0.166221,
+       -0.340289,3.08115,-0.114619,    -0.29336,3.1176,-0.098814,      -0.274928,3.1176,-0.143301,
+       -0.274928,3.1176,-0.143301,     -0.318907,3.08115,-0.166221,    -0.340289,3.08115,-0.114619,
+       -0.35361,3.08115,-0.058988,     -0.304843,3.1176,-0.050855,     -0.29336,3.1176,-0.098814,
+       -0.29336,3.1176,-0.098814,      -0.340289,3.08115,-0.114619,    -0.35361,3.08115,-0.058988,
+       -0.3582,3.08115,0,      -0.3088,3.1176,0,       -0.304843,3.1176,-0.050855,
+       -0.304843,3.1176,-0.050855,     -0.35361,3.08115,-0.058988,     -0.3582,3.08115,0,
+       -0.059016,3.0348,-0.353807,     -0.058988,3.08115,-0.35361,     0,3.08115,-0.3582,
+       0,3.08115,-0.3582,      0,3.0348,-0.3584,       -0.059016,3.0348,-0.353807,
+       -0.114676,3.0348,-0.340477,     -0.114619,3.08115,-0.340289,    -0.058988,3.08115,-0.35361,
+       -0.058988,3.08115,-0.35361,     -0.059016,3.0348,-0.353807,     -0.114676,3.0348,-0.340477,
+       -0.166306,3.0348,-0.319082,     -0.166221,3.08115,-0.318907,    -0.114619,3.08115,-0.340289,
+       -0.114619,3.08115,-0.340289,    -0.114676,3.0348,-0.340477,     -0.166306,3.0348,-0.319082,
+       -0.213234,3.0348,-0.290295,     -0.213123,3.08115,-0.290138,    -0.166221,3.08115,-0.318907,
+       -0.166221,3.08115,-0.318907,    -0.166306,3.0348,-0.319082,     -0.213234,3.0348,-0.290295,
+       -0.254788,3.0348,-0.254788,     -0.254653,3.08115,-0.254653,    -0.213123,3.08115,-0.290138,
+       -0.213123,3.08115,-0.290138,    -0.213234,3.0348,-0.290295,     -0.254788,3.0348,-0.254788,
+       -0.290295,3.0348,-0.213234,     -0.290138,3.08115,-0.213123,    -0.254653,3.08115,-0.254653,
+       -0.254653,3.08115,-0.254653,    -0.254788,3.0348,-0.254788,     -0.290295,3.0348,-0.213234,
+       -0.319082,3.0348,-0.166306,     -0.318907,3.08115,-0.166221,    -0.290138,3.08115,-0.213123,
+       -0.290138,3.08115,-0.213123,    -0.290295,3.0348,-0.213234,     -0.319082,3.0348,-0.166306,
+       -0.340477,3.0348,-0.114676,     -0.340289,3.08115,-0.114619,    -0.318907,3.08115,-0.166221,
+       -0.318907,3.08115,-0.166221,    -0.319082,3.0348,-0.166306,     -0.340477,3.0348,-0.114676,
+       -0.353807,3.0348,-0.059016,     -0.35361,3.08115,-0.058988,     -0.340289,3.08115,-0.114619,
+       -0.340289,3.08115,-0.114619,    -0.340477,3.0348,-0.114676,     -0.353807,3.0348,-0.059016,
+       -0.3584,3.0348,0,       -0.3582,3.08115,0,      -0.35361,3.08115,-0.058988,
+       -0.35361,3.08115,-0.058988,     -0.353807,3.0348,-0.059016,     -0.3584,3.0348,0,
+       -0.053508,2.98125,-0.320834,    -0.059016,3.0348,-0.353807,     0,3.0348,-0.3584,
+       0,3.0348,-0.3584,       0,2.98125,-0.325,       -0.053508,2.98125,-0.320834,
+       -0.103976,2.98125,-0.308744,    -0.114676,3.0348,-0.340477,     -0.059016,3.0348,-0.353807,
+       -0.059016,3.0348,-0.353807,     -0.053508,2.98125,-0.320834,    -0.103976,2.98125,-0.308744,
+       -0.150793,2.98125,-0.28934,     -0.166306,3.0348,-0.319082,     -0.114676,3.0348,-0.340477,
+       -0.114676,3.0348,-0.340477,     -0.103976,2.98125,-0.308744,    -0.150793,2.98125,-0.28934,
+       -0.193348,2.98125,-0.263232,    -0.213234,3.0348,-0.290295,     -0.166306,3.0348,-0.319082,
+       -0.166306,3.0348,-0.319082,     -0.150793,2.98125,-0.28934,     -0.193348,2.98125,-0.263232,
+       -0.231031,2.98125,-0.231031,    -0.254788,3.0348,-0.254788,     -0.213234,3.0348,-0.290295,
+       -0.213234,3.0348,-0.290295,     -0.193348,2.98125,-0.263232,    -0.231031,2.98125,-0.231031,
+       -0.263232,2.98125,-0.193348,    -0.290295,3.0348,-0.213234,     -0.254788,3.0348,-0.254788,
+       -0.254788,3.0348,-0.254788,     -0.231031,2.98125,-0.231031,    -0.263232,2.98125,-0.193348,
+       -0.28934,2.98125,-0.150793,     -0.319082,3.0348,-0.166306,     -0.290295,3.0348,-0.213234,
+       -0.290295,3.0348,-0.213234,     -0.263232,2.98125,-0.193348,    -0.28934,2.98125,-0.150793,
+       -0.308744,2.98125,-0.103976,    -0.340477,3.0348,-0.114676,     -0.319082,3.0348,-0.166306,
+       -0.319082,3.0348,-0.166306,     -0.28934,2.98125,-0.150793,     -0.308744,2.98125,-0.103976,
+       -0.320834,2.98125,-0.053508,    -0.353807,3.0348,-0.059016,     -0.340477,3.0348,-0.114676,
+       -0.340477,3.0348,-0.114676,     -0.308744,2.98125,-0.103976,    -0.320834,2.98125,-0.053508,
+       -0.325,2.98125,0,       -0.3584,3.0348,0,       -0.353807,3.0348,-0.059016,
+       -0.353807,3.0348,-0.059016,     -0.320834,2.98125,-0.053508,    -0.325,2.98125,0,
+       -0.045032,2.9232,-0.270092,     -0.053508,2.98125,-0.320834,    0,2.98125,-0.325,
+       0,2.98125,-0.325,       0,2.9232,-0.2736,       -0.045032,2.9232,-0.270092,
+       -0.087511,2.9232,-0.25991,      -0.103976,2.98125,-0.308744,    -0.053508,2.98125,-0.320834,
+       -0.053508,2.98125,-0.320834,    -0.045032,2.9232,-0.270092,     -0.087511,2.9232,-0.25991,
+       -0.12692,2.9232,-0.243569,      -0.150793,2.98125,-0.28934,     -0.103976,2.98125,-0.308744,
+       -0.103976,2.98125,-0.308744,    -0.087511,2.9232,-0.25991,      -0.12692,2.9232,-0.243569,
+       -0.162745,2.9232,-0.221585,     -0.193348,2.98125,-0.263232,    -0.150793,2.98125,-0.28934,
+       -0.150793,2.98125,-0.28934,     -0.12692,2.9232,-0.243569,      -0.162745,2.9232,-0.221585,
+       -0.194472,2.9232,-0.194472,     -0.231031,2.98125,-0.231031,    -0.193348,2.98125,-0.263232,
+       -0.193348,2.98125,-0.263232,    -0.162745,2.9232,-0.221585,     -0.194472,2.9232,-0.194472,
+       -0.221585,2.9232,-0.162745,     -0.263232,2.98125,-0.193348,    -0.231031,2.98125,-0.231031,
+       -0.231031,2.98125,-0.231031,    -0.194472,2.9232,-0.194472,     -0.221585,2.9232,-0.162745,
+       -0.243569,2.9232,-0.12692,      -0.28934,2.98125,-0.150793,     -0.263232,2.98125,-0.193348,
+       -0.263232,2.98125,-0.193348,    -0.221585,2.9232,-0.162745,     -0.243569,2.9232,-0.12692,
+       -0.25991,2.9232,-0.087511,      -0.308744,2.98125,-0.103976,    -0.28934,2.98125,-0.150793,
+       -0.28934,2.98125,-0.150793,     -0.243569,2.9232,-0.12692,      -0.25991,2.9232,-0.087511,
+       -0.270092,2.9232,-0.045032,     -0.320834,2.98125,-0.053508,    -0.308744,2.98125,-0.103976,
+       -0.308744,2.98125,-0.103976,    -0.25991,2.9232,-0.087511,      -0.270092,2.9232,-0.045032,
+       -0.2736,2.9232,0,       -0.325,2.98125,0,       -0.320834,2.98125,-0.053508,
+       -0.320834,2.98125,-0.053508,    -0.270092,2.9232,-0.045032,     -0.2736,2.9232,0,
+       -0.036157,2.86335,-0.216979,    -0.045032,2.9232,-0.270092,     0,2.9232,-0.2736,
+       0,2.9232,-0.2736,       0,2.86335,-0.2198,      -0.036157,2.86335,-0.216979,
+       -0.07027,2.86335,-0.208794,     -0.087511,2.9232,-0.25991,      -0.045032,2.9232,-0.270092,
+       -0.045032,2.9232,-0.270092,     -0.036157,2.86335,-0.216979,    -0.07027,2.86335,-0.208794,
+       -0.101925,2.86335,-0.195658,    -0.12692,2.9232,-0.243569,      -0.087511,2.9232,-0.25991,
+       -0.087511,2.9232,-0.25991,      -0.07027,2.86335,-0.208794,     -0.101925,2.86335,-0.195658,
+       -0.130707,2.86335,-0.177989,    -0.162745,2.9232,-0.221585,     -0.12692,2.9232,-0.243569,
+       -0.12692,2.9232,-0.243569,      -0.101925,2.86335,-0.195658,    -0.130707,2.86335,-0.177989,
+       -0.1562,2.86335,-0.1562,        -0.194472,2.9232,-0.194472,     -0.162745,2.9232,-0.221585,
+       -0.162745,2.9232,-0.221585,     -0.130707,2.86335,-0.177989,    -0.1562,2.86335,-0.1562,
+       -0.177989,2.86335,-0.130707,    -0.221585,2.9232,-0.162745,     -0.194472,2.9232,-0.194472,
+       -0.194472,2.9232,-0.194472,     -0.1562,2.86335,-0.1562,        -0.177989,2.86335,-0.130707,
+       -0.195658,2.86335,-0.101925,    -0.243569,2.9232,-0.12692,      -0.221585,2.9232,-0.162745,
+       -0.221585,2.9232,-0.162745,     -0.177989,2.86335,-0.130707,    -0.195658,2.86335,-0.101925,
+       -0.208794,2.86335,-0.07027,     -0.25991,2.9232,-0.087511,      -0.243569,2.9232,-0.12692,
+       -0.243569,2.9232,-0.12692,      -0.195658,2.86335,-0.101925,    -0.208794,2.86335,-0.07027,
+       -0.216979,2.86335,-0.036157,    -0.270092,2.9232,-0.045032,     -0.25991,2.9232,-0.087511,
+       -0.25991,2.9232,-0.087511,      -0.208794,2.86335,-0.07027,     -0.216979,2.86335,-0.036157,
+       -0.2198,2.86335,0,      -0.2736,2.9232,0,       -0.270092,2.9232,-0.045032,
+       -0.270092,2.9232,-0.045032,     -0.216979,2.86335,-0.036157,    -0.2198,2.86335,0,
+       -0.02945,2.8044,-0.176897,      -0.036157,2.86335,-0.216979,    0,2.86335,-0.2198,
+       0,2.86335,-0.2198,      0,2.8044,-0.1792,       -0.02945,2.8044,-0.176897,
+       -0.057246,2.8044,-0.170215,     -0.07027,2.86335,-0.208794,     -0.036157,2.86335,-0.216979,
+       -0.036157,2.86335,-0.216979,    -0.02945,2.8044,-0.176897,      -0.057246,2.8044,-0.170215,
+       -0.083047,2.8044,-0.159496,     -0.101925,2.86335,-0.195658,    -0.07027,2.86335,-0.208794,
+       -0.07027,2.86335,-0.208794,     -0.057246,2.8044,-0.170215,     -0.083047,2.8044,-0.159496,
+       -0.106513,2.8044,-0.145078,     -0.130707,2.86335,-0.177989,    -0.101925,2.86335,-0.195658,
+       -0.101925,2.86335,-0.195658,    -0.083047,2.8044,-0.159496,     -0.106513,2.8044,-0.145078,
+       -0.127304,2.8044,-0.127304,     -0.1562,2.86335,-0.1562,        -0.130707,2.86335,-0.177989,
+       -0.130707,2.86335,-0.177989,    -0.106513,2.8044,-0.145078,     -0.127304,2.8044,-0.127304,
+       -0.145078,2.8044,-0.106513,     -0.177989,2.86335,-0.130707,    -0.1562,2.86335,-0.1562,
+       -0.1562,2.86335,-0.1562,        -0.127304,2.8044,-0.127304,     -0.145078,2.8044,-0.106513,
+       -0.159496,2.8044,-0.083047,     -0.195658,2.86335,-0.101925,    -0.177989,2.86335,-0.130707,
+       -0.177989,2.86335,-0.130707,    -0.145078,2.8044,-0.106513,     -0.159496,2.8044,-0.083047,
+       -0.170215,2.8044,-0.057246,     -0.208794,2.86335,-0.07027,     -0.195658,2.86335,-0.101925,
+       -0.195658,2.86335,-0.101925,    -0.159496,2.8044,-0.083047,     -0.170215,2.8044,-0.057246,
+       -0.176897,2.8044,-0.02945,      -0.216979,2.86335,-0.036157,    -0.208794,2.86335,-0.07027,
+       -0.208794,2.86335,-0.07027,     -0.170215,2.8044,-0.057246,     -0.176897,2.8044,-0.02945,
+       -0.1792,2.8044,0,       -0.2198,2.86335,0,      -0.216979,2.86335,-0.036157,
+       -0.216979,2.86335,-0.036157,    -0.176897,2.8044,-0.02945,      -0.1792,2.8044,0,
+       -0.02748,2.74905,-0.165245,     -0.02945,2.8044,-0.176897,      0,2.8044,-0.1792,
+       0,2.8044,-0.1792,       0,2.74905,-0.1674,      -0.02748,2.74905,-0.165245,
+       -0.053428,2.74905,-0.158995,    -0.057246,2.8044,-0.170215,     -0.02945,2.8044,-0.176897,
+       -0.02945,2.8044,-0.176897,      -0.02748,2.74905,-0.165245,     -0.053428,2.74905,-0.158995,
+       -0.077523,2.74905,-0.148969,    -0.083047,2.8044,-0.159496,     -0.057246,2.8044,-0.170215,
+       -0.057246,2.8044,-0.170215,     -0.053428,2.74905,-0.158995,    -0.077523,2.74905,-0.148969,
+       -0.099446,2.74905,-0.135489,    -0.106513,2.8044,-0.145078,     -0.083047,2.8044,-0.159496,
+       -0.083047,2.8044,-0.159496,     -0.077523,2.74905,-0.148969,    -0.099446,2.74905,-0.135489,
+       -0.118874,2.74905,-0.118874,    -0.127304,2.8044,-0.127304,     -0.106513,2.8044,-0.145078,
+       -0.106513,2.8044,-0.145078,     -0.099446,2.74905,-0.135489,    -0.118874,2.74905,-0.118874,
+       -0.135489,2.74905,-0.099446,    -0.145078,2.8044,-0.106513,     -0.127304,2.8044,-0.127304,
+       -0.127304,2.8044,-0.127304,     -0.118874,2.74905,-0.118874,    -0.135489,2.74905,-0.099446,
+       -0.148969,2.74905,-0.077523,    -0.159496,2.8044,-0.083047,     -0.145078,2.8044,-0.106513,
+       -0.145078,2.8044,-0.106513,     -0.135489,2.74905,-0.099446,    -0.148969,2.74905,-0.077523,
+       -0.158995,2.74905,-0.053428,    -0.170215,2.8044,-0.057246,     -0.159496,2.8044,-0.083047,
+       -0.159496,2.8044,-0.083047,     -0.148969,2.74905,-0.077523,    -0.158995,2.74905,-0.053428,
+       -0.165245,2.74905,-0.02748,     -0.176897,2.8044,-0.02945,      -0.170215,2.8044,-0.057246,
+       -0.170215,2.8044,-0.057246,     -0.158995,2.74905,-0.053428,    -0.165245,2.74905,-0.02748,
+       -0.1674,2.74905,0,      -0.1792,2.8044,0,       -0.176897,2.8044,-0.02945,
+       -0.176897,2.8044,-0.02945,      -0.165245,2.74905,-0.02748,     -0.1674,2.74905,0,
+       -0.032816,2.7,-0.197424,        -0.02748,2.74905,-0.165245,     0,2.74905,-0.1674,
+       0,2.74905,-0.1674,      0,2.7,-0.2,     -0.032816,2.7,-0.197424,
+       -0.063808,2.7,-0.189952,        -0.053428,2.74905,-0.158995,    -0.02748,2.74905,-0.165245,
+       -0.02748,2.74905,-0.165245,     -0.032816,2.7,-0.197424,        -0.063808,2.7,-0.189952,
+       -0.092592,2.7,-0.177968,        -0.077523,2.74905,-0.148969,    -0.053428,2.74905,-0.158995,
+       -0.053428,2.74905,-0.158995,    -0.063808,2.7,-0.189952,        -0.092592,2.7,-0.177968,
+       -0.118784,2.7,-0.161856,        -0.099446,2.74905,-0.135489,    -0.077523,2.74905,-0.148969,
+       -0.077523,2.74905,-0.148969,    -0.092592,2.7,-0.177968,        -0.118784,2.7,-0.161856,
+       -0.142,2.7,-0.142,      -0.118874,2.74905,-0.118874,    -0.099446,2.74905,-0.135489,
+       -0.099446,2.74905,-0.135489,    -0.118784,2.7,-0.161856,        -0.142,2.7,-0.142,
+       -0.161856,2.7,-0.118784,        -0.135489,2.74905,-0.099446,    -0.118874,2.74905,-0.118874,
+       -0.118874,2.74905,-0.118874,    -0.142,2.7,-0.142,      -0.161856,2.7,-0.118784,
+       -0.177968,2.7,-0.092592,        -0.148969,2.74905,-0.077523,    -0.135489,2.74905,-0.099446,
+       -0.135489,2.74905,-0.099446,    -0.161856,2.7,-0.118784,        -0.177968,2.7,-0.092592,
+       -0.189952,2.7,-0.063808,        -0.158995,2.74905,-0.053428,    -0.148969,2.74905,-0.077523,
+       -0.148969,2.74905,-0.077523,    -0.177968,2.7,-0.092592,        -0.189952,2.7,-0.063808,
+       -0.197424,2.7,-0.032816,        -0.165245,2.74905,-0.02748,     -0.158995,2.74905,-0.053428,
+       -0.158995,2.74905,-0.053428,    -0.189952,2.7,-0.063808,        -0.197424,2.7,-0.032816,
+       -0.2,2.7,0,     -0.1674,2.74905,0,      -0.165245,2.74905,-0.02748,
+       -0.165245,2.74905,-0.02748,     -0.197424,2.7,-0.032816,        -0.2,2.7,0,
+       0,3.15,0,       -0.1946,3.14145,0,      -0.192107,3.14145,0.032048,
+       0,3.15,0,       -0.192107,3.14145,0.032048,     -0.18487,3.14145,0.062272,
+       0,3.15,0,       -0.18487,3.14145,0.062272,      -0.173255,3.14145,0.090306,
+       0,3.15,0,       -0.173255,3.14145,0.090306,     -0.157626,3.14145,0.115787,
+       0,3.15,0,       -0.157626,3.14145,0.115787,     -0.138348,3.14145,0.138348,
+       0,3.15,0,       -0.138348,3.14145,0.138348,     -0.115787,3.14145,0.157626,
+       0,3.15,0,       -0.115787,3.14145,0.157626,     -0.090306,3.14145,0.173255,
+       0,3.15,0,       -0.090306,3.14145,0.173255,     -0.062272,3.14145,0.18487,
+       0,3.15,0,       -0.062272,3.14145,0.18487,      -0.032048,3.14145,0.192107,
+       0,3.15,0,       -0.032048,3.14145,0.192107,     0,3.14145,0.1946,
+       -0.304843,3.1176,0.050855,      -0.192107,3.14145,0.032048,     -0.1946,3.14145,0,
+       -0.1946,3.14145,0,      -0.3088,3.1176,0,       -0.304843,3.1176,0.050855,
+       -0.29336,3.1176,0.098814,       -0.18487,3.14145,0.062272,      -0.192107,3.14145,0.032048,
+       -0.192107,3.14145,0.032048,     -0.304843,3.1176,0.050855,      -0.29336,3.1176,0.098814,
+       -0.274928,3.1176,0.143301,      -0.173255,3.14145,0.090306,     -0.18487,3.14145,0.062272,
+       -0.18487,3.14145,0.062272,      -0.29336,3.1176,0.098814,       -0.274928,3.1176,0.143301,
+       -0.250127,3.1176,0.183734,      -0.157626,3.14145,0.115787,     -0.173255,3.14145,0.090306,
+       -0.173255,3.14145,0.090306,     -0.274928,3.1176,0.143301,      -0.250127,3.1176,0.183734,
+       -0.219536,3.1176,0.219536,      -0.138348,3.14145,0.138348,     -0.157626,3.14145,0.115787,
+       -0.157626,3.14145,0.115787,     -0.250127,3.1176,0.183734,      -0.219536,3.1176,0.219536,
+       -0.183734,3.1176,0.250127,      -0.115787,3.14145,0.157626,     -0.138348,3.14145,0.138348,
+       -0.138348,3.14145,0.138348,     -0.219536,3.1176,0.219536,      -0.183734,3.1176,0.250127,
+       -0.143301,3.1176,0.274928,      -0.090306,3.14145,0.173255,     -0.115787,3.14145,0.157626,
+       -0.115787,3.14145,0.157626,     -0.183734,3.1176,0.250127,      -0.143301,3.1176,0.274928,
+       -0.098814,3.1176,0.29336,       -0.062272,3.14145,0.18487,      -0.090306,3.14145,0.173255,
+       -0.090306,3.14145,0.173255,     -0.143301,3.1176,0.274928,      -0.098814,3.1176,0.29336,
+       -0.050855,3.1176,0.304843,      -0.032048,3.14145,0.192107,     -0.062272,3.14145,0.18487,
+       -0.062272,3.14145,0.18487,      -0.098814,3.1176,0.29336,       -0.050855,3.1176,0.304843,
+       0,3.1176,0.3088,        0,3.14145,0.1946,       -0.032048,3.14145,0.192107,
+       -0.032048,3.14145,0.192107,     -0.050855,3.1176,0.304843,      0,3.1176,0.3088,
+       -0.35361,3.08115,0.058988,      -0.304843,3.1176,0.050855,      -0.3088,3.1176,0,
+       -0.3088,3.1176,0,       -0.3582,3.08115,0,      -0.35361,3.08115,0.058988,
+       -0.340289,3.08115,0.114619,     -0.29336,3.1176,0.098814,       -0.304843,3.1176,0.050855,
+       -0.304843,3.1176,0.050855,      -0.35361,3.08115,0.058988,      -0.340289,3.08115,0.114619,
+       -0.318907,3.08115,0.166221,     -0.274928,3.1176,0.143301,      -0.29336,3.1176,0.098814,
+       -0.29336,3.1176,0.098814,       -0.340289,3.08115,0.114619,     -0.318907,3.08115,0.166221,
+       -0.290138,3.08115,0.213123,     -0.250127,3.1176,0.183734,      -0.274928,3.1176,0.143301,
+       -0.274928,3.1176,0.143301,      -0.318907,3.08115,0.166221,     -0.290138,3.08115,0.213123,
+       -0.254653,3.08115,0.254653,     -0.219536,3.1176,0.219536,      -0.250127,3.1176,0.183734,
+       -0.250127,3.1176,0.183734,      -0.290138,3.08115,0.213123,     -0.254653,3.08115,0.254653,
+       -0.213123,3.08115,0.290138,     -0.183734,3.1176,0.250127,      -0.219536,3.1176,0.219536,
+       -0.219536,3.1176,0.219536,      -0.254653,3.08115,0.254653,     -0.213123,3.08115,0.290138,
+       -0.166221,3.08115,0.318907,     -0.143301,3.1176,0.274928,      -0.183734,3.1176,0.250127,
+       -0.183734,3.1176,0.250127,      -0.213123,3.08115,0.290138,     -0.166221,3.08115,0.318907,
+       -0.114619,3.08115,0.340289,     -0.098814,3.1176,0.29336,       -0.143301,3.1176,0.274928,
+       -0.143301,3.1176,0.274928,      -0.166221,3.08115,0.318907,     -0.114619,3.08115,0.340289,
+       -0.058988,3.08115,0.35361,      -0.050855,3.1176,0.304843,      -0.098814,3.1176,0.29336,
+       -0.098814,3.1176,0.29336,       -0.114619,3.08115,0.340289,     -0.058988,3.08115,0.35361,
+       0,3.08115,0.3582,       0,3.1176,0.3088,        -0.050855,3.1176,0.304843,
+       -0.050855,3.1176,0.304843,      -0.058988,3.08115,0.35361,      0,3.08115,0.3582,
+       -0.353807,3.0348,0.059016,      -0.35361,3.08115,0.058988,      -0.3582,3.08115,0,
+       -0.3582,3.08115,0,      -0.3584,3.0348,0,       -0.353807,3.0348,0.059016,
+       -0.340477,3.0348,0.114676,      -0.340289,3.08115,0.114619,     -0.35361,3.08115,0.058988,
+       -0.35361,3.08115,0.058988,      -0.353807,3.0348,0.059016,      -0.340477,3.0348,0.114676,
+       -0.319082,3.0348,0.166306,      -0.318907,3.08115,0.166221,     -0.340289,3.08115,0.114619,
+       -0.340289,3.08115,0.114619,     -0.340477,3.0348,0.114676,      -0.319082,3.0348,0.166306,
+       -0.290295,3.0348,0.213234,      -0.290138,3.08115,0.213123,     -0.318907,3.08115,0.166221,
+       -0.318907,3.08115,0.166221,     -0.319082,3.0348,0.166306,      -0.290295,3.0348,0.213234,
+       -0.254788,3.0348,0.254788,      -0.254653,3.08115,0.254653,     -0.290138,3.08115,0.213123,
+       -0.290138,3.08115,0.213123,     -0.290295,3.0348,0.213234,      -0.254788,3.0348,0.254788,
+       -0.213234,3.0348,0.290295,      -0.213123,3.08115,0.290138,     -0.254653,3.08115,0.254653,
+       -0.254653,3.08115,0.254653,     -0.254788,3.0348,0.254788,      -0.213234,3.0348,0.290295,
+       -0.166306,3.0348,0.319082,      -0.166221,3.08115,0.318907,     -0.213123,3.08115,0.290138,
+       -0.213123,3.08115,0.290138,     -0.213234,3.0348,0.290295,      -0.166306,3.0348,0.319082,
+       -0.114676,3.0348,0.340477,      -0.114619,3.08115,0.340289,     -0.166221,3.08115,0.318907,
+       -0.166221,3.08115,0.318907,     -0.166306,3.0348,0.319082,      -0.114676,3.0348,0.340477,
+       -0.059016,3.0348,0.353807,      -0.058988,3.08115,0.35361,      -0.114619,3.08115,0.340289,
+       -0.114619,3.08115,0.340289,     -0.114676,3.0348,0.340477,      -0.059016,3.0348,0.353807,
+       0,3.0348,0.3584,        0,3.08115,0.3582,       -0.058988,3.08115,0.35361,
+       -0.058988,3.08115,0.35361,      -0.059016,3.0348,0.353807,      0,3.0348,0.3584,
+       -0.320834,2.98125,0.053508,     -0.353807,3.0348,0.059016,      -0.3584,3.0348,0,
+       -0.3584,3.0348,0,       -0.325,2.98125,0,       -0.320834,2.98125,0.053508,
+       -0.308744,2.98125,0.103976,     -0.340477,3.0348,0.114676,      -0.353807,3.0348,0.059016,
+       -0.353807,3.0348,0.059016,      -0.320834,2.98125,0.053508,     -0.308744,2.98125,0.103976,
+       -0.28934,2.98125,0.150793,      -0.319082,3.0348,0.166306,      -0.340477,3.0348,0.114676,
+       -0.340477,3.0348,0.114676,      -0.308744,2.98125,0.103976,     -0.28934,2.98125,0.150793,
+       -0.263232,2.98125,0.193348,     -0.290295,3.0348,0.213234,      -0.319082,3.0348,0.166306,
+       -0.319082,3.0348,0.166306,      -0.28934,2.98125,0.150793,      -0.263232,2.98125,0.193348,
+       -0.231031,2.98125,0.231031,     -0.254788,3.0348,0.254788,      -0.290295,3.0348,0.213234,
+       -0.290295,3.0348,0.213234,      -0.263232,2.98125,0.193348,     -0.231031,2.98125,0.231031,
+       -0.193348,2.98125,0.263232,     -0.213234,3.0348,0.290295,      -0.254788,3.0348,0.254788,
+       -0.254788,3.0348,0.254788,      -0.231031,2.98125,0.231031,     -0.193348,2.98125,0.263232,
+       -0.150793,2.98125,0.28934,      -0.166306,3.0348,0.319082,      -0.213234,3.0348,0.290295,
+       -0.213234,3.0348,0.290295,      -0.193348,2.98125,0.263232,     -0.150793,2.98125,0.28934,
+       -0.103976,2.98125,0.308744,     -0.114676,3.0348,0.340477,      -0.166306,3.0348,0.319082,
+       -0.166306,3.0348,0.319082,      -0.150793,2.98125,0.28934,      -0.103976,2.98125,0.308744,
+       -0.053508,2.98125,0.320834,     -0.059016,3.0348,0.353807,      -0.114676,3.0348,0.340477,
+       -0.114676,3.0348,0.340477,      -0.103976,2.98125,0.308744,     -0.053508,2.98125,0.320834,
+       0,2.98125,0.325,        0,3.0348,0.3584,        -0.059016,3.0348,0.353807,
+       -0.059016,3.0348,0.353807,      -0.053508,2.98125,0.320834,     0,2.98125,0.325,
+       -0.270092,2.9232,0.045032,      -0.320834,2.98125,0.053508,     -0.325,2.98125,0,
+       -0.325,2.98125,0,       -0.2736,2.9232,0,       -0.270092,2.9232,0.045032,
+       -0.25991,2.9232,0.087511,       -0.308744,2.98125,0.103976,     -0.320834,2.98125,0.053508,
+       -0.320834,2.98125,0.053508,     -0.270092,2.9232,0.045032,      -0.25991,2.9232,0.087511,
+       -0.243569,2.9232,0.12692,       -0.28934,2.98125,0.150793,      -0.308744,2.98125,0.103976,
+       -0.308744,2.98125,0.103976,     -0.25991,2.9232,0.087511,       -0.243569,2.9232,0.12692,
+       -0.221585,2.9232,0.162745,      -0.263232,2.98125,0.193348,     -0.28934,2.98125,0.150793,
+       -0.28934,2.98125,0.150793,      -0.243569,2.9232,0.12692,       -0.221585,2.9232,0.162745,
+       -0.194472,2.9232,0.194472,      -0.231031,2.98125,0.231031,     -0.263232,2.98125,0.193348,
+       -0.263232,2.98125,0.193348,     -0.221585,2.9232,0.162745,      -0.194472,2.9232,0.194472,
+       -0.162745,2.9232,0.221585,      -0.193348,2.98125,0.263232,     -0.231031,2.98125,0.231031,
+       -0.231031,2.98125,0.231031,     -0.194472,2.9232,0.194472,      -0.162745,2.9232,0.221585,
+       -0.12692,2.9232,0.243569,       -0.150793,2.98125,0.28934,      -0.193348,2.98125,0.263232,
+       -0.193348,2.98125,0.263232,     -0.162745,2.9232,0.221585,      -0.12692,2.9232,0.243569,
+       -0.087511,2.9232,0.25991,       -0.103976,2.98125,0.308744,     -0.150793,2.98125,0.28934,
+       -0.150793,2.98125,0.28934,      -0.12692,2.9232,0.243569,       -0.087511,2.9232,0.25991,
+       -0.045032,2.9232,0.270092,      -0.053508,2.98125,0.320834,     -0.103976,2.98125,0.308744,
+       -0.103976,2.98125,0.308744,     -0.087511,2.9232,0.25991,       -0.045032,2.9232,0.270092,
+       0,2.9232,0.2736,        0,2.98125,0.325,        -0.053508,2.98125,0.320834,
+       -0.053508,2.98125,0.320834,     -0.045032,2.9232,0.270092,      0,2.9232,0.2736,
+       -0.216979,2.86335,0.036157,     -0.270092,2.9232,0.045032,      -0.2736,2.9232,0,
+       -0.2736,2.9232,0,       -0.2198,2.86335,0,      -0.216979,2.86335,0.036157,
+       -0.208794,2.86335,0.07027,      -0.25991,2.9232,0.087511,       -0.270092,2.9232,0.045032,
+       -0.270092,2.9232,0.045032,      -0.216979,2.86335,0.036157,     -0.208794,2.86335,0.07027,
+       -0.195658,2.86335,0.101925,     -0.243569,2.9232,0.12692,       -0.25991,2.9232,0.087511,
+       -0.25991,2.9232,0.087511,       -0.208794,2.86335,0.07027,      -0.195658,2.86335,0.101925,
+       -0.177989,2.86335,0.130707,     -0.221585,2.9232,0.162745,      -0.243569,2.9232,0.12692,
+       -0.243569,2.9232,0.12692,       -0.195658,2.86335,0.101925,     -0.177989,2.86335,0.130707,
+       -0.1562,2.86335,0.1562, -0.194472,2.9232,0.194472,      -0.221585,2.9232,0.162745,
+       -0.221585,2.9232,0.162745,      -0.177989,2.86335,0.130707,     -0.1562,2.86335,0.1562,
+       -0.130707,2.86335,0.177989,     -0.162745,2.9232,0.221585,      -0.194472,2.9232,0.194472,
+       -0.194472,2.9232,0.194472,      -0.1562,2.86335,0.1562, -0.130707,2.86335,0.177989,
+       -0.101925,2.86335,0.195658,     -0.12692,2.9232,0.243569,       -0.162745,2.9232,0.221585,
+       -0.162745,2.9232,0.221585,      -0.130707,2.86335,0.177989,     -0.101925,2.86335,0.195658,
+       -0.07027,2.86335,0.208794,      -0.087511,2.9232,0.25991,       -0.12692,2.9232,0.243569,
+       -0.12692,2.9232,0.243569,       -0.101925,2.86335,0.195658,     -0.07027,2.86335,0.208794,
+       -0.036157,2.86335,0.216979,     -0.045032,2.9232,0.270092,      -0.087511,2.9232,0.25991,
+       -0.087511,2.9232,0.25991,       -0.07027,2.86335,0.208794,      -0.036157,2.86335,0.216979,
+       0,2.86335,0.2198,       0,2.9232,0.2736,        -0.045032,2.9232,0.270092,
+       -0.045032,2.9232,0.270092,      -0.036157,2.86335,0.216979,     0,2.86335,0.2198,
+       -0.176897,2.8044,0.02945,       -0.216979,2.86335,0.036157,     -0.2198,2.86335,0,
+       -0.2198,2.86335,0,      -0.1792,2.8044,0,       -0.176897,2.8044,0.02945,
+       -0.170215,2.8044,0.057246,      -0.208794,2.86335,0.07027,      -0.216979,2.86335,0.036157,
+       -0.216979,2.86335,0.036157,     -0.176897,2.8044,0.02945,       -0.170215,2.8044,0.057246,
+       -0.159496,2.8044,0.083047,      -0.195658,2.86335,0.101925,     -0.208794,2.86335,0.07027,
+       -0.208794,2.86335,0.07027,      -0.170215,2.8044,0.057246,      -0.159496,2.8044,0.083047,
+       -0.145078,2.8044,0.106513,      -0.177989,2.86335,0.130707,     -0.195658,2.86335,0.101925,
+       -0.195658,2.86335,0.101925,     -0.159496,2.8044,0.083047,      -0.145078,2.8044,0.106513,
+       -0.127304,2.8044,0.127304,      -0.1562,2.86335,0.1562, -0.177989,2.86335,0.130707,
+       -0.177989,2.86335,0.130707,     -0.145078,2.8044,0.106513,      -0.127304,2.8044,0.127304,
+       -0.106513,2.8044,0.145078,      -0.130707,2.86335,0.177989,     -0.1562,2.86335,0.1562,
+       -0.1562,2.86335,0.1562, -0.127304,2.8044,0.127304,      -0.106513,2.8044,0.145078,
+       -0.083047,2.8044,0.159496,      -0.101925,2.86335,0.195658,     -0.130707,2.86335,0.177989,
+       -0.130707,2.86335,0.177989,     -0.106513,2.8044,0.145078,      -0.083047,2.8044,0.159496,
+       -0.057246,2.8044,0.170215,      -0.07027,2.86335,0.208794,      -0.101925,2.86335,0.195658,
+       -0.101925,2.86335,0.195658,     -0.083047,2.8044,0.159496,      -0.057246,2.8044,0.170215,
+       -0.02945,2.8044,0.176897,       -0.036157,2.86335,0.216979,     -0.07027,2.86335,0.208794,
+       -0.07027,2.86335,0.208794,      -0.057246,2.8044,0.170215,      -0.02945,2.8044,0.176897,
+       0,2.8044,0.1792,        0,2.86335,0.2198,       -0.036157,2.86335,0.216979,
+       -0.036157,2.86335,0.216979,     -0.02945,2.8044,0.176897,       0,2.8044,0.1792,
+       -0.165245,2.74905,0.02748,      -0.176897,2.8044,0.02945,       -0.1792,2.8044,0,
+       -0.1792,2.8044,0,       -0.1674,2.74905,0,      -0.165245,2.74905,0.02748,
+       -0.158995,2.74905,0.053428,     -0.170215,2.8044,0.057246,      -0.176897,2.8044,0.02945,
+       -0.176897,2.8044,0.02945,       -0.165245,2.74905,0.02748,      -0.158995,2.74905,0.053428,
+       -0.148969,2.74905,0.077523,     -0.159496,2.8044,0.083047,      -0.170215,2.8044,0.057246,
+       -0.170215,2.8044,0.057246,      -0.158995,2.74905,0.053428,     -0.148969,2.74905,0.077523,
+       -0.135489,2.74905,0.099446,     -0.145078,2.8044,0.106513,      -0.159496,2.8044,0.083047,
+       -0.159496,2.8044,0.083047,      -0.148969,2.74905,0.077523,     -0.135489,2.74905,0.099446,
+       -0.118874,2.74905,0.118874,     -0.127304,2.8044,0.127304,      -0.145078,2.8044,0.106513,
+       -0.145078,2.8044,0.106513,      -0.135489,2.74905,0.099446,     -0.118874,2.74905,0.118874,
+       -0.099446,2.74905,0.135489,     -0.106513,2.8044,0.145078,      -0.127304,2.8044,0.127304,
+       -0.127304,2.8044,0.127304,      -0.118874,2.74905,0.118874,     -0.099446,2.74905,0.135489,
+       -0.077523,2.74905,0.148969,     -0.083047,2.8044,0.159496,      -0.106513,2.8044,0.145078,
+       -0.106513,2.8044,0.145078,      -0.099446,2.74905,0.135489,     -0.077523,2.74905,0.148969,
+       -0.053428,2.74905,0.158995,     -0.057246,2.8044,0.170215,      -0.083047,2.8044,0.159496,
+       -0.083047,2.8044,0.159496,      -0.077523,2.74905,0.148969,     -0.053428,2.74905,0.158995,
+       -0.02748,2.74905,0.165245,      -0.02945,2.8044,0.176897,       -0.057246,2.8044,0.170215,
+       -0.057246,2.8044,0.170215,      -0.053428,2.74905,0.158995,     -0.02748,2.74905,0.165245,
+       0,2.74905,0.1674,       0,2.8044,0.1792,        -0.02945,2.8044,0.176897,
+       -0.02945,2.8044,0.176897,       -0.02748,2.74905,0.165245,      0,2.74905,0.1674,
+       -0.197424,2.7,0.032816, -0.165245,2.74905,0.02748,      -0.1674,2.74905,0,
+       -0.1674,2.74905,0,      -0.2,2.7,0,     -0.197424,2.7,0.032816,
+       -0.189952,2.7,0.063808, -0.158995,2.74905,0.053428,     -0.165245,2.74905,0.02748,
+       -0.165245,2.74905,0.02748,      -0.197424,2.7,0.032816, -0.189952,2.7,0.063808,
+       -0.177968,2.7,0.092592, -0.148969,2.74905,0.077523,     -0.158995,2.74905,0.053428,
+       -0.158995,2.74905,0.053428,     -0.189952,2.7,0.063808, -0.177968,2.7,0.092592,
+       -0.161856,2.7,0.118784, -0.135489,2.74905,0.099446,     -0.148969,2.74905,0.077523,
+       -0.148969,2.74905,0.077523,     -0.177968,2.7,0.092592, -0.161856,2.7,0.118784,
+       -0.142,2.7,0.142,       -0.118874,2.74905,0.118874,     -0.135489,2.74905,0.099446,
+       -0.135489,2.74905,0.099446,     -0.161856,2.7,0.118784, -0.142,2.7,0.142,
+       -0.118784,2.7,0.161856, -0.099446,2.74905,0.135489,     -0.118874,2.74905,0.118874,
+       -0.118874,2.74905,0.118874,     -0.142,2.7,0.142,       -0.118784,2.7,0.161856,
+       -0.092592,2.7,0.177968, -0.077523,2.74905,0.148969,     -0.099446,2.74905,0.135489,
+       -0.099446,2.74905,0.135489,     -0.118784,2.7,0.161856, -0.092592,2.7,0.177968,
+       -0.063808,2.7,0.189952, -0.053428,2.74905,0.158995,     -0.077523,2.74905,0.148969,
+       -0.077523,2.74905,0.148969,     -0.092592,2.7,0.177968, -0.063808,2.7,0.189952,
+       -0.032816,2.7,0.197424, -0.02748,2.74905,0.165245,      -0.053428,2.74905,0.158995,
+       -0.053428,2.74905,0.158995,     -0.063808,2.7,0.189952, -0.032816,2.7,0.197424,
+       0,2.7,0.2,      0,2.74905,0.1674,       -0.02748,2.74905,0.165245,
+       -0.02748,2.74905,0.165245,      -0.032816,2.7,0.197424, 0,2.7,0.2,
+       0,3.15,0,       0,3.14145,0.1946,       0.032048,3.14145,0.192107,
+       0,3.15,0,       0.032048,3.14145,0.192107,      0.062272,3.14145,0.18487,
+       0,3.15,0,       0.062272,3.14145,0.18487,       0.090306,3.14145,0.173255,
+       0,3.15,0,       0.090306,3.14145,0.173255,      0.115787,3.14145,0.157626,
+       0,3.15,0,       0.115787,3.14145,0.157626,      0.138348,3.14145,0.138348,
+       0,3.15,0,       0.138348,3.14145,0.138348,      0.157626,3.14145,0.115787,
+       0,3.15,0,       0.157626,3.14145,0.115787,      0.173255,3.14145,0.090306,
+       0,3.15,0,       0.173255,3.14145,0.090306,      0.18487,3.14145,0.062272,
+       0,3.15,0,       0.18487,3.14145,0.062272,       0.192107,3.14145,0.032048,
+       0,3.15,0,       0.192107,3.14145,0.032048,      0.1946,3.14145,0,
+       0.050855,3.1176,0.304843,       0.032048,3.14145,0.192107,      0,3.14145,0.1946,
+       0,3.14145,0.1946,       0,3.1176,0.3088,        0.050855,3.1176,0.304843,
+       0.098814,3.1176,0.29336,        0.062272,3.14145,0.18487,       0.032048,3.14145,0.192107,
+       0.032048,3.14145,0.192107,      0.050855,3.1176,0.304843,       0.098814,3.1176,0.29336,
+       0.143301,3.1176,0.274928,       0.090306,3.14145,0.173255,      0.062272,3.14145,0.18487,
+       0.062272,3.14145,0.18487,       0.098814,3.1176,0.29336,        0.143301,3.1176,0.274928,
+       0.183734,3.1176,0.250127,       0.115787,3.14145,0.157626,      0.090306,3.14145,0.173255,
+       0.090306,3.14145,0.173255,      0.143301,3.1176,0.274928,       0.183734,3.1176,0.250127,
+       0.219536,3.1176,0.219536,       0.138348,3.14145,0.138348,      0.115787,3.14145,0.157626,
+       0.115787,3.14145,0.157626,      0.183734,3.1176,0.250127,       0.219536,3.1176,0.219536,
+       0.250127,3.1176,0.183734,       0.157626,3.14145,0.115787,      0.138348,3.14145,0.138348,
+       0.138348,3.14145,0.138348,      0.219536,3.1176,0.219536,       0.250127,3.1176,0.183734,
+       0.274928,3.1176,0.143301,       0.173255,3.14145,0.090306,      0.157626,3.14145,0.115787,
+       0.157626,3.14145,0.115787,      0.250127,3.1176,0.183734,       0.274928,3.1176,0.143301,
+       0.29336,3.1176,0.098814,        0.18487,3.14145,0.062272,       0.173255,3.14145,0.090306,
+       0.173255,3.14145,0.090306,      0.274928,3.1176,0.143301,       0.29336,3.1176,0.098814,
+       0.304843,3.1176,0.050855,       0.192107,3.14145,0.032048,      0.18487,3.14145,0.062272,
+       0.18487,3.14145,0.062272,       0.29336,3.1176,0.098814,        0.304843,3.1176,0.050855,
+       0.3088,3.1176,0,        0.1946,3.14145,0,       0.192107,3.14145,0.032048,
+       0.192107,3.14145,0.032048,      0.304843,3.1176,0.050855,       0.3088,3.1176,0,
+       0.058988,3.08115,0.35361,       0.050855,3.1176,0.304843,       0,3.1176,0.3088,
+       0,3.1176,0.3088,        0,3.08115,0.3582,       0.058988,3.08115,0.35361,
+       0.114619,3.08115,0.340289,      0.098814,3.1176,0.29336,        0.050855,3.1176,0.304843,
+       0.050855,3.1176,0.304843,       0.058988,3.08115,0.35361,       0.114619,3.08115,0.340289,
+       0.166221,3.08115,0.318907,      0.143301,3.1176,0.274928,       0.098814,3.1176,0.29336,
+       0.098814,3.1176,0.29336,        0.114619,3.08115,0.340289,      0.166221,3.08115,0.318907,
+       0.213123,3.08115,0.290138,      0.183734,3.1176,0.250127,       0.143301,3.1176,0.274928,
+       0.143301,3.1176,0.274928,       0.166221,3.08115,0.318907,      0.213123,3.08115,0.290138,
+       0.254653,3.08115,0.254653,      0.219536,3.1176,0.219536,       0.183734,3.1176,0.250127,
+       0.183734,3.1176,0.250127,       0.213123,3.08115,0.290138,      0.254653,3.08115,0.254653,
+       0.290138,3.08115,0.213123,      0.250127,3.1176,0.183734,       0.219536,3.1176,0.219536,
+       0.219536,3.1176,0.219536,       0.254653,3.08115,0.254653,      0.290138,3.08115,0.213123,
+       0.318907,3.08115,0.166221,      0.274928,3.1176,0.143301,       0.250127,3.1176,0.183734,
+       0.250127,3.1176,0.183734,       0.290138,3.08115,0.213123,      0.318907,3.08115,0.166221,
+       0.340289,3.08115,0.114619,      0.29336,3.1176,0.098814,        0.274928,3.1176,0.143301,
+       0.274928,3.1176,0.143301,       0.318907,3.08115,0.166221,      0.340289,3.08115,0.114619,
+       0.35361,3.08115,0.058988,       0.304843,3.1176,0.050855,       0.29336,3.1176,0.098814,
+       0.29336,3.1176,0.098814,        0.340289,3.08115,0.114619,      0.35361,3.08115,0.058988,
+       0.3582,3.08115,0,       0.3088,3.1176,0,        0.304843,3.1176,0.050855,
+       0.304843,3.1176,0.050855,       0.35361,3.08115,0.058988,       0.3582,3.08115,0,
+       0.059016,3.0348,0.353807,       0.058988,3.08115,0.35361,       0,3.08115,0.3582,
+       0,3.08115,0.3582,       0,3.0348,0.3584,        0.059016,3.0348,0.353807,
+       0.114676,3.0348,0.340477,       0.114619,3.08115,0.340289,      0.058988,3.08115,0.35361,
+       0.058988,3.08115,0.35361,       0.059016,3.0348,0.353807,       0.114676,3.0348,0.340477,
+       0.166306,3.0348,0.319082,       0.166221,3.08115,0.318907,      0.114619,3.08115,0.340289,
+       0.114619,3.08115,0.340289,      0.114676,3.0348,0.340477,       0.166306,3.0348,0.319082,
+       0.213234,3.0348,0.290295,       0.213123,3.08115,0.290138,      0.166221,3.08115,0.318907,
+       0.166221,3.08115,0.318907,      0.166306,3.0348,0.319082,       0.213234,3.0348,0.290295,
+       0.254788,3.0348,0.254788,       0.254653,3.08115,0.254653,      0.213123,3.08115,0.290138,
+       0.213123,3.08115,0.290138,      0.213234,3.0348,0.290295,       0.254788,3.0348,0.254788,
+       0.290295,3.0348,0.213234,       0.290138,3.08115,0.213123,      0.254653,3.08115,0.254653,
+       0.254653,3.08115,0.254653,      0.254788,3.0348,0.254788,       0.290295,3.0348,0.213234,
+       0.319082,3.0348,0.166306,       0.318907,3.08115,0.166221,      0.290138,3.08115,0.213123,
+       0.290138,3.08115,0.213123,      0.290295,3.0348,0.213234,       0.319082,3.0348,0.166306,
+       0.340477,3.0348,0.114676,       0.340289,3.08115,0.114619,      0.318907,3.08115,0.166221,
+       0.318907,3.08115,0.166221,      0.319082,3.0348,0.166306,       0.340477,3.0348,0.114676,
+       0.353807,3.0348,0.059016,       0.35361,3.08115,0.058988,       0.340289,3.08115,0.114619,
+       0.340289,3.08115,0.114619,      0.340477,3.0348,0.114676,       0.353807,3.0348,0.059016,
+       0.3584,3.0348,0,        0.3582,3.08115,0,       0.35361,3.08115,0.058988,
+       0.35361,3.08115,0.058988,       0.353807,3.0348,0.059016,       0.3584,3.0348,0,
+       0.053508,2.98125,0.320834,      0.059016,3.0348,0.353807,       0,3.0348,0.3584,
+       0,3.0348,0.3584,        0,2.98125,0.325,        0.053508,2.98125,0.320834,
+       0.103976,2.98125,0.308744,      0.114676,3.0348,0.340477,       0.059016,3.0348,0.353807,
+       0.059016,3.0348,0.353807,       0.053508,2.98125,0.320834,      0.103976,2.98125,0.308744,
+       0.150793,2.98125,0.28934,       0.166306,3.0348,0.319082,       0.114676,3.0348,0.340477,
+       0.114676,3.0348,0.340477,       0.103976,2.98125,0.308744,      0.150793,2.98125,0.28934,
+       0.193348,2.98125,0.263232,      0.213234,3.0348,0.290295,       0.166306,3.0348,0.319082,
+       0.166306,3.0348,0.319082,       0.150793,2.98125,0.28934,       0.193348,2.98125,0.263232,
+       0.231031,2.98125,0.231031,      0.254788,3.0348,0.254788,       0.213234,3.0348,0.290295,
+       0.213234,3.0348,0.290295,       0.193348,2.98125,0.263232,      0.231031,2.98125,0.231031,
+       0.263232,2.98125,0.193348,      0.290295,3.0348,0.213234,       0.254788,3.0348,0.254788,
+       0.254788,3.0348,0.254788,       0.231031,2.98125,0.231031,      0.263232,2.98125,0.193348,
+       0.28934,2.98125,0.150793,       0.319082,3.0348,0.166306,       0.290295,3.0348,0.213234,
+       0.290295,3.0348,0.213234,       0.263232,2.98125,0.193348,      0.28934,2.98125,0.150793,
+       0.308744,2.98125,0.103976,      0.340477,3.0348,0.114676,       0.319082,3.0348,0.166306,
+       0.319082,3.0348,0.166306,       0.28934,2.98125,0.150793,       0.308744,2.98125,0.103976,
+       0.320834,2.98125,0.053508,      0.353807,3.0348,0.059016,       0.340477,3.0348,0.114676,
+       0.340477,3.0348,0.114676,       0.308744,2.98125,0.103976,      0.320834,2.98125,0.053508,
+       0.325,2.98125,0,        0.3584,3.0348,0,        0.353807,3.0348,0.059016,
+       0.353807,3.0348,0.059016,       0.320834,2.98125,0.053508,      0.325,2.98125,0,
+       0.045032,2.9232,0.270092,       0.053508,2.98125,0.320834,      0,2.98125,0.325,
+       0,2.98125,0.325,        0,2.9232,0.2736,        0.045032,2.9232,0.270092,
+       0.087511,2.9232,0.25991,        0.103976,2.98125,0.308744,      0.053508,2.98125,0.320834,
+       0.053508,2.98125,0.320834,      0.045032,2.9232,0.270092,       0.087511,2.9232,0.25991,
+       0.12692,2.9232,0.243569,        0.150793,2.98125,0.28934,       0.103976,2.98125,0.308744,
+       0.103976,2.98125,0.308744,      0.087511,2.9232,0.25991,        0.12692,2.9232,0.243569,
+       0.162745,2.9232,0.221585,       0.193348,2.98125,0.263232,      0.150793,2.98125,0.28934,
+       0.150793,2.98125,0.28934,       0.12692,2.9232,0.243569,        0.162745,2.9232,0.221585,
+       0.194472,2.9232,0.194472,       0.231031,2.98125,0.231031,      0.193348,2.98125,0.263232,
+       0.193348,2.98125,0.263232,      0.162745,2.9232,0.221585,       0.194472,2.9232,0.194472,
+       0.221585,2.9232,0.162745,       0.263232,2.98125,0.193348,      0.231031,2.98125,0.231031,
+       0.231031,2.98125,0.231031,      0.194472,2.9232,0.194472,       0.221585,2.9232,0.162745,
+       0.243569,2.9232,0.12692,        0.28934,2.98125,0.150793,       0.263232,2.98125,0.193348,
+       0.263232,2.98125,0.193348,      0.221585,2.9232,0.162745,       0.243569,2.9232,0.12692,
+       0.25991,2.9232,0.087511,        0.308744,2.98125,0.103976,      0.28934,2.98125,0.150793,
+       0.28934,2.98125,0.150793,       0.243569,2.9232,0.12692,        0.25991,2.9232,0.087511,
+       0.270092,2.9232,0.045032,       0.320834,2.98125,0.053508,      0.308744,2.98125,0.103976,
+       0.308744,2.98125,0.103976,      0.25991,2.9232,0.087511,        0.270092,2.9232,0.045032,
+       0.2736,2.9232,0,        0.325,2.98125,0,        0.320834,2.98125,0.053508,
+       0.320834,2.98125,0.053508,      0.270092,2.9232,0.045032,       0.2736,2.9232,0,
+       0.036157,2.86335,0.216979,      0.045032,2.9232,0.270092,       0,2.9232,0.2736,
+       0,2.9232,0.2736,        0,2.86335,0.2198,       0.036157,2.86335,0.216979,
+       0.07027,2.86335,0.208794,       0.087511,2.9232,0.25991,        0.045032,2.9232,0.270092,
+       0.045032,2.9232,0.270092,       0.036157,2.86335,0.216979,      0.07027,2.86335,0.208794,
+       0.101925,2.86335,0.195658,      0.12692,2.9232,0.243569,        0.087511,2.9232,0.25991,
+       0.087511,2.9232,0.25991,        0.07027,2.86335,0.208794,       0.101925,2.86335,0.195658,
+       0.130707,2.86335,0.177989,      0.162745,2.9232,0.221585,       0.12692,2.9232,0.243569,
+       0.12692,2.9232,0.243569,        0.101925,2.86335,0.195658,      0.130707,2.86335,0.177989,
+       0.1562,2.86335,0.1562,  0.194472,2.9232,0.194472,       0.162745,2.9232,0.221585,
+       0.162745,2.9232,0.221585,       0.130707,2.86335,0.177989,      0.1562,2.86335,0.1562,
+       0.177989,2.86335,0.130707,      0.221585,2.9232,0.162745,       0.194472,2.9232,0.194472,
+       0.194472,2.9232,0.194472,       0.1562,2.86335,0.1562,  0.177989,2.86335,0.130707,
+       0.195658,2.86335,0.101925,      0.243569,2.9232,0.12692,        0.221585,2.9232,0.162745,
+       0.221585,2.9232,0.162745,       0.177989,2.86335,0.130707,      0.195658,2.86335,0.101925,
+       0.208794,2.86335,0.07027,       0.25991,2.9232,0.087511,        0.243569,2.9232,0.12692,
+       0.243569,2.9232,0.12692,        0.195658,2.86335,0.101925,      0.208794,2.86335,0.07027,
+       0.216979,2.86335,0.036157,      0.270092,2.9232,0.045032,       0.25991,2.9232,0.087511,
+       0.25991,2.9232,0.087511,        0.208794,2.86335,0.07027,       0.216979,2.86335,0.036157,
+       0.2198,2.86335,0,       0.2736,2.9232,0,        0.270092,2.9232,0.045032,
+       0.270092,2.9232,0.045032,       0.216979,2.86335,0.036157,      0.2198,2.86335,0,
+       0.02945,2.8044,0.176897,        0.036157,2.86335,0.216979,      0,2.86335,0.2198,
+       0,2.86335,0.2198,       0,2.8044,0.1792,        0.02945,2.8044,0.176897,
+       0.057246,2.8044,0.170215,       0.07027,2.86335,0.208794,       0.036157,2.86335,0.216979,
+       0.036157,2.86335,0.216979,      0.02945,2.8044,0.176897,        0.057246,2.8044,0.170215,
+       0.083047,2.8044,0.159496,       0.101925,2.86335,0.195658,      0.07027,2.86335,0.208794,
+       0.07027,2.86335,0.208794,       0.057246,2.8044,0.170215,       0.083047,2.8044,0.159496,
+       0.106513,2.8044,0.145078,       0.130707,2.86335,0.177989,      0.101925,2.86335,0.195658,
+       0.101925,2.86335,0.195658,      0.083047,2.8044,0.159496,       0.106513,2.8044,0.145078,
+       0.127304,2.8044,0.127304,       0.1562,2.86335,0.1562,  0.130707,2.86335,0.177989,
+       0.130707,2.86335,0.177989,      0.106513,2.8044,0.145078,       0.127304,2.8044,0.127304,
+       0.145078,2.8044,0.106513,       0.177989,2.86335,0.130707,      0.1562,2.86335,0.1562,
+       0.1562,2.86335,0.1562,  0.127304,2.8044,0.127304,       0.145078,2.8044,0.106513,
+       0.159496,2.8044,0.083047,       0.195658,2.86335,0.101925,      0.177989,2.86335,0.130707,
+       0.177989,2.86335,0.130707,      0.145078,2.8044,0.106513,       0.159496,2.8044,0.083047,
+       0.170215,2.8044,0.057246,       0.208794,2.86335,0.07027,       0.195658,2.86335,0.101925,
+       0.195658,2.86335,0.101925,      0.159496,2.8044,0.083047,       0.170215,2.8044,0.057246,
+       0.176897,2.8044,0.02945,        0.216979,2.86335,0.036157,      0.208794,2.86335,0.07027,
+       0.208794,2.86335,0.07027,       0.170215,2.8044,0.057246,       0.176897,2.8044,0.02945,
+       0.1792,2.8044,0,        0.2198,2.86335,0,       0.216979,2.86335,0.036157,
+       0.216979,2.86335,0.036157,      0.176897,2.8044,0.02945,        0.1792,2.8044,0,
+       0.02748,2.74905,0.165245,       0.02945,2.8044,0.176897,        0,2.8044,0.1792,
+       0,2.8044,0.1792,        0,2.74905,0.1674,       0.02748,2.74905,0.165245,
+       0.053428,2.74905,0.158995,      0.057246,2.8044,0.170215,       0.02945,2.8044,0.176897,
+       0.02945,2.8044,0.176897,        0.02748,2.74905,0.165245,       0.053428,2.74905,0.158995,
+       0.077523,2.74905,0.148969,      0.083047,2.8044,0.159496,       0.057246,2.8044,0.170215,
+       0.057246,2.8044,0.170215,       0.053428,2.74905,0.158995,      0.077523,2.74905,0.148969,
+       0.099446,2.74905,0.135489,      0.106513,2.8044,0.145078,       0.083047,2.8044,0.159496,
+       0.083047,2.8044,0.159496,       0.077523,2.74905,0.148969,      0.099446,2.74905,0.135489,
+       0.118874,2.74905,0.118874,      0.127304,2.8044,0.127304,       0.106513,2.8044,0.145078,
+       0.106513,2.8044,0.145078,       0.099446,2.74905,0.135489,      0.118874,2.74905,0.118874,
+       0.135489,2.74905,0.099446,      0.145078,2.8044,0.106513,       0.127304,2.8044,0.127304,
+       0.127304,2.8044,0.127304,       0.118874,2.74905,0.118874,      0.135489,2.74905,0.099446,
+       0.148969,2.74905,0.077523,      0.159496,2.8044,0.083047,       0.145078,2.8044,0.106513,
+       0.145078,2.8044,0.106513,       0.135489,2.74905,0.099446,      0.148969,2.74905,0.077523,
+       0.158995,2.74905,0.053428,      0.170215,2.8044,0.057246,       0.159496,2.8044,0.083047,
+       0.159496,2.8044,0.083047,       0.148969,2.74905,0.077523,      0.158995,2.74905,0.053428,
+       0.165245,2.74905,0.02748,       0.176897,2.8044,0.02945,        0.170215,2.8044,0.057246,
+       0.170215,2.8044,0.057246,       0.158995,2.74905,0.053428,      0.165245,2.74905,0.02748,
+       0.1674,2.74905,0,       0.1792,2.8044,0,        0.176897,2.8044,0.02945,
+       0.176897,2.8044,0.02945,        0.165245,2.74905,0.02748,       0.1674,2.74905,0,
+       0.032816,2.7,0.197424,  0.02748,2.74905,0.165245,       0,2.74905,0.1674,
+       0,2.74905,0.1674,       0,2.7,0.2,      0.032816,2.7,0.197424,
+       0.063808,2.7,0.189952,  0.053428,2.74905,0.158995,      0.02748,2.74905,0.165245,
+       0.02748,2.74905,0.165245,       0.032816,2.7,0.197424,  0.063808,2.7,0.189952,
+       0.092592,2.7,0.177968,  0.077523,2.74905,0.148969,      0.053428,2.74905,0.158995,
+       0.053428,2.74905,0.158995,      0.063808,2.7,0.189952,  0.092592,2.7,0.177968,
+       0.118784,2.7,0.161856,  0.099446,2.74905,0.135489,      0.077523,2.74905,0.148969,
+       0.077523,2.74905,0.148969,      0.092592,2.7,0.177968,  0.118784,2.7,0.161856,
+       0.142,2.7,0.142,        0.118874,2.74905,0.118874,      0.099446,2.74905,0.135489,
+       0.099446,2.74905,0.135489,      0.118784,2.7,0.161856,  0.142,2.7,0.142,
+       0.161856,2.7,0.118784,  0.135489,2.74905,0.099446,      0.118874,2.74905,0.118874,
+       0.118874,2.74905,0.118874,      0.142,2.7,0.142,        0.161856,2.7,0.118784,
+       0.177968,2.7,0.092592,  0.148969,2.74905,0.077523,      0.135489,2.74905,0.099446,
+       0.135489,2.74905,0.099446,      0.161856,2.7,0.118784,  0.177968,2.7,0.092592,
+       0.189952,2.7,0.063808,  0.158995,2.74905,0.053428,      0.148969,2.74905,0.077523,
+       0.148969,2.74905,0.077523,      0.177968,2.7,0.092592,  0.189952,2.7,0.063808,
+       0.197424,2.7,0.032816,  0.165245,2.74905,0.02748,       0.158995,2.74905,0.053428,
+       0.158995,2.74905,0.053428,      0.189952,2.7,0.063808,  0.197424,2.7,0.032816,
+       0.2,2.7,0,      0.1674,2.74905,0,       0.165245,2.74905,0.02748,
+       0.165245,2.74905,0.02748,       0.197424,2.7,0.032816,  0.2,2.7,0,
+       0.275801,2.6592,-0.045844,      0.197424,2.7,-0.032816, 0.2,2.7,0,
+       0.2,2.7,0,      0.2794,2.6592,0,        0.275801,2.6592,-0.045844,
+       0.265363,2.6592,-0.08914,       0.189952,2.7,-0.063808, 0.197424,2.7,-0.032816,
+       0.197424,2.7,-0.032816, 0.275801,2.6592,-0.045844,      0.265363,2.6592,-0.08914,
+       0.248621,2.6592,-0.129351,      0.177968,2.7,-0.092592, 0.189952,2.7,-0.063808,
+       0.189952,2.7,-0.063808, 0.265363,2.6592,-0.08914,       0.248621,2.6592,-0.129351,
+       0.226113,2.6592,-0.165941,      0.161856,2.7,-0.118784, 0.177968,2.7,-0.092592,
+       0.177968,2.7,-0.092592, 0.248621,2.6592,-0.129351,      0.226113,2.6592,-0.165941,
+       0.198374,2.6592,-0.198374,      0.142,2.7,-0.142,       0.161856,2.7,-0.118784,
+       0.161856,2.7,-0.118784, 0.226113,2.6592,-0.165941,      0.198374,2.6592,-0.198374,
+       0.165941,2.6592,-0.226113,      0.118784,2.7,-0.161856, 0.142,2.7,-0.142,
+       0.142,2.7,-0.142,       0.198374,2.6592,-0.198374,      0.165941,2.6592,-0.226113,
+       0.129351,2.6592,-0.248621,      0.092592,2.7,-0.177968, 0.118784,2.7,-0.161856,
+       0.118784,2.7,-0.161856, 0.165941,2.6592,-0.226113,      0.129351,2.6592,-0.248621,
+       0.08914,2.6592,-0.265363,       0.063808,2.7,-0.189952, 0.092592,2.7,-0.177968,
+       0.092592,2.7,-0.177968, 0.129351,2.6592,-0.248621,      0.08914,2.6592,-0.265363,
+       0.045844,2.6592,-0.275801,      0.032816,2.7,-0.197424, 0.063808,2.7,-0.189952,
+       0.063808,2.7,-0.189952, 0.08914,2.6592,-0.265363,       0.045844,2.6592,-0.275801,
+       0,2.6592,-0.2794,       0,2.7,-0.2,     0.032816,2.7,-0.197424,
+       0.032816,2.7,-0.197424, 0.045844,2.6592,-0.275801,      0,2.6592,-0.2794,
+       0.386161,2.6256,-0.064188,      0.275801,2.6592,-0.045844,      0.2794,2.6592,0,
+       0.2794,2.6592,0,        0.3912,2.6256,0,        0.386161,2.6256,-0.064188,
+       0.371546,2.6256,-0.124808,      0.265363,2.6592,-0.08914,       0.275801,2.6592,-0.045844,
+       0.275801,2.6592,-0.045844,      0.386161,2.6256,-0.064188,      0.371546,2.6256,-0.124808,
+       0.348105,2.6256,-0.18111,       0.248621,2.6592,-0.129351,      0.265363,2.6592,-0.08914,
+       0.265363,2.6592,-0.08914,       0.371546,2.6256,-0.124808,      0.348105,2.6256,-0.18111,
+       0.31659,2.6256,-0.232342,       0.226113,2.6592,-0.165941,      0.248621,2.6592,-0.129351,
+       0.248621,2.6592,-0.129351,      0.348105,2.6256,-0.18111,       0.31659,2.6256,-0.232342,
+       0.277752,2.6256,-0.277752,      0.198374,2.6592,-0.198374,      0.226113,2.6592,-0.165941,
+       0.226113,2.6592,-0.165941,      0.31659,2.6256,-0.232342,       0.277752,2.6256,-0.277752,
+       0.232342,2.6256,-0.31659,       0.165941,2.6592,-0.226113,      0.198374,2.6592,-0.198374,
+       0.198374,2.6592,-0.198374,      0.277752,2.6256,-0.277752,      0.232342,2.6256,-0.31659,
+       0.18111,2.6256,-0.348105,       0.129351,2.6592,-0.248621,      0.165941,2.6592,-0.226113,
+       0.165941,2.6592,-0.226113,      0.232342,2.6256,-0.31659,       0.18111,2.6256,-0.348105,
+       0.124808,2.6256,-0.371546,      0.08914,2.6592,-0.265363,       0.129351,2.6592,-0.248621,
+       0.129351,2.6592,-0.248621,      0.18111,2.6256,-0.348105,       0.124808,2.6256,-0.371546,
+       0.064188,2.6256,-0.386161,      0.045844,2.6592,-0.275801,      0.08914,2.6592,-0.265363,
+       0.08914,2.6592,-0.265363,       0.124808,2.6256,-0.371546,      0.064188,2.6256,-0.386161,
+       0,2.6256,-0.3912,       0,2.6592,-0.2794,       0.045844,2.6592,-0.275801,
+       0.045844,2.6592,-0.275801,      0.064188,2.6256,-0.386161,      0,2.6256,-0.3912,
+       0.519028,2.5974,-0.086273,      0.386161,2.6256,-0.064188,      0.3912,2.6256,0,
+       0.3912,2.6256,0,        0.5258,2.5974,0,        0.519028,2.5974,-0.086273,
+       0.499384,2.5974,-0.167751,      0.371546,2.6256,-0.124808,      0.386161,2.6256,-0.064188,
+       0.386161,2.6256,-0.064188,      0.519028,2.5974,-0.086273,      0.499384,2.5974,-0.167751,
+       0.467878,2.5974,-0.243424,      0.348105,2.6256,-0.18111,       0.371546,2.6256,-0.124808,
+       0.371546,2.6256,-0.124808,      0.499384,2.5974,-0.167751,      0.467878,2.5974,-0.243424,
+       0.425519,2.5974,-0.312283,      0.31659,2.6256,-0.232342,       0.348105,2.6256,-0.18111,
+       0.348105,2.6256,-0.18111,       0.467878,2.5974,-0.243424,      0.425519,2.5974,-0.312283,
+       0.373318,2.5974,-0.373318,      0.277752,2.6256,-0.277752,      0.31659,2.6256,-0.232342,
+       0.31659,2.6256,-0.232342,       0.425519,2.5974,-0.312283,      0.373318,2.5974,-0.373318,
+       0.312283,2.5974,-0.425519,      0.232342,2.6256,-0.31659,       0.277752,2.6256,-0.277752,
+       0.277752,2.6256,-0.277752,      0.373318,2.5974,-0.373318,      0.312283,2.5974,-0.425519,
+       0.243424,2.5974,-0.467878,      0.18111,2.6256,-0.348105,       0.232342,2.6256,-0.31659,
+       0.232342,2.6256,-0.31659,       0.312283,2.5974,-0.425519,      0.243424,2.5974,-0.467878,
+       0.167751,2.5974,-0.499384,      0.124808,2.6256,-0.371546,      0.18111,2.6256,-0.348105,
+       0.18111,2.6256,-0.348105,       0.243424,2.5974,-0.467878,      0.167751,2.5974,-0.499384,
+       0.086273,2.5974,-0.519028,      0.064188,2.6256,-0.386161,      0.124808,2.6256,-0.371546,
+       0.124808,2.6256,-0.371546,      0.167751,2.5974,-0.499384,      0.086273,2.5974,-0.519028,
+       0,2.5974,-0.5258,       0,2.6256,-0.3912,       0.064188,2.6256,-0.386161,
+       0.064188,2.6256,-0.386161,      0.086273,2.5974,-0.519028,      0,2.5974,-0.5258,
+       0.664924,2.5728,-0.110524,      0.519028,2.5974,-0.086273,      0.5258,2.5974,0,
+       0.5258,2.5974,0,        0.6736,2.5728,0,        0.664924,2.5728,-0.110524,
+       0.639758,2.5728,-0.214905,      0.499384,2.5974,-0.167751,      0.519028,2.5974,-0.086273,
+       0.519028,2.5974,-0.086273,      0.664924,2.5728,-0.110524,      0.639758,2.5728,-0.214905,
+       0.599396,2.5728,-0.31185,       0.467878,2.5974,-0.243424,      0.499384,2.5974,-0.167751,
+       0.499384,2.5974,-0.167751,      0.639758,2.5728,-0.214905,      0.599396,2.5728,-0.31185,
+       0.545131,2.5728,-0.400065,      0.425519,2.5974,-0.312283,      0.467878,2.5974,-0.243424,
+       0.467878,2.5974,-0.243424,      0.599396,2.5728,-0.31185,       0.545131,2.5728,-0.400065,
+       0.478256,2.5728,-0.478256,      0.373318,2.5974,-0.373318,      0.425519,2.5974,-0.312283,
+       0.425519,2.5974,-0.312283,      0.545131,2.5728,-0.400065,      0.478256,2.5728,-0.478256,
+       0.400065,2.5728,-0.545131,      0.312283,2.5974,-0.425519,      0.373318,2.5974,-0.373318,
+       0.373318,2.5974,-0.373318,      0.478256,2.5728,-0.478256,      0.400065,2.5728,-0.545131,
+       0.31185,2.5728,-0.599396,       0.243424,2.5974,-0.467878,      0.312283,2.5974,-0.425519,
+       0.312283,2.5974,-0.425519,      0.400065,2.5728,-0.545131,      0.31185,2.5728,-0.599396,
+       0.214905,2.5728,-0.639758,      0.167751,2.5974,-0.499384,      0.243424,2.5974,-0.467878,
+       0.243424,2.5974,-0.467878,      0.31185,2.5728,-0.599396,       0.214905,2.5728,-0.639758,
+       0.110524,2.5728,-0.664924,      0.086273,2.5974,-0.519028,      0.167751,2.5974,-0.499384,
+       0.167751,2.5974,-0.499384,      0.214905,2.5728,-0.639758,      0.110524,2.5728,-0.664924,
+       0,2.5728,-0.6736,       0,2.5974,-0.5258,       0.086273,2.5974,-0.519028,
+       0.086273,2.5974,-0.519028,      0.110524,2.5728,-0.664924,      0,2.5728,-0.6736,
+       0.814374,2.55,-0.135366,        0.664924,2.5728,-0.110524,      0.6736,2.5728,0,
+       0.6736,2.5728,0,        0.825,2.55,0,   0.814374,2.55,-0.135366,
+       0.783552,2.55,-0.263208,        0.639758,2.5728,-0.214905,      0.664924,2.5728,-0.110524,
+       0.664924,2.5728,-0.110524,      0.814374,2.55,-0.135366,        0.783552,2.55,-0.263208,
+       0.734118,2.55,-0.381942,        0.599396,2.5728,-0.31185,       0.639758,2.5728,-0.214905,
+       0.639758,2.5728,-0.214905,      0.783552,2.55,-0.263208,        0.734118,2.55,-0.381942,
+       0.667656,2.55,-0.489984,        0.545131,2.5728,-0.400065,      0.599396,2.5728,-0.31185,
+       0.599396,2.5728,-0.31185,       0.734118,2.55,-0.381942,        0.667656,2.55,-0.489984,
+       0.58575,2.55,-0.58575,  0.478256,2.5728,-0.478256,      0.545131,2.5728,-0.400065,
+       0.545131,2.5728,-0.400065,      0.667656,2.55,-0.489984,        0.58575,2.55,-0.58575,
+       0.489984,2.55,-0.667656,        0.400065,2.5728,-0.545131,      0.478256,2.5728,-0.478256,
+       0.478256,2.5728,-0.478256,      0.58575,2.55,-0.58575,  0.489984,2.55,-0.667656,
+       0.381942,2.55,-0.734118,        0.31185,2.5728,-0.599396,       0.400065,2.5728,-0.545131,
+       0.400065,2.5728,-0.545131,      0.489984,2.55,-0.667656,        0.381942,2.55,-0.734118,
+       0.263208,2.55,-0.783552,        0.214905,2.5728,-0.639758,      0.31185,2.5728,-0.599396,
+       0.31185,2.5728,-0.599396,       0.381942,2.55,-0.734118,        0.263208,2.55,-0.783552,
+       0.135366,2.55,-0.814374,        0.110524,2.5728,-0.664924,      0.214905,2.5728,-0.639758,
+       0.214905,2.5728,-0.639758,      0.263208,2.55,-0.783552,        0.135366,2.55,-0.814374,
+       0,2.55,-0.825,  0,2.5728,-0.6736,       0.110524,2.5728,-0.664924,
+       0.110524,2.5728,-0.664924,      0.135366,2.55,-0.814374,        0,2.55,-0.825,
+       0.957901,2.5272,-0.159223,      0.814374,2.55,-0.135366,        0.825,2.55,0,
+       0.825,2.55,0,   0.9704,2.5272,0,        0.957901,2.5272,-0.159223,
+       0.921647,2.5272,-0.309596,      0.783552,2.55,-0.263208,        0.814374,2.55,-0.135366,
+       0.814374,2.55,-0.135366,        0.957901,2.5272,-0.159223,      0.921647,2.5272,-0.309596,
+       0.863501,2.5272,-0.449256,      0.734118,2.55,-0.381942,        0.783552,2.55,-0.263208,
+       0.783552,2.55,-0.263208,        0.921647,2.5272,-0.309596,      0.863501,2.5272,-0.449256,
+       0.785325,2.5272,-0.57634,       0.667656,2.55,-0.489984,        0.734118,2.55,-0.381942,
+       0.734118,2.55,-0.381942,        0.863501,2.5272,-0.449256,      0.785325,2.5272,-0.57634,
+       0.688984,2.5272,-0.688984,      0.58575,2.55,-0.58575,  0.667656,2.55,-0.489984,
+       0.667656,2.55,-0.489984,        0.785325,2.5272,-0.57634,       0.688984,2.5272,-0.688984,
+       0.57634,2.5272,-0.785325,       0.489984,2.55,-0.667656,        0.58575,2.55,-0.58575,
+       0.58575,2.55,-0.58575,  0.688984,2.5272,-0.688984,      0.57634,2.5272,-0.785325,
+       0.449256,2.5272,-0.863501,      0.381942,2.55,-0.734118,        0.489984,2.55,-0.667656,
+       0.489984,2.55,-0.667656,        0.57634,2.5272,-0.785325,       0.449256,2.5272,-0.863501,
+       0.309596,2.5272,-0.921647,      0.263208,2.55,-0.783552,        0.381942,2.55,-0.734118,
+       0.381942,2.55,-0.734118,        0.449256,2.5272,-0.863501,      0.309596,2.5272,-0.921647,
+       0.159223,2.5272,-0.957901,      0.135366,2.55,-0.814374,        0.263208,2.55,-0.783552,
+       0.263208,2.55,-0.783552,        0.309596,2.5272,-0.921647,      0.159223,2.5272,-0.957901,
+       0,2.5272,-0.9704,       0,2.55,-0.825,  0.135366,2.55,-0.814374,
+       0.135366,2.55,-0.814374,        0.159223,2.5272,-0.957901,      0,2.5272,-0.9704,
+       1.086029,2.5026,-0.180521,      0.957901,2.5272,-0.159223,      0.9704,2.5272,0,
+       0.9704,2.5272,0,        1.1002,2.5026,0,        1.086029,2.5026,-0.180521,
+       1.044926,2.5026,-0.351008,      0.921647,2.5272,-0.309596,      0.957901,2.5272,-0.159223,
+       0.957901,2.5272,-0.159223,      1.086029,2.5026,-0.180521,      1.044926,2.5026,-0.351008,
+       0.979002,2.5026,-0.509349,      0.863501,2.5272,-0.449256,      0.921647,2.5272,-0.309596,
+       0.921647,2.5272,-0.309596,      1.044926,2.5026,-0.351008,      0.979002,2.5026,-0.509349,
+       0.89037,2.5026,-0.653431,       0.785325,2.5272,-0.57634,       0.863501,2.5272,-0.449256,
+       0.863501,2.5272,-0.449256,      0.979002,2.5026,-0.509349,      0.89037,2.5026,-0.653431,
+       0.781142,2.5026,-0.781142,      0.688984,2.5272,-0.688984,      0.785325,2.5272,-0.57634,
+       0.785325,2.5272,-0.57634,       0.89037,2.5026,-0.653431,       0.781142,2.5026,-0.781142,
+       0.653431,2.5026,-0.89037,       0.57634,2.5272,-0.785325,       0.688984,2.5272,-0.688984,
+       0.688984,2.5272,-0.688984,      0.781142,2.5026,-0.781142,      0.653431,2.5026,-0.89037,
+       0.509349,2.5026,-0.979002,      0.449256,2.5272,-0.863501,      0.57634,2.5272,-0.785325,
+       0.57634,2.5272,-0.785325,       0.653431,2.5026,-0.89037,       0.509349,2.5026,-0.979002,
+       0.351008,2.5026,-1.044926,      0.309596,2.5272,-0.921647,      0.449256,2.5272,-0.863501,
+       0.449256,2.5272,-0.863501,      0.509349,2.5026,-0.979002,      0.351008,2.5026,-1.044926,
+       0.180521,2.5026,-1.086029,      0.159223,2.5272,-0.957901,      0.309596,2.5272,-0.921647,
+       0.309596,2.5272,-0.921647,      0.351008,2.5026,-1.044926,      0.180521,2.5026,-1.086029,
+       0,2.5026,-1.1002,       0,2.5272,-0.9704,       0.159223,2.5272,-0.957901,
+       0.159223,2.5272,-0.957901,      0.180521,2.5026,-1.086029,      0,2.5026,-1.1002,
+       1.189282,2.4744,-0.197684,      1.086029,2.5026,-0.180521,      1.1002,2.5026,0,
+       1.1002,2.5026,0,        1.2048,2.4744,0,        1.189282,2.4744,-0.197684,
+       1.144271,2.4744,-0.384379,      1.044926,2.5026,-0.351008,      1.086029,2.5026,-0.180521,
+       1.086029,2.5026,-0.180521,      1.189282,2.4744,-0.197684,      1.144271,2.4744,-0.384379,
+       1.072079,2.4744,-0.557774,      0.979002,2.5026,-0.509349,      1.044926,2.5026,-0.351008,
+       1.044926,2.5026,-0.351008,      1.144271,2.4744,-0.384379,      1.072079,2.4744,-0.557774,
+       0.975021,2.4744,-0.715555,      0.89037,2.5026,-0.653431,       0.979002,2.5026,-0.509349,
+       0.979002,2.5026,-0.509349,      1.072079,2.4744,-0.557774,      0.975021,2.4744,-0.715555,
+       0.855408,2.4744,-0.855408,      0.781142,2.5026,-0.781142,      0.89037,2.5026,-0.653431,
+       0.89037,2.5026,-0.653431,       0.975021,2.4744,-0.715555,      0.855408,2.4744,-0.855408,
+       0.715555,2.4744,-0.975021,      0.653431,2.5026,-0.89037,       0.781142,2.5026,-0.781142,
+       0.781142,2.5026,-0.781142,      0.855408,2.4744,-0.855408,      0.715555,2.4744,-0.975021,
+       0.557774,2.4744,-1.072079,      0.509349,2.5026,-0.979002,      0.653431,2.5026,-0.89037,
+       0.653431,2.5026,-0.89037,       0.715555,2.4744,-0.975021,      0.557774,2.4744,-1.072079,
+       0.384379,2.4744,-1.144271,      0.351008,2.5026,-1.044926,      0.509349,2.5026,-0.979002,
+       0.509349,2.5026,-0.979002,      0.557774,2.4744,-1.072079,      0.384379,2.4744,-1.144271,
+       0.197684,2.4744,-1.189282,      0.180521,2.5026,-1.086029,      0.351008,2.5026,-1.044926,
+       0.351008,2.5026,-1.044926,      0.384379,2.4744,-1.144271,      0.197684,2.4744,-1.189282,
+       0,2.4744,-1.2048,       0,2.5026,-1.1002,       0.180521,2.5026,-1.086029,
+       0.180521,2.5026,-1.086029,      0.197684,2.4744,-1.189282,      0,2.4744,-1.2048,
+       1.258183,2.4408,-0.209136,      1.189282,2.4744,-0.197684,      1.2048,2.4744,0,
+       1.2048,2.4744,0,        1.2746,2.4408,0,        1.258183,2.4408,-0.209136,
+       1.210564,2.4408,-0.406648,      1.144271,2.4744,-0.384379,      1.189282,2.4744,-0.197684,
+       1.189282,2.4744,-0.197684,      1.258183,2.4408,-0.209136,      1.210564,2.4408,-0.406648,
+       1.13419,2.4408,-0.590089,       1.072079,2.4744,-0.557774,      1.144271,2.4744,-0.384379,
+       1.144271,2.4744,-0.384379,      1.210564,2.4408,-0.406648,      1.13419,2.4408,-0.590089,
+       1.031508,2.4408,-0.75701,       0.975021,2.4744,-0.715555,      1.072079,2.4744,-0.557774,
+       1.072079,2.4744,-0.557774,      1.13419,2.4408,-0.590089,       1.031508,2.4408,-0.75701,
+       0.904966,2.4408,-0.904966,      0.855408,2.4744,-0.855408,      0.975021,2.4744,-0.715555,
+       0.975021,2.4744,-0.715555,      1.031508,2.4408,-0.75701,       0.904966,2.4408,-0.904966,
+       0.75701,2.4408,-1.031508,       0.715555,2.4744,-0.975021,      0.855408,2.4744,-0.855408,
+       0.855408,2.4744,-0.855408,      0.904966,2.4408,-0.904966,      0.75701,2.4408,-1.031508,
+       0.590089,2.4408,-1.13419,       0.557774,2.4744,-1.072079,      0.715555,2.4744,-0.975021,
+       0.715555,2.4744,-0.975021,      0.75701,2.4408,-1.031508,       0.590089,2.4408,-1.13419,
+       0.406648,2.4408,-1.210564,      0.384379,2.4744,-1.144271,      0.557774,2.4744,-1.072079,
+       0.557774,2.4744,-1.072079,      0.590089,2.4408,-1.13419,       0.406648,2.4408,-1.210564,
+       0.209136,2.4408,-1.258183,      0.197684,2.4744,-1.189282,      0.384379,2.4744,-1.144271,
+       0.384379,2.4744,-1.144271,      0.406648,2.4408,-1.210564,      0.209136,2.4408,-1.258183,
+       0,2.4408,-1.2746,       0,2.4744,-1.2048,       0.197684,2.4744,-1.189282,
+       0.197684,2.4744,-1.189282,      0.209136,2.4408,-1.258183,      0,2.4408,-1.2746,
+       1.283256,2.4,-0.213304, 1.258183,2.4408,-0.209136,      1.2746,2.4408,0,
+       1.2746,2.4408,0,        1.3,2.4,0,      1.283256,2.4,-0.213304,
+       1.234688,2.4,-0.414752, 1.210564,2.4408,-0.406648,      1.258183,2.4408,-0.209136,
+       1.258183,2.4408,-0.209136,      1.283256,2.4,-0.213304, 1.234688,2.4,-0.414752,
+       1.156792,2.4,-0.601848, 1.13419,2.4408,-0.590089,       1.210564,2.4408,-0.406648,
+       1.210564,2.4408,-0.406648,      1.234688,2.4,-0.414752, 1.156792,2.4,-0.601848,
+       1.052064,2.4,-0.772096, 1.031508,2.4408,-0.75701,       1.13419,2.4408,-0.590089,
+       1.13419,2.4408,-0.590089,       1.156792,2.4,-0.601848, 1.052064,2.4,-0.772096,
+       0.923,2.4,-0.923,       0.904966,2.4408,-0.904966,      1.031508,2.4408,-0.75701,
+       1.031508,2.4408,-0.75701,       1.052064,2.4,-0.772096, 0.923,2.4,-0.923,
+       0.772096,2.4,-1.052064, 0.75701,2.4408,-1.031508,       0.904966,2.4408,-0.904966,
+       0.904966,2.4408,-0.904966,      0.923,2.4,-0.923,       0.772096,2.4,-1.052064,
+       0.601848,2.4,-1.156792, 0.590089,2.4408,-1.13419,       0.75701,2.4408,-1.031508,
+       0.75701,2.4408,-1.031508,       0.772096,2.4,-1.052064, 0.601848,2.4,-1.156792,
+       0.414752,2.4,-1.234688, 0.406648,2.4408,-1.210564,      0.590089,2.4408,-1.13419,
+       0.590089,2.4408,-1.13419,       0.601848,2.4,-1.156792, 0.414752,2.4,-1.234688,
+       0.213304,2.4,-1.283256, 0.209136,2.4408,-1.258183,      0.406648,2.4408,-1.210564,
+       0.406648,2.4408,-1.210564,      0.414752,2.4,-1.234688, 0.213304,2.4,-1.283256,
+       0,2.4,-1.3,     0,2.4408,-1.2746,       0.209136,2.4408,-1.258183,
+       0.209136,2.4408,-1.258183,      0.213304,2.4,-1.283256, 0,2.4,-1.3,
+       -0.045844,2.6592,-0.275801,     -0.032816,2.7,-0.197424,        0,2.7,-0.2,
+       0,2.7,-0.2,     0,2.6592,-0.2794,       -0.045844,2.6592,-0.275801,
+       -0.08914,2.6592,-0.265363,      -0.063808,2.7,-0.189952,        -0.032816,2.7,-0.197424,
+       -0.032816,2.7,-0.197424,        -0.045844,2.6592,-0.275801,     -0.08914,2.6592,-0.265363,
+       -0.129351,2.6592,-0.248621,     -0.092592,2.7,-0.177968,        -0.063808,2.7,-0.189952,
+       -0.063808,2.7,-0.189952,        -0.08914,2.6592,-0.265363,      -0.129351,2.6592,-0.248621,
+       -0.165941,2.6592,-0.226113,     -0.118784,2.7,-0.161856,        -0.092592,2.7,-0.177968,
+       -0.092592,2.7,-0.177968,        -0.129351,2.6592,-0.248621,     -0.165941,2.6592,-0.226113,
+       -0.198374,2.6592,-0.198374,     -0.142,2.7,-0.142,      -0.118784,2.7,-0.161856,
+       -0.118784,2.7,-0.161856,        -0.165941,2.6592,-0.226113,     -0.198374,2.6592,-0.198374,
+       -0.226113,2.6592,-0.165941,     -0.161856,2.7,-0.118784,        -0.142,2.7,-0.142,
+       -0.142,2.7,-0.142,      -0.198374,2.6592,-0.198374,     -0.226113,2.6592,-0.165941,
+       -0.248621,2.6592,-0.129351,     -0.177968,2.7,-0.092592,        -0.161856,2.7,-0.118784,
+       -0.161856,2.7,-0.118784,        -0.226113,2.6592,-0.165941,     -0.248621,2.6592,-0.129351,
+       -0.265363,2.6592,-0.08914,      -0.189952,2.7,-0.063808,        -0.177968,2.7,-0.092592,
+       -0.177968,2.7,-0.092592,        -0.248621,2.6592,-0.129351,     -0.265363,2.6592,-0.08914,
+       -0.275801,2.6592,-0.045844,     -0.197424,2.7,-0.032816,        -0.189952,2.7,-0.063808,
+       -0.189952,2.7,-0.063808,        -0.265363,2.6592,-0.08914,      -0.275801,2.6592,-0.045844,
+       -0.2794,2.6592,0,       -0.2,2.7,0,     -0.197424,2.7,-0.032816,
+       -0.197424,2.7,-0.032816,        -0.275801,2.6592,-0.045844,     -0.2794,2.6592,0,
+       -0.064188,2.6256,-0.386161,     -0.045844,2.6592,-0.275801,     0,2.6592,-0.2794,
+       0,2.6592,-0.2794,       0,2.6256,-0.3912,       -0.064188,2.6256,-0.386161,
+       -0.124808,2.6256,-0.371546,     -0.08914,2.6592,-0.265363,      -0.045844,2.6592,-0.275801,
+       -0.045844,2.6592,-0.275801,     -0.064188,2.6256,-0.386161,     -0.124808,2.6256,-0.371546,
+       -0.18111,2.6256,-0.348105,      -0.129351,2.6592,-0.248621,     -0.08914,2.6592,-0.265363,
+       -0.08914,2.6592,-0.265363,      -0.124808,2.6256,-0.371546,     -0.18111,2.6256,-0.348105,
+       -0.232342,2.6256,-0.31659,      -0.165941,2.6592,-0.226113,     -0.129351,2.6592,-0.248621,
+       -0.129351,2.6592,-0.248621,     -0.18111,2.6256,-0.348105,      -0.232342,2.6256,-0.31659,
+       -0.277752,2.6256,-0.277752,     -0.198374,2.6592,-0.198374,     -0.165941,2.6592,-0.226113,
+       -0.165941,2.6592,-0.226113,     -0.232342,2.6256,-0.31659,      -0.277752,2.6256,-0.277752,
+       -0.31659,2.6256,-0.232342,      -0.226113,2.6592,-0.165941,     -0.198374,2.6592,-0.198374,
+       -0.198374,2.6592,-0.198374,     -0.277752,2.6256,-0.277752,     -0.31659,2.6256,-0.232342,
+       -0.348105,2.6256,-0.18111,      -0.248621,2.6592,-0.129351,     -0.226113,2.6592,-0.165941,
+       -0.226113,2.6592,-0.165941,     -0.31659,2.6256,-0.232342,      -0.348105,2.6256,-0.18111,
+       -0.371546,2.6256,-0.124808,     -0.265363,2.6592,-0.08914,      -0.248621,2.6592,-0.129351,
+       -0.248621,2.6592,-0.129351,     -0.348105,2.6256,-0.18111,      -0.371546,2.6256,-0.124808,
+       -0.386161,2.6256,-0.064188,     -0.275801,2.6592,-0.045844,     -0.265363,2.6592,-0.08914,
+       -0.265363,2.6592,-0.08914,      -0.371546,2.6256,-0.124808,     -0.386161,2.6256,-0.064188,
+       -0.3912,2.6256,0,       -0.2794,2.6592,0,       -0.275801,2.6592,-0.045844,
+       -0.275801,2.6592,-0.045844,     -0.386161,2.6256,-0.064188,     -0.3912,2.6256,0,
+       -0.086273,2.5974,-0.519028,     -0.064188,2.6256,-0.386161,     0,2.6256,-0.3912,
+       0,2.6256,-0.3912,       0,2.5974,-0.5258,       -0.086273,2.5974,-0.519028,
+       -0.167751,2.5974,-0.499384,     -0.124808,2.6256,-0.371546,     -0.064188,2.6256,-0.386161,
+       -0.064188,2.6256,-0.386161,     -0.086273,2.5974,-0.519028,     -0.167751,2.5974,-0.499384,
+       -0.243424,2.5974,-0.467878,     -0.18111,2.6256,-0.348105,      -0.124808,2.6256,-0.371546,
+       -0.124808,2.6256,-0.371546,     -0.167751,2.5974,-0.499384,     -0.243424,2.5974,-0.467878,
+       -0.312283,2.5974,-0.425519,     -0.232342,2.6256,-0.31659,      -0.18111,2.6256,-0.348105,
+       -0.18111,2.6256,-0.348105,      -0.243424,2.5974,-0.467878,     -0.312283,2.5974,-0.425519,
+       -0.373318,2.5974,-0.373318,     -0.277752,2.6256,-0.277752,     -0.232342,2.6256,-0.31659,
+       -0.232342,2.6256,-0.31659,      -0.312283,2.5974,-0.425519,     -0.373318,2.5974,-0.373318,
+       -0.425519,2.5974,-0.312283,     -0.31659,2.6256,-0.232342,      -0.277752,2.6256,-0.277752,
+       -0.277752,2.6256,-0.277752,     -0.373318,2.5974,-0.373318,     -0.425519,2.5974,-0.312283,
+       -0.467878,2.5974,-0.243424,     -0.348105,2.6256,-0.18111,      -0.31659,2.6256,-0.232342,
+       -0.31659,2.6256,-0.232342,      -0.425519,2.5974,-0.312283,     -0.467878,2.5974,-0.243424,
+       -0.499384,2.5974,-0.167751,     -0.371546,2.6256,-0.124808,     -0.348105,2.6256,-0.18111,
+       -0.348105,2.6256,-0.18111,      -0.467878,2.5974,-0.243424,     -0.499384,2.5974,-0.167751,
+       -0.519028,2.5974,-0.086273,     -0.386161,2.6256,-0.064188,     -0.371546,2.6256,-0.124808,
+       -0.371546,2.6256,-0.124808,     -0.499384,2.5974,-0.167751,     -0.519028,2.5974,-0.086273,
+       -0.5258,2.5974,0,       -0.3912,2.6256,0,       -0.386161,2.6256,-0.064188,
+       -0.386161,2.6256,-0.064188,     -0.519028,2.5974,-0.086273,     -0.5258,2.5974,0,
+       -0.110524,2.5728,-0.664924,     -0.086273,2.5974,-0.519028,     0,2.5974,-0.5258,
+       0,2.5974,-0.5258,       0,2.5728,-0.6736,       -0.110524,2.5728,-0.664924,
+       -0.214905,2.5728,-0.639758,     -0.167751,2.5974,-0.499384,     -0.086273,2.5974,-0.519028,
+       -0.086273,2.5974,-0.519028,     -0.110524,2.5728,-0.664924,     -0.214905,2.5728,-0.639758,
+       -0.31185,2.5728,-0.599396,      -0.243424,2.5974,-0.467878,     -0.167751,2.5974,-0.499384,
+       -0.167751,2.5974,-0.499384,     -0.214905,2.5728,-0.639758,     -0.31185,2.5728,-0.599396,
+       -0.400065,2.5728,-0.545131,     -0.312283,2.5974,-0.425519,     -0.243424,2.5974,-0.467878,
+       -0.243424,2.5974,-0.467878,     -0.31185,2.5728,-0.599396,      -0.400065,2.5728,-0.545131,
+       -0.478256,2.5728,-0.478256,     -0.373318,2.5974,-0.373318,     -0.312283,2.5974,-0.425519,
+       -0.312283,2.5974,-0.425519,     -0.400065,2.5728,-0.545131,     -0.478256,2.5728,-0.478256,
+       -0.545131,2.5728,-0.400065,     -0.425519,2.5974,-0.312283,     -0.373318,2.5974,-0.373318,
+       -0.373318,2.5974,-0.373318,     -0.478256,2.5728,-0.478256,     -0.545131,2.5728,-0.400065,
+       -0.599396,2.5728,-0.31185,      -0.467878,2.5974,-0.243424,     -0.425519,2.5974,-0.312283,
+       -0.425519,2.5974,-0.312283,     -0.545131,2.5728,-0.400065,     -0.599396,2.5728,-0.31185,
+       -0.639758,2.5728,-0.214905,     -0.499384,2.5974,-0.167751,     -0.467878,2.5974,-0.243424,
+       -0.467878,2.5974,-0.243424,     -0.599396,2.5728,-0.31185,      -0.639758,2.5728,-0.214905,
+       -0.664924,2.5728,-0.110524,     -0.519028,2.5974,-0.086273,     -0.499384,2.5974,-0.167751,
+       -0.499384,2.5974,-0.167751,     -0.639758,2.5728,-0.214905,     -0.664924,2.5728,-0.110524,
+       -0.6736,2.5728,0,       -0.5258,2.5974,0,       -0.519028,2.5974,-0.086273,
+       -0.519028,2.5974,-0.086273,     -0.664924,2.5728,-0.110524,     -0.6736,2.5728,0,
+       -0.135366,2.55,-0.814374,       -0.110524,2.5728,-0.664924,     0,2.5728,-0.6736,
+       0,2.5728,-0.6736,       0,2.55,-0.825,  -0.135366,2.55,-0.814374,
+       -0.263208,2.55,-0.783552,       -0.214905,2.5728,-0.639758,     -0.110524,2.5728,-0.664924,
+       -0.110524,2.5728,-0.664924,     -0.135366,2.55,-0.814374,       -0.263208,2.55,-0.783552,
+       -0.381942,2.55,-0.734118,       -0.31185,2.5728,-0.599396,      -0.214905,2.5728,-0.639758,
+       -0.214905,2.5728,-0.639758,     -0.263208,2.55,-0.783552,       -0.381942,2.55,-0.734118,
+       -0.489984,2.55,-0.667656,       -0.400065,2.5728,-0.545131,     -0.31185,2.5728,-0.599396,
+       -0.31185,2.5728,-0.599396,      -0.381942,2.55,-0.734118,       -0.489984,2.55,-0.667656,
+       -0.58575,2.55,-0.58575, -0.478256,2.5728,-0.478256,     -0.400065,2.5728,-0.545131,
+       -0.400065,2.5728,-0.545131,     -0.489984,2.55,-0.667656,       -0.58575,2.55,-0.58575,
+       -0.667656,2.55,-0.489984,       -0.545131,2.5728,-0.400065,     -0.478256,2.5728,-0.478256,
+       -0.478256,2.5728,-0.478256,     -0.58575,2.55,-0.58575, -0.667656,2.55,-0.489984,
+       -0.734118,2.55,-0.381942,       -0.599396,2.5728,-0.31185,      -0.545131,2.5728,-0.400065,
+       -0.545131,2.5728,-0.400065,     -0.667656,2.55,-0.489984,       -0.734118,2.55,-0.381942,
+       -0.783552,2.55,-0.263208,       -0.639758,2.5728,-0.214905,     -0.599396,2.5728,-0.31185,
+       -0.599396,2.5728,-0.31185,      -0.734118,2.55,-0.381942,       -0.783552,2.55,-0.263208,
+       -0.814374,2.55,-0.135366,       -0.664924,2.5728,-0.110524,     -0.639758,2.5728,-0.214905,
+       -0.639758,2.5728,-0.214905,     -0.783552,2.55,-0.263208,       -0.814374,2.55,-0.135366,
+       -0.825,2.55,0,  -0.6736,2.5728,0,       -0.664924,2.5728,-0.110524,
+       -0.664924,2.5728,-0.110524,     -0.814374,2.55,-0.135366,       -0.825,2.55,0,
+       -0.159223,2.5272,-0.957901,     -0.135366,2.55,-0.814374,       0,2.55,-0.825,
+       0,2.55,-0.825,  0,2.5272,-0.9704,       -0.159223,2.5272,-0.957901,
+       -0.309596,2.5272,-0.921647,     -0.263208,2.55,-0.783552,       -0.135366,2.55,-0.814374,
+       -0.135366,2.55,-0.814374,       -0.159223,2.5272,-0.957901,     -0.309596,2.5272,-0.921647,
+       -0.449256,2.5272,-0.863501,     -0.381942,2.55,-0.734118,       -0.263208,2.55,-0.783552,
+       -0.263208,2.55,-0.783552,       -0.309596,2.5272,-0.921647,     -0.449256,2.5272,-0.863501,
+       -0.57634,2.5272,-0.785325,      -0.489984,2.55,-0.667656,       -0.381942,2.55,-0.734118,
+       -0.381942,2.55,-0.734118,       -0.449256,2.5272,-0.863501,     -0.57634,2.5272,-0.785325,
+       -0.688984,2.5272,-0.688984,     -0.58575,2.55,-0.58575, -0.489984,2.55,-0.667656,
+       -0.489984,2.55,-0.667656,       -0.57634,2.5272,-0.785325,      -0.688984,2.5272,-0.688984,
+       -0.785325,2.5272,-0.57634,      -0.667656,2.55,-0.489984,       -0.58575,2.55,-0.58575,
+       -0.58575,2.55,-0.58575, -0.688984,2.5272,-0.688984,     -0.785325,2.5272,-0.57634,
+       -0.863501,2.5272,-0.449256,     -0.734118,2.55,-0.381942,       -0.667656,2.55,-0.489984,
+       -0.667656,2.55,-0.489984,       -0.785325,2.5272,-0.57634,      -0.863501,2.5272,-0.449256,
+       -0.921647,2.5272,-0.309596,     -0.783552,2.55,-0.263208,       -0.734118,2.55,-0.381942,
+       -0.734118,2.55,-0.381942,       -0.863501,2.5272,-0.449256,     -0.921647,2.5272,-0.309596,
+       -0.957901,2.5272,-0.159223,     -0.814374,2.55,-0.135366,       -0.783552,2.55,-0.263208,
+       -0.783552,2.55,-0.263208,       -0.921647,2.5272,-0.309596,     -0.957901,2.5272,-0.159223,
+       -0.9704,2.5272,0,       -0.825,2.55,0,  -0.814374,2.55,-0.135366,
+       -0.814374,2.55,-0.135366,       -0.957901,2.5272,-0.159223,     -0.9704,2.5272,0,
+       -0.180521,2.5026,-1.086029,     -0.159223,2.5272,-0.957901,     0,2.5272,-0.9704,
+       0,2.5272,-0.9704,       0,2.5026,-1.1002,       -0.180521,2.5026,-1.086029,
+       -0.351008,2.5026,-1.044926,     -0.309596,2.5272,-0.921647,     -0.159223,2.5272,-0.957901,
+       -0.159223,2.5272,-0.957901,     -0.180521,2.5026,-1.086029,     -0.351008,2.5026,-1.044926,
+       -0.509349,2.5026,-0.979002,     -0.449256,2.5272,-0.863501,     -0.309596,2.5272,-0.921647,
+       -0.309596,2.5272,-0.921647,     -0.351008,2.5026,-1.044926,     -0.509349,2.5026,-0.979002,
+       -0.653431,2.5026,-0.89037,      -0.57634,2.5272,-0.785325,      -0.449256,2.5272,-0.863501,
+       -0.449256,2.5272,-0.863501,     -0.509349,2.5026,-0.979002,     -0.653431,2.5026,-0.89037,
+       -0.781142,2.5026,-0.781142,     -0.688984,2.5272,-0.688984,     -0.57634,2.5272,-0.785325,
+       -0.57634,2.5272,-0.785325,      -0.653431,2.5026,-0.89037,      -0.781142,2.5026,-0.781142,
+       -0.89037,2.5026,-0.653431,      -0.785325,2.5272,-0.57634,      -0.688984,2.5272,-0.688984,
+       -0.688984,2.5272,-0.688984,     -0.781142,2.5026,-0.781142,     -0.89037,2.5026,-0.653431,
+       -0.979002,2.5026,-0.509349,     -0.863501,2.5272,-0.449256,     -0.785325,2.5272,-0.57634,
+       -0.785325,2.5272,-0.57634,      -0.89037,2.5026,-0.653431,      -0.979002,2.5026,-0.509349,
+       -1.044926,2.5026,-0.351008,     -0.921647,2.5272,-0.309596,     -0.863501,2.5272,-0.449256,
+       -0.863501,2.5272,-0.449256,     -0.979002,2.5026,-0.509349,     -1.044926,2.5026,-0.351008,
+       -1.086029,2.5026,-0.180521,     -0.957901,2.5272,-0.159223,     -0.921647,2.5272,-0.309596,
+       -0.921647,2.5272,-0.309596,     -1.044926,2.5026,-0.351008,     -1.086029,2.5026,-0.180521,
+       -1.1002,2.5026,0,       -0.9704,2.5272,0,       -0.957901,2.5272,-0.159223,
+       -0.957901,2.5272,-0.159223,     -1.086029,2.5026,-0.180521,     -1.1002,2.5026,0,
+       -0.197684,2.4744,-1.189282,     -0.180521,2.5026,-1.086029,     0,2.5026,-1.1002,
+       0,2.5026,-1.1002,       0,2.4744,-1.2048,       -0.197684,2.4744,-1.189282,
+       -0.384379,2.4744,-1.144271,     -0.351008,2.5026,-1.044926,     -0.180521,2.5026,-1.086029,
+       -0.180521,2.5026,-1.086029,     -0.197684,2.4744,-1.189282,     -0.384379,2.4744,-1.144271,
+       -0.557774,2.4744,-1.072079,     -0.509349,2.5026,-0.979002,     -0.351008,2.5026,-1.044926,
+       -0.351008,2.5026,-1.044926,     -0.384379,2.4744,-1.144271,     -0.557774,2.4744,-1.072079,
+       -0.715555,2.4744,-0.975021,     -0.653431,2.5026,-0.89037,      -0.509349,2.5026,-0.979002,
+       -0.509349,2.5026,-0.979002,     -0.557774,2.4744,-1.072079,     -0.715555,2.4744,-0.975021,
+       -0.855408,2.4744,-0.855408,     -0.781142,2.5026,-0.781142,     -0.653431,2.5026,-0.89037,
+       -0.653431,2.5026,-0.89037,      -0.715555,2.4744,-0.975021,     -0.855408,2.4744,-0.855408,
+       -0.975021,2.4744,-0.715555,     -0.89037,2.5026,-0.653431,      -0.781142,2.5026,-0.781142,
+       -0.781142,2.5026,-0.781142,     -0.855408,2.4744,-0.855408,     -0.975021,2.4744,-0.715555,
+       -1.072079,2.4744,-0.557774,     -0.979002,2.5026,-0.509349,     -0.89037,2.5026,-0.653431,
+       -0.89037,2.5026,-0.653431,      -0.975021,2.4744,-0.715555,     -1.072079,2.4744,-0.557774,
+       -1.144271,2.4744,-0.384379,     -1.044926,2.5026,-0.351008,     -0.979002,2.5026,-0.509349,
+       -0.979002,2.5026,-0.509349,     -1.072079,2.4744,-0.557774,     -1.144271,2.4744,-0.384379,
+       -1.189282,2.4744,-0.197684,     -1.086029,2.5026,-0.180521,     -1.044926,2.5026,-0.351008,
+       -1.044926,2.5026,-0.351008,     -1.144271,2.4744,-0.384379,     -1.189282,2.4744,-0.197684,
+       -1.2048,2.4744,0,       -1.1002,2.5026,0,       -1.086029,2.5026,-0.180521,
+       -1.086029,2.5026,-0.180521,     -1.189282,2.4744,-0.197684,     -1.2048,2.4744,0,
+       -0.209136,2.4408,-1.258183,     -0.197684,2.4744,-1.189282,     0,2.4744,-1.2048,
+       0,2.4744,-1.2048,       0,2.4408,-1.2746,       -0.209136,2.4408,-1.258183,
+       -0.406648,2.4408,-1.210564,     -0.384379,2.4744,-1.144271,     -0.197684,2.4744,-1.189282,
+       -0.197684,2.4744,-1.189282,     -0.209136,2.4408,-1.258183,     -0.406648,2.4408,-1.210564,
+       -0.590089,2.4408,-1.13419,      -0.557774,2.4744,-1.072079,     -0.384379,2.4744,-1.144271,
+       -0.384379,2.4744,-1.144271,     -0.406648,2.4408,-1.210564,     -0.590089,2.4408,-1.13419,
+       -0.75701,2.4408,-1.031508,      -0.715555,2.4744,-0.975021,     -0.557774,2.4744,-1.072079,
+       -0.557774,2.4744,-1.072079,     -0.590089,2.4408,-1.13419,      -0.75701,2.4408,-1.031508,
+       -0.904966,2.4408,-0.904966,     -0.855408,2.4744,-0.855408,     -0.715555,2.4744,-0.975021,
+       -0.715555,2.4744,-0.975021,     -0.75701,2.4408,-1.031508,      -0.904966,2.4408,-0.904966,
+       -1.031508,2.4408,-0.75701,      -0.975021,2.4744,-0.715555,     -0.855408,2.4744,-0.855408,
+       -0.855408,2.4744,-0.855408,     -0.904966,2.4408,-0.904966,     -1.031508,2.4408,-0.75701,
+       -1.13419,2.4408,-0.590089,      -1.072079,2.4744,-0.557774,     -0.975021,2.4744,-0.715555,
+       -0.975021,2.4744,-0.715555,     -1.031508,2.4408,-0.75701,      -1.13419,2.4408,-0.590089,
+       -1.210564,2.4408,-0.406648,     -1.144271,2.4744,-0.384379,     -1.072079,2.4744,-0.557774,
+       -1.072079,2.4744,-0.557774,     -1.13419,2.4408,-0.590089,      -1.210564,2.4408,-0.406648,
+       -1.258183,2.4408,-0.209136,     -1.189282,2.4744,-0.197684,     -1.144271,2.4744,-0.384379,
+       -1.144271,2.4744,-0.384379,     -1.210564,2.4408,-0.406648,     -1.258183,2.4408,-0.209136,
+       -1.2746,2.4408,0,       -1.2048,2.4744,0,       -1.189282,2.4744,-0.197684,
+       -1.189282,2.4744,-0.197684,     -1.258183,2.4408,-0.209136,     -1.2746,2.4408,0,
+       -0.213304,2.4,-1.283256,        -0.209136,2.4408,-1.258183,     0,2.4408,-1.2746,
+       0,2.4408,-1.2746,       0,2.4,-1.3,     -0.213304,2.4,-1.283256,
+       -0.414752,2.4,-1.234688,        -0.406648,2.4408,-1.210564,     -0.209136,2.4408,-1.258183,
+       -0.209136,2.4408,-1.258183,     -0.213304,2.4,-1.283256,        -0.414752,2.4,-1.234688,
+       -0.601848,2.4,-1.156792,        -0.590089,2.4408,-1.13419,      -0.406648,2.4408,-1.210564,
+       -0.406648,2.4408,-1.210564,     -0.414752,2.4,-1.234688,        -0.601848,2.4,-1.156792,
+       -0.772096,2.4,-1.052064,        -0.75701,2.4408,-1.031508,      -0.590089,2.4408,-1.13419,
+       -0.590089,2.4408,-1.13419,      -0.601848,2.4,-1.156792,        -0.772096,2.4,-1.052064,
+       -0.923,2.4,-0.923,      -0.904966,2.4408,-0.904966,     -0.75701,2.4408,-1.031508,
+       -0.75701,2.4408,-1.031508,      -0.772096,2.4,-1.052064,        -0.923,2.4,-0.923,
+       -1.052064,2.4,-0.772096,        -1.031508,2.4408,-0.75701,      -0.904966,2.4408,-0.904966,
+       -0.904966,2.4408,-0.904966,     -0.923,2.4,-0.923,      -1.052064,2.4,-0.772096,
+       -1.156792,2.4,-0.601848,        -1.13419,2.4408,-0.590089,      -1.031508,2.4408,-0.75701,
+       -1.031508,2.4408,-0.75701,      -1.052064,2.4,-0.772096,        -1.156792,2.4,-0.601848,
+       -1.234688,2.4,-0.414752,        -1.210564,2.4408,-0.406648,     -1.13419,2.4408,-0.590089,
+       -1.13419,2.4408,-0.590089,      -1.156792,2.4,-0.601848,        -1.234688,2.4,-0.414752,
+       -1.283256,2.4,-0.213304,        -1.258183,2.4408,-0.209136,     -1.210564,2.4408,-0.406648,
+       -1.210564,2.4408,-0.406648,     -1.234688,2.4,-0.414752,        -1.283256,2.4,-0.213304,
+       -1.3,2.4,0,     -1.2746,2.4408,0,       -1.258183,2.4408,-0.209136,
+       -1.258183,2.4408,-0.209136,     -1.283256,2.4,-0.213304,        -1.3,2.4,0,
+       -0.275801,2.6592,0.045844,      -0.197424,2.7,0.032816, -0.2,2.7,0,
+       -0.2,2.7,0,     -0.2794,2.6592,0,       -0.275801,2.6592,0.045844,
+       -0.265363,2.6592,0.08914,       -0.189952,2.7,0.063808, -0.197424,2.7,0.032816,
+       -0.197424,2.7,0.032816, -0.275801,2.6592,0.045844,      -0.265363,2.6592,0.08914,
+       -0.248621,2.6592,0.129351,      -0.177968,2.7,0.092592, -0.189952,2.7,0.063808,
+       -0.189952,2.7,0.063808, -0.265363,2.6592,0.08914,       -0.248621,2.6592,0.129351,
+       -0.226113,2.6592,0.165941,      -0.161856,2.7,0.118784, -0.177968,2.7,0.092592,
+       -0.177968,2.7,0.092592, -0.248621,2.6592,0.129351,      -0.226113,2.6592,0.165941,
+       -0.198374,2.6592,0.198374,      -0.142,2.7,0.142,       -0.161856,2.7,0.118784,
+       -0.161856,2.7,0.118784, -0.226113,2.6592,0.165941,      -0.198374,2.6592,0.198374,
+       -0.165941,2.6592,0.226113,      -0.118784,2.7,0.161856, -0.142,2.7,0.142,
+       -0.142,2.7,0.142,       -0.198374,2.6592,0.198374,      -0.165941,2.6592,0.226113,
+       -0.129351,2.6592,0.248621,      -0.092592,2.7,0.177968, -0.118784,2.7,0.161856,
+       -0.118784,2.7,0.161856, -0.165941,2.6592,0.226113,      -0.129351,2.6592,0.248621,
+       -0.08914,2.6592,0.265363,       -0.063808,2.7,0.189952, -0.092592,2.7,0.177968,
+       -0.092592,2.7,0.177968, -0.129351,2.6592,0.248621,      -0.08914,2.6592,0.265363,
+       -0.045844,2.6592,0.275801,      -0.032816,2.7,0.197424, -0.063808,2.7,0.189952,
+       -0.063808,2.7,0.189952, -0.08914,2.6592,0.265363,       -0.045844,2.6592,0.275801,
+       0,2.6592,0.2794,        0,2.7,0.2,      -0.032816,2.7,0.197424,
+       -0.032816,2.7,0.197424, -0.045844,2.6592,0.275801,      0,2.6592,0.2794,
+       -0.386161,2.6256,0.064188,      -0.275801,2.6592,0.045844,      -0.2794,2.6592,0,
+       -0.2794,2.6592,0,       -0.3912,2.6256,0,       -0.386161,2.6256,0.064188,
+       -0.371546,2.6256,0.124808,      -0.265363,2.6592,0.08914,       -0.275801,2.6592,0.045844,
+       -0.275801,2.6592,0.045844,      -0.386161,2.6256,0.064188,      -0.371546,2.6256,0.124808,
+       -0.348105,2.6256,0.18111,       -0.248621,2.6592,0.129351,      -0.265363,2.6592,0.08914,
+       -0.265363,2.6592,0.08914,       -0.371546,2.6256,0.124808,      -0.348105,2.6256,0.18111,
+       -0.31659,2.6256,0.232342,       -0.226113,2.6592,0.165941,      -0.248621,2.6592,0.129351,
+       -0.248621,2.6592,0.129351,      -0.348105,2.6256,0.18111,       -0.31659,2.6256,0.232342,
+       -0.277752,2.6256,0.277752,      -0.198374,2.6592,0.198374,      -0.226113,2.6592,0.165941,
+       -0.226113,2.6592,0.165941,      -0.31659,2.6256,0.232342,       -0.277752,2.6256,0.277752,
+       -0.232342,2.6256,0.31659,       -0.165941,2.6592,0.226113,      -0.198374,2.6592,0.198374,
+       -0.198374,2.6592,0.198374,      -0.277752,2.6256,0.277752,      -0.232342,2.6256,0.31659,
+       -0.18111,2.6256,0.348105,       -0.129351,2.6592,0.248621,      -0.165941,2.6592,0.226113,
+       -0.165941,2.6592,0.226113,      -0.232342,2.6256,0.31659,       -0.18111,2.6256,0.348105,
+       -0.124808,2.6256,0.371546,      -0.08914,2.6592,0.265363,       -0.129351,2.6592,0.248621,
+       -0.129351,2.6592,0.248621,      -0.18111,2.6256,0.348105,       -0.124808,2.6256,0.371546,
+       -0.064188,2.6256,0.386161,      -0.045844,2.6592,0.275801,      -0.08914,2.6592,0.265363,
+       -0.08914,2.6592,0.265363,       -0.124808,2.6256,0.371546,      -0.064188,2.6256,0.386161,
+       0,2.6256,0.3912,        0,2.6592,0.2794,        -0.045844,2.6592,0.275801,
+       -0.045844,2.6592,0.275801,      -0.064188,2.6256,0.386161,      0,2.6256,0.3912,
+       -0.519028,2.5974,0.086273,      -0.386161,2.6256,0.064188,      -0.3912,2.6256,0,
+       -0.3912,2.6256,0,       -0.5258,2.5974,0,       -0.519028,2.5974,0.086273,
+       -0.499384,2.5974,0.167751,      -0.371546,2.6256,0.124808,      -0.386161,2.6256,0.064188,
+       -0.386161,2.6256,0.064188,      -0.519028,2.5974,0.086273,      -0.499384,2.5974,0.167751,
+       -0.467878,2.5974,0.243424,      -0.348105,2.6256,0.18111,       -0.371546,2.6256,0.124808,
+       -0.371546,2.6256,0.124808,      -0.499384,2.5974,0.167751,      -0.467878,2.5974,0.243424,
+       -0.425519,2.5974,0.312283,      -0.31659,2.6256,0.232342,       -0.348105,2.6256,0.18111,
+       -0.348105,2.6256,0.18111,       -0.467878,2.5974,0.243424,      -0.425519,2.5974,0.312283,
+       -0.373318,2.5974,0.373318,      -0.277752,2.6256,0.277752,      -0.31659,2.6256,0.232342,
+       -0.31659,2.6256,0.232342,       -0.425519,2.5974,0.312283,      -0.373318,2.5974,0.373318,
+       -0.312283,2.5974,0.425519,      -0.232342,2.6256,0.31659,       -0.277752,2.6256,0.277752,
+       -0.277752,2.6256,0.277752,      -0.373318,2.5974,0.373318,      -0.312283,2.5974,0.425519,
+       -0.243424,2.5974,0.467878,      -0.18111,2.6256,0.348105,       -0.232342,2.6256,0.31659,
+       -0.232342,2.6256,0.31659,       -0.312283,2.5974,0.425519,      -0.243424,2.5974,0.467878,
+       -0.167751,2.5974,0.499384,      -0.124808,2.6256,0.371546,      -0.18111,2.6256,0.348105,
+       -0.18111,2.6256,0.348105,       -0.243424,2.5974,0.467878,      -0.167751,2.5974,0.499384,
+       -0.086273,2.5974,0.519028,      -0.064188,2.6256,0.386161,      -0.124808,2.6256,0.371546,
+       -0.124808,2.6256,0.371546,      -0.167751,2.5974,0.499384,      -0.086273,2.5974,0.519028,
+       0,2.5974,0.5258,        0,2.6256,0.3912,        -0.064188,2.6256,0.386161,
+       -0.064188,2.6256,0.386161,      -0.086273,2.5974,0.519028,      0,2.5974,0.5258,
+       -0.664924,2.5728,0.110524,      -0.519028,2.5974,0.086273,      -0.5258,2.5974,0,
+       -0.5258,2.5974,0,       -0.6736,2.5728,0,       -0.664924,2.5728,0.110524,
+       -0.639758,2.5728,0.214905,      -0.499384,2.5974,0.167751,      -0.519028,2.5974,0.086273,
+       -0.519028,2.5974,0.086273,      -0.664924,2.5728,0.110524,      -0.639758,2.5728,0.214905,
+       -0.599396,2.5728,0.31185,       -0.467878,2.5974,0.243424,      -0.499384,2.5974,0.167751,
+       -0.499384,2.5974,0.167751,      -0.639758,2.5728,0.214905,      -0.599396,2.5728,0.31185,
+       -0.545131,2.5728,0.400065,      -0.425519,2.5974,0.312283,      -0.467878,2.5974,0.243424,
+       -0.467878,2.5974,0.243424,      -0.599396,2.5728,0.31185,       -0.545131,2.5728,0.400065,
+       -0.478256,2.5728,0.478256,      -0.373318,2.5974,0.373318,      -0.425519,2.5974,0.312283,
+       -0.425519,2.5974,0.312283,      -0.545131,2.5728,0.400065,      -0.478256,2.5728,0.478256,
+       -0.400065,2.5728,0.545131,      -0.312283,2.5974,0.425519,      -0.373318,2.5974,0.373318,
+       -0.373318,2.5974,0.373318,      -0.478256,2.5728,0.478256,      -0.400065,2.5728,0.545131,
+       -0.31185,2.5728,0.599396,       -0.243424,2.5974,0.467878,      -0.312283,2.5974,0.425519,
+       -0.312283,2.5974,0.425519,      -0.400065,2.5728,0.545131,      -0.31185,2.5728,0.599396,
+       -0.214905,2.5728,0.639758,      -0.167751,2.5974,0.499384,      -0.243424,2.5974,0.467878,
+       -0.243424,2.5974,0.467878,      -0.31185,2.5728,0.599396,       -0.214905,2.5728,0.639758,
+       -0.110524,2.5728,0.664924,      -0.086273,2.5974,0.519028,      -0.167751,2.5974,0.499384,
+       -0.167751,2.5974,0.499384,      -0.214905,2.5728,0.639758,      -0.110524,2.5728,0.664924,
+       0,2.5728,0.6736,        0,2.5974,0.5258,        -0.086273,2.5974,0.519028,
+       -0.086273,2.5974,0.519028,      -0.110524,2.5728,0.664924,      0,2.5728,0.6736,
+       -0.814374,2.55,0.135366,        -0.664924,2.5728,0.110524,      -0.6736,2.5728,0,
+       -0.6736,2.5728,0,       -0.825,2.55,0,  -0.814374,2.55,0.135366,
+       -0.783552,2.55,0.263208,        -0.639758,2.5728,0.214905,      -0.664924,2.5728,0.110524,
+       -0.664924,2.5728,0.110524,      -0.814374,2.55,0.135366,        -0.783552,2.55,0.263208,
+       -0.734118,2.55,0.381942,        -0.599396,2.5728,0.31185,       -0.639758,2.5728,0.214905,
+       -0.639758,2.5728,0.214905,      -0.783552,2.55,0.263208,        -0.734118,2.55,0.381942,
+       -0.667656,2.55,0.489984,        -0.545131,2.5728,0.400065,      -0.599396,2.5728,0.31185,
+       -0.599396,2.5728,0.31185,       -0.734118,2.55,0.381942,        -0.667656,2.55,0.489984,
+       -0.58575,2.55,0.58575,  -0.478256,2.5728,0.478256,      -0.545131,2.5728,0.400065,
+       -0.545131,2.5728,0.400065,      -0.667656,2.55,0.489984,        -0.58575,2.55,0.58575,
+       -0.489984,2.55,0.667656,        -0.400065,2.5728,0.545131,      -0.478256,2.5728,0.478256,
+       -0.478256,2.5728,0.478256,      -0.58575,2.55,0.58575,  -0.489984,2.55,0.667656,
+       -0.381942,2.55,0.734118,        -0.31185,2.5728,0.599396,       -0.400065,2.5728,0.545131,
+       -0.400065,2.5728,0.545131,      -0.489984,2.55,0.667656,        -0.381942,2.55,0.734118,
+       -0.263208,2.55,0.783552,        -0.214905,2.5728,0.639758,      -0.31185,2.5728,0.599396,
+       -0.31185,2.5728,0.599396,       -0.381942,2.55,0.734118,        -0.263208,2.55,0.783552,
+       -0.135366,2.55,0.814374,        -0.110524,2.5728,0.664924,      -0.214905,2.5728,0.639758,
+       -0.214905,2.5728,0.639758,      -0.263208,2.55,0.783552,        -0.135366,2.55,0.814374,
+       0,2.55,0.825,   0,2.5728,0.6736,        -0.110524,2.5728,0.664924,
+       -0.110524,2.5728,0.664924,      -0.135366,2.55,0.814374,        0,2.55,0.825,
+       -0.957901,2.5272,0.159223,      -0.814374,2.55,0.135366,        -0.825,2.55,0,
+       -0.825,2.55,0,  -0.9704,2.5272,0,       -0.957901,2.5272,0.159223,
+       -0.921647,2.5272,0.309596,      -0.783552,2.55,0.263208,        -0.814374,2.55,0.135366,
+       -0.814374,2.55,0.135366,        -0.957901,2.5272,0.159223,      -0.921647,2.5272,0.309596,
+       -0.863501,2.5272,0.449256,      -0.734118,2.55,0.381942,        -0.783552,2.55,0.263208,
+       -0.783552,2.55,0.263208,        -0.921647,2.5272,0.309596,      -0.863501,2.5272,0.449256,
+       -0.785325,2.5272,0.57634,       -0.667656,2.55,0.489984,        -0.734118,2.55,0.381942,
+       -0.734118,2.55,0.381942,        -0.863501,2.5272,0.449256,      -0.785325,2.5272,0.57634,
+       -0.688984,2.5272,0.688984,      -0.58575,2.55,0.58575,  -0.667656,2.55,0.489984,
+       -0.667656,2.55,0.489984,        -0.785325,2.5272,0.57634,       -0.688984,2.5272,0.688984,
+       -0.57634,2.5272,0.785325,       -0.489984,2.55,0.667656,        -0.58575,2.55,0.58575,
+       -0.58575,2.55,0.58575,  -0.688984,2.5272,0.688984,      -0.57634,2.5272,0.785325,
+       -0.449256,2.5272,0.863501,      -0.381942,2.55,0.734118,        -0.489984,2.55,0.667656,
+       -0.489984,2.55,0.667656,        -0.57634,2.5272,0.785325,       -0.449256,2.5272,0.863501,
+       -0.309596,2.5272,0.921647,      -0.263208,2.55,0.783552,        -0.381942,2.55,0.734118,
+       -0.381942,2.55,0.734118,        -0.449256,2.5272,0.863501,      -0.309596,2.5272,0.921647,
+       -0.159223,2.5272,0.957901,      -0.135366,2.55,0.814374,        -0.263208,2.55,0.783552,
+       -0.263208,2.55,0.783552,        -0.309596,2.5272,0.921647,      -0.159223,2.5272,0.957901,
+       0,2.5272,0.9704,        0,2.55,0.825,   -0.135366,2.55,0.814374,
+       -0.135366,2.55,0.814374,        -0.159223,2.5272,0.957901,      0,2.5272,0.9704,
+       -1.086029,2.5026,0.180521,      -0.957901,2.5272,0.159223,      -0.9704,2.5272,0,
+       -0.9704,2.5272,0,       -1.1002,2.5026,0,       -1.086029,2.5026,0.180521,
+       -1.044926,2.5026,0.351008,      -0.921647,2.5272,0.309596,      -0.957901,2.5272,0.159223,
+       -0.957901,2.5272,0.159223,      -1.086029,2.5026,0.180521,      -1.044926,2.5026,0.351008,
+       -0.979002,2.5026,0.509349,      -0.863501,2.5272,0.449256,      -0.921647,2.5272,0.309596,
+       -0.921647,2.5272,0.309596,      -1.044926,2.5026,0.351008,      -0.979002,2.5026,0.509349,
+       -0.89037,2.5026,0.653431,       -0.785325,2.5272,0.57634,       -0.863501,2.5272,0.449256,
+       -0.863501,2.5272,0.449256,      -0.979002,2.5026,0.509349,      -0.89037,2.5026,0.653431,
+       -0.781142,2.5026,0.781142,      -0.688984,2.5272,0.688984,      -0.785325,2.5272,0.57634,
+       -0.785325,2.5272,0.57634,       -0.89037,2.5026,0.653431,       -0.781142,2.5026,0.781142,
+       -0.653431,2.5026,0.89037,       -0.57634,2.5272,0.785325,       -0.688984,2.5272,0.688984,
+       -0.688984,2.5272,0.688984,      -0.781142,2.5026,0.781142,      -0.653431,2.5026,0.89037,
+       -0.509349,2.5026,0.979002,      -0.449256,2.5272,0.863501,      -0.57634,2.5272,0.785325,
+       -0.57634,2.5272,0.785325,       -0.653431,2.5026,0.89037,       -0.509349,2.5026,0.979002,
+       -0.351008,2.5026,1.044926,      -0.309596,2.5272,0.921647,      -0.449256,2.5272,0.863501,
+       -0.449256,2.5272,0.863501,      -0.509349,2.5026,0.979002,      -0.351008,2.5026,1.044926,
+       -0.180521,2.5026,1.086029,      -0.159223,2.5272,0.957901,      -0.309596,2.5272,0.921647,
+       -0.309596,2.5272,0.921647,      -0.351008,2.5026,1.044926,      -0.180521,2.5026,1.086029,
+       0,2.5026,1.1002,        0,2.5272,0.9704,        -0.159223,2.5272,0.957901,
+       -0.159223,2.5272,0.957901,      -0.180521,2.5026,1.086029,      0,2.5026,1.1002,
+       -1.189282,2.4744,0.197684,      -1.086029,2.5026,0.180521,      -1.1002,2.5026,0,
+       -1.1002,2.5026,0,       -1.2048,2.4744,0,       -1.189282,2.4744,0.197684,
+       -1.144271,2.4744,0.384379,      -1.044926,2.5026,0.351008,      -1.086029,2.5026,0.180521,
+       -1.086029,2.5026,0.180521,      -1.189282,2.4744,0.197684,      -1.144271,2.4744,0.384379,
+       -1.072079,2.4744,0.557774,      -0.979002,2.5026,0.509349,      -1.044926,2.5026,0.351008,
+       -1.044926,2.5026,0.351008,      -1.144271,2.4744,0.384379,      -1.072079,2.4744,0.557774,
+       -0.975021,2.4744,0.715555,      -0.89037,2.5026,0.653431,       -0.979002,2.5026,0.509349,
+       -0.979002,2.5026,0.509349,      -1.072079,2.4744,0.557774,      -0.975021,2.4744,0.715555,
+       -0.855408,2.4744,0.855408,      -0.781142,2.5026,0.781142,      -0.89037,2.5026,0.653431,
+       -0.89037,2.5026,0.653431,       -0.975021,2.4744,0.715555,      -0.855408,2.4744,0.855408,
+       -0.715555,2.4744,0.975021,      -0.653431,2.5026,0.89037,       -0.781142,2.5026,0.781142,
+       -0.781142,2.5026,0.781142,      -0.855408,2.4744,0.855408,      -0.715555,2.4744,0.975021,
+       -0.557774,2.4744,1.072079,      -0.509349,2.5026,0.979002,      -0.653431,2.5026,0.89037,
+       -0.653431,2.5026,0.89037,       -0.715555,2.4744,0.975021,      -0.557774,2.4744,1.072079,
+       -0.384379,2.4744,1.144271,      -0.351008,2.5026,1.044926,      -0.509349,2.5026,0.979002,
+       -0.509349,2.5026,0.979002,      -0.557774,2.4744,1.072079,      -0.384379,2.4744,1.144271,
+       -0.197684,2.4744,1.189282,      -0.180521,2.5026,1.086029,      -0.351008,2.5026,1.044926,
+       -0.351008,2.5026,1.044926,      -0.384379,2.4744,1.144271,      -0.197684,2.4744,1.189282,
+       0,2.4744,1.2048,        0,2.5026,1.1002,        -0.180521,2.5026,1.086029,
+       -0.180521,2.5026,1.086029,      -0.197684,2.4744,1.189282,      0,2.4744,1.2048,
+       -1.258183,2.4408,0.209136,      -1.189282,2.4744,0.197684,      -1.2048,2.4744,0,
+       -1.2048,2.4744,0,       -1.2746,2.4408,0,       -1.258183,2.4408,0.209136,
+       -1.210564,2.4408,0.406648,      -1.144271,2.4744,0.384379,      -1.189282,2.4744,0.197684,
+       -1.189282,2.4744,0.197684,      -1.258183,2.4408,0.209136,      -1.210564,2.4408,0.406648,
+       -1.13419,2.4408,0.590089,       -1.072079,2.4744,0.557774,      -1.144271,2.4744,0.384379,
+       -1.144271,2.4744,0.384379,      -1.210564,2.4408,0.406648,      -1.13419,2.4408,0.590089,
+       -1.031508,2.4408,0.75701,       -0.975021,2.4744,0.715555,      -1.072079,2.4744,0.557774,
+       -1.072079,2.4744,0.557774,      -1.13419,2.4408,0.590089,       -1.031508,2.4408,0.75701,
+       -0.904966,2.4408,0.904966,      -0.855408,2.4744,0.855408,      -0.975021,2.4744,0.715555,
+       -0.975021,2.4744,0.715555,      -1.031508,2.4408,0.75701,       -0.904966,2.4408,0.904966,
+       -0.75701,2.4408,1.031508,       -0.715555,2.4744,0.975021,      -0.855408,2.4744,0.855408,
+       -0.855408,2.4744,0.855408,      -0.904966,2.4408,0.904966,      -0.75701,2.4408,1.031508,
+       -0.590089,2.4408,1.13419,       -0.557774,2.4744,1.072079,      -0.715555,2.4744,0.975021,
+       -0.715555,2.4744,0.975021,      -0.75701,2.4408,1.031508,       -0.590089,2.4408,1.13419,
+       -0.406648,2.4408,1.210564,      -0.384379,2.4744,1.144271,      -0.557774,2.4744,1.072079,
+       -0.557774,2.4744,1.072079,      -0.590089,2.4408,1.13419,       -0.406648,2.4408,1.210564,
+       -0.209136,2.4408,1.258183,      -0.197684,2.4744,1.189282,      -0.384379,2.4744,1.144271,
+       -0.384379,2.4744,1.144271,      -0.406648,2.4408,1.210564,      -0.209136,2.4408,1.258183,
+       0,2.4408,1.2746,        0,2.4744,1.2048,        -0.197684,2.4744,1.189282,
+       -0.197684,2.4744,1.189282,      -0.209136,2.4408,1.258183,      0,2.4408,1.2746,
+       -1.283256,2.4,0.213304, -1.258183,2.4408,0.209136,      -1.2746,2.4408,0,
+       -1.2746,2.4408,0,       -1.3,2.4,0,     -1.283256,2.4,0.213304,
+       -1.234688,2.4,0.414752, -1.210564,2.4408,0.406648,      -1.258183,2.4408,0.209136,
+       -1.258183,2.4408,0.209136,      -1.283256,2.4,0.213304, -1.234688,2.4,0.414752,
+       -1.156792,2.4,0.601848, -1.13419,2.4408,0.590089,       -1.210564,2.4408,0.406648,
+       -1.210564,2.4408,0.406648,      -1.234688,2.4,0.414752, -1.156792,2.4,0.601848,
+       -1.052064,2.4,0.772096, -1.031508,2.4408,0.75701,       -1.13419,2.4408,0.590089,
+       -1.13419,2.4408,0.590089,       -1.156792,2.4,0.601848, -1.052064,2.4,0.772096,
+       -0.923,2.4,0.923,       -0.904966,2.4408,0.904966,      -1.031508,2.4408,0.75701,
+       -1.031508,2.4408,0.75701,       -1.052064,2.4,0.772096, -0.923,2.4,0.923,
+       -0.772096,2.4,1.052064, -0.75701,2.4408,1.031508,       -0.904966,2.4408,0.904966,
+       -0.904966,2.4408,0.904966,      -0.923,2.4,0.923,       -0.772096,2.4,1.052064,
+       -0.601848,2.4,1.156792, -0.590089,2.4408,1.13419,       -0.75701,2.4408,1.031508,
+       -0.75701,2.4408,1.031508,       -0.772096,2.4,1.052064, -0.601848,2.4,1.156792,
+       -0.414752,2.4,1.234688, -0.406648,2.4408,1.210564,      -0.590089,2.4408,1.13419,
+       -0.590089,2.4408,1.13419,       -0.601848,2.4,1.156792, -0.414752,2.4,1.234688,
+       -0.213304,2.4,1.283256, -0.209136,2.4408,1.258183,      -0.406648,2.4408,1.210564,
+       -0.406648,2.4408,1.210564,      -0.414752,2.4,1.234688, -0.213304,2.4,1.283256,
+       0,2.4,1.3,      0,2.4408,1.2746,        -0.209136,2.4408,1.258183,
+       -0.209136,2.4408,1.258183,      -0.213304,2.4,1.283256, 0,2.4,1.3,
+       0.045844,2.6592,0.275801,       0.032816,2.7,0.197424,  0,2.7,0.2,
+       0,2.7,0.2,      0,2.6592,0.2794,        0.045844,2.6592,0.275801,
+       0.08914,2.6592,0.265363,        0.063808,2.7,0.189952,  0.032816,2.7,0.197424,
+       0.032816,2.7,0.197424,  0.045844,2.6592,0.275801,       0.08914,2.6592,0.265363,
+       0.129351,2.6592,0.248621,       0.092592,2.7,0.177968,  0.063808,2.7,0.189952,
+       0.063808,2.7,0.189952,  0.08914,2.6592,0.265363,        0.129351,2.6592,0.248621,
+       0.165941,2.6592,0.226113,       0.118784,2.7,0.161856,  0.092592,2.7,0.177968,
+       0.092592,2.7,0.177968,  0.129351,2.6592,0.248621,       0.165941,2.6592,0.226113,
+       0.198374,2.6592,0.198374,       0.142,2.7,0.142,        0.118784,2.7,0.161856,
+       0.118784,2.7,0.161856,  0.165941,2.6592,0.226113,       0.198374,2.6592,0.198374,
+       0.226113,2.6592,0.165941,       0.161856,2.7,0.118784,  0.142,2.7,0.142,
+       0.142,2.7,0.142,        0.198374,2.6592,0.198374,       0.226113,2.6592,0.165941,
+       0.248621,2.6592,0.129351,       0.177968,2.7,0.092592,  0.161856,2.7,0.118784,
+       0.161856,2.7,0.118784,  0.226113,2.6592,0.165941,       0.248621,2.6592,0.129351,
+       0.265363,2.6592,0.08914,        0.189952,2.7,0.063808,  0.177968,2.7,0.092592,
+       0.177968,2.7,0.092592,  0.248621,2.6592,0.129351,       0.265363,2.6592,0.08914,
+       0.275801,2.6592,0.045844,       0.197424,2.7,0.032816,  0.189952,2.7,0.063808,
+       0.189952,2.7,0.063808,  0.265363,2.6592,0.08914,        0.275801,2.6592,0.045844,
+       0.2794,2.6592,0,        0.2,2.7,0,      0.197424,2.7,0.032816,
+       0.197424,2.7,0.032816,  0.275801,2.6592,0.045844,       0.2794,2.6592,0,
+       0.064188,2.6256,0.386161,       0.045844,2.6592,0.275801,       0,2.6592,0.2794,
+       0,2.6592,0.2794,        0,2.6256,0.3912,        0.064188,2.6256,0.386161,
+       0.124808,2.6256,0.371546,       0.08914,2.6592,0.265363,        0.045844,2.6592,0.275801,
+       0.045844,2.6592,0.275801,       0.064188,2.6256,0.386161,       0.124808,2.6256,0.371546,
+       0.18111,2.6256,0.348105,        0.129351,2.6592,0.248621,       0.08914,2.6592,0.265363,
+       0.08914,2.6592,0.265363,        0.124808,2.6256,0.371546,       0.18111,2.6256,0.348105,
+       0.232342,2.6256,0.31659,        0.165941,2.6592,0.226113,       0.129351,2.6592,0.248621,
+       0.129351,2.6592,0.248621,       0.18111,2.6256,0.348105,        0.232342,2.6256,0.31659,
+       0.277752,2.6256,0.277752,       0.198374,2.6592,0.198374,       0.165941,2.6592,0.226113,
+       0.165941,2.6592,0.226113,       0.232342,2.6256,0.31659,        0.277752,2.6256,0.277752,
+       0.31659,2.6256,0.232342,        0.226113,2.6592,0.165941,       0.198374,2.6592,0.198374,
+       0.198374,2.6592,0.198374,       0.277752,2.6256,0.277752,       0.31659,2.6256,0.232342,
+       0.348105,2.6256,0.18111,        0.248621,2.6592,0.129351,       0.226113,2.6592,0.165941,
+       0.226113,2.6592,0.165941,       0.31659,2.6256,0.232342,        0.348105,2.6256,0.18111,
+       0.371546,2.6256,0.124808,       0.265363,2.6592,0.08914,        0.248621,2.6592,0.129351,
+       0.248621,2.6592,0.129351,       0.348105,2.6256,0.18111,        0.371546,2.6256,0.124808,
+       0.386161,2.6256,0.064188,       0.275801,2.6592,0.045844,       0.265363,2.6592,0.08914,
+       0.265363,2.6592,0.08914,        0.371546,2.6256,0.124808,       0.386161,2.6256,0.064188,
+       0.3912,2.6256,0,        0.2794,2.6592,0,        0.275801,2.6592,0.045844,
+       0.275801,2.6592,0.045844,       0.386161,2.6256,0.064188,       0.3912,2.6256,0,
+       0.086273,2.5974,0.519028,       0.064188,2.6256,0.386161,       0,2.6256,0.3912,
+       0,2.6256,0.3912,        0,2.5974,0.5258,        0.086273,2.5974,0.519028,
+       0.167751,2.5974,0.499384,       0.124808,2.6256,0.371546,       0.064188,2.6256,0.386161,
+       0.064188,2.6256,0.386161,       0.086273,2.5974,0.519028,       0.167751,2.5974,0.499384,
+       0.243424,2.5974,0.467878,       0.18111,2.6256,0.348105,        0.124808,2.6256,0.371546,
+       0.124808,2.6256,0.371546,       0.167751,2.5974,0.499384,       0.243424,2.5974,0.467878,
+       0.312283,2.5974,0.425519,       0.232342,2.6256,0.31659,        0.18111,2.6256,0.348105,
+       0.18111,2.6256,0.348105,        0.243424,2.5974,0.467878,       0.312283,2.5974,0.425519,
+       0.373318,2.5974,0.373318,       0.277752,2.6256,0.277752,       0.232342,2.6256,0.31659,
+       0.232342,2.6256,0.31659,        0.312283,2.5974,0.425519,       0.373318,2.5974,0.373318,
+       0.425519,2.5974,0.312283,       0.31659,2.6256,0.232342,        0.277752,2.6256,0.277752,
+       0.277752,2.6256,0.277752,       0.373318,2.5974,0.373318,       0.425519,2.5974,0.312283,
+       0.467878,2.5974,0.243424,       0.348105,2.6256,0.18111,        0.31659,2.6256,0.232342,
+       0.31659,2.6256,0.232342,        0.425519,2.5974,0.312283,       0.467878,2.5974,0.243424,
+       0.499384,2.5974,0.167751,       0.371546,2.6256,0.124808,       0.348105,2.6256,0.18111,
+       0.348105,2.6256,0.18111,        0.467878,2.5974,0.243424,       0.499384,2.5974,0.167751,
+       0.519028,2.5974,0.086273,       0.386161,2.6256,0.064188,       0.371546,2.6256,0.124808,
+       0.371546,2.6256,0.124808,       0.499384,2.5974,0.167751,       0.519028,2.5974,0.086273,
+       0.5258,2.5974,0,        0.3912,2.6256,0,        0.386161,2.6256,0.064188,
+       0.386161,2.6256,0.064188,       0.519028,2.5974,0.086273,       0.5258,2.5974,0,
+       0.110524,2.5728,0.664924,       0.086273,2.5974,0.519028,       0,2.5974,0.5258,
+       0,2.5974,0.5258,        0,2.5728,0.6736,        0.110524,2.5728,0.664924,
+       0.214905,2.5728,0.639758,       0.167751,2.5974,0.499384,       0.086273,2.5974,0.519028,
+       0.086273,2.5974,0.519028,       0.110524,2.5728,0.664924,       0.214905,2.5728,0.639758,
+       0.31185,2.5728,0.599396,        0.243424,2.5974,0.467878,       0.167751,2.5974,0.499384,
+       0.167751,2.5974,0.499384,       0.214905,2.5728,0.639758,       0.31185,2.5728,0.599396,
+       0.400065,2.5728,0.545131,       0.312283,2.5974,0.425519,       0.243424,2.5974,0.467878,
+       0.243424,2.5974,0.467878,       0.31185,2.5728,0.599396,        0.400065,2.5728,0.545131,
+       0.478256,2.5728,0.478256,       0.373318,2.5974,0.373318,       0.312283,2.5974,0.425519,
+       0.312283,2.5974,0.425519,       0.400065,2.5728,0.545131,       0.478256,2.5728,0.478256,
+       0.545131,2.5728,0.400065,       0.425519,2.5974,0.312283,       0.373318,2.5974,0.373318,
+       0.373318,2.5974,0.373318,       0.478256,2.5728,0.478256,       0.545131,2.5728,0.400065,
+       0.599396,2.5728,0.31185,        0.467878,2.5974,0.243424,       0.425519,2.5974,0.312283,
+       0.425519,2.5974,0.312283,       0.545131,2.5728,0.400065,       0.599396,2.5728,0.31185,
+       0.639758,2.5728,0.214905,       0.499384,2.5974,0.167751,       0.467878,2.5974,0.243424,
+       0.467878,2.5974,0.243424,       0.599396,2.5728,0.31185,        0.639758,2.5728,0.214905,
+       0.664924,2.5728,0.110524,       0.519028,2.5974,0.086273,       0.499384,2.5974,0.167751,
+       0.499384,2.5974,0.167751,       0.639758,2.5728,0.214905,       0.664924,2.5728,0.110524,
+       0.6736,2.5728,0,        0.5258,2.5974,0,        0.519028,2.5974,0.086273,
+       0.519028,2.5974,0.086273,       0.664924,2.5728,0.110524,       0.6736,2.5728,0,
+       0.135366,2.55,0.814374, 0.110524,2.5728,0.664924,       0,2.5728,0.6736,
+       0,2.5728,0.6736,        0,2.55,0.825,   0.135366,2.55,0.814374,
+       0.263208,2.55,0.783552, 0.214905,2.5728,0.639758,       0.110524,2.5728,0.664924,
+       0.110524,2.5728,0.664924,       0.135366,2.55,0.814374, 0.263208,2.55,0.783552,
+       0.381942,2.55,0.734118, 0.31185,2.5728,0.599396,        0.214905,2.5728,0.639758,
+       0.214905,2.5728,0.639758,       0.263208,2.55,0.783552, 0.381942,2.55,0.734118,
+       0.489984,2.55,0.667656, 0.400065,2.5728,0.545131,       0.31185,2.5728,0.599396,
+       0.31185,2.5728,0.599396,        0.381942,2.55,0.734118, 0.489984,2.55,0.667656,
+       0.58575,2.55,0.58575,   0.478256,2.5728,0.478256,       0.400065,2.5728,0.545131,
+       0.400065,2.5728,0.545131,       0.489984,2.55,0.667656, 0.58575,2.55,0.58575,
+       0.667656,2.55,0.489984, 0.545131,2.5728,0.400065,       0.478256,2.5728,0.478256,
+       0.478256,2.5728,0.478256,       0.58575,2.55,0.58575,   0.667656,2.55,0.489984,
+       0.734118,2.55,0.381942, 0.599396,2.5728,0.31185,        0.545131,2.5728,0.400065,
+       0.545131,2.5728,0.400065,       0.667656,2.55,0.489984, 0.734118,2.55,0.381942,
+       0.783552,2.55,0.263208, 0.639758,2.5728,0.214905,       0.599396,2.5728,0.31185,
+       0.599396,2.5728,0.31185,        0.734118,2.55,0.381942, 0.783552,2.55,0.263208,
+       0.814374,2.55,0.135366, 0.664924,2.5728,0.110524,       0.639758,2.5728,0.214905,
+       0.639758,2.5728,0.214905,       0.783552,2.55,0.263208, 0.814374,2.55,0.135366,
+       0.825,2.55,0,   0.6736,2.5728,0,        0.664924,2.5728,0.110524,
+       0.664924,2.5728,0.110524,       0.814374,2.55,0.135366, 0.825,2.55,0,
+       0.159223,2.5272,0.957901,       0.135366,2.55,0.814374, 0,2.55,0.825,
+       0,2.55,0.825,   0,2.5272,0.9704,        0.159223,2.5272,0.957901,
+       0.309596,2.5272,0.921647,       0.263208,2.55,0.783552, 0.135366,2.55,0.814374,
+       0.135366,2.55,0.814374, 0.159223,2.5272,0.957901,       0.309596,2.5272,0.921647,
+       0.449256,2.5272,0.863501,       0.381942,2.55,0.734118, 0.263208,2.55,0.783552,
+       0.263208,2.55,0.783552, 0.309596,2.5272,0.921647,       0.449256,2.5272,0.863501,
+       0.57634,2.5272,0.785325,        0.489984,2.55,0.667656, 0.381942,2.55,0.734118,
+       0.381942,2.55,0.734118, 0.449256,2.5272,0.863501,       0.57634,2.5272,0.785325,
+       0.688984,2.5272,0.688984,       0.58575,2.55,0.58575,   0.489984,2.55,0.667656,
+       0.489984,2.55,0.667656, 0.57634,2.5272,0.785325,        0.688984,2.5272,0.688984,
+       0.785325,2.5272,0.57634,        0.667656,2.55,0.489984, 0.58575,2.55,0.58575,
+       0.58575,2.55,0.58575,   0.688984,2.5272,0.688984,       0.785325,2.5272,0.57634,
+       0.863501,2.5272,0.449256,       0.734118,2.55,0.381942, 0.667656,2.55,0.489984,
+       0.667656,2.55,0.489984, 0.785325,2.5272,0.57634,        0.863501,2.5272,0.449256,
+       0.921647,2.5272,0.309596,       0.783552,2.55,0.263208, 0.734118,2.55,0.381942,
+       0.734118,2.55,0.381942, 0.863501,2.5272,0.449256,       0.921647,2.5272,0.309596,
+       0.957901,2.5272,0.159223,       0.814374,2.55,0.135366, 0.783552,2.55,0.263208,
+       0.783552,2.55,0.263208, 0.921647,2.5272,0.309596,       0.957901,2.5272,0.159223,
+       0.9704,2.5272,0,        0.825,2.55,0,   0.814374,2.55,0.135366,
+       0.814374,2.55,0.135366, 0.957901,2.5272,0.159223,       0.9704,2.5272,0,
+       0.180521,2.5026,1.086029,       0.159223,2.5272,0.957901,       0,2.5272,0.9704,
+       0,2.5272,0.9704,        0,2.5026,1.1002,        0.180521,2.5026,1.086029,
+       0.351008,2.5026,1.044926,       0.309596,2.5272,0.921647,       0.159223,2.5272,0.957901,
+       0.159223,2.5272,0.957901,       0.180521,2.5026,1.086029,       0.351008,2.5026,1.044926,
+       0.509349,2.5026,0.979002,       0.449256,2.5272,0.863501,       0.309596,2.5272,0.921647,
+       0.309596,2.5272,0.921647,       0.351008,2.5026,1.044926,       0.509349,2.5026,0.979002,
+       0.653431,2.5026,0.89037,        0.57634,2.5272,0.785325,        0.449256,2.5272,0.863501,
+       0.449256,2.5272,0.863501,       0.509349,2.5026,0.979002,       0.653431,2.5026,0.89037,
+       0.781142,2.5026,0.781142,       0.688984,2.5272,0.688984,       0.57634,2.5272,0.785325,
+       0.57634,2.5272,0.785325,        0.653431,2.5026,0.89037,        0.781142,2.5026,0.781142,
+       0.89037,2.5026,0.653431,        0.785325,2.5272,0.57634,        0.688984,2.5272,0.688984,
+       0.688984,2.5272,0.688984,       0.781142,2.5026,0.781142,       0.89037,2.5026,0.653431,
+       0.979002,2.5026,0.509349,       0.863501,2.5272,0.449256,       0.785325,2.5272,0.57634,
+       0.785325,2.5272,0.57634,        0.89037,2.5026,0.653431,        0.979002,2.5026,0.509349,
+       1.044926,2.5026,0.351008,       0.921647,2.5272,0.309596,       0.863501,2.5272,0.449256,
+       0.863501,2.5272,0.449256,       0.979002,2.5026,0.509349,       1.044926,2.5026,0.351008,
+       1.086029,2.5026,0.180521,       0.957901,2.5272,0.159223,       0.921647,2.5272,0.309596,
+       0.921647,2.5272,0.309596,       1.044926,2.5026,0.351008,       1.086029,2.5026,0.180521,
+       1.1002,2.5026,0,        0.9704,2.5272,0,        0.957901,2.5272,0.159223,
+       0.957901,2.5272,0.159223,       1.086029,2.5026,0.180521,       1.1002,2.5026,0,
+       0.197684,2.4744,1.189282,       0.180521,2.5026,1.086029,       0,2.5026,1.1002,
+       0,2.5026,1.1002,        0,2.4744,1.2048,        0.197684,2.4744,1.189282,
+       0.384379,2.4744,1.144271,       0.351008,2.5026,1.044926,       0.180521,2.5026,1.086029,
+       0.180521,2.5026,1.086029,       0.197684,2.4744,1.189282,       0.384379,2.4744,1.144271,
+       0.557774,2.4744,1.072079,       0.509349,2.5026,0.979002,       0.351008,2.5026,1.044926,
+       0.351008,2.5026,1.044926,       0.384379,2.4744,1.144271,       0.557774,2.4744,1.072079,
+       0.715555,2.4744,0.975021,       0.653431,2.5026,0.89037,        0.509349,2.5026,0.979002,
+       0.509349,2.5026,0.979002,       0.557774,2.4744,1.072079,       0.715555,2.4744,0.975021,
+       0.855408,2.4744,0.855408,       0.781142,2.5026,0.781142,       0.653431,2.5026,0.89037,
+       0.653431,2.5026,0.89037,        0.715555,2.4744,0.975021,       0.855408,2.4744,0.855408,
+       0.975021,2.4744,0.715555,       0.89037,2.5026,0.653431,        0.781142,2.5026,0.781142,
+       0.781142,2.5026,0.781142,       0.855408,2.4744,0.855408,       0.975021,2.4744,0.715555,
+       1.072079,2.4744,0.557774,       0.979002,2.5026,0.509349,       0.89037,2.5026,0.653431,
+       0.89037,2.5026,0.653431,        0.975021,2.4744,0.715555,       1.072079,2.4744,0.557774,
+       1.144271,2.4744,0.384379,       1.044926,2.5026,0.351008,       0.979002,2.5026,0.509349,
+       0.979002,2.5026,0.509349,       1.072079,2.4744,0.557774,       1.144271,2.4744,0.384379,
+       1.189282,2.4744,0.197684,       1.086029,2.5026,0.180521,       1.044926,2.5026,0.351008,
+       1.044926,2.5026,0.351008,       1.144271,2.4744,0.384379,       1.189282,2.4744,0.197684,
+       1.2048,2.4744,0,        1.1002,2.5026,0,        1.086029,2.5026,0.180521,
+       1.086029,2.5026,0.180521,       1.189282,2.4744,0.197684,       1.2048,2.4744,0,
+       0.209136,2.4408,1.258183,       0.197684,2.4744,1.189282,       0,2.4744,1.2048,
+       0,2.4744,1.2048,        0,2.4408,1.2746,        0.209136,2.4408,1.258183,
+       0.406648,2.4408,1.210564,       0.384379,2.4744,1.144271,       0.197684,2.4744,1.189282,
+       0.197684,2.4744,1.189282,       0.209136,2.4408,1.258183,       0.406648,2.4408,1.210564,
+       0.590089,2.4408,1.13419,        0.557774,2.4744,1.072079,       0.384379,2.4744,1.144271,
+       0.384379,2.4744,1.144271,       0.406648,2.4408,1.210564,       0.590089,2.4408,1.13419,
+       0.75701,2.4408,1.031508,        0.715555,2.4744,0.975021,       0.557774,2.4744,1.072079,
+       0.557774,2.4744,1.072079,       0.590089,2.4408,1.13419,        0.75701,2.4408,1.031508,
+       0.904966,2.4408,0.904966,       0.855408,2.4744,0.855408,       0.715555,2.4744,0.975021,
+       0.715555,2.4744,0.975021,       0.75701,2.4408,1.031508,        0.904966,2.4408,0.904966,
+       1.031508,2.4408,0.75701,        0.975021,2.4744,0.715555,       0.855408,2.4744,0.855408,
+       0.855408,2.4744,0.855408,       0.904966,2.4408,0.904966,       1.031508,2.4408,0.75701,
+       1.13419,2.4408,0.590089,        1.072079,2.4744,0.557774,       0.975021,2.4744,0.715555,
+       0.975021,2.4744,0.715555,       1.031508,2.4408,0.75701,        1.13419,2.4408,0.590089,
+       1.210564,2.4408,0.406648,       1.144271,2.4744,0.384379,       1.072079,2.4744,0.557774,
+       1.072079,2.4744,0.557774,       1.13419,2.4408,0.590089,        1.210564,2.4408,0.406648,
+       1.258183,2.4408,0.209136,       1.189282,2.4744,0.197684,       1.144271,2.4744,0.384379,
+       1.144271,2.4744,0.384379,       1.210564,2.4408,0.406648,       1.258183,2.4408,0.209136,
+       1.2746,2.4408,0,        1.2048,2.4744,0,        1.189282,2.4744,0.197684,
+       1.189282,2.4744,0.197684,       1.258183,2.4408,0.209136,       1.2746,2.4408,0,
+       0.213304,2.4,1.283256,  0.209136,2.4408,1.258183,       0,2.4408,1.2746,
+       0,2.4408,1.2746,        0,2.4,1.3,      0.213304,2.4,1.283256,
+       0.414752,2.4,1.234688,  0.406648,2.4408,1.210564,       0.209136,2.4408,1.258183,
+       0.209136,2.4408,1.258183,       0.213304,2.4,1.283256,  0.414752,2.4,1.234688,
+       0.601848,2.4,1.156792,  0.590089,2.4408,1.13419,        0.406648,2.4408,1.210564,
+       0.406648,2.4408,1.210564,       0.414752,2.4,1.234688,  0.601848,2.4,1.156792,
+       0.772096,2.4,1.052064,  0.75701,2.4408,1.031508,        0.590089,2.4408,1.13419,
+       0.590089,2.4408,1.13419,        0.601848,2.4,1.156792,  0.772096,2.4,1.052064,
+       0.923,2.4,0.923,        0.904966,2.4408,0.904966,       0.75701,2.4408,1.031508,
+       0.75701,2.4408,1.031508,        0.772096,2.4,1.052064,  0.923,2.4,0.923,
+       1.052064,2.4,0.772096,  1.031508,2.4408,0.75701,        0.904966,2.4408,0.904966,
+       0.904966,2.4408,0.904966,       0.923,2.4,0.923,        1.052064,2.4,0.772096,
+       1.156792,2.4,0.601848,  1.13419,2.4408,0.590089,        1.031508,2.4408,0.75701,
+       1.031508,2.4408,0.75701,        1.052064,2.4,0.772096,  1.156792,2.4,0.601848,
+       1.234688,2.4,0.414752,  1.210564,2.4408,0.406648,       1.13419,2.4408,0.590089,
+       1.13419,2.4408,0.590089,        1.156792,2.4,0.601848,  1.234688,2.4,0.414752,
+       1.283256,2.4,0.213304,  1.258183,2.4408,0.209136,       1.210564,2.4408,0.406648,
+       1.210564,2.4408,0.406648,       1.234688,2.4,0.414752,  1.283256,2.4,0.213304,
+       1.3,2.4,0,      1.2746,2.4408,0,        1.258183,2.4408,0.209136,
+       1.258183,2.4408,0.209136,       1.283256,2.4,0.213304,  1.3,2.4,0,
+       0,0,0,  0.388275,0.002175,0,    0.383274,0.002175,0.063708,
+       0,0,0,  0.383274,0.002175,0.063708,     0.368768,0.002175,0.123875,
+       0,0,0,  0.368768,0.002175,0.123875,     0.345503,0.002175,0.179756,
+       0,0,0,  0.345503,0.002175,0.179756,     0.314223,0.002175,0.230604,
+       0,0,0,  0.314223,0.002175,0.230604,     0.275675,0.002175,0.275675,
+       0,0,0,  0.275675,0.002175,0.275675,     0.230604,0.002175,0.314223,
+       0,0,0,  0.230604,0.002175,0.314223,     0.179756,0.002175,0.345503,
+       0,0,0,  0.179756,0.002175,0.345503,     0.123875,0.002175,0.368768,
+       0,0,0,  0.123875,0.002175,0.368768,     0.063708,0.002175,0.383274,
+       0,0,0,  0.063708,0.002175,0.383274,     0,0.002175,0.388275,
+       0.694143,0.0084,0.115381,       0.383274,0.002175,0.063708,     0.388275,0.002175,0,
+       0.388275,0.002175,0,    0.7032,0.0084,0,        0.694143,0.0084,0.115381,
+       0.667871,0.0084,0.224349,       0.368768,0.002175,0.123875,     0.383274,0.002175,0.063708,
+       0.383274,0.002175,0.063708,     0.694143,0.0084,0.115381,       0.667871,0.0084,0.224349,
+       0.625735,0.0084,0.325553,       0.345503,0.002175,0.179756,     0.368768,0.002175,0.123875,
+       0.368768,0.002175,0.123875,     0.667871,0.0084,0.224349,       0.625735,0.0084,0.325553,
+       0.569086,0.0084,0.417645,       0.314223,0.002175,0.230604,     0.345503,0.002175,0.179756,
+       0.345503,0.002175,0.179756,     0.625735,0.0084,0.325553,       0.569086,0.0084,0.417645,
+       0.499272,0.0084,0.499272,       0.275675,0.002175,0.275675,     0.314223,0.002175,0.230604,
+       0.314223,0.002175,0.230604,     0.569086,0.0084,0.417645,       0.499272,0.0084,0.499272,
+       0.417645,0.0084,0.569086,       0.230604,0.002175,0.314223,     0.275675,0.002175,0.275675,
+       0.275675,0.002175,0.275675,     0.499272,0.0084,0.499272,       0.417645,0.0084,0.569086,
+       0.325553,0.0084,0.625735,       0.179756,0.002175,0.345503,     0.230604,0.002175,0.314223,
+       0.230604,0.002175,0.314223,     0.417645,0.0084,0.569086,       0.325553,0.0084,0.625735,
+       0.224349,0.0084,0.667871,       0.123875,0.002175,0.368768,     0.179756,0.002175,0.345503,
+       0.179756,0.002175,0.345503,     0.325553,0.0084,0.625735,       0.224349,0.0084,0.667871,
+       0.115381,0.0084,0.694143,       0.063708,0.002175,0.383274,     0.123875,0.002175,0.368768,
+       0.123875,0.002175,0.368768,     0.224349,0.0084,0.667871,       0.115381,0.0084,0.694143,
+       0,0.0084,0.7032,        0,0.002175,0.388275,    0.063708,0.002175,0.383274,
+       0.063708,0.002175,0.383274,     0.115381,0.0084,0.694143,       0,0.0084,0.7032,
+       0.940158,0.018225,0.156274,     0.694143,0.0084,0.115381,       0.7032,0.0084,0,
+       0.7032,0.0084,0,        0.952425,0.018225,0,    0.940158,0.018225,0.156274,
+       0.904575,0.018225,0.303862,     0.667871,0.0084,0.224349,       0.694143,0.0084,0.115381,
+       0.694143,0.0084,0.115381,       0.940158,0.018225,0.156274,     0.904575,0.018225,0.303862,
+       0.847506,0.018225,0.440935,     0.625735,0.0084,0.325553,       0.667871,0.0084,0.224349,
+       0.667871,0.0084,0.224349,       0.904575,0.018225,0.303862,     0.847506,0.018225,0.440935,
+       0.770779,0.018225,0.565664,     0.569086,0.0084,0.417645,       0.625735,0.0084,0.325553,
+       0.625735,0.0084,0.325553,       0.847506,0.018225,0.440935,     0.770779,0.018225,0.565664,
+       0.676222,0.018225,0.676222,     0.499272,0.0084,0.499272,       0.569086,0.0084,0.417645,
+       0.569086,0.0084,0.417645,       0.770779,0.018225,0.565664,     0.676222,0.018225,0.676222,
+       0.565664,0.018225,0.770779,     0.417645,0.0084,0.569086,       0.499272,0.0084,0.499272,
+       0.499272,0.0084,0.499272,       0.676222,0.018225,0.676222,     0.565664,0.018225,0.770779,
+       0.440935,0.018225,0.847506,     0.325553,0.0084,0.625735,       0.417645,0.0084,0.569086,
+       0.417645,0.0084,0.569086,       0.565664,0.018225,0.770779,     0.440935,0.018225,0.847506,
+       0.303862,0.018225,0.904575,     0.224349,0.0084,0.667871,       0.325553,0.0084,0.625735,
+       0.325553,0.0084,0.625735,       0.440935,0.018225,0.847506,     0.303862,0.018225,0.904575,
+       0.156274,0.018225,0.940158,     0.115381,0.0084,0.694143,       0.224349,0.0084,0.667871,
+       0.224349,0.0084,0.667871,       0.303862,0.018225,0.904575,     0.156274,0.018225,0.940158,
+       0,0.018225,0.952425,    0,0.0084,0.7032,        0.115381,0.0084,0.694143,
+       0.115381,0.0084,0.694143,       0.156274,0.018225,0.940158,     0,0.018225,0.952425,
+       1.12887,0.0312,0.187642,        0.940158,0.018225,0.156274,     0.952425,0.018225,0,
+       0.952425,0.018225,0,    1.1436,0.0312,0,        1.12887,0.0312,0.187642,
+       1.086146,0.0312,0.364854,       0.904575,0.018225,0.303862,     0.940158,0.018225,0.156274,
+       0.940158,0.018225,0.156274,     1.12887,0.0312,0.187642,        1.086146,0.0312,0.364854,
+       1.017621,0.0312,0.529441,       0.847506,0.018225,0.440935,     0.904575,0.018225,0.303862,
+       0.904575,0.018225,0.303862,     1.086146,0.0312,0.364854,       1.017621,0.0312,0.529441,
+       0.925493,0.0312,0.679207,       0.770779,0.018225,0.565664,     0.847506,0.018225,0.440935,
+       0.847506,0.018225,0.440935,     1.017621,0.0312,0.529441,       0.925493,0.0312,0.679207,
+       0.811956,0.0312,0.811956,       0.676222,0.018225,0.676222,     0.770779,0.018225,0.565664,
+       0.770779,0.018225,0.565664,     0.925493,0.0312,0.679207,       0.811956,0.0312,0.811956,
+       0.679207,0.0312,0.925493,       0.565664,0.018225,0.770779,     0.676222,0.018225,0.676222,
+       0.676222,0.018225,0.676222,     0.811956,0.0312,0.811956,       0.679207,0.0312,0.925493,
+       0.529441,0.0312,1.017621,       0.440935,0.018225,0.847506,     0.565664,0.018225,0.770779,
+       0.565664,0.018225,0.770779,     0.679207,0.0312,0.925493,       0.529441,0.0312,1.017621,
+       0.364854,0.0312,1.086146,       0.303862,0.018225,0.904575,     0.440935,0.018225,0.847506,
+       0.440935,0.018225,0.847506,     0.529441,0.0312,1.017621,       0.364854,0.0312,1.086146,
+       0.187642,0.0312,1.12887,        0.156274,0.018225,0.940158,     0.303862,0.018225,0.904575,
+       0.303862,0.018225,0.904575,     0.364854,0.0312,1.086146,       0.187642,0.0312,1.12887,
+       0,0.0312,1.1436,        0,0.018225,0.952425,    0.156274,0.018225,0.940158,
+       0.156274,0.018225,0.940158,     0.187642,0.0312,1.12887,        0,0.0312,1.1436,
+       1.267832,0.046875,0.21074,      1.12887,0.0312,0.187642,        1.1436,0.0312,0,
+       1.1436,0.0312,0,        1.284375,0.046875,0,    1.267832,0.046875,0.21074,
+       1.219848,0.046875,0.409767,     1.086146,0.0312,0.364854,       1.12887,0.0312,0.187642,
+       1.12887,0.0312,0.187642,        1.267832,0.046875,0.21074,      1.219848,0.046875,0.409767,
+       1.142888,0.046875,0.594614,     1.017621,0.0312,0.529441,       1.086146,0.0312,0.364854,
+       1.086146,0.0312,0.364854,       1.219848,0.046875,0.409767,     1.142888,0.046875,0.594614,
+       1.039419,0.046875,0.762816,     0.925493,0.0312,0.679207,       1.017621,0.0312,0.529441,
+       1.017621,0.0312,0.529441,       1.142888,0.046875,0.594614,     1.039419,0.046875,0.762816,
+       0.911906,0.046875,0.911906,     0.811956,0.0312,0.811956,       0.925493,0.0312,0.679207,
+       0.925493,0.0312,0.679207,       1.039419,0.046875,0.762816,     0.911906,0.046875,0.911906,
+       0.762816,0.046875,1.039419,     0.679207,0.0312,0.925493,       0.811956,0.0312,0.811956,
+       0.811956,0.0312,0.811956,       0.911906,0.046875,0.911906,     0.762816,0.046875,1.039419,
+       0.594614,0.046875,1.142888,     0.529441,0.0312,1.017621,       0.679207,0.0312,0.925493,
+       0.679207,0.0312,0.925493,       0.762816,0.046875,1.039419,     0.594614,0.046875,1.142888,
+       0.409767,0.046875,1.219848,     0.364854,0.0312,1.086146,       0.529441,0.0312,1.017621,
+       0.529441,0.0312,1.017621,       0.594614,0.046875,1.142888,     0.409767,0.046875,1.219848,
+       0.21074,0.046875,1.267832,      0.187642,0.0312,1.12887,        0.364854,0.0312,1.086146,
+       0.364854,0.0312,1.086146,       0.409767,0.046875,1.219848,     0.21074,0.046875,1.267832,
+       0,0.046875,1.284375,    0,0.0312,1.1436,        0.187642,0.0312,1.12887,
+       0.187642,0.0312,1.12887,        0.21074,0.046875,1.267832,      0,0.046875,1.284375,
+       1.364595,0.0648,0.226824,       1.267832,0.046875,0.21074,      1.284375,0.046875,0,
+       1.284375,0.046875,0,    1.3824,0.0648,0,        1.364595,0.0648,0.226824,
+       1.312948,0.0648,0.441041,       1.219848,0.046875,0.409767,     1.267832,0.046875,0.21074,
+       1.267832,0.046875,0.21074,      1.364595,0.0648,0.226824,       1.312948,0.0648,0.441041,
+       1.230115,0.0648,0.639996,       1.142888,0.046875,0.594614,     1.219848,0.046875,0.409767,
+       1.219848,0.046875,0.409767,     1.312948,0.0648,0.441041,       1.230115,0.0648,0.639996,
+       1.118749,0.0648,0.821035,       1.039419,0.046875,0.762816,     1.142888,0.046875,0.594614,
+       1.142888,0.046875,0.594614,     1.230115,0.0648,0.639996,       1.118749,0.0648,0.821035,
+       0.981504,0.0648,0.981504,       0.911906,0.046875,0.911906,     1.039419,0.046875,0.762816,
+       1.039419,0.046875,0.762816,     1.118749,0.0648,0.821035,       0.981504,0.0648,0.981504,
+       0.821035,0.0648,1.118749,       0.762816,0.046875,1.039419,     0.911906,0.046875,0.911906,
+       0.911906,0.046875,0.911906,     0.981504,0.0648,0.981504,       0.821035,0.0648,1.118749,
+       0.639996,0.0648,1.230115,       0.594614,0.046875,1.142888,     0.762816,0.046875,1.039419,
+       0.762816,0.046875,1.039419,     0.821035,0.0648,1.118749,       0.639996,0.0648,1.230115,
+       0.441041,0.0648,1.312948,       0.409767,0.046875,1.219848,     0.594614,0.046875,1.142888,
+       0.594614,0.046875,1.142888,     0.639996,0.0648,1.230115,       0.441041,0.0648,1.312948,
+       0.226824,0.0648,1.364595,       0.21074,0.046875,1.267832,      0.409767,0.046875,1.219848,
+       0.409767,0.046875,1.219848,     0.441041,0.0648,1.312948,       0.226824,0.0648,1.364595,
+       0,0.0648,1.3824,        0,0.046875,1.284375,    0.21074,0.046875,1.267832,
+       0.21074,0.046875,1.267832,      0.226824,0.0648,1.364595,       0,0.0648,1.3824,
+       1.426709,0.084525,0.237149,     1.364595,0.0648,0.226824,       1.3824,0.0648,0,
+       1.3824,0.0648,0,        1.445325,0.084525,0,    1.426709,0.084525,0.237149,
+       1.372712,0.084525,0.461116,     1.312948,0.0648,0.441041,       1.364595,0.0648,0.226824,
+       1.364595,0.0648,0.226824,       1.426709,0.084525,0.237149,     1.372712,0.084525,0.461116,
+       1.286108,0.084525,0.669128,     1.230115,0.0648,0.639996,       1.312948,0.0648,0.441041,
+       1.312948,0.0648,0.441041,       1.372712,0.084525,0.461116,     1.286108,0.084525,0.669128,
+       1.169673,0.084525,0.858407,     1.118749,0.0648,0.821035,       1.230115,0.0648,0.639996,
+       1.230115,0.0648,0.639996,       1.286108,0.084525,0.669128,     1.169673,0.084525,0.858407,
+       1.026181,0.084525,1.026181,     0.981504,0.0648,0.981504,       1.118749,0.0648,0.821035,
+       1.118749,0.0648,0.821035,       1.169673,0.084525,0.858407,     1.026181,0.084525,1.026181,
+       0.858407,0.084525,1.169673,     0.821035,0.0648,1.118749,       0.981504,0.0648,0.981504,
+       0.981504,0.0648,0.981504,       1.026181,0.084525,1.026181,     0.858407,0.084525,1.169673,
+       0.669128,0.084525,1.286108,     0.639996,0.0648,1.230115,       0.821035,0.0648,1.118749,
+       0.821035,0.0648,1.118749,       0.858407,0.084525,1.169673,     0.669128,0.084525,1.286108,
+       0.461116,0.084525,1.372712,     0.441041,0.0648,1.312948,       0.639996,0.0648,1.230115,
+       0.639996,0.0648,1.230115,       0.669128,0.084525,1.286108,     0.461116,0.084525,1.372712,
+       0.237149,0.084525,1.426709,     0.226824,0.0648,1.364595,       0.441041,0.0648,1.312948,
+       0.441041,0.0648,1.312948,       0.461116,0.084525,1.372712,     0.237149,0.084525,1.426709,
+       0,0.084525,1.445325,    0,0.0648,1.3824,        0.226824,0.0648,1.364595,
+       0.226824,0.0648,1.364595,       0.237149,0.084525,1.426709,     0,0.084525,1.445325,
+       1.461727,0.1056,0.24297,        1.426709,0.084525,0.237149,     1.445325,0.084525,0,
+       1.445325,0.084525,0,    1.4808,0.1056,0,        1.461727,0.1056,0.24297,
+       1.406405,0.1056,0.472434,       1.372712,0.084525,0.461116,     1.426709,0.084525,0.237149,
+       1.426709,0.084525,0.237149,     1.461727,0.1056,0.24297,        1.406405,0.1056,0.472434,
+       1.317675,0.1056,0.685551,       1.286108,0.084525,0.669128,     1.372712,0.084525,0.461116,
+       1.372712,0.084525,0.461116,     1.406405,0.1056,0.472434,       1.317675,0.1056,0.685551,
+       1.198382,0.1056,0.879477,       1.169673,0.084525,0.858407,     1.286108,0.084525,0.669128,
+       1.286108,0.084525,0.669128,     1.317675,0.1056,0.685551,       1.198382,0.1056,0.879477,
+       1.051368,0.1056,1.051368,       1.026181,0.084525,1.026181,     1.169673,0.084525,0.858407,
+       1.169673,0.084525,0.858407,     1.198382,0.1056,0.879477,       1.051368,0.1056,1.051368,
+       0.879477,0.1056,1.198382,       0.858407,0.084525,1.169673,     1.026181,0.084525,1.026181,
+       1.026181,0.084525,1.026181,     1.051368,0.1056,1.051368,       0.879477,0.1056,1.198382,
+       0.685551,0.1056,1.317675,       0.669128,0.084525,1.286108,     0.858407,0.084525,1.169673,
+       0.858407,0.084525,1.169673,     0.879477,0.1056,1.198382,       0.685551,0.1056,1.317675,
+       0.472434,0.1056,1.406405,       0.461116,0.084525,1.372712,     0.669128,0.084525,1.286108,
+       0.669128,0.084525,1.286108,     0.685551,0.1056,1.317675,       0.472434,0.1056,1.406405,
+       0.24297,0.1056,1.461727,        0.237149,0.084525,1.426709,     0.461116,0.084525,1.372712,
+       0.461116,0.084525,1.372712,     0.472434,0.1056,1.406405,       0.24297,0.1056,1.461727,
+       0,0.1056,1.4808,        0,0.084525,1.445325,    0.237149,0.084525,1.426709,
+       0.237149,0.084525,1.426709,     0.24297,0.1056,1.461727,        0,0.1056,1.4808,
+       1.4772,0.127575,0.245542,       1.461727,0.1056,0.24297,        1.4808,0.1056,0,
+       1.4808,0.1056,0,        1.496475,0.127575,0,    1.4772,0.127575,0.245542,
+       1.421292,0.127575,0.477435,     1.406405,0.1056,0.472434,       1.461727,0.1056,0.24297,
+       1.461727,0.1056,0.24297,        1.4772,0.127575,0.245542,       1.421292,0.127575,0.477435,
+       1.331623,0.127575,0.692808,     1.317675,0.1056,0.685551,       1.406405,0.1056,0.472434,
+       1.406405,0.1056,0.472434,       1.421292,0.127575,0.477435,     1.331623,0.127575,0.692808,
+       1.211067,0.127575,0.888786,     1.198382,0.1056,0.879477,       1.317675,0.1056,0.685551,
+       1.317675,0.1056,0.685551,       1.331623,0.127575,0.692808,     1.211067,0.127575,0.888786,
+       1.062497,0.127575,1.062497,     1.051368,0.1056,1.051368,       1.198382,0.1056,0.879477,
+       1.198382,0.1056,0.879477,       1.211067,0.127575,0.888786,     1.062497,0.127575,1.062497,
+       0.888786,0.127575,1.211067,     0.879477,0.1056,1.198382,       1.051368,0.1056,1.051368,
+       1.051368,0.1056,1.051368,       1.062497,0.127575,1.062497,     0.888786,0.127575,1.211067,
+       0.692808,0.127575,1.331623,     0.685551,0.1056,1.317675,       0.879477,0.1056,1.198382,
+       0.879477,0.1056,1.198382,       0.888786,0.127575,1.211067,     0.692808,0.127575,1.331623,
+       0.477435,0.127575,1.421292,     0.472434,0.1056,1.406405,       0.685551,0.1056,1.317675,
+       0.685551,0.1056,1.317675,       0.692808,0.127575,1.331623,     0.477435,0.127575,1.421292,
+       0.245542,0.127575,1.4772,       0.24297,0.1056,1.461727,        0.472434,0.1056,1.406405,
+       0.472434,0.1056,1.406405,       0.477435,0.127575,1.421292,     0.245542,0.127575,1.4772,
+       0,0.127575,1.496475,    0,0.1056,1.4808,        0.24297,0.1056,1.461727,
+       0.24297,0.1056,1.461727,        0.245542,0.127575,1.4772,       0,0.127575,1.496475,
+       1.48068,0.15,0.24612,   1.4772,0.127575,0.245542,       1.496475,0.127575,0,
+       1.496475,0.127575,0,    1.5,0.15,0,     1.48068,0.15,0.24612,
+       1.42464,0.15,0.47856,   1.421292,0.127575,0.477435,     1.4772,0.127575,0.245542,
+       1.4772,0.127575,0.245542,       1.48068,0.15,0.24612,   1.42464,0.15,0.47856,
+       1.33476,0.15,0.69444,   1.331623,0.127575,0.692808,     1.421292,0.127575,0.477435,
+       1.421292,0.127575,0.477435,     1.42464,0.15,0.47856,   1.33476,0.15,0.69444,
+       1.21392,0.15,0.89088,   1.211067,0.127575,0.888786,     1.331623,0.127575,0.692808,
+       1.331623,0.127575,0.692808,     1.33476,0.15,0.69444,   1.21392,0.15,0.89088,
+       1.065,0.15,1.065,       1.062497,0.127575,1.062497,     1.211067,0.127575,0.888786,
+       1.211067,0.127575,0.888786,     1.21392,0.15,0.89088,   1.065,0.15,1.065,
+       0.89088,0.15,1.21392,   0.888786,0.127575,1.211067,     1.062497,0.127575,1.062497,
+       1.062497,0.127575,1.062497,     1.065,0.15,1.065,       0.89088,0.15,1.21392,
+       0.69444,0.15,1.33476,   0.692808,0.127575,1.331623,     0.888786,0.127575,1.211067,
+       0.888786,0.127575,1.211067,     0.89088,0.15,1.21392,   0.69444,0.15,1.33476,
+       0.47856,0.15,1.42464,   0.477435,0.127575,1.421292,     0.692808,0.127575,1.331623,
+       0.692808,0.127575,1.331623,     0.69444,0.15,1.33476,   0.47856,0.15,1.42464,
+       0.24612,0.15,1.48068,   0.245542,0.127575,1.4772,       0.477435,0.127575,1.421292,
+       0.477435,0.127575,1.421292,     0.47856,0.15,1.42464,   0.24612,0.15,1.48068,
+       0,0.15,1.5,     0,0.127575,1.496475,    0.245542,0.127575,1.4772,
+       0.245542,0.127575,1.4772,       0.24612,0.15,1.48068,   0,0.15,1.5,
+       0,0,0,  0,0.002175,0.388275,    -0.063708,0.002175,0.383274,
+       0,0,0,  -0.063708,0.002175,0.383274,    -0.123875,0.002175,0.368768,
+       0,0,0,  -0.123875,0.002175,0.368768,    -0.179756,0.002175,0.345503,
+       0,0,0,  -0.179756,0.002175,0.345503,    -0.230604,0.002175,0.314223,
+       0,0,0,  -0.230604,0.002175,0.314223,    -0.275675,0.002175,0.275675,
+       0,0,0,  -0.275675,0.002175,0.275675,    -0.314223,0.002175,0.230604,
+       0,0,0,  -0.314223,0.002175,0.230604,    -0.345503,0.002175,0.179756,
+       0,0,0,  -0.345503,0.002175,0.179756,    -0.368768,0.002175,0.123875,
+       0,0,0,  -0.368768,0.002175,0.123875,    -0.383274,0.002175,0.063708,
+       0,0,0,  -0.383274,0.002175,0.063708,    -0.388275,0.002175,0,
+       -0.115381,0.0084,0.694143,      -0.063708,0.002175,0.383274,    0,0.002175,0.388275,
+       0,0.002175,0.388275,    0,0.0084,0.7032,        -0.115381,0.0084,0.694143,
+       -0.224349,0.0084,0.667871,      -0.123875,0.002175,0.368768,    -0.063708,0.002175,0.383274,
+       -0.063708,0.002175,0.383274,    -0.115381,0.0084,0.694143,      -0.224349,0.0084,0.667871,
+       -0.325553,0.0084,0.625735,      -0.179756,0.002175,0.345503,    -0.123875,0.002175,0.368768,
+       -0.123875,0.002175,0.368768,    -0.224349,0.0084,0.667871,      -0.325553,0.0084,0.625735,
+       -0.417645,0.0084,0.569086,      -0.230604,0.002175,0.314223,    -0.179756,0.002175,0.345503,
+       -0.179756,0.002175,0.345503,    -0.325553,0.0084,0.625735,      -0.417645,0.0084,0.569086,
+       -0.499272,0.0084,0.499272,      -0.275675,0.002175,0.275675,    -0.230604,0.002175,0.314223,
+       -0.230604,0.002175,0.314223,    -0.417645,0.0084,0.569086,      -0.499272,0.0084,0.499272,
+       -0.569086,0.0084,0.417645,      -0.314223,0.002175,0.230604,    -0.275675,0.002175,0.275675,
+       -0.275675,0.002175,0.275675,    -0.499272,0.0084,0.499272,      -0.569086,0.0084,0.417645,
+       -0.625735,0.0084,0.325553,      -0.345503,0.002175,0.179756,    -0.314223,0.002175,0.230604,
+       -0.314223,0.002175,0.230604,    -0.569086,0.0084,0.417645,      -0.625735,0.0084,0.325553,
+       -0.667871,0.0084,0.224349,      -0.368768,0.002175,0.123875,    -0.345503,0.002175,0.179756,
+       -0.345503,0.002175,0.179756,    -0.625735,0.0084,0.325553,      -0.667871,0.0084,0.224349,
+       -0.694143,0.0084,0.115381,      -0.383274,0.002175,0.063708,    -0.368768,0.002175,0.123875,
+       -0.368768,0.002175,0.123875,    -0.667871,0.0084,0.224349,      -0.694143,0.0084,0.115381,
+       -0.7032,0.0084,0,       -0.388275,0.002175,0,   -0.383274,0.002175,0.063708,
+       -0.383274,0.002175,0.063708,    -0.694143,0.0084,0.115381,      -0.7032,0.0084,0,
+       -0.156274,0.018225,0.940158,    -0.115381,0.0084,0.694143,      0,0.0084,0.7032,
+       0,0.0084,0.7032,        0,0.018225,0.952425,    -0.156274,0.018225,0.940158,
+       -0.303862,0.018225,0.904575,    -0.224349,0.0084,0.667871,      -0.115381,0.0084,0.694143,
+       -0.115381,0.0084,0.694143,      -0.156274,0.018225,0.940158,    -0.303862,0.018225,0.904575,
+       -0.440935,0.018225,0.847506,    -0.325553,0.0084,0.625735,      -0.224349,0.0084,0.667871,
+       -0.224349,0.0084,0.667871,      -0.303862,0.018225,0.904575,    -0.440935,0.018225,0.847506,
+       -0.565664,0.018225,0.770779,    -0.417645,0.0084,0.569086,      -0.325553,0.0084,0.625735,
+       -0.325553,0.0084,0.625735,      -0.440935,0.018225,0.847506,    -0.565664,0.018225,0.770779,
+       -0.676222,0.018225,0.676222,    -0.499272,0.0084,0.499272,      -0.417645,0.0084,0.569086,
+       -0.417645,0.0084,0.569086,      -0.565664,0.018225,0.770779,    -0.676222,0.018225,0.676222,
+       -0.770779,0.018225,0.565664,    -0.569086,0.0084,0.417645,      -0.499272,0.0084,0.499272,
+       -0.499272,0.0084,0.499272,      -0.676222,0.018225,0.676222,    -0.770779,0.018225,0.565664,
+       -0.847506,0.018225,0.440935,    -0.625735,0.0084,0.325553,      -0.569086,0.0084,0.417645,
+       -0.569086,0.0084,0.417645,      -0.770779,0.018225,0.565664,    -0.847506,0.018225,0.440935,
+       -0.904575,0.018225,0.303862,    -0.667871,0.0084,0.224349,      -0.625735,0.0084,0.325553,
+       -0.625735,0.0084,0.325553,      -0.847506,0.018225,0.440935,    -0.904575,0.018225,0.303862,
+       -0.940158,0.018225,0.156274,    -0.694143,0.0084,0.115381,      -0.667871,0.0084,0.224349,
+       -0.667871,0.0084,0.224349,      -0.904575,0.018225,0.303862,    -0.940158,0.018225,0.156274,
+       -0.952425,0.018225,0,   -0.7032,0.0084,0,       -0.694143,0.0084,0.115381,
+       -0.694143,0.0084,0.115381,      -0.940158,0.018225,0.156274,    -0.952425,0.018225,0,
+       -0.187642,0.0312,1.12887,       -0.156274,0.018225,0.940158,    0,0.018225,0.952425,
+       0,0.018225,0.952425,    0,0.0312,1.1436,        -0.187642,0.0312,1.12887,
+       -0.364854,0.0312,1.086146,      -0.303862,0.018225,0.904575,    -0.156274,0.018225,0.940158,
+       -0.156274,0.018225,0.940158,    -0.187642,0.0312,1.12887,       -0.364854,0.0312,1.086146,
+       -0.529441,0.0312,1.017621,      -0.440935,0.018225,0.847506,    -0.303862,0.018225,0.904575,
+       -0.303862,0.018225,0.904575,    -0.364854,0.0312,1.086146,      -0.529441,0.0312,1.017621,
+       -0.679207,0.0312,0.925493,      -0.565664,0.018225,0.770779,    -0.440935,0.018225,0.847506,
+       -0.440935,0.018225,0.847506,    -0.529441,0.0312,1.017621,      -0.679207,0.0312,0.925493,
+       -0.811956,0.0312,0.811956,      -0.676222,0.018225,0.676222,    -0.565664,0.018225,0.770779,
+       -0.565664,0.018225,0.770779,    -0.679207,0.0312,0.925493,      -0.811956,0.0312,0.811956,
+       -0.925493,0.0312,0.679207,      -0.770779,0.018225,0.565664,    -0.676222,0.018225,0.676222,
+       -0.676222,0.018225,0.676222,    -0.811956,0.0312,0.811956,      -0.925493,0.0312,0.679207,
+       -1.017621,0.0312,0.529441,      -0.847506,0.018225,0.440935,    -0.770779,0.018225,0.565664,
+       -0.770779,0.018225,0.565664,    -0.925493,0.0312,0.679207,      -1.017621,0.0312,0.529441,
+       -1.086146,0.0312,0.364854,      -0.904575,0.018225,0.303862,    -0.847506,0.018225,0.440935,
+       -0.847506,0.018225,0.440935,    -1.017621,0.0312,0.529441,      -1.086146,0.0312,0.364854,
+       -1.12887,0.0312,0.187642,       -0.940158,0.018225,0.156274,    -0.904575,0.018225,0.303862,
+       -0.904575,0.018225,0.303862,    -1.086146,0.0312,0.364854,      -1.12887,0.0312,0.187642,
+       -1.1436,0.0312,0,       -0.952425,0.018225,0,   -0.940158,0.018225,0.156274,
+       -0.940158,0.018225,0.156274,    -1.12887,0.0312,0.187642,       -1.1436,0.0312,0,
+       -0.21074,0.046875,1.267832,     -0.187642,0.0312,1.12887,       0,0.0312,1.1436,
+       0,0.0312,1.1436,        0,0.046875,1.284375,    -0.21074,0.046875,1.267832,
+       -0.409767,0.046875,1.219848,    -0.364854,0.0312,1.086146,      -0.187642,0.0312,1.12887,
+       -0.187642,0.0312,1.12887,       -0.21074,0.046875,1.267832,     -0.409767,0.046875,1.219848,
+       -0.594614,0.046875,1.142888,    -0.529441,0.0312,1.017621,      -0.364854,0.0312,1.086146,
+       -0.364854,0.0312,1.086146,      -0.409767,0.046875,1.219848,    -0.594614,0.046875,1.142888,
+       -0.762816,0.046875,1.039419,    -0.679207,0.0312,0.925493,      -0.529441,0.0312,1.017621,
+       -0.529441,0.0312,1.017621,      -0.594614,0.046875,1.142888,    -0.762816,0.046875,1.039419,
+       -0.911906,0.046875,0.911906,    -0.811956,0.0312,0.811956,      -0.679207,0.0312,0.925493,
+       -0.679207,0.0312,0.925493,      -0.762816,0.046875,1.039419,    -0.911906,0.046875,0.911906,
+       -1.039419,0.046875,0.762816,    -0.925493,0.0312,0.679207,      -0.811956,0.0312,0.811956,
+       -0.811956,0.0312,0.811956,      -0.911906,0.046875,0.911906,    -1.039419,0.046875,0.762816,
+       -1.142888,0.046875,0.594614,    -1.017621,0.0312,0.529441,      -0.925493,0.0312,0.679207,
+       -0.925493,0.0312,0.679207,      -1.039419,0.046875,0.762816,    -1.142888,0.046875,0.594614,
+       -1.219848,0.046875,0.409767,    -1.086146,0.0312,0.364854,      -1.017621,0.0312,0.529441,
+       -1.017621,0.0312,0.529441,      -1.142888,0.046875,0.594614,    -1.219848,0.046875,0.409767,
+       -1.267832,0.046875,0.21074,     -1.12887,0.0312,0.187642,       -1.086146,0.0312,0.364854,
+       -1.086146,0.0312,0.364854,      -1.219848,0.046875,0.409767,    -1.267832,0.046875,0.21074,
+       -1.284375,0.046875,0,   -1.1436,0.0312,0,       -1.12887,0.0312,0.187642,
+       -1.12887,0.0312,0.187642,       -1.267832,0.046875,0.21074,     -1.284375,0.046875,0,
+       -0.226824,0.0648,1.364595,      -0.21074,0.046875,1.267832,     0,0.046875,1.284375,
+       0,0.046875,1.284375,    0,0.0648,1.3824,        -0.226824,0.0648,1.364595,
+       -0.441041,0.0648,1.312948,      -0.409767,0.046875,1.219848,    -0.21074,0.046875,1.267832,
+       -0.21074,0.046875,1.267832,     -0.226824,0.0648,1.364595,      -0.441041,0.0648,1.312948,
+       -0.639996,0.0648,1.230115,      -0.594614,0.046875,1.142888,    -0.409767,0.046875,1.219848,
+       -0.409767,0.046875,1.219848,    -0.441041,0.0648,1.312948,      -0.639996,0.0648,1.230115,
+       -0.821035,0.0648,1.118749,      -0.762816,0.046875,1.039419,    -0.594614,0.046875,1.142888,
+       -0.594614,0.046875,1.142888,    -0.639996,0.0648,1.230115,      -0.821035,0.0648,1.118749,
+       -0.981504,0.0648,0.981504,      -0.911906,0.046875,0.911906,    -0.762816,0.046875,1.039419,
+       -0.762816,0.046875,1.039419,    -0.821035,0.0648,1.118749,      -0.981504,0.0648,0.981504,
+       -1.118749,0.0648,0.821035,      -1.039419,0.046875,0.762816,    -0.911906,0.046875,0.911906,
+       -0.911906,0.046875,0.911906,    -0.981504,0.0648,0.981504,      -1.118749,0.0648,0.821035,
+       -1.230115,0.0648,0.639996,      -1.142888,0.046875,0.594614,    -1.039419,0.046875,0.762816,
+       -1.039419,0.046875,0.762816,    -1.118749,0.0648,0.821035,      -1.230115,0.0648,0.639996,
+       -1.312948,0.0648,0.441041,      -1.219848,0.046875,0.409767,    -1.142888,0.046875,0.594614,
+       -1.142888,0.046875,0.594614,    -1.230115,0.0648,0.639996,      -1.312948,0.0648,0.441041,
+       -1.364595,0.0648,0.226824,      -1.267832,0.046875,0.21074,     -1.219848,0.046875,0.409767,
+       -1.219848,0.046875,0.409767,    -1.312948,0.0648,0.441041,      -1.364595,0.0648,0.226824,
+       -1.3824,0.0648,0,       -1.284375,0.046875,0,   -1.267832,0.046875,0.21074,
+       -1.267832,0.046875,0.21074,     -1.364595,0.0648,0.226824,      -1.3824,0.0648,0,
+       -0.237149,0.084525,1.426709,    -0.226824,0.0648,1.364595,      0,0.0648,1.3824,
+       0,0.0648,1.3824,        0,0.084525,1.445325,    -0.237149,0.084525,1.426709,
+       -0.461116,0.084525,1.372712,    -0.441041,0.0648,1.312948,      -0.226824,0.0648,1.364595,
+       -0.226824,0.0648,1.364595,      -0.237149,0.084525,1.426709,    -0.461116,0.084525,1.372712,
+       -0.669128,0.084525,1.286108,    -0.639996,0.0648,1.230115,      -0.441041,0.0648,1.312948,
+       -0.441041,0.0648,1.312948,      -0.461116,0.084525,1.372712,    -0.669128,0.084525,1.286108,
+       -0.858407,0.084525,1.169673,    -0.821035,0.0648,1.118749,      -0.639996,0.0648,1.230115,
+       -0.639996,0.0648,1.230115,      -0.669128,0.084525,1.286108,    -0.858407,0.084525,1.169673,
+       -1.026181,0.084525,1.026181,    -0.981504,0.0648,0.981504,      -0.821035,0.0648,1.118749,
+       -0.821035,0.0648,1.118749,      -0.858407,0.084525,1.169673,    -1.026181,0.084525,1.026181,
+       -1.169673,0.084525,0.858407,    -1.118749,0.0648,0.821035,      -0.981504,0.0648,0.981504,
+       -0.981504,0.0648,0.981504,      -1.026181,0.084525,1.026181,    -1.169673,0.084525,0.858407,
+       -1.286108,0.084525,0.669128,    -1.230115,0.0648,0.639996,      -1.118749,0.0648,0.821035,
+       -1.118749,0.0648,0.821035,      -1.169673,0.084525,0.858407,    -1.286108,0.084525,0.669128,
+       -1.372712,0.084525,0.461116,    -1.312948,0.0648,0.441041,      -1.230115,0.0648,0.639996,
+       -1.230115,0.0648,0.639996,      -1.286108,0.084525,0.669128,    -1.372712,0.084525,0.461116,
+       -1.426709,0.084525,0.237149,    -1.364595,0.0648,0.226824,      -1.312948,0.0648,0.441041,
+       -1.312948,0.0648,0.441041,      -1.372712,0.084525,0.461116,    -1.426709,0.084525,0.237149,
+       -1.445325,0.084525,0,   -1.3824,0.0648,0,       -1.364595,0.0648,0.226824,
+       -1.364595,0.0648,0.226824,      -1.426709,0.084525,0.237149,    -1.445325,0.084525,0,
+       -0.24297,0.1056,1.461727,       -0.237149,0.084525,1.426709,    0,0.084525,1.445325,
+       0,0.084525,1.445325,    0,0.1056,1.4808,        -0.24297,0.1056,1.461727,
+       -0.472434,0.1056,1.406405,      -0.461116,0.084525,1.372712,    -0.237149,0.084525,1.426709,
+       -0.237149,0.084525,1.426709,    -0.24297,0.1056,1.461727,       -0.472434,0.1056,1.406405,
+       -0.685551,0.1056,1.317675,      -0.669128,0.084525,1.286108,    -0.461116,0.084525,1.372712,
+       -0.461116,0.084525,1.372712,    -0.472434,0.1056,1.406405,      -0.685551,0.1056,1.317675,
+       -0.879477,0.1056,1.198382,      -0.858407,0.084525,1.169673,    -0.669128,0.084525,1.286108,
+       -0.669128,0.084525,1.286108,    -0.685551,0.1056,1.317675,      -0.879477,0.1056,1.198382,
+       -1.051368,0.1056,1.051368,      -1.026181,0.084525,1.026181,    -0.858407,0.084525,1.169673,
+       -0.858407,0.084525,1.169673,    -0.879477,0.1056,1.198382,      -1.051368,0.1056,1.051368,
+       -1.198382,0.1056,0.879477,      -1.169673,0.084525,0.858407,    -1.026181,0.084525,1.026181,
+       -1.026181,0.084525,1.026181,    -1.051368,0.1056,1.051368,      -1.198382,0.1056,0.879477,
+       -1.317675,0.1056,0.685551,      -1.286108,0.084525,0.669128,    -1.169673,0.084525,0.858407,
+       -1.169673,0.084525,0.858407,    -1.198382,0.1056,0.879477,      -1.317675,0.1056,0.685551,
+       -1.406405,0.1056,0.472434,      -1.372712,0.084525,0.461116,    -1.286108,0.084525,0.669128,
+       -1.286108,0.084525,0.669128,    -1.317675,0.1056,0.685551,      -1.406405,0.1056,0.472434,
+       -1.461727,0.1056,0.24297,       -1.426709,0.084525,0.237149,    -1.372712,0.084525,0.461116,
+       -1.372712,0.084525,0.461116,    -1.406405,0.1056,0.472434,      -1.461727,0.1056,0.24297,
+       -1.4808,0.1056,0,       -1.445325,0.084525,0,   -1.426709,0.084525,0.237149,
+       -1.426709,0.084525,0.237149,    -1.461727,0.1056,0.24297,       -1.4808,0.1056,0,
+       -0.245542,0.127575,1.4772,      -0.24297,0.1056,1.461727,       0,0.1056,1.4808,
+       0,0.1056,1.4808,        0,0.127575,1.496475,    -0.245542,0.127575,1.4772,
+       -0.477435,0.127575,1.421292,    -0.472434,0.1056,1.406405,      -0.24297,0.1056,1.461727,
+       -0.24297,0.1056,1.461727,       -0.245542,0.127575,1.4772,      -0.477435,0.127575,1.421292,
+       -0.692808,0.127575,1.331623,    -0.685551,0.1056,1.317675,      -0.472434,0.1056,1.406405,
+       -0.472434,0.1056,1.406405,      -0.477435,0.127575,1.421292,    -0.692808,0.127575,1.331623,
+       -0.888786,0.127575,1.211067,    -0.879477,0.1056,1.198382,      -0.685551,0.1056,1.317675,
+       -0.685551,0.1056,1.317675,      -0.692808,0.127575,1.331623,    -0.888786,0.127575,1.211067,
+       -1.062497,0.127575,1.062497,    -1.051368,0.1056,1.051368,      -0.879477,0.1056,1.198382,
+       -0.879477,0.1056,1.198382,      -0.888786,0.127575,1.211067,    -1.062497,0.127575,1.062497,
+       -1.211067,0.127575,0.888786,    -1.198382,0.1056,0.879477,      -1.051368,0.1056,1.051368,
+       -1.051368,0.1056,1.051368,      -1.062497,0.127575,1.062497,    -1.211067,0.127575,0.888786,
+       -1.331623,0.127575,0.692808,    -1.317675,0.1056,0.685551,      -1.198382,0.1056,0.879477,
+       -1.198382,0.1056,0.879477,      -1.211067,0.127575,0.888786,    -1.331623,0.127575,0.692808,
+       -1.421292,0.127575,0.477435,    -1.406405,0.1056,0.472434,      -1.317675,0.1056,0.685551,
+       -1.317675,0.1056,0.685551,      -1.331623,0.127575,0.692808,    -1.421292,0.127575,0.477435,
+       -1.4772,0.127575,0.245542,      -1.461727,0.1056,0.24297,       -1.406405,0.1056,0.472434,
+       -1.406405,0.1056,0.472434,      -1.421292,0.127575,0.477435,    -1.4772,0.127575,0.245542,
+       -1.496475,0.127575,0,   -1.4808,0.1056,0,       -1.461727,0.1056,0.24297,
+       -1.461727,0.1056,0.24297,       -1.4772,0.127575,0.245542,      -1.496475,0.127575,0,
+       -0.24612,0.15,1.48068,  -0.245542,0.127575,1.4772,      0,0.127575,1.496475,
+       0,0.127575,1.496475,    0,0.15,1.5,     -0.24612,0.15,1.48068,
+       -0.47856,0.15,1.42464,  -0.477435,0.127575,1.421292,    -0.245542,0.127575,1.4772,
+       -0.245542,0.127575,1.4772,      -0.24612,0.15,1.48068,  -0.47856,0.15,1.42464,
+       -0.69444,0.15,1.33476,  -0.692808,0.127575,1.331623,    -0.477435,0.127575,1.421292,
+       -0.477435,0.127575,1.421292,    -0.47856,0.15,1.42464,  -0.69444,0.15,1.33476,
+       -0.89088,0.15,1.21392,  -0.888786,0.127575,1.211067,    -0.692808,0.127575,1.331623,
+       -0.692808,0.127575,1.331623,    -0.69444,0.15,1.33476,  -0.89088,0.15,1.21392,
+       -1.065,0.15,1.065,      -1.062497,0.127575,1.062497,    -0.888786,0.127575,1.211067,
+       -0.888786,0.127575,1.211067,    -0.89088,0.15,1.21392,  -1.065,0.15,1.065,
+       -1.21392,0.15,0.89088,  -1.211067,0.127575,0.888786,    -1.062497,0.127575,1.062497,
+       -1.062497,0.127575,1.062497,    -1.065,0.15,1.065,      -1.21392,0.15,0.89088,
+       -1.33476,0.15,0.69444,  -1.331623,0.127575,0.692808,    -1.211067,0.127575,0.888786,
+       -1.211067,0.127575,0.888786,    -1.21392,0.15,0.89088,  -1.33476,0.15,0.69444,
+       -1.42464,0.15,0.47856,  -1.421292,0.127575,0.477435,    -1.331623,0.127575,0.692808,
+       -1.331623,0.127575,0.692808,    -1.33476,0.15,0.69444,  -1.42464,0.15,0.47856,
+       -1.48068,0.15,0.24612,  -1.4772,0.127575,0.245542,      -1.421292,0.127575,0.477435,
+       -1.421292,0.127575,0.477435,    -1.42464,0.15,0.47856,  -1.48068,0.15,0.24612,
+       -1.5,0.15,0,    -1.496475,0.127575,0,   -1.4772,0.127575,0.245542,
+       -1.4772,0.127575,0.245542,      -1.48068,0.15,0.24612,  -1.5,0.15,0,
+       0,0,0,  -0.388275,0.002175,0,   -0.383274,0.002175,-0.063708,
+       0,0,0,  -0.383274,0.002175,-0.063708,   -0.368768,0.002175,-0.123875,
+       0,0,0,  -0.368768,0.002175,-0.123875,   -0.345503,0.002175,-0.179756,
+       0,0,0,  -0.345503,0.002175,-0.179756,   -0.314223,0.002175,-0.230604,
+       0,0,0,  -0.314223,0.002175,-0.230604,   -0.275675,0.002175,-0.275675,
+       0,0,0,  -0.275675,0.002175,-0.275675,   -0.230604,0.002175,-0.314223,
+       0,0,0,  -0.230604,0.002175,-0.314223,   -0.179756,0.002175,-0.345503,
+       0,0,0,  -0.179756,0.002175,-0.345503,   -0.123875,0.002175,-0.368768,
+       0,0,0,  -0.123875,0.002175,-0.368768,   -0.063708,0.002175,-0.383274,
+       0,0,0,  -0.063708,0.002175,-0.383274,   0,0.002175,-0.388275,
+       -0.694143,0.0084,-0.115381,     -0.383274,0.002175,-0.063708,   -0.388275,0.002175,0,
+       -0.388275,0.002175,0,   -0.7032,0.0084,0,       -0.694143,0.0084,-0.115381,
+       -0.667871,0.0084,-0.224349,     -0.368768,0.002175,-0.123875,   -0.383274,0.002175,-0.063708,
+       -0.383274,0.002175,-0.063708,   -0.694143,0.0084,-0.115381,     -0.667871,0.0084,-0.224349,
+       -0.625735,0.0084,-0.325553,     -0.345503,0.002175,-0.179756,   -0.368768,0.002175,-0.123875,
+       -0.368768,0.002175,-0.123875,   -0.667871,0.0084,-0.224349,     -0.625735,0.0084,-0.325553,
+       -0.569086,0.0084,-0.417645,     -0.314223,0.002175,-0.230604,   -0.345503,0.002175,-0.179756,
+       -0.345503,0.002175,-0.179756,   -0.625735,0.0084,-0.325553,     -0.569086,0.0084,-0.417645,
+       -0.499272,0.0084,-0.499272,     -0.275675,0.002175,-0.275675,   -0.314223,0.002175,-0.230604,
+       -0.314223,0.002175,-0.230604,   -0.569086,0.0084,-0.417645,     -0.499272,0.0084,-0.499272,
+       -0.417645,0.0084,-0.569086,     -0.230604,0.002175,-0.314223,   -0.275675,0.002175,-0.275675,
+       -0.275675,0.002175,-0.275675,   -0.499272,0.0084,-0.499272,     -0.417645,0.0084,-0.569086,
+       -0.325553,0.0084,-0.625735,     -0.179756,0.002175,-0.345503,   -0.230604,0.002175,-0.314223,
+       -0.230604,0.002175,-0.314223,   -0.417645,0.0084,-0.569086,     -0.325553,0.0084,-0.625735,
+       -0.224349,0.0084,-0.667871,     -0.123875,0.002175,-0.368768,   -0.179756,0.002175,-0.345503,
+       -0.179756,0.002175,-0.345503,   -0.325553,0.0084,-0.625735,     -0.224349,0.0084,-0.667871,
+       -0.115381,0.0084,-0.694143,     -0.063708,0.002175,-0.383274,   -0.123875,0.002175,-0.368768,
+       -0.123875,0.002175,-0.368768,   -0.224349,0.0084,-0.667871,     -0.115381,0.0084,-0.694143,
+       0,0.0084,-0.7032,       0,0.002175,-0.388275,   -0.063708,0.002175,-0.383274,
+       -0.063708,0.002175,-0.383274,   -0.115381,0.0084,-0.694143,     0,0.0084,-0.7032,
+       -0.940158,0.018225,-0.156274,   -0.694143,0.0084,-0.115381,     -0.7032,0.0084,0,
+       -0.7032,0.0084,0,       -0.952425,0.018225,0,   -0.940158,0.018225,-0.156274,
+       -0.904575,0.018225,-0.303862,   -0.667871,0.0084,-0.224349,     -0.694143,0.0084,-0.115381,
+       -0.694143,0.0084,-0.115381,     -0.940158,0.018225,-0.156274,   -0.904575,0.018225,-0.303862,
+       -0.847506,0.018225,-0.440935,   -0.625735,0.0084,-0.325553,     -0.667871,0.0084,-0.224349,
+       -0.667871,0.0084,-0.224349,     -0.904575,0.018225,-0.303862,   -0.847506,0.018225,-0.440935,
+       -0.770779,0.018225,-0.565664,   -0.569086,0.0084,-0.417645,     -0.625735,0.0084,-0.325553,
+       -0.625735,0.0084,-0.325553,     -0.847506,0.018225,-0.440935,   -0.770779,0.018225,-0.565664,
+       -0.676222,0.018225,-0.676222,   -0.499272,0.0084,-0.499272,     -0.569086,0.0084,-0.417645,
+       -0.569086,0.0084,-0.417645,     -0.770779,0.018225,-0.565664,   -0.676222,0.018225,-0.676222,
+       -0.565664,0.018225,-0.770779,   -0.417645,0.0084,-0.569086,     -0.499272,0.0084,-0.499272,
+       -0.499272,0.0084,-0.499272,     -0.676222,0.018225,-0.676222,   -0.565664,0.018225,-0.770779,
+       -0.440935,0.018225,-0.847506,   -0.325553,0.0084,-0.625735,     -0.417645,0.0084,-0.569086,
+       -0.417645,0.0084,-0.569086,     -0.565664,0.018225,-0.770779,   -0.440935,0.018225,-0.847506,
+       -0.303862,0.018225,-0.904575,   -0.224349,0.0084,-0.667871,     -0.325553,0.0084,-0.625735,
+       -0.325553,0.0084,-0.625735,     -0.440935,0.018225,-0.847506,   -0.303862,0.018225,-0.904575,
+       -0.156274,0.018225,-0.940158,   -0.115381,0.0084,-0.694143,     -0.224349,0.0084,-0.667871,
+       -0.224349,0.0084,-0.667871,     -0.303862,0.018225,-0.904575,   -0.156274,0.018225,-0.940158,
+       0,0.018225,-0.952425,   0,0.0084,-0.7032,       -0.115381,0.0084,-0.694143,
+       -0.115381,0.0084,-0.694143,     -0.156274,0.018225,-0.940158,   0,0.018225,-0.952425,
+       -1.12887,0.0312,-0.187642,      -0.940158,0.018225,-0.156274,   -0.952425,0.018225,0,
+       -0.952425,0.018225,0,   -1.1436,0.0312,0,       -1.12887,0.0312,-0.187642,
+       -1.086146,0.0312,-0.364854,     -0.904575,0.018225,-0.303862,   -0.940158,0.018225,-0.156274,
+       -0.940158,0.018225,-0.156274,   -1.12887,0.0312,-0.187642,      -1.086146,0.0312,-0.364854,
+       -1.017621,0.0312,-0.529441,     -0.847506,0.018225,-0.440935,   -0.904575,0.018225,-0.303862,
+       -0.904575,0.018225,-0.303862,   -1.086146,0.0312,-0.364854,     -1.017621,0.0312,-0.529441,
+       -0.925493,0.0312,-0.679207,     -0.770779,0.018225,-0.565664,   -0.847506,0.018225,-0.440935,
+       -0.847506,0.018225,-0.440935,   -1.017621,0.0312,-0.529441,     -0.925493,0.0312,-0.679207,
+       -0.811956,0.0312,-0.811956,     -0.676222,0.018225,-0.676222,   -0.770779,0.018225,-0.565664,
+       -0.770779,0.018225,-0.565664,   -0.925493,0.0312,-0.679207,     -0.811956,0.0312,-0.811956,
+       -0.679207,0.0312,-0.925493,     -0.565664,0.018225,-0.770779,   -0.676222,0.018225,-0.676222,
+       -0.676222,0.018225,-0.676222,   -0.811956,0.0312,-0.811956,     -0.679207,0.0312,-0.925493,
+       -0.529441,0.0312,-1.017621,     -0.440935,0.018225,-0.847506,   -0.565664,0.018225,-0.770779,
+       -0.565664,0.018225,-0.770779,   -0.679207,0.0312,-0.925493,     -0.529441,0.0312,-1.017621,
+       -0.364854,0.0312,-1.086146,     -0.303862,0.018225,-0.904575,   -0.440935,0.018225,-0.847506,
+       -0.440935,0.018225,-0.847506,   -0.529441,0.0312,-1.017621,     -0.364854,0.0312,-1.086146,
+       -0.187642,0.0312,-1.12887,      -0.156274,0.018225,-0.940158,   -0.303862,0.018225,-0.904575,
+       -0.303862,0.018225,-0.904575,   -0.364854,0.0312,-1.086146,     -0.187642,0.0312,-1.12887,
+       0,0.0312,-1.1436,       0,0.018225,-0.952425,   -0.156274,0.018225,-0.940158,
+       -0.156274,0.018225,-0.940158,   -0.187642,0.0312,-1.12887,      0,0.0312,-1.1436,
+       -1.267832,0.046875,-0.21074,    -1.12887,0.0312,-0.187642,      -1.1436,0.0312,0,
+       -1.1436,0.0312,0,       -1.284375,0.046875,0,   -1.267832,0.046875,-0.21074,
+       -1.219848,0.046875,-0.409767,   -1.086146,0.0312,-0.364854,     -1.12887,0.0312,-0.187642,
+       -1.12887,0.0312,-0.187642,      -1.267832,0.046875,-0.21074,    -1.219848,0.046875,-0.409767,
+       -1.142888,0.046875,-0.594614,   -1.017621,0.0312,-0.529441,     -1.086146,0.0312,-0.364854,
+       -1.086146,0.0312,-0.364854,     -1.219848,0.046875,-0.409767,   -1.142888,0.046875,-0.594614,
+       -1.039419,0.046875,-0.762816,   -0.925493,0.0312,-0.679207,     -1.017621,0.0312,-0.529441,
+       -1.017621,0.0312,-0.529441,     -1.142888,0.046875,-0.594614,   -1.039419,0.046875,-0.762816,
+       -0.911906,0.046875,-0.911906,   -0.811956,0.0312,-0.811956,     -0.925493,0.0312,-0.679207,
+       -0.925493,0.0312,-0.679207,     -1.039419,0.046875,-0.762816,   -0.911906,0.046875,-0.911906,
+       -0.762816,0.046875,-1.039419,   -0.679207,0.0312,-0.925493,     -0.811956,0.0312,-0.811956,
+       -0.811956,0.0312,-0.811956,     -0.911906,0.046875,-0.911906,   -0.762816,0.046875,-1.039419,
+       -0.594614,0.046875,-1.142888,   -0.529441,0.0312,-1.017621,     -0.679207,0.0312,-0.925493,
+       -0.679207,0.0312,-0.925493,     -0.762816,0.046875,-1.039419,   -0.594614,0.046875,-1.142888,
+       -0.409767,0.046875,-1.219848,   -0.364854,0.0312,-1.086146,     -0.529441,0.0312,-1.017621,
+       -0.529441,0.0312,-1.017621,     -0.594614,0.046875,-1.142888,   -0.409767,0.046875,-1.219848,
+       -0.21074,0.046875,-1.267832,    -0.187642,0.0312,-1.12887,      -0.364854,0.0312,-1.086146,
+       -0.364854,0.0312,-1.086146,     -0.409767,0.046875,-1.219848,   -0.21074,0.046875,-1.267832,
+       0,0.046875,-1.284375,   0,0.0312,-1.1436,       -0.187642,0.0312,-1.12887,
+       -0.187642,0.0312,-1.12887,      -0.21074,0.046875,-1.267832,    0,0.046875,-1.284375,
+       -1.364595,0.0648,-0.226824,     -1.267832,0.046875,-0.21074,    -1.284375,0.046875,0,
+       -1.284375,0.046875,0,   -1.3824,0.0648,0,       -1.364595,0.0648,-0.226824,
+       -1.312948,0.0648,-0.441041,     -1.219848,0.046875,-0.409767,   -1.267832,0.046875,-0.21074,
+       -1.267832,0.046875,-0.21074,    -1.364595,0.0648,-0.226824,     -1.312948,0.0648,-0.441041,
+       -1.230115,0.0648,-0.639996,     -1.142888,0.046875,-0.594614,   -1.219848,0.046875,-0.409767,
+       -1.219848,0.046875,-0.409767,   -1.312948,0.0648,-0.441041,     -1.230115,0.0648,-0.639996,
+       -1.118749,0.0648,-0.821035,     -1.039419,0.046875,-0.762816,   -1.142888,0.046875,-0.594614,
+       -1.142888,0.046875,-0.594614,   -1.230115,0.0648,-0.639996,     -1.118749,0.0648,-0.821035,
+       -0.981504,0.0648,-0.981504,     -0.911906,0.046875,-0.911906,   -1.039419,0.046875,-0.762816,
+       -1.039419,0.046875,-0.762816,   -1.118749,0.0648,-0.821035,     -0.981504,0.0648,-0.981504,
+       -0.821035,0.0648,-1.118749,     -0.762816,0.046875,-1.039419,   -0.911906,0.046875,-0.911906,
+       -0.911906,0.046875,-0.911906,   -0.981504,0.0648,-0.981504,     -0.821035,0.0648,-1.118749,
+       -0.639996,0.0648,-1.230115,     -0.594614,0.046875,-1.142888,   -0.762816,0.046875,-1.039419,
+       -0.762816,0.046875,-1.039419,   -0.821035,0.0648,-1.118749,     -0.639996,0.0648,-1.230115,
+       -0.441041,0.0648,-1.312948,     -0.409767,0.046875,-1.219848,   -0.594614,0.046875,-1.142888,
+       -0.594614,0.046875,-1.142888,   -0.639996,0.0648,-1.230115,     -0.441041,0.0648,-1.312948,
+       -0.226824,0.0648,-1.364595,     -0.21074,0.046875,-1.267832,    -0.409767,0.046875,-1.219848,
+       -0.409767,0.046875,-1.219848,   -0.441041,0.0648,-1.312948,     -0.226824,0.0648,-1.364595,
+       0,0.0648,-1.3824,       0,0.046875,-1.284375,   -0.21074,0.046875,-1.267832,
+       -0.21074,0.046875,-1.267832,    -0.226824,0.0648,-1.364595,     0,0.0648,-1.3824,
+       -1.426709,0.084525,-0.237149,   -1.364595,0.0648,-0.226824,     -1.3824,0.0648,0,
+       -1.3824,0.0648,0,       -1.445325,0.084525,0,   -1.426709,0.084525,-0.237149,
+       -1.372712,0.084525,-0.461116,   -1.312948,0.0648,-0.441041,     -1.364595,0.0648,-0.226824,
+       -1.364595,0.0648,-0.226824,     -1.426709,0.084525,-0.237149,   -1.372712,0.084525,-0.461116,
+       -1.286108,0.084525,-0.669128,   -1.230115,0.0648,-0.639996,     -1.312948,0.0648,-0.441041,
+       -1.312948,0.0648,-0.441041,     -1.372712,0.084525,-0.461116,   -1.286108,0.084525,-0.669128,
+       -1.169673,0.084525,-0.858407,   -1.118749,0.0648,-0.821035,     -1.230115,0.0648,-0.639996,
+       -1.230115,0.0648,-0.639996,     -1.286108,0.084525,-0.669128,   -1.169673,0.084525,-0.858407,
+       -1.026181,0.084525,-1.026181,   -0.981504,0.0648,-0.981504,     -1.118749,0.0648,-0.821035,
+       -1.118749,0.0648,-0.821035,     -1.169673,0.084525,-0.858407,   -1.026181,0.084525,-1.026181,
+       -0.858407,0.084525,-1.169673,   -0.821035,0.0648,-1.118749,     -0.981504,0.0648,-0.981504,
+       -0.981504,0.0648,-0.981504,     -1.026181,0.084525,-1.026181,   -0.858407,0.084525,-1.169673,
+       -0.669128,0.084525,-1.286108,   -0.639996,0.0648,-1.230115,     -0.821035,0.0648,-1.118749,
+       -0.821035,0.0648,-1.118749,     -0.858407,0.084525,-1.169673,   -0.669128,0.084525,-1.286108,
+       -0.461116,0.084525,-1.372712,   -0.441041,0.0648,-1.312948,     -0.639996,0.0648,-1.230115,
+       -0.639996,0.0648,-1.230115,     -0.669128,0.084525,-1.286108,   -0.461116,0.084525,-1.372712,
+       -0.237149,0.084525,-1.426709,   -0.226824,0.0648,-1.364595,     -0.441041,0.0648,-1.312948,
+       -0.441041,0.0648,-1.312948,     -0.461116,0.084525,-1.372712,   -0.237149,0.084525,-1.426709,
+       0,0.084525,-1.445325,   0,0.0648,-1.3824,       -0.226824,0.0648,-1.364595,
+       -0.226824,0.0648,-1.364595,     -0.237149,0.084525,-1.426709,   0,0.084525,-1.445325,
+       -1.461727,0.1056,-0.24297,      -1.426709,0.084525,-0.237149,   -1.445325,0.084525,0,
+       -1.445325,0.084525,0,   -1.4808,0.1056,0,       -1.461727,0.1056,-0.24297,
+       -1.406405,0.1056,-0.472434,     -1.372712,0.084525,-0.461116,   -1.426709,0.084525,-0.237149,
+       -1.426709,0.084525,-0.237149,   -1.461727,0.1056,-0.24297,      -1.406405,0.1056,-0.472434,
+       -1.317675,0.1056,-0.685551,     -1.286108,0.084525,-0.669128,   -1.372712,0.084525,-0.461116,
+       -1.372712,0.084525,-0.461116,   -1.406405,0.1056,-0.472434,     -1.317675,0.1056,-0.685551,
+       -1.198382,0.1056,-0.879477,     -1.169673,0.084525,-0.858407,   -1.286108,0.084525,-0.669128,
+       -1.286108,0.084525,-0.669128,   -1.317675,0.1056,-0.685551,     -1.198382,0.1056,-0.879477,
+       -1.051368,0.1056,-1.051368,     -1.026181,0.084525,-1.026181,   -1.169673,0.084525,-0.858407,
+       -1.169673,0.084525,-0.858407,   -1.198382,0.1056,-0.879477,     -1.051368,0.1056,-1.051368,
+       -0.879477,0.1056,-1.198382,     -0.858407,0.084525,-1.169673,   -1.026181,0.084525,-1.026181,
+       -1.026181,0.084525,-1.026181,   -1.051368,0.1056,-1.051368,     -0.879477,0.1056,-1.198382,
+       -0.685551,0.1056,-1.317675,     -0.669128,0.084525,-1.286108,   -0.858407,0.084525,-1.169673,
+       -0.858407,0.084525,-1.169673,   -0.879477,0.1056,-1.198382,     -0.685551,0.1056,-1.317675,
+       -0.472434,0.1056,-1.406405,     -0.461116,0.084525,-1.372712,   -0.669128,0.084525,-1.286108,
+       -0.669128,0.084525,-1.286108,   -0.685551,0.1056,-1.317675,     -0.472434,0.1056,-1.406405,
+       -0.24297,0.1056,-1.461727,      -0.237149,0.084525,-1.426709,   -0.461116,0.084525,-1.372712,
+       -0.461116,0.084525,-1.372712,   -0.472434,0.1056,-1.406405,     -0.24297,0.1056,-1.461727,
+       0,0.1056,-1.4808,       0,0.084525,-1.445325,   -0.237149,0.084525,-1.426709,
+       -0.237149,0.084525,-1.426709,   -0.24297,0.1056,-1.461727,      0,0.1056,-1.4808,
+       -1.4772,0.127575,-0.245542,     -1.461727,0.1056,-0.24297,      -1.4808,0.1056,0,
+       -1.4808,0.1056,0,       -1.496475,0.127575,0,   -1.4772,0.127575,-0.245542,
+       -1.421292,0.127575,-0.477435,   -1.406405,0.1056,-0.472434,     -1.461727,0.1056,-0.24297,
+       -1.461727,0.1056,-0.24297,      -1.4772,0.127575,-0.245542,     -1.421292,0.127575,-0.477435,
+       -1.331623,0.127575,-0.692808,   -1.317675,0.1056,-0.685551,     -1.406405,0.1056,-0.472434,
+       -1.406405,0.1056,-0.472434,     -1.421292,0.127575,-0.477435,   -1.331623,0.127575,-0.692808,
+       -1.211067,0.127575,-0.888786,   -1.198382,0.1056,-0.879477,     -1.317675,0.1056,-0.685551,
+       -1.317675,0.1056,-0.685551,     -1.331623,0.127575,-0.692808,   -1.211067,0.127575,-0.888786,
+       -1.062497,0.127575,-1.062497,   -1.051368,0.1056,-1.051368,     -1.198382,0.1056,-0.879477,
+       -1.198382,0.1056,-0.879477,     -1.211067,0.127575,-0.888786,   -1.062497,0.127575,-1.062497,
+       -0.888786,0.127575,-1.211067,   -0.879477,0.1056,-1.198382,     -1.051368,0.1056,-1.051368,
+       -1.051368,0.1056,-1.051368,     -1.062497,0.127575,-1.062497,   -0.888786,0.127575,-1.211067,
+       -0.692808,0.127575,-1.331623,   -0.685551,0.1056,-1.317675,     -0.879477,0.1056,-1.198382,
+       -0.879477,0.1056,-1.198382,     -0.888786,0.127575,-1.211067,   -0.692808,0.127575,-1.331623,
+       -0.477435,0.127575,-1.421292,   -0.472434,0.1056,-1.406405,     -0.685551,0.1056,-1.317675,
+       -0.685551,0.1056,-1.317675,     -0.692808,0.127575,-1.331623,   -0.477435,0.127575,-1.421292,
+       -0.245542,0.127575,-1.4772,     -0.24297,0.1056,-1.461727,      -0.472434,0.1056,-1.406405,
+       -0.472434,0.1056,-1.406405,     -0.477435,0.127575,-1.421292,   -0.245542,0.127575,-1.4772,
+       0,0.127575,-1.496475,   0,0.1056,-1.4808,       -0.24297,0.1056,-1.461727,
+       -0.24297,0.1056,-1.461727,      -0.245542,0.127575,-1.4772,     0,0.127575,-1.496475,
+       -1.48068,0.15,-0.24612, -1.4772,0.127575,-0.245542,     -1.496475,0.127575,0,
+       -1.496475,0.127575,0,   -1.5,0.15,0,    -1.48068,0.15,-0.24612,
+       -1.42464,0.15,-0.47856, -1.421292,0.127575,-0.477435,   -1.4772,0.127575,-0.245542,
+       -1.4772,0.127575,-0.245542,     -1.48068,0.15,-0.24612, -1.42464,0.15,-0.47856,
+       -1.33476,0.15,-0.69444, -1.331623,0.127575,-0.692808,   -1.421292,0.127575,-0.477435,
+       -1.421292,0.127575,-0.477435,   -1.42464,0.15,-0.47856, -1.33476,0.15,-0.69444,
+       -1.21392,0.15,-0.89088, -1.211067,0.127575,-0.888786,   -1.331623,0.127575,-0.692808,
+       -1.331623,0.127575,-0.692808,   -1.33476,0.15,-0.69444, -1.21392,0.15,-0.89088,
+       -1.065,0.15,-1.065,     -1.062497,0.127575,-1.062497,   -1.211067,0.127575,-0.888786,
+       -1.211067,0.127575,-0.888786,   -1.21392,0.15,-0.89088, -1.065,0.15,-1.065,
+       -0.89088,0.15,-1.21392, -0.888786,0.127575,-1.211067,   -1.062497,0.127575,-1.062497,
+       -1.062497,0.127575,-1.062497,   -1.065,0.15,-1.065,     -0.89088,0.15,-1.21392,
+       -0.69444,0.15,-1.33476, -0.692808,0.127575,-1.331623,   -0.888786,0.127575,-1.211067,
+       -0.888786,0.127575,-1.211067,   -0.89088,0.15,-1.21392, -0.69444,0.15,-1.33476,
+       -0.47856,0.15,-1.42464, -0.477435,0.127575,-1.421292,   -0.692808,0.127575,-1.331623,
+       -0.692808,0.127575,-1.331623,   -0.69444,0.15,-1.33476, -0.47856,0.15,-1.42464,
+       -0.24612,0.15,-1.48068, -0.245542,0.127575,-1.4772,     -0.477435,0.127575,-1.421292,
+       -0.477435,0.127575,-1.421292,   -0.47856,0.15,-1.42464, -0.24612,0.15,-1.48068,
+       0,0.15,-1.5,    0,0.127575,-1.496475,   -0.245542,0.127575,-1.4772,
+       -0.245542,0.127575,-1.4772,     -0.24612,0.15,-1.48068, 0,0.15,-1.5,
+       0,0,0,  0,0.002175,-0.388275,   0.063708,0.002175,-0.383274,
+       0,0,0,  0.063708,0.002175,-0.383274,    0.123875,0.002175,-0.368768,
+       0,0,0,  0.123875,0.002175,-0.368768,    0.179756,0.002175,-0.345503,
+       0,0,0,  0.179756,0.002175,-0.345503,    0.230604,0.002175,-0.314223,
+       0,0,0,  0.230604,0.002175,-0.314223,    0.275675,0.002175,-0.275675,
+       0,0,0,  0.275675,0.002175,-0.275675,    0.314223,0.002175,-0.230604,
+       0,0,0,  0.314223,0.002175,-0.230604,    0.345503,0.002175,-0.179756,
+       0,0,0,  0.345503,0.002175,-0.179756,    0.368768,0.002175,-0.123875,
+       0,0,0,  0.368768,0.002175,-0.123875,    0.383274,0.002175,-0.063708,
+       0,0,0,  0.383274,0.002175,-0.063708,    0.388275,0.002175,0,
+       0.115381,0.0084,-0.694143,      0.063708,0.002175,-0.383274,    0,0.002175,-0.388275,
+       0,0.002175,-0.388275,   0,0.0084,-0.7032,       0.115381,0.0084,-0.694143,
+       0.224349,0.0084,-0.667871,      0.123875,0.002175,-0.368768,    0.063708,0.002175,-0.383274,
+       0.063708,0.002175,-0.383274,    0.115381,0.0084,-0.694143,      0.224349,0.0084,-0.667871,
+       0.325553,0.0084,-0.625735,      0.179756,0.002175,-0.345503,    0.123875,0.002175,-0.368768,
+       0.123875,0.002175,-0.368768,    0.224349,0.0084,-0.667871,      0.325553,0.0084,-0.625735,
+       0.417645,0.0084,-0.569086,      0.230604,0.002175,-0.314223,    0.179756,0.002175,-0.345503,
+       0.179756,0.002175,-0.345503,    0.325553,0.0084,-0.625735,      0.417645,0.0084,-0.569086,
+       0.499272,0.0084,-0.499272,      0.275675,0.002175,-0.275675,    0.230604,0.002175,-0.314223,
+       0.230604,0.002175,-0.314223,    0.417645,0.0084,-0.569086,      0.499272,0.0084,-0.499272,
+       0.569086,0.0084,-0.417645,      0.314223,0.002175,-0.230604,    0.275675,0.002175,-0.275675,
+       0.275675,0.002175,-0.275675,    0.499272,0.0084,-0.499272,      0.569086,0.0084,-0.417645,
+       0.625735,0.0084,-0.325553,      0.345503,0.002175,-0.179756,    0.314223,0.002175,-0.230604,
+       0.314223,0.002175,-0.230604,    0.569086,0.0084,-0.417645,      0.625735,0.0084,-0.325553,
+       0.667871,0.0084,-0.224349,      0.368768,0.002175,-0.123875,    0.345503,0.002175,-0.179756,
+       0.345503,0.002175,-0.179756,    0.625735,0.0084,-0.325553,      0.667871,0.0084,-0.224349,
+       0.694143,0.0084,-0.115381,      0.383274,0.002175,-0.063708,    0.368768,0.002175,-0.123875,
+       0.368768,0.002175,-0.123875,    0.667871,0.0084,-0.224349,      0.694143,0.0084,-0.115381,
+       0.7032,0.0084,0,        0.388275,0.002175,0,    0.383274,0.002175,-0.063708,
+       0.383274,0.002175,-0.063708,    0.694143,0.0084,-0.115381,      0.7032,0.0084,0,
+       0.156274,0.018225,-0.940158,    0.115381,0.0084,-0.694143,      0,0.0084,-0.7032,
+       0,0.0084,-0.7032,       0,0.018225,-0.952425,   0.156274,0.018225,-0.940158,
+       0.303862,0.018225,-0.904575,    0.224349,0.0084,-0.667871,      0.115381,0.0084,-0.694143,
+       0.115381,0.0084,-0.694143,      0.156274,0.018225,-0.940158,    0.303862,0.018225,-0.904575,
+       0.440935,0.018225,-0.847506,    0.325553,0.0084,-0.625735,      0.224349,0.0084,-0.667871,
+       0.224349,0.0084,-0.667871,      0.303862,0.018225,-0.904575,    0.440935,0.018225,-0.847506,
+       0.565664,0.018225,-0.770779,    0.417645,0.0084,-0.569086,      0.325553,0.0084,-0.625735,
+       0.325553,0.0084,-0.625735,      0.440935,0.018225,-0.847506,    0.565664,0.018225,-0.770779,
+       0.676222,0.018225,-0.676222,    0.499272,0.0084,-0.499272,      0.417645,0.0084,-0.569086,
+       0.417645,0.0084,-0.569086,      0.565664,0.018225,-0.770779,    0.676222,0.018225,-0.676222,
+       0.770779,0.018225,-0.565664,    0.569086,0.0084,-0.417645,      0.499272,0.0084,-0.499272,
+       0.499272,0.0084,-0.499272,      0.676222,0.018225,-0.676222,    0.770779,0.018225,-0.565664,
+       0.847506,0.018225,-0.440935,    0.625735,0.0084,-0.325553,      0.569086,0.0084,-0.417645,
+       0.569086,0.0084,-0.417645,      0.770779,0.018225,-0.565664,    0.847506,0.018225,-0.440935,
+       0.904575,0.018225,-0.303862,    0.667871,0.0084,-0.224349,      0.625735,0.0084,-0.325553,
+       0.625735,0.0084,-0.325553,      0.847506,0.018225,-0.440935,    0.904575,0.018225,-0.303862,
+       0.940158,0.018225,-0.156274,    0.694143,0.0084,-0.115381,      0.667871,0.0084,-0.224349,
+       0.667871,0.0084,-0.224349,      0.904575,0.018225,-0.303862,    0.940158,0.018225,-0.156274,
+       0.952425,0.018225,0,    0.7032,0.0084,0,        0.694143,0.0084,-0.115381,
+       0.694143,0.0084,-0.115381,      0.940158,0.018225,-0.156274,    0.952425,0.018225,0,
+       0.187642,0.0312,-1.12887,       0.156274,0.018225,-0.940158,    0,0.018225,-0.952425,
+       0,0.018225,-0.952425,   0,0.0312,-1.1436,       0.187642,0.0312,-1.12887,
+       0.364854,0.0312,-1.086146,      0.303862,0.018225,-0.904575,    0.156274,0.018225,-0.940158,
+       0.156274,0.018225,-0.940158,    0.187642,0.0312,-1.12887,       0.364854,0.0312,-1.086146,
+       0.529441,0.0312,-1.017621,      0.440935,0.018225,-0.847506,    0.303862,0.018225,-0.904575,
+       0.303862,0.018225,-0.904575,    0.364854,0.0312,-1.086146,      0.529441,0.0312,-1.017621,
+       0.679207,0.0312,-0.925493,      0.565664,0.018225,-0.770779,    0.440935,0.018225,-0.847506,
+       0.440935,0.018225,-0.847506,    0.529441,0.0312,-1.017621,      0.679207,0.0312,-0.925493,
+       0.811956,0.0312,-0.811956,      0.676222,0.018225,-0.676222,    0.565664,0.018225,-0.770779,
+       0.565664,0.018225,-0.770779,    0.679207,0.0312,-0.925493,      0.811956,0.0312,-0.811956,
+       0.925493,0.0312,-0.679207,      0.770779,0.018225,-0.565664,    0.676222,0.018225,-0.676222,
+       0.676222,0.018225,-0.676222,    0.811956,0.0312,-0.811956,      0.925493,0.0312,-0.679207,
+       1.017621,0.0312,-0.529441,      0.847506,0.018225,-0.440935,    0.770779,0.018225,-0.565664,
+       0.770779,0.018225,-0.565664,    0.925493,0.0312,-0.679207,      1.017621,0.0312,-0.529441,
+       1.086146,0.0312,-0.364854,      0.904575,0.018225,-0.303862,    0.847506,0.018225,-0.440935,
+       0.847506,0.018225,-0.440935,    1.017621,0.0312,-0.529441,      1.086146,0.0312,-0.364854,
+       1.12887,0.0312,-0.187642,       0.940158,0.018225,-0.156274,    0.904575,0.018225,-0.303862,
+       0.904575,0.018225,-0.303862,    1.086146,0.0312,-0.364854,      1.12887,0.0312,-0.187642,
+       1.1436,0.0312,0,        0.952425,0.018225,0,    0.940158,0.018225,-0.156274,
+       0.940158,0.018225,-0.156274,    1.12887,0.0312,-0.187642,       1.1436,0.0312,0,
+       0.21074,0.046875,-1.267832,     0.187642,0.0312,-1.12887,       0,0.0312,-1.1436,
+       0,0.0312,-1.1436,       0,0.046875,-1.284375,   0.21074,0.046875,-1.267832,
+       0.409767,0.046875,-1.219848,    0.364854,0.0312,-1.086146,      0.187642,0.0312,-1.12887,
+       0.187642,0.0312,-1.12887,       0.21074,0.046875,-1.267832,     0.409767,0.046875,-1.219848,
+       0.594614,0.046875,-1.142888,    0.529441,0.0312,-1.017621,      0.364854,0.0312,-1.086146,
+       0.364854,0.0312,-1.086146,      0.409767,0.046875,-1.219848,    0.594614,0.046875,-1.142888,
+       0.762816,0.046875,-1.039419,    0.679207,0.0312,-0.925493,      0.529441,0.0312,-1.017621,
+       0.529441,0.0312,-1.017621,      0.594614,0.046875,-1.142888,    0.762816,0.046875,-1.039419,
+       0.911906,0.046875,-0.911906,    0.811956,0.0312,-0.811956,      0.679207,0.0312,-0.925493,
+       0.679207,0.0312,-0.925493,      0.762816,0.046875,-1.039419,    0.911906,0.046875,-0.911906,
+       1.039419,0.046875,-0.762816,    0.925493,0.0312,-0.679207,      0.811956,0.0312,-0.811956,
+       0.811956,0.0312,-0.811956,      0.911906,0.046875,-0.911906,    1.039419,0.046875,-0.762816,
+       1.142888,0.046875,-0.594614,    1.017621,0.0312,-0.529441,      0.925493,0.0312,-0.679207,
+       0.925493,0.0312,-0.679207,      1.039419,0.046875,-0.762816,    1.142888,0.046875,-0.594614,
+       1.219848,0.046875,-0.409767,    1.086146,0.0312,-0.364854,      1.017621,0.0312,-0.529441,
+       1.017621,0.0312,-0.529441,      1.142888,0.046875,-0.594614,    1.219848,0.046875,-0.409767,
+       1.267832,0.046875,-0.21074,     1.12887,0.0312,-0.187642,       1.086146,0.0312,-0.364854,
+       1.086146,0.0312,-0.364854,      1.219848,0.046875,-0.409767,    1.267832,0.046875,-0.21074,
+       1.284375,0.046875,0,    1.1436,0.0312,0,        1.12887,0.0312,-0.187642,
+       1.12887,0.0312,-0.187642,       1.267832,0.046875,-0.21074,     1.284375,0.046875,0,
+       0.226824,0.0648,-1.364595,      0.21074,0.046875,-1.267832,     0,0.046875,-1.284375,
+       0,0.046875,-1.284375,   0,0.0648,-1.3824,       0.226824,0.0648,-1.364595,
+       0.441041,0.0648,-1.312948,      0.409767,0.046875,-1.219848,    0.21074,0.046875,-1.267832,
+       0.21074,0.046875,-1.267832,     0.226824,0.0648,-1.364595,      0.441041,0.0648,-1.312948,
+       0.639996,0.0648,-1.230115,      0.594614,0.046875,-1.142888,    0.409767,0.046875,-1.219848,
+       0.409767,0.046875,-1.219848,    0.441041,0.0648,-1.312948,      0.639996,0.0648,-1.230115,
+       0.821035,0.0648,-1.118749,      0.762816,0.046875,-1.039419,    0.594614,0.046875,-1.142888,
+       0.594614,0.046875,-1.142888,    0.639996,0.0648,-1.230115,      0.821035,0.0648,-1.118749,
+       0.981504,0.0648,-0.981504,      0.911906,0.046875,-0.911906,    0.762816,0.046875,-1.039419,
+       0.762816,0.046875,-1.039419,    0.821035,0.0648,-1.118749,      0.981504,0.0648,-0.981504,
+       1.118749,0.0648,-0.821035,      1.039419,0.046875,-0.762816,    0.911906,0.046875,-0.911906,
+       0.911906,0.046875,-0.911906,    0.981504,0.0648,-0.981504,      1.118749,0.0648,-0.821035,
+       1.230115,0.0648,-0.639996,      1.142888,0.046875,-0.594614,    1.039419,0.046875,-0.762816,
+       1.039419,0.046875,-0.762816,    1.118749,0.0648,-0.821035,      1.230115,0.0648,-0.639996,
+       1.312948,0.0648,-0.441041,      1.219848,0.046875,-0.409767,    1.142888,0.046875,-0.594614,
+       1.142888,0.046875,-0.594614,    1.230115,0.0648,-0.639996,      1.312948,0.0648,-0.441041,
+       1.364595,0.0648,-0.226824,      1.267832,0.046875,-0.21074,     1.219848,0.046875,-0.409767,
+       1.219848,0.046875,-0.409767,    1.312948,0.0648,-0.441041,      1.364595,0.0648,-0.226824,
+       1.3824,0.0648,0,        1.284375,0.046875,0,    1.267832,0.046875,-0.21074,
+       1.267832,0.046875,-0.21074,     1.364595,0.0648,-0.226824,      1.3824,0.0648,0,
+       0.237149,0.084525,-1.426709,    0.226824,0.0648,-1.364595,      0,0.0648,-1.3824,
+       0,0.0648,-1.3824,       0,0.084525,-1.445325,   0.237149,0.084525,-1.426709,
+       0.461116,0.084525,-1.372712,    0.441041,0.0648,-1.312948,      0.226824,0.0648,-1.364595,
+       0.226824,0.0648,-1.364595,      0.237149,0.084525,-1.426709,    0.461116,0.084525,-1.372712,
+       0.669128,0.084525,-1.286108,    0.639996,0.0648,-1.230115,      0.441041,0.0648,-1.312948,
+       0.441041,0.0648,-1.312948,      0.461116,0.084525,-1.372712,    0.669128,0.084525,-1.286108,
+       0.858407,0.084525,-1.169673,    0.821035,0.0648,-1.118749,      0.639996,0.0648,-1.230115,
+       0.639996,0.0648,-1.230115,      0.669128,0.084525,-1.286108,    0.858407,0.084525,-1.169673,
+       1.026181,0.084525,-1.026181,    0.981504,0.0648,-0.981504,      0.821035,0.0648,-1.118749,
+       0.821035,0.0648,-1.118749,      0.858407,0.084525,-1.169673,    1.026181,0.084525,-1.026181,
+       1.169673,0.084525,-0.858407,    1.118749,0.0648,-0.821035,      0.981504,0.0648,-0.981504,
+       0.981504,0.0648,-0.981504,      1.026181,0.084525,-1.026181,    1.169673,0.084525,-0.858407,
+       1.286108,0.084525,-0.669128,    1.230115,0.0648,-0.639996,      1.118749,0.0648,-0.821035,
+       1.118749,0.0648,-0.821035,      1.169673,0.084525,-0.858407,    1.286108,0.084525,-0.669128,
+       1.372712,0.084525,-0.461116,    1.312948,0.0648,-0.441041,      1.230115,0.0648,-0.639996,
+       1.230115,0.0648,-0.639996,      1.286108,0.084525,-0.669128,    1.372712,0.084525,-0.461116,
+       1.426709,0.084525,-0.237149,    1.364595,0.0648,-0.226824,      1.312948,0.0648,-0.441041,
+       1.312948,0.0648,-0.441041,      1.372712,0.084525,-0.461116,    1.426709,0.084525,-0.237149,
+       1.445325,0.084525,0,    1.3824,0.0648,0,        1.364595,0.0648,-0.226824,
+       1.364595,0.0648,-0.226824,      1.426709,0.084525,-0.237149,    1.445325,0.084525,0,
+       0.24297,0.1056,-1.461727,       0.237149,0.084525,-1.426709,    0,0.084525,-1.445325,
+       0,0.084525,-1.445325,   0,0.1056,-1.4808,       0.24297,0.1056,-1.461727,
+       0.472434,0.1056,-1.406405,      0.461116,0.084525,-1.372712,    0.237149,0.084525,-1.426709,
+       0.237149,0.084525,-1.426709,    0.24297,0.1056,-1.461727,       0.472434,0.1056,-1.406405,
+       0.685551,0.1056,-1.317675,      0.669128,0.084525,-1.286108,    0.461116,0.084525,-1.372712,
+       0.461116,0.084525,-1.372712,    0.472434,0.1056,-1.406405,      0.685551,0.1056,-1.317675,
+       0.879477,0.1056,-1.198382,      0.858407,0.084525,-1.169673,    0.669128,0.084525,-1.286108,
+       0.669128,0.084525,-1.286108,    0.685551,0.1056,-1.317675,      0.879477,0.1056,-1.198382,
+       1.051368,0.1056,-1.051368,      1.026181,0.084525,-1.026181,    0.858407,0.084525,-1.169673,
+       0.858407,0.084525,-1.169673,    0.879477,0.1056,-1.198382,      1.051368,0.1056,-1.051368,
+       1.198382,0.1056,-0.879477,      1.169673,0.084525,-0.858407,    1.026181,0.084525,-1.026181,
+       1.026181,0.084525,-1.026181,    1.051368,0.1056,-1.051368,      1.198382,0.1056,-0.879477,
+       1.317675,0.1056,-0.685551,      1.286108,0.084525,-0.669128,    1.169673,0.084525,-0.858407,
+       1.169673,0.084525,-0.858407,    1.198382,0.1056,-0.879477,      1.317675,0.1056,-0.685551,
+       1.406405,0.1056,-0.472434,      1.372712,0.084525,-0.461116,    1.286108,0.084525,-0.669128,
+       1.286108,0.084525,-0.669128,    1.317675,0.1056,-0.685551,      1.406405,0.1056,-0.472434,
+       1.461727,0.1056,-0.24297,       1.426709,0.084525,-0.237149,    1.372712,0.084525,-0.461116,
+       1.372712,0.084525,-0.461116,    1.406405,0.1056,-0.472434,      1.461727,0.1056,-0.24297,
+       1.4808,0.1056,0,        1.445325,0.084525,0,    1.426709,0.084525,-0.237149,
+       1.426709,0.084525,-0.237149,    1.461727,0.1056,-0.24297,       1.4808,0.1056,0,
+       0.245542,0.127575,-1.4772,      0.24297,0.1056,-1.461727,       0,0.1056,-1.4808,
+       0,0.1056,-1.4808,       0,0.127575,-1.496475,   0.245542,0.127575,-1.4772,
+       0.477435,0.127575,-1.421292,    0.472434,0.1056,-1.406405,      0.24297,0.1056,-1.461727,
+       0.24297,0.1056,-1.461727,       0.245542,0.127575,-1.4772,      0.477435,0.127575,-1.421292,
+       0.692808,0.127575,-1.331623,    0.685551,0.1056,-1.317675,      0.472434,0.1056,-1.406405,
+       0.472434,0.1056,-1.406405,      0.477435,0.127575,-1.421292,    0.692808,0.127575,-1.331623,
+       0.888786,0.127575,-1.211067,    0.879477,0.1056,-1.198382,      0.685551,0.1056,-1.317675,
+       0.685551,0.1056,-1.317675,      0.692808,0.127575,-1.331623,    0.888786,0.127575,-1.211067,
+       1.062497,0.127575,-1.062497,    1.051368,0.1056,-1.051368,      0.879477,0.1056,-1.198382,
+       0.879477,0.1056,-1.198382,      0.888786,0.127575,-1.211067,    1.062497,0.127575,-1.062497,
+       1.211067,0.127575,-0.888786,    1.198382,0.1056,-0.879477,      1.051368,0.1056,-1.051368,
+       1.051368,0.1056,-1.051368,      1.062497,0.127575,-1.062497,    1.211067,0.127575,-0.888786,
+       1.331623,0.127575,-0.692808,    1.317675,0.1056,-0.685551,      1.198382,0.1056,-0.879477,
+       1.198382,0.1056,-0.879477,      1.211067,0.127575,-0.888786,    1.331623,0.127575,-0.692808,
+       1.421292,0.127575,-0.477435,    1.406405,0.1056,-0.472434,      1.317675,0.1056,-0.685551,
+       1.317675,0.1056,-0.685551,      1.331623,0.127575,-0.692808,    1.421292,0.127575,-0.477435,
+       1.4772,0.127575,-0.245542,      1.461727,0.1056,-0.24297,       1.406405,0.1056,-0.472434,
+       1.406405,0.1056,-0.472434,      1.421292,0.127575,-0.477435,    1.4772,0.127575,-0.245542,
+       1.496475,0.127575,0,    1.4808,0.1056,0,        1.461727,0.1056,-0.24297,
+       1.461727,0.1056,-0.24297,       1.4772,0.127575,-0.245542,      1.496475,0.127575,0,
+       0.24612,0.15,-1.48068,  0.245542,0.127575,-1.4772,      0,0.127575,-1.496475,
+       0,0.127575,-1.496475,   0,0.15,-1.5,    0.24612,0.15,-1.48068,
+       0.47856,0.15,-1.42464,  0.477435,0.127575,-1.421292,    0.245542,0.127575,-1.4772,
+       0.245542,0.127575,-1.4772,      0.24612,0.15,-1.48068,  0.47856,0.15,-1.42464,
+       0.69444,0.15,-1.33476,  0.692808,0.127575,-1.331623,    0.477435,0.127575,-1.421292,
+       0.477435,0.127575,-1.421292,    0.47856,0.15,-1.42464,  0.69444,0.15,-1.33476,
+       0.89088,0.15,-1.21392,  0.888786,0.127575,-1.211067,    0.692808,0.127575,-1.331623,
+       0.692808,0.127575,-1.331623,    0.69444,0.15,-1.33476,  0.89088,0.15,-1.21392,
+       1.065,0.15,-1.065,      1.062497,0.127575,-1.062497,    0.888786,0.127575,-1.211067,
+       0.888786,0.127575,-1.211067,    0.89088,0.15,-1.21392,  1.065,0.15,-1.065,
+       1.21392,0.15,-0.89088,  1.211067,0.127575,-0.888786,    1.062497,0.127575,-1.062497,
+       1.062497,0.127575,-1.062497,    1.065,0.15,-1.065,      1.21392,0.15,-0.89088,
+       1.33476,0.15,-0.69444,  1.331623,0.127575,-0.692808,    1.211067,0.127575,-0.888786,
+       1.211067,0.127575,-0.888786,    1.21392,0.15,-0.89088,  1.33476,0.15,-0.69444,
+       1.42464,0.15,-0.47856,  1.421292,0.127575,-0.477435,    1.331623,0.127575,-0.692808,
+       1.331623,0.127575,-0.692808,    1.33476,0.15,-0.69444,  1.42464,0.15,-0.47856,
+       1.48068,0.15,-0.24612,  1.4772,0.127575,-0.245542,      1.421292,0.127575,-0.477435,
+       1.421292,0.127575,-0.477435,    1.42464,0.15,-0.47856,  1.48068,0.15,-0.24612,
+       1.5,0.15,0,     1.496475,0.127575,0,    1.4772,0.127575,-0.245542,
+       1.4772,0.127575,-0.245542,      1.48068,0.15,-0.24612,  1.5,0.15,0
+};
index 008882d3642c0b822cfbbcf9a7850163425f393d..6523102a65243d270c62f9f828f8a83b84f7fe1f 100644 (file)
@@ -72,22 +72,22 @@ typedef struct
 } topBlockSTATE;
 
 /* parameter vars */
-Bool override;
-Bool rotate;
-Bool follow;
-Bool drawCarpet;
-Bool drawBlob;
-Bool drawNipples;
-GLfloat rotateSpeed;
-GLfloat camX;
-GLfloat camY;
-GLfloat camZ;
-GLfloat dropSpeed;
-int maxFalling;
-int maxColors;
-int size;
-int spawn;
-int resolution;
+static Bool override;
+static Bool rotate;
+static Bool follow;
+static Bool drawCarpet;
+static Bool drawBlob;
+static Bool drawNipples;
+static GLfloat rotateSpeed;
+static GLfloat camX;
+static GLfloat camY;
+static GLfloat camZ;
+static GLfloat dropSpeed;
+static int maxFalling;
+static int maxColors;
+static int size;
+static int spawn;
+static int resolution;
 
 static XrmOptionDescRec opts[] = {
   { "-size",        ".size",        XrmoptionSepArg, 0 },
@@ -147,7 +147,7 @@ static argtype vars[] = {
 
 static topBlockSTATE *tbs = NULL;
 
-ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL};
+static ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 /* Window management, etc */
 ENTRYPOINT void
@@ -319,13 +319,10 @@ draw_topBlock (ModeInfo *mi)
                followBlock(mi);
        }
 
-        glScalef (-1, 1, 1);
-        glTranslatef (0, 0, -10);
-        glRotatef(-current_device_rotation(), 0, 0, 1);
+        /* Rotate the scene around a point that's a little higher up. */
+        glTranslatef (0, 0, -5);
         gltrackball_rotate (tb->trackball);
-        glRotatef(current_device_rotation(), 0, 0, 1);
-        glTranslatef (0, 0, 10);
-        glScalef (-1, 1, 1);
+        glTranslatef (0, 0, 5);
 
        /* rotate the world */
        glRotatef(tb->rotation, 0.0, 0.0, 1.0);         
index 617a0bb17c487bc77130b68f29d34cdebe493be1..429ade91ebd80ad6ccb70ebc9f0540fd8ba74bb6 100644 (file)
@@ -72,6 +72,7 @@
  */
 static float tb_project_to_sphere(float, float, float);
 static void normalize_quat(float [4]);
+static void axis_to_quat(float a[3], float phi, float q[4]);
 
 static void
 vzero(float *v)
index f7da9509ea5e6dbd1fcc8bee510f92b7648f3c93..4b84ab7157ceeba24cf759f727d6acfd24c750d5 100644 (file)
@@ -76,7 +76,7 @@ build_rotmatrix(float m[4][4], float q[4]);
  * the given vector) and an angle about which to rotate.  The angle is
  * expressed in radians.  The result is put into the third argument.
  */
-void
-axis_to_quat(float a[3], float phi, float q[4]);
+/* void
+axis_to_quat(float a[3], float phi, float q[4]); */
 
 #endif /* __TRACKBALL_H__ */
index 261aca3c2f214263ea111e8c05ebc4af9bea97ec..3ab69f1ddb9d67f43154e9459b709cb240fe97ee 100644 (file)
@@ -505,7 +505,6 @@ draw_bit (ModeInfo *mi)
 
   glPushMatrix ();
   glRotatef(current_device_rotation(), 0, 0, 1);
-
   glScalef(1.1, 1.1, 1.1);
 
   {
@@ -514,10 +513,7 @@ draw_bit (ModeInfo *mi)
     glTranslatef((x - 0.5) * 11,
                  (y - 0.5) * 5,
                  (z - 0.5) * 3);
-
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 54132fbee12616defe3ff295b12845c7617f8121..333161bb5d50ef3e71187288f6783efebfb78627 100644 (file)
@@ -111,7 +111,8 @@ struct tunnel_state {
 };
 
 /*=================== Vector normalization ==================================*/
-static void normalize(cvPoint *V)
+static void
+normalize(cvPoint *V)
 {
   float d;
 
@@ -125,7 +126,8 @@ static void normalize(cvPoint *V)
 }
 /*=================== C = A x B  (Vector multiply) ==========================*/
 #if 0
-static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
+static void
+vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
 {
        /* Vector multiply */
        C->x = A->y*B->z - A->z*B->y;
@@ -135,7 +137,8 @@ static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
 #endif
 
 /* Catmull-Rom Curve calculations */
-static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
+static void
+cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
 {
        float t2, t3, t1;
 
@@ -156,7 +159,8 @@ static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
 // outp - output point
 //==========================================================================
 */
-static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
+static void
+RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
 {
        cvPoint p1, p2;
        float l, m, n, ca, sa;
@@ -183,7 +187,8 @@ static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPo
 
 
 /*=================== Load camera and tunnel path ==========================*/
-static void LoadPath(struct tunnel_state *st)
+static void
+LoadPath(struct tunnel_state *st)
 {
        float x, y, z;
        tnPath *path1=NULL, *path2=NULL;
@@ -222,7 +227,7 @@ static void LoadPath(struct tunnel_state *st)
 
 /*=================== Tunnel Initialization ================================*/
 struct tunnel_state *
-InitTunnel(void)
+atunnel_InitTunnel(void)
 {
     struct tunnel_state *st = (struct tunnel_state *) calloc (1, sizeof(*st));
        LoadPath(st);
@@ -230,7 +235,8 @@ InitTunnel(void)
     return st;
 }
 
-void DrawTunnel(struct tunnel_state *st, 
+void
+atunnel_DrawTunnel(struct tunnel_state *st, 
                 int do_texture, int do_light, GLuint *textures)
 {
        tnPath *p, *p1, *cmpos;
@@ -438,7 +444,8 @@ void DrawTunnel(struct tunnel_state *st,
 }
 
 /* =================== Show splash screen =================================== */
-void SplashScreen(struct tunnel_state *st, 
+void
+atunnel_SplashScreen(struct tunnel_state *st, 
                   int do_wire, int do_texture, int do_light)
 {
        if (st->ModeX > 0)
@@ -496,7 +503,8 @@ void SplashScreen(struct tunnel_state *st,
        }
 }
 
-void FreeTunnel(struct tunnel_state *st)
+void
+atunnel_FreeTunnel(struct tunnel_state *st)
 {
   free (st);
 }
index 3ada23a6569e9eb8164787a678b0e3dff2428770..643b9584bc6c2f7f32a0ad5b6d5eaffc2313e45a 100644 (file)
@@ -2,10 +2,10 @@
 
 struct tunnel_state;
 
-extern struct tunnel_state * InitTunnel(void);
-extern void DrawTunnel(struct tunnel_state *,
+extern struct tunnel_state * atunnel_InitTunnel(void);
+extern void atunnel_DrawTunnel(struct tunnel_state *,
                        int do_texture, int do_light, GLuint *textures);
-extern void SplashScreen(struct tunnel_state *,
+extern void atunnel_SplashScreen(struct tunnel_state *,
                          int do_wire, int do_texture, int do_light);
-extern void FreeTunnel(struct tunnel_state *);
+extern void atunnel_FreeTunnel(struct tunnel_state *);
 
index d2308386d6551101aecb180cbca173740c16c0dc..02a5b11352ff3f439c59d2f98f1df59066e1bfba 100644 (file)
@@ -339,7 +339,9 @@ make_goop (Screen *screen, Visual *visual, Window window, Colormap cmap,
   goop->nlayers = get_integer_resource (dpy, "planes", "Planes");
   if (goop->nlayers <= 0)
     goop->nlayers = (random() % (depth-2)) + 2;
-  goop->layers = (struct layer **) malloc(sizeof(*goop->layers)*goop->nlayers);
+  if (! goop->layers)
+    goop->layers = (struct layer **) 
+      malloc(sizeof(*goop->layers)*goop->nlayers);
 
   goop->additive_p = get_boolean_resource (dpy, "additive", "Additive");
   goop->cmap_p = has_writable_cells (screen, visual);
@@ -542,7 +544,11 @@ static void
 goop_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
-  /* #### write me */
+  struct goop *goop = (struct goop *) closure;
+
+  /* #### leaks like crazy */
+  struct goop *goop2 = goop_init (dpy, window);
+  memcpy (goop, goop2, sizeof(*goop));
 }
 
 static Bool
index ef8a92d7e23557d7c01d983b79379bcb15bdc234..a6ea63126f995f20970e79978ba9c29caa90d5e5 100644 (file)
@@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)grav.c      5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 #define BRIGHT_COLORS
-# define reshape_grav 0
 # define grav_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -327,6 +326,15 @@ draw_grav(ModeInfo * mi)
                draw_planet(mi, &gp->planets[ball]);
 }
 
+ENTRYPOINT void
+reshape_grav(ModeInfo * mi, int width, int height)
+{
+       gravstruct *gp = &gravs[MI_SCREEN(mi)];
+       gp->width  = width;
+       gp->height = height;
+    XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
 ENTRYPOINT void
 release_grav(ModeInfo * mi)
 {
index e1eebb6755071c52dbbda4c4332e5b821cba4507..6060798181928ddc2482e2a95a5e8a8fa95ea2a2 100644 (file)
@@ -457,6 +457,9 @@ static void
 interference_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct inter_context *c = (struct inter_context *) closure;
+  c->w = w;
+  c->h = h;
 }
 
 static Bool
index f0236617e5929014c01806fb54d48c807053a921..fe7ad4366d3064868edf3950ffb82ec808f4ca72 100644 (file)
@@ -45,33 +45,15 @@ static const char sccsid[] = "@(#)julia.c   4.03 97/04/10 xlockmore";
                                        "*fpsSolid:             true   \n" \
 
 # define UNIFORM_COLORS
-# define reshape_julia 0
-# define julia_handle_event 0
 # include "xlockmore.h"                                /* in xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* in xlockmore distribution */
 #endif /* !STANDALONE */
 
 
-static Bool track_p;
-
 #define DEF_MOUSE "False"
 
-static XrmOptionDescRec opts[] =
-{
-       {"-mouse", ".julia.mouse", XrmoptionNoArg, "on"},
-       {"+mouse", ".julia.mouse", XrmoptionNoArg, "off"},
-};
-static argtype vars[] =
-{
-       {&track_p, "mouse", "Mouse", DEF_MOUSE, t_Bool},
-};
-static OptionStruct desc[] =
-{
-       {"-/+mouse", "turn on/off mouse tracking"},
-};
-
-ENTRYPOINT ModeSpecOpt julia_opts = { 2, opts, 1, vars, desc };
+ENTRYPOINT ModeSpecOpt julia_opts = { 0, };
 
 
 #define numpoints ((0x2<<jp->depth)-1)
@@ -96,6 +78,8 @@ typedef struct {
 #endif
        GC          stippledGC;
        XPoint    **pointBuffer;        /* pointer for XDrawPoints */
+    Bool        button_down_p;
+    int         mouse_x, mouse_y;
 
 } juliastruct;
 
@@ -140,28 +124,13 @@ apply(juliastruct * jp, register double xr, register double xi, int d)
 static void
 incr(ModeInfo * mi, juliastruct * jp)
 {
-       int cx, cy;
-
-       if (track_p)
+       if (jp->button_down_p)
          {
-               Window r, c;
-               int rx, ry;
-               unsigned int m;
-               XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                         &r, &c, &rx, &ry, &cx, &cy, &m);
-               if (cx <= 0 || cy <= 0 ||
-                       cx >= MI_WIN_WIDTH(mi) || cy >= MI_WIN_HEIGHT(mi))
-                 goto NOTRACK;
-         }
-
-       if (track_p)
-         {
-               jp->cr = ((double) (cx + 2 - jp->centerx)) * 2 / jp->centerx;
-               jp->ci = ((double) (cy + 2 - jp->centery)) * 2 / jp->centery;
+               jp->cr = ((double) (jp->mouse_x + 2 - jp->centerx)) * 2 / jp->centerx;
+               jp->ci = ((double) (jp->mouse_y + 2 - jp->centery)) * 2 / jp->centery;
          }
        else
          {
-         NOTRACK:
 #if 0
                jp->cr = 1.5 * (sin(M_PI * (jp->inc / 300.0)) *
                                                sin(jp->inc * M_PI / 200.0));
@@ -207,7 +176,7 @@ init_julia(ModeInfo * mi)
 
 
 #ifndef HAVE_COCOA
-       if (track_p && !jp->cursor)
+       if (jp->button_down_p && !jp->cursor && !jp->cursor)
          {
                Pixmap bit;
                XColor black;
@@ -230,7 +199,7 @@ init_julia(ModeInfo * mi)
        if (jp->pixmap == None) {
                GC          fg_gc = None, bg_gc = None;
 
-               jp->circsize = (MIN(jp->centerx, jp->centery) / 96) * 2 + 1;
+               jp->circsize = MAX(8, (MIN(jp->centerx, jp->centery) / 96) * 2 + 1);
                jp->pixmap = XCreatePixmap(display, window, jp->circsize, jp->circsize, 1);
                gcv.foreground = 1;
                fg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv);
@@ -284,6 +253,44 @@ init_julia(ModeInfo * mi)
 }
 
 
+static void
+reshape_julia (ModeInfo *mi, int w, int h)
+{
+  init_julia (mi);
+}
+
+
+ENTRYPOINT Bool
+julia_handle_event (ModeInfo *mi, XEvent *event)
+{
+  juliastruct *jp = &julias[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      jp->button_down_p = True;
+      jp->mouse_x = event->xbutton.x;
+      jp->mouse_y = event->xbutton.y;
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      jp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == MotionNotify && jp->button_down_p)
+    {
+      jp->mouse_x = event->xmotion.x;
+      jp->mouse_y = event->xmotion.y;
+      return True;
+    }
+
+  return False;
+}
+
+
+
 /* hack: moved here by jwz. */
 #define ERASE_IMAGE(d,w,g,x,y,xl,yl,xs,ys) \
 if (yl<y) \
@@ -318,8 +325,11 @@ draw_julia (ModeInfo * mi)
        new_circle.x = (int) (jp->centerx * jp->cr / 2) + jp->centerx - 2;
        new_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2;
        XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       ERASE_IMAGE(display, window, gc, new_circle.x, new_circle.y,
-                   old_circle.x, old_circle.y, jp->circsize, jp->circsize);
+       XFillArc(display, window, gc, 
+             old_circle.x-jp->circsize/2-2,
+             old_circle.y-jp->circsize/2-2,
+             jp->circsize+4, jp->circsize+4,
+             0, 360*64);
        /* draw a circle at the c-parameter so you can see it's effect on the
           structure of the julia set */
        XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi));
@@ -328,8 +338,12 @@ draw_julia (ModeInfo * mi)
        XSetStipple(display, jp->stippledGC, jp->pixmap);
        XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled);
 #endif /* HAVE_COCOA */
-       XFillRectangle(display, window, jp->stippledGC, new_circle.x, new_circle.y,
-                      jp->circsize, jp->circsize);
+       XDrawArc(display, window, jp->stippledGC, 
+             new_circle.x-jp->circsize/2,
+             new_circle.y-jp->circsize/2,
+             jp->circsize, jp->circsize,
+             0, 360*64);
+
        if (jp->erase == 1) {
                XDrawPoints(display, window, gc,
                    jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin);
index a27e2e38444b9e517a6bc64fe7c826f967bee30f..4e0f2e82b4e8d432d043a508d464eff2e889179e 100644 (file)
@@ -3,7 +3,7 @@
 julia - draws spinning, animating julia-set fractals
 .SH SYNOPSIS
 .B julia
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-mouse] [\-nomouse]
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
 
 [\-fps]
 .SH DESCRIPTION
@@ -19,6 +19,8 @@ dx266 and it looks okay.  The sinusoidal variation of the parameter
 might not be as interesting as it could, but it still gives an idea 
 of the effect of the parameter.
 
+Dragging the mouse in the window uses the mouse's position as the
+control point for the generation of ths set.
 .SH OPTIONS
 .I julia
 accepts the following options:
@@ -48,14 +50,6 @@ the color wheel.
 
 .TP 8
 .B \-count \fIinteger\fP
-
-.TP 8
-.B \-mouse
-.TP 8
-.B \-nomouse
-If \fI\-mouse\fP is specified, the control point of the Julia set will
-be derived from the position of the mouse in the window.  When the mouse
-is not in the window, the control point is chosen the normal way.
 .TP 8
 .B \-fps
 Display the current frame rate and CPU load.
index 7b50a56a0b52dc20e2e75a60eaa11adb75d8b4a9..7a998738f73b2de0471bd6b9dfad443c3c0463fe 100644 (file)
@@ -93,7 +93,6 @@ static const char sccsid[] = "@(#)loop.c      5.01 2000/03/15 xlockmore";
                                        "*fpsSolid: true     \n" \
 
 # define UNIFORM_COLORS
-# define reshape_loop 0
 # define loop_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1678,6 +1677,13 @@ draw_loop (ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_loop(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_loop (mi);
+}
+
 ENTRYPOINT void
 refresh_loop (ModeInfo * mi)
 {
index 8361fbd0dca03d0093379ab6369a791126875112..11a787432921a25a4d139ad96334a1a61867f12f 100644 (file)
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
-const char * const demo_files[] = {
+static const char * const demo_files[] = {
 # include "m6502.h"
 };
 
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
+
 /* We want to paint on a 32 by 32 grid of pixels. We will needed to
    divided the screen up into chuncks */
 enum {
@@ -74,7 +79,7 @@ start_rand_bin_prog(machine_6502 *machine, struct state *st){
   while(n == st->which)
     n = random() % st->demos;
   st->which = n;
-  start_eval_string(machine, demo_files[st->which], plot6502, st);
+  m6502_start_eval_string(machine, demo_files[st->which], plot6502, st);
 }
 
 \f
@@ -114,7 +119,6 @@ m6502_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   unsigned int x, y;
-  char *s = get_string_resource (dpy, "file", "File");
   int n = get_integer_resource(dpy, "displaytime", "Displaytime");
   int dh;
   st->demos = countof(demo_files);
@@ -125,7 +129,7 @@ m6502_init (Display *dpy, Window window)
   st->tv=analogtv_allocate(st->dpy, st->window);
   analogtv_set_defaults(st->tv, "");
   
-  st->machine = build6502();
+  st->machine = m6502_build();
   st->inp=analogtv_input_allocate();
   analogtv_setup_sync(st->inp, 1, 0);
   
@@ -141,10 +145,15 @@ m6502_init (Display *dpy, Window window)
 
   init_time(st);
   
-  if (strlen(s) > 0)
-    start_eval_file(st->machine,s, plot6502, st);
+  {
+#ifdef READ_FILES
+    char *s = get_string_resource (dpy, "file", "File");
+    if (strlen(s) > 0)
+      m6502_start_eval_file(st->machine,s, plot6502, st);
   else
+#endif
     start_rand_bin_prog(st->machine,st);
+  }
 
   analogtv_lcp_to_ntsc(ANALOGTV_BLACK_LEVEL, 0.0, 0.0, st->field_ntsc);
 
@@ -214,7 +223,7 @@ m6502_draw (Display *dpy, Window window, void *closure)
   unsigned int x = 0, y = 0;
   double te;
 
-  next_eval(st->machine,500);
+  m6502_next_eval(st->machine,500);
 
   for (x = 0; x < 32; x++)
     for (y = 0; y < 32; y++)
index d82d16f55f2cad0ef55057e02771fcf8bd9309c8..afaed3c99dd6e574eeb4ca7558d41865823db7f7 100644 (file)
 #undef countof
 #define countof(x) (sizeof(x)/sizeof(*(x)))
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
 typedef struct {
   int which;
   XRectangle rect;
@@ -163,7 +167,9 @@ memscroller_init (Display *dpy, Window window)
   s = 0;
 
 
+# ifdef READ_FILES
   st->filename = get_string_resource (dpy, "filename", "Filename");
+# endif
 
   if (!st->filename ||
       !*st->filename ||
@@ -171,12 +177,16 @@ memscroller_init (Display *dpy, Window window)
       !strcasecmp (st->filename, "(mem)") ||
       !strcasecmp (st->filename, "(memory)"))
     st->seed_mode = SEED_RAM;
+# ifdef READ_FILES
   else if (st->filename &&
            (!strcasecmp (st->filename, "(rand)") ||
             !strcasecmp (st->filename, "(random)")))
     st->seed_mode = SEED_RANDOM;
   else
     st->seed_mode = SEED_FILE;
+# else
+  st->seed_mode = SEED_RANDOM;
+# endif
 
   st->nscrollers = 3;
   st->scrollers = (scroller *) calloc (st->nscrollers, sizeof(scroller));
@@ -270,6 +280,7 @@ reshape_memscroller (state *st)
 
 
 
+# ifdef READ_FILES
 static void
 open_file (state *st)
 {
@@ -288,6 +299,7 @@ open_file (state *st)
       exit (1);
     }
 }
+#endif
 
 
 static unsigned int
@@ -416,6 +428,7 @@ more_bits (state *st, scroller *sc)
       pv = PACK();
       break;
 
+# ifdef READ_FILES
     case SEED_FILE:
       {
         int i;
@@ -460,6 +473,7 @@ more_bits (state *st, scroller *sc)
         pv = PACK();
       }
       break;
+# endif /* READ_FILES */
 
     default:
       abort();
index 72a2f4f23a2cd5a3069ffa0cd90a9d1c9d82f0f3..441a371371bda38ba5c39d75cdfca3e1e16f6e2d 100644 (file)
@@ -306,6 +306,8 @@ static void
 moire2_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->reset = 1;
 }
 
 static Bool
index 1c4e64c05b09e724811afbc25c5de5de9c1812de..82d5fce7e82482c219083302113fe95badcf3cf0 100644 (file)
@@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)mountain.c  5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_mountain 0
 # define mountain_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -255,6 +254,14 @@ draw_mountain (ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_mountain(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_mountain (mi);
+}
+
+
 ENTRYPOINT void
 release_mountain (ModeInfo * mi)
 {
index 4f44a8eb3fda400041928e1fa7b0cdcc6d543f56..77232143279e8bc49a43ac319bc49ce692bb2d64 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright Â© 2008-2011 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2008-2012 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -18,7 +18,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.7 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
+my $version = q{ $Revision: 1.8 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
 
 my $verbose = 0;
 
@@ -111,7 +111,7 @@ sub munge_ad($) {
     open (IN, "<$xml") || error ("$xml: $!");
     while (<IN>) { $b .= $_; }
     close IN;
-    my ($name) = ($b =~ m@<screensaver[^<>]*\b_label=\"([^<>\"]+)\">@s);
+    my ($name) = ($b =~ m@<screensaver[^<>]*\b_label=\"([^<>\"]+)\"@s);
     error ("$xml: no name") unless $name;
 
     my $name2 = lc($name);
index 108db35c512200f16094aadb2bcfdcb594bfd36d..32b09e251ef91996baca957a49bb03989680f5f8 100644 (file)
@@ -600,6 +600,9 @@ static void
 noseguy_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->Width = w + 2;
+  st->Height = h + 2;
 }
 
 static Bool
index 226a3cf333dff49bbe56ac90a4006578076a1f27..23fb3a1d4d0b743a43fb2e82e5abf0a0649b2a52 100644 (file)
@@ -56,7 +56,6 @@ static const char sccsid[] = "@(#)pacman.c    5.00 2000/11/01 xlockmore";
 
 #      define UNIFORM_COLORS
 #      define BRIGHT_COLORS
-#   define reshape_pacman 0
 #   define pacman_handle_event 0
 #      include "xlockmore.h"   /* in xscreensaver distribution */
 #   include <assert.h>
@@ -131,7 +130,7 @@ static XrmOptionDescRec opts[] = {
 };
 
 static argtype vars[] = {
-    {&trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool}
+    {&pacman_trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool}
 };
 
 static OptionStruct desc[] = {
@@ -158,8 +157,8 @@ ModStruct pacman_description = {
 
 #endif
 
-Bool trackmouse;
-pacmangamestruct *pacmangames = (pacmangamestruct *) NULL;
+Bool pacman_trackmouse;
+pacmangamestruct *pacman_games = (pacmangamestruct *) NULL;
 
 static void repopulate (ModeInfo * mi);
 static void drawlevel (ModeInfo * mi);
@@ -201,7 +200,7 @@ free_pacman (Display * display, pacmangamestruct * pp)
 static void
 reset_level (ModeInfo * mi, int n, int pac_init)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int ghost;
 
     MI_CLEARWINDOW (mi);
@@ -251,9 +250,9 @@ reset_level (ModeInfo * mi, int n, int pac_init)
         pp->ghosts[ghost].delta.y = 0;
         pp->ghosts[ghost].flash_scared = False;
         pp->ghosts[ghost].wait_pos = False;
-        ghost_update (pp, &(pp->ghosts[ghost]));
+        pacman_ghost_update (pp, &(pp->ghosts[ghost]));
     }
-    pac_update (mi, pp, &(pp->pacman));
+    pacman_update (mi, pp, &(pp->pacman));
 }
 
 static int
@@ -311,9 +310,9 @@ check_death (ModeInfo * mi, pacmangamestruct * pp)
 static void
 repopulate (ModeInfo * mi)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     pp->pacman.deaths = 0;
-    reset_level (mi, createnewlevel (pp), True);
+    reset_level (mi, pacman_createnewlevel (pp), True);
     check_death (mi, pp);
 }
 
@@ -322,7 +321,7 @@ static void
 setwallcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     if (MI_NPIXELS (mi) > 2)
         XSetForeground (display, pp->stippledGC, MI_PIXEL (mi, BLUE));
@@ -335,7 +334,7 @@ static void
 setdotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     XSetForeground (display, pp->stippledGC, MI_WHITE_PIXEL (mi));
 }
@@ -344,7 +343,7 @@ static void
 cleardotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     XSetForeground (display, pp->stippledGC, MI_BLACK_PIXEL (mi));
 }
@@ -355,7 +354,7 @@ draw_position (ModeInfo * mi, int x, int y, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
@@ -378,7 +377,7 @@ draw_number (ModeInfo * mi, int x, int y, int num, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
@@ -406,7 +405,7 @@ draw_grid (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     int h = MI_HEIGHT (mi);
     int w = MI_WIDTH (mi);
     int y = 0;
@@ -430,7 +429,7 @@ draw_string (ModeInfo * mi, int x, int y, char *s, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
 
@@ -482,7 +481,7 @@ print_ghost_stats (ModeInfo *mi, ghoststruct *g , int ghost_num)
 static void
 print_pac_stats ( ModeInfo *mi, pacmanstruct *pac )
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     char s[1024];
     sprintf (s, "Pacman, Deaths: %d", pac->deaths );
     switch ( pac->aistate ){
@@ -516,7 +515,7 @@ print_pac_stats ( ModeInfo *mi, pacmanstruct *pac )
 static void
 dot_rc_to_pixel (ModeInfo * mi, int *x, int *y)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     *x = (pp->xs * *x) +
         (pp->xs / 2) - (pp->xs > 32 ? (pp->xs / 16) : 1) + pp->xb;
     *y = (pp->ys * *y) +
@@ -529,7 +528,7 @@ dot_rc_to_pixel (ModeInfo * mi, int *x, int *y)
 static void
 dot_width_height (ModeInfo *mi, int *w, int *h)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     if (pp->xs > 32){
         *w = *h = (pp->xs / 32 );
     }else {
@@ -713,7 +712,7 @@ drawlevelblock (ModeInfo * mi, pacmangamestruct * pp,
 static void
 drawlevel (ModeInfo * mi)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int x, y;
 
     for (y = 0; y < LEVHEIGHT; y++)
@@ -745,7 +744,7 @@ draw_pacman_sprite (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int dir = 0;
     int old_mask_dir = 0;
     int old_mask_mouth = 0;
@@ -851,7 +850,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 #define MAX_WAG_COUNT 50
     unsigned int dir = 0;
     unsigned int fs  = 0; /*flash scared*/
@@ -954,7 +953,7 @@ draw_pacman_sprite (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int dir;
 
     pp->pacman.cf = pp->pacman.col * pp->xs + pp->pacman.delta.x *
@@ -1003,7 +1002,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     pp->ghosts[ghost].cf =
         pp->ghosts[ghost].col * pp->xs + pp->ghosts[ghost].delta.x *
@@ -1059,7 +1058,7 @@ ghost_over (ModeInfo * mi, int x, int y)
 {
     int ghost = 0;
     int ret = False;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     dot_rc_to_pixel (mi, &x, &y);
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if ((pp->ghosts[ghost].cf <= x
@@ -1078,11 +1077,11 @@ static void
 flash_bonus_dots (ModeInfo * mi)
 {
 #define MAX_FLASH_COUNT 25
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     int i, x, y;
     for (i = 0; i < NUM_BONUS_DOTS; i++) {
-        if (!bonus_dot_eaten (pp, i)) {
-            bonus_dot_pos (pp, i, &x, &y);
+        if (!pacman_bonus_dot_eaten (pp, i)) {
+            pacman_bonus_dot_pos (pp, i, &x, &y);
             if (ghost_over (mi, x, y))
                 continue;
             if (pp->bd_on)
@@ -1105,10 +1104,10 @@ ate_bonus_dot (ModeInfo * mi)
      */
     unsigned int ret = 0;
     int idx = 0;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
-    if (is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) {
-        ret = !bonus_dot_eaten (pp, idx);
-        eat_bonus_dot (pp, idx);
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
+    if (pacman_is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) {
+        ret = !pacman_bonus_dot_eaten (pp, idx);
+        pacman_eat_bonus_dot (pp, idx);
     }
     return ret;
 }
@@ -1117,7 +1116,7 @@ static void
 ghost_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if (pp->ghosts[ghost].aistate == goingin || 
             pp->ghosts[ghost].aistate == goingout ||
@@ -1133,7 +1132,7 @@ static void
 ghost_not_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++){
         if (pp->ghosts[ghost].aistate == goingin ||
             pp->ghosts[ghost].aistate == goingout ||
@@ -1149,7 +1148,7 @@ static void
 ghost_flash_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++)
         pp->ghosts[ghost].flash_scared = !pp->ghosts[ghost].flash_scared;
 }
@@ -1162,7 +1161,7 @@ pacman_tick (ModeInfo * mi)
 #define START_FLASH 200
 #define FLASH_COUNT 25
 
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int ghost;
 #if 0
     draw_grid (mi);
@@ -1491,13 +1490,13 @@ init_pacman (ModeInfo * mi)
     int dir, mouth;
 #endif
 
-    if (pacmangames == NULL) {
-        if ((pacmangames = (pacmangamestruct *)
+    if (pacman_games == NULL) {
+        if ((pacman_games = (pacmangamestruct *)
              calloc ((size_t) MI_NUM_SCREENS (mi),
                      sizeof (pacmangamestruct))) == NULL)
             return;
     }
-    pp = &pacmangames[MI_SCREEN (mi)];
+    pp = &pacman_games[MI_SCREEN (mi)];
 
     pp->width = (unsigned short) MI_WIDTH (mi);
     pp->height = (unsigned short) MI_HEIGHT (mi);
@@ -1710,9 +1709,9 @@ draw_pacman (ModeInfo * mi)
     unsigned int g;
     pacmangamestruct *pp;
 
-    if (pacmangames == NULL)
+    if (pacman_games == NULL)
         return;
-    pp = &pacmangames[MI_SCREEN (mi)];
+    pp = &pacman_games[MI_SCREEN (mi)];
     if (pp->ghosts == NULL)
         return;
 
@@ -1722,7 +1721,7 @@ draw_pacman (ModeInfo * mi)
     pp->pacman.delta.y += pp->pacman.err.y != 0 ? pp->incy : 0;
 
     if (pp->pacman.delta.x >= pp->xs && pp->pacman.delta.y >= pp->ys) {
-        pac_update (mi, pp, &(pp->pacman));
+        pacman_update (mi, pp, &(pp->pacman));
         check_death (mi, pp);
         pp->pacman.delta.x = pp->incx;
         pp->pacman.delta.y = pp->incy;
@@ -1741,7 +1740,7 @@ draw_pacman (ModeInfo * mi)
         
         if (pp->ghosts[g].delta.x >= pp->xs &&
             pp->ghosts[g].delta.y >= pp->ys) {
-            ghost_update (pp, &(pp->ghosts[g]));
+            pacman_ghost_update (pp, &(pp->ghosts[g]));
             pp->ghosts[g].delta.x = pp->incx;
             pp->ghosts[g].delta.y = pp->incy;
         }
@@ -1758,13 +1757,13 @@ draw_pacman (ModeInfo * mi)
 ENTRYPOINT void
 release_pacman (ModeInfo * mi)
 {
-    if (pacmangames != NULL) {
+    if (pacman_games != NULL) {
         int screen;
 
         for (screen = 0; screen < MI_NUM_SCREENS (mi); screen++)
-            free_pacman (MI_DISPLAY (mi), &pacmangames[screen]);
-        free (pacmangames);
-        pacmangames = (pacmangamestruct *) NULL;
+            free_pacman (MI_DISPLAY (mi), &pacman_games[screen]);
+        free (pacman_games);
+        pacman_games = (pacmangamestruct *) NULL;
     }
 }
 
@@ -1776,6 +1775,17 @@ refresh_pacman (ModeInfo * mi)
     pacman_tick (mi);
 }
 
+ENTRYPOINT void
+reshape_pacman(ModeInfo * mi, int width, int height)
+{
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
+    pp->width = width;
+    pp->height = height;
+    MI_CLEARWINDOW (mi);
+    /* repopulate (mi); */
+    drawlevel (mi);
+}
+
 #ifndef STANDALONE
 /* Callback to change level. */
 ENTRYPOINT void
index fbe1eae0f98e95ce3294aec6f7ae0660deb128f6..652ee3142e60183575180395bb602c2bcbfafa52 100644 (file)
@@ -223,8 +223,8 @@ typedef struct
 
 } pacmangamestruct;
 
-extern pacmangamestruct *pacmangames;
-extern Bool trackmouse;
+extern pacmangamestruct *pacman_games;
+extern Bool pacman_trackmouse;
 
 typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1];
 
index 070f9aa5fe3debb997e419605432339a95ff5614..b85bd96e816fafa32e32e09f90fd022e15b196a4 100644 (file)
@@ -67,9 +67,9 @@ ghost_get_posdirs (pacmangamestruct * pp, int *posdirs, ghoststruct * g)
         /* check if possible direction */
         can_go_in = (g->aistate == goingout || g->aistate == goingin);
         if ((posdirs[i] =
-             check_pos (pp, g->row + dirvecs[i].dy,
-                        g->col + dirvecs[i].dx,
-                        can_go_in)) == True) {
+             pacman_check_pos (pp, g->row + dirvecs[i].dy,
+                               g->col + dirvecs[i].dx,
+                               can_go_in)) == True) {
             nrdirs++;
         }
     }
@@ -245,7 +245,7 @@ clear_dir ( ghoststruct *g ){
 static int 
 found_jail ( int col, int row ){
     int cx, cy;
-    get_jail_opening ( &cx, &cy );
+    pacman_get_jail_opening ( &cx, &cy );
     cy += 1;
     if (row == cy && col == cx )
         return 1;
@@ -261,7 +261,7 @@ move_ghost ( pacmangamestruct * pp,
     int idx = (int)ps;
     int tr = row + dirvecs[idx].dx;
     int tc = col + dirvecs[idx].dy;
-    if ( check_pos ( pp, tr, tc, True )){
+    if ( pacman_check_pos ( pp, tr, tc, True )){
         *new_row = tr;
         *new_col = tc;
         return True;
@@ -332,7 +332,7 @@ find_home ( pacmangamestruct *pp, ghoststruct *g ){
     c = tmp_ghost->col;
     if ( ! recur_back_track ( pp, tmp_ghost, r, c ) ){        
         fprintf(stderr, "Could not find way home.#@$?\n");
-        get_jail_opening ( &cx, &cy);
+        pacman_get_jail_opening ( &cx, &cy);
         fprintf(stderr, "Jail was at (%d%d)\n", cx,cy);   
     }
     for ( i = 0; i < GHOST_TRACE; i++ ){
@@ -388,7 +388,7 @@ pac_dot_vec (pacmangamestruct * pp, pacmanstruct * p, long *vx, long *vy)
 
     for (y = by; y < ey; y++)
         for (x = bx; x < ex; x++)
-            if (check_dot (pp, x, y) == 1) {
+            if (pacman_check_dot (pp, x, y) == 1) {
                 dx = (long) x - (long) (p->col);
                 dy = (long) y - (long) (p->row);
                 dist = dx * dx + dy * dy;
@@ -451,8 +451,8 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs)
             posdirs[i] = 0;
         }
         else if ((posdirs[i] =
-                  check_pos (pp, p->row + dirvecs[i].dy,
-                             p->col + dirvecs[i].dx, 0)) == 1)
+                  pacman_check_pos (pp, p->row + dirvecs[i].dy,
+                                    p->col + dirvecs[i].dx, 0)) == 1)
             nrdirs++;
     }
     p->state_change = 0;
@@ -462,7 +462,7 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs)
 
 /* Clears the trace of vectors. */
 void
-pac_clear_trace (pacmanstruct * p)
+pacman_clear_trace (pacmanstruct * p)
 {
     int i;
 
@@ -517,14 +517,14 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         4 * 4 && p->aistate == ps_eating) {
         p->aistate = ps_hiding;
         p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     if (prox > 6 * 6 && p->aistate == ps_hiding) {
         p->aistate = ps_eating;
         if (p->justate == 0)
             p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     if (prox < 3 * 3)
@@ -567,7 +567,7 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
         }
     }
     else
@@ -580,8 +580,8 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         if (posdirs[i] == 0)
             continue;
         score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
-        if (check_dot (pp, p->col + dirvecs[i].dx,
-                       p->row + dirvecs[i].dy) == 1) {
+        if (pacman_check_dot (pp, p->col + dirvecs[i].dx,
+                              p->row + dirvecs[i].dy) == 1) {
             if (dotfound == 0) {
                 highest = score;
                 dir = i;
@@ -647,7 +647,7 @@ pac_chasing (pacmangamestruct * pp, pacmanstruct * p)
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
         }
     }
     else
@@ -674,7 +674,7 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p)
     if (NRAND (20) == 0) {
         p->aistate = ps_eating;
         p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     nrdirs = pac_get_posdirs (pp, p, posdirs);
@@ -683,12 +683,12 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p)
         if (posdirs[i] == 0)
             continue;
         lastdir = i;
-        if (check_dot (pp, p->col + dirvecs[i].dx,
-                       p->row + dirvecs[i].dy) == 1) {
+        if (pacman_check_dot (pp, p->col + dirvecs[i].dx,
+                              p->row + dirvecs[i].dy) == 1) {
             dir = i;
             p->aistate = ps_eating;
             p->state_change = 1;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
             break;
         }
         else if (NRAND (nrdirs) == 0)
@@ -769,7 +769,7 @@ pac_trackmouse (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
 
 /* Calls correct state function, and changes between states. */
 void
-ghost_update (pacmangamestruct * pp, ghoststruct * g)
+pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g)
 {
 
     if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) {
@@ -833,7 +833,7 @@ ghost_update (pacmangamestruct * pp, ghoststruct * g)
 
 /* Calls correct pacman state function. */
 void
-pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
+pacman_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
 {
     if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) {
         p->row = p->nextrow;
@@ -843,15 +843,15 @@ pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
     if (pp->level[p->row * LEVWIDTH + p->col] == '.' ||
         pp->level[p->row * LEVWIDTH + p->col] == 'o') {
         pp->level[p->row * LEVWIDTH + p->col] = ' ';
-        if (!trackmouse)
+        if (!pacman_trackmouse)
             p->justate = 1;
         pp->dotsleft--;
     }
-    else if (!trackmouse) {
+    else if (!pacman_trackmouse) {
         p->justate = 0;
     }
 
-    if (!(trackmouse && pac_trackmouse (mi, pp, p))) {
+    if (!(pacman_trackmouse && pac_trackmouse (mi, pp, p))) {
         /* update pacman */
         switch (p->aistate) {
         case ps_eating:
index 2958210cd631c41c42cea62d71ce4d6340858134..2488600a90b810d48d2508b39871ec556b30e62e 100644 (file)
@@ -24,9 +24,9 @@
 #ifndef __PACMAN_AI_H__
 #define __PACMAN_AI_H__
 
-extern void ghost_update (pacmangamestruct * pp, ghoststruct * g);
-extern void pac_clear_trace (pacmanstruct * p);
-extern void pac_update (ModeInfo * mi, pacmangamestruct * pp,
+extern void pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g);
+extern void pacman_clear_trace (pacmanstruct * p);
+extern void pacman_update (ModeInfo * mi, pacmangamestruct * pp,
                         pacmanstruct * p);
 
 #endif /* __PACMAN_AI_H__ */
index 12e148f403380cb9d9df01740b512f15c5b6db3c..d617942cf4613c057aa03164052e9a7f5a79ebe7 100644 (file)
@@ -223,7 +223,7 @@ createjail (lev_t * level, const unsigned width, const unsigned height)
 }
 
 void
-get_jail_opening ( int *x, int *y)
+pacman_get_jail_opening ( int *x, int *y)
 {
     int xstart = LEVWIDTH / 2  - JAILWIDTH / 2;
     int ystart = LEVHEIGHT / 2 - JAILHEIGHT / 2;
@@ -535,7 +535,7 @@ init_bonus_dots (pacmangamestruct *pp, lev_t * level)
 }
 
 int
-is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx)
+pacman_is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx)
 {
     int ret = False;
     int i;
@@ -557,21 +557,21 @@ check_bonus_idx (int idx)
 }
 
 int
-bonus_dot_eaten (pacmangamestruct *pp, int idx)
+pacman_bonus_dot_eaten (pacmangamestruct *pp, int idx)
 {
     check_bonus_idx (idx);
     return pp->bonus_dots[idx].eaten;
 }
 
 void
-eat_bonus_dot (pacmangamestruct *pp, int idx)
+pacman_eat_bonus_dot (pacmangamestruct *pp, int idx)
 {
     check_bonus_idx (idx);
     pp->bonus_dots[idx].eaten = True;
 }
 
 void
-bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y)
+pacman_bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y)
 {
     check_bonus_idx (idx);
     *x = pp->bonus_dots[idx].x;
@@ -595,7 +595,7 @@ frmtlevel (pacmangamestruct *pp, lev_t * level)
         for (x = 0; x < LEVWIDTH; x++) {
 
             if (checkset (level, x, y) == 0) {
-                if (is_bonus_dot (pp, x, y, &idx)) {
+                if (pacman_is_bonus_dot (pp, x, y, &idx)) {
                     frmtlev[y][x] = BLOCK_DOT_BONUS;
                 }
                 else {
@@ -709,7 +709,7 @@ countdots (pacmangamestruct *pp)
 
 /* Creates a new level, and places that in the pacmangamestruct. */
 int
-createnewlevel (pacmangamestruct *pp)
+pacman_createnewlevel (pacmangamestruct *pp)
 {
     lev_t *level;
     unsigned dirvec[1] = { GO_UP };
@@ -749,7 +749,7 @@ createnewlevel (pacmangamestruct *pp)
 
 /* Checks if a position is allowable for ghosts/pacs to enter. */
 int
-check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
+pacman_check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
 {
     if ((pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) ||
         (pp->level[y * LEVWIDTH + x] == BLOCK_EMPTY) ||
@@ -762,7 +762,7 @@ check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
 
 /* Checks if there is a dot on the specified position in the level. */
 int
-check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y)
+pacman_check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y)
 {
     if (x >= LEVWIDTH || y >= LEVHEIGHT)
         return 0;
index 697a6b0c5834c69c21f5f7f0199d8eeb7b62524b..0eccc3383e4348fc7337efb531bd787930989672 100644 (file)
 /*   int x, y; */
 /* } XY; */
 
-extern int createnewlevel (pacmangamestruct *);
-extern int check_pos (pacmangamestruct *, int y, int x, int ghostpass);
-extern int check_dot (pacmangamestruct *, unsigned int x, unsigned int y);
-extern int is_bonus_dot (pacmangamestruct *, int x, int y, int *idx);
-extern int bonus_dot_eaten (pacmangamestruct *, int idx);
-extern void eat_bonus_dot (pacmangamestruct *, int idx);
-extern void bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y);
-extern void get_jail_opening (int *x, int *y);
+extern int pacman_createnewlevel (pacmangamestruct *);
+extern int pacman_check_pos (pacmangamestruct *, int y, int x, int ghostpass);
+extern int pacman_check_dot (pacmangamestruct *,
+                             unsigned int x, unsigned int y);
+extern int pacman_is_bonus_dot (pacmangamestruct *, int x, int y, int *idx);
+extern int pacman_bonus_dot_eaten (pacmangamestruct *, int idx);
+extern void pacman_eat_bonus_dot (pacmangamestruct *, int idx);
+extern void pacman_bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y);
+extern void pacman_get_jail_opening (int *x, int *y);
 #endif /* __PACMAN_LEVEL_H__ */
index 721ee01600f07eb3ef1a622c3cbfd6bb8608335f..0707422bbaac5bf4591c2ccba260d08d43d261a1 100644 (file)
@@ -949,6 +949,7 @@ static void
 penetrate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  XClearWindow (dpy, window);
 }
 
 static Bool
index eedf0fdffe9aee95351b756e40c596e6fc85627d..6b07d8ca65e722e6e462b91681167cf83b890ac8 100644 (file)
@@ -89,7 +89,6 @@ If one of these are hit penrose will reinitialize.
                                        "*fpsSolid: true \n" \
 
 # define refresh_penrose 0
-# define reshape_penrose 0
 # define penrose_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -1329,6 +1328,14 @@ draw_penrose(ModeInfo * mi)
 }
 
 
+ENTRYPOINT void
+reshape_penrose(ModeInfo * mi, int width, int height)
+{
+       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
+       tp->width = width;
+       tp->height = height;
+}
+
 /* Total clean-up. */
 ENTRYPOINT void
 release_penrose(ModeInfo * mi)
index 336dd5120e69d1a3afc6b8ef4d3679a43f886d18..af01a99d32aa2f5746c35356be54ef0c82893cec 100644 (file)
@@ -940,6 +940,8 @@ static void
 piecewise_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes(st->dpy, st->window, &st->xgwa);
 }
 
 static Bool
index 69c7b2590e9e49f55de42367972f8941e5422349..c7b84a74a42146f5a3f9f6409bf42ba402e3551c 100644 (file)
@@ -39,7 +39,6 @@ static const char sccsid[] = "@(#)polyominoes.c 5.01 2000/12/18 xlockmore";
                                        "*ncolors: 64 \n" \
                                        "*fpsSolid: true \n" \
 
-# define reshape_polyominoes 0
 # define polyominoes_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -2351,6 +2350,13 @@ draw_polyominoes (ModeInfo * mi)
     sp->wait = 0;
 }
 
+ENTRYPOINT void
+reshape_polyominoes(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_polyominoes (mi);
+}
+
 ENTRYPOINT void
 release_polyominoes(ModeInfo * mi)
 {
index 0bea52ef6c9145aff1b4043d9bf2538d6b76b983..15cb61b4a6f36cc1219987811e3c74250f3ecb21 100644 (file)
@@ -187,6 +187,36 @@ static void
 popsquares_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  int x, y;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  st->sw = st->xgwa.width / st->subdivision;
+  st->sh = st->xgwa.height / st->subdivision;
+  st->gw = st->sw ? st->xgwa.width / st->sw : 0;
+  st->gh = st->sh ? st->xgwa.height / st->sh : 0;
+  st->nsquares = st->gw * st->gh;
+  free (st->squares);
+  st->squares = (square *) calloc (st->nsquares, sizeof(square));
+
+  for (y = 0; y < st->gh; y++)
+    for (x = 0; x < st->gw; x++) 
+      {
+        square *s = (square *) &st->squares[st->gw * y + x];
+        s->w = st->sw;
+        s->h = st->sh;
+        s->x = x * st->sw;
+        s->y = y * st->sh;
+      }
+
+  randomize_square_colors(st->squares, st->nsquares, st->ncolors);
+
+  if (st->dbuf) {
+    XFreePixmap (dpy, st->ba);
+    XFreePixmap (dpy, st->bb);
+    st->ba = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth);
+    st->bb = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth);
+    st->b = st->ba;
+  }
 }
 
 static Bool
index dab702f22336b87dd315333a7c35ef30e833e6c1..5e7eedae7aa321198355fa28422e956dea637d04 100644 (file)
@@ -41,7 +41,6 @@ static const char sccsid[] = "@(#)sierpinski.c        5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define BRIGHT_COLORS
-# define reshape_sierpinski 0
 # define sierpinski_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -200,6 +199,13 @@ draw_sierpinski(ModeInfo * mi)
                startover(mi);
 }
 
+ENTRYPOINT void
+reshape_sierpinski(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_sierpinski (mi);
+}
+
 ENTRYPOINT void
 release_sierpinski(ModeInfo * mi)
 {
index a44e11531b792a625ef384e1567c4daacf69be9c..69aa10fc3723ea7a3a489ab7b7ae8bd0029b5430 100644 (file)
@@ -425,6 +425,16 @@ static void
 slidescreen_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->max_width = w;
+  st->max_height = h;
+  if (! st->img_loader) {
+    XWindowAttributes xgwa;
+    XGetWindowAttributes (st->dpy, st->window, &xgwa);
+    st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
+                                              st->window, 0, 0);
+    st->start_time = time ((time_t) 0);
+  }
 }
 
 static Bool
index 96a880e57fda2f1434858ca88d6fbd29bde90725..5c67082dad498be231ed5cdbe16c411be053d737 100644 (file)
@@ -1538,6 +1538,16 @@ static void
 speedmine_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
+  if (st->dbuf != st->window) {
+      XWindowAttributes xgwa;
+      XGetWindowAttributes (st->dpy, st->window, &xgwa);
+      XFreePixmap (dpy, st->dbuf);
+      st->dbuf = XCreatePixmap (st->dpy, st->window, 
+                                st->width, st->height, xgwa.depth);
+  }
 }
 
 static Bool
index 7dff6d8ae1666133daf78a4ffc3ad8bea9bef374..2a0b0fd29bb61016afe8abe1ed8dddb8925c8f38 100644 (file)
@@ -107,6 +107,28 @@ do_worm(struct state *st, struct worm *w)
     w->v = w->v % st->height;
 }
 
+static void
+squiral_init_1 (struct state *st)
+{
+    int i;
+    if (st->worms) free (st->worms);
+    if (st->fill) free (st->fill);
+
+    st->worms=calloc(st->count, sizeof(struct worm));
+    st->fill=calloc(st->width*st->height, sizeof(int));
+
+    st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1;
+    st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0;
+    for(i=0;i<st->count;i++) {
+       st->worms[i].h=R(st->width);
+       st->worms[i].v=R(st->height);
+       st->worms[i].s=R(4)+4*PROB(st->handedness);
+       st->worms[i].c=R(st->ncolors);
+       if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; }
+       else st->worms[i].cc=0;
+    }
+}
+
 static void *
 squiral_init (Display *dpy, Window window)
 {
@@ -115,7 +137,6 @@ squiral_init (Display *dpy, Window window)
     Colormap cmap;
     XWindowAttributes xgwa;
     Bool writeable = False;
-    int i;
 
     st->dpy = dpy;
     st->window = window;
@@ -167,19 +188,7 @@ squiral_init (Display *dpy, Window window)
     if(st->worms) free(st->worms);
     if(st->fill)  free(st->fill);
 
-    st->worms=calloc(st->count, sizeof(struct worm));
-    st->fill=calloc(st->width*st->height, sizeof(int));
-
-    st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1;
-    st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0;
-    for(i=0;i<st->count;i++) {
-       st->worms[i].h=R(st->width);
-       st->worms[i].v=R(st->height);
-       st->worms[i].s=R(4)+4*PROB(st->handedness);
-       st->worms[i].c=R(st->ncolors);
-       if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; }
-       else st->worms[i].cc=0;
-    }
+    squiral_init_1 (st);
 
     return st;
 }
@@ -219,6 +228,11 @@ static void
 squiral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width  = w;
+  st->height = h;
+  squiral_init_1 (st);
+  XClearWindow (dpy, window);
 }
 
 static Bool
index 2ba693c0811a18ca032a0e8b9eb18503fced0b16..071dccb6f83819f4f60d37f6d911b5691cd74eed 100644 (file)
@@ -493,6 +493,10 @@ static void
 starfish_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  free_starfish (st->starfish);
+  st->starfish = 0;
+  st->starfish = reset_starfish (st);
 }
 
 static Bool
index eba88a90c08f7c53c27b5eb55884373b05afe685..604f471b9af5d7e6125f55e10d3e066b15122d85 100644 (file)
@@ -42,7 +42,6 @@ static const char sccsid[] = "@(#)strange.c   5.00 2000/11/01 xlockmore";
 
 # define SMOOTH_COLORS
 # define refresh_strange 0
-# define reshape_strange 0
 # define strange_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -142,7 +141,7 @@ typedef struct _ATTRACTOR {
 static ATTRACTOR *Root = (ATTRACTOR *) NULL; 
 
 #ifdef useAccumulator
-XColor* cols;
+static XColor* cols;
 #endif
 
 #ifdef POINTS_HISTORY
@@ -663,6 +662,13 @@ init_strange(ModeInfo * mi)
        XSetGraphicsExposures(display, MI_GC(mi), False);
 }
 
+ENTRYPOINT void
+reshape_strange(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_strange (mi);
+}
+
 /***************************************************************/
 
 ENTRYPOINT void
index 5a3d97a2a5dcabf626fac89523a6f359d9ebab0c..ba959ac692045fc483901291d73a469433863312 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)swirl.c     4.00 97/01/01 xlockmore";
 
 # define SMOOTH_COLORS
 # define WRITABLE_COLORS
-# define reshape_swirl 0
 # define swirl_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 # ifdef HAVE_XSHM_EXTENSION
@@ -1433,6 +1432,13 @@ draw_swirl(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_swirl(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_swirl (mi);
+}
+
 /****************************************************************/
 
 ENTRYPOINT void
index e074ab829040fc30e898835ee0cd480838c84bce..e7bbf6ddf360b24935a98aeee59750b3077ae945 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)thornbird.c 5.00 2000/11/01 xlockmore";
                                         "*fpsSolid: true    \n" \
 
 # define BRIGHT_COLORS
-# define reshape_thornbird 0
 # define thornbird_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -250,6 +249,13 @@ draw_thornbird(ModeInfo * mi)
        hp->inc++;
 }
 
+ENTRYPOINT void
+reshape_thornbird(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_thornbird (mi);
+}
+
 ENTRYPOINT void
 release_thornbird(ModeInfo * mi)
 {
index 48a8b20d67c86090fe53a07d2e1509a78a7d4c9b..1a93de257dd59fa4aba3d9e6cb363dec9d45e973 100644 (file)
@@ -51,7 +51,6 @@ static const char sccsid[] = "@(#)triangle.c  4.04 97/07/28 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_triangle 0
 # define triangle_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -345,6 +344,13 @@ draw_triangle (ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_triangle(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_triangle (mi);
+}
+
 ENTRYPOINT void
 release_triangle(ModeInfo * mi)
 {
index b23b081de89f040add001cad7cbb290ed6600bb2..f21e559966cce3da67d434947e2533320ec7d2d8 100644 (file)
@@ -508,6 +508,10 @@ static void
 truchet_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
 }
 
 static Bool
index b96d3dc8e4b84f585b47dc761b7f899543df9a57..d1ef57198af245212cfc971fa17e2c4998507e67 100644 (file)
@@ -807,6 +807,11 @@ static void
 vermiculate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->wid = w;
+  st->hei = h;
+  free (st->point);
+  st->point = (unsigned char *) calloc (1, st->wid * st->hei);
 }
 
 static Bool
index 6b8819a9ae0fb47d2654951694c70549e3994069..8fa8995ae043b9eec72b5473c8356b3c57b378c2 100644 (file)
@@ -210,6 +210,11 @@ static void
 wander_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width  = w / st->size;
+  st->height = h / st->size;
+  st->width_1  = st->width - 1;
+  st->height_1 = st->height - 1;
 }
 
 static Bool
index 47939ffef11de9484ff6ab2545347538eab872b3..566c4187fd87287080e7b0ad4b40d1846809cd05 100644 (file)
@@ -463,6 +463,9 @@ static void
 whirlwindwarp_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->scrwid = w;
+  st->scrhei = h;
 }
 
 static Bool
index cfc4f5a5e5a19b7f0fa8de159d1d144753bd0587..02587f00b37d12dd7d1ccac1f1b360e17b16f69d 100644 (file)
@@ -1237,7 +1237,6 @@ EndRubberBand(struct state *st, image_data_t *data, XEvent *event)
   data->p_min += diff * delta;
   delta = (double)(st->width - bot.x) / (double)st->width;
   data->p_max -= diff * delta;
-  fflush(stdout);
   set_new_params(st, data);
 }
 
index 9b9faef799d9b53658c5c9bbade18c6a6cb63def..f3b8184800ee07973e504d548b565e148eb867d0 100644 (file)
@@ -1196,6 +1196,12 @@ static void
 xrayswarm_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->xsize = w;
+  st->ysize = h;
+  st->xc = st->xsize >> 1;
+  st->yc = st->ysize >> 1;
+  st->maxy = st->ysize/(float)st->xsize;
 }
 
 static Bool
index 4b2ebc3ccf5a213df41b18da17ee362ea7678d34..735634f49bc9c9504ce2b74a96e44cddba39a6b5 100644 (file)
@@ -368,7 +368,8 @@ POTFILES: POTFILES.in
            && chmod a-w $@-t \
            && mv $@-t $@ )
 
-Makefile: stamp-it
+# jwz: depending on stamp-it breaks distclean.
+Makefile:
        @if test ! -f $@; then \
                rm -f stamp-it; \
                $(MAKE) stamp-it; \
index 2adfd34ebaeb1392dedcc11f2b2acaf17fe51204..7743e54c4abe04ea88cad4a7737c108396fefe2a 100644 (file)
@@ -1,4 +1,4 @@
-# Auto-generated: Sun May 20 16:02:50 PDT 2012
+# Auto-generated: Tue Jul  3 14:23:31 PDT 2012
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
index 95ce08a79d067d2e66b4548122ec3ed702f95d5f..f6cc10b7d4bc8081604341598bfb4e5971321f2f 100644 (file)
@@ -249,6 +249,7 @@ grabclient.o: $(srcdir)/grabscreen.h
 grabclient.o: $(srcdir)/resources.h
 grabclient.o: $(srcdir)/utils.h
 grabclient.o: $(srcdir)/vroot.h
+grabclient.o: $(srcdir)/yarandom.h
 grabscreen.o: $(srcdir)/colors.h
 grabscreen.o: ../config.h
 grabscreen.o: $(srcdir)/grabscreen.h
index a0a19f34dbf53286dbbcd8d77d2b8490b5468e8b..58d506efd888ac9a3b7c7a06fdbd91aacad72ab5 100644 (file)
@@ -21,6 +21,7 @@
 #include "utils.h"
 #include "grabscreen.h"
 #include "resources.h"
+#include "yarandom.h"
 
 #ifdef HAVE_COCOA
 # include "jwxyz.h"
@@ -511,6 +512,21 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
 
 #else  /* HAVE_COCOA */
 
+struct pipe_closure {
+  FILE *pipe;
+  XtInputId id;
+  Screen *screen;
+  Window xwindow;
+  Drawable drawable;
+  char *directory;
+  void (*callback) (Screen *, Window, Drawable,
+                    const char *name, XRectangle *geom,
+                    void *closure);
+  void *closure;
+};
+
+# ifndef USE_IPHONE
+
 /* Gets the name of an image file to load by running xscreensaver-getimage-file
    at the end of a pipe.  This can be very slow!
  */
@@ -539,20 +555,6 @@ open_image_name_pipe (const char *dir)
 }
 
 
-struct pipe_closure {
-  FILE *pipe;
-  XtInputId id;
-  Screen *screen;
-  Window xwindow;
-  Drawable drawable;
-  char *directory;
-  void (*callback) (Screen *, Window, Drawable,
-                    const char *name, XRectangle *geom,
-                    void *closure);
-  void *closure;
-};
-
-
 static void
 pipe_cb (XtPointer closure, int *source, XtInputId *id)
 {
@@ -626,6 +628,51 @@ pipe_cb (XtPointer closure, int *source, XtInputId *id)
 }
 
 
+# else  /* USE_IPHONE */
+
+/* Callback for ios_load_random_image(), called after we have loaded an
+   image from the iOS device's Photo Library.  See iosgrabimage.m.
+ */
+static void
+ios_load_random_image_cb (void *uiimage, const char *filename, void *closure)
+{
+  struct pipe_closure *clo2 = (struct pipe_closure *) closure;
+  Display *dpy = DisplayOfScreen (clo2->screen);
+  XRectangle geom;
+
+  if (uiimage)
+    {
+      jwxyz_draw_NSImage_or_CGImage (DisplayOfScreen (clo2->screen), 
+                                     clo2->drawable,
+                                     True, uiimage, &geom,
+                                     0);
+    }
+  else  /* Probably means no images in the gallery. */
+    {
+      XWindowAttributes xgwa;
+      Window r;
+      int x, y;
+      unsigned int w, h, bbw, d;
+      XGetWindowAttributes (dpy, clo2->xwindow, &xgwa);
+      XGetGeometry (dpy, clo2->drawable, &r, &x, &y, &w, &h, &bbw, &d);
+      draw_colorbars (clo2->screen, xgwa.visual, clo2->drawable, xgwa.colormap,
+                      0, 0, w, h);
+      geom.x = geom.y = 0;
+      geom.width = w;
+      geom.height = h;
+      filename = 0;
+    }
+
+  clo2->callback (clo2->screen, clo2->xwindow, clo2->drawable,
+                  filename, &geom, clo2->closure);
+  clo2->callback = 0;
+  if (clo2->directory) free (clo2->directory);
+  free (clo2);
+}
+
+# endif /* USE_IPHONE */
+
+
 static void
 osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
                            const char *dir,
@@ -635,7 +682,7 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
                                              void *closure),
                        void *closure)
 {
-#if 0  /* do it synchronously */
+# if 0 /* do it synchronously */
 
   FILE *pipe = open_image_name_pipe (dir);
   char buf[10240];
@@ -655,22 +702,29 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
   }
   callback (screen, xwindow, drawable, buf, &geom, closure);
 
-#else  /* do it asynchronously */
+# else /* do it asynchronously */
 
-  Display *dpy = DisplayOfScreen (screen);
   struct pipe_closure *clo2 = (struct pipe_closure *) calloc (1, sizeof(*clo2));
-  clo2->directory = strdup (dir);
-  clo2->pipe = open_image_name_pipe (dir);
-  clo2->id = XtAppAddInput (XtDisplayToApplicationContext (dpy), 
-                            fileno (clo2->pipe),
-                            (XtPointer) (XtInputReadMask | XtInputExceptMask),
-                            pipe_cb, (XtPointer) clo2);
+
   clo2->screen = screen;
   clo2->xwindow = xwindow;
   clo2->drawable = drawable;
   clo2->callback = callback;
   clo2->closure = closure;
-#endif
+
+#  ifndef USE_IPHONE
+  clo2->directory = strdup (dir);
+  clo2->pipe = open_image_name_pipe (dir);
+  clo2->id = XtAppAddInput (XtDisplayToApplicationContext (
+                              DisplayOfScreen (screen)), 
+                            fileno (clo2->pipe),
+                            (XtPointer) (XtInputReadMask | XtInputExceptMask),
+                            pipe_cb, (XtPointer) clo2);
+#  else /* USE_IPHONE */
+  ios_load_random_image (ios_load_random_image_cb, clo2);
+#  endif /* USE_IPHONE */
+
+# endif
 }
 
 
@@ -694,14 +748,6 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
   XRectangle geom_ret_2;
   char *name_ret_2 = 0;
   
-# ifdef USE_IPHONE
-  /* Currently, only screen-grabbing is implemented, not loading of
-     images from the iPhone Photo Library.  See osxgrabscreen.m.
-   */
-  deskp = True;
-  filep = False;
-# endif
-
   if (!drawable) abort();
 
   if (callback) {
@@ -729,11 +775,13 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
     geom_ret->height = xgwa.height;
   }
 
+# ifndef USE_IPHONE
   if (filep)
     dir = get_string_resource (dpy, "imageDirectory", "ImageDirectory");
 
   if (!dir || !*dir)
     filep = False;
+# endif /* ! USE_IPHONE */
 
   if (deskp && filep) {
     deskp = !(random() & 5);    /* if both, desktop 1/5th of the time */
index 97c46a77ca309b216df0fbb0f9f1880c9e7d4760..65e53412d428cc34f8405b1c006d82338dce5e62 100644 (file)
@@ -92,4 +92,11 @@ extern Bool osx_load_image_file (Screen *, Window, Drawable,
                                  const char *filename, XRectangle *geom_ret);
 #endif /* HAVE_COCOA */
 
+#ifdef USE_IPHONE
+extern void ios_load_random_image (void (*callback) (void *uiimage,
+                                                     const char *filename,
+                                                     void *closure),
+                                   void *closure);
+#endif /* USE_IPHONE */
+
 #endif /* __GRABSCREEN_H__ */
index f00788c9aac91cab4e4d51a429bc903ebedb08c0..ea951e2a764ea40c6e3548490b6566abdfa79a70 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
-       "@(#)xscreensaver 5.17 (22-Jun-2012), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 5.18 (03-Jul-2012), by Jamie Zawinski (jwz@jwz.org)";
index 920a05cd5af78501657d3f053c97f344eda70f36..bf8bb5623dd6e800f4eb2e6fa2b2ac8b73a9439b 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
-%define        version 5.17
+%define        version 5.18
 
 Summary:       X screen saver and locker
 Name:          %{name}
index a167009fb91b9ca7b77d7d1dcddff1b0c7f6b9b5..bd824ab895f0502b55c9a5d13877ac553ce8e1a5 100644 (file)
                AF0FAF2709CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2809CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2909CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
+               AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */; };
                AF1A17660D6D6EE3008AF328 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF1A17680D6D6EE3008AF328 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF1A177F0D6D6F3E008AF328 /* lcdscrub.c in Sources */ = {isa = PBXBuildFile; fileRef = AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */; };
                AF35E8900E63823600691F2F /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF35EB240E63829600691F2F /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; };
                AF35EB260E6382BA00691F2F /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; };
+               AF39483E15A164680000FFCD /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; };
                AF3C714B0D624BF50030CC0D /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF3C715E0D624C600030CC0D /* hypnowheel.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3C715D0D624C600030CC0D /* hypnowheel.c */; };
                AF3C71600D624C7C0030CC0D /* hypnowheel.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF3C715F0D624C7C0030CC0D /* hypnowheel.xml */; };
                AF51FD4115845FFC00E5741F /* iSaverRunner72.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */; };
                AF51FD4215845FFF00E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
                AF51FD431584600300E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
+               AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */ = {isa = PBXBuildFile; fileRef = AF561DF515969BC3007CA5ED /* iosgrabimage.m */; };
+               AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */; };
                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; };
                AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; };
                AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; };
                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC7592F158D9A7A00C5458E /* iostextclient.m */; };
                AFCCCBB009BFE4B000353F4D /* rdbomb.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */; };
                AFCCCBB309BFE51900353F4D /* thornbird.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC259230988A469000655EE /* thornbird.xml */; };
+               AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */ = {isa = PBXBuildFile; fileRef = AF77787609B653DC00EA3033 /* dnalogo.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF77787909B6545E00EA3033 /* dnalogo.xml */; };
+               AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B209937DCB00F3E977 /* polyhedra-gl.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B309937DCC00F3E977 /* polyhedra.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258F70988A469000655EE /* polyhedra.xml */; };
                AFCFF1D90CE4517C00C7D111 /* involute.c in Sources */ = {isa = PBXBuildFile; fileRef = AFE6A16A0CDD78EA002805BF /* involute.c */; };
                AFCFF1DA0CE4518B00C7D111 /* tube.c in Sources */ = {isa = PBXBuildFile; fileRef = AF480ED2098F652A00FB32B8 /* tube.c */; };
                AFCFF1DB0CE451A300C7D111 /* normals.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA55A93099336D800F3E977 /* normals.c */; };
                AF0F46DC104E1809000A929C /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
                AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-text"; path = "driver/xscreensaver-text"; sourceTree = "<group>"; };
                AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-getimage-file"; path = "driver/xscreensaver-getimage-file"; sourceTree = "<group>"; };
+               AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; };
                AF14EE300E3CEF1A004CBBD2 /* XScreenSaver.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = XScreenSaver.icns; path = OSX/XScreenSaver.icns; sourceTree = "<group>"; };
                AF1A17730D6D6EE3008AF328 /* XScreenSaver.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = XScreenSaver.saver; path = LCDscrub.saver; sourceTree = BUILT_PRODUCTS_DIR; };
                AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = lcdscrub.c; path = hacks/lcdscrub.c; sourceTree = "<group>"; };
                AF4FF4D00D52CC8400666F98 /* cubicgrid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cubicgrid.c; path = hacks/glx/cubicgrid.c; sourceTree = "<group>"; };
                AF4FF4D30D52CCAA00666F98 /* cubicgrid.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cubicgrid.xml; sourceTree = "<group>"; };
                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iSaverRunner.xib; path = OSX/iSaverRunner.xib; sourceTree = "<group>"; };
+               AF561DF3159651A7007CA5ED /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
+               AF561DF515969BC3007CA5ED /* iosgrabimage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iosgrabimage.m; path = OSX/iosgrabimage.m; sourceTree = "<group>"; };
+               AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; };
                AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = hacks/glx/jwzgles.c; sourceTree = "<group>"; };
                AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = hacks/glx/jwzgles.h; sourceTree = "<group>"; };
                AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = hacks/glx/jwzglesI.h; sourceTree = "<group>"; };
                                AF918B96158FD0EA002B5D1E /* libjwxyz.a in Frameworks */,
                                AFEB9C3B1590054B003974F3 /* OpenGLES.framework in Frameworks */,
                                AFEB9C3915900514003974F3 /* UIKit.framework in Frameworks */,
+                               AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */,
                                AFEB9C3D15900558003974F3 /* Foundation.framework in Frameworks */,
                                AFEB9C401590056A003974F3 /* CoreGraphics.framework in Frameworks */,
+                               AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */,
                                AFEB9C411590056A003974F3 /* QuartzCore.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                080E96DDFE201D6D7F000001 /* libjwxyz */ = {
                        isa = PBXGroup;
                        children = (
+                               AF561DF515969BC3007CA5ED /* iosgrabimage.m */,
                                AFC7592F158D9A7A00C5458E /* iostextclient.m */,
                                AFE1FD410981E32E00F7970E /* InvertedSlider.h */,
                                AFE1FD420981E32E00F7970E /* InvertedSlider.m */,
                29B97314FDCFA39411CA2CEA /* xscreensaver */ = {
                        isa = PBXGroup;
                        children = (
-                               AF7E080315932A1600D81407 /* iSaverRunner29t.png */,
                                AF480AB9098C66E200FB32B8 /* SaverRunner */,
                                080E96DDFE201D6D7F000001 /* libjwxyz */,
                                AFE1FD520981E35400F7970E /* Utils */,
                                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */,
                                AF2D522513E954A0002AA818 /* SaverRunner.icns */,
                                AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */,
+                               AF7E080315932A1600D81407 /* iSaverRunner29t.png */,
                                AF01295B157D5C2C00C396E1 /* iSaverRunner50.png */,
                                AF01295C157D5C2C00C396E1 /* iSaverRunner57.png */,
                                AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */,
                                AFEB9C3815900514003974F3 /* UIKit.framework */,
                                AF0F46DC104E1809000A929C /* AppKit.framework */,
                                AF976ED30989BF59001F8B92 /* ScreenSaver.framework */,
+                               AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */,
+                               AF561DF3159651A7007CA5ED /* AudioToolbox.framework */,
+                               AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */,
                                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
                                AF480DF1098F528500FB32B8 /* OpenGL.framework */,
                                AF480FE70990375900FB32B8 /* AGL.framework */,
                        buildActionMask = 2147483647;
                        files = (
                                AF91897E158FC00A002B5D1E /* iSaverRunner29.png in Resources */,
+                               AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */,
                                AF91897F158FC00A002B5D1E /* iSaverRunner50.png in Resources */,
                                AF918980158FC00A002B5D1E /* iSaverRunner57.png in Resources */,
                                AF918981158FC00A002B5D1E /* iSaverRunner72.png in Resources */,
                                AF918AE5158FC53D002B5D1E /* demon.xml in Resources */,
                                AF918AE6158FC53D002B5D1E /* discrete.xml in Resources */,
                                AF918AE7158FC53D002B5D1E /* distort.xml in Resources */,
+                               AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */,
                                AF918AE9158FC53D002B5D1E /* drift.xml in Resources */,
                                AF918AEA158FC53D002B5D1E /* endgame.xml in Resources */,
                                AF918AEB158FC53D002B5D1E /* engine.xml in Resources */,
                                AF918B1D158FC53D002B5D1E /* interference.xml in Resources */,
                                AF918B1E158FC53D002B5D1E /* intermomentary.xml in Resources */,
                                AF918B1F158FC53D002B5D1E /* jigglypuff.xml in Resources */,
+                               AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */,
                                AF918B22158FC53D002B5D1E /* juggler3d.xml in Resources */,
                                AF918B23158FC53D002B5D1E /* julia.xml in Resources */,
                                AF918B24158FC53D002B5D1E /* kaleidescope.xml in Resources */,
                                AF918B4A158FC53E002B5D1E /* piecewise.xml in Resources */,
                                AF918B4B158FC53E002B5D1E /* pinion.xml in Resources */,
                                AF918B4C158FC53E002B5D1E /* pipes.xml in Resources */,
+                               AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */,
                                AF918B4E158FC53E002B5D1E /* polyominoes.xml in Resources */,
                                AF918B4F158FC53E002B5D1E /* polytopes.xml in Resources */,
                                AF918B50158FC53E002B5D1E /* pong.xml in Resources */,
                                AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */,
                                AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */,
                                AF918B91158FC554002B5D1E /* zoom.xml in Resources */,
-                               AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */,
                                AFC7592D158D8E8B00C5458E /* textclient.c in Sources */,
                                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */,
+                               AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                AF918A44158FC3BB002B5D1E /* cubestorm.c in Sources */,
                                AF918A45158FC3BB002B5D1E /* cubicgrid.c in Sources */,
                                AF918A46158FC3BB002B5D1E /* dangerball.c in Sources */,
+                               AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */,
                                AF918A48158FC3BB002B5D1E /* dolphin.c in Sources */,
                                AF918A49158FC3BB002B5D1E /* dropshadow.c in Sources */,
                                AF918A4A158FC3E5002B5D1E /* endgame.c in Sources */,
                                AF918A6C158FC3E5002B5D1E /* hypnowheel.c in Sources */,
                                AF918A6D158FC3E5002B5D1E /* involute.c in Sources */,
                                AF918A6E158FC417002B5D1E /* jigglypuff.c in Sources */,
+                               AF39483E15A164680000FFCD /* jigsaw.c in Sources */,
                                AF918A6F158FC417002B5D1E /* juggler3d.c in Sources */,
                                AF918A70158FC417002B5D1E /* klein.c in Sources */,
                                AF918A71158FC417002B5D1E /* lament.c in Sources */,
                                AF918A7D158FC417002B5D1E /* pinion.c in Sources */,
                                AF918A7E158FC417002B5D1E /* pipeobjs.c in Sources */,
                                AF918A7F158FC417002B5D1E /* pipes.c in Sources */,
+                               AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */,
+                               AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */,
                                AF918A82158FC417002B5D1E /* polytopes.c in Sources */,
                                AF918A83158FC417002B5D1E /* providence.c in Sources */,
                                AF918A84158FC417002B5D1E /* pulsar.c in Sources */,
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
+                               SKIP_INSTALL = YES;
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
+                               SKIP_INSTALL = YES;
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
-                               IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.2;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "";
                                SDKROOT = iphoneos;
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
-                               IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.2;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "6713E214-60AD-43CF-AFD3-825AEB87AA75";
                                SDKROOT = iphoneos;
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
+                                       "HAVE_GETIFADDRS=1",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
+                                       "HAVE_GETIFADDRS=1",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",