coherent modem C and Octave code giving the same results with AWGN noise at rate Rs.
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 16 Mar 2015 23:18:36 +0000 (23:18 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 16 Mar 2015 23:18:36 +0000 (23:18 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2078 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/cohpsk.m
codec2-dev/octave/tcohpsk.m
codec2-dev/octave/test_cohpsk.m
codec2-dev/src/cohpsk.c
codec2-dev/unittest/noise_samples.h [new file with mode: 0644]
codec2-dev/unittest/tcohpsk.c

index 9b06292bff4178451af26cc4123f835d90298372..f553ec67e89fd20d9c278c30191c57c77ac58797 100644 (file)
@@ -618,7 +618,7 @@ function sim_out = ber_test(sim_in)
 
             s_ch = s_ch + noise;
             
-            [rx_symb rx_bits rx_symb_linear amp_linear amp_ phi_ EsNo_ prev_sym_rx sim_in] = symbol_rate_rx(sim_in, s_ch, prev_sym_rx);                                 
+            [rx_symb rx_bits rx_symb_linear amp_linear amp_ phi_ EsNo_ prev_sym_rx sim_in] = qpsk_symbols_to_bits(sim_in, s_ch, prev_sym_rx);                                 
 
             phi_log = [phi_log; phi_];
             amp_log = [amp_log; amp_];
@@ -662,8 +662,8 @@ function sim_out = ber_test(sim_in)
             if verbose 
               av_tx_pwr = (s_ch_tx_log * s_ch_tx_log')/length(s_ch_tx_log);
 
-              printf("EsNo est (dB): %3.1f Terrs: %d BER %4.2f QPSK BER theory %4.2f av_tx_pwr: %3.2f",
-                       mean(10*log10(EsNo__log)), Terrs,
+              printf("EsNo est (dB): %3.1f Terrs: %d Tbits: %d BER %4.2f QPSK BER theory %4.2f av_tx_pwr: %3.2f",
+                       mean(10*log10(EsNo__log)), Terrs, Tbits,
                        Terrs/Tbits, 0.5*erfc(sqrt(EsNo/2)), av_tx_pwr);
               if ldpc_code
                   printf("\n LDPC: Terrs: %d BER: %4.2f Ferrs: %d FER: %4.2f", 
@@ -738,6 +738,7 @@ function sim_out = ber_test(sim_in)
           hold off;
         end
         ylabel('Phase (rads)');
+        legend('boxoff');
 
         subplot(212)
         plot(phi_x, amp_log(:,2),'r+;Estimated HF channel amp;')
@@ -748,6 +749,7 @@ function sim_out = ber_test(sim_in)
         end
         ylabel('Amplitude');
         xlabel('Time (symbols)');
+        legend('boxoff');
 
         figure(4)
         clf
index d1e1f15ef5bfbc34728e79454dcec07eed915e28..9e9e9d45e6cd78a19ad383a21e556fb2a848b757 100644 (file)
@@ -5,6 +5,13 @@
 % script loads the output of unittest/tcohpsk.c and compares it to the
 % output of the reference versions of the same functions written in
 % Octave.
+%
+% Ideas:
+% [ ] EB/No v BER curves changing Np, freq offset etc
+%     + can do these pretty fast in C, if we jave the channel models
+%     [ ] better interpolation between two signals
+%     [ ] feedback to correct out freq offset est
+%     [ ] fading channel
 
 rand('state',1); 
 randn('state',1);
@@ -14,16 +21,20 @@ cohpsk;
 autotest;
 
 n = 2000;
-rames = 35;
+frames = 35;
 framesize = 160;
 foff = 1;
 
+EsNodB = 8;
+EsNo = 10^(EsNodB/10);
+variance = 1/EsNo;
+
 load ../build_linux/unittest/tcohpsk_out.txt
 
 sim_in = standard_init();
-sim_in.framesize = 160;
-sim_in.ldpc_code = 0;
-sim_in.ldpc_code_rate = 1;
+sim_in.framesize        = 160;
+sim_in.ldpc_code        = 0;
+sim_in.ldpc_code_rate   = 1;
 sim_in.Nc               = 4;
 sim_in.Rs               = 50;
 sim_in.Ns               = 4;
@@ -41,14 +52,19 @@ tx_bits_log = [];
 tx_symb_log = [];
 rx_amp_log = [];
 rx_phi_log = [];
+ch_symb_log = [];
 rx_symb_log = [];
 rx_bits_log = [];
+noise_log = [];
+nerr_log = [];
 
 phase = 1;
 freq = exp(j*2*pi*foff/sim_in.Rs);
 
 ch_symb = zeros(sim_in.Nsymbrowpilot, sim_in.Nc);
 
+Nerrs = Tbits = 0;
+
 for i=1:frames
   tx_bits = tx_bits_coh(ptx_bits_coh:ptx_bits_coh+framesize-1);
   ptx_bits_coh += framesize;
@@ -61,29 +77,82 @@ for i=1:frames
   [tx_symb tx_bits prev_tx_sym] = bits_to_qpsk_symbols(sim_in, tx_bits, [], []);
   tx_symb_log = [tx_symb_log; tx_symb];
 
+  noise = sqrt(variance*0.5)*(randn(sim_in.Nsymbrowpilot,sim_in.Nc) + j*randn(sim_in.Nsymbrowpilot,sim_in.Nc));
+  noise_log = [noise_log; noise];
+
   for r=1:sim_in.Nsymbrowpilot
     phase = phase*freq;
-    ch_symb(r,:) = tx_symb(r,:)*phase;  
+    ch_symb(r,:) = tx_symb(r,:)*phase + noise(r,:);  
   end
   phase = phase/abs(phase);
+  ch_symb_log = [ch_symb_log; ch_symb];
 
   [rx_symb rx_bits rx_symb_linear amp_linear amp_ phi_ EsNo_ prev_sym_rx sim_in] = qpsk_symbols_to_bits(sim_in, ch_symb, []);
   rx_symb_log = [rx_symb_log; rx_symb];
   rx_amp_log = [rx_amp_log; amp_];
   rx_phi_log = [rx_phi_log; phi_];
-  rx_bits_log = [rx_bits_log; rx_bits];
+  rx_bits_log = [rx_bits_log rx_bits];
+
+  % BER stats
+
+  if i > 2
+    error_positions = xor(prev_tx_bits, rx_bits);
+    Nerrs  += sum(error_positions);
+    nerr_log = [nerr_log sum(error_positions)];
+    Tbits += length(error_positions);
+  end
+  prev_tx_bits = tx_bits;
 end
 
 stem_sig_and_error(1, 111, tx_bits_log_c(1:n), tx_bits_log(1:n) - tx_bits_log_c(1:n), 'tx bits', [1 n -1.5 1.5])
 stem_sig_and_error(2, 211, real(tx_symb_log_c(1:n)), real(tx_symb_log(1:n) - tx_symb_log_c(1:n)), 'tx symb re', [1 n -1.5 1.5])
 stem_sig_and_error(2, 212, imag(tx_symb_log_c(1:n)), imag(tx_symb_log(1:n) - tx_symb_log_c(1:n)), 'tx symb im', [1 n -1.5 1.5])
-stem_sig_and_error(3, 211, rx_amp_log_c(1:n), rx_amp_log(1:n) - rx_amp_log_c(1:n), 'Amp Est', [1 n -1.5 1.5])
-stem_sig_and_error(3, 212, rx_phi_log_c(1:n), rx_phi_log(1:n) - rx_phi_log_c(1:n), 'Phase Est', [1 n -4 4])
-stem_sig_and_error(4, 211, real(rx_symb_log_c(1:n)), real(rx_symb_log(1:n) - rx_symb_log_c(1:n)), 'rx symb re', [1 n -1.5 1.5])
-stem_sig_and_error(4, 212, imag(rx_symb_log_c(1:n)), imag(rx_symb_log(1:n) - rx_symb_log_c(1:n)), 'rx symb im', [1 n -1.5 1.5])
+stem_sig_and_error(3, 211, real(ch_symb_log_c(1:n)), real(ch_symb_log(1:n) - ch_symb_log_c(1:n)), 'ch symb re', [1 n -1.5 1.5])
+stem_sig_and_error(3, 212, imag(ch_symb_log_c(1:n)), imag(ch_symb_log(1:n) - ch_symb_log_c(1:n)), 'ch symb im', [1 n -1.5 1.5])
+stem_sig_and_error(4, 211, rx_amp_log_c(1:n), rx_amp_log(1:n) - rx_amp_log_c(1:n), 'Amp Est', [1 n -1.5 1.5])
+stem_sig_and_error(4, 212, rx_phi_log_c(1:n), rx_phi_log(1:n) - rx_phi_log_c(1:n), 'Phase Est', [1 n -4 4])
+stem_sig_and_error(5, 211, real(rx_symb_log_c(1:n)), real(rx_symb_log(1:n) - rx_symb_log_c(1:n)), 'rx symb re', [1 n -1.5 1.5])
+stem_sig_and_error(5, 212, imag(rx_symb_log_c(1:n)), imag(rx_symb_log(1:n) - rx_symb_log_c(1:n)), 'rx symb im', [1 n -1.5 1.5])
+stem_sig_and_error(6, 111, rx_bits_log_c(1:n), rx_bits_log(1:n) - rx_bits_log_c(1:n), 'rx bits', [1 n -1.5 1.5])
 
 check(tx_bits_log, tx_bits_log_c, 'tx_bits');
 check(tx_symb_log, tx_symb_log_c, 'tx_symb');
 check(rx_amp_log, rx_amp_log_c, 'rx_amp_log');
 check(rx_phi_log, rx_phi_log_c, 'rx_phi_log');
 check(rx_symb_log, rx_symb_log_c, 'rx_symb');
+check(rx_bits_log, rx_bits_log_c, 'rx_bits');
+
+% Determine bit error rate
+
+sz = length(tx_bits_log_c);
+Nerrs_c = sum(xor(tx_bits_log_c(framesize+1:sz-framesize), rx_bits_log_c(2*framesize+1:sz)));
+Tbits_c = sz - 2*framesize;
+ber_c = Nerrs_c/Tbits_c;
+ber = Nerrs/Tbits;
+printf("EsNodB: %4.1f ber..: %3.2f Nerrs..: %d Tbits..: %d\n", EsNodB, ber, Nerrs, Tbits);
+printf("EsNodB: %4.1f ber_c: %3.2f Nerrs_c: %d Tbits_c: %d\n", EsNodB, ber_c, Nerrs_c, Tbits_c);
+% C header file of noise samples so C version gives extacly the same results
+
+function write_noise_file(noise_log)
+
+  [m n] = size(noise_log);
+
+  filename = sprintf("../unittest/noise_samples.h");
+  f=fopen(filename,"wt");
+  fprintf(f,"/* Generated by write_noise_file() Octave function */\n\n");
+  fprintf(f,"COMP noise[][PILOTS_NC]={\n");
+  for r=1:m
+    fprintf(f, "  {");
+    for c=1:n-1
+      fprintf(f, "  {%f,%f},", real(noise_log(r, c)), imag(noise_log(r, c)));
+    end
+    if r < m
+      fprintf(f, "  {%f,%f}},\n", real(noise_log(r, n)), imag(noise_log(r, n)));
+    else
+      fprintf(f, "  {%f,%f}}\n};", real(noise_log(r, n)), imag(noise_log(r, n)));
+    end
+  end
+
+  fclose(f);
+endfunction
index cc78c952954d218a915f785d39b114a3571ac273..9efca1397fb6ad243e8ecb97e8d8ee620dad7894 100644 (file)
@@ -105,8 +105,8 @@ function test_single
   sim_in.ldpc_code_rate   = 1;
   sim_in.ldpc_code        = 0;
 
-  sim_in.Ntrials          = 20;
-  sim_in.Esvec            = 100
+  sim_in.Ntrials          = 35;
+  sim_in.Esvec            = 8
   sim_in.hf_sim           = 0;
   sim_in.hf_mag_only      = 0;
   sim_in.modulation       = 'qpsk';
@@ -469,11 +469,13 @@ function rate_Fs_rx(rx_filename)
   subplot(211)
   plot(phi_x, phi_log(:,1),'r+;Estimated HF channel phase;')
   ylabel('Phase (rads)');
+  legend('boxoff');
 
   subplot(212)
   plot(phi_x, amp_log(:,1),'r+;Estimated HF channel amp;')
   ylabel('Amplitude');
   xlabel('Time (symbols)');
+  legend('boxoff');
 
   figure(6);
   clf
index 5bd4a92baa944f4a8e8b0b6fc0e2ed4a1286cfa4..467a21a34a3335eb1fcc92d7aea158fcd3eab200 100644 (file)
@@ -252,18 +252,15 @@ void qpsk_symbols_to_bits(struct COHPSK *coh, int rx_bits[], COMP rx_symb[][COHP
             /* demodulate */
 
             i = c*NSYMROW + r;
-            rot = cmult(rx_symb[data_r][c], pi_on_4);
-            rx_bits[2*i]   = rot.real < 0;
-            rx_bits[2*i+1] = rot.imag < 0;
+            rot = cmult(coh->rx_symb_buf[data_r][c], pi_on_4);
+            rx_bits[2*i+1] = rot.real < 0;
+            rx_bits[2*i]   = rot.imag < 0;
 
             //printf("  c: %d ch_est: %f %f phi_: %f amp_: %f\n",c,  ch_est.real, ch_est.imag, coh->phi_[r][c], coh->amp_[r][c]);
         }
         //exit(0);
     }
 
-    r = NSYMROW+19; c = 0;
-    //printf("%d %d %f %f\n", r,c, coh->rx_symb_buf[r][c].real, coh->rx_symb_buf[r][c].imag);
-
     /* shift buffers */
     
     for(r=0; r<2*NSYMROW; r++) {
@@ -275,8 +272,5 @@ void qpsk_symbols_to_bits(struct COHPSK *coh, int rx_bits[], COMP rx_symb[][COHP
         for(c=0; c<PILOTS_NC; c++) {
             coh->rx_pilot_buf[r][c] = coh->rx_pilot_buf[r+NPILOTSFRAME][c];
         }
-    }
-    r = 19; c = 0;
-    //printf("%d %d %f %f\n", r,c, coh->rx_symb_buf[r][c].real, coh->rx_symb_buf[r][c].imag);
-
+    } 
 }
diff --git a/codec2-dev/unittest/noise_samples.h b/codec2-dev/unittest/noise_samples.h
new file mode 100644 (file)
index 0000000..4351458
--- /dev/null
@@ -0,0 +1,879 @@
+/* Generated by write_noise_file() Octave function */
+
+float pilots_coh[][PILOTS_NC]={
+  {  -0.750637,  -0.169150,  -0.198189,  0.149946,98189,-0.739629},  {0.149946,0.156191}},
+  {  {-0.207799,-0.082395},  {-0.012774,-0.024059},  {-0.542473,0.150651},  {-0.557826,0.080852}},
+  {  {0.424481,-0.439771},  {0.241057,-0.095271},  {-0.122474,0.176513},  {-0.149839,-0.775902}},
+  {  {0.169449,-0.087091},  {0.057882,0.155138},  {-0.391015,0.682880},  {-0.047971,0.543943}},
+  {  {-0.126863,0.065765},  {-0.073408,-0.274510},  {-0.234292,-0.153578},  {0.267075,0.469822}},
+  {  {-0.198585,0.031338},  {0.032354,0.302185},  {0.517222,-0.257059},  {-0.070852,0.045672}},
+  {  {-0.119477,-0.150342},  {0.260492,0.059694},  {-0.386988,-0.751987},  {-0.015045,0.245076}},
+  {  {0.153618,0.043296},  {-0.093370,-0.231196},  {0.311326,0.320627},  {-0.358093,0.393267}},
+  {  {0.476120,-0.170839},  {0.088240,0.576671},  {-0.468749,-0.416425},  {0.188985,-0.197548}},
+  {  {0.106220,0.206540},  {-0.077208,0.274809},  {-0.158754,0.316251},  {-0.116200,0.398616}},
+  {  {0.005197,0.294655},  {-0.206240,-0.190517},  {-0.265506,-0.114146},  {-0.028927,-0.229450}},
+  {  {-0.327728,-0.591345},  {-0.264472,-0.326577},  {-0.319878,-0.049284},  {0.158014,0.121971}},
+  {  {0.333520,-0.031147},  {0.003040,-0.135846},  {0.106355,0.082121},  {-0.283272,0.084046}},
+  {  {-0.343361,-0.506014},  {-0.185367,0.071766},  {-0.235493,0.170638},  {-0.445364,0.118883}},
+  {  {0.030208,-0.084031},  {0.409588,-0.179503},  {-0.482369,0.171370},  {-0.235941,0.080570}},
+  {  {-0.163495,0.582012},  {0.029252,0.076722},  {0.026239,-0.047555},  {-0.291130,-0.030024}},
+  {  {0.233385,-0.043682},  {0.384037,-0.158860},  {-0.273275,-0.230238},  {-0.213361,-0.404230}},
+  {  {-0.023375,-0.118087},  {-0.725656,-0.340884},  {0.341971,0.093778},  {-0.523398,0.051230}},
+  {  {0.341573,0.080278},  {0.411039,0.144772},  {0.337592,-0.284542},  {0.143894,-0.287883}},
+  {  {-0.049250,-0.062392},  {-0.237897,-0.255614},  {0.594200,0.139619},  {-0.033038,-0.213744}},
+  {  {0.073954,0.409955},  {-0.003634,0.002362},  {0.324892,0.180648},  {0.083703,0.095812}},
+  {  {0.094269,0.227403},  {0.205705,0.392200},  {-0.207251,0.112733},  {-0.268652,-0.303959}},
+  {  {-0.678356,-0.181429},  {-0.449746,0.622208},  {-0.030572,0.012442},  {0.237300,0.199256}},
+  {  {-0.119067,0.295658},  {-0.277609,-0.358077},  {-0.277796,-0.003471},  {0.121675,0.248683}},
+  {  {-0.114906,-0.038697},  {0.130222,0.044976},  {0.327228,-0.412443},  {0.660641,-0.037530}},
+  {  {0.569286,0.227664},  {0.268515,-0.039355},  {-0.184280,0.265188},  {-0.015837,-0.271356}},
+  {  {-0.027961,-0.080279},  {0.613017,-0.142081},  {-0.148378,0.191099},  {-0.394520,-0.171700}},
+  {  {-0.198314,-0.009023},  {-0.407328,0.108614},  {0.372154,-0.037212},  {0.675887,0.264015}},
+  {  {0.228980,0.237428},  {0.126555,0.117235},  {0.402235,0.191166},  {0.506753,0.333828}},
+  {  {0.194145,0.320122},  {0.062956,0.705506},  {0.190924,-0.341264},  {-0.623968,-0.297513}},
+  {  {0.224056,-0.010422},  {0.135507,0.159078},  {0.369115,0.176294},  {-0.317725,-0.151294}},
+  {  {-0.383506,-0.238362},  {-0.324011,0.057282},  {-0.274604,-0.047381},  {0.277525,-0.358549}},
+  {  {-0.215697,-0.588638},  {-0.128376,-0.230927},  {0.535021,-0.163071},  {0.043876,-0.185057}},
+  {  {0.244435,-0.374774},  {-0.086461,0.104828},  {-0.700383,-0.174090},  {-0.589216,-0.435133}},
+  {  {-0.240667,0.144112},  {0.180207,0.363533},  {0.246474,0.179655},  {-0.457104,0.205039}},
+  {  {-0.131872,0.443207},  {-0.247986,0.070223},  {-0.127800,-0.212280},  {-0.347726,-0.404625}},
+  {  {-0.414375,0.279466},  {-0.013539,0.504233},  {-0.295185,0.052245},  {0.424058,-0.081735}},
+  {  {0.136434,-0.033282},  {-0.713914,-0.135201},  {-0.788441,0.694102},  {0.039437,0.201192}},
+  {  {-0.249947,-0.591067},  {-0.011299,0.409663},  {-0.244712,0.393058},  {0.787304,-0.019331}},
+  {  {0.092214,0.064805},  {-0.122779,-0.306884},  {0.026603,-0.035376},  {-0.313137,-0.278021}},
+  {  {-0.449133,0.100669},  {0.213763,0.114155},  {0.198330,0.219683},  {-0.284401,-0.035136}},
+  {  {-0.079223,0.368838},  {-0.228556,-0.207711},  {0.072793,0.351840},  {0.360625,0.030095}},
+  {  {-0.070576,0.119426},  {0.161652,-0.225144},  {-0.196486,-0.205592},  {0.075950,0.010825}},
+  {  {-0.273783,-0.169569},  {0.196193,-0.611403},  {0.426909,0.036470},  {0.174337,-0.301462}},
+  {  {-0.049598,0.184766},  {-0.283231,-0.244950},  {0.453568,0.003957},  {0.415593,-0.576587}},
+  {  {-0.239989,-0.319452},  {-0.024350,-0.220417},  {0.498768,0.416310},  {-0.176612,-0.054317}},
+  {  {-0.044332,0.011365},  {0.134760,0.231953},  {-0.158193,-0.110258},  {0.391388,0.363376}},
+  {  {0.013925,0.055840},  {0.331354,0.092750},  {0.231037,-0.162999},  {0.335371,0.318295}},
+  {  {0.129043,0.697470},  {-0.033113,-0.079267},  {0.003693,-0.383891},  {-0.327320,-0.343125}},
+  {  {0.536432,0.308010},  {0.016166,-0.026355},  {0.160359,0.235783},  {-0.208461,-0.225741}},
+  {  {0.190603,-0.113880},  {-0.063480,-0.155972},  {0.366982,0.201820},  {0.023565,0.802017}},
+  {  {0.282362,0.290370},  {-0.087651,0.095848},  {0.304063,-0.519349},  {0.339344,0.091272}},
+  {  {0.294241,0.078683},  {0.216384,0.044954},  {0.088316,0.056581},  {-0.591483,0.234643}},
+  {  {-0.197041,0.333059},  {0.352109,-0.168940},  {-0.281306,0.155800},  {-0.006672,0.108919}},
+  {  {0.181052,-0.659838},  {-0.104519,-0.429662},  {0.112094,0.572306},  {-0.354971,-0.372359}},
+  {  {0.083849,-0.368311},  {-0.112095,0.180757},  {0.595885,-0.377973},  {-0.007485,0.338153}},
+  {  {-0.311245,0.031271},  {-0.361868,-0.787014},  {0.104295,-0.162860},  {-0.274978,0.191277}},
+  {  {0.138853,0.250596},  {0.632978,-0.075892},  {-0.366015,0.164123},  {0.426258,0.088491}},
+  {  {-0.037587,0.497099},  {-0.068182,0.118070},  {0.017717,-0.196019},  {0.572783,-0.102963}},
+  {  {0.704050,0.495086},  {-0.295899,-0.190195},  {-0.328530,-0.086476},  {-0.126744,0.020201}},
+  {  {0.003121,0.154235},  {0.291369,0.083007},  {0.276283,0.045798},  {-0.263297,-0.112896}},
+  {  {-0.064754,-0.469734},  {0.003077,-0.230726},  {0.202952,0.138956},  {0.018527,-0.301757}},
+  {  {-0.301897,0.492262},  {0.035637,-0.165207},  {-0.008182,-0.183366},  {0.298276,-0.172922}},
+  {  {0.180983,0.148276},  {0.288793,0.374504},  {-0.340241,0.078329},  {0.623561,0.008403}},
+  {  {-0.067233,-0.157124},  {0.118974,-0.383335},  {-0.000209,-0.110650},  {-0.491976,0.308069}},
+  {  {0.205250,0.151948},  {-0.518783,-0.257999},  {0.355916,-0.109313},  {0.165621,-0.116488}},
+  {  {0.499678,-0.675667},  {0.123787,-0.252315},  {0.176236,-0.466609},  {0.484550,0.199475}},
+  {  {0.186971,0.075064},  {-0.068606,0.085637},  {0.198384,0.235058},  {-0.278252,0.090447}},
+  {  {0.501919,0.132821},  {0.037085,0.092691},  {-0.154619,0.528693},  {-0.190320,-0.216820}},
+  {  {0.021907,-0.660836},  {-0.341831,-0.120982},  {0.165047,0.604154},  {0.443337,0.232205}},
+  {  {0.238949,-0.075965},  {-0.427228,-0.066472},  {0.039015,0.052095},  {0.307768,-0.089109}},
+  {  {-0.007385,-0.495322},  {-0.239433,0.202327},  {0.634929,-1.042951},  {-0.107694,-0.605126}},
+  {  {0.122646,0.030785},  {-0.139947,-0.322940},  {-0.283219,0.127295},  {-0.090952,-0.228342}},
+  {  {-0.082661,0.376296},  {-0.697140,0.127885},  {0.007774,0.019003},  {-0.333871,-0.406022}},
+  {  {-0.210094,-0.363358},  {0.044731,0.002957},  {0.377764,0.115305},  {-0.173813,-0.252643}},
+  {  {0.022192,-0.205000},  {-0.127319,0.019202},  {0.127148,-0.401677},  {-0.435804,0.257746}},
+  {  {-0.247867,0.096296},  {0.040248,0.112352},  {-0.165120,0.007692},  {-0.341181,0.168080}},
+  {  {0.134237,-0.296421},  {0.096711,0.400760},  {0.082616,0.100963},  {-0.312106,0.309869}},
+  {  {0.401439,0.005954},  {-0.079511,-0.028648},  {-0.079080,-0.305465},  {0.263908,-0.317726}},
+  {  {-0.083958,0.549842},  {-0.608503,0.226455},  {-0.038722,0.000599},  {-0.268167,-0.019197}},
+  {  {0.143782,-0.486617},  {-0.335772,0.131586},  {0.256420,-0.123672},  {-0.493165,0.403056}},
+  {  {-0.210181,-0.060864},  {-0.063225,-0.207438},  {-0.270969,0.162853},  {-0.548033,0.155899}},
+  {  {0.072573,0.164042},  {0.488351,-0.361147},  {-0.001143,0.132952},  {-0.177542,0.197302}},
+  {  {-0.233658,-0.152655},  {-0.488336,-0.021538},  {-0.403831,-0.268588},  {0.407006,-0.358564}},
+  {  {0.071012,0.295097},  {-0.133802,0.109545},  {0.204246,-0.120997},  {0.147307,-0.226298}},
+  {  {0.085903,-0.306695},  {-0.521463,-0.205527},  {0.106089,0.243041},  {-0.046981,-0.530510}},
+  {  {-0.128299,-0.133926},  {0.421907,-0.331015},  {0.386853,-0.219924},  {-0.545935,0.049115}},
+  {  {-0.289527,0.056319},  {0.443432,0.162843},  {0.133633,-0.264205},  {0.102733,-0.272720}},
+  {  {0.036967,0.071746},  {0.682517,0.092190},  {0.310418,-0.099308},  {-0.020267,0.144437}},
+  {  {0.252024,-0.484688},  {-0.218885,0.422658},  {-0.152217,-0.253107},  {-0.695584,0.068956}},
+  {  {-0.257295,0.057598},  {-0.287129,-0.343327},  {-0.200932,0.308002},  {-0.154093,-0.005804}},
+  {  {-0.046448,-0.342914},  {0.033488,0.106985},  {-0.232717,-0.390423},  {-0.117062,-0.010060}},
+  {  {0.026485,-0.510532},  {-0.397122,-0.181092},  {-0.415051,0.589772},  {-0.610981,0.370078}},
+  {  {-0.415396,-0.284130},  {0.364897,-0.079092},  {0.420973,-0.566796},  {0.246298,0.392044}},
+  {  {-0.104109,0.168948},  {-0.054490,-0.075493},  {-0.330142,0.062531},  {-0.133820,-0.050149}},
+  {  {0.009306,-0.467261},  {-0.083032,-0.202301},  {-0.609399,0.271013},  {0.258863,0.323654}},
+  {  {-0.210115,-0.062191},  {-0.308122,-0.008010},  {-0.218688,-0.511983},  {0.022297,0.441155}},
+  {  {0.200211,0.094209},  {0.406845,0.091360},  {0.008600,-0.222807},  {0.002906,-0.096101}},
+  {  {-0.168037,0.005815},  {-0.323343,0.122386},  {0.303921,-0.210101},  {-0.468198,-0.163300}},
+  {  {-0.268946,-0.198553},  {-0.254072,0.249818},  {0.220147,-0.009878},  {0.169065,-0.207748}},
+  {  {-0.147231,-0.010295},  {-0.115043,0.266273},  {0.338094,0.249762},  {-0.147565,-0.178146}},
+  {  {-0.503063,-0.039751},  {-0.441040,0.400739},  {-0.405809,0.418514},  {-0.067378,0.009732}},
+  {  {-0.387675,0.197428},  {0.022297,0.047084},  {-0.249243,-0.313489},  {-0.180239,0.408501}},
+  {  {-0.405163,0.345411},  {-0.383411,0.122620},  {-0.431622,0.368799},  {-0.129054,-0.047048}},
+  {  {0.085798,-0.134799},  {0.192376,0.000713},  {-0.335550,0.221554},  {-0.182825,0.100061}},
+  {  {-0.054539,-0.415310},  {-0.168359,-0.088806},  {0.052474,0.149768},  {-0.009944,-0.284774}},
+  {  {-0.350402,0.037612},  {-0.351370,0.074558},  {-0.056874,-0.055789},  {-0.557330,0.084536}},
+  {  {-0.248106,-0.215540},  {0.330297,0.192510},  {0.160990,-0.483173},  {-0.374872,0.247123}},
+  {  {0.120883,0.144681},  {-0.416648,0.058365},  {0.178562,-0.009860},  {-0.052922,0.242033}},
+  {  {-0.131057,0.235019},  {0.334219,0.162875},  {-0.209231,-0.313440},  {0.393031,0.517514}},
+  {  {0.530223,-0.482817},  {-0.024045,0.211552},  {0.161005,-0.367734},  {-0.083244,-0.011815}},
+  {  {0.428923,0.033814},  {-0.224554,0.323629},  {-0.117996,0.505097},  {-0.439880,0.059119}},
+  {  {0.295171,-0.097915},  {-0.241116,-0.001890},  {0.010521,0.450290},  {0.050223,-0.175483}},
+  {  {-0.138449,-0.186499},  {0.352804,-0.358224},  {0.136518,0.236976},  {0.037614,-0.119853}},
+  {  {-0.230179,0.611811},  {0.024512,-0.217859},  {0.052668,0.339789},  {-0.217374,-0.437640}},
+  {  {0.157835,-0.020912},  {0.047790,-0.254040},  {0.001998,0.264781},  {0.052181,-0.131100}},
+  {  {0.612390,-0.110527},  {-0.223960,-0.035628},  {0.064775,0.187124},  {0.156971,-0.144299}},
+  {  {-0.115485,-0.561693},  {-0.134587,-0.369904},  {0.061035,-0.566715},  {-0.204560,-0.270755}},
+  {  {-0.355931,-0.132269},  {-0.033181,0.190919},  {-0.487867,0.150675},  {0.081094,-0.066387}},
+  {  {0.368642,0.263879},  {-0.181228,-0.207395},  {0.331549,0.396041},  {0.057914,-0.055271}},
+  {  {0.172137,-0.129355},  {0.086691,-0.127009},  {0.042065,-0.486369},  {-0.288649,0.182860}},
+  {  {-0.197551,0.203733},  {-0.149892,0.443174},  {-0.300283,-0.037080},  {-0.194922,0.118139}},
+  {  {0.118892,0.079908},  {-0.161673,0.016710},  {-0.517838,-0.068323},  {0.122450,-0.228322}},
+  {  {-0.036977,0.542285},  {0.284871,-0.101393},  {-0.238096,-0.144462},  {-0.102862,-0.234622}},
+  {  {0.326718,-0.017903},  {-0.346808,0.377061},  {-0.211130,0.216720},  {0.113638,0.062949}},
+  {  {-0.420593,-0.163544},  {-0.291632,-0.009618},  {-0.110017,0.191581},  {0.232602,-0.351584}},
+  {  {0.208436,-0.291321},  {-0.165405,-0.519177},  {0.306514,0.124206},  {-0.062237,-0.073093}},
+  {  {-0.399272,0.094421},  {-0.058123,-0.036453},  {0.483004,0.104957},  {0.104348,-0.426096}},
+  {  {0.001498,0.264373},  {0.406732,-0.152246},  {-0.121016,0.293527},  {-0.329360,-0.812076}},
+  {  {-0.018420,0.678098},  {-0.158633,0.387057},  {-0.559246,-0.212606},  {0.072426,-0.284959}},
+  {  {0.118444,-0.068243},  {0.278248,-0.211104},  {0.070576,0.425958},  {0.271879,0.246654}},
+  {  {0.094031,-0.131825},  {-0.282289,-0.049041},  {-0.373891,-0.302456},  {-0.227884,-0.192733}},
+  {  {-0.244425,0.122333},  {0.200478,-0.216924},  {-0.075055,0.293724},  {0.168716,-0.053591}},
+  {  {-0.185449,0.053923},  {-0.295328,-0.328449},  {0.286143,-0.320320},  {0.017508,-0.513248}},
+  {  {-0.161983,0.176158},  {-0.117215,-0.133509},  {0.308148,-0.161242},  {-0.026812,0.010712}},
+  {  {0.314395,-0.061646},  {0.005157,0.039000},  {0.341661,0.000337},  {-0.433630,0.012631}},
+  {  {0.220066,-0.291704},  {-0.198750,-0.151449},  {0.039655,0.119239},  {0.391911,0.307104}},
+  {  {0.136871,0.240055},  {-0.308597,-0.137190},  {-0.334406,0.160725},  {-0.383993,0.044252}},
+  {  {-0.291432,0.068310},  {-0.163666,-0.361391},  {-0.215031,0.460159},  {0.365707,-0.017438}},
+  {  {0.038056,-0.040434},  {-0.047275,-0.573753},  {0.500151,0.106227},  {0.399111,-0.048684}},
+  {  {-0.226557,0.456785},  {0.099609,0.874971},  {-0.275930,0.232954},  {0.743177,0.047751}},
+  {  {-0.301367,0.043677},  {0.372991,-0.394366},  {-0.237636,0.712973},  {0.266291,0.178007}},
+  {  {0.224608,-0.299456},  {0.300515,-0.072274},  {0.109868,-0.161879},  {-0.193502,0.191043}},
+  {  {0.143543,-0.768328},  {0.107163,-0.049111},  {0.185223,-0.112948},  {-0.465104,-0.088753}},
+  {  {-0.070734,0.305588},  {-0.011645,0.533423},  {-0.515526,-0.029224},  {-0.293416,-0.154416}},
+  {  {-0.601596,-0.221804},  {0.111743,0.485429},  {-0.094634,0.705711},  {0.093249,-0.186518}},
+  {  {0.500781,0.015170},  {-0.102209,-0.040730},  {-0.095777,0.426814},  {-0.163871,0.177583}},
+  {  {0.060146,0.121686},  {-0.363903,0.448653},  {0.179742,0.611761},  {0.076594,0.090366}},
+  {  {-0.528655,0.424088},  {-0.195457,-0.508613},  {0.849239,-0.130073},  {0.061236,0.021353}},
+  {  {0.069400,0.514672},  {-0.261211,0.125938},  {0.096376,0.488357},  {-0.162779,-0.348447}},
+  {  {0.200835,-0.298812},  {0.282533,-0.113286},  {-0.532350,0.514004},  {-0.024171,0.121432}},
+  {  {-0.015662,-0.210281},  {-0.053859,0.069280},  {-0.213310,-0.149043},  {-0.161621,0.012651}},
+  {  {0.080742,-0.542827},  {-0.005453,-0.333953},  {-0.066893,-0.359637},  {0.445159,-0.316766}},
+  {  {-0.335971,0.113456},  {0.107434,-0.026868},  {0.154326,0.345420},  {-0.077934,0.013356}},
+  {  {0.141882,0.096971},  {0.058530,-0.247759},  {-0.040150,0.363820},  {0.142603,-0.158582}},
+  {  {0.043306,0.248428},  {-0.017649,0.173914},  {0.272948,-0.048338},  {0.061449,-0.128407}},
+  {  {-0.078264,-0.012755},  {-0.385851,-0.051113},  {-0.497050,-0.165339},  {-0.083777,0.148115}},
+  {  {0.359862,0.206582},  {-0.043245,-0.326234},  {0.160224,-0.156650},  {0.110566,-0.054612}},
+  {  {-0.216932,-0.248404},  {0.228132,-0.065703},  {0.047573,-0.031677},  {0.041428,-0.200722}},
+  {  {0.119094,-0.152201},  {-0.171351,0.009613},  {0.285642,0.606035},  {0.031309,-0.133380}},
+  {  {0.350543,-0.621683},  {0.042457,0.121395},  {-0.179323,-0.133353},  {0.440970,-0.145267}},
+  {  {-0.210403,0.169964},  {-0.376885,-0.114910},  {-0.581170,0.205353},  {0.388940,0.015168}},
+  {  {-0.271985,0.132315},  {-0.028112,0.142125},  {0.130773,-0.079253},  {0.248825,0.118157}},
+  {  {0.061308,0.072113},  {-0.162158,-0.512223},  {-0.050172,0.098094},  {0.440553,0.063540}},
+  {  {0.129083,0.068097},  {0.215612,0.736455},  {-0.251203,0.556114},  {-0.241472,0.099671}},
+  {  {0.039643,-0.173446},  {0.620995,-0.074037},  {-0.528139,-0.010820},  {-0.031840,-0.138359}},
+  {  {0.244136,-0.365867},  {-0.265703,-0.165531},  {-0.079152,0.402421},  {0.179394,-0.022616}},
+  {  {-0.075656,-0.000027},  {0.077298,-0.171896},  {0.106007,0.030031},  {-0.102138,0.113610}},
+  {  {-0.421454,-0.370327},  {0.035291,0.305994},  {0.168915,-0.086631},  {-0.409700,0.067963}},
+  {  {0.261705,-0.179992},  {0.200007,0.004994},  {0.554603,-0.208057},  {0.012334,-0.404191}},
+  {  {0.116455,0.151354},  {-0.006627,-0.672645},  {-0.054726,0.341888},  {0.185663,-0.312808}},
+  {  {0.520168,-0.071498},  {0.138636,0.060533},  {0.250091,-0.000412},  {-0.127521,0.002973}},
+  {  {0.080612,0.070134},  {0.519018,-0.702856},  {-0.272517,0.382425},  {-0.117376,-0.071236}},
+  {  {-0.079169,0.000922},  {-0.264795,0.014230},  {-0.072424,-0.207691},  {0.151612,0.264665}},
+  {  {-0.201559,0.498738},  {0.187285,-0.087080},  {-0.278962,-0.205998},  {0.071420,0.000413}},
+  {  {0.077295,-0.078966},  {-0.106354,0.248953},  {-0.290988,0.065494},  {0.140891,0.259763}},
+  {  {0.431680,-0.718668},  {-0.002345,0.014676},  {0.003236,0.362900},  {-0.588252,0.277076}},
+  {  {0.139082,0.067486},  {-0.092467,-0.001664},  {-0.524394,-0.196325},  {0.260669,-0.209731}},
+  {  {0.570793,-0.163082},  {0.152269,-0.326717},  {0.310936,0.111217},  {0.030388,0.693550}},
+  {  {0.014890,-0.088310},  {0.059908,-0.073207},  {-0.133444,0.180107},  {-0.350009,-0.060947}},
+  {  {0.157542,0.100875},  {0.026741,-0.066180},  {-0.292609,-0.131301},  {0.049926,0.123887}},
+  {  {-0.154898,-0.706446},  {-0.835367,0.070030},  {0.210491,-0.039018},  {-0.346824,0.373473}},
+  {  {0.338521,0.295744},  {0.328618,-0.007983},  {-0.245961,0.479585},  {0.077339,0.062343}},
+  {  {-0.146545,-0.092528},  {-0.324695,-0.078452},  {0.362388,-0.196544},  {0.023928,0.089223}},
+  {  {-0.308858,-0.201934},  {0.183533,0.323761},  {-0.282542,-0.373722},  {-0.018089,-0.020390}},
+  {  {-0.213850,0.077721},  {-0.283258,-0.531132},  {0.379554,-0.294232},  {0.245172,-0.335399}},
+  {  {0.056847,-0.089430},  {0.103652,0.164106},  {0.034376,-0.136882},  {-0.149279,0.162423}},
+  {  {-0.050005,0.401940},  {0.073722,-0.032143},  {0.068425,0.010830},  {-0.100729,-0.377849}},
+  {  {-0.054875,0.309814},  {0.190530,0.076686},  {0.440330,-0.067758},  {-0.354993,-0.172835}},
+  {  {0.295425,0.344580},  {0.248627,-0.147405},  {-0.162808,-0.349600},  {-0.281384,0.297502}},
+  {  {0.099975,0.583696},  {-0.281417,-0.012094},  {0.028733,0.275055},  {-0.408470,0.293581}},
+  {  {0.326483,0.090221},  {0.467181,0.197717},  {0.259066,0.011534},  {-0.183980,-0.303549}},
+  {  {-0.284214,0.275556},  {-0.036331,-0.165929},  {0.096247,-0.061859},  {-0.307822,0.290306}},
+  {  {-0.343957,0.005490},  {0.445916,0.077954},  {-0.035170,-0.171954},  {-0.310348,-0.361716}},
+  {  {-0.155451,0.321627},  {-0.394078,0.048913},  {-0.017139,-0.253109},  {0.189541,-0.238246}},
+  {  {0.232455,-0.419364},  {0.275656,-0.243207},  {-0.124787,0.244906},  {0.264559,-0.381791}},
+  {  {-0.090732,-0.014726},  {0.683460,-0.070517},  {-0.131062,0.041445},  {0.085321,0.213573}},
+  {  {0.129182,-0.234801},  {0.462801,0.160543},  {-0.082582,0.165245},  {-0.226717,0.211012}},
+  {  {-0.435602,-0.012168},  {0.322612,-0.114953},  {0.145738,-0.009746},  {0.298943,-0.098434}},
+  {  {0.076457,0.061976},  {-0.005380,-0.241261},  {0.163778,0.264683},  {0.085400,0.177385}},
+  {  {0.597068,-0.075116},  {0.399816,0.017422},  {0.389982,-0.031140},  {-0.294093,-0.388388}},
+  {  {0.318878,-0.036815},  {-0.234112,-0.801294},  {-0.265327,0.133147},  {-0.015259,0.144176}},
+  {  {0.070844,-0.653566},  {-0.015310,-0.057587},  {-0.337054,-0.265253},  {0.473293,0.318475}},
+  {  {0.434273,0.075673},  {-0.088919,0.414944},  {-0.191497,-0.230056},  {-0.497719,0.269404}},
+  {  {0.033744,0.069354},  {-0.239676,-0.023515},  {0.030579,-0.000166},  {-0.209733,0.628387}},
+  {  {-0.184956,-0.378498},  {0.192721,0.059267},  {-0.508250,0.248714},  {-0.184745,0.044113}},
+  {  {-0.282850,-0.173266},  {0.052474,-0.228206},  {0.351982,-0.081880},  {-0.255820,-0.344486}},
+  {  {-0.063649,0.098122},  {-0.167299,-0.079985},  {-0.168359,-0.150255},  {0.076669,-0.112331}},
+  {  {0.366231,-0.201318},  {-0.553282,-0.328085},  {-0.187832,0.034580},  {0.174095,-0.394287}},
+  {  {-0.205402,-0.499996},  {-0.418680,-0.053061},  {-0.117287,0.311258},  {0.194219,0.048315}},
+  {  {-0.172346,0.770721},  {0.408969,0.237808},  {-0.365306,0.061178},  {0.255282,0.015140}},
+  {  {-0.109597,-0.199425},  {-0.077180,-0.201362},  {0.134809,0.003829},  {0.148081,0.055186}},
+  {  {-0.054262,-0.026898},  {-0.094435,-0.241610},  {-0.178328,0.299753},  {-0.414479,0.056818}},
+  {  {-0.185036,-0.150994},  {0.013833,-0.232444},  {0.161182,0.187601},  {-0.275356,0.106707}},
+  {  {0.374102,-0.012281},  {0.489070,-0.138166},  {-0.302481,-0.327111},  {0.217411,0.376323}},
+  {  {0.078610,0.049859},  {0.473731,0.312158},  {-0.313817,-0.367920},  {0.554755,-0.100771}},
+  {  {0.143516,-0.452864},  {0.085905,0.073405},  {-0.008586,-0.145278},  {0.502481,0.085643}},
+  {  {-0.413392,-0.048657},  {0.344558,0.150758},  {-0.064876,0.200362},  {0.215220,0.085384}},
+  {  {-0.223838,0.813131},  {0.136495,0.503562},  {0.037339,0.325496},  {0.016412,-0.125430}},
+  {  {-0.201446,0.705457},  {-0.138195,-0.072044},  {-0.382619,-0.425436},  {-0.070534,-0.197187}},
+  {  {-0.024347,-0.219038},  {0.190098,0.471902},  {0.140685,-0.039844},  {0.345504,0.187211}},
+  {  {0.432318,0.179298},  {-0.131667,-0.176622},  {0.116418,0.319021},  {-0.385235,-0.035748}},
+  {  {0.311539,-0.201679},  {-0.152516,-0.425898},  {0.059908,0.349891},  {0.084949,-0.082877}},
+  {  {-0.688961,-0.025307},  {-0.448917,0.640223},  {0.059411,-0.281467},  {-0.268988,0.300101}},
+  {  {0.411467,-0.247394},  {0.030981,-0.316311},  {-0.172255,0.329551},  {0.221466,-0.352427}},
+  {  {-0.010861,-0.258829},  {0.042930,-0.447836},  {0.192195,-0.442534},  {-0.496557,0.303134}},
+  {  {0.162976,0.245563},  {-0.377804,0.139764},  {0.390353,0.027945},  {-0.350942,-0.038163}},
+  {  {0.490435,-0.478758},  {0.177853,0.466072},  {-0.298821,0.313830},  {0.028664,-0.601953}},
+  {  {0.065439,-0.492205},  {0.691453,-0.101211},  {-0.091691,-0.387725},  {-0.743918,-0.134731}},
+  {  {-0.326988,-0.344278},  {-0.269384,-0.563013},  {0.110825,0.171358},  {0.139110,-0.058018}},
+  {  {-0.208397,0.054860},  {0.349607,0.243547},  {0.362209,0.331386},  {-0.587735,0.128467}},
+  {  {-0.226421,-0.237055},  {0.153288,0.038228},  {-0.159819,0.451976},  {-0.731017,-0.243144}},
+  {  {0.414704,0.082777},  {-0.229986,-0.179830},  {0.735124,-0.059787},  {0.084100,-0.234950}},
+  {  {-0.009129,0.086255},  {-0.276279,-0.048737},  {0.121304,-0.225277},  {0.640434,-0.102903}},
+  {  {0.614793,0.272580},  {0.498993,-0.523114},  {-0.429207,0.035989},  {-0.274787,0.134686}},
+  {  {0.180790,0.358864},  {-0.023047,0.065324},  {0.308703,0.238520},  {0.060760,0.275676}},
+  {  {-0.067385,0.509101},  {-0.043290,-0.246975},  {-0.192233,0.071204},  {0.052692,-0.288360}},
+  {  {-0.031514,-0.262345},  {-0.367949,0.180763},  {-0.004922,-0.182172},  {0.168995,0.053817}},
+  {  {-0.167453,-0.005158},  {-0.417444,0.165249},  {0.034439,-0.021640},  {-0.441203,0.085585}},
+  {  {0.008977,0.219848},  {-0.073203,0.245379},  {0.011695,-0.542637},  {0.243605,-0.085983}},
+  {  {0.492628,0.180833},  {-0.292378,-0.482823},  {0.369409,-0.220277},  {0.144359,0.048600}},
+  {  {0.258174,0.070210},  {-0.226118,-0.159983},  {0.059975,0.099203},  {0.231947,0.354344}},
+  {  {0.376285,-0.318337},  {-0.011974,-0.054908},  {-0.221093,0.003776},  {-0.043697,0.072246}},
+  {  {0.330174,-0.074655},  {0.090225,-0.116280},  {-0.143245,0.471809},  {-0.241901,-0.156598}},
+  {  {-0.014764,-0.090827},  {-0.557101,0.575360},  {-0.162818,0.221511},  {0.090063,-0.083107}},
+  {  {-0.726531,-0.225389},  {-0.085854,-0.157015},  {0.052982,-0.124716},  {-0.277968,0.192631}},
+  {  {0.390945,0.187383},  {0.044613,-0.010036},  {-0.199634,-0.247389},  {0.092595,0.552461}},
+  {  {-0.251794,-0.365084},  {0.187220,0.324906},  {-0.265520,-0.457451},  {0.085599,0.300422}},
+  {  {0.598367,0.234726},  {-0.313287,0.147727},  {0.354592,0.106822},  {0.359412,-0.239216}},
+  {  {0.001004,0.082232},  {0.053954,-0.059520},  {-0.380669,-0.550896},  {-0.214904,-0.033183}},
+  {  {0.063894,0.587134},  {-0.176766,-0.237091},  {-0.378504,0.687891},  {0.100150,-0.474589}},
+  {  {-0.024853,-0.042631},  {-0.228418,-0.018471},  {0.214901,-0.119222},  {0.301672,-0.032019}},
+  {  {0.148857,-0.313287},  {-0.110050,-0.259782},  {0.216752,0.058100},  {-0.059348,-0.031191}},
+  {  {-0.519067,0.339193},  {0.064570,0.247008},  {0.200315,0.230864},  {-0.149875,0.221494}},
+  {  {0.967113,-0.014945},  {-0.259459,0.289004},  {-0.169500,0.486778},  {-0.353389,0.479504}},
+  {  {-0.332104,-0.245401},  {0.359284,-0.621389},  {-0.138287,0.028163},  {0.402340,0.167997}},
+  {  {-0.300602,-0.581617},  {0.376286,-0.569120},  {0.145366,-0.115393},  {0.121327,0.408137}},
+  {  {0.003044,0.181737},  {0.529158,0.324516},  {0.120197,0.263861},  {-0.088841,-0.012370}},
+  {  {0.050556,-0.541265},  {-0.470490,-0.605930},  {-0.302888,0.228295},  {-0.379453,0.239140}},
+  {  {-0.367779,-0.303912},  {-0.270036,-0.874281},  {-0.141817,-0.254576},  {0.212963,0.086223}},
+  {  {0.376274,0.127668},  {0.003865,-0.003529},  {0.016964,0.495091},  {0.163785,0.186446}},
+  {  {0.522536,-0.336653},  {0.474372,0.087297},  {-0.014762,0.222145},  {-0.021979,0.179251}},
+  {  {0.013027,0.064962},  {-0.134777,-0.167132},  {0.013371,0.022012},  {0.152787,-0.622872}},
+  {  {-0.001121,-0.436419},  {0.088268,-0.196491},  {-0.164590,0.290373},  {-0.086976,0.129774}},
+  {  {0.005381,0.116676},  {0.394283,-0.553228},  {0.501610,-0.757587},  {0.045999,0.924685}},
+  {  {-0.210291,0.093077},  {0.005616,0.008494},  {0.536801,0.429660},  {0.553244,0.496067}},
+  {  {-0.014174,-0.217077},  {-0.442078,0.117157},  {0.052577,0.252468},  {0.133596,-0.302114}},
+  {  {0.066692,-0.210007},  {-0.024506,0.166687},  {-0.132973,0.216990},  {-0.378907,0.339904}},
+  {  {-0.071062,0.253040},  {0.723311,-0.281540},  {0.199863,0.131619},  {-0.185019,-0.247654}},
+  {  {-0.048021,-0.319240},  {-0.609517,-0.209317},  {0.141367,0.028844},  {-0.309397,0.638208}},
+  {  {-0.096966,0.185327},  {-0.449172,-0.148644},  {0.107145,0.122620},  {-0.226685,0.085414}},
+  {  {0.123137,-0.507010},  {0.035061,-0.405579},  {-0.665680,-0.081938},  {0.025117,-0.074546}},
+  {  {-0.276162,-0.300109},  {0.021657,0.182082},  {-0.046924,0.439472},  {-0.003342,0.221774}},
+  {  {0.100394,-0.014396},  {0.108518,0.707619},  {-0.093496,0.084405},  {-0.294377,0.155924}},
+  {  {0.015601,-0.416095},  {-0.207130,0.054667},  {-0.003294,-0.046254},  {0.058958,0.035571}},
+  {  {-0.166583,0.261310},  {-0.231978,-0.413367},  {-0.087134,0.485384},  {0.176379,0.111352}},
+  {  {-0.109017,0.162398},  {0.753678,-0.352826},  {0.032553,-0.018528},  {0.027350,0.428136}},
+  {  {-0.454516,0.193027},  {-0.194805,-0.244220},  {0.391591,0.224543},  {-0.357781,0.000919}},
+  {  {0.456979,-0.131506},  {0.070305,-0.018777},  {0.148938,-0.219166},  {-0.030467,-0.435105}},
+  {  {-0.071701,-0.269393},  {-0.070570,0.046294},  {0.066870,-0.232841},  {0.133145,0.110002}},
+  {  {0.101548,-0.077140},  {-0.082616,-0.038048},  {-0.420662,-0.051301},  {0.019527,-0.496392}},
+  {  {-0.168364,-0.230933},  {0.161906,-0.191272},  {0.610299,-0.152656},  {-0.209238,0.065691}},
+  {  {0.154753,-0.188244},  {0.952206,-0.416603},  {0.059695,0.282839},  {-0.250931,0.291837}},
+  {  {-0.016336,-0.302427},  {-0.277827,0.624406},  {0.123465,-0.441014},  {0.271318,-0.279612}},
+  {  {-0.055681,-0.293139},  {0.392449,-0.115001},  {0.055223,-0.317362},  {0.147117,0.058829}},
+  {  {-0.210021,0.132249},  {0.010372,0.150179},  {0.388006,0.292219},  {-0.228610,-0.077640}},
+  {  {-0.461618,0.033395},  {0.182859,0.488652},  {0.042498,-0.014597},  {-0.406817,0.147791}},
+  {  {0.314427,0.092150},  {-0.067273,0.059179},  {-0.037496,0.401134},  {0.052262,0.008443}},
+  {  {-0.043777,0.336999},  {0.312904,-0.430385},  {0.029779,0.182786},  {0.397514,-0.275671}},
+  {  {-0.011040,-0.098204},  {-0.384790,0.107988},  {-0.169643,-0.106682},  {0.331089,-0.071821}},
+  {  {0.049983,-0.158137},  {0.362512,0.013191},  {0.283657,0.236168},  {-0.058940,-0.517155}},
+  {  {-0.032295,-0.221165},  {-0.052623,0.072054},  {-0.074915,0.072867},  {0.099013,0.384157}},
+  {  {0.365194,0.154402},  {0.629388,-0.105209},  {-0.483499,0.148980},  {-0.133843,0.015912}},
+  {  {-0.098715,-0.478623},  {-0.524517,0.460393},  {-0.215372,-0.472132},  {-0.407925,0.524680}},
+  {  {0.022968,0.129873},  {0.046810,0.150556},  {0.172892,0.235215},  {-0.089234,0.005368}},
+  {  {0.002832,0.081650},  {0.029455,0.854959},  {-0.592918,-0.388429},  {-0.074676,0.141013}},
+  {  {0.014543,0.315084},  {-0.249245,-0.115690},  {-0.412515,0.066233},  {-0.485386,0.097857}},
+  {  {0.290953,0.027835},  {-0.418451,0.202531},  {-0.187529,0.204908},  {-0.023085,0.513081}},
+  {  {-0.258644,0.411239},  {0.106116,0.491138},  {-0.393229,0.160471},  {-0.434560,-0.294429}},
+  {  {0.016989,-0.011315},  {0.190441,0.206952},  {0.390324,0.192402},  {-0.306832,-0.022567}},
+  {  {0.190620,0.142245},  {0.128750,-0.052751},  {0.273936,0.154470},  {0.270445,-0.049614}},
+  {  {0.154772,-0.511616},  {-0.113155,0.173922},  {-0.216281,0.064004},  {-0.028929,-0.596442}},
+  {  {-0.326645,-0.247114},  {-0.054943,0.073963},  {-0.097002,0.272506},  {-0.111669,-0.347525}},
+  {  {-0.572468,-0.629206},  {0.262774,0.226937},  {0.012402,-0.244323},  {0.044559,0.172408}},
+  {  {0.107975,-0.123569},  {0.271133,-0.368227},  {-0.461258,0.074716},  {-0.542716,0.298122}},
+  {  {-0.159471,0.262413},  {0.411871,0.183411},  {-0.317667,-0.120780},  {-0.431727,0.171749}},
+  {  {-0.484429,0.287719},  {-0.319951,0.599269},  {0.219441,-0.171262},  {-0.153417,0.186684}},
+  {  {0.536449,-0.123444},  {0.111294,0.028028},  {0.022914,-0.193746},  {0.080604,-0.508708}},
+  {  {0.593477,-0.205395},  {-0.025656,-0.180458},  {-0.409849,-0.078293},  {-0.096687,0.187835}},
+  {  {-0.026294,0.191748},  {0.044241,0.135014},  {0.039458,-0.006727},  {-0.615259,0.196813}},
+  {  {-0.167524,-0.244251},  {-0.043568,-0.109964},  {0.136617,-0.399412},  {-0.085877,-0.056180}},
+  {  {0.053807,-0.221761},  {0.260891,-0.294736},  {0.473293,0.006510},  {0.378570,-0.138360}},
+  {  {0.215450,0.095927},  {-0.072731,-0.454063},  {0.050196,0.327213},  {-0.361325,-0.307572}},
+  {  {0.601297,-0.163960},  {-0.154052,-0.246465},  {-0.241445,0.027168},  {-0.007335,-0.385698}},
+  {  {0.350911,-0.563312},  {-0.207168,-0.042404},  {0.064874,0.224612},  {0.235870,-0.007660}},
+  {  {0.118117,0.078834},  {-0.110417,0.485598},  {-0.184062,-0.043305},  {-0.265259,-0.323935}},
+  {  {0.135252,-0.264820},  {-0.090688,0.227259},  {-0.214834,-0.439678},  {0.125947,-0.049620}},
+  {  {0.109358,-0.049967},  {0.114211,0.111147},  {0.008820,-0.075684},  {0.093200,0.017930}},
+  {  {-0.510286,0.374088},  {0.131518,-0.701320},  {-0.335833,-0.647279},  {-0.152105,0.063869}},
+  {  {0.507388,0.499527},  {-0.154010,-0.050098},  {0.158747,0.021492},  {0.003366,-0.100517}},
+  {  {0.321997,-0.164972},  {-0.002128,-0.285251},  {0.119419,-0.031229},  {0.155682,-0.575869}},
+  {  {0.325517,0.059569},  {-0.162478,-0.352961},  {0.407223,-0.390844},  {-0.450301,0.176865}},
+  {  {-0.038199,0.114773},  {-0.535195,0.187826},  {-0.321321,-0.035799},  {0.045766,-0.197339}},
+  {  {-0.044078,-0.006786},  {0.111488,0.188249},  {-0.156393,-0.849835},  {-0.727996,0.092839}},
+  {  {0.478616,0.199355},  {0.076938,0.251060},  {-0.143436,-0.221799},  {0.510431,0.421355}},
+  {  {-0.251529,0.116722},  {-0.012478,-0.056341},  {0.394425,-0.148447},  {0.189882,-0.498929}},
+  {  {0.288345,-0.101309},  {0.002293,0.076881},  {-0.000850,-0.043498},  {-0.225962,-0.122389}},
+  {  {0.305172,0.233319},  {-0.349315,-0.538676},  {0.098687,0.055864},  {0.480233,-0.225805}},
+  {  {-0.168200,-0.329210},  {-0.282830,-0.173777},  {0.119306,-0.007902},  {0.029248,-0.011320}},
+  {  {0.302429,0.000077},  {-0.166087,0.043900},  {-0.138765,0.093793},  {-0.303218,0.088529}},
+  {  {-0.111799,0.280024},  {0.112168,-0.029621},  {-0.260182,0.311411},  {-0.040533,0.463816}},
+  {  {-0.133204,-0.028277},  {0.029498,-0.098190},  {0.568278,0.005486},  {-0.014700,0.368417}},
+  {  {-0.040147,-0.274857},  {-0.545128,0.077048},  {-0.099423,0.314228},  {-0.080927,-0.028965}},
+  {  {-0.251461,-0.121591},  {0.388248,0.094052},  {0.094202,0.250863},  {0.166882,0.118831}},
+  {  {-0.155616,0.225246},  {-0.157587,-0.528799},  {0.143844,0.298740},  {-0.051253,0.222578}},
+  {  {-0.244496,0.227898},  {0.091201,0.081164},  {0.089971,-0.271517},  {0.000964,0.263170}},
+  {  {0.316189,-0.070368},  {0.273359,0.056081},  {0.264907,0.356739},  {0.268639,0.234692}},
+  {  {-0.340614,-0.048855},  {-0.769490,-0.470076},  {-0.136659,0.167449},  {-0.051982,0.193616}},
+  {  {0.054793,0.016388},  {-0.021158,0.140343},  {0.085307,-0.595568},  {0.017222,0.159122}},
+  {  {0.292823,0.194546},  {0.620162,-0.240192},  {0.173644,-0.343837},  {0.296348,-0.633418}},
+  {  {0.101503,0.108657},  {-0.070613,-0.685550},  {0.195726,-0.566730},  {0.130433,0.344140}},
+  {  {0.210603,0.022525},  {-0.058027,-0.264947},  {-0.334582,0.009886},  {-0.069001,-0.285679}},
+  {  {0.569472,-0.233393},  {0.355773,-0.078239},  {-0.192797,0.293623},  {-0.145237,0.133416}},
+  {  {0.175782,0.178869},  {0.278593,0.298022},  {-0.268352,-0.294007},  {-0.369889,-0.149101}},
+  {  {-0.085830,0.088541},  {0.223899,-0.278944},  {-0.450735,0.314336},  {0.033138,-0.004060}},
+  {  {0.093632,-0.103129},  {0.098862,0.096244},  {-0.273388,0.265800},  {-0.323330,-0.024594}},
+  {  {-0.262240,-0.064696},  {-0.388027,-0.420380},  {-0.083504,0.175516},  {-0.262181,-0.608883}},
+  {  {-0.376482,0.104219},  {-0.252399,-0.035238},  {-0.344144,-0.020389},  {-0.528925,0.234133}},
+  {  {-0.165722,0.136287},  {-0.260101,-0.265211},  {-0.280332,0.142985},  {-0.858225,-0.181161}},
+  {  {0.361160,0.230629},  {-0.110940,-0.148884},  {-0.111889,-0.133805},  {-0.018377,-0.086508}},
+  {  {-0.261888,-0.157668},  {0.108391,-0.419726},  {-0.571168,-0.054514},  {-0.175414,0.239386}},
+  {  {-0.719097,0.338244},  {-0.515942,0.726361},  {0.201597,0.471820},  {-0.020826,0.182413}},
+  {  {0.000913,0.244699},  {-0.006443,-0.733880},  {-0.153436,0.484484},  {-0.213930,0.190152}},
+  {  {-0.308299,-0.066902},  {-0.169539,-0.103659},  {-0.023120,0.362402},  {-0.356277,0.009707}},
+  {  {-0.321486,0.250732},  {-0.189093,0.303420},  {-0.016102,-0.100816},  {-0.282744,-0.125252}},
+  {  {-0.048772,-0.249470},  {0.150520,0.109001},  {0.086462,-0.108351},  {-0.638463,0.083005}},
+  {  {-0.641853,-0.305082},  {-0.549656,0.162001},  {0.003398,0.166868},  {0.732520,0.419660}},
+  {  {-0.280466,0.408709},  {0.106493,-0.021317},  {-0.315959,0.340823},  {0.179071,0.283548}},
+  {  {0.167744,0.420586},  {-0.069414,-0.253366},  {-0.044998,-0.144675},  {0.028316,0.037821}},
+  {  {-0.137914,0.013546},  {-0.359836,-0.239635},  {-0.054894,-0.128650},  {0.135744,-0.020107}},
+  {  {-0.127755,0.417756},  {-0.300354,0.046783},  {0.051663,0.205262},  {0.066619,0.384590}},
+  {  {0.206115,-0.122332},  {0.132781,0.058641},  {0.010356,-0.045014},  {-0.206678,0.292679}},
+  {  {-0.278040,-0.049601},  {0.227087,0.046874},  {0.342113,-0.433999},  {-0.379606,0.484330}},
+  {  {0.181283,0.252494},  {-0.340974,0.238385},  {0.054575,-0.244962},  {-0.285874,0.230659}},
+  {  {-0.608757,0.337165},  {0.343990,-0.211060},  {0.108844,-0.553364},  {0.353272,-0.012342}},
+  {  {0.434207,0.150424},  {-0.143038,-0.178495},  {0.145507,0.090446},  {-0.199361,0.422781}},
+  {  {0.021573,0.004357},  {0.148851,-0.092096},  {0.267090,0.095125},  {-0.200667,-0.200744}},
+  {  {0.013924,-0.057218},  {0.001869,0.260184},  {0.142119,0.397194},  {-0.168498,-0.223962}},
+  {  {0.448688,-0.170649},  {-0.082005,-0.186810},  {-0.351338,-0.067275},  {-0.030032,-0.109484}},
+  {  {0.138364,-0.201932},  {0.095766,0.088879},  {0.184251,-0.361527},  {0.310058,-0.156774}},
+  {  {-0.154605,0.327350},  {-1.087511,0.169317},  {-0.228248,-0.109929},  {0.209852,0.002672}},
+  {  {0.047592,-0.124445},  {0.078113,-0.403396},  {-0.086168,-0.077122},  {-0.024422,0.160412}},
+  {  {0.133377,0.050234},  {-0.422389,-0.258499},  {-0.015039,0.148372},  {-0.043008,0.042826}},
+  {  {-0.028461,0.402616},  {0.026249,-0.510879},  {-0.149099,-0.008391},  {0.035683,-0.091728}},
+  {  {0.279212,0.203650},  {0.058601,-0.074051},  {0.023345,-0.141703},  {-0.031720,-0.076374}},
+  {  {0.268078,-0.028517},  {-0.047667,0.333660},  {0.585226,0.009540},  {-0.264899,0.241786}},
+  {  {0.243772,-0.278048},  {0.183448,-0.501459},  {0.346970,-0.130720},  {0.513764,-0.472347}},
+  {  {-0.516370,0.099855},  {-0.068486,-0.059831},  {0.345512,-0.363237},  {-0.377999,-0.132980}},
+  {  {0.207477,0.241947},  {-0.259904,-0.106711},  {0.076736,-0.375355},  {0.231505,0.100801}},
+  {  {-0.067932,0.009240},  {0.234047,0.282603},  {-0.556706,-0.495021},  {-0.534919,0.038842}},
+  {  {-0.008911,-0.206110},  {-0.558019,-0.300012},  {-0.247166,0.072925},  {0.020211,-0.291628}},
+  {  {-0.077345,0.162304},  {0.264104,0.049533},  {-0.669281,-0.366020},  {-0.225053,0.230398}},
+  {  {-0.344701,0.122569},  {-0.687418,0.151367},  {-0.410798,0.006934},  {-0.492509,0.267568}},
+  {  {0.652268,-0.167759},  {-0.053274,-0.336155},  {0.254565,-0.237585},  {0.166367,-0.183526}},
+  {  {-0.158887,-0.307262},  {-0.325838,0.167855},  {-0.098077,-0.121476},  {-0.263091,0.040721}},
+  {  {0.451123,-0.123993},  {0.043002,0.101413},  {0.105760,0.348384},  {0.300362,0.344852}},
+  {  {0.626542,0.194217},  {-0.085215,0.190287},  {0.410734,-0.128683},  {0.075397,-0.186311}},
+  {  {0.355915,0.411299},  {0.391607,0.148682},  {0.332943,0.211463},  {-0.142008,0.252619}},
+  {  {0.322234,-0.259853},  {-0.059185,-0.050467},  {0.020346,-0.454939},  {-0.196079,-0.372418}},
+  {  {-0.290778,0.625184},  {0.162559,-0.157000},  {-0.310926,-0.196453},  {-0.090794,0.090607}},
+  {  {-0.292114,0.057084},  {0.210841,0.162463},  {-0.174734,-0.179877},  {-0.397110,0.309046}},
+  {  {-0.545503,0.002671},  {0.482630,0.298433},  {0.261763,-0.212414},  {0.943999,0.203439}},
+  {  {0.100658,0.455934},  {0.528948,0.319301},  {0.091805,0.539295},  {-0.067833,0.397577}},
+  {  {0.124946,-0.073545},  {0.269438,0.365259},  {0.071964,-0.042427},  {-0.245738,-0.113193}},
+  {  {-0.185533,0.083695},  {-0.029065,-0.191401},  {-0.050121,0.019143},  {0.021585,-0.110199}},
+  {  {-0.193868,-0.655720},  {0.256105,-0.522931},  {-0.061841,-0.200688},  {-0.027884,-0.236400}},
+  {  {0.193301,0.057530},  {-0.243564,0.667818},  {-0.295781,0.055316},  {0.038874,-0.085848}},
+  {  {0.011785,0.144373},  {0.483641,0.181309},  {-0.254839,0.121461},  {0.195791,0.522883}},
+  {  {0.269510,0.043112},  {0.130732,-0.278834},  {-0.237420,-0.204660},  {0.031736,0.250031}},
+  {  {0.311520,0.475600},  {0.334873,0.314302},  {-0.399669,0.544440},  {0.043908,-0.083592}},
+  {  {0.084714,-0.373458},  {0.149177,-0.017630},  {0.112516,-0.029530},  {-0.118067,0.365395}},
+  {  {0.290655,-0.465648},  {-0.306663,-0.093608},  {0.117548,0.010509},  {0.047994,0.305511}},
+  {  {0.056130,0.025837},  {-0.085148,-0.405549},  {-0.000889,0.150828},  {-0.294468,0.090769}},
+  {  {-0.026238,0.206763},  {-0.035827,0.191150},  {0.184761,-0.436860},  {0.391517,0.375869}},
+  {  {-0.157098,-0.017041},  {-0.310583,0.007466},  {0.093189,-0.114124},  {-0.081830,0.188917}},
+  {  {-0.099520,0.169449},  {-0.448814,0.102187},  {0.414874,-0.155173},  {-0.301451,-0.379805}},
+  {  {-0.039633,0.137112},  {0.299287,-0.028959},  {-0.084194,-0.227466},  {-0.436013,0.206846}},
+  {  {-0.111253,-0.169665},  {-0.124955,0.044086},  {0.119277,0.257644},  {0.034760,-0.120348}},
+  {  {-0.000680,-0.381221},  {-0.268635,0.179197},  {-0.094189,0.307820},  {0.018035,0.209537}},
+  {  {0.235401,0.187852},  {0.180738,0.079864},  {-0.004662,-0.471080},  {0.243335,-0.001910}},
+  {  {-0.345383,-0.481771},  {-0.171982,0.386774},  {-0.046505,-0.640629},  {-0.299541,-0.116037}},
+  {  {0.104531,-0.216338},  {-0.016112,0.332837},  {-0.061611,0.027044},  {0.350349,-0.017170}},
+  {  {-0.177477,0.056674},  {-0.841625,-0.227394},  {0.123291,-0.031347},  {-0.157365,-0.040863}},
+  {  {-0.083101,-0.274397},  {0.354234,-0.374733},  {0.334759,0.179168},  {0.335408,0.242021}},
+  {  {-0.113617,0.018340},  {0.074596,0.596974},  {0.185245,-0.189192},  {0.175381,0.094824}},
+  {  {-0.490311,-0.118713},  {-0.148119,-0.247817},  {-0.157654,-0.089530},  {0.030907,0.329222}},
+  {  {0.057211,-0.045283},  {-0.161888,0.123292},  {0.217489,-0.180580},  {0.438249,0.396373}},
+  {  {-0.156105,-0.156698},  {-0.293354,0.154571},  {-0.101100,0.119492},  {0.075963,0.532119}},
+  {  {-0.299882,0.163880},  {-0.333608,0.130850},  {0.244609,0.267176},  {0.135427,0.155656}},
+  {  {0.275799,0.135315},  {-0.523854,-0.182311},  {0.119718,-0.221857},  {-0.100655,0.170687}},
+  {  {0.410499,0.213837},  {0.316934,0.364732},  {-0.266182,-0.333428},  {0.480303,0.140437}},
+  {  {-0.228357,0.712201},  {-0.217266,0.243744},  {-0.077160,-0.415566},  {0.236963,-0.032095}},
+  {  {-0.575525,-0.407173},  {-0.366629,-0.418648},  {0.283307,-0.540519},  {0.209535,0.555715}},
+  {  {0.262552,0.073856},  {-0.059241,-0.200618},  {0.032215,-0.584477},  {0.505345,0.177218}},
+  {  {0.121115,-0.068893},  {-0.404804,0.356993},  {-0.283214,-0.074082},  {-0.045393,0.555761}},
+  {  {-0.404623,-0.010290},  {0.153425,0.157278},  {-0.084394,-0.076790},  {-0.354709,0.354541}},
+  {  {0.015501,0.358369},  {-0.175281,0.340178},  {0.115858,0.217047},  {-0.143357,0.378122}},
+  {  {-0.156993,-0.123102},  {-0.116446,0.472620},  {0.060065,0.274302},  {0.033934,0.034772}},
+  {  {0.445688,0.073365},  {0.076703,0.127737},  {0.013379,-0.001000},  {-0.106641,0.106805}},
+  {  {0.136507,-0.050043},  {0.407353,0.115308},  {0.048256,-0.133254},  {-0.354396,0.203819}},
+  {  {0.057112,-0.119060},  {-0.034097,-0.006022},  {0.151687,0.131282},  {0.569624,-0.004227}},
+  {  {0.053252,0.266006},  {-0.068506,0.379758},  {0.068197,0.068154},  {0.509348,-0.315765}},
+  {  {-0.252571,0.386562},  {-0.242553,-0.009619},  {0.109045,-0.344774},  {0.070281,0.124619}},
+  {  {0.588064,0.153643},  {-0.286665,-0.078885},  {-0.065767,-0.509563},  {-0.238757,0.013033}},
+  {  {0.592504,0.372148},  {0.198193,-0.001872},  {-0.164003,0.489567},  {0.330735,-0.039598}},
+  {  {0.551413,-0.543238},  {0.198649,-0.158903},  {0.614444,0.307301},  {0.104530,-0.018691}},
+  {  {0.405624,0.220570},  {0.119711,-0.072664},  {0.401416,0.188302},  {-0.311105,-0.014044}},
+  {  {-0.223710,0.182913},  {0.048391,-0.155886},  {0.235030,-0.279472},  {-0.228086,-0.213426}},
+  {  {0.604851,0.078354},  {0.506793,-0.086594},  {-0.054977,0.102919},  {0.534624,0.017529}},
+  {  {-0.166029,-0.346383},  {0.269711,-0.507934},  {-0.373672,0.036060},  {-0.305587,-0.744863}},
+  {  {0.441346,-0.060188},  {-0.304415,0.202950},  {-0.062409,0.745989},  {-0.500153,-0.115002}},
+  {  {0.214561,0.283251},  {-0.066077,0.082956},  {0.057705,0.473443},  {-0.154244,-0.159944}},
+  {  {0.375115,-0.131898},  {0.421969,-0.203231},  {-0.346070,-0.298714},  {0.374636,-0.113327}},
+  {  {-0.465686,0.323633},  {0.063348,-0.238724},  {-0.175278,0.476950},  {-0.004760,-0.008709}},
+  {  {0.067378,0.189710},  {-0.301664,-0.103541},  {0.288538,-0.129511},  {-0.295042,0.370832}},
+  {  {-0.049706,-0.067306},  {-0.433963,-0.525780},  {-0.204288,-0.353320},  {0.585501,0.334824}},
+  {  {0.068500,0.349823},  {-0.085300,-0.223413},  {-0.501679,0.024676},  {0.097606,0.079271}},
+  {  {-0.029818,-0.074044},  {0.120673,0.273486},  {0.292707,-0.425173},  {-0.065695,-0.552875}},
+  {  {0.153431,0.213775},  {-0.545516,-0.090535},  {0.182061,-0.432678},  {-0.024692,0.008854}},
+  {  {0.012272,0.650140},  {0.183305,0.146783},  {-0.303150,-0.051364},  {-0.040416,-0.474937}},
+  {  {0.466283,-0.229823},  {-0.454822,-0.368263},  {0.339692,-0.352136},  {0.302220,0.168355}},
+  {  {0.285413,0.026541},  {-0.184937,-0.338350},  {0.179855,0.042314},  {0.191997,-0.290051}},
+  {  {0.057999,0.197916},  {-0.319933,-0.254896},  {-0.358152,0.097749},  {0.328450,0.278269}},
+  {  {-0.529053,0.163930},  {-0.206725,0.111785},  {0.003646,-0.051068},  {-0.409627,0.172131}},
+  {  {0.338982,0.264312},  {-0.296369,-0.689427},  {0.289000,0.122387},  {0.689854,0.114741}},
+  {  {-0.072556,0.058667},  {0.053296,0.089908},  {-0.258195,0.346536},  {0.179452,0.275513}},
+  {  {0.217976,0.105524},  {-0.093284,-0.340609},  {-0.085653,-0.094071},  {-0.245449,-0.204522}},
+  {  {0.299511,0.031897},  {0.094393,-0.237600},  {-0.351494,-0.360402},  {0.035671,-0.192860}},
+  {  {-0.375761,0.161259},  {-0.082457,0.404184},  {0.218729,-0.114659},  {-0.285135,0.086589}},
+  {  {0.020432,0.497980},  {-0.088665,-0.548632},  {0.036243,-0.155825},  {-0.018136,-0.224846}},
+  {  {0.064848,-0.705306},  {0.245386,-0.014907},  {0.339186,0.499815},  {0.288021,0.308072}},
+  {  {0.085955,-0.085473},  {-0.080541,-0.438020},  {0.267508,0.407301},  {0.095101,0.197840}},
+  {  {0.385409,0.061069},  {0.145571,0.246037},  {-0.010435,0.023842},  {0.748146,0.280212}},
+  {  {0.158664,-0.132333},  {0.714549,-0.065846},  {0.075026,0.079960},  {-0.361743,0.166121}},
+  {  {0.123921,0.032806},  {0.199295,0.417281},  {0.412380,0.372668},  {-0.114147,0.012044}},
+  {  {0.220517,-0.309738},  {0.144591,0.363805},  {0.197831,-0.250712},  {0.247870,0.194177}},
+  {  {-0.029792,0.445695},  {-0.010258,-0.187190},  {0.247151,0.752962},  {-0.081488,0.240171}},
+  {  {-0.301210,0.161370},  {-0.345753,0.173568},  {-0.325136,0.033637},  {-0.334615,0.248127}},
+  {  {-0.002860,0.126716},  {0.044056,0.394778},  {0.051727,0.262136},  {0.043435,0.268112}},
+  {  {-0.359698,0.355919},  {-0.016470,0.539318},  {-0.133463,0.159863},  {-0.182504,-0.181658}},
+  {  {-0.138521,-0.280747},  {0.352360,-0.204980},  {0.024765,0.084903},  {-0.016047,-0.158251}},
+  {  {-0.605491,-0.232194},  {0.362599,0.178285},  {0.136504,0.099373},  {0.133053,-0.127493}},
+  {  {-0.134097,-0.689844},  {0.276129,-0.129312},  {-0.226950,0.343167},  {-0.193134,0.055267}},
+  {  {0.265991,-0.028750},  {0.225480,0.204140},  {-0.071638,-0.257176},  {-0.061660,-0.281285}},
+  {  {-0.323990,-0.400253},  {0.449986,0.256602},  {-0.305499,0.137363},  {0.358872,-0.071735}},
+  {  {-0.550683,0.337922},  {-0.183415,0.040950},  {0.184440,0.142174},  {0.001831,0.060649}},
+  {  {-0.009584,-0.135027},  {-0.105114,-0.290293},  {-0.088416,-0.295909},  {0.285938,0.069336}},
+  {  {0.046654,-0.361367},  {-0.191181,0.194387},  {-0.018166,-0.199814},  {-0.561919,-0.059259}},
+  {  {-0.357145,0.451881},  {-0.439857,-0.254140},  {-0.018046,-0.074637},  {-0.073873,0.069698}},
+  {  {0.310901,0.238022},  {0.316223,0.102695},  {-0.312272,0.069989},  {-0.257023,0.142629}},
+  {  {-0.075574,0.308918},  {-0.527511,0.746990},  {-0.131306,0.298231},  {-0.057440,-0.417032}},
+  {  {0.063992,-0.887247},  {-0.242489,-0.011633},  {0.469357,-0.664555},  {0.067752,-0.019301}},
+  {  {0.052724,0.394885},  {-0.043939,-0.478548},  {-0.119808,-0.009861},  {0.258077,0.071794}},
+  {  {-0.190137,-0.535694},  {-0.031586,0.057199},  {0.060612,-0.238949},  {0.065260,-0.024833}},
+  {  {-0.634911,0.146988},  {0.447127,0.323905},  {-0.230478,0.151543},  {0.036625,-0.293484}},
+  {  {-0.411448,0.151426},  {0.257570,-0.122968},  {0.139098,-0.021651},  {-0.368472,0.213651}},
+  {  {-0.149453,0.454535},  {-0.210339,0.296542},  {0.040633,-0.229725},  {0.157802,0.005207}},
+  {  {0.080951,0.083094},  {-0.516394,0.280162},  {0.086662,-0.513597},  {-0.082402,-0.442305}},
+  {  {0.000189,-0.299236},  {0.379256,0.364702},  {-0.623435,-0.249511},  {0.241071,-0.235868}},
+  {  {-0.141085,-0.097336},  {0.041599,0.091306},  {-0.126351,0.218399},  {-0.197818,-0.233951}},
+  {  {0.359242,-0.169653},  {-0.465112,0.242055},  {0.013084,-0.473507},  {0.326926,0.191781}},
+  {  {0.304768,-0.033096},  {0.269308,-0.011298},  {-0.184114,0.267605},  {-0.114497,0.095484}},
+  {  {0.245680,-0.254547},  {-0.164196,0.295373},  {0.014902,0.195129},  {0.107310,-0.042995}},
+  {  {0.076061,-0.090716},  {-0.178272,-0.175612},  {-0.087566,0.606199},  {0.088978,-0.094910}},
+  {  {-0.253722,0.015712},  {-0.090821,0.114261},  {0.392550,0.111828},  {-0.485530,0.130041}},
+  {  {-0.055393,-0.090870},  {0.109115,0.299201},  {0.390637,0.118373},  {-0.468852,0.282569}},
+  {  {0.134651,-0.503563},  {-0.506943,0.252243},  {-0.284490,-0.312102},  {-0.244641,-0.120744}},
+  {  {-0.044476,0.010216},  {0.131850,0.101517},  {0.349638,0.046300},  {-0.202553,0.241071}},
+  {  {-0.241671,-0.339925},  {0.332388,0.526163},  {-0.005394,-0.244052},  {-0.093853,0.018542}},
+  {  {-0.101921,-0.112693},  {-0.006686,-0.034622},  {-0.333293,-0.572770},  {0.269088,0.155957}},
+  {  {-0.243034,0.062171},  {-0.127442,-0.062839},  {-0.120155,-0.201511},  {0.042808,-0.481094}},
+  {  {-0.033607,-0.542330},  {0.084847,-0.310522},  {-0.022108,-0.329436},  {0.139193,0.002162}},
+  {  {-0.046894,-0.225112},  {-0.146294,0.029209},  {-0.068051,0.268054},  {0.044824,0.595400}},
+  {  {0.502831,-0.210258},  {-0.145194,-0.184828},  {0.366492,-0.321215},  {0.097902,-0.212077}},
+  {  {0.014367,-0.468204},  {-0.035245,-0.184203},  {-0.097370,0.117162},  {0.488473,0.008289}},
+  {  {-0.454983,0.034629},  {-0.169942,0.009179},  {-0.158608,-0.003545},  {-0.086065,-0.375550}},
+  {  {0.266907,-0.008657},  {0.007073,0.089276},  {-0.258080,-0.069931},  {-0.235702,0.036613}},
+  {  {-0.260897,0.206469},  {-0.524603,-0.133800},  {0.041563,0.096580},  {-0.183627,-0.241137}},
+  {  {0.175936,-0.500950},  {-0.008606,0.188507},  {0.414018,0.231522},  {-0.179589,-0.263917}},
+  {  {0.146682,0.051886},  {-0.185684,0.336659},  {0.180751,0.088013},  {0.301963,0.203400}},
+  {  {0.086215,0.224183},  {-0.287850,0.249666},  {-0.536841,0.344035},  {0.231232,-0.027995}},
+  {  {0.171314,0.121981},  {-0.201640,-0.394449},  {-0.459541,-0.193336},  {-0.097314,-0.329971}},
+  {  {0.362382,-0.419323},  {-0.348975,-0.068758},  {0.233386,0.007622},  {0.346897,0.253847}},
+  {  {0.104055,0.018977},  {0.318347,0.287960},  {0.167338,0.444125},  {-0.100481,-0.153221}},
+  {  {-0.370652,0.377550},  {-0.046187,-0.122496},  {-0.277057,-0.494554},  {-0.042165,0.303449}},
+  {  {0.028520,0.267884},  {0.061266,-0.033241},  {-0.129171,0.210348},  {-0.157996,-0.020544}},
+  {  {0.416883,-0.531371},  {-0.594562,-0.206319},  {-0.354998,-0.155110},  {0.186548,0.011597}},
+  {  {0.312936,-0.481010},  {-0.041506,0.033691},  {-0.089896,-0.062443},  {-0.132532,0.332141}},
+  {  {0.159098,-0.337958},  {0.058072,-0.132705},  {-0.349372,-0.392527},  {-0.119614,-0.103995}},
+  {  {-0.329719,0.335981},  {0.001704,-0.558027},  {-0.091847,0.205856},  {0.079916,-0.518702}},
+  {  {0.160272,-0.461201},  {-0.080361,-0.618755},  {0.016109,-0.079389},  {-0.115677,-0.242694}},
+  {  {0.069101,-0.039756},  {0.570929,0.129946},  {-0.171891,0.080278},  {-0.237307,0.198061}},
+  {  {0.286210,0.134469},  {0.089154,-0.040032},  {0.018098,0.050934},  {0.152664,-0.074733}},
+  {  {0.301645,-0.186744},  {-0.569251,0.678041},  {-0.086198,-0.355228},  {0.145390,0.006819}},
+  {  {0.123820,-0.039840},  {-0.104958,-0.079176},  {0.320272,-0.098105},  {0.120773,-0.721187}},
+  {  {0.008603,0.168275},  {-0.356346,-0.418043},  {0.487357,0.159079},  {-0.122079,-0.625331}},
+  {  {0.193805,0.191173},  {0.121689,0.577862},  {0.361145,-0.238519},  {0.189142,-0.120365}},
+  {  {0.205872,0.506972},  {0.185040,-0.213607},  {-0.300622,0.237747},  {-0.205006,0.064606}},
+  {  {0.150218,-0.005475},  {0.131682,-0.237559},  {-0.284699,0.172347},  {-0.326346,-0.110994}},
+  {  {-0.428772,0.095781},  {0.088997,-0.554301},  {-0.027058,-0.258987},  {0.026624,-0.111769}},
+  {  {-0.387364,-0.373952},  {0.255240,-0.521831},  {-0.388858,0.156181},  {-0.215389,-0.313737}},
+  {  {0.122469,-0.270588},  {-0.245651,0.142192},  {-0.051836,0.064418},  {-0.162756,0.064064}},
+  {  {0.090555,-0.195261},  {0.075838,0.280906},  {0.438603,0.103674},  {-0.330922,0.036343}},
+  {  {-0.439965,-0.056238},  {0.074443,-0.005512},  {0.454568,-0.005669},  {-0.247008,0.102724}},
+  {  {0.735395,-0.403461},  {-0.010502,-0.346938},  {-0.447092,-0.249129},  {0.546815,-0.031365}},
+  {  {0.661934,-0.010685},  {0.374472,-0.059051},  {-0.433357,-0.162190},  {0.066079,-0.081903}},
+  {  {0.029673,-0.095089},  {0.151543,-0.161194},  {-0.306024,0.123837},  {-0.156017,0.263246}},
+  {  {-0.326430,0.060630},  {0.057331,-0.076996},  {-0.056679,-0.817793},  {0.166678,0.102087}},
+  {  {0.042304,0.338655},  {-0.197200,0.153612},  {0.017715,0.390955},  {0.321823,-0.256262}},
+  {  {0.119709,0.013648},  {-0.172531,0.426087},  {0.291565,0.279280},  {0.080981,0.383917}},
+  {  {0.560157,0.707374},  {-0.274363,0.316987},  {0.303790,0.106691},  {0.791752,-0.059253}},
+  {  {-0.125287,0.037254},  {0.113988,-0.237066},  {-0.033617,-0.124468},  {0.200297,0.290500}},
+  {  {-0.099453,0.057509},  {0.403240,0.219347},  {-0.400434,0.047853},  {-0.419202,-0.433125}},
+  {  {0.096270,-0.416269},  {-0.082635,0.284145},  {0.241708,0.162581},  {-0.195656,0.371500}},
+  {  {-0.453867,-0.314253},  {0.497090,0.094136},  {0.031554,-0.093975},  {-0.354559,0.068035}},
+  {  {0.292815,-0.222662},  {-0.194458,0.013912},  {0.335312,-0.135256},  {0.154077,-0.268395}},
+  {  {-0.021624,-0.233776},  {0.027479,-0.129260},  {0.106552,0.410307},  {0.336726,0.271258}},
+  {  {-0.564414,0.200229},  {-0.026778,0.025833},  {0.256954,-0.159695},  {0.462558,0.000229}},
+  {  {-0.219016,-0.246607},  {0.235825,-0.402196},  {-0.153755,-0.365940},  {-0.008557,0.199175}},
+  {  {-0.150851,-0.532299},  {-0.356300,0.466685},  {0.082369,-0.007880},  {0.146835,-0.086287}},
+  {  {0.238574,0.043594},  {0.261569,0.113621},  {0.040133,0.172372},  {-0.119125,0.230920}},
+  {  {0.308503,0.100190},  {0.255597,-0.351762},  {-0.464365,0.323098},  {-0.207587,-0.069694}},
+  {  {0.130547,0.010142},  {-0.049972,-0.213893},  {-0.014041,0.311985},  {0.137673,-0.347950}},
+  {  {-0.086680,-0.391476},  {-0.495518,0.280736},  {-0.268681,0.176915},  {0.162318,0.007075}},
+  {  {-0.592450,0.037016},  {-0.246303,0.074470},  {-0.421026,0.229646},  {0.136144,0.033142}},
+  {  {-0.663077,0.006927},  {0.249174,-0.118136},  {0.135236,0.231997},  {-0.051767,0.069810}},
+  {  {0.158006,-0.010589},  {-0.126423,0.032265},  {0.384440,-0.482789},  {0.083930,-0.041596}},
+  {  {-0.107275,0.433097},  {0.228882,0.005491},  {-0.259030,0.211088},  {0.207871,0.185867}},
+  {  {0.127057,0.245708},  {-0.374643,-0.088120},  {-0.188721,0.110972},  {0.180255,-0.396976}},
+  {  {-0.091444,-0.001257},  {0.205483,0.531142},  {-0.184290,0.219803},  {-0.602029,-0.083879}},
+  {  {0.090004,-0.073035},  {-0.318365,0.003865},  {-0.023001,-0.072886},  {0.155029,0.004933}},
+  {  {0.150161,-0.047797},  {0.285417,0.076175},  {-0.157911,0.700126},  {-0.240971,-0.356821}},
+  {  {-0.249749,0.365461},  {0.019786,0.190980},  {0.156558,-0.013901},  {0.322725,0.014685}},
+  {  {-0.349094,0.408092},  {-0.064257,0.120068},  {-0.269976,-0.359059},  {-0.131080,-0.248116}},
+  {  {-0.275820,-0.426232},  {-0.012223,0.209922},  {0.155609,0.224234},  {-0.172628,-0.564935}},
+  {  {0.213990,-0.175654},  {0.687710,0.431803},  {0.253825,-0.044364},  {-0.063678,0.125600}},
+  {  {0.537560,0.238989},  {0.276030,0.071277},  {-0.489062,0.351953},  {-0.183653,0.179729}},
+  {  {0.218585,-0.179033},  {0.100758,0.083730},  {-0.050541,-0.102841},  {-0.068832,-0.056724}},
+  {  {-0.659510,-0.020775},  {0.015347,0.803935},  {-0.031689,-0.141336},  {-0.206792,0.278911}},
+  {  {0.183572,0.359188},  {0.050047,0.457418},  {-0.096600,0.184507},  {-0.600875,0.117718}},
+  {  {0.161460,0.169075},  {-0.264349,-0.252561},  {-0.122984,-0.388214},  {0.042490,-0.165163}},
+  {  {0.075767,0.401094},  {-0.205769,-0.228517},  {0.297610,-0.077188},  {-0.917020,-0.323387}},
+  {  {0.170191,-0.418353},  {-0.264060,0.046730},  {0.115544,-0.277143},  {-0.324407,-0.573902}},
+  {  {-0.089175,-0.031015},  {-0.431202,-0.293815},  {-0.319096,0.044373},  {-0.261045,0.156393}},
+  {  {-0.050451,0.008085},  {0.025346,-0.229599},  {-0.029224,-0.133644},  {0.096329,0.718894}},
+  {  {-0.200243,0.164983},  {0.174557,0.114397},  {-0.261547,-0.306955},  {0.126214,0.675886}},
+  {  {-0.252924,-0.259288},  {0.125639,0.117342},  {-0.168188,0.242621},  {-0.614182,0.189163}},
+  {  {-0.203669,0.216237},  {-0.341965,0.196155},  {0.037468,-0.081842},  {0.252153,-0.019450}},
+  {  {-0.060591,0.057774},  {-0.084345,0.289206},  {-0.213574,-0.388526},  {-0.574437,0.098093}},
+  {  {-0.562575,-0.469257},  {-0.134940,-0.295025},  {0.049850,0.343805},  {0.164630,0.158147}},
+  {  {0.175889,-0.042186},  {-0.501534,0.466667},  {-0.268245,0.056050},  {-0.437288,0.085981}},
+  {  {-0.690350,-0.389616},  {0.359702,0.010198},  {-0.069356,-0.104982},  {-0.280201,0.278051}},
+  {  {-0.128112,0.062066},  {-0.116195,-0.110040},  {-0.217336,-0.069854},  {0.458761,-0.263771}},
+  {  {-0.084646,0.088964},  {-0.088920,-0.223539},  {-0.179404,-0.276027},  {-0.414491,0.131846}},
+  {  {-0.547990,-0.166899},  {-0.391318,-0.361356},  {-0.002807,-0.049104},  {-0.010463,-0.198575}},
+  {  {-0.199288,0.092246},  {-0.086310,-0.140044},  {0.173532,0.549590},  {0.173059,-0.135199}},
+  {  {0.172739,-0.202049},  {-0.500409,-0.235050},  {0.004864,-0.093599},  {-0.512367,0.092678}},
+  {  {0.057804,0.621128},  {-0.265998,-0.187163},  {-0.314596,-0.201931},  {-0.266090,0.247971}},
+  {  {-0.009696,0.217425},  {0.351587,-0.079493},  {-0.169426,0.412127},  {-0.195940,0.080417}},
+  {  {-0.410704,0.113203},  {-0.091857,-0.283896},  {0.159312,-0.244307},  {0.088071,-0.291631}},
+  {  {-0.012095,0.202151},  {0.097899,0.131247},  {-0.226766,0.209171},  {0.168974,-0.059341}},
+  {  {-0.155634,-0.067134},  {-0.216319,0.167708},  {0.512302,-0.206821},  {-0.321984,0.210696}},
+  {  {0.148943,0.059004},  {0.373379,0.041416},  {-0.197942,-0.081652},  {0.133140,0.236666}},
+  {  {-0.187395,0.165562},  {-0.343350,0.018754},  {-0.159677,-0.566853},  {-0.001640,-0.027648}},
+  {  {0.163782,0.293334},  {0.036332,0.138021},  {-0.064558,-0.142167},  {0.259767,-0.115597}},
+  {  {0.121030,0.083697},  {0.024810,-0.342801},  {0.138902,-0.316408},  {0.124024,-0.234421}},
+  {  {-0.024343,0.446185},  {0.155320,-0.104991},  {0.135360,-0.381332},  {-0.272978,0.169109}},
+  {  {0.359805,0.002852},  {-0.166361,-0.370852},  {-0.284412,-0.390674},  {-0.224696,0.243857}},
+  {  {-0.135495,0.207078},  {-0.088234,0.376937},  {-0.814875,-0.192836},  {-0.207077,0.278174}},
+  {  {-0.250976,-0.537133},  {-0.017139,-0.363026},  {0.151263,-0.053573},  {0.157060,-0.022022}},
+  {  {0.343221,-0.123221},  {-0.089134,-0.233667},  {-0.239557,-0.120883},  {0.149270,-0.291819}},
+  {  {0.502411,0.243858},  {0.064279,-0.042317},  {0.244308,0.426273},  {0.115258,0.534448}},
+  {  {0.460384,0.116201},  {-0.006587,-0.052965},  {0.597874,0.237400},  {-0.136976,-0.055674}},
+  {  {-0.030452,0.221369},  {0.005662,-0.526857},  {-0.394345,-0.594409},  {0.092510,-0.405953}},
+  {  {-0.051779,-0.061778},  {0.786461,0.118242},  {-0.344586,-0.129979},  {0.894504,-0.205313}},
+  {  {0.331781,0.136261},  {0.393119,-0.112556},  {0.184879,0.303625},  {-0.150074,-0.195154}},
+  {  {0.031411,0.080052},  {0.554379,0.836549},  {-0.256779,0.187369},  {0.282648,0.452926}},
+  {  {0.022250,0.604992},  {-0.705455,-0.153929},  {0.216969,0.484779},  {-0.312277,0.274537}},
+  {  {0.024175,-0.110293},  {0.223588,-0.034500},  {0.178271,-0.041906},  {-0.164862,-0.301957}},
+  {  {0.000177,-0.391684},  {-0.244520,0.426967},  {-0.167607,0.322118},  {-0.363421,-0.024859}},
+  {  {-0.248823,-0.100511},  {0.101875,-0.427084},  {-0.075964,0.280731},  {0.008837,-0.382087}},
+  {  {-0.299886,0.127693},  {-0.217088,0.429609},  {0.186034,0.102096},  {-0.552744,0.230382}},
+  {  {0.605158,0.174801},  {-0.311193,-0.101680},  {0.061546,-0.072584},  {0.524856,-0.178276}},
+  {  {-0.127190,0.229758},  {-0.188527,0.367571},  {0.112216,0.052919},  {0.331260,-0.151535}},
+  {  {0.047299,0.358494},  {0.386306,0.351973},  {-0.419264,-0.045993},  {-0.272888,0.264139}},
+  {  {-0.085712,0.086740},  {0.533861,-0.311798},  {0.019341,-0.153873},  {-0.686380,0.111817}},
+  {  {0.101401,-0.002165},  {0.253583,-0.622254},  {-0.253818,0.678082},  {-0.106549,-0.278660}},
+  {  {0.166635,0.309350},  {0.432917,-0.146008},  {0.258851,0.672427},  {0.147021,-0.064743}},
+  {  {-0.472031,-0.127296},  {0.133710,0.370868},  {-0.352452,-0.297374},  {-0.193246,-0.081238}},
+  {  {0.049306,0.263954},  {-0.226056,0.031608},  {-0.020716,0.131896},  {-0.500833,0.083320}},
+  {  {-0.162786,-0.176787},  {-0.259091,-0.229662},  {-0.479914,-0.654043},  {-0.412901,0.113145}},
+  {  {-0.034338,-0.113323},  {-0.106373,0.422490},  {0.565830,0.113342},  {-0.449456,0.352516}},
+  {  {-0.495567,-0.260141},  {-0.301416,-0.031588},  {0.065189,-0.375019},  {0.261065,-0.100496}},
+  {  {-0.060755,0.373225},  {-0.190993,-0.204586},  {0.125869,0.195125},  {-0.136718,0.518666}},
+  {  {-0.121227,-0.140705},  {-0.421236,-0.122112},  {0.358874,0.190809},  {0.182613,0.015559}},
+  {  {-0.372553,0.266298},  {-0.204710,0.537836},  {0.192189,-0.097712},  {0.351409,0.187658}},
+  {  {0.050020,-0.079922},  {0.304566,0.052710},  {-0.350521,-0.260963},  {-0.448466,0.324565}},
+  {  {0.177481,0.507321},  {0.026964,-0.172614},  {-0.063634,0.036089},  {-0.145796,-0.423960}},
+  {  {-0.549544,-0.172574},  {-0.058013,0.170384},  {0.336716,0.237782},  {0.484133,-0.027802}},
+  {  {-0.075011,0.407211},  {-0.024945,0.021139},  {0.477806,-0.510355},  {0.057491,0.438869}},
+  {  {0.272389,0.518640},  {0.187689,0.057881},  {-0.273753,0.098045},  {-0.204553,0.469565}},
+  {  {-0.072684,0.019320},  {-0.180099,-0.185911},  {0.332242,-0.964138},  {-0.055424,-0.662741}},
+  {  {0.323052,0.231102},  {0.220313,-0.180294},  {-0.226098,-0.205153},  {-0.347678,-0.094264}},
+  {  {-0.309807,0.347090},  {0.248006,-0.054820},  {0.258767,0.040123},  {0.146635,0.289631}},
+  {  {-0.019799,-0.525711},  {0.083167,0.178840},  {0.617428,-0.206230},  {-0.318311,-0.388748}},
+  {  {-0.339295,-0.333504},  {-0.129246,0.255188},  {0.256071,-0.434421},  {0.440038,0.399693}},
+  {  {0.034333,-0.051881},  {-0.229416,0.291700},  {-0.033723,0.118917},  {0.084786,-0.142580}},
+  {  {-0.038502,-0.384894},  {-0.402881,-0.474330},  {0.454693,-0.012882},  {-0.491053,0.169587}},
+  {  {-0.159531,-0.390352},  {0.293604,-0.027252},  {0.235487,-0.011413},  {-0.270154,0.057752}},
+  {  {0.417679,-0.369494},  {0.191542,-0.499632},  {0.362184,-0.065383},  {-0.583128,-0.315048}},
+  {  {-0.023411,0.312475},  {-0.272480,0.053081},  {-0.126663,-0.389703},  {-0.041257,0.100169}},
+  {  {-0.512070,-0.000459},  {0.316160,-0.142520},  {-0.001064,-0.145740},  {0.376772,-0.156521}},
+  {  {-0.085864,0.069352},  {0.226263,-0.071519},  {0.120810,-0.146389},  {-0.098627,-0.060060}},
+  {  {-0.452822,-0.245564},  {0.363480,-0.559709},  {-0.528765,-0.097790},  {0.125119,-0.268130}},
+  {  {0.258255,0.359036},  {-0.072150,-0.048828},  {0.056580,-0.068168},  {-0.319077,-0.160286}},
+  {  {-0.038851,-0.014355},  {-0.472211,-0.380606},  {-0.224293,-0.211614},  {-0.189009,-0.460993}},
+  {  {-0.213751,-0.054265},  {0.124008,-0.230092},  {-0.237176,-0.183186},  {0.062169,0.180179}},
+  {  {0.186036,0.288622},  {0.131776,-0.434891},  {0.056124,-0.591780},  {-0.204979,0.008739}},
+  {  {-0.630205,-0.115577},  {0.082887,-0.032029},  {0.275139,-0.418408},  {-0.287928,-0.363370}},
+  {  {-0.372304,-0.373130},  {0.184356,0.374850},  {-0.355166,0.349403},  {-0.248177,-0.148117}},
+  {  {0.309448,-0.086800},  {0.134556,-0.412731},  {-0.135535,0.235598},  {-0.126734,-0.053616}},
+  {  {-0.053847,-0.377723},  {0.211095,-0.081442},  {0.504984,-0.304444},  {-0.038566,-0.260699}},
+  {  {-0.043668,-0.320508},  {0.253440,0.327733},  {-0.220489,0.163082},  {-0.243122,-0.162088}},
+  {  {0.272041,-0.133113},  {-0.867580,0.431133},  {0.120704,0.140710},  {-0.100544,-0.504906}},
+  {  {-0.167996,0.027994},  {-0.219122,-0.290150},  {0.154543,0.005285},  {0.422489,-0.248459}},
+  {  {-0.221783,0.187374},  {-0.160290,-0.351700},  {-0.078375,0.078507},  {0.100576,-0.064557}},
+  {  {0.180743,-0.073680},  {-0.033422,0.255362},  {0.206744,-0.131968},  {-0.084554,-0.701967}},
+  {  {0.070815,-0.161010},  {0.049762,-0.506614},  {0.281445,0.172096},  {0.233854,-0.162606}},
+  {  {0.029584,0.029795},  {0.167933,0.201140},  {-0.428108,0.239207},  {-0.384757,-0.156211}},
+  {  {-0.421753,-0.403460},  {-0.068371,-0.387026},  {0.295394,0.347505},  {-0.330042,0.028248}},
+  {  {-0.167874,-0.053649},  {0.435960,0.243740},  {0.020950,-0.079716},  {-0.201178,-0.021154}},
+  {  {-0.478552,0.149895},  {-0.196069,0.179231},  {0.100731,0.096427},  {0.275487,-0.065372}},
+  {  {-0.046086,-0.144322},  {-0.081379,-0.209169},  {0.329780,-0.628136},  {0.224595,-0.474586}},
+  {  {-0.613518,0.144507},  {0.153580,-0.086012},  {-0.153203,-0.151171},  {0.320162,-0.171669}},
+  {  {0.151753,0.260114},  {0.072969,-0.013845},  {-0.056000,0.122476},  {-0.164692,-0.207353}},
+  {  {-0.198894,0.491417},  {-0.033672,-0.222939},  {-0.782717,0.483884},  {-0.118945,0.057735}},
+  {  {0.005565,0.112025},  {-0.097701,-0.294581},  {-0.406290,0.011821},  {-0.036819,0.340880}},
+  {  {0.035830,-0.201691},  {-0.229630,-0.013521},  {0.075843,0.355415},  {-0.461471,0.276728}},
+  {  {0.462180,-0.698787},  {-0.445679,0.267831},  {-0.248870,0.272786},  {-0.316451,0.375315}},
+  {  {-0.062385,-0.128004},  {0.463397,-0.083143},  {-0.223740,0.361141},  {-0.174683,-0.176110}},
+  {  {-0.493490,0.119962},  {0.044678,0.379576},  {-0.091953,0.130660},  {0.112553,-0.533401}},
+  {  {-0.315330,-0.239101},  {-0.236109,-0.149813},  {-0.091038,-0.179157},  {-0.489021,0.315986}},
+  {  {-0.291056,-0.125378},  {0.066180,-0.444660},  {-0.132314,0.826316},  {-0.608603,-0.031863}},
+  {  {-0.142302,-0.498945},  {-0.176933,0.737322},  {-0.280277,0.134375},  {-0.098022,-0.049478}},
+  {  {-0.454735,-0.047583},  {-0.565409,0.134555},  {-0.172797,-0.149378},  {0.045524,-0.203377}},
+  {  {-0.545220,-0.348348},  {-0.078910,0.498200},  {-0.603216,0.033016},  {0.087622,0.431977}},
+  {  {-0.052281,0.230053},  {0.384460,-0.361470},  {0.130074,0.337060},  {-0.300222,0.321375}},
+  {  {0.192759,0.088328},  {-0.018645,-0.676572},  {-0.022448,-0.343645},  {-0.136674,-0.083915}},
+  {  {-0.169028,0.358224},  {0.162984,0.668363},  {0.000838,0.299548},  {0.104827,-0.033189}},
+  {  {0.549265,-0.041655},  {-0.563883,-0.595276},  {-0.122963,-0.103295},  {0.150705,-0.265804}},
+  {  {0.225920,0.118360},  {-0.117574,-0.002741},  {-0.091999,0.253816},  {0.128415,0.213468}},
+  {  {0.188648,0.130925},  {-0.134975,-0.231525},  {0.177100,-0.189467},  {-0.623359,-0.870831}},
+  {  {-0.306345,-0.499669},  {0.426688,0.026102},  {-0.076894,0.487078},  {0.123985,-0.111148}},
+  {  {-0.161171,0.322309},  {0.103725,0.370546},  {-0.195975,0.138884},  {0.076040,-0.429248}},
+  {  {0.293598,-0.107841},  {0.101084,-0.274654},  {-0.008407,0.044039},  {-0.442580,-0.573657}},
+  {  {-0.157276,0.259698},  {0.134826,0.552039},  {0.123858,-0.179623},  {0.405607,-0.052280}},
+  {  {-0.110172,0.100793},  {0.150476,0.050423},  {0.117329,0.397467},  {-0.011744,0.433637}},
+  {  {0.412879,-0.467523},  {-0.122821,-0.240503},  {0.564931,-0.720087},  {0.277058,0.060957}},
+  {  {0.508622,0.130913},  {0.045999,0.171607},  {0.161552,-0.018655},  {-0.089951,0.052533}},
+  {  {0.516733,0.363644},  {0.155072,0.114691},  {0.146474,-0.037485},  {0.473569,0.349376}},
+  {  {-0.181486,-0.001031},  {0.081226,-0.320215},  {0.758419,-0.170350},  {0.051254,-0.421202}},
+  {  {0.086832,-0.068656},  {-0.275439,0.011697},  {-0.187045,0.164539},  {0.326636,0.140882}},
+  {  {-0.281786,-0.234776},  {-0.279920,0.018957},  {-0.612378,0.119639},  {0.504112,0.107157}},
+  {  {0.002761,-0.220022},  {-0.269992,0.314836},  {-0.033970,-0.246868},  {-0.467403,0.299340}},
+  {  {0.175979,0.002067},  {-0.225810,-0.423784},  {0.039353,0.464520},  {0.291001,-0.232498}},
+  {  {0.335621,0.387737},  {0.170337,-0.566674},  {0.039566,-0.141503},  {-0.320886,0.131850}},
+  {  {-0.128517,0.148529},  {-0.326366,-0.143009},  {-0.134317,-0.050097},  {-0.122751,0.307493}},
+  {  {-0.162453,0.000215},  {-0.774821,-0.232180},  {0.635256,0.242493},  {-0.155597,-0.342856}},
+  {  {0.086958,-0.075834},  {-0.273125,-0.413269},  {0.023357,-0.219333},  {0.098744,0.178131}},
+  {  {0.287212,-0.167848},  {-0.113376,-0.138184},  {-0.301722,0.283789},  {-0.231011,-0.093221}},
+  {  {-0.064651,0.204041},  {0.170784,0.496631},  {0.031486,-0.167687},  {-0.204872,0.343666}},
+  {  {0.073439,0.107610},  {-0.135846,-0.046685},  {0.232823,0.070048},  {-0.220308,0.349654}},
+  {  {-0.483123,-0.634566},  {0.263157,0.267612},  {-0.009499,0.141829},  {0.105101,0.497112}},
+  {  {0.308704,-0.030905},  {0.081339,0.503197},  {-0.198621,0.097553},  {-0.256187,-0.006828}},
+  {  {0.279158,-0.288511},  {0.242053,-0.053646},  {-0.397605,0.467627},  {0.075981,0.109621}},
+  {  {-0.061416,-0.129049},  {0.037884,-0.628939},  {0.249860,0.193028},  {0.518050,0.095677}},
+  {  {0.015633,0.208625},  {0.410430,-0.108274},  {-0.017577,-0.249220},  {-0.663620,-0.057646}},
+  {  {-0.386144,0.101896},  {-0.289335,-0.021553},  {0.008933,0.138690},  {0.432972,-0.179303}},
+  {  {0.472990,-0.227674},  {0.211031,-0.196656},  {-0.179655,-0.062053},  {-0.173843,-0.250873}},
+  {  {-0.177167,0.148105},  {0.515155,0.049309},  {0.153913,-0.054680},  {0.154416,-0.149354}},
+  {  {-0.378151,-0.529605},  {0.543997,-0.629351},  {-0.488092,0.371209},  {0.148977,-0.500769}},
+  {  {-0.298932,0.775249},  {-0.156693,0.169099},  {0.192338,0.085683},  {0.243607,-0.273957}},
+  {  {-0.646539,-0.098929},  {0.320154,-0.266220},  {-0.197256,0.126973},  {-0.076271,0.127551}},
+  {  {0.091143,0.048258},  {0.327315,-0.620576},  {0.238906,0.332557},  {-0.297491,-0.028042}},
+  {  {-0.897302,0.005616},  {-0.057198,0.036047},  {-0.385703,-0.252269},  {0.355031,-0.130695}},
+  {  {-0.282227,-0.116572},  {0.256442,-0.267655},  {-0.484174,0.161397},  {0.210853,-0.096762}},
+  {  {-0.456225,0.040804},  {-0.158774,-0.025065},  {0.271553,-0.065267},  {0.280465,0.076303}},
+  {  {0.389077,-0.317746},  {0.159268,-0.054514},  {-0.292418,0.282627},  {0.259012,-0.232612}},
+  {  {0.256202,-0.472650},  {-0.041732,-0.060537},  {-0.203934,-0.039773},  {-0.190480,-0.273329}},
+  {  {0.212706,0.038207},  {-0.229275,-0.178065},  {-0.177929,0.255039},  {-0.529620,-0.188948}},
+  {  {0.107730,-0.248778},  {0.166051,0.281076},  {-0.043225,-0.100508},  {0.011603,-0.013182}},
+  {  {0.007717,0.019110},  {0.380199,0.279756},  {0.172197,0.740602},  {0.141028,-0.607718}},
+  {  {0.043620,0.081221},  {0.478237,-0.089515},  {-0.326453,-0.095982},  {0.174018,-0.289185}},
+  {  {-0.303101,-0.090081},  {0.012505,0.214967},  {-0.118853,-0.131763},  {-0.120371,0.329118}},
+  {  {-0.354942,0.123753},  {0.199646,0.209581},  {0.212102,0.110778},  {-0.025481,0.164322}},
+  {  {-0.042263,-0.141988},  {0.018359,-0.337862},  {-0.260655,-0.088932},  {-0.021313,-0.051210}},
+  {  {0.012075,0.282060},  {-0.575799,0.217554},  {-0.016913,-0.102201},  {0.005143,-0.378669}},
+  {  {-0.368877,-0.191366},  {-0.263846,0.104310},  {-0.326166,-0.132103},  {-0.069314,-0.336371}},
+  {  {-0.638917,0.312666},  {0.076254,-0.045576},  {-0.306320,0.392910},  {-0.202712,-0.236029}},
+  {  {0.296275,-0.051005},  {0.297655,0.058970},  {-0.207287,-0.029545},  {0.186180,-0.311233}},
+  {  {-0.308811,-0.128891},  {0.393455,0.312561},  {-0.323936,-0.216938},  {-0.279997,-0.312598}},
+  {  {-0.017715,0.192334},  {0.191040,-0.031431},  {-0.400927,0.226484},  {0.528582,0.142199}},
+  {  {0.016658,0.059584},  {-0.143142,0.053582},  {0.044942,-0.370173},  {0.079287,0.225220}},
+  {  {0.129110,0.101918},  {0.137879,-0.239667},  {-0.021762,0.286119},  {-0.030631,-0.128959}},
+  {  {0.247051,0.247382},  {-0.690824,0.434746},  {0.312531,-0.166914},  {0.431212,-0.183300}},
+  {  {0.210177,0.114609},  {-0.308857,0.218722},  {-0.048561,-0.285957},  {0.437055,0.082692}},
+  {  {0.462024,0.474809},  {0.106575,0.196282},  {0.141879,0.031484},  {0.036606,-0.515950}},
+  {  {-0.296843,-0.252566},  {0.217226,0.374562},  {-0.236102,0.467397},  {0.237798,-0.757079}},
+  {  {0.022372,-0.078354},  {-0.110184,0.021228},  {0.181594,0.074618},  {0.235691,-0.405070}},
+  {  {0.003187,0.288786},  {0.359606,0.030613},  {0.078376,0.535216},  {0.197628,0.560212}},
+  {  {0.056269,-0.207321},  {-0.048339,-0.644288},  {-0.033071,0.157624},  {0.078392,-0.133799}},
+  {  {-0.050138,0.751557},  {-0.284543,0.249575},  {-0.582029,0.241567},  {-0.321171,-0.385637}},
+  {  {-0.472612,0.104666},  {0.352327,-0.093044},  {-0.014852,-0.012402},  {0.081522,-0.443913}},
+  {  {-0.251592,0.202083},  {-0.092225,-0.019708},  {-0.031896,0.001121},  {-0.026742,0.013063}},
+  {  {0.277494,-0.051027},  {0.230204,-0.064048},  {-0.378301,0.098841},  {-0.046177,0.199849}},
+  {  {-0.248311,-0.367319},  {0.051378,-0.013866},  {-0.210158,0.123566},  {-0.091994,0.196944}},
+  {  {0.124777,-0.497228},  {-0.443959,-0.310404},  {-0.138817,-0.212841},  {-0.103675,0.271919}},
+  {  {-0.218824,-0.029115},  {-0.005918,0.314294},  {-0.123951,-0.388590},  {-0.098144,-0.000446}},
+  {  {0.419822,-0.316253},  {0.226603,-0.159634},  {-0.431881,0.248757},  {-0.230967,-0.070311}},
+  {  {-0.269547,-0.042349},  {-0.211972,-0.000647},  {0.053123,-0.285005},  {-0.783638,-0.160576}},
+  {  {-0.005407,0.153375},  {0.326402,0.060740},  {0.290711,0.172841},  {0.409211,-0.141028}},
+  {  {-0.113567,0.071332},  {0.015458,0.126351},  {0.284529,0.180460},  {-0.700352,0.143537}},
+  {  {0.271442,0.114144},  {-0.619357,-0.123591},  {0.475729,0.076111},  {0.444297,0.286228}},
+  {  {0.264773,-0.237365},  {0.023818,0.563823},  {0.130032,0.085195},  {0.229399,0.037323}},
+  {  {-0.484696,0.124113},  {0.085900,-0.055420},  {-0.091183,0.200187},  {-0.062178,-0.098489}},
+  {  {-0.236513,-0.360860},  {0.003417,-0.267469},  {0.129667,-0.158791},  {0.049538,-0.409947}},
+  {  {0.255042,0.333242},  {-0.157095,-0.117623},  {0.269565,-0.379136},  {-0.373459,0.209706}},
+  {  {0.175282,-0.103688},  {-0.035506,-0.016863},  {0.242469,-0.138987},  {0.018964,-0.368706}},
+  {  {-0.436314,-0.086232},  {0.350027,0.121991},  {0.017147,-0.179083},  {0.086714,0.222335}},
+  {  {-0.155665,-0.683861},  {0.265249,-0.038379},  {0.175880,-0.160403},  {-0.289620,-0.106358}},
+  {  {-0.270386,-0.548841},  {-0.892965,0.661359},  {-0.173937,0.079489},  {0.097853,-0.496588}},
+  {  {0.176678,-0.031578},  {0.425756,0.353226},  {-0.249492,0.004345},  {0.429392,-0.065144}},
+  {  {0.040970,-0.006643},  {0.474779,0.519027},  {-0.434614,0.036193},  {-0.297140,-0.199760}},
+  {  {-0.349348,0.095671},  {-0.217545,0.497003},  {0.229333,0.204164},  {0.183723,0.054213}},
+  {  {0.627523,-0.132003},  {0.414922,-0.207594},  {-0.060518,-0.112704},  {0.111296,0.309715}},
+  {  {-0.447887,0.148215},  {-0.458216,-0.439480},  {-0.308149,-0.044863},  {0.318667,0.183143}},
+  {  {-0.116899,-0.295075},  {0.665278,0.102565},  {0.208556,-0.166291},  {0.337050,0.200414}},
+  {  {0.463266,-0.105257},  {-0.116619,-0.104356},  {0.009105,-0.504449},  {0.356936,0.466396}},
+  {  {-0.003930,0.069645},  {0.363183,0.241183},  {0.943932,-0.164304},  {0.056710,-0.284049}},
+  {  {0.167467,-0.072575},  {-0.243166,-0.075108},  {0.039487,-0.425519},  {0.176687,0.184184}},
+  {  {0.073522,-0.429456},  {-0.490993,0.304487},  {-0.010361,0.292852},  {-0.110772,-0.331516}},
+  {  {-0.444811,0.266264},  {0.144467,0.342760},  {0.269047,0.038791},  {-0.059013,0.304606}},
+  {  {-0.718936,-0.316461},  {0.106222,0.180340},  {0.002654,-0.328146},  {0.326098,0.166166}},
+  {  {0.682774,0.138110},  {0.133092,0.070017},  {0.406606,-0.060298},  {0.044134,-0.567706}},
+  {  {0.218301,-0.222084},  {-0.249033,0.111984},  {-0.240028,-0.038628},  {-0.076397,-0.328831}},
+  {  {0.240195,-0.192697},  {-0.049095,-0.020532},  {0.184800,0.248373},  {-0.107797,-0.215315}},
+  {  {0.282405,0.218027},  {0.689576,0.209545},  {0.230194,0.070232},  {-0.148190,0.120725}},
+  {  {0.001280,0.160150},  {-0.171090,-0.077593},  {0.080757,-0.357525},  {0.425190,0.071998}},
+  {  {-0.399293,-0.057862},  {-0.278881,0.369177},  {0.660429,0.021882},  {-0.247306,0.010255}},
+  {  {-0.372683,-0.054390},  {0.233675,-0.575181},  {-0.193380,0.039631},  {0.780341,-0.297500}},
+  {  {-0.021256,0.162674},  {0.188968,-0.170429},  {-0.177897,-0.054397},  {-0.111671,-0.705913}},
+  {  {0.167206,0.005994},  {0.261893,-0.310677},  {0.348813,-0.165625},  {0.272079,0.147623}},
+  {  {0.282788,0.450844},  {0.670252,-0.045115},  {-0.232873,0.167656},  {0.237266,-0.167403}},
+  {  {-0.432778,-0.004933},  {0.191563,0.141671},  {-0.333580,0.387492},  {-0.251357,-0.326546}},
+  {  {0.189885,0.021115},  {-0.345198,-0.039455},  {-0.606831,0.035055},  {0.008302,0.150339}},
+  {  {0.149662,0.028556},  {-0.352265,-0.061472},  {-0.328494,0.070046},  {-0.084629,-0.033776}},
+  {  {-0.393803,-0.175243},  {0.098778,0.319484},  {0.635575,-0.074077},  {0.272303,0.081426}},
+  {  {0.347321,-0.208954},  {-0.305327,-0.101401},  {-0.159838,-0.190008},  {0.320577,-0.230657}},
+  {  {-0.354666,0.221640},  {0.054974,0.039057},  {-0.102788,0.175127},  {-0.078936,-0.031547}},
+  {  {-0.094802,0.116260},  {0.192542,-0.242659},  {-0.020726,0.112136},  {-0.234005,0.303896}},
+  {  {0.338323,0.400542},  {0.173088,-0.167962},  {0.275075,-0.355857},  {0.032675,0.394586}},
+  {  {-0.121956,0.205782},  {0.386040,0.283440},  {0.196377,-0.476216},  {0.296771,-0.082415}},
+  {  {0.053290,0.251205},  {0.013283,-0.439975},  {-0.343783,-0.035132},  {-0.388895,-0.417480}},
+  {  {-0.221704,0.308375},  {0.018026,-0.399619},  {-0.043163,-0.050631},  {-0.039951,-0.377403}},
+  {  {-0.016731,-0.245156},  {-0.327890,0.019541},  {0.548853,-0.495454},  {0.179951,0.088605}},
+  {  {-0.007942,0.145052},  {-0.061160,-0.094042},  {0.034180,-0.182565},  {-0.477157,0.521269}},
+  {  {-0.409371,0.211094},  {-0.199085,0.160954},  {-0.146090,-0.168790},  {-0.138481,0.033407}},
+  {  {0.305289,0.494550},  {-0.132562,-0.026627},  {0.331440,-0.270939},  {0.400129,0.006980}},
+  {  {0.017709,0.477184},  {0.115615,-0.686163},  {-0.232599,0.010193},  {-0.030466,0.372934}},
+  {  {0.316832,0.162987},  {-0.160059,0.195700},  {0.006744,-0.072664},  {0.327453,-0.216116}},
+  {  {0.209876,0.506287},  {0.031023,0.080605},  {0.038732,0.164244},  {0.251549,0.053644}},
+  {  {0.229321,0.281343},  {-0.137941,-0.520068},  {0.065785,0.025930},  {0.016833,-0.052879}},
+  {  {-0.237999,0.025132},  {0.259859,0.432569},  {-0.493253,0.033327},  {0.591210,0.313192}},
+  {  {-0.228422,-0.078936},  {-0.122042,0.335354},  {0.037804,0.288142},  {0.063791,0.434678}},
+  {  {-0.224809,0.301278},  {0.566415,-0.063526},  {-0.155378,-0.494862},  {-0.155127,0.350880}},
+  {  {-0.335870,0.303514},  {0.289612,0.341449},  {0.009257,0.010707},  {-0.020231,-0.038568}},
+  {  {0.680252,-0.465089},  {0.397681,-0.433497},  {0.247393,-0.107111},  {0.058676,0.168195}},
+  {  {0.039578,-0.348684},  {-0.024993,0.327516},  {0.096453,0.457663},  {0.130413,0.135843}},
+  {  {-0.467869,-0.361154},  {0.155096,-0.131328},  {-0.304657,-0.308348},  {-0.073965,0.030247}},
+  {  {-0.201437,0.001473},  {0.446996,0.423075},  {-0.061201,0.237662},  {-0.350719,-0.212199}},
+  {  {0.331177,0.111346},  {-0.372870,-0.172531},  {0.167177,-0.245025},  {0.223442,0.127694}},
+  {  {-0.014620,-0.379008},  {0.032066,-0.446978},  {0.065415,0.126669},  {0.045734,-0.016189}},
+  {  {-0.401781,-0.024779},  {-0.043161,0.215822},  {-0.611732,0.167876},  {-0.250995,0.577554}},
+  {  {-0.082351,0.133760},  {0.268943,0.122705},  {0.090022,-0.171535},  {0.173245,0.122200}},
+  {  {-0.105657,-0.054048},  {0.277628,-0.059633},  {0.139341,-0.061801},  {0.054982,0.120608}},
+  {  {-0.564556,0.329524},  {-0.205449,-0.245544},  {0.134283,-0.239716},  {0.172456,0.317787}},
+  {  {0.240893,0.027910},  {-0.779836,0.334224},  {-0.163845,-0.096801},  {-0.214915,0.015389}},
+  {  {-0.491458,-0.236569},  {0.723136,0.120896},  {-0.279355,0.049278},  {0.040787,-0.100651}},
+  {  {-0.014526,0.254337},  {0.231298,0.077235},  {-0.300233,0.054249},  {-0.139203,-0.142036}},
+  {  {-0.010942,0.015491},  {-0.087115,0.013235},  {-0.147881,0.113229},  {-0.198188,-0.071774}},
+  {  {0.034825,-0.162960},  {-0.086402,-0.134662},  {-0.110036,-0.158377},  {-0.324578,-0.560300}},
+  {  {0.151523,0.098134},  {-0.192342,-0.244164},  {-0.427821,-0.143494},  {0.105182,-0.229518}},
+  {  {-0.243838,-0.207873},  {0.026748,-0.402442},  {0.643881,0.018653},  {-0.143612,0.044430}},
+  {  {-0.302882,-0.407361},  {-0.277802,0.102274},  {0.624597,-0.718286},  {-0.217515,0.054275}},
+  {  {0.742662,0.258210},  {0.515132,0.314964},  {0.223835,-0.368202},  {0.599708,-0.322687}},
+  {  {-0.027426,0.063008},  {-0.213694,-0.433592},  {0.146057,0.273598},  {-0.166725,-0.022171}},
+  {  {0.049245,-0.134684},  {-0.018353,-0.150306},  {0.001657,0.222507},  {-0.438816,0.298313}},
+  {  {-0.149907,0.134112},  {0.444079,-0.317764},  {-0.009438,-0.125807},  {0.041038,-0.118273}},
+  {  {0.551577,-0.029592},  {-0.358377,0.214297},  {-0.187758,0.123273},  {-0.562108,-0.254053}},
+  {  {0.089962,-0.461756},  {0.243228,0.378552},  {-0.329504,0.130369},  {0.795833,-0.118606}},
+  {  {-0.143847,0.233914},  {-0.065432,-0.009538},  {-0.045932,-0.456904},  {-0.095123,-0.027405}},
+  {  {-0.650994,-0.042882},  {-0.106258,0.195841},  {-0.054224,0.156926},  {0.134335,0.313253}},
+  {  {-0.069158,-0.568228},  {0.045789,-0.089844},  {-0.220245,-0.093721},  {0.063417,0.089514}},
+  {  {0.011381,0.586498},  {-0.437604,-0.164288},  {-0.169189,0.017737},  {-0.321377,-0.023027}},
+  {  {0.213454,-0.023227},  {-0.435901,-0.083661},  {0.329689,-0.162721},  {0.174870,-0.275193}},
+  {  {-0.132195,0.354806},  {0.371000,-0.179897},  {-0.041212,0.302581},  {-0.546320,-0.306548}},
+  {  {0.082207,0.211989},  {-0.119913,-0.175620},  {0.144611,-0.331013},  {0.115176,-0.592770}},
+  {  {-0.004779,0.251080},  {0.455567,0.012934},  {0.006712,0.003697},  {-0.075832,0.070085}},
+  {  {-0.475533,0.038234},  {-0.160870,-0.307172},  {0.056282,-0.341745},  {-0.062199,-0.345588}},
+  {  {-0.190724,0.182430},  {0.039671,0.035041},  {-0.263546,-0.095662},  {-0.056137,0.178071}},
+  {  {-0.281846,-0.543699},  {-0.140531,-0.459541},  {-0.021084,-0.128409},  {0.044652,0.038068}},
+  {  {-0.117599,0.498785},  {0.024698,0.446429},  {0.313370,-0.140753},  {-0.574128,-0.067568}},
+  {  {0.104019,-0.137892},  {-0.056605,0.212533},  {0.248536,0.093597},  {-0.145855,-0.269298}},
+  {  {0.645233,0.235739},  {0.369417,-0.231321},  {0.892515,-0.429466},  {0.221230,0.172989}},
+  {  {0.660023,0.188262},  {-0.314714,0.198499},  {-0.273496,-0.008311},  {-0.065954,0.026514}},
+  {  {0.143684,0.140383},  {0.231764,0.188496},  {-0.068177,-0.277947},  {0.753748,-0.505820}},
+  {  {-0.072658,-0.334230},  {0.050335,-0.461555},  {0.733732,0.438314},  {0.083266,0.363720}},
+  {  {-0.293573,0.039348},  {0.350445,0.130303},  {0.000060,-0.249070},  {-0.135674,0.317709}},
+  {  {-0.142936,0.329291},  {-0.338889,0.402064},  {0.216202,0.014242},  {-0.183612,-0.109445}},
+  {  {-0.283113,-0.328312},  {0.101481,-0.190903},  {0.269143,-0.066795},  {-0.477870,-0.169084}},
+  {  {-0.332132,0.075855},  {0.459367,0.548948},  {0.228574,-0.027249},  {0.597990,0.420692}},
+  {  {0.338707,0.185517},  {0.123306,0.254570},  {-0.567387,-0.017971},  {-0.159632,0.724618}},
+  {  {-0.099857,-0.023261},  {0.202366,-0.446425},  {-0.017213,-0.175690},  {-0.179668,0.191014}},
+  {  {-0.295693,0.050115},  {-0.229870,0.418125},  {0.081928,-0.042068},  {-0.217694,-0.498772}},
+  {  {0.270821,0.424281},  {0.098372,0.107956},  {-0.296930,0.012717},  {0.074703,-0.093238}},
+  {  {0.035538,-0.258941},  {-0.105462,0.264650},  {0.150153,-0.255382},  {-0.347271,0.027627}},
+  {  {-0.146697,0.195532},  {0.271766,0.285808},  {0.427760,0.313798},  {0.146033,-0.204501}},
+  {  {-0.174687,-0.130912},  {-0.072116,-0.220196},  {0.005406,0.079367},  {-0.341387,-0.337282}},
+  {  {0.040776,-0.273468},  {0.162054,-0.293889},  {-0.095893,-0.073910},  {-0.153809,0.072013}},
+  {  {-0.399039,0.197391},  {-0.122582,0.025539},  {0.093073,0.185761},  {-0.147191,-0.100242}},
+  {  {0.159192,-0.188934},  {0.319853,0.503711},  {0.298025,0.284095},  {0.367592,0.333317}},
+  {  {0.259993,-0.223631},  {0.133688,-0.150725},  {0.371685,-0.286109},  {-0.128682,-0.205815}},
+  {  {0.301786,0.145686},  {-0.006231,-0.053463},  {-0.399470,0.347937},  {0.287029,0.144095}},
+  {  {-0.124526,-0.006985},  {-0.215361,-0.302206},  {-0.276933,0.153569},  {-0.299072,-0.396968}},
+  {  {-0.099547,-0.038670},  {-0.116547,-0.446520},  {-0.066402,0.597855},  {0.409473,-0.366261}},
+  {  {-0.097590,0.516989},  {-0.371481,-0.084358},  {0.139753,0.066608},  {0.043319,0.038938}},
+  {  {0.411728,0.249545},  {-0.229102,-0.071913},  {-0.366588,0.203653},  {-0.060501,-0.150898}},
+  {  {-0.244834,-0.164805},  {-0.043895,0.460592},  {0.516437,0.606527},  {-0.564238,0.156219}},
+  {  {0.063852,-0.480668},  {-0.261661,0.276559},  {0.024709,0.018977},  {0.120096,-0.065969}},
+  {  {-0.459615,0.225288},  {0.205790,-0.091607},  {-0.481009,0.485888},  {0.095197,-0.591906}},
+  {  {-0.229465,-0.378202},  {-0.401284,0.408425},  {-0.439732,0.162614},  {0.463624,0.074766}},
+  {  {0.324169,-0.425729},  {0.373437,-0.006803},  {0.097621,-0.335840},  {-0.310547,0.302224}},
+  {  {0.353228,0.016554},  {0.202199,0.371007},  {0.065840,-0.013911},  {-0.039032,-0.139574}},
+  {  {-0.203928,-0.339581},  {0.063513,-0.385976},  {0.050521,-0.087251},  {0.055797,-0.053225}},
+  {  {-0.094803,-0.144163},  {0.324038,-0.011558},  {0.213554,-0.242747},  {0.103304,0.006201}}
+};
\ No newline at end of file
index d5999098051eb3971398de19c9d014377363fd75..13665c33b1822f744f9fe15e9bc5cac40408c1fd 100644 (file)
@@ -42,6 +42,7 @@
 #include "test_bits_coh.h"
 #include "octave.h"
 #include "comp_prim.h"
+#include "noise_samples.h"
 
 #define FRAMES 35
 #define RS     50
@@ -57,6 +58,7 @@ int main(int argc, char *argv[])
     
     int            tx_bits_log[COHPSK_BITS_PER_FRAME*FRAMES];
     COMP           tx_symb_log[NSYMROWPILOT*FRAMES][PILOTS_NC];
+    COMP           ch_symb_log[NSYMROWPILOT*FRAMES][PILOTS_NC];
 
     float          rx_amp_log[NSYMROW*FRAMES][PILOTS_NC];
     float          rx_phi_log[NSYMROW*FRAMES][PILOTS_NC];
@@ -64,14 +66,14 @@ int main(int argc, char *argv[])
     int            rx_bits_log[COHPSK_BITS_PER_FRAME*FRAMES];
                                           
     FILE          *fout;
-    int            f, r, c, log_r, log_data_r;
+    int            f, r, c, log_r, log_data_r, noise_r;
     COMP           phase, freq;
     int           *ptest_bits_coh, *ptest_bits_coh_end;
 
     coh = cohpsk_create();
     assert(coh != NULL);
 
-    log_r = log_data_r= 0;
+    log_r = log_data_r = noise_r = 0;
     ptest_bits_coh = (int*)test_bits_coh;
     ptest_bits_coh_end = (int*)test_bits_coh + sizeof(test_bits_coh)/sizeof(int);
 
@@ -92,10 +94,13 @@ int main(int argc, char *argv[])
             ptest_bits_coh = (int*)test_bits_coh;
        bits_to_qpsk_symbols(tx_symb, (int*)tx_bits, COHPSK_BITS_PER_FRAME);
 
-        for(r=0; r<NSYMROWPILOT; r++) {
+        for(r=0; r<NSYMROWPILOT; r++,noise_r++) {
             phase = cmult(phase,freq);
-            for(c=0; c<PILOTS_NC; c++)
-                ch_symb[r][c] = cmult(tx_symb[r][c], phase);
+            for(c=0; c<PILOTS_NC; c++) {
+                ch_symb[r][c] = cadd(cmult(tx_symb[r][c], phase), noise[noise_r][c]);
+                //printf("%d %d %f %f \n",r,c,ch_symb[r][c].real, ch_symb[r][c].imag);
+                //ch_symb[r][c] = cmult(tx_symb[r][c], phase);
+             }
         }
         phase = fcmult(1.0/cabsolute(phase), phase);
 
@@ -107,8 +112,10 @@ int main(int argc, char *argv[])
 
        memcpy(&tx_bits_log[COHPSK_BITS_PER_FRAME*f], tx_bits, sizeof(int)*COHPSK_BITS_PER_FRAME);
        for(r=0; r<NSYMROWPILOT; r++, log_r++) {
-            for(c=0; c<PILOTS_NC; c++) 
+            for(c=0; c<PILOTS_NC; c++) {
                tx_symb_log[log_r][c] = tx_symb[r][c]; 
+               ch_symb_log[log_r][c] = ch_symb[r][c]; 
+            }
         }
 
        for(r=0; r<NSYMROW; r++, log_data_r++) {
@@ -121,6 +128,7 @@ int main(int argc, char *argv[])
        memcpy(&rx_bits_log[COHPSK_BITS_PER_FRAME*f], rx_bits, sizeof(int)*COHPSK_BITS_PER_FRAME);
 
        assert(log_r <= NSYMROWPILOT*FRAMES);
+       assert(noise_r <= NSYMROWPILOT*FRAMES);
        assert(log_data_r <= NSYMROW*FRAMES);
     }
 
@@ -134,6 +142,7 @@ int main(int argc, char *argv[])
     fprintf(fout, "# Created by tcohpsk.c\n");
     octave_save_int(fout, "tx_bits_log_c", tx_bits_log, 1, COHPSK_BITS_PER_FRAME*FRAMES);
     octave_save_complex(fout, "tx_symb_log_c", (COMP*)tx_symb_log, NSYMROWPILOT*FRAMES, PILOTS_NC, PILOTS_NC);  
+    octave_save_complex(fout, "ch_symb_log_c", (COMP*)ch_symb_log, NSYMROWPILOT*FRAMES, PILOTS_NC, PILOTS_NC);  
     octave_save_float(fout, "rx_amp_log_c", (float*)rx_amp_log, NSYMROW*FRAMES, PILOTS_NC, PILOTS_NC);  
     octave_save_float(fout, "rx_phi_log_c", (float*)rx_phi_log, NSYMROW*FRAMES, PILOTS_NC, PILOTS_NC);  
     octave_save_complex(fout, "rx_symb_log_c", (COMP*)rx_symb_log, NSYMROW*FRAMES, PILOTS_NC, PILOTS_NC);