merge with remote
authorBenjamin Auder <benjamin.auder@somewhere>
Thu, 6 Feb 2020 19:05:43 +0000 (20:05 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Thu, 6 Feb 2020 19:05:43 +0000 (20:05 +0100)
49 files changed:
.git-fat [new submodule]
.gitfat [new file with mode: 0644]
.gitmodules [new file with mode: 0644]
.nbstripout [new submodule]
TODO
biblio/Clustering_Methods_for_Electricity_Consumers-DangHa2016.pdf [new file with mode: 0644]
biblio/Consumers_Profiles_SMart_Meter_Data-Ardakanian2014.pdf [new file with mode: 0644]
biblio/Forecasting_Smart_Meter_Data_Kernel_Estimation-Arora2014.pdf [new file with mode: 0644]
biblio/Forecasting_Uncertainty_by_Boosting_Additive_Quantile_Regression-BenTaieb2016.pdf [new file with mode: 0644]
biblio/Householders_Mental_Models_of_Domestic_Energy_Consumption-GabeThomas2016.pdf [new file with mode: 0644]
biblio/Knowledge_Mining_the_Australian_Smart_Grid_Smart_City_Data-Foliente2015.pdf [new file with mode: 0644]
biblio/Shape_Based_Curve_Clustering_And_Prediction-Teerarat2017.pdf [new file with mode: 0644]
biblio/Smart_Meter_Data_Load_Forecasting-Quilumba2014.pdf [new file with mode: 0644]
biblio/Two_Stage_Clustering_Using_FWT-Mets2016.pdf [new file with mode: 0644]
biblio/ours/Clustering_Functional_Data_Using_Wavelets-Antoniadis2013.pdf [new file with mode: 0644]
biblio/ours/ENERGYCON_leuven_GOUDE.pdf [new file with mode: 0644]
biblio/ours/cugliari-mathamsud2016.pdf [new file with mode: 0644]
contrat/2016_IRSDIproject_v3.pdf [new file with mode: 0644]
contrat/2016_IRSDIproject_v3.tex [new file with mode: 0644]
contrat/biblio_irsdi.bib [new file with mode: 0644]
epclust/DESCRIPTION [new file with mode: 0644]
epclust/LICENSE [new file with mode: 0644]
epclust/R/A_NAMESPACE.R [new file with mode: 0644]
epclust/R/clustering.R [new file with mode: 0644]
epclust/R/computeSynchrones.R [new file with mode: 0644]
epclust/R/computeWerDists.R [new file with mode: 0644]
epclust/R/de_serialize.R [new file with mode: 0644]
epclust/R/main.R [new file with mode: 0644]
epclust/R/plot.R [new file with mode: 0644]
epclust/R/utils.R [new file with mode: 0644]
epclust/inst/testdata/de_serialize.csv [new file with mode: 0644]
epclust/man/epclust-package.Rd [new file with mode: 0644]
epclust/src/filter.c [new file with mode: 0644]
epclust/tests/testthat.R [new file with mode: 0644]
epclust/tests/testthat/helper-clustering.R [new file with mode: 0644]
epclust/tests/testthat/helper-common.R [new file with mode: 0644]
epclust/tests/testthat/test-assignMedoids.R [new file with mode: 0644]
epclust/tests/testthat/test-clustering.R [new file with mode: 0644]
epclust/tests/testthat/test-computeSynchrones.R [new file with mode: 0644]
epclust/tests/testthat/test-computeWerDists.R [new file with mode: 0644]
epclust/tests/testthat/test-de_serialize.R [new file with mode: 0644]
epclust/tests/testthat/test-filterMA.R [new file with mode: 0644]
epclust/tests/testthat/test-utils.R [new file with mode: 0644]
epclust/vignettes/epclust.ipynb [new file with mode: 0644]
initialize.sh [new file with mode: 0755]
reports/2017-01/201701_IRSDIfollowup.pdf [new file with mode: 0644]
reports/2017-01/201701_point.tex [new file with mode: 0644]
reports/2017-01/201701_reunion.pdf [new file with mode: 0644]
reports/2017-04/TODO.ipynb [new file with mode: 0644]

diff --git a/.git-fat b/.git-fat
new file mode 160000 (submodule)
index 0000000..286bcd3
--- /dev/null
+++ b/.git-fat
@@ -0,0 +1 @@
+Subproject commit 286bcd30cea5f86363a04a9313afaf9e2e7a7b81
diff --git a/.gitfat b/.gitfat
new file mode 100644 (file)
index 0000000..6c0c6da
--- /dev/null
+++ b/.gitfat
@@ -0,0 +1,2 @@
+[rsync]
+remote = gitfat@auder.net:~/files/edfclust
diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..16826ed
--- /dev/null
@@ -0,0 +1,6 @@
+[submodule ".git-fat"]
+       path = .git-fat
+       url = https://github.com/yagu0/git-fat.git
+[submodule ".nbstripout"]
+       path = .nbstripout
+       url = https://github.com/kynan/nbstripout.git
diff --git a/.nbstripout b/.nbstripout
new file mode 160000 (submodule)
index 0000000..10c80cb
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 10c80cbd5b6356fa38179ca526ee2894d9b3bd20
diff --git a/TODO b/TODO
index b96bad4..957c111 100644 (file)
--- a/TODO
+++ b/TODO
@@ -8,11 +8,6 @@ geometric structure of high dim data and dim reduction 2011
 
 Piste à explorer pour les comparaisons: H20
 
-renvoyer nombre d'individues par classe ?
-hypothèse : données déjà ordonnées 48 1/2H sur 365j
-utiliser mixmod avec modèles allongés
-doit tourner sur machine plutôt standard, utilisateur "lambda"
-
 #https://stat.ethz.ch/pipermail/r-help/2011-June/280133.html
 #randCov = function(d)
 #{
@@ -24,8 +19,8 @@ doit tourner sur machine plutôt standard, utilisateur "lambda"
 #TODO: map-reduce more appropriate R/clustering.R ligne 88
 
 #TODO: use dbs(),
-               #https://www.r-bloggers.com/debugging-parallel-code-with-dbs/
-               #http://gforge.se/2015/02/how-to-go-parallel-in-r-basics-tips/
+#https://www.r-bloggers.com/debugging-parallel-code-with-dbs/
+#http://gforge.se/2015/02/how-to-go-parallel-in-r-basics-tips/
 
 PLOT:
 plot manifold 2D distances WER /
@@ -33,9 +28,26 @@ fenetre tempo forme des courbes /
 medoids /
 gain en prevision: clust puis full --> enercast
 
-réduire taille 17519 trop long ?
+-------
+
+Voici le code :
+
+library(epclust)
+
+n <- 5
+N <- 128
+M <- matrix(runif(n * N), nrow = n) #séries en lignes
+M <- t(apply(M, 1, cumsum)) / sqrt(n * N)
+matplot(t(M), type = 'l', lty = 1)
+
+dists3a <- computeWerDists(1:n, function(inds) M[,inds], n)
+
+# je passe de distance Wer à corrélations : moralement tout est à 0
+summary((1 - dists3a[lower.tri(dists3a)]^2) / N / n)
 
-TODO: revoir les arguments, simplifier (dans les clustering...),
+# or, les courbes sont très similaires, nous devrions être proche de 1 !
+corM <- cor(t(M))
+summary(corM[lower.tri(corM)])
 
 #si pas lissage --> on doit trouver 1 : TOCHECK
 #regarder biwavelets smooth.wavelet : s'en inspirer
diff --git a/biblio/Clustering_Methods_for_Electricity_Consumers-DangHa2016.pdf b/biblio/Clustering_Methods_for_Electricity_Consumers-DangHa2016.pdf
new file mode 100644 (file)
index 0000000..d4246a6
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 8bbeb48aa59cb1c178de33bc0ec14b16a1620e6b              1881055
diff --git a/biblio/Consumers_Profiles_SMart_Meter_Data-Ardakanian2014.pdf b/biblio/Consumers_Profiles_SMart_Meter_Data-Ardakanian2014.pdf
new file mode 100644 (file)
index 0000000..e8f9365
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 11b95c1d7861e7932919394f65487b551ab3e1cd               440221
diff --git a/biblio/Forecasting_Smart_Meter_Data_Kernel_Estimation-Arora2014.pdf b/biblio/Forecasting_Smart_Meter_Data_Kernel_Estimation-Arora2014.pdf
new file mode 100644 (file)
index 0000000..d0ef15d
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 95e3dae6c164ce8416a53306f94be7790ad021d8              1041535
diff --git a/biblio/Forecasting_Uncertainty_by_Boosting_Additive_Quantile_Regression-BenTaieb2016.pdf b/biblio/Forecasting_Uncertainty_by_Boosting_Additive_Quantile_Regression-BenTaieb2016.pdf
new file mode 100644 (file)
index 0000000..a317025
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat ff2b4d3ff02d23b1b5cecb4dbe151a44f484b78c               610765
diff --git a/biblio/Householders_Mental_Models_of_Domestic_Energy_Consumption-GabeThomas2016.pdf b/biblio/Householders_Mental_Models_of_Domestic_Energy_Consumption-GabeThomas2016.pdf
new file mode 100644 (file)
index 0000000..6e25cc8
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat e68c6327c27fbe78fbe963978bd39e79bf23ec56               697548
diff --git a/biblio/Knowledge_Mining_the_Australian_Smart_Grid_Smart_City_Data-Foliente2015.pdf b/biblio/Knowledge_Mining_the_Australian_Smart_Grid_Smart_City_Data-Foliente2015.pdf
new file mode 100644 (file)
index 0000000..d61500e
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 4c7021d0bdedf9e3ccdd870e875c9bada47fb65d               617895
diff --git a/biblio/Shape_Based_Curve_Clustering_And_Prediction-Teerarat2017.pdf b/biblio/Shape_Based_Curve_Clustering_And_Prediction-Teerarat2017.pdf
new file mode 100644 (file)
index 0000000..49a8e4d
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat c4affb23fccfb4132d71be25d791a5e96b766d82               372024
diff --git a/biblio/Smart_Meter_Data_Load_Forecasting-Quilumba2014.pdf b/biblio/Smart_Meter_Data_Load_Forecasting-Quilumba2014.pdf
new file mode 100644 (file)
index 0000000..d069d5c
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 7fe7696fa162a52b5731b2218e827818c90767c3              1215520
diff --git a/biblio/Two_Stage_Clustering_Using_FWT-Mets2016.pdf b/biblio/Two_Stage_Clustering_Using_FWT-Mets2016.pdf
new file mode 100644 (file)
index 0000000..f21437a
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 3fb7a893a7ddb72ea03380ff21ba8998b82b3758              1142074
diff --git a/biblio/ours/Clustering_Functional_Data_Using_Wavelets-Antoniadis2013.pdf b/biblio/ours/Clustering_Functional_Data_Using_Wavelets-Antoniadis2013.pdf
new file mode 100644 (file)
index 0000000..5801a64
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 7571c6c3b737bf2f57eab62fea99eb24a756eded               895937
diff --git a/biblio/ours/ENERGYCON_leuven_GOUDE.pdf b/biblio/ours/ENERGYCON_leuven_GOUDE.pdf
new file mode 100644 (file)
index 0000000..8943a9a
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 5b47ab0da075bababc52c7a140f2e791fb425306              1486805
diff --git a/biblio/ours/cugliari-mathamsud2016.pdf b/biblio/ours/cugliari-mathamsud2016.pdf
new file mode 100644 (file)
index 0000000..b3a5e8a
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 96fc0307b651a06a05f81c1f5d0f79a1fbd2bd45              2760474
diff --git a/contrat/2016_IRSDIproject_v3.pdf b/contrat/2016_IRSDIproject_v3.pdf
new file mode 100644 (file)
index 0000000..09731be
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 0f2f1d0a287a50db0ee689d72a05275e5100d61d               203071
diff --git a/contrat/2016_IRSDIproject_v3.tex b/contrat/2016_IRSDIproject_v3.tex
new file mode 100644 (file)
index 0000000..ed5cbfc
--- /dev/null
@@ -0,0 +1,441 @@
+\documentclass[12pt, a4paper]{article}  
+
+\usepackage[margin=2.5cm]{geometry}
+\usepackage[utf8]{inputenc}       % in encoding 
+\usepackage[T1]{fontenc}          % out-encoding f
+\usepackage{eurosym}
+\usepackage{lmodern, microtype}   % goes OK with T1 fontenc
+%\usepackage[authoryear, round]{natbib}
+\usepackage{natbib}
+\usepackage{color, tikz, graphicx, subfig}
+\usepackage{amssymb, amsmath, amsthm}
+\usepackage{setspace, lineno, url, xcolor}
+\usepackage{savetrees}
+
+\newcommand{\todo}[1]{\textcolor{blue}{TODO: #1}} % macro for todo entries
+
+% Style options
+\renewcommand\familydefault{\sfdefault} % Use with sans serif font
+\setlength{\bibsep}{0.0pt}              % Compact bibliography (natbib)
+
+\title{Disaggregated Electricity Forecasting using Clustering of Individual Consumers \\
+      {\normalsize \color{gray}  IRSDI - RESEARCH INITIATIVE IN INDUSTRIAL DATA SCIENCE}}
+
+\author{Benjamin Auder    \and
+        Jairo Cugliari    \and
+        Yannig Goude      \and
+        Jean-Michel Poggi 
+}
+\date{\normalsize\today
+\vspace{-1.2\baselineskip}}
+
+
+
+\begin{document}
+\maketitle
+
+%\begin{abstract}
+
+%\end{abstract}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Context}
+
+\subsection{Industrial}
+
+Electricity load forecasting is crucial for utilities for production
+planning as well as marketing offers. Recently, the increasing deployment of 
+smart grids infrastructure requires the development of more flexible data
+driven forecasting methods adapting quite automatically to new data sets. 
+Electricity load forecasting is crucial for utilities for production planning as 
+well as marketing offers. New metering infrastructures as smart meters 
+provide new and potentially massive informations about individual (household,
+small and medium enterprise) consumption. As an example, in France, 
+ERDF (Electricite Reseau Distribution de France the French manager of 
+the public electricity distribution network) deployed 250000 smart meters, 
+covering a rural and an urban territory and providing half-hourly household 
+energy used each day. ERDF plans to install 35 millions of them over the 
+French territory by the end of 2020 and exploiting such an amount of data 
+is an exciting but challenging task (see \url{http://www.erdf.fr/Linky}).
+We propose to build clustering tools useful for forecasting the load 
+consumption. The idea is to disaggregate the global signal in such a way that  
+the sum of disaggregated forecasts significantly improves the prediction of the 
+whole global signal. The strategy is in three steps: first we cluster curves 
+defining super-consumers, then we build a hierarchy of partitions within which 
+the best one is finally selected with respect to a disaggregated forecast 
+criterion. The proposed strategy is applied to a dataset of individual 
+consumers from the French electricity provider EDF. A substantial gain 
+of $16$ \% in forecast accuracy comparing to the 1-cluster approach is provided 
+by disaggregation while preserving meaningful classes of consumers.
+
+\subsection{Academic}
+
+In the context of economic seasonal univariate continuous time series, it is often 
+natural to segment it in time, into consecutive curves, for example days, which 
+are then treated as a discrete time series of functions. In particular, in the 
+electrical context, the shape of the curves exhibits rich information about the 
+calendar day type, the meteorological conditions or the existence of special 
+electricity tariffs. Using the information contained in the shape of the load 
+curves leads to very elegant formulation of functional forecasting.
+
+
+%Electricity load experts naturally look at daily demand data as time functions
+%called load curves. In a recent paper, \cite{shang2013} uses a functional time
+%series approach for forecasting short-term electricity demand. This paper is
+%illustrated by the half-hourly electricity demand from Monday to Sunday in South
+%Australia. The strategy is also to consider a seasonal univariate time series as
+%a time series of curves, then to reduce the dimensionality of curves by applying
+%a functional principal component analysis and finally, following
+%\cite{shang2011}, the principal component scores are forecasted using a
+%univariate ARIMA models. In addition, since data points in the daily electricity
+%demand are sequentially observed, a forecast updating method based on
+%nonparametric bootstrap approach is proposed to improve the accuracy of point
+%forecasts. With respect to this strategy, the scheme we propose handles the
+%forecasting problem in a functional way avoiding the hour by hour processing and
+%considers a more flexible way to construct the distribution leading to the
+%prediction interval.
+
+The shape of the curves exhibits rich information about the calendar day type,
+the meteorological conditions or the existence of special electricity tariffs. 
+Using the information contained in the shape of the load curves, \cite{antoniadis2012prevision} proposed a flexible nonparametric function-valued
+forecast model called KWF (\textit{Kernel + Wavelet + Functional}) well suited
+to handle nonstationary series. The predictor can be seen as a weighted average
+of futures of past situations, where the weights increase with the similarity
+between the past situations and the actual one. In addition, this strategy
+provides with a simultaneous multiple horizon prediction for a global forecast. 
+
+However, there is a need for local electricity load forecasting at different levels of the grid. 
+Bottom-up approaches, based on a two stage process combining clustering and forecasting 
+methods, are a promising perspective. First, it 
+consists in building classes in a population such that each class could be 
+sufficiently well forecast but corresponds to different load shapes or reacts 
+differently to exogenous variables like temperature or prices (see e.g. 
+\cite{labeeuw} in the context of demand response). The second stage consists in 
+aggregating forecasts to forecast the total or any subtotal of the population 
+consumption. For example, identify and forecast the consumption of a 
+sub-population reactive to an incentive is an important need to optimize a 
+demand response program. 
+
+\section{Past work}
+
+Few papers consider the problem of clustering individual consumption for 
+forecasting (e.g. \cite{iwafune2014short, Alzate, carevic2010applications, MisitiElec}). Recently, \cite{energycon} proposed to build clustering tools useful for the two tasks simultaneously: clustering individual customers and forecasting the load consumption. The idea is to disaggregate the global signal in such a way that the sum of disaggregated forecasts significantly improves the prediction of the whole global signal. The general strategy is in three steps: first we cluster individual curves defining super-consumers, then we built a hierarchy of partitions within which a best one is finally selected with respect to a disaggregated forecast criterion. The predictions are made with the KWF model which allows one to use it as a off-the-shelve tool.
+
+While this work has ended with an the specification of an algorithm, a current need is a real upscaling proof. A first step on this direction was done in 
+\cite{auder2014}.
+
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Aims}
+
+The method proposed in \cite{energycon} has been successfully tested on a small data set of EDF clients. With the current development of smart meters in France the available volume of individual data is increasing day after day. Then, there is a genuine need of measuring the upscale skills of the existent methods. 
+
+This projet's aim is twofold. First, we will evaluate the upscaling capacity of the strategy developed in \cite{energycon} to cope with the upgrowing volume of data. Second, we will study how to adapt the KWF prediction method to take into account an exogeneous variable. In our particular problem the exogeneous variables can be any meteorological measurement that affects the load demand and is available at the moment of the prediction.
+
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+
+\section{Means considered}
+
+\subsection{Methods}
+\paragraph{Clustering analysis.} In general, clustering methods look for groups of individuals on data in such a way that those belonging to the same group are more similar than those from other groups. Many methods exists to cluster data: 
+hierarchical, center-based, probabilistic, etc. Almost all of them depends heavily 
+on the choice of a similarity measure between individuals. For this challenge we plan
+to compare individuals in terms of their wavelet spectrum signature. Thanks to this strategy, non
+stationary signals may be fairly compared. Moreover, the signals need not to be 
+measured on the same temporal grid. However, in order to detect relevant results 
+the wavelet signatures should be corrected by exogenous information (e.g. the one
+provided as client characteristics).
+
+\paragraph{Wavelet analysis.} Since the objects to analyze (load curves) can be viewed
+as functions of time, functional data analysis techniques are one possible choice to
+represent these objects. From a stochastic point of view the functions are realizations
+of a non stationary random process. Wavelet transform can be used to extract 
+relevant information about the functions both on time and frequency. With an 
+appropriate representation of the objects, it is then possible to construct
+a meaningful distance between load curves.
+
+\paragraph{Forecasting with KWF}
+The basic idea of nonparametric forecasting is that similar cases in the past 
+have similar future consequences. For example  the electricity consumption is 
+divided into blocks of one day size. Then, using a dissimilarity measure, the 
+blocks similar to the last observed block are searched in the past and a vector 
+of weights is built. Finally, the forecast of the next  day is obtained by a 
+weighted average of the most similar future days using previous vector of 
+weights. From the statistical point of view, the model is an estimate of the 
+regression function using the kernel method, of the last block against all the 
+blocks in the past. In \cite{antoniadis2006functional}  this basic model is 
+extended to the case of stationary functional random variables. But in the 
+context of electrical power demand, the hypothesis of stationarity generally 
+fails: an evolving mean level and the existence of groups that may be seen as 
+classes of stationarity are to be considered. Corrections to take into 
+account these two main nonstationary features are considered in
+\cite{antoniadis2012prevision} defining a flexible nonparametric function-valued 
+forecast model called KWF (\textit{Kernel + Wavelet + Functional}) well suited 
+to handle nonstationary series. The predictor can be seen as a weighted average 
+of futures of past situations, where the weights increase with the similarity 
+between the past situations and the actual one. Again the similarity is defined 
+thanks to the wavelet decompositions of the two segments.
+
+
+\subsection{Technology}  % to be employed (hardware y software)}
+
+
+The volume of data to deal for this projet can be handled with standard
+but recent tools for data analysis.
+The specific software tools will be statistical programming language like \texttt{R} with some popular 
+libraries (\texttt{data.table}, \texttt{dplyr}) and specific packages to cope with wavelet analysis. All these elements are open source.
+
+When the computational burden will grow, we have direct access to larger computation capacities. 
+
+All the tools developed on the project will be made available as open source software licences.
+
+\subsection{Research team}  
+
+The proposed team for developing this projet is composed by theree 
+academic members :
+\begin{itemize}
+\item Benjamin Auder, LMO, Univ Paris Saclay
+\item Jairo Cugliari, ERIC, Univ Lyon
+\item Jean-Michel Poggi, LMO, Univ Paris Saclay, Univ Paris Descartes
+\end{itemize}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Data description} 
+\begin{itemize}
+\item a first dataset already used in \cite{energycon} could be used, at least in a first step, to calibrate the method. 
+\item simulated data could be obtained at EDF following \cite{bondu15} or any simulation method preserving confidentiality 
+of individual consumers. Obviously, any amount of such data could be produced to benchmark the scalability of our approach.
+\item Irish data provided by the Irish commission for energy regulation consisting in 2000 individual consumption (small and 
+medium enterprise and residential) at an half-hourly resolution as well as pre and post experiment survey (see \cite{Cer_a, Cer_b}).
+\end{itemize}
+
+
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Budget}
+The expected global budget for the projet is of 15000 \euro, which comprises a 1 day workshop.
+
+\paragraph{Internal budget} The members of the research team are based on the Paris area and Lyon. 
+The way we work includes video and audio conferences in a regular basis as well as several in-person meetings.
+
+We plan to present the work on international conferences both on data science and energy oriented meetings.
+
+Last, a stress test for the upscale skill of the proposed method will need to hire computing time on a specialized platform. We have access to 
+the Centre de Calcul de l'Institut National de Physique Nucléaire et de Physique des Particules (\url{http://cc.in2p3.fr/}) through the laboratory ERIC, Lyon 2.
+
+\paragraph{Worshop organization on Individual Electricity Consumers} 
+A 1-day workshop dedicated to Individual Electricity Consumers including
+sessions on data, packages and methods, could be organized in September
+2017, and could be proposed to The French Statistical Society (SFdS) as a
+satellite meeting of the Journées de Statistique 2018 which will be held in
+the campus of EDF Lab in May 2018.
+
+
+\begin{center}
+\begin{tabular}{lr} \hline
+\textbf{Internal budget}      & \textbf{10 000 \euro}\\
+\; Travels                    &  3 000 \euro\\
+\; Conference fees            & 3 000 \euro\\
+\; Internal meetings          & 2 000 \euro\\
+\; Hiring of high performance computing time & 2 000 \euro\\ 
+\textbf{Worshop organization} & \textbf{5 000 \euro} \\ 
+\; Invitations of researchers & 3 000 \euro\\
+\; Organization workshop      & 2 000 \euro\\ \hline
+\textbf{Global budget}        & \textbf{15 000 \euro} \\ \hline
+\end{tabular}
+\end{center}
+
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Vitas}
+
+\paragraph{Benjamin Auder} is CNRS Research Engineer at LMO, University Paris-Sud Orsay in France. 
+He obtained his PhD in statistics in 2011 at the university Université Pierre et Marie Curie, Paris. 
+His main research areas are Clustering, dimensionality reduction, manifold learning, machine learning
+in addition to software development and implementation issues of algorithmic solutions.
+
+(\url{http://auder.net/page-upsud/})
+
+\paragraph{Jairo Cugliari} is Assistant Professor of Statistics at University of Lyon in France. He obtained his PhD in statistics  
+in 2011 at the university Paris-Sud 11 Orsay. His main research areas are functional data analysis methods
+for classification and prediction for applied statistical problems.
+
+(\url{http://eric.univ-lyon2.fr/~jcugliari/})
+
+
+
+\paragraph{Jean-Michel Poggi} is Professor of Statistics at University of Paris Descartes
+and at University Paris-Sud Orsay in France. His main research areas are
+tree-based methods for classification and regression, nonparametric time
+series forecasting, wavelet methods and applied statistical modeling in energy
+and environment fields. His publications combine theoretical and practical
+contributions together with industrial applications and software development.
+
+\noindent
+He is an elected member of the ISI, he was President of the French Statistical
+Society (SFdS) and he is Vice-President of the FENStatS, Vice-President of ENBIS and President of ECAS.
+
+(\url{http://www.math.u-psud.fr/~poggi/})
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%                                        S E C T I O N
+%
+\section{Associated industrial company} % And members
+
+
+\paragraph{Yannig Goude} is a research-engineer/project manager at EDF R\&D and associate 
+professor at University Paris-Sud Orsay, France. He obtained his PhD in statistics and probability 
+in 2008 at the university Paris-Sud 11 Orsay. His research interests are electricity load forecasting, 
+more generally time series analysis and forecasting, non-parametric models and expert aggregation.
+
+(\url{https://fr.linkedin.com/in/yannig-goude-768b3980})
+
+\bibliographystyle{plain}
+\bibliography{biblio_irsdi} %,predintervals,rapportfinal}
+
+\end{document}
+
+
+
+\bibitem{Alzate} 
+C.~Alzate and M.~Sinn, 
+  Improved electricity load forecasting via kernel spectral clustering of 
+  smartmeter, 
+  \emph{International Conference on Data Mining}, vol. 948, pp. 943 -- 948, 
+  2013
+    
+\bibitem{antoniadis2006functional}
+A.~Antoniadis, E.~Paparoditis and T.~Sapatinas, 
+  A functional wavelet-kernel approach for time series prediction,
+  \emph{Journal of the Royal Statistical Society, Series B},
+  vol. 68(5), pp. 837 -- 857, 2006
+
+\bibitem{antoniadis2013clustering}
+A.~Antoniadis, X.~Brossat, J.~Cugliari, and J.-M.~Poggi,
+  Clustering functional data using wavelets,
+  \emph{International Journal of Wavelets, Multiresolution and Information 
+        Processing}, 
+  vol. 11(1), 2013
+
+\bibitem{antoniadis2012prevision}
+A. Antoniadis, X. Brossat, J. Cugliari, J.-M. Poggi,
+  Pr\'{e}vision d'un processus \`{a} valeurs fonctionnelles en pr\'{e}sence de 
+  non stationnarit\'{e}s. Application \`{a} la consommation 
+  d'\'{e}lectricit\'{e}
+  Journal de la Soci\'{e}t\'{e} Fran\c{c}aise de Statistique, 
+  Vol. 153, No. 2, 52--78, 2012
+
+\bibitem{brabec2015statistical} 
+Brabec, M. and Kon{\'a}r, O. and Mal{\`y}, M. and Kasanick{\`y}, I and Pelik{\'a}n, E., 
+  Statistical models for disaggregation and reaggregation of natural gas 
+  consumption data, 
+  \emph{Journal of Applied Statistics}, vol. 42(5), pp. 921--937, 2015
+\bibitem{carevic2010applications}
+Carevi{\'c}, S. and Capuder, T. and Delimar, M.
+  Applications of clustering algorithms in long-term load forecasting
+  \emph{Proceedings Energy Conference and Exhibition (EnergyCon), 
+  2010 IEEE International} 688--693, 2010
+\bibitem{Chicco}
+G. Chicco 
+  Overview and performance assessment of the clustering methods for electrical 
+  load pattern grouping, Energy , 42, 68 -- 80, 2012.
+  
+\bibitem{Figueiredo}   
+Figueiredo, V., Rodrigues, F., Vale, Z., Gouveia, J. B. 
+  An electric energy consumer characterization framework based on data mining 
+  techniques. 
+  Power Systems, IEEE Transactions on, 20(2), 596--602, 2005
+\bibitem{iwafune2014short}     
+Iwafune, Y., Yagita, Y., Ikegami, T., Ogimoto K.
+  Short-term forecasting of residential building load for distributed energy 
+  management 
+  \emph{Proceedings Energy Conference (ENERGYCON), 2014 IEEE International}
+  1197--1204, 2014
+\bibitem{kaufmanpj}    
+Kaufman, L. and Rousseeuw, P
+  Finding groups in data: An introduction to cluster analysis,
+  Hoboken NJ John Wiley \& Sons Inc, 1990
+\bibitem{Kwac}
+J. Kwac,  Flora, J., Rajagopal, R. 
+  Household Energy Consumption Segmentation Using Hourly Data 
+  Smart Grid, IEEE Transactions on, 5, 420--430, 2014
+\bibitem{labeeuw}
+Labeeuw, W., Stragier, J., and Deconinck, G. 
+  Potential of active demand reduction with residential wet appliances: 
+  A case study for Belgium. 
+  Smart Grid, IEEE Transactions on, 6(1), 315--323, 2015
+
+\bibitem{Liao}
+Warren Liao, T. 
+  Clustering of time series data--a survey
+  Pattern recognition, 38(11), 1857--1874, 2005
+\bibitem{MisitiElec}
+M.~Misiti, Y.~Misiti, G.~Oppenheim, and J.-M.~Poggi,
+  Optimized Clusters for Disaggregated Electricity Load Forecasting,
+  \emph{REVSTAT -- Statistical Journal}, vol. 8(2), pp. 105 -- 124, 2010
+   
+\bibitem{Mutanen}
+  Mutanen, A., Ruska, M., Repo, S., Jarventausta, P. 
+  Customer classification and load profiling method for distribution systems. 
+  Power Delivery, IEEE Transactions on, 26(3), 1755--1763, 2011
+
+%\bibitem{Piao}
+%Piao, M., Lee, H. G., Park, J. H., Ryu, K. H. 
+%  Application of Classification Methods for Forecasting Mid-Term 
+%  Power Load Patterns.
+%  In Advanced Intelligent Computing Theories and Applications. Springer, 2008
+\bibitem{Rasanen}
+T., R\"{a}s\"{a}nen, D., Voukantsis,  H., Niska, K., Karatzas, M., Kolehmainen
+  Data-based method for creating electricity use load profiles using large 
+  amount of customer-specific hourly measured electricity use data
+  Applied Energy, 87(11), 3538--3545, 2010
+\bibitem{Rhodes}       
+J.D. Rhodes, W.J. Cole, C.R. Upshaw, T.F. Edgar, M.E. Webber
+  Clustering analysis of residential electricity demand profiles
+  Preprint submitted to Applied Energy, March 18, 2014
+
+\bibitem{steinley2008new}
+D. Steinley and M. Brusco, 
+A new variable weighting and selection procedure for k-means cluster analysis. 
+\emph{Multivariate Behavioral Research}, 43:32, 2008.
+
+\bibitem{wijaya2015forecasting} 
+Wijaya, T. K., Sinn, M., and Chen, B.,
+  Forecasting Uncertainty in Electricity Demand, 
+  \emph{AAAI-15 Workshop on Computational Sustainability, EPFL-CONF-203769}, 
+        2015
+
+\bibitem{Zhou}
+K. Zhou, S. Yang, C. Shen
+  A review of electric load classification in smart grid environment, 
+  Renewable and Sustainable Energy Reviews, 24, 103 -- 110, 2013.
+
diff --git a/contrat/biblio_irsdi.bib b/contrat/biblio_irsdi.bib
new file mode 100644 (file)
index 0000000..260f404
--- /dev/null
@@ -0,0 +1,771 @@
+% This file was created with JabRef 2.10.
+% Encoding: Cp1252
+
+
+@InProceedings{Alzate,
+  Title                    = {Improved electricity load forecasting via kernel spectral clustering of smartmeter},
+  Author                   = {C. Alzate and M. Sinn},
+  Booktitle                = {International Conference on Data Mining},
+  Year                     = {2013},
+  Pages                    = {943-948},
+  Publisher                = {vol. 948}
+}
+
+@Article{antoniadis2013clustering,
+  Title                    = {Clustering functional data using wavelets},
+  Author                   = {A. Antoniadis and X. Brossat and J. Cugliari and J.-m. Poggi},
+  Journal                  = {International Journal of Wavelets, Multiresolution and Information Processing},
+  Year                     = {2013},
+  Pages                    = {1},
+  Volume                   = {11},
+
+  Unidentified             = {vol}
+}
+
+@Article{Antoniadis2012a,
+  Title                    = {Pr\'{e}vision d'un processus \`{a} valeurs fonctionnelles en pr\'{e}sence de non stationnarit\'{e}s},
+  Author                   = {A. Antoniadis and X. Brossat and J. Cugliari and J.-m. Poggi},
+  Journal                  = {Application \`{a} la consommation d'\'{e}lectricit\'{e} Journal de la Soci\'{e}t\'{e} Fran\c{c}aise de Statistique},
+  Year                     = {2012},
+  Number                   = {2},
+  Pages                    = {52-78},
+  Volume                   = {153},
+
+  Unidentified             = {Vol}
+}
+
+@Article{Antoniadis2014,
+  Title                    = {{Une approche fonctionnelle pour la pr{\'e}vision non-param{\'e}trique de la consommation d'{\'e}lectricit{\'e}}},
+  Author                   = {A. Antoniadis and X. Brossat and J. Cugliari and J.-M. Poggi},
+  Journal                  = {Journal de la Soci{\'e}t{\'e} Fran{\c{c}}aise de Statistique},
+  Year                     = {2014},
+  Number                   = {2},
+  Pages                    = {202 - 219},
+  Volume                   = {155}
+}
+
+@Article{antoniadis2014prevision,
+  Title                    = {Une approche fonctionnelle pour la pr\'evision non-param\'etrique de la consommation d’\'electricit\'e},
+  Author                   = {Antoniadis, A. and Brossat, X. and Cugliari, J. and Poggi, J.-M.},
+  Journal                  = {Journal de la Soci\'et\'e Fran\c{c}aise de Statistique},
+  Year                     = {2014},
+  Number                   = {2},
+  Pages                    = {202 -- 219},
+  Volume                   = {155},
+
+  Owner                    = {lcugliari},
+  Timestamp                = {2013.01.11}
+}
+
+@Article{Antoniadis2013,
+  Title                    = {{Functional Clustering using Wavelets}},
+  Author                   = {A. Antoniadis and X. Brossat and J. Cugliari and J.-M. Poggi},
+  Journal                  = {International Journal of Wavelets, Multiresolution and Information Processing},
+  Year                     = {2013},
+  Number                   = {1},
+  Volume                   = {11}
+}
+
+@Article{antoniadis2012prevision,
+  Title                    = {Pr\'evision d'un processus \`a valeurs fonctionnelles en pr\'esence de non stationnarit\'es. {A}pplication \`a la consommation d'\'electricit\'e},
+  Author                   = {Antoniadis, A. and Brossat, X. and Cugliari, J. and Poggi, J.-M.},
+  Journal                  = {Journal de la Soci\'et\'e Fran\c{c}aise de Statistique},
+  Year                     = {2012},
+  Number                   = {2},
+  Pages                    = {52 -- 78},
+  Volume                   = {153},
+
+  Owner                    = {lcugliari},
+  Timestamp                = {2013.01.11}
+}
+
+@Article{antoniadis2006functional,
+  Title                    = {A functional wavelet-kernel approach for time series prediction},
+  Author                   = {Antoniadis, A. and Paparoditis, E. and Sapatinas, T.},
+  Journal                  = {Journal-Royal Statistical Society Series B Statistical Methodoloty},
+  Year                     = {2006},
+  Number                   = {5},
+  Pages                    = {837},
+  Volume                   = {68},
+
+  Owner                    = {jairo},
+  Publisher                = {Blackwell Publishing Ltd},
+  Timestamp                = {2014.04.27}
+}
+
+@InProceedings{auder2014,
+  Title                    = {Parall{\'e}lisation de l'algorithme des k-m{\'e}do{\i}des. Application au clustering de courbes.},
+  Author                   = {Auder, B. and Cugliari, J.},
+  Booktitle                = {46\`emes Journ'ees de Statistique de la SFdS},
+  Year                     = {2014},
+
+  Owner                    = {jairo},
+  Timestamp                = {2016.05.17}
+}
+
+@InProceedings{bondu15,
+  Title                    = {Realistic and very fast simulation of individual electricity consumptions},
+  Author                   = {A. Bondu and A. Dachraoui},
+  Booktitle                = {2015 International Joint Conference on Neural Networks (IJCNN)},
+  Year                     = {2015},
+  Month                    = {July},
+  Pages                    = {1-8},
+
+  Doi                      = {10.1109/IJCNN.2015.7280339},
+  ISSN                     = {2161-4393},
+  Keywords                 = {Markov processes;pattern clustering;power consumption;power engineering computing;smart power grids;time series;MODL coclustering approach;Markov chain;generative time series model;realistic individual electricity consumption simulation;smart grid}
+}
+
+@Article{brabec2015statistical,
+  Title                    = {Statistical models for disaggregation and reaggregation of natural gas consumption data},
+  Author                   = {Brabec, M. and Kon{\'a}r, O. and Mal{\`y}, M. and Kasanick{\`y}, I. and Pelik{\'a}n, E.},
+  Journal                  = {Journal of Applied Statistics},
+  Year                     = {2015},
+  Number                   = {5},
+  Pages                    = {921-937},
+  Volume                   = {42},
+
+  Unidentified             = {vol}
+}
+
+@InProceedings{roy2005linear,
+  Title                    = {A non linear regression model for mid-term load forecasting and improvements in seasonality},
+  Author                   = {Bruhns, A. and Deurveilher, G. and Roy, J.S.},
+  Booktitle                = {Proceedings of the 15th Power Systems Computation Conference},
+  Year                     = {2005},
+  Pages                    = {22--26},
+
+  Owner                    = {jairo},
+  Timestamp                = {2014.04.27}
+}
+
+@Article{carevic2010applications,
+  Title                    = {Applications of clustering algorithms in long-term load forecasting},
+  Author                   = {Carevi{\'c}, S. and Capuder, T. and Delimar, M.},
+  Journal                  = {Proceedings Energy Conference and Exhibition (EnergyCon), 2010 IEEE International},
+  Year                     = {2010},
+  Pages                    = {688-693}
+}
+
+@Article{Chicco,
+  Title                    = {{Overview and performance assessment of the clustering methods for electrical load pattern grouping}},
+  Author                   = {G. Chicco},
+  Journal                  = {Energy},
+  Year                     = {2012},
+  Pages                    = {68 - 80},
+  Volume                   = {42}
+}
+
+@Article{chiou2012dynamical,
+  Title                    = {Dynamical functional prediction and classification, with application to traffic flow prediction},
+  Author                   = {Chiou, Jeng-Min},
+  Journal                  = {The Annals of Applied Statistics},
+  Year                     = {2012},
+  Number                   = {4},
+  Pages                    = {1588--1614},
+  Volume                   = {6},
+
+  Owner                    = {jairo},
+  Publisher                = {Institute of Mathematical Statistics},
+  Timestamp                = {2015.04.13}
+}
+
+@InProceedings{energycon,
+  Title                    = {Disaggregated Electricity Forecasting using Wavelet-Based Clustering of Individual Consumers},
+  Author                   = {J. Cugliari and Y. Goude and J.-M. Poggi},
+  Booktitle                = {Energy Conference (ENERGYCON), 2016 IEEE International},
+  Year                     = {2016},
+
+  Comment                  = {to appear},
+  Owner                    = {jairo},
+  Timestamp                = {2016.05.17}
+}
+
+@Article{degras2011simultaneous,
+  Title                    = {Simultaneous confidence bands for nonparametric regression with functional data},
+  Author                   = {D.A. Degras},
+  Journal                  = {Statistica Sinica},
+  Year                     = {2011},
+  Pages                    = {1735--1765},
+  Volume                   = {21},
+
+  Owner                    = {jairo},
+  Timestamp                = {2015.04.13}
+}
+
+@Article{Delattre2013,
+  Title                    = {On k-FWE-based critical values for controlling the false discovery proportion under dependence},
+  Author                   = {Sylvain Delattre and Etienne Roquain},
+  Journal                  = {Arxiv},
+  Year                     = {2013},
+  Note                     = {Preprint: arXiv:1311.4030},
+
+  Organization             = {Arxiv},
+  Owner                    = {jairo},
+  Timestamp                = {2014.01.13}
+}
+
+@Unpublished{devaine2011expert,
+  Title                    = {Forecasting the electricity consumption by aggregating specialized experts; a review of the sequential aggregation of specialized experts, with application to Slovakian and French country-wide one-day-ahead (half-)hourly predictions.},
+  Author                   = {Devaine, M. and Goude, Y. and Stoltz, G.},
+  Note                     = {preprint: hal-00484940},
+  Year                     = {2011},
+
+  Owner                    = {cugliari},
+  Timestamp                = {2011.08.04}
+}
+
+@TechReport{Devijver,
+  Title                    = {{Model-based clustering for high-dimensional data. Application to functional data}},
+  Author                   = {E. Devijver},
+  Institution              = {INRIA},
+  Year                     = {2014},
+
+  Journal                  = {Preprint INRIA}
+}
+
+@Article{dordonnat2008,
+  Title                    = {An hourly periodic state space model for modelling French national electricity load },
+  Author                   = {V. Dordonnat and S.J. Koopman and M. Ooms and A. Dessertaine and J. Collet},
+  Journal                  = {International Journal of Forecasting },
+  Year                     = {2008},
+  Note                     = {Energy Forecasting },
+  Number                   = {4},
+  Pages                    = {566 - 587},
+  Volume                   = {24},
+
+  Doi                      = {http://dx.doi.org/10.1016/j.ijforecast.2008.08.010},
+  ISSN                     = {0169-2070},
+  Keywords                 = {Kalman filter},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{dordonnat2012,
+  Title                    = {Dynamic factors in periodic time-varying regressions with an application to hourly electricity load modelling },
+  Author                   = {Virginie Dordonnat and Siem Jan Koopman and Marius Ooms},
+  Journal                  = {Computational Statistics \& Data Analysis },
+  Year                     = {2012},
+  Note                     = {1st issue of the Annals of Computational and Financial Econometrics Sixth Special Issue on Computational Econometrics },
+  Number                   = {11},
+  Pages                    = {3134 - 3152},
+  Volume                   = {56},
+
+  Doi                      = {http://dx.doi.org/10.1016/j.csda.2011.04.002},
+  ISSN                     = {0167-9473},
+  Keywords                 = {Kalman filter},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{ferraty2012regression,
+  Title                    = {Regression when both response and predictor are functions},
+  Author                   = {Ferraty, Fr{\'e}d{\'e}ric and Van Keilegom, Ingrid and Vieu, Philippe},
+  Journal                  = {Journal of Multivariate Analysis},
+  Year                     = {2012},
+  Pages                    = {10--28},
+  Volume                   = {109},
+
+  Owner                    = {jairo},
+  Publisher                = {Elsevier},
+  Timestamp                = {2015.04.13}
+}
+
+@Article{Figueiredo,
+  Title                    = {An electric energy consumer characterization framework based on data mining techniques.},
+  Author                   = {Figueiredo, V. and Rodrigues, F. and Vale, Z. and Gouveia, J. B.},
+  Journal                  = {Power Systems, IEEE Transactions on},
+  Year                     = {2005},
+  Number                   = {2},
+  Pages                    = {596-602},
+  Volume                   = {20},
+
+  Owner                    = {jairo},
+  Timestamp                = {2014.12.16}
+}
+
+@Article{Figueiredo2005,
+  Title                    = {An electric energy consumer characterization framework based on data mining techniques},
+  Author                   = {Figueiredo, V. and Rodrigues, F. and Vale, Z. and Gouveia, J. B.},
+  Journal                  = {Power Systems, IEEE Transactions on},
+  Year                     = {2005},
+  Number                   = {2},
+  Pages                    = {596-602},
+  Volume                   = {20}
+}
+
+@Article{Genovese2005,
+  Title                    = {Confidence Sets for Nonparametric Wavelet Regression},
+  Author                   = {Christopher R. Genovese and Larry Wasserman},
+  Journal                  = {The Annals of Statistics},
+  Year                     = {2005},
+  Number                   = {2},
+  Pages                    = {698--729},
+  Volume                   = {33},
+
+  Doi                      = {10.1214/009053605000000011},
+  Owner                    = {jairo},
+  Timestamp                = {2014.01.13}
+}
+
+@Article{gine2009exponential,
+  Title                    = {An exponential inequality for the distribution function of the kernel density estimator, with applications to adaptive estimation},
+  Author                   = {Gin{\'e}, Evarist and Nickl, Richard},
+  Journal                  = {Probability Theory and Related Fields},
+  Year                     = {2009},
+  Number                   = {3-4},
+  Pages                    = {569--596},
+  Volume                   = {143},
+
+  Owner                    = {jairo},
+  Publisher                = {Springer},
+  Timestamp                = {2015.04.13}
+}
+
+@Article{gneiting2014probabilistic,
+  Title                    = {Probabilistic Forecasting},
+  Author                   = {Gneiting, Tilmann and Katzfuss, Matthias},
+  Journal                  = {Annual Review of Statistics and Its Application},
+  Year                     = {2014},
+  Number                   = {1},
+  Pages                    = {125-151},
+  Volume                   = {1},
+
+  Doi                      = doi:10.1146/annurev-statistics-062713-085831,
+  Eprint                   = {http://dx.doi.org/10.1146/annurev-statistics-062713-085831},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.07}
+}
+
+@Article{gneiting2007strictly,
+  Title                    = {Strictly proper scoring rules, prediction, and estimation},
+  Author                   = {Gneiting, Tilmann and Raftery, Adrian E},
+  Journal                  = {Journal of the American Statistical Association},
+  Year                     = {2007},
+  Number                   = {477},
+  Pages                    = {359--378},
+  Volume                   = {102},
+
+  Owner                    = {jairo},
+  Publisher                = {Taylor \& Francis},
+  Timestamp                = {2015.04.13}
+}
+
+@Article{Goude,
+  Title                    = {{Local Short and Middle term Electricity Load Forecasting with semi-parametric additive models}},
+  Author                   = {Y. Goude and R. Nedellec and N. Kong},
+  Journal                  = {IEEE transactions on smart grid},
+  Year                     = {2013},
+  Number                   = {1},
+  Pages                    = {440 - 446},
+  Volume                   = {5}
+}
+
+@Article{iwafune2014short,
+  Title                    = {Short-term forecasting of residential building load for distributed energy management},
+  Author                   = {Iwafune, Y. and Yagita, Y. and Ikegami, T. and Ogimoto, K.},
+  Journal                  = {Proceedings Energy Conference (ENERGYCON), 2014 IEEE International},
+  Year                     = {2014},
+  Pages                    = {1197-1204}
+}
+
+@Article{johansen1990hotelling,
+  Title                    = {Hotelling's theorem on the volume of tubes: some illustrations in simultaneous inference and data analysis},
+  Author                   = {Johansen, Soren and Johnstone, Iain M},
+  Journal                  = {The Annals of Statistics},
+  Year                     = {1990},
+  Pages                    = {652--684},
+
+  Owner                    = {jairo},
+  Publisher                = {JSTOR},
+  Timestamp                = {2015.04.13}
+}
+
+@Article{Kwac,
+  Title                    = {{Household Energy Consumption Segmentation Using Hourly Data Smart Grid}},
+  Author                   = {J. Kwac and Flora and J and Rajagopal and R},
+  Journal                  = {IEEE Transactions on},
+  Year                     = {2014},
+  Pages                    = {420 - 430},
+  Volume                   = {5}
+}
+
+@Article{Kwac2014,
+  Title                    = {Household Energy Consumption Segmentation Using Hourly Data Smart Grid},
+  Author                   = {J. Kwac and Flora, J. and Rajagopal, R.},
+  Journal                  = {IEEE Transactions on},
+  Year                     = {2014},
+  Pages                    = {420-430},
+  Volume                   = {5}
+}
+
+@Article{labeeuw,
+  Title                    = {Potential of active demand reduction with residential wet appliances: A case study for Belgium},
+  Author                   = {Labeeuw, W. and Stragier, J. and Deconinck, G.},
+  Journal                  = {Smart Grid, IEEE Transactions on},
+  Year                     = {2015},
+  Number                   = {1},
+  Pages                    = {315-323},
+  Volume                   = {6}
+}
+
+@Article{launey2012construction,
+  Title                    = {Construction of an informative hierarchical prior distribution. Application to electricity load forecasting.},
+  Author                   = {Launay, T. and Philippe, A. and Lamarche, S.},
+  Journal                  = {arXiv},
+  Year                     = {2012},
+  Volume                   = {1109.4533},
+
+  Owner                    = {cugliari},
+  Timestamp                = {2012.10.29}
+}
+
+@Article{Liao2005,
+  Title                    = {{Clustering of time series data a survey}},
+  Author                   = {T. W. Liao},
+  Journal                  = {Pattern recognition},
+  Year                     = {2005},
+  Number                   = {11},
+  Pages                    = {1857 - 1874},
+  Volume                   = {38}
+}
+
+@Article{Liao,
+  Title                    = {of time series data--a survey Pattern recognition},
+  Author                   = {Warren Liao and T. Clustering},
+  Year                     = {2005},
+  Number                   = {11},
+  Pages                    = {1857-1874},
+  Volume                   = {38}
+}
+
+@Article{MisitiElec,
+  Title                    = {Optimized Clusters for Disaggregated Electricity Load Forecasting},
+  Author                   = {M. Misiti and Y. Misiti and G. Oppenheim and J.-m. Poggi},
+  Journal                  = {REVSTAT -- Statistical Journal},
+  Year                     = {2010},
+  Number                   = {2},
+  Pages                    = {105-124},
+  Volume                   = {8},
+
+  Unidentified             = {vol}
+}
+
+@Article{Mutanen,
+  Title                    = {{Customer classification and load profiling method for distribution systems}},
+  Author                   = {A. Mutanen and M. Ruska and S. Repo and P. Jarventausta},
+  Journal                  = {Power Delivery, IEEE Transactions on},
+  Year                     = {2011},
+  Number                   = {3},
+  Pages                    = {1755 - 1763},
+  Volume                   = {26}
+}
+
+@Article{Mutanen2011,
+  Title                    = {and load profiling method for distribution systems},
+  Author                   = {Mutanen, A. and Ruska, M. and Repo, S. and Jarventausta, P. Customer classification and},
+  Journal                  = {Power Delivery, IEEE Transactions on},
+  Year                     = {2011},
+  Number                   = {3},
+  Pages                    = {1755-1763},
+  Volume                   = {26}
+}
+
+@Book{nason2010,
+  Title                    = {Wavelet Methods in Statistics with R},
+  Author                   = {G. Nason},
+  Publisher                = {Springer},
+  Year                     = {2010},
+
+  Owner                    = {jairo},
+  Pages                    = {269},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{Overview2012,
+  Title                    = {and performance assessment of the clustering methods for electrical load pattern grouping},
+  Author                   = {G. Chicco Overview and},
+  Journal                  = {Energy},
+  Year                     = {2012},
+  Pages                    = {68-80},
+  Volume                   = {42}
+}
+
+@InProceedings{petiau2009,
+  Title                    = {Confidence interval estimation for short-term load forecasting},
+  Author                   = {Petiau, B.},
+  Booktitle                = {PowerTech, 2009 IEEE Bucharest},
+  Year                     = {2009},
+  Month                    = {June},
+  Pages                    = {1-6},
+
+  Doi                      = {10.1109/PTC.2009.5282199},
+  Keywords                 = {error analysis;load forecasting;confidence interval estimation;error analysis;forecast error knowledge;security analysis;short-term load forecasting;standard deviation error;Computational Intelligence Society;Demand forecasting;Input variables;Load forecasting;Load modeling;Power system modeling;Predictive models;Temperature;Transfer functions;Uncertainty;Error analysis;Load forecasting;Power demand},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@InBook{Piao2008,
+  Title                    = {Advanced Intelligent Computing Theories and Applications},
+  Author                   = {Piao, M. and Lee, H. G. and Park, J. H. and Ryu, K. H.},
+  Chapter                  = {Application of Classification Methods for Forecasting Mid-Term Power Load Patterns.},
+  Publisher                = {Springer},
+  Year                     = {2008},
+
+  Owner                    = {jairo},
+  Timestamp                = {2014.12.16}
+}
+
+@Article{Picard,
+  Title                    = {Adaptive confidence interval for pointwise curve estimation},
+  Author                   = {Picard, Dominique and Tribouley, Karine},
+  Journal                  = {The Annals of Statistics},
+  Year                     = {2000},
+
+  Month                    = {02},
+  Number                   = {1},
+  Pages                    = {298--335},
+  Volume                   = {28},
+
+  Ajournal                 = {Ann. Statist.},
+  Doi                      = {10.1214/aos/1016120374},
+  Owner                    = {jairo},
+  Publisher                = {The Institute of Mathematical Statistics},
+  Timestamp                = {2014.01.22},
+  Url                      = {http://dx.doi.org/10.1214/aos/1016120374}
+}
+
+@TechReport{Pierrot2014,
+  Title                    = {{Premiers tests d'une m{\'e}thode adaptative pour les 32000}},
+  Author                   = {A. Pierrot},
+  Institution              = {EDF R\&D},
+  Year                     = {2014},
+
+  Journal                  = {H-R39-2013-03366-FR}
+}
+
+@Article{Pierrot2011,
+  Title                    = {{Short-Term Electricity Load Forecasting With Generalized Additive Models}},
+  Author                   = {A. Pierrot and Y. Goude},
+  Journal                  = {Proceedings of ISAP power},
+  Year                     = {2011},
+  Pages                    = {593 - 600}
+}
+
+@InProceedings{pierrot2011short,
+  Title                    = {Short-term electricity load forecasting with generaliazed additive models.},
+  Author                   = {Pierrot, A. and Goude, Y.},
+  Booktitle                = {16th International Conference on Intelligent System Applications to Power Systems},
+  Year                     = {2011},
+  Note                     = {to appear},
+
+  Owner                    = {cugliari},
+  Timestamp                = {2011.08.03}
+}
+
+@Article{poggi1994prevision,
+  Title                    = {Pr{\'e}vision non param{\'e}trique de la consommation {\'e}lectrique},
+  Author                   = {Poggi, J.-M.},
+  Journal                  = {Rev. Statistique Appliqu{\'e}e},
+  Year                     = {1994},
+  Pages                    = {93-98},
+  Volume                   = {XLII(4)},
+
+  Owner                    = {jairo},
+  Timestamp                = {2014.04.27}
+}
+
+@Article{Rhodes,
+  Title                    = {{Clustering analysis of residential electricity demand profiles}},
+  Author                   = {J. D. Rhodes and W. J. Cole and C. R. Upshaw and T. F. Edgar and M. E. Webber},
+  Journal                  = {Preprint submitted to Applied Energy},
+  Year                     = {2014},
+  Volume                   = {18}
+}
+
+@TechReport{Rhodes2014,
+  Title                    = {Clustering analysis of residential electricity demand profiles},
+  Author                   = {J. D. Rhodes and W. J. Cole and C. R. Upshaw and T. F. Edgar and M. E. Webber},
+  Institution              = {submitted to Applied Energy, March 18},
+  Year                     = {2014},
+  Type                     = {Preprint}
+}
+
+@Article{Scheffe,
+  Title                    = {A method for judging all contrats in the analysis of variance},
+  Author                   = {Scheff'e, Henry},
+  Journal                  = {Biometrika},
+  Year                     = {1953},
+  Number                   = {1-2},
+  Pages                    = {87-110},
+  Volume                   = {40},
+
+  Doi                      = {10.1093/biomet/40.1-2.87},
+  Eprint                   = {http://biomet.oxfordjournals.org/content/40/1-2/87.full.pdf+html},
+  Owner                    = {jairo},
+  Timestamp                = {2014.01.11},
+  Url                      = {http://biomet.oxfordjournals.org/content/40/1-2/87.abstract}
+}
+
+@Article{shang2013,
+  Title                    = {Functional time series approach for forecasting very short-term electricity demand},
+  Author                   = {Shang, Han Lin},
+  Journal                  = {Journal of Applied Statistics},
+  Year                     = {2013},
+  Number                   = {1},
+  Pages                    = {152-168},
+  Volume                   = {40},
+
+  Doi                      = {10.1080/02664763.2012.740619},
+  Eprint                   = { http://dx.doi.org/10.1080/02664763.2012.740619 },
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{shang2011,
+  Title                    = {Nonparametric time series forecasting with dynamic updating },
+  Author                   = {Han Lin Shang and Rob.J. Hyndman},
+  Journal                  = {Mathematics and Computers in Simulation },
+  Year                     = {2011},
+  Note                     = {Selected Papers of the Combined \{IMACS\} World Congress and \{MSSANZ\} 18th Biennial Conference on Modelling and Simulation, Cairns, Australia, 13-17 July, 2009 },
+  Number                   = {7},
+  Pages                    = {1310 - 1324},
+  Volume                   = {81},
+
+  Doi                      = {http://dx.doi.org/10.1016/j.matcom.2010.04.027},
+  ISSN                     = {0378-4754},
+  Keywords                 = {Functional principal component analysis},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{shen2002,
+  Title                    = {Nonparametric Hypothesis Testing for a Spatial Signal},
+  Author                   = {Shen, Xiaotong and Huang, Hsin-Cheng and Cressie, Noel},
+  Journal                  = {Journal of the American Statistical Association},
+  Year                     = {2002},
+  Number                   = {460},
+  Pages                    = {1122-1140},
+  Volume                   = {97},
+
+  Doi                      = {10.1198/016214502388618933},
+  Eprint                   = {http://dx.doi.org/10.1198/016214502388618933},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.15}
+}
+
+@Article{staszewska2007,
+  Title                    = {Representing uncertainty about response paths: The use of heuristic optimisation methods },
+  Author                   = {Anna Staszewska},
+  Journal                  = {Computational Statistics \& Data Analysis },
+  Year                     = {2007},
+  Number                   = {1},
+  Pages                    = {121 - 132},
+  Volume                   = {52},
+
+  Doi                      = {http://dx.doi.org/10.1016/j.csda.2006.12.023},
+  ISSN                     = {0167-9473},
+  Keywords                 = {Bootstrapping},
+  Owner                    = {jairo},
+  Timestamp                = {2014.07.09}
+}
+
+@Article{Staszewska2011,
+  Title                    = {Bootstrap prediction bands for forecast paths from vector autoregressive models},
+  Author                   = {Staszewska-Bystrova, Anna},
+  Journal                  = {Journal of Forecasting},
+  Year                     = {2011},
+  Number                   = {8},
+  Pages                    = {721--735},
+  Volume                   = {30},
+
+  Doi                      = {10.1002/for.1205},
+  Owner                    = {jairo},
+  Publisher                = {Wiley Online Library},
+  Timestamp                = {2014.01.11}
+}
+
+@Article{steinley2008new,
+  Title                    = {new variable weighting and selection procedure for k-means cluster analysis},
+  Author                   = {D. Steinley and M. Brusco, A},
+  Journal                  = {Multivariate Behavioral Research},
+  Year                     = {2008},
+  Pages                    = {32},
+  Volume                   = {43}
+}
+
+@Article{T2010,
+  Title                    = {{Data-based method for creating electricity use load profiles using large amount of customer-specific hourly measured electricity use data}},
+  Author                   = {T and R{\"a}s{\"a}nen and D and Voukantsis and H and Niska and K and Karatzas and M and Kolehmainen},
+  Journal                  = {Applied Energy},
+  Year                     = {2010},
+  Number                   = {11},
+  Pages                    = {3538 - 3545},
+  Volume                   = {87}
+}
+
+@Article{Rasanen,
+  Title                    = {Data-based method for creating electricity use load profiles using large amount of customer-specific hourly measured electricity use data Applied Energy},
+  Author                   = {T., R\"{a}s\"{a}nen and D., Voukantsis and H., Niska and K., Karatzas and M., Kolehmainen},
+  Year                     = {2010},
+  Number                   = {11},
+  Pages                    = {3538-3545},
+  Volume                   = {87}
+}
+
+@Article{taylor2010triple,
+  Title                    = {Triple Seasonal Methods for Short-term Electricity Demand Forecasting},
+  Author                   = {Taylor, J.W.},
+  Journal                  = {European Journal of Operational Research},
+  Year                     = {2010},
+  Pages                    = {139-152},
+  Volume                   = {204},
+
+  Owner                    = {cugliari},
+  Timestamp                = {2011.08.08}
+}
+
+@Article{wijaya2015forecasting,
+  Title                    = {Forecasting Uncertainty in Electricity Demand},
+  Author                   = {Wijaya, T. K. and Sinn, M. and Chen, B.},
+  Journal                  = {AAAI-15 Workshop on Computational Sustainability, EPFL-CONF-203769},
+  Year                     = {2015}
+}
+
+@Article{Zhou,
+  Title                    = {{A review of electric load classification in smart grid environment}},
+  Author                   = {K. Zhou and S. Yang and C. Shen},
+  Journal                  = {Renewable and Sustainable Energy Reviews},
+  Year                     = {2013},
+  Pages                    = {103 - 110},
+  Volume                   = {24}
+}
+
+@Manual{Cer_a,
+  Title                    = {Electricity smart metering customer behaviour trials findings report},
+  Organization             = {Commission for energy regulation, Dublin},
+  Year                     = {2011},
+
+  Institution              = {Commission for energy regulation},
+  Owner                    = {jairo},
+  Timestamp                = {2016.05.17}
+}
+
+@Manual{Cer_b,
+  Title                    = {Results of electricity coast-benefit analysis, customer behaviour trials and technology trials commission for energy regulation},
+  Organization             = {Commission for energy regulation, Dublin},
+  Year                     = {2011},
+
+  Institution              = {Commission for energy regulation},
+  Owner                    = {jairo},
+  Timestamp                = {2016.05.17}
+}
+
+@comment{jabref-meta: selector_publisher:}
+
+@comment{jabref-meta: selector_author:}
+
+@comment{jabref-meta: selector_journal:}
+
+@comment{jabref-meta: selector_keywords:}
+
diff --git a/epclust/DESCRIPTION b/epclust/DESCRIPTION
new file mode 100644 (file)
index 0000000..3bc8960
--- /dev/null
@@ -0,0 +1,43 @@
+Package: epclust
+Title: Clustering Individual Electricity Power Curves
+Description: Electric Power curves CLUSTering, through their wavelets
+    decomposition. The main function 'claws' takes (usually long) time-series
+    in input, and return as many clusters centers as requested, along with their
+    ranks and synchrones (sum of all curves in one group).
+    For the method, see ?claws and https://arxiv.org/abs/1101.4744.
+    For usage examples, see ?claws and package vignette.
+Version: 0.1-0
+Author: Benjamin Auder <Benjamin.Auder@math.u-psud.fr> [aut,cre],
+    Jairo Cugliari <Jairo.Cugliari@univ-lyon2.fr> [aut],
+    Yannig Goude <Yannig.Goude@edf.fr> [ctb],
+    Jean-Michel Poggi <Jean-Michel.Poggi@math.u-psud.fr> [ctb]
+Maintainer: Benjamin Auder <Benjamin.Auder@math.u-psud.fr>
+Depends:
+    R (>= 3.0.0)
+Imports:
+    methods,
+    parallel,
+    cluster,
+    bigmemory,
+    wavelets,
+    Rwave
+Suggests:
+    synchronicity,
+    devtools,
+    testthat,
+    roxygen2,
+    MASS,
+    wmtsa,
+    DBI,
+    digest
+License: MIT + file LICENSE
+RoxygenNote: 5.0.1
+Collate:
+    'main.R'
+    'clustering.R'
+    'de_serialize.R'
+    'A_NAMESPACE.R'
+    'computeSynchrones.R'
+    'computeWerDists.R'
+    'plot.R'
+    'utils.R'
diff --git a/epclust/LICENSE b/epclust/LICENSE
new file mode 100644 (file)
index 0000000..2e72cd4
--- /dev/null
@@ -0,0 +1,23 @@
+Copyright (c) 2016-2017, Benjamin Auder
+              2016-2017, Jairo Cugliari
+              2016-2017, Yannig Goude
+              2016-2017, Jean-Michel Poggi
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/epclust/R/A_NAMESPACE.R b/epclust/R/A_NAMESPACE.R
new file mode 100644 (file)
index 0000000..90f2c16
--- /dev/null
@@ -0,0 +1,15 @@
+#' @include de_serialize.R
+#' @include clustering.R
+#' @include main.R
+#'
+#' @useDynLib epclust
+#'
+#' @importFrom Rwave cwt
+#' @importFrom cluster pam
+#' @importFrom parallel makeCluster clusterExport parLapply stopCluster
+#' @importFrom wavelets dwt wt.filter
+#' @importFrom stats spline
+#' @importFrom methods is
+#' @importFrom bigmemory big.matrix as.big.matrix is.big.matrix
+#' @importFrom utils head tail
+NULL
diff --git a/epclust/R/clustering.R b/epclust/R/clustering.R
new file mode 100644 (file)
index 0000000..5b5f668
--- /dev/null
@@ -0,0 +1,94 @@
+#' Two-stage clustering, within one task (see \code{claws()})
+#'
+#' \code{clusteringTask1()} runs one full stage-1 task, which consists in iterated
+#' clustering on nb_curves / ntasks energy contributions, computed through
+#' discrete wavelets coefficients.
+#' \code{clusteringTask2()} runs a full stage-2 task, which consists in WER distances
+#' computations between medoids (indices) output from stage 1, before applying
+#' the second clustering algorithm on the distances matrix.
+#'
+#' @param getContribs Function to retrieve contributions from initial series indices:
+#'   \code{getContribs(indices)} outputs a contributions matrix, in columns
+#' @inheritParams claws
+#' @inheritParams computeSynchrones
+#' @inheritParams computeWerDists
+#'
+#' @return The indices of the computed (resp. K1 and K2) medoids.
+#'
+#' @name clustering
+#' @rdname clustering
+#' @aliases clusteringTask1 clusteringTask2
+NULL
+
+#' @rdname clustering
+#' @export
+clusteringTask1 <- function(indices, getContribs, K1, algoClust1, nb_items_clust,
+       ncores_clust=3, verbose=FALSE)
+{
+       if (verbose)
+               cat(paste("*** Clustering task 1 on ",length(indices)," series [start]\n", sep=""))
+
+       if (length(indices) <= K1)
+               return (indices)
+
+       parll <- (ncores_clust > 1)
+       if (parll)
+       {
+               # outfile=="" to see stderr/stdout on terminal
+               cl <-
+                       if (verbose)
+                               parallel::makeCluster(ncores_clust, outfile = "")
+                       else
+                               parallel::makeCluster(ncores_clust)
+               parallel::clusterExport(cl, c("getContribs","K1","verbose"), envir=environment())
+       }
+       # Iterate clustering algorithm 1 until K1 medoids are found
+       while (length(indices) > K1)
+       {
+               # Balance tasks by splitting the indices set - as evenly as possible
+               indices_workers <- .splitIndices(indices, nb_items_clust, min_size=K1+1)
+               indices <-
+                       if (parll)
+                       {
+                               unlist( parallel::parLapply(cl, indices_workers, function(inds) {
+                                       require("epclust", quietly=TRUE)
+                                       inds[ algoClust1(getContribs(inds), K1) ]
+                               }) )
+                       }
+                       else
+                       {
+                               unlist( lapply(indices_workers, function(inds)
+                                       inds[ algoClust1(getContribs(inds), K1) ]
+                               ) )
+                       }
+               if (verbose)
+               {
+                       cat(paste("*** Clustering task 1 on ",length(indices)," medoids [iter]\n", sep=""))
+               }
+       }
+       if (parll)
+               parallel::stopCluster(cl)
+
+       indices #medoids
+}
+
+#' @rdname clustering
+#' @export
+clusteringTask2 <- function(indices, getSeries, K2, algoClust2, nb_series_per_chunk,
+       smooth_lvl, nvoice, nbytes, endian, ncores_clust=3, verbose=FALSE)
+{
+       if (verbose)
+               cat(paste("*** Clustering task 2 on ",length(indices)," medoids\n", sep=""))
+
+       if (length(indices) <= K2)
+               return (indices)
+
+       # A) Compute the WER distances (Wavelets Extended coefficient of deteRmination)
+       distances <- computeWerDists(indices, getSeries, nb_series_per_chunk,
+               smooth_lvl, nvoice, nbytes, endian, ncores_clust, verbose)
+
+       # B) Apply clustering algorithm 2 on the WER distances matrix
+       if (verbose)
+               cat(paste("*** algoClust2() on ",nrow(distances)," items\n", sep=""))
+       indices[ algoClust2(distances,K2) ]
+}
diff --git a/epclust/R/computeSynchrones.R b/epclust/R/computeSynchrones.R
new file mode 100644 (file)
index 0000000..3a29546
--- /dev/null
@@ -0,0 +1,67 @@
+#' computeSynchrones
+#'
+#' Compute the synchrones curves (sums of clusters elements) from a matrix of medoids,
+#' using euclidian distance.
+#'
+#' @param medoids matrix of K medoids curves in columns
+#' @param nb_curves How many series? (this is known, at this stage)
+#' @inheritParams claws
+#' @inheritParams computeWerDists
+#'
+#' @return A matrix of K synchrones in columns (same length as the series)
+#'
+#' @export
+computeSynchrones <- function(medoids, getSeries, nb_curves,
+       nb_series_per_chunk, ncores=3, verbose=FALSE)
+{
+       # Synchrones computation is embarassingly parallel: compute it by chunks of series
+       computeSynchronesChunk <- function(indices)
+       {
+               # Obtain a chunk of reference series
+               series_chunk <- getSeries(indices)
+               nb_series_chunk <- ncol(series_chunk)
+
+               # Get medoids indices for this chunk of series
+               mi <- assignMedoids(series_chunk, medoids[,])
+
+               # Update synchrones using mi above, grouping it by values of mi (in 1...K)
+               # to avoid too many lock/unlock
+               for (i in seq_len(K))
+               {
+                       # lock / unlock required because several writes at the same time
+                       if (parll)
+                               synchronicity::lock(m)
+                       synchrones[,i] <- synchrones[,i] + rowSums(as.matrix(series_chunk[,mi==i]))
+                       if (parll)
+                               synchronicity::unlock(m)
+               }
+               NULL
+       }
+
+       K <- ncol(medoids)
+       L <- nrow(medoids)
+       # Use bigmemory (shared==TRUE by default) + synchronicity to fill synchrones in //
+       synchrones <- bigmemory::big.matrix(nrow=L, ncol=K, type="double", init=0.)
+       # NOTE: synchronicity is only for Linux & MacOS; on Windows: run sequentially
+       parll <- (ncores > 1 && requireNamespace("synchronicity",quietly=TRUE)
+               && Sys.info()['sysname'] != "Windows")
+
+       if (parll)
+               m <- synchronicity::boost.mutex() #for lock/unlock, see computeSynchronesChunk
+
+       if (verbose)
+               cat(paste("--- Compute ",K," synchrones with ",nb_curves," series\n", sep=""))
+
+       # Balance tasks by splitting 1:nb_curves into groups of size <= nb_series_per_chunk
+       indices_workers <- .splitIndices(seq_len(nb_curves), nb_series_per_chunk)
+       ignored <-
+               if (parll)
+               {
+                       parallel::mclapply(indices_workers,
+                               function(inds) computeSynchronesChunk(inds), mc.cores=ncores)
+               }
+               else
+                       lapply(indices_workers, computeSynchronesChunk)
+
+       return (synchrones[,])
+}
diff --git a/epclust/R/computeWerDists.R b/epclust/R/computeWerDists.R
new file mode 100644 (file)
index 0000000..f47cd23
--- /dev/null
@@ -0,0 +1,130 @@
+#' computeWerDists
+#'
+#' Compute the WER distances between the series at specified indices, which are
+#' obtaind by \code{getSeries(indices)}
+#'
+#' @param indices Indices of the series to consider
+#' @param getSeries Function to retrieve series (argument: 'inds', integer vector),
+#'   as columns of a matrix
+#' @param ncores Number of cores for parallel runs
+#' @inheritParams claws
+#'
+#' @return A distances matrix of size K x K where K == length(indices)
+#'
+#' @export
+computeWerDists <- function(indices, getSeries, nb_series_per_chunk, smooth_lvl=3,
+       nvoice=4, nbytes=4, endian=.Platform$endian, ncores=3, verbose=FALSE)
+{
+       n <- length(indices)
+       L <- length(getSeries(1)) #TODO: not very neat way to get L
+       noctave <- ceiling(log2(L)) #min power of 2 to cover serie range
+       # Since a CWT contains noctave*nvoice complex series, we deduce the number of CWT to
+       # retrieve/put in one chunk.
+       nb_cwt_per_chunk <- max(1, floor(nb_series_per_chunk / (nvoice*noctave*2)))
+
+       # Initialize result as a square big.matrix of size 'number of medoids'
+       Xwer_dist <- bigmemory::big.matrix(nrow=n, ncol=n, type="double")
+
+       cwt_file <- tempfile(pattern="epclust_cwt.bin_")
+       # Compute the getSeries(indices) CWT, and store the results in the binary file
+       computeSaveCWT <- function(inds)
+       {
+               if (verbose)
+                       cat("   Compute save CWT on ",length(inds)," indices\n", sep="")
+
+               # Obtain CWT as big vectors of real part + imaginary part (concatenate)
+               ts_cwt <- sapply(inds, function(i) {
+                       ts <- scale(ts(getSeries(i)), center=TRUE, scale=FALSE)
+                       ts_cwt <- Rwave::cwt(ts, noctave, nvoice, w0=2*pi, twoD=TRUE, plot=FALSE)
+                       c( as.double(Re(ts_cwt)),as.double(Im(ts_cwt)) )
+               })
+
+               # Serialization
+               binarize(ts_cwt, cwt_file, nb_cwt_per_chunk, ",", nbytes, endian)
+       }
+
+       # Function to retrieve a synchrone CWT from (binary) file
+       getCWT <- function(index, L)
+       {
+               flat_cwt <- getDataInFile(index, cwt_file, nbytes, endian)
+               cwt_length <- length(flat_cwt) / 2
+               re_part <- as.matrix(flat_cwt[1:cwt_length], nrow=L)
+               im_part <- as.matrix(flat_cwt[(cwt_length+1):(2*cwt_length)], nrow=L)
+               re_part + 1i * im_part
+       }
+
+       # Compute distances between columns i and j for j>i
+       computeDistances <- function(i)
+       {
+               if (parll)
+               {
+                       # parallel workers start with an empty environment
+                       require("epclust", quietly=TRUE)
+                       Xwer_dist <- bigmemory::attach.big.matrix(Xwer_dist_desc)
+               }
+
+               if (verbose)
+                       cat(paste("   Distances from ",i," to ",i+1,"...",n,"\n", sep=""))
+
+               # Get CWT of column i, and run computations for columns j>i
+               cwt_i <- getCWT(i, L)
+               WX  <- filterMA(Mod(cwt_i * Conj(cwt_i)), smooth_lvl)
+
+               for (j in (i+1):n)
+               {
+                       cwt_j <- getCWT(j, L)
+
+                       # Compute the ratio of integrals formula 5.6 for WER^2
+                       # in https://arxiv.org/abs/1101.4744v2 paragraph 5.3
+                       num <- filterMA(Mod(cwt_i * Conj(cwt_j)), smooth_lvl)
+                       WY <- filterMA(Mod(cwt_j * Conj(cwt_j)), smooth_lvl)
+                       wer2 <- sum(colSums(num)^2) / sum(colSums(WX) * colSums(WY))
+
+                       Xwer_dist[i,j] <- sqrt(L * ncol(cwt_i) * (1 - wer2))
+                       Xwer_dist[j,i] <- Xwer_dist[i,j]
+               }
+               Xwer_dist[i,i] <- 0.
+       }
+
+       if (verbose)
+               cat(paste("--- Precompute and serialize synchrones CWT\n", sep=""))
+
+       # Split indices by packets of length at most nb_cwt_per_chunk
+       indices_cwt <- .splitIndices(indices, nb_cwt_per_chunk)
+       # NOTE: next loop could potentially be run in //. Indices would be permuted (by
+       # serialization order), and synchronicity would be required because of concurrent
+       # writes. Probably not worth the effort - but possible.
+       for (inds in indices_cwt)
+               computeSaveCWT(inds)
+
+       parll <- (ncores > 1)
+       if (parll)
+       {
+               # outfile=="" to see stderr/stdout on terminal
+               cl <-
+                       if (verbose)
+                               parallel::makeCluster(ncores, outfile="")
+                       else
+                               parallel::makeCluster(ncores)
+               Xwer_dist_desc <- bigmemory::describe(Xwer_dist)
+               parallel::clusterExport(cl, envir=environment(),
+                       varlist=c("parll","n","L","Xwer_dist_desc","getCWT","verbose"))
+       }
+
+       if (verbose)
+               cat(paste("--- Compute WER distances\n", sep=""))
+
+       ignored <-
+               if (parll)
+                       parallel::parLapplyLB(cl, seq_len(n-1), computeDistances)
+               else
+                       lapply(seq_len(n-1), computeDistances)
+       Xwer_dist[n,n] <- 0.
+
+       if (parll)
+               parallel::stopCluster(cl)
+
+       unlink(cwt_file) #remove binary file
+
+       Xwer_dist[,] #~small matrix K1 x K1
+}
diff --git a/epclust/R/de_serialize.R b/epclust/R/de_serialize.R
new file mode 100644 (file)
index 0000000..cb964b6
--- /dev/null
@@ -0,0 +1,150 @@
+#' (De)Serialization of a [big]matrix or data stream
+#'
+#' \code{binarize()} serializes a matrix or CSV file with minimal overhead, into a
+#' binary file. \code{getDataInFile()} achieves the inverse task: she retrieves (ASCII)
+#' data rows from indices in the binary file. Finally, \code{binarizeTransform()}
+#' serialize transformations of all data chunks. To use it a data-retrieval function
+#' must be provided -- thus \code{binarize} will most likely be used first
+#' (and then a function defined to seek in generated binary file)
+#'
+#' @param data_ascii Matrix (by columns) or CSV file or connection (by rows)
+#' @param data_bin_file Name of binary file on output of \code{binarize()}
+#'   or input of \code{getDataInFile()}
+#' @param nb_per_chunk Number of lines to process in one batch
+#' @param getData Function to retrieve data chunks
+#' @param transform Transformation function to apply on data chunks
+#' @param indices Indices of the lines to retrieve
+#' @inheritParams claws
+#'
+#' @return For \code{getDataInFile()}, a matrix with columns corresponding to the
+#'   requested indices. \code{binarizeTransform()} returns the number of processed lines.
+#'   \code{binarize()} is designed to serialize in several calls, thus returns nothing.
+#'
+#' @name de_serialize
+#' @rdname de_serialize
+#' @aliases binarize binarizeTransform getDataInFile
+NULL
+
+#' @rdname de_serialize
+#' @export
+binarize <- function(data_ascii, data_bin_file, nb_per_chunk,
+       sep=",", nbytes=4, endian=.Platform$endian)
+{
+       # data_ascii can be of two types: [big.]matrix, or connection
+       if (is.character(data_ascii))
+               data_ascii <- file(data_ascii, open="r")
+       else if (methods::is(data_ascii,"connection") && !isOpen(data_ascii))
+               open(data_ascii)
+       is_matrix <- !methods::is(data_ascii,"connection")
+
+       # At first call, the length of a stored row is written. So it's important to determine
+       # if the serialization process already started.
+       first_write <- (!file.exists(data_bin_file) || file.info(data_bin_file)$size == 0)
+
+       # Open the binary file for writing (or 'append' if already exists)
+       data_bin <- file(data_bin_file, open=ifelse(first_write,"wb","ab"))
+
+       if (first_write)
+       {
+               # Write data length on first call: number of items always on 8 bytes
+               writeBin(0L, data_bin, size=8, endian=endian)
+               if (is_matrix)
+                       data_length <- nrow(data_ascii)
+               else #connection
+               {
+                       # Read the first line to know data length, and write it then
+                       data_line <- scan(data_ascii, double(), sep=sep, nlines=1, quiet=TRUE)
+                       writeBin(data_line, data_bin, size=nbytes, endian=endian)
+                       data_length <- length(data_line)
+               }
+       }
+
+       if (is_matrix)
+       {
+               # Data is processed by chunks; although this may not be so useful for (normal) matrix
+               # input, it could for a file-backed big.matrix. It's easier to follow a unified pattern.
+               index <- 1
+       }
+       repeat
+       {
+               if (is_matrix)
+               {
+                       data_chunk <-
+                               if (index <= ncol(data_ascii))
+                                       as.double(data_ascii[,index:min(ncol(data_ascii),index+nb_per_chunk-1)])
+                               else
+                                       double(0)
+                       index <- index + nb_per_chunk
+               }
+               else #connection
+                       data_chunk <- scan(data_ascii, double(), sep=sep, nlines=nb_per_chunk, quiet=TRUE)
+
+               # Data size is unknown in the case of a connection
+               if (length(data_chunk)==0)
+                       break
+
+               # Write this chunk of data to the binary file
+               writeBin(data_chunk, data_bin, size=nbytes, endian=endian)
+       }
+
+       if (first_write)
+       {
+               # Write data_length, == (file_size-1) / (nbytes*nbWritten) at offset 0 in data_bin
+               ignored <- seek(data_bin, 0)
+               writeBin(data_length, data_bin, size=8, endian=endian)
+       }
+       close(data_bin)
+
+       if ( ! is_matrix )
+               close(data_ascii)
+}
+
+#' @rdname de_serialize
+#' @export
+binarizeTransform <- function(getData, transform, data_bin_file, nb_per_chunk,
+       nbytes=4, endian=.Platform$endian)
+{
+       nb_items <- 0 #side-effect: store the number of transformed items
+       index <- 1
+       repeat
+       {
+               # Retrieve a chunk of data in a binary file (generally obtained by binarize())
+               data_chunk <- getData((index-1)+seq_len(nb_per_chunk))
+               if (is.null(data_chunk))
+                       break
+
+               # Apply transformation on the current chunk (by columns)
+               transformed_chunk <- transform(data_chunk)
+
+               # Save the result in binary format
+               binarize(transformed_chunk, data_bin_file, nb_per_chunk, ",", nbytes, endian)
+
+               index <- index + nb_per_chunk
+               nb_items <- nb_items + ncol(data_chunk)
+       }
+       nb_items #number of transformed items
+}
+
+#' @rdname de_serialize
+#' @export
+getDataInFile <- function(indices, data_bin_file, nbytes=4, endian=.Platform$endian)
+{
+       data_bin <- file(data_bin_file, "rb") #source binary file
+
+       data_size <- file.info(data_bin_file)$size #number of bytes in the file
+       # data_length: length of a vector in the binary file (first element, 8 bytes)
+       data_length <- readBin(data_bin, "integer", n=1, size=8, endian=endian)
+
+       # Seek all 'indices' columns in the binary file, using data_length and nbytes
+       # to compute the offset ( index i at 8 + i*data_length*nbytes )
+       data_ascii <- do.call( cbind, lapply( indices, function(i) {
+               offset <- 8+(i-1)*data_length*nbytes
+               if (offset >= data_size)
+                       return (NULL)
+               ignored <- seek(data_bin, offset) #position cursor at computed offset
+               readBin(data_bin, "double", n=data_length, size=nbytes, endian=endian)
+       } ) )
+       close(data_bin)
+
+       data_ascii #retrieved data, in columns
+}
diff --git a/epclust/R/main.R b/epclust/R/main.R
new file mode 100644 (file)
index 0000000..09e1ed7
--- /dev/null
@@ -0,0 +1,328 @@
+#' CLAWS: CLustering with wAvelets and Wer distanceS
+#'
+#' Cluster electricity power curves (or any series of similar nature) by applying a
+#' two stage procedure in parallel (see details).
+#' Input series must be sampled on the same time grid, no missing values.
+#'
+#' Summary of the function execution flow:
+#' \enumerate{
+#'   \item Compute and serialize all contributions, obtained through discrete wavelet
+#'     decomposition (see Antoniadis & al. [2013])
+#'   \item Divide series into \code{ntasks} groups to process in parallel. In each task:
+#'   \enumerate{
+#'     \item iterate the first clustering algorithm on its aggregated outputs,
+#'       on inputs of size \code{nb_items_clust}\cr
+#'         -> K1 medoids indices
+#'     \item optionally, if WER=="mix":\cr
+#'       a. compute WER distances (K1xK1) between medoids\cr
+#'       b. apply the 2nd clustering algorithm\cr
+#'          -> K2 medoids indices
+#'   }
+#'   \item Launch a final task on the aggregated outputs of all previous tasks:
+#'     ntasks*K1 if WER=="end", ntasks*K2 otherwise
+#'   \item Compute synchrones (sum of series within each final group)
+#' }
+#' 
+#' The main argument -- \code{series} -- has a quite misleading name, since it can be
+#' either a [big.]matrix, a CSV file, a connection or a user function to retrieve series.
+#' When \code{series} is given as a function it must take a single argument,
+#' 'indices': integer vector equal to the indices of the curves to retrieve;
+#' see SQLite example.
+#' WARNING: the return value must be a matrix (in columns), or NULL if no matches.
+#' 
+#' Note: Since we don't make assumptions on initial data, there is a possibility that
+#' even when serialized, contributions do not fit in RAM. For example,
+#' 30e6 series of length 100,000 would lead to a +4Go contribution matrix. Therefore,
+#' it's safer to place these in (binary) files; that's what we do.
+#'
+#' @param series Access to the N (time-)series, which can be of one of the four
+#'   following types:
+#'   \itemize{
+#'     \item [big.]matrix: each column contains the (time-ordered) values of one time-serie
+#'     \item connection: any R connection object providing lines as described above
+#'     \item character: name of a CSV file containing series in rows (no header)
+#'     \item function: a custom way to retrieve the curves; it has only one argument:
+#'       the indices of the series to be retrieved. See SQLite example
+#'   }
+#' @param K1 Number of clusters to be found after stage 1 (K1 << N)
+#' @param K2 Number of clusters to be found after stage 2 (K2 << K1)
+#' @param nb_series_per_chunk Number of series to retrieve in one batch
+#' @param nb_items_clust Number of items in 1st clustering algorithm input
+#' @param algoClust1 Clustering algorithm for stage 1. A function which takes (data, K)
+#'   as argument where data is a matrix in columns and K the desired number of clusters,
+#'   and outputs K medoids ranks. Default: PAM.
+#' @param algoClust2 Clustering algorithm for stage 2. A function which takes (dists, K)
+#'   as argument where dists is a matrix of distances and K the desired number of clusters,
+#'   and outputs K medoids ranks. Default: PAM.
+#' @param wav_filt Wavelet transform filter; see ?wavelets::wt.filter
+#' @param contrib_type Type of contribution: "relative", "logit" or "absolute" (any prefix)
+#' @param WER "end" to apply stage 2 after stage 1 has fully iterated, or "mix" to apply
+#'   stage 2 at the end of each task
+#' @param smooth_lvl Smoothing level: odd integer, 1 == no smoothing.
+#' @param nvoice Number of voices within each octave for CWT computations
+#' @param random TRUE (default) for random chunks repartition
+#' @param ntasks Number of tasks (parallel iterations to obtain K1 [if WER=="end"]
+#'   or K2 [if WER=="mix"] medoids); default: 1.\cr
+#'   Note: ntasks << N (number of series), so that N is "roughly divisible" by ntasks
+#' @param ncores_tasks Number of parallel tasks ('1' == sequential tasks)
+#' @param ncores_clust Number of parallel clusterings in one task
+#' @param sep Separator in CSV input file (if any provided)
+#' @param nbytes 4 or 8 bytes to (de)serialize a floating-point number
+#' @param endian Endianness for (de)serialization: "little" or "big"
+#' @param verbose FALSE: nothing printed; TRUE: some execution traces
+#'
+#' @return A list:
+#' \itemize{
+#'   \item medoids: matrix of the final K2 medoids curves
+#'   \item ranks: corresponding indices in the dataset
+#'   \item synchrones: sum of series within each final group
+#' }
+#'
+#' @references Clustering functional data using Wavelets [2013];
+#'   A. Antoniadis, X. Brossat, J. Cugliari & J.-M. Poggi.
+#'   Inter. J. of Wavelets, Multiresolution and Information Procesing,
+#'   vol. 11, No 1, pp.1-30. doi:10.1142/S0219691313500033
+#'
+#' @examples
+#' \dontrun{
+#' # WER distances computations are too long for CRAN (for now)
+#' # Note: on this small example, sequential run is faster
+#'
+#' # Random series around cos(x,2x,3x)/sin(x,2x,3x)
+#' x <- seq(0,50,0.05)
+#' L <- length(x) #1001
+#' ref_series <- matrix( c(cos(x),cos(2*x),cos(3*x),sin(x),sin(2*x),sin(3*x)), ncol=6 )
+#' library(wmtsa)
+#' series <- do.call( cbind, lapply( 1:6, function(i)
+#'   do.call(cbind, wmtsa::wavBootstrap(ref_series[,i], n.realization=40)) ) )
+#' # Mix series so that all groups are evenly spread
+#' permut <- (0:239)%%6 * 40 + (0:239)%/%6 + 1
+#' series = series[,permut]
+#' #dim(series) #c(240,1001)
+#' res_ascii <- claws(series, K1=30, K2=6, nb_series_per_chunk=500,
+#'   nb_items_clust=100, random=FALSE, verbose=TRUE, ncores_clust=1)
+#'
+#' # Same example, from CSV file
+#' csv_file <- tempfile(pattern="epclust_series.csv_")
+#' write.table(t(series), csv_file, sep=",", row.names=FALSE, col.names=FALSE)
+#' res_csv <- claws(csv_file, 30, 6, 500, 100, random=FALSE, ncores_clust=1)
+#'
+#' # Same example, from binary file
+#' bin_file <- tempfile(pattern="epclust_series.bin_")
+#' nbytes <- 8
+#' endian <- "little"
+#' binarize(csv_file, bin_file, 500, ",", nbytes, endian)
+#' getSeries <- function(indices) getDataInFile(indices, bin_file, nbytes, endian)
+#' res_bin <- claws(getSeries, 30, 6, 500, 100, random=FALSE, ncores_clust=1)
+#' unlink(csv_file)
+#' unlink(bin_file)
+#'
+#' # Same example, from SQLite database
+#' library(DBI)
+#' series_db <- dbConnect(RSQLite::SQLite(), "file::memory:")
+#' # Prepare data.frame in DB-format
+#' n <- ncol(series)
+#' times_values <- data.frame(
+#'   id = rep(1:n,each=L),
+#'   time = rep( as.POSIXct(1800*(1:L),"GMT",origin="2001-01-01"), n ),
+#'   value = as.double(series) )
+#' dbWriteTable(series_db, "times_values", times_values)
+#' # Fill associative array, map index to identifier
+#' indexToID_inDB <- as.character(
+#'   dbGetQuery(series_db, 'SELECT DISTINCT id FROM times_values')[,"id"] )
+#' serie_length <- as.integer( dbGetQuery(series_db,
+#'   paste("SELECT COUNT(*) FROM times_values WHERE id == ",indexToID_inDB[1],sep="")) )
+#' getSeries <- function(indices) {
+#'   indices = indices[ indices <= length(indexToID_inDB) ]
+#'   if (length(indices) == 0)
+#'     return (NULL)
+#'   request <- "SELECT id,value FROM times_values WHERE id in ("
+#'   for (i in seq_along(indices)) {
+#'     request <- paste(request, indexToID_inDB[ indices[i] ],  sep="")
+#'     if (i < length(indices))
+#'       request <- paste(request, ",", sep="")
+#'   }
+#'   request <- paste(request, ")", sep="")
+#'   df_series <- dbGetQuery(series_db, request)
+#'   matrix(df_series[,"value"], nrow=serie_length)
+#' }
+#' res_db <- claws(getSeries, 30, 6, 500, 100, random=FALSE, ncores_clust=1)
+#' dbDisconnect(series_db)
+#'
+#' # All results should be equal:
+#' all(res_ascii$ranks == res_csv$ranks
+#'   & res_ascii$ranks == res_bin$ranks
+#'   & res_ascii$ranks == res_db$ranks)
+#' }
+#' @export
+claws <- function(series, K1, K2, nb_series_per_chunk, nb_items_clust=5*K1,
+       algoClust1=function(data,K) cluster::pam(t(data),K,diss=FALSE,pamonce=1)$id.med,
+       algoClust2=function(dists,K) cluster::pam(dists,K,diss=TRUE,pamonce=1)$id.med,
+       wav_filt="d8", contrib_type="absolute", WER="end", smooth_lvl=3, nvoice=4,
+       random=TRUE, ntasks=1, ncores_tasks=1, ncores_clust=3, sep=",", nbytes=4,
+       endian=.Platform$endian, verbose=FALSE)
+{
+       # Check/transform arguments
+       if (!is.matrix(series) && !bigmemory::is.big.matrix(series)
+               && !is.function(series)
+               && !methods::is(series,"connection") && !is.character(series))
+       {
+               stop("'series': [big]matrix, function, file or valid connection (no NA)")
+       }
+       K1 <- .toInteger(K1, function(x) x>=2)
+       K2 <- .toInteger(K2, function(x) x>=2)
+       nb_series_per_chunk <- .toInteger(nb_series_per_chunk, function(x) x>=1)
+       nb_items_clust <- .toInteger(nb_items_clust, function(x) x>K1)
+       random <- .toLogical(random)
+       tryCatch({ignored <- wavelets::wt.filter(wav_filt)},
+               error=function(e) stop("Invalid wavelet filter; see ?wavelets::wt.filter") )
+       ctypes <- c("relative","absolute","logit")
+       contrib_type <- ctypes[ pmatch(contrib_type,ctypes) ]
+       if (is.na(contrib_type))
+               stop("'contrib_type' in {'relative','absolute','logit'}")
+       if (WER!="end" && WER!="mix")
+               stop("'WER': in {'end','mix'}")
+       random <- .toLogical(random)
+       ntasks <- .toInteger(ntasks, function(x) x>=1)
+       ncores_tasks <- .toInteger(ncores_tasks, function(x) x>=1)
+       ncores_clust <- .toInteger(ncores_clust, function(x) x>=1)
+       if (!is.character(sep))
+               stop("'sep': character")
+       nbytes <- .toInteger(nbytes, function(x) x==4 || x==8)
+       verbose <- .toLogical(verbose)
+
+       # Binarize series if it is not a function; the aim is to always use a function,
+       # to uniformize treatments. An equally good alternative would be to use a file-backed
+       # bigmemory::big.matrix, but it would break the "all-is-function" pattern.
+       if (!is.function(series))
+       {
+               if (verbose)
+                       cat("...Serialize time-series (or retrieve past binary file)\n")
+               series_file <- ".series.epclust.bin"
+               if (!file.exists(series_file))
+                       binarize(series, series_file, nb_series_per_chunk, sep, nbytes, endian)
+               getSeries <- function(inds) getDataInFile(inds, series_file, nbytes, endian)
+       }
+       else
+               getSeries <- series
+
+       # Serialize all computed wavelets contributions into a file
+       contribs_file <- ".contribs.epclust.bin"
+       if (verbose)
+               cat("...Compute contributions and serialize them (or retrieve past binary file)\n")
+       if (!file.exists(contribs_file))
+       {
+               nb_curves <- binarizeTransform(getSeries,
+                       function(curves) curvesToContribs(curves, wav_filt, contrib_type),
+                       contribs_file, nb_series_per_chunk, nbytes, endian)
+       }
+       else
+       {
+               # TODO: duplicate from getDataInFile() in de_serialize.R
+               contribs_size <- file.info(contribs_file)$size #number of bytes in the file
+               contrib_length <- readBin(contribs_file, "integer", n=1, size=8, endian=endian)
+               nb_curves <- (contribs_size-8) / (nbytes*contrib_length)
+       }
+       getContribs <- function(indices) getDataInFile(indices, contribs_file, nbytes, endian)
+
+       # A few sanity checks: do not continue if too few data available.
+       if (nb_curves < K2)
+               stop("Not enough data: less series than final number of clusters")
+       nb_series_per_task <- round(nb_curves / ntasks)
+       if (nb_series_per_task < K2)
+               stop("Too many tasks: less series in one task than final number of clusters")
+
+       # Generate a random permutation of 1:N (if random==TRUE);
+       # otherwise just use arrival (storage) order.
+       indices_all <- if (random) sample(nb_curves) else seq_len(nb_curves)
+       # Split (all) indices into ntasks groups of ~same size
+       indices_tasks <- lapply(seq_len(ntasks), function(i) {
+               upper_bound <- ifelse( i<ntasks, min(nb_series_per_task*i,nb_curves), nb_curves )
+               indices_all[((i-1)*nb_series_per_task+1):upper_bound]
+       })
+
+       parll <- (ncores_tasks > 1)
+       if (parll && ntasks>1)
+       {
+               # Initialize parallel runs: outfile="" allow to output verbose traces in the console
+               # under Linux. All necessary variables are passed to the workers.
+               cl <-
+                       if (verbose)
+                               parallel::makeCluster(ncores_tasks, outfile="")
+                       else
+                               parallel::makeCluster(ncores_tasks)
+               varlist <- c("ncores_clust","verbose", #task 1 & 2
+                       "K1","getContribs","algoClust1","nb_items_clust") #task 1
+               if (WER=="mix")
+               {
+                       # Add variables for task 2
+                       varlist <- c(varlist, "K2","getSeries","algoClust2","nb_series_per_chunk",
+                               "smooth_lvl","nvoice","nbytes","endian")
+               }
+               parallel::clusterExport(cl, varlist, envir <- environment())
+       }
+
+       # This function achieves one complete clustering task, divided in stage 1 + stage 2.
+       # stage 1: n indices  --> clusteringTask1(...) --> K1 medoids (indices)
+       # stage 2: K1 indices --> K1xK1 WER distances --> clusteringTask2(...) --> K2 medoids,
+       # where n == N / ntasks, N being the total number of curves.
+       runTwoStepClustering <- function(inds)
+       {
+               # When running in parallel, the environment is blank: we need to load the required
+               # packages, and pass useful variables.
+               if (parll && ntasks>1)
+                       require("epclust", quietly=TRUE)
+               indices_medoids <- clusteringTask1(inds, getContribs, K1, algoClust1,
+                       nb_items_clust, ncores_clust, verbose)
+               if (WER=="mix")
+               {
+                       indices_medoids <- clusteringTask2(indices_medoids, getSeries, K2, algoClust2,
+                               nb_series_per_chunk,smooth_lvl,nvoice,nbytes,endian,ncores_clust,verbose)
+               }
+               indices_medoids
+       }
+
+       if (verbose)
+       {
+               message <- paste("...Run ",ntasks," x stage 1", sep="")
+               if (WER=="mix")
+                       message <- paste(message," + stage 2", sep="")
+               cat(paste(message,"\n", sep=""))
+       }
+
+       # As explained above, we obtain after all runs ntasks*[K1 or K2] medoids indices,
+       # depending whether WER=="end" or "mix", respectively.
+       indices_medoids_all <-
+               if (parll && ntasks>1)
+                       unlist( parallel::parLapply(cl, indices_tasks, runTwoStepClustering) )
+               else
+                       unlist( lapply(indices_tasks, runTwoStepClustering) )
+
+       if (parll && ntasks>1)
+               parallel::stopCluster(cl)
+
+       # For the last stage, ncores_tasks*(ncores_clusts+1) cores should be available:
+       #  - ntasks for level 1 parallelism
+       #  - ntasks*ncores_clust for level 2 parallelism,
+       # but since an extension MPI <--> tasks / OpenMP <--> sub-tasks is on the way,
+       # it's better to just re-use ncores_clust
+       ncores_last_stage <- ncores_clust
+
+       # Run last clustering tasks to obtain only K2 medoids indices
+       if (verbose)
+               cat("...Run final // stage 1 + stage 2\n")
+       indices_medoids <- clusteringTask1(indices_medoids_all, getContribs, K1, algoClust1,
+               nb_items_clust, ncores_tasks*ncores_clust, verbose)
+
+       indices_medoids <- clusteringTask2(indices_medoids, getSeries, K2, algoClust2,
+               nb_series_per_chunk,smooth_lvl,nvoice,nbytes,endian,ncores_last_stage,verbose)
+
+       # Compute synchrones, that is to say the cumulated power consumptions for each of the K2
+       # final groups.
+       medoids <- getSeries(indices_medoids)
+       synchrones <- computeSynchrones(medoids, getSeries, nb_curves, nb_series_per_chunk,
+               ncores_last_stage, verbose)
+
+       # NOTE: no need to use big.matrix here, since there are only K2 << K1 << N remaining curves
+       list("medoids"=medoids, "ranks"=indices_medoids, "synchrones"=synchrones)
+}
diff --git a/epclust/R/plot.R b/epclust/R/plot.R
new file mode 100644 (file)
index 0000000..8d2c961
--- /dev/null
@@ -0,0 +1,15 @@
+#TODO: some visualization
+#for (i in 1:6) {plot(medoids_ascii[i,1:200],type="l",ylim=c(-5,5),col=i);par(new=TRUE)}
+#...
+#PLOT:
+#plot manifold 2D distances WER / --> récupérer les distances ? quand ?
+#fenetre tempo forme des courbes / --> OK (jour[type] / semaine, indices en arg)
+#medoids / --> OK (moyennés sur 1 jour / type de jour / semaine)
+#gain en prevision: clust puis full --> enercast (comment l'utiliser ?)
+#
+#> plot(cr$medoids[1:100,1],type="l")
+#> #for (i in 1:15)plot(cr$medoids[1:100,1],type="l")
+#> r = range(cr$medoids[1:96,])
+#> for (i in 1:15) {plot(cr$medoids[1:96,i],type="l",ylim=r,col=i); par(new=TRUE) }
+#> 
+#
diff --git a/epclust/R/utils.R b/epclust/R/utils.R
new file mode 100644 (file)
index 0000000..72f59ec
--- /dev/null
@@ -0,0 +1,139 @@
+# Check integer arguments with functional conditions
+.toInteger <- function(x, condition)
+{
+       errWarn <- function(ignored)
+               paste("Cannot convert argument' ",substitute(x),"' to integer", sep="")
+       if (!is.integer(x))
+               tryCatch({x <- as.integer(x)[1]; if (is.na(x)) stop()},
+                       warning=errWarn, error=errWarn)
+       if (!condition(x))
+       {
+               stop(paste("Argument '",substitute(x),
+                       "' does not verify condition ",body(condition), sep=""))
+       }
+       x
+}
+
+# Check logical arguments
+.toLogical <- function(x)
+{
+       errWarn <- function(ignored)
+               paste("Cannot convert argument' ",substitute(x),"' to logical", sep="")
+       if (!is.logical(x))
+               tryCatch({x <- as.logical(x)[1]; if (is.na(x)) stop()},
+                       warning=errWarn, error=errWarn)
+       x
+}
+
+#' curvesToContribs
+#'
+#' Compute the discrete wavelet coefficients for each series, and aggregate them in
+#' energy contribution across scales as described in https://arxiv.org/abs/1101.4744v2
+#'
+#' @param curves [big.]matrix of series (in columns), of size L x n
+#' @inheritParams claws
+#'
+#' @return A matrix of size log(L) x n containing contributions in columns
+#'
+#' @export
+curvesToContribs <- function(curves, wav_filt, contrib_type)
+{
+       series <- as.matrix(curves)
+       L <- nrow(series)
+       D <- ceiling( log2(L) )
+       # Series are interpolated to all have length 2^D
+       nb_sample_points <- 2^D
+       apply(series, 2, function(x) {
+               interpolated_curve <- spline(1:L, x, n=nb_sample_points)$y
+               W <- wavelets::dwt(interpolated_curve, filter=wav_filt, D)@W
+               # Compute the sum of squared discrete wavelet coefficients, for each scale
+               nrj <- rev( sapply( W, function(v) ( sqrt( sum(v^2) ) ) ) )
+               if (contrib_type!="absolute")
+                       nrj <- nrj / sum(nrj)
+               if (contrib_type=="logit")
+                       nrj <- - log(1 - nrj)
+               unname( nrj )
+       })
+}
+
+# Helper function to divide indices into balanced sets.
+# Ensure that all indices sets have at least min_size elements.
+.splitIndices <- function(indices, nb_per_set, min_size=1)
+{
+       L <- length(indices)
+       nb_workers <- floor( L / nb_per_set )
+       rem <- L %% nb_per_set
+       if (nb_workers == 0 || (nb_workers==1 && rem==0))
+       {
+               # L <= nb_per_set, simple case
+               return (list(indices))
+       }
+
+       indices_workers <- lapply( seq_len(nb_workers), function(i)
+               indices[(nb_per_set*(i-1)+1):(nb_per_set*i)] )
+
+       rem <- L %% nb_per_set #number of remaining unassigned items
+       if (rem == 0)
+               return (indices_workers)
+
+       rem <- (L-rem+1):L
+       # If remainder is smaller than min_size, feed it with indices from other sets
+       # until either its size exceed min_size (success) or other sets' size
+       # get lower min_size (failure).
+       while (length(rem) < min_size)
+       {
+               index <- length(rem) %% nb_workers + 1
+               if (length(indices_workers[[index]]) <= min_size)
+               {
+                       stop("Impossible to split indices properly for clustering.
+                               Try increasing nb_items_clust or decreasing K1")
+               }
+               rem <- c(rem, tail(indices_workers[[index]],1))
+               indices_workers[[index]] <- head( indices_workers[[index]], -1)
+       }
+       return ( c(indices_workers, list(rem) ) )
+}
+
+#' assignMedoids
+#'
+#' Find the closest medoid for each curve in input
+#'
+#' @param curves (Chunk) of series whose medoids indices must be found
+#' @param medoids Matrix of medoids (in columns)
+#'
+#' @return The vector of integer assignments
+#' @export
+assignMedoids <- function(curves, medoids)
+{
+       nb_series <- ncol(curves)
+       mi <- rep(NA,nb_series)
+       for (i in seq_len(nb_series))
+               mi[i] <- which.min( colSums( sweep(medoids, 1, curves[,i], '-')^2 ) )
+       mi
+}
+
+#' filterMA
+#'
+#' Filter [time-]series by replacing all values by the moving average of values
+#' centered around current one. Border values are averaged with available data.
+#'
+#' @param M_ A real matrix of size LxD
+#' @param w_ The (odd) number of values to average
+#'
+#' @return The filtered matrix (in columns), of same size as the input
+#' @export
+filterMA <- function(M_, w_)
+       .Call("filterMA", M_, w_, PACKAGE="epclust")
+
+#' cleanBin
+#'
+#' Remove binary files to re-generate them at next run of \code{claws()}.
+#' To be run in the folder where computations occurred (or no effect).
+#'
+#' @export
+cleanBin <- function()
+{
+       bin_files <- list.files(pattern="*.epclust.bin", all.files=TRUE)
+       for (file in bin_files)
+               unlink(file)
+}
diff --git a/epclust/inst/testdata/de_serialize.csv b/epclust/inst/testdata/de_serialize.csv
new file mode 100644 (file)
index 0000000..93e4938
--- /dev/null
@@ -0,0 +1,300 @@
+-5.99111002404243;6.09197938814759;-4.01558812707663;3.93923367839307;-1.40557636972517;-9.86592999659479;-4.67069430276752;-6.27562338020653;5.39506115950644;-0.65252021420747;-5.67792695946991;-0.308132213540375;-9.38223069533706;-6.19397971313447;2.16966223437339;-3.37941604666412;-1.90149905160069;-8.60223644878715;2.27425246033818;-1.46612398326397;7.57760594133288;2.00122968293726;1.68261247687042;4.7125943377614;4.27578664384782;-7.10167997982353;7.18189124483615;-3.07555097620934;-9.76314822677523;8.78715363331139;0.541225853376091;8.40070626698434;8.47684922628105;-7.32871437445283;-2.25794360041618;8.48425711039454;-1.44004794303328;0.453428803011775;8.65412176586688;7.49030228238553;-3.26864612754434;-7.84683137666434;-8.38512760121375;-5.59564815368503;0.83087011706084;1.94810075685382;-6.62994835525751;8.82968955207616;-7.63684036675841;-4.1796627920121
+5.56166209746152;3.63476124592125;9.65063011739403;2.58371195755899;-3.54721572250128;5.76430567074567;-4.20792349614203;-1.7747308826074;9.92149821016937;-9.04043455142528;9.96754202060401;-1.06469704769552;0.208937861025333;-4.99582556076348;-0.307519361376762;9.44671027362347;-6.34441807866096;-6.50696228723973;1.09367396682501;4.87398409284651;-5.91781189199537;-8.87786568142474;-3.34072523750365;2.50928055960685;1.3370816828683;3.57816372532398;6.79859290830791;2.96105345711112;-3.82899271324277;-6.4745998987928;-8.00874652806669;1.1485605686903;-7.86562416702509;-4.13296896964312;-7.27860941085964;3.98073970340192;-8.3380227861926;-2.54314832855016;-3.39878119528294;0.443414067849517;7.7084747934714;-3.3377232355997;-4.26929884590209;2.42695094551891;4.66557514388114;9.88088393583894;-6.84519893489778;-0.132398591376841;-9.69338546507061;-9.30057165212929
+-4.27790883928537;8.54399996344;1.98478472419083;3.18291102536023;-7.78951381333172;9.34020467102528;5.35332398489118;8.27344763558358;6.92680158652365;8.66677643265575;4.11256624851376;-8.14088875893503;0.187252364121377;-2.28860639501363;6.47276528179646;-1.87373716849834;4.01831180788577;8.56358884368092;1.34453794453293;-3.02477489691228;9.98009264469147;-2.13497364893556;9.64792437385768;9.93462882004678;-5.83917528390884;-7.99798976629972;-0.0207795342430472;-8.64935163408518;-7.62531423475593;9.98291352298111;-0.765806804411113;-7.23727893549949;5.7013938203454;-9.50437915977091;7.99148275516927;-5.17894525546581;-7.06019699107856;-0.441356366500258;1.57953222747892;2.80733188614249;9.43039015401155;-1.99636704288423;-8.04735373705626;5.05451947450638;-6.0013065719977;-6.64572222158313;2.84347581677139;-6.34999194182456;-5.35493952222168;5.20973869133741
+6.28349837847054;-9.88785487599671;7.17207330744714;2.50074112787843;1.1757329525426;-3.72024702373892;9.68001602683216;8.43351959716529;-4.7622150182724;1.41226341482252;-7.03970272559673;-2.63345723971725;8.22853572200984;-8.87697510421276;6.06995472218841;-7.85019746981561;6.07687663752586;-9.45125001017004;8.55621201917529;-3.01414574962109;1.04932316113263;7.60444486979395;6.55822394881397;-6.34177817497402;-8.57970610260963;-5.26093765161932;-8.11418192926794;6.46379621233791;-7.45446590241045;3.83486692328006;3.62270947080106;-0.78201720956713;5.0425355695188;4.06784125138074;-7.3734268033877;-2.8624132880941;-9.37966479919851;-5.27211782056838;1.28689931239933;-0.915793487802148;-5.86381055414677;1.51645111385733;-0.672820913605392;3.00368834286928;-0.913971974514425;-2.56702654063702;-6.44175439141691;6.21596738230437;-4.26139841787517;9.75969514343888
+-0.555241722613573;3.08856598101556;-2.77629354968667;9.5398712484166;-8.97099836263806;-7.927818717435;0.616671973839402;-7.64541552402079;2.28765503503382;2.034608325921;1.61567925941199;-2.35305371228606;0.884489398449659;-6.09538667369634;-8.73352404683828;-1.07064069248736;-6.69789627194405;1.68486810754985;3.02300567273051;-1.77082426846027;7.02385315671563;-4.03976466041058;-1.86854218598455;-4.27289005834609;2.92005789466202;-1.44194131717086;-2.65693483874202;-7.63314134441316;6.05476430617273;-8.99003298021853;2.04669086262584;9.58168961107731;-5.66932845395058;-1.03326183278114;2.32100614346564;-2.95879447367042;7.73089170455933;8.9863203605637;9.28669069427997;0.060067237354815;4.79730778373778;-8.50601910147816;-2.82116231974214;8.10044421814382;-5.13142714742571;1.14633444231004;5.88691407348961;-3.84035070892423;-2.76613425929099;-2.00862702447921
+-7.1078405668959;-7.83485744148493;-0.064642378129065;-1.54910679906607;6.01520232390612;9.29956739768386;-6.23102214653045;6.29008744843304;-7.1282304963097;-0.628084372729063;-5.94382859766483;-5.15816350467503;1.75894993823022;-6.82299681473523;8.15264359582216;6.01522653363645;0.943607809022069;-2.07920002751052;-8.64601735491306;3.02782893646508;-5.24346714373678;-0.81309303175658;-3.23806890286505;-0.0505476212128997;-6.66166782844812;-5.01577256247401;8.29713302198797;-9.47806749958545;1.08590355608612;-7.11038887966424;4.09084449987859;7.51168268267065;-6.90509103238583;-1.43332478124648;-2.55749259144068;-7.76613438967615;1.58353842329234;-6.51613355148584;-3.87047898024321;0.897695375606418;0.648272153921425;-7.66020894981921;-7.09357706364244;-5.21191824693233;-2.00325528159738;8.39784345123917;9.05623400118202;-3.93236601259559;3.88460693880916;-9.50648911297321
+-4.82467344496399;3.29910593107343;-9.83559275045991;8.51643323432654;-1.15209127776325;6.25308275222778;4.27422012202442;-9.50145967304707;6.56882122624665;-1.90641219262034;-6.18001434486359;-9.71815815661103;-1.18622012902051;7.74989302735776;6.82143118232489;1.39349824748933;-2.79281751718372;4.16919318959117;-6.1107723088935;-1.26121213659644;-9.39302952960134;9.36512931250036;4.2747776536271;1.00350602064282;9.86019285861403;7.78676367364824;6.87706595752388;-0.350320199504495;-8.77165420912206;3.79048117436469;0.218000989407301;-3.85754316579551;8.69256630074233;6.29095724318177;5.53997157607228;-4.18635090813041;2.55027650855482;-1.07850628904998;7.91123784612864;-2.71028093062341;-8.14806463196874;4.91046604234725;7.27025864180177;5.66942136734724;-0.840896302834153;-0.804166789166629;-9.83207799494267;-9.55312236212194;-8.9476827904582;7.94521495699883
+-2.08401874173433;-6.2612697808072;-7.225535614416;5.43063005432487;-0.400145333260298;8.04494060110301;0.261134593747556;-5.30205584131181;2.49307315330952;5.88783884420991;-7.17108622658998;1.48609550204128;-4.39373320434242;-2.48499670997262;-2.2800793685019;-7.11981725879014;-2.95436083339155;-6.91170560661703;5.52474544383585;-7.79949861112982;-2.26013036910444;-1.28038879483938;2.98451753798872;-8.95586364902556;4.19380205217749;-8.25271561741829;9.88195908255875;-1.29885253030807;-4.84307841863483;-0.481335590593517;-4.25532323308289;3.36245745420456;2.20836560707539;-9.21452489215881;5.61118557117879;1.69039043597877;-1.44199044443667;2.01326294802129;-1.86943834181875;-6.08090989291668;-8.97251039743423;7.906090086326;-2.11337944492698;8.42689494602382;4.96969990432262;6.50086670182645;-4.04133487958461;5.56677715852857;8.42992727644742;6.33610950782895
+-3.94653886556625;-0.996815674006939;1.98583316989243;3.1672039302066;1.90098508261144;7.9272475419566;5.14781475067139;2.71931947674602;2.11245241574943;-8.40257101692259;9.26309630740434;-9.41002506762743;-5.33029825892299;9.96528302319348;-5.21778509020805;-5.31358911190182;1.39611883554608;6.388961202465;-0.291690304875374;-9.74420133978128;-2.31937171891332;-6.50680883321911;5.05621114280075;4.43948831409216;3.38982551824301;-0.32882952131331;-2.53537443932146;-7.54250570200384;-9.61085741408169;6.85252154245973;-8.62339474260807;-4.67779808677733;4.68228333164006;5.09129495359957;-4.35151666402817;2.97390782739967;-2.82759028021246;-9.65530488174409;9.47832887526602;8.71490919496864;9.84390048310161;-0.320754079148173;-1.48932875599712;7.81936845276505;-0.290932888165116;-2.53298420924693;-4.97645414900035;-3.26840717811137;3.40065252035856;-5.33890429418534
+6.11658720299602;6.09766808804125;4.80072860606015;2.71977247204632;2.5376614369452;-2.29985898826271;1.18405658286065;6.60825458355248;-7.06195234786719;-1.3515767455101;-6.95229655597359;8.35021649487317;8.31414266955107;8.14777401741594;-3.99716059677303;6.34416899643838;-9.31574083864689;-8.15669790841639;-0.502038039267063;2.18196843750775;-8.83679980877787;-9.20976772438735;3.12075764406472;0.656940345652401;4.80506334919482;-5.18773631192744;-1.20721332728863;6.06814407743514;1.32697912398726;-7.10908576380461;8.15922968555242;-4.16385540273041;-8.69697487913072;-2.35560281202197;-0.0787335867062211;-7.96098545193672;0.588687136769295;7.96645723283291;9.92084440309554;-0.239791185595095;3.98741200566292;-4.35804017819464;3.58944675885141;-6.5072133904323;-7.17670815531164;8.18223688285798;-8.80737183149904;4.55008483957499;-6.69267203658819;-6.89897628501058
+-6.58798035234213;4.08955611288548;3.64052339456975;-8.76401795074344;0.901448950171471;3.22399380151182;2.9812628775835;3.50783177651465;-6.01093934848905;6.38428489677608;-6.09182314947248;-8.72344069648534;6.39644813723862;-6.1226934986189;-0.652158232405782;7.11236072704196;9.12880156654865;-8.75938009470701;-7.86406361032277;3.07432108093053;-6.63162079639733;7.24501671269536;-7.70954647101462;4.33919192757457;0.386462328024209;4.35927729588002;-0.262796203605831;0.841725748032331;8.95562276244164;-6.95512767415494;8.88356673531234;4.67220981605351;9.2248866148293;-1.55621830839664;3.50662674289197;-7.84510968718678;-3.21387386880815;-5.68206920754164;4.99295190908015;-3.87525116559118;-2.62973550241441;0.893698465079069;-9.85932365059853;-1.08747715130448;8.25088419951499;2.26209090556949;-7.07302084658295;-0.313832303509116;-9.6913606626913;3.59634899068624
+-5.50493486691266;0.547313434071839;-6.96309841703624;6.30690331105143;6.86814821790904;-8.85414354037493;-3.32970139104873;-3.21622291114181;-3.1452421983704;-9.92800306063145;-3.61213484779;-6.60062063019723;-0.591869060881436;7.00582389254123;7.37272115424275;9.52878833282739;-1.29208818543702;4.4641058659181;5.82229759544134;2.87941738031805;6.6757629532367;-6.44774462096393;-5.92626246623695;-3.013138868846;3.93160079140216;2.80956105329096;-9.51777553651482;-7.15529802255332;-9.48301809374243;-0.71662659291178;-9.27443404216319;-3.99063573218882;-2.75379366241395;0.146913258358836;3.22162381839007;-2.06488256342709;9.55363607499748;8.48647070582956;7.99228140618652;-1.10119287390262;6.4946341747418;-0.0833454914391041;-7.62242338620126;8.65725270472467;4.63667741045356;2.45652395766228;-6.97437290567905;0.796974101103842;7.42864692118019;-6.64305191952735
+2.83320816233754;-4.57049124874175;-7.69664623774588;6.75181637052447;9.89616787526757;2.50402439385653;2.41438207216561;-9.90302627906203;-6.18873280938715;9.18912077322602;-3.27696837950498;-3.63982657901943;5.05821050144732;-3.65630195010453;-1.66271678637713;8.29057548660785;-3.86862223502249;-9.55829865764827;-3.91599066089839;6.98940670117736;-3.44415053259581;4.63964404072613;-6.23275880236179;5.55225826334208;5.32933415379375;2.32438556849957;-9.50710778590292;-3.93154848366976;2.19796908088028;-7.34191222116351;-0.194851798005402;3.51611630991101;-1.59444791730493;4.67161844950169;-2.23712075036019;9.71127158496529;4.98029159847647;0.529828788712621;8.79571975208819;9.20799651183188;-5.37523219361901;-9.48888165410608;-6.2924122530967;2.95205181464553;-0.840128343552351;-8.88349752873182;-3.33466045558453;-8.01418033894151;9.22120091039687;6.72450349666178
+2.96496651135385;-2.37372169736773;4.04767765197903;9.81329711619765;-1.76305334083736;-7.1781800640747;-6.62033715285361;-9.75384766235948;8.70065887458622;-4.98762426432222;4.73883477039635;0.297544817440212;6.40471848659217;-4.62745455559343;-3.25593322981149;-0.814487733878195;2.78316492214799;7.29979610070586;-4.7633174341172;5.71612353436649;-5.51630630623549;-4.23968271352351;4.57959620747715;8.46055172383785;-4.38114650081843;3.45112686045468;-1.59991927910596;-2.08998568356037;5.82325629424304;5.82407410722226;-8.80211228039116;6.18523168377578;-0.920695029199123;-6.78327451925725;5.53838543128222;4.38908399548382;6.72492952086031;4.64991273358464;-2.41740827448666;5.05910949315876;-7.49243909027427;-3.52311754133552;2.1123818308115;-1.71826402191073;8.93672264181077;1.15610185544938;6.87800812534988;1.04406159836799;8.43088848050684;-9.01546466629952
+-2.45452993083745;9.96981901116669;9.95674644131213;-9.52918522059917;-5.53114997688681;8.81051413714886;-8.14156963024288;-7.78973524924368;-9.1689979005605;-2.48610560316592;-4.54865146894008;-3.64996504969895;4.21779362950474;5.84646020550281;-8.07933177798986;-4.6138743404299;-2.67978163901716;0.241198837757111;0.442491928115487;7.01054193545133;4.6646587504074;-4.40176161006093;-9.26672363188118;9.67409782577306;0.295302872546017;-3.0993273248896;6.19704634416848;2.09595120511949;-9.25478328019381;-6.01596330292523;7.85204073414207;-5.93169902916998;9.36764599755406;9.78961595799774;-8.39734949637204;9.80105575174093;-3.52921275887638;0.690834731794894;-3.96995201706886;5.83305196836591;-7.4785395199433;-1.84707157779485;4.84827115666121;-1.28765324596316;1.53445097152144;7.81896035652608;-8.1318202894181;-1.291708284989;-6.63788264617324;7.71318997256458
+5.54311371874064;-4.57956881728023;8.57825052924454;-0.00629843212664127;3.62408272456378;-3.92371126450598;-5.3429859643802;9.28890994284302;-6.57130951061845;4.20910513959825;-5.22270091343671;-1.88525175210088;8.34913940168917;9.5354787632823;8.7312666978687;-1.08363633975387;1.91176176071167;8.48774180281907;-5.17658091615885;0.648338478058577;5.78456607181579;1.8997963052243;-6.31986453663558;4.96359834447503;0.689360862597823;-5.75299424584955;3.17349233664572;1.17566830012947;-3.45473870169371;0.922512686811388;2.1582779660821;-8.80664631724358;7.62962232343853;-1.48872158490121;-8.61551633104682;4.48251374531537;0.776691865175962;-3.27591939363629;-7.16670050751418;-1.71004578471184;-6.03286165278405;2.98638639040291;6.25778499059379;-7.28782199323177;-1.63364578504115;-3.47887120675296;-4.73949139472097;-4.68877365812659;-0.902259782887995;7.17075899709016
+-2.25563341751695;-9.65634897816926;-4.50784161686897;-9.53603638336062;-1.24783514533192;-3.50667026359588;1.60067703109235;-7.11403546854854;-8.75555433798581;8.13295150641352;-1.02290201466531;7.60313296224922;1.73526138998568;-1.05539943557233;-4.91345847025514;4.03911029454321;7.09510532673448;-2.94147584587336;7.93598263058811;9.9335668887943;-6.5970963658765;1.33800734300166;2.66837507952005;-8.98697106633335;-8.87626448646188;-1.81574519723654;-9.93344332557172;4.35294308234006;1.63184174336493;4.77931168396026;-5.40794489905238;-7.52705461345613;7.7181733539328;2.90667420253158;-6.34858728386462;8.99566538166255;-3.89486842323095;1.88004003372043;8.11262029688805;9.7031738050282;1.07829707209021;7.91270839516073;3.48495083395392;-8.58465017285198;1.25114455353469;-9.0776892984286;-0.112344161607325;-6.96122802328318;6.64438774809241;-3.6569780530408
+7.55460073705763;-1.57141141127795;9.63321931194514;-9.64783519972116;2.0229628495872;-1.41143830493093;-9.83733981382102;-4.45132583379745;8.83050497155637;6.39075063634664;-1.78386251442134;1.07005827594548;-4.56248788163066;-9.10446475725621;2.58480595890433;5.75444627553225;3.99164186324924;4.13557602092624;-9.20259411912411;-2.50018648337573;2.46391792781651;6.47518439684063;2.10816598497331;-7.84468435682356;1.01608911529183;-5.28400717303157;9.31644456461072;-7.07057661376894;-0.677524302154779;-2.71310372743756;-8.5716870194301;-8.97342779673636;8.44439392909408;-6.28430183045566;3.69744544383138;-1.94884893950075;-7.21551705151796;-8.51142555009574;6.51247883681208;-7.74459492880851;1.41768600791693;-6.71547355595976;-9.09986917860806;-8.30116115044802;0.118706170469522;6.11547774635255;-8.42940211296082;-5.96438711509109;7.92597730644047;-3.16388644278049
+-7.16875873506069;-1.51163667440414;-3.22166280820966;2.95872716233134;0.594113604165614;2.08994795568287;-1.55292163603008;-4.94734247215092;-7.63451824896038;-7.81696120742708;-4.9513409473002;3.31892170011997;6.63503758143634;9.62644790299237;-3.99692733772099;2.51251505687833;8.78649998921901;1.72410587314516;-5.60823167674243;2.58748695719987;3.12054172158241;-4.82277669012547;-4.82130565680563;3.34050357341766;6.69578420463949;-8.12739795539528;-4.98305839020759;-3.39548557065427;7.52364553976804;9.89249139092863;-0.561892157420516;-9.99517355579883;-4.93786464910954;9.73472006618977;-8.35642389487475;7.93094721157104;5.79303242266178;-9.05771692283452;-6.91718983463943;5.04972266964614;-9.77434428874403;-2.82926830928773;6.78966398350894;-6.96142533328384;-4.42772309295833;0.393355386331677;-9.71538761630654;-1.12926435656846;-1.69677730184048;-2.49042382929474
+3.41744750738144;-8.14223444089293;-0.443026209250093;-9.58925256039947;-6.9834697060287;3.25637705624104;-1.69310695491731;6.16673256270587;0.456696758046746;7.61315575800836;3.30301044043154;-9.21251266729087;-0.202364143915474;-6.489008362405;2.13053271174431;2.95746327377856;-6.75572398118675;1.42052224371582;-6.43982070032507;-3.24549691285938;-0.0305873388424516;3.10628271661699;9.61851283442229;3.9670617878437;-6.60114926751703;-7.72463688161224;3.97409281227738;9.06944466289133;-0.543670458719134;-2.65327470377088;2.62578653171659;6.29547716584057;7.47540174052119;-7.61636518407613;6.9674157910049;-9.39464117866009;6.87626756727695;9.93815904483199;-2.36957104876637;-0.806055292487144;5.82153033465147;5.51000168547034;2.02938216272742;0.884072394110262;3.42785980086774;-1.05918074958026;-1.6855870001018;-2.04611662775278;3.64119549747556;-0.0420155376195908
+6.06058635748923;-8.22533232625574;-9.25086511299014;9.60925932507962;-1.86639670282602;7.43957200553268;-7.67521293833852;-4.78432103991508;-4.27104977890849;-2.27904137223959;8.37050220463425;-4.8987022601068;-7.16159181669354;7.95262897852808;5.87808454409242;-7.29562730994076;-3.64283780567348;-9.8048567539081;6.31205731537193;8.52079626172781;7.51916867215186;2.84270864445716;-1.85553651303053;-8.72844046913087;6.67904421221465;2.72570051252842;8.67883946746588;5.88915083091706;-4.64588890783489;9.49283662717789;-7.25936393719167;3.26732074376196;-3.10149902012199;-9.49706068728119;0.115818688645959;1.61181165836751;7.32165087014437;-0.450497339479625;3.93607898615301;2.76247952133417;-9.22230862081051;1.30690613761544;-7.52335071563721;-5.43543281964958;-7.79268598649651;7.43566827382892;9.47038734797388;2.42906987201422;7.64154692646116;-3.72595748398453
+-9.05318473931402;4.63992902077734;-3.7890755943954;6.29881289321929;-0.0608525471761823;2.07263354212046;6.92479663528502;-2.6558639574796;-9.25740223377943;4.04482900630683;-2.58630413096398;-2.13402931112796;-5.8345719659701;6.89737563021481;-0.980054107494652;5.40719712153077;-5.18039403483272;4.143674694933;3.9376083528623;7.08667541388422;1.52106238994747;8.29260762315243;9.5306308567524;-3.65844008512795;-1.87828255351633;-9.04836761765182;-3.46215487457812;5.07485519163311;9.11928489804268;-1.02392062544823;6.67494759894907;-4.97781648766249;-6.74564712680876;-5.05211438052356;5.90286176186055;7.46488709002733;8.94347812514752;9.13688989821821;-2.74367607198656;-2.51238927710801;1.46207971964031;8.7686855206266;-7.97585710883141;-1.59172606654465;-9.67164946254343;-8.87131167575717;-4.02516987640411;0.53542488720268;8.79882094450295;3.22957335971296
+-4.79033831972629;-5.45275121927261;-4.03935112990439;-3.68443993851542;-3.30415948759764;2.05597496591508;2.93497577309608;1.50110174901783;4.76257419213653;4.02748956345022;1.98908730875701;-4.12250634282827;2.79120877385139;0.10846144054085;-9.57149976864457;-6.68987467419356;8.32716850098222;-7.23154141567647;6.83675733860582;-2.94451680034399;8.12096502166241;-1.0387019161135;6.49156397208571;7.72842490579933;-8.12859291210771;-1.98538270313293;8.5323558235541;-7.71161305252463;-0.0860823458060622;7.75877353269607;-0.988940703682601;9.0873039001599;-7.58593099191785;2.31584541965276;4.2768907174468;7.53754244651645;2.10744365584105;-4.08006713725626;4.26246562041342;-7.90270674508065;-1.7391036497429;1.73936014529318;-9.13782540243119;-0.613625263795257;9.76147255394608;5.65568360034376;-6.08206174802035;-1.2953801266849;1.47623665630817;-3.64157991949469
+-6.32213391829282;1.63256200496107;-4.59778513759375;6.07725286856294;3.77156724687666;0.238019269891083;-2.47270492836833;-1.55347530264407;3.38795695453882;4.75033275783062;0.000444916076958179;6.46780325099826;0.878725708462298;1.25312715768814;-5.93650947790593;6.07264245860279;8.95566208753735;-2.46978349518031;-2.19028395134956;-1.63465932942927;6.73349340911955;7.5104163819924;-0.419359090737998;3.61969999969006;1.73833802342415;-6.30910350941122;-4.5448163151741;3.92618911340833;3.10417879372835;9.1193398879841;3.39713511522859;-7.58855897933245;6.70140842441469;4.71577982418239;3.18427069112659;0.662016160786152;0.641421731561422;-3.87776472605765;2.23891017958522;-5.70845711044967;3.78385842312127;-5.56394339539111;-5.7211968395859;3.59887219499797;9.02178614400327;5.26069945655763;2.46407526079565;2.22140019759536;-3.15050366800278;5.02185027115047
+-0.517207672819495;4.02603727765381;-4.4920440018177;-7.96223008539528;3.46848805435002;-7.24085041321814;-5.24153688456863;4.10674364771694;0.211641909554601;-1.96128299459815;-3.49699365440756;-5.5417252285406;-9.45131580810994;-0.759130027145147;-0.935313971713185;7.44485776871443;8.5754040395841;-2.94299320783466;6.44185143522918;1.90588413737714;-8.79072826821357;3.20475848857313;8.76219321973622;-0.265259062871337;-9.20809146016836;4.52248305082321;-7.12583218235523;-0.440601012669504;-0.431031621992588;5.71633460465819;-9.48431351687759;1.20917025953531;-3.85759335476905;-9.46086764801294;-8.78662840928882;-4.81306031811982;-7.74029701016843;1.94248005747795;-7.84652207046747;-3.28509542159736;-9.06044173054397;3.3311347104609;4.45286493748426;7.92704021092504;-8.7800888158381;9.58969853818417;2.13141615036875;-2.38194210454822;-1.1552334530279;5.81780242267996
+7.31987956445664;3.49543758202344;-6.90817901864648;5.83799114916474;-5.0286250282079;-2.04430658835918;7.74299997836351;5.05775599274784;-1.7745612654835;-1.95966858416796;-1.36875258293003;-1.99590221047401;-4.81798367574811;-1.28461350221187;3.20474651642144;-8.83645244408399;2.22556193359196;-7.62048637960106;6.51935544330627;-9.69311437569559;8.79279342014343;4.74977867677808;-4.41462945658714;-4.15802877396345;3.80160081200302;8.09343419037759;-6.50126829743385;8.43197276815772;-3.18494480103254;-2.07064097747207;3.80741665605456;-7.636065967381;3.36537234950811;-5.99591940641403;4.37809678260237;-0.72895341552794;-3.23824863415211;-0.784061681479216;7.5923515483737;7.40001022350043;7.12497903965414;7.24531960207969;-9.46103904396296;1.79069729056209;-9.10331551916897;5.92331940308213;-4.1666440712288;-9.94899316225201;0.421894928440452;3.17260536365211
+-2.66563178040087;1.02010156493634;1.91831392236054;-3.99274630937725;4.46301823481917;3.15561853349209;-8.36875531822443;-0.0794133730232716;-0.596560020931065;-9.77260923013091;6.97202037554234;-4.32895883452147;-3.38654334656894;7.68028037622571;-3.58884675893933;4.67114515602589;7.3061205400154;-4.75148085970432;3.39862396009266;-1.28858898766339;6.29568306729198;-6.07481511309743;4.02824791613966;-8.16262731794268;9.30957493837923;-2.58876322302967;7.54315311554819;5.52168857306242;-0.802911845967174;-5.53446257021278;5.10584350209683;6.08047980349511;-5.74706594925374;-8.65060579963028;6.38113628141582;-2.42200864013284;6.64570546709001;9.22555357217789;-8.67380856536329;-1.35813123546541;-6.76040771882981;-0.672390926629305;-7.22563870251179;7.57751382421702;-1.47762543521821;-8.03486973978579;-1.98737789411098;1.09938036184758;3.48866782616824;-9.7962148161605
+1.57660657539964;9.86596251837909;3.30284657888114;-9.84254728071392;8.59943727962673;-3.08263121172786;-5.53361545782536;-9.38733319286257;7.35205564647913;-9.09459216054529;-4.77839151863009;1.54214700683951;-8.95378019660711;7.99804591573775;-4.62034357711673;6.1528013413772;3.43706391751766;9.69401543028653;8.70277454145253;7.86302651278675;3.74956210143864;-7.89424253161997;0.960950683802366;2.6041183527559;-1.69067610986531;-4.41504944581538;-3.01977816037834;-6.41451691742986;-6.49767054244876;-9.22603278886527;-8.25192264746875;-0.520512103103101;-8.08141904883087;4.14975757244974;-7.1418173564598;-9.82927437871695;-0.115757710300386;-5.580746200867;1.66495450306684;-6.04089539032429;6.03171671275049;7.43860245682299;2.71880173590034;-0.509598175995052;6.87110791448504;-4.90721886046231;-3.6128058983013;6.62097443360835;6.01485115941614;3.58575295191258
+-0.623623509891331;-4.70445264596492;-0.166210485622287;-2.80830771196634;-4.68588944990188;-7.74246557615697;-0.39785266853869;0.108013479039073;8.94595441408455;-8.18652064073831;-8.01955088973045;9.42617224995047;-0.690835048444569;4.33169636875391;7.98758657649159;3.70473424904048;7.94311464298517;5.86305781267583;4.89389355294406;9.4526179600507;-3.95877537783235;7.48304290231317;5.93263875227422;-2.25602917838842;5.11899677570909;9.73343981895596;7.91166257113218;8.75578843057156;-4.52680201735348;-4.8306071665138;3.34447095636278;-2.04755787272006;-4.70680868253112;-9.56305187195539;-0.697575444355607;7.26221247110516;-2.77843256015331;-5.59578961227089;-9.76378528866917;-2.09408446215093;-4.67677154112607;9.71905020065606;-1.38788050506264;-8.34421751555055;7.67306808847934;3.87383313383907;-9.79257558938116;6.18326647207141;2.57582517806441;5.29078590217978
+9.56758018583059;-9.97940706089139;6.07915934175253;4.70161586534232;-8.01795999519527;6.59562956541777;-1.36546249501407;-2.45388432405889;1.66900666896254;-3.50823249667883;1.64123731665313;-9.21717223711312;-7.17852905392647;-9.31798371486366;-4.68099418561906;-6.69020929839462;1.62639948539436;-4.57839431706816;-2.41342678666115;5.55631524417549;0.426935562863946;-5.16342213377357;-1.081721666269;5.44555953703821;4.16686878073961;-5.84341147448868;-3.56657513417304;8.94180291797966;7.12474199477583;-8.97931499406695;-0.158083136193454;2.93745786882937;6.6567892068997;-5.58841039892286;-2.71589668467641;7.49168962240219;2.66950196120888;6.1505338922143;4.72540596034378;-5.23278244305402;8.37725587189198;9.05841097701341;0.33499856479466;6.43686454743147;7.36209424212575;-8.14983690623194;-9.01179099921137;-5.50814356654882;-5.74135868344456;7.84542412962765
+-8.11621478758752;5.0570728443563;7.85974203143269;-7.23622140940279;-4.39685625955462;-6.15423948038369;-0.119104362092912;4.73688066471368;-9.18998572975397;-2.06550145987421;2.38206949084997;9.08877089619637;-6.02906052954495;5.76419284101576;-1.41243915073574;3.85415309108794;-5.51838518120348;3.67024926934391;-7.54912348929793;6.7516977712512;-3.33282585721463;1.43246228341013;1.8622886762023;-1.6853960044682;-5.81563600804657;-0.533030047081411;-2.31989202089608;-3.35756331216544;-5.99790034815669;-7.51444650813937;0.90159825515002;5.28528802096844;6.56954290345311;-3.25907463673502;3.87271403335035;-9.64368193410337;8.53224963415414;1.71334250830114;-8.72193491552025;-5.47142012044787;2.26883907336742;1.94672846700996;-2.23262426909059;1.90536370035261;2.72422062698752;9.38590216450393;-9.38570089172572;-1.92977998405695;6.4164771605283;1.42801257316023
+-1.49343525990844;4.75699068978429;-2.97171449288726;-5.50333723425865;-9.33995778672397;5.92078695539385;9.57754138391465;4.07081151846796;3.87981420382857;-0.300040291622281;-8.42576669994742;6.85497744940221;5.0919244159013;7.67156573012471;-3.80572286900133;-7.07522415090352;-8.01710911095142;8.7248011585325;-4.18310130946338;-2.58380705025047;-9.82257118914276;5.99701995495707;5.96035694237798;6.0035197949037;-3.6685677152127;2.65024381689727;1.46409966982901;6.48602719418705;-3.14937876537442;-2.83261779695749;2.08443106617779;-3.79225950222462;8.26517930720001;-0.997222559526563;6.9936422072351;3.28620308544487;4.98736918438226;-3.93511638510972;5.40512185078114;-4.94671603199095;6.76755408290774;3.37079979013652;1.10543148592114;-1.16840434726328;-4.16703861672431;-9.31744928937405;-3.39056121185422;-2.18122433871031;9.32587375864387;4.88737859763205
+-4.8883317084983;-0.211850274354219;-4.78062395937741;7.39102026913315;-7.68393334001303;1.6447317134589;-1.20398910250515;0.404231962747872;-2.13459057733417;-4.99079247005284;2.7639606082812;6.66603040881455;5.03329851198941;-3.79905038978904;-8.60932225827128;1.64218329824507;-9.30384042672813;9.86582613550127;-0.884803947992623;5.25329104159027;-8.03659643046558;-2.99820674117655;-6.319973571226;3.36149439681321;9.34901864267886;-0.807972904294729;-9.77867828216404;-3.44294508453459;1.14998618140817;4.32901110965759;-1.77279409952462;6.66934166569263;6.41287064645439;2.22841633483768;6.95154365152121;-8.67307546548545;0.681033227592707;5.82253693602979;-9.54200433567166;3.04542462341487;-1.09840464312583;-2.58765481412411;-6.71184905804694;7.55641326773912;4.37370973173529;2.75149444583803;-6.29532531369478;-6.76255785860121;-4.88280536606908;-2.97702243085951
+7.16604243032634;-1.41757050063461;-6.76948918495327;0.588635168969631;3.12288450542837;-5.83258273545653;-8.56447088066489;-0.611732639372349;-8.70007551740855;-9.50427914038301;-6.34349363390356;1.52535633184016;-2.77314032893628;3.17530858330429;-8.41122891753912;9.35447541065514;1.62160587497056;-3.13680839724839;-9.92041741032153;5.40465913712978;-3.96305748727173;6.52009481564164;-1.21086929924786;2.53232198767364;3.59790042974055;-3.9507598336786;8.41104035731405;-7.86249335855246;1.58453160896897;8.42966565396637;1.2445120466873;-9.12766779307276;7.57679098285735;-4.9527494981885;7.2988043865189;4.04472530819476;-4.88163129426539;7.66449701040983;6.04567062109709;6.61798760294914;-6.87836715020239;-6.6302471794188;3.24854924809188;7.98440180718899;-3.96392052527517;9.89427550695837;-6.71274041291326;-4.88433759193867;9.93674933444709;6.85329139698297
+-2.9897689120844;-7.66080080065876;-9.82010369189084;-9.94472322519869;-9.74108290858567;7.43822222575545;8.69996895547956;-9.61664034053683;-4.06280619557947;-9.91089176852256;-7.29239944368601;-1.34975153021514;-6.30612638778985;-9.94059149641544;1.36137312278152;5.48505709972233;-8.51911158766598;4.17825089301914;-3.40451462659985;-0.334759256802499;-4.85319584608078;8.92252004239708;0.583983650431037;-0.468778726644814;-3.13092159572989;-2.41926136426628;1.75728084053844;9.35676401481032;3.85012946091592;-3.25980240944773;-0.505193173885345;-2.95777581166476;3.53399305604398;-0.0563488295301795;0.493103046901524;-9.49669384863228;7.22149929963052;1.91134665161371;-7.70913070067763;3.99135289248079;9.43481113296002;9.15261505171657;-2.57165221497416;7.04018985386938;-9.84480943996459;7.86017573438585;-6.61825221031904;2.04131052363664;-2.74821265600622;-4.38138500787318
+-5.71790605783463;5.35688389558345;5.86972198449075;8.69607850909233;-2.92939694132656;-4.16020388249308;-6.45236130803823;-4.54609876964241;-7.23582490347326;3.54564569890499;2.8445062180981;-6.92807871848345;0.503315823152661;0.605273558758199;0.00690480228513479;0.551357823424041;8.91903375741094;-2.58365475572646;0.375435696914792;2.01474169269204;5.60280693694949;-9.5194531371817;-3.36625447962433;3.68671867530793;-7.83178000710905;7.66155876219273;-1.3680913625285;7.59704615920782;0.0427042925730348;-2.46163073461503;1.76355461124331;-0.103497942909598;4.47345491498709;-8.08270305395126;3.59882523305714;-6.81572507601231;9.03345405124128;-3.82726813666523;-7.71685764659196;-1.94530359935015;-5.11601604986936;-0.329233701340854;4.10813175607473;-1.37319125235081;-2.30357343796641;2.04049892257899;5.66816307138652;5.49024468753487;-0.848308559507132;3.44279074110091
+-2.56809388287365;-9.85932882409543;0.0249091256409883;3.72920040972531;5.11656710878015;7.6730122230947;-9.57498245406896;9.44261365570128;7.47577882371843;-9.45569972041994;-4.06787052750587;8.60675425734371;2.24882948212326;-7.42206788621843;3.62512222491205;-7.50226194038987;9.05195349827409;8.88173265382648;8.77285787370056;9.4146457221359;-1.11248928122222;-5.42417121119797;-0.0823469692841172;7.52239372581244;7.87842808291316;7.71145073696971;4.53794018831104;-1.23630180489272;8.24717667885125;-2.53159935120493;-3.19910218473524;-0.465044523589313;-2.5457836035639;-5.94904254656285;-0.353405484929681;9.91814009379596;6.54659283347428;-3.70523381978273;-1.8008789094165;2.4985323054716;5.3978058276698;1.54026869684458;0.357379862107337;-4.79188160039485;-8.54773080442101;-9.8150230338797;-9.7088626679033;-3.27258340548724;-4.36727583408356;8.43146437313408
+-8.51391274016351;-2.96506328973919;-5.84841376170516;5.11368956882507;-5.78916967380792;7.47483239509165;-7.30356042273343;3.15872349310666;-7.66966140829027;-5.45432413928211;2.81372224446386;-6.69676554389298;-2.36514313146472;-9.73603751510382;5.74963155202568;-4.32630913332105;2.42507983930409;-3.02633812185377;4.14591151755303;3.19921696558595;1.80773281492293;-5.28296536300331;-6.74118642229587;-0.367022771388292;6.15719215013087;-9.4998254487291;4.17782797478139;-2.05885622650385;-9.82614876702428;-5.34203098621219;5.90663083828986;3.84394369553775;-8.84406769648194;-2.93557896278799;5.7335139811039;-1.43640536349267;0.984109835699201;-2.12668252643198;-1.20188327971846;6.56793628819287;5.19290394149721;4.01222863700241;7.14335937984288;0.0328461173921824;4.29212857503444;2.68488798756152;-5.27218044735491;9.48427015915513;-8.25333390384912;0.618718359619379
+7.94718282762915;-3.30737337470055;5.44203070923686;1.78788180463016;-2.08242425695062;-0.82344095222652;8.24899414554238;-7.45866999961436;6.98712789919227;2.74613333866;5.75370097067207;-8.32663762848824;-1.19306060951203;2.35745889600366;1.86612876132131;2.02466882299632;-6.6237538959831;-8.48377518355846;3.60563549678773;-4.78441413957626;-9.4654355943203;-9.39642613753676;2.9494576761499;7.35961393453181;0.897669829428196;-8.51045117713511;9.39881348051131;9.64288896415383;-2.78482221532613;-3.76202760264277;-6.40073756221682;-4.46743075270206;-4.42809059750289;6.88588298857212;8.07309789583087;2.85596635658294;2.25693224463612;8.55233104433864;-4.86258537042886;-8.21254170034081;1.93334060255438;-6.16557371336967;-3.65501959808171;0.480977497063577;9.28457754198462;-4.48172679636627;0.848144600167871;-0.30663616489619;1.00820258259773;-1.95729444734752
+-1.12181774806231;4.71165293361992;9.68202261719853;-8.70633504353464;7.29478360619396;8.09392159339041;8.98349532391876;7.11520899087191;-8.27564097940922;-8.61109174787998;4.23540493473411;6.42242084722966;-0.146580734290183;8.13702854327857;5.18827351741493;0.599929890595376;-7.56182725541294;-9.91077422630042;-3.96480510011315;-7.09557519294322;-7.24036346655339;3.68707227520645;4.16183582507074;-0.474082231521606;6.6314813029021;-5.17944993916899;-6.64404936134815;5.14880875125527;-7.2314644837752;-7.63704332057387;-9.59129150491208;7.95655273832381;-1.50385643355548;-6.56893932726234;9.97739696875215;-3.09758025221527;-3.48088608589023;0.61227785423398;-3.61655151471496;-8.9626623224467;-7.23655032459646;-3.7026597885415;-0.467815711162984;-0.0306342262774706;8.3263913076371;-9.00984680745751;7.82072035595775;-8.75097704585642;9.99541852157563;-3.63800574094057
+7.89245452266186;2.51036514993757;7.75983864907175;6.05175707489252;-8.25068082660437;-5.99768362473696;-9.4382698694244;-7.15310583356768;-9.28573449142277;0.636927955783904;-1.01566868368536;6.76332386676222;-9.3603436416015;-9.69915464986116;-1.70015484560281;0.559830344282091;-2.49798674602062;-2.10294104646891;-0.716064148582518;8.28729986213148;-6.03726006112993;-3.76405553426594;6.00690367165953;7.32065521646291;7.80532889068127;-2.40318783558905;9.26499746739864;3.27043159864843;-6.33020353969187;1.79938823916018;-1.36250032112002;8.66010834928602;4.9906805343926;-1.02923723403364;8.74784462153912;9.78333008941263;4.56177536398172;0.943346354179084;-7.38879073876888;-6.79731824435294;-8.34142121020705;4.83800846152008;1.80807555094361;-2.06675613764673;8.84733838960528;1.47846925538033;-5.00846911687404;2.95120015274733;7.27678569965065;0.193319674581289
+-8.9206091593951;2.84452999942005;-8.28821156639606;6.91393417771906;-2.77691016439348;6.7346290173009;-4.55175919923931;0.860671722330153;-1.99002710171044;-3.35090624168515;-1.13911453634501;6.80301684420556;0.0339894834905863;2.75203232653439;-9.62815971579403;-3.90661644283682;3.87810005340725;9.52700214926153;1.03502041194588;3.91203133389354;2.83035803120583;-6.91057770978659;-2.27485264651477;8.70265702251345;-9.93387368507683;-0.161721417680383;-0.0393130909651518;-1.09058049041778;-7.8960529435426;3.37100561708212;0.733358566649258;-6.78887630812824;8.09489744715393;-9.92927260696888;2.82338567543775;-4.25427901092917;-2.6199600379914;-6.9715547002852;-1.33424779865891;5.31064122449607;3.52571927942336;2.54493581131101;-3.30979688558728;-3.34598369896412;-3.13182070851326;1.1322255153209;1.21394130401313;9.45761893875897;-2.78228453360498;5.76871737837791
+5.99502488039434;6.22828561812639;-0.680591883137822;1.09449432697147;8.86983006261289;-2.2261479916051;6.02698366623372;-6.1535144969821;2.81459123361856;-3.06592823006213;-8.75936943572015;3.46024656668305;7.23300481680781;-2.92493070475757;5.70426419842988;-3.93732030875981;4.26312459167093;-8.16037893295288;-8.26546239666641;5.89915780350566;4.82986521907151;6.101453313604;3.60065375920385;6.81502480059862;-0.489160832948983;4.81957164593041;-9.79526793584228;8.56430793646723;9.45055678021163;1.62589379586279;-6.13198310136795;-7.34379832167178;1.23172259889543;-1.06355838943273;-6.34649143088609;6.16154406219721;-4.16995244566351;-4.59447091910988;8.78772267606109;6.80230668745935;-6.20415731333196;0.455496711656451;-4.30038240738213;8.43167995568365;2.78505173511803;-6.72329601366073;5.40276675950736;-7.78687880374491;7.74638138711452;-1.53704123105854
+4.86732064280659;5.91052974574268;-6.40852503478527;-7.89693703874946;8.17324349656701;-4.2924782494083;-3.6605364875868;-1.01681438740343;0.0934193003922701;-4.78387591894716;-6.10556273255497;-3.46239224541932;-9.95392384938896;-6.79081581998616;-6.78481423296034;6.75500924233347;-7.00164869893342;4.00987530127168;-9.84022695105523;3.45687629655004;-6.41832673922181;-9.40436818636954;-2.20305510330945;-4.26909246481955;-4.8069503204897;5.43418534100056;-6.88791730906814;1.97824918199331;2.33668406959623;9.6295473864302;1.93693857174367;7.46066854335368;-4.87757281865925;6.92906916607171;-5.1622962532565;-5.13023678679019;-4.66204381547868;4.75612418260425;-0.871482095681131;-6.12426439765841;-2.0016355952248;-5.45273571740836;-1.58058820292354;8.99661986157298;8.70799627620727;7.16743976809084;-8.57798557728529;9.03557957150042;-9.53951785340905;-8.79133679438382
+4.74188090767711;-6.65597233921289;-6.47133667487651;8.3553625177592;-7.15806649066508;7.01818962581456;-1.88049746211618;2.07487216219306;8.75765956938267;-3.82010160479695;3.91083471942693;-7.1915373718366;0.538025111891329;-4.78455728385597;1.63009005598724;-4.32849344797432;-8.88401072006673;5.7834510365501;-3.63842898979783;7.15370271354914;-0.64489480573684;-1.26907341647893;-4.34520571958274;1.62814259529114;1.65270195808262;4.52234840486199;-1.16160937119275;-3.84998565539718;4.56671433057636;-5.37888950668275;9.74916609935462;-4.69350897707045;5.62937404494733;5.88784463703632;8.57865821104497;0.100286775268614;-4.7167591098696;-0.322843356989324;5.53564711473882;-5.60036451090127;5.33858974464238;-3.35589336697012;4.62991579901427;-9.01021199300885;-1.36112819425762;7.72845009341836;6.80246408563107;-9.8499970138073;1.60874316934496;-0.404610158875585
+2.53495121374726;3.49807751830667;-1.38193160295486;0.878368401899934;5.35511773545295;-7.9109781049192;-0.359326894395053;8.45584474969655;7.83979426138103;-6.59457494970411;2.99120002891868;1.26604196615517;7.17518330551684;-3.42993800528347;-6.21312699746341;-3.12263160012662;6.7829580930993;-0.54490502923727;-1.65036883205175;1.31852483376861;7.07563559059054;1.1283080978319;8.40835514478385;-4.83921650797129;3.29763387795538;2.75881771463901;-3.56367575936019;-2.35129713080823;-3.36980833206326;-9.14517290424556;-4.01366611942649;-9.29863329511136;5.23246760014445;-6.97801535017788;-4.26217185799032;-7.82863946631551;-7.51436424441636;2.05814913380891;1.11576593015343;0.0799104757606983;-2.96441030222923;8.16960684489459;-6.37398056220263;9.76035920903087;-1.32970710750669;-2.14799136854708;-8.32034746184945;6.61223362665623;-9.00344949681312;-1.76086214836687
+8.59070560429245;4.64303413871676;-3.5264164628461;-9.63876494672149;8.75216672196984;0.5767293414101;-9.06689652707428;-2.34722666442394;3.26677539385855;7.41497586015612;-2.0766855077818;3.34821577649564;-5.48211031127721;7.72983390372247;-0.377031369134784;-3.58905838336796;1.26608576625586;-1.3185391202569;6.92063398193568;-9.42390974611044;-1.88434407114983;-0.0389173207804561;5.4371102899313;-7.67804926726967;9.57565387245268;9.79213737417012;5.08908208459616;3.62567762844265;9.96195533778518;9.60568392183632;2.22387095913291;9.74220988340676;-3.2250403566286;1.80076894816011;2.80407750979066;-0.966656603850424;3.22464642114937;8.09097690042108;-7.65738395508379;7.72553388494998;6.22766889166087;-2.44050608482212;9.7412530425936;2.74971497245133;-9.8200703272596;3.42076507862657;6.27034530043602;-8.45489498227835;-1.75638917833567;-1.45173881668597
+-7.55510824266821;-4.05226785689592;-8.46944477409124;-7.44432581588626;-3.72307337354869;8.57197809033096;-6.76373870112002;3.85703951120377;2.93342122342438;-5.42574554216117;-4.37970974948257;-0.109753916040063;1.49474548175931;3.83537199813873;-4.64304187335074;-5.01841280609369;0.850754273124039;4.62905308231711;9.84040515962988;-6.75228084437549;-5.94231522176415;4.81784577015787;7.82765791751444;2.20599657855928;9.47943292092532;-1.32826143410057;1.37459236662835;-8.95143279340118;0.841090553440154;-9.05427529010922;1.52571597602218;7.2166850278154;-2.35347273759544;-1.08993409667164;-8.04128687828779;-0.585844130255282;-7.09883810020983;2.86779824178666;-2.7976137958467;1.71891046222299;-7.93394335079938;-3.6191345565021;0.0695816008374095;-1.05379871558398;-1.23123410157859;-4.43299329373986;4.1030779434368;-0.559596684761345;3.53785188402981;-8.00376379396766
+8.82649006787688;-9.20906350482255;0.325927729718387;-7.28792765643448;-9.67309590429068;-3.64452245645225;-7.53642846830189;0.385561012662947;6.83836167678237;-0.797065054066479;-2.27481397334486;-1.69788770843297;-4.7544498834759;0.845495387911797;-5.04966400563717;8.89105378184468;3.94694234244525;7.84769481047988;6.3553066086024;-4.52060542535037;-0.601997971534729;-3.92239920329303;-4.68814271967858;-3.4471552586183;6.32695669773966;4.95933212339878;-5.76173460576683;-1.89982394687831;-6.66493751108646;-0.464448933489621;3.50168023724109;-2.08320326637477;-2.34592954162508;7.39796250127256;5.08821941446513;2.12965016253293;-6.8371368246153;-7.23144539166242;2.9369526123628;4.67972092330456;-3.22976267430931;-7.09811336360872;-5.6060827197507;8.02057474851608;3.91100723762065;3.03663491737098;-9.02060676831752;-0.470437286421657;-0.0157075095921755;4.47726119309664
+-7.88221014197916;-0.298085412941873;-6.99524151161313;-6.19228637777269;6.6139682661742;8.42973092570901;-3.27877222094685;9.25872318912297;4.71705415751785;4.94468008168042;-7.30284357909113;3.12980266753584;-9.17334706988186;7.51543523278087;4.58924116566777;9.74675798788667;-0.757985687814653;-9.48760035447776;-2.03398765530437;8.13195711001754;-2.03232600819319;5.69795960560441;6.08172502368689;2.2989723039791;5.00026321038604;9.31553744710982;-2.04420228954405;2.83088357653469;7.037871517241;-3.22991915978491;-9.37548839487135;9.15990571025759;-4.27550952415913;5.75550771318376;-5.06459732074291;6.91289002541453;8.23896185960621;-1.12182468641549;7.11189089342952;-9.18824827298522;9.33021860662848;6.28013634122908;3.42599566560239;1.97886774782091;-5.06174432113767;-6.72880216501653;-5.45353352557868;7.22435439005494;1.24044981319457;6.05068526696414
+5.53793372120708;1.39380327891558;-2.88770580664277;8.55697140097618;8.1587625015527;4.06480320263654;1.12433072645217;-0.797029179520905;9.47740622796118;-8.94996948540211;4.12934850435704;-6.5073189791292;-9.0064352331683;6.07936593238264;5.04529451485723;0.705368830822408;3.87987399939448;-8.64793461747468;5.14611533842981;2.57207640446723;4.41719588357955;-9.34219762217253;5.49960151780397;-3.09555389452726;3.55876644607633;-9.84891472384334;0.301669239997864;4.69281562138349;0.0434418162330985;-7.95866712462157;2.68098099622875;5.10830444749445;-9.25789934117347;-5.86844364181161;-8.74670451972634;-8.84602655656636;8.68230276275426;-7.03068880364299;-3.1851365743205;0.155002945102751;-4.02334615588188;3.05739392060786;5.08897490333766;2.63357321266085;3.54662192985415;-8.10055195819587;-1.36501204222441;-5.33861299045384;9.26466718781739;5.96073275897652
+7.64502575155348;-4.12700312677771;-4.76754215080291;-1.38044374063611;1.28771326970309;-4.14971057325602;8.85822052601725;9.42520892247558;3.01214323379099;-4.35082443524152;7.14760513976216;9.23496279399842;6.68521089479327;0.667698476463556;6.469467850402;2.69303062930703;-7.12197645567358;-0.129223326221108;3.39648094959557;2.12424989324063;-3.16603377461433;-8.20345265325159;-5.622170092538;-7.3059078771621;8.92854413483292;1.52211813256145;3.86238354723901;-6.41392834950238;1.32465331349522;-7.62994586024433;7.11237808223814;5.03404103219509;-1.61152421031147;2.87437895312905;2.5618775608018;-1.49258923251182;-7.82290188129991;-1.27729704603553;-4.39047310966998;5.79288036562502;9.03927858453244;-1.95875682402402;-4.63042743038386;-8.14277360681444;0.964936930686235;-3.85788358747959;-2.11597292218357;-0.321984272450209;6.38938677031547;2.80768275726587
+-0.81368294544518;1.95784389041364;-6.10331403557211;-7.20027423463762;0.700089856982231;1.94193148519844;3.24658365920186;1.6978986049071;-2.37222754396498;1.88102996442467;-5.32073812559247;-4.72114922013134;-2.11240594740957;2.27773518301547;-2.62059896718711;8.62282339949161;9.76881930604577;1.23830833472311;-5.29417823534459;-3.44819477759302;8.01228578668088;-6.89360428601503;-2.24520915653557;-7.51496486365795;1.27853149082512;0.290035353973508;-3.77792796120048;6.07092661783099;-4.84232302289456;3.67620054632425;-9.70522412564605;0.835944614373147;2.22609678748995;-5.61790818348527;-9.54996341839433;-3.21432260796428;1.31426815874875;-3.03057582583278;-8.74047038145363;-9.91036786232144;-1.49523952044547;1.73995968420058;-1.18951784912497;-4.64512207079679;9.66470275539905;-8.84676475543529;-6.63127190899104;-0.550642898306251;-2.44336794596165;3.26580839697272
+3.15447240136564;-3.1963386433199;7.02405348420143;7.04466226976365;-0.45760553330183;-6.79985712748021;5.26138607878238;-0.813477127812803;2.77676986064762;1.5649137692526;4.01607820298523;-9.33215011842549;6.06129611842334;8.70029578916728;6.08740785159171;-1.86893987935036;2.41131436545402;1.03798003867269;-1.37451505754143;-9.19706561136991;3.81529469974339;-7.09610770456493;-9.36465247534215;7.18480780255049;4.94715091306716;-7.35988158266991;9.8829529248178;-9.90588113199919;5.49715080764145;9.08089912030846;-1.57102320808917;-8.07608189061284;-7.80156546272337;-1.66149453725666;4.62889446876943;1.95115807000548;-6.76954560913146;7.65719733200967;-6.44583738874644;6.84809767641127;-6.09757526312023;2.94110630638897;7.22879364620894;1.49317448493093;-2.05758109688759;-7.37762192729861;6.38912876136601;0.914225918240845;8.23493148665875;0.693702925927937
+2.88287016563118;3.48468493204564;9.38632683362812;-4.75943609140813;-7.67120397184044;8.63012614659965;3.46168364863843;-9.22588005196303;-2.98566811252385;-0.245637092739344;6.16077087353915;-7.81493296846747;2.74236247874796;-7.19338290859014;-0.97842515911907;-4.88050881307572;-6.18717443663627;-5.35036964807659;6.97451424784958;4.77068027947098;2.20785125624388;6.29350261762738;9.44920927751809;3.6352401226759;5.24196971207857;5.77454000711441;-4.53225224278867;0.77063855715096;-1.26279471907765;2.41604559123516;5.6109838699922;-3.1292087584734;4.820696557872;-2.81385651323944;2.51280345022678;1.20768278371543;-7.48147576116025;4.90958854090422;8.18410711362958;-5.33989242278039;-0.635218732059002;-0.752834719605744;1.81269255466759;3.40501999482512;2.9416597308591;-7.02790317125618;-1.24220044817775;0.904062478803098;9.34805035125464;0.135588701814413
+-8.01540955435485;4.5064777508378;4.805200076662;5.6151045113802;7.26892073173076;6.76949971355498;3.64899952895939;-8.31305658444762;8.26574877370149;6.90136838238686;6.03632636368275;9.02863113675267;-4.41204419825226;-4.02743422426283;1.01520324125886;9.80418410152197;-1.83304108679295;6.76850588992238;9.62998501490802;-0.576242208480835;-7.87361384369433;7.89411603007466;4.00851529557258;-4.64396314229816;-3.21816065348685;3.87013769708574;5.96482357941568;1.72373935114592;-4.528101333417;-8.75136823393404;3.32838837057352;6.60893698222935;1.02899536024779;-8.26691837050021;7.93900053948164;4.54534764867276;4.89516806788743;-8.42719566076994;4.17100512888283;-7.24960573483258;-4.5272343698889;-4.65198566671461;2.21761337015778;0.867439433932304;-5.76858965214342;-9.04059366788715;0.179995675571263;-2.62135375291109;2.46167166158557;7.79551742132753
+9.41763775423169;6.24472396448255;1.91554664168507;8.97380054928362;7.17832291964442;5.02888627815992;-4.34073326643556;-6.68334860820323;-9.96807305607945;7.16759256552905;8.27568534761667;2.88288130424917;4.58724866621196;-6.79523810278624;-5.74901788495481;3.22836168576032;1.11773445270956;5.10828180238605;-9.88431707490236;-9.59029931109399;8.09749137610197;3.65731302183121;4.30669906549156;0.331426565535367;-4.32960664387792;-3.26440036296844;-4.20041137840599;-2.596485754475;-8.81357689853758;-9.3388121528551;8.7182873301208;-7.98104760702699;-7.28907284792513;8.22269257623702;2.30340962763876;-2.60702661238611;0.151186101138592;6.89190596807748;2.69723683595657;5.71461303159595;-9.6875613508746;8.20696467999369;-3.25879409443587;2.06531906034797;4.10797224380076;-0.779500994831324;5.74796469882131;3.56084072496742;5.79378932248801;-6.18365133646876
+0.947227156721056;9.92548175156116;8.18487363867462;-8.28567575663328;-8.17274506669492;9.45431906264275;2.91663221083581;-3.72611258644611;6.39825499616563;-1.94396551698446;1.90260530915111;6.45940804854035;4.68737086746842;-6.55928468797356;-3.81910098716617;2.33146529644728;-8.56976830400527;8.68725304957479;-5.97553556784987;4.26039827056229;0.774759794585407;-6.93149731028825;7.81683984212577;-3.83265746291727;-1.82360089849681;-3.86448997538537;7.16560726985335;5.02178324386477;-0.337578728795052;6.64274689275771;1.45240859128535;4.63251922745258;-5.85941527504474;-4.61014056112617;8.70899222791195;-3.36950816679746;-5.14754912350327;0.0948651134967804;-8.10533760581166;8.92916787415743;2.46517062652856;7.15390225872397;6.23628649394959;0.107151106931269;-3.4417914506048;5.40715578943491;9.02729232329875;-3.54316443670541;-8.64749174099416;2.61032172478735
+7.5297148199752;-5.90907148551196;8.52867572568357;-7.02972650062293;5.84005551878363;9.88288041669875;6.40367341227829;1.65122729260474;-0.0796619663015008;-2.65194510109723;-7.08142191171646;8.32100134342909;-9.20596856158227;4.70292401034385;0.681368187069893;-5.2473213756457;-7.46752290055156;8.43179099727422;-4.38122631981969;5.95802613068372;6.43421316053718;-7.78748981188983;1.32804025895894;-8.63443123176694;2.56081323605031;8.52989992592484;-2.01305299531668;8.45677931327373;-4.39140548929572;-7.30806006584316;-1.30682557355613;-4.40495588816702;-0.66371729131788;6.67138367891312;-0.0840134266763926;9.74778834730387;7.50012032222003;7.44655998423696;-8.82446318864822;5.99334392696619;7.71115825045854;6.68522032443434;6.16877499967813;9.21358064748347;-5.78250619117171;-3.03591842297465;7.06571624614298;-5.28671209234744;-1.74862056039274;5.9956770716235
+3.94855330232531;-6.27801774069667;-0.341800283640623;-5.44539473485202;0.301919728517532;-0.129577242769301;6.02621331810951;-1.91095087211579;-9.50250397436321;2.54336910322309;-9.14305586367846;0.977928773500025;-4.78747677057981;-4.6495933458209;3.03481502458453;4.69625399447978;-8.19904777687043;-5.18448456656188;-8.10640260577202;-7.69465442746878;5.21765874233097;9.37514339573681;-1.67834052816033;-0.652907202020288;-6.94855611305684;-4.60938068572432;3.53244685567915;3.9927041484043;-2.25157784763724;4.03087308630347;7.72096796426922;-1.59566354937851;7.9332694131881;6.42400247976184;-7.38206772599369;-1.36830838862807;3.53916783817112;4.62848441209644;-5.59204350225627;0.0949912099167705;7.14470965322107;1.20812741108239;-9.13252626545727;-1.90477718599141;3.42486371286213;7.98743918072432;6.90944929141551;8.74085192102939;8.65550321061164;4.5616489648819
+0.196191784925759;-1.1131964949891;-2.31887477915734;-6.96069803088903;3.99772690609097;-7.34759088605642;-0.826713456772268;7.71030681673437;1.47829948458821;8.4803326940164;-9.84429683536291;-5.05180222447962;-9.19717570301145;0.0623977836221457;-4.2078874912113;-8.16898175980896;-4.17373089585453;7.81140649691224;-6.48322398774326;-7.65357401687652;-9.58667530678213;0.828552283346653;8.08019505348057;1.939443256706;-5.68195681553334;-9.19873657636344;-5.89994497131556;-3.80131133832037;7.98414011020213;7.38923156633973;9.89329090807587;9.74365190602839;-8.73158735223114;-6.44804376643151;6.68001781217754;0.656113545410335;-9.29192056879401;-6.26327028963715;1.44404149148613;0.85711345076561;-2.25082904566079;7.11211734917015;7.93495330028236;-1.96082395967096;0.246588946320117;9.17603645008057;9.79209084995091;-8.72019011992961;1.05583598371595;0.878927730955184
+5.98236089106649;7.71176424343139;-2.12018561549485;1.94419323466718;-3.01156632136554;9.35049200896174;4.82913864776492;6.39599019661546;6.1802611220628;-9.29984886664897;-6.45879538264126;7.61196602601558;3.75188122969121;3.11095239128917;7.1987618971616;9.64104761835188;6.0272665694356;7.92184451129287;-1.49510096292943;-4.00107925292104;3.81368038710207;1.51539119891822;-1.03351158089936;-5.66273770760745;9.03425266500562;6.03222625330091;3.92575482837856;5.33831739798188;-3.167764400132;-9.3390917731449;-3.80648204591125;8.57960453722626;3.8083083787933;4.69547235872597;-6.28852539230138;-8.88577844947577;-5.42228173930198;-2.60332296136767;8.01014157943428;3.90384714119136;5.24391589686275;-2.0895324787125;3.90956838615239;9.05573742464185;-0.948056341148913;-2.14966357685626;-7.65748802572489;-6.58326540607959;-3.51653407793492;6.27935248427093
+7.59511317592114;3.51607027929276;3.37642766535282;-0.719295982271433;-9.70511645078659;5.02827357966453;-3.2842931477353;5.93309335876256;0.352599774487317;9.289555773139;-8.56663505081087;-5.70290315430611;9.60537631995976;7.63199700973928;-4.11798128392547;-8.98468430154026;-0.689846146851778;-9.71872158814222;-9.77861385792494;-7.90598839521408;-3.11819458380342;-3.07904437184334;8.48744599614292;-1.70458458829671;-7.47186656109989;4.26289190538228;5.79235349781811;0.439276173710823;3.92934147268534;0.424896334297955;-9.13889926392585;7.84178737550974;-7.02761561609805;-3.71449577622116;-9.2688930220902;5.99897452630103;-4.14324998855591;9.16529704350978;1.24440661165863;-5.12962541542947;-4.72526430152357;-6.40715467743576;7.95117756351829;-6.29125093575567;-2.61407724581659;-0.602988847531378;-8.56954963877797;-2.58539931382984;2.28525106329471;-4.52433341182768
+9.43134347442538;9.1542839910835;6.13647624850273;-9.38623803667724;-6.8035674886778;8.14084000419825;-0.732498290017247;6.96429990697652;2.70796328317374;1.50010556448251;2.24621898494661;8.14452734775841;0.160052580758929;8.95262165926397;6.38813979923725;-1.67775083798915;1.81270621716976;-8.82866952568293;6.57054343260825;-9.3312627216801;9.33067517355084;3.07909613009542;1.32566312793642;-9.3902226164937;8.65741995163262;2.51507873646915;-6.71872619539499;2.22711252514273;-7.29310043621808;8.67387610953301;1.96950415614992;9.04532562941313;1.40586344990879;5.32689515035599;-7.47245952486992;-0.395275084301829;9.63849470019341;-5.23402236867696;7.86872649099678;-4.17118997313082;-0.168893286027014;9.17053323704749;9.11005074623972;2.48756076674908;9.2557518184185;-7.57612152025104;-3.73447528108954;3.16528449766338;-4.23075961880386;4.73816198762506
+-1.59191705286503;-2.54696560557932;-1.70788002666086;1.34477977640927;-1.60588799975812;2.82918409910053;5.12614805717021;-2.3403711616993;-4.34693345800042;7.88324889261276;-9.14866235107183;-6.43856486771256;0.00492434483021498;-3.4649616247043;-9.22093203291297;-2.65846100635827;8.7889091251418;-5.59807025827467;4.02450872119516;-7.27078306954354;-1.57721798401326;-5.94131277874112;7.61400102172047;2.47624912299216;-0.350982556119561;-8.4203256200999;9.7217182116583;5.17775582615286;3.87116133235395;9.75780936423689;8.22618580423295;-6.95932735223323;4.16823486797512;9.64103942271322;-6.05024878401309;9.9330934509635;6.76281602587551;5.9559299563989;-6.79840042255819;-1.25659896992147;9.1194940218702;4.35728271491826;9.29887417238206;8.59560882207006;-9.06144586391747;-2.13433771859854;-6.02634951937944;-1.01182665675879;9.4169505732134;-7.97864945139736
+5.68409119732678;5.35605769604445;-4.12972067948431;5.0954502960667;4.4684939365834;-7.65595036093146;-9.45584606379271;-1.25750120263547;-7.74229896720499;1.71782299876213;5.02792886458337;4.24019599799067;-7.10544417146593;9.37249805778265;-7.85522937308997;-7.12138461414725;-3.23372145183384;-3.1233029672876;7.11773424874991;-0.460396413691342;-4.25498497206718;-8.31788174808025;-4.04179822653532;1.55949757434428;-0.159165924414992;-7.69773832987994;-6.1785849975422;7.08199937827885;-4.45654181297868;-4.51472556684166;9.89540688227862;8.34783568046987;-6.7936183558777;-6.21079830918461;4.06971768010408;1.25655929557979;0.0276300916448236;-7.57330910302699;5.37061974406242;-5.41228297632188;5.27769490610808;-0.481898793950677;-9.4032455701381;2.11821494624019;-3.52128348313272;-5.28234888333827;-3.94443815108389;6.5089252172038;-6.73499886412174;-7.19287923537195
+9.6100640995428;3.46247075125575;7.4122749408707;9.51876264531165;2.45039470959455;3.2232182752341;-4.94607309345156;0.659947427920997;-8.64641916472465;6.42808636184782;5.03150404896587;1.26094969455153;-5.48821151256561;8.11734619084746;3.66342244669795;-8.22387534193695;1.58695536665618;-9.39125302713364;-4.91291321348399;2.91344504337758;5.61382187530398;-6.55371945351362;-9.630041513592;-1.01874536834657;-1.47173742763698;4.69869496300817;3.10558515135199;0.103076505474746;-2.90839713066816;-3.21618268731982;5.33576835412532;-9.42547481972724;9.81157292611897;-3.0705752549693;-4.89890982862562;4.41476271487772;-2.86635111551732;3.47993534989655;5.83426548168063;-6.65154829621315;5.47785251867026;2.94926915317774;-7.16471045743674;-1.5358693851158;-8.08899894356728;3.18043591454625;-0.0853216368705034;-7.23353205248713;2.96108670067042;-2.48010469134897
+-7.55084292963147;5.02330612856895;-4.88774265628308;9.88358601462096;-1.74664577934891;-9.67734570149332;-6.7956027854234;-2.37559215631336;2.45390890166163;6.68737342115492;7.1038386458531;-8.61183523200452;-4.07939381897449;1.36907602194697;-7.83392283599824;6.8963785097003;-9.54728842712939;8.54537358973175;-6.20665206573904;-4.91457242053002;-0.603656833991408;-2.8007267229259;6.49973660241812;0.199258117936552;-8.60503618605435;7.77186336927116;6.26778533216566;7.89606155827641;4.70146337058395;-3.90696557238698;-0.736330603249371;0.7679528510198;4.65491313487291;-9.22936591785401;7.18484039418399;-2.21496573183686;-9.94432440493256;-8.23949242476374;2.49775278847665;3.71956997551024;9.42678078543395;-3.05874708574265;-2.36681151203811;4.03969350270927;9.07617476768792;-4.25600992515683;-5.95278941094875;-0.952863115817308;7.98996728379279;4.26548573654145
+-4.8784654121846;3.59571964945644;3.94936395809054;3.3603585883975;-0.198070276528597;-6.77253487985581;8.28839012421668;-5.09222329594195;8.06143241934478;-3.3784102415666;-3.81487671751529;2.23229830153286;-8.1492616282776;6.15739786066115;-7.77266642544419;-2.55777148995548;-7.17777450103313;1.73520685639232;1.9898408325389;2.43510488886386;-3.00433347467333;7.79198361560702;8.81656422279775;4.84053384978324;2.10856005549431;-0.187303968705237;-3.78895361442119;3.49062109366059;-7.03599650412798;6.04222702328116;-7.33516531065106;-8.27605272177607;2.15348104946315;-5.3738600993529;-7.23654178436846;-0.0580762419849634;7.58749057538807;-4.4869239628315;-2.31333400122821;-7.8175915684551;7.30864818673581;0.529177975840867;0.00597890000790358;-3.1611747527495;5.70955698844045;2.82580012455583;-7.64675438869745;-3.2698565768078;6.03460449725389;9.14835776202381
+9.94176246225834;3.29939676914364;-0.509146112017334;-9.006690797396;2.33558282256126;9.58953105378896;-9.04523015487939;3.67086790502071;-7.61880874168128;-9.24416293855757;6.32632378023118;-7.91328943800181;8.17280690651387;1.92577681038529;2.68703726585954;0.674581010825932;-0.448614074848592;5.83024462219328;3.0665114056319;-1.85066869016737;-8.46763245761395;-5.21928946021944;-3.40141104068607;2.34973980579525;-5.35823660902679;-4.432208891958;1.44816348329186;9.54686354845762;-3.26222606934607;3.60317715909332;-0.213120747357607;0.450165388174355;0.942172869108617;6.67940038722008;-2.63766158837825;-3.32085303030908;3.2001273939386;-7.53791513852775;6.47018374409527;9.70868515316397;2.87592162843794;9.13410037755966;-9.17365663684905;0.996466046199203;-5.76690127607435;4.43980269134045;4.00849624536932;1.88888250850141;1.98391064535826;3.80478540435433
+-7.31250869110227;3.75351521652192;6.76733057480305;0.114665203727782;1.74734284635633;1.81329473853111;-5.55679035838693;-0.103755043819547;4.19369962532073;5.66960691474378;8.84666813071817;2.26824468467385;-8.157251724042;3.64821111783385;6.55711772385985;-7.58725037798285;-1.70703512616456;-9.16415356565267;-3.50028604269028;-1.36009704321623;2.24038260057569;-1.77954464219511;4.43508220370859;-0.261632665060461;4.59658214822412;-9.42563220858574;-8.72973933350295;-5.28500779531896;-7.14674498420209;0.369205926544964;-0.450218790210783;9.08458787016571;7.20316820777953;2.63543673790991;-7.90191150736064;-2.65247156377882;-2.00195136945695;8.376653813757;-6.05194044765085;6.37560038361698;-4.18731074780226;8.55500751640648;-9.69058339949697;8.28570223413408;0.191209255717695;9.68718947377056;-6.50831526145339;8.58129821252078;8.65373087115586;8.65283731836826
+0.810047425329685;9.09182402770966;-7.01722346246243;-3.94484228920192;0.0467825774103403;6.39087687712163;-7.22347355913371;7.79555755667388;-1.86718550510705;4.18556454125792;-4.35758389998227;2.84628190565854;-7.87971705663949;-7.01292719691992;2.26488570682704;9.04133213218302;-2.64521738514304;0.970460642129183;8.82265342399478;-4.39011416397989;5.6817828444764;-0.603205575607717;4.61320037487894;0.0591804180294275;3.81705985870212;-2.02244708314538;9.9640251789242;-0.471495385281742;5.46849795617163;3.73031134717166;-5.00760145951062;8.3569962810725;3.0442107655108;-6.30617012735456;-7.40309449844062;3.94147648476064;-0.897210040129721;5.95940936356783;-2.24671883042902;8.23244843166322;4.83369234483689;-5.41951136197895;8.17645464092493;-2.43182128760964;-2.27276456076652;-2.32158226892352;9.59983144886792;3.58793767634779;0.356022818014026;-8.92319831997156
+-4.38958806917071;5.12169658206403;-7.20016661565751;-7.28780738543719;7.55769857671112;-8.23784770909697;-6.74556862097234;8.37897916790098;9.57929751835763;-4.11334386095405;-0.247219623997808;3.33110813517123;-8.09371331706643;0.221778242848814;-2.76501253712922;-3.26639543753117;-8.04604539182037;2.04904052428901;0.809520971961319;-8.66655059158802;1.4878292940557;-2.8915941528976;-4.29714912548661;-4.68920185696334;0.110404542647302;2.99352379050106;6.73224682919681;-8.28894444741309;7.551921736449;-1.67807340621948;-2.77438204269856;-9.83085647691041;8.07810702361166;2.63762733433396;-2.82801687251776;-0.474286917597055;7.67434468492866;9.56224128138274;-2.66986554022878;-5.44519442599267;6.78307266905904;-5.84306109696627;9.62651640176773;-1.17675073910505;9.55708215478808;4.60222815163434;1.74384914338589;-6.50934424716979;1.73131539020687;7.36163840163499
+3.68456031195819;-7.04950397834182;5.67444883286953;1.1076814122498;6.579355658032;-7.18406192492694;6.58809051848948;-0.856192321516573;9.02032445184886;-3.45932426396757;2.76269936934114;5.21484745200723;3.46080103423446;8.22673759423196;-6.41088864766061;6.23159178066999;-9.9601315939799;5.28689619619399;0.537687130272388;-5.88867008220404;2.25699251983315;-4.65339679736644;6.92897523753345;9.647919642739;-6.61438395734876;-8.44186185393482;-0.855684783309698;3.27934006229043;2.63007452245802;-4.37120233196765;9.56633601803333;6.47411525249481;-4.35413385741413;5.90003594756126;-2.9805602831766;-4.89579827990383;6.2555784964934;1.63515523541719;-4.20387055259198;7.53070854581892;6.24508563894778;3.98279001004994;0.841096937656403;8.41982824727893;-3.24613694567233;-0.287596764974296;-2.89567725267261;6.01293952669948;4.58158012479544;-3.50320864468813
+-1.47061941679567;2.18036967795342;7.64314111322165;-3.5735028097406;-3.6270472407341;-3.09613426681608;1.19530706200749;8.97060927469283;3.49308067932725;-8.11307349707931;2.85683237016201;1.73062622081488;-1.50201718788594;-5.75289596803486;-5.49668138846755;8.84082668926567;-4.24944819882512;7.38893454894423;-6.4177999086678;-0.719041624106467;-2.67200144939125;-5.9480105061084;3.30875990446657;6.42973841633648;-3.54925338178873;0.8612648723647;3.78499758895487;5.03757579252124;9.57609968259931;-6.04499085340649;-3.74279699288309;-9.26831092685461;-2.29645392857492;4.31911814026535;-1.74471355509013;-3.07070164009929;-7.30439161416143;-4.42463068757206;-2.52651572693139;-7.22030927892774;5.05506447982043;1.0708196554333;-1.64879617281258;9.13592308294028;0.902748187072575;-8.24739404022694;-6.11175344791263;3.80935320165008;9.34958796482533;4.30636868812144
+-2.67588027752936;2.09601637441665;8.78883001860231;0.143889379687607;9.30870572570711;9.93339925538749;2.43971387390047;-0.189344133250415;-4.20921569690108;6.67722115293145;-8.04729002527893;-9.30994694586843;8.27824538573623;6.95554476696998;-2.80128425918519;-6.67566622141749;8.53126233909279;7.82904327847064;-4.83086983673275;-5.11232351418585;-3.70686452370137;-5.07626619655639;6.63709016982466;7.86789775360376;-0.270091821439564;5.3667094418779;-6.64880780503154;-3.48985321354121;9.26846806425601;1.66822160594165;-0.23041405249387;-5.97890976816416;-1.82336898054928;-7.94308658223599;9.64748226571828;2.74043194018304;-7.58914089761674;7.0178202399984;5.82638586405665;4.75908996071666;-3.22977333329618;2.27750526275486;-8.41858551371843;1.55836327467114;-3.30718321725726;4.54139644745737;-0.500530982390046;2.52616507466882;1.91365013364702;-9.00934558361769
+8.0309698311612;-5.31856902409345;0.513038705103099;8.79427482374012;7.2955538565293;1.42208584118634;4.17477853130549;-7.66309153754264;-9.31081472896039;-6.67002926114947;-9.8184413369745;8.52294407319278;-2.54643957130611;6.32513594813645;-0.183560382574797;-7.77733351569623;-8.71068205218762;-2.83061850816011;6.35680021252483;-1.854906398803;3.59337896108627;-5.88680188637227;9.22912194859236;-0.414151675067842;6.78482361603528;4.2724270792678;-7.93947253376245;5.11391645763069;-1.76623563747853;-7.71628010086715;-3.79358693026006;5.8677414059639;4.96797786094248;-7.11016732268035;4.23647400457412;5.89991374872625;3.53313330095261;7.08816097583622;-0.340053481049836;9.88902195822448;7.61179819703102;-5.07624170277268;-1.69363197870553;-6.48618578445166;-8.84598926175386;0.540341385640204;8.80254603456706;2.02941586729139;-4.85346951987594;4.5675358409062
+-1.52733760885894;2.14204500894994;7.32700733933598;8.01855648867786;-4.3621929269284;-2.19718579668552;3.05226348806173;5.00819665379822;-3.70232636108994;9.58234040532261;2.60187239851803;-7.09651372395456;-0.297255283221602;5.45009859837592;3.26542731374502;4.06145885586739;-9.02856267057359;-8.67104243021458;-2.01552807819098;-3.1310198828578;1.2985251378268;-5.68042704835534;0.383855747058988;3.97792574949563;-7.09386900998652;-0.309196161106229;-5.68661446683109;4.68387888744473;9.04833001084626;0.412577600218356;8.80075233522803;-8.12061057426035;-1.0888834670186;0.0249302107840776;-8.74608316458762;-7.60087754111737;4.18333353474736;-2.17452030163258;3.59907821752131;4.34301564469934;9.63979823049158;1.1131776869297;7.09384296089411;-4.55728287808597;-9.2321755643934;-4.57711332477629;1.28075984306633;0.988598340190947;4.8277351539582;-0.0564898969605565
+-3.45677435863763;-5.18956944346428;3.55541788507253;-1.28601314965636;-3.0888873199001;0.92406983487308;4.07847431953996;-7.16725109145045;3.09041223023087;-7.72179686464369;-6.96413758676499;0.439629377797246;-2.45485302060843;-5.99517086986452;4.0223287185654;-9.44661860819906;7.43245124816895;4.4007818447426;8.93626714590937;-2.5311028631404;9.25938994158059;-7.25555012002587;-2.8146751364693;0.693368082866073;0.0185628328472376;6.01245338097215;-2.52586280461401;6.25700511503965;3.14740401692688;-7.73492245934904;7.11446681059897;5.02814739011228;-8.37389091961086;7.68239214550704;2.74350878316909;-1.79711238946766;5.51452151034027;-9.54665888100863;4.67858093325049;4.74869189318269;-1.48032128345221;-4.22211178112775;7.260443395935;-1.43355814740062;1.5365415206179;3.16275394987315;-0.792260942980647;-4.16225602384657;-8.12820808030665;7.72447271738201
+9.07663071993738;-9.09285803791136;-6.84069806244224;1.64910723920912;5.82831922452897;3.32411860115826;-0.979053885675967;-2.45495033916086;-6.56607587821782;-2.97419705428183;-6.18377277161926;6.29819170106202;7.07232824526727;-3.54394390247762;7.81686789356172;1.04270061478019;7.05883978400379;-8.34047398064286;4.08075407613069;-6.78703537210822;7.87362052127719;-9.09868211485445;6.08195584267378;9.0578045649454;7.33553003519773;7.15507443994284;5.82467907108366;-8.60539271961898;5.37191659212112;5.73322283104062;-0.730176982469857;-9.71932263113558;1.51408564299345;-4.48912273626775;-0.278135784901679;-9.85495301429182;-0.901787118054926;9.18658097274601;-4.63502914179116;4.99179140198976;3.96869939751923;-3.98697834461927;-8.41316219884902;-7.38733797799796;-0.91202418319881;0.369946658611298;0.946048651821911;5.82336022518575;7.51253905240446;-5.0889286538586
+5.9838814754039;2.0036651333794;7.58742224890739;-2.48752381652594;2.36475697718561;0.315773030743003;8.11356682796031;5.59124040417373;2.7115530660376;7.92778094764799;-6.12706723622978;5.17749150749296;7.08207912743092;6.36263509746641;-4.14445062633604;8.75075311865658;-7.82036246731877;-7.53676665015519;2.03125651925802;-8.13781419768929;-8.55818122625351;-2.33445800840855;-2.58864006493241;3.47276484128088;8.60548769123852;-0.383699098601937;-4.06112329103053;-3.82429465651512;-5.56995804421604;-9.65936105698347;-3.06801662314683;5.1502884645015;8.61170943360776;1.13788110669702;-4.85885797534138;2.33410443179309;6.25223616603762;-3.22703337296844;-0.618330468423665;4.452152736485;-4.8029417404905;-2.50925816595554;-5.07722052745521;-6.97733020409942;-0.554525461047888;-7.52937489189208;-0.267396932467818;2.7365641715005;7.62134131509811;-0.39805346634239
+0.869838469661772;-8.63880100194365;5.11458644177765;1.55080389231443;-3.27927637845278;7.68129528034478;-1.12718927673995;-7.02098687179387;-6.92888979800045;4.16335580404848;-1.45535134710371;-9.31031085085124;7.37347217742354;9.39766991883516;-3.04179997183383;6.83296283707023;9.07021315768361;3.26684719417244;0.804076134227216;-2.13155559264123;-1.80065548047423;0.103053390048444;-7.72771771065891;-9.95871024206281;1.99065336026251;-5.52795949857682;-3.85010180994868;1.86716862488538;2.04240911640227;3.02734602708369;5.5157862091437;-7.60726878419518;8.61083716154099;-9.41897338721901;6.40567752532661;4.82041814364493;-6.02341481950134;5.05736423656344;3.17224442958832;1.09031824395061;2.47447310946882;6.55644346959889;7.09658372215927;2.32208782341331;-9.20845623128116;-7.18265812378377;-0.596436886116862;-1.38139072805643;9.48863041587174;5.21983074489981
+5.25765737053007;-7.14939076919109;-8.9184361230582;-1.89520191866904;-8.85302043985575;3.29473089426756;-2.19152795616537;-2.65737609937787;5.55595824029297;5.6356728868559;-2.03446232248098;8.63252327311784;-2.78967414516956;0.857518455013633;1.84099900536239;-0.780068701133132;1.89012206159532;6.25709841493517;5.6162403523922;5.83396856207401;-7.04209479968995;9.01268223300576;8.44468893948942;-4.65441527310759;-0.0425578141584992;-3.37301634252071;7.80180146452039;-9.53165717422962;1.88331707846373;3.29312958754599;5.05727875046432;-5.2293436974287;1.18554376065731;-1.22703139204532;6.05272342916578;7.22879116889089;-1.29365653265268;-2.43183875922114;-9.71554478164762;0.903925485908985;-9.75378688424826;-6.07541558798403;-3.41042575892061;1.47645306773484;7.9073997400701;-6.12475798930973;-2.71423174999654;-6.39252256602049;-4.9647055612877;-4.91056113038212
+6.05747884139419;-6.82477865368128;6.72378267627209;6.058021010831;-8.79381559789181;4.02116121258587;3.91162849962711;-4.90970537997782;2.47059821616858;5.78431915491819;-0.923619125969708;5.64517721533775;-4.7895028674975;7.80050948262215;8.5765867959708;-0.347843235358596;0.603568856604397;-4.4573614699766;-1.40038692392409;2.82686786260456;1.67348935268819;7.01872532721609;-6.00865463260561;-8.28009390737861;-0.932107483968139;-8.70374864898622;1.71063084155321;-1.88875409308821;-8.87085768394172;4.62011993862689;3.14043511170894;-5.54701712913811;2.09687483031303;9.27628397475928;6.05783166363835;5.82847393117845;-3.66388352122158;4.43596716970205;5.37646076176316;4.14898486807942;-7.0371428783983;-6.48959367536008;5.6871609762311;8.10304615646601;-8.36649523582309;-1.52703508734703;-0.398371447809041;7.68786026164889;5.1994559308514;-6.38459217268974
+9.08667263574898;1.41918651759624;-5.48826304264367;-7.84910065121949;-6.12108887638897;8.09357545804232;9.00055520702153;6.15006953012198;5.16064741648734;4.40030350815505;-7.95989839825779;-8.0976842250675;-8.83913282770663;-3.92087821848691;-7.44100946001709;7.1653697360307;-8.47471422050148;-8.29250143375248;-6.89048332162201;-9.71396342851222;-1.66743383742869;4.85658640507609;7.57681662682444;5.88851914275438;9.40348392352462;1.24595783650875;-2.92228526901454;5.29886804986745;3.40106900315732;-0.573637778870761;-0.805844124406576;-1.21098381001502;0.301912035793066;9.7912514815107;-1.54097915627062;5.33719146624207;-5.8338171383366;-8.91203588806093;8.35267086047679;9.29905687458813;-6.75333186518401;-4.35755024198443;8.06922858115286;-7.34137091785669;-6.06442934367806;-4.2312008375302;-0.633985255844891;-9.85489909537137;8.15041346475482;-8.27639307826757
+8.04878862574697;-4.03702049981803;8.80161846522242;-8.50874301046133;-6.31479832809418;3.71822828426957;9.46298809722066;-9.63934818282723;-4.61881599854678;1.60786955151707;1.38666909653693;4.53409617766738;-4.54191185068339;-5.13052692636847;-4.67228278517723;2.23335377406329;-3.27299406286329;2.0701420167461;9.02721880935133;1.40916472300887;2.72830529138446;-7.45615346357226;-2.21988969948143;-3.04899293929338;8.57367963064462;-8.66906080860645;5.8418265171349;9.95219867210835;-1.82483630720526;-0.623082998208702;-5.85885060951114;-8.55706305708736;7.45552203152329;2.50463150441647;-6.06806002557278;7.16012196149677;7.2406194312498;0.921907536685467;-3.19202446378767;-8.50383928511292;-6.46022224798799;7.04077630769461;1.30514663644135;7.9933548392728;-3.83255059365183;-8.03408762440085;2.86459759343415;-7.61412719730288;5.51702842116356;-2.83807815052569
+-5.61462798621505;-8.81018853280693;9.97262663673609;8.4748601121828;6.85969521291554;2.83757433760911;6.27775496803224;5.88238662108779;-0.446188417263329;-7.45279222726822;-4.69868096988648;-4.59708680398762;-7.29328518267721;-4.44605199154466;9.4478357443586;-9.63665398769081;-1.77625325974077;6.4847139082849;3.28734656330198;8.53298646397889;-2.54450412001461;3.02073501981795;-3.18561343941838;9.442546851933;-4.85084695741534;-8.74636843334883;8.47915959078819;8.97383309900761;-7.59781069587916;-4.00313588790596;-2.82393303699791;1.53830187860876;6.59248060546815;-1.70328066684306;5.67381250206381;-4.92642959579825;-1.16201119497418;9.24035937059671;8.73578972183168;-2.67838879022747;-5.02699238248169;-6.43184520769864;5.58382318355143;-4.24139388371259;3.10692681465298;-0.530186146497726;9.82591894920915;-7.91117428336293;6.967285531573;5.18182333558798
+-9.89407291635871;-4.19153634924442;9.29672972299159;-4.4933940237388;7.45161499362439;5.13788327109069;0.528814899735153;5.89835804421455;2.54883700981736;8.92322771716863;2.85539890639484;-7.98213106580079;-1.86930645722896;-8.2518075639382;-2.87045215722173;-8.88296117540449;1.61902905907482;-2.39569583907723;8.08137973770499;-4.29146957118064;9.11411983892322;2.87193689029664;-8.17048462573439;-0.45043065212667;-9.57315278705209;1.85482719447464;4.76876315195113;7.31579923536628;1.795619498007;-5.10263097472489;3.00857811700553;8.37868543341756;8.35035168100148;-1.76199602894485;-7.3381193401292;3.4886149642989;5.72875111829489;2.65701266005635;-0.870002964511514;-6.81987721472979;-4.41580639220774;-4.73171808291227;8.50881292950362;9.11629976704717;1.66374988853931;-8.5142755927518;-3.70844325050712;-4.77143938653171;-9.61425952613354;-6.60339917521924
+-6.72986705321819;-5.59756385628134;5.69470681250095;-7.81636457424611;1.8322914140299;1.88249679747969;-6.85153061058372;-9.01504325680435;-0.551987001672387;-0.0402928562834859;-7.99889495130628;-2.09044289309531;-7.73650207556784;-7.07301927730441;-0.0254029966890812;-8.9837708324194;1.19010261259973;5.6209343764931;-2.20579896587878;6.37353925965726;-4.63823550846428;-4.87715474329889;2.19614076893777;1.58460851758718;3.20272694341838;7.46942510362715;1.09576587565243;-0.272498466074467;-0.550274597480893;0.571426567621529;-0.904803164303303;-4.24230416305363;-2.79885834082961;-4.28347432054579;-0.0975221302360296;-9.79383808560669;-1.81562092155218;2.93604556005448;-1.14726688712835;8.40824632439762;7.43999872356653;0.293309255503118;6.31571726873517;-4.3401456438005;-8.46902028191835;-6.90059061162174;3.45282852649689;-2.12839905638248;4.53164340462536;6.86576626263559
+0.127323199994862;-2.21807172056288;-6.5357240056619;7.55871692206711;2.1249585179612;-7.52752860542387;4.42435899749398;-2.26831795182079;8.93157082609832;5.76555591076612;3.43559378292412;1.62476166151464;6.3177321664989;-7.07606756594032;-8.92616124358028;-0.150108016096056;-7.85736015997827;-4.89981613587588;-8.56543152127415;4.37935933936387;-5.81759517081082;2.2887986432761;6.59792263992131;-3.1499032350257;4.57338702864945;-9.39783432520926;-0.823600585572422;6.09872681088746;-8.99672783911228;8.14494760241359;3.39843132533133;3.85345159564167;4.28726430051029;1.5541593497619;4.60626594722271;-1.13089588005096;9.72044998779893;3.16393727902323;5.18982935231179;-4.66547892894596;-4.02048296760768;7.36024208366871;-7.5449299486354;-0.238334881141782;1.87156259547919;-4.30094154551625;5.86475658230484;8.84819561149925;9.0897281607613;0.720361769199371
+-2.04157086089253;4.73782371263951;3.91314689069986;-7.95204462483525;8.89105096459389;3.08649790473282;5.08209316059947;-1.69071173295379;-3.2540211128071;1.41127790790051;-3.68691354524344;0.499446797184646;-8.59142582863569;-4.89857415668666;3.6666701361537;-0.541766732931137;-3.3406919054687;3.16182754933834;6.65286915376782;-6.34436692576855;7.74641205091029;-0.618513599038124;1.6348203830421;4.05028315726668;9.18857582379133;-3.00563166849315;2.24795394577086;-8.22025329805911;-6.60483591724187;-8.42546899802983;1.33516137022525;-6.25941745471209;-1.97119723074138;-0.688127772882581;0.366803831420839;-2.22393247764558;7.30315303429961;4.57164344377816;-9.66723528224975;-7.69532242324203;2.13276829104871;-1.46456203889102;-3.53382900357246;-8.68513144552708;7.06090664025396;3.56655342038721;3.22084251325577;1.34111096616834;8.08832353912294;9.5854779984802
+0.315539282746613;-3.35830288473517;6.57978064846247;1.41794370021671;0.717603242956102;-9.81692431494594;-4.2526738345623;7.85448794718832;-0.280424389056861;-4.91921694017947;-3.3007836388424;-8.5597753059119;8.11801631934941;7.07524037919939;5.83000961691141;9.39825369976461;9.51770250219852;6.38160537928343;-4.24469198100269;6.43815882969648;3.63472523167729;-1.60760037135333;-7.13026626035571;8.34002853836864;9.27457585930824;3.56772354803979;5.41044434532523;-0.463096685707569;2.18271040357649;-0.98526522051543;-6.11911343876272;-6.78257025778294;-6.31479511968791;-4.71871350891888;-9.72237530630082;3.27898391988128;-5.28679143171757;-1.1044163769111;8.68530528154224;8.42833195813;1.35951363481581;-3.49495551548898;8.24836160521954;-6.99942888692021;0.830936543643475;-8.52343286387622;-6.9826883636415;-9.10700149368495;3.4956566337496;8.34153132978827
+-3.93902249634266;-3.63682196475565;-2.52887601498514;3.55603614356369;-8.07116343639791;-1.42558112274855;-2.00167623814195;3.02165564615279;-6.7546604713425;-5.42397222481668;-6.91442778334022;7.08086456172168;-2.13073491118848;0.279609863646328;-8.66187417879701;4.89230304490775;9.43317751400173;-6.08834599610418;-0.852941633202136;8.33533759694546;1.24841046053916;-3.34688086528331;-4.87468946259469;-4.03326639905572;1.01552272681147;5.27360185049474;-3.30627192277461;1.9817282538861;-3.94093555863947;3.35085627157241;1.88481913413852;-2.4685558443889;4.81797978747636;-8.15348238218576;0.0903876405209303;0.44260592199862;-0.745477224700153;-6.39363156165928;5.30107019934803;-8.78899694886059;-9.24197039566934;-9.45789049845189;-5.4991923365742;-7.03580262605101;4.8425895627588;4.64481466915458;7.59254783391953;-6.71187261585146;1.98452193755656;7.58999283891171
+-1.26752119977027;-5.4942009691149;-3.58563989866525;-8.18671545013785;1.74711939878762;1.64377530571073;5.07163258269429;7.27992502972484;1.07841361314058;2.21078632865101;3.75965410843492;3.71743847150356;1.3834722712636;3.38391853496432;-9.64680399280041;0.249479128979146;8.70015239343047;3.34138864651322;5.02264796756208;-5.06285530980676;-4.57541001494974;6.12825077958405;-5.88213377166539;9.2390928696841;-8.62783451098949;0.321187586523592;-3.72169496957213;8.9675477752462;-4.71233579330146;-6.01173321250826;7.51288876403123;-6.14267650526017;-0.394390132278204;8.13314924482256;-1.22023111674935;1.31177912931889;-6.90202031750232;-9.18083638418466;9.38795374706388;9.28420060779899;9.4448029063642;5.37694026716053;3.5553791327402;7.31764144264162;9.23531253822148;5.85579582024366;-0.456987814977765;-5.19038459751755;-7.47082584537566;8.03753325715661
+3.86745349504054;3.26200865674764;-5.62653247732669;-2.58988637011498;1.01651018019766;-0.690691703930497;1.21216704137623;2.60597560089082;0.258550327271223;5.63006665557623;-5.52889929153025;-1.08318258076906;-9.18897869065404;-9.85656794160604;-8.56996416114271;-3.93776414450258;3.1955081038177;-4.76063050795346;-5.27699470054358;6.07979329768568;3.93179255537689;-5.80440940801054;-3.46795558929443;-5.69108496420085;-8.64222277421504;-2.54221030045301;2.18793721869588;-3.21936763823032;3.67253770586103;-9.99449786264449;6.47161897271872;-4.71481488086283;-4.23279612790793;-1.17452101781964;8.18785829469562;3.56997561175376;8.96742055658251;6.88299609348178;-9.08894202671945;2.34384539537132;-1.6012602346018;-0.253180260770023;7.0148813445121;7.50420282129198;-6.39087376650423;0.0913445139303803;2.41162427701056;0.187755413353443;6.00797186139971;-1.21419369708747
+8.14174106344581;7.63357441872358;9.8312184214592;8.93885911442339;7.33231227379292;-1.42076523974538;-2.30972016695887;6.64102445356548;1.51225072331727;-3.92053232062608;-7.37207562662661;-4.1599652543664;-0.423420472070575;-6.27683937549591;8.02650989498943;-1.52518211398274;5.71003125980496;-8.38336637243629;4.81649333611131;-6.6665065381676;2.44491672609001;4.82190507464111;8.53631013538688;-0.887690708041191;0.639475616626441;-6.36283550877124;1.5791191207245;-5.22765482310206;8.73469307553023;-6.51222434360534;1.91009815316647;6.38201188761741;6.23860103078187;-0.719227138906717;-1.28545502200723;-6.23601580038667;-4.63647830300033;-3.36031056940556;-4.60939527489245;2.26724219042808;3.77912943251431;1.17503957357258;2.97954835928977;-2.96413036994636;-9.42629620898515;-3.45965817105025;6.40004890970886;-7.61416575871408;9.80488727800548;-2.11111814249307
+9.62563292123377;-6.77119625732303;-4.62504975497723;-1.37905093375593;0.407378152012825;4.25064330454916;0.982947214506567;-2.50789946876466;7.9964994173497;-1.85784399975091;-8.95628078840673;-8.79391294438392;-2.71490545012057;-5.38950186688453;6.23826494906098;-1.53289395850152;0.873624165542424;-5.43482447974384;8.62892145756632;1.16285816766322;-1.77650860510767;-8.73083064798266;-0.684402580372989;9.21937418635935;6.76820499356836;9.50288491789252;-2.13873331435025;6.4467306016013;-5.48012983053923;0.0701229646801949;7.72952080238611;4.60980580653995;8.07808786164969;-0.487957228906453;-5.39672298356891;2.18507206067443;-5.94471095595509;-8.26673603616655;7.50955885276198;8.90561992768198;-2.9697480937466;-6.90579281188548;-7.3244853829965;4.8109153052792;-4.7292092256248;4.33955173473805;7.06680200994015;-5.14193814247847;5.34082293976098;-2.09466504864395
+-6.41016873531044;0.482539855875075;-0.422357157804072;7.14863276109099;5.8324559731409;-7.86125815939158;-6.90152262803167;3.66476114373654;5.67373424768448;3.33628870546818;-7.18507935293019;-6.08560477383435;-6.73564099706709;8.02456178702414;-5.79309572000057;-7.94817756861448;-0.16563733574003;-1.26778526697308;9.45755186490715;-6.37572942767292;2.52486592158675;8.36081102490425;-6.79570670705289;2.81548430677503;6.97058793623;3.5571512253955;-3.41017216444016;5.99255844950676;-3.9602539408952;0.900034285150468;9.30296453647316;9.02831103652716;4.15287719108164;8.65107616875321;-9.37166183255613;-1.73296314664185;-9.70300076063722;-4.59278227295727;9.93519863113761;-5.63389187678695;9.91746266838163;0.925957444123924;8.93196733202785;1.01608416996896;-8.94816293846816;-8.05144414305687;9.83592677861452;-7.67222470603883;-7.89900119882077;9.70890576019883
+-3.12440277077258;9.60240144748241;5.25999537669122;-3.47778196912259;0.129551561549306;8.8450449379161;-2.92711615562439;-9.67926230281591;5.23335465230048;8.95506538916379;-9.24793686717749;-7.52782738301903;7.21272090915591;-4.2344917729497;-1.93253816105425;0.102909440174699;-1.19881702121347;0.733338822610676;9.51190693769604;6.61714054178447;-4.05575089622289;5.87952032219619;8.70071286335588;-6.44277450628579;-1.70011465903372;7.59772302117199;2.34605173580348;-1.67057059239596;2.73666973225772;6.84380169026554;2.82338928896934;-9.12827800959349;-4.8074315674603;3.63843571394682;8.77405527513474;6.92847958765924;3.94348544068635;2.44502423331141;2.97119963914156;7.49145087320358;7.89368192665279;-2.37061657942832;-8.54613527655602;4.79178472887725;-7.33341188170016;-9.04954609461129;4.66384723782539;7.24490805529058;-9.07234300393611;4.11711134482175
+9.1953965742141;9.34180012438446;9.0051025012508;-1.41493578441441;2.68304429482669;2.47088419273496;-8.77397664356977;2.39265365060419;-4.34398994315416;5.30692075844854;6.90129715017974;9.57830054219812;-2.92943282052875;1.9435086613521;-9.32822250761092;5.47829426359385;6.41045905184001;9.5883260294795;0.216942327097058;0.176556813530624;-2.98760859761387;7.10042742546648;-6.82631568517536;7.92374716605991;-3.05293837096542;-7.51290664542466;1.32421588059515;-5.52101951092482;-2.89297816343606;-9.91141605656594;7.72854215931147;6.08795522712171;-5.60741963796318;5.95254342071712;9.64109390974045;-3.82950315717608;5.01677656080574;-3.67570725269616;2.34966521617025;4.214963237755;7.55257543642074;9.3678473494947;-9.90781171247363;-5.92413020785898;-6.19536026846617;-0.248967004008591;8.76275239512324;9.71857312135398;-7.83379437867552;-7.60305350180715
+7.05761578865349;6.29401635378599;9.44788675289601;-0.0324399070814252;-6.74596004653722;7.07070856355131;3.14691608771682;6.2186740944162;-2.00125417206436;-3.8373811962083;-2.26054063532501;-0.312024718150496;-2.55778135266155;5.10029567405581;-7.88156019058079;-2.98364222981036;2.86190547514707;0.347033846192062;1.61384512204677;9.14729083422571;5.30774652492255;-4.99072165228426;1.52527194004506;-0.833382247947156;-5.04255980718881;-7.44303567800671;9.00746120139956;-7.11874233093113;9.17468346655369;6.24552720226347;1.91839925944805;-7.13431476149708;-5.36832856014371;9.08854630310088;-6.62696684710681;-1.32042647805065;1.41293591354042;-1.77891246043146;-1.17238024249673;6.22700829990208;-1.56543803866953;-3.82728355005383;-1.22111055068672;4.38546339981258;8.07950359769166;7.36134652514011;-7.90688618086278;5.70166740566492;9.45750160608441;-5.77399546746165
+8.88541072141379;7.40516565740108;-2.83008494414389;-6.23385473154485;-8.93636619672179;-4.36000898480415;9.22153347171843;3.02329523023218;-2.99874737858772;8.71702449396253;7.25737906992435;-6.35732441674918;-9.79537260252982;-7.48754078987986;-4.00456994306296;1.32264823652804;6.28067469689995;-1.96916951797903;0.552540388889611;-5.68714318796992;0.600178660824895;4.30977049749345;9.87971957307309;2.3242930136621;6.08995991293341;-7.33795175328851;-0.660432665608823;2.43071308825165;-5.79058230854571;-4.05858379788697;-2.65530774369836;2.17679345514625;-6.4776782784611;9.57629198674113;1.48382533341646;8.54868368711323;9.95879979804158;2.17248331289738;8.68237853981555;6.41019566915929;8.2245298428461;7.40904869977385;4.62658020667732;5.00383646693081;8.17069072276354;1.63867647759616;3.88728866819292;-3.97695891559124;-7.6029277453199;9.81449080631137
+-0.813781805336475;-1.688740728423;-2.86653371993452;2.66785811632872;1.14900406450033;-2.57919661700726;4.51413183473051;6.35795894544572;-9.37409195117652;4.26237686537206;-1.10762593802065;-0.432778624817729;-6.52837635949254;-5.0729246949777;-6.08863873872906;2.52699800767004;4.32214444037527;9.61209983564913;-4.89025600720197;-2.40963821299374;-7.04359333030879;6.13092914689332;-3.47958593163639;4.52028292231262;-2.25266561377794;-7.32123308815062;-4.91925806738436;0.742329279892147;-3.50515619851649;-2.49319510534406;4.50594971887767;9.54502692911774;2.8062415169552;0.301366946659982;2.43363062851131;3.21249858941883;6.40012585557997;3.85846167337149;7.76199588086456;0.0312632694840431;-6.22249796055257;6.37382397893816;9.24797739833593;-4.92008765228093;8.38835299015045;0.126847829669714;-5.65497127361596;-6.04486391879618;7.47271488420665;-6.32271251175553
+2.06759649794549;-7.77381744235754;7.22129270900041;-3.82614549715072;-3.05697869043797;1.45855280570686;9.47475377935916;-5.6937118852511;-6.22230394277722;1.06999440584332;-7.80300880782306;9.1487236507237;-9.09992463886738;0.918206130154431;-4.69655898399651;2.03710921574384;6.38432385865599;5.0242077652365;-6.41480230726302;7.61045504361391;9.37218660954386;2.98334233462811;4.67593791894615;3.88216889929026;-4.68200136441737;-1.10424632206559;-3.75194186344743;-1.39411061536521;1.35641532950103;-3.03522656671703;-0.471623660996556;6.19622674304992;-6.32387476507574;-5.16263334546238;-9.25467207562178;1.57874369993806;-1.01847164798528;-4.68203269410878;-1.18607229087502;8.98686777800322;-6.01309356279671;5.73706627357751;2.81804482452571;7.39821346011013;9.44254342932254;1.62173265591264;-6.97792805731297;9.60681090597063;-0.480104275047779;-7.51042114570737
+-6.11702085006982;-5.64799884799868;-7.4375347327441;-3.60263195354491;1.94081525318325;-2.1671821270138;-1.39313278719783;8.34065662231296;0.0355394929647446;9.46594414301217;-2.39164099097252;2.95199882239103;-9.32528944220394;7.19393907580525;-4.2184579372406;-1.30740606226027;3.62988541834056;8.39165221899748;-3.29206770285964;-1.18080137763172;-2.54893206525594;2.81789766158909;-9.97242355719209;-7.43518519215286;7.00958816334605;-7.93183344881982;4.99354732222855;-0.527612362056971;-9.49664896354079;-3.61193811520934;5.99532007239759;4.67868274077773;-4.19975804630667;7.77646874077618;-4.5598607417196;4.57904067821801;8.73239024076611;-1.1092025693506;-0.99370036739856;8.20118652191013;2.84734902437776;-6.35834740009159;7.03268847428262;6.2615706352517;7.74592844303697;-3.67909801192582;3.76807120628655;-5.62445948831737;-4.35825488530099;5.49425264354795
+-6.83166848495603;-0.614455221220851;5.28590796981007;-8.68536532856524;8.41234778985381;9.16364326607436;9.44499047007412;-2.00615955051035;-8.31420606933534;-7.46631977614015;9.27293786779046;-5.30698705930263;-4.49833783786744;-8.82819691672921;6.01981780026108;-8.9534228015691;-4.56475790124387;-6.77500025834888;5.30941696371883;-6.01976606529206;-9.46772139985114;6.577333137393;5.06242979783565;1.67267518583685;-8.29514723736793;-1.90846882294863;-7.22304928582162;9.73888639826328;4.11412792745978;1.47009233478457;-7.78690821025521;9.18800093699247;-3.29094240441918;-3.69382215663791;8.18457553628832;-4.53971336130053;2.45767083019018;2.84062358085066;3.39307704940438;-3.91851240303367;8.56765225064009;3.94282407127321;-2.54541678354144;-3.86801490094513;-7.67172416206449;-3.31585549283773;-6.35316723491997;-4.2873529298231;-3.56943179853261;2.54656776320189
+-3.72271561063826;1.3274192577228;-7.70684462971985;1.76630825269967;4.74042924121022;-8.37242804467678;3.01712035667151;-3.64059148356318;-2.35805603209883;1.80199389345944;9.24507831223309;9.27100853994489;-9.80618702247739;-0.254086195491254;-7.99716506619006;-6.84127592016011;-8.22589653078467;-6.32097417488694;-3.36384229827672;-8.00537902396172;3.29076105728745;-1.43938215915114;6.70480558648705;0.0258892774581909;8.2943964889273;9.59374759811908;-7.7183237252757;-9.09996735397726;5.11770071927458;7.9318104730919;-2.09667228162289;-1.37419661972672;-8.84597341530025;-2.66557823400944;9.00096810422838;-7.56054286379367;-7.32695202808827;-9.25446461420506;7.08624028135091;3.76667344011366;2.86323332227767;-0.57819886598736;-1.51814673095942;-4.03109015896916;-3.62062799744308;6.50606864597648;-4.66119491960853;6.89710798673332;-2.63250114861876;-0.631392546929419
+-2.38699537701905;9.19455356430262;-3.49862798582762;1.32229094393551;-7.92333092074841;8.56922125909477;-9.85199993941933;-1.75330684054643;-7.27939085103571;9.02813107240945;-6.1165216891095;9.8574047582224;-0.843828329816461;9.80030965525657;-0.146942059509456;3.56519911438227;-2.99741609953344;3.99083195254207;8.54049349203706;-3.11337502207607;5.0618592184037;-6.62319996859878;1.31932692136616;-8.65493835415691;1.854966012761;-4.58273836411536;7.73260733112693;-8.51872405037284;-8.12767461873591;-8.75998779200017;-8.15513059031218;-1.67121191974729;4.11425502970815;0.116492789238691;-5.94574813265353;5.74174338486046;-6.21935391798615;7.90619076695293;9.58471389953047;8.31626632250845;-2.21604278776795;1.88265491276979;8.99125100579113;-9.81327084824443;0.44498760253191;3.96111642476171;-5.0433725072071;-6.67099049314857;1.67690435890108;1.30849273875356
+-8.66543639916927;-2.25495719816536;6.39934111386538;4.37952212523669;-7.46177469845861;3.39415127411485;8.25489982496947;-1.76098369527608;-2.10473388899118;8.22862747125328;4.44785844068974;-6.25017926562577;-4.25287398975343;5.8878059964627;-3.16792338620871;-1.44989128224552;-6.63704924285412;-7.73378962650895;7.39882979076356;9.60719884373248;-8.81296709179878;2.687942776829;5.72915816213936;-4.46262274868786;9.72606453578919;-7.53243392333388;7.21547652035952;-8.01533193793148;-1.4876542892307;2.01247007120401;-4.27834322676063;7.73349804803729;-1.39311986975372;6.52135290205479;-2.49163521453738;0.779676167294383;9.24653062131256;-0.422009252943099;8.74332062900066;9.22052184119821;3.87561238370836;-2.13664302136749;-6.72358294948936;-2.94205358717591;-0.0318210478872061;8.88695639092475;2.2786030266434;9.89967876113951;-5.19965452607721;5.1395539008081
+1.34062726516277;7.25214009173214;0.462510664947331;-9.64985116384923;-4.83234830200672;1.19679539930075;1.18762445636094;9.01225329376757;1.74144230317324;-9.89695373922586;-4.9284586450085;8.88016398064792;-6.35523851029575;2.51400575041771;3.01511487457901;-5.17946398351341;7.78971879277378;2.89023607037961;-2.27251328993589;4.97775164432824;-7.88881113752723;8.31670898012817;8.09479309245944;-8.96138658281416;9.13539999164641;-7.06364237237722;7.50019152648747;1.49958888534456;-7.98740386031568;0.881503978744149;0.0734072783961892;3.07944511529058;5.10538856498897;0.466743838042021;9.70448441337794;2.68106861971319;7.43887806776911;-3.7781185656786;8.91424091998488;-3.47651570569724;-8.82688296958804;3.15268283244222;6.31367885973305;-3.7243631016463;-3.34820461459458;-6.85388130135834;5.22976275999099;8.41586777474731;2.34432525467128;5.55042492225766
+1.72590331640095;9.61483290884644;-4.63883475866169;4.36777646653354;-0.37520372774452;-3.28701284714043;-5.22389123681933;-4.48140778578818;-1.14053173922002;-1.701954822056;5.77589865773916;6.17617213632911;-0.960778081789613;5.17034356482327;-7.77656577061862;5.9322845004499;-1.61139028612524;-8.61491837073117;-2.7084653545171;-4.3117214133963;-0.440626842901111;0.00815483275800943;-8.02188742440194;-2.97557249199599;8.52550928015262;-0.232499274425209;6.88659785781056;8.92080539371818;8.12700755428523;5.29286078643054;4.36481483280659;-4.20171352103353;-7.34519377816468;-1.79220674093813;-5.15451510436833;-5.85201465990394;-4.57871035207063;0.208904170431197;-9.54462502617389;-9.52398955821991;3.66800423245877;-9.64162058662623;-7.77840574271977;-6.80916529614478;-8.48873598501086;-0.207788813859224;5.16864425502717;-3.66692005190998;2.8129247482866;-2.14695573784411
+0.58305093087256;3.10060207732022;2.49960486777127;-8.73185034375638;9.38518075738102;-1.71893717721105;2.27435647509992;6.24312953557819;-2.90620294865221;2.77003848925233;5.84361126180738;5.68693692795932;6.88589361030608;-1.04573171585798;0.0563993584364653;-3.51099448744208;-1.0252928500995;7.48782037757337;-1.2884227046743;9.04598653782159;3.81973708048463;-0.142853511497378;-3.86985729448497;3.87089184485376;-3.8995356252417;0.147410798817873;-3.7359687499702;6.46325236652046;2.75328976102173;3.31468446180224;6.80232872255147;-0.849659838713706;2.03512744512409;9.42533983848989;4.07544574700296;-9.0019291639328;6.62354563828558;2.78724132571369;7.28251917287707;3.76613582484424;7.99856950063258;-8.1277575250715;-4.24606862012297;9.71575803123415;8.62997751682997;-7.1373195014894;-6.41956504900008;-7.47391717508435;6.59426532685757;8.34302859380841
+-4.47370579466224;-6.37718683574349;9.05361400451511;-2.21360110677779;1.58400736749172;6.18853077292442;-9.56854367163032;0.56116511579603;-6.82278726715595;-2.97146503813565;-3.71269455179572;-9.79063019622117;8.55083782691509;8.33268531132489;1.82671365328133;-5.28543731197715;-6.24614913016558;8.66584007162601;0.231029940769076;-6.83136350475252;4.05762175098062;-0.615917509421706;1.50599387474358;-9.53176336362958;6.88449881505221;-8.14233609009534;-5.45086920727044;-6.21569591574371;8.5863892454654;-0.0388798769563437;-6.39087982010096;-2.14319819118828;1.40350762289017;-9.46559344884008;0.701143825426698;3.90927036758512;-6.43718676175922;7.06148450728506;-1.01129377726465;0.727826287038624;1.33631488773972;-5.41421267203987;0.770580642856658;6.88661207444966;1.52158313430846;5.7330016978085;4.78333205450326;9.92654364556074;3.20502283982933;-4.8587352829054
+-6.2696030177176;-5.66504379734397;-5.84746282547712;7.41331971250474;3.52453719358891;9.33533949311823;-5.01677997875959;1.21353666298091;2.86800951231271;-8.63000140991062;-2.84075632225722;6.18868300691247;-6.00336534902453;8.45456557814032;-9.48186363093555;-8.11226186808199;2.35006656963378;1.30099335685372;0.514884945005178;-6.51538286358118;6.90449036192149;2.08501486107707;6.73903371673077;-7.0217707939446;0.860650786198676;9.5490623312071;-2.64837988186628;-9.61132486350834;-4.47414196562022;-6.15500197280198;-4.90731664467603;2.89977055508643;-3.19143446162343;6.27245705574751;-7.59213345125318;2.85627523437142;-6.92161742132157;1.45756377838552;-0.781106874346733;7.02531694900244;2.35292636789382;-4.795015999116;2.58142631035298;6.88870531506836;-3.84552306495607;-2.05601957626641;-1.2351439287886;3.30966630019248;1.14322631154209;-1.66944076307118
+7.41363691166043;-6.78300902247429;6.56345662195235;-6.34885646868497;-5.15266163740307;-1.20122958905995;-0.70059219840914;6.06813245918602;-0.27748916298151;-1.8295347969979;-5.57560249697417;0.0363599881529808;8.7844109069556;-9.40375678706914;-9.95899972505867;-9.39540310762823;6.50216091889888;2.04790202900767;-2.95763570349663;-6.65682766586542;1.47622708696872;-0.807571117766201;1.16551897954196;-3.60741364769638;7.70406389143318;-7.13161589577794;3.45972251147032;-1.19557352270931;-3.05681050289422;-6.83285018894821;4.78882503695786;-6.17497598286718;4.99847130849957;-4.33341850526631;9.15403921157122;-5.37722879555076;-6.46731601562351;-6.53842975385487;-2.39947918336838;-1.84100771788508;2.553278231062;-4.72215220332146;-0.467907683923841;-2.92518422473222;-3.90338325407356;2.25802437402308;5.67949794698507;-5.22046844474971;5.48336903098971;3.70080151129514
+1.95947275962681;-9.9389560893178;-5.28780450578779;1.16659370251;-5.21523711271584;4.27695204038173;3.10319839511067;4.05524849891663;2.93234036769718;-7.05326229799539;-7.01423651538789;1.71422965824604;7.9844335373491;-9.71415316220373;-6.61539456341416;7.38771711476147;9.28920969367027;2.00970558449626;4.82539783231914;5.02415762282908;5.68249196745455;3.26771257910877;0.908421687781811;-2.40307355765253;-3.68813050445169;9.04561732895672;1.16028033662587;-3.13862017355859;-1.94950381293893;4.78091069031507;9.06615128740668;0.529077677056193;9.32651383802295;0.539960404857993;-0.394974364899099;1.08334608376026;1.17621950339526;-8.75426016747952;-9.24221706576645;-7.21283551771194;7.05628560390323;-1.90766716841608;-9.25174745265394;-9.82705867383629;4.91483921185136;-8.18806549534202;-6.5441129449755;-4.62532268371433;-3.37055301759392;6.37386097107083
+-7.47391475364566;9.36897641979158;0.784543044865131;-3.92422168515623;7.2089677862823;-8.99782432243228;2.80276688281447;6.1957645136863;9.68851057812572;9.33272585272789;-8.37368623353541;4.9364613275975;-7.11828942876309;-9.94381425902247;9.29133203346282;-3.53748252615333;-5.52632631268352;-0.453737783245742;4.36916975770146;6.92390886601061;4.1456995299086;-4.17943225242198;7.14042995125055;0.355266486294568;-5.44260669965297;6.46878794766963;-8.57970973942429;4.17089282535017;7.93446801137179;9.11284763365984;0.37194665055722;6.17445892188698;3.09490928892046;4.77303856052458;-2.72998732514679;-6.44904529675841;6.75625334959477;-4.41328167449683;7.91885690763593;-1.16913868114352;-6.69103281572461;0.437153931707144;-8.03077362943441;-9.99614290427417;4.47235179599375;8.27335151378065;8.76497724559158;-8.6226039705798;-2.13357295375317;-4.52819545287639
+-1.44364402629435;-9.31343291886151;-7.41676325444132;-6.43913027364761;-4.88778586033732;-4.65280569158494;6.62616807036102;8.28897858038545;9.70942735206336;-3.57106500770897;-0.868860231712461;-2.49568172264844;-6.59943131264299;1.45673542283475;-8.18387965671718;7.16273276600987;-3.61636189743876;3.26161419972777;1.24116047285497;-1.96407735813409;1.99380614794791;9.8065058561042;-3.06798769161105;-3.81972367875278;3.12080192379653;-1.80440566502512;-2.80232059769332;0.364106404595077;5.97939553204924;-0.279456190764904;-8.94516188185662;-0.638592098839581;-8.46591249573976;9.87421008758247;8.13257004600018;-4.94130531325936;-7.63414190616459;9.09187814686447;-6.19168255478144;3.23900121729821;-6.7184547521174;7.73791728541255;-7.7068654820323;6.21961033437401;-8.68589719291776;2.04958737362176;-9.14945144671947;4.18248917441815;-6.35385415051132;1.43585404846817
+-6.05251183267683;-4.56139313988388;-0.567983258515596;-1.3504597498104;4.20824019704014;-8.1175423366949;1.00077201146632;-0.381644759327173;-0.758939124643803;7.23534285090864;-8.41230859979987;-9.80377302039415;-7.93761785142124;0.970655023120344;8.25642888899893;1.61311400122941;-7.03488789964467;-5.28922477737069;6.6616266220808;9.50378472451121;-0.888471053913236;-8.86378120165318;-9.60248291958123;0.00130669679492712;-4.13681256584823;-5.33238669391721;-4.85480045434088;6.07451606541872;4.83522154390812;8.23740515392274;-0.573791810311377;-3.09239474125206;3.67892992217094;9.53804251272231;-4.21402811538428;-9.65315533336252;-6.65937933605164;-9.95562045834959;-0.336163830943406;-7.73994815070182;-7.69121915567666;5.59667808469385;-0.233978880569339;0.90077324770391;6.20679932646453;2.40010479930788;-4.86332477070391;-3.8066531252116;-6.31383175030351;1.98436942882836
+8.26879738364369;-4.40207021310925;-9.81449048034847;8.33970424719155;1.36106943245977;-0.076077370904386;-3.93275185488164;-6.08951268251985;-5.59873486403376;1.10083456151187;-6.64803463499993;-0.913323778659105;7.53021462354809;2.10657561197877;-3.95513519179076;-5.03009808249772;4.28521802648902;2.61469395831227;-6.14148291759193;-3.13353890553117;-7.40163208451122;9.35647363308817;8.40489867608994;5.6144343316555;-5.64123222138733;-2.57635842543095;-7.12064785417169;-7.15504857711494;-4.81092867441475;-1.65826643817127;7.38372687250376;-2.56976290605962;0.0955894635990262;-8.18985568359494;-5.30711927451193;8.36279789917171;-9.92330106906593;-8.79541437607259;-6.45071119535714;3.83545550517738;-0.0611186772584915;-8.91647153999656;-6.40783783514053;-8.13189884647727;9.00357683189213;4.40368394833058;-6.0449150390923;9.62318208068609;1.73081177286804;2.31216251850128
+-2.86650056485087;2.17226666398346;-8.92458805814385;1.73654411453754;-3.78162737004459;8.16831300966442;8.24282486923039;6.21246439404786;2.67152288928628;-2.50509775709361;-3.24271786957979;5.35159039311111;-9.09829614683986;3.33700043149292;-5.92733497731388;-7.26276196539402;-6.04734321124852;1.83022211771458;6.45266404375434;9.30778273846954;5.68388445302844;-1.90264916978776;-8.14970981329679;-7.8369702398777;1.14513879176229;-5.23330777417868;-8.1506397947669;9.45381830446422;2.36470068339258;2.99911600071937;5.9403733862564;2.37585047259927;1.71247851103544;8.3894249657169;-1.20923016220331;-4.70406285021454;6.0029130987823;-8.28637634404004;9.26967866718769;3.9235005993396;7.74040237534791;-9.86360748764127;-6.76134577952325;-4.95065935887396;-5.06672724615782;-7.53248889464885;-2.43611037731171;-4.72422494087368;-0.784550379030406;-7.92837040964514
+-2.25308901164681;-2.60946494527161;-9.51571988873184;6.81778023950756;-9.2629509139806;9.69034135341644;-6.85062797740102;-5.00809322111309;-1.65806939825416;9.36386180110276;-8.02535269875079;-3.09625711292028;-0.831218748353422;-9.27570289932191;9.42323306109756;4.16071799583733;-4.50551458634436;9.95364248752594;-3.76498645171523;-3.0570434127003;5.87888922542334;-6.14737098105252;3.22709647938609;-7.81511316541582;-6.62838428746909;7.05814873799682;-3.99674999993294;-7.25658240262419;-0.495684007182717;8.72276860754937;-0.546008120290935;-6.34250553324819;9.26251647993922;6.3378865737468;-0.203867540694773;4.14237005170435;0.989834126085043;7.77946672867984;5.44489343184978;7.29374757967889;1.70455596409738;4.79492489714175;6.64482740219682;-9.03949208091944;-1.40150342602283;-5.57738986797631;-1.74825127236545;-1.15760928019881;4.64697171468288;1.62063849158585
+-6.18999034631997;-2.89904119912535;5.47200730070472;0.608036601915956;1.2307620793581;-6.05180263053626;-5.35064739640802;0.671287360601127;-6.29805590957403;2.94401241932064;4.34555194806308;3.51935054641217;3.30969431903213;-7.45100515428931;-5.88149430695921;8.52946079336107;-6.47281181067228;-6.92870030645281;7.53942786715925;6.71508303843439;2.33556279912591;-3.46733850892633;7.28086438030005;4.14440138265491;9.26498039159924;5.0236459588632;7.68794066738337;-6.67125489097089;-1.47491356823593;0.47538741491735;1.97679908480495;-1.25582712702453;7.55690325982869;-9.09282457083464;-4.60562052670866;6.32844035048038;-1.63582686334848;-7.7906201640144;-6.02971228770912;2.90727159474045;4.57233566790819;-6.97235418949276;-9.35461165849119;-3.13052962068468;-4.3742404691875;7.2924563428387;2.431152863428;8.95015500951558;1.13521439488977;9.33174176607281
+8.82391363848001;6.93405598867685;-4.32556035462767;-9.28066507913172;2.88769792765379;-6.71239790972322;0.612691543065012;-3.69145249016583;-2.3223581071943;4.89758805837482;-0.280748996883631;9.06847022008151;-8.26036601793021;-3.78479862585664;-8.34769956767559;-0.497442344203591;0.545383649878204;-8.60269096679986;1.45250325556844;-5.83539239596575;-5.31945702154189;2.01017672661692;8.99847276508808;-4.57829297054559;-6.73880299553275;-6.84036950115114;8.10040366835892;3.28650006093085;-0.745348506607115;4.8122379835695;-0.904234889894724;8.65553590934724;3.3961871964857;0.616362043656409;6.06208660174161;5.1428898004815;-0.977819180116057;0.155783086083829;4.39900927245617;-2.90600827895105;-1.82333080563694;7.0848698168993;3.35924342274666;-6.79321852046996;0.83061286713928;-8.76323040574789;2.22358791157603;2.30245322920382;-6.19110965635628;-8.24563961476088
+-7.2074040863663;-6.58911434933543;5.39981002453715;-6.66059087496251;2.49625192023814;0.329945236444473;-9.60694596171379;-3.36876588407904;-6.00919485557824;0.888561494648457;4.36754138674587;7.68113921862096;9.88073176704347;8.77691654954106;6.36624320875853;0.742281461134553;-9.18085060548037;6.28553843125701;0.516336052678525;-4.19230399653316;-1.07459411490709;-3.69776942301542;7.47134583536536;3.61779130995274;-1.25194079708308;-0.235315370373428;-2.73388172499835;5.22251767572016;-4.38959214836359;1.58340147696435;-6.84890246484429;-1.14067037124187;8.14248995389789;6.25048961956054;4.46602103766054;5.0937467161566;-0.274897692725062;8.54844685643911;7.54961409140378;4.48220821097493;6.33607318624854;4.5519052259624;9.03439571149647;8.1594356149435;5.33103166148067;4.28442451637238;3.23517377022654;4.26317188888788;-2.03604876063764;4.07691245432943
+-1.97750920429826;-5.21170406136662;5.29398586601019;2.9298631940037;2.71872031036764;5.05324863828719;-3.01751235965639;8.84446229320019;-0.180215062573552;-0.73728411924094;6.28141317050904;-9.52332561835647;8.78852944355458;-8.10995562467724;6.72388267237693;-9.75892403628677;8.55991824064404;0.796198337338865;-0.421855919994414;8.9274726761505;5.74414959177375;-5.61079922597855;1.74433350563049;2.06946072168648;-5.88748630601913;7.65985953155905;0.954321678727865;-3.50388170685619;-4.76723367813975;9.28428760264069;6.15136929322034;-8.9112085942179;3.07347420137376;2.01631204225123;-8.90713632106781;-5.5793876433745;7.25688466802239;3.54378206655383;8.02536692004651;-4.58785366732627;-3.61664316616952;2.12031902745366;-9.78302544914186;3.5716555500403;3.15413188654929;-4.21961171086878;-7.36363738309592;4.06998954713345;-5.57889316231012;-5.92606509570032
+3.19909994024783;-9.10929650068283;4.27442864049226;2.8961667465046;-8.72942726127803;-6.10455685760826;0.243805604986846;-3.79712807014585;0.0998182082548738;4.70164790283889;9.82713827397674;-5.17023807391524;7.32946954201907;-7.00850563589483;6.12986507359892;2.974619618617;-8.43344592023641;-7.62494274415076;-4.57830943632871;-1.53353486675769;1.44321556203067;-2.09058369044214;-8.91670180018991;-7.05642845015973;6.80273296777159;-4.55914824269712;-7.16294179670513;6.00812579970807;6.61762140225619;5.01127382274717;7.71540152374655;-9.08127579372376;-1.30275829695165;5.48699955455959;7.01767654623836;9.29536865092814;-8.32672083284706;7.64515112619847;-5.43272183742374;7.3316686693579;-4.35330439824611;9.29456050042063;-5.04497813992202;1.09350302722305;3.9326743921265;-9.54251074697822;-2.78958857059479;0.806468068622053;-8.3102493127808;-3.64598507992923
+-4.42683343309909;-2.65953115653247;-4.08126171212643;7.51229572575539;-8.75984517857432;7.24462479818612;7.92206697631627;3.93105175346136;-0.577038913033903;-6.1121272156015;-6.25875303521752;-0.12128684669733;-6.94079138804227;2.56319291889668;7.42887553293258;-1.55572551302612;-9.12936742883176;-6.88578765839338;8.54028175584972;-8.0706226779148;5.64297837670892;2.55666562356055;8.69298056699336;-9.67087593860924;8.32124466076493;4.75034237839282;-6.39755947515368;-9.86583662685007;-9.59930378943682;2.15447430498898;2.60978083591908;-9.02492079883814;6.51004285551608;-9.04680627863854;-2.74441007059067;-1.38667373917997;-2.88165495265275;9.84877930488437;1.10887533053756;6.66374658234417;-1.72938954085112;2.35288620460778;-9.11183001007885;8.44148928765208;6.6289784386754;8.81467163562775;8.48799383733422;-6.01479887031019;-8.0818656552583;-4.83021007385105
+-1.00780457258224;-3.12241953331977;1.14186963997781;8.46221962943673;9.70311262644827;1.62427699193358;4.85718935728073;-3.43495892360806;-6.11930601298809;4.48621047660708;7.16295519378036;-4.20717918779701;6.30848148372024;1.33969656191766;3.32829313818365;5.10542567819357;-2.61976774781942;0.513579482212663;-7.21292211674154;-2.19503489788622;0.81789490301162;-9.36456049792469;-4.48135544080287;9.17696073185652;-6.70669915154576;-4.64259206783026;-0.0313382502645254;-0.87486517149955;6.51621045544744;-5.91864337678999;-4.10994870588183;-3.39652915019542;7.59974529501051;7.55740130320191;0.344195896759629;6.15099901333451;8.7406008830294;4.5747328735888;9.03824046719819;5.16995188780129;1.93171956576407;2.49224812258035;6.54476013965905;-8.33562597632408;9.94219330605119;-6.89149430021644;-5.45725639443845;1.10147409606725;2.35786264296621;9.21824536751956
+3.508220911026;-8.37041154969484;1.47649184335023;-0.168524482287467;4.44535099901259;6.39739027246833;5.16317438334227;-6.1089969612658;6.3644908554852;-3.73278624843806;9.37531264033169;-0.23818647954613;1.56378269195557;0.784909939393401;-7.86568795330822;-5.752122416161;-6.47520557045937;4.05212988145649;-6.92029261495918;-3.36258471943438;1.99681537225842;-1.19211972225457;-6.40348813962191;-2.6117178844288;4.14505429565907;-6.51697845198214;-9.77395982015878;-0.252966741099954;3.60116204246879;-4.89167187362909;-9.89703107625246;-8.98762253113091;-4.96908225119114;-7.88975509814918;-4.70982759725302;8.96989137865603;-7.87718508858234;-4.80202125385404;7.72188774775714;9.00675571057945;-3.91329480800778;-2.6617670012638;2.25651202257723;-2.76957236230373;7.38560207653791;-7.84111845307052;-6.31706991698593;-2.95365523546934;7.97793868929148;0.370111805386841
+0.790796657092869;-0.305668511427939;-8.83194700814784;0.845253905281425;-5.47151085454971;2.73825395852327;-1.65388620924205;7.87636140361428;-4.32104048784822;4.29341500625014;-6.34137095417827;3.54803372174501;-6.68902239296585;0.917561976239085;-8.52709270548075;9.93958227802068;-9.89874674938619;-7.66556123271585;8.21022649295628;-6.61650194320828;-5.92985277995467;-3.207828826271;-5.64399983268231;6.58167721703649;-5.66939694341272;0.970545154996216;-9.02502146549523;-4.3556113820523;6.47996780462563;1.17626396007836;-1.39309485908598;1.85735539067537;2.87813828326762;6.40437889844179;-5.63711635768414;2.48078885022551;8.24699006509036;0.21504667121917;-2.58789849001914;3.16612878348678;1.42585075460374;1.82480591349304;-1.2128930632025;-9.06600701622665;-8.97587907966226;4.66839961241931;6.43922708928585;6.33819255046546;-9.57959039136767;-9.11523401737213
+3.52479954715818;9.07612181734294;9.13105230312794;-3.19056758657098;3.61459624022245;4.76725474465638;-0.859897155314684;3.21796644479036;-1.62061078008264;0.794236250221729;-9.74958803504705;-2.49639989342541;9.04270286206156;-0.838942993432283;-8.70077252388;-7.30220446828753;2.76631386484951;-4.38567272853106;5.99348291289061;6.5029977215454;2.57700253743678;-1.20600725989789;-8.61054419539869;0.604196023195982;-5.09381465613842;6.50153913069516;-0.932367704808712;6.34226120542735;-8.26511617749929;-2.79025986790657;-3.09881550259888;-5.86307171732187;-4.80057631153613;0.92703933827579;-7.34696300700307;3.23090828023851;-0.105695924721658;9.50090489350259;7.76185750495642;5.63324259128422;-3.7652263790369;-2.23893922287971;6.27920161467046;1.37893187813461;-3.61076751258224;-7.20604675356299;1.27877499908209;-6.95683129597455;-4.63703219778836;9.34457608964294
+9.42792478948832;1.79173714481294;-8.83588847704232;9.03160407207906;-1.12665064632893;3.54119814932346;8.9847440039739;2.36017175018787;-4.23284582328051;-2.40224641282111;-6.39312745537609;3.24562240857631;-6.69468488078564;-8.53720226325095;-6.80358875077218;-2.35494617838413;-0.887250825762749;7.26793575100601;-0.139385503716767;-6.60204165615141;4.15703419595957;9.93006150703877;1.3378267781809;0.469139292836189;-8.55192816350609;-8.70951033197343;-1.06218051165342;0.310709718614817;-9.31268179789186;-7.39951421972364;6.23104190919548;-3.52858059573919;-0.210526064038277;5.08108494337648;-7.11799460463226;-5.1721994811669;7.12855459656566;6.09804395120591;5.81695154309273;4.3319796724245;-5.92803511768579;5.06669278256595;1.39786747284234;-9.63656146544963;9.68601448927075;-2.70654186140746;-7.29532702825963;3.10248360503465;-4.64136809576303;8.66296981927007
+-8.50401147734374;4.5914801210165;0.852371877990663;4.89518234040588;-2.51540513709188;2.87312312051654;9.98047882691026;-0.74385738465935;-9.11578360479325;5.58321033138782;9.24936711788177;7.77873313054442;-8.6368244048208;-3.74186962842941;-4.96456573717296;-7.90028703399003;-7.11841878015548;-7.06995819229633;1.02115587797016;-4.98801856767386;0.217049801722169;-2.05337598454207;-6.08443035278469;-3.28932282980531;0.64328727312386;9.85321600455791;-6.27962950151414;8.44758423045278;-5.32093848567456;-4.81952053494751;-4.55441490281373;1.75490952096879;-1.66643579490483;-6.78414432797581;6.51849128771573;5.51577271427959;9.68286937102675;8.3213278464973;-9.09610885661095;-5.83131710533053;5.0370329990983;-5.49464255571365;0.0756950676441193;9.70022583846003;3.78612269647419;-7.57019630167633;-4.32620131410658;5.08162550162524;3.39177530724555;-5.43369045015424
+-6.3406087551266;2.52026097849011;-4.69241548329592;0.623455755412579;6.84819799847901;-2.65132881235331;1.61816818639636;1.2805492291227;-0.0857266550883651;5.37900016643107;1.42665598541498;-2.41055043879896;-4.40305531490594;2.61920158285648;-8.21523082908243;5.99852595012635;-0.894789420999587;-2.88282130844891;8.2150532817468;-9.3723754119128;-4.42739386111498;4.93454198818654;6.25699993222952;-3.8750328682363;-8.88567429501563;-6.40916280914098;8.90840174630284;-5.87495192885399;1.69805448502302;7.0679810969159;-4.15579873137176;3.57498956844211;6.723807528615;8.40322743169963;8.78277498763055;7.94595346320421;-5.29355793260038;6.789774550125;-5.94823975116014;7.70046763587743;6.82917811907828;5.75657728128135;1.65830940473825;-0.893370895646513;4.47505489457399;9.57572595681995;1.18132831063122;9.93587005417794;-2.39467846695334;3.22555605322123
+-4.90205138456076;-9.49331347364932;-5.09728376287967;2.167978445068;-8.30108064692467;-9.22161987517029;0.720972996205091;8.88817208819091;5.89752499945462;8.39208358898759;4.94418641086668;5.30896388925612;-1.25834849663079;-3.7295339256525;6.92978526931256;-3.55002663098276;-6.64718347601593;7.70053455140442;-4.19689622707665;-0.0644626235589385;-8.1607854180038;-4.75033127702773;3.15462619066238;-8.45896730199456;5.70506838615984;6.58006580080837;6.96905937045813;-2.64567589387298;-9.2160217044875;-9.09368834923953;6.20128462091088;-6.6847681812942;-6.87047251034528;-0.603168876841664;5.22797644603997;9.7832392109558;9.00861654430628;2.56432270165533;-8.93128791358322;-2.73463043849915;7.2795104701072;7.18340280931443;5.25814331136644;-0.116870966739953;0.274194553494453;9.1654017707333;-1.43554119858891;-3.74300207942724;5.79631687607616;-9.69362790696323
+-8.69463306386024;-1.57580969855189;-7.49815960880369;-9.14254488889128;2.9400821402669;-0.347977229394019;5.11138757690787;5.15072606503963;-9.51021414715797;5.05632291547954;2.96961848624051;0.232828971929848;-1.02447125129402;-9.4566061720252;-7.85616458393633;9.61717263795435;3.39381982572377;-4.58377881906927;5.67052725702524;3.20155232679099;-0.622063693590462;0.000554840080440044;-9.56018135882914;6.61918069701642;-3.25385118369013;-6.78169880062342;6.65985894389451;-9.96974786743522;5.73945212177932;-1.55048402026296;-4.26209037657827;0.617669303901494;8.70989023242146;8.98990499321371;9.48306899983436;9.00568921118975;-2.49897909816355;1.95671602152288;2.91018326301128;-6.09917889349163;8.80169735755771;6.7663351399824;4.34187800157815;5.72313737589866;-6.91851386334747;1.89817102160305;-7.24338172934949;9.45201537106186;9.37857157550752;-7.51560475211591
+8.27689591795206;1.99666962493211;-8.77978533972055;-8.39228676166385;-2.09242042154074;9.79728656355292;9.62230180390179;8.09036314021796;4.5292210066691;9.51740204822272;-5.23936495184898;-6.9597766501829;9.98155551031232;5.0999305350706;-5.70716180372983;7.31420148629695;-2.60135137010366;-0.0788930151611567;6.92875699140131;8.84206828195602;-6.96672081481665;1.55112818814814;0.35387403331697;-8.81568981334567;-8.65817919373512;0.126191503368318;9.43049007095397;-8.30579729750752;1.59438075497746;-0.261977971531451;3.50237905979156;8.03234689403325;-3.17822486162186;-1.99692141264677;-0.627687089145184;-3.51150374859571;-7.67014218028635;-0.0722854817286134;-7.5711494544521;-9.65599500574172;2.93120869901031;9.36773032415658;-2.93691101949662;-4.25363476853818;-8.13969431445003;3.94173499196768;8.25269416440278;-7.38626020029187;-3.45195922069252;-3.42096284497529
+-4.12582437507808;9.33213990647346;-6.63816643413156;-4.44879728369415;-0.785655276849866;2.16357245109975;7.10610381793231;-1.90307206008583;9.06363135203719;-7.35333725810051;1.52091695927083;-8.2965054595843;-9.71298461779952;7.6271896995604;-3.34979788400233;-5.70070710033178;6.58598077017814;-7.40762033965439;-3.84857010561973;9.21154408250004;-5.71228307206184;-8.83354367222637;-4.70642724540085;0.213604639284313;-0.073687438853085;-9.82524910010397;-9.74815708585083;4.16930603794754;3.1665819697082;6.45482060499489;0.488181966356933;5.96241873223335;-4.85907664522529;-8.5750058433041;-2.36049781553447;-4.69471250660717;-7.13195823598653;-2.50876605510712;1.54906118754297;2.50277873128653;9.85057396348566;2.15480760205537;2.54113291855901;2.67960674129426;1.42306068446487;-2.10383660625666;-6.06840668711811;3.06452539283782;6.40868505928665;-6.41094958409667
+-9.79701604694128;8.41780634131283;4.68373208772391;-9.61420649196953;1.86435046605766;9.10342033021152;6.1671423073858;1.28924548625946;7.59940932504833;-5.07401096634567;9.41063766367733;6.05666727758944;3.45492855180055;7.44151291437447;5.4632151639089;-2.17018962372094;7.37838910426944;-0.396751584485173;7.37898100633174;-4.64623012114316;9.08841694705188;-6.90806663129479;7.16136754024774;-9.57785041071475;6.14275820553303;4.90488178562373;3.23507562279701;-1.30999537650496;-8.72480250429362;-0.181203815154731;0.16717042773962;-0.782079645432532;2.23960675764829;-3.77999903634191;9.56239046528935;8.9037752058357;-0.714842979796231;5.10476880241185;-2.67571757547557;-2.10578347090632;7.98738100100309;5.29681359883398;0.574973844923079;-0.262904544360936;9.01519512291998;1.58872404135764;0.314693790860474;4.014922962524;-8.13309229910374;4.48212650604546
+2.86707506980747;9.99437420628965;-6.87443798873574;0.78949776943773;-6.36228031478822;-5.40995740797371;6.8091411748901;-3.6830671178177;-0.419756122864783;0.518813114613295;0.918815587647259;6.14214936736971;-5.55261994246393;-4.29844717495143;-8.44694900792092;4.81070086359978;4.81282328255475;6.04358912911266;0.331648234277964;-3.07000590022653;8.51289036683738;-7.7383781131357;2.43270221631974;-4.6216620830819;5.71097737643868;-2.73986547254026;3.00771745387465;8.26366719789803;0.656872079707682;-7.73973986972123;-2.41006447467953;-8.55496358126402;7.19616094138473;-9.6566754207015;-8.2459440594539;-0.358971226960421;-8.4852325450629;8.59016067348421;-1.05130626820028;-3.24577676132321;-3.18882305175066;-3.20990464650095;-9.91658235900104;-7.16417921241373;4.30088105145842;4.80146985966712;-3.95527136512101;-7.40698622073978;7.47819171287119;-1.47483076900244
+-1.9055395713076;7.19673475250602;-9.49155875947326;2.00596006121486;-6.6162357153371;-2.87561901379377;2.87395852152258;-1.1990177584812;2.98743216320872;-2.95973691157997;0.268614902161062;3.09290814213455;6.36957151815295;-9.98184197116643;-1.44934598822147;3.66187070030719;4.21329418197274;3.97133988793939;6.91825336311013;-2.86543378606439;-3.72914514970034;8.87905356008559;8.87816275004297;-8.4020841633901;-4.72796403802931;9.06124998815358;-9.78610653895885;9.18365455698222;-6.48770782630891;-1.49345427751541;9.36930490192026;-0.282558663748205;-5.31149661168456;0.219124020077288;-6.15291905589402;9.20870569068938;-3.03952971473336;-1.84984532184899;-9.639134532772;6.0432399995625;6.77749441470951;9.50673033483326;4.69980734400451;5.25937422644347;-9.44994871504605;4.93163706269115;7.8629667731002;-9.1593996854499;7.0792219415307;8.2972823921591
+4.5544915413484;-5.07355393841863;-1.25956093426794;1.37545123230666;1.4620567811653;6.21778680942953;-6.39393929392099;-1.58507856540382;-6.73812873195857;1.86490276828408;-8.23960195761174;7.66479449812323;-4.74494194611907;-5.55087639484555;2.69738534931093;-0.244169039651752;8.50821433588862;-8.09587190393358;7.12805147282779;8.00950230564922;-3.4404650516808;7.77855429798365;-9.66666211839765;-9.73976318258792;3.76527718268335;-7.36739443149418;-6.86182538047433;-4.99146879184991;3.95393116399646;-2.55547997541726;7.5605336856097;0.95625220797956;8.34275261033326;0.785373467952013;0.814141938462853;0.82791191060096;6.80471925530583;-4.75839384831488;-1.61200111266226;3.10800462029874;5.35727060865611;2.19464685302228;-1.82959465309978;9.42625254858285;8.6457228846848;-5.9477466205135;-6.02977020200342;-4.6641711704433;1.20475988369435;-1.90712523646653
+-8.14032736234367;3.52765763178468;-1.61763130687177;-0.820047245360911;0.612462740391493;-5.18772464711219;-1.45750217605382;3.36448149755597;2.79544399585575;-3.82851323578507;1.65740632917732;-4.61249715648592;5.3815577365458;-5.43277536984533;-6.50253160391003;-8.07763365563005;8.80965556483716;9.55332934390754;0.943094152025878;8.49984985310584;5.75352696236223;-6.06264850124717;-5.49861507490277;-4.55566884484142;-2.0733023667708;-2.53643434960395;-2.47373111080378;6.12848618999124;-7.16343694366515;-1.19014707393944;-7.93096653651446;-9.02238451875746;-4.53868053387851;4.6723991446197;-8.51063243113458;-4.97975703794509;-0.965737015940249;1.70380107592791;1.4633609354496;-0.367587362416089;4.01702380273491;0.743841943331063;2.85206605680287;5.69153688382357;0.511521464213729;9.02903440408409;0.944787478074431;7.1405735053122;2.06687046680599;1.20340092107654
+5.25210387539119;7.39213094580919;-7.6782790152356;8.87099163606763;-8.16121452022344;-8.52706918027252;5.35080088768154;2.65164258889854;1.58070020377636;5.60676149558276;9.85057897865772;-0.339681999757886;-1.26070504076779;1.38642223551869;-8.05265588220209;-3.02056669257581;7.75394339114428;-0.0573388300836086;-8.37702564429492;-4.82946320436895;-2.59702689945698;-0.640411917120218;9.60580035112798;2.87219792138785;4.95854143984616;0.00539291650056839;3.09428973589092;-7.9881330858916;8.27404351439327;6.13781211897731;0.541881788522005;-3.35351219866425;4.83106748666614;-3.49259464070201;-0.524957356974483;8.47593734972179;-3.12410345301032;2.63012849260122;-6.5633330354467;-3.13064152374864;3.3447769517079;1.27911321818829;-7.38141245674342;5.3459590068087;-5.00196790322661;-3.5465806350112;8.99227125570178;2.57552512921393;2.93833598028868;0.583903845399618
+-0.607435181736946;-8.57779789250344;-1.03203933686018;-6.09366004820913;9.7625153278932;-8.86751341167837;-9.53049757983536;-6.0512841725722;-8.73903045896441;-6.19153189938515;-8.54663754347712;-9.38305440824479;4.18933322187513;-8.75551992096007;8.34806928411126;-3.94054638687521;-4.35130827128887;6.76772067323327;-7.471585245803;4.3343635648489;5.84242941811681;-9.00026824790984;7.18356913421303;4.94177899789065;-0.486275758594275;9.2307932022959;6.0768819693476;-5.98855473101139;-1.20289846789092;-4.07445393968374;-4.54563970677555;7.94524814002216;4.31595574133098;4.20476016588509;-8.65517749916762;6.57401224598289;-4.28902839776129;2.31542661320418;1.27183344680816;8.21590887848288;-4.75271612405777;-2.04530862625688;3.41265307739377;3.40517899021506;7.10917460732162;-2.59375364053994;-6.29297694656998;-7.30007561389357;-1.61899278406054;4.49719647876918
+0.316534345038235;4.85579585656524;-9.51594197191298;-5.40443098638207;6.52125573251396;5.64861403778195;0.0530292931944132;-0.949580352753401;6.78486157208681;2.30013921391219;1.90041024703532;2.50681472942233;-6.68208161368966;-6.50950179435313;-5.92104440554976;0.753119233995676;7.76442528702319;6.89517251681536;-8.50403419230133;5.7193565228954;0.31300138682127;-3.73413267079741;3.10483125038445;-7.8274951595813;-6.86974655371159;-2.6985887857154;-0.352621064521372;8.99940754286945;9.89198453724384;-8.234978094697;-0.980507479980588;8.47552075982094;8.58291591983289;6.51038828771561;8.24252993799746;-4.70909711439162;4.40748018212616;-1.40203851275146;8.96753245033324;-4.99626042786986;-9.46494646836072;-3.77734441310167;-1.41931410878897;-0.0224698521196842;8.84366611018777;-9.61147433612496;-4.84616274945438;3.63190074451268;1.35761508718133;-9.36787838116288
+0.83659048192203;5.05299378186464;4.7632589424029;-9.38892582431436;-0.838347119279206;-2.51799550373107;-1.83160331565887;-4.60148960351944;7.83395621459931;7.13261562865227;-8.38008266407996;8.69043004699051;-0.76537202578038;2.61369714979082;-8.12359760515392;-0.281719681806862;9.51477109454572;-7.67043383792043;-7.00673907995224;2.44982382748276;2.20566452480853;7.43600688874722;-0.12379520572722;3.10491532552987;-8.50646079983562;8.75100534409285;-7.61367995291948;2.26415817625821;-6.70040364842862;1.00594270043075;2.59169648401439;3.59813840594143;-5.25472038425505;-8.82329287473112;2.61971853673458;8.29947899095714;-6.37669785413891;4.26457539200783;2.53356738016009;2.9609639197588;5.29849748592824;6.78740506060421;-1.38773881364614;4.2378852609545;-6.26694520935416;8.72493854723871;3.38200774975121;9.98059984762222;7.33467714395374;9.57394378259778
+3.21077594067901;4.94690019637346;-1.9329564506188;-2.68348155543208;8.29521401785314;-0.0872677331790328;9.80444651097059;-9.62995049543679;7.49867053236812;0.373104545287788;8.42865655664355;-8.5815907549113;3.97980380803347;4.36460334807634;-6.61758844740689;-0.311262393370271;9.43566404748708;-0.83735394757241;-2.85330581478775;-4.70145368482918;-3.14170357771218;3.02539701107889;-8.26050906907767;-7.98934230580926;8.49568411242217;-2.30491954367608;8.86419584043324;5.2222540974617;8.12600307632238;-1.94678911473602;-5.88351112790406;-4.49323174543679;-8.24676240794361;9.42196121904999;3.68163034319878;8.48566188011318;7.45363098569214;-3.11597641091794;-3.56744905933738;-3.26261204201728;9.64472283609211;-0.641348478384316;-8.29989743884653;-0.778174581937492;-3.84299632161856;9.06119785271585;2.05083237960935;-8.00742004066706;-9.51395190320909;-6.2248536804691
+-8.80953424144536;-6.26644219271839;-4.35066811274737;-7.51698418520391;1.93337107077241;-9.3531416868791;8.01039023324847;-5.46777385752648;2.18706842046231;-6.16950612980872;6.06029677204788;0.873433486558497;-1.66038176976144;5.16859433613718;7.81237726099789;-5.64042353071272;-4.03564281295985;0.806399094872177;6.76030667964369;-4.99598454218358;1.16621098015457;3.88540446292609;9.27718575112522;-1.08230180107057;7.78263555839658;1.54359728097916;-0.511861923150718;9.2677791742608;7.38356412388384;-9.10679307300597;-4.97157610952854;-0.19477631431073;3.52962946984917;-2.46414735913277;-4.99102174770087;-9.63643073569983;-6.08171962201595;5.4776560747996;-4.97163775376976;6.61302676424384;8.06507073808461;8.20173625834286;-7.70966949872673;-6.61073814611882;4.6355271153152;-3.11433415394276;-4.89181558601558;-1.30851223599166;-3.69512655306607;-5.11796618811786
+0.389959397725761;-1.8392796209082;8.15746320411563;8.81743130739778;-9.55418068915606;0.303716827183962;-0.124281337484717;2.58145359810442;-8.94505776464939;1.76411067601293;-5.41388932149857;6.86341973021626;-2.4002989847213;-8.24708099011332;0.554120987653732;5.82327020354569;6.16716720163822;0.415079235099256;-7.47244188096374;0.176945389248431;-7.23641445860267;5.1597852492705;-5.23881112225354;8.03650898393244;-5.52713779266924;-9.85978229902685;6.90024834591895;1.17765450850129;3.60767122358084;9.15455336216837;2.27297156117857;-9.95470080524683;-2.33834126964211;7.66574618406594;4.51280252076685;0.116825536824763;6.90424179658294;-2.87219517398626;2.51122182700783;6.17868727073073;-3.77466984093189;-4.3522620992735;1.85439884196967;8.806336754933;9.49743019416928;-8.81119028665125;-0.271330894902349;6.29008654970676;-1.93085529375821;6.41151667572558
+-8.57393995393068;7.08974332548678;8.36523013655096;-3.59540650155395;6.82951823808253;5.23337120655924;7.41193688474596;-7.25992619991302;4.41365682985634;-2.4351133685559;4.74616640247405;-8.53937163949013;0.826874012127519;-9.03044596780092;7.1337473532185;-7.64146413654089;3.55636827182025;6.31754708476365;-9.65060587506741;6.31403451319784;-6.44362856633961;-0.266904984600842;0.987185244448483;-3.32661009393632;-8.29766058828682;-0.523954615928233;-7.23969505168498;-2.7404208201915;8.52293891832232;4.03488797601312;-6.46920797880739;3.26956118457019;-3.23818278498948;6.44556982908398;5.81944096367806;-2.9962354991585;5.92108539305627;-8.70039769914001;0.493016107939184;-6.64702890440822;-7.0927205029875;1.79288160987198;-2.48738626949489;9.06889098696411;-4.9418787099421;-4.08262504264712;-2.41161247249693;2.34559600241482;-6.96458895225078;-8.28720529098064
+-1.06228482443839;6.03792135138065;-7.44441461749375;-4.69746742397547;-0.554328514263034;6.11196629237384;2.92160672601312;1.35680493433028;6.37636314611882;-3.72903176117688;-9.19027257710695;1.28955706488341;5.68021176848561;2.1611547190696;-7.12573830038309;-6.68124425690621;2.55627882201225;3.7248766515404;2.16551599092782;9.86644382122904;7.68462513107806;2.43160285521299;-8.99505646433681;-7.81063195783645;1.40017960220575;-6.18591049220413;-1.81491534691304;0.514184031635523;-8.56428889557719;-9.82413906604052;0.094589963555336;9.75202944595367;-6.92809709347785;2.19934315886348;8.6264938255772;1.90603709314018;-0.77644158154726;-0.778299947269261;-9.70696386415511;-7.48056669719517;-0.517354873009026;-2.86890924908221;-3.77920784987509;-1.587995714508;-6.47590936627239;-7.76299787685275;-6.59847404807806;-1.26784544903785;-9.21983082313091;1.16886359173805
+6.91860208753496;-6.67035263497382;-0.874993721954525;-4.35497237369418;-9.69570108223706;-6.77402595058084;-8.14395159017295;0.491899182088673;-0.910623408854008;-3.94026707857847;-0.617207461036742;9.06701318919659;3.18452451378107;7.64979151077569;7.04491299111396;-9.72441794350743;-1.17947142571211;0.253233686089516;8.83897838648409;-3.62807603087276;5.22751998156309;-6.12197251059115;-1.58498665317893;3.7109847413376;-4.25962190609425;9.30803728755563;3.26034512836486;6.06200096197426;-9.76837543770671;7.08425327204168;-3.32373599987477;-9.67540088109672;-6.92970734089613;-9.56357557326555;1.51831703726202;-0.979277831502259;6.70138230547309;-5.80961316358298;-9.73287588916719;9.95737380813807;-8.77932744566351;8.94714494235814;-4.88451763056219;1.05128690600395;8.46371881663799;5.16668249387294;5.86396459955722;-4.08493327442557;-1.84090652968735;4.1493414202705
+5.45460110530257;6.55276417266577;9.77412060834467;-7.4157200474292;-7.4389843037352;-6.9704103237018;6.00653798785061;-8.79160965327173;1.31193143315613;-9.5218651695177;6.24148211907595;3.60163398087025;-4.60851274896413;-3.51563943084329;-0.631562466733158;1.65049562696368;-4.80870923493057;3.71903289109468;-6.90973691642284;4.44493972696364;7.76355054695159;3.45174088608474;7.54361702129245;-7.53600655123591;7.18486444558948;-8.54463370982558;-9.39622168894857;-3.92271944321692;2.3197080893442;-5.15025401022285;-9.30484144948423;-9.33073982130736;-1.66229232214391;-1.47412831429392;0.0562406564131379;-1.7506610089913;-4.19590657111257;-6.37022403534502;9.24333764705807;4.63271207176149;-6.31949646398425;7.81948260962963;-4.25788121763617;2.53610464278609;-6.96914018597454;-5.03025754820555;-8.84790370706469;-3.98401740938425;-7.2972294408828;0.126817617565393
+6.28398277796805;-7.2657062811777;7.17382790055126;-3.69328191038221;-4.26757763139904;7.91790408082306;0.860767313279212;-4.20746754389256;-0.811078427359462;8.92806275282055;-2.1993380272761;-4.65154523495585;0.093799508176744;8.45522540621459;-6.92119023296982;-3.73361739329994;4.82420654967427;-2.10580450017005;-5.51670510787517;-6.90581709612161;-2.07016156055033;-7.16143102850765;2.90661159902811;0.520067452453077;7.25945292040706;5.51875114906579;-1.46659343037754;9.28044541273266;6.46018193103373;2.59434508159757;-1.00467436015606;7.80377476476133;5.0320157315582;-5.25640518870205;7.56219502538443;-8.99534815922379;-8.44164839945734;-5.89737694244832;9.84384888317436;3.40801878832281;-1.52352213859558;5.98559646867216;0.715890317223966;-1.12972444854677;5.30319002922624;5.92095705680549;-8.10594452545047;-6.37482196092606;1.36547615751624;4.4244628585875
+1.17858408018947;-7.78241307474673;-2.19016138464212;2.4183292593807;2.43922696448863;7.75614299811423;3.42426695395261;-1.52872789185494;1.8674489017576;-3.11214508023113;-1.66147133801132;9.65685945935547;2.0539545500651;7.95718860812485;-2.82001351006329;8.78485488705337;-8.55199223384261;9.47149782907218;-2.69006352405995;5.87171663995832;-3.24826740659773;3.68161730933934;-5.92508691828698;6.0316742118448;3.50334915798157;-3.71955846901983;-6.27866766415536;-8.93821572884917;5.30806259252131;9.65420433785766;-0.340762319974601;-1.24841116834432;0.641623558476567;7.78446984943002;-0.190294617787004;4.96813970152289;-9.71176461316645;4.98057190328836;9.23755552154034;-8.88756968546659;-4.65563950594515;4.02594391256571;4.35231161303818;5.46325506642461;-2.60244176257402;-6.58563665580004;4.8456671833992;-2.12043206673115;-4.32773591019213;-7.46460216119885
+-5.70879332721233;0.688178665004671;-0.00491475220769644;2.92294911574572;-8.74659787863493;-1.69998010154814;8.4937945753336;-0.980966165661812;8.86648426298052;-1.12665721215308;-9.34168538544327;0.0708714826032519;-0.996461673639715;9.92660240270197;-9.01697345077991;1.74918481148779;-7.7310163108632;-7.73487287573516;-4.06677180435508;-8.89255720656365;-3.74521539080888;-9.11711280234158;4.86311137210578;6.55741200782359;-3.27180138323456;-2.79901137575507;-7.23879435565323;3.80275023635477;4.85590634401888;5.7333468599245;8.38933817110956;5.11195491533726;-9.08292802982032;-6.48951762821525;0.542274741455913;-3.04924800992012;-3.91630100551993;0.472397170960903;-0.587223223410547;1.42286984249949;5.37323087453842;3.6092672124505;9.07335772179067;-3.36998488754034;9.60549661889672;-6.13193342462182;-8.92539020162076;1.30873643793166;1.67602774687111;2.09316059481353
+0.904657300561666;2.53450419288129;8.78505495842546;3.52517602033913;3.45617428887635;1.86788577120751;-4.92829923518002;0.863321726210415;-7.54422215279192;-2.97792103607208;6.53102980926633;-8.57122032437474;-8.37148773018271;6.93353895097971;8.88658265117556;3.46773007884622;-2.45132819283754;1.85745242517442;-6.3460603589192;-4.91079698782414;-1.58952195663005;-0.101563143543899;5.59465010650456;5.89202701114118;4.18189133517444;4.64128393679857;-0.715409126132727;0.529293278232217;1.14291221834719;-9.73887359257787;-6.79954290390015;-0.193516444414854;8.96659469697624;2.41599187254906;-8.21617754176259;-3.45096854027361;1.99467342812568;1.44197082612664;-4.6375791169703;-0.40071411523968;7.20769257284701;-2.8103741677478;-1.74095689319074;-5.89126886799932;-0.874087102711201;3.73424340505153;-8.89404637273401;4.13496837951243;-7.72802661173046;8.46320623997599
+-2.53197703510523;-9.10033765248954;-2.15669664088637;-2.35229820013046;7.12552270852029;3.71359564363956;-2.02172331046313;9.38536966219544;9.35092031490058;-1.62867454346269;-2.49908971600235;-1.83032405097038;3.79577487241477;4.72478931304067;-1.66842305101454;-1.9494027690962;-5.96953279338777;-1.04720265604556;-7.71695964038372;-7.93585166800767;6.89231362659484;1.87218579463661;3.47153833135962;-6.51895791292191;3.75199492555112;-4.75210011936724;-3.65536973811686;-7.56622805260122;1.5360897872597;-4.81049984227866;5.4549068864435;-1.56778260599822;-4.70490799285471;-3.57994272839278;-5.67454937379807;8.27888809610158;5.54019138216972;-8.038215120323;-7.04737371765077;6.75324061885476;-9.34328905772418;-9.65172574855387;-2.76166061405092;3.46901847049594;5.52273858804256;0.745911402627826;0.161566226743162;9.46246444247663;-0.134702743962407;-0.372281693853438
+7.33751705382019;-5.39394373539835;8.97936861030757;3.90432733576745;1.26899187453091;1.95660208817571;-0.846501206979156;0.551006160676479;2.09229260217398;4.01522838044912;-3.82153962738812;-7.20648965798318;7.76550442446023;-4.90782615263015;-9.13146500010043;-3.70581006165594;-1.24923864379525;1.19176662061363;4.42575864028186;-6.43586108461022;6.42738189082593;5.74080475606024;7.21914323046803;9.43984671030194;-1.51742544490844;5.98069887142628;0.395186701789498;-1.85074949171394;-0.491810948587954;-8.49018273409456;3.78557935822755;-6.540686939843;6.02094395551831;-9.05542124994099;9.63057048153132;-3.19633895065635;8.72754849959165;-8.13109650742263;-0.489551383070648;-3.78635996952653;8.79996698815376;3.23201613035053;-8.07510597631335;0.590360811911523;8.90303335152566;2.83721358049661;7.91075536981225;5.09223131928593;2.74238063488156;-7.73498951457441
+2.45756761170924;-1.75811498425901;-5.55493999272585;9.76235794834793;7.00124145485461;8.51742659695446;9.79065185412765;5.67820763681084;3.86831898242235;-4.47066200897098;0.755994375795126;1.55493630096316;-0.124284960329533;0.824993220157921;-7.50098941847682;-3.27472204808146;7.31382853817195;8.88189358171076;0.764291733503342;-2.14086145628244;-8.50238561630249;-2.74367111735046;9.04067064169794;6.8223410891369;3.87194559443742;-1.47992454934865;-8.51931388489902;-1.44365921150893;-3.37857009842992;-3.11298702377826;-7.46677787043154;-8.55852603446692;5.49902260769159;-8.45443927682936;7.58247877005488;-4.65997071936727;8.89170825015754;6.38291700277478;1.10265413764864;-5.53134931251407;4.04384706169367;-6.75683927722275;-0.908254743553698;5.9033886808902;1.12981245387346;0.928667229600251;3.88623404316604;-4.10668841563165;-7.91797217447311;-6.9656286528334
+-9.68539971392602;3.25756878592074;-5.58685212861747;-0.106556233949959;6.75127055961639;5.81252279691398;-7.87703800946474;-4.61785912048072;1.7217861302197;2.39691704045981;5.47164970077574;3.24458546005189;-6.69605115894228;6.82703250087798;-0.174100669100881;-7.21131109632552;1.65630633477122;4.68767112586647;1.99674016330391;-5.36094699520618;-6.21156367938966;2.33531289733946;4.56204061862081;-0.340575203299522;-2.37647056113929;-8.59817288815975;8.33403107710183;3.33233840297908;-3.89455786906183;7.67132556531578;9.7110108518973;5.40258788969368;-8.48375346045941;7.10923964623362;-3.48191462922841;-5.10722616687417;5.07291667163372;6.28913316875696;-8.31979295704514;-6.27674295566976;3.09110087808222;2.68496077042073;2.61983125004917;1.3396777305752;-5.91613451484591;0.911181862466037;-4.52109396923333;-3.59130095224828;-3.17676933016628;-0.702075236476958
+2.75739633478224;0.975936492905021;-2.50566658563912;-3.62793597858399;-4.86996096558869;8.60804095864296;-1.98335045482963;-2.72658841218799;5.21981784142554;8.09452272485942;-6.50541228242218;7.18933712225407;0.414922358468175;5.57451302185655;4.71636217553169;0.872014029882848;-1.25434716232121;1.12444006372243;-8.52754519321024;2.87367307581007;9.14855210576206;-2.26510733831674;-4.8503985023126;2.26077073719352;6.90457687713206;9.39341070596129;0.606947327032685;1.21062601916492;-4.71252759918571;7.55131305661052;-1.03266155812889;-0.00349230132997036;9.07334731891751;-4.4279914861545;-7.25856069009751;5.14303853269666;1.61175615154207;-2.59391250554472;-3.16036144271493;2.93107841629535;-0.960731622762978;9.26685845479369;-5.71439674124122;3.57607674319297;-7.24905188195407;-1.20369793381542;-2.28288420476019;-2.32572861015797;4.18264000676572;-8.89962213579565
+6.44564392510802;-2.67384049948305;-6.57741490751505;0.873691309243441;1.63998847361654;0.291062043979764;9.64715232606977;-5.1813497999683;5.24666407611221;8.71679187752306;-9.98080814257264;3.93201538361609;-7.9631683556363;-2.65321439132094;-4.66331230010837;-3.79923573229462;-7.11350915022194;-7.17976265586913;2.2050014231354;9.2135170288384;-0.345449117012322;-1.29826918710023;3.39615950360894;3.26544479932636;-7.86760402843356;-7.43265011813492;2.17560122255236;-4.38948880881071;-6.64937370456755;6.1180602805689;6.9541593035683;-1.10468006227165;9.63865716475993;5.47907536383718;2.90935065597296;-3.5374956484884;-3.38090053759515;7.03624990768731;-7.68724595196545;-9.20749126933515;2.20215589739382;-8.90778907109052;2.5832800893113;-3.22003698907793;1.41440861392766;-8.98586420807987;8.5658928565681;4.84592974185944;-5.76722124125808;6.97718877810985
+8.67946958169341;3.4833551151678;-6.61140421405435;-7.07610000390559;1.829729443416;-9.24187393859029;3.36165560409427;6.84402123559266;-6.50880533270538;9.45837174076587;2.93337886687368;5.68558517843485;7.30419246479869;-0.949981212615967;5.77722899150103;5.41540766600519;-3.28222951851785;-8.92962900456041;-7.14013548567891;8.1407381221652;-6.33846293669194;7.74697369895875;3.80557643715292;9.17136916425079;6.38030983973294;-8.02773985080421;-7.7870996389538;-5.57869080454111;9.01879916898906;7.07253214903176;-3.13018032815307;3.01929673645645;-2.55415711086243;5.59011637698859;-5.42114949785173;-8.56278161983937;7.7506029419601;-8.22441546246409;-2.72874669637531;9.92303123697639;1.04252211749554;-4.46220649406314;9.40187325701118;-7.35281874891371;-9.42508724052459;7.60752508882433;-6.13356879446656;-1.17443501017988;-8.65507181268185;-3.50855915341526
+4.31603640317917;6.0983418719843;7.98001465853304;9.702383056283;5.788449421525;-9.6992511022836;0.751671520993114;5.72402642574161;-6.56086623203009;-8.14781580585986;-8.5026995325461;-2.06920829601586;-5.88958289474249;4.15790643543005;-2.98511558678001;1.23632055241615;-2.84400852397084;2.98509567510337;-8.58745833858848;9.20195610728115;0.562871862202883;-2.37032048869878;7.28774977382272;-7.48539788648486;-0.369366519153118;8.68970898445696;-5.99870771169662;0.12819800991565;-2.7592148212716;-3.52074214722961;-5.54994197096676;-9.96846592985094;-2.69346251618117;-3.77527982462198;9.45722617674619;-3.53874537628144;4.85570863820612;-9.82899568043649;-0.415683682076633;5.33842940814793;-5.66485447343439;6.36788605712354;4.50477785430849;1.23192914761603;9.39458650536835;9.01956884656101;1.58383049536496;9.77645097766072;5.42337217368186;-1.64176743477583
+-7.70350125618279;-3.97380971349776;5.19960747566074;-4.38791948370636;-6.18224503938109;-1.38662185519934;-6.87152039259672;-6.53129175771028;-1.60215020179749;-2.25635383743793;-7.85844179801643;-2.94027282390743;3.59643143601716;-1.05072289705276;-7.3486432665959;2.34560098964721;9.52078453730792;5.7729694340378;-7.6778070628643;8.15683328546584;-3.83751065470278;7.52963287290186;-1.1687992606312;0.276584876701236;2.21786157693714;-3.40146514587104;5.74855008162558;-3.05644544772804;5.57827578857541;-7.85069631878287;4.71743633039296;-1.85468953568488;-3.62996686715633;-7.49863925389946;6.72275467310101;6.55893434304744;1.38782521244138;-7.29690986219794;-4.08515234012157;-3.28261086251587;3.1795342033729;-6.70219963416457;-5.67374413833022;-5.46678576152772;-3.88363015837967;8.95233920775354;1.10723451245576;9.51496082823724;-4.69101608730853;-0.641343691386282
+-3.01660002209246;1.45672439131886;9.26492777653039;6.76532477606088;4.93312164675444;-9.71387037541717;-1.7236199695617;-3.13005869276822;3.71414421591908;5.10014091152698;-2.57677298039198;1.06030837632716;5.61166736297309;7.12506202049553;-5.98703466355801;3.27553170733154;-2.92409309186041;5.99079445004463;-6.27334316726774;4.07736709341407;8.37334704119712;6.49388709571213;6.6476108552888;0.31770896166563;-8.63144996576011;-3.38424392510206;8.78036736045033;-8.76805676613003;-7.95680356677622;-5.66444766707718;-7.04771209973842;-0.575602208264172;-3.72760799713433;0.140035417862236;-1.7646492132917;-2.29670417960733;-9.10904937889427;-7.24782139994204;0.578272799029946;4.0816215518862;7.4180217878893;-0.82949644420296;6.29716033581644;-5.84553353954107;-9.48206776287407;-2.58682204410434;1.7833018116653;-9.44248476997018;6.72979204915464;1.25874545890838
+-0.968155134469271;-9.74141770042479;-7.05993589479476;-5.17030370887369;8.56228229124099;3.92250423785299;-0.611011045984924;0.560200847685337;2.19031152781099;4.26236295606941;1.64454696234316;7.0933645311743;-4.24920218065381;-4.49704595841467;1.59333191346377;3.64248533733189;4.06391128897667;-2.54951938055456;9.52573374379426;9.26327783148736;-2.27688841987401;2.9169437661767;8.22059568949044;6.30496629979461;-2.6478282827884;5.66981447860599;-9.79285966139287;-2.37170448061079;-5.68320056423545;0.948180835694075;0.836768881417811;-0.44257752597332;-5.82661182619631;2.94687433168292;4.54121169634163;5.6615513144061;-7.44719040580094;-2.13804463390261;9.17932700365782;9.71507846843451;4.71086319070309;-6.0439985897392;-1.21700365561992;2.51805744599551;-4.73503059241921;-0.702986340038478;-0.530005060136318;-1.06266265269369;7.58586215786636;-2.78813234064728
+6.54849174898118;-5.48024521674961;-8.80801967345178;-4.97434516903013;-8.97798938676715;-8.13921663444489;7.79057358857244;-4.92758466862142;-8.96299715153873;7.0149612845853;1.65525004267693;-3.3864088403061;5.10832054540515;-8.54629247449338;7.88175765890628;8.09862166643143;-9.34647041838616;4.80559871066362;0.643347804434597;2.8486593067646;7.45202360674739;-3.96409636363387;3.6317504523322;-6.40108341351151;7.1136472793296;-0.852550878189504;5.49494010396302;-9.87808970268816;-1.93337360862643;-7.07048228010535;-6.85454066377133;-3.13814197666943;2.81180259771645;3.43344273976982;6.66089128702879;7.37658593803644;-1.7637436138466;3.00499432254583;3.77536722458899;3.76540400553495;8.5193853545934;6.46603471599519;-3.27413973864168;-9.66023569460958;-6.58100315835327;-2.71160370204598;-2.91160366497934;1.84891270939261;-4.92941492702812;2.80114682856947
+-9.8991023702547;3.7187577271834;2.89715076331049;3.76410324592143;-2.79186184518039;0.985185257159173;4.51631876640022;8.63946678582579;8.97443400230259;0.815915786661208;0.323176975362003;6.19003171101213;-7.99652709625661;-0.540122599340975;-4.34675545897335;-2.63473640661687;-8.23910658247769;1.55794673133641;5.77052873559296;7.93065783567727;4.9055531155318;-4.65001706033945;7.57577848155051;-9.84663463197649;-2.44930846150964;-5.7598017482087;1.59259426873177;-4.8119123885408;6.22960763052106;6.35174436029047;-1.97489832993597;3.00289826933295;-4.22831402160227;-8.37135300040245;3.29280649777502;-5.84636874496937;6.50214368943125;-5.94331404659897;5.72140318341553;8.31790511962026;-0.472692037001252;-4.88601249177009;-5.93602196313441;0.486243888735771;2.91842703707516;-5.78088595531881;9.88578847143799;-3.32651604898274;8.34018607623875;9.41798688378185
+6.21535782236606;8.9913742011413;7.3069722019136;-3.24242390692234;2.28417357895523;1.61046010442078;-3.42379455454648;-4.53583050053567;6.29269937518984;1.15790827199817;-5.71249465458095;4.29609895218164;7.04723381437361;3.34432796575129;-3.1974043417722;-8.79461012315005;-6.16035570856184;-6.78182761184871;-6.1549559654668;8.157286955975;-2.00474317651242;4.8566575627774;0.587738272733986;8.36131731513888;2.58451645728201;-9.8491968261078;-3.87371752876788;-4.95025091804564;-7.38070774823427;-8.73016642406583;2.53677364438772;8.26612140983343;-1.8457227293402;3.63014731090516;7.66145219095051;2.10839924402535;9.79618756100535;8.05180001072586;8.47972913645208;5.47904858831316;9.76528415456414;8.18380524870008;2.53081917297095;-0.014072391204536;5.0726196821779;-9.75518371444196;-4.04100209474564;-4.51086671091616;-3.75912470277399;4.43632322829217
+8.54544773697853;-4.95790643617511;-5.45758763328195;-2.65031752642244;-6.13025578670204;-0.59348801150918;-9.47580080479383;-9.22369475476444;-3.87583303730935;-0.996413170360029;-5.87419266346842;3.39770489837974;8.38985246606171;-1.88056175131351;-1.46427852567285;-0.689136725850403;-5.90340529568493;-4.79490731842816;9.15241351816803;6.43395402934402;-6.40263932291418;3.46855591516942;8.63541206344962;-7.10804822389036;8.11535490676761;3.99622148834169;-0.33051532227546;1.3372342986986;1.65199672337621;9.19014530722052;8.41630812734365;-8.00682168453932;7.05095378216356;-6.7642316268757;7.68582740798593;-5.62167691066861;9.02140699326992;5.15163673087955;2.6410766504705;-8.5003059450537;2.06032627727836;-1.99138996656984;1.279710046947;-6.89036693889648;-8.10407501645386;-4.69780416693538;-4.61272101849318;7.95214945450425;-9.1536878189072;-3.82358233444393
+5.38710033055395;4.5241325115785;2.92926379479468;6.13213381264359;7.20892962068319;3.19070463068783;-9.94835214689374;-0.245730681344867;-6.89682730939239;-9.86004324629903;3.14389394596219;1.41429916489869;5.48684432636946;2.25366476457566;5.44235370121896;-7.55124946590513;3.93249257002026;-3.27343479264528;4.8891808046028;2.47596741653979;0.0242107268422842;-6.9871360482648;4.95478892698884;-3.64574478473514;8.49375510588288;1.99613568373024;-8.21902429219335;2.14303491171449;-0.333655024878681;-5.85453356150538;-4.09627993125468;-5.79990521073341;9.9706591758877;-3.22228979319334;1.61897731013596;-2.76993614155799;-6.69637855608016;8.73208443634212;8.48460561595857;-2.01892691664398;3.13120614737272;-2.94637120328844;-2.48550499323756;8.74936764594167;-4.72120466642082;-0.35140688996762;9.37875682488084;-8.64086464978755;7.39585579838604;2.83942918758839
+-0.277742655016482;6.49507964961231;0.0427414989098907;-9.86721075605601;6.00174880120903;-3.0392463831231;7.55616521462798;-8.52356114890426;-1.18136951699853;-8.9992003235966;8.41556896455586;-0.719336937181652;9.82025291305035;-2.60474751703441;-7.00007952284068;9.91166374646127;-6.60728700924665;-4.72326859366149;-4.0532791800797;-1.59698917530477;2.49414374120533;5.15104410704225;-9.87231359817088;8.56129843275994;-4.42077559418976;-6.07007850892842;-6.73033447004855;2.5694218557328;4.14372336585075;2.03120285179466;5.67284445278347;-2.28329448029399;-9.27673916798085;-7.87727477028966;2.69829825963825;-5.07535051554441;-4.5623538736254;-1.39423212502152;-5.7856589416042;-6.95092563517392;8.62163309939206;2.98448394518346;4.3307153088972;9.55673456192017;0.360611877404153;4.08728231675923;1.64149705320597;-8.67866774089634;-1.95386708248407;-2.06305974628776
+2.17067448887974;-9.57589868921787;9.85634818673134;-6.63288117386401;0.309270545840263;3.75291007105261;-7.22512705717236;-5.39875577203929;8.94933057017624;-8.39201361872256;-0.727223213762045;-2.72072898223996;-0.975302844308317;-7.10717065725476;-4.45589861366898;-0.683130254037678;8.68529470171779;3.3385516423732;6.70067880768329;3.85663856752217;-8.48860471975058;7.02364462893456;-7.9317791480571;-2.81490166671574;1.64826075546443;-6.36258098762482;9.71521446015686;-9.13466441445053;7.06956060603261;2.8776582935825;-7.84561533480883;-6.48961248341948;8.75900006853044;-5.2334088133648;1.64134445600212;9.54355244059116;4.33853960596025;-9.53843520022929;7.523981356062;-5.16683623660356;-1.72559796832502;-3.51350012235343;3.0763698508963;-1.62185428198427;-2.02345695812255;-7.62055523693562;1.7609107401222;1.51798068545759;-6.99411939829588;2.1988278767094
+3.41142809949815;-1.13492716103792;-6.34183189831674;4.19649858493358;-6.10920543782413;7.90835531894118;7.41302538663149;0.891136266291142;9.72103329375386;4.94559880811721;-3.25810594018549;-7.1707166871056;-9.27478119265288;-9.04625846538693;-4.80379967484623;-7.06472716294229;-6.92422637250274;7.81909159384668;2.90488606318831;0.0998770445585251;-1.47128882352263;-5.80453521572053;8.24956396128982;4.79573211167008;5.28941491618752;-7.50585825648159;-3.05766843724996;2.38307071849704;0.0173642765730619;-5.52582597360015;0.315820365212858;4.62422240525484;8.62031231634319;1.60615558736026;-5.13704173732549;-6.51393581647426;-4.34861003421247;-7.5337178632617;-3.79813568666577;2.68615590874106;-1.77287216763943;5.11539303697646;7.84194942098111;9.50034199748188;-9.23877334222198;-4.18160686735064;6.74618884921074;-1.86243458185345;7.32904070522636;-6.79613776039332
+-8.70074650272727;-6.948007424362;-2.04103160183877;-2.14950171299279;-0.62429279088974;-3.25313493609428;5.66892423667014;2.98211205285043;8.92996797803789;0.15941746532917;3.64660972729325;0.259552183561027;-0.530556882731616;-0.880140876397491;0.713998782448471;5.3278486430645;-6.35190832894295;-8.74496302567422;3.57483381405473;-1.7408639844507;-1.59563273191452;-2.66657172236592;-5.14071884099394;2.72406151983887;-9.39745854586363;-6.10989885870367;-8.2845009630546;-9.15288002695888;-3.3389636920765;-3.60277211759239;-9.19061058666557;-3.38315000291914;-8.39763905387372;8.95165974274278;-6.80744574405253;-4.68849152326584;-9.68822959810495;-6.28772452939302;-4.75675612222403;4.63357742875814;-0.697172619402409;-9.50365241616964;0.163982142694294;0.0961073115468025;-0.258643515408039;3.14315177965909;-6.73955151811242;6.62028905935585;-0.869519119150937;-9.37773948069662
+-6.93034023512155;7.067985907197;-1.85044622980058;-4.77439039386809;9.39024893566966;-8.96815827582031;7.02385758049786;-2.73540872149169;3.93253676593304;9.78195562027395;7.81248951796442;5.11255661025643;5.29051839374006;4.53508305363357;2.88503857329488;3.76037651672959;-9.42541466094553;9.56689503509551;-7.63008336070925;-6.72701247502118;-4.98090384528041;-0.62778711784631;1.59753437153995;-7.93602412566543;3.54676278773695;0.468317833729088;-8.96917895879596;5.03638572990894;-7.88049203343689;-4.89850124809891;3.09973037801683;1.38685770332813;3.87126866262406;-3.79360884428024;-0.557143767364323;5.24206825066358;3.77614070661366;9.39473863691092;-5.17108213156462;-5.16031304839998;0.153391030617058;-7.54477693233639;0.556641928851604;-8.22449180763215;-6.65215369779617;3.57868634629995;-6.72275126446038;-2.47677918057889;7.57447514217347;4.70409241970628
+6.85111835598946;-9.21209653839469;-2.01732572633773;-9.32181288953871;2.71641222760081;5.51847536116838;9.14054713211954;3.34488157648593;-8.64911175798625;-9.2027387721464;7.80456039123237;-0.5020642420277;-7.66371973324567;-4.97844972647727;8.68713399861008;6.76838885527104;3.12923659104854;4.24935601651669;3.25819509569556;-2.05173585563898;5.2677529072389;-3.0833692708984;-5.67121701315045;-9.71485385671258;-4.51671163085848;-6.48276884574443;0.0432546995580196;6.62306156475097;-1.66263627819717;4.71571189817041;-5.48839549999684;-7.45748846326023;-2.07703122869134;-2.23012984730303;4.41261335276067;8.399747624062;-9.33382574934512;-0.491064381785691;-7.10640012752265;7.70891197025776;-6.6482143336907;-3.86045361403376;8.73167912941426;8.6726563051343;-6.44173853099346;7.54286439158022;5.94765002373606;-3.24252856895328;-9.50267767067999;-3.5325232334435
+1.15791859105229;-3.56976653449237;-9.25281628035009;-6.18618804961443;2.96332268044353;3.5133292619139;-6.5550865419209;-1.11682076472789;-1.0300366114825;7.61911478359252;1.76861288025975;-3.06797217577696;6.61041747778654;-6.22702968772501;4.84298333525658;7.94914052821696;1.03190562222153;8.93794980831444;0.197952268645167;0.46409978531301;1.34532960131764;7.95580376405269;-9.70410351641476;4.02495271060616;0.674524949863553;-9.93090648204088;9.55908120144159;-1.15928896237165;5.39703932590783;6.69171602465212;0.811182814650238;3.25706950388849;1.14829120226204;-2.6338558876887;-4.94175132829696;-3.37647691834718;-2.65148676000535;6.48871270474046;-1.66211509145796;5.80398735124618;7.05200992990285;6.46019583102316;4.95955741498619;-9.51690160669386;3.03950681351125;6.05556068010628;5.15176194254309;7.92760123964399;6.96420246269554;-5.81099713686854
+-0.514624682255089;-3.6003744462505;-6.83733629062772;3.13942701090127;2.44363521691412;4.82769627124071;-8.18094795104116;3.43111460562795;8.88389486353844;2.28895436506718;9.23732921481133;4.61860691197217;9.81584092602134;-6.57457135617733;5.04224746022373;1.30633255466819;-6.79801226593554;-8.29599210992455;6.09762378968298;5.92686200980097;-7.50510568730533;-5.91346404515207;1.18590955156833;9.75728630553931;-7.33045813627541;-5.45284091960639;8.85127836372703;3.54462676215917;-9.61092894896865;-6.54284448362887;-4.33948844671249;4.04227792285383;-1.00302690640092;-1.60935539286584;-7.01356111094356;5.79337101895362;8.61724014393985;-1.94977133534849;-5.53239761851728;5.71754884906113;-3.04699057713151;-3.14381502568722;-0.459334612824023;-7.68144058994949;5.84648699965328;4.41845816094428;2.78657690156251;-8.62998094409704;-8.17904158029705;8.30148515757173
+-0.969148315489292;7.0290537411347;1.39857622329146;8.41864227782935;8.71982920449227;2.02023581601679;0.550630218349397;-8.80440297070891;1.85677129309624;-9.90758516360074;-1.94169008173048;6.23128797858953;9.49715143069625;-2.64922167640179;4.65959071647376;-9.26824997644871;-2.19056308735162;4.14649166632444;6.94530078209937;4.44423614535481;6.28586205653846;4.8786844778806;3.82324586156756;0.328818839043379;5.13078054413199;9.89701275713742;8.42173884157091;-0.952080572023988;5.83382822107524;-8.27664421871305;-0.870528961531818;-6.0221798857674;0.418369569815695;6.01458748802543;-7.55613657645881;6.1758108669892;-1.70585083309561;4.97558487579226;-1.7530301027;-4.67699096538126;6.32661230862141;2.26053401362151;-3.02717692684382;7.00751515571028;-3.69367125444114;-5.13270919211209;-2.94111131224781;4.34500259812921;0.849223360419273;8.88291218318045
+-3.56436772737652;2.9878376564011;-8.07274385355413;-1.26747969072312;-9.5178015017882;-2.26492417044938;-8.15276972483844;5.71841089054942;-9.04424853622913;-7.22491390071809;-4.74400103092194;-4.95507249608636;0.198484328575432;5.85707894526422;-7.28596075437963;-3.12663908582181;3.77642373088747;-2.84982516430318;6.15959104616195;-9.93403933476657;-5.4606921877712;-3.65827389992774;-2.48365051113069;9.29696749895811;-3.38648021221161;-6.44795887637883;-7.35712938010693;-4.89157258998603;0.200851778499782;8.67296358104795;7.42950724903494;-2.97261194791645;-1.44470657221973;-1.9632272189483;8.71068435255438;5.23390575777739;6.7308060452342;7.1362202661112;-6.97609317023307;-1.85509336180985;-4.56354479771107;7.20855776686221;-6.05786783620715;5.25104318279773;-6.94182708859444;-8.45826979260892;1.9722020579502;-3.80140669643879;-3.83920757565647;-5.07485061883926
+5.59648144524544;0.68161629140377;-8.94478471484035;-1.30299435928464;3.47748900298029;1.71523602679372;-4.22266541980207;2.48739044182003;-4.56443545408547;-3.18587770685554;1.29874385427684;-9.04682640917599;4.56543426960707;9.51193175278604;-8.23197796475142;3.37396290618926;8.11167258303612;6.35610398370773;9.05977683141828;9.71156071871519;2.14268277399242;3.60671655274928;-4.15018137078732;-7.04358570743352;8.47935509867966;2.16851933393627;6.98211905080825;1.98495294433087;-8.26164586469531;-3.49385571200401;4.29377673659474;-4.93103204295039;9.67715637292713;-4.38142008613795;-7.246632585302;-8.68860371876508;0.179215455427766;-7.62778594624251;-7.4869047710672;0.860944525338709;4.13751086220145;-8.99184851907194;2.39331068936735;2.87443690001965;-9.5428165094927;8.28305366449058;-1.68342226184905;7.99106395337731;6.14128963090479;5.26968685444444
+9.08629323821515;-6.00818364880979;-2.03405281528831;-7.48261235188693;-6.05562220327556;2.92229162529111;4.8480359185487;-3.72120348736644;0.151694542728364;-5.57192062027752;9.17522354051471;2.73642494808882;-4.27096295170486;-1.71373880468309;1.02244019042701;-5.54012804757804;-4.21687328256667;7.9675763566047;4.00897512212396;0.6373401125893;-3.51458796765655;5.42838950175792;-6.55675900634378;8.83823245298117;5.42234464548528;9.2211599368602;-5.27656737249345;5.35819419659674;-9.44324722513556;8.78078414592892;2.24646658170968;-4.20931151136756;7.62308788485825;7.36622615717351;5.45118854381144;-4.54676821362227;4.54360076691955;6.55411649961025;-9.93329391349107;-2.58235051296651;7.02524564228952;-6.32011633366346;-9.94727465324104;-2.68965356517583;6.07665463350713;-2.59474551770836;-5.60289376415312;5.74922123923898;1.21538883540779;5.62217375729233
+2.63926642946899;-3.48635534290224;4.63807919528335;-9.16498122736812;-7.19137615989894;0.782325644977391;6.05603780597448;3.60719146206975;9.29027878213674;-3.4073520777747;-6.44959800876677;-3.58361105434597;8.1047109188512;2.0218428876251;0.602213838137686;-8.59269950073212;7.59629425127059;-0.478752478957176;-2.31057300698012;-3.35026779212058;3.81833601277322;3.05769986938685;9.49482336640358;-1.00546735804528;-9.76169793866575;-5.81943580880761;-8.02128785289824;3.0841301754117;1.02182132191956;-2.94893626589328;3.18366916850209;-9.91123924963176;-5.87786647956818;-1.70958464499563;5.93543269205838;4.03540784493089;-0.930717890150845;9.48192656971514;9.79068549349904;-2.18421835452318;4.50411227531731;-7.23519864026457;3.34141975268722;-3.63061067182571;8.13959081657231;-0.158622926101089;2.54901580512524;-7.57270279340446;4.49353096541017;-1.31516555324197
+-3.61516498960555;-5.26189937256277;5.07877815980464;-8.23543624486774;4.15301690343767;-7.41085326299071;-4.06056290958077;-2.71653216332197;8.67766286246479;8.30005414318293;-2.42591871879995;-5.36010504700243;-9.91310347337276;0.0863928999751806;-9.86123410984874;-3.88429845683277;2.72369846701622;-6.99051297269762;1.94289575796574;-9.19626949355006;0.725263352505863;6.80708915926516;-6.97365087922662;4.6072335075587;-1.54503578785807;-0.0537946028634906;2.72572461515665;2.91556777432561;1.81311980355531;8.10370047576725;2.636080943048;-7.85005915444344;-5.87876802776009;-1.14872858393937;-1.61490581929684;1.53595589101315;2.19502593856305;6.77391332108527;-1.0335495043546;-5.17002992797643;-5.63528732396662;0.872366740368307;6.08526663854718;-0.26201150380075;-6.97918451856822;7.10332767106593;6.10918307676911;-3.19054721388966;6.00346125662327;1.59105264116079
+-1.8311863206327;-6.74529477022588;3.02414978388697;-9.47040408849716;5.41907732840627;3.04177694022655;3.00636054482311;-4.0458494098857;2.63025599066168;9.17775240261108;7.42097159847617;-1.08546697534621;-2.35953886993229;0.513823390938342;8.79628949798644;4.41538565326482;-4.74448594264686;-5.76205251738429;-0.245502856560051;3.91950414516032;6.14804762415588;-3.22915533091873;2.37071781419218;4.21646641567349;-6.75198063720018;0.395384184084833;0.9042255487293;1.73257764428854;-2.49926630873233;0.235687377862632;-6.1609226744622;-6.37691811192781;-2.20666754059494;-1.93354498594999;-7.77323364745826;9.81373854912817;0.734481709077954;-2.98589302226901;5.35986911971122;-1.24902879819274;-5.77135204803199;1.62975768558681;-2.91918267961591;-2.5617987010628;6.33228154852986;-3.44446306116879;-2.31512944679707;8.42078708577901;-0.372694986872375;7.79288818128407
+-9.9968913057819;-4.08906517550349;8.49662301596254;-8.0013120546937;-6.69060134328902;9.96386567596346;7.15944093186408;3.11702438630164;2.44685144629329;-3.77987907268107;-1.03799988515675;-0.609709280543029;2.23080033902079;8.21432246826589;8.15047500655055;6.95821544155478;-1.40572688542306;1.09425755217671;-5.54005865007639;-3.02802296821028;3.89913749881089;6.44445454701781;9.10305547527969;7.45030640624464;8.41519098263234;9.5596327399835;2.17597109731287;-6.27848902251571;0.73685422539711;2.75593811646104;-9.75031835027039;3.20047008339316;5.89837131090462;2.12909632362425;-9.01182347908616;5.49312581773847;1.56863276846707;-3.58898811973631;-8.90042546205223;-4.89331224001944;4.76471369620413;-2.07614230457693;-9.93023096583784;-7.81164357438684;5.35083097405732;-2.07508448977023;-1.22860996983945;-5.82287763245404;9.63483445346355;-9.94631655979902
+-9.20690337661654;-4.87609037198126;2.36908451654017;-7.01290716417134;-8.27917313668877;-0.580415511503816;7.09634688682854;9.3332193326205;2.01802468858659;-9.14500421378762;-1.00027617998421;-7.27859733626246;-2.33737151604146;-7.29078019037843;1.10894088633358;-3.19147808477283;5.26237807236612;3.35211993195117;2.8360338229686;1.74350833985955;-6.97067487519234;-0.991746606305242;-9.54823082312942;-7.46350964065641;-5.62542609870434;-4.31366593576968;1.60380837507546;7.76801513507962;-9.32136774994433;6.12855676561594;-1.37882949318737;8.82770906202495;8.02834565751255;0.067402021959424;-5.44691354967654;9.35673906933516;8.61434472724795;-4.16677474509925;-4.88795991521329;-4.11107582971454;8.59618469141424;6.76560894586146;-5.03881849814206;4.25956691615283;-9.13227781187743;-4.69291769433767;-8.22906301356852;-2.69651089794934;-7.49057369306684;5.71623909752816
+-5.72288321796805;0.325224143452942;-5.76548724900931;3.16331430803984;-2.03082147054374;5.44173903297633;-4.66799199115485;8.93294293433428;7.5018798885867;-1.56950543168932;8.0705145187676;-4.82245516497642;-3.50313008762896;2.45314280968159;9.12769857328385;9.20804996509105;-1.03438198566437;8.80594124551862;2.13365591131151;6.08515456784517;-4.58063945639879;7.17903611250222;-3.71484014671296;6.41030041035265;-3.49147737491876;-9.34932172764093;-1.63496344350278;3.83788582868874;-2.11876887828112;-8.26930981595069;9.70879747066647;-9.37871498987079;-1.49549610447139;2.95847463887185;1.10145362094045;8.92993279267102;1.8330845143646;-0.685432706959546;-8.19635324180126;-5.12762856669724;3.42035803478211;-5.1728872815147;8.0490801949054;4.05253827106208;1.38873771764338;-5.81306250300258;-5.21244052797556;0.951820844784379;7.06457456573844;-8.62530542071909
+9.7140674572438;-0.0161504140123725;2.57568429689854;9.48514162097126;-7.46677849441767;8.18275235127658;-6.50854687206447;1.6474270587787;-7.45352650992572;7.91962017305195;-7.71219177637249;8.93195684999228;0.03971460275352;6.27375605516136;-4.91619557142258;-5.27931916061789;6.28579484298825;-5.98096042871475;5.71865316014737;9.55906458664685;0.613134056329727;6.87623593490571;-7.18028963543475;0.352699630893767;4.62328164838254;1.78207905497402;-7.24611462559551;-3.82353330031037;-5.37262629251927;-1.66675174608827;-6.65102636441588;6.2209722911939;-7.93403944000602;-5.45542862731963;4.13200833369046;-3.09232181403786;-5.33080773428082;-8.26500259805471;9.06428879592568;3.93776691984385;-4.73602035548538;3.62852405756712;2.56922538392246;5.70067520719022;7.06678818911314;4.1706877714023;-4.81026605702937;5.04214215092361;-5.91114264912903;-4.15528997778893
+8.389075207524;-3.60078829340637;-6.77056359592825;4.34982114471495;-5.40710287634283;7.66361061483622;-3.94581720698625;8.50605284795165;9.6662818454206;-0.374799091368914;5.92729905154556;-7.96580001246184;-0.396952982991934;0.520286220125854;0.846534119918942;1.36754395905882;9.03859289828688;8.17431956529617;8.43488112092018;7.67859247513115;3.78546926658601;7.08975734654814;-6.94305814802647;4.7898716153577;8.52318871300668;7.71236596629024;-9.22557928133756;-8.40972180478275;-7.06137529574335;-7.4639192642644;4.93178401142359;1.72697820235044;-9.65200442820787;7.92222713585943;-3.00831816159189;-7.79680773615837;-9.06708436086774;-4.55802915617824;9.68829355202615;-2.80980451032519;2.7354819374159;9.26521672401577;-9.46400971151888;-0.927567784674466;-1.34482190478593;-5.80059734173119;2.50153325963765;-5.21875993814319;9.45028357207775;-9.53726762440056
+7.42237744387239;0.674435365945101;9.73260939121246;-0.512775909155607;-4.5600782521069;-3.06555196177214;5.97134187351912;-8.28357793856412;0.864027463831007;8.10732272453606;-9.58701376337558;2.54408415872604;-1.33316815365106;-1.4212964149192;-0.585657148621976;-5.09066503029317;-2.62450214475393;7.98188296612352;1.87461807858199;-0.56466493755579;-5.79482825472951;-1.79534981027246;2.16769330669194;-5.65398706123233;2.10429414641112;7.92378368787467;7.90083386935294;-3.35318072233349;3.16728893201798;-7.9271261068061;-9.86281040590256;-7.55230008624494;-5.40386028122157;-1.15300202276558;-2.98329431097955;-5.7738835318014;-4.67683780472726;7.31508396565914;-3.58992267865688;6.60105891991407;-2.86596473772079;-0.869922954589128;6.00930977612734;-7.74542072787881;-2.17139226850122;1.89493245445192;6.93357979878783;5.53906913846731;-3.0712346220389;6.67658575810492
+-8.15200243145227;-1.56990354880691;-8.65159855689853;-3.46754433121532;-9.33221948333085;-2.5171528942883;-1.12540043890476;-6.56648315023631;-9.43395493086427;6.1103944061324;1.80917422287166;-8.1636385852471;9.78718451224267;-5.7775535620749;4.9179901368916;8.10492993332446;5.59462263714522;-0.243776543065906;2.00799540616572;-5.55205207783729;8.06583961471915;0.443116654641926;3.08147839736193;-6.74062156118453;1.5821419749409;6.50796928908676;-6.60798935685307;-0.501539646647871;0.774376392364502;-6.23698879033327;9.92068173363805;-2.74543696083128;-0.102093238383532;-3.60286995302886;-3.79136404488236;-5.43700770009309;5.60333411209285;-2.89744427427649;9.36700220219791;-3.35135591216385;-2.68276723567396;-6.4352527493611;2.44132371619344;-1.54554918408394;2.50760117545724;-1.10213391017169;2.31955316849053;-3.18546535912901;-8.92137648072094;-4.72537727560848
+0.266582751646638;7.41030978504568;-0.295420573092997;3.97390636615455;6.08881121035665;-6.81731712538749;7.53329935949296;3.60289933625609;8.15554866567254;3.65468562114984;4.69545113388449;-1.63537338376045;-5.38754866924137;-0.0305571872740984;-4.83596207108349;4.09054569434375;-0.0253098923712969;0.91698132455349;-2.09210307337344;6.1117547750473;-8.77724021207541;-8.40669033583254;3.07152085471898;5.511246137321;5.00595754012465;3.03831319790334;-1.9994547823444;0.390170458704233;-3.92756162211299;5.03047222271562;4.75308910012245;0.478049018420279;-3.450682843104;-3.71787153650075;7.48186964076012;-1.34245234075934;-0.74814910069108;0.0773549173027277;-0.10600149165839;-3.43844595830888;3.15512147732079;-8.25181344524026;3.05799363646656;-0.847960156388581;1.71675940975547;2.77502507437021;8.49833187181503;9.47071284987032;-5.6726202648133;-0.786988083273172
+-9.12079828325659;-4.83928014989942;-6.14141302648932;-5.00621873885393;-9.63167583104223;-8.55401612818241;5.24924353230745;8.57286246027797;9.20960722025484;-0.416921782307327;2.88629315793514;1.41942766495049;-6.37616125866771;9.60828610230237;-6.66466498747468;-6.99464292265475;-3.62294318154454;3.03401398938149;-0.314482226967812;-0.664902627468109;-2.41442902479321;3.82167611271143;4.73002382088453;-8.33908590953797;6.439249352552;-6.99142186902463;9.81456888373941;5.72861298453063;3.85985675267875;3.46844958607107;7.49977088999003;3.72457149904221;-3.74832312576473;-0.0453486246988177;-7.43971921037883;-3.9290847722441;8.27379230875522;8.46238985657692;1.81584601290524;2.62284752447158;6.57820523250848;9.76105397567153;-3.45553074032068;7.97009297180921;2.11688261013478;8.00091157667339;5.79071769490838;-9.50876102317125;-7.75948914233595;-6.93583616521209
+1.06734992936254;-4.66686605941504;-6.97254315949976;-2.06232264172286;6.88083598390222;-8.5072385519743;-7.5264786509797;-9.11126621067524;-5.49083237536252;4.75231144111603;7.07686661276966;9.1340512689203;8.78906883765012;4.97879057191312;-1.29120536148548;-4.16300807613879;-6.89381652977318;4.41110711079091;-7.23677867092192;2.05260054208338;-8.2057486474514;-5.18655605148524;-4.42477460950613;8.61399848479778;-0.92333264183253;-6.03845196776092;-8.8702739123255;-1.0069820471108;-0.567320096306503;9.53005773480982;-3.78811005502939;-2.59463399648666;2.99993569031358;-5.5619054986164;0.471029616892338;5.4993251664564;-9.30680270306766;-3.99859437253326;5.75771457049996;-1.2186867184937;-8.85986532084644;7.26374609861523;-0.896416753530502;-6.36119248811156;2.61567273177207;2.64561051037163;5.50860541407019;3.95400266163051;5.52712457254529;0.458679627627134
+9.04347927775234;0.925111793912947;-6.5890140645206;-3.97142501547933;7.47535032685846;5.29497373849154;-5.76514535117894;1.28704437520355;-0.285980557091534;5.42957017198205;1.40569214709103;5.86907400749624;9.6838612947613;9.96016904711723;-0.19122030120343;4.43207967560738;1.42021753825247;2.08361527416855;0.223106383346021;-4.04741070698947;-7.44351265020669;-5.36971309222281;-9.02599108871073;-9.15283886250108;-5.94819627236575;8.29199259635061;-1.49331769440323;0.65075094345957;-0.0865436811000109;-5.8230308862403;-3.9649027492851;-3.10827291570604;2.32920923270285;-1.57697084825486;-9.31980202440172;-1.77909384015948;9.37151326332241;1.23671074397862;1.14657157566398;9.8870027763769;0.346198319457471;4.54211007803679;-2.76287849061191;-4.59310674574226;-5.68911477457732;-1.54175722505897;0.496689351275563;7.14857417158782;7.40511100739241;-4.42105219233781
+-9.08680622465909;-7.79974689241499;7.03489989973605;-9.6459135832265;4.08746875356883;-4.72357693128288;-1.93946099374443;-6.00670780986547;-4.07123860437423;-9.32156852912158;-9.50675596483052;1.87287672422826;-9.6614623721689;-3.21708597708493;5.29623160604388;0.861116843298078;4.16597294155508;-3.53373759426177;2.17461056541651;9.32876457925886;-5.66715260967612;-7.18429239001125;8.70856867171824;-1.70981333125383;-0.635543297976255;6.38310603797436;7.19868785701692;-9.45673872251064;9.77897406090051;7.68110088072717;-4.8440659372136;-5.72628719732165;5.98283904138952;-5.81272002775222;6.06682668440044;-0.61161866877228;0.605402104556561;5.35853186156601;3.03805638570338;-9.57998882047832;-2.06741970963776;3.7249715346843;5.1227496471256;-9.98529989272356;5.98677750211209;-0.891087404452264;-3.3382136374712;0.562720443122089;-3.11666978523135;5.64655931666493
+4.87611875869334;1.08852512668818;-2.4079489801079;4.40188338980079;1.47024405188859;8.05036503821611;8.84034446440637;-8.07246596552432;-8.85925860144198;9.19463071972132;3.17547146230936;6.6015538200736;-1.04514891281724;7.38896849565208;-3.45188729930669;5.16177063807845;-0.790461571887136;9.48610063176602;-8.95462666638196;5.19831297919154;4.48241927661002;-7.11835524998605;6.06846794020385;1.31411834619939;8.37583670858294;-3.30050981137902;9.63333849329501;1.76556742750108;6.86233211308718;5.15788461081684;-2.6012306381017;-7.71898939739913;-0.0360721861943603;1.45752762909979;2.89990332443267;-9.11636450327933;8.21356733329594;9.60271773394197;-1.60700141917914;-6.86759877949953;-6.35545847471803;-3.36100164335221;-4.45516668725759;-7.47766804881394;-2.21497938036919;3.83594316896051;8.96890766452998;5.94925688114017;2.2428995417431;-1.53576326556504
+7.40181047469378;-1.64008994586766;-0.794584867544472;4.72043320070952;-1.84851598925889;1.64312538225204;3.85024208575487;-3.07457590475678;3.41697588562965;-3.4447901789099;-1.06940753757954;-8.70463846251369;8.7803232902661;1.18252351414412;-3.86414915788919;-4.01735261548311;5.82833961583674;8.12929902691394;-6.96242501959205;-0.762195568531752;3.88705191202462;1.53270384762436;-5.3289058431983;-2.65827590133995;0.390146654099226;-3.23959928471595;-5.95534838736057;9.44494664203376;7.45560119859874;-4.27893817424774;2.0058385329321;1.58474969677627;-7.70675871055573;-3.6351725179702;-7.84597794990987;0.357371745631099;7.33296442776918;0.881194928660989;-0.750834923237562;-2.79197432100773;-2.10312145296484;8.67047500796616;7.55416033789515;7.02098547481;1.74311713315547;-3.23622269555926;3.64266584161669;-9.50140206608921;2.01616789679974;-9.34917363338172
+1.10245620366186;3.64859597291797;-5.07220193743706;1.24480245169252;8.13924977555871;8.37813265621662;-3.58717294409871;6.56430739443749;2.01543461531401;-4.01252585463226;2.75527242105454;-4.37542709521949;2.32260448392481;7.09522721823305;-9.55839208792895;2.37732416018844;1.05942654889077;0.335460305213928;-6.01041825953871;-7.44012943468988;4.70908721443266;-4.04203151352704;-6.23735384084284;-2.63758525718004;-7.36848982982337;-8.42636987566948;-8.08679717592895;-4.92481764871627;-2.78066116385162;-8.59389926306903;9.88977935630828;8.57499003410339;-6.18865667842329;8.54208169505;7.34471867792308;-0.715350578539073;5.3825487755239;-3.88392396271229;0.692569562233984;-0.513743367046118;-5.52465970627964;2.74970930069685;-6.13823329098523;-1.71621854882687;-4.82556563802063;-1.17461189627647;5.67569959443063;-9.12363872397691;6.53548595961183;-7.74526258464903
+4.03913186863065;-6.54946563765407;1.14065948873758;4.45693125016987;-4.06460834667087;-7.36742219887674;1.98994457256049;-0.842022555880249;-9.35522371437401;6.80390196386725;-8.20039347279817;-8.01288897637278;9.86960926093161;8.85850031860173;-4.841178660281;4.01107300072908;2.50096324831247;9.76120821200311;-9.83429775107652;-1.38300405815244;-0.0354667706415057;6.81137128733099;-8.25281667523086;-4.99451112002134;4.91221997886896;-1.13211130257696;0.410387585870922;-1.51419454719871;7.0557654928416;-0.523844216950238;4.17163026984781;1.45375987514853;5.3127669589594;-6.19121300522238;3.93711299169809;-5.9377861674875;1.55124350450933;-4.38080912921578;-5.76762622222304;-6.09547153115273;-3.34381448104978;-6.41591772437096;-0.575166563503444;8.81352910771966;7.7745270030573;-6.60415642429143;-7.97247717622668;-6.26513416413218;0.211469423957169;4.59759064018726
+3.3564811758697;3.76827357336879;-0.496356426738203;-1.61189121659845;-0.193452225066721;-8.6836329754442;2.47168106492609;2.15815224684775;-8.36188714019954;-4.13293316029012;-2.9663371713832;7.25894717499614;6.25543114729226;4.16441398207098;4.95523544494063;-3.48740544635803;-0.620532231405377;7.70125454291701;-2.61901085264981;-2.05719217192382;5.51767648197711;-6.39898375142366;-6.03603812400252;2.63256668113172;-6.93840724416077;8.48974390421063;7.79168720822781;-5.40354465134442;-1.37660760432482;-4.78406215086579;4.42811124492437;-2.69302525557578;-6.431242255494;1.41859598457813;-1.57821123953909;9.04024626128376;-1.58178344368935;2.92503581382334;8.12043711077422;-6.02748512756079;5.78235615044832;-3.76338687259704;-9.3774564191699;3.86143447365612;-1.87440981622785;-1.02964827325195;-9.74831577856094;-0.826059458777308;-5.54254278540611;8.47498255316168
+6.51625304948539;-9.12596761714667;-3.56085025239736;-7.04036152921617;8.73255136888474;6.10968403052539;-5.28272980358452;-3.01782671827823;-0.801769951358438;3.15723386127502;-0.881542363204062;-4.26154263783246;8.88829582370818;5.07151897996664;2.29239782784134;-6.05529396329075;-1.78706293925643;-4.65817524120212;-6.99612620752305;7.87806522101164;-8.3407814707607;2.61227265000343;7.05759965348989;-6.8669834593311;-3.58061105944216;-8.18982965312898;-9.47686187457293;8.34288404323161;7.99825679976493;8.97779501974583;-1.28743418492377;-0.508785150013864;2.22761468496174;-5.13516517356038;-8.94523833412677;-2.80339382123202;-1.69986235443503;9.81163020245731;-0.415959972888231;-9.23231930937618;9.99301855452359;6.17416377179325;1.83920232579112;7.02068481128663;1.41735767479986;-7.9658550908789;-2.03691609203815;6.00567223038524;-4.19148456305265;-9.25734566524625
+-8.35326236672699;-3.05381521582603;7.96425322536379;-6.07427330221981;7.86944725550711;1.84916768223047;7.69330481998622;-4.16353383101523;-7.9774221079424;-3.94415457267314;-4.66728708241135;7.27161168120801;-5.45197159983218;6.38594484888017;7.39240979310125;7.42741400841624;4.9137621326372;2.70814758259803;-7.38005200400949;-2.71801170427352;-3.36625151336193;6.2168337777257;6.97256474755704;-9.14715440943837;-3.66983549203724;4.04165155719966;-3.03097696043551;1.56374318059534;8.23456170037389;0.304676503874362;4.17140888981521;-1.20026829652488;9.49243207462132;3.35113286506385;4.78687290567905;6.29071699921042;-9.21985229477286;9.18913362547755;8.36508100386709;-2.57319248747081;4.20783739071339;8.02474921569228;7.34835855197161;-8.63113931845874;4.31394592858851;6.13531599752605;6.01714534219354;-1.18631308432668;-3.54735987726599;4.19937219005078
+-7.41603819187731;-7.24737668875605;-1.00352134089917;0.0445131398737431;5.95437958370894;5.26975725777447;6.86633281875402;-6.00323977414519;0.622088117524981;2.13723202235997;9.21768597327173;0.446970053017139;2.29637150187045;3.51630492135882;4.3034496717155;-5.07820583414286;-8.78066495992243;-7.05503002274781;-1.93655944429338;1.31602752488106;-5.41635806672275;-0.787256481125951;-1.65284467861056;-8.35016876459122;-9.49530126061291;-4.33529548812658;3.79248723853379;9.71247119363397;6.28720059525222;-7.54683678038418;5.36388149019331;-4.50855239294469;3.03337258286774;-6.83640195056796;-1.0477028042078;1.8652941705659;6.8393779033795;-7.55743506830186;4.0675878804177;-7.5723665393889;0.696204714477062;-4.0946443984285;3.28152636997402;-9.03458246495575;0.377278351224959;1.63624918553978;4.15281774476171;-1.03631648235023;-3.64599047228694;-1.73975646495819
+-7.73488151840866;-2.94001560658216;2.53505774307996;2.05004214774817;-0.155122000724077;9.9347318103537;-0.442806999199092;0.306037422269583;0.829177391715348;-7.27289321832359;1.63741719443351;0.0400470942258835;8.77264257054776;-4.99052625149488;-3.74055358581245;5.04774524830282;-7.36897138413042;4.17838190682232;0.709548471495509;-1.25757737085223;6.99218726716936;1.1952548334375;-4.1542936116457;-0.940481591969728;-5.01979811117053;5.03452390432358;-5.13175318483263;-2.14301680214703;8.19808349013329;-2.75739376898855;6.10877208877355;-3.8410705095157;1.84306217357516;2.29786356445402;0.572758484631777;5.82209080923349;1.67163426522166;0.130781885236502;-0.21282637026161;6.19699859526008;3.43213066924363;-7.55507536698133;7.89705220144242;5.44382556341588;3.71533285826445;5.42494980152696;8.45907041803002;-4.47899712715298;-1.38756198808551;-8.86317755561322
+7.93731191661209;3.26460125856102;-9.94455125182867;-4.37696715816855;6.05190865229815;-2.04581647180021;2.5098591344431;4.96702239383012;1.67016624007374;5.35454288590699;6.58644740935415;3.19256379269063;-1.81186340749264;6.08538806904107;-3.54344808030874;6.96182317100465;-9.72655866295099;-4.45570431649685;5.107605708763;1.44008814357221;8.00036001484841;5.75642764568329;-6.02772703859955;9.24479927867651;-0.376905943267047;1.14108609501272;0.235032010823488;-5.84096095524728;-3.23059704620391;3.45805838238448;-7.73923923261464;-3.19965503178537;-7.83230923581868;6.94800067692995;-1.2444423744455;-9.73796383943409;7.91956437751651;7.80503801070154;9.67672892846167;0.515780095010996;-3.21648442186415;8.61590535845608;1.59253937657923;0.0581349013373256;1.16578348446637;7.91633712593466;-7.3337450902909;9.06852599233389;-4.22304670326412;8.57643555849791
+-4.05595523770899;-6.99380675330758;8.68689033668488;6.41426921822131;1.92541531287134;4.51659633778036;-5.0022453116253;-2.10720262955874;1.41914609353989;-0.67881962750107;-6.07611125800759;4.11749868653715;-1.96244114544243;-5.68819476291537;-7.75834440719336;7.95495928730816;-3.83427711669356;-2.74955648463219;-5.61426238622516;-8.78957410342991;7.79294334817678;-9.29848183412105;-2.50068598426878;3.61032663378865;4.98483754228801;-3.45778064336628;-5.08640134241432;4.20225021895021;3.37923508137465;6.89614120405167;8.65213078912348;-7.05108434893191;-9.23602370545268;5.29506633523852;-5.32917513512075;4.68255490064621;-8.44140959437937;9.8397453641519;-2.04123672563583;3.81747283041477;9.42519997712225;2.38629559520632;8.53226229082793;0.322713339701295;-3.15910501871258;-9.04794673901051;7.93389149010181;8.05093875154853;-3.613336449489;-0.408292673528194
+5.23314647842199;7.90393210481852;6.82275642640889;3.00640545319766;3.50072170607746;-2.76000963058323;0.0144254975020885;9.10782671999186;-8.06184262502939;-1.94329299964011;-4.49249370954931;9.33218107558787;-4.85320082399994;4.96675859671086;-9.36464690603316;1.06825763825327;-3.63719924353063;0.0769210606813431;-5.69944015238434;-3.68958342354745;-4.87166850361973;-4.60926011670381;1.69821362011135;2.08880991209298;-6.03431351948529;-3.71249850373715;-4.50684884097427;5.91585997957736;-7.81175798270851;-3.2377245137468;6.76543802488595;-2.43343741632998;-8.94563796464354;-2.98327059019357;-5.06208308972418;-4.85473548993468;7.0877737691626;9.13274674676359;-0.481965062208474;-6.07795880641788;-9.3235728610307;-8.22336078621447;-3.70754390023649;7.05729445442557;-2.9830060666427;-9.98171922750771;-7.15581737924367;-7.26065665949136;-7.39457490853965;0.739239156246185
+6.52583407703787;-7.22687032073736;-2.77436162810773;-2.62114267796278;0.305482367984951;4.41147557925433;-2.08871121518314;-0.617301086895168;0.46001248061657;-3.1605990184471;-2.07901001907885;-1.4047566242516;1.34346378501505;1.53001967351884;8.31021318212152;7.82918704207987;-4.77481119800359;-5.29731663409621;4.2223651940003;9.20353577937931;4.87464583478868;8.63982956390828;4.63026980403811;-4.44696452468634;-8.18474827799946;7.23484305199236;-6.93534945137799;-0.0472921645268798;-4.04408576432616;-7.6829143287614;-5.62140105757862;-0.38839706685394;-0.480393548496068;8.17354400176555;-9.85454940237105;-3.20624460466206;8.18714360240847;-7.16573346871883;-2.11969644296914;-0.512397461570799;3.30621504224837;4.35846887528896;-2.90902475360781;-3.8419878249988;5.78657075297087;-3.41068885754794;-9.0698229521513;-3.83405076339841;-1.03074628859758;1.34444233030081
+-9.44212152156979;-9.67330718878657;-2.43906966410577;-3.02850528154522;0.306199351325631;3.63954077474773;-1.7963857576251;-0.378867778927088;8.29737352207303;-0.484756682999432;8.77802851144224;-3.46431315876544;4.22246416565031;4.14673158433288;7.11329829879105;-7.87753583397716;-1.55816738493741;-3.35271171759814;-4.91952967830002;-0.624271663837135;-0.168414521031082;5.02635720651597;-8.26526412274688;-7.02169851865619;-7.10409880615771;-8.08453768026084;0.331105194054544;-7.92655337136239;-6.33626939263195;6.51019660755992;6.93120763637125;0.547751220874488;-3.5078943381086;-9.16861151345074;5.54031274281442;-3.49505067802966;-4.44173436611891;-2.53629862330854;1.0340049257502;7.58890550583601;-8.35486326366663;7.59208886418492;-0.892125144600868;1.87112770043314;8.42909672763199;6.12804259173572;-7.07674020435661;-3.77826076932251;0.111120198853314;-8.44311767723411
+4.38418470788747;1.85708405449986;8.46206207759678;-4.59484127815813;0.414647390134633;0.524647245183587;9.55170799978077;5.62107507139444;-5.15639480669051;8.09681442566216;7.71982653997838;-4.94275208562613;-3.08685829862952;5.10225055273622;9.58333013113588;9.88642768934369;7.65789283439517;-1.96787662338465;-2.81613413244486;-2.21648797858506;-0.764029109850526;8.04414443671703;8.56351802591234;6.55469271820039;-0.30012755189091;-4.75023183971643;4.13559135980904;-4.14096715860069;-1.7473048530519;1.94555690977722;1.6086255107075;2.33773379120976;8.33527268841863;8.25256857089698;7.57323216181248;-0.992953572422266;-6.16152776405215;8.73219945468009;-8.78837703727186;1.34522145614028;-1.62787667941302;8.59512887895107;-1.76376153714955;6.44506523851305;7.85705285612494;-2.40642982535064;7.88654152303934;-5.13881942257285;-2.90239157620817;7.56665132008493
+-1.85193200595677;6.11238184850663;-5.31904996838421;6.1270427564159;1.09663453884423;7.7640682272613;-6.7933551222086;8.4626897610724;3.86566106695682;-0.680588651448488;-0.712763140909374;5.15908774454147;-5.87384912651032;3.67830383591354;-3.53616933804005;-5.92594652436674;-7.37337265629321;9.14542506914586;4.24118026625365;4.87666197121143;-0.424845512025058;7.35139052849263;2.55008875392377;6.68262872844934;-1.93683247081935;2.76835071388632;9.65346479322761;-0.349986520595849;7.50055733136833;-9.89540789276361;8.72463681735098;-0.548905655741692;3.44527849927545;2.68392292317003;-0.626543685793877;9.09583524800837;3.62992947455496;-4.61542466189712;-3.68955834303051;-9.3695415975526;-7.47715935111046;-7.24786943290383;-5.15750915743411;-9.90130585618317;-5.89866369962692;5.44527580961585;-6.19769876357168;7.69261878915131;7.90376904886216;-5.70369704626501
+-8.10411280486733;9.48637879919261;-0.537043083459139;2.58909155149013;-8.89178489334881;-0.475318250246346;-7.64334189239889;-4.54461069311947;-2.17578352428973;1.76178428344429;-0.156988482922316;-5.48755872994661;8.43600269407034;-6.87763990368694;-7.37439137417823;-6.50114732794464;2.0500796334818;0.488925985991955;6.68445863761008;6.12067910842597;5.88983139488846;6.29309406969696;5.84585980977863;7.21234594937414;-1.96398003492504;1.10331339295954;2.40463704802096;7.37691144924611;9.87497966270894;-9.54097533598542;8.73474629595876;4.5446188095957;-6.04689277242869;1.15258096717298;-4.60770557634532;-4.99076470267028;2.3115301085636;-3.62195512279868;-1.99660851154476;-3.10984789859504;-3.36581202689558;4.52888814732432;-3.26245826669037;0.00373832415789366;-1.6997971618548;-3.87004877906293;-6.99340460356325;8.42600321862847;-5.66031120251864;9.8352440353483
+-4.9544560816139;-0.289430138655007;-8.89355124905705;-6.58020699862391;0.167975714430213;-2.50234695151448;-4.18217134661973;-2.27659297175705;5.35417100880295;4.11391313187778;8.79664265085012;-5.92246127780527;-0.286254337988794;1.95362218189985;1.79879401810467;-1.41514655668288;1.63319347891957;-7.94013634324074;-1.39856289606541;-6.32670309860259;3.94252275582403;4.56495098769665;9.87564062234014;-0.705595370382071;4.823176888749;-4.68982730992138;-1.46089500747621;9.63879718445241;6.47705601528287;1.29312799777836;-2.87382133770734;9.493905948475;-3.65941742900759;-5.21624160930514;6.56065740156919;-8.17661788780242;9.84803852625191;2.79736126307398;-4.42370866425335;5.55116047617048;6.87039746437222;-8.11823395546526;-3.86408601421863;2.58959512691945;1.73903326503932;-6.92778443917632;-0.182388271205127;-7.62079354375601;-0.611573439091444;4.10679309628904
+-9.57689464557916;9.93615285027772;8.26689862646163;8.53446148335934;4.23860462848097;-9.37341316137463;-7.98039355315268;3.07303929235786;9.4485729187727;6.32294106762856;9.28026579786092;-2.41333067882806;0.792351961135864;-1.2781950738281;-8.86307388078421;2.53543831873685;6.28652101382613;-1.94353824481368;8.96550734527409;-9.80503350496292;-3.1137806782499;-2.3451732005924;-0.161909619346261;6.48068119306117;-6.09676657244563;0.904373601078987;-3.48399080801755;-8.36457673460245;4.39035198185593;9.5607249904424;1.40279059763998;-0.391681133769453;3.78168719820678;4.58427242469043;2.54963802639395;3.11168029438704;6.85630430467427;5.14265440870076;9.49336152523756;-8.18450801074505;3.52677134331316;6.47583621088415;5.63527134247124;-1.38474613893777;-5.3877641633153;5.55733960587531;-0.125162410549819;-6.59360511694103;3.04022912867367;0.0857851048931479
+-7.48559701722115;-0.569481258280575;3.21534621529281;-0.12324552051723;2.33146011829376;1.75726795103401;-5.82592696882784;0.554159288294613;1.29871415439993;6.1560379806906;-9.30813410319388;9.31554341688752;-4.21790667343885;9.70995259936899;2.68301656935364;8.94417773932219;8.62223849166185;5.08155146148056;-0.728374882601202;-5.532460026443;4.01535561308265;-6.27799574751407;-9.19437568169087;-5.07011177018285;9.91916596889496;4.9521764414385;-4.51449748128653;7.85246380139142;8.16621583886445;-5.86753353476524;7.23925604950637;-5.71779704187065;7.48395556118339;4.0064294449985;3.62913731019944;-5.86368082556874;-6.43922327086329;-3.5361260548234;-7.50939806457609;5.47642586752772;-0.303957755677402;8.34723229054362;-3.14723629038781;-0.198244121856987;5.08898621890694;5.08641151711345;5.79886314924806;-7.53803907893598;8.64158020354807;3.1211434584111
+4.92203949950635;-7.95279817655683;-3.59707578551024;-3.83764812722802;-1.37452111113816;-6.80898802354932;6.34175854735076;-4.2340679327026;5.08902999106795;-1.36455266736448;8.33388085942715;-0.00290188472718;6.28456708043814;-3.05520098656416;8.31118286121637;-7.54609230905771;3.13142497092485;9.03501857072115;-7.62298642192036;5.66631855908781;-8.11621394939721;-8.11643643770367;-0.307748676277697;-0.108808404766023;1.63178510963917;3.61919098068029;8.48299230448902;-5.32988229766488;8.34176381118596;6.94901147391647;-1.33425115607679;-9.84691936522722;9.49516975320876;-5.37054696585983;-1.59569244366139;1.13892278634012;-2.24359389860183;9.85966583248228;-9.07891806680709;-8.66227216552943;0.238122888840735;1.91473758313805;6.87332110013813;-5.16970486845821;-0.281950319185853;-2.18452065251768;8.22628675960004;-0.436282977461815;-9.13972445297986;4.91120086051524
+2.20277619548142;5.67350205499679;3.08917113114148;2.18072438146919;7.37365064676851;4.16294106747955;-6.31727777887136;-1.97712849825621;-3.82793701719493;-2.17933968175203;0.45525040011853;-2.69046608824283;1.27515509258956;4.11708144005388;9.58125773817301;-5.04838331136853;-5.4554438078776;1.32576214615256;7.05480773001909;-9.39454281236976;7.56160849239677;-7.24261081777513;-2.57809015456587;4.19875444378704;6.25802957918495;6.0639762878418;4.2433020286262;-3.56816892512143;-0.205590813420713;9.80859526898712;-8.77971345093101;-6.21482199523598;8.19203209131956;6.61169227212667;7.36570410430431;-4.73981067538261;-0.519286100752652;-2.83253875095397;3.81126791704446;-9.04530869796872;-5.20164022687823;-6.85614578425884;7.52952761016786;9.68140832148492;-7.04058277886361;-4.9217116786167;-0.122157447040081;8.87656197417527;4.70778222661465;5.36929646972567
+-4.38481451943517;-4.08051452133805;4.20397215522826;6.49110969621688;5.61476840171963;7.78695488348603;-9.404032737948;-7.52457986120135;8.84106771554798;-5.3662026906386;-4.58826781250536;5.25443234480917;-6.29125896375626;4.14875522721559;3.31494035664946;-0.072455951012671;-1.58469424583018;5.42111789807677;0.111589352600276;-2.82773818355054;-5.01596231944859;4.98279889579862;-0.961265987716615;-4.19282381888479;1.99861539527774;7.13549932930619;7.97013855539262;0.841783965006471;-8.98740781005472;-2.55642176605761;-4.71094235312194;-6.90254109445959;8.57218996156007;0.995364799164236;-6.4055003831163;-3.23844669852406;4.22467043623328;-6.10438047908247;3.93341863062233;9.9089191108942;-5.91094850562513;-4.33750540018082;0.853968323208392;-3.23199447710067;8.4755556890741;-0.602212278172374;1.13828195258975;-3.52512139361352;-6.32811055518687;-3.78915204200894
+5.72925217449665;-7.15034242253751;-1.81961879599839;-1.50722491089255;9.15507274214178;-0.872528916224837;1.1822428368032;0.683507137000561;-8.52746062912047;-4.58968906197697;-2.9758349340409;4.369613872841;-4.75736282300204;9.31881912983954;-6.40987316146493;0.619952920824289;-0.988697363063693;6.94150828756392;5.36307130474597;-2.77040959335864;6.22578480280936;6.15248781163245;5.27241521049291;-8.73684692662209;-9.27143092732877;2.19552217982709;-9.99088234268129;-3.10184174682945;-4.14959323126823;-3.79578373394907;-2.82464171294123;-4.27542535588145;5.08862643968314;-0.0477500772103667;6.37124033179134;8.42116589657962;0.721725937910378;6.67273321654648;-0.816890685819089;7.16951520647854;-0.420970288105309;9.83815636485815;-7.17383567243814;-5.33369755372405;6.4508492546156;9.11221993621439;6.39733653049916;-7.54411607515067;-2.55118187051266;-1.18276939261705
+-7.90275493171066;4.15172874927521;7.15876077767462;-9.90035359747708;-7.58546414319426;0.687446887604892;9.11861432250589;5.97805412486196;4.08375578001142;-2.55068764556199;9.86591961700469;-8.61782617866993;-9.79684949386865;0.389373898506165;-9.3840268952772;7.69074744544923;-5.90092794504017;-3.26658111531287;2.3730837367475;-9.71389800775796;3.21280807256699;4.16543884668499;1.98607786558568;1.06654078699648;4.78882497642189;5.56786619126797;3.74742423649877;-4.0241655241698;4.06411840580404;-6.29666083492339;7.78910239227116;0.760500705800951;-1.17328683380038;3.69515545200557;6.48094518110156;8.92891703173518;8.89008034020662;-8.46361526753753;-5.45954845380038;-3.83487683255225;-1.50975130498409;-0.0993228517472744;2.52120712772012;-4.06960890628397;-5.77678848057985;8.38459021877497;-7.83558504190296;3.29950592014939;6.82629471644759;1.61710028536618
+5.05435788072646;-1.05212602298707;-6.94547143299133;-3.51664951071143;-4.44737686309963;-0.200211494229734;4.95635294821113;-8.92024105414748;7.62629227247089;-3.49253267981112;4.40951623953879;0.0499026710167527;-4.12864485755563;-0.985067011788487;0.436343061737716;5.20745602902025;-0.252505117096007;-8.93502310849726;-3.40007257647812;9.25532312598079;-6.34877419564873;-0.730016543529928;-6.76067380234599;-3.58242340851575;-4.43888690322638;-8.42239372897893;0.83219104912132;-9.91279909852892;0.709755485877395;7.45946100912988;-0.598480254411697;2.06372263841331;-0.604012641124427;-9.41709560807794;-9.46646123193204;9.30649791378528;-2.98574395943433;-1.19304142892361;8.60107386950403;7.59064613375813;-5.30345525126904;-7.46497068088502;4.14173558820039;3.11392121016979;-1.39542937278748;7.67457352951169;-2.40453644189984;-2.97496197745204;4.53189593739808;-5.17405509017408
+6.33212393615395;7.57495445664972;-0.202298783697188;2.92587991803885;8.96173575893044;-8.47703974694014;-8.85389506351203;7.83586745616049;2.69370628520846;-5.14325467403978;1.06768879573792;-0.284136151894927;-9.51233520172536;-9.02230946347117;6.63474711123854;5.19991226494312;2.48342915438116;-3.46827806904912;-7.77392821386456;-2.82399358227849;-7.90723683778197;-6.59743754193187;5.79242267180234;3.75150988344103;4.66528033837676;-7.0773445116356;6.63759363349527;-0.0594410626217723;8.68652820587158;-2.25807085167617;5.64104724675417;0.363003402017057;-6.86859249603003;-3.39387360960245;-0.362286642193794;6.12843008246273;-5.97864548675716;9.07114812172949;0.75890704523772;-1.01894175168127;-1.21891789138317;4.55765646882355;-4.14950251113623;7.6534331869334;-4.76987124420702;-6.83157108724117;-5.77451508957893;2.16681226622313;-8.24771340936422;5.24151925928891
+-1.75399336498231;-5.7939344458282;-9.32651845738292;9.64296016376466;-6.42805401235819;-6.02400666568428;-5.0655109109357;-4.51475251466036;2.935910243541;-8.84833389427513;-5.65754166338593;-3.36866336874664;2.62855600565672;-1.01474686991423;6.92091701552272;6.59974572248757;-9.41196028608829;-6.99131103698164;2.90103410836309;-5.34367288928479;4.93763487320393;2.42644134908915;-1.91709566861391;1.91217525862157;5.44630645774305;-8.86011967435479;-6.89077975228429;-6.81290222797543;-9.17867548298091;-3.63611375913024;1.40874698292464;0.392915038391948;-0.408156053163111;4.37227353453636;-4.74820102564991;8.12186692841351;-1.6761615825817;3.35560170933604;-0.352764464914799;6.83822765946388;-7.99232516437769;1.59963061567396;-7.36015815287828;-9.36374636366963;-8.44977100379765;-6.30131197161973;-8.21292127016932;7.88410588633269;-8.40164477471262;-1.7963360529393
+-7.2860603267327;-8.76660048961639;-1.18165362626314;4.22509982250631;-5.49608017783612;2.26501293480396;7.68215553369373;-9.29462018422782;6.17642854806036;-4.66847725212574;-9.24205696675926;-2.91933824308217;-4.33884585276246;5.20688711665571;5.67606999538839;9.38824217766523;-8.2486286573112;0.710946298204362;5.56023497600108;7.24665323272347;-0.519044217653573;4.81084862258285;-4.66659036464989;3.67833810858428;-1.71761728823185;-7.6949709514156;-6.39208371285349;-0.269398302771151;-2.19097043387592;-1.88136447686702;-5.59424642007798;-1.64377202745527;-2.34289284329861;-9.69792034942657;-4.28491426631808;-4.58314519841224;-2.15583154931664;-9.58248457871377;-6.29604706075042;1.97521144524217;8.20141684729606;6.69354733545333;-7.49633757863194;1.65740416385233;-8.4041993599385;-1.85260641388595;2.01231711078435;-5.43206232134253;-5.20109578967094;-7.06730884034187
+6.24512508511543;-0.0808962341398001;-8.93900645431131;8.72169336304069;-2.19437178689986;5.26120429392904;-0.257736966013908;4.53994601964951;9.68353912699968;7.59376661852002;8.33098668139428;-8.68915687780827;-1.51810744311661;0.287311407737434;-1.84650360606611;-2.83779848832637;-0.499656046740711;5.99538220092654;-4.47810220997781;-9.66682789381593;5.9978907648474;-2.53576355054975;-7.57517200428993;-0.805202019400895;-2.74775532074273;4.77216996252537;-6.80369787383825;-5.38386335130781;-1.46108193323016;-4.37351390719414;-2.37988119479269;-5.82552611362189;2.78863840270787;8.54036649223417;6.41029816586524;-7.59876132011414;-9.41887283232063;3.85973167140037;2.37575851846486;-9.90165393799543;-4.68090679030865;4.96107502840459;-9.82737109065056;4.52507088892162;8.30390044488013;-2.16531005688012;-9.72490641288459;-2.40684479940683;6.56142291147262;-6.12807348836213
+-6.89380166586488;3.43383439816535;2.67324096057564;-6.13261948805302;9.09514994826168;2.10021797101945;-2.90903128217906;1.04262887500226;0.288630747236311;-7.34614734537899;-7.93220693711191;1.90820278599858;6.00464188028127;-8.85229794774204;9.62993982248008;9.68595736194402;5.27919683139771;6.78114439360797;-2.84581801388413;2.29776052292436;2.93103167321533;6.15415258798748;-7.22870586905628;9.85982392448932;8.22466928511858;-1.1524177249521;-6.93457860965282;1.13883781246841;5.7262449292466;2.50995504669845;2.20707215368748;4.04647886753082;-0.279388106428087;-6.07969851698726;-7.46136094909161;5.96828286536038;-0.0735028181225061;9.20786177739501;5.56700299493968;4.44382494315505;4.2322701215744;1.43304464407265;-0.688686133362353;2.68234317656606;-1.0390174947679;-2.68379193730652;7.65955937094986;-7.46235843747854;6.60204032436013;4.30183042772114
+-7.84154618624598;-1.40319516416639;-3.75590218696743;1.07503809034824;-6.10026490874588;4.39225042238832;4.15389127563685;-7.98421324230731;-5.37200640421361;-3.4354439470917;2.72242345381528;9.56798792816699;9.90035164635628;-2.90861143730581;-9.77840671781451;6.72203383408487;1.59844014327973;3.99656384252012;-7.97595120500773;6.87126556411386;0.711812800727785;-8.6959225917235;-6.3604522915557;6.93076588213444;-8.64904708694667;-4.86306069418788;5.83155129570514;1.75829433370382;-4.30232729762793;-1.78537758998573;6.31780280265957;1.1650811880827;-6.33676528930664;-5.59834774583578;-5.4160725325346;-5.91392675414681;-4.98702747281641;7.8330975305289;-8.52717966306955;-2.86736097186804;2.59203864727169;8.83711152710021;-1.47266270592809;4.54545453190804;-1.69129789341241;-2.74692742619663;-7.14817830827087;4.72512230742723;-7.00746574439108;2.85067315679044
+-9.30480472743511;-3.3834219397977;1.82437452487648;-3.08822523802519;5.91655746102333;1.51594488415867;6.72874163370579;5.56474911980331;7.84257113933563;-8.93797003664076;1.6866602236405;9.04020834248513;8.03593002725393;7.61158816050738;0.0335679296404123;9.8188043339178;0.518680936656892;2.42488397285342;0.22119268309325;-8.52964601013809;6.70208004303277;2.62869058642536;-8.88397344853729;-1.80673114024103;5.03316289745271;3.08295069262385;-3.85703328996897;-7.23392143379897;0.599877298809588;-5.40025772992522;-6.62405495066196;2.21114620100707;-1.65234157815576;3.63579470198601;0.743761188350618;-9.68482581432909;-2.94284879229963;3.09332078322768;0.295658926479518;3.79248795099556;6.43935937900096;-8.18897570949048;-8.82844815962017;2.68638353794813;-9.34816522989422;-3.09307308867574;-3.05695691611618;-1.14421939942986;-6.67619314044714;-1.5547381946817
+-0.273921848274767;4.28439895156771;5.34721648320556;2.68099914304912;-1.59431705716997;2.05431394279003;-2.77577721979469;4.54339298419654;-6.25116678420454;-4.57347002346069;3.76631236635149;-4.95827722828835;-1.4220368815586;9.53843018040061;8.19458189886063;-6.09508336056024;9.6949996938929;5.89017421472818;-0.686638480983675;-3.14164497889578;7.99711269792169;-3.78870348446071;-6.59577463753521;-2.77227915357798;3.25967900920659;-1.3697888283059;-1.71984341461211;-4.45678400341421;-5.85152716841549;-9.62002797517926;4.85967083834112;8.85268460027874;-5.97546714823693;8.89081788249314;-8.7872965587303;2.91039566043764;2.39304513204843;4.02185037732124;0.591052165254951;-6.82524642441422;-3.83839997462928;-0.8730080537498;2.91083774529397;3.79762465134263;6.92758167162538;-7.30936149600893;-9.15090386755764;4.67704681213945;0.275953314267099;-6.13871857989579
+-5.61757161747664;-3.59601089265198;-7.2785690240562;3.65378024056554;-7.64602398499846;5.67494024056941;3.65997684188187;2.1529297856614;7.69103437662125;-2.37212903331965;6.97361489757895;7.55283848848194;6.46598388906568;8.05302733089775;6.16313410457224;2.77735941112041;-8.93740472849458;-4.75735254120082;9.75367588922381;-0.285933343693614;-4.11263340618461;5.72689131367952;-9.4310140889138;8.53095151949674;5.57224438060075;0.720958150923252;7.31371992267668;5.14516940806061;8.21258471347392;9.11775350105017;-8.45722260419279;6.70327575411648;-4.80139579623938;-8.59250117558986;-0.440126918256283;-6.7050477815792;4.71715358551592;-5.70998476818204;-9.2081894306466;-8.65098568610847;-8.63112266175449;3.04855482187122;8.47921430133283;9.55090504605323;6.70802811160684;-1.43876992166042;-0.918863443657756;0.124524394050241;-0.890619978308678;-9.17991734109819
+4.02163029648364;-1.13368820399046;6.23582161031663;-6.13037082832307;-1.60669187549502;-7.86454192362726;-5.51537558436394;3.32642941735685;-0.995853384956717;-3.47707239445299;-7.93528824113309;-4.45575483608991;-0.193080459721386;9.80591978877783;-5.670012133196;4.03421464841813;-1.35197209659964;6.88216282986104;-2.89635306689888;-2.30419000145048;3.78139675594866;-5.86996724829078;8.87486635707319;6.52907396201044;4.94483883026987;-2.54959260579199;-5.68671665154397;9.8050092626363;5.78833218663931;9.80305224191397;-4.52360541559756;-2.44286432862282;-2.01952903997153;5.39249318186194;9.34012298006564;-8.42717807274312;6.81538264267147;-1.0199411958456;2.83644374459982;-7.61072750203311;-7.14789744466543;-6.16983259562403;6.14414204377681;5.66712920553982;-8.6212145164609;-4.56824728287756;6.45208663772792;-8.4530690126121;8.71066469233483;8.95753474440426
+-9.49346350040287;-0.29116322286427;-8.57446210458875;9.34901367872953;-5.43387416750193;3.17204491235316;-8.59298116061836;9.41234603058547;-7.17849805485457;4.20034803915769;9.48122198693454;8.00296795554459;-4.32211545296013;3.81656508427113;0.415328829549253;1.64385596755892;6.98785749729723;-1.19018197059631;2.35076653771102;9.66898170765489;-7.73325969930738;3.22778905276209;-9.32378028985113;-0.658049746416509;8.30846545752138;7.69601566251367;8.38845012243837;-7.10576466284692;-3.46146046184003;-2.78239521197975;-1.42884312663227;-4.30518612265587;-9.52865519095212;-5.06440684664994;-1.86433108989149;9.77641178295016;-1.09231965150684;1.07997097074986;-4.14564902428538;-3.77240884117782;5.48313104081899;-9.10435067955405;0.126990475691855;-0.155734266154468;3.96053025964648;1.8231702176854;-8.42941547743976;0.574334980919957;-8.37284281849861;4.09163013100624
+5.03065141383559;7.91431119665504;-2.33448339160532;-4.24260158091784;-8.18076802883297;-8.64932359196246;-6.1524017713964;-4.13489266764373;8.28768185805529;3.94461839925498;-2.65856635291129;7.45319098234177;-8.47506585996598;6.36953071225435;9.83018851373345;-2.84530495293438;-3.07847840245813;-9.9914758047089;5.25460495613515;8.73078107833862;7.94389305170625;-3.80520822945982;2.2840756457299;-9.03417652938515;0.0911658443510532;4.3690918572247;0.105934832245111;9.73666593898088;-1.68205184396356;0.222289492376149;6.62279982119799;2.99822344910353;-8.10619601979852;9.01817454490811;0.358996638096869;9.58989076316357;0.0647725164890289;8.00786312203854;-4.84180338680744;-8.49423152860254;8.51604827214032;0.542373745702207;3.60352720599622;4.76241720374674;8.47722476813942;-4.13000972010195;3.04935756139457;8.36650051642209;-6.49290133267641;-4.51098936144263
+-4.13170841056854;-3.89194413088262;4.28903279826045;-6.47482853382826;8.49766437895596;-1.7996884835884;9.47842861525714;3.33715287037194;7.15590020176023;7.07812782842666;-7.47315299231559;2.61856132652611;6.05795829556882;7.434559809044;0.0482881208881736;1.11446089111269;1.45345623604953;-4.28553762380034;3.19188049063087;9.11620521917939;-1.62059062160552;-4.85320566222072;9.85405401792377;-1.64338232018054;9.83841431792825;-9.57021838054061;7.7304670587182;-0.520252636633813;-8.02828829269856;2.23638567142189;1.41313328407705;-7.13491473346949;6.77962530404329;-4.67010321561247;-4.78618510067463;7.24184566177428;-4.39773431047797;4.76854139007628;1.50851922109723;4.45089953951538;1.93294665310532;-8.69277125690132;9.16242608334869;-2.17238161247224;-0.928302179090679;-7.9293877677992;6.67201889213175;0.235900054685771;-9.41629700362682;0.690708011388779
+5.73676319792867;-4.69523388426751;8.17381833679974;7.0726999361068;4.26659238524735;-6.84566229581833;-0.436000130139291;2.90853652637452;7.07749349065125;-0.642769145779312;0.396282491274178;-7.06797429826111;2.83332935534418;2.90628528688103;-3.54144958779216;-9.95030286721885;-0.0534800719469786;-8.52128295693547;5.81711397971958;-1.86789736617357;-8.87894546147436;-0.507104257121682;6.39768346212804;1.83232601266354;9.09038087818772;7.86262373905629;-4.44792794529349;-4.53821402974427;6.80609257891774;5.38437793496996;4.12546702194959;4.59903342649341;8.19570883642882;9.52374482993037;-1.00166943855584;7.65225436072797;-4.13463127799332;7.42486928123981;-4.68436909839511;3.24062082450837;-3.03173455875367;7.12965227197856;-9.74420038983226;-7.6155641535297;-4.52480589970946;2.11921980604529;3.23962240945548;-3.52202324662358;-9.3875077040866;-9.76375365164131
+6.57405426260084;3.86266333516687;8.11181522440165;9.64470342732966;-3.73751518316567;5.18562239594758;0.0731784617528319;9.91582605522126;6.79898086935282;-8.65302253514528;-5.69534641224891;-4.48268915060908;7.91834339965135;4.8508729506284;3.23359879665077;-6.40309527982026;-4.20369584579021;1.54079776722938;-5.44202606659383;-4.21643396373838;-5.62653096858412;2.71068348083645;8.22596977930516;-9.62387652136385;-5.31894993036985;9.38314106781036;1.36560067068785;0.381502294912934;9.04919115826488;-4.36781742610037;3.87973027769476;6.41143540386111;-8.24994595255703;-8.13030551653355;-7.53322523552924;9.85775749664754;-8.76860135234892;2.28887437377125;-3.75512097496539;-5.84941172972322;7.50700366683304;-3.38761567603797;3.04318433627486;-7.96442613936961;5.29443372506648;-0.0983054237440228;-7.79721167869866;-7.8971891105175;-9.89552580285817;2.4109326954931
+-8.68512563873082;2.87126640789211;-8.13318781089038;-4.82640306465328;-3.28065287321806;-3.63968024030328;-0.630053654313087;-8.92749693710357;-1.90892150159925;-3.52246764115989;4.89130036439747;5.09426331613213;2.97630462795496;5.29656909871846;7.83015787601471;1.02696769870818;1.66812792886049;-1.53740840032697;8.08795597404242;-1.56427923124284;4.50817017350346;-9.89027515985072;-6.22996104415506;8.79576141480356;-2.03115202952176;-9.71150313038379;-4.36934941448271;-4.30558771826327;8.41793595813215;-8.53638322558254;-4.47206841781735;-5.20792425610125;3.93544143531471;2.27508529555053;3.12243071384728;-9.22212891280651;3.96950045134872;1.34436349384487;4.90737130399793;4.09046037122607;-9.52164916321635;-6.03637848980725;2.88837647531182;-3.17543282173574;-3.91513381619006;-8.49906518124044;1.27900284714997;1.74497885629535;-2.56012651603669;-4.70417483709753
+4.09962727222592;-1.05255278293043;7.1119390334934;-1.74589172471315;5.8466725749895;4.60894927382469;8.00343976356089;1.13402302842587;6.29164564423263;-2.62376999948174;-6.36310472153127;2.9961855802685;9.33419220149517;5.66546637564898;-6.73646044917405;-7.69331824500114;9.00321049615741;3.61072167754173;5.06614178419113;9.91605116520077;2.6635506702587;9.31446024682373;6.19194713886827;-4.12731626071036;-3.92079354729503;-3.78120466601104;-8.38664351496845;1.97716658003628;-2.5141688529402;-7.60416805744171;2.05325417686254;1.15506448317319;3.55384534224868;-3.79880733322352;-7.83813508227468;-5.23889498319477;7.83566943369806;-2.537348321639;-9.16493926662952;4.75276506505907;-4.18844823725522;-7.16723343357444;-0.678267627954483;7.89775767829269;0.454767323099077;4.02759786695242;-6.66810868307948;-0.398521306924522;3.81283874623477;-7.88920890074223
+-8.35035951808095;-2.80423099640757;0.0116473156958818;-9.3769966205582;3.78397620283067;-2.64376348350197;8.04132471326739;5.75216874480247;-3.49192757625133;9.77590810041875;3.28677326440811;-1.39239703770727;2.67182677518576;9.98352720402181;4.12578717805445;-2.98797861207277;5.10229186154902;6.03591841179878;-3.58728131279349;1.00780650507659;-1.87952497974038;-3.0292028747499;6.59361871425062;-8.20574358571321;4.46695161517709;-7.85159802529961;7.37413368653506;8.55681118555367;-0.706145470030606;4.52425187919289;-9.88959302194417;-2.6929001417011;3.61159090418369;-1.03121505118906;-8.84425576310605;-0.858807684853673;3.30505600199103;9.80788079556078;-5.62545171938837;8.42155627440661;4.34178008232266;-1.35865573771298;-1.85941773001105;7.31783837545663;-2.91046266444027;2.36365301534534;8.31426402553916;2.51060056034476;9.71390139311552;-3.4887803485617
+-0.141701325774193;-7.00247646309435;-4.08379600383341;-9.65385288000107;8.37717457208782;-6.07155227568001;-5.45206444803625;6.70105377677828;-9.49207265395671;-4.63962049223483;0.0736191030591726;5.25236270856112;-8.6087663192302;7.30532060842961;-1.90733037423342;9.52906612306833;-6.37468389235437;-7.82218022737652;7.50122993253171;-8.28780607320368;-7.43126157671213;8.85100537911057;1.43893138505518;-0.513520599342883;-7.26788990665227;-8.1279207393527;-8.9099827921018;-3.62811353523284;-7.32644802890718;-4.74133675452322;-1.07092974241823;7.14329155627638;4.41420138813555;6.79185380227864;6.64303112775087;2.80368442647159;3.91855613328516;-4.40367183182389;-9.60085490252823;2.67772580962628;6.17863035295159;-8.53051309008151;6.63645803462714;8.88576813042164;1.87520241830498;9.10952773876488;-0.111036999151111;-1.68290142901242;-7.9867067374289;-5.82690706476569
+-3.13985489774495;9.27073751110584;0.981867164373398;9.67043654061854;1.62785263266414;-5.89098313823342;6.97849767282605;-8.32953762728721;-3.678346471861;-8.38991450611502;-8.22790271602571;8.91944763250649;0.907396343536675;2.16255443170667;3.93064402975142;-8.28994683455676;-2.0509992679581;-0.857820231467485;6.36512629222125;5.79042457509786;5.59491266962141;-6.60348861478269;-6.5255735302344;3.7729255668819;-5.02579417545348;6.30913335829973;7.13613166008145;9.05436259694397;-6.60988301504403;-1.66365942917764;1.27389890141785;3.37803176604211;8.87701463419944;-2.86761993076652;4.56835886463523;8.58527791220695;-0.353709226474166;5.68678537383676;5.60867160558701;-9.84118827618659;4.0100304922089;-5.39743221364915;-1.73092950135469;-5.62479582149535;1.86797053553164;-0.963405836373568;1.35767233557999;5.98959596827626;0.510635552927852;-8.03746108431369
+-2.58051255717874;-2.50810381490737;7.61281630024314;6.98109184391797;-1.07714717742056;4.37914725393057;7.8001956269145;9.54836768563837;-9.75996137596667;2.88925112225115;-8.74202525708824;4.75238044280559;-5.45141253620386;-8.89085555449128;-6.50515382178128;9.6735160285607;-9.26614988129586;-0.89328610803932;-7.47308059129864;-8.4466530289501;-7.65302724670619;5.18767122644931;-5.52709631621838;-6.96485129185021;0.318112722598016;6.03588104713708;-8.7098296219483;-1.95751323364675;7.26989864371717;-0.0378504442051053;-3.40761184692383;8.57618155889213;-2.54913576878607;5.46099709812552;6.62846800405532;-0.536032561212778;-4.14036758244038;7.27065737359226;-9.24641519319266;-9.49598229490221;5.51759734284133;9.11491983104497;2.34956446569413;-7.30433610267937;3.46061826683581;-6.18017149623483;-2.71922287531197;3.82344056386501;-9.63205051142722;3.95829054061323
+-5.19320321734995;-4.40582175273448;-9.96954153757542;-2.66557408496737;9.73252706229687;-1.48343767505139;-0.533855040557683;4.67966087628156;5.8414972666651;9.25592701882124;-1.92859614267945;-3.39417546521872;-7.90151545777917;-3.50486355833709;-9.99786586500704;7.18205966986716;-8.48065205384046;-6.20944578200579;6.06594277080148;-7.32437520753592;2.16967761516571;0.034055644646287;6.74599451944232;3.85132446419448;-6.22156867291778;0.484299594536424;5.65923468209803;-7.4715317459777;-7.43804370518774;-7.20156909432262;7.74685141164809;3.79649917129427;0.350112398155034;-7.77353921439499;-9.93114510551095;2.81007817480713;4.27120653446764;-2.6099449954927;-2.96778385993093;1.00047274958342;-3.83710484020412;-6.1945230467245;-3.51225940510631;0.670211701653898;-6.76071268040687;0.245979940518737;3.85088450275362;-3.59249762259424;-5.64497579354793;8.84622166398913
+3.73718305490911;3.55719261337072;4.65208908542991;-6.65655109565705;-1.83852412737906;-1.2482486711815;3.72523979749531;9.40339623019099;8.99760266300291;-2.79446063563228;6.46633912809193;-7.2360261855647;-5.09243596345186;1.20767377316952;-8.23785312008113;8.88930885121226;2.38610762637109;2.75913177523762;-9.45353828370571;-6.90237890928984;4.00345696602017;-7.73956480901688;1.15987632889301;-5.69152780342847;-8.05638337042183;-5.28574252966791;-8.34863489493728;2.71183617878705;-1.78263947367668;-7.06780633889139;2.85255953669548;-8.88374635949731;-3.2920540869236;-7.8658055420965;4.83216187916696;-8.57041496317834;7.30692484416068;9.34206881560385;8.85052775032818;3.80956936161965;-3.21498250588775;-7.10818667430431;6.34731671772897;-3.26681780163199;-9.30217488668859;0.93480309471488;-2.16983610298485;6.69889839366078;-3.61426829360425;-6.89180164132267
+2.3788336198777;-7.63113574124873;-5.51093879155815;0.59368709102273;-4.4723196933046;-9.61546230129898;-8.39224779047072;7.92707804590464;-7.10143370553851;-1.41194361262023;-6.52601599227637;-9.97517548967153;-1.61017966456711;4.12928593810648;-4.98455019202083;4.50556674040854;-3.06073345243931;5.80815649591386;-7.92923712637275;-0.87795099709183;8.00962653476745;6.48445606697351;7.53754985053092;-9.41382222808897;-5.29830467421561;2.96326701063663;4.80577910784632;6.51261984370649;-1.1430878425017;2.13597077876329;5.56230977643281;8.56366262771189;4.30776828434318;-7.0734215574339;-2.44480899069458;-2.00430816039443;5.01331821084023;3.0129767768085;8.33705903030932;-5.20573399029672;-8.84877873584628;3.18959271535277;0.801504524424672;-2.68570859916508;-3.7126901326701;-8.34428914356977;4.71884707920253;-0.138583839870989;-8.40811075642705;-7.29073310736567
+0.812282902188599;4.76211580913514;-1.87395466025919;9.64633217081428;-9.60474694147706;3.97445482667536;8.88092167209834;-5.0607381016016;5.97572566941381;3.73333433177322;5.21077498327941;-0.909044770523906;5.65805181860924;-4.92132091894746;-4.72714444156736;8.02972089033574;-7.61354716960341;-3.95360076799989;2.96234561596066;6.67503412812948;-0.55022937245667;-2.31635202653706;6.30808570887893;0.565804215148091;1.91502279601991;-0.337986038066447;-1.41362830065191;0.719030192121863;-6.9833963830024;1.53049129061401;-8.13285185955465;-0.636371625587344;7.65642759855837;0.831766813062131;-9.52552540693432;3.30818677786738;-7.48678117059171;-3.47864614799619;0.316430814564228;7.06165228504688;7.02035943977535;-2.42230932693928;-0.341749773360789;-0.507863662205637;3.78391134552658;8.15949625801295;6.37556643225253;-2.9469975316897;-5.26952075771987;-5.01877466682345
+5.1786354649812;-7.52294154372066;3.34905544295907;8.93987443298101;-8.26323410496116;4.03246198780835;-2.14110259898007;0.302235344424844;0.444292132742703;-4.67253972776234;-8.31317789852619;-3.84183284826577;-9.39631237648427;1.24717963859439;-3.88831850141287;0.649426076561213;-9.08205716405064;-2.93145864270627;9.99007356818765;4.37513921409845;-6.10827164724469;-2.42427532561123;-2.01796398963779;1.68640641961247;8.16120836418122;4.73402281291783;-4.05434843152761;-8.78409006167203;-5.53034830372781;-2.46995013672858;-3.41787083540112;9.72719104960561;3.34714439231902;-3.61494807526469;-4.74709247238934;7.90262167807668;-7.37862889654934;-6.30149140954018;-3.51723111700267;-5.5289577273652;5.82721752114594;6.29513912834227;-8.85417982935905;5.54040019400418;6.05894653592259;0.182865508832037;-9.01517204008996;6.41986085101962;-6.50361240375787;6.57327459193766
+-1.46687913220376;-8.99968769401312;5.48226056154817;6.81349199730903;4.12437573075294;-9.70151789486408;-6.57387415412813;-4.59822274278849;-3.98993472103029;4.16204956825823;6.52613454498351;3.21577304974198;9.5227389736101;0.707293464802206;3.63971971906722;4.34607340022922;-9.53643591143191;-9.1415795031935;3.42251767404377;5.19698369782418;-4.57588483113796;-5.31585318036377;2.91199385654181;-8.87717387173325;0.8044045092538;-3.00849272403866;1.15514568053186;-4.73351316526532;-5.64950689673424;-0.214598430320621;4.89777817390859;-7.04534684773535;4.68967908527702;2.14321138337255;7.05817265436053;1.63101615384221;-2.04154179431498;9.97986984904855;-8.63335656002164;4.22467611264437;7.76633675675839;-9.82788771856576;-5.48174610827118;7.87750559393317;4.83233605045825;-5.95184094738215;1.01422998122871;6.85198963154107;-3.68456994649023;0.484411246143281
+-3.63094906322658;-0.0237854896113276;-7.85120171029121;-5.92126277275383;-2.65099758747965;-9.78737656027079;-9.38516815192997;-6.17865479551256;-7.59573831222951;4.02348282746971;-9.68598420731723;1.95261656306684;7.73337536025792;-2.33539627399296;-6.47370964288712;-5.54950498510152;-7.54064668435603;-1.67788243852556;0.793657363392413;-7.63706705998629;1.16219637449831;-6.33513073436916;-3.64374247845262;-7.19684295821935;-5.48967978451401;-9.01186204049736;3.43639881815761;6.52756869792938;9.54621728044003;9.89761384669691;5.53219772409648;2.03980414196849;-8.78931230865419;1.21708222199231;-5.75831745285541;-9.33307729661465;0.277683455497026;2.51820014324039;-2.99030701164156;-9.21461168210953;-5.82599927671254;1.53300027828664;-3.59680765774101;-2.38809743896127;-0.779147180728614;9.98779877554625;2.84246403723955;-2.10900487843901;-1.96082320529968;-1.57728883437812
+4.13637737743556;-2.19541364349425;0.336990994401276;-6.79807990789413;5.12163170613348;0.405222587287426;0.0366898719221354;-7.27860816288739;-2.23090359941125;7.18492890242487;-7.7393960300833;3.07336391881108;7.66912742517889;-7.71543519571424;9.59670113399625;-4.8441476887092;8.16075176000595;-8.29539924860001;-8.01354818046093;0.34245986957103;8.34308627992868;6.21629758737981;8.28974552918226;-3.34652735386044;-8.57326531782746;-2.61974926106632;-9.87982987426221;-1.89595791511238;-9.26993497181684;4.55693005118519;0.96279957331717;-9.50940007343888;-8.86184039991349;-4.73346177954227;7.36718291882426;9.25297518726438;-8.81309171207249;0.499881100840867;-7.10459939669818;-2.54821771755815;4.32862077374011;4.31483610533178;3.00784581806511;4.44511608220637;-0.268686735071242;-7.74461681488901;-1.44016421400011;-5.32140275463462;-4.57148602697998;8.17421949468553
+3.44084776006639;4.05141893774271;3.94102522637695;7.05715226475149;2.281792787835;-3.33232121542096;-1.49812578689307;-4.83502467628568;-1.9381002523005;-3.77363048493862;-2.35570536460727;0.939885270781815;1.57880264334381;9.20694430358708;-6.34555234573781;-0.360321495682001;7.84715958405286;6.88507489860058;-5.5178756499663;9.65834321919829;-5.99402341991663;-3.36920572444797;8.33661115262657;-7.49785778578371;-1.53455414809287;-6.60937970504165;-9.15503247641027;7.66495417337865;-9.33879197109491;-4.69809594098479;9.89266976248473;6.57757340464741;9.16761432774365;4.98866349458694;-6.43233226146549;5.69349301513284;-7.64250522945076;4.30322025902569;2.61751029174775;-7.58589731529355;2.17156048398465;3.37245039176196;-1.98120248503983;6.80614704731852;-9.84234187286347;3.52703548036516;-7.05813230480999;7.03708408400416;-6.99129723478109;1.74666188657284
+0.211302051320672;-0.658811200410128;9.79749950114638;-4.42464305087924;9.1313413484022;-6.20300948619843;2.79211555607617;-2.81779560726136;1.55074771959335;-2.03789934050292;0.383745180442929;1.56233792193234;1.07972933445126;-5.21666633430868;3.90179195441306;7.14648436289281;-5.23585677146912;-0.745496372692287;-5.05379871465266;6.62562966346741;0.528438608162105;9.22195811290294;-0.0805547460913658;4.79824886657298;2.57991813123226;-6.19742069859058;8.94835722167045;7.12405987083912;-0.358272837474942;3.99009291548282;5.02585023641586;-9.20708511490375;8.26087993104011;-0.208844668231905;5.23289180826396;-6.06888697482646;-0.303219319321215;-7.69299285020679;4.3629853008315;-7.46300567872822;5.04277984146029;5.95432132016867;1.23047543223947;8.46533536911011;-8.12581890728325;8.68938002735376;-3.97242938634008;-2.18800216913223;-1.16225173231214;5.89395856019109
+-0.248136636801064;-7.00533059891313;2.61770765297115;5.47447952441871;5.97110067959875;-9.97067962307483;-6.24613041058183;4.99672390054911;0.1114067947492;-3.02665262017399;3.5416857432574;3.41407525818795;-9.23143412917852;-9.64231944642961;-0.750980018638074;5.1398600358516;7.40396608132869;8.63208265509456;6.06620086822659;3.41826975345612;-0.262974100187421;2.01480410061777;-1.68177888263017;1.79082320071757;0.430037477053702;-0.889840167947114;-3.02292268723249;9.73154653329402;-1.95854722522199;3.19072195328772;-3.5158622963354;-9.61690363008529;-0.513510885648429;-5.12007627636194;6.52031890116632;-5.56782856583595;-5.31602958682925;1.93942493759096;6.07310573104769;8.19729000329971;-5.20757180638611;4.21958519611508;-1.95014377590269;-2.08005023188889;1.80146276485175;6.13450299482793;-2.66873076092452;7.78979437891394;-5.81737099215388;5.78732018359005
+-5.95134048722684;0.64440977293998;-9.31509895715863;-5.4715353762731;6.31604399997741;7.95098804868758;4.98104906175286;3.1234361929819;3.41750358231366;8.24159506708384;5.27541634161025;8.65885046776384;2.62035835068673;-5.89217300526798;-2.35680581070483;-8.02168586757034;-4.96191075537354;-7.59403725620359;6.92593610379845;-8.72566321864724;-5.68809172138572;-1.58769465517253;-2.85978107713163;3.89673663303256;-1.10919849015772;-3.63074521999806;0.974732809700072;6.3015559501946;-3.58811778947711;-1.1886235140264;-7.73947279900312;-0.883014108985662;-8.01558345556259;7.00241860002279;-1.07420144136995;8.54066533967853;3.05392569862306;-9.05407186597586;-0.861789649352431;-8.22129244916141;0.0433695875108242;-9.5641315029934;1.83408316690475;-1.26781403552741;1.29040053579956;0.340163954533637;8.88768725097179;-6.57996650785208;-3.38268752209842;0.678116483613849
+-3.15379882697016;4.40788864623755;-4.87773448228836;9.94672800414264;-3.20182284805924;7.24458023440093;-2.6591873774305;-8.58270069118589;8.79775083158165;0.15961604192853;-6.87503800727427;7.14515350759029;-3.32896967884153;8.60295389778912;5.04593676421791;8.00039655528963;2.05014457926154;-6.59530120901763;1.05942416936159;-8.79985303618014;-8.59121645335108;6.68008273467422;7.14516978245229;-2.79120061080903;5.23752531036735;6.44265171606094;-8.10193601995707;1.23983829282224;3.7075563846156;-6.6168950451538;4.42287204321474;9.43685141392052;2.24058589432389;2.11461717262864;-7.58389663882554;-6.15004493389279;-5.37361245602369;4.59839195478708;-9.64914015959948;9.39597575459629;3.52368575055152;-1.62553398869932;-9.27141367923468;-7.81656253151596;-6.31225804798305;8.80325742997229;-5.96373555716127;0.147199262864888;-8.55569012928754;2.72068470250815
+-3.45444160047919;-3.02118091378361;2.46614801231772;0.279745501466095;-0.549177997745574;4.13749341852963;3.31298363395035;-2.90611634030938;-1.13101646769792;-3.65228141658008;-7.33881335705519;9.04890135396272;-3.22416743263602;-3.97284165024757;7.28987690061331;-8.64527582656592;9.8327271733433;-8.8733169157058;8.15113948658109;-1.28479420673102;5.81378670874983;8.15907931886613;-4.24974825698882;-7.73280487395823;-2.70050728227943;8.43875158112496;3.79422562196851;1.65303555782884;-4.1533130267635;-7.05723270308226;1.99189153499901;6.68018584139645;0.711789890192449;7.88870974909514;-1.96660622023046;7.43465032894164;-3.85417049285024;-7.20230542123318;6.86398940160871;-6.54390341136605;4.26609706133604;5.48916168510914;7.43011978454888;8.19896493572742;0.181111288256943;4.97137335129082;8.70282070245594;0.212359144352376;4.00053424295038;5.6763632548973
+-6.15133660845459;1.02186263073236;6.15947534795851;-4.33009461965412;9.15040839463472;-5.70805890485644;4.09793534781784;6.22995025012642;-8.3233016403392;3.66662106942385;-1.47846284788102;-6.9479204621166;-2.8762770909816;5.37258503958583;8.72115936130285;-2.94797374401242;-6.59947487991303;4.56825393252075;0.0444928416982293;-3.17647418938577;-2.70225362386554;-1.35037671308964;-5.81237059552222;-7.40872968453914;5.28651172760874;8.25758079532534;-0.761458249762654;-3.29966388642788;-7.07559139002115;-4.83024627435952;-4.66614903416485;-2.72781424224377;9.00248317979276;2.88579841144383;-2.42074457462877;8.62721321638674;-3.86734030675143;-8.04232738912106;6.33914357982576;3.69739590678364;0.54462849162519;4.83799585141242;-5.33279031980783;-3.16615222021937;-9.61449617519975;-6.49036905728281;7.9131946945563;-9.71907482482493;7.6806648960337;-4.28310630843043
+4.00735397823155;-3.53623060975224;-5.89975991751999;-8.5516019212082;-3.23074541985989;1.76440019160509;0.961063588038087;3.61831777729094;6.93281101994216;3.43995634000748;1.33956457022578;-3.26313689816743;0.559191438369453;-3.04376086220145;-1.3460869435221;-3.81480578333139;7.93403325602412;1.31473672110587;-4.6245998935774;4.9237128905952;7.41564477793872;7.74492192547768;-0.366384605877101;-2.04689065925777;-1.76678320858628;1.58001702278852;-2.14355442207307;6.64704934693873;-8.24592318385839;-1.60983437206596;6.87427286989987;7.66381112392992;-8.68369482457638;-8.60488536767662;-9.26863124128431;-2.07755739334971;5.44206429738551;7.1747568435967;-5.15986390411854;-2.1877652965486;2.39638868719339;-2.27123739663512;1.28395509440452;0.783659843727946;-4.65773993171751;4.08428370021284;-7.84401192795485;5.33471958711743;-6.43817460630089;0.986041408032179
+8.83325396105647;-9.83566348440945;-7.23657253663987;3.80275092553347;-7.31872680597007;-1.39065472409129;-9.75384030956775;6.7440623184666;9.45356335956603;-5.09692958556116;-7.02596968505532;1.30144567228854;3.51990150287747;-8.86977589689195;4.89032328594476;4.18366018682718;8.19704079069197;1.58380834385753;0.332736312411726;-1.88324408605695;-1.5346704563126;-1.47734647151083;4.88907438702881;-9.85626785550267;-5.63517595175654;-2.87998725194484;1.83566893916577;-3.12193839810789;5.8953476138413;7.29849769268185;0.189725873060524;5.55926604196429;-6.3330541132018;-9.21461439225823;-9.73868964239955;-3.49825104698539;1.04665959253907;9.48543031234294;1.58305872697383;-9.71569777932018;7.6867732219398;3.95505938213319;-3.52684511803091;8.54676174465567;6.34100080467761;0.98570269998163;7.97342596109957;-5.71468184702098;9.68896745238453;-4.89466839935631
+0.672246124595404;-1.48453511763364;9.20422844123095;-3.03589998278767;5.12909416574985;-5.72289548814297;-1.34595673065633;6.43533964175731;-5.88364278897643;9.58082197699696;5.25551766622812;-0.0025742594152689;8.93277161754668;-8.34639484062791;1.80900567211211;-0.658556199632585;9.45040756836534;0.649222205393016;3.17807751242071;-2.8040471766144;0.475360844284296;0.991908069700003;1.91525365691632;-2.99864396918565;-3.25425634626299;-4.89486262202263;0.39805153850466;-8.08801249600947;-4.95644022710621;8.43810020945966;-3.99248391855508;-0.67017633933574;-1.4660124015063;5.91610794886947;6.51989583391696;6.355194253847;5.69779612123966;9.07943447120488;-6.96073609869927;-5.80264110118151;-7.82543138135225;3.39310676325113;-3.25581192504615;-0.197024857625365;4.34864603448659;4.73846157547086;-6.58771425951272;-2.13905732147396;9.59588900208473;7.09341956302524
+7.58107749279588;3.63982708659023;7.94682327192277;8.65511973388493;-1.80020107887685;-8.86353590060025;-0.410251705907285;-6.25156533904374;7.49228127300739;0.291720223613083;-1.40225255861878;5.24093471467495;3.2388056255877;9.35618491377681;7.13469320442528;-2.11256563197821;2.66506948973984;2.42585891857743;-2.65157056972384;-2.25142591632903;-9.7589177871123;-1.46207853686064;7.78914960566908;-8.00710367504507;0.0879993615671992;-3.02862690296024;4.67298408970237;-4.26656357012689;-4.92751302197576;1.69091826304793;-2.4817012809217;6.87315701972693;3.87922691181302;0.695008668117225;5.99294395651668;8.06331487838179;9.90766021888703;7.3382741259411;-4.15873585734516;9.96236407663673;-7.8340743528679;5.14761667698622;-0.405810507945716;-9.76196404080838;-4.7261382220313;-5.02373667899519;-5.9931758698076;6.99181018397212;-2.50402072444558;0.717650055885315
+9.74050461314619;-6.03554190136492;-7.91061689145863;9.55278289504349;1.30419270601124;-0.222371271811426;0.438202661462128;-5.42422731872648;6.41767673194408;-7.9478767234832;4.64703406672925;5.62365466263145;6.97534032166004;1.55760694760829;7.78080401476473;7.54665846005082;-3.29416751395911;-1.30827293731272;6.92499411758035;-6.66808532550931;2.03736873343587;6.30820686928928;-0.845594028942287;2.58359028026462;-4.54435805324465;-7.58535352069885;2.21260562539101;-1.31204725243151;-3.69171060621738;5.784692754969;-8.44472392462194;-3.39541365858167;-1.47627397906035;3.59253119211644;-1.84993412811309;-8.71974320150912;2.71703039761633;2.85816551651806;-0.738424081355333;3.67838666308671;-5.0520585803315;-6.57176409848034;3.15003295429051;-1.77502567879856;-1.11495275981724;-0.2137091755867;9.02115891687572;-8.45922585576773;-3.22759276721627;3.66495259106159
+-0.963809005916119;0.332446284592152;-0.424088849686086;4.1910248901695;-5.71721099317074;8.55298625305295;-6.57420556992292;-5.04477551672608;-0.395305943675339;-3.65346211008728;-6.49775304365903;5.8396471105516;-8.93199569080025;-8.16322598140687;2.4867172120139;-2.72649912163615;-6.84059537947178;1.84159512165934;5.76419666875154;-6.46783592179418;-4.36516441404819;-9.15441046003252;-3.09866877738386;8.90153735876083;-3.0282928282395;-5.37652145605534;-3.52156199514866;1.75426101312041;-0.543876825831831;-6.46772329229861;9.85788447782397;-9.5675030676648;-4.59289375226945;-0.224606916308403;-0.944285970181227;5.74221878312528;3.29453577753156;9.18692180886865;5.56816820055246;9.43155385553837;2.73250436410308;3.212522524409;-4.22125696204603;0.751238148659468;-8.55142373126;7.72935832850635;-3.77345030661672;-9.9059846997261;-5.81246025394648;0.0550226494669914
+-9.83750865329057;-6.75566212739795;7.35276787541807;5.41200376115739;6.90440714359283;-3.80504971835762;-8.22416848037392;-5.63469466287643;6.05722258333117;6.02107546757907;9.30642815306783;8.58502996619791;-6.06204251758754;-7.92654625605792;-3.78712947946042;6.98026668746024;4.08223039470613;-6.50454617105424;8.20557251572609;-4.66814196202904;-9.5083824545145;-9.37921803910285;0.903021916747093;8.15888987854123;-2.9844108922407;-3.20388241671026;-3.14658686518669;3.45413522794843;-7.39788152743131;6.7496055457741;-4.3647347483784;8.74933863058686;4.53504576347768;3.09399851597846;-4.80296953581274;4.89087061025202;-0.843561650253832;3.39998902287334;0.310276309028268;-4.39462620299309;7.68135104328394;3.29146259464324;-2.30281976051629;1.75494364928454;8.11310010496527;-7.7073623938486;5.99727008491755;-4.94156718719751;-6.11469796393067;7.56009753327817
+3.44123572576791;4.14071591570973;-5.64473695121706;-1.13854938186705;-8.71971555519849;-3.10240144841373;-5.20975683815777;-6.45941623020917;-5.00602967105806;9.50895761605352;0.7786820596084;2.82543493900448;-6.22941717971116;-3.69184895418584;4.66685818973929;-2.72665885277092;6.06477081310004;-1.41921114176512;0.465673850849271;-6.09520417638123;-3.85083809960634;-6.61040975246578;2.67489212565124;-7.31187355238944;8.86950870510191;7.26803990546614;-6.21392598375678;5.04795501474291;-1.45798281300813;-3.93183385021985;-6.33775315247476;9.16967602446675;4.34239516034722;9.43996965885162;-0.988722261972725;1.88126740977168;-7.05838020890951;2.37899182830006;6.51584465522319;9.45845275651664;0.131198763847351;-7.71356721408665;7.53601674456149;-6.34791882243007;-6.85531780589372;0.815682453103364;-4.02297066990286;-8.38654296007007;-0.95435687340796;-9.76483441423625
+0.84526464343071;3.89179492369294;3.53452338837087;-1.02044679224491;-5.66052835434675;2.95387692283839;0.43044843710959;-5.14410382602364;-2.01011417899281;-2.70746933761984;-5.99080903455615;7.72365500219166;3.34418029058725;-1.31404872052372;2.02791671268642;-1.25798556022346;-9.27795349154621;-3.49014874082059;0.0461325608193874;-5.50638746004552;-3.94017679151148;5.91782537754625;-6.64940666873008;2.35801106784493;-6.21543854940683;-8.98759094066918;8.45224136020988;9.76900878362358;-1.98158158455044;-9.53261459711939;7.43367160670459;5.91043272521347;-9.84266332350671;6.58008144702762;5.91281076427549;0.448405374772847;0.324925309978426;-9.93832284584641;-9.94513901416212;5.49800807144493;2.36064803786576;3.54679064825177;-8.76806116197258;7.07305972930044;-3.978913850151;-6.75583509728312;6.99688302353024;-2.14868041686714;-9.46923668030649;-9.83330625575036
+-5.85500108078122;0.463563385419548;-1.65101959370077;6.33230119943619;-4.60886753164232;0.221633068285882;1.84922148939222;9.34178712777793;-6.34770014788955;3.79634737502784;1.89652511849999;-1.07521350029856;-6.05542838107795;-6.11244003288448;7.92879093438387;2.69975190516561;-2.75648928713053;5.66965250298381;0.223541064187884;5.09782412089407;7.09253320470452;8.07030969765037;8.50386802572757;4.3156718602404;9.45966539904475;1.26665619201958;6.07941235881299;8.95459773018956;-5.41993672959507;2.35338847152889;-7.36394508741796;4.83850894495845;6.24882419127971;3.66485083475709;8.53682290297002;-7.15516003780067;-1.94161557592452;1.59710324835032;7.09335811901838;-5.32654274720699;-2.17087759170681;-2.8187341010198;-2.527862386778;2.88914163596928;3.74434725381434;0.690650627948344;-4.33533595874906;6.42489056568593;8.15357240848243;8.26486410107464
+-7.60722906794399;3.58694082591683;-7.07694637589157;-9.22526464331895;1.25925150699914;6.88485514838248;7.92434043716639;-5.69990066345781;-8.70962245389819;9.38953314907849;-4.33115480933338;6.90089716110379;3.21560696233064;-4.38024623785168;-0.512402951717377;1.0985059896484;7.41011197678745;7.63306649401784;6.33220714051276;1.45998797379434;6.14860663656145;-6.52121302671731;9.59552004467696;-0.972729017958045;4.19765453319997;5.76753225177526;-3.27513075433671;4.71945026889443;4.92829197086394;6.14954872056842;8.49586667027324;8.11001389287412;-0.363893024623394;7.96487390063703;5.34838935360312;4.64559729676694;-8.77614463679492;-1.41073029953986;-0.330490935593843;-2.9042265098542;-8.71894991025329;2.85547721665353;-1.5813402319327;-4.54317546449602;9.51367505360395;-3.51313415449113;2.25199613720179;2.7842125389725;9.43134021013975;-7.80473307240754
+1.92395100370049;-8.93611112143844;-4.06091617420316;6.06776695232838;9.10878786817193;3.14165704417974;-1.02651773020625;-4.44037376902997;-0.640321499668062;-8.31950309686363;-6.36133561842144;-4.82511576265097;-1.7566239181906;6.11657340545207;3.60016554128379;3.65973438601941;2.45537996292114;-6.342180413194;0.213265577331185;-6.89521970227361;-1.61198620684445;3.89337158296257;-3.41350711416453;8.54283534921706;-2.45311813894659;-1.72633720561862;4.30204379372299;0.188188920728862;3.09258261695504;9.43667139392346;-5.9241593722254;2.88449699990451;5.18554989714175;7.84374577924609;8.77669028472155;8.58684713020921;6.06567447073758;-6.62299821618944;-5.53452834486961;8.26169884763658;3.93097185064107;-1.28312472719699;2.33026368543506;-9.01424609590322;-6.28484042361379;-1.12672682385892;3.32404897082597;2.12685634382069;3.53269481565803;8.47927087917924
+4.17765623424202;0.681213526986539;-1.72585264779627;6.01460637059063;1.46002802997828;-6.27489195205271;-8.80491291172802;1.15750160999596;-4.17502905707806;5.00575791113079;-9.59346296731383;7.96534090768546;3.74331522732973;-9.40215796697885;5.7397010596469;-1.07698030769825;-4.13576975930482;-2.83782399259508;8.2556071691215;5.35854370333254;-9.4766285829246;2.09140193648636;7.55599706433713;4.45900144055486;-2.3583302507177;-7.54078679252416;5.52224181126803;-0.862822839990258;-8.43945985659957;-7.22234750632197;-1.73031309153885;-0.158245586790144;5.24732520338148;4.01480949483812;-5.40815243963152;0.193815981037915;7.92814413551241;9.55093077383935;2.96679739840329;2.79801344033331;9.8794179270044;1.17210150230676;-3.40937833767384;8.94201069604605;-9.52477384358644;-6.94694932550192;5.7927365694195;3.929613083601;8.08833801653236;-4.05397207476199
+1.50266909971833;-6.68402771931142;4.88206738140434;-6.78644688334316;-5.87546578608453;-7.29050312191248;2.34352420084178;-3.10924975667149;-0.383342010900378;7.36909604165703;4.10755759570748;5.92460259329528;-3.13472704496235;-0.223634662106633;7.32076317537576;2.15690093114972;8.65061008837074;7.11373063270003;-0.771594098769128;1.99343077838421;9.24453770276159;3.42939872294664;-2.70780949853361;-1.64409202057868;-2.11503935977817;6.54480206314474;-6.08183293137699;0.785245005972683;1.66091259103268;8.63070397172123;8.9707274036482;3.3247988531366;6.31001752335578;-2.4568994436413;-8.51578925270587;7.59546167682856;-5.70922889281064;-2.38869517575949;-7.93713907711208;9.66123735066503;-7.55591842345893;-5.01343458890915;-6.64019245654345;-8.28682831022888;-4.35490884352475;4.42233108915389;3.56182926800102;-6.73390297219157;-3.68345078546554;2.04183448571712
+1.85045029036701;8.41795700602233;-4.38453448936343;0.404267385601997;2.25592006929219;2.2671782085672;3.04789711721241;0.832428517751396;-4.22513405326754;0.562675539404154;0.0243629887700081;4.10584938712418;-7.67324351239949;-2.07135136704892;5.77150504104793;1.8892207974568;7.24780068732798;3.15266153775156;4.8702714825049;-2.25387635175139;9.97839164920151;4.41693349741399;-7.13475835043937;8.84416682645679;7.55167020484805;-0.206361981108785;-7.02366723213345;-6.69259991962463;3.17941514309496;-8.60028730239719;1.36627619620413;-5.80737562850118;9.84935480635613;4.45783339906484;1.15908470004797;-9.51833435334265;5.73097701184452;-6.86409590300173;-0.751708676107228;9.26046326290816;3.65344792604446;-8.06970803067088;-0.262640006840229;-6.90483701881021;-9.95195472147316;-4.8840561741963;-1.0324636194855;-4.64805215131491;5.25561080314219;-5.22005567792803
+-5.18959170207381;-8.00200340338051;-5.782440751791;-8.7190187908709;0.897424020804465;9.29450007155538;9.0950888954103;-0.752067659050226;-0.219086459837854;0.637031705118716;3.10674699489027;1.16765648592263;3.02043490577489;-1.47443274501711;9.28429604973644;5.83788923919201;2.60086404625326;0.731565016321838;-4.59669589065015;-1.16172437090427;-8.37653155904263;8.66806539241225;3.15868415869772;-0.017845006659627;9.74600434303284;3.56972530018538;4.84454223420471;7.52258140593767;2.10704806260765;-8.32379998639226;-1.65953281801194;-6.82760705705732;-2.29787165299058;4.5861299848184;7.30691695120186;-8.22228358592838;-3.00306745804846;-9.5769504411146;7.87716295570135;0.0821259245276451;7.51039915252477;6.66292406618595;0.164906550198793;7.94305197428912;6.42295662779361;8.58592995908111;3.62322201486677;0.796448197215796;5.52108026575297;6.2937538465485
+-8.81974706891924;2.19718046020716;9.24693157430738;7.43198630400002;-0.0070585822686553;-7.90271568112075;7.19220899045467;1.93529481533915;-2.27925521321595;-6.03206246159971;-9.4557872088626;-4.66071699280292;-6.28529662266374;4.31927165947855;9.53987234737724;7.2094347095117;1.39150737319142;-7.00258451048285;8.77816942986101;5.10619441047311;4.99679563567042;-6.95552181452513;7.1223528124392;-4.5382622256875;4.82165154535323;-6.57586624380201;6.30249478854239;5.87780857924372;-1.33615613449365;-3.62924947869033;7.70780337974429;5.73721621651202;3.41107412241399;0.329789277166128;7.61856465600431;9.98581001535058;-4.58937323186547;0.330518414266407;1.56040953937918;6.16061435546726;-0.365296490490437;0.653513846918941;-2.51838797703385;-9.05502039939165;-6.95281335618347;7.48355286195874;2.80147068668157;8.10969306156039;2.50209617428482;-0.314636221155524
+8.51704343687743;3.18952542729676;-2.5737387035042;8.19664612878114;9.50265965424478;-4.66975776012987;2.02127442229539;2.92558474931866;-7.13535660877824;7.3693613987416;9.00772011373192;7.75773896370083;-2.7115570846945;-1.04122353252023;-8.49771040957421;-3.55294010136276;8.62496358342469;7.39094171673059;2.02777643222362;-2.18160981778055;-1.68516180478036;0.825223564170301;-2.44130352977663;8.89385398477316;7.08928042557091;7.44594035670161;-8.95981184672564;-6.62544039078057;-3.61116039566696;-8.75607748050243;8.19705807603896;-5.36208814010024;-6.56102739274502;7.90033573750407;9.23813346307725;6.20146081782877;-0.169275104999542;-8.26386373490095;-3.80014259368181;8.04532123263925;-6.46702378522605;2.65568294562399;-4.86903317738324;3.86243483051658;3.83517004549503;2.96145016793162;-6.9912554230541;3.51329834666103;7.27250324562192;-5.74022637214512
+4.65975082945079;1.03103025816381;-8.26204331126064;-8.9580305526033;-6.23447274323553;3.59147435519844;-0.311128282919526;-9.19148910325021;0.4020811105147;5.93348633032292;9.63767777197063;-3.33142482209951;-1.25190077349544;-9.61523605044931;-0.807232861407101;2.29587906971574;-5.9278377937153;-3.68276782799512;-4.01288039050996;7.89671184495091;-6.30188455339521;-9.66768936254084;-3.5317748459056;-7.89895187597722;7.85148268099874;9.36085755005479;6.77370212506503;5.46805324498564;4.79103818535805;-6.31859075278044;5.2713986299932;-4.71766031812876;9.03056125622243;2.71243603900075;1.39329225756228;1.77125933114439;-0.586289810016751;-9.95136842131615;7.49903141986579;9.93787524756044;2.58628382813185;8.1236878130585;6.77275944966823;1.18944823276252;4.28065205924213;-6.3498562714085;8.94444526638836;-4.41896675154567;-9.38277923036367;6.92051232326776
+-6.13384060095996;8.13119222875684;-0.272525665350258;-9.4768043095246;-5.66589108202606;5.35472322721034;-3.71608731802553;9.9971769284457;0.407986044883728;3.89341159258038;3.84163813199848;-7.22505727317184;-3.24525727424771;6.99810151942074;4.65089433360845;-1.21951038949192;-8.14013602677733;-6.2566306674853;3.34774103015661;9.62394345086068;3.26734184287488;-2.37575739622116;-2.48254535254091;-8.70883881114423;-8.47829936537892;0.418646186590195;-6.72554918564856;3.49138301797211;6.78180746734142;-0.518813817761838;7.18784515745938;-9.41955767106265;-5.6071297172457;3.80525540560484;-3.05630695074797;-0.440179533325136;3.19162144791335;-3.78614617977291;-6.77419588435441;1.35647838935256;0.273657068610191;7.27078906726092;9.83330824878067;-9.66122898738831;1.12873468548059;9.35824740212411;2.01226289384067;7.1316901827231;7.41189812775701;9.42752887494862
+2.79267411679029;-1.01594476494938;-5.78517741058022;-3.09829688165337;-5.8479672530666;-4.42419525235891;6.65427856147289;-2.84739703405648;-8.40753957163543;-6.40591039787978;-0.291606555692852;4.64201013557613;6.91960307769477;-6.36128766927868;-8.38057368062437;9.75526238325983;1.25307531096041;-7.9057002114132;-4.45560533553362;0.669833766296506;-5.05533131305128;9.5676316972822;9.81677890289575;-2.49186496715993;-3.88401562348008;2.62208347674459;-6.25844160094857;3.94112636335194;3.98182791657746;6.11863765865564;3.88760273810476;5.7973565440625;-1.2392918439582;9.76569528691471;-7.58010524325073;8.1567541975528;2.95674892608076;-5.70833620615304;4.09020032268018;-5.20442891400307;-1.10279457177967;5.12779886834323;1.92722450010478;2.24023687653244;0.383118377067149;0.634263386018574;-5.44806733727455;8.2748916419223;-8.63647751044482;-6.81667800061405
+-8.72725997120142;-8.18899086676538;-2.73534313309938;-2.35729963053018;-8.63047481980175;-6.32850039284676;7.04079327639192;-8.11112015973777;-9.80259967967868;2.23644045647234;-7.58839980699122;-1.87694161199033;-7.92501993943006;-1.187744718045;7.42776933591813;0.137573867104948;-2.45055417530239;-3.30027721822262;9.90031794644892;0.424199686385691;2.72242859937251;-2.89816075470299;-0.341046922840178;9.08928358927369;-5.84731702692807;2.14314771350473;2.53528874367476;9.04902327805758;8.72626249678433;-6.76231524441391;-4.92372249718755;1.42553021200001;2.50001019798219;-3.2188491569832;6.08286809641868;1.44819071050733;9.86128674354404;-4.71609472762793;-5.34553851466626;9.39166031777859;-4.79240440763533;-5.06881497334689;3.27165914233774;-4.14738099090755;-8.64353818353266;8.58391440473497;6.48277472238988;7.06657837610692;4.98944866470993;5.19586625508964
+7.8009919822216;-7.93565833475441;8.97411309648305;-6.44773517269641;-1.42380595207214;5.55587096139789;-6.16541659459472;8.68498994968832;-1.19295032229275;-4.55470788292587;2.55838172510266;0.688966265879571;-7.87745343986899;6.38354365248233;-8.49323194939643;7.41709972731769;-2.59713067673147;2.03046775888652;2.84966154489666;5.00215766951442;3.79994398448616;1.9352199928835;-9.65271881781518;9.29075065068901;6.74368037842214;-5.39394814986736;7.9099217010662;4.52505598776042;-9.61519579868764;0.377052640542388;-4.03090025298297;-7.95966167934239;-7.57568609900773;5.31749034766108;-2.83389186020941;1.63047649431974;-3.40090257115662;8.91909937374294;-3.08372204191983;-4.96948155574501;1.8514222279191;4.8722212202847;0.192521275021136;2.41370613221079;6.10297732055187;-3.82881849072874;-2.79055689461529;-2.71612196229398;8.37584989611059;-4.55273206345737
+7.81438383739442;-1.51372209191322;-1.85057146009058;-2.17109142336994;-5.21311559248716;-8.86271759867668;-9.87544095143676;6.87338822055608;0.897539630532265;5.6858438719064;-3.387759947218;-8.16799917258322;-7.23972332663834;9.76083621382713;-3.6143463710323;-0.688498066738248;7.23584584426135;-1.51920504402369;-2.38093832042068;2.10830109659582;7.08069528453052;-8.39384085033089;8.21721104905009;1.29004828166217;-8.51232888642699;-9.82787608169019;-5.34497109241784;4.77480452042073;-1.21913618408144;-0.914144585840404;1.18129659444094;0.279922229237854;-7.67154887318611;5.02575613092631;-4.56889046356082;-9.75793425925076;-0.509182633832097;-7.00469987932593;-2.98161458689719;3.10473163146526;-4.85503940377384;5.24327093269676;-2.77186117134988;-3.58168067410588;8.82561979349703;-5.07769010961056;9.62740895338356;-5.3836271725595;3.53423002641648;7.82088670879602
+-0.451365909539163;6.84112021699548;-4.42354371305555;-5.29241361655295;6.80389895569533;-7.77861976064742;1.49357237387449;-2.35339065082371;-7.81721887178719;-2.40414031315595;-0.395754659548402;-5.79165300354362;-1.2903947243467;2.65687917359173;5.50563386641443;0.834196573123336;-4.80319577269256;-1.22392548713833;4.77754366584122;5.34333050716668;-3.77798126079142;2.89589047431946;-7.44961774908006;-8.14636585302651;0.748985526151955;7.74486270733178;-5.74232000857592;6.80986227467656;-1.6192386765033;6.51530107483268;-4.02350929565728;-5.68768531549722;9.5673744706437;7.72254023700953;-1.31038736552;-5.51889081485569;0.258864741772413;9.80441966094077;1.45621500909328;5.43190744239837;-2.53882837016135;5.09262776002288;7.63310595415533;-7.48650831636041;-6.62117465864867;0.727485627867281;-7.89836632553488;9.20172462705523;-4.81543452944607;-1.15785500966012
+-6.2114098854363;-2.05818870104849;1.26142825931311;2.27071457542479;6.90742480568588;-1.47783466614783;-0.886977477930486;9.67493838630617;-7.12415785528719;5.09112253319472;-7.5209613610059;-4.35205768793821;-3.99539604317397;7.20059189945459;-7.4933135509491;4.50711098499596;-0.366704650223255;7.88592758122832;-1.38953154906631;9.17645469307899;4.1108326613903;9.34107566252351;-1.75066862255335;0.926856114529073;7.84402969293296;-4.27303683012724;-2.0296392031014;-4.26561733242124;-0.101424162276089;0.301307002082467;-4.11309017334133;-6.19143989868462;2.54318545106798;4.1658333921805;8.50724295247346;-0.172696216031909;-2.62687825132161;1.66109876707196;-4.0378973307088;-9.39770493190736;7.44380624033511;9.4088419014588;2.69424568396062;-0.772791355848312;-7.02497810591012;-6.50331583805382;2.65069988090545;-0.162127520889044;-7.0220706006512;6.15741219837219
+1.47581235971302;-8.58117277733982;-2.26166220381856;0.609984272159636;-7.92858179658651;1.93755561951548;-3.58407065272331;1.55775965191424;9.8531856527552;2.33564816880971;-9.43946417421103;-1.09342594631016;8.38989158160985;-9.1350278025493;8.54453065432608;4.81787087861449;1.78355762269348;4.57580386195332;-4.28857985883951;-3.95539185963571;-8.3129100035876;-3.67847084999084;7.20402860082686;-4.40878183115274;-8.06847846135497;2.7357083838433;2.255704626441;-2.08080715499818;0.344708785414696;2.26096059195697;7.83029372338206;-6.30897125229239;-4.41080940887332;-1.40998639166355;5.86266838945448;-4.14825394749641;5.34136097412556;-6.04138418566436;6.37592972721905;-5.38652249146253;7.28743731509894;-1.89080076757818;1.01032626349479;7.00882732402533;8.27342257834971;-4.62677452713251;-5.90399437583983;5.29062979854643;-3.221456236206;4.68538506422192
+7.39098041318357;0.147948488593102;-7.35606583300978;2.49446460977197;-7.52666544169188;-9.27664077840745;4.7007552254945;4.34336939360946;-1.72822924330831;5.16811575740576;-3.76853199210018;-4.37949820887297;-1.58681749366224;0.101681277155876;-1.67935087345541;-1.89109502825886;-8.98319505620748;-1.92560088355094;-6.30671970546246;2.04789850860834;7.65073381830007;-7.0118156587705;-1.53151411097497;2.05661627463996;3.38716062251478;4.15388052817434;2.79965947847813;5.82789617124945;-1.43108887132257;-2.92246665339917;-3.44201811123639;-6.05611854698509;-1.91091530956328;-9.46179006248713;-7.5943543529138;-3.55741284321994;-1.92405510228127;-4.97213911265135;-0.826212195679545;-9.89368190523237;8.96105155348778;-9.34202960692346;-7.76933191809803;-6.59244473092258;2.57233188487589;-2.15875256340951;9.58001294638962;-0.259908880107105;-1.67883233167231;-0.21467815618962
+-3.16336187068373;1.62654326763004;0.947442636825144;-1.7925678845495;-8.76486902590841;7.69932293798774;-8.6972370184958;-6.81938529014587;6.98424716480076;-4.89487716462463;-7.26915988605469;-5.00579615589231;-5.22863074671477;-4.62469973601401;7.51047891099006;-1.58695439808071;-3.65858609322459;-8.1411550892517;0.484010144136846;9.87428206950426;3.1285013910383;-7.25425850134343;-0.903964345343411;-0.355818066745996;6.25197899062186;8.63930428400636;1.08609079848975;-5.6699550151825;2.84639290999621;-3.46992793492973;9.39905427861959;2.59550892747939;-2.2769221663475;5.0904923863709;6.33109448477626;4.38140356447548;-8.60805563628674;-9.44608063437045;-1.60022069234401;-9.81345624662936;-6.66604525409639;-9.6949797263369;8.45351451542228;-5.30030961148441;3.07801845483482;-1.10529175028205;-7.84050490707159;7.07970918156207;0.638091312721372;6.66905846446753
+4.09888526424766;-3.56986604165286;-6.8973425263539;-1.93663124926388;-3.01576106343418;-4.52942948788404;5.95255143009126;2.88664548657835;4.7064278787002;-2.89961637463421;-0.211292831227183;-4.94099374860525;7.58552699349821;7.33137961477041;3.36233808659017;-4.48710202705115;-1.48341205902398;-7.49758848454803;6.0407235333696;3.60934171359986;3.63612078130245;3.09698771685362;3.31156139262021;-7.71326753310859;-5.65267841797322;4.24865530338138;-1.1023169523105;6.88307916279882;8.45713219605386;-4.54224174376577;6.47032823879272;5.75250579509884;-6.10011816956103;-5.30558553989977;-2.34932901803404;4.64775345288217;0.41416872292757;2.4032420059666;-6.49799944832921;2.95014068018645;2.68165802117437;0.5729043437168;-5.36271258257329;2.30898962821811;1.90924686845392;7.17011976987123;-7.43743755389005;1.6490397695452;1.06161612085998;0.0538744824007154
+6.0839369893074;5.61524637509137;-0.89653539005667;-3.11895254533738;1.19989593978971;-2.75617298204452;0.973347239196301;9.93798133451492;8.53254863526672;-9.30103254970163;-8.04326716810465;0.926691102795303;2.72771408315748;-8.04820161312819;-0.953182382509112;-2.88888331968337;-6.33461984805763;-6.97035817429423;4.61237106472254;7.21373147331178;8.03960905410349;-1.42310949973762;-7.73285681847483;6.86140072066337;7.61489154305309;-1.49463433772326;5.63041957095265;-9.29164198227227;7.89657421875745;7.68332990352064;-5.74469934217632;3.02337015513331;5.47636862378567;-0.970255574211478;7.27351123932749;0.770066482946277;-5.73370795231313;9.66454084962606;-3.39752193074673;4.35311884619296;0.125803546980023;-8.11773095745593;3.95727531053126;-8.32146618980914;-5.26591466274112;8.16513730678707;0.157209546305239;-8.40115211438388;-3.18315920885652;-5.44761116616428
+9.95185717009008;1.55671220738441;5.14675101730973;-1.65729726664722;-9.34939151629806;-4.48380290064961;-6.90212300978601;0.395124843344092;-1.82399025186896;-0.691502313129604;-1.01792095694691;-0.258091478608549;1.22356224805117;4.1590531822294;3.84155094623566;2.72463590838015;-0.460569215938449;4.49861680157483;-0.487801469862461;0.331342676654458;-5.23522461298853;-8.17660077475011;6.6155453491956;4.65086958836764;6.6401273291558;-2.00490089599043;-6.37295639142394;-4.33077064342797;-3.39194209314883;5.0322887673974;-6.27708632964641;5.49373329151422;5.34216118976474;6.33156683761626;-0.0637655286118388;8.85932490695268;3.94386449363083;9.43032539915293;-3.05782509967685;2.64970297459513;-2.57805183995515;-9.06334536150098;9.7976361727342;-5.54664642550051;-8.61343830823898;-5.24144548457116;-3.58151400927454;-8.79899716470391;-2.49734652228653;5.08863584604114
+2.51224713865668;2.71042830776423;-5.60679321177304;7.52793726976961;9.73534176126122;3.92891740892082;-5.16159719321877;-0.0808334164321423;-4.12614306434989;-3.74914792366326;-0.551091968081892;-5.26194266509265;-1.5463823126629;5.82562402822077;-6.85637219808996;-8.74188589397818;4.61106388829648;9.83403372578323;4.2319526290521;4.34416880831122;5.18767099361867;-6.5366345923394;7.6035189954564;-3.53591633029282;-7.1178061561659;3.70200027711689;-4.48724326211959;-4.74528391845524;-6.86482488643378;9.11424956750125;-2.52892232034355;2.28784689214081;-2.03524413518608;4.84027809929103;-3.11763348057866;9.52291187830269;3.91109101474285;-0.647191223688424;-9.2794809024781;-0.294842035509646;-0.156894330866635;0.29715531039983;4.64229765813798;-7.78258007019758;0.444478900171816;-3.31753952428699;7.50800064764917;-4.2641036119312;-6.15873030386865;-7.68274993635714
+-0.109479022212327;-1.21531151235104;8.23657590895891;6.59295597113669;-3.79068135283887;-7.23089812789112;4.40600077155977;8.72878727968782;9.90224372129887;3.97586241364479;-4.25852562766522;4.39236808568239;0.616597002372146;6.22378355823457;8.88427547644824;-2.80867631547153;4.73675493616611;-4.74116060882807;0.192459751851857;8.18694994784892;-2.30717644561082;8.29374376218766;1.56528318300843;2.7891603205353;-5.28837394434959;-7.24978073034436;5.237772683613;-2.453772732988;7.77082312386483;-1.85508615802974;-3.91561780590564;-3.23756434489042;2.64155907090753;-4.57756157498807;1.98554937727749;9.43188600242138;5.2329311426729;8.26612012460828;-1.76650998182595;9.77208578493446;5.40630758740008;2.85776939243078;0.531025142408907;-0.28930754866451;-2.36260386649519;4.69780663959682;0.575258089229465;-4.47918040677905;-7.68073175568134;-7.12887870147824
+-3.11267299111933;0.238647819496691;2.45382979046553;5.24692412000149;-7.75672961492091;-4.75825195666403;-2.43095519952476;-7.16670008841902;1.57825658563524;6.61444145254791;2.54727041348815;3.42905248980969;-6.74455556087196;7.77155560441315;2.99588919151574;-1.96105618029833;4.60672521963716;-5.89665849227458;6.09580939169973;0.311477179639041;-0.0800472870469093;-8.36977205239236;-8.43018452636898;0.324460598640144;0.366602991707623;2.07316306885332;-2.93568024411798;5.78491386026144;-9.37272252049297;7.77472713030875;4.89390603266656;9.78222596924752;1.20664063375443;0.946346130222082;7.1952917939052;4.60542751476169;7.61530984658748;-5.08534101769328;-6.20860281400383;-9.41647815518081;-1.75581166055053;5.25427071377635;-0.418966002762318;8.18865921813995;-1.55370619613677;3.83608406875283;-5.76131397392601;-6.91212515812367;-1.0817532800138;1.05462166946381
+8.13120370730758;-0.651712701655924;7.43608376942575;-0.827058176510036;-5.60054781846702;-3.79131905268878;9.51511086430401;9.93227843660861;7.16539784800261;-8.44985309522599;-6.9329643715173;-6.26833967398852;-0.225079208612442;-3.40861015021801;-7.06208189018071;-8.71044587809592;-5.38991645444185;-5.61230098363012;5.8555960888043;-9.0392720606178;2.12033218238503;9.66834955383092;2.62071629986167;-1.87661712989211;6.78168048616499;2.14443852659315;-8.54815276805311;-1.62045371718705;-1.29917486105114;7.24523551296443;7.38269018474966;-2.20076059922576;6.1204277863726;-9.99591069296002;-7.22731178626418;-7.45814816094935;-7.28816821239889;2.27323542349041;-3.50709880236536;-0.466189724393189;5.8290328271687;-2.01490544714034;-9.64238869491965;3.976438655518;1.45515321753919;-9.4817804871127;9.70943210180849;-2.21358876209706;8.5804074909538;9.59443589672446
diff --git a/epclust/man/epclust-package.Rd b/epclust/man/epclust-package.Rd
new file mode 100644 (file)
index 0000000..f991746
--- /dev/null
@@ -0,0 +1,40 @@
+\name{epclust-package}
+\alias{epclust-package}
+\alias{epclust}
+\docType{package}
+
+\title{
+       \packageTitle{epclust}
+}
+
+\description{
+       \packageDescription{epclust}
+}
+
+\details{
+  Non-R-base dependencies:
+  \itemize{
+    \item cluster: for PAM algorithm
+    \item bigmemory: to share (big) matrices between processes
+    \item wavelets: to compute curves contributions using DWT
+    \item Rwave: to compute the CWT
+  }
+
+  Suggested packages:
+  \itemize{
+    \item synchronicity: to compute synchrones in // (concurrent writes)
+    \item devtools,testthat,roxygen2: development environment (doc, reload, test...)
+    \item MASS: generate multivariate gaussian samples in tests
+    \item wmtsa: generate sample curves for \code{claws} examples
+    \item DBI: for the example with series in an SQLite DB
+    \item digest: to compare \code{claws} examples results
+  }
+
+  The package vignette was generated with Jupyter, outside R packaging flow.
+}
+
+\author{
+       \packageAuthor{epclust}
+
+       Maintainer: \packageMaintainer{epclust}
+}
diff --git a/epclust/src/filter.c b/epclust/src/filter.c
new file mode 100644 (file)
index 0000000..8ece9c3
--- /dev/null
@@ -0,0 +1,70 @@
+#include <R.h>
+#include <Rdefines.h>
+
+// filterMA
+//
+// Filter [time-]series by replacing all values by the moving average of values
+// centered around current one. Border values are averaged with available data.
+//
+// @param M_ A real matrix of size LxD
+// @param w_ The (odd) number of values to average
+//
+// @return The filtered matrix, of same size as the input
+SEXP filterMA(SEXP M_, SEXP w_)
+{
+       int L = INTEGER(getAttrib(M_, R_DimSymbol))[0],
+               D = INTEGER(getAttrib(M_, R_DimSymbol))[1],
+               w = INTEGER_VALUE(w_),
+               half_w = (w-1)/2,
+               i,
+               nt; //number of terms in the current sum (max: w)
+       double *M = REAL(M_),
+               cs, //current sum (max: w terms)
+               left; //leftward term in the current moving sum
+
+       SEXP fM_; //the filtered result
+       PROTECT(fM_ = allocMatrix(REALSXP, L, D));
+       double* fM = REAL(fM_); //pointer to the encapsulated vector
+
+       // NOTE: unused loop parameter: shifting at the end of the loop is more efficient
+       for (int col=D-1; col>=0; col--)
+       {
+               // Initialization
+               nt = half_w + 1;
+               left = M[0];
+               cs = 0.;
+               for (i=half_w; i>=0; i--)
+                       cs += M[i];
+
+               // Left border
+               for (i=0; i<half_w; i++)
+               {
+                       fM[i] = cs / nt; //(partial) moving average at current index i
+                       cs += M[i+half_w+1];
+                       nt++;
+               }
+
+               // Middle: now nt == w, i == half_w
+               for (; i<L-half_w-1; i++)
+               {
+                       fM[i] = cs / w; //moving average at current index i
+                       cs = cs - left + M[i+half_w+1]; //remove oldest items, add next
+                       left = M[i-half_w+1]; //update first value for next iteration
+               }
+
+               // (Last "fully averaged" index +) Right border
+               for (; i<L; i++)
+               {
+                       fM[i] = cs / nt; //(partial) moving average at current index i
+                       cs -= M[i-half_w];
+                       nt--;
+               }
+
+               // Shift by L == increment column index by 1 (storage per column)
+               M = M + L;
+               fM = fM + L;
+       }
+
+       UNPROTECT(1);
+       return fM_;
+}
diff --git a/epclust/tests/testthat.R b/epclust/tests/testthat.R
new file mode 100644 (file)
index 0000000..eb8bc36
--- /dev/null
@@ -0,0 +1,4 @@
+library(testthat)
+library(epclust)
+
+test_check("epclust")
diff --git a/epclust/tests/testthat/helper-clustering.R b/epclust/tests/testthat/helper-clustering.R
new file mode 100644 (file)
index 0000000..785b7f0
--- /dev/null
@@ -0,0 +1,11 @@
+# Compute the sum of (normalized) sum of squares of closest distances to a medoid.
+computeDistortion <- function(series, medoids)
+{
+       n <- ncol(series)
+       L <- nrow(series)
+       distortion <- 0.
+       for (i in seq_len(n))
+               distortion <- distortion + min( colSums( sweep(medoids,1,series[,i],'-')^2 ) / L )
+
+       sqrt( distortion / n )
+}
diff --git a/epclust/tests/testthat/helper-common.R b/epclust/tests/testthat/helper-common.R
new file mode 100644 (file)
index 0000000..f442a44
--- /dev/null
@@ -0,0 +1,3 @@
+# Shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (if base==3)
+I = function(i, base)
+       (i-1) %% base + 1
diff --git a/epclust/tests/testthat/test-assignMedoids.R b/epclust/tests/testthat/test-assignMedoids.R
new file mode 100644 (file)
index 0000000..9b55d78
--- /dev/null
@@ -0,0 +1,19 @@
+context("assignMedoids")
+
+test_that("assignMedoids behave as expected",
+{
+       # Generate a gaussian mixture
+       n <- 999
+       L <- 7
+       medoids <- cbind( rep(0,L), rep(-5,L), rep(5,L) )
+       # short series...
+       require("MASS", quietly=TRUE)
+       series <- t( rbind( MASS::mvrnorm(n/3, medoids[,1], diag(L)),
+               MASS::mvrnorm(n/3, medoids[,2], diag(L)),
+               MASS::mvrnorm(n/3, medoids[,3], diag(L)) ) )
+
+       # With high probability, medoids indices should resemble 1,1,1,...,2,2,2,...,3,3,3,...
+       mi <- assignMedoids(series, medoids)
+       mi_ref <- rep(1:3, each=n/3)
+       expect_lt( mean(mi != mi_ref), 0.01 )
+})
diff --git a/epclust/tests/testthat/test-clustering.R b/epclust/tests/testthat/test-clustering.R
new file mode 100644 (file)
index 0000000..98c84c5
--- /dev/null
@@ -0,0 +1,72 @@
+context("clustering")
+
+test_that("clusteringTask1 behave as expected",
+{
+       # Generate 60 reference sinusoïdal series (medoids to be found),
+       # and sample 900 series around them (add a small noise)
+       n <- 900
+       x <- seq(0,9.5,0.1)
+       L <- length(x) #96 1/4h
+       K1 <- 60
+       s <- lapply( seq_len(K1), function(i) x^(1+i/30)*cos(x+i) )
+       series <- matrix(nrow=L, ncol=n)
+       for (i in seq_len(n))
+               series[,i] <- s[[I(i,K1)]] + rnorm(L,sd=0.01)
+
+       getSeries <- function(indices) {
+               indices <- indices[indices <= n]
+               if (length(indices)>0) as.matrix(series[,indices]) else NULL
+       }
+
+       wf <- "haar"
+       ctype <- "absolute"
+       getContribs <- function(indices) curvesToContribs(as.matrix(series[,indices]),wf,ctype)
+
+       require("cluster", quietly=TRUE)
+       algoClust1 <- function(contribs,K) cluster::pam(t(contribs),K,diss=FALSE)$id.med
+       indices1 <- clusteringTask1(1:n, getContribs, K1, algoClust1, 140, verbose=TRUE)
+       medoids_K1 <- getSeries(indices1)
+
+       expect_equal(dim(medoids_K1), c(L,K1))
+       # Not easy to evaluate result: at least we expect it to be better than random selection of
+       # medoids within initial series
+       distor_good <- computeDistortion(series, medoids_K1)
+       for (i in 1:3)
+               expect_lte( distor_good, computeDistortion(series,series[,sample(1:n, K1)]) )
+})
+
+test_that("clusteringTask2 behave as expected",
+{
+       # Same 60 reference sinusoïdal series than in clusteringTask1 test,
+       # but this time we consider them as medoids - skipping stage 1
+       # Here also we sample 900 series around the 60 "medoids"
+       n <- 900
+       x <- seq(0,9.5,0.1)
+       L <- length(x) #96 1/4h
+       K1 <- 60
+       K2 <- 3
+       #for (i in 1:60) {plot(x^(1+i/30)*cos(x+i),type="l",col=i,ylim=c(-50,50)); par(new=TRUE)}
+       s <- lapply( seq_len(K1), function(i) x^(1+i/30)*cos(x+i) )
+       series <- matrix(nrow=L, ncol=n)
+       for (i in seq_len(n))
+               series[,i] <- s[[I(i,K1)]] + rnorm(L,sd=0.01)
+
+       getSeries <- function(indices) {
+               indices <- indices[indices <= n]
+               if (length(indices)>0) as.matrix(series[,indices]) else NULL
+       }
+
+       # Perfect situation: all medoids "after stage 1" are ~good
+       algoClust2 <- function(dists,K) cluster::pam(dists,K,diss=TRUE)$id.med
+       indices2 <- clusteringTask2(1:K1, getSeries, K2, algoClust2, 210, 3, 4, 8, "little",
+               verbose=TRUE)
+       medoids_K2 <- getSeries(indices2)
+
+       expect_equal(dim(medoids_K2), c(L,K2))
+       # Not easy to evaluate result: at least we expect it to be better than random selection of
+       # synchrones within 1...K1 (from where distances computations + clustering was run)
+       distor_good <- computeDistortion(series, medoids_K2)
+#TODO: This fails; why?
+#      for (i in 1:3)
+#              expect_lte( distor_good, computeDistortion(series, series[,sample(1:K1,3)]) )
+})
diff --git a/epclust/tests/testthat/test-computeSynchrones.R b/epclust/tests/testthat/test-computeSynchrones.R
new file mode 100644 (file)
index 0000000..0a13aec
--- /dev/null
@@ -0,0 +1,37 @@
+context("computeSynchrones")
+
+test_that("computeSynchrones behave as expected",
+{
+       # Generate 300 sinusoïdal series of 3 kinds: all series of indices == 0 mod 3 are the same
+       # (plus noise), all series of indices == 1 mod 3 are the same (plus noise) ...
+       n <- 300
+       x <- seq(0,9.5,0.1)
+       L <- length(x) #96 1/4h
+       K <- 3
+       s1 <- cos(x)
+       s2 <- sin(x)
+       s3 <- c( s1[1:(L%/%2)] , s2[(L%/%2+1):L] )
+       #sum((s1-s2)^2) == 96
+       #sum((s1-s3)^2) == 58
+       #sum((s2-s3)^2) == 38
+       s <- list(s1, s2, s3)
+       series <- matrix(nrow=L, ncol=n)
+       for (i in seq_len(n))
+               series[,i] <- s[[I(i,K)]] + rnorm(L,sd=0.01)
+
+       getSeries <- function(indices) {
+               indices <- indices[indices <= n]
+               if (length(indices)>0) as.matrix(series[,indices]) else NULL
+       }
+
+       synchrones <- computeSynchrones(cbind(s1,s2,s3),getSeries,n,100,verbose=TRUE)
+
+       expect_equal(dim(synchrones), c(L,K))
+       for (i in 1:K)
+       {
+               # Synchrones are (for each medoid) sums of closest curves.
+               # Here, we expect exactly 100 curves of each kind to be assigned respectively to
+               # synchrone 1, 2 and 3 => division by 100 should be very close to the ref curve
+               expect_equal(synchrones[,i]/100, s[[i]], tolerance=0.01)
+       }
+})
diff --git a/epclust/tests/testthat/test-computeWerDists.R b/epclust/tests/testthat/test-computeWerDists.R
new file mode 100644 (file)
index 0000000..09ad5c8
--- /dev/null
@@ -0,0 +1,18 @@
+context("computeWerDists")
+
+test_that("computeWerDists output correct results",
+{
+       nbytes <- 8
+       endian <- "little"
+
+       # On two identical series
+       serie <- rnorm(212, sd=5)
+       series <- cbind(serie, serie)
+       getSeries <- function(indices) as.matrix(series[,indices])
+       dists <- computeWerDists(1:2, getSeries, 50, 3, 4, nbytes, endian,
+               verbose=TRUE)
+       expect_equal(dists, matrix(0.,nrow=2,ncol=2))
+
+       # On two constant series
+       # TODO: ref results. Ask Jairo to check function.
+})
diff --git a/epclust/tests/testthat/test-de_serialize.R b/epclust/tests/testthat/test-de_serialize.R
new file mode 100644 (file)
index 0000000..14618a2
--- /dev/null
@@ -0,0 +1,94 @@
+context("de_serialize")
+
+test_that("serialization + getDataInFile retrieve original data / from matrix",
+{
+       data_bin_file <- ".epclust_test_m.bin"
+       unlink(data_bin_file)
+
+       # Dataset 200 cols / 30 rows
+       data_ascii <- matrix(runif(200*30,-10,10),nrow=30)
+       nbytes <- 4 #lead to a precision of 1e-7 / 1e-8
+       endian <- "little"
+
+       # Simulate serialization in one single call
+       binarize(data_ascii, data_bin_file, 500, ",", nbytes, endian)
+       expect_equal(file.info(data_bin_file)$size, length(data_ascii)*nbytes+8)
+       for (indices in list(c(1,3,5), 3:13, c(5,20,50), c(75,130:135), 196:200))
+       {
+               data_lines <- getDataInFile(indices, data_bin_file, nbytes, endian)
+               expect_equal(data_lines, data_ascii[,indices], tolerance=1e-6)
+       }
+       unlink(data_bin_file)
+
+       # Serialization in several calls (last call complete, next call NULL)
+       for (i in 1:20)
+               binarize(data_ascii[,((i-1)*10+1):(i*10)], data_bin_file, 20, ",", nbytes, endian)
+       expect_equal(file.info(data_bin_file)$size, length(data_ascii)*nbytes+8)
+       for (indices in list(c(1,3,5), 3:13, c(5,20,50), c(75,130:135), 196:200))
+       {
+               data_lines <- getDataInFile(indices, data_bin_file, nbytes, endian)
+               expect_equal(data_lines, data_ascii[,indices], tolerance=1e-6)
+       }
+       unlink(data_bin_file)
+})
+
+test_that("serialization + transform + getDataInFile retrieve original transforms",
+{
+       data_bin_file <- ".epclust_test_t.bin"
+       unlink(data_bin_file)
+
+       # Dataset 200 cols / 30 rows
+       data_ascii <- matrix(runif(200*30,-10,10),nrow=30)
+       nbytes <- 8
+       endian <- "little"
+
+       binarize(data_ascii, data_bin_file, 500, ",", nbytes, endian)
+       # Serialize transformation (just compute range) into a new binary file
+       trans_bin_file <- ".epclust_test_t_trans.bin"
+       unlink(trans_bin_file)
+       getSeries <- function(inds) getDataInFile(inds, data_bin_file, nbytes, endian)
+       binarizeTransform(getSeries, function(series) apply(series, 2, range),
+               trans_bin_file, 250, nbytes, endian)
+       unlink(data_bin_file)
+       expect_equal(file.info(trans_bin_file)$size, 2*ncol(data_ascii)*nbytes+8)
+       for (indices in list(c(1,3,5), 3:13, c(5,20,50), c(75,130:135), 196:200))
+       {
+               trans_cols <- getDataInFile(indices, trans_bin_file, nbytes, endian)
+               expect_equal(trans_cols, apply(data_ascii[,indices],2,range), tolerance=1e-6)
+       }
+       unlink(trans_bin_file)
+})
+
+test_that("serialization + getDataInFile retrieve original data / from connection",
+{
+       data_bin_file <- ".epclust_test_c.bin"
+       unlink(data_bin_file)
+
+       # Dataset 300 cols / 50 rows
+       data_csv <- system.file("testdata","de_serialize.csv",package="epclust")
+       nbytes <- 8
+       endian <- "big"
+       data_ascii <- unname( t( as.matrix(read.table(data_csv,sep=";",header=FALSE)) ) ) #ref
+
+       # Simulate serialization in one single call
+       binarize(data_csv, data_bin_file, 350, ";", nbytes, endian)
+       expect_equal(file.info(data_bin_file)$size, 300*50*8+8)
+       for (indices in list(c(1,3,5), 3:13, c(5,20,50), c(75,130:135), 196:200))
+       {
+               data_cols <- getDataInFile(indices,data_bin_file,nbytes,endian)
+               expect_equal(data_cols, data_ascii[,indices])
+       }
+       unlink(data_bin_file)
+
+       # Serialization in several calls / chunks of 29 --> 29*10 + 10, incomplete last
+       data_con <- file(data_csv, "r")
+       binarize(data_con, data_bin_file, 29, ";", nbytes, endian)
+       expect_equal(file.info(data_bin_file)$size, 300*50*8+8)
+       for (indices in list(c(1,3,5), 3:13, c(5,20,50), c(75,130:135), 196:200))
+       {
+               data_cols <- getDataInFile(indices,data_bin_file,nbytes,endian)
+               expect_equal(data_cols, data_ascii[,indices])
+       }
+       unlink(data_bin_file)
+       #close(data_con) --> done in binarize()
+})
diff --git a/epclust/tests/testthat/test-filterMA.R b/epclust/tests/testthat/test-filterMA.R
new file mode 100644 (file)
index 0000000..19ec6fc
--- /dev/null
@@ -0,0 +1,31 @@
+context("filterMA")
+
+test_that("[time-]serie filtering behave as expected",
+{
+       # Mean of 3 values
+       M <- matrix(runif(1000,min=-7,max=7), ncol=10)
+       ref_fM <- stats::filter(M, rep(1/3,3), circular=FALSE)
+       fM <- epclust:::filterMA(M, 3)
+
+       # Expect an agreement on all inner values
+       expect_equal(dim(fM), c(100,10))
+       expect_equal(fM[2:99,], ref_fM[2:99,])
+
+       # Border values should be averages of 2 values
+       expect_equal(fM[1,], colMeans(M[1:2,]))
+       expect_equal(fM[100,], colMeans(M[99:100,]))
+
+       # Mean of 5 values
+       ref_fM <- stats::filter(M, rep(1/5,5), circular=FALSE)
+       fM <- epclust:::filterMA(M, 5)
+
+       # Expect an agreement on all inner values
+       expect_equal(dim(fM), c(100,10))
+       expect_equal(fM[3:98,], ref_fM[3:98,])
+
+       # Border values should be averages of 3 or 4 values
+       expect_equal(fM[1,], colMeans(M[1:3,]))
+       expect_equal(fM[2,], colMeans(M[1:4,]))
+       expect_equal(fM[99,], colMeans(M[97:100,]))
+       expect_equal(fM[100,], colMeans(M[98:100,]))
+})
diff --git a/epclust/tests/testthat/test-utils.R b/epclust/tests/testthat/test-utils.R
new file mode 100644 (file)
index 0000000..c2474c8
--- /dev/null
@@ -0,0 +1,55 @@
+context("utils functions")
+
+test_that("Helper function to split indices work properly",
+{
+       indices <- 1:400
+
+       # bigger nb_per_set than length(indices)
+       expect_equal(epclust:::.splitIndices(indices,500), list(indices))
+
+       # nb_per_set == length(indices)
+       expect_equal(epclust:::.splitIndices(indices,400), list(indices))
+
+       # length(indices) %% nb_per_set == 0
+       expect_equal(epclust:::.splitIndices(indices,200),
+               c( list(indices[1:200]), list(indices[201:400]) ))
+       expect_equal(epclust:::.splitIndices(indices,100),
+               c( list(indices[1:100]), list(indices[101:200]),
+                       list(indices[201:300]), list(indices[301:400]) ))
+
+       # length(indices) / nb_per_set == 1, length(indices) %% nb_per_set == 100
+       expect_equal(epclust:::.splitIndices(indices,300,min_size=1),
+               list(1:300, 301:400))
+       split_inds <- epclust:::.splitIndices(indices,300,min_size=200)
+       expect_equal(length(unique(unlist(split_inds))), 400)
+       expect_equal(length(split_inds), 2)
+       expect_equal(length(split_inds[[1]]), 200)
+       expect_equal(length(split_inds[[2]]), 200)
+       expect_error(epclust:::.splitIndices(indices,300,min_size=300), "Impossible to split*")
+
+       # length(indices) / nb_per_set == 2, length(indices) %% nb_per_set == 42
+       expect_equal(epclust:::.splitIndices(indices,179,min_size=1),
+               list(1:179, 180:358, 359:400))
+       split_inds <-epclust:::.splitIndices(indices,179,min_size=60)
+       expect_equal(length(unique(unlist(split_inds))), 400)
+       expect_equal(length(split_inds), 3)
+       expect_equal(length(split_inds[[1]]), 170)
+       expect_equal(length(split_inds[[2]]), 170)
+       expect_equal(length(split_inds[[3]]), 60)
+       expect_error(epclust:::.splitIndices(indices,179,min_size=150), "Impossible to split*")
+})
+
+test_that("curvesToContribs output correct results",
+{
+       L <- 220 #extended to 256, log2(256) == 8
+
+       # Zero serie
+       expect_equal(curvesToContribs(rep(0,L), "d8", "absolute"), as.matrix(rep(0,8)))
+       expect_equal(curvesToContribs(rep(0,L), "haar", "absolute"), as.matrix(rep(0,8)))
+
+       # Constant serie
+       expect_equal(curvesToContribs(rep(5,L), "haar", "absolute"), as.matrix(rep(0,8)))
+       expect_equal(curvesToContribs(rep(10,L), "haar", "absolute"), as.matrix(rep(0,8)))
+#      expect_equal(curvesToContribs(rep(5,L), "d8", ctype), rep(0,8))
+#TODO:
+})
diff --git a/epclust/vignettes/epclust.ipynb b/epclust/vignettes/epclust.ipynb
new file mode 100644 (file)
index 0000000..0e0c061
--- /dev/null
@@ -0,0 +1 @@
+TODO from jupyter; generate HTML, in final package
diff --git a/initialize.sh b/initialize.sh
new file mode 100755 (executable)
index 0000000..161dfd6
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+#initialize submodules, set-up .git/config and .gitattributes, and pre-push hook
+git submodule init && git submodule update --merge
+#filter for Jupyter
+python .nbstripout/nbstripout.py --install --attributes .gitattributes
+#filter for git-fat [TODO: idempotent...]
+printf '*.pdf filter=fat\n*.tar.xz filter=fat\n*.png filter=fat\n*.jpg filter=fat\n*.ps filter=fat\n'  >> .gitattributes
+#pre-push hook: git fat push, submodules update
+printf '#!/bin/sh\n./.git-fat/git-fat pull\n./.git-fat/git-fat push\ngit submodule update --merge\n' > .git/hooks/pre-push
+chmod 755 .git/hooks/pre-push
+#.gitfat file with remote on gitfat@auder.net
+printf '[rsync]\nremote = gitfat@auder.net:~/files/edfclust\n' > .gitfat
+#manual git-fat init: with relative path to binary
+#1] remove filter if exists http://stackoverflow.com/questions/12179437/replace-3-lines-with-another-line-sed-syntax
+sed -i '1N;$!N;s/\[filter "fat"\]\n.*\n.*//;P;D' .git/config
+#2] place new filter
+printf '[filter "fat"]\n\tclean = ./.git-fat/git-fat filter-clean\n\tsmudge = ./.git-fat/git-fat filter-smudge\n' >> .git/config
diff --git a/reports/2017-01/201701_IRSDIfollowup.pdf b/reports/2017-01/201701_IRSDIfollowup.pdf
new file mode 100644 (file)
index 0000000..a1120a0
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 84fb4f1732c0e17b4f3f2dfb4424a032f10a9000               912206
diff --git a/reports/2017-01/201701_point.tex b/reports/2017-01/201701_point.tex
new file mode 100644 (file)
index 0000000..eebc740
--- /dev/null
@@ -0,0 +1,621 @@
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%
+%        LOADING DOCUMENT
+%
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+\documentclass[10pt]{beamer}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%        LOADING PACKAGES
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[francais]{babel}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{amssymb}
+\usepackage{graphicx}
+\usepackage{booktabs}
+\usetheme{default}
+\usepackage{tikz}
+
+\colorlet{darkred}{red!80!black}
+\colorlet{darkblue}{blue!80!black}
+\colorlet{darkgreen}{green!60!black}
+
+\usetikzlibrary{calc,decorations.pathmorphing,patterns}
+\pgfdeclaredecoration{penciline}{initial}{
+  \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance,
+  auto corner on length=1mm,]{
+    \pgfpathcurveto%
+     {% From
+       \pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}
+                 {\pgfdecorationsegmentamplitude}
+     }
+     {%  Control 1
+      \pgfmathrand
+      \pgfpointadd{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
+                  {\pgfqpoint{-\pgfdecorationsegmentaspect
+                   \pgfdecoratedinputsegmentremainingdistance}%
+                             {\pgfmathresult\pgfdecorationsegmentamplitude}
+                 }
+      }
+      {%TO 
+      \pgfpointadd{\pgfpointdecoratedinputsegmentlast}{\pgfpoint{1pt}{1pt}}
+      }
+  }
+  \state{final}{}
+}
+\tikzstyle{block} = [draw,rectangle,thick,minimum height=2em,minimum width=2em]
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%        BEAMER OPTIONS
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%\setbeameroption{show notes}
+\setbeamertemplate{navigation symbols}{}
+%\setbeamercovered{transparent}
+%\AtBeginSection[]{
+%\begin{frame}{Outline}
+%      \tableofcontents[currentsection]               
+%\end{frame}
+%}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%
+%      PRESENTATION INFORMATION
+%
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\author{B. Auder \and
+           J. Cugliari \and
+           Y. Goude   \and
+       J.-M. Poggi
+}
+\title{Disaggregated Electricity Forecasting using Clustering of 
+          Individual Consumers}
+\subtitle{Réunion mi parcours}
+%\logo{}
+\institute{IRSDI - RESEARCH INITIATIVE IN INDUSTRIAL DATA SCIENCE}
+\date{19 janvier 2017}
+%\subject{tito}
+
+\begin{document}
+       
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%
+%      TITLE PAGE
+%
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\frame[plain]{\maketitle} 
+%\maketitle
+
+
+\section{IRSDI follow up meeting}      
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{The project in a nutshell}
+\begin{block}{Context}
+\begin{itemize}
+\item 
+Industrial : Electricity load forecasting \& smart grids infrastructure 
+\item 
+Academic : curve's shape \& nonparametric function-valued forecast 
+\item 
+Past work : clustering with wavelets (RC, Wer), KWF, Enercon 
+\end{itemize}
+\end{block}
+
+\begin{block}{Aims}
+\begin{itemize}
+\item evaluate the upscaling capacity of the Energycon strategy 
+\item adapt KWF to an exogenous variable (e.g. meteorological)
+\end{itemize}
+\end{block}
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Clients hierarchical structure and prediction}
+
+\begin{columns}
+\column{.6\textwidth}
+\begin{figure}[!ht]\centering
+ \includegraphics[width = \textwidth]{pics/schema.png} 
+\caption{Hierarchical structure of $N$ individual clients among $K$ 
+groups.}\label{fig:schema-hier}
+\end{figure}
+\column{.4\textwidth}
+\begin{tikzpicture}[decoration=penciline, decorate]
+  \node[block, decorate] at (0, 0){$Z_t$} ;
+  \node[block, decorate] at (3, 0) {$Z_{t + 1}$} ;
+
+  \node[block, decorate] at (0, -2.5) {$\begin{pmatrix}
+                              Z_{t, 1} \\ Z_{t, 2} \\ \vdots \\ Z_{t, K}
+                               \end{pmatrix}$ };
+
+  \node[block, decorate] at (3, -2.5) {$\begin{pmatrix}
+                           Z_{t+1, 1} \\ Z_{t+1, 2} \\ \vdots \\ Z_{t+1, k}
+                               \end{pmatrix} $};
+
+  \draw[decorate, darkblue,  line width = 2mm, ->] (1, 0) -- (2, 0);
+  \draw[decorate, darkgreen, line width = 2mm, ->] (1, -2.5) -- (2, -2.5);
+  \draw[decorate, black,     line width = 2mm, ->] (3, -1.3) -- (3, -0.4);
+  \draw[decorate, darkred,   line width = 2mm, ->] (1, -1.5) -- (2, -0.75);
+ \end{tikzpicture}
+\end{columns}
+
+\begin{itemize}
+ \item $Z_t$: aggregate demand at $t$
+ \hfill $Z_{t, k}$:demand of group $k$ at moment $t$
+ \item Groups can express tariffs, geographical dispersion, client class ...
+ \item Profiling vs Prediction 
+ \item We follow Misiti \textit{et al}. (2010) to construct classes of customers to better predict the aggregate.
+\end{itemize}
+\end{frame}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Expected result}
+
+\includegraphics[width = \textwidth]{pics/perf.pdf}
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Energy decomposition of the DWT}
+
+%\begin{block}{ }
+\begin{itemize}
+\item Energy conservation of the signal
+%
+  \begin{equation*}\label{eq:energy}  
+     \| z\|^2_H    \approx     \| \widetilde{z_J} \|_2^2 
+        = c_{0,0}^2 + \sum_{j=0}^{J-1} \sum_{k=0}^{2^j-1} d_{j,k} ^2  = 
+                     c_{0,0}^2 + \sum_{j=0}^{J-1} \| \mathbf{d}_{j} \|_2^2.
+  \end{equation*}
+%  \item characterization by the set of channel variances estimated at the output of the corresponding filter bank
+ \item For each $j=0,1,\ldots,J-1$, we compute the \textcolor{blue}{absolute} and 
+ \textcolor{orange}{relative} contribution representations by
+%      
+   \[ \underbrace{\hbox{cont}_j = ||\mathbf{d_j}||^2}_{\fbox{\textcolor{blue}{AC}}}  
+      \qquad  \text{and}  \qquad
+       \underbrace{\hbox{rel}_j  = 
+     \frac{||\mathbf{d_j}||^2}
+          {\sum_j ||\mathbf{d_j}||^2 }}_{\fbox{\textcolor{orange}{RC}}} .\]
+ %\item They quantify the relative importance of the scales to the global dynamic.
+% \item Only the wavelet coefficients $\set{d_{j,k}}$ are used.
+% \item RC normalizes the energy of each signal to 1.
+\end{itemize}
+%\end{block}
+%\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+%\begin{frame} 
+%  \frametitle{Schema of procedure}
+  \begin{center}
+   \includegraphics[width = 7cm, height = 2cm]{./pics/Diagramme1.png}
+   % Diagramme1.png: 751x260 pixel, 72dpi, 26.49x9.17 cm, bb=0 0 751 260
+  \end{center}
+      
+        \begin{footnotesize}
+       \begin{description}
+ \item [0. Data preprocessing.] Approximate sample paths of $z_1(t),\ldots,z_n(t)$ %by the truncated wavelet series at the scale $J$ from sampled data $\mathbf{z}_1, \ldots, \mathbf{z}_n$.
+ \item [1. Feature extraction.] Compute either of the energetic components using absolute contribution (AC) or relative contribution (RC).
+ \item [2. Feature selection.] Screen irrelevant variables. \begin{tiny} [Steinley \& Brusco ('06)]\end{tiny}
+ %\item [3. Determine the number of clusters.] Detecting significant jumps %in the transformed distortion curve.
+ %\begin{tiny} [Sugar \& James ('03)]\end{tiny}
+ %\item [4. Clustering.] Obtain the $K$ clusters using PAM algorithm.
+      \end{description}       \end{footnotesize}
+    
+ \end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame} 
+  \frametitle{A function-based distance}
+
+\begin{columns}
+\column{0.6\textwidth}
+  \begin{itemize}
+    \item Distance based on wavelet-correlation between two time series
+    \item Can be used to measure relationship between two functions
+    %variables, i.e. temperature and load.
+    \item The strength of the relation is hierarchically decomposed across
+          scales without losing of time location
+   \end{itemize}    
+
+   Drawback: needs more computation time and storage (complex values) 
+\column{0.4\textwidth}
+  \includegraphics[width  = \textwidth]{pics/conso-week.png} 
+                   
+  \includegraphics[width  = .96\textwidth]{pics/wsp-week.png} 
+
+\end{columns} 
+ \end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{A 2-stages strategy (Energycon)}
+
+\includegraphics[width = \textwidth]{pics/2-stage_strategy.png}
+
+\footnotetext[1]{
+       J. Cugliari, Y. Goude and J. M. Poggi, "Disaggregated electricity forecasting using wavelet-based clustering of individual consumers," 2016 IEEE International Energy Conference (ENERGYCON), Leuven, 2016, pp. 1-6.
+       }
+
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Data description}
+
+\begin{columns}
+\column{0.45\textwidth}
+\begin{block}{Available}
+\begin{itemize}
+\item 
+EDF : 25K professional clients, sampled @ 30min, 5 semesters 
+\item 
+external open data 
+\end{itemize}
+\end{block}
+
+\begin{block}{Accesible}
+       \begin{itemize}
+               \item simulated (very large) data
+       \end{itemize}
+\end{block}
+\column{0.55\textwidth}
+\includegraphics[width = \columnwidth]{pics/indiv.jpg}
+%\textcolor{red}{A picture here?}
+\end{columns}
+
+\end{frame}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Computing resources}
+\begin{block}{2 academic testing architectures}
+\begin{itemize}
+\item Orsay's cluster (500Gb RAM, 80 cores)
+\item \texttt{pulpito} : Lyon 2's box with 2 quadricores (HT x 2), 72Gb RAM
+\end{itemize}
+\end{block}
+
+\begin{block}{1 industrial real-scale architecture}
+\begin{itemize}
+\item mini cluster @ EDF labs
+\end{itemize}
+\end{block}
+
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Strategies for upscaling}
+
+\begin{itemize}
+\item From 25K to 25M: in 1000 chunks of 25K
+\item Reference values: 
+\begin{itemize}
+\item $K'=200$ super consumers (SC)
+\item  $K\ast=15$ final clusters
+\end{itemize}
+\end{itemize}
+
+
+
+\begin{block}{1st strategy}
+\begin{itemize}
+\item Do 1000 times ONLY Energycon's 1st-step strategy on 25K clients 
+
+\item With the $1000 \times K'$ SC perform a 2-step run 
+      leading to $K^\ast$ clusters
+\end{itemize}
+\end{block}
+
+\begin{block}{2nd strategy}
+\begin{itemize}
+\item Do 1000 times Energycon's 2-step strategy on 25K clients
+      leading to $1000\times K^\ast$ intermediate clusters
+\item Treat the intermediate clusters as individual curves and perform
+      a single 2-step run to get $K^\ast$ final clusters
+\end{itemize}
+\end{block}
+
+\end{frame}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}
+\frametitle{Course + Workshop}
+       
+\begin{block}{1-day IRSDI-ECAS Course}
+\begin{itemize}
+\item 
+GAM : from classical to distributed environments
+\item
+October 19, 2017 @ EDF Labs, Paris-Saclay, France
+\item 
+Simon Wood \& Matteo Fasiolo (University Walk, Bristol, UK)
+\end{itemize}
+\end{block}
+
+
+\begin{block}{1-day Worshop}
+\begin{itemize}
+\item 
+Individual Electricity Consumers, Data, Packages and Methods
+\item
+October 20, 2017 @ EDF Labs, Paris-Saclay, France
+\item 
+5 keynote speakers 
+\begin{itemize}
+\item
+Souhaib Ben Taieb, Monash University, Melbourne, Australia
+\item
+Ram Rajagopal, Stanford Univ., USA
+\item
+Gavin Shaddick, University of Bath, UK
+\item
+Bei Chen, IBM Research, Ireland
+\item
+Jack Kelly, University of London, Imperial College of Science, UK
+\end{itemize}
+\end{itemize}
+\end{block}
+\end{frame}
+
+
+\section{Point sur les codes}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Résumé point sur le code (BA, JC @ Lyon déc 2016)}
+       
+Nous avons réussi à 
+\begin{itemize}
+\item
+faire une fresh installation du code de BA sur une nouvelle machine
+(problèmes divers liés à la compilation, configuration, libraries exotiques)
+\item 
+conduire des expériences sur les données pour mesurer le temps de calcul (le code est blazing fast: 30sec pour obtenir 500 groupes sur 4 procs)
+\item
+identifier de problèmes : manque un installateur et une interface de pretraitement indépendant du calcul
+\end{itemize}
+       
+A faire:
+\begin{itemize}
+\item
+finir les experiences (sur nb de classes, nb de curves / chunk, nb de procs) et sur d'autres architectures
+\item
+interface matrice -> binaire
+\item 
+obtenir les courbes synchrones
+\end{itemize}
+       
+Piste à explorer pour les comparaisons: \texttt{h2o} 
+\end{frame}
+
+\section{Expériences numériques}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}
+\frametitle{Code C/MPI}
+       
+\begin{enumerate}
+\item [0]] Sérialisation des données : on écrit d'abord la longueur de la série    puis les puissances sont codées sur 3 octets, permettant une excellente compression et une lecture facile (accès en O(1) à n'importe quelle série)
+               
+\item [1]] Algorithme PAM appliqué en parallèle via la librairie MPI.
+               
+\item [2]] Agrégation des médoïdes obtenus, (re-)sérialisation, puis on ré-applique l'algorithme PAM.
+
+\end{enumerate}
+
+\begin{itemize}
+\item 
+               %Plusieurs astuces : sérialisation des données, calcul en parallèle
+\item 
+               Très rapide : environ 5 minutes from raw to 1st stage clustering
+               \item 
+               Divergences par rapport à Energycon (moyennes au lieu d'aggrégation)
+       \end{itemize}
+       
+       %\begin{verbatim}
+       %> time ./ppam.exe serialize 2009.csv 2009.bin 1 0
+       %real   7m34.182s
+       %\end{verbatim}
+\end{frame}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}
+\frametitle{R Code}
+
+\begin{itemize}
+\item Enercon's code update 
+\item \texttt{data.table} is used for readings and writtings \footnote{\texttt{tidyverse} toolbox is much slower}
+\item Disk spaces of the plain text associated object
+\item Timmings on \texttt{pulpito}  (16 cores, 64Gb RAM, SSD) 
+\end{itemize}
+\begin{center}
+\begin{tabular}{lccc}\toprule
+Task & Time & Memory & Disk \\ \midrule
+Raw (15Gb) to matrix  &   7 min  &
+  30 Gb\footnote{\texttt{ff} is a promising alternative if needed} &
+  2.7 Gb \\
+Compute contributions  &   7 min  & <1Gb & 7 Mb \\
+1st stage clustering   &   3 min  & <1Gb & -- \\
+Aggregation            &   1 min  &  6Gb & 30 Mb \\
+Wer distance matrix    &  40 min  & 64Gb\footnote{Embarransgly parallel but still too slow} & 150 Kb \\
+Forecasts              &  10 min  & <1Gb & --\\ 
+\bottomrule
+\end{tabular}
+\end{center}
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}
+\frametitle{Why wer distance is so slow ?}
+
+
+\begin{block}{2nd step strategy (Enercon way)}
+% We proceed as follows:
+ \begin{itemize}
+    \item Transform data $z_1(t), \ldots, z_n(t)$ using the CWT and Morlet wavelet to obtain $n$ matrices of size $J\times N$.
+    \item Compute the wer-based dissimilarity matrix 
+    \item Obtain the PAM-based clustering.
+\end{itemize}
+
+\begin{block}{Current choices on the computation}
+\begin{itemize}
+\item From (\texttt{Rwave} \& \texttt{sowas}) to \texttt{biwavelt}
+\item About 1 sec to compute \texttt{werd(x, y)} with current 
+      filtering ($J \sim 52$ with 13 octaves, 4 voices )
+\item Need to compute $n (n - 1) / 2$ pairwise distances 
+     (20K, 130K, 500K entries for $n = 200, 500, 1000$)
+\item Need an efficient \texttt{werd} function (maybe in 
+      RcppParallel ?)
+\end{itemize}
+
+\end{block}
+
+  
+\end{block}
+
+\end{frame}
+
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{CWT}
+
+\begin{block}{Continuous WT}
+Starting with a mother wavelet $\psi$ consider $\psi_{a, \tau} = a^{-1/2} \psi\left(\frac{t-\tau}{a}\right)$.
+
+The CWT of a function $z\in L^2 (\mathbb{R})$ is,
+$$ W_z(a, \tau) = \int_{-\infty}^{\infty} z(t) \psi_{a, \tau}^* (t) dt$$
+
+As for Fourier transform, a spectral approach is possible.
+
+
+\begin{eqnarray*}
+S_z(a, \tau)  &=& |W_z(a, \tau)|^2 \qquad\qquad \hbox{wavelet spectrum} \\
+\mathcal{W}_{z, x}(a, \tau)  &=& W_z(a, \tau)W_x^*(a, \tau) \qquad \hbox{cross-wavelet transform}
+\end{eqnarray*}
+
+%$$ S_z(a, \tau) = |W_z(a, \tau)|^2 \qquad \hbox{wavelet spectrum}$$
+
+%$$ \mathcal{W}_{z, x}(a, \tau) = W_z(a, \tau)W_x(a, \tau)^* \qquad \hbox{cross-wavelet transform}$$
+\end{block}
+
+\end{frame}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}{Wavelet coherence}
+\begin{block}{ }
+\begin{equation*} \label{coherence}
+R_{z,x}^2(a,\tau) = \frac{ |\tilde{\mathcal{W}}_{x,y}(a, \tau)|^2 }{|\tilde{\mathcal{W}}_{x,x}(a, \tau)| |\tilde{\mathcal{W}}_{y,y}(a, \tau) | },
+\end{equation*}
+
+Based on the extended $R^2$ coefficient, we can construct an coefficient of determination between two wavelet spectrums
+\begin{equation*}\label{eq:wer}
+  WER_{z, x}^2 = \frac{ 
+ \int_0^\infty  \left( \int_{-\infty}^\infty |\tilde{\mathcal{W}}_{z, x}(a, \tau)|  d\tau \right)^2 da} { \int_0^\infty \left( \int_{-\infty}^\infty |\tilde{\mathcal{W}}_{z, z}(a, \tau)| d\tau \int_{-\infty}^\infty |\tilde{\mathcal{W}}_{x, x}(a, \tau)| d\tau\right) da}.
+ \end{equation*}
+
+And obtain a dissimilarity based on it
+\begin{equation*}\label{eq:dist-wer}
+    d(z, x) = \sqrt{ JN(1 - \widehat{WER}_{z, x}^2)} 
+\end{equation*}
+\end{block}
+\end{frame}
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+%\begin{frame} \frametitle{Wavelet coherence}
+%\begin{block}{ }
+% We proceed as follows:
+% \begin{itemize}
+%    \item Transform data $z_1(t), \ldots, z_n(t)$ using the  CWT and Morlet wavelet to obtain $n$ matrices of size $J\times N$.
+%    \item Compute a dissimilarity matrix with the coherency based dissimilarity.
+%    \item Using PAM obtain clusters $k=8$ clusters.
+%   \end{itemize}
+%
+%  Rand Index (AC, WER) = 0.26
+%  
+%\end{block}
+%
+%\end{frame}
+
+
+\end{document}
+
+
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+%      FRAME:
+%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+\begin{frame}
+\frametitle{Misc jc}
+       
+\begin{itemize}
+\item simulated dataset : howto ?
+\item temperature
+\item Rcpp
+\end{itemize}
+       
+
+
diff --git a/reports/2017-01/201701_reunion.pdf b/reports/2017-01/201701_reunion.pdf
new file mode 100644 (file)
index 0000000..c0e3067
--- /dev/null
@@ -0,0 +1 @@
+#$# git-fat 9ee0bf244bef3ab34c2a737d94c8f48a9d1f3f86                95206
diff --git a/reports/2017-04/TODO.ipynb b/reports/2017-04/TODO.ipynb
new file mode 100644 (file)
index 0000000..e69de29