The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
# -*- perl -*-
#
#     Test script for Astro::Sunrise
#     Copyright (C) 2015 Ron Hill and Jean Forget
#
#     This program is distributed under the same terms as Perl 5.16.3:
#     GNU Public License version 1 or later and Perl Artistic License
#
#     You can find the text of the licenses in the F<LICENSE> file or at
#     L<http://www.perlfoundation.org/artistic_license_1_0>
#     and L<http://www.gnu.org/licenses/gpl-1.0.html>.
#
#     Here is the summary of GPL:
#
#     This program is free software; you can redistribute it and/or modify
#     it under the terms of the GNU General Public License as published by
#     the Free Software Foundation; either version 1, or (at your option)
#     any later version.
#
#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU General Public License for more details.
#
#     You should have received a copy of the GNU General Public License
#     along with this program; if not, write to the Free Software Foundation,
#     Inc., <http://www.fsf.org/>.
#

use strict;
use warnings;
use POSIX qw(floor ceil);
use Test::More;
use Astro::Sunrise;

my $check_warn;

BEGIN {
  $check_warn = 1;
  eval "use Test::Warn";
  $check_warn = 0
    if $@;
}

my @tests = load_data();
my ($long, $lat, $offset);
my $fudge = 1; # in minutes

plan tests => (2 + $check_warn) * scalar @tests;

for (@tests) {
  my ($yyyy, $mm, $dd, $loc, $lat_d, $lat_m, $lat_x, $lon_d, $lon_m, $lon_x, $alt, $upper_limb, $polar_night, $day_and_night, $polar_day, $expect_r, $expect_s)
     = $_ =~ /(\d+)\s+(\d+)\s+(\d+)     # date in YYYY MM DD format $1 $2 $3
	     \s+(\w+)                   # location $4
	     \s+(\d+)\s+(\d+)\s+(\w)    # latitude $5 $6 $7
	     \s+(\d+)\s+(\d+)\s+(\w)    # longitude $8 $9 $10
	     \s+(\S+)                   # altitude $11
	     \s+(\d)                    # upper limb $12
	     \s+(\d)\s+(\d)\s+(\d)      # polar night $13, day and night $14, polar day $15
	     \s+sunrise:\s+([-\d]+:\d+) # sunrise $16
	     \s+sunset:\s+(\d+:\d+)/x;  # sunset $17
  if ( $lat_x eq 'N' ) {
    $lat = sprintf( "%.3f", ( $lat_d + ( $lat_m / 60 ) ) );
  }
  elsif ( $lat_x eq 'S' ) {
    $lat = sprintf( "%.3f", -( $lat_d + ( $lat_m / 60 ) ) );
  }

  if ( $lon_x eq 'E' ) {
    $long = sprintf( "%.3f", $lon_d + ( $lon_m / 60 ) );
  }
  elsif ( $lon_x eq 'W' ) {
    $long = sprintf( "%.3f", -( $lon_d + ( $lon_m / 60 ) ) );
  }

  if ($long < 0) {
    $offset = ceil( $long / 15 );
  }
  elsif ($long > 0) {
    $offset = floor( $long /15 );
  }
  else {
    $offset = 0;
  }
  if ($check_warn) {
    if ($polar_night) {
      warning_like { sunrise ( { year => $yyyy, month => $mm, day => $dd, tz => 0,
				 lon => $long, lat => $lat, alt => $alt, upper_limb => $upper_limb, } ); }
		   qr/sun never rises!!/i,
		   "Polar night at $loc on $yyyy-$mm-$dd";
    }
    if ($day_and_night) {
      warning_is { sunrise ( { year => $yyyy, month => $mm, day => $dd, tz => 0,
			       lon => $long, lat => $lat, alt => $alt, upper_limb => $upper_limb, } ); }
		 undef, # which means "no warning"
		 "Day and night at $loc on $yyyy-$mm-$dd";
    }
    if ($polar_day) {
      warning_like { sunrise ( { year => $yyyy, month => $mm, day => $dd, tz => 0,
				 lon => $long, lat => $lat, alt => $alt, upper_limb => $upper_limb, } ); }
		   qr/sun never sets!!/i,
		   "Polar day at $loc on $yyyy-$mm-$dd";
    }
  }
  my ($sunrise, $sunset)  = sunrise ( { year => $yyyy, month => $mm, day => $dd, tz => 0,
				 lon => $long, lat => $lat, alt => $alt, upper_limb => $upper_limb, polar => 'retval', } );
  if ($polar_night) {
    is ($sunrise, 'night', "Polar night at $loc on $yyyy-$mm-$dd");
    is ($sunset , 'night', "Polar night at $loc on $yyyy-$mm-$dd");
  }
  if ($day_and_night) {
    my $exp_h = fudge_h($expect_r, $fudge);
    my $exp_l = fudge_l($expect_r, $fudge);
    ok ($sunrise ge $exp_l && $sunrise le $exp_h
         , "Sunrise for $loc $yyyy-$mm-$dd  $alt $upper_limb $exp_l $sunrise $exp_h");
    $exp_h = fudge_h($expect_s, $fudge);
    $exp_l = fudge_l($expect_s, $fudge);
    ok ($sunset ge $exp_l && $sunset le $exp_h
         , "Sunset  for $loc $yyyy-$mm-$dd  $alt $upper_limb $exp_l $sunset $exp_h");
  }
  if ($polar_day) {
    is ($sunrise, 'day', "Polar day at $loc on $yyyy-$mm-$dd");
    is ($sunset , 'day', "Polar day at $loc on $yyyy-$mm-$dd");
  }
}

sub fudge_h {
  my ($exp, $fudge) = @_;
  my ($hh, $mn) = $exp =~ /^(\d\d):(\d\d)$/;
  $mn += $fudge;
  if ($mn > 59) {
    $hh ++;
    $mn -= 60;
  }
  if ($hh > 23) {
    $hh -= 24;
  }
  elsif ($hh < 0) {
    $hh += 24;
  }
  return sprintf("%02d:%02d", $hh, $mn);
}

sub fudge_l {
  my ($exp, $fudge) = @_;
  my ($hh, $mn) = $exp =~ /^(\d\d):(\d\d)$/;
  $mn -= $fudge;
  if ($mn < 0) {
    $hh --;
    $mn += 60;
  }
  if ($hh > 23) {
    $hh -= 24;
  }
  elsif ($hh < 0) {
    $hh += 24;
  }
  return sprintf("%02d:%02d", $hh, $mn);
}

sub load_data {
    return split "\n", <<'EOD';
2013  1  1 North_Pole           89 59 N   0  0 E 0          0 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E 0          1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -0.583     0 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -0.583     1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -0.833     0 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -0.833     1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -12        0 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -12        1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -18        0 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 North_Pole           89 59 N   0  0 E -18        1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  3 21 North_Pole           89 59 N   0  0 E 0          0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E 0          1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -0.583     0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -0.583     1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -0.833     0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -0.833     1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -12        0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -12        1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -18        0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 North_Pole           89 59 N   0  0 E -18        1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  6 21 North_Pole           89 59 N   0  0 E 0          0 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E 0          1 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -0.583     0 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -0.583     1 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -0.833     0 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -0.833     1 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -12        0 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -12        1 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -18        0 0 0 1 sunrise: 00:01 sunset: 24:01
2013  6 21 North_Pole           89 59 N   0  0 E -18        1 0 0 1 sunrise: 00:01 sunset: 24:01
2013  8 31 North_Pole           89 59 N   0  0 E 0          0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E 0          1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -0.583     0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -0.583     1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -0.833     0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -0.833     1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -12        0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -12        1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -18        0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 North_Pole           89 59 N   0  0 E -18        1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  9 21 North_Pole           89 59 N   0  0 E 0          0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E 0          1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -0.583     0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -0.583     1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -0.833     0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -0.833     1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -12        0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -12        1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -18        0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 North_Pole           89 59 N   0  0 E -18        1 0 0 1 sunrise: -1:53 sunset: 23:53
2013 12 31 North_Pole           89 59 N   0  0 E 0          0 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E 0          1 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -0.583     0 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -0.583     1 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -0.833     0 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -0.833     1 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -12        0 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -12        1 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -18        0 1 0 0 sunrise: 12:03 sunset: 12:03
2013 12 31 North_Pole           89 59 N   0  0 E -18        1 1 0 0 sunrise: 12:03 sunset: 12:03
2013  1  1 Halley_Base          75 35 S  26 39 W 0          0 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W 0          1 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -0.583     0 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -0.583     1 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -0.833     0 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -0.833     1 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -12        0 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -12        1 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -18        0 0 0 1 sunrise: 01:50 sunset: 25:50
2013  1  1 Halley_Base          75 35 S  26 39 W -18        1 0 0 1 sunrise: 01:50 sunset: 25:50
2013  3 21 Halley_Base          75 35 S  26 39 W 0          0 0 1 0 sunrise: 08:00 sunset: 19:46
2013  3 21 Halley_Base          75 35 S  26 39 W 0          1 0 1 0 sunrise: 07:56 sunset: 19:51
2013  3 21 Halley_Base          75 35 S  26 39 W -0.583     0 0 1 0 sunrise: 07:51 sunset: 19:56
2013  3 21 Halley_Base          75 35 S  26 39 W -0.583     1 0 1 0 sunrise: 07:46 sunset: 20:00
2013  3 21 Halley_Base          75 35 S  26 39 W -0.833     0 0 1 0 sunrise: 07:47 sunset: 20:00
2013  3 21 Halley_Base          75 35 S  26 39 W -0.833     1 0 1 0 sunrise: 07:42 sunset: 20:04
2013  3 21 Halley_Base          75 35 S  26 39 W -12        0 0 1 0 sunrise: 04:19 sunset: 23:28
2013  3 21 Halley_Base          75 35 S  26 39 W -12        1 0 1 0 sunrise: 04:11 sunset: 23:35
2013  3 21 Halley_Base          75 35 S  26 39 W -18        0 0 0 1 sunrise: 01:53 sunset: 25:53
2013  3 21 Halley_Base          75 35 S  26 39 W -18        1 0 0 1 sunrise: 01:53 sunset: 25:53
2013  6 21 Halley_Base          75 35 S  26 39 W 0          0 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W 0          1 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W -0.583     0 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W -0.583     1 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W -0.833     0 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W -0.833     1 1 0 0 sunrise: 13:48 sunset: 13:48
2013  6 21 Halley_Base          75 35 S  26 39 W -12        0 0 1 0 sunrise: 11:12 sunset: 16:24
2013  6 21 Halley_Base          75 35 S  26 39 W -12        1 0 1 0 sunrise: 11:05 sunset: 16:31
2013  6 21 Halley_Base          75 35 S  26 39 W -18        0 0 1 0 sunrise: 09:06 sunset: 18:30
2013  6 21 Halley_Base          75 35 S  26 39 W -18        1 0 1 0 sunrise: 09:01 sunset: 18:35
2013  8 31 Halley_Base          75 35 S  26 39 W 0          0 0 1 0 sunrise: 10:08 sunset: 17:25
2013  8 31 Halley_Base          75 35 S  26 39 W 0          1 0 1 0 sunrise: 10:02 sunset: 17:30
2013  8 31 Halley_Base          75 35 S  26 39 W -0.583     0 0 1 0 sunrise: 09:56 sunset: 17:37
2013  8 31 Halley_Base          75 35 S  26 39 W -0.583     1 0 1 0 sunrise: 09:51 sunset: 17:42
2013  8 31 Halley_Base          75 35 S  26 39 W -0.833     0 0 1 0 sunrise: 09:51 sunset: 17:41
2013  8 31 Halley_Base          75 35 S  26 39 W -0.833     1 0 1 0 sunrise: 09:46 sunset: 17:46
2013  8 31 Halley_Base          75 35 S  26 39 W -12        0 0 1 0 sunrise: 06:45 sunset: 20:48
2013  8 31 Halley_Base          75 35 S  26 39 W -12        1 0 1 0 sunrise: 06:40 sunset: 20:53
2013  8 31 Halley_Base          75 35 S  26 39 W -18        0 0 1 0 sunrise: 04:56 sunset: 22:37
2013  8 31 Halley_Base          75 35 S  26 39 W -18        1 0 1 0 sunrise: 04:50 sunset: 22:42
2013  9 21 Halley_Base          75 35 S  26 39 W 0          0 0 1 0 sunrise: 07:47 sunset: 19:31
2013  9 21 Halley_Base          75 35 S  26 39 W 0          1 0 1 0 sunrise: 07:43 sunset: 19:36
2013  9 21 Halley_Base          75 35 S  26 39 W -0.583     0 0 1 0 sunrise: 07:37 sunset: 19:41
2013  9 21 Halley_Base          75 35 S  26 39 W -0.583     1 0 1 0 sunrise: 07:33 sunset: 19:45
2013  9 21 Halley_Base          75 35 S  26 39 W -0.833     0 0 1 0 sunrise: 07:33 sunset: 19:45
2013  9 21 Halley_Base          75 35 S  26 39 W -0.833     1 0 1 0 sunrise: 07:29 sunset: 19:49
2013  9 21 Halley_Base          75 35 S  26 39 W -12        0 0 1 0 sunrise: 04:06 sunset: 23:12
2013  9 21 Halley_Base          75 35 S  26 39 W -12        1 0 1 0 sunrise: 03:59 sunset: 23:19
2013  9 21 Halley_Base          75 35 S  26 39 W -18        0 0 0 1 sunrise: 01:39 sunset: 25:39
2013  9 21 Halley_Base          75 35 S  26 39 W -18        1 0 0 1 sunrise: 01:39 sunset: 25:39
2013 12 31 Halley_Base          75 35 S  26 39 W 0          0 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W 0          1 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -0.583     0 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -0.583     1 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -0.833     0 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -0.833     1 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -12        0 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -12        1 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -18        0 0 0 1 sunrise: 01:49 sunset: 25:49
2013 12 31 Halley_Base          75 35 S  26 39 W -18        1 0 0 1 sunrise: 01:49 sunset: 25:49
2013  1  1 South_Pole           89 59 S   0  0 W 0          0 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W 0          1 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -0.583     0 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -0.583     1 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -0.833     0 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -0.833     1 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -12        0 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -12        1 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -18        0 0 0 1 sunrise: 00:03 sunset: 24:03
2013  1  1 South_Pole           89 59 S   0  0 W -18        1 0 0 1 sunrise: 00:03 sunset: 24:03
2013  3 21 South_Pole           89 59 S   0  0 W 0          0 1 0 0 sunrise: 12:07 sunset: 12:07
2013  3 21 South_Pole           89 59 S   0  0 W 0          1 1 0 0 sunrise: 12:07 sunset: 12:07
2013  3 21 South_Pole           89 59 S   0  0 W -0.583     0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -0.583     1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -0.833     0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -0.833     1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -12        0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -12        1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -18        0 0 0 1 sunrise: 00:07 sunset: 24:07
2013  3 21 South_Pole           89 59 S   0  0 W -18        1 0 0 1 sunrise: 00:07 sunset: 24:07
2013  6 21 South_Pole           89 59 S   0  0 W 0          0 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W 0          1 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -0.583     0 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -0.583     1 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -0.833     0 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -0.833     1 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -12        0 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -12        1 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -18        0 1 0 0 sunrise: 12:01 sunset: 12:01
2013  6 21 South_Pole           89 59 S   0  0 W -18        1 1 0 0 sunrise: 12:01 sunset: 12:01
2013  8 31 South_Pole           89 59 S   0  0 W 0          0 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W 0          1 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W -0.583     0 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W -0.583     1 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W -0.833     0 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W -0.833     1 1 0 0 sunrise: 12:00 sunset: 12:00
2013  8 31 South_Pole           89 59 S   0  0 W -12        0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 South_Pole           89 59 S   0  0 W -12        1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 South_Pole           89 59 S   0  0 W -18        0 0 0 1 sunrise: 00:00 sunset: 24:00
2013  8 31 South_Pole           89 59 S   0  0 W -18        1 0 0 1 sunrise: 00:00 sunset: 24:00
2013  9 21 South_Pole           89 59 S   0  0 W 0          0 1 0 0 sunrise: 11:53 sunset: 11:53
2013  9 21 South_Pole           89 59 S   0  0 W 0          1 1 0 0 sunrise: 11:53 sunset: 11:53
2013  9 21 South_Pole           89 59 S   0  0 W -0.583     0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -0.583     1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -0.833     0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -0.833     1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -12        0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -12        1 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -18        0 0 0 1 sunrise: -1:53 sunset: 23:53
2013  9 21 South_Pole           89 59 S   0  0 W -18        1 0 0 1 sunrise: -1:53 sunset: 23:53
2013 12 31 South_Pole           89 59 S   0  0 W 0          0 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W 0          1 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -0.583     0 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -0.583     1 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -0.833     0 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -0.833     1 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -12        0 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -12        1 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -18        0 0 0 1 sunrise: 00:03 sunset: 24:03
2013 12 31 South_Pole           89 59 S   0  0 W -18        1 0 0 1 sunrise: 00:03 sunset: 24:03
EOD
}