[r-cran-ddalpha] 01/02: New upstream version 1.3.1

Andreas Tille tille at debian.org
Mon Oct 23 09:26:01 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository r-cran-ddalpha.

commit 75d4d027ded867b8acf5d67ef5a5442de55d6f44
Author: Andreas Tille <tille at debian.org>
Date:   Mon Oct 23 11:25:21 2017 +0200

    New upstream version 1.3.1
---
 DESCRIPTION                            |   29 +
 MD5                                    |  199 +
 NAMESPACE                              |   50 +
 R/compclassf.r                         |  403 ++
 R/dataf.geneexp.r                      | 1025 ++++
 R/dataf.growth.r                       |  945 ++++
 R/dataf.medflies.r                     | 2013 ++++++++
 R/dataf.population.r                   |  246 +
 R/dataf.population2010.r               |  246 +
 R/dataf.sim.r                          |  114 +
 R/dataf.tecator.r                      | 8638 ++++++++++++++++++++++++++++++++
 R/ddalpha-internal.r                   | 1734 +++++++
 R/ddalpha.classify.r                   |  193 +
 R/ddalpha.test.r                       |  100 +
 R/ddalpha.train.r                      |  491 ++
 R/ddalphaf.r                           |  947 ++++
 R/ddalphaf.test.r                      |  112 +
 R/depth.contours.r                     |  326 ++
 R/depth.fd.R                           | 2073 ++++++++
 R/depth.graph.r                        |   65 +
 R/depth.halfspace.r                    |  190 +
 R/depth.potential.r                    |  292 ++
 R/depth.projection.r                   |  295 ++
 R/depth.r                              |   54 +
 R/depth.simplicial.r                   |   77 +
 R/depth.simplicialVolume.r             |   85 +
 R/depth.space.zonoid.r                 |   54 +
 R/depth.spatial.r                      |  104 +
 R/depth.zonoid.r                       |   44 +
 R/depthf.r                             |   54 +
 R/dknn.R                               |  149 +
 R/draw.ddplot.r                        |   89 +
 R/getdata.R                            |    6 +
 R/is.in.convex.r                       |   40 +
 R/knnaff.r                             |  229 +
 R/lda.r                                |   10 +
 R/mahalanobis.scaling.r                |  121 +
 R/plot.functional.r                    |   66 +
 R/qda.r                                |   10 +
 R/routines.r                           |   49 +
 R/separator.polynomial.r               |  177 +
 data/baby.txt.gz                       |  Bin 0 -> 1453 bytes
 data/banknoten.txt.gz                  |  Bin 0 -> 1688 bytes
 data/biomed.txt.gz                     |  Bin 0 -> 1541 bytes
 data/bloodtransfusion.txt.gz           |  Bin 0 -> 1981 bytes
 data/breast_cancer_wisconsin.txt.gz    |  Bin 0 -> 3038 bytes
 data/bupa.txt.gz                       |  Bin 0 -> 2493 bytes
 data/chemdiab_1vs2.txt.gz              |  Bin 0 -> 1029 bytes
 data/chemdiab_1vs3.txt.gz              |  Bin 0 -> 702 bytes
 data/chemdiab_2vs3.txt.gz              |  Bin 0 -> 1001 bytes
 data/cloud.txt.gz                      |  Bin 0 -> 1442 bytes
 data/crabB_MvsF.txt.gz                 |  Bin 0 -> 933 bytes
 data/crabF_BvsO.txt.gz                 |  Bin 0 -> 916 bytes
 data/crabM_BvsO.txt.gz                 |  Bin 0 -> 938 bytes
 data/crabO_MvsF.txt.gz                 |  Bin 0 -> 938 bytes
 data/crab_BvsO.txt.gz                  |  Bin 0 -> 1762 bytes
 data/crab_MvsF.txt.gz                  |  Bin 0 -> 1768 bytes
 data/cricket_CvsP.txt.gz               |  Bin 0 -> 553 bytes
 data/diabetes.txt.gz                   |  Bin 0 -> 8751 bytes
 data/ecoli_cpvsim.txt.gz               |  Bin 0 -> 1506 bytes
 data/ecoli_cpvspp.txt.gz               |  Bin 0 -> 1328 bytes
 data/ecoli_imvspp.txt.gz               |  Bin 0 -> 962 bytes
 data/gemsen_MvsF.txt.gz                |  Bin 0 -> 5463 bytes
 data/glass.txt.gz                      |  Bin 0 -> 2379 bytes
 data/groessen_MvsF.txt.gz              |  Bin 0 -> 1419 bytes
 data/haberman.txt.gz                   |  Bin 0 -> 866 bytes
 data/heart.txt.gz                      |  Bin 0 -> 2917 bytes
 data/hemophilia.txt.gz                 |  Bin 0 -> 562 bytes
 data/indian_liver_patient_1vs2.txt.gz  |  Bin 0 -> 7105 bytes
 data/indian_liver_patient_FvsM.txt.gz  |  Bin 0 -> 7062 bytes
 data/iris_setosavsversicolor.txt.gz    |  Bin 0 -> 501 bytes
 data/iris_setosavsvirginica.txt.gz     |  Bin 0 -> 511 bytes
 data/iris_versicolorvsvirginica.txt.gz |  Bin 0 -> 536 bytes
 data/irish_ed_MvsF.txt.gz              |  Bin 0 -> 1817 bytes
 data/kidney.txt.gz                     |  Bin 0 -> 454 bytes
 data/pima.txt.gz                       |  Bin 0 -> 2304 bytes
 data/plasma_retinol_MvsF.txt.gz        |  Bin 0 -> 8585 bytes
 data/segmentation.txt.gz               |  Bin 0 -> 15371 bytes
 data/socmob_IvsNI.txt.gz               |  Bin 0 -> 5937 bytes
 data/socmob_WvsB.txt.gz                |  Bin 0 -> 5973 bytes
 data/tae.txt.gz                        |  Bin 0 -> 514 bytes
 data/tennis_MvsF.txt.gz                |  Bin 0 -> 836 bytes
 data/tips_DvsN.txt.gz                  |  Bin 0 -> 1599 bytes
 data/tips_MvsF.txt.gz                  |  Bin 0 -> 1590 bytes
 data/uscrime_SvsN.txt.gz               |  Bin 0 -> 1162 bytes
 data/vertebral_column.txt.gz           |  Bin 0 -> 5109 bytes
 data/veteran_lung_cancer.txt.gz        |  Bin 0 -> 992 bytes
 data/vowel_MvsF.txt.gz                 |  Bin 0 -> 24777 bytes
 data/wine_1vs2.txt.gz                  |  Bin 0 -> 3092 bytes
 data/wine_1vs3.txt.gz                  |  Bin 0 -> 2599 bytes
 data/wine_2vs3.txt.gz                  |  Bin 0 -> 2823 bytes
 inst/CITATION                          |   15 +
 man/Cmetric.Rd                         |   49 +
 man/CustomMethods.Rd                   |  369 ++
 man/FKS.Rd                             |   64 +
 man/L2metric.Rd                        |   49 +
 man/compclassf.classify.Rd             |   63 +
 man/compclassf.train.Rd                |   89 +
 man/dataf..Rd                          |   67 +
 man/dataf.geneexp.Rd                   |   61 +
 man/dataf.growth.Rd                    |   65 +
 man/dataf.medflies.Rd                  |   69 +
 man/dataf.population.Rd                |   67 +
 man/dataf.population2010.Rd            |   67 +
 man/dataf.sim.1.CFF07.Rd               |   84 +
 man/dataf.sim.2.CFF07.Rd               |   83 +
 man/dataf.tecator.Rd                   |   69 +
 man/dataf2rawfd.Rd                     |   61 +
 man/ddalpha-package.Rd                 |  126 +
 man/ddalpha.classify.Rd                |   90 +
 man/ddalpha.getErrorRateCV.Rd          |   75 +
 man/ddalpha.getErrorRatePart.Rd        |   85 +
 man/ddalpha.test.Rd                    |   91 +
 man/ddalpha.train.Rd                   |  329 ++
 man/ddalphaf.classify.Rd               |   65 +
 man/ddalphaf.getErrorRateCV.Rd         |   68 +
 man/ddalphaf.getErrorRatePart.Rd       |   78 +
 man/ddalphaf.test.Rd                   |   81 +
 man/ddalphaf.train.Rd                  |  145 +
 man/depth..Rd                          |  100 +
 man/depth.Mahalanobis.Rd               |   87 +
 man/depth.contours.Rd                  |   74 +
 man/depth.contours.ddalpha.Rd          |   73 +
 man/depth.graph.Rd                     |   76 +
 man/depth.halfspace.Rd                 |   95 +
 man/depth.potential.Rd                 |  102 +
 man/depth.projection.Rd                |   97 +
 man/depth.sample.Rd                    |   51 +
 man/depth.simplicial.Rd                |   81 +
 man/depth.simplicialVolume.Rd          |   82 +
 man/depth.space..Rd                    |   80 +
 man/depth.space.Mahalanobis.Rd         |   64 +
 man/depth.space.halfspace.Rd           |   78 +
 man/depth.space.potential.Rd           |  101 +
 man/depth.space.projection.Rd          |   72 +
 man/depth.space.simplicial.Rd          |   62 +
 man/depth.space.simplicialVolume.Rd    |   60 +
 man/depth.space.spatial.Rd             |   60 +
 man/depth.space.zonoid.Rd              |   57 +
 man/depth.spatial.Rd                   |   78 +
 man/depth.zonoid.Rd                    |   74 +
 man/depthf..Rd                         |   99 +
 man/depthf.ABD.Rd                      |   79 +
 man/depthf.BD.Rd                       |   52 +
 man/depthf.HR.Rd                       |   49 +
 man/depthf.RP1.Rd                      |   78 +
 man/depthf.RP2.Rd                      |   78 +
 man/depthf.fd1.Rd                      |   96 +
 man/depthf.fd2.Rd                      |   80 +
 man/depthf.hM.Rd                       |   65 +
 man/depthf.hM2.Rd                      |   79 +
 man/derivatives.est.Rd                 |   63 +
 man/dknn.classify.Rd                   |   92 +
 man/dknn.classify.trained.Rd           |   82 +
 man/dknn.train.Rd                      |   86 +
 man/draw.ddplot.Rd                     |   68 +
 man/getdata.Rd                         |  193 +
 man/infimalRank.Rd                     |   50 +
 man/is.in.convex.Rd                    |   63 +
 man/plot.ddalpha.Rd                    |   54 +
 man/plot.ddalphaf.Rd                   |   57 +
 man/plot.functional.Rd                 |   77 +
 man/rawfd2dataf.Rd                     |   46 +
 man/resetPar.Rd                        |   30 +
 man/shape.fd.analysis.Rd               |  113 +
 man/shape.fd.outliers.Rd               |   89 +
 src/AlphaProcedure.cpp                 |  330 ++
 src/AlphaProcedure.h                   |   17 +
 src/Common.cpp                         |  281 ++
 src/Common.h                           |   42 +
 src/DKnn.cpp                           |  207 +
 src/DKnn.h                             |   12 +
 src/DataStructures.h                   |   89 +
 src/HD.cpp                             |  767 +++
 src/HD.h                               |   71 +
 src/Knn.cpp                            |  272 +
 src/Knn.h                              |   21 +
 src/Mahalanobis.cpp                    |   52 +
 src/Mahalanobis.h                      |    2 +
 src/OjaDepth.cpp                       |  107 +
 src/OjaDepth.h                         |    6 +
 src/Polynomial.cpp                     |  425 ++
 src/Polynomial.h                       |   14 +
 src/PotentialDepth.cpp                 |  107 +
 src/PotentialDepth.h                   |   28 +
 src/ProjectionDepth.cpp                |  102 +
 src/ProjectionDepth.h                  |   16 +
 src/SimplicialDepth.cpp                |  175 +
 src/SimplicialDepth.h                  |    9 +
 src/TukeyDepth.cpp                     |  170 +
 src/TukeyDepth.h                       |   15 +
 src/ZonoidDepth.cpp                    |  487 ++
 src/ZonoidDepth.h                      |   42 +
 src/asa047.cpp                         |  494 ++
 src/asa047.h                           |   16 +
 src/ddalpha.cpp                        |  554 ++
 src/depth.fd.f                         | 1232 +++++
 src/init.c                             |   97 +
 src/stdafx.cpp                         |   14 +
 src/stdafx.h                           |   75 +
 200 files changed, 34738 insertions(+)

diff --git a/DESCRIPTION b/DESCRIPTION
new file mode 100644
index 0000000..72a5429
--- /dev/null
+++ b/DESCRIPTION
@@ -0,0 +1,29 @@
+Package: ddalpha
+Type: Package
+Title: Depth-Based Classification and Calculation of Data Depth
+Version: 1.3.1
+Date: 2017-09-27
+Authors at R: c(person("Oleksii", "Pokotylo", role=c("aut", "cre"),
+                                          email = "alexey.pokotylo at gmail.com"),
+             person("Pavlo", "Mozharovskyi", role=c("aut"),
+                                          email = "pavlo.mozharovskyi at ensai.fr"),
+             person("Rainer", "Dyckerhoff", role=c("aut"),
+                                          email = "rainer.dyckerhoff at statistik.uni-koeln.de"),
+             person("Stanislav", "Nagy", role=c("aut"),
+                                          email = "nagy at karlin.mff.cuni.cz"))
+SystemRequirements: C++11
+Depends: stats, utils, graphics, grDevices, MASS, class, robustbase,
+        sfsmisc
+Imports: Rcpp (>= 0.11.0)
+LinkingTo: BH, Rcpp
+Description: Contains procedures for depth-based supervised learning, which are entirely non-parametric, in particular the DDalpha-procedure (Lange, Mosler and Mozharovskyi, 2014). The training data sample is transformed by a statistical depth function to a compact low-dimensional space, where the final classification is done. It also offers an extension to functional data and routines for calculating certain notions of statistical depth functions. 50 multivariate and 5 functional classi [...]
+License: GPL-2
+NeedsCompilation: yes
+Packaged: 2017-09-27 18:51:34 UTC; User
+Author: Oleksii Pokotylo [aut, cre],
+  Pavlo Mozharovskyi [aut],
+  Rainer Dyckerhoff [aut],
+  Stanislav Nagy [aut]
+Maintainer: Oleksii Pokotylo <alexey.pokotylo at gmail.com>
+Repository: CRAN
+Date/Publication: 2017-09-27 20:30:35 UTC
diff --git a/MD5 b/MD5
new file mode 100644
index 0000000..e6d9b94
--- /dev/null
+++ b/MD5
@@ -0,0 +1,199 @@
+ecc8879c1b825f0b7ef4be0ca0958efc *DESCRIPTION
+96f51bc094ba4e33578e2cfd7acc440b *NAMESPACE
+008c993dd46205f9eb1107dceb0d1dde *R/compclassf.r
+9fb15a82b70daf70ac9ab2b44b44b479 *R/dataf.geneexp.r
+aad0191b048cdad0cc180220d958bd78 *R/dataf.growth.r
+4cc1a0c89f6470bb73d96411b92a6e89 *R/dataf.medflies.r
+3581666a57fa82ee92f5fbb36bd42c77 *R/dataf.population.r
+7e21c38db2ecb572c9f813b35af81a0f *R/dataf.population2010.r
+46e95ccbd59054017d1af41d97ef5811 *R/dataf.sim.r
+2292382199a756abdbbfc2ee50ceaaf3 *R/dataf.tecator.r
+ddd3cd482768bf955054cb19a2b9a047 *R/ddalpha-internal.r
+8287d32bb6c470b743e99de669783aa5 *R/ddalpha.classify.r
+da8e0f853b7b11cbc19e81a0075708eb *R/ddalpha.test.r
+78c879d3170c163c3c76925a355abca8 *R/ddalpha.train.r
+479a49735ba5e71c1df9eaaf9ccbd8de *R/ddalphaf.r
+879b9c2af109e8ecfa82dc16276b357e *R/ddalphaf.test.r
+98d0d1cdb0ee71d79a3eafea5c41e495 *R/depth.contours.r
+7d062b4f3cd71de66ecd18cac78476d1 *R/depth.fd.R
+91767c731df04920c2cf1589516b55ad *R/depth.graph.r
+a266a2fd08f235018a01214b982cedc4 *R/depth.halfspace.r
+56aa887d9dfaa73def26f94a8e6acfb9 *R/depth.potential.r
+faccca44d8906fda6e17b12cb53148c0 *R/depth.projection.r
+88e5c7f27f6f8001618652b43343b0ef *R/depth.r
+27a3a8babba7fb393d4ee958be77cd2b *R/depth.simplicial.r
+79479df7ba68d46e17d3fc086d3bc5d1 *R/depth.simplicialVolume.r
+3c2792fd16a5818678019c35006d3572 *R/depth.space.zonoid.r
+aa8c0b2e1ca127e5aaeb44027a8b696a *R/depth.spatial.r
+d44fa5d8796d6ef25624c151861eae60 *R/depth.zonoid.r
+dcea368950ddbd6069915149b9058c27 *R/depthf.r
+c8b3ba2f38ee525805ab489cd56258a6 *R/dknn.R
+5aabf9e5de6a1d24dfd4a176ca70ed50 *R/draw.ddplot.r
+1ac3cc033e9681db49f1260b6b586be2 *R/getdata.R
+551552b2a55dad12a8c8f7c436cd4166 *R/is.in.convex.r
+f52e72f811f9fdc6a292499501ab8fba *R/knnaff.r
+08479c1c79779872a6e8781faff7a35f *R/lda.r
+7313a981d378f0a972f2edfcd3754380 *R/mahalanobis.scaling.r
+836cc2095f092877501f85a55693c627 *R/plot.functional.r
+6429f1288f6ae2ee1c87840587fa6124 *R/qda.r
+fbdd9a6013e51e0fd9429b3cfa34446a *R/routines.r
+0f31c8fcc4540f3b1a1f0fa1741291f0 *R/separator.polynomial.r
+420701b3922eaa282b7cd8c26c01b789 *data/baby.txt.gz
+ccfe61945a3f683276ce92a6e8d4dc47 *data/banknoten.txt.gz
+125cc90ae3153b05d315ceda1ea03b44 *data/biomed.txt.gz
+5e7adc223dee633a725d3c69d5dab2eb *data/bloodtransfusion.txt.gz
+b08e025d2e846beabbea7e2db6d3dede *data/breast_cancer_wisconsin.txt.gz
+63739c1a8eda9082507fea3ea9c678b9 *data/bupa.txt.gz
+c184e7e1f86eedc62d070bcc772fc909 *data/chemdiab_1vs2.txt.gz
+5a0c6cd6de59e0d819788f47232b054f *data/chemdiab_1vs3.txt.gz
+6151869a605ffc659b1ed46015c142a3 *data/chemdiab_2vs3.txt.gz
+74fc808c682a4c536157b3365dbd05bc *data/cloud.txt.gz
+0188f9341eb0d4654e085163f98144a4 *data/crabB_MvsF.txt.gz
+70ec8accf3940470a48ba45b1bd21eb2 *data/crabF_BvsO.txt.gz
+517cde82c1591e08f9cfe7d46c482458 *data/crabM_BvsO.txt.gz
+1011d03a9b30ef3b303496d930b0792a *data/crabO_MvsF.txt.gz
+2f827beb1b109cad8721de6579949c78 *data/crab_BvsO.txt.gz
+1680ac8abdd658b0f9bacc89ef14fe82 *data/crab_MvsF.txt.gz
+00f13801e618fbe2d9d9374195bd26c6 *data/cricket_CvsP.txt.gz
+ebb6ba34d97afd984bf0ded9cdb74594 *data/diabetes.txt.gz
+63ead66c38660fe9f735b348bbeacf3b *data/ecoli_cpvsim.txt.gz
+50a3d7aafa9126d67fd7834034b731c2 *data/ecoli_cpvspp.txt.gz
+19e9106212f5a84f63cbf7a6936edaab *data/ecoli_imvspp.txt.gz
+7b44ec9a513f704ebc08c7993e4667da *data/gemsen_MvsF.txt.gz
+a37f50b8b2b390ed5fd465644dba906d *data/glass.txt.gz
+be7c33db1e2e1e1a4fde3eb255391221 *data/groessen_MvsF.txt.gz
+a44f33c1ecb9dfc67ed579dbb34ac74e *data/haberman.txt.gz
+bab49611b881a6e18fbee5bd510d4ea3 *data/heart.txt.gz
+1b73fda3ae015c840ee55aa3c6a14daa *data/hemophilia.txt.gz
+7f2c914ed84792e160552a231f31f477 *data/indian_liver_patient_1vs2.txt.gz
+f099f50e2f38395ad670af1c60066ad7 *data/indian_liver_patient_FvsM.txt.gz
+6dff93a4bad8b490185362d84a09d2a0 *data/iris_setosavsversicolor.txt.gz
+8fb455f8fd8dfe7a85e67f5fda6507a5 *data/iris_setosavsvirginica.txt.gz
+e0e5e7af15b61e2791938e0388d68d71 *data/iris_versicolorvsvirginica.txt.gz
+00486abc989444ea94f76ab0adabf66f *data/irish_ed_MvsF.txt.gz
+99265bd2ff8eecd81ebed30476175236 *data/kidney.txt.gz
+15ddfeb5f6233b10ad15e18e2c2a2faa *data/pima.txt.gz
+d3dcebf7e7a7d978ca7d0971ecfe8ae2 *data/plasma_retinol_MvsF.txt.gz
+9e2e11df178d8339e9ed917c721e6c1f *data/segmentation.txt.gz
+bdeb17db9afe85fd9a2fe1a38b1e7469 *data/socmob_IvsNI.txt.gz
+6fc9afd1acd58cfc69026e65ebdae342 *data/socmob_WvsB.txt.gz
+0901f964192f94c2a5901804228379cc *data/tae.txt.gz
+2f43e05f8c897e8c4e310002647a69c8 *data/tennis_MvsF.txt.gz
+26d1fde06974fc2082c88fb00846b989 *data/tips_DvsN.txt.gz
+9cc05f785d004dc0c328841d9e156f98 *data/tips_MvsF.txt.gz
+1b3b8dad44d1bb6054d18ae7227175e5 *data/uscrime_SvsN.txt.gz
+849868cfd89118c21a8664415c10843e *data/vertebral_column.txt.gz
+40b4cf81044f67f59a0b1392394b6912 *data/veteran_lung_cancer.txt.gz
+09f6e2e73f011736d3c0eae95522e748 *data/vowel_MvsF.txt.gz
+f00ffe449bd008d028a2a7f1a3e1b130 *data/wine_1vs2.txt.gz
+d4e6b368252e7b2c40b8bcbabbc97cd8 *data/wine_1vs3.txt.gz
+285c2a26aaff446ba2e3aea50278801f *data/wine_2vs3.txt.gz
+a64312f2dabeecac67fc667e6f94e5c8 *inst/CITATION
+1efd56e83b3f48a22fe6e03dfa4910a8 *man/Cmetric.Rd
+f7d675e4b1d55bdf63c624bbc942935d *man/CustomMethods.Rd
+efa17d97fa4897ac5f7848448fdbd6a8 *man/FKS.Rd
+8d2ad984642691545b5e151a47f21b6c *man/L2metric.Rd
+28b11620ba159a6fd916b328445bde2e *man/compclassf.classify.Rd
+521c777c8941e2ab1889b8100f208ce5 *man/compclassf.train.Rd
+6f6ca2c25aa1aec6284faad616cb6f20 *man/dataf..Rd
+50ea595802a863de966abf62757663ab *man/dataf.geneexp.Rd
+7f1f1c012df6a58ca452c0b42553c9bc *man/dataf.growth.Rd
+7f794348881aafef6f84e312bf1c6651 *man/dataf.medflies.Rd
+3579d74ced81ad6717c3caf59e45ca44 *man/dataf.population.Rd
+fac8c007b22b93b09f508b584c7a365c *man/dataf.population2010.Rd
+06e1dee90af1a69866d77273cf49e53f *man/dataf.sim.1.CFF07.Rd
+805f3f0a524ba6f4388e43b6ba4f7a76 *man/dataf.sim.2.CFF07.Rd
+13c1661b075697aff667fa1f6f71b6f4 *man/dataf.tecator.Rd
+dbc923645aebf7e6be2a6c3fba124d99 *man/dataf2rawfd.Rd
+a4ee2b544f90e91ac71f5c4adeee0dcb *man/ddalpha-package.Rd
+0696730fe876b622bd70549f3b39131b *man/ddalpha.classify.Rd
+2b1b7cc4433374af973733782c45e225 *man/ddalpha.getErrorRateCV.Rd
+5acb9396ca92a50d5fa54ed68895e23f *man/ddalpha.getErrorRatePart.Rd
+51f3aed347816ce02b5f23cbf65154a5 *man/ddalpha.test.Rd
+95b6f1c3b31e4802f8ab34850e5d32c8 *man/ddalpha.train.Rd
+299d4099f44d5a06c210f991784a0fc6 *man/ddalphaf.classify.Rd
+d3fd03f7e2c56e943c0c3e9687585cc3 *man/ddalphaf.getErrorRateCV.Rd
+5f354ee521ee9fcaaeeadffbdaabc1c9 *man/ddalphaf.getErrorRatePart.Rd
+c343dbc3bc4d0e4e53d472f554ff3607 *man/ddalphaf.test.Rd
+4b6ffe1cdd0cd00149470c300275bc0b *man/ddalphaf.train.Rd
+4bd21c9209ea033ac60615646bbff72d *man/depth..Rd
+1a7f56172ae085fd37ea3eb373701847 *man/depth.Mahalanobis.Rd
+cee54f39836dbaefc0dd4d334dedc736 *man/depth.contours.Rd
+a79b0f4b9c56571c270b10b449b5a8b6 *man/depth.contours.ddalpha.Rd
+bab80846e3b9eddbe8a967ee441f8650 *man/depth.graph.Rd
+4f360c741c7bd04f879f1abfba6e7511 *man/depth.halfspace.Rd
+496500fa8e84bcc1595ec091255a5e1f *man/depth.potential.Rd
+d5f002dd017d7f4146002565a8441e67 *man/depth.projection.Rd
+aa4cd5ba8100d7195ba61b9b6d0165c9 *man/depth.sample.Rd
+3561779792783a3dcad199eb489ed2e6 *man/depth.simplicial.Rd
+afd03c63c4ebf5dcbab3d3323bf5326a *man/depth.simplicialVolume.Rd
+d39271c146a78ba803b12914118624ab *man/depth.space..Rd
+c2c713412949a73174c58bda481cc3ee *man/depth.space.Mahalanobis.Rd
+ffebe19d9bb8c850d080744eaafc4416 *man/depth.space.halfspace.Rd
+4138d41ee15dd15c3d576b2006b5aced *man/depth.space.potential.Rd
+c0c632e8db5a9ed727e597d15d5fc863 *man/depth.space.projection.Rd
+db04ab56f27a4c712a6b1e5dd5145d87 *man/depth.space.simplicial.Rd
+b128141314b0880d1a4908609b3b2a73 *man/depth.space.simplicialVolume.Rd
+af3dc3eff0c00aa49264c3d956902125 *man/depth.space.spatial.Rd
+f8d10359a82f05fb4d5425cbde57a495 *man/depth.space.zonoid.Rd
+5f0a3513e4055fb3276649e48bb7f54b *man/depth.spatial.Rd
+287fd39bb732af52e46d58751db7d817 *man/depth.zonoid.Rd
+8e83dcbaaa7edfdb87c87fd9baec1861 *man/depthf..Rd
+855a727498a9d56e9bef3fe8b1375d7b *man/depthf.ABD.Rd
+9fc278e194b26ea0d134c33e562d08e4 *man/depthf.BD.Rd
+0520dede87c0034ca9a2fd8d7663efc7 *man/depthf.HR.Rd
+ce69c9ce3defa04372a287875b5354a1 *man/depthf.RP1.Rd
+8b05c1dbcd32e3393533ac8d59e79b04 *man/depthf.RP2.Rd
+0b56a6e17c1d308d8aed75fad2a3d091 *man/depthf.fd1.Rd
+04c6936cb7938bb928c160c17939346a *man/depthf.fd2.Rd
+8847d34370c60cf0e4894310d93dc72c *man/depthf.hM.Rd
+03535315765d34c30297b8c1999b0bfe *man/depthf.hM2.Rd
+9eae672b924d34780b88f37b0946386f *man/derivatives.est.Rd
+7ae891638b40364965d25dac46124d33 *man/dknn.classify.Rd
+6f093a53f8cd3cb37952e31bf6458290 *man/dknn.classify.trained.Rd
+b69ee34c6dcccb8b9880220dee2b094c *man/dknn.train.Rd
+09152e3d1f202e16ea3b232556aeb9fc *man/draw.ddplot.Rd
+98ae732ce7ed854a00a10130f2c9bd45 *man/getdata.Rd
+6fa28cffdbd6862127b482e54e38b627 *man/infimalRank.Rd
+516e1b8668300f022c0105882c052d9d *man/is.in.convex.Rd
+338fd013c826f43c5e8cd0925c616515 *man/plot.ddalpha.Rd
+abbd84a3e47a05b34f645dad854497e6 *man/plot.ddalphaf.Rd
+040571c9d53052059e4e99ff62e79dea *man/plot.functional.Rd
+37c4f27c57bca31c1957f17f2a3f0722 *man/rawfd2dataf.Rd
+553f98996bf9f870922a002da3ea5836 *man/resetPar.Rd
+502f7aeca2c622d9cff501146de88ed1 *man/shape.fd.analysis.Rd
+b24f069cfe267217b7d5619c503f4e32 *man/shape.fd.outliers.Rd
+10446d2c21fb0e77c64d393b90b51d97 *src/AlphaProcedure.cpp
+5217e4fd435c93e77ff105b5e18c043d *src/AlphaProcedure.h
+9a8f8f2a2d7b110a3da5f546d8c92e50 *src/Common.cpp
+73dc91c7c9764a7494da4761d2fd06ab *src/Common.h
+1b5e18f9ea175c02253dd53d0e77763f *src/DKnn.cpp
+28070a0f96061bcaa42c56ec9cb1e42c *src/DKnn.h
+6b081eef24a9e6bc4ed34289c9a9f756 *src/DataStructures.h
+ff143c8347281cb29b9b12b60a1b45c6 *src/HD.cpp
+0e7c7f1fa9a8bf7590b7d1e8d620e5cf *src/HD.h
+f591c09f81ae7a85ee5a946656a5da7d *src/Knn.cpp
+87127b7937dcaa6f5d042b2615136ca3 *src/Knn.h
+01ea50a2152648ed210b84e1e082a67e *src/Mahalanobis.cpp
+c2c13ea110f5e0597efffae5b4e3587f *src/Mahalanobis.h
+aba85cba89300dade2254b0b502602b9 *src/OjaDepth.cpp
+3cc3bca13be8b94577594c876c7cd245 *src/OjaDepth.h
+f9ce0292ecae06cdda5d41a2d0e24a3a *src/Polynomial.cpp
+4910b02364066d3dcf85700ec441f7aa *src/Polynomial.h
+15fa28de11873644ec2647e57ffd4210 *src/PotentialDepth.cpp
+bcd7fe3926f3846ec5bf513ae4ff955b *src/PotentialDepth.h
+e9030ecbdcc007d36ef442445b2322a6 *src/ProjectionDepth.cpp
+dd72630ebdef6a21d4ecf956867861ef *src/ProjectionDepth.h
+b3872fed92766cfe1866b46cad859cde *src/SimplicialDepth.cpp
+db12ecbd2b6d9c95dd859c52934e2bf9 *src/SimplicialDepth.h
+d47f93174110cc45c0525f4154ecec65 *src/TukeyDepth.cpp
+c7e85da8b8c29692f94e5fe1bae36b7a *src/TukeyDepth.h
+1a08c11646389b775cb0d2f9a170aa17 *src/ZonoidDepth.cpp
+b6b9054c37bab86d07c8baea10f481f5 *src/ZonoidDepth.h
+99b1f54b9e63662b9a1fb8fd015cdf84 *src/asa047.cpp
+0d15945f463fd3dcc4483620d5f2ab8f *src/asa047.h
+76be09791fcb8431ff6dad9af827dcda *src/ddalpha.cpp
+3fca9e5fac9be017aa2d26d1c75f446c *src/depth.fd.f
+a90105e47ce2acbb5a8fc3db8523ef8f *src/init.c
+6ca76da5227ee1a6dd5f5dd8ce29c8de *src/stdafx.cpp
+5d5c56df412520897f026757eff63f34 *src/stdafx.h
diff --git a/NAMESPACE b/NAMESPACE
new file mode 100644
index 0000000..50bda2c
--- /dev/null
+++ b/NAMESPACE
@@ -0,0 +1,50 @@
+export(ddalpha.train, ddalpha.classify,  
+       ddalpha.test, ddalpha.getErrorRateCV, ddalpha.getErrorRatePart,
+       ddalphaf.train, ddalphaf.classify, 
+       ddalphaf.test, ddalphaf.getErrorRateCV, ddalphaf.getErrorRatePart,
+       compclassf.train, compclassf.classify,
+       depth., depth.space.,
+       depth.zonoid, depth.halfspace, depth.Mahalanobis, depth.projection, depth.spatial, depth.simplicial, depth.simplicialVolume, depth.potential,
+       depth.space.zonoid, depth.space.halfspace, depth.space.Mahalanobis, depth.space.projection, depth.space.spatial, depth.space.simplicial, depth.space.simplicialVolume, depth.space.potential,
+       is.in.convex, 
+       dknn.train, dknn.classify, dknn.classify.trained,
+       resetPar, depth.graph, draw.ddplot, depth.contours, depth.contours.ddalpha,
+       getdata,
+       dataf.geneexp, dataf.growth, dataf.medflies, dataf.tecator,
+       dataf.sim.1.CFF07, dataf.sim.2.CFF07,
+       plot.functional, lines.functional, points.functional)
+export(FKS, shape.fd.analysis, shape.fd.outliers, 
+       depthf.,
+       depthf.BD, depthf.ABD, depthf.fd1, depthf.fd2,
+       depthf.HR, depthf.hM, depthf.hM2, depthf.RP1, depthf.RP2, derivatives.est, 
+       L2metric, Cmetric, depth.sample, infimalRank, dataf.population, dataf.population2010,
+       dataf2rawfd, rawfd2dataf
+       )
+useDynLib(ddalpha, .registration = TRUE)
+S3method(predict, ddalpha)
+S3method(predict, ddalphaf)
+S3method(predict, compclassf)
+S3method(plot, ddalpha)
+S3method(plot, ddalphaf)
+S3method(plot, functional)
+S3method(lines, functional)
+S3method(points, functional)
+S3method(print, ddalpha)
+S3method(print, ddalphaf)
+S3method(summary, ddalpha)
+S3method(summary, ddalphaf)
+S3method(print, ddalpha.pattern)
+S3method(print, ddalpha.alpha)
+S3method(print, ddalpha.polynomial)
+S3method(print, ddalpha.knnlm)
+S3method(print, ddalpha.maxD)
+import(stats)
+import(utils)
+import(graphics)
+import(grDevices)
+import(MASS)
+import(class)
+import(robustbase)
+import(Rcpp)
+
+import(sfsmisc)
\ No newline at end of file
diff --git a/R/compclassf.r b/R/compclassf.r
new file mode 100644
index 0000000..d72e7eb
--- /dev/null
+++ b/R/compclassf.r
@@ -0,0 +1,403 @@
+compclassf.train <- function(dataf, labels, subset,
+                            to.equalize = TRUE, 
+                            to.reduce = TRUE, 
+                            classifier.type = c("ddalpha", "maxdepth", "knnaff", "lda", "qda"), 
+                            ...){
+  # Trains the functional componentwise classifier
+  # Args:
+  #   dataf:  list containing lists (functions) of two vectors of equal length, 
+  #           named "args" and "vals": arguments sorted in ascending order and 
+  #           corresponding them values respectively
+  #   labels: output labels of the functinal observations
+  #   other arguments: TODO
+  # Returns:
+  #   Functional componentwise clasifier
+  
+  # Check "dataf"
+  if (!is.list(dataf))
+    stop("Argument 'dataf' must be a list")
+  for (df in dataf)
+    if (!(is.list(df) && length(df) == 2 &&
+          !is.null(df$args) && !is.null(df$vals) &&
+          is.vector(df$args) && is.vector(df$vals) &&
+          is.numeric(df$args) && is.numeric(df$vals) &&
+          length(df$args) == length(df$vals) &&
+          sort(df$args) == df$args))
+      stop("Argument 'dataf' must be a list containing lists (functions) of two vectors of equal length, named 'args' and 'vals': arguments sorted in ascending order and corresponding them values respectively")
+  
+  if(!missing(subset)) {
+    dataf = dataf[subset]
+    labels = labels[subset]
+  }
+  
+  # Check "labels"
+  if (!(length(dataf)==length(labels) && length(unique(labels)>=2)))
+      stop("Argument 'labels' has wrong format")
+  
+  # Check classifier.type
+  classifier.type = match.arg(classifier.type)
+  
+  # Bring to finite dimension
+  
+  # Pointize
+  points <- GetPointsDHB12(dataf, labels, to.equalize, to.reduce)
+  # CV
+  arg.indices <- getBestSpaceDHB12(points$data, classifier.type, num.chunks=10, ...)
+  data <- points$data[,c(arg.indices,ncol(points$data))]
+  # Apply chosen classifier to train the data
+  if (classifier.type == "ddalpha"){
+    classifier <- ddalpha.train(data, separator = "alpha", ...)
+  }
+  if (classifier.type == "maxdepth"){
+    classifier <- ddalpha.train(data, separator = "maxD", ...)
+  }
+  if (classifier.type == "knnaff"){
+    classifier <- knnaff.train(data, i = 0, ...)
+  }
+  if (classifier.type == "lda"){
+    classifier <- lda.train(data, ...)
+  }
+  if (classifier.type == "qda"){
+    classifier <- qda.train(data, ...)
+  }
+  # Create the eventual output structure
+  compclassf <- structure(
+    list(dataf = points$dataf, 
+      labels = points$labels, 
+      adc.method = "equalCover", 
+      adc.args = list(instance = "val", numFcn = ncol(points$data) - 1, numDer = 0), 
+      adc.transmat = points$transmat, 
+      the.args = arg.indices, 
+      data = points$data, 
+      classifier.type = classifier.type, 
+      classifier = classifier), 
+    .Names = c("dataf", "labels", "adc.method", "adc.args", "adc.transmat", 
+               "the.args",  "data", "classifier.type", "classifier"))
+  class(compclassf) <- "compclassf"
+  
+  return (compclassf)
+}
+
+compclassf.classify <- function(compclassf, objectsf, subset, ...){
+  # Classifies functions
+  # Args:
+  #   objectsf: sample to classify, a list containing lists (functions) of 
+  #             two vectors of equal length, named "args" and "vals": 
+  #             arguments sorted in ascending order and corresponding them 
+  #             values respectively
+  #   compclassf: functional DDalpha-classifier
+  # Returns:
+  #   List of labels assigned to the functions from "objectsf"
+
+  # Check "objectsf"
+  if (!is.list(objectsf))
+    stop("Argument 'objectsf' must be a list")
+  if (!is.null(objectsf$args)){
+    objectsf = list(objectsf) # there was a single element 
+  }
+  
+  if(!missing(subset)) {
+    objectsf = objectsf[subset]
+  }
+  
+  for (df in objectsf)
+    if (!(is.list(df) && length(df) == 2 &&
+            !is.null(df$args) && !is.null(df$vals) &&
+            is.vector(df$args) && is.vector(df$vals) &&
+            is.numeric(df$args) && is.numeric(df$vals) &&
+            length(df$args) == length(df$vals) &&
+            sort(df$args) == df$args))
+      stop("Argument 'objectsf' must be a list containing lists (functions) of two vectors of equal length, named 'args' and 'vals': arguments sorted in ascending order and corresponding them values respectively")
+
+  # Prepare to multivariate classification
+  objectsf.equalized <- equalize(objectsf)
+  if (compclassf$adc.method == "equalCover"){
+    if (compclassf$adc.args$instance == "val"){
+      input <- getValGrid(objectsf.equalized, 
+                          compclassf$adc.args$numFcn, compclassf$adc.args$numDer)
+    }
+    if (compclassf$adc.args$instance == "avr"){
+      input <- getAvrGrid(objectsf.equalized, 
+                          compclassf$adc.args$numFcn, compclassf$adc.args$numDer)
+    }
+    if (!is.null(compclassf$adc.transmat)){
+      input <- input%*%compclassf$adc.transmat
+    }
+  }
+  input <- input[,compclassf$the.args]
+  # Classify and assign class labels
+  if (compclassf$classifier.type == "ddalpha" || compclassf$classifier.type == "maxdepth"){
+    output <- ddalpha.classify(objects = input, ddalpha = compclassf$classifier, ...)
+  }
+  if (compclassf$classifier.type == "knnaff"){
+    output <- knnaff.classify(objects = input, compclassf$classifier, ...)
+  }
+  if (compclassf$classifier.type == "lda"){
+    output <- lda.classify(objects = input, compclassf$classifier, ...)
+  }
+  if (compclassf$classifier.type == "qda"){
+    output <- qda.classify(objects = input, compclassf$classifier, ...)
+  }
+  classes <- list()
+  for (i in 1:length(output)){
+#    if (is.numeric(output[[i]])){
+      classes[[i]] <- compclassf$labels[[ output[[i]] ]]
+#    }else{
+#      classes[[i]] <- output[[i]]
+#    }
+  }
+
+  return (classes)
+}
+
+predict.compclassf <- function(object, objectsf, subset, ...){
+  compclassf.classify(object, objectsf, subset, ...)
+}
+
+print.compclassf <- function(x, ...){
+  cat("compclassf:\n")
+  cat("\t num.functions = ", length(x$dataf), 
+      ", num.patterns = ", length(unique(x$labels)), "\n", sep="")
+  #  cat("\t adc.method", x$adc.method, "\"\n", sep="")
+  cat("\t adc:", x$adc.args$instance, "; numFcn:", x$adc.args$numFcn, "; numDer:", x$adc.args$numDer, "\"\n", sep="")
+  cat("\t adc.transmat", x$adc.transmat, "\"\n", sep="")
+  cat("\t classifier.type", x$classifier.type, "\"\n", sep="")
+  cat("\t classifier:\n") 
+  print(x$classifier)
+}
+
+################################################################################
+# Functions below are used for intermediate computations                       #
+################################################################################
+
+GetPointsDHB12 <- function(dataf, labels, to.equalize=T, to.reduce=F){
+  # Numerize labels
+  names <- unique(labels)
+  output <- rep(0, length(labels))
+  for (i in 1:length(labels)){
+    for (j in 1:length(names)){
+      if (labels[[i]] == names[[j]]){
+        output[i] = j
+        break
+      }
+    }
+  }
+  # Prepare data
+  if (to.equalize){
+    num.times = length(dataf[[1]]$args)
+    dataf.equalized <- equalize(dataf)
+    adc.args = list(instance = "val", 
+                    numFcn = num.times, 
+                    numDer = 0)
+    input <- getValGrid(dataf.equalized, adc.args$numFcn, adc.args$numDer)
+  }else{
+    input <- NULL
+    for (i in 1:length(dataf)){
+      input <- rbind(input, dataf[[i]]$vals)
+    }
+  }
+  transmat <- NULL
+  if (to.reduce){# Reduce dimension if needed
+    princomps <- NULL
+    newDim <- ncol(input)
+    for (i in 1:length(names)){
+      classi <- input[output == i,1:ncol(input)]
+      princompsi <- prcomp(x=classi, tol=sqrt(.Machine$double.eps))
+      newDimi <- sum(princompsi$sdev > sqrt(.Machine$double.eps))
+      if (newDimi < newDim){
+        newDim <- newDimi
+        princomps <- princompsi
+      }
+    }
+    transmat <- NULL
+    if (newDim < ncol(input)){
+      transmat <- matrix(as.vector(princomps$rotation[,1:newDim]), ncol=newDim)
+      input <- input%*%transmat
+    }
+  }
+  # Combine data
+  data <- cbind(input, output, deparse.level=0)
+  return (list(data = data, dataf = dataf.equalized, labels = names, transmat = transmat))
+}
+
+getBestSpaceDHB12 <- function(data, 
+                              classifier.type = "ddalpha", 
+                              num.chunks = 10, 
+                              ...){
+  indices.num <- ncol(data) - 1
+  indices.avlbl <- rep(TRUE, indices.num)
+  indices.best <- c()
+  error.last <- nrow(data) + 1
+  r <- 0
+  while (sum(indices.avlbl) > 0){
+    # If this is the first iteration search through all possible pairs
+    if (r == 0){
+      # Generate all combinations with smallest distance 2
+      combinations <- combn((1:indices.num)[indices.avlbl], 2)
+      tmp.cmb <- rbind(combinations[-1,], rep(-1000000, ncol(combinations)))
+      tmp.cmb <- (tmp.cmb - combinations)==T
+      combinations <- combinations[,apply(tmp.cmb, 2, sum)==0]
+      # Choose the best combination
+      errors <- c()
+      for (i in 1:ncol(combinations)){
+        cat("r = ", r, ": ", i, "/", ncol(combinations), ".\n", sep="")
+        errors <- c(errors, 0)
+        # Actually CV
+        num.points <- nrow(data)
+        indices.off <- num.chunks*(0:(ceiling(num.points/num.chunks) - 1))
+        for (j in 1:num.chunks){
+          # Determine points to be taken off
+          take.off <- (indices.off + j)[(indices.off + j) <= num.points]
+          # Apply chosen classifier
+          if (classifier.type == "ddalpha"){
+            classifier <- ddalpha.train(data[-take.off,c(combinations[,i], indices.num + 1)], separator = "alpha", ...)
+            results <- ddalpha.classify(objects = data[take.off,combinations[,i]], ddalpha = classifier)
+          }
+          if (classifier.type == "maxdepth"){
+            classifier <- ddalpha.train(data[-take.off,c(combinations[,i], indices.num + 1)], separator = "maxD", ...)
+            results <- ddalpha.classify(objects = data[take.off,combinations[,i]], ddalpha = classifier)
+          }
+          if (classifier.type == "knnaff"){
+            classifier <- knnaff.train(data[-take.off,c(combinations[,i], indices.num + 1)], i = i, ...)
+            results <- knnaff.classify(data[take.off,combinations[,i]], classifier)
+          }
+          if (classifier.type == "lda"){
+            classifier <- lda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- lda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          if (classifier.type == "qda"){
+            classifier <- qda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- qda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          # Collect errors
+          errors[i] <- errors[i] + sum(unlist(results) != data[take.off,indices.num + 1])
+        }
+      }
+      # Collect results
+      error.last <- min(errors)
+      indices.best <- combinations[,which.min(errors)]
+      indices.avlbl <- rep(TRUE, indices.num)
+      indices.to.dsbl <- unique(c(indices.best, indices.best - 1, indices.best + 1))
+      indices.to.dsbl <- indices.to.dsbl[indices.to.dsbl >= 1 && indices.to.dsbl <= indices.num]
+      indices.avlbl[indices.to.dsbl] <- FALSE
+      r <- 2
+      next
+    }
+    # First, sequential approach
+    errors <- c()
+    variants <- c()
+    for (i in 1:indices.num){
+      if (indices.avlbl[i]){
+        errors <- c(errors, 0)
+        variants <- c(variants, i)
+        indices.cur <- c(indices.best, i)
+        # Actually CV
+        num.points <- nrow(data)
+        indices.off <- num.chunks*(0:(ceiling(num.points/num.chunks) - 1))
+        for (j in 1:num.chunks){
+          # Determine points to be taken off
+          take.off <- (indices.off + j)[(indices.off + j) <= num.points]
+          # Apply chosen classifier
+          if (classifier.type == "ddalpha"){
+            classifier <- ddalpha.train(data[-take.off,c(indices.cur, indices.num + 1)], separator = "alpha", ...)
+            results <- ddalpha.classify(objects = data[take.off,indices.cur], ddalpha = classifier)
+          }
+          if (classifier.type == "maxdepth"){
+            classifier <- ddalpha.train(data[-take.off,c(indices.cur, indices.num + 1)], separator = "maxD", ...)
+            results <- ddalpha.classify(objects = data[take.off,indices.cur], ddalpha = classifier)
+          }
+          if (classifier.type == "knnaff"){
+            classifier <- knnaff.train(data[-take.off,c(indices.cur, indices.num + 1)], i = i, ...)
+            results <- knnaff.classify(data[take.off,indices.cur], classifier)
+          }
+          if (classifier.type == "lda"){
+            classifier <- lda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- lda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          if (classifier.type == "qda"){
+            classifier <- qda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- qda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          # Collect errors
+          errors[i] <- errors[i] + sum(unlist(results) != data[take.off,indices.num + 1])
+        }
+      }
+    }
+    error.best <- min(errors)
+    best.i <- variants[which.min(errors)[1]]
+    indices.new <- c(indices.best, best.i)
+    # Refinements for r=2, 3 and 4
+    if (r %in% 2:3){
+      # Define the grid
+      if (r == 2){step <- 10}
+      if (r == 3){step <- 5}
+      grid.one <- c(-(1:step*2), 0, 1:step*2)
+      grid <- c()
+      for (i in 1:length(indices.new)){
+        grid <- c(grid, indices.new[i] + grid.one)
+      }
+      grid <- unique(grid)
+      grid <- sort(grid[(grid >= 1) & (grid <= indices.num)])
+      # Generate all combinations with smallest distance 2
+      combinations <- combn(grid, r + 1)
+      tmp.cmb <- rbind(combinations[-1,], rep(-1000000, ncol(combinations)))
+      tmp.cmb <- (tmp.cmb - combinations)==T
+      combinations <- combinations[,apply(tmp.cmb, 2, sum)==0]
+      # Choose the best combination
+      #indices.grid <- (1:indices.num)[indices.avlbl & ((1:induces.num) %in% grid)]
+      # Go through the combinations
+      errors <- c()
+      #combinations <- combn(indices.grid, r + 1)
+      for (i in 1:ncol(combinations)){
+        cat("r = ", r, ": ", i, "/", ncol(combinations), ".\n", sep="")
+        errors <- c(errors, 0)
+        # Actually CV
+        num.points <- nrow(data)
+        indices.off <- num.chunks*(0:(ceiling(num.points/num.chunks) - 1))
+        for (j in 1:num.chunks){
+          # Determine points to be taken off
+          take.off <- (indices.off + j)[(indices.off + j) <= num.points]
+          # Apply chosen classifier
+          if (classifier.type == "ddalpha"){
+            classifier <- ddalpha.train(data[-take.off,c(combinations[,i], indices.num + 1)], separator = "alpha", ...)
+            results <- ddalpha.classify(objects = data[take.off,combinations[,i]], ddalpha = classifier)
+          }
+          if (classifier.type == "maxdepth"){
+            classifier <- ddalpha.train(data[-take.off,c(combinations[,i], indices.num + 1)], separator = "maxD", ...)
+            results <- ddalpha.classify(objects = data[take.off,combinations[,i]], ddalpha = classifier)
+          }
+          if (classifier.type == "knnaff"){
+            classifier <- knnaff.train(data[-take.off,c(combinations[,i], indices.num + 1)], i = i, ...)
+            results <- knnaff.classify(data[take.off,combinations[,i]], classifier)
+          }
+          if (classifier.type == "lda"){
+            classifier <- lda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- lda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          if (classifier.type == "qda"){
+            classifier <- qda.train(data[-take.off,c(combinations[,i], indices.num + 1)], ...)
+            results <- qda.classify(data[take.off,combinations[,i]], classifier)
+          }
+          # Collect errors
+          errors[i] <- errors[i] + sum(unlist(results) != data[take.off,indices.num + 1])
+        }
+      }
+      error.best <- min(errors)
+      indices.cur <- combinations[,which.min(errors)]
+    }else{
+      indices.cur <- indices.new
+    }
+    if (error.best < error.last){
+      indices.best <- indices.cur
+      error.last <- error.best
+      indices.avlbl <- rep(TRUE, indices.num)
+      indices.to.dsbl <- unique(c(indices.best, indices.best - 1, indices.best + 1))
+      indices.to.dsbl <- indices.to.dsbl[indices.to.dsbl >= 1 && indices.to.dsbl <= indices.num]
+      indices.avlbl[indices.to.dsbl] <- FALSE
+      r <- r + 1
+    }else{
+      break
+    }
+  }
+  return (indices.best)
+}
diff --git a/R/dataf.geneexp.r b/R/dataf.geneexp.r
new file mode 100644
index 0000000..d540383
--- /dev/null
+++ b/R/dataf.geneexp.r
@@ -0,0 +1,1025 @@
+dataf.geneexp <- function() return(structure(list(
+  name = "Gene expression profile",
+  args = "Time",
+  vals = "Gene Expression Level",
+  dataf = list(structure(list(args = c(1, 2, 3, 
+4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 
+37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 
+53, 54, 55, 56, 57, 58), vals = c(-0.79346, -0.72282, -1.1507, 
+-1.2593, -1.1293, -1.7204, -1.8905, -1.8289, -1.2071, -1.13, 
+-1.4441, -1.406, -1.1594, -1.1599, -1.2878, -0.85163, -0.92525, 
+-0.78914, -1.3369, -1.5664, -1.2087, -1.6093, -1.7531, -1.758, 
+-1.6204, -1.8012, -1.9443, -2.1064, -2.1235, -2.0531, -1.8445, 
+-2.1241, -1.9314, -1.9622, -1.713, -1.7509, -1.6296, -1.3865, 
+-1.7515, -1.3763, -0.94793, -1.2154, -1.3163, -1.4855, -1.7739, 
+-1.1058, -1.9344, -1.5353, -1.0951, -1.7092, -1.4659, -1.2541, 
+-1.5393, -1.5075, -1.3383, -1.5323, -0.76116, -0.020631)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+58), vals = c(-2.9237, -2.3027, -2.5953, -2.6431, -2.9831, -1.9908, 
+-1.6091, -1.9276, -1.7989, -1.979, -1.7403, -1.7994, -2.4304, 
+-1.7085, -3.0015, -2.2597, -2.5687, -2.9699, -2.6344, -2.4365, 
+-2.1965, -2.7078, -2.4194, -2.2789, -2.5334, -2.868, -2.7163, 
+-2.2781, -2.2212, -1.7868, -1.3285, -2.3139, -2.1579, -1.3323, 
+-1.1929, -1.3453, -0.81118, -0.61914, -0.5528, -1.433, -3.2909, 
+-2.4675, -2.3171, -2.3398, -1.9107, -2.4868, -1.9697, -1.9728, 
+-2.222, -1.2862, -2.2955, -1.826, -1.412, -1.9418, -0.91909, 
+1.2252, 1.7191, 2.5376)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(0.012875, 
+    0.54291, 0.39255, 1.0531, 1.8504, 2.6788, 3.258, 3.2666, 
+    2.8947, 2.5465, 2.5699, 1.7148, 1.4883, 1.1486, 0.95165, 
+    0.60407, 1.0956, -0.39961, -1.4592, -0.97673, -1.0708, -1.4571, 
+    -1.5132, -1.5329, -2.1501, -1.9411, -2.0356, -2.1392, -2.2907, 
+    -2.1826, -2.1945, -1.9167, -2.3744, -2.1768, -2.6607, -2.0388, 
+    -1.8542, -2.0915, -1.7683, -1.3575, -1.8819, -2.0613, -1.8365, 
+    -1.8292, -1.9567, -1.6103, -1.8209, -1.11, -1.4996, -0.98583, 
+    -1.4011, -1.4696, -1.2322, -1.1479, -2.2176, -2.191, -2.4955, 
+    -2.8947)), .Names = c("args", "vals")), structure(list(args = c(1, 
+2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
+36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
+52, 53, 54, 55, 56, 57, 58), vals = c(0.6648, 0.71952, 0.69399, 
+1.0951, 1.351, 2.0205, 2.0547, 2.1753, 2.3976, 2.1094, 2.0807, 
+1.742, 1.625, 1.4568, 1.0819, 1.6432, 1.1584, 1.2409, 0.3143, 
+0.58087, 0.58163, 0.39639, 0.094816, -0.1501, -0.29, -0.20552, 
+-0.78168, -0.65061, -0.36965, -0.6619, -1.1946, -1.1276, -1.1635, 
+-1.3549, -1.1001, -1.2154, -1.3714, -1.6283, -1.4729, -0.67314, 
+-0.33132, -0.39986, -0.33167, -0.83143, -0.89797, -0.75742, -0.55735, 
+-0.41359, -0.38334, -0.82859, -0.25305, -0.88527, -0.7697, -0.49219, 
+-1.5014, -1.7083, -1.9584, -1.5321)), .Names = c("args", "vals"
+)), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
+12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
+28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
+44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), 
+    vals = c(-1.7925, -1.9611, -1.976, -1.9186, -1.9686, -2.2917, 
+    -1.9044, -1.6386, -2.0419, -1.6748, -2.1899, -1.1541, -2.0625, 
+    -2.2392, -1.9201, -1.7523, -1.8647, -2.2165, -1.8356, -1.7325, 
+    -1.5851, -1.6729, -1.3059, -1.3808, -1.2628, -1.7965, -1.7009, 
+    -1.5518, -1.6073, -1.2234, -0.91518, -0.76311, -1.1418, -1.381, 
+    -0.91266, -1.1619, -1.2233, -1.1135, -0.85427, -1.2815, -1.3147, 
+    -1.0157, -1.4202, -1.2221, -1.1709, -2.1365, -2.0055, -1.93, 
+    -1.8437, -1.5225, -1.9601, -0.4449, -0.94623, -0.65994, 0.57873, 
+    1.2035, 1.6094, 1.5759)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(1.0482, 
+    1.3086, 1.6183, 1.6691, 2.0618, 2.4132, 2.3888, 2.3113, 2.5517, 
+    2.5471, 2.629, 2.0421, 1.8806, 1.4594, 1.5782, 1.4648, 1.3702, 
+    0.93122, 0.26492, 0.58102, 0.1621, -0.089822, -0.34356, -0.55483, 
+    -0.82152, -0.94071, -1.5533, -1.5751, -1.3185, -1.733, -1.57, 
+    -1.4701, -1.1053, -1.4502, -0.59434, -0.7028, -0.52149, -1.155, 
+    -1.1425, -0.70915, -1.1731, -0.7073, -0.85389, -1.2348, -1.0732, 
+    -0.64193, -0.94265, -0.32552, -0.48599, -0.49183, -1.0672, 
+    -0.92053, -1.1667, -1.3988, -1.5481, -1.9106, -2.0763, -2.2972
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
+36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
+52, 53, 54, 55, 56, 57, 58), vals = c(0.79292, 0.9523, 1.3392, 
+1.4554, 1.8893, 2.2347, 2.2338, 2.1101, 2.1066, 1.9989, 2.0791, 
+1.5794, 1.3979, 1.0516, 1.2115, 0.97424, 1.0062, 0.20274, -0.20633, 
+-0.20398, -0.46979, -0.93601, -0.74061, -0.67741, -0.95927, -1.047, 
+-1.372, -1.6804, -1.5373, -1.6602, -1.1499, -1.5344, -1.7358, 
+-1.2336, -0.93484, -1.103, -1.0708, -1.1203, -0.61519, -1.3955, 
+-0.49976, -0.7862, -0.57059, -0.90059, -0.56299, -1.1129, -0.64078, 
+-0.48783, -0.62334, -0.26929, -0.50791, -0.73632, -0.50362, -1.0207, 
+-1.7806, -1.4889, -1.7085, -1.6877)), .Names = c("args", "vals"
+)), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
+12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
+28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
+44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), 
+    vals = c(0.84809, 1.376, 2.1127, 1.9301, 2.6181, 2.6503, 
+    2.2885, 1.8839, 0.92443, 0.92023, 1.1347, 1.1064, 0.96041, 
+    1.2286, 0.88536, 0.92572, 0.80553, -0.076896, -0.31587, -0.25326, 
+    -0.46411, -0.65685, -0.92195, -0.64383, -1.0379, -1.216, 
+    -1.3579, -1.2745, -1.3508, -1.4414, -1.031, -1.5037, -1.7109, 
+    -1.1026, -1.2745, -1.3144, -1.7634, -1.5522, -1.004, -1.1416, 
+    -0.89195, -1.0741, -1.1459, -0.89495, -1.1294, -0.67528, 
+    -0.72801, -0.53878, -0.1955, -0.3293, -0.55041, -0.9832, 
+    -0.55637, -0.81295, -1.7716, -1.5527, -1.8052, -2.1866)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+58), vals = c(-2.4971, -2.5373, -2.4136, -2.2974, -2.2307, -2.1471, 
+-1.8089, -1.7506, -1.6594, -1.5625, -1.5174, -1.7709, -1.6885, 
+-2.0027, -2.1217, -1.7514, -1.8223, -1.7503, -1.1565, -1.4987, 
+-1.4364, -1.5246, -1.1547, -0.85294, -0.97046, -0.4414, -0.27693, 
+-0.29009, -0.58615, -0.53882, -0.65488, -0.35291, -0.64562, -0.70815, 
+-0.68461, -1.0094, -1.0507, -1.071, -0.84101, -1.0441, -0.85233, 
+-1.2883, -1.3098, -1.3918, -0.62437, -1.2385, -1.7198, -0.84072, 
+-1.1826, -0.90406, -0.99757, -0.92359, -0.88185, -0.76023, -0.36434, 
+-0.029165, 0.66863, 0.66612)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.935, 
+    -2.8941, -2.595, -2.9575, -2.7484, -2.6137, -2.4772, -2.2623, 
+    -2.5435, -2.301, -2.513, -1.4675, -2.4154, -2.374, -1.6868, 
+    -2.2708, -2.1148, -2.0927, -2.3797, -2.2327, -1.9034, -2.0437, 
+    -1.9306, -1.309, -1.7931, -1.8825, -1.3705, -1.288, -1.8199, 
+    -1.627, -2.1355, -2.1393, -2.6322, -1.9628, -2.3385, -2.0218, 
+    -2.2874, -2.0252, -1.8153, -2.3615, -3.1811, -2.5212, -2.5742, 
+    -2.3961, -2.9316, -2.8931, -2.3292, -2.4506, -2.6527, -2.3129, 
+    -2.6529, -2.3822, -2.1897, -2.8689, -2.0812, 0.32188, 1.3789, 
+    1.8227)), .Names = c("args", "vals")), structure(list(args = c(1, 
+2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
+36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
+52, 53, 54, 55, 56, 57, 58), vals = c(-2.2204, -2.1197, -2.0283, 
+-1.7947, -1.1938, -1.2809, -1.6594, -1.86, -1.9558, -2.0185, 
+-2.2633, -2.0099, -2.1414, -2.0686, -1.6393, -1.4278, -1.5052, 
+-1.2922, -1.1492, -1.1816, -1.3116, -1.4018, -1.133, -1.1776, 
+-0.92822, -0.83618, -0.33538, -0.55901, -0.47966, -0.53473, -1.1856, 
+-1.8321, -1.8238, -1.3965, -1.2294, -1.5218, -0.51136, -1.1256, 
+-0.99192, -1.402, -0.62486, -0.38479, -0.7805, -0.80139, -0.66597, 
+-0.3756, -1.0019, -0.47293, -0.67972, -0.47457, -0.65573, -0.26031, 
+-0.3687, -0.56012, 0.75234, 0.54986, 1.0801, 1.0315)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58
+), vals = c(-2.2727, -2.6149, -2.0871, -2.1624, -1.8717, -1.8731, 
+-1.6399, -1.5838, -1.2569, -1.2291, -1.105, -1.3092, -1.1471, 
+-1.4367, -2.0917, -1.1912, -1.2659, -2.0436, -1.7859, -1.7299, 
+-1.8774, -2.3822, -2.2119, -1.8291, -2.0212, -1.6686, -1.7595, 
+-1.7209, -1.7115, -1.5953, -1.7217, -1.4696, -1.4471, -1.0806, 
+-1.5074, -1.2352, -1.3727, -1.1228, -1.2331, -1.1951, -0.29478, 
+-1.3315, -1.5556, -1.0823, -0.87551, -1.3008, -0.19811, -0.45936, 
+-0.27704, -0.34483, -1.0286, 0.4811, 0.72541, 1.9851, 2.2727, 
+2.4818, 2.0396)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.7475, 
+    -2.5094, -2.427, -2.0922, -2.0596, -1.7612, -1.7399, -1.7083, 
+    -1.3598, -1.2163, -1.4821, -1.9341, -1.6585, -1.788, -1.7361, 
+    -1.4663, -1.5466, -1.3588, -1.4329, -1.4414, -1.5503, -1.8134, 
+    -1.6691, -1.7187, -1.9935, -1.792, -1.4476, -1.4945, -1.9585, 
+    -1.5737, -1.5261, -1.5481, -1.5125, -1.6459, -2.3148, -1.6525, 
+    -2.5251, -2.5696, -2.1973, -1.3856, -1.7097, -1.4321, -1.2026, 
+    -1.5029, -1.0703, -1.4015, -1.3826, -1.3404, -1.4686, -1.4942, 
+    -1.2091, -0.93255, -1.3839, -1.5552, -1.3285, -0.068597, 
+    0.63569, 0.78854)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-0.72444, 
+    -0.76817, -1.004, -0.8603, -0.78179, -0.41719, -0.53807, 
+    -0.53256, -0.67077, -1.1659, -1.1104, -1.1296, -1.2649, -1.1946, 
+    -1.1507, -0.75183, -0.72139, -0.47571, -0.48232, -0.36371, 
+    -0.16425, 0.15927, 0.32528, -0.044916, 0.63644, 0.35244, 
+    0.34664, 0.63471, 0.31018, 0.41415, 0.13964, 0.11521, 0.50556, 
+    -0.17909, 0.54732, -0.34159, 0.54648, 0.25057, -0.56087, 
+    -1.5746, -0.37623, -1.3944, -1.4232, -1.7043, -1.586, -1.2329, 
+    -2.2449, -1.5766, -1.3626, -1.9903, -1.7058, -1.0173, -1.3015, 
+    -0.76902, 0.3175, 0.74246, 0.87454, 1.1087)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+58), vals = c(-1.9098, -2.2504, -2.3542, -1.7173, -1.7936, -1.925, 
+-1.935, -1.8081, -2.1531, -1.4244, -1.848, -1.1934, -1.1576, 
+-2.0252, -2.3111, -1.9399, -1.9278, -2.3593, -2.3845, -2.3021, 
+-1.9214, -2.2228, -1.9805, -2.235, -2.041, -2.2422, -1.6459, 
+-1.9747, -2.1425, -2.3564, -1.0808, -1.5839, -1.0907, -1.8253, 
+-1.0533, -1.059, -1.3892, -0.93776, -0.8534, -1.434, -1.2886, 
+-1.2159, -1.3142, -0.68278, -0.047018, -0.47469, -1.3302, 1.0768, 
+0.59085, -0.84664, -1.1913, -1.0452, -1.5946, -1.5418, -1.2384, 
+-1.0844, -0.98738, -1.1304)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-3.778, 
+    -3.7013, -3.4236, -3.8591, -4.2063, -4.177, -4.1718, -4.2285, 
+    -4.428, -4.0572, -4.1206, -3.5574, -4.2401, -4.12, -3.6542, 
+    -3.2404, -3.3338, -3.7621, -3.5018, -3.1215, -2.4137, -2.9459, 
+    -2.9292, -2.2957, -2.3441, -3.0366, -2.4036, -2.335, -2.5374, 
+    -1.9795, -2.1784, -2.461, -2.5887, -2.3384, -2.1609, -2.1472, 
+    -1.7959, -1.1212, -1.6657, -3.1536, -2.9683, -4.4004, -4.2828, 
+    -4.8756, -4.5265, -4.3486, -3.9635, -4.9043, -4.0765, -3.6007, 
+    -4.404, -3.9554, -3.1806, -3.6648, -3.014, 1.7581, 2.3147, 
+    3.1392)), .Names = c("args", "vals")), structure(list(args = c(1, 
+2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
+36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
+52, 53, 54, 55, 56, 57, 58), vals = c(-2.2106, -2.3216, -2.6404, 
+-2.0838, -2.368, -2.4199, -1.9293, -2.1786, -2.0776, -1.9324, 
+-2.4206, -2.0579, -2.4495, -2.2969, -2.9193, -1.3253, -2.2407, 
+-1.8839, -1.8358, -2.2464, -1.952, -2.048, -1.7441, -1.308, -1.9929, 
+-2.0884, -1.9483, -1.7738, -1.7972, -1.2237, -1.4877, -1.2919, 
+-1.5378, -0.95394, -1.4501, -0.81707, -1.2893, -0.96707, -0.20339, 
+-1.6816, -0.51592, -2.4516, -2.0551, -1.5648, -1.4546, -1.7113, 
+-1.1216, -1.9126, -1.5625, -1.7861, -2.0267, -1.2595, -1.7043, 
+-1.2201, -1.2529, 0.5353, 0.87361, 0.60546)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+58), vals = c(-0.38784, -0.71272, -0.58395, -0.58439, -0.45742, 
+-1.0198, -1.4433, -1.5137, -1.4051, -1.0695, -1.1391, -1.6012, 
+-0.86499, -1.2874, -1.066, -0.60874, -0.59527, -0.12706, -0.55067, 
+-0.46257, -0.31258, -0.52803, -0.54244, -0.67885, -0.76104, -1.0072, 
+-1.6537, -1.8046, -1.3995, -1.5469, -2.078, -1.8745, -1.673, 
+-2.0578, -1.5238, -1.5538, -1.2933, -1.7632, -1.6508, -1.5172, 
+-0.64418, -1.155, -0.99452, -1.0034, -1.0511, -1.0011, -0.97482, 
+-1.0189, -0.8697, -0.66891, -1.0655, -0.10921, -0.42596, -0.52896, 
+0.17541, -0.50596, -0.48372, -0.62951)), .Names = c("args", "vals"
+)), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
+12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
+28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
+44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), 
+    vals = c(-0.54359, -0.65546, -0.74479, -0.61564, -0.86965, 
+    -1.2706, -1.2448, -1.1392, -1.3068, -0.9382, -1.4724, -0.84077, 
+    -1.2435, -1.1408, -1.284, -1.0574, -1.2419, -1.1373, -1.0329, 
+    -0.99262, -0.70482, -0.82487, -0.55322, -0.52084, -1.2845, 
+    -1.0749, -1.0902, -1.1671, -0.75964, -0.87079, -0.52594, 
+    -0.017274, -1.9159, -0.18597, -0.61599, -0.70537, -0.60526, 
+    -0.66251, -0.32633, -1.3035, -0.92662, -1.6479, -1.2818, 
+    -0.7126, -0.92059, -1.8693, -1.3506, -1.0264, -0.99432, -0.59921, 
+    -1.2595, -0.24357, -0.43002, 0.083507, -0.033828, 0.46972, 
+    0.21572, 0.97072)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(0.97492, 
+    1.0717, 1.2324, 1.2593, 1.685, 2.0139, 2.2429, 2.2013, 2.2248, 
+    2.0139, 2.4604, 1.5907, 1.3883, 1.1179, 1.0831, 0.96327, 
+    1.0842, 0.4454, -0.024521, 0.38816, 0.15865, -0.21118, -0.48191, 
+    -0.46717, -0.47723, -0.40083, -0.55778, -0.74242, -0.37738, 
+    -0.63417, -0.48312, -0.65404, -0.79972, -0.57369, -1.3658, 
+    -1.0051, -1.5472, -1.461, -1.4412, -0.87002, -1.143, -0.9128, 
+    -0.66796, -0.83015, -1.0066, -0.93714, -1.127, -0.72119, 
+    -0.76209, -0.69445, -0.62477, -0.68916, -0.63353, -1.2612, 
+    -1.6555, -1.7668, -1.9891, -1.6532)), .Names = c("args", 
+"vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
+10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+58), vals = c(-1.8578, -1.8985, -2.1196, -1.7855, -2.0354, -1.9596, 
+-1.0689, -1.4064, -1.4869, -1.5505, -1.8055, -1.7008, -2.0745, 
+-1.83, -1.9553, -1.6857, -1.9451, -2.0127, -1.868, -1.5625, -1.9624, 
+-1.9119, -1.9749, -1.6513, -1.6689, -1.7814, -1.8707, -1.6933, 
+-1.5086, -1.5261, -0.16813, -0.73535, -0.9151, -0.40462, -0.48592, 
+-0.39817, -1.0161, -0.24353, 0.10998, -0.78803, -0.52916, -1.0944, 
+-0.90698, -0.36188, -0.64918, -1.019, -1.2155, -0.96465, -0.85491, 
+-0.78928, -0.81293, -0.64781, -0.78736, -0.48355, 0.39936, 2.5213, 
+1.2019, -0.070349)), .Names = c("args", "vals")), structure(list(
+    args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
+    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
+    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
+    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(0.86305, 
+    0.73865, 1.0447, 1.2953, 2.0084, 2.0611, 2.4025, 2.2306, 
+    2.5086, 2.5674, 2.5404, 2.4038, 2.5399, 2.3899, 2.7886, 2.5011, 
+    3.0747, 1.3217, 0.092391, 0.19143, 0.16806, -0.58406, -0.57016, 
+    -0.56912, -1.2479, -0.89981, -1.0149, -1.0868, -0.71627, 
+    -0.88356, -0.76246, -1.1053, -1.6964, -1.0147, -1.4891, -0.85, 
+    -0.49243, -0.65674, -0.26814, -0.26076, -0.26291, -1.0745, 
+    -1.047, -0.69626, -0.4487, -0.44785, -0.084818, 0.48961, 
+    0.48843, 0.8026, 1.0675, -1.6418, -0.35512, -0.57959, -1.7847, 
+    -1.4698, -1.5665, -2.2529)), .Names = c("args", "vals")), 
+    structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
+    12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 
+    27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+    42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+    57, 58), vals = c(0.35404, 0.20618, 0.45756, 0.8705, 1.0183, 
+    1.4905, 1.5019, 1.6652, 1.6308, 1.5357, 1.6721, 1.1555, 0.95899, 
+    1.4377, 1.0575, 1.1023, 1.0022, 0.64513, 0.32201, 0.16842, 
+    0.034455, -0.090135, -0.4606, -0.6877, -0.71392, -0.65058, 
+    -0.66523, -0.54618, -0.82859, -0.86747, -1.1282, -1.7028, 
+    -0.99836, -1.2961, -0.56379, -0.99903, -0.92851, -1.3723, 
+    -1.4075, -1.2459, -0.344, -0.98982, -1.0033, -1.2384, -1.1863, 
+    -1.175, -1.6308, -1.5412, -1.0187, -1.07, -1.2885, -0.80448, 
+    -1.2782, -1.06, -0.99544, -1.1429, -1.0468, -1.5905)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 36, 37, 38, 39, 40, 
+    41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 
+    58), vals = c(-1.8451, -2.0949, -2.2672, -2.3024, -1.708, 
+    -1.6447, -1.8971, -2.0226, -2.0946, -1.5226, -1.8791, -1.7306, 
+    -1.4611, -1.8045, -1.4203, -1.6994, -1.5835, -1.5248, -1.8595, 
+    -1.7914, -1.5399, -1.6443, -1.2062, -1.2156, -1.1959, -1.0254, 
+    -1.0114, -1.1722, -1.3578, -0.97305, -0.67548, -0.47264, 
+    -0.29619, -0.4131, -0.74616, -0.8259, -1.3027, -1.2955, -1.5403, 
+    -1.5539, -1.6726, -1.9712, -1.2532, -2.3553, -1.6145, -1.8022, 
+    -1.9177, -2.2349, -1.8872, -2.1151, -1.6481, -1.0895, -0.11998, 
+    0.82429)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(1.0031, 
+    0.89532, 0.18505, 2.6189, 4.174, 4.8863, 3.6903, 2.5679, 
+    -0.5557, -1.3196, -0.91746, -1.4929, -3.0427, -2.378, -1.7144, 
+    -1.8245, -2.2278, -3.3753, -3.026, -1.982, -2.4781, -2.6698, 
+    -3.1143, -2.7738, -2.6823, -3.3244, -3.3223, -3.4011, -3.223, 
+    -2.8073, -2.6632, -2.5265, -3.0611, -2.5951, -2.7975, -2.1079, 
+    -2.3848, -1.8038, -1.6098, -2.2318, -0.7009, -2.8811, -2.5688, 
+    -3.0257, -2.6368, -2.5873, -2.6786, -3.1108, -2.387, -2.0863, 
+    -3.1362, -2.7512, -2.326, -2.3103, -2.4037, -2.8056, -2.865, 
+    -3.0461)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-1.7452, 
+    -1.621, -1.85, -1.8237, -1.9213, -1.7725, -2.039, -2.2283, 
+    -2.1167, -2.0428, -2.4272, -1.881, -2.1481, -2.0699, -1.8183, 
+    -2.1091, -2.4895, -2.4064, -1.8772, -2.0244, -2.001, -2.0067, 
+    -2.7635, -2.2521, -2.5578, -2.676, -2.5018, -2.4063, -2.9202, 
+    -2.4185, -1.2527, -1.4148, -1.9804, -1.5345, -1.6964, -1.4762, 
+    -1.3606, -0.64196, -1.4378, -2.0101, -2.5716, -2.6758, -2.0284, 
+    -2.2688, -2.2123, -2.8862, -2.6285, -2.6445, -1.966, -1.872, 
+    -2.6848, -2.0878, -2.0086, -1.9586, -2.3817, -1.919, -2.0213, 
+    -0.23672)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(1.0269, 
+    1.1906, 1.7092, 1.6832, 2.0055, 2.3466, 2.3787, 2.4351, 2.2659, 
+    2.2475, 2.3215, 1.7972, 1.7221, 1.6965, 1.1247, 0.89712, 
+    1.3231, 0.63019, -0.3615, 0.20156, 0.013578, -0.25303, -0.55243, 
+    -0.48872, -0.50075, -0.42621, -1.2565, -1.2993, -1.0358, 
+    -1.3995, -1.5251, -1.7372, -1.2306, -1.5274, -1.0723, -1.6023, 
+    -1.9799, -1.8196, -1.1328, -1.3123, -1.8708, -0.78702, -0.97184, 
+    -1.1106, -1.5558, -1.0278, -1.543, -1.0516, -0.41008, -0.95468, 
+    -1.1978, -0.75432, -1.1044, -1.2133, -1.4844, -1.4492, -1.9265, 
+    -1.7604)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-3.2018, 
+    -3.3843, -2.2362, -2.4237, -3.694, -2.9812, -2.5195, -2.6642, 
+    -2.8177, -2.6846, -2.8251, -2.1831, -2.7414, -2.1354, -2.9456, 
+    -2.0017, -2.4889, -3.1887, -2.793, -1.9506, -2.4753, -3.1781, 
+    -3.3725, -3.0194, -2.5735, -3.4571, -3.0161, -3.0851, -2.1181, 
+    -3.3768, -1.28, -2.3247, -1.9758, -1.839, -2.0688, -1.7895, 
+    -1.6746, -1.0105, -1.6089, -1.9377, -2.4127, -3.63, -3.2126, 
+    -3.2969, -2.5532, -3.8899, -2.3105, -2.9655, -2.5128, -2.7894, 
+    -3.0372, -3.0159, -1.6996, -1.5095, -2.5096, -2.8045, -2.1336, 
+    -2.4208)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(0.19607, 
+    0.48623, 0.32146, 0.43916, 0.59019, 1.5428, 1.8111, 1.4385, 
+    1.8449, 1.5088, 1.8077, 1.4713, 1.5026, 1.7863, 1.3992, 0.61646, 
+    1.3488, 0.47486, 0.025249, -0.15009, -0.35413, -0.3152, -0.81424, 
+    -0.77863, -0.70491, -1.1233, -1.2515, -1.2304, -1.047, -1.0364, 
+    -0.98892, -1.6361, -1.9184, -1.0295, -1.4788, -1.3412, -1.4026, 
+    -1.582, -1.1393, -1.539, 0.62259, -1.1183, -1.3686, -1.2846, 
+    -1.2138, -0.79284, -1.458, -0.5518, -0.68496, -0.92185, -0.80494, 
+    -0.79504, -0.5305, -0.91446, -1.055, -1.5522, -1.8499, -1.8077
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 
+    35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
+    50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-0.83347, -0.60602, 
+    -0.50768, -0.12228, -0.089261, 0.13937, -0.28999, -0.63059, 
+    -0.80241, -1.0125, -1.1906, -0.70604, -0.76433, -0.47512, 
+    -0.46089, -0.89103, -0.95839, -0.85265, -0.53415, -0.73143, 
+    -0.53766, -0.55648, -0.84211, -0.76137, -0.74501, -0.84287, 
+    -1.7811, -1.4792, -1.3465, -1.1287, -1.2442, -1.0138, -1.0155, 
+    -0.83597, -1.0295, -1.3312, -1.2932, -1.4636, -0.91007, -0.7217, 
+    -0.91422, -0.43768, -0.45618, -1.3501, -1.0353, -0.69839, 
+    -0.912, -0.86292, -1.0496, -0.80288, -0.42316, -0.89189, 
+    -1.2367, -0.59829, -0.82854, -0.17422, -0.13364)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-1.8305, -1.3747, -1.2648, 
+    -1.0548, -0.80461, -0.62518, -0.79874, -0.9037, -0.61828, 
+    -1.2379, -1.3482, -1.1932, -1.2876, -1.2727, -1.985, -2.0099, 
+    -2.0247, -1.6439, -1.4805, -1.7065, -1.5958, -1.2129, -1.6271, 
+    -1.8869, -1.5425, -1.6397, -1.8794, -1.7913, -1.5403, -1.7086, 
+    -0.99957, -1.1678, -1.3357, -1.1386, -1.2081, -1.0198, -1.8859, 
+    -1.4049, -1.8191, -1.5514, 0.023271, -1.4723, -1.371, -1.814, 
+    -2.1164, -1.563, -1.5777, -1.9931, -1.6801, -2.0626, -1.7401, 
+    -1.382, -1.7373, -1.6044, -1.8285, -1.5251, -0.60472, 0.64566
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.7715, 
+    -2.9358, -2.059, -2.4567, -2.178, -2.2988, -2.1034, -2.3327, 
+    -2.314, -2.157, -2.098, -2.2676, -2.2741, -2.1313, -2.8338, 
+    -2.2703, -2.039, -2.1486, -1.8943, -1.834, -1.8851, -2.0213, 
+    -0.61385, 0.069984, 0.070269, 0.90947, 1.5968, 1.5699, 1.2938, 
+    1.6316, 0.16238, 0.22566, -0.12398, 0.41864, 0.11115, 0.27903, 
+    0.8615, 0.1493, 1.2974, -1.2458, -1.404, -3.612, -2.7087, 
+    -2.2865, -1.1036, -0.98605, -0.54312, -2.4153, -2.5295, -1.8163, 
+    -2.2852, -0.57137, -0.63458, 0.4624, 1.6921, 2.4776, 2.8338, 
+    3.1303)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(0.098804, 
+    0.56716, 1.0031, 1.3854, 1.7936, 2.5883, 2.3739, 1.892, 0.99601, 
+    0.44224, 0.94348, 0.37037, -0.021034, 0.053731, 0.21842, 
+    0.02306, 0.066196, -0.63761, -0.35125, -0.26844, -0.58678, 
+    -0.65438, -0.71807, -0.62297, -1.2239, -0.75573, -1.0756, 
+    -1.0586, -0.76954, -0.95455, -1.7038, -1.843, -1.8669, -1.6253, 
+    -1.9312, -1.5826, -1.7684, -1.892, -1.2066, -1.2372, -1.2117, 
+    -1.1063, -1.087, -1.1207, -1.3447, -1.3718, -0.35295, -0.79913, 
+    -0.83841, -1.0848, -0.35242, -0.97423, -0.4607, -0.87531, 
+    -1.4323, -1.493, -1.4178, -1.2133)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-2.5466, -2.3681, -2.6224, -3.0472, 
+    -3.8854, -4.2686, -3.8078, -3.2147, -3.0718, -2.7762, -2.7236, 
+    -2.5308, -3.2928, -2.7877, -3.3594, -3.4924, -2.9802, -2.7203, 
+    -2.6798, -2.1874, -2.0187, -2.0023, -2.0047, -2.1081, -2.5776, 
+    -2.3074, -2.3492, -2.2424, -2.3186, -1.9346, -1.1333, -0.88048, 
+    -0.9283, -0.4244, -1.9794, -0.54051, -1.1824, -1.5526, -1.5425, 
+    -1.0785, -1.7195, -3.2952, -2.4553, -2.39, -1.5981, -1.8299, 
+    -1.8514, -2.0582, -2.2394, -1.5851, -1.8478, -0.13488, -0.80823, 
+    -0.71257, -0.64596, 0.5024, 0.98108, 2.0211)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 7, 8, 9, 
+    10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
+    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
+    40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 
+    55, 56, 57, 58), vals = c(-1.2527, -1.6417, -1.2375, -1.7768, 
+    -1.9944, -0.90744, -0.48887, -0.5059, -0.86994, -1.0363, 
+    -0.82948, -1.0376, -0.76698, -1.4402, -1.5172, -1.8798, -1.3748, 
+    -1.2218, -1.2795, -1.1563, -0.95514, -1.2946, -1.2071, -1.2071, 
+    -1.3576, -1.8372, -1.5284, -1.7639, -1.2731, -0.81087, -1.1205, 
+    -1.6408, -1.0565, -1.5893, -1.3715, -1.8063, -0.99967, -0.88289, 
+    -1.2689, -1.9939, -2.1569, -1.5939, -1.5194, -0.78723, -1.5329, 
+    -0.99591, -1.3906, -1.1312, -0.60552, -1.1972, -1.0801, -0.74178, 
+    -0.70749, -0.032406, 1.6001, 1.3215, 0.71199)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-1.0143, -0.80716, -0.90052, -0.91978, 
+    -0.86863, -1.251, -1.3839, -1.3124, -0.66518, -0.80787, -1.1763, 
+    -1.0807, -1.6122, -1.2668, -1.843, -1.6732, -1.632, -1.7119, 
+    -1.6041, -1.5334, -1.6946, -1.6099, -1.3759, -1.4808, -1.6325, 
+    -1.6107, -1.6168, -1.4689, -0.9167, -1.1712, -0.86935, -1.3319, 
+    -1.5854, -1.0442, -0.95923, -0.9685, -1.1301, -1.3559, -2.0001, 
+    -1.904, -1.5139, -1.4099, -1.9853, -1.7578, -1.5256, -2.0745, 
+    -1.4741, -1.6102, -1.6673, -0.44619, -1.3883, -0.9464, 0.039786, 
+    1.1473, 1.1929, 1.8366)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57, 58), vals = c(-2.8022, -2.7567, -2.6208, -2.4485, 
+        -2.6207, -1.8639, -1.5712, -1.1596, -0.60345, -1.0266, 
+        -0.28794, -1.1413, -0.92926, -1.5798, -1.6448, -1.3155, 
+        -1.3594, -1.9011, -2.2338, -2.2802, -1.9042, -2.4548, 
+        -2.7236, -1.6292, -2.1842, -1.8546, -2.2061, -2.2971, 
+        -2.1818, -2.1488, -1.8793, -1.6506, -1.5604, -1.6285, 
+        -1.8928, -1.6833, -1.8787, -1.648, -1.8299, -1.8796, 
+        -2.0378, -2.5248, -2.372, -2.2715, -1.4612, -1.3099, 
+        -1.7588, -1.9286, -1.9729, -1.6712, -2.092, -1.7958, 
+        -1.9246, -2.0138, -1.7633, 0.37726, 1.6916, 1.3501)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.27515, 0.51283, 0.71669, 
+    0.95748, 1.3638, 1.7739, 1.8032, 1.6298, 1.4504, 1.2996, 
+    1.5536, 0.91621, 0.64563, 0.30894, 0.52025, 0.46398, -0.49047, 
+    -0.25551, -0.73395, -0.71207, -0.62867, -0.86447, -0.77196, 
+    -0.83368, -1.1805, -1.3374, -1.6298, -1.3922, -1.6275, -1.6827, 
+    -1.1139, -1.2841, -1.4273, -1.1431, -0.75992, -0.80388, -1.2353, 
+    -0.5556, -0.67353, -1.3565, -1.4599, -0.95032, -0.8221, -1.2258, 
+    -0.7137, -0.69885, -1.3797, -0.57731, -0.38457, -0.61111, 
+    -0.46575, -0.47485, -0.68962, -0.71412, -1.2092, -1.2743, 
+    -1.3927, -1.4753)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57, 58), vals = c(-4.1022, -4.2534, -4.4378, -3.7574, 
+        -3.801, -3.4211, -3.2858, -3.2989, -3.6529, -3.3334, 
+        -3.4396, -3.2918, -3.3722, -3.5124, -3.3288, -3.1227, 
+        -1.7678, -0.81458, 1.8906, 1.1111, 1.5919, 1.5818, 3.2307, 
+        3.4077, 3.7184, 3.8384, 4.4754, 4.072, 3.9207, 4.0182, 
+        2.922, 2.8843, 2.8827, 2.8448, 2.8126, 3.005, 4.0054, 
+        3.5281, 3.8668, 0.9327, 0.096867, -3.3952, -3.06, -2.6703, 
+        -1.9956, -1.9027, -1.9665, -3.8593, -4.2911, -2.4844, 
+        -3.669, -0.43768, -1.0939, 0.95939, 2.39, 4.2534, 3.6148, 
+        4.383)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 
+        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
+        30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
+        44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
+        58), vals = c(-2.5505, -2.4491, -2.285, -2.234, -2.13, 
+        -1.988, -2.3272, -2.3893, -2.6542, 0.22354, -2.4932, 
+        -2.4512, -1.0397, -1.9016, -1.7318, -1.0406, 0.59166, 
+        0.08764, 0.78481, 1.0425, 1.4651, 1.8966, 1.3582, 2.1972, 
+        2.9122, 2.6157, 2.1388, 2.384, 1.4098, 1.9567, 2.7662, 
+        1.62, 2.9011, 2.2204, 2.9271, 2.8923, 2.5272, 1.3125, 
+        -0.47399, -3.3681, -3.1407, -3.2044, -2.1731, -1.8413, 
+        -2.1645, -3.3795, -3.4742, -2.3603, -3.7444, 0.17153, 
+        -1.3046, 0.15857, 1.9574, 3.0514, 2.5748, 3.3268)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 7, 8, 9, 
+    10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-2.2682, -2.0378, -2.3661, -1.8691, 
+    -2.3196, -1.8782, -1.9847, -1.7841, -1.5515, -1.6619, -1.7558, 
+    -1.8905, -1.8175, -1.146, -1.1364, 0.38376, 1.8603, 1.4784, 
+    1.7256, 1.726, 1.6531, 1.7097, 1.5349, 1.6342, 1.4803, 1.4754, 
+    1.3678, 1.7578, 1.808, 1.0281, 0.95571, 1.4594, 1.8077, 1.5619, 
+    1.795, 1.4462, 1.8131, -0.18738, -0.60884, -2.4798, -1.5005, 
+    -1.2006, -0.66347, -1.2924, -1.2758, -1.3807, -0.58783, -0.8918, 
+    -1.7464, 0.29046, -0.025449, 0.46437, 1.9269, 2.2104, 2.3196, 
+    2.7216)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 
+    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
+    36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 
+    51, 52, 53, 54, 56, 58), vals = c(-2.3757, -3.7815, -4.4686, 
+    -3.1403, -3.5073, -3.7768, -3.8978, -3.9283, -3.5931, -3.7889, 
+    -3.9335, -3.8209, -1.5319, -3.2229, -2.7382, -1.3633, 1.1983, 
+    0.64008, 1.0222, 1.6351, 1.8606, 2.2717, 2.818, 3.1313, 3.2944, 
+    3.2181, 2.8944, 2.8381, 2.9004, 3.3313, 3.7637, 2.5325, 3.2123, 
+    3.2608, 3.963, 4.0358, 3.3732, 2.1083, -1.3061, -4.0378, 
+    -3.301, -2.8992, -2.1248, -1.7525, -1.489, -4.5086, -3.8503, 
+    -2.6474, -4.6998, 0.97213, 0.9847, 1.1808, 4.9464, 4.4504
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.9647, 
+    -2.8465, -2.7535, -2.7667, -2.9503, -2.5141, -2.2861, -2.7593, 
+    -2.7662, -2.3499, -2.901, -2.0403, -2.1136, -2.2808, -1.4499, 
+    -2.1873, -1.7927, -1.1691, 0.50762, -0.3823, 0.35563, 0.63589, 
+    1.5066, 1.8207, 1.6716, 2.2113, 2.3232, 2.1804, 2.219, 2.2771, 
+    1.2564, 1.3094, 1.6742, 1.4324, 1.1455, 1.3402, 1.4883, 1.0765, 
+    1.962, 0.037706, -1.1688, -2.2425, -1.7824, -1.3859, -0.98286, 
+    -1.1925, -1.3082, -2.429, -2.731, -1.8424, -2.3956, -0.31538, 
+    -0.60671, 0.087781, 1.4027, 2.4532, 2.4028, 3.1717)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.82586, 0.95486, 0.89852, 
+    1.2833, 1.4719, 2.0835, 2.2499, 2.3295, 2.6478, 2.5256, 2.6215, 
+    0.84617, 1.9111, 1.6534, 1.3125, 1.2033, 1.4624, 0.66444, 
+    -0.3221, -0.075235, -0.17418, -0.66227, -0.63085, -1.0554, 
+    -0.94173, -1.0251, -0.76692, -0.53302, -1.4666, -1.258, -1.1464, 
+    -2.2161, -1.4588, -1.4825, -0.45397, -0.68988, -0.90199, 
+    -1.0943, -1.2507, -1.252, -0.24918, -1.6052, -1.559, -1.8464, 
+    -1.4468, -1.3952, -1.4436, -1.3475, -1.1845, -1.8209, -1.7579, 
+    -1.4183, -1.6582, -1.836, -2.2532, -2.5001, -2.4932, -1.86
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-1.2518, 
+    -1.2025, -1.0684, -1.1692, -1.118, -0.80405, -0.82036, -0.92475, 
+    -0.79807, -0.49089, -0.68753, -0.55966, -0.80062, -0.49696, 
+    -0.75615, -0.91673, -0.82756, -0.59655, 0.6894, 0.49021, 
+    0.4045, 0.92317, 0.51972, 0.66154, 0.64959, 0.45592, 0.59671, 
+    0.61468, 0.77217, 1.0582, 0.4629, 0.70546, 0.61369, 0.8733, 
+    0.52559, 0.8406, 0.80432, 0.4842, 0.27694, -0.018798, -0.07291, 
+    -0.38115, -0.75655, -0.97372, -0.071398, -0.7185, -1.241, 
+    -0.8384, -0.74566, -0.72121, -0.75247, -0.10146, -0.3927, 
+    -0.070677, 0.79456, 1.2025, 1.68, 1.2607)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-2.4009, -2.6158, -1.9066, 
+    -1.8948, -1.4874, -1.5892, -1.3921, -1.3654, -1.4148, -1.6128, 
+    -1.7279, -1.5062, -1.0767, -1.8399, -1.7329, -1.2085, -0.85771, 
+    -0.46659, 0.26335, 0.096116, 0.22733, 0.32166, 0.79156, 1.5095, 
+    1.3546, 1.7305, 1.7231, 1.5473, 1.5143, 1.3566, -0.032963, 
+    0.50067, 0.98325, 0.60991, 1.1406, 1.1152, 1.51, 1.4206, 
+    2.1084, 0.79058, -0.94401, -1.2661, -1.4958, -1.8016, -1.1233, 
+    -1.3229, -1.7649, -0.80416, -1.343, -0.46563, -0.77728, 0.09011, 
+    0.011545, -0.042161, 0.79544, 1.9066, 1.7829, 1.9625)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-2.236, -2.1199, -1.79, -1.17, 
+    -1.3822, -1.3758, -1.2821, -1.2688, -0.78279, -0.64987, -0.83769, 
+    -0.82933, -1.258, -0.72608, -1.3391, -1.9359, -1.3032, -1.9297, 
+    -2.0197, -1.8419, -1.592, -1.6896, -1.7644, -2.2208, -2.1856, 
+    -2.2103, -1.9618, -1.7803, -2.1709, -1.6451, 0.16225, 0.17169, 
+    0.027947, -0.31748, -0.091141, 0.17765, 0.45627, 0.87568, 
+    0.66053, -0.21036, 0.14771, -1.4328, -1.7523, -0.97116, -0.74562, 
+    -0.52471, -0.29803, -0.91412, -1.1102, -1.0996, -1.6844, 
+    -1.3647, -1.6583, -1.4025, -1.2641, -1.538, -1.8828, 0.50754
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-1.3828, 
+    -1.3701, -1.8362, -1.9782, -2.2321, -2.6164, -1.974, -1.7956, 
+    -1.7807, -1.778, -1.9007, -1.6936, -1.7139, -1.7765, -1.4176, 
+    -1.591, -1.6128, -1.5797, -1.5089, -1.5447, -1.3361, -1.4867, 
+    -1.3247, -1.1999, -1.2894, -1.2243, -0.93212, -0.87465, -1.1033, 
+    -0.95942, -0.73921, -0.70976, -1.0494, -0.58553, -0.8757, 
+    -0.96322, -0.75712, -0.94316, -0.77872, -1.1979, -1.5335, 
+    -1.3287, -1.2863, -1.3147, -1.3252, -1.4355, -1.4558, -1.1293, 
+    -1.2362, -0.68634, -0.27041, -0.86892, -0.096449, -0.26915, 
+    0.69522, 1.6068, 1.4974, 2.0524)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-3.1223, -3.2783, -2.887, -2.6972, 
+    -2.8282, -2.5501, -2.6004, -2.2922, -2.465, -2.4474, -2.4604, 
+    -2.059, -1.9968, -2.2331, -2.1022, -2.1254, -1.3521, -0.98427, 
+    0.48172, -0.3805, 0.092261, 0.46139, 1.6261, 1.9909, 1.7876, 
+    2.2637, 2.4978, 2.4403, 2.3742, 2.3813, 0.0087803, 0.38007, 
+    0.76438, 0.11169, 1.1245, 0.088837, 1.3653, 1.1192, 2.0883, 
+    -0.31288, -0.50561, -1.682, -1.3057, -0.74766, -0.66427, 
+    -1.5915, -1.9436, -1.9885, -2.3045, -2.156, -2.3584, 0.10199, 
+    -0.98724, 0.11465, 0.92157, 2.6453, 2.3028, 3.0481)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.56036, 0.47119, 0.68405, 
+    1.1679, 1.6553, 1.8647, 1.876, 1.9879, 1.5718, 1.4256, 1.591, 
+    0.69104, 0.65341, 0.88616, 0.51554, 0.65228, 0.38495, -0.10926, 
+    -0.025263, -0.41453, -0.70473, -0.46509, -0.41516, -0.68369, 
+    -0.71685, -0.91793, -1.4537, -1.4579, -1.2596, -1.3936, -0.881, 
+    -1.4757, -1.1735, -1.198, -0.61134, -0.62953, -0.54527, -0.75178, 
+    -1.003, -0.47245, -0.78081, -0.68434, -0.52801, -0.71609, 
+    -0.69067, -0.92498, -0.7524, -0.90356, -0.1212, -0.47989, 
+    -0.91712, -1.06, -1.3278, -1.2272, -1.3411, -1.5365, -1.4069, 
+    -2.0408)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-0.68659, 
+    -0.90586, -0.88038, -0.91058, -0.9549, -1.5964, -1.4389, 
+    -1.2262, -1.2513, -1.2167, -0.84325, -1.8643, -1.0332, -1.5157, 
+    -1.3701, -1.2103, -0.70187, -1.2572, -2.2039, -1.8386, -1.6683, 
+    -1.9815, -1.6022, -1.7611, -2.0166, -2.2263, -1.7727, -2.033, 
+    -1.9066, -1.8568, -2.3642, -2.1568, -2.0101, -2.4108, -2.131, 
+    -2.208, -2.3814, -2.4148, -2.172, -2.2718, -2.7133, -2.4115, 
+    -2.5691, -2.2144, -2.2019, -2.0138, -3.1516, -2.2947, -2.086, 
+    -1.8884, -1.8032, -2.1694, -2.0265, -2.5761, -1.7054, -0.27012, 
+    -0.11167, 1.3106)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57, 58), vals = c(0.40894, 0.44998, 0.88768, 1.1766, 
+        1.3692, 1.8087, 2.0432, 1.856, 1.5051, 1.3141, 1.1953, 
+        1.1905, 1.0657, 1.2501, 1.2471, 1.0179, 0.80295, 0.73537, 
+        0.30854, 0.40773, 0.16358, 0.2516, -0.20718, -0.29804, 
+        -0.40783, -0.89264, -1.0557, -0.86111, -0.74738, -0.78292, 
+        -1.12, -1.8114, -1.8994, -0.90914, -1.2612, -1.3961, 
+        -1.1666, -1.1697, -0.69896, -0.92088, -0.37355, -0.54371, 
+        -0.66163, -1.1993, -0.85896, -0.66826, -1.3009, -0.56389, 
+        -0.48078, -0.88382, -0.48478, -0.98807, -0.71154, -0.96145, 
+        -1.3076, -1.2825, -1.5546, -1.5198)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-3.5477, -3.6674, -3.5145, 
+    -3.7037, -3.8575, -3.0589, -3.1529, -2.9369, -4.0039, -3.0987, 
+    -2.6082, -2.5499, -3.3606, -3.7775, -3.5615, -2.9392, -2.2508, 
+    -2.0557, -0.14162, -1.0419, -0.47629, -0.36151, 0.75091, 
+    1.363, 1.4297, 2.0365, 4.0194, 3.7775, 2.7367, 3.48, 1.9695, 
+    2.1749, 2.8554, 1.9881, 2.7153, 2.2726, 2.3325, 1.7846, 2.4141, 
+    1.4338, -2.0406, -3.3874, -3.4597, -2.6996, 0.038456, 1.2738, 
+    1.1096, -2.8358, -3.4847, -2.2461, -2.6384, -1.3893, -1.3042, 
+    -0.43789, 1.0225, 2.2846, 2.4933, 4.0445)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-4.2716, -4.3934, -3.7853, 
+    -4.0175, -3.5392, -3.3898, -3.3433, -3.5461, -3.6025, -3.4312, 
+    -3.5075, -3.2676, -2.7472, -3.0146, -2.6276, -3.2024, -1.5914, 
+    -0.44301, 1.8315, 1.2441, 1.835, 2.3267, 2.6673, 2.8035, 
+    3.2297, 3.2743, 3.4706, 3.399, 3.215, 3.7177, 2.0619, 2.2402, 
+    2.7754, 1.96, 2.8816, 2.427, 4.0713, 3.1269, 3.6022, -0.40357, 
+    -1.6734, -4.1315, -4.0622, -3.9598, -3.2295, -3.4376, -3.1007, 
+    -4.2366, -4.4452, -2.7374, -4.0234, 0.16725, -0.5718, 0.84041, 
+    2.7774, 4.1935, 3.986, 4.8334)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-1.053, -0.85027, -0.81998, -0.53162, 
+    -0.30978, -0.22342, -0.80429, -0.94834, -1.0864, -1.3897, 
+    -1.3734, -1.2287, -1.5425, -1.2669, -1.1059, -1.2322, -1.123, 
+    -0.95899, 0.40183, -0.11467, 0.37883, 0.83388, 0.74308, 0.68975, 
+    1.137, 1.1322, 1.3577, 1.043, 1.0162, 1.3241, 0.279, 0.40651, 
+    0.86622, 0.18417, 0.73219, 0.6233, 1.5088, 1.2358, 1.4264, 
+    -0.82565, -0.96114, -1.5056, -1.7218, -2.0087, -1.8178, -1.2654, 
+    -1.5196, -1.717, -1.8463, -1.7929, -1.0914, -0.48956, -0.86869, 
+    -0.27297, 0.91833, 1.3114, 1.5189, 1.8675)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-3.2335, -3.2497, -3.3629, 
+    -3.4514, -2.8834, -3.1661, -3.337, -3.5095, -3.5409, -3.3908, 
+    -3.5133, -4.0007, -2.5691, -3.1956, -2.1316, -2.8473, -2.6918, 
+    -2.7066, -3.1876, -3.0292, -2.7803, -3.1458, -2.5631, -2.3321, 
+    -2.1857, -2.2455, -2.7311, -2.6206, -2.3136, -2.5741, -3.3263, 
+    -2.8533, -3.2045, -3.0007, -2.9926, -2.8712, -2.6691, -1.793, 
+    -1.6475, -1.6395, -1.9024, -1.408, -1.4361, -1.0962, -1.1038, 
+    -0.97, -1.4769, -0.43247, -0.30805, -0.49236, -0.53756, -0.62158, 
+    -0.84938, -0.84645, -0.58705, 0.65523, 1.1847, 0.19001)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-2.0392, -2.1691, -2.0578, 
+    -2.075, -2.4869, -2.2936, -2.2224, -1.9854, -1.7529, -1.6047, 
+    -1.1403, -1.4723, -2.0383, -1.5284, -2.3009, -2.3348, -2.4768, 
+    -2.7808, -2.5272, -2.2327, -2.3782, -2.3185, -2.6027, -2.1189, 
+    -2.557, -3.0252, -2.7805, -2.8244, -2.5399, -2.5585, -1.6589, 
+    -2.0239, -2.0476, -1.8477, -2.2122, -1.5746, -1.6198, -1.5688, 
+    -1.7122, -2.5672, -2.1794, -3.0177, -2.6567, -2.442, -2.5096, 
+    -1.21, -0.94896, -1.5294, -1.1271, -1.3341, -1.6897, -1.5791, 
+    -1.5952, -0.04356, 2.5817, 2.5157, 2.2601, 1.6914)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.025197, 0.11202, 0.47555, 
+    0.44883, 0.44042, 1.478, 1.3552, 1.3188, 1.7679, 2.0945, 
+    1.2539, 2.1788, 2.5413, 2.4165, 0.88462, 1.5853, 0.57102, 
+    0.52045, -0.83179, -0.33901, -0.5707, -0.17024, -0.42449, 
+    -1.6711, -1.3631, -1.4299, -1.7042, -1.58, -1.6653, -2.0181, 
+    -0.61634, -0.89007, -1.544, -0.42811, -0.9804, -0.78747, 
+    -2.0881, -0.81021, -0.89544, -0.69954, -1.283, -1.739, -1.7536, 
+    -1.6337, -0.70943, -1.2875, -1.0047, -0.77491, -0.91674, 
+    -0.92904, -1.1199, -0.65612, -0.97015, -0.8954, -1.7192, 
+    -2.0214, -2.0713, -1.228)), .Names = c("args", "vals")), 
+    structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
+    12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 
+    27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
+    42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+    57, 58), vals = c(-0.79923, -0.74363, -0.81837, -0.4437, 
+    -0.25429, -0.5812, -0.60233, -0.5342, -0.42219, -0.85315, 
+    -0.71974, -0.92185, -1.0703, -1.2446, -0.87028, -0.37878, 
+    -0.99054, -0.32998, 0.36489, -0.23087, 0.17922, 0.3855, 0.55692, 
+    0.52552, 0.63893, 0.66148, 0.65238, 0.52749, 0.50931, 0.31145, 
+    0.1436, -0.17414, 0.10909, -0.25276, -0.13092, -0.038859, 
+    0.040268, -0.069377, 0.155, 0.0088495, -0.68163, -1.1391, 
+    -0.57225, -0.84645, 0.18858, 0.1223, 0.0091717, -0.99218, 
+    -1.0068, -1.0931, -1.3051, -0.10974, -0.66219, -0.34518, 
+    0.56173, 0.97741, 1.1391, 1.2811)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(1.0239, 1.2401, 1.453, 1.8113, 2.3137, 
+    3.313, 3.1167, 3.1997, 2.6293, 2.3013, 2.4541, 2.3017, 2.6378, 
+    2.2296, 1.601, 1.31, 1.6575, 0.71794, -0.55239, -0.34436, 
+    -0.47208, -0.59243, -0.97043, -1.8587, -1.4149, -1.7983, 
+    -2.316, -2.2465, -2.2343, -2.3988, -2.7557, -3.0756, -3.1678, 
+    -2.1588, -3.1167, -2.841, -3.7943, -2.6958, -2.2207, -1.2781, 
+    -0.51212, -0.72825, -0.76581, -1.0616, -1.4957, -0.35509, 
+    -0.82237, -0.34428, -0.043276, -0.56915, -0.38651, -0.21491, 
+    -0.15788, -0.4082, -1.497, -2.2965, -2.4047, -1.9422)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.98997, 1.5709, 1.6223, 2.5249, 
+    2.6054, 3.6676, 3.0687, 2.6426, 0.14083, -0.075099, 0.68627, 
+    0.045393, -0.83418, -0.49673, -0.33204, -0.83616, -1.3025, 
+    -1.671, -1.5832, -1.3332, -1.5965, -1.2317, -1.7676, -1.8897, 
+    -1.9718, -2.3162, -2.331, -2.3796, -2.1399, -2.1284, -1.3623, 
+    -1.8621, -2.2319, -1.5028, -2.0204, -1.5563, -1.5661, -1.6843, 
+    -1.1408, -1.9366, -0.93642, -2.1324, -2.0376, -1.4161, -1.9304, 
+    -2.0632, -2.1462, -2.3336, -2.2837, -1.5156, -2.3568, -1.8262, 
+    -1.9305, -1.827, -2.3452, -2.5024, -2.3992, -1.7664)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(0.49392, 0.50748, 1.0213, 1.3177, 
+    1.4437, 1.8346, 1.9425, 1.6761, 1.4438, 1.1832, 1.481, 1.0293, 
+    0.92333, 1.3663, 0.89126, 0.79769, 0.98061, 0.030007, -0.053868, 
+    0.10333, -0.15901, -0.21221, -0.67295, -0.61341, -0.63164, 
+    -0.71547, -1.0346, -0.94349, -0.78858, -1.0334, -1.4511, 
+    -1.8427, -1.7253, -1.39, -1.4336, -1.3142, -1.2767, -1.3432, 
+    -0.90628, -0.78193, -0.67202, -0.49273, -0.87698, -0.55959, 
+    -0.82487, -0.61497, -0.66968, -0.53121, -0.1648, -0.36448, 
+    -0.095286, -0.6651, -0.39045, -0.77562, -1.3247, -1.1639, 
+    -1.3318, -1.2161)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57, 58), vals = c(-0.47826, -0.53248, -0.64984, -1.9241, 
+        -0.71385, -0.89936, -0.97666, -1.1178, -1.6219, -1.5896, 
+        -1.3785, -0.55225, -1.4169, -1.4845, -1.0522, -0.63978, 
+        -0.52304, 0.010697, -0.30595, -0.39137, -0.058812, -0.19731, 
+        0.087949, 0.27921, 0.41393, 0.39551, 0.69758, 0.76925, 
+        0.26941, 0.66833, 0.71016, 0.26457, 0.41245, -0.20376, 
+        0.44032, -0.084359, 0.47477, 0.10467, -0.34477, -1.1296, 
+        -0.77298, -1.0072, -1.1183, -1.0175, -1.1824, -0.58034, 
+        -1.4363, -1.0394, -1.0452, -1.417, -1.2137, -1.0072, 
+        -0.89876, -0.53502, 0.26613, 0.93286, 0.68914, 1.4041
+        )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.1578, 
+    -2.4369, -2.4397, -2.882, -3.02, -2.5325, -2.3687, -2.1503, 
+    -2.3904, -2.0253, -2.0149, -2.4346, -1.9018, -2.6028, -2.4781, 
+    -2.6484, -1.7231, -1.5891, -1.6629, -1.747, -1.5241, -1.6891, 
+    -0.65261, -0.18204, 0.34165, 0.70719, 2.2579, 2.1696, 1.0849, 
+    2.0468, 1.2916, 1.1105, 0.9564, 1.6266, 1.2679, 1.3741, 0.40911, 
+    0.067718, 0.092934, -1.1088, -0.60987, -2.6767, -1.9503, 
+    -2.8238, -1.7587, -1.9005, -1.7294, -2.6747, -2.5421, -2.111, 
+    -2.8308, -1.645, 0.042504, -0.18821, 0.79597, 2.4264, 1.4003, 
+    3.0803)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-0.13425, 
+    -0.23329, -0.20175, -0.62691, -0.80816, -1.8992, -2.3735, 
+    -2.5239, -2.4828, -2.1844, -2.2455, -1.4901, -2.1304, -2.0703, 
+    -1.1428, -1.0724, -1.1313, -0.21036, -0.31316, -0.099941, 
+    -0.14913, -0.21452, -0.012223, -0.089673, -0.27305, -0.3253, 
+    -0.24045, -0.32318, -0.50836, -0.51695, -0.72729, -0.40319, 
+    -0.72877, -0.79741, -1.0287, -0.79627, -1.1574, -1.4649, 
+    -1.1678, -0.90867, -0.73269, -0.017765, -0.35069, -0.63305, 
+    -0.70216, -0.77182, -1.0831, -0.97779, -0.98144, -0.70151, 
+    -0.92983, -0.62219, -0.57214, -1.0818, -0.9223, 0.16176, 
+    0.56869, -0.52284)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 
+        44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 58), 
+        vals = c(-3.2072, -3.1093, -3.3515, -3.1328, -2.8916, 
+        -2.911, -2.5433, -2.2632, -2.0722, -1.616, -1.9665, -1.9428, 
+        -1.9284, -2.1191, -1.7945, -1.758, -1.2232, -0.5727, 
+        -0.94536, -0.89382, -0.7164, 1.1023, 1.4137, 1.9329, 
+        2.4356, 3.4934, 3.1328, 2.5395, 3.1733, 1.8839, 1.959, 
+        1.8446, 1.6232, 1.9893, 1.7864, 1.7587, 1.7208, 0.69304, 
+        -0.43172, -2.3092, -2.5603, -1.8318, -0.80958, -0.70384, 
+        0.0025463, -1.6932, -1.363, -1.6496, -1.6445, -1.8138, 
+        -1.7163, -2.1999, 1.2047, 1.1636)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-2.7902, -2.5524, -2.0425, 
+    -2.1045, -1.5762, -1.7247, -1.4946, -1.8115, -2.1901, -1.9568, 
+    -2.0513, 0.15937, -0.96575, -1.5442, -0.93174, -1.4219, -1.08, 
+    -0.64003, 1.2032, 0.010765, 0.76469, 1.0427, 1.9819, 2.0584, 
+    2.0905, 1.8881, 1.2435, 0.84331, 1.4012, 1.0293, -0.28936, 
+    -0.54818, 0.48937, -0.18132, 0.4834, 0.28233, 0.29678, 0.57683, 
+    0.35394, -0.26434, -1.1934, -1.6172, -1.4672, -1.3209, -1.2147, 
+    -0.71576, -0.79475, -1.7755, -1.3593, -0.68891, -0.86412, 
+    -0.20407, -0.54233, -0.24714, 2.0776, 2.1261, 1.7831, 1.614
+    )), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
+    49, 50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-1.5099, 
+    -1.5155, -1.87, -1.7792, -1.9429, -2.012, -1.197, -0.90152, 
+    -1.0713, -1.2163, -1.1657, -0.46713, -1.6654, -1.9698, -1.3536, 
+    -1.0744, -0.98049, -0.76706, -0.15464, -0.36091, 0.36327, 
+    0.27185, 0.53632, 0.97095, 1.0734, 1.1096, 1.7406, 1.6457, 
+    1.0535, 1.2861, 0.88486, 1.2849, 1.6269, 0.94397, 1.9107, 
+    1.6124, 2.1197, 2.2532, 1.8136, 0.22014, -0.92087, -1.9369, 
+    -1.937, -2.1627, -1.5439, -1.2826, -1.8036, -2.2532, -2.3862, 
+    -1.984, -2.3265, -0.023233, -0.87743, -0.32979, 1.6081, 1.7863, 
+    3.4716, 1.7669)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57), vals = c(-1.6706, -1.8633, -1.7941, -1.9005, -2.0288, 
+        -2.6508, -1.8789, -1.3332, -2.0486, -2.0754, -1.8191, 
+        -1.0318, -1.8848, -2.0822, -2.1328, -1.3562, -1.4967, 
+        -1.4228, -0.43553, -0.68684, -0.17186, -0.017898, 0.24051, 
+        0.55692, 0.62636, 0.85765, 1.1391, 1.2505, 0.83445, 1.1686, 
+        0.54151, 1.0714, 0.76261, 0.57714, 0.89749, 0.76769, 
+        0.70533, 1.1794, 0.95823, 0.091374, -0.40309, -1.7602, 
+        -1.615, -1.5642, -1.2724, -1.3008, -1.258, -1.2735, -1.4076, 
+        -0.86137, -1.562, 0.56904, 0.20466, 0.40973, 1.8705, 
+        1.4415, 2.4995)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
+        44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
+        ), vals = c(-0.30009, -0.0028192, 0.01685, 1.7111, 2.5692, 
+        3.5631, 2.6037, 3.3339, 2.0959, 1.1893, 1.2186, 1.5457, 
+        1.5274, 1.5534, 1.6092, 0.76756, 1.1001, 0.79854, 0.17324, 
+        0.45146, -0.18215, -0.16527, -0.69817, -0.80132, -0.26416, 
+        -0.73839, -0.69653, -0.76767, -0.83233, -1.1554, -0.29379, 
+        -0.74948, -0.53187, -0.6071, -0.17858, -0.39755, -0.81972, 
+        -0.069527, -0.4296, -0.25986, -0.86598, -0.81184, -0.7176, 
+        -0.70874, -1.824, 0.44805, -1.1588, -1.0474, -0.7128, 
+        -1.6046, -1.6127, -1.2834, -1.4646, -0.60561, -1.8979, 
+        -0.94163)), .Names = c("args", "vals")), structure(list(
+        args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
+        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 
+        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 
+        57, 58), vals = c(-1.813, -1.5468, -1.8535, -1.6417, 
+        -1.518, -1.5876, -1.1776, -0.92776, -0.55519, -0.46922, 
+        -0.49639, -0.96518, -0.83886, -0.99835, -0.65509, -0.81314, 
+        -0.50154, -0.48024, 0.085173, -0.14656, 0.40238, 0.30629, 
+        0.56055, 0.69524, 0.64815, 0.81082, 1.3061, 1.2525, 0.773, 
+        1.0251, 0.58044, 0.98263, 1.0582, 0.54784, 1.2109, 1.134, 
+        1.2546, 1.6417, 1.1376, 0.083988, -0.067499, -0.78773, 
+        -1.1319, -1.5017, -0.93007, -0.4107, -0.56333, -1.0376, 
+        -1.2627, -1.1342, -1.3224, 0.068414, -0.44102, -0.2047, 
+        1.238, 0.97678, 1.572, 0.8015)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(-2.0649, -2.267, -2.3289, -2.736, -2.6242, 
+    -2.3911, -2.3438, -2.4359, -1.7199, -1.916, -1.907, -1.8135, 
+    -1.4666, -1.3587, -1.483, -1.258, -1.2419, -0.76389, 0.27932, 
+    -0.38177, 0.22691, 0.6127, 0.78523, 0.73521, 1.189, 1.2331, 
+    1.2198, 1.1854, 0.82822, 1.0845, 0.64536, 0.75396, 1.0945, 
+    0.7805, 1.465, 1.3482, 1.0696, 1.6814, 1.6881, -0.13959, 
+    0.1298, -1.7667, -1.4062, -2.0362, -1.5186, -1.2403, -0.98331, 
+    -2.2802, -2.0245, -1.8417, -2.2423, -0.10815, -0.94332, -0.43899, 
+    1.1745, 1.281, 1.9511, 1.3293)), .Names = c("args", "vals"
+    )), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
+    56, 57, 58), vals = c(0.38609, 0.49621, 0.27106, 0.52798, 
+    0.64974, 0.39951, 0.35059, 0.092336, 0.34667, 0.086345, -0.058399, 
+    0.1397, 0.0046862, 0.21375, 0.43467, 0.038462, 0.17312, -0.70196, 
+    -1.2219, -1.164, -0.96399, -1.439, -1.1791, -0.80696, -1.2866, 
+    -1.275, -0.85485, -0.83844, -1.3278, -1.3487, -0.49621, -1.0378, 
+    -1.5265, -1.2573, -1.0738, -1.2892, -1.3397, -1.0056, -0.65868, 
+    -1.7747, -1.6357, -1.1527, -1.4047, -1.3668, -2.0062, -1.3933, 
+    -2.0862, -1.0876, -0.85722, -1.3112, -1.525, -1.3382, -1.072, 
+    -1.3831, -1.939, -0.59218, -1.0532, -0.16516)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-2.5838, -2.764, -2.3922, -2.7309, 
+    -2.6163, -2.8835, -2.3395, -2.7239, -2.252, -2.6999, -1.9798, 
+    -1.8271, -3.0194, -2.4282, -2.6319, -2.0558, -2.5744, -2.9578, 
+    -2.2049, -2.2496, -2.3323, -2.1977, -1.8155, -1.5337, -1.1055, 
+    -1.8779, -1.9381, -1.9513, -1.5836, -1.4386, -0.64091, -0.74621, 
+    -1.0965, -0.92915, -1.4551, -0.81951, -1.4372, -0.64898, 
+    -0.55435, -1.5133, -1.7801, -2.8072, -2.1376, -2.228, -2.5776, 
+    -2.0375, -1.5044, -2.3069, -2.1376, -1.6664, -2.4527, -0.33095, 
+    -0.7711, 1.1506, 2.9691, 3.5009, 2.8835, 0.81016)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-0.6002, -0.85355, -0.59307, 
+    -0.96863, -1.2549, -1.2476, -1.2819, -1.2215, -1.1295, -1.1324, 
+    -1.0564, -0.96113, -1.1498, -0.59721, -0.97901, -1.0689, 
+    -1.125, -1.1842, -0.71227, -1.0388, -0.93141, -0.88634, -0.82168, 
+    -0.77656, -0.82573, -0.60789, -0.69569, -0.74296, -0.32223, 
+    -0.78054, -0.85635, -0.85452, -1.0228, -0.78708, -0.99687, 
+    -0.89283, -0.79915, -0.87398, -0.83541, -1.1011, -1.2227, 
+    -1.2293, -1.0708, -0.89701, -0.46645, -1.2829, -0.73478, 
+    -1.146, -0.67587, -0.60377, -0.57572, -0.98262, -0.71057, 
+    -0.73836, -1.0249, -0.68233, -0.14793, 0.064206)), .Names = c("args", 
+    "vals")), structure(list(args = c(1, 2, 3, 4, 5, 6, 7, 8, 
+    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
+    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
+    54, 55, 56, 57, 58), vals = c(-0.60649, -0.48247, -1.2019, 
+    -1.734, -0.3734, -0.8626, -0.79553, -0.93697, -1.5921, -1.1111, 
+    -1.5206, -1.6674, -1.8888, -2.0566, -2.729, -1.5131, -1.7839, 
+    -1.8843, -1.6295, -1.6142, -1.3707, -1.6143, -1.2832, -1.2093, 
+    -1.8257, -1.4968, -1.3344, -1.173, -1.6312, -1.1131, -0.62312, 
+    -0.70205, -1.0231, -0.79068, -0.79858, -0.71482, -0.68275, 
+    -0.67075, -0.60547, -1.2601, -0.80877, -1.8324, -1.4516, 
+    -1.4864, -1.7459, -1.6272, -1.5206, -1.6363, -1.5739, -1.4586, 
+    -1.6633, -1.1393, -0.5076, -0.30912, 1.3953, 1.8888, 1.7916, 
+    1.9369)), .Names = c("args", "vals")), structure(list(args = c(1, 
+    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
+    34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
+    50, 51, 52, 53, 54, 55, 56, 57, 58), vals = c(-2.6442, -2.7789, 
+    -2.5737, -2.8648, -2.2742, -2.5058, -2.5716, -2.4819, -2.0632, 
+    -2.2503, -2.6557, -2.0771, -2.2775, -2.1053, -2.61, -2.7219, 
+    -2.2947, -2.589, -2.1912, -2.3053, -1.7013, -1.649, -1.5332, 
+    -1.1913, -0.85137, -0.45222, 0.75715, 0.51396, -0.36522, 
+    0.52134, 0.36923, -0.37695, 0.26288, -0.17058, 0.34689, 0.93715, 
+    0.88018, 1.0394, -2.4244, -1.907, -3.603, -4.1606, -2.887, 
+    -3.1615, -3.0522, -3.4183, -3.7764, -3.535, -2.9324, -3.3939, 
+    -2.4336, -1.7179, -1.4915, 0.2099, 1.2184, 2.5413, 3.603)), .Names = c("args", 
+    "vals"))), labels = list(3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 
+    3, 3, 2, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 
+    3, 2, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 1, 2, 2, 3, 3, 2, 
+    1, 3, 1, 2, 2, 2, 3, 3, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 2, 
+    2, 1, 2, 2, 3, 3, 3, 3, 2)), class = "functional")
+)
\ No newline at end of file
diff --git a/R/dataf.growth.r b/R/dataf.growth.r
new file mode 100644
index 0000000..a84d2d3
--- /dev/null
+++ b/R/dataf.growth.r
@@ -0,0 +1,945 @@
+dataf.growth <- function() return(structure(list(
+  name = "Berkeley Growth Study",
+  args = "age",
+  vals = "height",
+  dataf = list(structure(list(args = c(1, 1.25, 
+1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 
+12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18
+), vals = structure(c(76.2, 80.4, 83.3, 85.7, 87.7, 96, 103.8, 
+110.7, 116.8, 122.2, 127.4, 130.6, 133.4, 135.9, 138.6, 142.4, 
+146.8, 150.3, 153.1, 155, 156.2, 157.1, 157.7, 158, 158.2, 158.4, 
+158.6, 158.7, 158.7, 158.8, 158.9), .Names = c("1", "1.25", "1.5", 
+"1.75", "2", "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", 
+"10", "10.5", "11", "11.5", "12", "12.5", "13", "13.5", "14", 
+"14.5", "15", "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.6, 
+78, 82, 86.9, 90, 94.9, 102.1, 109.2, 115.6, 122.7, 128.2, 131.1, 
+134.8, 138.2, 140.9, 143.4, 146.1, 149.4, 152.9, 156.4, 159.5, 
+161.6, 162.6, 163.6, 165, 165.3, 165.6, 165.9, 166.1, 166, 166
+), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78.2, 81.8, 
+    85.4, 87.9, 89.6, 97.1, 109.2, 116.2, 122.9, 128, 134.2, 
+    138, 141.5, 145.2, 148.8, 152.3, 155.6, 158.2, 159.6, 160.1, 
+    160.3, 160.8, 161.6, 161.8, 161.7, 161.8, 161.9, 161.9, 161.7, 
+    161.9, 162.2), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(77.7, 
+80.5, 83.3, 87, 90.3, 98.6, 106.3, 113.9, 120.7, 125.7, 131, 
+134.1, 137.1, 140.2, 143, 145.7, 148.5, 151.5, 154.8, 158.4, 
+161.2, 163.5, 165.2, 166, 166.5, 166.9, 167.2, 167.4, 167.4, 
+167.6, 167.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76, 
+80, 83, 86, 89, 96, 103, 110, 117, 123, 131, 133, 136, 139, 141, 
+144, 147, 150, 153, 157, 161, 164, 166, 167, 168, 168, 169, 169, 
+170, 170, 170), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.5, 
+77, 81.5, 83.8, 85.5, 92.9, 99.6, 106.7, 113.3, 118.4, 124.2, 
+127.6, 130.6, 133.6, 136.4, 139.7, 143.7, 148, 152, 155.7, 158.9, 
+160.9, 162.2, 163.2, 163.8, 164, 164.2, 164.4, 164.4, 164.8, 
+164.9), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(67.4, 72.3, 
+    75.9, 79.4, 82.2, 91.6, 99.5, 105.7, 112.5, 117.2, 122.8, 
+    125.5, 128, 130.3, 132.5, 134.9, 137.4, 139.9, 142.1, 144.2, 
+    146.4, 148.9, 152.2, 155.3, 157.9, 160.1, 161.6, 162.4, 163, 
+    163.4, 164), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(80.5, 
+85.1, 89.7, 93.7, 97.3, 106.3, 114.4, 123.5, 130.6, 137.7, 144.4, 
+148.4, 152.5, 156.6, 161.5, 166.1, 170.2, 173.5, 176, 177.3, 
+178.3, 179.1, 180, 181, 181.6, 181.9, 182.3, 182.6, 182.8, 182.7, 
+183.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(77, 80.7, 
+    83.4, 85.6, 88.9, 96.5, 104.2, 111.4, 118.2, 124.2, 129.6, 
+    132, 135.2, 138.5, 141.5, 144.9, 148.9, 152.6, 156.2, 159.6, 
+    161.4, 162.4, 163.1, 163.6, 164.3, 164.5, 164.4, 164.3, 164.1, 
+    164, 163.8), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.7, 
+77.9, 81.3, 84.8, 87.6, 98.6, 107.8, 116.2, 124.6, 130.6, 136.2, 
+139.3, 142.3, 145.5, 148.7, 152.3, 156.6, 161, 164.7, 167.5, 
+169.1, 170.2, 171.3, 172.1, 172.6, 172.9, 173.1, 173.3, 173.6, 
+173.8, 174), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(69.3, 
+76.1, 80.7, 84.4, 87.1, 94.6, 103.4, 110, 116.6, 122.6, 128.1, 
+130.4, 133.2, 135.8, 138.2, 140.7, 142.7, 144.4, 146.2, 148.5, 
+151.3, 154.6, 158.3, 161.4, 163.5, 165, 166, 166.5, 166.7, 166.9, 
+167.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.4, 75.2, 
+    77.8, 80.7, 83.6, 95.3, 102.4, 109.6, 116, 121.7, 127.7, 
+    130.1, 133.1, 135.5, 137.5, 140, 143.1, 146.8, 150.7, 154.2, 
+    157, 159, 160.5, 161.5, 162.1, 162.5, 162.7, 163, 163.4, 
+    163.1, 163), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(67.3, 
+73.7, 76.2, 79, 81.4, 90.2, 96.8, 102.4, 108.7, 113.8, 118.8, 
+121.1, 123.2, 125.4, 127.7, 129.9, 131.6, 133.5, 135.6, 137.6, 
+139.5, 141.8, 145, 148.2, 150.8, 152.2, 153, 153.6, 154.1, 154.4, 
+154.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.7, 80, 
+    83.8, 86.8, 89.7, 96.2, 104.5, 111.5, 118.6, 125, 130.5, 
+    133, 135.8, 138.6, 141.4, 144.2, 146.6, 148.8, 151.4, 154.6, 
+    157.8, 161.2, 164.5, 166.6, 167.8, 168.6, 169.2, 169.8, 169.8, 
+    170, 170.3), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.8, 
+78.2, 84.2, 87, 88.4, 94.4, 100.3, 106.6, 120.5, 127.3, 133.6, 
+136.4, 139.5, 142.5, 146, 150.2, 154.3, 158.6, 162.6, 164.7, 
+166, 167.1, 168.3, 168.7, 169.1, 169.5, 169.9, 170.1, 170.3, 
+170.3, 170.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72, 
+74.9, 80, 82.8, 83.8, 92.3, 98.2, 105.2, 110.4, 115.6, 119.4, 
+121.9, 124.2, 126.3, 128.5, 131.2, 134.3, 137.3, 140.5, 143.6, 
+146.8, 149, 150.2, 151.4, 152.6, 153.4, 154.1, 154.9, 155.7, 
+156.2, 156.5), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(68.4, 
+75, 81.3, 85, 87.6, 94.6, 102.4, 109.2, 116.2, 122.7, 129.4, 
+132.4, 135.6, 139.4, 143.6, 147.9, 151.9, 155, 157, 158, 158.9, 
+159.4, 159.7, 159.9, 160.2, 160.2, 160.3, 160.4, 160.4, 160.3, 
+160.3), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76, 82.1, 
+    87.5, 91.1, 94, 101.1, 108.8, 116.7, 124.7, 132.3, 138.2, 
+    141.2, 144.1, 146.8, 150.2, 153.9, 157.3, 161, 164.5, 166.8, 
+    168, 168.7, 169.3, 169.6, 169.8, 170.1, 170.3, 170.5, 170.6, 
+    170.8, 170.8), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.7, 
+78.2, 79.9, 82, 86.4, 95.7, 101.9, 110, 117.6, 122.7, 128.7, 
+131.6, 134.6, 137.6, 141.6, 146.9, 152.1, 156.3, 159.4, 161, 
+162, 162.8, 163.6, 164.2, 164.6, 164.9, 165, 165.1, 165.1, 165.1, 
+165.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.7, 81.3, 
+    83.8, 85.1, 88.9, 96.1, 106.1, 113, 119.1, 124.7, 130.7, 
+    134, 137.2, 140.9, 144.2, 147.3, 150.2, 154.2, 158.4, 161.2, 
+    163.9, 165.4, 166.8, 167.5, 168.2, 168.8, 169.5, 169.6, 169.6, 
+    169.6, 169.8), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.4, 
+77.5, 81.5, 84.5, 86.7, 95, 103.6, 112, 119.6, 127.5, 133.2, 
+136.6, 139.8, 142.7, 146, 150.3, 154.4, 158.3, 162.4, 165.5, 
+167.9, 169.4, 170.1, 170.2, 170.6, 171.1, 171.5, 171.5, 171.5, 
+171.4, 171.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.9, 
+77.8, 81.2, 83.7, 86.4, 94.2, 98.6, 107.7, 114.8, 122.7, 128.3, 
+131, 134.2, 137.8, 141.4, 145.4, 149.7, 153.9, 157, 159.1, 160.4, 
+161.2, 161.8, 162.4, 163, 163.1, 163.1, 163.3, 163.6, 163.7, 
+163.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72, 77.1, 
+    80.6, 83.4, 85.9, 94, 100.3, 108, 114.9, 121.2, 127, 129.6, 
+    132.1, 134.8, 137.8, 141.6, 145.8, 150.2, 153.8, 156.7, 158.8, 
+    159.7, 160.5, 161.1, 161.5, 161.7, 162.1, 162.3, 162.4, 162.4, 
+    162.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.6, 
+76.8, 80.4, 82.9, 85.1, 91.4, 96.8, 105.7, 114.8, 118.4, 122.6, 
+126.1, 129, 131.3, 133.9, 136.7, 140.1, 143.8, 147.3, 150.4, 
+153, 154.5, 155.6, 156.1, 156.4, 156.6, 156.8, 156.9, 157, 156.9, 
+157.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.2, 80.2, 
+    83.8, 86.4, 88.6, 97.5, 103.6, 110.7, 117.6, 126.5, 132.6, 
+    136.1, 139.4, 142.4, 145.6, 148.8, 152.2, 155.7, 159, 162.1, 
+    166, 170.3, 174.3, 177.2, 178.9, 179.7, 180.4, 180.4, 180.2, 
+    180.5, 181.1), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(70.9, 
+74.3, 76.8, 80, 83, 91.4, 96.5, 102.4, 108.7, 114.6, 120.4, 123, 
+125.6, 127.9, 130.1, 132.8, 135.5, 138.9, 142.9, 146.9, 150, 
+152.2, 153.6, 154.9, 155.9, 156.6, 157.1, 157.5, 157.7, 158, 
+158.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.6, 79.4, 
+    82, 84.3, 88.9, 98, 105, 113.5, 121, 126.2, 131.4, 134.2, 
+    137.1, 139.5, 141.9, 145, 148.1, 151.8, 155.6, 158.3, 160.3, 
+    161.8, 162.8, 163.5, 164, 164.3, 164.8, 165.2, 165.4, 165.5, 
+    165.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(71.1, 
+77.3, 81.7, 85.5, 89.7, 98.2, 106, 112.6, 118.6, 123.7, 128.6, 
+131.1, 133.6, 135.8, 138, 141.8, 145.8, 150.5, 155.2, 158.7, 
+161, 162.6, 163.9, 164.7, 165.5, 165.9, 166.3, 166.5, 166.6, 
+166.7, 166.7), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(71, 
+72.3, 74.9, 78.4, 81.3, 88.1, 94.7, 100.1, 105.7, 112.5, 117, 
+119.2, 121.4, 124.5, 126.8, 129, 131.7, 134.4, 137, 140.3, 143.9, 
+147, 149.6, 151.8, 153.2, 154.3, 155.1, 155.6, 156, 156.1, 156.5
+), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74, 77.6, 
+    82.3, 86.2, 88.7, 95.3, 103.6, 109.7, 116.6, 122.2, 127.2, 
+    130.4, 133.6, 135.7, 137.8, 140.5, 143.5, 147.5, 151.7, 155.7, 
+    159.2, 162, 163.8, 164.9, 165.8, 166.8, 167.5, 167.9, 168.2, 
+    168.2, 168.1), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78.7, 
+82, 84.4, 86.4, 88.4, 96.8, 104.7, 111.3, 118.8, 124.3, 129, 
+131.6, 134.1, 136.3, 139, 141.9, 145.1, 148.3, 151.3, 154.6, 
+157.7, 160.3, 161.4, 162.4, 163.4, 164, 164.3, 164.7, 165.2, 
+165.3, 165.3), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(69, 
+72.9, 76.7, 80.8, 85.1, 94.6, 104.1, 112.5, 120.7, 126.2, 133.3, 
+136.4, 139.4, 142.7, 146.1, 149.9, 154.1, 157.8, 160.4, 161.9, 
+162.6, 162.9, 163, 163.1, 163, 163.1, 163.1, 163.4, 163.7, 163.8, 
+163.7), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.7, 78.3, 
+    82.4, 87.2, 91.4, 98.3, 105.2, 113.3, 120.1, 126.2, 131.5, 
+    134.9, 138.1, 140, 142.2, 145.2, 148.3, 151, 153.9, 156.9, 
+    160.3, 163.9, 166.9, 169.1, 170.4, 171.3, 172, 172.7, 172.9, 
+    173.1, 173.7), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.6, 
+77.4, 81.8, 85.2, 87.6, 95.5, 103.7, 109.7, 115.8, 121.6, 127.6, 
+130.4, 133.2, 135.8, 138.4, 141.8, 145.8, 150.3, 154.3, 157, 
+158.7, 159.9, 160.9, 161.7, 162.4, 163, 163.3, 163.4, 163.5, 
+163.6, 163.9), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.3, 
+79.7, 82, 84.2, 86.1, 96, 103.5, 111.4, 119.1, 126, 132.7, 135.6, 
+138.4, 141, 143.8, 146.9, 150.6, 154.4, 157.9, 161.1, 163.6, 
+165, 166.2, 167.3, 167.9, 168.1, 168.3, 168.5, 168.6, 168.8, 
+169.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.1, 77.5, 
+    80.4, 82.8, 85.9, 94.6, 102.4, 107.7, 114.6, 121.7, 126.8, 
+    129.8, 132.8, 135.3, 137.6, 140.3, 143.7, 147.3, 150.6, 154.1, 
+    157.5, 160.1, 162.2, 163.5, 164.2, 164.6, 164.8, 165.1, 165.4, 
+    165.7, 166), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(68.9, 
+72.7, 76.6, 79.6, 82.2, 91, 98.4, 106.2, 112.3, 118.1, 123.6, 
+126.7, 129.8, 132.3, 135, 137.4, 139.9, 142.4, 145, 148.1, 151.8, 
+155.5, 158.3, 160.1, 161.3, 162.3, 163, 163.3, 163.6, 163.8, 
+164.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.9, 79.4, 
+    82.1, 85.7, 88.2, 98, 107.4, 115.3, 124, 130.6, 137.6, 141.2, 
+    144.8, 148, 151.8, 155.3, 158.7, 162.2, 165.5, 168.3, 170.7, 
+    172.3, 173.4, 174.5, 175.1, 175.2, 175.2, 175.4, 175.8, 176.1, 
+    176), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+    "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+    "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+    "16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73, 
+77.3, 81, 85.1, 87.5, 97.3, 105.7, 112.7, 119.3, 124.7, 131.9, 
+135.4, 138.9, 142, 145, 148.2, 152, 156.5, 160.5, 163.6, 165.9, 
+167.6, 168.8, 169.5, 169.9, 170.2, 170.5, 170.5, 170.5, 170.7, 
+170.9), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(80, 83.6, 
+    85.1, 86.4, 88.6, 98, 105.7, 112.5, 119.6, 126.5, 133.6, 
+    137, 140.3, 142.8, 146, 149.9, 154.3, 158.3, 161.2, 163.3, 
+    165.1, 166.6, 167.4, 167.8, 168.2, 168.6, 168.8, 168.9, 168.9, 
+    169, 169.2), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.4, 
+75.8, 79, 83.1, 86.4, 94.5, 101.5, 108.7, 114.8, 120.4, 126.6, 
+130.1, 133.6, 136.3, 139.5, 143, 146.7, 150.5, 153.7, 156.1, 
+158, 159.7, 160.4, 160.8, 161.4, 162.1, 162.6, 162.6, 162.6, 
+162.8, 163), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(69, 
+72.6, 76.2, 78.5, 80.9, 89.3, 94.7, 100.3, 106.9, 112.8, 117.8, 
+120.6, 123.5, 126, 128.4, 131.1, 134.2, 137.7, 141.3, 145, 147.7, 
+149.8, 151.5, 152.4, 152.9, 153.2, 153.6, 154.1, 154.4, 154.5, 
+154.5), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76, 80, 
+    84.2, 87.4, 90, 101.2, 109.5, 116.3, 122.1, 128.8, 133.8, 
+    136.9, 139.9, 143.6, 147, 151, 155.8, 160.7, 164.5, 166.9, 
+    168.5, 169.4, 170.1, 170.8, 171.5, 172, 172.1, 172.2, 172.3, 
+    172.2, 172.5), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78.4, 
+82.6, 85.1, 86.4, 89.7, 96.6, 105, 112.3, 119.6, 124.7, 131.2, 
+133.6, 135.8, 138.8, 141.2, 144.1, 147.4, 150.4, 153.8, 157.8, 
+161.1, 163.5, 165.2, 166.1, 166.6, 166.8, 167.1, 167.2, 167.3, 
+167.3, 167.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.8, 
+78, 81.6, 84.2, 86.4, 94, 101.8, 110, 116.8, 121.9, 126.8, 129.3, 
+131.9, 134.9, 137.8, 141.3, 145, 149.5, 153.8, 157, 158.9, 160.3, 
+161.8, 162.4, 162.8, 163.2, 163.6, 163.9, 164.3, 164.2, 164), .Names = c("1", 
+"1.25", "1.5", "1.75", "2", "3", "4", "5", "6", "7", "8", "8.5", 
+"9", "9.5", "10", "10.5", "11", "11.5", "12", "12.5", "13", "13.5", 
+"14", "14.5", "15", "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(71.3, 
+74.4, 77.4, 80, 82.6, 91.6, 100.6, 106.2, 114.3, 120.4, 126.7, 
+129.9, 133.1, 136, 138.8, 142.9, 146.8, 150.7, 154.6, 157.2, 
+158.6, 159.7, 160.5, 160.8, 161.1, 161.3, 161.6, 161.9, 162, 
+162.1, 162.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73, 
+75, 77.6, 81.7, 86.4, 92.9, 99.3, 105.6, 113.3, 118.6, 125.6, 
+128.2, 130.9, 134.4, 137.9, 141.6, 145.4, 149.4, 153.3, 156.2, 
+157.4, 158.1, 158.9, 159.6, 159.9, 160.2, 161, 161.5, 161.9, 
+161.8, 161.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(71.1, 
+73.7, 76.2, 79.4, 81.8, 91.4, 95.3, 102.4, 110, 116.1, 120.9, 
+123.6, 126.3, 130.4, 134.4, 137.7, 141.3, 144.4, 147, 149.1, 
+150.3, 151, 151.4, 151.7, 152, 152.1, 152.3, 152.6, 153.2, 153.5, 
+153.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.6, 78, 
+    81, 83.6, 86.2, 96.5, 104.1, 110.7, 118.6, 125.2, 130.9, 
+    133.4, 135.9, 138.8, 141.7, 144.8, 148.1, 151.8, 155.8, 160.4, 
+    164.8, 168.6, 171.7, 173.8, 175, 175.7, 176.1, 176.5, 176.9, 
+    177.2, 177.5), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.9, 
+78.1, 80.6, 83.4, 86, 96.5, 104.6, 111.8, 117.9, 124.1, 130.3, 
+132.7, 135, 138.5, 141.8, 145.1, 148.1, 150.8, 153.9, 157.5, 
+161.3, 164.5, 166, 166.7, 167.4, 167.9, 168.1, 168.5, 168.9, 
+169.4, 169.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(77.6, 
+81.1, 84, 87.2, 91.4, 98, 105.6, 112.2, 118.6, 124.2, 130.3, 
+132.9, 135.5, 138.5, 141.4, 144.4, 147.6, 151.2, 154.9, 159, 
+163.2, 166, 168.3, 169.8, 170.7, 171.5, 172.1, 172.5, 172.7, 
+173.1, 173.5), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(68.6, 
+73.6, 78.6, 83.6, 88.9, 96.8, 104.1, 111.8, 118.6, 124.7, 129.2, 
+132.8, 136.5, 138.1, 139.4, 142.5, 145.4, 148.6, 152.2, 155.8, 
+158.7, 160.8, 162.2, 163.1, 163.7, 164.3, 164.8, 165.4, 166, 
+166.3, 166.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(79.9, 
+82.6, 84.8, 88.6, 94, 99.6, 108.2, 116.2, 124, 131.1, 136.8, 
+139.4, 142, 145, 148.1, 151.3, 154.8, 158.5, 161.6, 163.8, 165.3, 
+166.2, 166.4, 166.6, 167, 167.5, 167.7, 168, 168.3, 168.4, 168.6
+), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.1, 78.4, 
+    82.3, 86, 89.2, 98.2, 106.7, 114.4, 121.9, 129.5, 135.2, 
+    138.1, 140.8, 144.8, 148, 151.3, 154.7, 158.4, 161.7, 164.2, 
+    165.6, 166.4, 167, 167.7, 168.1, 168.4, 168.5, 168.5, 168.6, 
+    168.9, 169.2), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(81.3, 
+84.2, 86.4, 88.9, 91.4, 101.1, 109.5, 115.8, 121.9, 130, 138.2, 
+141.1, 144.3, 147.5, 150.5, 153.4, 156.2, 159.7, 163.8, 168.8, 
+174.9, 181.2, 186.3, 189.6, 191.3, 192.1, 192.8, 193.2, 193.8, 
+194.3, 195.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.2, 
+80.4, 83.2, 85.4, 87.6, 97, 104.6, 112.3, 118.9, 125, 130.1, 
+133, 135.4, 137.5, 139.7, 142.2, 144.2, 146.2, 148.1, 149.8, 
+151.6, 153.8, 156.3, 159.2, 163.3, 167.7, 171.5, 174.3, 176.1, 
+177.4, 178.7), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.8, 
+79.8, 82.6, 84.7, 86.7, 94.2, 100.4, 107.1, 112.3, 118.6, 124, 
+126.5, 128.9, 131.2, 133.4, 135.8, 138.4, 141, 143.6, 146.8, 
+150.8, 155.1, 159.5, 163.3, 166.8, 167.8, 168.8, 169.8, 170.9, 
+171.2, 171.5), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.1, 
+78.4, 82.6, 85.4, 88.1, 98.6, 104.4, 111, 116.3, 123.2, 129.9, 
+133, 136, 138.7, 141.4, 144, 146.4, 148.8, 151.4, 154.5, 157.7, 
+162.2, 167.4, 172.5, 176.3, 178.5, 179.8, 180.7, 181.4, 181.6, 
+181.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.2, 76.3, 
+    78.3, 80.3, 82.2, 89.4, 96.9, 104.1, 110.7, 115.8, 121.7, 
+    125.2, 128.5, 131.2, 134.2, 137.4, 140.5, 143.3, 145.9, 148.7, 
+    152, 155.8, 160.4, 165.1, 168.5, 170.4, 171.6, 172.4, 172.5, 
+    172.5, 172.5), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.8, 
+79.1, 81.1, 84.4, 87.4, 94, 102.4, 109.2, 116.1, 121.9, 127.8, 
+129.8, 132.4, 135, 137.3, 139.7, 142, 144.1, 146.9, 150, 153.4, 
+157.3, 161.6, 165.2, 168.8, 170.1, 171.5, 172.1, 172.6, 173.2, 
+173.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(72.4, 76, 
+    79.4, 82, 84.2, 93.2, 101.6, 109, 117.3, 122.9, 128.3, 130.9, 
+    133.7, 136, 138, 139.9, 141.6, 143.4, 145.5, 147.8, 150.3, 
+    152.8, 155.8, 159.2, 163.1, 166.5, 168.9, 170.2, 171.1, 171.8, 
+    172.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.8, 
+78.7, 83, 85.8, 88.4, 97.3, 106.7, 112.8, 119.1, 125.7, 132.3, 
+135.4, 138.3, 141.3, 144.7, 147.9, 151.2, 154.5, 158.2, 162.3, 
+166.5, 171.1, 175.2, 178.4, 180.8, 182.2, 183.2, 184, 184.7, 
+185, 185.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.4, 
+81, 84.9, 87.9, 90, 97.3, 102.8, 108.2, 113.5, 120.2, 125.7, 
+127.9, 130.3, 133.2, 135.9, 137.9, 139.6, 141.5, 143.7, 146, 
+148.6, 151.5, 154.3, 157.8, 161.8, 165.6, 168.7, 171, 171.6, 
+172.3, 172.9), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78.8, 
+83.3, 87, 89.6, 91.4, 100.4, 111, 118.5, 125.8, 131.1, 138.4, 
+141.5, 144.5, 147.5, 150.5, 153.6, 156.8, 160.5, 164.6, 169.2, 
+174.3, 178.8, 181.9, 184.2, 185.6, 186.6, 187.1, 187.4, 187.8, 
+188.2, 188.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.9, 
+79.9, 84.1, 88.5, 90.6, 96.6, 104.8, 112, 118.6, 124.8, 130.3, 
+133.1, 135.8, 138.7, 141.7, 144.2, 146.6, 148.7, 150.5, 152.4, 
+154, 158.9, 161.7, 165.1, 169.6, 174, 176.6, 178.6, 179.6, 180.2, 
+181.6), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(81.6, 83.7, 
+    86.3, 88.8, 92.2, 99.3, 105.8, 112.6, 119.6, 126.9, 133.8, 
+    136.4, 139.9, 143.2, 146, 149, 151.8, 154.8, 158, 161.5, 
+    165.3, 169.6, 174.3, 178.8, 182.1, 184.6, 186.1, 187.5, 188, 
+    188.6, 189), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78, 
+81.8, 85, 86.4, 87.1, 96.2, 104, 111, 117.3, 124.1, 130, 133.6, 
+136.8, 139.6, 142.2, 144.8, 147.4, 149.8, 151.9, 154.1, 158.2, 
+163.3, 168.1, 173, 175.2, 177.4, 179.2, 180.6, 181.4, 181.9, 
+182.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.4, 79.4, 
+    83.4, 87.6, 91.4, 101.2, 106.4, 113.3, 120.3, 128.8, 135, 
+    137.8, 140.6, 143.4, 146.5, 149.6, 152.2, 155.3, 159.2, 163.9, 
+    168.6, 172.8, 176.6, 179.4, 181.4, 182.6, 183.7, 184.4, 185, 
+    185.7, 185.8), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.4, 
+81.2, 86, 89.2, 92.2, 101.3, 110.3, 117.3, 122.5, 129.5, 134.8, 
+137.4, 140, 142.5, 145, 147.8, 150.5, 153.4, 157.4, 162, 166.6, 
+170.7, 174, 176.1, 177.3, 177.9, 178.2, 178.3, 178.5, 178.5, 
+178.7), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.2, 79.2, 
+    82.3, 85.4, 88.4, 101, 107.4, 114.8, 120.7, 128, 134.5, 137.4, 
+    139.9, 142.5, 145.7, 148.7, 151.3, 154.3, 158.1, 162.8, 167.5, 
+    171.5, 175.1, 178, 179.8, 181, 181.9, 182.7, 183.3, 183.4, 
+    183.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75, 
+78.4, 82, 84, 85.9, 95.6, 102.1, 109.2, 117.5, 124.8, 131.5, 
+134.9, 137.8, 140.7, 143.8, 146.8, 149.5, 152.4, 155.3, 158.9, 
+163.6, 168.6, 173, 176.3, 178.5, 180, 181, 181.8, 182.2, 182.6, 
+183), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(79.7, 81.3, 
+    83.3, 86.5, 88.9, 99.4, 104.1, 112.5, 119, 128, 133.6, 136.6, 
+    139.5, 141.9, 144.8, 148.5, 152.3, 156.3, 161.2, 165.9, 169.5, 
+    172.1, 174.2, 175.6, 176.4, 177, 177.3, 177.6, 177.3, 177, 
+    177), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+    "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+    "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+    "16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(70, 
+74.5, 78.7, 82.3, 85.1, 93.6, 101.9, 108.8, 115.3, 122, 127.9, 
+130.9, 134.1, 136.8, 139.3, 141.6, 144, 146.1, 148.6, 151.7, 
+155, 158.9, 163.3, 167.4, 170.4, 171.9, 173, 173.7, 174.2, 174.6, 
+175), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.8, 76.7, 
+    79.3, 82.8, 86.4, 95.3, 102.2, 109.5, 116.1, 121.7, 128.3, 
+    131.4, 134.3, 137, 140, 143, 145.6, 148.7, 152.3, 157, 162, 
+    166.4, 169.8, 172.1, 173.7, 174.7, 175.5, 176.1, 176.4, 176.5, 
+    176.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.3, 
+79.1, 82.6, 85.1, 87.2, 95.6, 102.6, 109.7, 116.8, 121.7, 127.1, 
+129.8, 132.5, 134.7, 136.7, 138.9, 141.5, 143.6, 145.8, 148, 
+150, 152.5, 155.4, 158.9, 163, 166.8, 169.8, 172, 173.5, 174.9, 
+176.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.6, 79, 
+    82.6, 86.6, 89, 95.3, 102.1, 108.5, 111.5, 119.4, 126.1, 
+    128.8, 131.4, 134.3, 136.8, 139.7, 142.2, 144.1, 146.6, 150, 
+    154, 158, 162.1, 166.5, 169.2, 170.7, 171.9, 172.8, 173.4, 
+    173.8, 174), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73, 
+76, 78.7, 82.2, 84.6, 94.7, 104.9, 109, 115.3, 121.2, 126.5, 
+130.4, 134.3, 136.6, 139.1, 141.6, 143.8, 146.3, 149, 151.6, 
+154.2, 157.2, 160.6, 164.3, 168.6, 173, 176.2, 178, 179.1, 180.2, 
+181), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75.1, 78.6, 
+    81.9, 84, 85.6, 92.8, 100.6, 106.7, 112.5, 118.6, 123.7, 
+    126.4, 129.1, 131.8, 134.5, 136.8, 139, 141.8, 145.3, 149.7, 
+    154.4, 158.8, 162.2, 164.8, 167, 168, 168.8, 169.4, 169.7, 
+    169.8, 170.1), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(77.4, 
+81.6, 84.8, 88, 89.6, 96.5, 103.3, 108.7, 113.8, 120.1, 125.8, 
+128.9, 132.1, 134.3, 136.9, 139.2, 141.6, 144.2, 146.7, 149.6, 
+153.3, 157.7, 162.3, 166.1, 168.6, 170.5, 172.2, 173.1, 173.8, 
+174.4, 175.2), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(73.2, 
+76.2, 79, 81.8, 84.8, 95.3, 101.6, 109.3, 116, 122.7, 129.9, 
+133.1, 136.2, 139.4, 142.6, 144.7, 147.9, 150.8, 153.5, 156.1, 
+158.7, 161.1, 163.7, 166.8, 170.3, 174.3, 178.3, 181, 183.1, 
+184.6, 185.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78, 
+82.2, 86.1, 88.9, 91.4, 101.3, 108, 114.9, 121.5, 128.3, 134, 
+137, 140.1, 142.5, 145, 147.4, 149.5, 151.4, 153.2, 155.2, 157.1, 
+159.2, 161.4, 163.6, 166.6, 170.9, 175, 178.1, 180.5, 182, 182.7
+), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76.5, 80, 
+    82.8, 85.4, 88.4, 95.2, 102, 107.5, 114, 119.4, 124.2, 126.6, 
+    129.1, 131.6, 134, 136.5, 138.8, 141, 143.3, 145.7, 148.1, 
+    150.7, 154.4, 158.9, 162.7, 165.2, 166.9, 168, 168.7, 169.1, 
+    169.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78, 
+80.6, 85.4, 90.2, 93.5, 103.6, 111, 117.9, 126.7, 133.6, 140.3, 
+143.9, 147.4, 150.4, 153.4, 156.1, 159.1, 162.8, 167.1, 171.9, 
+177.1, 181.8, 185.7, 188.8, 190.8, 192.2, 193, 193.6, 194, 194.1, 
+194.3), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.9, 78.7, 
+    81, 84.9, 87.7, 93.2, 104.2, 110, 116, 123.8, 130.6, 133.3, 
+    136, 138.9, 141.9, 144.1, 146.2, 148.1, 150.1, 152.5, 155.1, 
+    158.3, 162.4, 167.3, 171.6, 174.9, 177.4, 179, 180, 180.7, 
+    181.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+    "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(74.2, 
+78.3, 82.3, 86, 89.1, 97.1, 104.9, 112, 118.6, 124.7, 131.8, 
+135, 138.2, 141.2, 143.9, 146.4, 149.5, 153.8, 158.4, 163.2, 
+168, 172.4, 175.7, 177.6, 178.7, 179.8, 180.4, 180.8, 180.9, 
+180.8, 181.3), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78.7, 
+83.3, 87, 90.4, 93.1, 103, 109.7, 118, 124.6, 132.3, 138.4, 141.6, 
+144.8, 147.4, 150.5, 153.4, 156.1, 159.3, 163.7, 168.8, 174.2, 
+179, 183.1, 186, 188, 189.6, 190.7, 191.3, 191.7, 192.2, 192.8
+), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", "5", 
+"6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(78, 82.6, 
+    85.8, 88.4, 90.9, 99.1, 105.8, 112.2, 117.6, 123.4, 129.6, 
+    132.3, 135, 137.3, 139.7, 142, 144.4, 146.5, 148.6, 150.7, 
+    153.1, 156, 159.6, 163.5, 167.8, 170.3, 172.8, 174.5, 175.5, 
+    176, 176.4), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76, 
+81.2, 84.6, 87, 89.1, 94.6, 102, 107.4, 113, 119.4, 124.2, 127, 
+129.8, 132.9, 136.1, 139, 141.7, 144.4, 147.4, 150.9, 155.9, 
+161.5, 166.2, 169.6, 171.9, 172.9, 173.4, 173.8, 174.2, 174.2, 
+174.1), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(76, 80.1, 
+    85.9, 91.4, 95.2, 103.5, 111.6, 118.1, 126.3, 132.8, 139.1, 
+    143.4, 147.5, 150.6, 154, 157.6, 160.9, 163.8, 166.3, 168.6, 
+    171, 173.8, 177.3, 180.7, 183.4, 185.3, 186.2, 186.4, 186.7, 
+    187.2, 188), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(68.8, 
+73.5, 77.5, 80.8, 84, 95.2, 103.1, 111.1, 118.4, 124.9, 130.7, 
+134, 137.5, 140.3, 143, 145.5, 148, 150.8, 153.6, 157.3, 162.1, 
+167, 171.2, 174.4, 176.8, 178.4, 179.1, 179.7, 180.1, 180.5, 
+180.8), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", "4", 
+"5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", "11.5", 
+"12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", "16", 
+"16.5", "17", "17.5", "18"))), .Names = c("args", "vals")), structure(list(
+    args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 
+    9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 
+    15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(82.2, 88.9, 
+    90.9, 93, 95.3, 103.8, 111.8, 117.1, 123.7, 130.4, 136.4, 
+    139.3, 142.2, 145.2, 148.3, 151.2, 154.2, 157.6, 161.8, 166.5, 
+    171.1, 174.9, 177.9, 180.1, 181.3, 181.8, 182.2, 182.7, 183.1, 
+    183.4, 183.7), .Names = c("1", "1.25", "1.5", "1.75", "2", 
+    "3", "4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", 
+    "11", "11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", 
+    "15.5", "16", "16.5", "17", "17.5", "18"))), .Names = c("args", 
+"vals")), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 
+5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 
+14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(77, 
+82.5, 85.6, 87.9, 90.3, 98.3, 107.2, 114.6, 121.9, 129.2, 135.9, 
+139.1, 142.2, 145, 147.8, 150.5, 153.5, 157.5, 161.5, 165.5, 
+169.7, 173.1, 175.6, 177.2, 178.3, 179, 179.2, 179.3, 179.8, 
+180.3, 180.7), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+)), structure(list(args = c(1, 1.25, 1.5, 1.75, 2, 3, 4, 5, 6, 
+7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 
+14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18), vals = structure(c(75, 
+79.2, 82.2, 84.6, 87, 95.8, 103.1, 110.2, 116.1, 122.2, 127.7, 
+130.7, 133.7, 136.8, 139.8, 142.6, 145.1, 147.3, 150.2, 153.3, 
+156.7, 160.5, 164.1, 167.7, 171, 173.1, 174.7, 175.6, 176.1, 
+176.3, 176.4), .Names = c("1", "1.25", "1.5", "1.75", "2", "3", 
+"4", "5", "6", "7", "8", "8.5", "9", "9.5", "10", "10.5", "11", 
+"11.5", "12", "12.5", "13", "13.5", "14", "14.5", "15", "15.5", 
+"16", "16.5", "17", "17.5", "18"))), .Names = c("args", "vals"
+))), labels = list("girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", 
+    "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", 
+    "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", 
+    "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", 
+    "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", 
+    "boy", "boy", "boy")), class = "functional")
+)
diff --git a/R/dataf.medflies.r b/R/dataf.medflies.r
new file mode 100644
index 0000000..5cf5b43
--- /dev/null
+++ b/R/dataf.medflies.r
@@ -0,0 +1,2013 @@
+dataf.medflies <- function() return(structure(list(
+  name = "Medflies",
+  args = "day",
+  vals = "#eggs",
+  dataf = list(structure(list(args = 5:34, vals = c(0L, 
+0L, 0L, 0L, 0L, 0L, 27L, 49L, 37L, 74L, 54L, 100L, 43L, 95L, 
+37L, 57L, 76L, 58L, 73L, 65L, 38L, 64L, 61L, 52L, 34L, 35L, 47L, 
+41L, 38L, 64L)), .Names = c("args", "vals")), structure(list(
+    args = 5:34, vals = c(0L, 0L, 0L, 55L, 16L, 48L, 45L, 98L, 
+    42L, 86L, 87L, 138L, 70L, 93L, 90L, 104L, 64L, 37L, 60L, 
+    52L, 61L, 67L, 54L, 51L, 43L, 50L, 59L, 43L, 49L, 14L)), .Names = c("args", 
+"vals")), structure(list(args = 5:34, vals = c(18L, 45L, 9L, 
+101L, 40L, 98L, 69L, 93L, 49L, 83L, 58L, 104L, 64L, 60L, 61L, 
+44L, 4L, 56L, 54L, 67L, 37L, 57L, 29L, 53L, 34L, 32L, 32L, 44L, 
+40L, 13L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 46L, 0L, 24L, 0L, 41L, 0L, 82L, 45L, 41L, 48L, 
+    74L, 17L, 50L, 83L, 12L, 40L, 18L, 55L, 34L, 49L, 42L, 60L, 
+    61L, 55L, 48L, 65L, 66L, 29L, 33L)), .Names = c("args", "vals"
+)), structure(list(args = 5:34, vals = c(0L, 0L, 9L, 80L, 50L, 
+73L, 67L, 78L, 50L, 76L, 52L, 90L, 48L, 73L, 52L, 68L, 57L, 63L, 
+43L, 57L, 41L, 46L, 39L, 48L, 34L, 39L, 25L, 41L, 15L, 37L)), .Names = c("args", 
+"vals")), structure(list(args = 5:34, vals = c(0L, 14L, 9L, 69L, 
+31L, 69L, 59L, 77L, 58L, 45L, 59L, 107L, 41L, 83L, 57L, 59L, 
+40L, 56L, 50L, 52L, 50L, 55L, 43L, 47L, 31L, 41L, 46L, 31L, 16L, 
+14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 0L, 0L, 19L, 0L, 0L, 0L, 52L, 16L, 17L, 33L, 
+    49L, 25L, 52L, 38L, 5L, 30L, 30L, 17L, 41L, 34L, 5L, 32L, 
+    30L, 14L, 0L, 43L, 0L, 6L, 0L)), .Names = c("args", "vals"
+)), structure(list(args = 5:34, vals = c(19L, 44L, 23L, 79L, 
+18L, 46L, 71L, 86L, 61L, 34L, 24L, 72L, 36L, 58L, 64L, 28L, 25L, 
+34L, 48L, 56L, 33L, 39L, 15L, 20L, 17L, 52L, 22L, 7L, 17L, 0L
+)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 0L, 0L, 0L, 0L, 18L, 59L, 77L, 34L, 21L, 12L, 
+    78L, 64L, 62L, 50L, 45L, 49L, 54L, 34L, 33L, 44L, 21L, 22L, 
+    41L, 23L, 30L, 30L, 20L, 16L, 12L)), .Names = c("args", "vals"
+)), structure(list(args = 5:34, vals = c(18L, 46L, 55L, 64L, 
+31L, 57L, 52L, 103L, 50L, 80L, 62L, 85L, 37L, 64L, 54L, 30L, 
+0L, 48L, 43L, 51L, 39L, 27L, 46L, 32L, 37L, 36L, 49L, 31L, 22L, 
+32L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 23L, 39L, 53L, 32L, 45L, 60L, 77L, 44L, 77L, 
+    57L, 91L, 41L, 73L, 46L, 31L, 20L, 56L, 38L, 30L, 47L, 22L, 
+    21L, 37L, 34L, 14L, 30L, 24L, 19L, 32L)), .Names = c("args", 
+"vals")), structure(list(args = 5:34, vals = c(0L, 32L, 52L, 
+91L, 35L, 73L, 59L, 102L, 61L, 100L, 65L, 102L, 67L, 74L, 79L, 
+60L, 67L, 56L, 54L, 56L, 55L, 58L, 28L, 47L, 33L, 32L, 12L, 45L, 
+17L, 0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 0L, 49L, 55L, 42L, 55L, 61L, 69L, 57L, 80L, 
+    23L, 108L, 50L, 63L, 56L, 51L, 43L, 60L, 47L, 25L, 59L, 34L, 
+    36L, 40L, 36L, 14L, 43L, 44L, 19L, 24L)), .Names = c("args", 
+"vals")), structure(list(args = 5:34, vals = c(0L, 0L, 2L, 35L, 
+0L, 42L, 44L, 57L, 6L, 0L, 68L, 65L, 35L, 72L, 48L, 61L, 35L, 
+53L, 47L, 58L, 29L, 32L, 51L, 34L, 38L, 19L, 33L, 0L, 42L, 0L
+)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+    vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 0L, 20L, 19L, 18L, 
+    20L, 21L, 17L, 33L, 13L, 20L, 10L, 17L, 20L, 16L, 13L, 17L, 
+    14L, 15L, 12L, 12L, 13L, 8L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 31L, 52L, 42L, 41L, 
+    72L, 69L, 49L, 47L, 52L, 22L, 48L, 20L, 35L, 40L, 25L, 15L, 
+    25L, 28L, 38L, 52L, 61L, 46L, 45L, 35L, 29L, 52L, 32L, 36L, 
+    21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 46L, 48L, 47L, 42L, 26L, 11L, 37L, 19L, 7L, 17L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 54L, 55L, 54L, 
+    76L, 50L, 48L, 65L, 54L, 64L, 20L, 38L, 44L, 77L, 26L, 39L, 
+    0L, 62L, 31L, 45L, 56L, 73L, 49L, 54L, 37L, 45L, 24L, 32L, 
+    47L, 24L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 3L, 11L, 0L, 20L, 10L, 0L, 33L, 16L, 29L, 28L, 
+        22L, 16L, 0L, 0L, 16L, 9L, 0L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 
+    113L, 32L, 52L, 51L, 42L, 75L, 23L, 31L, 24L, 47L, 13L, 43L, 
+    9L, 46L, 41L, 42L, 45L, 69L, 65L, 51L, 35L, 41L, 26L, 35L, 
+    49L, 17L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 24L, 42L, 51L, 31L, 52L, 
+        53L, 32L, 40L, 17L, 21L, 30L, 33L, 22L, 39L, 15L, 40L, 
+        24L, 47L, 35L, 53L, 22L, 30L, 29L, 26L, 24L, 29L, 25L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 31L, 53L, 17L, 34L, 34L, 
+        24L, 28L, 33L, 30L, 21L, 22L, 7L, 28L, 26L, 29L, 38L, 
+        49L, 36L, 28L, 31L, 27L, 25L, 39L, 20L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 20L, 0L, 0L, 25L, 63L, 35L, 34L, 42L, 29L, 42L, 
+    28L, 61L, 29L, 41L, 48L, 52L, 55L, 42L, 48L, 26L, 39L, 35L, 
+    33L, 35L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 53L, 21L, 28L, 35L, 27L, 
+        24L, 32L, 26L, 45L, 24L, 39L, 21L, 70L, 19L, 37L, 44L, 
+        43L, 27L, 31L, 41L, 19L, 27L, 26L, 40L, 23L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 31L, 36L, 
+    27L, 53L, 39L, 47L, 52L, 32L, 45L, 24L, 49L, 29L, 38L, 16L, 
+    33L, 8L, 16L, 20L, 29L, 43L, 70L, 34L, 28L, 25L, 18L, 20L, 
+    28L, 39L, 15L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 56L, 31L, 54L, 
+        50L, 46L, 59L, 48L, 45L, 33L, 24L, 68L, 26L, 27L, 31L, 
+        18L, 45L, 24L, 47L, 35L, 51L, 54L, 38L, 43L, 45L, 31L, 
+        52L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 35L, 46L, 47L, 68L, 46L, 63L, 68L, 66L, 
+        65L, 60L, 58L, 36L, 55L, 47L, 26L, 33L, 19L, 32L, 49L, 
+        58L, 45L, 39L, 56L, 60L, 42L, 54L, 42L, 13L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 11L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 22L, 12L, 15L, 
+    16L, 21L, 18L, 19L, 18L, 18L, 42L, 50L, 65L, 17L, 47L, 37L, 
+    40L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 19L, 0L, 65L, 18L, 41L, 56L, 59L, 55L, 
+        60L, 63L, 51L, 22L, 74L, 28L, 37L, 42L, 23L, 35L, 32L, 
+        67L, 35L, 46L, 42L, 42L, 41L, 29L, 48L, 37L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 5L, 46L, 12L, 25L, 12L, 15L, 4L, 0L, 0L, 11L, 2L, 
+    4L, 0L, 5L, 0L, 12L, 13L, 5L, 10L, 14L, 9L, 9L, 16L, 10L, 
+    7L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 33L, 22L, 34L, 27L, 34L, 20L, 48L, 57L, 34L, 
+        52L, 47L, 58L, 21L, 47L, 53L, 64L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 11L, 0L, 0L, 0L, 15L, 0L, 8L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    4L, 0L, 0L, 34L, 4L, 0L, 22L, 38L, 17L, 26L, 20L, 27L, 32L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 18L, 52L, 51L, 52L, 54L, 66L, 52L, 48L, 
+        47L, 38L, 38L, 36L, 28L, 36L, 12L, 32L, 21L, 7L, 16L, 
+        29L, 51L, 19L, 44L, 35L, 43L, 35L, 36L, 24L, 55L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 36L, 25L, 28L, 13L, 14L, 28L, 9L, 
+    14L, 14L, 6L, 11L, 28L, 45L, 20L, 28L, 33L, 39L, 25L, 37L, 
+    33L, 42L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 41L, 12L, 44L, 32L, 
+        38L, 38L, 15L, 56L, 24L, 24L, 20L, 23L, 31L, 51L, 54L, 
+        22L, 40L, 36L, 46L, 20L, 23L, 36L, 40L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 19L, 21L, 64L, 0L, 40L, 9L, 39L, 13L, 
+    19L, 8L, 9L, 0L, 35L, 20L, 9L, 16L, 12L, 19L, 3L, 9L, 4L, 
+    8L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 78L, 0L, 18L, 21L, 21L, 57L, 30L, 
+        40L, 49L, 47L, 46L, 38L, 48L, 40L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 27L, 75L, 43L, 60L, 72L, 68L, 51L, 56L, 20L, 65L, 
+    43L, 44L, 37L, 39L, 38L, 37L, 43L, 59L, 57L, 39L, 65L, 32L, 
+    44L, 54L, 38L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 65L, 20L, 51L, 44L, 43L, 
+        51L, 46L, 38L, 42L, 38L, 35L, 25L, 29L, 21L, 18L, 13L, 
+        12L, 20L, 25L, 35L, 24L, 42L, 32L, 39L, 14L, 40L, 17L, 
+        24L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(24L, 49L, 18L, 6L, 41L, 57L, 40L, 51L, 56L, 
+        55L, 5L, 43L, 30L, 6L, 6L, 19L, 0L, 1L, 0L, 0L, 6L, 6L, 
+        7L, 8L, 14L, 8L, 14L, 12L, 0L, 15L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 38L, 19L, 
+    45L, 88L, 13L, 39L, 50L, 45L, 45L, 20L, 40L, 27L, 38L, 13L, 
+    14L, 7L, 0L, 0L, 0L, 42L, 5L, 6L, 3L, 1L, 17L, 16L, 8L, 0L, 
+    15L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 64L, 28L, 23L, 9L, 22L, 6L, 0L, 12L, 3L, 
+        0L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 18L, 0L, 0L, 43L, 26L, 36L, 26L, 25L, 6L, 20L, 
+    9L, 20L, 22L, 29L, 17L, 24L, 43L, 16L, 4L, 27L, 0L, 6L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 13L, 29L, 
+    36L, 30L, 38L, 5L, 53L, 38L, 11L, 58L, 31L, 23L, 8L, 22L, 
+    32L, 7L, 11L, 8L, 29L, 13L, 13L, 1L, 11L, 22L, 44L, 24L, 
+    35L, 0L, 25L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 33L, 49L, 29L, 64L, 22L, 41L, 
+        44L, 43L, 11L, 4L, 42L, 32L, 27L, 35L, 29L, 33L, 5L, 
+        14L, 8L, 39L, 13L, 12L, 0L, 13L, 9L, 3L, 47L, 0L, 10L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 46L, 0L, 0L, 0L, 51L, 46L, 12L, 
+        31L, 30L, 20L, 24L, 10L, 22L, 11L, 0L, 4L, 2L, 7L, 3L, 
+        6L, 0L, 13L, 10L, 8L, 2L, 0L, 44L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(19L, 34L, 
+    15L, 62L, 61L, 38L, 50L, 48L, 36L, 33L, 28L, 43L, 41L, 25L, 
+    25L, 21L, 14L, 17L, 25L, 31L, 27L, 6L, 17L, 7L, 38L, 26L, 
+    22L, 39L, 0L, 33L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(39L, 34L, 11L, 17L, 22L, 2L, 0L, 
+        66L, 70L, 42L, 16L, 48L, 30L, 15L, 2L, 50L, 19L, 9L, 
+        36L, 48L, 9L, 0L, 0L, 0L, 74L, 22L, 20L, 32L, 0L, 9L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(15L, 40L, 
+    27L, 23L, 18L, 8L, 35L, 22L, 6L, 2L, 26L, 24L, 12L, 3L, 2L, 
+    3L, 0L, 0L, 0L, 0L, 4L, 0L, 1L, 2L, 63L, 36L, 30L, 22L, 0L, 
+    19L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 5L, 17L, 39L, 36L, 10L, 
+        0L, 31L, 38L, 23L, 15L, 1L, 47L, 7L, 9L, 6L, 3L, 23L, 
+        12L, 1L, 6L, 5L, 8L, 29L, 0L, 8L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 42L, 49L, 6L, 0L, 41L, 35L, 12L, 35L, 16L, 
+    24L, 12L, 15L, 19L, 32L, 33L, 6L, 13L, 42L, 17L, 4L, 39L, 
+    0L, 12L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 69L, 33L, 24L, 47L, 36L, 50L, 35L, 
+        40L, 40L, 33L, 30L, 20L, 34L, 9L, 4L, 4L, 7L, 44L, 18L, 
+        20L, 23L, 32L, 41L, 36L, 58L, 0L, 23L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 40L, 29L, 19L, 17L, 46L, 29L, 31L, 25L, 13L, 
+    17L, 5L, 0L, 0L, 37L, 7L, 4L, 1L, 12L, 39L, 38L, 28L, 0L, 
+    45L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 7L, 0L, 0L, 27L, 0L, 0L, 0L, 0L, 1L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 13L, 23L, 28L, 12L, 
+        30L, 24L, 21L, 16L, 0L, 66L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 55L, 
+    32L, 19L, 21L, 35L, 42L, 25L, 45L, 47L, 26L, 31L, 37L, 23L, 
+    7L, 17L, 7L, 23L, 17L, 21L, 37L, 10L, 46L, 13L, 15L, 40L, 
+    0L, 34L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 57L, 42L, 62L, 29L, 49L, 42L, 29L, 30L, 
+        45L, 5L, 34L, 11L, 36L, 10L, 38L, 10L, 6L, 9L, 34L, 12L, 
+        24L, 26L, 37L, 26L, 29L, 32L, 34L, 28L, 31L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 12L, 15L, 0L, 0L, 0L, 14L, 23L, 
+    10L, 15L, 16L, 4L, 9L, 27L, 23L, 14L, 10L, 19L, 12L, 8L, 
+    14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 31L, 41L, 10L, 35L, 32L, 30L, 40L, 9L, 31L, 
+        22L, 27L, 18L, 15L, 6L, 26L, 15L, 9L, 16L, 23L, 13L, 
+        17L, 16L, 22L, 7L, 9L, 14L, 11L, 2L, 4L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 80L, 
+    0L, 20L, 64L, 41L, 81L, 25L, 8L, 18L, 15L, 33L, 32L, 26L, 
+    33L, 8L, 3L, 10L, 28L, 9L, 18L, 13L, 15L, 13L, 5L, 1L, 7L, 
+    5L, 6L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 16L, 75L, 29L, 49L, 57L, 15L, 7L, 
+        49L, 67L, 40L, 30L, 53L, 43L, 23L, 15L, 8L, 45L, 21L, 
+        36L, 33L, 48L, 20L, 34L, 31L, 36L, 19L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 67L, 17L, 
+    49L, 53L, 67L, 51L, 59L, 42L, 40L, 46L, 54L, 22L, 38L, 22L, 
+    49L, 15L, 42L, 18L, 38L, 16L, 33L, 3L, 35L, 21L, 5L, 25L, 
+    37L, 15L, 27L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 72L, 18L, 54L, 49L, 35L, 
+        69L, 47L, 33L, 2L, 68L, 31L, 7L, 43L, 39L, 28L, 31L, 
+        28L, 32L, 10L, 21L, 6L, 20L, 16L, 6L, 13L, 14L, 11L, 
+        8L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 15L, 38L, 43L, 85L, 38L, 89L, 80L, 48L, 
+        39L, 56L, 26L, 30L, 27L, 26L, 24L, 19L, 21L, 30L, 24L, 
+        21L, 33L, 25L, 26L, 13L, 26L, 23L, 26L, 18L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 1L, 
+    21L, 11L, 9L, 12L, 54L, 21L, 14L, 7L, 47L, 11L, 15L, 3L, 
+    31L, 12L, 0L, 17L, 17L, 11L, 14L, 7L, 14L, 13L, 31L, 20L, 
+    28L, 19L, 10L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 4L, 22L, 63L, 11L, 11L, 42L, 
+        14L, 17L, 26L, 24L, 8L, 20L, 9L, 32L, 20L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    59L, 28L, 25L, 42L, 17L, 19L, 4L, 9L, 64L, 38L, 44L, 44L, 
+    33L, 35L, 11L, 7L, 23L, 15L, 17L, 8L, 20L, 9L, 9L, 16L, 18L, 
+    10L, 13L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 65L, 43L, 35L, 13L, 16L, 37L, 2L, 
+        1L, 47L, 31L, 30L, 21L, 28L, 22L, 13L, 2L, 31L, 6L, 33L, 
+        1L, 29L, 23L, 39L, 2L, 51L, 22L, 37L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(30L, 21L, 
+    45L, 48L, 43L, 51L, 33L, 42L, 30L, 29L, 15L, 51L, 12L, 24L, 
+    13L, 18L, 17L, 23L, 5L, 25L, 8L, 21L, 22L, 29L, 18L, 15L, 
+    26L, 17L, 4L, 13L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
+        0L, 0L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 18L, 0L, 20L, 0L, 
+        21L, 0L, 22L, 0L, 6L, 9L, 18L, 14L, 15L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(30L, 37L, 
+    31L, 21L, 42L, 33L, 42L, 51L, 52L, 41L, 19L, 41L, 15L, 35L, 
+    30L, 48L, 9L, 35L, 5L, 40L, 13L, 18L, 27L, 42L, 24L, 21L, 
+    22L, 21L, 25L, 16L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 21L, 0L, 0L, 0L, 51L, 0L, 17L, 0L, 18L, 33L, 
+        21L, 22L, 21L, 19L, 17L, 21L, 21L, 6L, 14L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 43L, 22L, 13L, 10L, 35L, 28L, 4L, 40L, 
+    28L, 22L, 1L, 10L, 9L, 16L, 22L, 26L, 22L, 14L, 31L, 23L, 
+    36L, 28L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 4L, 20L, 0L, 12L, 0L, 14L, 65L, 
+        40L, 1L, 6L, 0L, 0L, 7L, 8L, 52L, 7L, 2L, 2L, 66L, 57L, 
+        54L, 33L, 49L, 25L, 37L, 40L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(46L, 17L, 
+    64L, 105L, 56L, 76L, 21L, 124L, 28L, 71L, 56L, 0L, 10L, 0L, 
+    0L, 2L, 8L, 2L, 11L, 0L, 1L, 51L, 43L, 4L, 24L, 45L, 12L, 
+    41L, 30L, 45L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(6L, 11L, 36L, 55L, 27L, 26L, 1L, 
+        69L, 31L, 4L, 1L, 5L, 0L, 0L, 0L, 0L, 0L, 2L, 30L, 0L, 
+        0L, 18L, 20L, 17L, 24L, 7L, 37L, 8L, 0L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(5L, 61L, 101L, 
+    67L, 54L, 87L, 6L, 112L, 59L, 39L, 25L, 0L, 6L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 16L, 37L, 10L, 28L, 4L, 32L, 39L, 33L, 
+    10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 53L, 15L, 92L, 30L, 42L, 73L, 97L, 46L, 
+        65L, 28L, 0L, 0L, 0L, 0L, 5L, 0L, 28L, 0L, 6L, 0L, 36L, 
+        49L, 17L, 33L, 25L, 35L, 19L, 33L, 39L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    8L, 40L, 54L, 63L, 48L, 28L, 23L, 9L, 0L, 0L, 0L, 0L, 0L, 
+    12L, 3L, 0L, 0L, 0L, 32L, 39L, 16L, 58L, 16L, 61L, 56L, 65L, 
+    27L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 49L, 56L, 55L, 49L, 31L, 
+        16L, 0L, 1L, 6L, 3L, 5L, 3L, 4L, 1L, 0L, 8L, 21L, 33L, 
+        18L, 21L, 30L, 23L, 28L, 24L, 32L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 23L, 0L, 0L, 46L, 0L, 
+    0L, 15L, 0L, 0L, 0L, 45L, 3L, 42L, 44L, 34L, 56L, 47L, 56L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 2L, 2L, 0L, 0L, 0L, 30L, 29L, 32L, 4L, 
+        0L, 23L, 0L, 0L, 12L, 42L, 8L, 0L, 0L, 0L, 45L, 39L, 
+        3L, 13L, 52L, 32L, 40L, 40L, 22L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 6L, 
+    0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 40L, 5L, 26L, 23L, 0L, 1L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 63L, 62L, 
+    58L, 65L, 88L, 76L, 85L, 67L, 79L, 74L, 3L, 0L, 0L, 10L, 
+    5L, 35L, 5L, 3L, 0L, 5L, 36L, 45L, 27L, 33L, 41L, 6L, 43L, 
+    30L, 11L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(30L, 57L, 54L, 83L, 49L, 68L, 57L, 71L, 37L, 
+        70L, 55L, 0L, 0L, 0L, 35L, 18L, 0L, 7L, 5L, 0L, 4L, 45L, 
+        33L, 39L, 36L, 46L, 34L, 15L, 16L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 2L, 
+    44L, 19L, 48L, 46L, 59L, 48L, 13L, 0L, 12L, 17L, 0L, 14L, 
+    6L, 21L, 17L, 0L, 0L, 2L, 22L, 19L, 20L, 10L, 23L, 8L, 16L, 
+    29L, 19L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(38L, 37L, 49L, 100L, 39L, 125L, 65L, 42L, 63L, 
+        54L, 97L, 32L, 93L, 29L, 92L, 40L, 88L, 27L, 45L, 92L, 
+        26L, 44L, 27L, 37L, 77L, 78L, 42L, 77L, 65L, 81L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(69L, 60L, 
+    41L, 102L, 37L, 112L, 66L, 32L, 55L, 54L, 77L, 24L, 71L, 
+    30L, 66L, 23L, 49L, 19L, 20L, 53L, 11L, 22L, 12L, 13L, 36L, 
+    61L, 48L, 77L, 62L, 51L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(35L, 61L, 36L, 102L, 36L, 112L, 
+        74L, 46L, 72L, 68L, 82L, 38L, 104L, 32L, 103L, 40L, 92L, 
+        33L, 44L, 58L, 20L, 88L, 28L, 41L, 53L, 22L, 2L, 0L, 
+        0L, 4L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 107L, 28L, 98L, 64L, 
+        44L, 68L, 58L, 81L, 47L, 97L, 51L, 80L, 60L, 107L, 55L, 
+        63L, 87L, 33L, 78L, 29L, 41L, 63L, 32L, 43L, 27L, 22L, 
+        44L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(44L, 61L, 40L, 88L, 29L, 91L, 60L, 20L, 53L, 
+        40L, 95L, 74L, 88L, 36L, 36L, 60L, 111L, 45L, 53L, 66L, 
+        25L, 36L, 21L, 16L, 60L, 44L, 40L, 57L, 38L, 51L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 9L, 
+    9L, 40L, 76L, 68L, 46L, 71L, 49L, 79L, 40L, 93L, 18L, 102L, 
+    37L, 85L, 38L, 57L, 90L, 32L, 80L, 19L, 50L, 72L, 34L, 28L, 
+    56L, 32L, 52L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 34L, 37L, 69L, 71L, 
+        45L, 54L, 72L, 73L, 39L, 115L, 30L, 112L, 33L, 124L, 
+        62L, 74L, 122L, 40L, 110L, 39L, 73L, 79L, 79L, 42L, 67L, 
+        57L, 44L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 
+        72L, 28L, 58L, 80L, 69L, 56L, 51L, 62L, 42L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(9L, 42L, 47L, 
+    92L, 30L, 112L, 42L, 44L, 61L, 60L, 68L, 31L, 76L, 15L, 69L, 
+    0L, 63L, 22L, 26L, 44L, 28L, 36L, 22L, 14L, 62L, 63L, 22L, 
+    64L, 49L, 62L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 104L, 38L, 50L, 62L, 47L, 30L, 48L, 30L, 
+        36L, 46L, 42L, 31L, 38L, 33L, 40L, 44L, 61L, 65L, 64L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 31L, 69L, 55L, 67L, 
+        68L, 47L, 56L, 66L, 54L, 53L, 48L, 57L, 35L, 31L, 38L, 
+        53L, 41L, 46L, 48L, 37L, 70L, 53L, 53L, 55L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 6L, 
+    0L, 70L, 66L, 41L, 65L, 49L, 53L, 62L, 56L, 43L, 49L, 50L, 
+    38L, 44L, 29L, 34L, 37L, 49L, 24L, 38L, 32L, 26L, 32L, 28L, 
+    65L, 42L, 54L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(45L, 62L, 61L, 63L, 74L, 74L, 75L, 
+        90L, 63L, 83L, 49L, 44L, 59L, 59L, 45L, 31L, 30L, 28L, 
+        32L, 22L, 23L, 28L, 25L, 27L, 29L, 48L, 16L, 52L, 33L, 
+        44L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(29L, 47L, 63L, 47L, 60L, 47L, 58L, 52L, 48L, 
+        49L, 46L, 50L, 34L, 22L, 20L, 24L, 13L, 0L, 18L, 7L, 
+        14L, 10L, 3L, 0L, 7L, 7L, 24L, 22L, 35L, 31L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 7L, 6L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 68L, 37L, 60L, 61L, 55L, 53L, 34L, 46L, 28L, 
+    43L, 28L, 34L, 18L, 0L, 32L, 12L, 21L, 22L, 18L, 7L, 30L, 
+    51L, 30L, 35L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 9L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 72L, 26L, 
+    53L, 77L, 60L, 51L, 54L, 39L, 55L, 47L, 39L, 41L, 39L, 40L, 
+    20L, 25L, 34L, 27L, 21L, 23L, 25L, 0L, 48L, 47L, 33L, 48L, 
+    61L, 53L, 62L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 29L, 0L, 19L, 0L, 0L, 0L, 61L, 
+        30L, 51L, 44L, 57L, 54L, 58L, 37L, 34L, 45L, 27L, 38L, 
+        24L, 47L, 37L, 23L, 23L, 40L, 37L, 40L, 38L, 43L, 22L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 27L, 34L, 47L, 
+        0L, 0L, 0L, 0L, 70L, 5L, 23L, 30L, 31L, 34L, 0L, 12L, 
+        6L, 13L, 7L, 13L, 4L, 0L, 0L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 
+    2L, 0L, 0L, 27L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 25L, 20L, 41L, 61L, 48L, 67L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 107L, 
+    49L, 48L, 52L, 52L, 51L, 71L, 58L, 56L, 52L, 63L, 52L, 58L, 
+    42L, 34L, 35L, 35L, 24L, 37L, 33L, 23L, 26L, 10L, 13L, 62L, 
+    46L, 52L, 44L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 14L, 0L, 0L, 43L, 37L, 
+        44L, 45L, 43L, 47L, 54L, 42L, 44L, 33L, 37L, 40L, 35L, 
+        31L, 36L, 22L, 36L, 21L, 30L, 18L, 31L, 48L, 46L, 59L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 5L, 60L, 45L, 38L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 11L, 0L, 0L, 
+    30L, 53L, 54L, 45L, 54L, 61L, 40L, 47L, 31L, 39L, 29L, 39L, 
+    31L, 38L, 28L, 34L, 28L, 22L, 28L, 22L, 33L, 33L, 41L, 59L, 
+    61L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(42L, 50L, 55L, 37L, 61L, 53L, 54L, 68L, 52L, 
+        50L, 41L, 47L, 37L, 27L, 36L, 29L, 22L, 14L, 32L, 28L, 
+        23L, 25L, 18L, 22L, 7L, 32L, 33L, 50L, 49L, 54L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 75L, 28L, 
+    52L, 52L, 55L, 50L, 43L, 42L, 40L, 30L, 30L, 26L, 17L, 28L, 
+    21L, 16L, 23L, 17L, 23L, 25L, 17L, 16L, 27L, 12L, 32L, 43L, 
+    41L, 39L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 68L, 
+        18L, 31L, 38L, 32L, 44L, 44L, 43L, 33L, 24L, 25L, 27L, 
+        20L, 20L, 21L, 21L, 13L, 12L, 15L, 18L, 20L, 24L, 19L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 34L, 66L, 47L, 63L, 61L, 75L, 62L, 61L, 
+        61L, 34L, 46L, 30L, 31L, 38L, 23L, 20L, 20L, 20L, 11L, 
+        19L, 13L, 10L, 0L, 3L, 18L, 40L, 39L, 47L, 64L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 79L, 83L, 38L, 39L, 70L, 58L, 37L, 47L, 44L, 54L, 
+    14L, 44L, 29L, 45L, 21L, 40L, 30L, 34L, 26L, 29L, 18L, 41L, 
+    52L, 53L, 66L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 104L, 50L, 55L, 65L, 61L, 
+        54L, 68L, 59L, 56L, 54L, 61L, 45L, 40L, 30L, 47L, 38L, 
+        36L, 34L, 45L, 35L, 23L, 38L, 28L, 50L, 42L, 48L, 41L, 
+        33L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 72L, 40L, 42L, 60L, 62L, 
+        56L, 54L, 31L, 48L, 47L, 42L, 31L, 34L, 36L, 38L, 43L, 
+        37L, 36L, 43L, 31L, 40L, 49L, 58L, 57L, 69L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 24L, 
+    0L, 79L, 38L, 43L, 68L, 51L, 50L, 44L, 39L, 46L, 30L, 51L, 
+    45L, 34L, 44L, 35L, 23L, 36L, 31L, 20L, 24L, 6L, 28L, 20L, 
+    50L, 45L, 60L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 30L, 65L, 57L, 
+        52L, 49L, 39L, 52L, 44L, 43L, 41L, 41L, 35L, 38L, 33L, 
+        36L, 39L, 33L, 31L, 32L, 19L, 17L, 32L, 23L, 21L, 7L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 30L, 51L, 
+    42L, 44L, 48L, 64L, 50L, 55L, 52L, 41L, 39L, 30L, 28L, 28L, 
+    28L, 19L, 32L, 23L, 10L, 27L, 22L, 17L, 26L, 15L, 17L, 33L, 
+    26L, 36L, 32L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 51L, 32L, 
+        31L, 54L, 38L, 35L, 41L, 34L, 30L, 32L, 17L, 30L, 20L, 
+        22L, 21L, 19L, 5L, 27L, 17L, 22L, 46L, 66L, 72L, 86L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 87L, 30L, 30L, 56L, 37L, 58L, 55L, 42L, 30L, 34L, 
+    18L, 34L, 32L, 25L, 23L, 25L, 13L, 11L, 5L, 5L, 15L, 10L, 
+    12L, 32L, 39L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 119L, 40L, 34L, 67L, 50L, 53L, 
+        54L, 63L, 79L, 53L, 53L, 45L, 60L, 62L, 44L, 53L, 42L, 
+        36L, 39L, 65L, 31L, 41L, 37L, 34L, 37L, 48L, 53L, 39L, 
+        38L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 11L, 50L, 35L, 44L, 
+        64L, 57L, 49L, 35L, 52L, 43L, 34L, 52L, 35L, 47L, 26L, 
+        38L, 33L, 29L, 39L, 29L, 27L, 39L, 40L, 52L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    61L, 36L, 40L, 56L, 63L, 71L, 46L, 62L, 49L, 47L, 50L, 51L, 
+    23L, 30L, 39L, 26L, 0L, 81L, 24L, 17L, 20L, 33L, 25L, 28L, 
+    34L, 30L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(17L, 62L, 59L, 33L, 51L, 33L, 56L, 
+        62L, 47L, 35L, 53L, 18L, 53L, 36L, 36L, 50L, 28L, 31L, 
+        20L, 37L, 30L, 36L, 28L, 23L, 35L, 21L, 2L, 45L, 50L, 
+        40L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(8L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 13L, 49L, 44L, 
+        42L, 47L, 29L, 44L, 30L, 27L, 25L, 21L, 24L, 26L, 15L, 
+        13L, 20L, 11L, 18L, 13L, 22L, 33L, 59L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 44L, 39L, 
+    50L, 28L, 52L, 40L, 62L, 35L, 61L, 42L, 50L, 30L, 45L, 33L, 
+    30L, 48L, 32L, 45L, 20L, 37L, 40L, 22L, 28L, 27L, 30L, 8L, 
+    40L, 25L, 53L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 10L, 0L, 0L, 18L, 9L, 0L, 
+        0L, 0L, 13L, 0L, 0L, 7L, 11L, 0L, 0L, 9L, 0L, 0L, 0L, 
+        6L, 0L, 0L, 0L, 0L, 0L, 0L, 14L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 58L, 47L, 
+    70L, 50L, 51L, 42L, 30L, 44L, 30L, 47L, 30L, 47L, 24L, 34L, 
+    25L, 17L, 30L, 27L, 17L, 20L, 21L, 13L, 6L, 15L, 11L, 10L, 
+    0L, 0L, 6L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 3L, 4L, 2L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 11L, 0L, 0L, 14L, 0L, 0L, 58L, 7L, 35L, 43L, 44L, 
+    33L, 37L, 33L, 28L, 11L, 39L, 10L, 26L, 20L, 21L, 23L, 15L, 
+    17L, 14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(6L, 71L, 77L, 52L, 83L, 52L, 61L, 75L, 40L, 
+        43L, 55L, 38L, 45L, 28L, 39L, 30L, 27L, 0L, 56L, 13L, 
+        13L, 31L, 21L, 17L, 19L, 21L, 19L, 18L, 45L, 47L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 28L, 55L, 
+    72L, 49L, 65L, 68L, 61L, 45L, 39L, 58L, 41L, 37L, 39L, 35L, 
+    37L, 33L, 36L, 37L, 35L, 35L, 40L, 37L, 41L, 46L, 41L, 45L, 
+    47L, 54L, 42L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 13L, 34L, 38L, 42L, 40L, 39L, 29L, 26L, 17L, 
+        27L, 27L, 20L, 0L, 33L, 10L, 10L, 15L, 17L, 24L, 38L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 32L, 57L, 31L, 52L, 87L, 46L, 42L, 48L, 61L, 
+    18L, 45L, 46L, 45L, 42L, 29L, 34L, 34L, 42L, 32L, 24L, 13L, 
+    44L, 52L, 56L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 34L, 37L, 31L, 40L, 23L, 40L, 29L, 32L, 
+        41L, 16L, 30L, 26L, 30L, 30L, 26L, 37L, 45L, 54L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 12L, 49L, 41L, 41L, 14L, 
+    46L, 51L, 49L, 45L, 44L, 30L, 38L, 43L, 45L, 47L, 45L, 45L, 
+    14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 24L, 58L, 
+        38L, 38L, 38L, 50L, 36L, 45L, 35L, 30L, 34L, 34L, 26L, 
+        0L, 79L, 37L, 43L, 46L, 49L, 68L, 67L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 63L, 
+    59L, 55L, 60L, 64L, 78L, 49L, 81L, 49L, 47L, 48L, 20L, 27L, 
+    35L, 29L, 19L, 22L, 26L, 29L, 18L, 16L, 13L, 15L, 17L, 8L, 
+    25L, 27L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 47L, 26L, 59L, 65L, 
+        65L, 76L, 67L, 52L, 53L, 54L, 48L, 37L, 51L, 32L, 50L, 
+        34L, 31L, 36L, 23L, 37L, 33L, 38L, 40L, 17L, 58L, 53L, 
+        77L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 57L, 48L, 51L, 40L, 44L, 64L, 67L, 54L, 
+        64L, 60L, 33L, 39L, 44L, 21L, 47L, 31L, 35L, 30L, 33L, 
+        30L, 18L, 18L, 21L, 17L, 14L, 12L, 26L, 35L, 42L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 11L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 29L, 42L, 36L, 53L, 55L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 59L, 36L, 50L, 37L, 47L, 44L, 29L, 35L, 
+    37L, 27L, 19L, 34L, 28L, 15L, 24L, 12L, 10L, 9L, 34L, 39L, 
+    53L, 65L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 45L, 42L, 56L, 51L, 43L, 56L, 
+        55L, 62L, 43L, 37L, 36L, 27L, 39L, 21L, 36L, 30L, 21L, 
+        28L, 16L, 14L, 26L, 16L, 20L, 23L, 33L, 37L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    43L, 26L, 57L, 78L, 71L, 41L, 61L, 50L, 36L, 44L, 31L, 35L, 
+    42L, 27L, 20L, 23L, 28L, 16L, 31L, 10L, 8L, 27L, 13L, 15L, 
+    33L, 48L, 46L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 21L, 29L, 9L, 17L, 3L, 
+        9L, 8L, 3L, 0L, 0L, 29L, 23L, 26L, 19L, 0L, 0L, 0L, 3L, 
+        0L, 5L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 3L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 4L, 7L, 55L, 24L, 45L, 54L, 32L, 41L, 37L, 23L, 41L, 
+    36L, 33L, 18L, 30L, 25L, 27L, 16L, 33L, 22L, 23L, 27L, 19L, 
+    26L, 48L, 45L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 8L, 0L, 53L, 50L, 33L, 38L, 34L, 48L, 38L, 40L, 28L, 
+    27L, 16L, 25L, 29L, 19L, 23L, 32L, 25L, 15L, 26L, 22L, 19L, 
+    11L, 45L, 33L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 54L, 40L, 37L, 41L, 25L, 50L, 
+        44L, 52L, 46L, 38L, 25L, 36L, 30L, 29L, 20L, 18L, 16L, 
+        16L, 19L, 0L, 44L, 13L, 19L, 18L, 25L, 14L, 27L, 42L, 
+        34L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 8L, 0L, 
+        35L, 0L, 48L, 110L, 39L, 40L, 44L, 55L, 44L, 52L, 54L, 
+        40L, 47L, 54L, 61L, 46L, 48L, 51L, 56L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 12L, 55L, 56L, 43L, 44L, 48L, 34L, 36L, 35L, 
+    38L, 33L, 24L, 20L, 29L, 31L, 21L, 34L, 19L, 17L, 21L, 15L, 
+    15L, 26L, 33L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 17L, 0L, 0L, 
+        37L, 51L, 24L, 24L, 26L, 35L, 32L, 47L, 42L, 31L, 49L, 
+        36L, 47L, 34L, 31L, 48L, 45L, 30L, 47L, 32L, 47L, 42L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 10L, 0L, 0L, 
+        11L, 0L, 0L, 22L, 0L, 29L, 10L, 24L, 19L, 15L, 22L, 8L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 25L, 30L, 28L, 32L, 18L, 33L, 
+    32L, 11L, 23L, 19L, 17L, 26L, 17L, 32L, 21L, 33L, 22L, 29L, 
+    41L, 61L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 26L, 67L, 40L, 44L, 53L, 51L, 53L, 
+        51L, 40L, 51L, 14L, 41L, 46L, 39L, 46L, 41L, 30L, 41L, 
+        26L, 38L, 23L, 35L, 30L, 27L, 28L, 37L, 32L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 72L, 35L, 44L, 50L, 40L, 56L, 44L, 34L, 52L, 37L, 
+    24L, 46L, 23L, 28L, 22L, 25L, 24L, 13L, 18L, 12L, 7L, 39L, 
+    8L, 31L, 20L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 73L, 34L, 73L, 41L, 64L, 55L, 
+        49L, 56L, 55L, 49L, 48L, 49L, 39L, 41L, 42L, 35L, 40L, 
+        39L, 28L, 56L, 24L, 29L, 32L, 27L, 25L, 19L, 27L, 21L, 
+        28L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 30L, 0L, 3L, 90L, 41L, 65L, 73L, 57L, 64L, 
+        61L, 51L, 61L, 52L, 52L, 42L, 47L, 58L, 45L, 54L, 43L, 
+        44L, 38L, 45L, 33L, 37L, 36L, 35L, 29L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 24L, 66L, 
+    46L, 64L, 76L, 55L, 72L, 60L, 65L, 59L, 58L, 45L, 50L, 49L, 
+    40L, 40L, 46L, 29L, 41L, 39L, 44L, 30L, 12L, 81L, 23L, 43L, 
+    53L, 36L, 40L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 23L, 48L, 75L, 
+        58L, 51L, 55L, 32L, 40L, 40L, 48L, 42L, 39L, 25L, 45L, 
+        28L, 29L, 26L, 53L, 36L, 24L, 25L, 21L, 30L, 27L, 27L, 
+        31L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 12L, 24L, 76L, 43L, 48L, 56L, 67L, 79L, 
+        57L, 55L, 67L, 45L, 69L, 54L, 41L, 43L, 50L, 27L, 35L, 
+        42L, 30L, 44L, 31L, 32L, 18L, 30L, 35L, 31L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 7L, 7L, 24L, 30L, 51L, 51L, 36L, 
+    42L, 42L, 55L, 20L, 42L, 18L, 41L, 40L, 30L, 29L, 36L, 59L, 
+    36L, 50L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 46L, 58L, 17L, 58L, 35L, 43L, 53L, 25L, 
+        36L, 53L, 17L, 38L, 22L, 42L, 11L, 16L, 13L, 17L, 0L, 
+        9L, 27L, 0L, 0L, 0L, 26L, 0L, 17L, 3L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(61L, 83L, 
+    100L, 99L, 80L, 81L, 94L, 76L, 65L, 71L, 68L, 43L, 33L, 56L, 
+    63L, 53L, 35L, 32L, 49L, 49L, 27L, 34L, 22L, 31L, 40L, 25L, 
+    30L, 18L, 25L, 12L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 13L, 79L, 30L, 52L, 33L, 32L, 56L, 
+        34L, 36L, 34L, 29L, 32L, 23L, 18L, 12L, 7L, 5L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 11L, 0L, 11L, 11L, 11L, 18L, 33L, 21L, 32L, 
+    30L, 30L, 20L, 32L, 21L, 21L, 24L, 7L, 41L, 14L, 20L, 20L, 
+    31L, 33L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(61L, 109L, 71L, 88L, 72L, 83L, 52L, 95L, 65L, 
+        68L, 51L, 57L, 72L, 56L, 74L, 58L, 60L, 57L, 47L, 67L, 
+        36L, 38L, 50L, 18L, 23L, 19L, 37L, 39L, 35L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(42L, 40L, 
+    81L, 61L, 65L, 65L, 68L, 51L, 53L, 76L, 57L, 50L, 54L, 52L, 
+    50L, 41L, 46L, 46L, 41L, 42L, 38L, 37L, 31L, 26L, 0L, 34L, 
+    23L, 32L, 24L, 27L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 22L, 0L, 61L, 41L, 80L, 42L, 
+        88L, 35L, 90L, 72L, 66L, 54L, 75L, 49L, 83L, 54L, 47L, 
+        57L, 38L, 42L, 68L, 47L, 57L, 26L, 42L, 21L, 56L, 52L, 
+        43L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 6L, 0L, 0L, 24L, 35L, 19L, 43L, 31L, 48L, 39L, 
+        33L, 47L, 25L, 36L, 43L, 37L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 79L, 72L, 
+    43L, 59L, 36L, 50L, 37L, 39L, 53L, 22L, 39L, 37L, 31L, 11L, 
+    28L, 38L, 27L, 22L, 19L, 24L, 25L, 46L, 30L, 20L, 33L, 35L, 
+    33L, 34L, 28L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 50L, 24L, 65L, 54L, 40L, 
+        44L, 54L, 65L, 64L, 60L, 38L, 55L, 58L, 44L, 48L, 52L, 
+        26L, 58L, 47L, 37L, 43L, 65L, 35L, 32L, 32L, 24L, 31L, 
+        14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 6L, 17L, 70L, 71L, 57L, 27L, 23L, 51L, 48L, 
+        41L, 60L, 47L, 67L, 61L, 14L, 37L, 37L, 43L, 18L, 30L, 
+        23L, 23L, 44L, 31L, 20L, 28L, 18L, 9L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 94L, 45L, 49L, 42L, 58L, 65L, 50L, 39L, 74L, 60L, 38L, 
+    12L, 35L, 65L, 29L, 51L, 39L, 43L, 47L, 48L, 51L, 59L, 44L, 
+    38L, 36L, 37L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(16L, 35L, 41L, 31L, 74L, 56L, 61L, 
+        59L, 59L, 35L, 55L, 50L, 51L, 63L, 50L, 27L, 43L, 44L, 
+        35L, 32L, 35L, 28L, 30L, 32L, 31L, 24L, 11L, 6L, 21L, 
+        20L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 33L, 29L, 64L, 62L, 72L, 67L, 62L, 78L, 
+        64L, 72L, 55L, 50L, 41L, 59L, 25L, 51L, 71L, 44L, 59L, 
+        41L, 39L, 42L, 39L, 24L, 53L, 36L, 28L, 45L, 37L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 55L, 44L, 45L, 47L, 45L, 59L, 59L, 57L, 56L, 
+    30L, 47L, 54L, 46L, 37L, 29L, 50L, 25L, 21L, 28L, 27L, 47L, 
+    36L, 11L, 28L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 35L, 14L, 69L, 62L, 59L, 
+        103L, 58L, 88L, 68L, 68L, 59L, 46L, 66L, 48L, 54L, 75L, 
+        54L, 49L, 42L, 33L, 51L, 56L, 38L, 50L, 40L, 33L, 41L, 
+        30L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 5L, 9L, 1L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 4L, 0L, 6L, 2L, 0L, 0L, 37L, 22L, 41L, 
+        41L, 47L, 54L, 45L, 47L, 28L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 68L, 50L, 
+    61L, 67L, 75L, 66L, 65L, 68L, 57L, 75L, 54L, 51L, 64L, 56L, 
+    67L, 69L, 60L, 54L, 52L, 58L, 38L, 48L, 56L, 55L, 53L, 37L, 
+    52L, 37L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 59L, 37L, 55L, 54L, 61L, 68L, 62L, 77L, 
+        63L, 56L, 48L, 53L, 54L, 41L, 50L, 68L, 32L, 48L, 47L, 
+        24L, 41L, 39L, 46L, 40L, 41L, 34L, 28L, 34L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    46L, 39L, 36L, 65L, 46L, 47L, 61L, 54L, 47L, 67L, 39L, 24L, 
+    58L, 42L, 58L, 41L, 60L, 49L, 39L, 55L, 59L, 50L, 39L, 45L, 
+    51L, 42L, 40L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 19L, 0L, 
+        15L, 49L, 25L, 38L, 25L, 35L, 29L, 41L, 34L, 16L, 7L, 
+        20L, 11L, 6L, 4L, 17L, 10L, 0L, 4L, 17L, 10L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 5L, 0L, 0L, 14L, 8L, 0L, 0L, 0L, 
+    0L, 24L, 0L, 29L, 40L, 38L, 37L, 44L, 47L, 43L, 49L, 37L, 
+    50L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 19L, 34L, 34L, 35L, 48L, 31L, 49L, 
+        57L, 43L, 42L, 49L, 35L, 38L, 28L, 27L, 24L, 37L, 27L, 
+        30L, 18L, 28L, 20L, 0L, 15L, 24L, 14L, 22L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 82L, 82L, 
+    67L, 89L, 90L, 88L, 83L, 71L, 79L, 86L, 46L, 62L, 74L, 67L, 
+    66L, 68L, 65L, 56L, 56L, 59L, 53L, 60L, 41L, 39L, 26L, 40L, 
+    29L, 15L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(46L, 0L, 0L, 0L, 44L, 24L, 52L, 
+        53L, 55L, 57L, 59L, 47L, 52L, 41L, 22L, 46L, 50L, 41L, 
+        44L, 49L, 44L, 44L, 40L, 22L, 50L, 35L, 25L, 18L, 19L, 
+        18L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 109L, 23L, 45L, 
+        60L, 82L, 60L, 60L, 56L, 66L, 39L, 43L, 63L, 50L, 50L, 
+        52L, 51L, 44L, 22L, 48L, 39L, 34L, 42L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(65L, 50L, 
+    55L, 75L, 66L, 76L, 78L, 76L, 66L, 64L, 57L, 61L, 52L, 46L, 
+    58L, 45L, 54L, 41L, 49L, 51L, 43L, 43L, 43L, 57L, 56L, 61L, 
+    44L, 45L, 54L, 42L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 20L, 
+        68L, 24L, 71L, 42L, 50L, 63L, 36L, 54L, 48L, 53L, 51L, 
+        49L, 54L, 47L, 42L, 57L, 38L, 39L, 42L, 32L, 25L, 11L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(34L, 52L, 48L, 43L, 60L, 49L, 51L, 50L, 49L, 
+        48L, 62L, 41L, 45L, 34L, 25L, 42L, 43L, 40L, 39L, 26L, 
+        36L, 27L, 44L, 32L, 20L, 17L, 32L, 35L, 32L, 33L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 30L, 36L, 
+    53L, 47L, 59L, 53L, 34L, 56L, 22L, 98L, 37L, 54L, 47L, 53L, 
+    48L, 41L, 43L, 33L, 51L, 41L, 57L, 37L, 48L, 29L, 0L, 26L, 
+    18L, 18L, 40L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(24L, 28L, 37L, 55L, 50L, 45L, 62L, 
+        52L, 60L, 53L, 66L, 41L, 49L, 44L, 26L, 34L, 39L, 34L, 
+        37L, 31L, 26L, 32L, 32L, 26L, 27L, 25L, 28L, 25L, 17L, 
+        20L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 8L, 43L, 36L, 43L, 63L, 51L, 47L, 38L, 37L, 
+        27L, 34L, 7L, 21L, 12L, 18L, 21L, 0L, 8L, 0L, 5L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 78L, 
+    28L, 42L, 47L, 66L, 61L, 56L, 35L, 94L, 47L, 68L, 41L, 52L, 
+    50L, 38L, 46L, 62L, 40L, 50L, 39L, 43L, 48L, 40L, 37L, 30L, 
+    43L, 37L, 24L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(36L, 53L, 66L, 70L, 56L, 71L, 77L, 
+        79L, 76L, 71L, 72L, 43L, 72L, 51L, 59L, 57L, 54L, 56L, 
+        54L, 63L, 58L, 58L, 52L, 39L, 52L, 35L, 38L, 29L, 28L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 55L, 54L, 51L, 64L, 64L, 49L, 
+        51L, 72L, 67L, 66L, 45L, 73L, 37L, 60L, 50L, 38L, 45L, 
+        63L, 58L, 48L, 29L, 72L, 31L, 45L, 41L, 35L, 8L, 0L, 
+        0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 93L, 43L, 58L, 82L, 72L, 80L, 81L, 
+        61L, 52L, 55L, 78L, 45L, 69L, 64L, 68L, 59L, 63L, 65L, 
+        62L, 53L, 56L, 52L, 0L, 85L, 9L, 7L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 
+    0L, 58L, 62L, 26L, 47L, 42L, 39L, 52L, 34L, 70L, 44L, 38L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(31L, 29L, 59L, 73L, 51L, 69L, 57L, 76L, 63L, 
+        74L, 66L, 61L, 36L, 54L, 53L, 34L, 41L, 49L, 45L, 37L, 
+        37L, 34L, 18L, 45L, 29L, 23L, 20L, 10L, 27L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(61L, 46L, 
+    77L, 81L, 47L, 92L, 66L, 63L, 87L, 62L, 67L, 68L, 56L, 72L, 
+    63L, 57L, 67L, 49L, 55L, 60L, 35L, 31L, 15L, 35L, 31L, 39L, 
+    19L, 15L, 5L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 74L, 56L, 100L, 70L, 84L, 63L, 
+        63L, 84L, 61L, 66L, 66L, 71L, 64L, 49L, 56L, 46L, 59L, 
+        45L, 33L, 40L, 36L, 22L, 51L, 17L, 21L, 5L, 11L, 3L, 
+        5L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 135L, 36L, 69L, 63L, 88L, 76L, 62L, 
+        35L, 53L, 59L, 61L, 59L, 4L, 31L, 54L, 48L, 49L, 43L, 
+        46L, 39L, 30L, 34L, 29L, 26L, 25L, 21L, 18L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(20L, 48L, 
+    49L, 79L, 51L, 69L, 57L, 64L, 73L, 66L, 73L, 66L, 52L, 48L, 
+    48L, 36L, 68L, 47L, 54L, 42L, 35L, 47L, 36L, 26L, 29L, 26L, 
+    17L, 19L, 22L, 13L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 107L, 37L, 45L, 50L, 43L, 42L, 39L, 25L, 33L, 17L, 
+        32L, 19L, 16L, 23L, 17L, 16L, 28L, 12L, 16L, 13L, 8L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(45L, 22L, 
+    68L, 71L, 70L, 70L, 70L, 62L, 71L, 70L, 11L, 72L, 62L, 69L, 
+    65L, 60L, 70L, 58L, 70L, 51L, 62L, 66L, 61L, 65L, 0L, 0L, 
+    0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 8L, 0L, 46L, 46L, 42L, 44L, 
+        51L, 60L, 55L, 23L, 42L, 48L, 45L, 43L, 54L, 46L, 52L, 
+        51L, 39L, 41L, 42L, 32L, 30L, 28L, 18L, 28L, 26L, 11L, 
+        4L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(39L, 62L, 59L, 72L, 68L, 67L, 45L, 66L, 49L, 
+        62L, 35L, 56L, 60L, 54L, 55L, 22L, 47L, 47L, 56L, 44L, 
+        46L, 37L, 50L, 24L, 41L, 5L, 32L, 10L, 10L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 53L, 36L, 
+    47L, 55L, 44L, 39L, 51L, 49L, 37L, 21L, 39L, 30L, 20L, 24L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(44L, 44L, 61L, 64L, 58L, 62L, 55L, 51L, 69L, 
+        59L, 46L, 52L, 35L, 66L, 34L, 39L, 50L, 42L, 44L, 33L, 
+        36L, 46L, 41L, 0L, 53L, 19L, 5L, 44L, 33L, 24L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 50L, 38L, 
+    46L, 71L, 67L, 35L, 59L, 45L, 57L, 35L, 47L, 64L, 54L, 68L, 
+    59L, 40L, 50L, 64L, 50L, 42L, 36L, 34L, 40L, 44L, 15L, 37L, 
+    7L, 29L, 12L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 19L, 64L, 32L, 
+        49L, 72L, 54L, 73L, 43L, 46L, 43L, 47L, 25L, 41L, 44L, 
+        35L, 40L, 45L, 40L, 39L, 0L, 41L, 14L, 35L, 18L, 5L, 
+        3L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(37L, 65L, 76L, 62L, 64L, 60L, 69L, 74L, 79L, 
+        54L, 40L, 63L, 54L, 52L, 53L, 29L, 40L, 65L, 48L, 51L, 
+        37L, 38L, 48L, 32L, 34L, 29L, 28L, 29L, 34L, 14L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 11L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(52L, 44L, 
+    96L, 83L, 101L, 87L, 63L, 85L, 67L, 71L, 65L, 55L, 61L, 57L, 
+    38L, 81L, 55L, 57L, 66L, 36L, 51L, 46L, 34L, 59L, 35L, 29L, 
+    52L, 32L, 27L, 11L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(28L, 63L, 84L, 82L, 92L, 80L, 63L, 
+        66L, 64L, 80L, 63L, 72L, 48L, 47L, 47L, 67L, 65L, 53L, 
+        32L, 51L, 52L, 31L, 52L, 29L, 0L, 52L, 29L, 24L, 24L, 
+        10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 93L, 32L, 87L, 79L, 81L, 86L, 77L, 80L, 
+        50L, 65L, 36L, 54L, 35L, 45L, 34L, 33L, 26L, 38L, 35L, 
+        30L, 30L, 21L, 38L, 31L, 33L, 14L, 30L, 17L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    4L, 0L, 0L, 0L, 0L, 0L, 13L, 49L, 10L, 4L, 6L, 9L, 18L, 9L, 
+    23L, 15L, 0L, 39L, 23L, 11L, 22L, 11L, 23L, 13L, 0L, 0L, 
+    27L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 97L, 47L, 63L, 71L, 70L, 64L, 74L, 44L, 
+        67L, 57L, 39L, 54L, 46L, 11L, 41L, 31L, 39L, 0L, 31L, 
+        13L, 27L, 15L, 17L, 17L, 21L, 9L, 13L, 13L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 95L, 55L, 
+    63L, 84L, 85L, 38L, 74L, 60L, 72L, 39L, 58L, 54L, 53L, 51L, 
+    47L, 48L, 43L, 50L, 40L, 51L, 39L, 43L, 36L, 42L, 21L, 11L, 
+    0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 59L, 80L, 63L, 43L, 
+        52L, 61L, 65L, 36L, 36L, 50L, 36L, 40L, 48L, 24L, 43L, 
+        32L, 38L, 12L, 14L, 28L, 21L, 29L, 28L, 21L, 20L, 35L, 
+        23L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(50L, 76L, 100L, 81L, 116L, 74L, 81L, 88L, 72L, 
+        82L, 73L, 73L, 69L, 79L, 63L, 72L, 49L, 43L, 57L, 39L, 
+        51L, 33L, 30L, 32L, 36L, 31L, 31L, 27L, 13L, 20L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 53L, 63L, 
+    24L, 48L, 64L, 44L, 16L, 46L, 32L, 25L, 35L, 32L, 27L, 21L, 
+    30L, 26L, 30L, 23L, 18L, 28L, 31L, 20L, 32L, 8L, 11L, 22L, 
+    13L, 16L, 17L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 34L, 85L, 34L, 49L, 60L, 60L, 
+        65L, 65L, 56L, 40L, 50L, 31L, 56L, 35L, 22L, 50L, 46L, 
+        47L, 28L, 29L, 17L, 14L, 28L, 5L, 39L, 22L, 32L, 24L, 
+        33L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(63L, 29L, 58L, 73L, 52L, 63L, 79L, 62L, 49L, 
+        43L, 58L, 43L, 38L, 38L, 49L, 26L, 53L, 39L, 32L, 40L, 
+        28L, 44L, 21L, 38L, 29L, 28L, 22L, 14L, 13L, 23L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 56L, 51L, 
+    62L, 62L, 52L, 54L, 46L, 15L, 69L, 49L, 56L, 29L, 38L, 60L, 
+    51L, 42L, 55L, 47L, 46L, 29L, 47L, 34L, 41L, 41L, 29L, 34L, 
+    32L, 15L, 25L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 23L, 85L, 43L, 
+        48L, 53L, 50L, 60L, 67L, 61L, 46L, 54L, 45L, 51L, 49L, 
+        36L, 45L, 46L, 35L, 34L, 46L, 35L, 31L, 24L, 35L, 23L, 
+        48L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(7L, 37L, 46L, 57L, 54L, 62L, 51L, 46L, 48L, 
+        57L, 45L, 38L, 53L, 14L, 44L, 51L, 36L, 33L, 56L, 33L, 
+        37L, 35L, 37L, 27L, 39L, 30L, 35L, 26L, 30L, 27L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    34L, 39L, 43L, 59L, 54L, 60L, 63L, 54L, 58L, 69L, 62L, 61L, 
+    54L, 51L, 49L, 59L, 53L, 43L, 56L, 43L, 56L, 36L, 41L, 42L, 
+    47L, 0L, 15L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 34L, 39L, 43L, 59L, 
+        54L, 60L, 63L, 54L, 58L, 60L, 51L, 51L, 53L, 54L, 54L, 
+        46L, 57L, 48L, 48L, 45L, 44L, 24L, 36L, 10L, 0L, 0L, 
+        0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 82L, 25L, 77L, 77L, 60L, 63L, 56L, 58L, 
+        55L, 52L, 52L, 38L, 45L, 63L, 58L, 43L, 30L, 40L, 45L, 
+        47L, 44L, 39L, 39L, 40L, 36L, 38L, 30L, 34L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 3L, 0L, 0L, 0L, 0L, 51L, 32L, 31L, 18L, 33L, 41L, 24L, 
+    44L, 30L, 39L, 33L, 29L, 28L, 29L, 18L, 30L, 17L, 30L, 11L, 
+    5L, 11L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 16L, 66L, 52L, 50L, 67L, 57L, 52L, 35L, 
+        59L, 61L, 57L, 54L, 50L, 56L, 52L, 56L, 51L, 48L, 54L, 
+        43L, 46L, 43L, 35L, 39L, 28L, 50L, 31L, 21L, 50L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 57L, 
+    35L, 53L, 64L, 61L, 51L, 25L, 52L, 50L, 48L, 42L, 41L, 41L, 
+    34L, 42L, 27L, 35L, 26L, 42L, 19L, 26L, 32L, 28L, 30L, 25L, 
+    27L, 30L, 26L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 32L, 36L, 20L, 69L, 
+        23L, 0L, 69L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 74L, 51L, 
+    71L, 69L, 91L, 88L, 80L, 66L, 77L, 67L, 70L, 34L, 59L, 72L, 
+    47L, 53L, 62L, 50L, 46L, 60L, 47L, 53L, 48L, 50L, 39L, 51L, 
+    31L, 46L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 32L, 17L, 42L, 
+        36L, 41L, 43L, 31L, 39L, 41L, 29L, 31L, 14L, 32L, 23L, 
+        22L, 26L, 24L, 28L, 18L, 25L, 19L, 12L, 13L, 11L, 0L, 
+        13L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 30L, 
+        15L, 16L, 31L, 47L, 26L, 35L, 22L, 10L, 57L, 23L, 27L, 
+        28L, 23L, 32L, 27L, 25L, 32L, 14L, 14L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 35L, 
+    36L, 46L, 27L, 65L, 57L, 52L, 51L, 51L, 53L, 71L, 45L, 49L, 
+    18L, 44L, 38L, 29L, 35L, 33L, 29L, 36L, 26L, 37L, 26L, 24L, 
+    16L, 30L, 7L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 13L, 65L, 22L, 31L, 46L, 37L, 43L, 31L, 44L, 
+        29L, 20L, 15L, 27L, 14L, 18L, 18L, 15L, 9L, 28L, 11L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 5L, 
+    0L, 6L, 13L, 0L, 0L, 38L, 27L, 46L, 44L, 53L, 56L, 58L, 52L, 
+    39L, 41L, 35L, 24L, 36L, 37L, 33L, 35L, 30L, 25L, 15L, 30L, 
+    30L, 33L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 53L, 72L, 85L, 77L, 62L, 75L, 76L, 73L, 
+        67L, 79L, 76L, 65L, 69L, 61L, 58L, 61L, 60L, 59L, 57L, 
+        59L, 44L, 53L, 58L, 50L, 51L, 49L, 38L, 43L, 49L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 53L, 58L, 36L, 52L, 38L, 53L, 64L, 51L, 41L, 50L, 45L, 
+    32L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(48L, 59L, 77L, 71L, 77L, 71L, 60L, 69L, 76L, 
+        62L, 61L, 46L, 55L, 48L, 60L, 43L, 37L, 39L, 29L, 43L, 
+        42L, 40L, 38L, 31L, 18L, 11L, 4L, 5L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 20L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    21L, 13L, 46L, 23L, 0L, 8L, 30L, 8L, 42L, 12L, 14L, 22L, 
+    21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 
+        0L, 85L, 20L, 46L, 62L, 69L, 55L, 47L, 51L, 42L, 43L, 
+        43L, 45L, 33L, 41L, 39L, 40L, 37L, 31L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 59L, 109L, 19L, 26L, 24L, 36L, 66L, 42L, 
+    41L, 62L, 47L, 48L, 45L, 25L, 50L, 34L, 36L, 27L, 23L, 30L, 
+    30L, 28L, 28L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 41L, 35L, 42L, 
+        50L, 39L, 8L, 0L, 0L, 60L, 46L, 22L, 35L, 51L, 43L, 29L, 
+        40L, 41L, 40L, 34L, 33L, 37L, 31L, 37L, 26L, 33L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    63L, 35L, 53L, 45L, 47L, 60L, 77L, 63L, 52L, 46L, 54L, 53L, 
+    52L, 52L, 16L, 36L, 39L, 5L, 19L, 47L, 8L, 22L, 34L, 45L, 
+    34L, 31L, 39L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 78L, 38L, 59L, 75L, 73L, 65L, 
+        17L, 74L, 48L, 44L, 52L, 35L, 52L, 51L, 52L, 41L, 47L, 
+        54L, 39L, 47L, 40L, 36L, 25L, 37L, 48L, 44L, 34L, 30L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 53L, 
+        32L, 49L, 46L, 52L, 36L, 51L, 39L, 38L, 45L, 42L, 40L, 
+        42L, 25L, 43L, 40L, 33L, 32L, 34L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(18L, 23L, 
+    84L, 56L, 75L, 63L, 68L, 50L, 74L, 56L, 36L, 59L, 50L, 53L, 
+    38L, 39L, 40L, 34L, 21L, 36L, 23L, 34L, 15L, 15L, 11L, 0L, 
+    0L, 0L, 7L, 3L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 55L, 50L, 65L, 58L, 
+        65L, 76L, 69L, 63L, 55L, 56L, 59L, 48L, 54L, 43L, 48L, 
+        43L, 44L, 41L, 48L, 30L, 38L, 38L, 34L, 24L, 26L, 28L, 
+        25L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 36L, 0L, 0L, 0L, 12L, 
+        14L, 44L, 29L, 24L, 48L, 54L, 57L, 51L, 64L, 43L, 42L, 
+        7L, 22L, 24L, 22L, 36L, 34L, 27L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 7L, 52L, 
+    43L, 51L, 45L, 49L, 53L, 41L, 43L, 59L, 56L, 33L, 45L, 39L, 
+    18L, 44L, 24L, 20L, 30L, 31L, 25L, 11L, 8L, 22L, 17L, 19L, 
+    18L, 18L, 30L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 33L, 48L, 52L, 71L, 62L, 66L, 
+        62L, 63L, 59L, 63L, 56L, 59L, 44L, 17L, 54L, 56L, 49L, 
+        42L, 46L, 40L, 39L, 23L, 16L, 23L, 11L, 25L, 10L, 0L, 
+        0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 48L, 35L, 59L, 63L, 63L, 78L, 69L, 
+        66L, 76L, 66L, 70L, 70L, 65L, 75L, 64L, 67L, 64L, 63L, 
+        56L, 55L, 75L, 61L, 57L, 55L, 46L, 57L, 53L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 16L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(32L, 48L, 
+    80L, 67L, 81L, 76L, 80L, 71L, 68L, 73L, 63L, 75L, 64L, 64L, 
+    60L, 67L, 77L, 53L, 52L, 48L, 53L, 43L, 30L, 39L, 44L, 43L, 
+    48L, 37L, 38L, 32L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 11L, 20L, 88L, 
+        37L, 46L, 39L, 50L, 41L, 56L, 36L, 34L, 43L, 22L, 42L, 
+        32L, 33L, 34L, 0L, 5L, 29L, 27L, 18L, 18L, 21L, 10L, 
+        17L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 16L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 75L, 16L, 39L, 41L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 97L, 69L, 99L, 
+    74L, 78L, 86L, 94L, 76L, 60L, 62L, 72L, 25L, 55L, 51L, 44L, 
+    47L, 50L, 49L, 34L, 32L, 53L, 40L, 51L, 30L, 23L, 27L, 36L, 
+    30L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 51L, 26L, 42L, 39L, 49L, 
+        53L, 38L, 48L, 50L, 44L, 53L, 55L, 38L, 47L, 37L, 43L, 
+        50L, 33L, 41L, 43L, 31L, 42L, 29L, 32L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    63L, 46L, 67L, 33L, 61L, 48L, 36L, 43L, 21L, 37L, 49L, 39L, 
+    36L, 36L, 47L, 39L, 31L, 30L, 27L, 32L, 23L, 38L, 30L, 35L, 
+    34L, 28L, 22L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        3L, 0L, 0L, 9L, 44L, 31L, 37L, 51L, 40L, 62L, 38L, 41L, 
+        34L, 35L, 35L, 25L, 36L, 21L, 37L, 28L, 32L, 29L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    7L, 0L, 0L, 34L, 44L, 73L, 34L, 38L, 19L, 46L, 64L, 44L, 
+    43L, 42L, 47L, 44L, 29L, 0L, 34L, 12L, 23L, 16L, 19L, 25L, 
+    12L, 20L, 8L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 51L, 30L, 39L, 67L, 64L, 
+        65L, 68L, 63L, 65L, 63L, 57L, 53L, 48L, 44L, 49L, 43L, 
+        48L, 44L, 38L, 25L, 28L, 29L, 36L, 26L, 31L, 13L, 12L, 
+        10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 46L, 40L, 101L, 64L, 78L, 78L, 68L, 72L, 
+        60L, 47L, 60L, 67L, 53L, 70L, 20L, 48L, 49L, 18L, 22L, 
+        40L, 24L, 26L, 20L, 11L, 32L, 5L, 28L, 11L, 24L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 21L, 46L, 
+    52L, 84L, 81L, 65L, 68L, 60L, 54L, 71L, 51L, 51L, 50L, 54L, 
+    46L, 45L, 43L, 48L, 40L, 28L, 35L, 41L, 44L, 30L, 34L, 34L, 
+    33L, 34L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 9L, 41L, 32L, 40L, 44L, 
+        34L, 53L, 43L, 61L, 25L, 38L, 5L, 31L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 33L, 28L, 18L, 29L, 37L, 17L, 37L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 12L, 
+    0L, 0L, 7L, 0L, 0L, 0L, 0L, 0L, 13L, 0L, 0L, 0L, 0L, 0L, 
+    21L, 24L, 42L, 35L, 31L, 38L, 28L, 25L, 18L, 24L, 19L, 9L, 
+    13L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 43L, 59L, 73L, 50L, 48L, 28L, 
+        43L, 56L, 40L, 68L, 30L, 49L, 43L, 50L, 40L, 43L, 55L, 
+        42L, 42L, 41L, 41L, 32L, 40L, 30L, 27L, 22L, 22L, 9L, 
+        10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 37L, 45L, 55L, 36L, 30L, 55L, 32L, 
+        48L, 20L, 39L, 44L, 16L, 39L, 32L, 22L, 18L, 8L, 15L, 
+        13L, 14L, 9L, 5L, 2L, 12L, 13L, 20L, 19L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 59L, 38L, 
+    63L, 61L, 46L, 50L, 47L, 51L, 47L, 11L, 24L, 39L, 32L, 26L, 
+    33L, 35L, 31L, 34L, 27L, 34L, 30L, 25L, 21L, 14L, 24L, 21L, 
+    9L, 17L, 14L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 8L, 53L, 52L, 
+        37L, 28L, 57L, 54L, 71L, 46L, 58L, 60L, 61L, 51L, 44L, 
+        40L, 32L, 28L, 31L, 23L, 23L, 14L, 33L, 18L, 25L, 18L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 60L, 28L, 71L, 39L, 60L, 62L, 55L, 44L, 
+        41L, 44L, 37L, 36L, 27L, 35L, 46L, 35L, 36L, 31L, 27L, 
+        33L, 22L, 19L, 17L, 24L, 8L, 22L, 26L, 24L, 13L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 38L, 
+    26L, 36L, 22L, 32L, 25L, 21L, 28L, 17L, 16L, 6L, 16L, 4L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 21L, 49L, 21L, 26L, 23L, 23L, 35L, 29L, 32L, 
+    22L, 29L, 28L, 28L, 20L, 5L, 20L, 9L, 14L, 7L, 9L, 5L, 4L, 
+    8L, 5L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(34L, 55L, 75L, 79L, 51L, 92L, 75L, 83L, 56L, 
+        65L, 41L, 60L, 47L, 50L, 36L, 43L, 64L, 51L, 38L, 35L, 
+        40L, 32L, 28L, 34L, 28L, 34L, 29L, 36L, 26L, 28L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 21L, 50L, 26L, 40L, 36L, 42L, 43L, 36L, 30L, 
+    24L, 25L, 32L, 29L, 28L, 19L, 34L, 17L, 21L, 16L, 16L, 20L, 
+    21L, 27L, 27L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 25L, 35L, 58L, 36L, 45L, 
+        54L, 53L, 39L, 53L, 45L, 45L, 47L, 35L, 43L, 35L, 45L, 
+        38L, 45L, 29L, 35L, 23L, 32L, 18L, 33L, 35L, 26L, 20L, 
+        26L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 23L, 2L, 97L, 31L, 
+        58L, 51L, 45L, 52L, 50L, 34L, 49L, 34L, 37L, 18L, 38L, 
+        14L, 22L, 25L, 16L, 30L, 19L, 26L, 16L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 28L, 0L, 
+    4L, 0L, 13L, 7L, 9L, 0L, 9L, 5L, 10L, 0L, 21L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    38L, 45L, 37L, 68L, 52L, 56L, 46L, 48L, 58L, 48L, 38L, 46L, 
+    50L, 40L, 37L, 36L, 28L, 14L, 34L, 26L, 32L, 14L, 15L, 27L, 
+    15L, 20L, 16L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 4L, 0L, 49L, 18L, 34L, 34L, 44L, 66L, 38L, 54L, 
+        38L, 49L, 48L, 24L, 27L, 34L, 27L, 30L, 29L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 25L, 22L, 
+    28L, 62L, 25L, 41L, 38L, 38L, 38L, 42L, 42L, 32L, 31L, 36L, 
+    31L, 20L, 39L, 31L, 32L, 25L, 27L, 19L, 23L, 22L, 22L, 23L, 
+    20L, 21L, 16L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 12L, 35L, 51L, 55L, 57L, 
+        60L, 40L, 43L, 51L, 44L, 50L, 46L, 34L, 54L, 38L, 60L, 
+        30L, 42L, 40L, 53L, 26L, 22L, 26L, 33L, 30L, 24L, 22L, 
+        11L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 12L, 0L, 9L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 3L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 3L, 42L, 
+    26L, 5L, 20L, 11L, 34L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 8L, 0L, 
+    0L, 20L, 58L, 47L, 46L, 36L, 42L, 23L, 41L, 16L, 25L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 30L, 
+    36L, 44L, 10L, 14L, 27L, 19L, 11L, 13L, 0L, 20L, 5L, 0L, 
+    0L, 5L, 26L, 0L, 0L, 0L, 25L, 51L, 49L, 45L, 40L, 47L, 34L, 
+    43L, 23L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 0L, 2L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 51L, 16L, 37L, 33L, 
+        57L, 32L, 67L, 0L, 0L, 0L, 5L, 0L, 0L, 6L, 45L, 0L, 0L, 
+        29L, 62L, 56L, 47L, 22L, 43L, 31L, 34L, 18L, 11L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 42L, 48L, 
+    45L, 47L, 24L, 34L, 33L, 4L, 5L, 13L, 18L, 37L, 0L, 0L, 0L, 
+    11L, 13L, 12L, 28L, 34L, 29L, 33L, 41L, 19L, 19L, 22L, 6L, 
+    21L, 14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 64L, 38L, 19L, 42L, 54L, 38L, 55L, 
+        9L, 27L, 17L, 9L, 12L, 0L, 26L, 25L, 36L, 44L, 54L, 44L, 
+        70L, 57L, 64L, 70L, 61L, 54L, 61L, 44L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(66L, 60L, 
+    67L, 58L, 78L, 39L, 76L, 52L, 8L, 32L, 0L, 0L, 29L, 0L, 25L, 
+    10L, 33L, 13L, 45L, 44L, 63L, 71L, 71L, 66L, 54L, 52L, 43L, 
+    37L, 25L, 24L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 2L, 27L, 
+        22L, 43L, 19L, 4L, 20L, 35L, 28L, 19L, 24L, 23L, 6L, 
+        53L, 25L, 36L, 27L, 32L, 38L, 41L, 21L, 48L, 28L, 31L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 71L, 63L, 97L, 56L, 43L, 79L, 60L, 61L, 43L, 
+        53L, 35L, 43L, 33L, 49L, 27L, 27L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(19L, 55L, 
+    43L, 37L, 57L, 37L, 49L, 16L, 0L, 39L, 0L, 0L, 0L, 0L, 18L, 
+    0L, 12L, 17L, 0L, 38L, 42L, 40L, 36L, 23L, 31L, 25L, 6L, 
+    0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 15L, 0L, 0L, 34L, 29L, 18L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(7L, 30L, 35L, 
+    29L, 37L, 23L, 30L, 20L, 15L, 26L, 2L, 0L, 2L, 3L, 14L, 10L, 
+    11L, 30L, 9L, 12L, 30L, 33L, 12L, 21L, 18L, 17L, 15L, 13L, 
+    18L, 6L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 2L, 61L, 56L, 51L, 45L, 10L, 30L, 43L, 
+        41L, 24L, 42L, 35L, 41L, 19L, 15L, 29L, 28L, 23L, 31L, 
+        38L, 30L, 28L, 48L, 37L, 48L, 43L, 39L, 40L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 4L, 
+    58L, 66L, 53L, 40L, 6L, 35L, 40L, 36L, 25L, 18L, 48L, 37L, 
+    39L, 20L, 31L, 17L, 41L, 57L, 24L, 38L, 33L, 22L, 37L, 37L, 
+    34L, 37L, 19L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(5L, 0L, 0L, 30L, 30L, 27L, 23L, 
+        15L, 16L, 25L, 22L, 21L, 16L, 18L, 15L, 11L, 4L, 0L, 
+        0L, 7L, 5L, 7L, 5L, 4L, 3L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 41L, 34L, 53L, 51L, 51L, 55L, 52L, 53L, 31L, 
+    35L, 46L, 49L, 43L, 42L, 38L, 16L, 35L, 59L, 41L, 45L, 46L, 
+    41L, 53L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 15L, 
+        41L, 19L, 29L, 22L, 30L, 15L, 33L, 25L, 32L, 27L, 26L, 
+        31L, 21L, 33L, 22L, 31L, 17L, 6L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 5L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 15L, 
+    24L, 48L, 49L, 38L, 44L, 50L, 39L, 44L, 29L, 36L, 28L, 35L, 
+    33L, 36L, 28L, 27L, 22L, 32L, 27L, 24L, 22L, 20L, 22L, 21L, 
+    27L, 22L, 11L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 27L, 16L, 31L, 28L, 21L, 
+        34L, 15L, 36L, 18L, 26L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 18L, 13L, 0L, 45L, 34L, 43L, 36L, 20L, 26L, 10L, 
+    11L, 20L, 6L, 4L, 19L, 33L, 40L, 38L, 48L, 48L, 41L, 46L, 
+    44L, 41L, 36L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 4L, 47L, 32L, 46L, 41L, 
+        0L, 60L, 25L, 31L, 46L, 48L, 23L, 13L, 35L, 8L, 21L, 
+        27L, 33L, 26L, 38L, 24L, 29L, 46L, 0L, 18L, 0L, 0L, 0L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 33L, 63L, 42L, 59L, 43L, 20L, 41L, 43L, 
+        58L, 51L, 53L, 55L, 52L, 45L, 23L, 25L, 12L, 43L, 37L, 
+        33L, 34L, 37L, 41L, 31L, 44L, 35L, 42L, 27L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 35L, 
+    35L, 60L, 63L, 53L, 76L, 55L, 44L, 34L, 34L, 14L, 14L, 9L, 
+    20L, 13L, 20L, 16L, 22L, 19L, 28L, 10L, 24L, 38L, 43L, 43L, 
+    51L, 53L, 52L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 11L, 0L, 6L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    16L, 54L, 32L, 35L, 32L, 36L, 36L, 22L, 20L, 28L, 13L, 18L, 
+    11L, 11L, 6L, 20L, 17L, 23L, 18L, 30L, 28L, 50L, 42L, 38L, 
+    41L, 15L, 38L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 64L, 27L, 73L, 48L, 76L, 67L, 
+        74L, 69L, 73L, 56L, 56L, 52L, 37L, 47L, 43L, 51L, 38L, 
+        46L, 17L, 27L, 24L, 22L, 22L, 35L, 55L, 38L, 44L, 71L, 
+        48L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(23L, 88L, 38L, 79L, 66L, 85L, 64L, 69L, 59L, 
+        69L, 57L, 56L, 44L, 36L, 40L, 34L, 28L, 28L, 24L, 22L, 
+        39L, 31L, 41L, 19L, 31L, 27L, 36L, 44L, 46L, 29L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 89L, 
+    47L, 55L, 68L, 61L, 44L, 48L, 34L, 35L, 31L, 22L, 18L, 14L, 
+    14L, 9L, 15L, 23L, 9L, 7L, 8L, 14L, 23L, 16L, 45L, 42L, 45L, 
+    42L, 48L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(31L, 52L, 67L, 79L, 60L, 54L, 78L, 30L, 30L, 
+        19L, 0L, 11L, 9L, 14L, 19L, 39L, 22L, 31L, 17L, 41L, 
+        35L, 29L, 22L, 7L, 0L, 0L, 0L, 10L, 5L, 8L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 18L, 47L, 
+    62L, 64L, 75L, 81L, 69L, 73L, 81L, 61L, 69L, 69L, 61L, 42L, 
+    53L, 48L, 48L, 33L, 24L, 19L, 24L, 31L, 21L, 33L, 51L, 37L, 
+    50L, 45L, 49L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(14L, 48L, 49L, 57L, 38L, 51L, 57L, 
+        56L, 57L, 51L, 44L, 33L, 37L, 27L, 26L, 18L, 21L, 11L, 
+        23L, 14L, 27L, 31L, 32L, 19L, 17L, 20L, 27L, 40L, 14L, 
+        43L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 81L, 18L, 48L, 53L, 47L, 70L, 
+        49L, 39L, 41L, 29L, 24L, 22L, 24L, 20L, 10L, 15L, 21L, 
+        22L, 29L, 28L, 29L, 33L, 29L, 32L, 38L, 29L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    66L, 26L, 37L, 22L, 31L, 12L, 9L, 20L, 20L, 20L, 13L, 18L, 
+    14L, 12L, 23L, 21L, 19L, 12L, 19L, 38L, 13L, 0L, 29L, 20L, 
+    35L, 27L, 26L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 28L, 28L, 40L, 45L, 51L, 46L, 
+        43L, 35L, 42L, 25L, 33L, 27L, 22L, 28L, 19L, 32L, 23L, 
+        33L, 14L, 4L, 0L, 56L, 15L, 28L, 25L, 37L, 47L, 24L, 
+        19L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 71L, 29L, 58L, 49L, 52L, 19L, 46L, 
+        48L, 33L, 32L, 34L, 26L, 34L, 27L, 32L, 26L, 28L, 26L, 
+        29L, 17L, 0L, 12L, 14L, 18L, 38L, 26L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    86L, 40L, 55L, 39L, 36L, 55L, 40L, 27L, 49L, 22L, 33L, 17L, 
+    18L, 20L, 31L, 18L, 17L, 14L, 18L, 24L, 27L, 19L, 24L, 32L, 
+    12L, 19L, 19L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 100L, 44L, 62L, 72L, 
+        50L, 40L, 40L, 31L, 40L, 24L, 30L, 32L, 13L, 15L, 20L, 
+        23L, 12L, 17L, 21L, 18L, 14L, 19L, 27L, 22L, 30L, 14L, 
+        13L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 18L, 40L, 27L, 33L, 33L, 
+        46L, 32L, 26L, 24L, 37L, 39L, 25L, 33L, 27L, 32L, 37L, 
+        22L, 19L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 8L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 10L, 6L, 0L, 2L, 
+    21L, 18L, 6L, 4L, 13L, 0L, 3L, 0L, 6L, 2L, 2L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 52L, 31L, 
+    50L, 25L, 65L, 37L, 71L, 36L, 41L, 35L, 39L, 38L, 37L, 42L, 
+    25L, 32L, 36L, 19L, 16L, 11L, 11L, 0L, 0L, 0L, 0L, 0L, 1L, 
+    17L, 23L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 10L, 40L, 39L, 57L, 17L, 39L, 
+        43L, 41L, 28L, 34L, 38L, 21L, 38L, 19L, 24L, 20L, 19L, 
+        28L, 12L, 12L, 0L, 2L, 3L, 9L, 16L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 14L, 
+    19L, 26L, 34L, 45L, 46L, 39L, 30L, 24L, 37L, 30L, 37L, 16L, 
+    29L, 30L, 20L, 22L, 18L, 6L, 19L, 11L, 0L, 3L, 4L, 12L, 21L, 
+    6L, 8L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 3L, 10L, 42L, 32L, 35L, 31L, 29L, 25L, 29L, 
+        26L, 28L, 23L, 32L, 34L, 22L, 32L, 24L, 15L, 18L, 13L, 
+        10L, 30L, 11L, 9L, 15L, 19L, 13L, 7L, 29L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 46L, 32L, 26L, 30L, 38L, 47L, 29L, 6L, 
+    38L, 41L, 26L, 28L, 2L, 17L, 6L, 0L, 9L, 6L, 0L, 8L, 0L, 
+    10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 29L, 32L, 38L, 28L, 49L, 32L, 38L, 37L, 
+        44L, 35L, 36L, 35L, 33L, 31L, 26L, 31L, 12L, 13L, 21L, 
+        31L, 9L, 19L, 20L, 17L, 24L, 0L, 11L, 18L, 17L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(13L, 18L, 
+    30L, 35L, 45L, 29L, 36L, 41L, 19L, 40L, 25L, 10L, 23L, 19L, 
+    32L, 13L, 36L, 6L, 8L, 17L, 9L, 18L, 15L, 2L, 7L, 0L, 0L, 
+    4L, 2L, 25L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 17L, 41L, 26L, 
+        21L, 30L, 28L, 12L, 31L, 16L, 19L, 19L, 17L, 18L, 11L, 
+        17L, 10L, 11L, 17L, 18L, 17L, 10L, 9L, 10L, 12L, 16L, 
+        24L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(60L, 19L, 48L, 50L, 28L, 65L, 36L, 42L, 33L, 
+        37L, 23L, 26L, 26L, 28L, 22L, 12L, 23L, 19L, 24L, 21L, 
+        13L, 19L, 0L, 12L, 15L, 0L, 0L, 2L, 15L, 5L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 78L, 16L, 34L, 44L, 42L, 
+    43L, 28L, 23L, 21L, 14L, 12L, 17L, 4L, 12L, 4L, 3L, 3L, 0L, 
+    15L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        12L, 0L, 10L, 3L, 0L, 4L, 0L, 0L, 17L, 6L, 6L, 2L, 8L, 
+        5L, 5L, 0L, 8L, 6L, 10L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 13L, 51L, 22L, 46L, 
+    41L, 38L, 36L, 42L, 41L, 30L, 28L, 15L, 3L, 0L, 14L, 8L, 
+    6L, 21L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 33L, 18L, 
+    48L, 43L, 43L, 35L, 23L, 33L, 35L, 25L, 31L, 22L, 33L, 12L, 
+    24L, 12L, 13L, 13L, 0L, 11L, 9L, 5L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(34L, 33L, 27L, 32L, 40L, 47L, 30L, 43L, 50L, 
+        27L, 23L, 32L, 27L, 37L, 22L, 19L, 22L, 17L, 6L, 10L, 
+        11L, 0L, 12L, 3L, 0L, 0L, 0L, 4L, 3L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 87L, 45L, 27L, 47L, 9L, 27L, 19L, 10L, 0L, 
+    8L, 8L, 10L, 0L, 0L, 0L, 9L, 4L, 0L, 10L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 44L, 35L, 
+    48L, 41L, 42L, 44L, 40L, 46L, 42L, 40L, 37L, 35L, 25L, 20L, 
+    12L, 24L, 29L, 33L, 20L, 29L, 16L, 18L, 3L, 0L, 33L, 4L, 
+    29L, 15L, 18L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 23L, 0L, 
+        0L, 21L, 45L, 35L, 40L, 38L, 32L, 35L, 27L, 24L, 35L, 
+        6L, 31L, 31L, 30L, 37L, 35L, 28L, 28L, 28L, 20L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 30L, 0L, 
+    11L, 45L, 66L, 53L, 58L, 55L, 39L, 29L, 42L, 51L, 45L, 45L, 
+    57L, 44L, 15L, 55L, 24L, 50L, 56L, 45L, 44L, 43L, 19L, 45L, 
+    53L, 25L, 26L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 49L, 53L, 37L, 
+        70L, 41L, 13L, 43L, 31L, 29L, 23L, 20L, 13L, 11L, 24L, 
+        8L, 16L, 14L, 13L, 9L, 7L, 4L, 4L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 19L, 22L, 
+    24L, 40L, 24L, 32L, 0L, 29L, 32L, 17L, 16L, 24L, 25L, 10L, 
+    11L, 39L, 32L, 13L, 26L, 23L, 40L, 26L, 20L, 23L, 23L, 32L, 
+    21L, 38L, 30L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 27L, 20L, 19L, 37L, 
+        0L, 28L, 23L, 29L, 20L, 16L, 38L, 20L, 27L, 17L, 19L, 
+        22L, 7L, 21L, 12L, 15L, 17L, 16L, 12L, 12L, 9L, 2L, 16L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 47L, 0L, 27L, 20L, 51L, 0L, 40L, 48L, 
+        40L, 36L, 38L, 40L, 13L, 29L, 40L, 27L, 30L, 28L, 21L, 
+        32L, 15L, 26L, 12L, 22L, 17L, 26L, 10L, 28L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(21L, 53L, 
+    28L, 51L, 70L, 49L, 38L, 0L, 9L, 46L, 31L, 36L, 28L, 38L, 
+    38L, 22L, 40L, 20L, 27L, 32L, 29L, 23L, 32L, 16L, 23L, 31L, 
+    25L, 20L, 20L, 14L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 24L, 67L, 30L, 72L, 
+        10L, 51L, 70L, 64L, 51L, 57L, 58L, 57L, 66L, 51L, 14L, 
+        45L, 45L, 58L, 45L, 51L, 29L, 55L, 27L, 46L, 16L, 27L, 
+        28L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 70L, 36L, 19L, 40L, 23L, 44L, 56L, 14L, 
+        56L, 18L, 46L, 32L, 46L, 8L, 34L, 35L, 28L, 19L, 37L, 
+        22L, 34L, 29L, 19L, 17L, 16L, 20L, 18L, 8L, 22L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 42L, 38L, 
+    34L, 36L, 30L, 40L, 13L, 36L, 33L, 38L, 31L, 26L, 28L, 4L, 
+    23L, 4L, 17L, 16L, 22L, 29L, 21L, 30L, 33L, 18L, 21L, 22L, 
+    15L, 3L, 16L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(7L, 34L, 20L, 29L, 37L, 49L, 51L, 
+        39L, 39L, 53L, 42L, 46L, 22L, 43L, 7L, 27L, 39L, 41L, 
+        19L, 30L, 24L, 34L, 27L, 19L, 24L, 25L, 23L, 15L, 26L, 
+        16L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 3L, 0L, 0L, 41L, 25L, 38L, 20L, 26L, 
+        6L, 23L, 22L, 19L, 4L, 17L, 17L, 14L, 15L, 20L, 15L, 
+        3L, 23L, 11L, 16L, 10L, 22L, 15L, 11L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 30L, 29L, 
+    24L, 5L, 37L, 37L, 25L, 24L, 40L, 34L, 30L, 29L, 41L, 22L, 
+    23L, 28L, 19L, 25L, 28L, 27L, 29L, 36L, 16L, 26L, 29L, 36L, 
+    34L, 50L, 58L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 16L, 34L, 31L, 17L, 47L, 48L, 
+        59L, 33L, 57L, 43L, 46L, 37L, 34L, 14L, 3L, 27L, 31L, 
+        20L, 42L, 17L, 33L, 11L, 21L, 24L, 119L, 18L, 13L, 25L, 
+        18L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 26L, 33L, 21L, 14L, 29L, 53L, 19L, 15L, 
+        38L, 27L, 21L, 13L, 6L, 5L, 18L, 14L, 0L, 15L, 5L, 17L, 
+        0L, 11L, 12L, 11L, 5L, 2L, 4L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 16L, 30L, 
+    32L, 6L, 31L, 29L, 25L, 23L, 37L, 25L, 33L, 26L, 32L, 0L, 
+    0L, 16L, 18L, 32L, 39L, 23L, 30L, 33L, 11L, 26L, 31L, 22L, 
+    14L, 11L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 18L, 20L, 22L, 26L, 45L, 44L, 46L, 42L, 37L, 
+    42L, 26L, 35L, 33L, 23L, 32L, 22L, 34L, 27L, 31L, 20L, 22L, 
+    21L, 21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 4L, 36L, 10L, 64L, 52L, 69L, 54L, 68L, 
+        41L, 56L, 59L, 27L, 86L, 28L, 42L, 52L, 50L, 56L, 52L, 
+        63L, 44L, 37L, 49L, 42L, 35L, 39L, 36L, 34L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 8L, 70L, 23L, 55L, 45L, 51L, 62L, 40L, 27L, 43L, 
+    47L, 38L, 42L, 42L, 38L, 40L, 39L, 44L, 25L, 33L, 40L, 23L, 
+    31L, 35L, 38L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 14L, 0L, 31L, 6L, 49L, 49L, 
+        62L, 38L, 63L, 46L, 43L, 51L, 8L, 54L, 29L, 28L, 31L, 
+        32L, 20L, 43L, 18L, 42L, 23L, 22L, 32L, 22L, 22L, 26L, 
+        24L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 8L, 26L, 28L, 45L, 49L, 49L, 
+        56L, 59L, 48L, 40L, 52L, 56L, 50L, 36L, 46L, 48L, 50L, 
+        38L, 31L, 34L, 35L, 42L, 28L, 33L, 31L, 24L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(47L, 17L, 
+    31L, 10L, 0L, 55L, 56L, 56L, 63L, 46L, 47L, 47L, 25L, 10L, 
+    45L, 23L, 52L, 30L, 45L, 36L, 39L, 41L, 21L, 32L, 45L, 28L, 
+    35L, 25L, 46L, 10L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 18L, 
+        0L, 31L, 15L, 10L, 0L, 13L, 0L, 33L, 6L, 12L, 23L, 10L, 
+        40L, 20L, 24L, 30L, 22L, 27L, 6L, 19L, 12L, 14L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 21L, 12L, 
+    30L, 14L, 46L, 40L, 59L, 22L, 40L, 45L, 75L, 18L, 53L, 40L, 
+    51L, 38L, 48L, 31L, 39L, 40L, 41L, 26L, 49L, 36L, 26L, 33L, 
+    22L, 43L, 9L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 32L, 27L, 20L, 8L, 30L, 48L, 
+        62L, 30L, 37L, 38L, 33L, 47L, 8L, 34L, 23L, 29L, 24L, 
+        30L, 14L, 30L, 21L, 22L, 19L, 21L, 18L, 5L, 11L, 13L, 
+        17L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 24L, 29L, 41L, 31L, 
+        40L, 43L, 25L, 23L, 24L, 26L, 20L, 18L, 19L, 16L, 7L, 
+        18L, 0L, 12L, 15L, 11L, 8L, 9L, 13L, 9L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 24L, 76L, 40L, 30L, 47L, 29L, 
+    28L, 27L, 25L, 27L, 16L, 18L, 21L, 19L, 19L, 19L, 21L, 29L, 
+    35L, 28L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 4L, 27L, 23L, 32L, 35L, 21L, 22L, 15L, 14L, 
+        14L, 11L, 13L, 17L, 7L, 8L, 2L, 5L, 4L, 4L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(19L, 34L, 47L, 26L, 
+    31L, 59L, 59L, 64L, 45L, 44L, 46L, 68L, 44L, 35L, 63L, 43L, 
+    40L, 37L, 31L, 45L, 30L, 37L, 27L, 34L, 16L, 24L, 19L, 20L, 
+    18L, 21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 10L, 58L, 23L, 45L, 37L, 29L, 
+        51L, 21L, 45L, 28L, 27L, 43L, 39L, 29L, 33L, 30L, 19L, 
+        32L, 15L, 36L, 13L, 22L, 35L, 9L, 25L, 14L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 13L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 6L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 14L, 33L, 30L, 37L, 52L, 38L, 
+    39L, 48L, 46L, 35L, 48L, 46L, 41L, 35L, 32L, 26L, 31L, 25L, 
+    30L, 31L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 13L, 51L, 18L, 35L, 44L, 23L, 18L, 
+        28L, 25L, 9L, 33L, 14L, 24L, 9L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 38L, 9L, 36L, 28L, 11L, 14L, 9L, 29L, 7L, 28L, 7L, 
+    13L, 14L, 39L, 34L, 24L, 13L, 39L, 38L, 21L, 28L, 10L, 19L, 
+    5L, 23L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(15L, 39L, 65L, 67L, 59L, 67L, 71L, 67L, 69L, 
+        62L, 35L, 28L, 40L, 46L, 33L, 19L, 21L, 25L, 41L, 29L, 
+        40L, 27L, 20L, 32L, 29L, 30L, 16L, 20L, 11L, 17L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 25L, 55L, 38L, 49L, 60L, 16L, 28L, 55L, 19L, 37L, 
+    27L, 19L, 15L, 47L, 54L, 48L, 24L, 45L, 45L, 19L, 44L, 40L, 
+    39L, 13L, 25L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 40L, 39L, 30L, 52L, 85L, 71L, 
+        81L, 70L, 64L, 78L, 54L, 65L, 45L, 34L, 25L, 25L, 42L, 
+        46L, 39L, 45L, 22L, 37L, 43L, 25L, 44L, 25L, 32L, 16L, 
+        17L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 73L, 15L, 53L, 21L, 64L, 
+        13L, 55L, 46L, 53L, 50L, 47L, 43L, 51L, 48L, 37L, 34L, 
+        36L, 37L, 39L, 43L, 36L, 34L, 34L, 21L, 6L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 50L, 48L, 
+    50L, 66L, 62L, 70L, 70L, 65L, 66L, 47L, 32L, 48L, 54L, 45L, 
+    46L, 46L, 46L, 41L, 43L, 21L, 34L, 27L, 41L, 22L, 19L, 26L, 
+    12L, 3L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 39L, 69L, 40L, 58L, 48L, 
+        68L, 36L, 34L, 41L, 37L, 29L, 40L, 38L, 50L, 28L, 39L, 
+        28L, 58L, 12L, 43L, 31L, 39L, 35L, 27L, 11L, 24L, 32L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 72L, 44L, 26L, 64L, 50L, 62L, 58L, 
+        35L, 21L, 51L, 29L, 47L, 34L, 22L, 27L, 32L, 18L, 28L, 
+        22L, 26L, 20L, 14L, 8L, 11L, 7L, 3L, 7L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 26L, 47L, 
+    37L, 58L, 10L, 53L, 39L, 47L, 39L, 34L, 32L, 27L, 29L, 23L, 
+    16L, 12L, 20L, 23L, 24L, 14L, 21L, 13L, 18L, 3L, 7L, 9L, 
+    10L, 11L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(13L, 43L, 44L, 53L, 64L, 76L, 50L, 
+        73L, 75L, 55L, 53L, 51L, 66L, 50L, 60L, 39L, 68L, 59L, 
+        43L, 48L, 47L, 60L, 42L, 48L, 26L, 41L, 41L, 47L, 9L, 
+        32L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        7L, 0L, 0L, 0L, 44L, 54L, 35L, 39L, 37L, 39L, 30L, 33L, 
+        24L, 37L, 24L, 27L, 13L, 2L, 25L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 16L, 
+    74L, 26L, 48L, 49L, 53L, 47L, 45L, 43L, 47L, 15L, 29L, 32L, 
+    40L, 39L, 29L, 36L, 37L, 30L, 40L, 33L, 27L, 33L, 34L, 35L, 
+    30L, 24L, 7L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 8L, 0L, 0L, 0L, 
+        15L, 48L, 23L, 46L, 47L, 33L, 49L, 44L, 47L, 38L, 43L, 
+        32L, 41L, 37L, 35L, 29L, 34L, 35L, 32L, 33L, 35L, 33L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(6L, 61L, 63L, 68L, 64L, 86L, 20L, 74L, 79L, 
+        63L, 68L, 56L, 71L, 54L, 54L, 45L, 58L, 52L, 53L, 60L, 
+        44L, 56L, 55L, 48L, 48L, 39L, 34L, 5L, 10L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 27L, 18L, 
+    40L, 31L, 56L, 20L, 60L, 52L, 35L, 47L, 46L, 0L, 49L, 37L, 
+    40L, 49L, 31L, 55L, 46L, 42L, 31L, 43L, 52L, 43L, 50L, 46L, 
+    21L, 30L, 13L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 6L, 0L, 0L, 0L, 6L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 10L, 9L, 
+        29L, 26L, 54L, 31L, 46L, 31L, 43L, 37L, 35L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(7L, 58L, 77L, 
+    73L, 45L, 11L, 46L, 82L, 49L, 26L, 35L, 18L, 11L, 0L, 61L, 
+    5L, 3L, 2L, 5L, 54L, 56L, 60L, 13L, 49L, 54L, 69L, 37L, 17L, 
+    43L, 22L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 19L, 26L, 50L, 36L, 42L, 38L, 39L, 24L, 
+        13L, 31L, 30L, 30L, 2L, 39L, 35L, 15L, 22L, 21L, 32L, 
+        16L, 20L, 23L, 17L, 29L, 14L, 29L, 15L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 41L, 38L, 
+    35L, 55L, 44L, 59L, 4L, 53L, 21L, 44L, 47L, 37L, 35L, 31L, 
+    33L, 42L, 0L, 34L, 20L, 27L, 28L, 26L, 25L, 34L, 4L, 48L, 
+    51L, 24L, 20L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 6L, 0L, 0L, 0L, 18L, 58L, 20L, 59L, 19L, 
+        61L, 46L, 57L, 74L, 12L, 19L, 6L, 70L, 39L, 6L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 12L, 45L, 
+    53L, 39L, 60L, 45L, 54L, 60L, 13L, 54L, 21L, 46L, 31L, 34L, 
+    8L, 35L, 37L, 12L, 35L, 26L, 12L, 29L, 28L, 13L, 30L, 18L, 
+    13L, 10L, 18L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 91L, 18L, 53L, 
+        47L, 41L, 33L, 41L, 44L, 33L, 32L, 32L, 36L, 29L, 34L, 
+        27L, 19L, 25L, 10L, 26L, 19L, 14L, 10L, 21L, 18L, 17L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(2L, 0L, 0L, 76L, 15L, 48L, 25L, 37L, 12L, 42L, 
+        5L, 14L, 8L, 13L, 46L, 26L, 15L, 6L, 0L, 9L, 0L, 27L, 
+        3L, 19L, 19L, 11L, 11L, 6L, 0L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 28L, 
+    12L, 30L, 38L, 37L, 48L, 13L, 47L, 7L, 28L, 37L, 26L, 26L, 
+    25L, 24L, 32L, 17L, 11L, 0L, 0L, 19L, 21L, 6L, 0L, 18L, 8L, 
+    0L, 0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 49L, 48L, 43L, 60L, 58L, 40L, 59L, 
+        54L, 48L, 15L, 50L, 56L, 51L, 35L, 45L, 44L, 34L, 45L, 
+        46L, 42L, 44L, 30L, 19L, 35L, 17L, 20L, 21L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 75L, 
+    49L, 61L, 40L, 49L, 61L, 62L, 32L, 57L, 60L, 62L, 25L, 59L, 
+    48L, 63L, 51L, 37L, 31L, 24L, 35L, 23L, 20L, 50L, 21L, 47L, 
+    37L, 50L, 24L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 52L, 45L, 48L, 59L, 57L, 59L, 
+        63L, 56L, 47L, 49L, 26L, 41L, 19L, 37L, 32L, 33L, 32L, 
+        32L, 16L, 13L, 21L, 17L, 18L, 19L, 11L, 2L, 0L, 8L, 0L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 10L, 15L, 31L, 33L, 49L, 67L, 28L, 18L, 
+        14L, 29L, 18L, 15L, 9L, 33L, 18L, 11L, 18L, 28L, 21L, 
+        11L, 28L, 20L, 30L, 31L, 26L, 21L, 21L, 24L, 26L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 20L, 40L, 
+    36L, 44L, 51L, 35L, 39L, 29L, 43L, 30L, 42L, 5L, 0L, 24L, 
+    23L, 32L, 23L, 30L, 32L, 20L, 26L, 21L, 25L, 20L, 23L, 23L, 
+    16L, 16L, 9L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 79L, 51L, 53L, 
+        76L, 45L, 60L, 56L, 81L, 35L, 74L, 52L, 62L, 51L, 48L, 
+        53L, 23L, 42L, 41L, 33L, 40L, 31L, 37L, 35L, 30L, 36L
+        )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        59L, 15L, 45L, 42L, 26L, 61L, 35L, 43L, 46L, 35L, 28L, 
+        48L, 49L, 46L, 32L, 28L, 7L, 34L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(43L, 65L, 
+    82L, 82L, 92L, 86L, 102L, 92L, 67L, 51L, 66L, 56L, 36L, 67L, 
+    49L, 71L, 60L, 39L, 48L, 38L, 56L, 25L, 30L, 48L, 39L, 30L, 
+    27L, 38L, 20L, 27L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        27L, 0L, 0L, 0L, 0L, 0L, 140L, 54L, 48L, 40L, 63L, 75L, 
+        50L, 48L, 42L, 53L, 44L, 56L, 30L, 34L, 46L, 21L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    44L, 0L, 0L, 0L, 0L, 0L, 33L, 13L, 19L, 64L, 11L, 0L, 67L, 
+    38L, 14L, 30L, 38L, 32L, 20L, 32L, 23L, 28L, 16L, 21L, 24L, 
+    29L, 19L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 8L, 25L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 24L, 53L, 39L, 53L, 7L, 
+        38L, 9L, 26L, 14L, 18L, 28L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 15L, 0L, 15L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 19L, 23L, 37L, 16L, 36L, 31L, 34L, 42L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    37L, 46L, 81L, 51L, 31L, 54L, 63L, 36L, 63L, 50L, 52L, 88L, 
+    47L, 2L, 70L, 57L, 64L, 23L, 21L, 38L, 60L, 38L, 10L, 52L, 
+    33L, 68L, 35L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 17L, 97L, 50L, 61L, 
+        39L, 51L, 63L, 31L, 42L, 39L, 54L, 42L, 38L, 37L, 43L, 
+        46L, 45L, 39L, 39L, 50L, 49L, 42L, 27L, 31L, 46L, 35L, 
+        11L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 14L, 0L, 0L, 42L, 53L, 79L, 51L, 
+        70L, 39L, 70L, 65L, 60L, 50L, 35L, 57L, 34L, 52L, 15L, 
+        63L, 39L, 41L, 58L, 42L, 49L, 43L, 4L, 42L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 78L, 
+    17L, 36L, 30L, 27L, 45L, 50L, 40L, 39L, 32L, 38L, 11L, 58L, 
+    18L, 27L, 39L, 38L, 24L, 20L, 21L, 20L, 25L, 29L, 22L, 0L, 
+    9L, 14L, 30L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 48L, 42L, 28L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 13L, 17L, 0L, 15L, 0L, 52L, 19L, 24L, 32L, 32L, 
+    26L, 28L, 20L, 14L, 25L, 26L, 19L, 16L, 12L, 16L, 12L, 12L, 
+    14L, 10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 57L, 39L, 52L, 49L, 80L, 63L, 
+        52L, 47L, 41L, 37L, 57L, 37L, 36L, 36L, 42L, 31L, 46L, 
+        30L, 39L, 37L, 42L, 39L, 46L, 42L, 43L, 41L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(13L, 52L, 
+    46L, 55L, 40L, 61L, 19L, 49L, 42L, 5L, 25L, 11L, 20L, 16L, 
+    20L, 12L, 21L, 13L, 8L, 16L, 17L, 13L, 17L, 14L, 14L, 10L, 
+    19L, 13L, 13L, 21L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(21L, 32L, 41L, 49L, 60L, 51L, 45L, 
+        50L, 41L, 50L, 29L, 33L, 29L, 31L, 18L, 19L, 31L, 24L, 
+        22L, 23L, 32L, 26L, 30L, 23L, 25L, 21L, 27L, 17L, 21L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(44L, 53L, 79L, 82L, 93L, 91L, 70L, 73L, 52L, 
+        67L, 32L, 66L, 35L, 51L, 30L, 39L, 28L, 36L, 29L, 27L, 
+        39L, 28L, 36L, 34L, 32L, 36L, 20L, 27L, 23L, 34L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(9L, 30L, 47L, 
+    54L, 52L, 53L, 51L, 49L, 35L, 24L, 16L, 29L, 21L, 27L, 23L, 
+    26L, 23L, 19L, 30L, 17L, 16L, 23L, 24L, 20L, 10L, 18L, 15L, 
+    8L, 14L, 9L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 40L, 53L, 52L, 62L, 66L, 
+        72L, 66L, 64L, 58L, 48L, 48L, 42L, 43L, 47L, 43L, 37L, 
+        37L, 38L, 33L, 38L, 30L, 50L, 37L, 41L, 33L, 35L, 28L, 
+        26L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 14L, 0L, 6L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 30L, 8L, 11L, 23L, 28L, 28L, 19L, 
+        18L, 12L, 18L, 14L, 19L, 12L, 8L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 18L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 30L, 
+    16L, 24L, 14L, 22L, 17L, 33L, 9L, 34L, 17L, 23L, 10L, 23L, 
+    24L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(73L, 75L, 63L, 80L, 82L, 81L, 91L, 67L, 76L, 
+        80L, 44L, 43L, 51L, 45L, 51L, 10L, 0L, 0L, 0L, 3L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 45L, 28L, 27L, 30L, 33L, 27L, 32L, 18L, 
+    19L, 15L, 24L, 15L, 15L, 27L, 13L, 14L, 6L, 16L, 10L, 7L, 
+    3L, 10L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 85L, 39L, 51L, 47L, 55L, 58L, 
+        46L, 44L, 35L, 46L, 49L, 43L, 20L, 46L, 43L, 16L, 45L, 
+        29L, 46L, 28L, 38L, 34L, 33L, 33L, 36L, 41L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 62L, 17L, 44L, 
+    53L, 45L, 47L, 48L, 49L, 43L, 36L, 39L, 39L, 41L, 39L, 35L, 
+    42L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 17L, 81L, 27L, 15L, 9L, 10L, 
+        68L, 61L, 4L, 77L, 19L, 7L, 5L, 50L, 15L, 70L, 8L, 58L, 
+        47L, 34L, 47L, 29L, 65L, 58L, 58L, 72L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 11L, 0L, 
+    0L, 0L, 0L, 45L, 10L, 49L, 17L, 44L, 51L, 25L, 41L, 15L, 
+    24L, 24L, 38L, 27L, 26L, 41L, 45L, 28L, 45L, 41L, 41L, 30L, 
+    28L, 17L, 13L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 39L, 51L, 57L, 39L, 67L, 
+        40L, 47L, 5L, 63L, 45L, 28L, 38L, 10L, 48L, 24L, 50L, 
+        47L, 15L, 7L, 37L, 37L, 63L, 39L, 46L, 35L, 15L, 33L, 
+        14L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 3L, 17L, 16L, 14L, 0L, 17L, 
+        0L, 0L, 11L, 6L, 0L, 0L, 0L, 23L, 5L, 0L, 10L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 57L, 49L, 
+    23L, 61L, 49L, 54L, 33L, 30L, 17L, 44L, 36L, 15L, 34L, 6L, 
+    15L, 30L, 14L, 30L, 15L, 20L, 25L, 37L, 23L, 11L, 40L, 12L, 
+    30L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 64L, 31L, 63L, 52L, 37L, 51L, 46L, 
+        30L, 51L, 40L, 13L, 21L, 23L, 19L, 45L, 13L, 19L, 13L, 
+        27L, 36L, 20L, 28L, 11L, 11L, 14L, 15L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 9L, 13L, 15L, 0L, 0L, 0L, 0L, 19L, 26L, 43L, 16L, 41L, 
+    15L, 45L, 47L, 41L, 29L, 34L, 3L, 56L, 60L, 54L, 22L, 44L, 
+    49L, 53L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 59L, 22L, 56L, 51L, 80L, 52L, 53L, 60L, 
+        60L, 22L, 24L, 28L, 50L, 12L, 35L, 10L, 50L, 34L, 39L, 
+        37L, 45L, 39L, 36L, 32L, 26L, 36L, 36L, 38L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 11L, 41L, 
+    8L, 47L, 43L, 73L, 29L, 51L, 57L, 66L, 70L, 75L, 64L, 72L, 
+    55L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 49L, 46L, 43L, 56L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 67L, 
+    55L, 59L, 60L, 48L, 75L, 57L, 79L, 52L, 60L, 59L, 59L, 50L, 
+    59L, 37L, 40L, 51L, 46L, 30L, 27L, 58L, 26L, 38L, 37L, 33L, 
+    50L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 15L, 73L, 29L, 34L, 49L, 46L, 56L, 
+        52L, 54L, 49L, 55L, 49L, 27L, 46L, 40L, 40L, 29L, 51L, 
+        40L, 32L, 37L, 35L, 24L, 54L, 44L, 32L, 40L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 109L, 30L, 38L, 40L, 60L, 62L, 52L, 67L, 43L, 58L, 20L, 
+    37L, 27L, 26L, 19L, 52L, 39L, 33L, 15L, 46L, 56L, 39L, 37L, 
+    29L, 34L, 22L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        5L, 0L, 0L, 0L, 0L, 0L, 6L, 56L, 12L, 37L, 22L, 40L, 
+        33L, 20L, 28L, 24L, 32L, 30L, 35L, 21L, 19L, 31L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 15L, 66L, 
+    74L, 54L, 70L, 53L, 60L, 82L, 82L, 58L, 85L, 51L, 71L, 59L, 
+    5L, 14L, 60L, 34L, 35L, 53L, 29L, 57L, 70L, 56L, 78L, 50L, 
+    36L, 50L, 37L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 26L, 48L, 
+        12L, 31L, 6L, 49L, 14L, 15L, 56L, 5L, 12L, 41L, 2L, 56L, 
+        4L, 5L, 44L, 17L, 4L, 32L, 18L, 39L, 35L, 22L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 8L, 22L, 0L, 73L, 22L, 58L, 57L, 9L, 12L, 41L, 31L, 
+    15L, 63L, 14L, 9L, 9L, 14L, 45L, 60L, 41L, 42L, 42L, 41L, 
+    32L, 34L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 133L, 49L, 61L, 73L, 89L, 48L, 43L, 
+        65L, 74L, 34L, 13L, 24L, 5L, 35L, 62L, 27L, 42L, 20L, 
+        18L, 23L, 59L, 49L, 48L, 45L, 35L, 31L, 30L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 23L, 63L, 
+    28L, 34L, 67L, 81L, 51L, 73L, 33L, 71L, 78L, 15L, 16L, 61L, 
+    71L, 12L, 43L, 16L, 48L, 5L, 37L, 55L, 40L, 38L, 68L, 62L, 
+    52L, 49L, 55L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 78L, 41L, 
+        55L, 12L, 64L, 63L, 51L, 61L, 50L, 23L, 9L, 17L, 59L, 
+        20L, 20L, 14L, 47L, 41L, 0L, 43L, 29L, 17L, 14L, 4L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 17L, 13L, 38L, 52L, 64L, 73L, 85L, 40L, 82L, 73L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 58L, 22L, 39L, 41L, 49L, 60L, 30L, 57L, 21L, 23L, 
+    27L, 33L, 25L, 34L, 28L, 42L, 13L, 45L, 43L, 47L, 45L, 40L, 
+    31L, 38L, 51L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 32L, 45L, 53L, 74L, 68L, 74L, 
+        65L, 79L, 64L, 54L, 57L, 63L, 0L, 0L, 57L, 47L, 54L, 
+        17L, 31L, 51L, 24L, 54L, 46L, 47L, 31L, 33L, 25L, 33L, 
+        29L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 12L, 49L, 41L, 33L, 66L, 46L, 
+        37L, 51L, 60L, 54L, 46L, 49L, 29L, 62L, 21L, 11L, 45L, 
+        47L, 26L, 51L, 41L, 36L, 45L, 41L, 17L, 43L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 56L, 66L, 36L, 62L, 4L, 61L, 60L, 58L, 56L, 62L, 55L, 
+    53L, 31L, 50L, 23L, 14L, 59L, 9L, 17L, 30L, 26L, 39L, 57L, 
+    38L, 39L, 43L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 8L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 33L, 40L, 41L, 24L, 45L, 
+    19L, 40L, 40L, 55L, 11L, 19L, 29L, 41L, 41L, 26L, 31L, 27L, 
+    37L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 10L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 22L, 61L, 32L, 69L, 49L, 66L, 58L, 
+    50L, 48L, 50L, 54L, 44L, 51L, 46L, 38L, 38L, 53L, 42L, 33L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 112L, 28L, 49L, 50L, 41L, 50L, 33L, 20L, 48L, 48L, 
+        27L, 38L, 25L, 24L, 20L, 22L, 24L, 11L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    61L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 14L, 6L, 60L, 45L, 42L, 64L, 46L, 
+    67L, 38L, 54L, 38L, 54L, 47L, 39L, 51L, 33L, 35L, 0L, 46L, 
+    46L, 46L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 20L, 43L, 22L, 41L, 46L, 56L, 45L, 50L, 
+        51L, 41L, 42L, 38L, 46L, 50L, 49L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 24L, 41L, 57L, 76L, 67L, 71L, 71L, 60L, 41L, 79L, 
+    66L, 63L, 66L, 53L, 52L, 37L, 63L, 47L, 40L, 50L, 43L, 47L, 
+    42L, 57L, 41L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 23L, 
+        0L, 0L, 0L, 33L, 70L, 55L, 31L, 56L, 66L, 50L, 58L, 50L, 
+        65L, 50L, 40L, 51L, 32L, 50L, 51L, 43L, 45L, 54L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 32L, 57L, 53L, 64L, 38L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 20L, 
+    66L, 59L, 40L, 60L, 63L, 53L, 13L, 59L, 38L, 24L, 24L, 21L, 
+    9L, 56L, 18L, 53L, 54L, 49L, 58L, 11L, 5L, 6L, 0L, 0L, 0L, 
+    0L, 0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 
+        0L, 0L, 0L, 0L, 17L, 0L, 13L, 47L, 48L, 59L, 55L, 63L, 
+        55L, 52L, 50L, 55L, 20L, 16L, 3L, 0L, 0L, 11L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(22L, 65L, 
+    62L, 75L, 82L, 48L, 84L, 65L, 53L, 74L, 56L, 49L, 46L, 10L, 
+    17L, 32L, 35L, 49L, 39L, 30L, 18L, 41L, 20L, 11L, 16L, 14L, 
+    12L, 4L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        15L, 23L, 8L, 20L, 44L, 11L, 13L, 7L, 10L, 13L, 12L, 
+        8L, 6L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 61L, 33L, 30L, 63L, 46L, 40L, 23L, 17L, 37L, 28L, 32L, 
+    35L, 37L, 42L, 30L, 28L, 23L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 84L, 45L, 66L, 65L, 54L, 73L, 71L, 74L, 
+        66L, 71L, 53L, 51L, 55L, 71L, 57L, 65L, 40L, 60L, 59L, 
+        53L, 56L, 40L, 52L, 59L, 42L, 51L, 5L, 6L, 10L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 34L, 0L, 0L, 18L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 22L, 
+    55L, 62L, 51L, 61L, 11L, 49L, 65L, 37L, 51L, 45L, 52L, 21L, 
+    38L, 32L, 61L, 31L, 37L, 33L, 7L, 29L, 19L, 31L, 22L, 7L, 
+    0L, 7L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 14L, 24L, 51L, 67L, 31L, 64L, 43L, 46L, 60L, 50L, 
+        50L, 46L, 6L, 24L, 27L, 34L, 52L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 7L, 0L, 0L, 0L, 0L, 10L, 0L, 56L, 32L, 38L, 26L, 
+    39L, 15L, 41L, 45L, 0L, 0L, 27L, 44L, 24L, 37L, 0L, 5L, 15L, 
+    2L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 16L, 4L, 11L, 31L, 21L, 38L, 42L, 25L, 22L, 23L, 
+        4L, 48L, 8L, 0L, 21L, 0L, 16L, 20L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 68L, 24L, 54L, 37L, 27L, 40L, 42L, 
+    23L, 39L, 50L, 40L, 20L, 76L, 42L, 35L, 0L, 0L, 11L, 7L, 
+    9L, 46L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 21L, 30L, 40L, 50L, 51L, 32L, 55L, 7L, 73L, 
+        64L, 56L, 55L, 8L, 44L, 58L, 50L, 50L, 54L, 60L, 48L, 
+        6L, 44L, 47L, 37L, 14L, 30L, 4L, 2L, 19L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 45L, 
+    57L, 56L, 49L, 20L, 61L, 61L, 74L, 40L, 72L, 67L, 48L, 8L, 
+    48L, 35L, 61L, 47L, 46L, 58L, 7L, 40L, 35L, 37L, 37L, 20L, 
+    3L, 13L, 5L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 7L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 4L, 9L, 26L, 11L, 8L, 8L, 0L, 
+        2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 85L, 24L, 48L, 48L, 68L, 
+    90L, 78L, 67L, 46L, 43L, 30L, 62L, 38L, 14L, 48L, 41L, 21L, 
+    31L, 27L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 13L, 16L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 13L, 40L, 27L, 8L, 
+        34L, 41L, 22L, 15L, 2L, 44L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 9L, 9L, 26L, 38L, 44L, 24L, 37L, 12L, 38L, 51L, 
+    42L, 54L, 50L, 49L, 0L, 3L, 27L, 19L, 27L, 33L, 4L, 6L, 0L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 11L, 39L, 0L, 5L, 
+        0L, 0L, 24L, 6L, 51L, 40L, 43L, 60L, 12L, 50L, 12L, 66L, 
+        10L, 56L, 3L, 9L, 13L, 2L, 2L)), .Names = c("args", "vals"
+    )), structure(list(args = 5:34, vals = c(0L, 51L, 28L, 24L, 
+    20L, 61L, 34L, 30L, 36L, 52L, 43L, 55L, 22L, 20L, 18L, 49L, 
+    41L, 43L, 48L, 49L, 0L, 13L, 9L, 29L, 17L, 35L, 42L, 11L, 
+    0L, 15L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(56L, 75L, 66L, 69L, 72L, 63L, 70L, 78L, 51L, 
+        70L, 54L, 50L, 51L, 51L, 19L, 47L, 51L, 52L, 34L, 30L, 
+        40L, 30L, 28L, 4L, 25L, 24L, 0L, 7L, 3L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 6L, 
+    0L, 0L, 0L, 0L, 8L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 12L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 14L, 0L, 0L, 7L, 53L, 32L, 
+    26L, 35L, 8L, 18L, 21L, 38L, 38L, 27L, 37L, 14L, 0L, 15L, 
+    30L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 11L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 33L, 40L, 29L, 15L, 
+    2L, 7L, 3L, 5L, 49L, 36L, 18L, 8L, 4L, 9L, 63L, 20L, 15L, 
+    75L, 7L, 3L, 51L, 53L, 8L, 42L, 5L, 32L, 36L, 39L, 12L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 16L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 6L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 9L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    7L, 53L, 47L, 67L, 70L, 42L, 75L, 49L, 5L, 65L, 0L, 23L, 
+    23L, 72L, 38L, 19L, 53L, 32L, 44L, 38L, 47L, 44L, 16L, 28L, 
+    39L, 49L, 49L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 4L, 0L, 0L, 13L, 12L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 22L, 3L, 11L, 
+    25L, 5L, 48L, 20L, 46L, 15L, 0L, 0L, 7L, 16L, 3L, 21L, 42L
+    )), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(54L, 41L, 6L, 8L, 49L, 67L, 39L, 
+        46L, 22L, 59L, 47L, 7L, 22L, 55L, 37L, 18L, 2L, 36L, 
+        43L, 0L, 28L, 28L, 10L, 14L, 27L, 34L, 18L, 14L, 4L, 
+        21L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 15L, 
+        0L, 0L, 0L, 15L, 9L, 16L, 17L, 6L, 4L, 5L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), 
+    structure(list(args = 5:34, vals = c(0L, 0L, 0L, 12L, 0L, 
+    0L, 0L, 24L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 9L, 31L, 0L, 0L, 50L, 0L, 6L, 4L, 39L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 21L, 
+    19L, 48L, 89L, 36L, 16L, 26L, 10L, 42L, 28L, 37L, 12L, 11L, 
+    19L, 21L, 0L, 0L, 15L, 0L, 0L, 12L, 22L, 30L, 39L, 19L, 10L, 
+    12L, 17L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 58L, 55L, 115L, 34L, 64L, 75L, 82L, 
+        61L, 79L, 47L, 54L, 0L, 0L, 15L, 0L, 0L, 0L, 10L, 0L, 
+        42L, 0L, 17L, 27L, 0L, 5L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(0L, 0L, 0L, 
+    0L, 0L, 7L, 96L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("args", 
+    "vals")), structure(list(args = 5:34, vals = c(26L, 21L, 
+    62L, 68L, 55L, 0L, 69L, 0L, 24L, 0L, 53L, 42L, 10L, 9L, 21L, 
+    59L, 0L, 21L, 0L, 12L, 37L, 23L, 56L, 32L, 34L, 0L, 9L, 18L, 
+    17L, 30L)), .Names = c("args", "vals")), structure(list(args = 5:34, 
+        vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 
+        7L, 0L, 0L, 0L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        0L, 0L, 0L, 0L, 0L)), .Names = c("args", "vals")), structure(list(
+        args = 5:34, vals = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
+        19L, 0L, 14L, 10L, 18L, 0L, 17L, 0L, 11L, 3L, 0L, 28L, 
+        0L, 23L, 47L, 18L, 18L, 4L, 2L, 16L, 9L, 19L)), .Names = c("args", 
+    "vals"))), labels = list("long-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "long-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "short-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "long-lived", 
+    "long-lived", "long-lived", "long-lived", "short-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "long-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "long-lived", "short-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "long-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "long-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "long-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "long-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "long-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived", 
+    "short-lived", "short-lived", "short-lived", "short-lived")), class = "functional")
+)
\ No newline at end of file
diff --git a/R/dataf.population.r b/R/dataf.population.r
new file mode 100644
index 0000000..2e30b13
--- /dev/null
+++ b/R/dataf.population.r
@@ -0,0 +1,246 @@
+dataf.population <- function() return(structure(list(
+  name = "World population data",
+  args = "year",
+  vals = "population (in thousands)",
+  dataf = list(
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2309, 2359, 2404, 2446, 2488, 2532, 2578, 2628, 2680, 2733, 278 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 156, 160, 164, 167, 170, 173, 176, 179, 183, 186, 189, 192, 195 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 62, 63, 65, 66, 68, 70, 71, 74, 76, 80, 84, 88, 94, 101, 108, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1142, 1163, 1185, 1208, 1233, 1259, 1286, 1315, 1344, 1375, 140 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 18128, 18467, 18820, 19184, 19560, 19947, 20348, 20764, 21201,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6077, 6240, 6412, 6593, 6782, 6980, 7186, 7401, 7626, 7860, 810 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4084, 4168, 4256, 4348, 4444, 4544, 4647, 4754, 4865, 4980, 509 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2954, 3008, 3065, 3125, 3187, 3252, 3320, 3391, 3464, 3540, 361 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 493, 506, 521, 537, 554, 571, 588, 605, 623, 641, 660, 679, 698 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 15, 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 31, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6313, 6405, 6503, 6607, 6717, 6832, 6953, 7079, 7211, 7349, 749 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 248, 259, 268, 277, 284, 292, 300, 308, 317, 326, 336, 345, 355 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2186, 2251, 2313, 2378, 2449, 2526, 2608, 2694, 2780, 2861, 293 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 42, 42, 43, 45, 46, 47, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2264, 2308, 2352, 2397, 2444, 2492, 2541, 2592, 2645, 2700, 275 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2583, 2601, 2625, 2652, 2685, 2721, 2761, 2805, 2852, 2902, 295 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5158, 5309, 5456, 5601, 5748, 5899, 6056, 6221, 6396, 6585, 678 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7650, 7847, 8056, 8275, 8503, 8741, 8988, 9244, 9511, 9787, 100 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2317, 2376, 2439, 2504, 2573, 2644, 2718, 2795, 2876, 2961, 305 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2747, 2830, 2918, 3010, 3105, 3204, 3305, 3411, 3520, 3634, 375 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4355, 4440, 4529, 4622, 4715, 4808, 4901, 4992, 5084, 5177, 527 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4466, 4544, 4623, 4705, 4788, 4874, 4963, 5055, 5152, 5254, 536 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1327, 1340, 1353, 1368, 1383, 1399, 1417, 1436, 1457, 1479, 150 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2502, 2544, 2589, 2637, 2686, 2736, 2787, 2839, 2892, 2946, 300 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 808, 824, 841, 860, 879, 899, 920, 942, 964, 988, 1014, 1040, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 12184, 12429, 12681, 12944, 13223, 13518, 13830, 14161, 14509,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 226, 230, 233, 235, 236, 238, 240, 243, 246, 249, 252, 255, 258 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 473, 476, 478, 479, 481, 483, 485, 488, 491, 495, 499, 504, 510 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 60, 59, 59, 58, 58, 59, 60, 61, 62, 63, 64, 65, 64, 64, 64, 65, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8872, 9040, 9216, 9405, 9610, 9830, 10066, 10316, 10578, 10849, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 20897, 21383, 21904, 22458, 23043, 23656, 24296, 24959, 25645,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1113, 1132, 1152, 1176, 1203, 1233, 1267, 1304, 1345, 1388, 143 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8986, 9244, 9530, 9838, 10163, 10503, 10852, 11211, 11577, 1194 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5734, 5884, 6039, 6200, 6368, 6543, 6724, 6913, 7109, 7314, 752 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3605, 3696, 3773, 3838, 3894, 3944, 3988, 4032, 4076, 4123, 417 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 14, 16, 18, 19, 20, 21, 23, 25, 27, 30, 33, 36, 39, 42, 46, 51, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 413, 425, 437, 448, 459, 470, 480, 490, 501, 512, 524, 537, 550 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 734, 744, 755, 766, 777, 788, 799, 811, 824, 837, 851, 866, 882 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 485, 495, 505, 515, 526, 538, 549, 562, 575, 588, 603, 617, 633 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 13683, 13994, 14322, 14665, 15020, 15385, 15760, 16146, 16546,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 273, 279, 285, 292, 300, 307, 315, 324, 332, 341, 349, 358, 366 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2255, 2258, 2264, 2274, 2287, 2304, 2323, 2346, 2371, 2400, 243 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4284, 4324, 4367, 4413, 4463, 4517, 4575, 4636, 4699, 4764, 482 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 178, 186, 192, 195, 197, 197, 198, 198, 199, 200, 202, 206, 211 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2630, 2693, 2758, 2828, 2901, 2979, 3063, 3153, 3251, 3358, 347 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 271, 273, 277, 284, 293, 304, 317, 331, 344, 357, 368, 377, 384 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4981, 5068, 5191, 5339, 5504, 5680, 5864, 6052, 6246, 6445, 665 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3094, 3142, 3186, 3228, 3271, 3316, 3364, 3414, 3467, 3522, 357 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 535, 544, 552, 560, 567, 575, 584, 592, 601, 609, 616, 623, 630 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 930, 943, 958, 974, 991, 1010, 1030, 1051, 1073, 1096, 1120, 11 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4708, 4759, 4811, 4865, 4920, 4975, 5032, 5090, 5147, 5205, 526 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 660, 676, 692, 709, 727, 747, 767, 789, 811, 834, 858, 883, 909 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2560, 2638, 2717, 2797, 2878, 2960, 3042, 3126, 3212, 3302, 339 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 37860, 38431, 39050, 39708, 40400, 41122, 41874, 42656, 43470,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2477, 2530, 2587, 2648, 2713, 2782, 2855, 2931, 3010, 3092, 317 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1944, 1963, 1983, 2005, 2028, 2052, 2076, 2102, 2127, 2154, 218 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1395, 1425, 1442, 1452, 1462, 1474, 1491, 1512, 1536, 1560, 158 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 544113, 558820, 570765, 580887, 589956, 598574, 607168, 615992, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1974, 2036, 2134, 2249, 2371, 2490, 2604, 2713, 2823, 2942, 307 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 196, 196, 194, 190, 186, 181, 177, 173, 171, 170, 171, 175, 181 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 10549, 10248, 10049, 9957, 9972, 10087, 10286, 10547, 10844, 11 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 82199, 83794, 85175, 86378, 87439, 88390, 89262, 90085, 90883,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 780, 794, 808, 823, 839, 855, 872, 890, 910, 931, 956, 982, 101 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 19211, 19305, 19567, 19979, 20521, 21169, 21898, 22681, 23490,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7562, 7807, 8054, 8307, 8573, 8853, 9149, 9462, 9791, 10136, 10 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6703, 6831, 7042, 7316, 7637, 7992, 8371, 8765, 9169, 9581, 999 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1740, 1763, 1792, 1825, 1862, 1902, 1947, 1995, 2048, 2107, 217 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1532, 1576, 1625, 1674, 1724, 1775, 1825, 1878, 1934, 1996, 206 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1211, 1228, 1253, 1283, 1317, 1356, 1397, 1442, 1489, 1540, 159 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6945, 7104, 7265, 7429, 7596, 7769, 7948, 8136, 8337, 8554, 878 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7752, 7839, 7935, 8038, 8150, 8270, 8398, 8535, 8680, 8833, 899 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 37895, 38707, 39493, 40302, 41170, 42122, 43170, 44315, 45547,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 177, 181, 186, 191, 195, 200, 205, 209, 214, 219, 224, 229, 235 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 376325, 382231, 388516, 395138, 402066, 409280, 416772, 424542, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 17119, 17517, 17933, 18369, 18823, 19294, 19783, 20288, 20811,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 74, 74, 75, 76, 78, 80, 82, 83, 85, 88, 90, 92, 95, 98, 100, 10 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8483, 8658, 8823, 8982, 9137, 9290, 9442, 9594, 9747, 9901, 100 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 37542, 37976, 38485, 39066, 39714, 40427, 41203, 42040, 42937,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8076, 8202, 8339, 8489, 8654, 8833, 9025, 9230, 9445, 9667, 989 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 48, 51, 54, 57, 60, 63, 67, 70, 74, 78, 82, 86, 90, 94, 98, 103 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4433, 4540, 4659, 4785, 4914, 5045, 5176, 5308, 5441, 5579, 572 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 69543, 70870, 72310, 73867, 75540, 77328, 79227, 81231, 83332,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1683, 1723, 1764, 1805, 1847, 1890, 1934, 1979, 2025, 2072, 212 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6110, 6262, 6433, 6618, 6813, 7016, 7226, 7443, 7669, 7908, 816 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 17527, 17850, 18182, 18529, 18895, 19282, 19690, 20118, 20562,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 18580, 19247, 19946, 20671, 21416, 22179, 22958, 23755, 24570,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1022, 1068, 1120, 1178, 1240, 1306, 1373, 1441, 1508, 1573, 163 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 20710, 21263, 21838, 22437, 23060, 23711, 24390, 25097, 25834,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 433, 438, 443, 449, 455, 461, 468, 475, 483, 491, 500, 508, 517 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 24810, 25364, 25977, 26646, 27371, 28148, 28974, 29845, 30755,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1354, 1383, 1420, 1463, 1511, 1564, 1619, 1678, 1739, 1802, 186 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2896, 2965, 3045, 3134, 3228, 3328, 3432, 3540, 3653, 3772, 389 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 116, 117, 120, 124, 128, 134, 139, 145, 151, 157, 163, 168, 173 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 494, 500, 507, 513, 521, 530, 540, 549, 559, 567, 573, 576, 578 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3527, 3585, 3646, 3710, 3775, 3839, 3904, 3967, 4031, 4095, 416 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5719, 5902, 6065, 6216, 6360, 6503, 6647, 6795, 6951, 7116, 729 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1258, 1354, 1451, 1546, 1636, 1719, 1796, 1869, 1939, 2012, 209 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 449, 503, 542, 575, 608, 646, 690, 739, 792, 843, 889, 928, 963 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 152, 164, 174, 182, 189, 195, 201, 209, 220, 238, 262, 295, 335 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1335, 1358, 1393, 1435, 1482, 1532, 1584, 1637, 1691, 1747, 180 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 456, 462, 469, 477, 486, 496, 506, 516, 528, 539, 552, 565, 579 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 25, 27, 30, 32, 34, 36, 38, 39, 41, 44, 47, 51, 56, 62, 67, 74, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3121, 3199, 3283, 3373, 3465, 3558, 3654, 3752, 3855, 3966, 408 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 932, 924, 932, 949, 969, 988, 1004, 1019, 1032, 1048, 1069, 109 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3413, 3501, 3595, 3697, 3806, 3922, 4044, 4173, 4308, 4448, 459 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 21238, 21806, 22394, 22999, 23619, 24253, 24898, 25552, 26214,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 70, 68, 70, 73, 77, 80, 82, 83, 84, 87, 93, 101, 112, 125, 138, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4402, 4474, 4546, 4619, 4693, 4768, 4844, 4922, 5002, 5083, 516 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7745, 7718, 7711, 7724, 7756, 7804, 7866, 7939, 8019, 8104, 819 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7251, 7304, 7360, 7419, 7479, 7541, 7604, 7668, 7733, 7799, 786 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8903, 9005, 9106, 9200, 9283, 9353, 9410, 9457, 9497, 9536, 957 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 9338, 9478, 9595, 9691, 9768, 9829, 9877, 9914, 9945, 9973, 100 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 24824, 25264, 25738, 26237, 26750, 27270, 27788, 28298, 28792,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2341, 2381, 2432, 2491, 2557, 2627, 2701, 2777, 2853, 2929, 300 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 16236, 16513, 16765, 17006, 17244, 17484, 17727, 17968, 18203,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 102799, 104306, 105969, 107730, 109538, 111355, 113152, 114910, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3437, 3510, 3586, 3663, 3739, 3813, 3884, 3952, 4017, 4079, 413 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 37298, 37816, 38361, 38916, 39472, 40019, 40557, 41084, 41606,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 102, 103, 104, 104, 105, 106, 106, 107, 108, 109, 109, 110, 111 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4268, 4308, 4345, 4379, 4410, 4440, 4467, 4494, 4522, 4550, 458 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1101, 1113, 1125, 1137, 1148, 1159, 1170, 1181, 1192, 1204, 121 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 32, 31, 31, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4008, 4050, 4095, 4142, 4190, 4235, 4279, 4320, 4359, 4395, 443 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 143, 145, 148, 151, 154, 158, 161, 165, 168, 172, 176, 179, 183 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2913, 2921, 2924, 2921, 2913, 2899, 2882, 2862, 2844, 2829, 281 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 55, 55, 55, 54, 53, 52, 51, 50, 50, 49, 48, 48, 49, 49, 50, 51, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1949, 1955, 1965, 1979, 1996, 2015, 2036, 2058, 2082, 2107, 213 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2567, 2570, 2579, 2592, 2609, 2630, 2652, 2678, 2706, 2737, 277 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3265, 3300, 3334, 3366, 3398, 3429, 3461, 3492, 3522, 3553, 358 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7010, 7072, 7126, 7173, 7217, 7260, 7302, 7344, 7388, 7433, 748 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 50616, 50621, 50684, 50793, 50938, 51114, 51316, 51544, 51800,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1263, 1287, 1316, 1348, 1383, 1420, 1459, 1500, 1543, 1588, 163 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6, 7, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 19, 20, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2661, 2710, 2763, 2819, 2876, 2932, 2987, 3042, 3098, 3155, 321 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3850, 3886, 3923, 3959, 3995, 4030, 4065, 4098, 4130, 4162, 419 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 23, 23, 23, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7566, 7635, 7706, 7779, 7856, 7935, 8016, 8097, 8175, 8247, 831 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 46599, 47014, 47399, 47749, 48065, 48351, 48615, 48868, 49126,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 312, 313, 313, 314, 314, 314, 314, 314, 314, 314, 313, 312, 310 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 395, 401, 411, 422, 433, 444, 453, 462, 470, 478, 487, 498, 510 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8417, 8431, 8474, 8532, 8597, 8661, 8720, 8770, 8812, 8846, 887 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6732, 6853, 6963, 7063, 7153, 7235, 7309, 7377, 7440, 7499, 755 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1473, 1482, 1492, 1503, 1515, 1527, 1540, 1552, 1564, 1576, 158 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 28070, 28237, 28430, 28642, 28866, 29100, 29344, 29597, 29863,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1254, 1290, 1321, 1347, 1371, 1392, 1413, 1432, 1451, 1470, 148 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6936, 6930, 6929, 6932, 6939, 6949, 6963, 6981, 7004, 7032, 706 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8628, 8674, 8721, 8770, 8820, 8871, 8922, 8974, 9028, 9083, 914 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 41880, 42071, 42366, 42724, 43118, 43528, 43947, 44376, 44828,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 69786, 70112, 70421, 70721, 71016, 71314, 71624, 71955, 72318,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 296, 298, 299, 302, 303, 305, 307, 309, 310, 312, 315, 317, 321 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 20, 19, 19, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 23, 23, 23, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 10027, 10149, 10276, 10407, 10542, 10681, 10822, 10966, 11114,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 4668, 4726, 4789, 4852, 4913, 4971, 5027, 5083, 5144, 5213, 529 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 46, 48, 50, 51, 52, 53, 53, 53, 54, 54, 55, 55, 56, 57, 59, 60, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 38, 38, 39, 40, 42, 44, 46, 48, 50, 53, 54, 55, 56, 57, 57, 57, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 79, 80, 81, 83, 86, 89, 92, 96, 100, 104, 110, 115, 121, 127, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 211, 216, 220, 223, 225, 227, 228, 229, 230, 230, 231, 232, 233 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5920, 6051, 6180, 6305, 6424, 6539, 6652, 6765, 6881, 7005, 714 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 100, 105, 108, 112, 114, 117, 119, 121, 123, 125, 127, 128, 130 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 51, 52, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2365, 2438, 2517, 2601, 2689, 2781, 2876, 2976, 3079, 3185, 329 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 77, 77, 77, 78, 79, 81, 83, 85, 86, 88, 90, 91, 92, 93, 94, 95, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 210, 213, 217, 223, 229, 236, 244, 252, 260, 268, 275, 281, 287 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3221, 3275, 3332, 3390, 3451, 3514, 3580, 3648, 3718, 3791, 386 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1403, 1437, 1468, 1497, 1521, 1543, 1561, 1577, 1593, 1611, 163 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 222, 224, 228, 233, 239, 246, 253, 260, 267, 274, 282, 288, 295 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 14, 14, 14, 15, 15, 14, 14, 13, 13, 12, 12, 12, 12, 12, 12, 12, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2218, 2210, 2212, 2221, 2233, 2247, 2262, 2279, 2299, 2323, 235 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 46, 46, 46, 47, 48, 48, 49, 50, 51, 51, 51, 51, 51, 51, 50, 49, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 83, 84, 85, 85, 86, 87, 87, 88, 88, 89, 90, 91, 92, 93, 95, 96, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 67, 68, 69, 71, 72, 74, 75, 77, 78, 80, 81, 82, 83, 84, 85, 86, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 646, 659, 676, 695, 717, 740, 763, 786, 809, 829, 848, 865, 880 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 27, 27, 28, 29, 29, 29, 29, 30, 30, 31, 33, 35, 39, 42, 46, 50, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 69, 71, 73, 76, 78, 80, 82, 85, 87, 89, 92, 95, 97, 100, 103, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 959, 986, 1016, 1048, 1083, 1120, 1158, 1199, 1242, 1286, 1333, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2200, 2237, 2278, 2325, 2375, 2429, 2488, 2550, 2616, 2687, 276 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3146, 3238, 3331, 3424, 3519, 3614, 3712, 3812, 3914, 4019, 412 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1487, 1525, 1568, 1616, 1666, 1717, 1770, 1824, 1880, 1940, 200 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 28013, 28836, 29712, 30634, 31600, 32605, 33648, 34727, 35841,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1295, 1332, 1372, 1414, 1460, 1508, 1558, 1611, 1665, 1719, 177 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 860, 881, 904, 929, 954, 981, 1009, 1038, 1068, 1100, 1133, 116 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 17150, 17507, 17866, 18224, 18579, 18929, 19275, 19615, 19951,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3090, 3140, 3193, 3248, 3306, 3365, 3427, 3491, 3556, 3624, 369 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 53975, 55606, 57305, 59053, 60839, 62656, 64507, 66400, 68351,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 6143, 6278, 6418, 6561, 6709, 6862, 7020, 7183, 7350, 7521, 769 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 12341, 12700, 13065, 13439, 13825, 14225, 14642, 15075, 15526,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3470, 3561, 3655, 3752, 3853, 3957, 4066, 4179, 4297, 4419, 454 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 25, 26, 27, 27, 28, 28, 29, 30, 30, 31, 32, 33, 34, 36, 37, 39, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 407, 420, 436, 452, 469, 485, 501, 516, 532, 547, 564, 582, 601 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1473, 1512, 1551, 1590, 1631, 1673, 1716, 1761, 1807, 1854, 190 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7728, 7924, 8129, 8340, 8560, 8787, 9022, 9266, 9520, 9785, 100 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 215, 223, 230, 236, 243, 250, 257, 265, 273, 282, 290, 298, 306 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2239, 2261, 2286, 2313, 2342, 2373, 2405, 2437, 2471, 2505, 253 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5482, 5735, 5990, 6245, 6501, 6758, 7019, 7286, 7561, 7847, 814 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 37, 38, 38, 39, 40, 41, 42, 42, 43, 44, 45, 46, 47, 48, 48, 49, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 13737, 14100, 14481, 14882, 15300, 15734, 16177, 16625, 17068,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 23, 23, 24, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 157813, 159881, 162280, 164942, 167800, 170796, 173877, 176995, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 8177, 8418, 8627, 8822, 9015, 9213, 9421, 9637, 9859, 10080, 10 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1908, 1948, 1993, 2040, 2088, 2136, 2183, 2229, 2275, 2323, 237 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 289, 296, 305, 314, 324, 335, 346, 357, 368, 380, 393, 407, 422 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 65, 64, 64, 65, 66, 68, 69, 71, 73, 76, 78, 81, 83, 86, 89, 91, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 1708, 1729, 1751, 1773, 1797, 1821, 1848, 1875, 1904, 1935, 196 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 90, 92, 94, 97, 99, 102, 105, 108, 111, 114, 118, 121, 125, 129 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 60, 60, 61, 61, 62, 63, 63, 64, 65, 66, 67, 68, 70, 71, 73, 75, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 33, 34, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 17, 17, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 45, 46, 47, 49, 50, 52, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7, 7, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 11, 12,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22, 23, 24, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 15, 15, 16, 16, 16, 16, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 60, 62, 64, 66, 67, 69, 70, 72, 74, 76, 78, 81, 84, 87, 90, 93, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 82, 84, 87, 89, 92, 94, 97, 100, 102, 105, 109, 112, 116, 120,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 47, 49, 51, 53, 54, 55, 56, 57, 59, 60, 62, 64, 66, 69, 72, 74, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 ), vals=c( 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,  [...]
+), 
+labels = list(
+"Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "Africa", "A [...]
+), 
+identifier = list(
+"Burundi", "Comoros", "Djibouti", "Eritrea", "Ethiopia", "Kenya", "Madagascar", "Malawi", "Mauritius", "Mayotte", "Mozambique", "Reunion", "Rwanda", "Seychelles", "Somalia", "South Sudan", "Uganda", "United Republic of Tanzania", "Zambia", "Zimbabwe", "Angola", "Cameroon", "Central African Republic", "Chad", "Congo", "Democratic Republic of the Congo", "Equatorial Guinea", "Gabon", "Sao Tome and Principe", "Algeria", "Egypt", "Libya", "Morocco", "Sudan", "Tunisia", "Western Sahara", "Bot [...]
+)), class = "functional")
+)
\ No newline at end of file
diff --git a/R/dataf.population2010.r b/R/dataf.population2010.r
new file mode 100644
index 0000000..61b15ba
--- /dev/null
+++ b/R/dataf.population2010.r
@@ -0,0 +1,246 @@
+dataf.population2010 <- function() return(structure(list(
+  name = "World population data (2010 revision)",
+  args = "year",
+  vals = "population (in thousands)",
+  dataf = list(
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2309, 2359, 2404, 2446, 2488, 2532, 2578, 2628, 2680, 2733, 2787, 2840, 2895, 2951, 3012, 307 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 156, 160, 164, 167, 171, 174, 177, 181, 184, 187, 190, 194, 197, 201, 204, 208, 212, 217, 222 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 62, 63, 65, 66, 68, 70, 71, 74, 76, 80, 84, 88, 94, 101, 108, 115, 123, 131, 140, 150, 160, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1141, 1162, 1183, 1207, 1231, 1257, 1284, 1313, 1342, 1373, 1405, 1438, 1473, 1509, 1546, 158 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 18128, 18467, 18820, 19184, 19560, 19947, 20348, 20764, 21201, 21662, 22151, 22671, 23221, 23 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6077, 6240, 6412, 6593, 6782, 6980, 7186, 7401, 7626, 7860, 8105, 8361, 8629, 8908, 9200, 950 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4084, 4168, 4256, 4348, 4444, 4544, 4647, 4754, 4865, 4980, 5099, 5224, 5353, 5487, 5625, 576 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2881, 2930, 2984, 3042, 3103, 3166, 3232, 3301, 3372, 3447, 3525, 3607, 3694, 3784, 3877, 397 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 493, 506, 521, 537, 554, 571, 588, 605, 623, 641, 660, 679, 698, 717, 736, 753, 770, 785, 799 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 15, 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 31, 32, 33, 34, 36, 37, 39, 40, 4 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6442, 6536, 6636, 6742, 6854, 6972, 7095, 7225, 7359, 7500, 7647, 7800, 7960, 8125, 8297, 847 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 248, 259, 268, 277, 284, 292, 300, 308, 317, 326, 336, 345, 355, 366, 378, 391, 405, 421, 437 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2186, 2251, 2313, 2378, 2449, 2526, 2608, 2694, 2780, 2861, 2933, 2996, 3051, 3103, 3162, 323 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 5 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2264, 2308, 2352, 2397, 2444, 2492, 2541, 2592, 2645, 2700, 2756, 2815, 2875, 2937, 3002, 307 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2583, 2601, 2625, 2652, 2685, 2721, 2761, 2805, 2852, 2902, 2955, 3011, 3070, 3132, 3196, 326 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5158, 5309, 5456, 5601, 5748, 5899, 6056, 6221, 6396, 6585, 6788, 7007, 7240, 7487, 7746, 801 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7650, 7847, 8056, 8275, 8503, 8741, 8988, 9244, 9511, 9787, 10074, 10373, 10684, 11005, 11339 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2372, 2429, 2489, 2552, 2618, 2687, 2760, 2835, 2913, 2996, 3083, 3174, 3269, 3369, 3473, 358 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2747, 2830, 2918, 3010, 3105, 3204, 3305, 3411, 3520, 3634, 3752, 3877, 4006, 4141, 4280, 442 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4148, 4220, 4297, 4378, 4460, 4543, 4626, 4709, 4793, 4878, 4966, 5057, 5150, 5245, 5340, 543 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4466, 4544, 4623, 4705, 4788, 4874, 4963, 5055, 5152, 5254, 5361, 5475, 5594, 5719, 5850, 598 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1327, 1340, 1353, 1368, 1383, 1399, 1417, 1436, 1457, 1479, 1504, 1529, 1557, 1586, 1617, 164 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2502, 2544, 2589, 2637, 2686, 2736, 2787, 2839, 2892, 2946, 3003, 3061, 3122, 3185, 3248, 331 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 808, 824, 842, 860, 879, 899, 920, 942, 964, 988, 1014, 1040, 1068, 1096, 1127, 1158, 1190, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 12184, 12429, 12681, 12944, 13223, 13518, 13830, 14161, 14509, 14872, 15248, 15638, 16041, 16 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 226, 230, 233, 235, 236, 238, 240, 243, 246, 249, 252, 255, 258, 261, 265, 269, 275, 282, 289 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 473, 476, 478, 479, 481, 482, 485, 487, 491, 494, 499, 504, 509, 516, 523, 532, 542, 553, 565 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 60, 59, 59, 58, 58, 59, 60, 61, 62, 63, 64, 65, 64, 64, 64, 65, 66, 68, 70, 72, 74, 76, 78, 7 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8872, 9059, 9253, 9459, 9680, 9917, 10170, 10436, 10713, 10995, 11278, 11561, 11845, 12136, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 21514, 22020, 22562, 23138, 23747, 24387, 25057, 25756, 26480, 27228, 27998, 28786, 29591, 30 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1113, 1129, 1148, 1171, 1198, 1228, 1261, 1298, 1338, 1382, 1428, 1479, 1532, 1589, 1649, 171 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8986, 9251, 9535, 9839, 10162, 10503, 10857, 11222, 11592, 11962, 12329, 12687, 13039, 13387, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5734, 5884, 6039, 6200, 6368, 6543, 6724, 6913, 7109, 7314, 7527, 7750, 7982, 8224, 8476, 873 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3099, 3175, 3252, 3330, 3409, 3488, 3568, 3650, 3734, 3822, 3915, 4013, 4116, 4222, 4330, 443 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 14, 16, 18, 19, 20, 21, 23, 25, 27, 30, 33, 36, 39, 42, 46, 51, 57, 63, 69, 74, 77, 76, 73, 7 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 413, 425, 437, 448, 459, 470, 480, 491, 501, 512, 524, 537, 550, 564, 580, 596, 613, 631, 651 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 734, 744, 755, 766, 777, 788, 799, 811, 824, 837, 851, 866, 882, 898, 915, 933, 952, 971, 991 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 485, 495, 505, 515, 526, 538, 549, 562, 575, 588, 603, 617, 633, 649, 665, 683, 700, 719, 738 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 13683, 13994, 14322, 14665, 15020, 15385, 15760, 16146, 16546, 16962, 17396, 17850, 18322, 18 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 273, 279, 285, 292, 300, 307, 315, 324, 332, 341, 349, 358, 366, 374, 383, 392, 401, 411, 422 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2255, 2258, 2264, 2274, 2287, 2304, 2323, 2346, 2371, 2400, 2432, 2466, 2503, 2543, 2586, 263 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4284, 4324, 4367, 4413, 4463, 4517, 4575, 4636, 4699, 4764, 4829, 4895, 4960, 5028, 5099, 517 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 178, 182, 186, 189, 193, 195, 198, 201, 204, 208, 212, 217, 223, 229, 235, 242, 248, 254, 261 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2630, 2693, 2758, 2828, 2901, 2979, 3063, 3153, 3251, 3358, 3475, 3602, 3741, 3890, 4050, 422 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 271, 273, 277, 284, 293, 304, 317, 331, 344, 357, 368, 377, 384, 389, 395, 401, 408, 416, 426 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4981, 5068, 5191, 5339, 5504, 5681, 5864, 6052, 6246, 6446, 6653, 6867, 7086, 7304, 7514, 771 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3094, 3142, 3186, 3228, 3271, 3316, 3364, 3414, 3467, 3521, 3577, 3633, 3690, 3748, 3810, 387 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 518, 533, 547, 562, 576, 589, 601, 611, 621, 629, 636, 642, 648, 652, 656, 659, 662, 664, 667 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 930, 943, 958, 974, 991, 1010, 1030, 1051, 1073, 1096, 1120, 1145, 1170, 1197, 1224, 1253, 12 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4638, 4673, 4711, 4753, 4797, 4844, 4893, 4943, 4994, 5046, 5099, 5152, 5205, 5260, 5316, 537 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 660, 676, 692, 709, 728, 747, 767, 789, 811, 834, 858, 883, 909, 936, 964, 992, 1022, 1052, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2560, 2633, 2707, 2781, 2855, 2930, 3007, 3085, 3165, 3249, 3337, 3429, 3526, 3626, 3730, 383 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 37860, 38431, 39050, 39708, 40400, 41122, 41874, 42656, 43470, 44321, 45212, 46144, 47118, 48 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2477, 2530, 2587, 2648, 2713, 2782, 2855, 2931, 3010, 3093, 3178, 3266, 3357, 3451, 3548, 364 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1944, 1960, 1977, 1995, 2015, 2036, 2058, 2082, 2107, 2133, 2160, 2189, 2219, 2252, 2285, 232 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1395, 1425, 1442, 1452, 1462, 1474, 1491, 1512, 1536, 1560, 1581, 1598, 1613, 1632, 1662, 170 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 543776, 558819, 571165, 581812, 591558, 600995, 610508, 620279, 630314, 640489, 650680, 66090 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1974, 2036, 2134, 2249, 2371, 2490, 2604, 2713, 2823, 2942, 3076, 3227, 3392, 3554, 3695, 380 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 196, 196, 194, 190, 186, 181, 177, 173, 171, 170, 171, 175, 181, 189, 198, 207, 217, 227, 237 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 10549, 10248, 10049, 9957, 9972, 10087, 10286, 10547, 10844, 11145, 11424, 11666, 11872, 1206 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 82199, 83794, 85175, 86378, 87439, 88390, 89262, 90085, 90883, 91682, 92501, 93357, 94264, 95 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 780, 794, 808, 823, 839, 855, 872, 890, 910, 931, 956, 982, 1011, 1042, 1075, 1107, 1140, 117 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 19211, 19305, 19567, 19979, 20521, 21169, 21898, 22681, 23490, 24296, 25074, 25809, 26495, 27 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7562, 7807, 8054, 8307, 8573, 8853, 9149, 9462, 9791, 10136, 10493, 10862, 11242, 11634, 1203 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6703, 6723, 6851, 7065, 7349, 7684, 8057, 8456, 8870, 9292, 9714, 10130, 10532, 10914, 11267, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1740, 1763, 1792, 1825, 1862, 1902, 1947, 1995, 2048, 2107, 2173, 2245, 2324, 2406, 2490, 257 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1532, 1576, 1625, 1674, 1724, 1775, 1825, 1878, 1934, 1996, 2064, 2140, 2224, 2312, 2402, 249 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1211, 1228, 1253, 1283, 1317, 1356, 1397, 1442, 1489, 1540, 1594, 1650, 1709, 1769, 1830, 189 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6314, 6461, 6634, 6827, 7035, 7256, 7488, 7732, 7991, 8265, 8559, 8871, 9201, 9543, 9889, 102 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7451, 7547, 7651, 7763, 7882, 8010, 8146, 8290, 8443, 8604, 8774, 8954, 9142, 9340, 9547, 976 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 37895, 38976, 39992, 40994, 42024, 43109, 44266, 45497, 46797, 48149, 49537, 50954, 52403, 53 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 177, 181, 186, 191, 195, 200, 205, 209, 214, 219, 224, 229, 235, 240, 246, 253, 259, 266, 274 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 376325, 382206, 388409, 394938, 401793, 408974, 416477, 424297, 432428, 440862, 449595, 45862 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 17119, 17522, 17944, 18386, 18845, 19322, 19816, 20327, 20854, 21398, 21958, 22536, 23130, 23 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 74, 74, 75, 76, 78, 79, 81, 83, 85, 87, 89, 91, 94, 96, 99, 101, 104, 106, 108, 111, 114, 118 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8140, 8271, 8401, 8531, 8664, 8800, 8939, 9083, 9232, 9386, 9545, 9710, 9882, 10061, 10248, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 37542, 38045, 38623, 39272, 39987, 40764, 41602, 42498, 43453, 44467, 45541, 46674, 47864, 49 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8076, 8201, 8339, 8489, 8653, 8832, 9024, 9229, 9444, 9667, 9895, 10128, 10365, 10607, 10857, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 48, 51, 54, 57, 60, 63, 67, 70, 74, 78, 82, 86, 90, 94, 98, 103, 107, 113, 118, 124, 130, 136 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4433, 4539, 4658, 4784, 4913, 5044, 5175, 5306, 5439, 5577, 5720, 5870, 6024, 6179, 6327, 646 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 72592, 73642, 74822, 76136, 77583, 79159, 80857, 82671, 84589, 86600, 88693, 90860, 93101, 95 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1683, 1723, 1764, 1805, 1847, 1890, 1934, 1979, 2025, 2072, 2120, 2169, 2220, 2272, 2325, 238 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6110, 6262, 6433, 6618, 6813, 7016, 7226, 7443, 7669, 7908, 8161, 8429, 8711, 8999, 9287, 957 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 17527, 17850, 18182, 18529, 18895, 19282, 19690, 20118, 20562, 21019, 21486, 21962, 22447, 22 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 18580, 19247, 19946, 20670, 21416, 22179, 22958, 23754, 24569, 25407, 26272, 27163, 28080, 29 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1022, 1068, 1120, 1178, 1240, 1306, 1373, 1441, 1508, 1573, 1634, 1690, 1742, 1791, 1836, 188 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 20607, 21170, 21755, 22362, 22994, 23652, 24336, 25048, 25789, 26560, 27362, 28195, 29059, 29 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 433, 438, 444, 449, 455, 462, 468, 476, 483, 491, 500, 509, 518, 527, 537, 548, 558, 568, 579 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 24949, 25512, 26133, 26811, 27545, 28332, 29169, 30051, 30972, 31928, 32912, 33921, 34951, 36 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1354, 1383, 1420, 1463, 1511, 1564, 1619, 1678, 1739, 1802, 1867, 1934, 2002, 2070, 2138, 220 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2896, 2965, 3045, 3134, 3228, 3328, 3432, 3540, 3653, 3772, 3898, 4030, 4168, 4307, 4446, 458 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 116, 117, 120, 124, 128, 134, 139, 145, 151, 157, 163, 168, 173, 178, 183, 187, 192, 196, 201 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 494, 500, 507, 513, 521, 530, 540, 549, 559, 567, 573, 576, 578, 578, 579, 581, 585, 591, 598 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3527, 3585, 3646, 3710, 3775, 3839, 3904, 3967, 4031, 4095, 4160, 4226, 4292, 4357, 4420, 447 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5719, 5902, 6065, 6216, 6360, 6503, 6647, 6795, 6951, 7116, 7290, 7475, 7674, 7889, 8122, 837 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1258, 1354, 1451, 1546, 1636, 1719, 1796, 1869, 1939, 2012, 2090, 2174, 2264, 2356, 2443, 252 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 449, 503, 542, 575, 608, 646, 690, 739, 792, 843, 889, 928, 963, 1001, 1051, 1120, 1211, 1320 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 152, 164, 174, 182, 189, 195, 201, 209, 220, 238, 262, 295, 335, 382, 431, 482, 534, 586, 639 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1335, 1358, 1393, 1435, 1482, 1532, 1584, 1637, 1691, 1747, 1805, 1865, 1925, 1985, 2041, 209 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 456, 462, 469, 477, 486, 496, 506, 516, 528, 539, 552, 565, 579, 594, 609, 625, 642, 660, 680 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 25, 27, 30, 32, 34, 36, 38, 39, 41, 44, 47, 51, 56, 62, 67, 74, 80, 86, 93, 101, 109, 119, 13 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3121, 3198, 3282, 3371, 3461, 3553, 3647, 3743, 3844, 3953, 4072, 4203, 4346, 4498, 4658, 482 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 932, 924, 932, 949, 969, 988, 1004, 1018, 1032, 1048, 1069, 1096, 1128, 1159, 1181, 1191, 118 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3413, 3501, 3595, 3697, 3806, 3922, 4044, 4173, 4308, 4448, 4593, 4743, 4897, 5058, 5225, 539 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 21238, 21806, 22394, 22999, 23619, 24253, 24898, 25552, 26214, 26881, 27553, 28229, 28910, 29 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 70, 68, 69, 72, 76, 78, 80, 81, 82, 85, 90, 98, 109, 122, 134, 146, 157, 167, 181, 201, 232,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4661, 4668, 4686, 4712, 4747, 4789, 4837, 4892, 4954, 5023, 5100, 5184, 5276, 5373, 5473, 557 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7745, 7718, 7711, 7724, 7756, 7804, 7866, 7939, 8019, 8104, 8190, 8275, 8357, 8439, 8522, 860 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7251, 7304, 7360, 7419, 7479, 7541, 7604, 7668, 7733, 7799, 7866, 7935, 8004, 8073, 8141, 820 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8876, 8976, 9071, 9159, 9239, 9312, 9378, 9437, 9489, 9536, 9578, 9617, 9652, 9683, 9711, 973 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 9338, 9478, 9595, 9691, 9768, 9829, 9877, 9914, 9945, 9973, 10001, 10031, 10065, 10100, 10136 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 24824, 25314, 25821, 26334, 26846, 27352, 27846, 28325, 28786, 29226, 29646, 30043, 30418, 30 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2341, 2381, 2432, 2491, 2557, 2627, 2701, 2777, 2853, 2929, 3004, 3076, 3146, 3212, 3275, 333 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 16236, 16505, 16736, 16952, 17167, 17390, 17621, 17856, 18083, 18288, 18458, 18587, 18685, 18 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 102799, 104373, 106088, 107887, 109722, 111555, 113360, 115119, 116822, 118468, 120057, 12158 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3437, 3510, 3586, 3663, 3739, 3813, 3884, 3952, 4017, 4079, 4137, 4193, 4246, 4295, 4339, 437 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 37298, 37816, 38361, 38916, 39472, 40019, 40557, 41084, 41606, 42130, 42662, 43204, 43749, 44 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 102, 103, 104, 104, 105, 106, 106, 107, 108, 109, 109, 110, 111, 113, 114, 115, 116, 117, 119 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4268, 4308, 4345, 4379, 4410, 4440, 4467, 4494, 4522, 4550, 4581, 4614, 4649, 4686, 4723, 476 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1101, 1113, 1125, 1137, 1148, 1159, 1170, 1181, 1192, 1204, 1217, 1231, 1245, 1260, 1275, 129 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 32, 31, 31, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 37, 37, 38, 38, 39, 39, 39, 4 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4008, 4050, 4095, 4142, 4190, 4235, 4279, 4320, 4359, 4395, 4430, 4463, 4495, 4523, 4546, 456 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 143, 145, 148, 151, 154, 158, 161, 165, 168, 172, 176, 179, 183, 186, 189, 192, 195, 197, 200 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2913, 2921, 2924, 2921, 2914, 2901, 2885, 2867, 2850, 2837, 2829, 2828, 2835, 2847, 2861, 287 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 55, 55, 55, 54, 53, 52, 51, 50, 50, 49, 48, 48, 49, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 5 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1949, 1955, 1965, 1979, 1996, 2015, 2036, 2058, 2082, 2107, 2132, 2159, 2185, 2211, 2237, 226 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2567, 2570, 2579, 2592, 2609, 2630, 2652, 2678, 2706, 2737, 2771, 2808, 2847, 2888, 2928, 296 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3265, 3300, 3334, 3366, 3398, 3429, 3461, 3492, 3522, 3553, 3582, 3611, 3639, 3667, 3695, 372 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7010, 7072, 7126, 7173, 7217, 7260, 7302, 7344, 7388, 7433, 7480, 7527, 7576, 7628, 7683, 774 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 50616, 50632, 50707, 50830, 50991, 51185, 51405, 51650, 51921, 52219, 52544, 52895, 53265, 53 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1214, 1243, 1276, 1311, 1350, 1390, 1433, 1477, 1523, 1570, 1619, 1669, 1719, 1771, 1822, 187 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6, 7, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26, 27, 28, 30, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2661, 2734, 2807, 2878, 2947, 3014, 3077, 3138, 3196, 3251, 3306, 3358, 3409, 3458, 3504, 354 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3850, 3880, 3909, 3936, 3961, 3982, 4000, 4016, 4031, 4045, 4059, 4074, 4090, 4105, 4119, 413 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7566, 7647, 7726, 7805, 7885, 7966, 8047, 8126, 8202, 8272, 8333, 8386, 8431, 8471, 8510, 855 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 46367, 46786, 47172, 47523, 47841, 48132, 48402, 48663, 48927, 49209, 49519, 49866, 50246, 50 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 312, 313, 314, 314, 315, 315, 315, 315, 315, 315, 314, 313, 312, 310, 308, 307, 306, 306, 305 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 395, 405, 415, 424, 433, 441, 450, 458, 465, 472, 479, 485, 491, 497, 502, 507, 512, 517, 522 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8417, 8431, 8474, 8532, 8597, 8661, 8720, 8770, 8812, 8846, 8875, 8899, 8917, 8924, 8916, 888 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, 19, 19, 19, 19, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6732, 6852, 6966, 7074, 7175, 7269, 7357, 7439, 7516, 7589, 7658, 7724, 7787, 7848, 7906, 796 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1473, 1485, 1498, 1510, 1522, 1533, 1543, 1552, 1561, 1570, 1580, 1590, 1601, 1611, 1621, 163 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 28070, 28239, 28433, 28644, 28866, 29097, 29337, 29585, 29846, 30123, 30419, 30737, 31074, 31 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1254, 1283, 1309, 1332, 1354, 1374, 1394, 1413, 1432, 1451, 1471, 1491, 1512, 1534, 1556, 157 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6938, 6937, 6940, 6944, 6951, 6960, 6970, 6984, 7002, 7026, 7056, 7094, 7139, 7188, 7237, 728 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8628, 8674, 8721, 8770, 8820, 8871, 8922, 8974, 9028, 9083, 9141, 9200, 9262, 9323, 9383, 944 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 41832, 41985, 42253, 42593, 42973, 43372, 43781, 44203, 44651, 45144, 45699, 46320, 46992, 47 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 70094, 70467, 70808, 71117, 71396, 71655, 71909, 72180, 72491, 72869, 73336, 73900, 74552, 75 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 296, 298, 300, 302, 303, 305, 307, 309, 310, 312, 315, 317, 321, 324, 327, 330, 332, 334, 336 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 20, 19, 19, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 10027, 10149, 10276, 10407, 10543, 10681, 10822, 10967, 11114, 11265, 11419, 11576, 11735, 11 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 4668, 4726, 4789, 4852, 4913, 4971, 5027, 5083, 5144, 5213, 5296, 5393, 5503, 5618, 5729, 583 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 46, 48, 50, 51, 52, 53, 53, 53, 54, 54, 55, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 6 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 38, 38, 39, 40, 42, 44, 46, 48, 50, 53, 54, 55, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 60, 6 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 79, 80, 81, 83, 86, 89, 92, 96, 100, 104, 110, 115, 121, 127, 134, 140, 146, 153, 159, 164, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 211, 216, 220, 223, 225, 227, 228, 229, 230, 230, 231, 232, 233, 234, 234, 235, 236, 236, 237 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 11, 11,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 12, 13, 14, 15 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5920, 6051, 6180, 6305, 6424, 6539, 6652, 6765, 6881, 7005, 7141, 7290, 7450, 7618, 7787, 795 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 100, 105, 108, 112, 114, 117, 119, 121, 123, 125, 127, 128, 130, 131, 132, 134, 136, 138, 140 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 51, 52, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 72, 7 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2380, 2453, 2532, 2615, 2703, 2796, 2892, 2992, 3095, 3202, 3312, 3425, 3540, 3658, 3778, 390 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 77, 77, 77, 78, 79, 81, 83, 85, 86, 88, 90, 91, 92, 93, 94, 95, 95, 95, 95, 95, 94, 94, 94, 9 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 210, 213, 217, 223, 229, 236, 244, 252, 260, 268, 275, 281, 287, 291, 296, 300, 304, 309, 313 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3221, 3276, 3333, 3392, 3453, 3516, 3582, 3650, 3721, 3794, 3869, 3947, 4026, 4107, 4190, 427 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1403, 1437, 1468, 1496, 1521, 1542, 1560, 1576, 1592, 1609, 1629, 1652, 1679, 1707, 1735, 176 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 222, 224, 228, 233, 239, 246, 253, 260, 267, 274, 282, 288, 295, 301, 306, 311, 315, 319, 321 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 14, 14, 14, 15, 15, 14, 14, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2218, 2210, 2212, 2221, 2233, 2247, 2262, 2279, 2299, 2323, 2356, 2396, 2442, 2491, 2538, 257 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 46, 46, 46, 47, 48, 48, 49, 50, 51, 51, 51, 51, 51, 51, 50, 49, 48, 47, 46, 46, 45, 44, 44, 4 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 83, 84, 85, 85, 86, 87, 87, 88, 88, 89, 90, 91, 92, 93, 95, 96, 98, 100, 101, 103, 104, 105,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 67, 68, 69, 71, 72, 74, 75, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 90, 91, 92, 9 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, 12 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 646, 659, 676, 695, 717, 740, 763, 786, 809, 829, 848, 865, 880, 893, 903, 912, 920, 926, 931 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 27, 27, 28, 29, 29, 29, 29, 30, 30, 31, 33, 35, 39, 42, 46, 50, 53, 55, 58, 61, 64, 68, 73, 7 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 69, 71, 73, 76, 78, 80, 82, 85, 87, 89, 92, 95, 97, 100, 103, 106, 109, 113, 116, 119, 122, 1 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 966, 994, 1025, 1058, 1093, 1129, 1167, 1206, 1246, 1289, 1334, 1382, 1431, 1482, 1533, 1583, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2200, 2237, 2280, 2327, 2378, 2433, 2491, 2553, 2621, 2694, 2773, 2859, 2951, 3047, 3145, 324 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3146, 3238, 3331, 3426, 3521, 3619, 3719, 3820, 3924, 4031, 4141, 4253, 4369, 4488, 4610, 473 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1487, 1525, 1568, 1616, 1666, 1717, 1770, 1824, 1880, 1940, 2002, 2069, 2139, 2211, 2283, 235 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 28296, 29110, 29980, 30904, 31880, 32906, 33978, 35095, 36253, 37448, 38677, 39939, 41234, 42 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1295, 1332, 1372, 1414, 1460, 1508, 1558, 1611, 1664, 1719, 1775, 1830, 1887, 1944, 2002, 206 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 860, 882, 905, 930, 956, 983, 1011, 1040, 1071, 1103, 1136, 1170, 1206, 1243, 1281, 1319, 135 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 17150, 17507, 17866, 18225, 18580, 18931, 19277, 19618, 19955, 20290, 20624, 20959, 21295, 21 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2714, 2768, 2824, 2883, 2944, 3007, 3072, 3139, 3209, 3280, 3353, 3428, 3505, 3585, 3667, 375 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 53975, 55677, 57437, 59235, 61058, 62903, 64772, 66677, 68632, 70660, 72776, 74988, 77287, 79 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 6082, 6194, 6322, 6461, 6610, 6767, 6930, 7100, 7276, 7459, 7649, 7846, 8048, 8252, 8455, 865 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 12000, 12346, 12699, 13063, 13439, 13828, 14232, 14652, 15087, 15539, 16006, 16489, 16986, 17 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3452, 3542, 3635, 3731, 3830, 3933, 4041, 4153, 4269, 4389, 4515, 4645, 4780, 4919, 5064, 521 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 25, 26, 27, 27, 28, 29, 29, 30, 31, 31, 32, 34, 35, 36, 38, 39, 41, 43, 45, 47, 49, 50, 52, 5 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 407, 423, 439, 454, 469, 483, 498, 513, 529, 545, 560, 576, 592, 608, 624, 641, 658, 676, 693 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1473, 1512, 1551, 1592, 1633, 1675, 1718, 1763, 1810, 1858, 1907, 1958, 2011, 2065, 2121, 217 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7632, 7822, 8022, 8231, 8447, 8672, 8904, 9145, 9396, 9658, 9932, 10218, 10517, 10826, 11144, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 215, 223, 230, 236, 243, 250, 258, 265, 273, 282, 290, 298, 307, 315, 323, 332, 342, 351, 361 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2239, 2261, 2286, 2313, 2342, 2373, 2405, 2438, 2471, 2505, 2539, 2572, 2604, 2635, 2666, 269 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5094, 5292, 5509, 5739, 5981, 6230, 6487, 6750, 7019, 7296, 7580, 7873, 8172, 8477, 8786, 909 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 37, 38, 38, 39, 40, 41, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 50, 51, 51, 52, 52, 53, 5 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 13737, 14100, 14482, 14882, 15300, 15734, 16178, 16625, 17068, 17499, 17909, 18295, 18658, 19 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 23, 23, 24, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 40, 41, 43, 45, 46, 47, 48, 4 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 157813, 159927, 162363, 165051, 167929, 170939, 174030, 177155, 180275, 183353, 186362, 18927 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 8177, 8418, 8627, 8822, 9015, 9213, 9421, 9637, 9859, 10080, 10292, 10495, 10691, 10893, 1111 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1908, 1948, 1993, 2040, 2088, 2136, 2183, 2229, 2275, 2323, 2372, 2424, 2477, 2531, 2582, 262 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 289, 296, 305, 314, 324, 335, 346, 357, 368, 380, 393, 407, 422, 436, 450, 464, 476, 488, 499 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 65, 64, 64, 65, 66, 68, 69, 71, 73, 76, 78, 81, 83, 86, 89, 91, 94, 96, 99, 101, 105, 109, 11 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 1708, 1729, 1751, 1773, 1797, 1821, 1848, 1875, 1904, 1935, 1967, 2001, 2037, 2076, 2117, 216 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 90, 92, 94, 97, 99, 102, 105, 108, 111, 114, 118, 121, 125, 129, 133, 137, 141, 145, 150, 155 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 79, 81, 83, 85, 88, 91, 9 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 60, 60, 61, 61, 62, 63, 63, 64, 65, 66, 67, 68, 70, 71, 73, 75, 77, 78, 80, 82, 84, 86, 88, 8 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 26, 27, 27, 28, 28, 29, 30, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 4 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 20, 20, 21, 22, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 45, 46, 47, 49, 50, 52, 54, 56, 58, 60, 61, 62, 62, 6 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7, 7, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22, 23, 24, 24, 25, 26, 27, 27, 28, 28, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 15, 15, 16, 16, 16, 16, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 19, 20, 21, 21, 21, 22, 21, 2 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 60, 62, 64, 66, 67, 69, 70, 72, 74, 76, 78, 81, 84, 87, 90, 93, 97, 100, 103, 107, 110, 114,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 3,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 82, 84, 87, 89, 92, 94, 97, 100, 102, 105, 109, 112, 116, 120, 123, 127, 131, 134, 138, 141,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 47, 49, 51, 53, 54, 55, 56, 57, 59, 60, 62, 64, 66, 69, 72, 74, 77, 79, 81, 83, 84, 86, 86, 8 [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,  [...]
+structure(list(args=c( 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ), vals=c( 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 11,  [...]
+), 
+labels = list(
+"EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "EastAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "CentralAfrica", "NorthAfrica", "NorthAfrica", "NorthAfrica", "NorthAfrica", [...]
+),
+identifier = list(
+"Burundi", "Comoros", "Djibouti", "Eritrea", "Ethiopia", "Kenya", "Madagascar", "Malawi", "Mauritius", "Mayotte", "Mozambique", "Reunion", "Rwanda", "Seychelles", "Somalia", "South Sudan", "Uganda", "United Republic of Tanzania", "Zambia", "Zimbabwe", "Angola", "Cameroon", "Central African Republic", "Chad", "Congo", "Democratic Republic of the Congo", "Equatorial Guinea", "Gabon", "Sao Tome and Principe", "Algeria", "Egypt", "Libya", "Morocco", "Sudan", "Tunisia", "Western Sahara", "Bot [...]
+)), class = "functional")
+)
\ No newline at end of file
diff --git a/R/dataf.sim.r b/R/dataf.sim.r
new file mode 100644
index 0000000..61bfb8e
--- /dev/null
+++ b/R/dataf.sim.r
@@ -0,0 +1,114 @@
+dataf.sim.1.CFF07 <- function(numTrain = 100, numTest = 50, numDiscrets = 51, plot = FALSE){
+  # Processes:
+  # X(t) = m_0(t) + e(t), m_0(t) = 30*(1-t)*t^1.2
+  # Y(t) = m_1(t) + e(t), m_1(t) = 30*(1-t)^1.2*t
+  # e(t): Gaussian with mean = 0, cov(X(s), X(t)) = 0.2*exp(-abs(s - t)/0.3)
+  
+  t <- 0:(numDiscrets - 1)/(numDiscrets - 1)
+  mean0 <- 30*(1-t)*t^1.2
+  mean1 <- 30*(1-t)^1.2*t
+  cov <- matrix(nrow=numDiscrets, ncol=numDiscrets)
+  for (i in 1:numDiscrets){
+    for (j in 1:numDiscrets){
+      cov[i,j] <- 0.2*exp(-abs(t[i] - t[j])/0.3)
+    }
+  }
+  
+  X <- mvrnorm(n=numTrain+numTest, mu=mean0, Sigma=cov)
+  Y <- mvrnorm(n=numTrain+numTest, mu=mean1, Sigma=cov)
+  
+  datafX <- list()
+  datafY <- list()
+  labelsX <- as.list(rep(0,numTrain+numTest))
+  labelsY <- as.list(rep(1,numTrain+numTest))
+  for (i in 1:(numTrain + numTest)){
+    datafX[[i]] <- list(args = t, vals = X[i,])
+    datafY[[i]] <- list(args = t, vals = Y[i,])
+  }
+  
+  learn <- list(dataf = c(head(datafX, numTrain), head(datafY, numTrain)), 
+                labels = c(head(labelsX, numTrain), head(labelsY, numTrain)))
+  class(learn) = "functional"
+  test <- list(dataf = c(tail(datafX, numTest), tail(datafY, numTest)), 
+               labels = c(tail(labelsX, numTest), tail(labelsY, numTest)))
+  class(test) = "functional"
+  if (plot){
+    plot(0, type="n", xlim=c(0,1), ylim=c(0, 9), 
+         main=paste("Model 1 from CuevasFF07: ", 
+                    "0 red (", sum(unlist(learn$labels) == 0), "), ", 
+                    "1 blue (", sum(unlist(learn$labels) == 1), "), ", sep=""))
+    grid()
+    for (i in 1:length(learn$dataf)){
+      if (learn$labels[[i]] == 0){
+        lineColor <- "red"
+        lineType <- 1
+      }
+      if (learn$labels[[i]] == 1){
+        lineColor <- "blue"
+        lineType <- 2
+      }
+      lines(learn$dataf[[i]]$args, learn$dataf[[i]]$vals, col=lineColor, lty=lineType)
+    }
+  }
+  
+  return (list(learn = learn, test = test))
+}
+
+dataf.sim.2.CFF07 <- function(numTrain = 100, numTest = 50, numDiscrets = 51, plot = FALSE){
+  # Processes
+  # X(t) = m_0(t) + e(t), m_0(t) = 30*(1-t)*t^2 + 0.5*abs(sin(20*pi*t))
+  # Y(t) = smooth.spline with 8 knots
+  # e(t): Gaussian with mean = 0, cov(X(s), X(t)) = 0.2*exp(-abs(s - t)/0.3)
+  
+  t <- 0:(numDiscrets - 1)/(numDiscrets - 1)
+  mean0 <- 30*(1 - t)*t^2 + 0.5*abs(sin(20*pi*t))
+  cov <- matrix(nrow=numDiscrets, ncol=numDiscrets)
+  for (i in 1:numDiscrets){
+    for (j in 1:numDiscrets){
+      cov[i,j] <- 0.2*exp(-abs(t[i] - t[j])/0.3)
+    }
+  }
+  
+  X <- mvrnorm(n=numTrain+numTest, mu=mean0, Sigma=cov)
+  Y <- NULL
+  for (i in 1:nrow(X)){
+    Y <- rbind(Y, smooth.spline(t, X[i,], nknots = 8)$y)
+  }
+  
+  datafX <- list()
+  datafY <- list()
+  labelsX <- as.list(rep(0,numTrain+numTest))
+  labelsY <- as.list(rep(1,numTrain+numTest))
+  for (i in 1:(numTrain + numTest)){
+    datafX[[i]] <- list(args = t, vals = X[i,])
+    datafY[[i]] <- list(args = t, vals = Y[i,])
+  }
+  
+  learn <- list(dataf = c(head(datafX, numTrain), head(datafY, numTrain)), 
+                labels = c(head(labelsX, numTrain), head(labelsY, numTrain)))
+  class(learn) = "functional"
+  test <- list(dataf = c(tail(datafX, numTest), tail(datafY, numTest)), 
+               labels = c(tail(labelsX, numTest), tail(labelsY, numTest)))
+  class(test) = "functional"
+  
+  if (plot){
+    plot(0, type="n", xlim=c(0,1), ylim=c(0, 7), 
+         main=paste("Model 2 from CuevasFF07: ", 
+                    "0 red (", sum(unlist(learn$labels) == 0), "), ", 
+                    "1 blue (", sum(unlist(learn$labels) == 1), "), ", sep=""))
+    grid()
+    for (i in 1:length(learn$dataf)){
+      if (learn$labels[[i]] == 0){
+        lineColor <- "red"
+        lineType <- 1
+      }
+      if (learn$labels[[i]] == 1){
+        lineColor <- "blue"
+        lineType <- 2
+      }
+      lines(learn$dataf[[i]]$args, learn$dataf[[i]]$vals, col=lineColor, lty=lineType)
+    }
+  }
+  
+  return (list(learn = learn, test = test))
+}
\ No newline at end of file
diff --git a/R/dataf.tecator.r b/R/dataf.tecator.r
new file mode 100644
index 0000000..01bcca6
--- /dev/null
+++ b/R/dataf.tecator.r
@@ -0,0 +1,8638 @@
+dataf.tecator <- function() return (structure(list(
+  name = "Tecator",
+  args = "wavelength",
+  vals = "absorbance",
+  
+  dataf = list(structure(list(args = c(850, 852.020202020202, 
+854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+1047.9797979798, 1050), vals = c(2.61776, 2.61814, 2.61859, 2.61912, 
+2.61981, 2.62071, 2.62186, 2.62334, 2.62511, 2.62722, 2.62964, 
+2.63245, 2.63565, 2.63933, 2.64353, 2.64825, 2.6535, 2.65937, 
+2.66585, 2.67281, 2.68008, 2.68733, 2.69427, 2.70073, 2.70684, 
+2.71281, 2.71914, 2.72628, 2.73462, 2.74416, 2.75466, 2.76568, 
+2.77679, 2.7879, 2.79949, 2.81225, 2.82706, 2.84356, 2.86106, 
+2.87857, 2.89497, 2.90924, 2.92085, 2.93015, 2.93846, 2.94771, 
+2.96019, 2.97831, 3.00306, 3.03506, 3.07428, 3.11963, 3.16868, 
+3.21771, 3.26254, 3.29988, 3.32847, 3.34899, 3.36342, 3.37379, 
+3.38152, 3.38741, 3.39164, 3.39418, 3.3949, 3.39366, 3.39045, 
+3.38541, 3.37869, 3.37041, 3.36073, 3.34979, 3.33769, 3.32443, 
+3.31013, 3.29487, 3.27891, 3.26232, 3.24542, 3.22828, 3.2108, 
+3.19287, 3.17433, 3.15503, 3.13475, 3.11339, 3.09116, 3.0685, 
+3.04596, 3.02393, 3.00247, 2.98145, 2.96072, 2.94013, 2.91978, 
+2.89966, 2.87964, 2.8596, 2.8394, 2.8192)), .Names = c("args", 
+"vals")), structure(list(args = c(850, 852.020202020202, 854.040404040404, 
+856.060606060606, 858.080808080808, 860.10101010101, 862.121212121212, 
+864.141414141414, 866.161616161616, 868.181818181818, 870.20202020202, 
+872.222222222222, 874.242424242424, 876.262626262626, 878.282828282828, 
+880.30303030303, 882.323232323232, 884.343434343434, 886.363636363636, 
+888.383838383838, 890.40404040404, 892.424242424242, 894.444444444444, 
+896.464646464646, 898.484848484848, 900.50505050505, 902.525252525253, 
+904.545454545455, 906.565656565657, 908.585858585859, 910.606060606061, 
+912.626262626263, 914.646464646465, 916.666666666667, 918.686868686869, 
+920.707070707071, 922.727272727273, 924.747474747475, 926.767676767677, 
+928.787878787879, 930.808080808081, 932.828282828283, 934.848484848485, 
+936.868686868687, 938.888888888889, 940.909090909091, 942.929292929293, 
+944.949494949495, 946.969696969697, 948.989898989899, 951.010101010101, 
+953.030303030303, 955.050505050505, 957.070707070707, 959.090909090909, 
+961.111111111111, 963.131313131313, 965.151515151515, 967.171717171717, 
+969.191919191919, 971.212121212121, 973.232323232323, 975.252525252525, 
+977.272727272727, 979.292929292929, 981.313131313131, 983.333333333333, 
+985.353535353535, 987.373737373737, 989.393939393939, 991.414141414141, 
+993.434343434343, 995.454545454545, 997.474747474747, 999.49494949495, 
+1001.51515151515, 1003.53535353535, 1005.55555555556, 1007.57575757576, 
+1009.59595959596, 1011.61616161616, 1013.63636363636, 1015.65656565657, 
+1017.67676767677, 1019.69696969697, 1021.71717171717, 1023.73737373737, 
+1025.75757575758, 1027.77777777778, 1029.79797979798, 1031.81818181818, 
+1033.83838383838, 1035.85858585859, 1037.87878787879, 1039.89898989899, 
+1041.91919191919, 1043.93939393939, 1045.9595959596, 1047.9797979798, 
+1050), vals = c(2.83454, 2.83871, 2.84283, 2.84705, 2.85138, 
+2.85587, 2.8606, 2.86566, 2.87093, 2.87661, 2.88264, 2.88898, 
+2.89577, 2.90308, 2.91097, 2.91953, 2.92873, 2.93863, 2.94929, 
+2.96072, 2.97272, 2.98493, 2.9969, 3.00833, 3.0192, 3.0299, 3.04101, 
+3.05345, 3.06777, 3.08416, 3.10221, 3.12106, 3.13983, 3.1581, 
+3.17623, 3.19519, 3.21584, 3.23747, 3.25889, 3.27835, 3.29384, 
+3.30362, 3.30681, 3.30393, 3.297, 3.28925, 3.28409, 3.28505, 
+3.29326, 3.30923, 3.33267, 3.36251, 3.39661, 3.43188, 3.46492, 
+3.49295, 3.51458, 3.53004, 3.54067, 3.54797, 3.55306, 3.55675, 
+3.55921, 3.56045, 3.56034, 3.55876, 3.55571, 3.55132, 3.54585, 
+3.5395, 3.53235, 3.52442, 3.51583, 3.50668, 3.497, 3.48683, 3.47626, 
+3.46552, 3.45501, 3.44481, 3.43477, 3.42465, 3.41419, 3.40303, 
+3.39082, 3.37731, 3.36265, 3.34745, 3.33245, 3.31818, 3.30473, 
+3.29186, 3.27921, 3.26655, 3.25369, 3.24045, 3.22659, 3.21181, 
+3.196, 3.17942)), .Names = c("args", "vals")), structure(list(
+    args = c(850, 852.020202020202, 854.040404040404, 856.060606060606, 
+    858.080808080808, 860.10101010101, 862.121212121212, 864.141414141414, 
+    866.161616161616, 868.181818181818, 870.20202020202, 872.222222222222, 
+    874.242424242424, 876.262626262626, 878.282828282828, 880.30303030303, 
+    882.323232323232, 884.343434343434, 886.363636363636, 888.383838383838, 
+    890.40404040404, 892.424242424242, 894.444444444444, 896.464646464646, 
+    898.484848484848, 900.50505050505, 902.525252525253, 904.545454545455, 
+    906.565656565657, 908.585858585859, 910.606060606061, 912.626262626263, 
+    914.646464646465, 916.666666666667, 918.686868686869, 920.707070707071, 
+    922.727272727273, 924.747474747475, 926.767676767677, 928.787878787879, 
+    930.808080808081, 932.828282828283, 934.848484848485, 936.868686868687, 
+    938.888888888889, 940.909090909091, 942.929292929293, 944.949494949495, 
+    946.969696969697, 948.989898989899, 951.010101010101, 953.030303030303, 
+    955.050505050505, 957.070707070707, 959.090909090909, 961.111111111111, 
+    963.131313131313, 965.151515151515, 967.171717171717, 969.191919191919, 
+    971.212121212121, 973.232323232323, 975.252525252525, 977.272727272727, 
+    979.292929292929, 981.313131313131, 983.333333333333, 985.353535353535, 
+    987.373737373737, 989.393939393939, 991.414141414141, 993.434343434343, 
+    995.454545454545, 997.474747474747, 999.49494949495, 1001.51515151515, 
+    1003.53535353535, 1005.55555555556, 1007.57575757576, 1009.59595959596, 
+    1011.61616161616, 1013.63636363636, 1015.65656565657, 1017.67676767677, 
+    1019.69696969697, 1021.71717171717, 1023.73737373737, 1025.75757575758, 
+    1027.77777777778, 1029.79797979798, 1031.81818181818, 1033.83838383838, 
+    1035.85858585859, 1037.87878787879, 1039.89898989899, 1041.91919191919, 
+    1043.93939393939, 1045.9595959596, 1047.9797979798, 1050), 
+    vals = c(2.58284, 2.58458, 2.58629, 2.58808, 2.58996, 2.59192, 
+    2.59401, 2.59627, 2.59873, 2.60131, 2.60414, 2.60714, 2.61029, 
+    2.61361, 2.61714, 2.62089, 2.62486, 2.62909, 2.63361, 2.63835, 
+    2.6433, 2.64838, 2.65354, 2.6587, 2.66375, 2.6688, 2.67383, 
+    2.67892, 2.68411, 2.68937, 2.6947, 2.70012, 2.70563, 2.71141, 
+    2.71775, 2.7249, 2.73344, 2.74327, 2.75433, 2.76642, 2.77931, 
+    2.79272, 2.80649, 2.82064, 2.83541, 2.85121, 2.86872, 2.88905, 
+    2.91289, 2.94088, 2.97325, 3.00946, 3.0478, 3.08554, 3.11947, 
+    3.14696, 3.16677, 3.17938, 3.18631, 3.18924, 3.1895, 3.18801, 
+    3.18498, 3.18039, 3.17411, 3.16611, 3.15641, 3.14512, 3.13241, 
+    3.11843, 3.10329, 3.08714, 3.07014, 3.05237, 3.03393, 3.01504, 
+    2.99569, 2.97612, 2.95642, 2.9366, 2.91667, 2.89655, 2.87622, 
+    2.85563, 2.83474, 2.81361, 2.79235, 2.77113, 2.75015, 2.72956, 
+    2.70934, 2.68951, 2.67009, 2.65112, 2.63262, 2.61461, 2.59718, 
+    2.58034, 2.56404, 2.54816)), .Names = c("args", "vals")), 
+    structure(list(args = c(850, 852.020202020202, 854.040404040404, 
+    856.060606060606, 858.080808080808, 860.10101010101, 862.121212121212, 
+    864.141414141414, 866.161616161616, 868.181818181818, 870.20202020202, 
+    872.222222222222, 874.242424242424, 876.262626262626, 878.282828282828, 
+    880.30303030303, 882.323232323232, 884.343434343434, 886.363636363636, 
+    888.383838383838, 890.40404040404, 892.424242424242, 894.444444444444, 
+    896.464646464646, 898.484848484848, 900.50505050505, 902.525252525253, 
+    904.545454545455, 906.565656565657, 908.585858585859, 910.606060606061, 
+    912.626262626263, 914.646464646465, 916.666666666667, 918.686868686869, 
+    920.707070707071, 922.727272727273, 924.747474747475, 926.767676767677, 
+    928.787878787879, 930.808080808081, 932.828282828283, 934.848484848485, 
+    936.868686868687, 938.888888888889, 940.909090909091, 942.929292929293, 
+    944.949494949495, 946.969696969697, 948.989898989899, 951.010101010101, 
+    953.030303030303, 955.050505050505, 957.070707070707, 959.090909090909, 
+    961.111111111111, 963.131313131313, 965.151515151515, 967.171717171717, 
+    969.191919191919, 971.212121212121, 973.232323232323, 975.252525252525, 
+    977.272727272727, 979.292929292929, 981.313131313131, 983.333333333333, 
+    985.353535353535, 987.373737373737, 989.393939393939, 991.414141414141, 
+    993.434343434343, 995.454545454545, 997.474747474747, 999.49494949495, 
+    1001.51515151515, 1003.53535353535, 1005.55555555556, 1007.57575757576, 
+    1009.59595959596, 1011.61616161616, 1013.63636363636, 1015.65656565657, 
+    1017.67676767677, 1019.69696969697, 1021.71717171717, 1023.73737373737, 
+    1025.75757575758, 1027.77777777778, 1029.79797979798, 1031.81818181818, 
+    1033.83838383838, 1035.85858585859, 1037.87878787879, 1039.89898989899, 
+    1041.91919191919, 1043.93939393939, 1045.9595959596, 1047.9797979798, 
+    1050), vals = c(2.82286, 2.8246, 2.8263, 2.82814, 2.83001, 
+    2.83192, 2.83392, 2.83606, 2.83842, 2.84097, 2.84374, 2.84664, 
+    2.84975, 2.85307, 2.85661, 2.86038, 2.86437, 2.8686, 2.87308, 
+    2.87789, 2.88301, 2.88832, 2.89374, 2.89917, 2.90457, 2.90991, 
+    2.91521, 2.92043, 2.92565, 2.93082, 2.93604, 2.94128, 2.94658, 
+    2.95202, 2.95777, 2.96419, 2.97159, 2.98045, 2.9909, 3.00284, 
+    3.01611, 3.03048, 3.04579, 3.06194, 3.07889, 3.09686, 3.11629, 
+    3.13775, 3.16217, 3.19068, 3.22376, 3.26172, 3.30379, 3.34793, 
+    3.39093, 3.4292, 3.45998, 3.48227, 3.49687, 3.50558, 3.51026, 
+    3.51221, 3.51215, 3.51036, 3.50682, 3.5014, 3.49398, 3.48457, 
+    3.47333, 3.46041, 3.44595, 3.43005, 3.41285, 3.3945, 3.37511, 
+    3.35482, 3.33376, 3.31204, 3.28986, 3.2673, 3.24442, 3.22117, 
+    3.19757, 3.17357, 3.14915, 3.12429, 3.09908, 3.07366, 3.04825, 
+    3.02308, 2.9982, 2.97367, 2.94951, 2.92576, 2.90251, 2.87988, 
+    2.85794, 2.83672, 2.81617, 2.79622)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.78813, 2.78989, 2.79167, 
+    2.7935, 2.79538, 2.79746, 2.79984, 2.80254, 2.80553, 2.8089, 
+    2.81272, 2.81704, 2.82184, 2.8271, 2.83294, 2.83945, 2.84664, 
+    2.85458, 2.86331, 2.8728, 2.88291, 2.89335, 2.90374, 2.91371, 
+    2.92305, 2.93187, 2.9406, 2.94986, 2.96035, 2.97241, 2.98606, 
+    3.00097, 3.01652, 3.0322, 3.04793, 3.06413, 3.08153, 3.10078, 
+    3.12185, 3.14371, 3.1651, 3.1847, 3.2014, 3.21477, 3.22544, 
+    3.23505, 3.24586, 3.26027, 3.28063, 3.30889, 3.34543, 3.39019, 
+    3.44198, 3.498, 3.55407, 3.60534, 3.64789, 3.68011, 3.70272, 
+    3.71815, 3.72863, 3.73574, 3.74059, 3.74357, 3.74453, 3.74336, 
+    3.73991, 3.73418, 3.72638, 3.71676, 3.70553, 3.69289, 3.679, 
+    3.66396, 3.64785, 3.63085, 3.61305, 3.59463, 3.57582, 3.55695, 
+    3.53796, 3.5188, 3.49936, 3.47938, 3.45869, 3.43711, 3.41458, 
+    3.39129, 3.36772, 3.3445, 3.32201, 3.30025, 3.27907, 3.25831, 
+    3.23784, 3.21765, 3.19766, 3.1777, 3.1577, 3.13753)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.00993, 3.0154, 3.02086, 
+    3.02634, 3.0319, 3.03756, 3.04341, 3.04955, 3.05599, 3.06274, 
+    3.06982, 3.07724, 3.08511, 3.09343, 3.10231, 3.11185, 3.12205, 
+    3.13294, 3.14457, 3.15703, 3.17038, 3.18429, 3.1984, 3.21225, 
+    3.22552, 3.23827, 3.25084, 3.26393, 3.27851, 3.29514, 3.31401, 
+    3.33458, 3.35591, 3.37709, 3.39772, 3.41828, 3.43974, 3.46266, 
+    3.48663, 3.51002, 3.53087, 3.54711, 3.55699, 3.55986, 3.55656, 
+    3.54937, 3.54169, 3.53692, 3.53823, 3.5476, 3.56512, 3.59043, 
+    3.62229, 3.6583, 3.69515, 3.72932, 3.75803, 3.78003, 3.7956, 
+    3.80614, 3.81313, 3.81774, 3.82079, 3.82258, 3.82301, 3.82206, 
+    3.81959, 3.81557, 3.81021, 3.80375, 3.79642, 3.78835, 3.77958, 
+    3.77024, 3.7604, 3.75005, 3.73929, 3.72831, 3.71738, 3.70681, 
+    3.69664, 3.68659, 3.67649, 3.66611, 3.65503, 3.64283, 3.62938, 
+    3.61483, 3.5999, 3.58535, 3.57163, 3.55877, 3.54651, 3.53442, 
+    3.52221, 3.50972, 3.49682, 3.48325, 3.4687, 3.45307)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.98893, 2.99435, 2.9998, 
+    3.0054, 3.01117, 3.01716, 3.02347, 3.03014, 3.03708, 3.04445, 
+    3.05213, 3.06032, 3.06905, 3.07841, 3.08846, 3.09918, 3.11059, 
+    3.12265, 3.13566, 3.14936, 3.16331, 3.17695, 3.19001, 3.20256, 
+    3.21496, 3.22788, 3.24197, 3.25812, 3.27652, 3.29661, 3.31746, 
+    3.33822, 3.35857, 3.37882, 3.39971, 3.42189, 3.44511, 3.46814, 
+    3.48887, 3.50519, 3.51543, 3.51885, 3.51619, 3.50972, 3.50259, 
+    3.49802, 3.49875, 3.50653, 3.52275, 3.54677, 3.57737, 3.61244, 
+    3.64869, 3.68262, 3.71139, 3.7336, 3.74947, 3.76022, 3.76731, 
+    3.77206, 3.77511, 3.77666, 3.77696, 3.77594, 3.77346, 3.76953, 
+    3.76426, 3.75787, 3.75055, 3.74243, 3.73368, 3.72442, 3.71475, 
+    3.70463, 3.69406, 3.68318, 3.67229, 3.66175, 3.6516, 3.64173, 
+    3.63191, 3.62177, 3.61102, 3.59929, 3.58642, 3.57249, 3.55803, 
+    3.54375, 3.53017, 3.51747, 3.50544, 3.49372, 3.48197, 3.46996, 
+    3.45756, 3.44456, 3.4307, 3.41583, 3.40018, 3.38415)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.52582, 2.52665, 2.52758, 
+    2.52844, 2.52944, 2.53057, 2.53187, 2.53339, 2.53516, 2.5371, 
+    2.53937, 2.54193, 2.54471, 2.54776, 2.55112, 2.55479, 2.55881, 
+    2.56321, 2.56808, 2.57328, 2.57875, 2.58436, 2.58994, 2.59539, 
+    2.60069, 2.60591, 2.61119, 2.61666, 2.62246, 2.62858, 2.63502, 
+    2.64172, 2.64861, 2.65579, 2.6635, 2.67238, 2.68288, 2.69511, 
+    2.709, 2.72432, 2.74071, 2.75776, 2.77516, 2.79274, 2.81083, 
+    2.83024, 2.85189, 2.87681, 2.90596, 2.94022, 2.98013, 3.02557, 
+    3.07533, 3.12683, 3.17635, 3.21975, 3.25322, 3.27754, 3.29438, 
+    3.30581, 3.31357, 3.31875, 3.32198, 3.32346, 3.32312, 3.32085, 
+    3.3165, 3.3101, 3.30175, 3.29157, 3.27989, 3.26688, 3.25257, 
+    3.23709, 3.22056, 3.20312, 3.18497, 3.16623, 3.14704, 3.12753, 
+    3.10768, 3.0875, 3.06697, 3.04598, 3.02452, 3.00249, 2.97994, 
+    2.95703, 2.93406, 2.91133, 2.88903, 2.8672, 2.84572, 2.82458, 
+    2.80388, 2.78372, 2.76415, 2.74515, 2.72671, 2.70876)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.27336, 3.27996, 3.28646, 
+    3.293, 3.29956, 3.30627, 3.3131, 3.32006, 3.32727, 3.33472, 
+    3.34243, 3.35035, 3.35847, 3.3669, 3.37569, 3.38485, 3.39442, 
+    3.40444, 3.41491, 3.42586, 3.43719, 3.44863, 3.45991, 3.47089, 
+    3.48148, 3.49178, 3.50214, 3.51296, 3.52454, 3.53691, 3.54991, 
+    3.5633, 3.5768, 3.59026, 3.60391, 3.61845, 3.63442, 3.65194, 
+    3.67066, 3.68994, 3.70901, 3.72709, 3.74353, 3.75823, 3.77184, 
+    3.78596, 3.80248, 3.82298, 3.8487, 3.88066, 3.91941, 3.96476, 
+    4.01541, 4.06862, 4.12026, 4.16604, 4.20183, 4.22819, 4.24688, 
+    4.25992, 4.26905, 4.27545, 4.2798, 4.28231, 4.28294, 4.28151, 
+    4.27792, 4.27216, 4.26428, 4.25443, 4.24303, 4.23031, 4.21632, 
+    4.20117, 4.18489, 4.16765, 4.14958, 4.13086, 4.11177, 4.09248, 
+    4.07291, 4.05302, 4.03267, 4.01176, 3.99019, 3.96779, 3.94456, 
+    3.92067, 3.89656, 3.87259, 3.84916, 3.8262, 3.80355, 3.78118, 
+    3.75899, 3.73709, 3.71543, 3.69395, 3.67259, 3.65127)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.39805, 3.40539, 3.41271, 
+    3.42001, 3.42735, 3.43479, 3.44245, 3.45035, 3.45838, 3.46665, 
+    3.47511, 3.48385, 3.49294, 3.50235, 3.51212, 3.5223, 3.53289, 
+    3.54394, 3.55545, 3.56757, 3.58, 3.59235, 3.60434, 3.61589, 
+    3.62715, 3.63838, 3.64981, 3.66176, 3.67455, 3.68842, 3.70286, 
+    3.71741, 3.73184, 3.7464, 3.76172, 3.77839, 3.7967, 3.81651, 
+    3.83715, 3.8577, 3.8771, 3.89458, 3.91029, 3.92492, 3.94003, 
+    3.9574, 3.97887, 4.00603, 4.04003, 4.08151, 4.1302, 4.18452, 
+    4.24136, 4.29569, 4.3424, 4.37906, 4.40592, 4.42495, 4.43846, 
+    4.44838, 4.45557, 4.4605, 4.46341, 4.46421, 4.46273, 4.45887, 
+    4.45276, 4.44461, 4.43461, 4.423, 4.40969, 4.395, 4.37887, 
+    4.36182, 4.34385, 4.32492, 4.30535, 4.28533, 4.2651, 4.2446, 
+    4.22354, 4.20185, 4.17942, 4.15606, 4.13174, 4.10661, 4.08106, 
+    4.05559, 4.03052, 4.00597, 3.98173, 3.95779, 3.93407, 3.91059, 
+    3.88728, 3.86413, 3.84107, 3.81811, 3.79531, 3.77262)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.00881, 3.01401, 3.01934, 
+    3.02469, 3.03022, 3.03601, 3.04208, 3.04849, 3.05534, 3.0626, 
+    3.07018, 3.07828, 3.08691, 3.09627, 3.10638, 3.11723, 3.12885, 
+    3.14127, 3.15456, 3.16894, 3.18387, 3.19888, 3.21336, 3.22713, 
+    3.24044, 3.2539, 3.26826, 3.28433, 3.3027, 3.32378, 3.34651, 
+    3.36966, 3.39228, 3.41441, 3.43678, 3.46017, 3.48473, 3.50961, 
+    3.53306, 3.55286, 3.56614, 3.57109, 3.56832, 3.55997, 3.54949, 
+    3.54064, 3.53661, 3.53963, 3.55094, 3.57077, 3.59835, 3.63193, 
+    3.66867, 3.7046, 3.73568, 3.76005, 3.77764, 3.78962, 3.79751, 
+    3.80265, 3.80594, 3.80782, 3.80838, 3.80757, 3.80529, 3.8015, 
+    3.79631, 3.78995, 3.78265, 3.77458, 3.76591, 3.75677, 3.7471, 
+    3.73704, 3.72657, 3.71589, 3.70526, 3.69496, 3.6851, 3.67558, 
+    3.6661, 3.65638, 3.64604, 3.63463, 3.62193, 3.6081, 3.59366, 
+    3.57945, 3.56603, 3.55354, 3.54178, 3.53029, 3.51872, 3.50678, 
+    3.49431, 3.48107, 3.46677, 3.45126, 3.43478, 3.41792)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.15499, 2.1545, 2.15393, 
+    2.15342, 2.153, 2.15263, 2.1523, 2.15209, 2.15214, 2.15232, 
+    2.15265, 2.15305, 2.15356, 2.15424, 2.15514, 2.15623, 2.15748, 
+    2.1589, 2.16058, 2.16251, 2.16471, 2.16703, 2.16941, 2.17181, 
+    2.17418, 2.17661, 2.179, 2.18122, 2.18325, 2.18511, 2.1869, 
+    2.18885, 2.19117, 2.19409, 2.19797, 2.20315, 2.21031, 2.2195, 
+    2.23088, 2.24446, 2.26009, 2.27765, 2.2971, 2.31839, 2.34155, 
+    2.36663, 2.39397, 2.4245, 2.4589, 2.49783, 2.5416, 2.5894, 
+    2.63917, 2.68768, 2.73133, 2.76738, 2.79485, 2.81454, 2.82838, 
+    2.83813, 2.84525, 2.85047, 2.85403, 2.85586, 2.85589, 2.85389, 
+    2.84985, 2.84396, 2.83637, 2.82722, 2.81669, 2.80476, 2.79161, 
+    2.77734, 2.76216, 2.74616, 2.72948, 2.71228, 2.69452, 2.67636, 
+    2.65782, 2.63887, 2.61947, 2.59956, 2.57921, 2.55853, 2.53763, 
+    2.51673, 2.49598, 2.47541, 2.45506, 2.43495, 2.41518, 2.39586, 
+    2.37715, 2.35907, 2.34173, 2.32514, 2.30934, 2.29418)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.88841, 2.89612, 2.90365, 
+    2.91112, 2.91849, 2.9258, 2.93305, 2.94026, 2.94758, 2.95479, 
+    2.96199, 2.96915, 2.97629, 2.98345, 2.99066, 2.99786, 3.00509, 
+    3.01239, 3.01979, 3.02726, 3.03478, 3.04228, 3.04975, 3.05717, 
+    3.0645, 3.07174, 3.07889, 3.08585, 3.09261, 3.09925, 3.10582, 
+    3.1123, 3.11879, 3.12548, 3.13253, 3.14018, 3.14885, 3.15851, 
+    3.16929, 3.18116, 3.19405, 3.20791, 3.22266, 3.23827, 3.25478, 
+    3.27232, 3.29121, 3.31209, 3.33552, 3.36191, 3.39153, 3.42403, 
+    3.45826, 3.49226, 3.52367, 3.55044, 3.57162, 3.58746, 3.59899, 
+    3.60745, 3.61372, 3.61844, 3.62181, 3.62383, 3.62442, 3.62355, 
+    3.6212, 3.6174, 3.61231, 3.60604, 3.59863, 3.59021, 3.58088, 
+    3.57073, 3.55985, 3.54833, 3.53635, 3.52394, 3.51121, 3.49822, 
+    3.48495, 3.47135, 3.45745, 3.44325, 3.42874, 3.41397, 3.39902, 
+    3.38402, 3.36908, 3.35426, 3.3396, 3.3251, 3.31075, 3.29666, 
+    3.28288, 3.26947, 3.25639, 3.24368, 3.23138, 3.21932)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.9886, 2.99705, 3.00537, 
+    3.01352, 3.02157, 3.02955, 3.03748, 3.04537, 3.05328, 3.06115, 
+    3.06899, 3.07685, 3.08469, 3.09251, 3.10034, 3.10823, 3.11618, 
+    3.12415, 3.13224, 3.14041, 3.14863, 3.15685, 3.16505, 3.1732, 
+    3.18126, 3.18918, 3.19704, 3.20476, 3.21232, 3.21976, 3.22709, 
+    3.23435, 3.24164, 3.24907, 3.25699, 3.26552, 3.27506, 3.28564, 
+    3.29734, 3.31014, 3.324, 3.33882, 3.35453, 3.37108, 3.38847, 
+    3.40692, 3.42678, 3.44871, 3.47318, 3.50074, 3.53165, 3.56558, 
+    3.60135, 3.63697, 3.67002, 3.69845, 3.72121, 3.73845, 3.75124, 
+    3.76063, 3.76763, 3.77297, 3.77689, 3.77941, 3.78035, 3.77972, 
+    3.77757, 3.77394, 3.76891, 3.76259, 3.7551, 3.74657, 3.73706, 
+    3.72672, 3.71559, 3.70386, 3.69156, 3.67891, 3.66593, 3.65263, 
+    3.63907, 3.62524, 3.61109, 3.59664, 3.5819, 3.56688, 3.55166, 
+    3.53639, 3.52124, 3.50625, 3.4914, 3.47672, 3.46227, 3.44807, 
+    3.43416, 3.42061, 3.40749, 3.39474, 3.38234, 3.37017)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.13203, 3.14117, 3.15015, 
+    3.15899, 3.16774, 3.17642, 3.18504, 3.1936, 3.20214, 3.21066, 
+    3.21913, 3.22759, 3.23606, 3.24454, 3.25304, 3.26157, 3.27014, 
+    3.27879, 3.2875, 3.29634, 3.3052, 3.31408, 3.32297, 3.33181, 
+    3.34055, 3.34926, 3.35777, 3.36619, 3.37447, 3.38264, 3.39072, 
+    3.39872, 3.40672, 3.41491, 3.4235, 3.43277, 3.44309, 3.45456, 
+    3.46717, 3.48094, 3.49584, 3.51181, 3.52873, 3.54649, 3.56513, 
+    3.58482, 3.60596, 3.62921, 3.65508, 3.68411, 3.71668, 3.75254, 
+    3.79061, 3.82891, 3.86499, 3.89659, 3.92226, 3.94198, 3.95668, 
+    3.96754, 3.97573, 3.98199, 3.98652, 3.98942, 3.99071, 3.99027, 
+    3.98813, 3.98433, 3.97893, 3.97211, 3.96402, 3.95479, 3.9445, 
+    3.93332, 3.92123, 3.90845, 3.89505, 3.88129, 3.86723, 3.85287, 
+    3.83821, 3.82326, 3.80804, 3.79254, 3.77668, 3.76055, 3.74429, 
+    3.72799, 3.71176, 3.6957, 3.67987, 3.6643, 3.64899, 3.63392, 
+    3.61912, 3.60474, 3.59085, 3.57745, 3.56438, 3.55159)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.50688, 2.50783, 2.5088, 
+    2.50985, 2.51101, 2.51229, 2.51369, 2.51523, 2.51692, 2.51888, 
+    2.52103, 2.52331, 2.52576, 2.52841, 2.53122, 2.53423, 2.53752, 
+    2.54095, 2.54465, 2.54859, 2.55274, 2.55703, 2.5614, 2.56579, 
+    2.57016, 2.57449, 2.5788, 2.5831, 2.58734, 2.59156, 2.59575, 
+    2.59996, 2.60428, 2.60886, 2.61396, 2.61985, 2.62702, 2.63551, 
+    2.64524, 2.65624, 2.66831, 2.68128, 2.69503, 2.7095, 2.72479, 
+    2.74116, 2.75911, 2.77959, 2.80313, 2.83051, 2.862, 2.89712, 
+    2.93444, 2.97142, 3.00482, 3.03191, 3.05143, 3.06386, 3.07077, 
+    3.07371, 3.07402, 3.07252, 3.06948, 3.06492, 3.05869, 3.05075, 
+    3.04106, 3.0297, 3.01681, 3.00253, 2.98699, 2.9703, 2.95266, 
+    2.93406, 2.91468, 2.8946, 2.87393, 2.85285, 2.83147, 2.80986, 
+    2.78794, 2.76571, 2.74317, 2.72026, 2.69701, 2.67351, 2.64986, 
+    2.62621, 2.60273, 2.57953, 2.55669, 2.53422, 2.51217, 2.49056, 
+    2.46947, 2.44895, 2.42914, 2.41002, 2.39156, 2.37374)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.62979, 2.632, 2.63413, 
+    2.63626, 2.63846, 2.64072, 2.64303, 2.64548, 2.648, 2.65065, 
+    2.65346, 2.6564, 2.65947, 2.66264, 2.66592, 2.6694, 2.67302, 
+    2.67689, 2.68095, 2.68514, 2.68946, 2.69387, 2.69828, 2.70267, 
+    2.70697, 2.71114, 2.71522, 2.71923, 2.72323, 2.72725, 2.73128, 
+    2.73533, 2.73948, 2.74393, 2.74898, 2.755, 2.76246, 2.77138, 
+    2.78171, 2.79331, 2.806, 2.81959, 2.83391, 2.84895, 2.86486, 
+    2.88209, 2.90118, 2.92336, 2.94913, 2.97917, 3.01363, 3.0519, 
+    3.09222, 3.13179, 3.16746, 3.19675, 3.21871, 3.23405, 3.24441, 
+    3.25133, 3.25598, 3.25903, 3.26062, 3.26066, 3.25909, 3.25586, 
+    3.25095, 3.24435, 3.23616, 3.22654, 3.2156, 3.20347, 3.19022, 
+    3.17585, 3.16056, 3.14436, 3.12748, 3.11004, 3.09214, 3.07381, 
+    3.05504, 3.03578, 3.01601, 2.99572, 2.97493, 2.95364, 2.93202, 
+    2.91024, 2.8885, 2.86696, 2.84566, 2.82459, 2.80375, 2.78326, 
+    2.7632, 2.74361, 2.72461, 2.70611, 2.6881, 2.67051)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.91792, 2.91896, 2.92004, 
+    2.92119, 2.92238, 2.92373, 2.92528, 2.92693, 2.9288, 2.93089, 
+    2.93321, 2.93566, 2.9383, 2.94111, 2.94409, 2.9473, 2.95075, 
+    2.9544, 2.95826, 2.96232, 2.96659, 2.97107, 2.97566, 2.98024, 
+    2.98478, 2.98931, 2.99389, 2.99849, 3.00307, 3.00766, 3.01223, 
+    3.01679, 3.02143, 3.0263, 3.0316, 3.03762, 3.04465, 3.05273, 
+    3.06198, 3.07224, 3.0833, 3.09495, 3.10709, 3.11965, 3.13274, 
+    3.14673, 3.16206, 3.17967, 3.20029, 3.22445, 3.25241, 3.28373, 
+    3.3169, 3.34946, 3.37856, 3.40178, 3.41794, 3.42745, 3.4317, 
+    3.43221, 3.43037, 3.42683, 3.42186, 3.41537, 3.40732, 3.39762, 
+    3.38629, 3.37347, 3.35928, 3.34381, 3.32721, 3.30963, 3.2912, 
+    3.27207, 3.25225, 3.23192, 3.21109, 3.19003, 3.16879, 3.14742, 
+    3.1259, 3.10413, 3.08215, 3.05997, 3.03761, 3.01507, 2.99247, 
+    2.96992, 2.9476, 2.92566, 2.90415, 2.88309, 2.86247, 2.84225, 
+    2.82254, 2.80343, 2.78495, 2.76714, 2.74992, 2.73321)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.85587, 2.85753, 2.85919, 
+    2.86082, 2.86244, 2.86411, 2.86592, 2.86788, 2.87002, 2.87241, 
+    2.87496, 2.87767, 2.88059, 2.88374, 2.88713, 2.8908, 2.89478, 
+    2.89911, 2.90382, 2.90888, 2.91422, 2.9197, 2.92521, 2.9307, 
+    2.93615, 2.94158, 2.94703, 2.95264, 2.95845, 2.96444, 2.97058, 
+    2.97686, 2.98338, 2.99041, 2.99831, 3.00762, 3.0191, 3.03269, 
+    3.04836, 3.06597, 3.08528, 3.10601, 3.12791, 3.15096, 3.1754, 
+    3.20168, 3.23053, 3.26338, 3.30089, 3.34391, 3.39289, 3.44733, 
+    3.50542, 3.56397, 3.61887, 3.66629, 3.70409, 3.73225, 3.75245, 
+    3.76667, 3.77679, 3.78391, 3.78854, 3.79072, 3.79046, 3.78762, 
+    3.78222, 3.7744, 3.76431, 3.75217, 3.7382, 3.7225, 3.70539, 
+    3.68694, 3.66737, 3.64687, 3.62557, 3.60372, 3.58146, 3.55895, 
+    3.53612, 3.51292, 3.48934, 3.46531, 3.44081, 3.41593, 3.39083, 
+    3.36576, 3.34095, 3.31661, 3.2928, 3.26945, 3.24661, 3.22437, 
+    3.20278, 3.18198, 3.16196, 3.1427, 3.12415, 3.10627)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.77761, 2.77938, 2.78124, 
+    2.78315, 2.78513, 2.7872, 2.78945, 2.79194, 2.79459, 2.7975, 
+    2.80069, 2.80412, 2.8077, 2.81151, 2.81557, 2.81989, 2.82446, 
+    2.82933, 2.83456, 2.84014, 2.84596, 2.85201, 2.85819, 2.86441, 
+    2.87062, 2.87676, 2.88298, 2.88924, 2.89559, 2.90204, 2.90862, 
+    2.91526, 2.92193, 2.92871, 2.93588, 2.94379, 2.95281, 2.96325, 
+    2.97503, 2.98798, 3.00194, 3.0166, 3.03174, 3.0473, 3.06344, 
+    3.08047, 3.09898, 3.11968, 3.14383, 3.17216, 3.20524, 3.24294, 
+    3.28394, 3.32563, 3.36451, 3.39739, 3.4224, 3.43945, 3.44992, 
+    3.4556, 3.45803, 3.4581, 3.45644, 3.45307, 3.4479, 3.44086, 
+    3.43188, 3.42102, 3.40846, 3.39435, 3.37883, 3.36205, 3.34414, 
+    3.32521, 3.30534, 3.28463, 3.2633, 3.24146, 3.21931, 3.19686, 
+    3.17414, 3.15114, 3.1278, 3.10409, 3.07997, 3.05545, 3.03061, 
+    3.00567, 2.9809, 2.95646, 2.93241, 2.90877, 2.88551, 2.86264, 
+    2.84028, 2.81853, 2.7975, 2.77718, 2.75747, 2.73836)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.81969, 2.82316, 2.82656, 
+    2.82991, 2.83325, 2.8366, 2.84002, 2.8435, 2.84706, 2.85073, 
+    2.85451, 2.85835, 2.86223, 2.86619, 2.87029, 2.87454, 2.87888, 
+    2.88331, 2.88792, 2.89272, 2.89762, 2.9025, 2.90726, 2.91189, 
+    2.91637, 2.92069, 2.92487, 2.92897, 2.93313, 2.93739, 2.9417, 
+    2.94597, 2.95022, 2.95477, 2.96003, 2.96644, 2.97426, 2.98356, 
+    2.99437, 3.00645, 3.01949, 3.03315, 3.04723, 3.06176, 3.07708, 
+    3.09376, 3.11261, 3.13456, 3.16047, 3.19121, 3.22725, 3.26787, 
+    3.31087, 3.35256, 3.38907, 3.41794, 3.43881, 3.45316, 3.46293, 
+    3.46971, 3.4745, 3.47776, 3.47964, 3.47999, 3.47861, 3.47544, 
+    3.47049, 3.46385, 3.45566, 3.44606, 3.43518, 3.42308, 3.40986, 
+    3.3956, 3.38041, 3.36439, 3.34772, 3.33058, 3.31304, 3.29507, 
+    3.27668, 3.25785, 3.23855, 3.2187, 3.19825, 3.17719, 3.15576, 
+    3.13422, 3.11282, 3.09165, 3.07068, 3.04989, 3.02929, 3.00893, 
+    2.98897, 2.9695, 2.95048, 2.93186, 2.91354, 2.89551)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.79397, 2.79267, 2.79146, 
+    2.79043, 2.78959, 2.78891, 2.78839, 2.78811, 2.78817, 2.78847, 
+    2.78904, 2.78986, 2.79093, 2.7923, 2.79396, 2.79587, 2.79804, 
+    2.80053, 2.80337, 2.80649, 2.80989, 2.81347, 2.81713, 2.82079, 
+    2.82442, 2.82803, 2.83167, 2.83533, 2.83918, 2.84319, 2.84733, 
+    2.85155, 2.85583, 2.86033, 2.86531, 2.87119, 2.87833, 2.8868, 
+    2.89644, 2.90705, 2.91831, 2.92989, 2.94156, 2.95328, 2.96527, 
+    2.97807, 2.9925, 3.00985, 3.03083, 3.05611, 3.0859, 3.11964, 
+    3.15567, 3.1912, 3.22292, 3.24812, 3.26558, 3.27591, 3.28058, 
+    3.28135, 3.2795, 3.2758, 3.27057, 3.26378, 3.25535, 3.24522, 
+    3.23334, 3.21981, 3.2048, 3.18844, 3.17091, 3.15238, 3.13295, 
+    3.11263, 3.09154, 3.06986, 3.04776, 3.02535, 3.00275, 2.98003, 
+    2.95713, 2.93402, 2.91064, 2.88702, 2.8631, 2.83889, 2.81448, 
+    2.79011, 2.76601, 2.74234, 2.71919, 2.69653, 2.67432, 2.6526, 
+    2.63145, 2.61092, 2.59104, 2.57178, 2.55302, 2.53483)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.19633, 2.19528, 2.19424, 
+    2.19317, 2.19215, 2.19127, 2.19059, 2.19007, 2.1898, 2.1897, 
+    2.18974, 2.19008, 2.19069, 2.19156, 2.1927, 2.19413, 2.1959, 
+    2.198, 2.20054, 2.2034, 2.20644, 2.20952, 2.21258, 2.21557, 
+    2.21853, 2.22156, 2.22475, 2.22821, 2.23201, 2.2362, 2.24076, 
+    2.24564, 2.25084, 2.25656, 2.26316, 2.27102, 2.28086, 2.29255, 
+    2.30605, 2.32108, 2.33726, 2.35433, 2.37214, 2.39071, 2.41036, 
+    2.43166, 2.45535, 2.48281, 2.5146, 2.5515, 2.59372, 2.64064, 
+    2.69032, 2.73959, 2.78477, 2.82275, 2.85204, 2.87304, 2.8875, 
+    2.89723, 2.90381, 2.90813, 2.91061, 2.91119, 2.90981, 2.90636, 
+    2.90085, 2.8934, 2.88418, 2.8734, 2.86128, 2.84791, 2.83342, 
+    2.81794, 2.80157, 2.78452, 2.76687, 2.74885, 2.73058, 2.71211, 
+    2.69342, 2.67446, 2.65516, 2.63549, 2.61544, 2.59505, 2.57451, 
+    2.55399, 2.53367, 2.51377, 2.49432, 2.47531, 2.45676, 2.43873, 
+    2.42121, 2.40428, 2.38792, 2.37223, 2.3571, 2.34251)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.32573, 3.33389, 3.3419, 
+    3.34985, 3.35772, 3.36558, 3.37354, 3.3816, 3.38977, 3.39803, 
+    3.40629, 3.41468, 3.42324, 3.43193, 3.44075, 3.44976, 3.45896, 
+    3.4684, 3.47809, 3.48809, 3.4983, 3.50863, 3.51892, 3.52904, 
+    3.53901, 3.54892, 3.55875, 3.56866, 3.57865, 3.58881, 3.59908, 
+    3.60939, 3.61978, 3.63044, 3.64175, 3.65407, 3.66804, 3.68364, 
+    3.70074, 3.71898, 3.73796, 3.75737, 3.77704, 3.79696, 3.81752, 
+    3.83931, 3.86328, 3.89102, 3.92322, 3.96061, 4.00347, 4.05122, 
+    4.10187, 4.15209, 4.19801, 4.23641, 4.26568, 4.28637, 4.30043, 
+    4.30979, 4.3162, 4.32042, 4.32276, 4.32326, 4.32191, 4.3184, 
+    4.31276, 4.30518, 4.29589, 4.28515, 4.27302, 4.25954, 4.24506, 
+    4.22968, 4.21343, 4.19645, 4.17876, 4.16097, 4.14301, 4.12489, 
+    4.10643, 4.08769, 4.06863, 4.04917, 4.02927, 4.00894, 3.98831, 
+    3.9676, 3.94711, 3.927, 3.90727, 3.88788, 3.86877, 3.84997, 
+    3.83162, 3.81367, 3.79624, 3.77928, 3.7626, 3.74616)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.8406, 2.84137, 2.84205, 
+    2.84273, 2.84348, 2.84427, 2.84515, 2.84627, 2.84753, 2.8491, 
+    2.85088, 2.85288, 2.85512, 2.85765, 2.86051, 2.86374, 2.86729, 
+    2.87131, 2.87579, 2.8806, 2.88569, 2.8909, 2.89605, 2.90106, 
+    2.90594, 2.91077, 2.91586, 2.92137, 2.92742, 2.93408, 2.94127, 
+    2.9488, 2.95662, 2.9649, 2.97398, 2.98445, 2.99694, 3.01147, 
+    3.02779, 3.04555, 3.06418, 3.08314, 3.10216, 3.12133, 3.14114, 
+    3.16245, 3.18648, 3.21489, 3.24854, 3.28826, 3.33443, 3.38652, 
+    3.44265, 3.4995, 3.55289, 3.59899, 3.63555, 3.66255, 3.68176, 
+    3.6951, 3.70443, 3.71093, 3.7151, 3.71699, 3.71649, 3.71351, 
+    3.70803, 3.70019, 3.69023, 3.67835, 3.66474, 3.6495, 3.6329, 
+    3.6151, 3.59621, 3.57638, 3.55576, 3.53461, 3.51313, 3.4914, 
+    3.46944, 3.44714, 3.4244, 3.40116, 3.37743, 3.35323, 3.32868, 
+    3.30408, 3.27973, 3.25586, 3.2326, 3.20993, 3.1878, 3.16618, 
+    3.14505, 3.12454, 3.10466, 3.08536, 3.06658, 3.04829)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.40439, 2.40103, 2.3978, 
+    2.39473, 2.39185, 2.38919, 2.38685, 2.38486, 2.38324, 2.38199, 
+    2.3811, 2.3806, 2.38055, 2.38104, 2.3821, 2.38371, 2.38583, 
+    2.38847, 2.39175, 2.39558, 2.39978, 2.40402, 2.40804, 2.41179, 
+    2.41534, 2.41883, 2.42255, 2.42687, 2.43215, 2.43851, 2.44567, 
+    2.45309, 2.46056, 2.46837, 2.47736, 2.48826, 2.50143, 2.51684, 
+    2.53412, 2.55253, 2.57115, 2.58906, 2.60587, 2.62187, 2.63818, 
+    2.65641, 2.67825, 2.70522, 2.73843, 2.7788, 2.8267, 2.88101, 
+    2.93884, 2.99554, 3.04616, 3.08755, 3.11899, 3.14215, 3.1594, 
+    3.17266, 3.18321, 3.19173, 3.19833, 3.20289, 3.20521, 3.20525, 
+    3.20298, 3.19853, 3.19204, 3.1837, 3.17368, 3.16205, 3.14897, 
+    3.1345, 3.11875, 3.10189, 3.08411, 3.06564, 3.04666, 3.0272, 
+    3.00723, 2.98673, 2.96565, 2.94381, 2.92099, 2.89719, 2.87274, 
+    2.84812, 2.82384, 2.80012, 2.77692, 2.75416, 2.73179, 2.70992, 
+    2.68864, 2.66795, 2.64772, 2.62778, 2.60808, 2.5888)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.53798, 2.53468, 2.53148, 
+    2.5284, 2.52551, 2.52291, 2.52062, 2.51868, 2.5171, 2.51592, 
+    2.51514, 2.51476, 2.51484, 2.51544, 2.51664, 2.51844, 2.52079, 
+    2.52371, 2.52726, 2.53142, 2.53596, 2.5405, 2.5448, 2.54874, 
+    2.55246, 2.5562, 2.56023, 2.5649, 2.57056, 2.57731, 2.58492, 
+    2.59283, 2.60078, 2.60906, 2.61847, 2.62985, 2.64359, 2.65964, 
+    2.67761, 2.69671, 2.71602, 2.7346, 2.752, 2.76857, 2.7855, 
+    2.80448, 2.8273, 2.85555, 2.89039, 2.93277, 2.98309, 3.04014, 
+    3.10087, 3.16033, 3.21326, 3.25626, 3.28872, 3.31245, 3.33002, 
+    3.3435, 3.35419, 3.36278, 3.36941, 3.37399, 3.37626, 3.37611, 
+    3.37358, 3.36883, 3.362, 3.35327, 3.34279, 3.33068, 3.31711, 
+    3.30212, 3.28584, 3.26839, 3.24999, 3.23093, 3.21136, 3.19136, 
+    3.17086, 3.14979, 3.12808, 3.10555, 3.08199, 3.0574, 3.03212, 
+    3.00669, 2.98154, 2.95696, 2.93294, 2.90936, 2.88616, 2.86341, 
+    2.84126, 2.81971, 2.79865, 2.77788, 2.75736, 2.73725)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.23584, 2.23529, 2.23474, 
+    2.23419, 2.2337, 2.23332, 2.2331, 2.23305, 2.23318, 2.23349, 
+    2.23402, 2.23477, 2.23573, 2.23699, 2.23857, 2.24048, 2.2427, 
+    2.24528, 2.24825, 2.25162, 2.25525, 2.25897, 2.26257, 2.26602, 
+    2.26934, 2.27269, 2.27619, 2.2801, 2.28461, 2.28977, 2.29539, 
+    2.30116, 2.30691, 2.31287, 2.31961, 2.32764, 2.33721, 2.3483, 
+    2.36062, 2.37369, 2.38698, 2.3999, 2.41223, 2.42419, 2.43651, 
+    2.45026, 2.46651, 2.48632, 2.51049, 2.5398, 2.57465, 2.61433, 
+    2.65686, 2.69902, 2.73721, 2.7689, 2.7932, 2.81093, 2.82371, 
+    2.83298, 2.83977, 2.84469, 2.84794, 2.84948, 2.84918, 2.84698, 
+    2.84289, 2.83704, 2.82957, 2.82067, 2.8105, 2.79919, 2.78683, 
+    2.77355, 2.75943, 2.74459, 2.72923, 2.71357, 2.69774, 2.68174, 
+    2.66552, 2.64907, 2.63232, 2.61517, 2.59749, 2.5793, 2.56078, 
+    2.54232, 2.52419, 2.50659, 2.48945, 2.47271, 2.45632, 2.44033, 
+    2.42478, 2.4097, 2.39503, 2.38063, 2.36647, 2.35262)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.23584, 2.23529, 2.23474, 
+    2.23419, 2.2337, 2.23332, 2.2331, 2.23305, 2.23318, 2.23349, 
+    2.23402, 2.23477, 2.23573, 2.23699, 2.23857, 2.24048, 2.2427, 
+    2.24528, 2.24825, 2.25162, 2.25525, 2.25897, 2.26257, 2.26602, 
+    2.26934, 2.27269, 2.27619, 2.2801, 2.28461, 2.28977, 2.29539, 
+    2.30116, 2.30691, 2.31287, 2.31961, 2.32764, 2.33721, 2.3483, 
+    2.36062, 2.37369, 2.38698, 2.3999, 2.41223, 2.42419, 2.43651, 
+    2.45026, 2.46651, 2.48632, 2.51049, 2.5398, 2.57465, 2.61433, 
+    2.65686, 2.69902, 2.73721, 2.7689, 2.7932, 2.81093, 2.82371, 
+    2.83298, 2.83977, 2.84469, 2.84794, 2.84948, 2.84918, 2.84698, 
+    2.84289, 2.83704, 2.82957, 2.82067, 2.8105, 2.79919, 2.78683, 
+    2.77355, 2.75943, 2.74459, 2.72923, 2.71357, 2.69774, 2.68174, 
+    2.66552, 2.64907, 2.63232, 2.61517, 2.59749, 2.5793, 2.56078, 
+    2.54232, 2.52419, 2.50659, 2.48945, 2.47271, 2.45632, 2.44033, 
+    2.42478, 2.4097, 2.39503, 2.38063, 2.36647, 2.35262)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.78993, 2.79053, 2.79122, 
+    2.79207, 2.79308, 2.79427, 2.79571, 2.79745, 2.79947, 2.80187, 
+    2.80462, 2.8077, 2.81108, 2.81481, 2.81898, 2.82357, 2.8286, 
+    2.83407, 2.84, 2.84631, 2.85291, 2.85961, 2.86617, 2.8725, 
+    2.87857, 2.88449, 2.8906, 2.89713, 2.90419, 2.91183, 2.91997, 
+    2.92845, 2.93712, 2.94603, 2.9555, 2.96615, 2.97864, 2.99285, 
+    3.00847, 3.02501, 3.04173, 3.05797, 3.0734, 3.08814, 3.10291, 
+    3.11883, 3.13722, 3.16006, 3.18831, 3.22285, 3.26398, 3.31102, 
+    3.36188, 3.41304, 3.45995, 3.49857, 3.52695, 3.54556, 3.55658, 
+    3.56234, 3.56468, 3.56477, 3.56278, 3.55884, 3.55287, 3.54469, 
+    3.53421, 3.52165, 3.50732, 3.4914, 3.47395, 3.45517, 3.43527, 
+    3.41426, 3.39238, 3.36978, 3.34659, 3.32305, 3.2993, 3.27545, 
+    3.25141, 3.22711, 3.20246, 3.17736, 3.15174, 3.12556, 3.099, 
+    3.07236, 3.04602, 3.02022, 2.9951, 2.97062, 2.94668, 2.92319, 
+    2.90023, 2.87783, 2.85601, 2.83468, 2.81378, 2.79328)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.58707, 2.58646, 2.58589, 
+    2.58536, 2.58491, 2.58465, 2.58467, 2.58497, 2.5856, 2.58668, 
+    2.58812, 2.58993, 2.59224, 2.5951, 2.59852, 2.60252, 2.60704, 
+    2.61221, 2.61796, 2.62423, 2.63075, 2.63728, 2.64359, 2.64956, 
+    2.65527, 2.66102, 2.66733, 2.67463, 2.68328, 2.69332, 2.70459, 
+    2.71671, 2.7294, 2.74264, 2.75679, 2.77258, 2.7908, 2.81129, 
+    2.83343, 2.8564, 2.87926, 2.90117, 2.92173, 2.94115, 2.96043, 
+    2.98107, 3.005, 3.03463, 3.07095, 3.11493, 3.16676, 3.22561, 
+    3.28909, 3.35308, 3.41255, 3.46303, 3.50215, 3.53014, 3.54926, 
+    3.56216, 3.57085, 3.57669, 3.58015, 3.58117, 3.57969, 3.57565, 
+    3.56903, 3.55993, 3.54863, 3.53541, 3.52047, 3.50405, 3.48625, 
+    3.46726, 3.44725, 3.42631, 3.40461, 3.38239, 3.35985, 3.33712, 
+    3.31418, 3.29087, 3.26722, 3.24303, 3.21815, 3.19266, 3.16675, 
+    3.14074, 3.11508, 3.09011, 3.06592, 3.04249, 3.01967, 2.99747, 
+    2.97577, 2.95454, 2.93377, 2.91341, 2.89335, 2.87367)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.63036, 2.63168, 2.63299, 
+    2.63434, 2.63579, 2.63742, 2.63928, 2.6414, 2.64381, 2.64651, 
+    2.64949, 2.65274, 2.65637, 2.66044, 2.66501, 2.67007, 2.67562, 
+    2.68169, 2.6884, 2.69563, 2.70313, 2.71049, 2.71741, 2.72379, 
+    2.72986, 2.73589, 2.74229, 2.74944, 2.75774, 2.76724, 2.77763, 
+    2.78821, 2.79856, 2.80889, 2.82, 2.83272, 2.84748, 2.86412, 
+    2.88207, 2.90034, 2.91775, 2.93326, 2.94643, 2.95776, 2.96871, 
+    2.98128, 2.9975, 3.0191, 3.04723, 3.08277, 3.12607, 3.17597, 
+    3.22966, 3.28237, 3.32901, 3.36627, 3.39339, 3.41215, 3.42499, 
+    3.43403, 3.44056, 3.44526, 3.44834, 3.44963, 3.44885, 3.44585, 
+    3.44077, 3.43386, 3.42522, 3.41508, 3.40356, 3.39085, 3.37706, 
+    3.36222, 3.34644, 3.32982, 3.3126, 3.29508, 3.27741, 3.25962, 
+    3.24159, 3.22324, 3.20445, 3.18502, 3.16459, 3.14312, 3.12092, 
+    3.09855, 3.07659, 3.05532, 3.03469, 3.01443, 2.9944, 2.9746, 
+    2.95515, 2.93608, 2.91725, 2.89843, 2.87951, 2.86072)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.64692, 3.65042, 3.6539, 
+    3.65758, 3.66153, 3.66578, 3.67033, 3.67517, 3.68034, 3.68619, 
+    3.69235, 3.69895, 3.70601, 3.71356, 3.72165, 3.73032, 3.73956, 
+    3.74949, 3.7601, 3.77138, 3.78321, 3.79533, 3.80742, 3.81924, 
+    3.83075, 3.84213, 3.85375, 3.8661, 3.87933, 3.89359, 3.90865, 
+    3.9241, 3.93965, 3.95525, 3.97123, 3.98844, 4.00762, 4.02863, 
+    4.05082, 4.07309, 4.09432, 4.11354, 4.13023, 4.14458, 4.15764, 
+    4.17137, 4.18797, 4.21012, 4.2391, 4.2757, 4.32026, 4.37196, 
+    4.42824, 4.48476, 4.5364, 4.57889, 4.61021, 4.63085, 4.64278, 
+    4.64843, 4.6503, 4.64959, 4.64662, 4.64112, 4.63337, 4.62295, 
+    4.60994, 4.59481, 4.57781, 4.55904, 4.53846, 4.51611, 4.49293, 
+    4.46861, 4.44343, 4.41718, 4.39033, 4.36349, 4.33659, 4.30968, 
+    4.28268, 4.25545, 4.22778, 4.19941, 4.17028, 4.14045, 4.11009, 
+    4.07956, 4.04938, 4.01995, 3.99136, 3.96352, 3.93634, 3.90966, 
+    3.88345, 3.85755, 3.83201, 3.80681, 3.78174, 3.75681)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.99401, 2.99294, 2.99199, 
+    2.99126, 2.99086, 2.99096, 2.99165, 2.99304, 2.99515, 2.99805, 
+    3.00176, 3.00631, 3.01193, 3.01878, 3.027, 3.03652, 3.04723, 
+    3.05915, 3.07239, 3.08678, 3.10167, 3.11607, 3.12925, 3.14111, 
+    3.15221, 3.16341, 3.17577, 3.19041, 3.20843, 3.23004, 3.25447, 
+    3.28, 3.30527, 3.33036, 3.35669, 3.38599, 3.41909, 3.4555, 
+    3.4938, 3.53179, 3.56687, 3.59661, 3.62011, 3.63848, 3.65504, 
+    3.67418, 3.69996, 3.73578, 3.78355, 3.84462, 3.9195, 4.00617, 
+    4.1002, 4.19386, 4.27825, 4.34717, 4.39833, 4.43464, 4.4605, 
+    4.47941, 4.49339, 4.50402, 4.51175, 4.51647, 4.51758, 4.51482, 
+    4.50846, 4.49895, 4.48644, 4.47116, 4.45336, 4.43359, 4.41196, 
+    4.38861, 4.36343, 4.3366, 4.30863, 4.27987, 4.25083, 4.22158, 
+    4.1919, 4.1616, 4.13054, 4.09836, 4.06445, 4.02869, 3.99158, 
+    3.95423, 3.91767, 3.88259, 3.84878, 3.81592, 3.78372, 3.75221, 
+    3.72135, 3.69094, 3.66061, 3.62989, 3.59881, 3.5679)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.42686, 3.43133, 3.43585, 
+    3.44046, 3.4453, 3.45056, 3.45637, 3.46281, 3.46987, 3.47758, 
+    3.48604, 3.49529, 3.5055, 3.51687, 3.52958, 3.54355, 3.55867, 
+    3.57493, 3.59255, 3.61142, 3.63093, 3.65004, 3.66789, 3.68421, 
+    3.69953, 3.71469, 3.73088, 3.74937, 3.77138, 3.79725, 3.82615, 
+    3.85596, 3.88507, 3.91338, 3.9426, 3.9747, 4.01044, 4.0492, 
+    4.08937, 4.1284, 4.1633, 4.19105, 4.21055, 4.22307, 4.2326, 
+    4.24429, 4.26313, 4.2928, 4.33519, 4.39144, 4.46179, 4.54397, 
+    4.6334, 4.72254, 4.80315, 4.86928, 4.91971, 4.95659, 4.98427, 
+    5.00585, 5.02337, 5.03841, 5.04989, 5.0582, 5.06311, 5.06446, 
+    5.06227, 5.05754, 5.05046, 5.04066, 5.02798, 5.0126, 4.99518, 
+    4.97637, 4.95539, 4.93266, 4.90842, 4.88342, 4.85861, 4.83316, 
+    4.80645, 4.77886, 4.75032, 4.72062, 4.68847, 4.65396, 4.61771, 
+    4.58114, 4.54499, 4.51051, 4.47691, 4.44411, 4.4118, 4.37996, 
+    4.34862, 4.31738, 4.28591, 4.25358, 4.22046, 4.18721)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67358, 2.67434, 2.67519, 
+    2.6761, 2.67712, 2.67835, 2.67985, 2.68166, 2.68387, 2.68649, 
+    2.68953, 2.693, 2.69698, 2.70155, 2.70682, 2.71286, 2.71963, 
+    2.72727, 2.73573, 2.7448, 2.75424, 2.76361, 2.7725, 2.78072, 
+    2.78843, 2.79605, 2.80442, 2.81417, 2.82571, 2.83904, 2.85383, 
+    2.86946, 2.88526, 2.90096, 2.91697, 2.93407, 2.95314, 2.97379, 
+    2.99519, 3.0161, 3.03507, 3.05087, 3.06296, 3.07183, 3.07902, 
+    3.0869, 3.09809, 3.11537, 3.13987, 3.17231, 3.21287, 3.26075, 
+    3.31378, 3.36849, 3.42059, 3.46606, 3.50251, 3.52969, 3.54909, 
+    3.56259, 3.57202, 3.57867, 3.58296, 3.58507, 3.58488, 3.58227, 
+    3.57725, 3.56999, 3.56077, 3.54985, 3.53734, 3.52347, 3.50834, 
+    3.49221, 3.47504, 3.45706, 3.43851, 3.41953, 3.4005, 3.38145, 
+    3.36239, 3.34316, 3.32355, 3.30336, 3.28234, 3.26037, 3.23765, 
+    3.21466, 3.19199, 3.17005, 3.14903, 3.12878, 3.10904, 3.08964, 
+    3.07051, 3.0516, 3.03275, 3.0138, 2.99462, 2.97534)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.73924, 2.74018, 2.74127, 
+    2.74251, 2.74391, 2.74558, 2.74762, 2.75007, 2.75289, 2.75622, 
+    2.75992, 2.76415, 2.76893, 2.77435, 2.78048, 2.78727, 2.79478, 
+    2.80309, 2.81221, 2.82203, 2.83223, 2.84241, 2.85211, 2.86111, 
+    2.86953, 2.8778, 2.88657, 2.89653, 2.9081, 2.92144, 2.93623, 
+    2.9518, 2.96749, 2.98305, 2.99875, 3.01546, 3.03391, 3.05382, 
+    3.07422, 3.09379, 3.11102, 3.12465, 3.13416, 3.14004, 3.14404, 
+    3.14857, 3.15629, 3.17018, 3.19139, 3.22069, 3.25817, 3.30284, 
+    3.35239, 3.40286, 3.44957, 3.48842, 3.51727, 3.53676, 3.54895, 
+    3.55599, 3.55967, 3.56117, 3.56091, 3.55872, 3.55451, 3.54823, 
+    3.53989, 3.52958, 3.51748, 3.50394, 3.48913, 3.47321, 3.45626, 
+    3.43843, 3.41978, 3.40044, 3.38061, 3.36062, 3.34063, 3.32072, 
+    3.30083, 3.28066, 3.26007, 3.23884, 3.21683, 3.19391, 3.17022, 
+    3.14621, 3.12244, 3.09934, 3.07716, 3.05579, 3.03495, 3.01437, 
+    2.99393, 2.97357, 2.95318, 2.93267, 2.91191, 2.89096)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.48451, 3.49135, 3.49814, 
+    3.50489, 3.51172, 3.51873, 3.5259, 3.53318, 3.54071, 3.54849, 
+    3.55644, 3.56464, 3.57317, 3.58208, 3.59138, 3.60112, 3.6112, 
+    3.62184, 3.63309, 3.64489, 3.65725, 3.66984, 3.6823, 3.69441, 
+    3.70617, 3.7178, 3.72966, 3.74219, 3.75576, 3.77055, 3.7863, 
+    3.80241, 3.81833, 3.83392, 3.84971, 3.86662, 3.88536, 3.90544, 
+    3.92594, 3.94548, 3.96255, 3.97579, 3.98447, 3.98901, 3.99094, 
+    3.99268, 3.99703, 4.00691, 4.0233, 4.04678, 4.07732, 4.11388, 
+    4.15431, 4.19534, 4.23334, 4.26535, 4.28997, 4.30757, 4.31939, 
+    4.32707, 4.3322, 4.33546, 4.33731, 4.33745, 4.33589, 4.3326, 
+    4.32758, 4.32093, 4.31281, 4.30343, 4.29299, 4.28149, 4.26907, 
+    4.2559, 4.24204, 4.22749, 4.21255, 4.19749, 4.18245, 4.16748, 
+    4.15254, 4.13745, 4.12198, 4.10575, 4.08849, 4.07008, 4.05071, 
+    4.03094, 4.01145, 3.99255, 3.97422, 3.95634, 3.93865, 3.92098, 
+    3.90326, 3.88547, 3.86741, 3.84885, 3.82957, 3.80973)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.32289, 3.32988, 3.33671, 
+    3.34351, 3.35041, 3.35752, 3.36478, 3.37218, 3.37992, 3.38802, 
+    3.39639, 3.405, 3.41396, 3.42346, 3.4336, 3.44424, 3.4552, 
+    3.46674, 3.47931, 3.49255, 3.50631, 3.52039, 3.53451, 3.54839, 
+    3.56181, 3.57481, 3.58768, 3.60141, 3.61664, 3.63352, 3.65187, 
+    3.67102, 3.69025, 3.70922, 3.72814, 3.74779, 3.76919, 3.79253, 
+    3.81681, 3.84067, 3.86255, 3.88085, 3.89436, 3.90296, 3.90789, 
+    3.91149, 3.91676, 3.92679, 3.94425, 3.96963, 4.00317, 4.04437, 
+    4.09133, 4.14051, 4.1875, 4.22847, 4.26129, 4.28582, 4.30327, 
+    4.31539, 4.32391, 4.33007, 4.33461, 4.33767, 4.33869, 4.33761, 
+    4.33448, 4.32962, 4.32324, 4.31528, 4.30588, 4.2954, 4.28411, 
+    4.27209, 4.25902, 4.24516, 4.23058, 4.21576, 4.20114, 4.18673, 
+    4.1721, 4.15727, 4.14239, 4.12713, 4.11084, 4.09316, 4.0742, 
+    4.05465, 4.03541, 4.01694, 3.99917, 3.98182, 3.96473, 3.94794, 
+    3.93132, 3.91463, 3.89764, 3.88028, 3.86239, 3.84393)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.09812, 3.10292, 3.10775, 
+    3.11264, 3.11762, 3.12276, 3.12814, 3.13385, 3.1399, 3.14639, 
+    3.1532, 3.16037, 3.16801, 3.17616, 3.1849, 3.19435, 3.20441, 
+    3.21504, 3.22648, 3.23877, 3.25191, 3.26547, 3.27903, 3.29222, 
+    3.30489, 3.31721, 3.32954, 3.34262, 3.35729, 3.374, 3.39256, 
+    3.41218, 3.43186, 3.45109, 3.47012, 3.48988, 3.51132, 3.53474, 
+    3.559, 3.58251, 3.60334, 3.61944, 3.62929, 3.63273, 3.6313, 
+    3.62793, 3.62616, 3.62919, 3.64, 3.65937, 3.68749, 3.72365, 
+    3.76584, 3.81063, 3.85387, 3.89173, 3.92184, 3.94387, 3.95919, 
+    3.96957, 3.9767, 3.98149, 3.98459, 3.98611, 3.98588, 3.98373, 
+    3.9797, 3.97396, 3.96665, 3.95793, 3.94795, 3.93688, 3.92487, 
+    3.912, 3.89835, 3.88399, 3.86889, 3.8534, 3.83797, 3.82281, 
+    3.80771, 3.79253, 3.77706, 3.76104, 3.74391, 3.72527, 3.7052, 
+    3.68429, 3.66345, 3.6433, 3.62404, 3.6055, 3.58735, 3.56935, 
+    3.55131, 3.53315, 3.51464, 3.49539, 3.47518, 3.45412)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.49423, 3.50312, 3.51194, 
+    3.52075, 3.52962, 3.53865, 3.54785, 3.5572, 3.56678, 3.57669, 
+    3.58676, 3.59708, 3.60782, 3.61903, 3.63075, 3.643, 3.65571, 
+    3.669, 3.68287, 3.69735, 3.71238, 3.72757, 3.74256, 3.75714, 
+    3.77129, 3.78511, 3.79918, 3.81416, 3.83068, 3.84889, 3.86839, 
+    3.8885, 3.90855, 3.92817, 3.94781, 3.96839, 3.99073, 4.01439, 
+    4.03817, 4.0604, 4.07923, 4.09297, 4.10073, 4.10284, 4.10113, 
+    4.09862, 4.0986, 4.10444, 4.11722, 4.13739, 4.16458, 4.19784, 
+    4.2351, 4.27335, 4.30928, 4.34014, 4.36454, 4.38274, 4.39601, 
+    4.40592, 4.41375, 4.42, 4.42489, 4.42827, 4.43025, 4.43071, 
+    4.42959, 4.42706, 4.42328, 4.4183, 4.41224, 4.40525, 4.39748, 
+    4.38897, 4.37969, 4.36951, 4.3592, 4.34845, 4.33765, 4.3267, 
+    4.31571, 4.30474, 4.29333, 4.28121, 4.26795, 4.25336, 4.23764, 
+    4.22126, 4.20497, 4.18935, 4.17443, 4.15995, 4.14564, 4.1314, 
+    4.1171, 4.10245, 4.08714, 4.07115, 4.0542, 4.03646)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.92851, 2.93017, 2.93187, 
+    2.9337, 2.93578, 2.9382, 2.941, 2.94417, 2.94783, 2.95204, 
+    2.95678, 2.96201, 2.96788, 2.97455, 2.98211, 2.99057, 2.99989, 
+    3.01023, 3.02158, 3.03401, 3.0472, 3.06066, 3.07379, 3.0862, 
+    3.09795, 3.10947, 3.12166, 3.1356, 3.15201, 3.1711, 3.19236, 
+    3.21471, 3.23696, 3.25848, 3.27975, 3.30176, 3.3255, 3.3502, 
+    3.37423, 3.39535, 3.41109, 3.41944, 3.41959, 3.41241, 3.40057, 
+    3.38797, 3.37864, 3.37668, 3.38345, 3.39964, 3.425, 3.45817, 
+    3.49658, 3.53652, 3.57394, 3.60543, 3.62923, 3.64559, 3.65602, 
+    3.6623, 3.66588, 3.66774, 3.66813, 3.6671, 3.66444, 3.66012, 
+    3.65415, 3.64666, 3.6379, 3.62811, 3.61744, 3.60606, 3.59413, 
+    3.58168, 3.56862, 3.55514, 3.54135, 3.52768, 3.51436, 3.50147, 
+    3.4889, 3.47626, 3.46324, 3.44945, 3.43448, 3.41811, 3.40045, 
+    3.38217, 3.36412, 3.34692, 3.33079, 3.31543, 3.30039, 3.28536, 
+    3.27006, 3.25427, 3.23769, 3.21995, 3.20092, 3.18088)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.9358, 3.94266, 3.94968, 
+    3.95693, 3.96451, 3.97251, 3.981, 3.99008, 3.99987, 4.01044, 
+    4.02156, 4.03351, 4.04644, 4.06052, 4.07584, 4.09238, 4.11019, 
+    4.12948, 4.15043, 4.173, 4.19651, 4.22021, 4.24325, 4.26499, 
+    4.28549, 4.30555, 4.32665, 4.35083, 4.3788, 4.41103, 4.44659, 
+    4.48381, 4.52073, 4.55599, 4.58994, 4.62395, 4.6598, 4.6968, 
+    4.732, 4.76194, 4.7825, 4.7909, 4.78667, 4.77176, 4.7503, 
+    4.72829, 4.71132, 4.70505, 4.711, 4.72992, 4.76139, 4.80365, 
+    4.85314, 4.90452, 4.95233, 4.99246, 5.02287, 5.04447, 5.05891, 
+    5.0676, 5.07368, 5.07694, 5.07865, 5.07842, 5.07662, 5.07325, 
+    5.06758, 5.0596, 5.05017, 5.04002, 5.02925, 5.01748, 5.00478, 
+    4.99153, 4.97773, 4.96294, 4.94791, 4.93285, 4.91865, 4.90519, 
+    4.89214, 4.87931, 4.86574, 4.85063, 4.8335, 4.8144, 4.79382, 
+    4.77219, 4.75046, 4.72986, 4.71065, 4.69237, 4.67427, 4.65572, 
+    4.63634, 4.61585, 4.59375, 4.56988, 4.54406, 4.51644)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(4.23728, 4.24721, 4.25737, 
+    4.26773, 4.27847, 4.28968, 4.30133, 4.31331, 4.32587, 4.33927, 
+    4.3533, 4.36811, 4.38382, 4.40059, 4.41851, 4.43762, 4.45793, 
+    4.47986, 4.50321, 4.52804, 4.55394, 4.58015, 4.60577, 4.63006, 
+    4.65297, 4.67547, 4.69899, 4.72511, 4.75483, 4.78872, 4.82591, 
+    4.86466, 4.90302, 4.93974, 4.97546, 5.0117, 5.04878, 5.08553, 
+    5.12114, 5.15256, 5.17583, 5.18716, 5.18529, 5.17251, 5.15324, 
+    5.13239, 5.11692, 5.11116, 5.11696, 5.13511, 5.16545, 5.20561, 
+    5.25166, 5.29921, 5.34405, 5.3824, 5.41183, 5.43269, 5.44697, 
+    5.45467, 5.45922, 5.46171, 5.46438, 5.46638, 5.46712, 5.46541, 
+    5.46029, 5.4526, 5.44467, 5.43705, 5.42766, 5.41663, 5.40614, 
+    5.39565, 5.38425, 5.36992, 5.35611, 5.34274, 5.3304, 5.31825, 
+    5.3069, 5.29543, 5.28391, 5.27165, 5.25717, 5.23997, 5.22008, 
+    5.19951, 5.17987, 5.16148, 5.14462, 5.12819, 5.11187, 5.09518, 
+    5.0776, 5.05895, 5.03826, 5.01571, 4.99107, 4.96543)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.84077, 2.84138, 2.84216, 
+    2.84321, 2.84468, 2.84661, 2.84904, 2.85212, 2.85591, 2.86056, 
+    2.86588, 2.87203, 2.87921, 2.88763, 2.89747, 2.90885, 2.92167, 
+    2.936, 2.95182, 2.96888, 2.98659, 3.00404, 3.02031, 3.03492, 
+    3.0481, 3.06084, 3.07483, 3.0916, 3.11203, 3.13644, 3.16418, 
+    3.19372, 3.22322, 3.25153, 3.27889, 3.30659, 3.33604, 3.36656, 
+    3.39592, 3.42106, 3.43855, 3.4455, 3.44067, 3.42539, 3.40351, 
+    3.38041, 3.3615, 3.35191, 3.35309, 3.36571, 3.3894, 3.42274, 
+    3.46295, 3.506, 3.54719, 3.58248, 3.60955, 3.62863, 3.64131, 
+    3.64952, 3.65493, 3.65851, 3.66065, 3.66101, 3.65974, 3.65677, 
+    3.65216, 3.64604, 3.6387, 3.63043, 3.62127, 3.6113, 3.60073, 
+    3.58971, 3.57831, 3.56639, 3.55414, 3.54192, 3.53018, 3.51907, 
+    3.50848, 3.49794, 3.48699, 3.47509, 3.46163, 3.44619, 3.4289, 
+    3.41062, 3.39253, 3.37554, 3.35989, 3.34527, 3.33101, 3.31659, 
+    3.30169, 3.28603, 3.26919, 3.25047, 3.22976, 3.20761)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.86657, 2.87122, 2.87584, 
+    2.88043, 2.88497, 2.88953, 2.89418, 2.89895, 2.90382, 2.90877, 
+    2.9138, 2.91894, 2.9242, 2.92955, 2.93504, 2.94068, 2.94646, 
+    2.95238, 2.95846, 2.96471, 2.97112, 2.97756, 2.98394, 2.99019, 
+    2.99631, 3.00232, 3.00829, 3.01423, 3.02023, 3.02633, 3.0325, 
+    3.03864, 3.04474, 3.05107, 3.05803, 3.06597, 3.07511, 3.08552, 
+    3.0972, 3.10992, 3.1234, 3.13736, 3.15155, 3.16599, 3.18099, 
+    3.19713, 3.21511, 3.23578, 3.25991, 3.28836, 3.32167, 3.35914, 
+    3.39883, 3.43732, 3.47098, 3.49739, 3.51608, 3.52838, 3.53617, 
+    3.54102, 3.54382, 3.5451, 3.54507, 3.54355, 3.54042, 3.5356, 
+    3.52913, 3.52115, 3.51172, 3.50104, 3.48924, 3.47644, 3.46274, 
+    3.44825, 3.43303, 3.41722, 3.40095, 3.38435, 3.36755, 3.35051, 
+    3.33325, 3.31575, 3.298, 3.27987, 3.26133, 3.24241, 3.2233, 
+    3.20425, 3.18543, 3.16693, 3.14873, 3.13084, 3.11322, 3.09593, 
+    3.07906, 3.06268, 3.04679, 3.03128, 3.01609, 3.0012)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.99082, 2.99619, 3.00148, 
+    3.00675, 3.01198, 3.01724, 3.02254, 3.02793, 3.03339, 3.03897, 
+    3.04465, 3.05042, 3.05627, 3.06224, 3.06836, 3.07465, 3.08106, 
+    3.08763, 3.0944, 3.10141, 3.10855, 3.1157, 3.12275, 3.12966, 
+    3.13644, 3.14309, 3.14966, 3.15626, 3.16304, 3.17004, 3.17717, 
+    3.18424, 3.19125, 3.19845, 3.20625, 3.21507, 3.22514, 3.23653, 
+    3.2492, 3.26277, 3.27688, 3.29113, 3.3053, 3.31946, 3.33401, 
+    3.34967, 3.36733, 3.38798, 3.41243, 3.44152, 3.47573, 3.51441, 
+    3.55552, 3.59557, 3.63075, 3.65851, 3.67839, 3.6917, 3.70039, 
+    3.70604, 3.70955, 3.71159, 3.71219, 3.71138, 3.70887, 3.7046, 
+    3.69864, 3.69109, 3.68212, 3.67186, 3.66046, 3.64807, 3.63476, 
+    3.62052, 3.60553, 3.58991, 3.57383, 3.55746, 3.54088, 3.52407, 
+    3.507, 3.48968, 3.47206, 3.45404, 3.43551, 3.41652, 3.39729, 
+    3.37803, 3.35902, 3.34034, 3.322, 3.30393, 3.28607, 3.26853, 
+    3.25135, 3.23463, 3.21832, 3.20231, 3.18656, 3.17105)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.15499, 2.1545, 2.15393, 
+    2.15342, 2.153, 2.15263, 2.1523, 2.15209, 2.15214, 2.15232, 
+    2.15265, 2.15305, 2.15356, 2.15424, 2.15514, 2.15623, 2.15748, 
+    2.1589, 2.16058, 2.16251, 2.16471, 2.16703, 2.16941, 2.17181, 
+    2.17418, 2.17661, 2.179, 2.18122, 2.18325, 2.18511, 2.1869, 
+    2.18885, 2.19117, 2.19409, 2.19797, 2.20315, 2.21031, 2.2195, 
+    2.23088, 2.24446, 2.26009, 2.27765, 2.2971, 2.31839, 2.34155, 
+    2.36663, 2.39397, 2.4245, 2.4589, 2.49783, 2.5416, 2.5894, 
+    2.63917, 2.68768, 2.73133, 2.76738, 2.79485, 2.81454, 2.82838, 
+    2.83813, 2.84525, 2.85047, 2.85403, 2.85586, 2.85589, 2.85389, 
+    2.84985, 2.84396, 2.83637, 2.82722, 2.81669, 2.80476, 2.79161, 
+    2.77734, 2.76216, 2.74616, 2.72948, 2.71228, 2.69452, 2.67636, 
+    2.65782, 2.63887, 2.61947, 2.59956, 2.57921, 2.55853, 2.53763, 
+    2.51673, 2.49598, 2.47541, 2.45506, 2.43495, 2.41518, 2.39586, 
+    2.37715, 2.35907, 2.34173, 2.32514, 2.30934, 2.29418)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.24852, 2.2489, 2.24928, 
+    2.24972, 2.25024, 2.25086, 2.25166, 2.2526, 2.25367, 2.25498, 
+    2.25642, 2.2581, 2.25995, 2.26195, 2.26411, 2.26644, 2.26896, 
+    2.2718, 2.2749, 2.2782, 2.2817, 2.28531, 2.28902, 2.29283, 
+    2.29663, 2.30034, 2.30396, 2.3075, 2.31105, 2.31455, 2.31802, 
+    2.32149, 2.32506, 2.32896, 2.33351, 2.33911, 2.34617, 2.35473, 
+    2.36477, 2.37632, 2.38925, 2.4034, 2.4186, 2.43478, 2.45196, 
+    2.47044, 2.49066, 2.51366, 2.53999, 2.57033, 2.60496, 2.64345, 
+    2.68425, 2.72462, 2.76124, 2.79127, 2.81329, 2.82783, 2.83658, 
+    2.84126, 2.84333, 2.84354, 2.84222, 2.83926, 2.83461, 2.8282, 
+    2.82, 2.81011, 2.79866, 2.78576, 2.7716, 2.75631, 2.73993, 
+    2.7226, 2.70446, 2.68562, 2.66618, 2.6463, 2.62611, 2.60567, 
+    2.58494, 2.56389, 2.54245, 2.52062, 2.49843, 2.47597, 2.45331, 
+    2.43063, 2.40811, 2.38586, 2.36396, 2.34239, 2.32121, 2.30043, 
+    2.28018, 2.26058, 2.24171, 2.22352, 2.20602, 2.18913)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.62659, 2.62827, 2.62998, 
+    2.63168, 2.63345, 2.63534, 2.63737, 2.63952, 2.6418, 2.6442, 
+    2.64677, 2.64948, 2.65235, 2.65533, 2.65844, 2.66175, 2.66513, 
+    2.66875, 2.67258, 2.67661, 2.68079, 2.68509, 2.68942, 2.6937, 
+    2.69794, 2.70225, 2.70643, 2.71056, 2.7146, 2.71856, 2.72248, 
+    2.72643, 2.73048, 2.7348, 2.73964, 2.7453, 2.75226, 2.76052, 
+    2.77011, 2.78095, 2.79299, 2.80607, 2.82005, 2.83493, 2.85085, 
+    2.868, 2.88677, 2.9081, 2.93256, 2.96084, 2.99322, 3.02912, 
+    3.0669, 3.10391, 3.13711, 3.16402, 3.18361, 3.19642, 3.20406, 
+    3.20806, 3.20958, 3.20941, 3.20776, 3.20459, 3.19985, 3.1934, 
+    3.18525, 3.17549, 3.16422, 3.15161, 3.13781, 3.12289, 3.10699, 
+    3.09014, 3.07247, 3.05412, 3.03518, 3.01587, 2.99622, 2.97632, 
+    2.95609, 2.93553, 2.91464, 2.89338, 2.87177, 2.84986, 2.82778, 
+    2.80567, 2.78371, 2.76202, 2.74062, 2.71949, 2.69868, 2.67828, 
+    2.65834, 2.63897, 2.62024, 2.60216, 2.58473, 2.5678)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.13203, 3.14117, 3.15015, 
+    3.15899, 3.16774, 3.17642, 3.18504, 3.1936, 3.20214, 3.21066, 
+    3.21913, 3.22759, 3.23606, 3.24454, 3.25304, 3.26157, 3.27014, 
+    3.27879, 3.2875, 3.29634, 3.3052, 3.31408, 3.32297, 3.33181, 
+    3.34055, 3.34926, 3.35777, 3.36619, 3.37447, 3.38264, 3.39072, 
+    3.39872, 3.40672, 3.41491, 3.4235, 3.43277, 3.44309, 3.45456, 
+    3.46717, 3.48094, 3.49584, 3.51181, 3.52873, 3.54649, 3.56513, 
+    3.58482, 3.60596, 3.62921, 3.65508, 3.68411, 3.71668, 3.75254, 
+    3.79061, 3.82891, 3.86499, 3.89659, 3.92226, 3.94198, 3.95668, 
+    3.96754, 3.97573, 3.98199, 3.98652, 3.98942, 3.99071, 3.99027, 
+    3.98813, 3.98433, 3.97893, 3.97211, 3.96402, 3.95479, 3.9445, 
+    3.93332, 3.92123, 3.90845, 3.89505, 3.88129, 3.86723, 3.85287, 
+    3.83821, 3.82326, 3.80804, 3.79254, 3.77668, 3.76055, 3.74429, 
+    3.72799, 3.71176, 3.6957, 3.67987, 3.6643, 3.64899, 3.63392, 
+    3.61912, 3.60474, 3.59085, 3.57745, 3.56438, 3.55159)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.48619, 2.48602, 2.48584, 
+    2.48568, 2.48555, 2.48553, 2.48567, 2.48595, 2.48637, 2.48701, 
+    2.48783, 2.48883, 2.49003, 2.49141, 2.49298, 2.49478, 2.49677, 
+    2.49909, 2.50172, 2.50455, 2.5075, 2.51052, 2.51358, 2.51666, 
+    2.5197, 2.52273, 2.5257, 2.52878, 2.53191, 2.53517, 2.53853, 
+    2.54198, 2.54567, 2.54984, 2.55479, 2.56092, 2.56876, 2.57837, 
+    2.5897, 2.60269, 2.61715, 2.63293, 2.64988, 2.66795, 2.68728, 
+    2.70823, 2.73137, 2.75777, 2.78816, 2.82323, 2.86334, 2.90784, 
+    2.95482, 3.00115, 3.04312, 3.07769, 3.10357, 3.12141, 3.13311, 
+    3.1406, 3.14531, 3.14814, 3.14938, 3.14893, 3.14661, 3.14239, 
+    3.13625, 3.12827, 3.11864, 3.10753, 3.09506, 3.08136, 3.06649, 
+    3.05058, 3.0338, 3.01626, 2.99805, 2.97942, 2.96042, 2.94111, 
+    2.92144, 2.90141, 2.88104, 2.86026, 2.83906, 2.81753, 2.79576, 
+    2.77396, 2.75234, 2.73102, 2.71006, 2.68948, 2.66923, 2.6494, 
+    2.63013, 2.61151, 2.5936, 2.57636, 2.55977, 2.54383)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.34779, 2.34836, 2.34898, 
+    2.34967, 2.35039, 2.3512, 2.3522, 2.35343, 2.35483, 2.3564, 
+    2.35815, 2.36006, 2.36218, 2.36449, 2.36698, 2.36967, 2.37253, 
+    2.37571, 2.37922, 2.38295, 2.38687, 2.39093, 2.39508, 2.39926, 
+    2.40342, 2.40756, 2.41165, 2.41562, 2.41957, 2.42356, 2.42755, 
+    2.43156, 2.43569, 2.44015, 2.44529, 2.4515, 2.45923, 2.46859, 
+    2.47949, 2.49187, 2.50554, 2.5203, 2.53599, 2.55256, 2.57008, 
+    2.58889, 2.60954, 2.63312, 2.66031, 2.69178, 2.72786, 2.76801, 
+    2.81055, 2.85264, 2.89079, 2.92198, 2.94487, 2.95995, 2.96894, 
+    2.97371, 2.97564, 2.97567, 2.97406, 2.97078, 2.96572, 2.9588, 
+    2.94999, 2.93943, 2.92727, 2.91365, 2.89872, 2.88256, 2.86529, 
+    2.84711, 2.8281, 2.80837, 2.7881, 2.76742, 2.74645, 2.72521, 
+    2.70369, 2.68186, 2.6597, 2.63717, 2.61423, 2.59096, 2.56751, 
+    2.54407, 2.52083, 2.49791, 2.47535, 2.45316, 2.43134, 2.40996, 
+    2.38914, 2.369, 2.34959, 2.3309, 2.3128, 2.29529)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.50688, 2.50783, 2.5088, 
+    2.50985, 2.51101, 2.51229, 2.51369, 2.51523, 2.51692, 2.51888, 
+    2.52103, 2.52331, 2.52576, 2.52841, 2.53122, 2.53423, 2.53752, 
+    2.54095, 2.54465, 2.54859, 2.55274, 2.55703, 2.5614, 2.56579, 
+    2.57016, 2.57449, 2.5788, 2.5831, 2.58734, 2.59156, 2.59575, 
+    2.59996, 2.60428, 2.60886, 2.61396, 2.61985, 2.62702, 2.63551, 
+    2.64524, 2.65624, 2.66831, 2.68128, 2.69503, 2.7095, 2.72479, 
+    2.74116, 2.75911, 2.77959, 2.80313, 2.83051, 2.862, 2.89712, 
+    2.93444, 2.97142, 3.00482, 3.03191, 3.05143, 3.06386, 3.07077, 
+    3.07371, 3.07402, 3.07252, 3.06948, 3.06492, 3.05869, 3.05075, 
+    3.04106, 3.0297, 3.01681, 3.00253, 2.98699, 2.9703, 2.95266, 
+    2.93406, 2.91468, 2.8946, 2.87393, 2.85285, 2.83147, 2.80986, 
+    2.78794, 2.76571, 2.74317, 2.72026, 2.69701, 2.67351, 2.64986, 
+    2.62621, 2.60273, 2.57953, 2.55669, 2.53422, 2.51217, 2.49056, 
+    2.46947, 2.44895, 2.42914, 2.41002, 2.39156, 2.37374)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.57329, 2.57469, 2.57607, 
+    2.57752, 2.57901, 2.58059, 2.58229, 2.5841, 2.58607, 2.58821, 
+    2.59052, 2.59298, 2.59557, 2.59828, 2.60114, 2.60422, 2.60749, 
+    2.61106, 2.61476, 2.61866, 2.62275, 2.62698, 2.63126, 2.63551, 
+    2.63966, 2.64366, 2.64768, 2.65166, 2.65566, 2.65962, 2.66358, 
+    2.66758, 2.67172, 2.67622, 2.68139, 2.68757, 2.6952, 2.70434, 
+    2.71501, 2.72708, 2.74039, 2.75468, 2.76977, 2.78568, 2.80254, 
+    2.82079, 2.84095, 2.86413, 2.89093, 2.92208, 2.9578, 2.99751, 
+    3.03945, 3.08073, 3.11805, 3.14868, 3.17141, 3.1869, 3.19679, 
+    3.20273, 3.20604, 3.20751, 3.20742, 3.20577, 3.20237, 3.19716, 
+    3.19011, 3.18134, 3.17102, 3.15925, 3.14616, 3.13187, 3.11645, 
+    3.10009, 3.08288, 3.06495, 3.04641, 3.02738, 3.00803, 2.98837, 
+    2.96835, 2.94801, 2.92733, 2.90623, 2.88468, 2.86277, 2.84068, 
+    2.81855, 2.79656, 2.77481, 2.75338, 2.73226, 2.71149, 2.69111, 
+    2.67121, 2.65191, 2.63319, 2.6151, 2.59755, 2.58054)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.50356, 2.50343, 2.50334, 
+    2.50327, 2.50322, 2.50325, 2.50341, 2.50374, 2.50422, 2.50488, 
+    2.50575, 2.50681, 2.50805, 2.50947, 2.51107, 2.51286, 2.51488, 
+    2.51722, 2.51984, 2.52265, 2.52562, 2.52869, 2.53177, 2.53479, 
+    2.53778, 2.54079, 2.54376, 2.54676, 2.54987, 2.5531, 2.55643, 
+    2.55988, 2.56357, 2.56768, 2.57259, 2.57873, 2.58666, 2.59634, 
+    2.60777, 2.62087, 2.63548, 2.65139, 2.66845, 2.68663, 2.70608, 
+    2.72716, 2.7505, 2.77724, 2.80812, 2.84385, 2.88471, 2.93003, 
+    2.97789, 3.02505, 3.06775, 3.10292, 3.1292, 3.14741, 3.15937, 
+    3.16707, 3.17214, 3.17525, 3.17667, 3.17639, 3.17424, 3.17018, 
+    3.16418, 3.15635, 3.14684, 3.13577, 3.1233, 3.10955, 3.09468, 
+    3.07881, 3.06201, 3.04442, 3.0261, 3.00731, 2.98818, 2.96872, 
+    2.94896, 2.92879, 2.90823, 2.8872, 2.86575, 2.84396, 2.82195, 
+    2.79991, 2.77801, 2.75636, 2.73508, 2.71416, 2.69365, 2.67354, 
+    2.65394, 2.63497, 2.61672, 2.59916, 2.58225, 2.56593)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.59001, 2.59226, 2.59453, 
+    2.59682, 2.59909, 2.60136, 2.60372, 2.60621, 2.60887, 2.61164, 
+    2.61449, 2.61741, 2.62049, 2.62371, 2.62704, 2.63052, 2.63417, 
+    2.63796, 2.64196, 2.64617, 2.65055, 2.65501, 2.65944, 2.66382, 
+    2.66814, 2.6724, 2.67662, 2.68074, 2.68488, 2.689, 2.69313, 
+    2.6973, 2.70157, 2.70611, 2.71125, 2.71734, 2.72482, 2.73369, 
+    2.74398, 2.75556, 2.76827, 2.7819, 2.79631, 2.8115, 2.82761, 
+    2.84504, 2.86435, 2.88661, 2.91241, 2.94233, 2.97661, 3.01462, 
+    3.05466, 3.09398, 3.1295, 3.15881, 3.18095, 3.19649, 3.20714, 
+    3.21441, 3.21946, 3.22293, 3.22495, 3.2255, 3.22442, 3.22165, 
+    3.2172, 3.21116, 3.20361, 3.19462, 3.18431, 3.17277, 3.16014, 
+    3.14648, 3.13186, 3.11641, 3.10024, 3.08354, 3.06635, 3.04877, 
+    3.03075, 3.0123, 2.99335, 2.97389, 2.95393, 2.93351, 2.9128, 
+    2.89193, 2.87111, 2.85046, 2.83004, 2.80988, 2.78995, 2.77031, 
+    2.75108, 2.73234, 2.71415, 2.69652, 2.67942, 2.66274)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.24077, 2.24064, 2.24046, 
+    2.24035, 2.24029, 2.24031, 2.24045, 2.24075, 2.2412, 2.24187, 
+    2.24274, 2.24381, 2.24508, 2.24656, 2.24824, 2.25014, 2.2523, 
+    2.25474, 2.25752, 2.26059, 2.2639, 2.26741, 2.27096, 2.2745, 
+    2.27804, 2.28149, 2.28501, 2.28848, 2.29211, 2.29587, 2.29977, 
+    2.3038, 2.30799, 2.31249, 2.31766, 2.32392, 2.33163, 2.34133, 
+    2.35283, 2.36604, 2.38071, 2.3966, 2.41346, 2.43119, 2.44994, 
+    2.47011, 2.49224, 2.51708, 2.54601, 2.57958, 2.61839, 2.66216, 
+    2.70935, 2.75705, 2.80156, 2.83955, 2.86915, 2.8905, 2.90518, 
+    2.91508, 2.92187, 2.92634, 2.92908, 2.93014, 2.92938, 2.92673, 
+    2.92215, 2.9157, 2.90755, 2.89783, 2.88671, 2.87434, 2.86082, 
+    2.84623, 2.83066, 2.81431, 2.79729, 2.77977, 2.76189, 2.74368, 
+    2.72513, 2.70628, 2.68706, 2.66739, 2.6473, 2.62676, 2.60581, 
+    2.58472, 2.56375, 2.54305, 2.52269, 2.50266, 2.48295, 2.46358, 
+    2.44466, 2.42634, 2.40867, 2.39164, 2.3752, 2.3593)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.2863, 2.28689, 2.28745, 
+    2.288, 2.28864, 2.2894, 2.29022, 2.29114, 2.29227, 2.29358, 
+    2.29504, 2.29669, 2.29849, 2.30044, 2.30259, 2.30498, 2.30761, 
+    2.31047, 2.31365, 2.31709, 2.3207, 2.32442, 2.32817, 2.33185, 
+    2.33547, 2.33904, 2.34265, 2.3463, 2.35009, 2.35395, 2.35791, 
+    2.36202, 2.36636, 2.37116, 2.37677, 2.38359, 2.39209, 2.40235, 
+    2.4143, 2.42779, 2.4426, 2.45849, 2.47529, 2.49301, 2.51186, 
+    2.53232, 2.55503, 2.58117, 2.61134, 2.64615, 2.6858, 2.72962, 
+    2.77564, 2.82077, 2.86151, 2.89507, 2.92038, 2.93819, 2.95021, 
+    2.95837, 2.96387, 2.96754, 2.96964, 2.97012, 2.96892, 2.9659, 
+    2.961, 2.95439, 2.94621, 2.93656, 2.92568, 2.91365, 2.90054, 
+    2.88649, 2.87157, 2.85599, 2.8398, 2.82325, 2.80637, 2.78922, 
+    2.77176, 2.75396, 2.73582, 2.7173, 2.69838, 2.67907, 2.65953, 
+    2.63997, 2.62056, 2.60142, 2.58261, 2.56414, 2.54602, 2.52828, 
+    2.511, 2.49429, 2.47822, 2.46271, 2.44769, 2.4332)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.90099, 2.90568, 2.91025, 
+    2.91483, 2.91948, 2.92425, 2.92911, 2.93398, 2.93887, 2.94408, 
+    2.94946, 2.95501, 2.96066, 2.96637, 2.97216, 2.97821, 2.98455, 
+    2.9911, 2.99784, 3.00477, 3.01185, 3.01908, 3.02643, 3.03376, 
+    3.04095, 3.048, 3.05491, 3.06183, 3.06883, 3.07591, 3.083, 
+    3.09007, 3.09716, 3.10458, 3.11277, 3.12213, 3.13318, 3.14592, 
+    3.1603, 3.17624, 3.19353, 3.21197, 3.23133, 3.25149, 3.27262, 
+    3.29505, 3.31962, 3.34764, 3.37974, 3.41677, 3.45909, 3.50629, 
+    3.55657, 3.60674, 3.65283, 3.69138, 3.72082, 3.74124, 3.7546, 
+    3.76314, 3.76864, 3.77193, 3.77317, 3.77267, 3.7701, 3.76541, 
+    3.75861, 3.74982, 3.73923, 3.72698, 3.7132, 3.69809, 3.68165, 
+    3.66417, 3.64579, 3.62656, 3.60657, 3.58613, 3.56538, 3.54425, 
+    3.52266, 3.50072, 3.47851, 3.45586, 3.43271, 3.40911, 3.38516, 
+    3.36108, 3.33719, 3.31369, 3.2906, 3.26783, 3.24537, 3.22328, 
+    3.20173, 3.18083, 3.16057, 3.14097, 3.12195, 3.10338)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67705, 2.67872, 2.68046, 
+    2.68219, 2.68399, 2.68588, 2.68785, 2.68994, 2.69218, 2.69465, 
+    2.6973, 2.70006, 2.70294, 2.70598, 2.7092, 2.71262, 2.71621, 
+    2.72009, 2.72416, 2.7285, 2.73298, 2.73755, 2.74215, 2.74673, 
+    2.75122, 2.75567, 2.76001, 2.76439, 2.76876, 2.77316, 2.77765, 
+    2.7822, 2.78685, 2.7918, 2.79735, 2.80389, 2.81183, 2.82127, 
+    2.83206, 2.84415, 2.8573, 2.87135, 2.88613, 2.90159, 2.91796, 
+    2.93562, 2.95516, 2.97778, 3.00408, 3.03476, 3.06999, 3.10921, 
+    3.15071, 3.19165, 3.22868, 3.25905, 3.28149, 3.29654, 3.3059, 
+    3.31124, 3.31396, 3.31483, 3.31412, 3.31178, 3.30769, 3.30176, 
+    3.29399, 3.28448, 3.27337, 3.26085, 3.247, 3.23191, 3.21572, 
+    3.19859, 3.18059, 3.16183, 3.14249, 3.12266, 3.10252, 3.08205, 
+    3.06127, 3.04016, 3.01867, 2.99676, 2.9744, 2.95166, 2.9287, 
+    2.9057, 2.88284, 2.86024, 2.83797, 2.81603, 2.79442, 2.7732, 
+    2.75249, 2.7323, 2.71273, 2.69378, 2.67536, 2.65743)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67705, 2.67872, 2.68046, 
+    2.68219, 2.68399, 2.68588, 2.68785, 2.68994, 2.69218, 2.69465, 
+    2.6973, 2.70006, 2.70294, 2.70598, 2.7092, 2.71262, 2.71621, 
+    2.72009, 2.72416, 2.7285, 2.73298, 2.73755, 2.74215, 2.74673, 
+    2.75122, 2.75567, 2.76001, 2.76439, 2.76876, 2.77316, 2.77765, 
+    2.7822, 2.78685, 2.7918, 2.79735, 2.80389, 2.81183, 2.82127, 
+    2.83206, 2.84415, 2.8573, 2.87135, 2.88613, 2.90159, 2.91796, 
+    2.93562, 2.95516, 2.97778, 3.00408, 3.03476, 3.06999, 3.10921, 
+    3.15071, 3.19165, 3.22868, 3.25905, 3.28149, 3.29654, 3.3059, 
+    3.31124, 3.31396, 3.31483, 3.31412, 3.31178, 3.30769, 3.30176, 
+    3.29399, 3.28448, 3.27337, 3.26085, 3.247, 3.23191, 3.21572, 
+    3.19859, 3.18059, 3.16183, 3.14249, 3.12266, 3.10252, 3.08205, 
+    3.06127, 3.04016, 3.01867, 2.99676, 2.9744, 2.95166, 2.9287, 
+    2.9057, 2.88284, 2.86024, 2.83797, 2.81603, 2.79442, 2.7732, 
+    2.75249, 2.7323, 2.71273, 2.69378, 2.67536, 2.65743)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.82935, 2.8312, 2.83314, 
+    2.83512, 2.83725, 2.83954, 2.84201, 2.8447, 2.84764, 2.8508, 
+    2.85422, 2.85787, 2.86177, 2.86588, 2.87023, 2.87484, 2.87973, 
+    2.88498, 2.89057, 2.89642, 2.90255, 2.90883, 2.91519, 2.92158, 
+    2.92787, 2.93408, 2.94028, 2.94643, 2.95266, 2.95893, 2.96522, 
+    2.97156, 2.978, 2.98473, 2.99207, 3.00043, 3.01036, 3.02183, 
+    3.03487, 3.04925, 3.06472, 3.08098, 3.09779, 3.11514, 3.13323, 
+    3.15251, 3.17367, 3.19808, 3.22645, 3.25956, 3.29776, 3.34062, 
+    3.38633, 3.43175, 3.47301, 3.50668, 3.53109, 3.54665, 3.55548, 
+    3.55953, 3.56041, 3.55903, 3.55581, 3.5507, 3.54353, 3.53432, 
+    3.52311, 3.50995, 3.49495, 3.47818, 3.45995, 3.44036, 3.41953, 
+    3.39771, 3.3749, 3.35127, 3.32692, 3.30211, 3.27706, 3.25167, 
+    3.22599, 3.19993, 3.17346, 3.14654, 3.11913, 3.09127, 3.06317, 
+    3.03508, 3.00721, 2.9797, 2.95259, 2.92593, 2.89975, 2.87404, 
+    2.84898, 2.82462, 2.80101, 2.77813, 2.75595, 2.73434)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.60265, 2.60327, 2.6039, 
+    2.60448, 2.60511, 2.60584, 2.60667, 2.60758, 2.6087, 2.61, 
+    2.61148, 2.61312, 2.61489, 2.61681, 2.61892, 2.62123, 2.62382, 
+    2.62673, 2.62989, 2.63329, 2.63687, 2.64051, 2.64416, 2.64775, 
+    2.65122, 2.65471, 2.65816, 2.66169, 2.66534, 2.66914, 2.67309, 
+    2.67716, 2.68144, 2.68615, 2.69162, 2.69826, 2.7066, 2.71673, 
+    2.72862, 2.74206, 2.75686, 2.7728, 2.78973, 2.80764, 2.82678, 
+    2.84752, 2.87058, 2.8972, 2.92798, 2.96365, 3.00451, 3.04996, 
+    3.0981, 3.1458, 3.18933, 3.22559, 3.25316, 3.27262, 3.2858, 
+    3.29461, 3.30052, 3.30456, 3.30686, 3.30745, 3.30617, 3.30291, 
+    3.29771, 3.29065, 3.28187, 3.27156, 3.25983, 3.24676, 3.2325, 
+    3.21729, 3.20115, 3.18416, 3.16655, 3.14842, 3.1299, 3.11107, 
+    3.09191, 3.07238, 3.05243, 3.03203, 3.0112, 2.98998, 2.96847, 
+    2.94688, 2.92545, 2.9043, 2.88349, 2.86303, 2.84294, 2.82324, 
+    2.804, 2.78534, 2.76731, 2.74997, 2.73318, 2.71695)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.36149, 2.36159, 2.36169, 
+    2.36177, 2.3619, 2.36211, 2.36246, 2.36304, 2.36375, 2.36465, 
+    2.3657, 2.36702, 2.36854, 2.37023, 2.37213, 2.37429, 2.37676, 
+    2.37957, 2.38267, 2.38606, 2.38962, 2.39324, 2.39688, 2.40046, 
+    2.40394, 2.40732, 2.41068, 2.41416, 2.41777, 2.42156, 2.42548, 
+    2.42955, 2.43387, 2.43871, 2.44446, 2.45155, 2.46063, 2.47158, 
+    2.48439, 2.4989, 2.51479, 2.53184, 2.54991, 2.56898, 2.58932, 
+    2.61147, 2.63614, 2.66471, 2.69781, 2.73605, 2.77974, 2.82797, 
+    2.87856, 2.92809, 2.97272, 3.0095, 3.03731, 3.05693, 3.07051, 
+    3.08003, 3.08675, 3.09153, 3.09459, 3.09594, 3.0954, 3.09281, 
+    3.08826, 3.08183, 3.07358, 3.06373, 3.05243, 3.03982, 3.02594, 
+    3.01092, 2.99493, 2.97806, 2.96033, 2.9421, 2.92347, 2.90447, 
+    2.88501, 2.86504, 2.8446, 2.82363, 2.80213, 2.78015, 2.75787, 
+    2.73547, 2.71318, 2.69119, 2.66951, 2.64817, 2.62717, 2.60655, 
+    2.58647, 2.56703, 2.54823, 2.53009, 2.51256, 2.49558)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.81636, 2.81816, 2.81987, 
+    2.82157, 2.82326, 2.82501, 2.82689, 2.82895, 2.83111, 2.83354, 
+    2.8361, 2.83882, 2.84176, 2.84491, 2.84829, 2.85194, 2.85588, 
+    2.86018, 2.86481, 2.86976, 2.87497, 2.88035, 2.88576, 2.89111, 
+    2.89637, 2.90161, 2.90696, 2.91231, 2.91784, 2.92353, 2.92937, 
+    2.93537, 2.94162, 2.94831, 2.95591, 2.96496, 2.97605, 2.98926, 
+    3.00455, 3.02177, 3.04066, 3.06097, 3.08243, 3.10501, 3.12895, 
+    3.15468, 3.183, 3.21524, 3.25222, 3.29466, 3.34302, 3.39676, 
+    3.45397, 3.51134, 3.56472, 3.61033, 3.64611, 3.67225, 3.69072, 
+    3.70347, 3.71228, 3.71855, 3.72247, 3.72413, 3.72343, 3.72029, 
+    3.71472, 3.70679, 3.69663, 3.68448, 3.67066, 3.65524, 3.63834, 
+    3.62011, 3.60075, 3.58044, 3.55936, 3.53771, 3.51562, 3.49319, 
+    3.47039, 3.44717, 3.42351, 3.39935, 3.3747, 3.34957, 3.32412, 
+    3.29865, 3.27339, 3.24853, 3.22411, 3.2001, 3.17653, 3.15346, 
+    3.13101, 3.10932, 3.0884, 3.06822, 3.04869, 3.02979)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.24678, 2.24636, 2.2459, 
+    2.24548, 2.24514, 2.24491, 2.2448, 2.24477, 2.24493, 2.24532, 
+    2.24592, 2.24663, 2.2475, 2.24858, 2.24989, 2.25141, 2.25322, 
+    2.25528, 2.25764, 2.26025, 2.26303, 2.26587, 2.26867, 2.27139, 
+    2.27401, 2.27655, 2.27916, 2.28194, 2.28489, 2.28798, 2.29121, 
+    2.29458, 2.29815, 2.30216, 2.30688, 2.31272, 2.32013, 2.32909, 
+    2.33956, 2.35135, 2.3642, 2.37789, 2.39227, 2.40738, 2.42346, 
+    2.44108, 2.46089, 2.48409, 2.51123, 2.54286, 2.57911, 2.61929, 
+    2.66147, 2.7027, 2.73972, 2.76999, 2.79258, 2.80829, 2.81888, 
+    2.82594, 2.83057, 2.83359, 2.83517, 2.83525, 2.83373, 2.83046, 
+    2.82546, 2.81885, 2.8108, 2.80142, 2.79078, 2.77902, 2.76618, 
+    2.75239, 2.73778, 2.7225, 2.70655, 2.69011, 2.67333, 2.65627, 
+    2.63891, 2.62117, 2.603, 2.58438, 2.56531, 2.54584, 2.5261, 
+    2.50629, 2.4866, 2.46716, 2.448, 2.42916, 2.41067, 2.39252, 
+    2.37482, 2.3576, 2.34095, 2.32485, 2.30926, 2.29413)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.57988, 2.58238, 2.58484, 
+    2.58738, 2.59, 2.59273, 2.59557, 2.59852, 2.60164, 2.60496, 
+    2.60855, 2.61232, 2.61626, 2.62036, 2.62464, 2.62917, 2.63396, 
+    2.63898, 2.64426, 2.64982, 2.65563, 2.66161, 2.66764, 2.67359, 
+    2.67942, 2.68515, 2.69092, 2.69676, 2.70274, 2.70882, 2.71499, 
+    2.7212, 2.72755, 2.73421, 2.74142, 2.74962, 2.75928, 2.77042, 
+    2.78299, 2.79681, 2.81161, 2.82701, 2.84279, 2.85894, 2.8757, 
+    2.8936, 2.91341, 2.9363, 2.96298, 2.9942, 3.03031, 3.0709, 
+    3.1143, 3.15759, 3.19718, 3.22988, 3.2542, 3.27057, 3.2807, 
+    3.2865, 3.28937, 3.29029, 3.28951, 3.28712, 3.28302, 3.27698, 
+    3.26899, 3.25919, 3.24776, 3.23483, 3.22059, 3.20518, 3.18864, 
+    3.17104, 3.15255, 3.13341, 3.11365, 3.0935, 3.07304, 3.05228, 
+    3.03119, 3.00985, 2.98815, 2.96607, 2.94357, 2.92065, 2.8974, 
+    2.87407, 2.85095, 2.82821, 2.80591, 2.78398, 2.76237, 2.74118, 
+    2.72048, 2.7004, 2.68096, 2.66208, 2.64372, 2.62581)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67183, 2.67372, 2.67555, 
+    2.67739, 2.67933, 2.68139, 2.68358, 2.68583, 2.68822, 2.69083, 
+    2.69359, 2.69654, 2.69963, 2.70288, 2.70628, 2.70989, 2.71375, 
+    2.71788, 2.7222, 2.72674, 2.73149, 2.73635, 2.74124, 2.74607, 
+    2.75082, 2.75546, 2.75999, 2.76459, 2.76917, 2.77382, 2.77853, 
+    2.78326, 2.78811, 2.79327, 2.79905, 2.80584, 2.81403, 2.82373, 
+    2.83487, 2.84727, 2.86069, 2.87495, 2.88985, 2.90535, 2.9217, 
+    2.93935, 2.95891, 2.98153, 3.00793, 3.03876, 3.07426, 3.11385, 
+    3.15577, 3.19715, 3.23462, 3.26537, 3.28811, 3.30344, 3.313, 
+    3.31853, 3.32146, 3.32252, 3.32194, 3.31978, 3.31592, 3.31021, 
+    3.30266, 3.29334, 3.28239, 3.26998, 3.25625, 3.24134, 3.22533, 
+    3.20827, 3.19036, 3.17171, 3.15243, 3.13268, 3.11256, 3.09216, 
+    3.07146, 3.05041, 3.02894, 3.00707, 2.98476, 2.96204, 2.93905, 
+    2.916, 2.89312, 2.87052, 2.84824, 2.8263, 2.80471, 2.7835, 
+    2.76278, 2.74265, 2.72309, 2.70419, 2.6858, 2.66788)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.25985, 2.26009, 2.26042, 
+    2.26068, 2.26102, 2.26148, 2.26205, 2.26277, 2.2637, 2.26481, 
+    2.26614, 2.26771, 2.26945, 2.27135, 2.27349, 2.2759, 2.27854, 
+    2.2815, 2.28484, 2.28844, 2.2923, 2.29628, 2.30028, 2.30424, 
+    2.30814, 2.312, 2.31584, 2.31975, 2.32386, 2.32816, 2.33266, 
+    2.33727, 2.34204, 2.34716, 2.35284, 2.35955, 2.36762, 2.37755, 
+    2.3891, 2.40217, 2.41653, 2.4319, 2.44808, 2.46501, 2.48285, 
+    2.502, 2.5231, 2.54689, 2.57457, 2.60688, 2.64432, 2.68661, 
+    2.73221, 2.77824, 2.82108, 2.85753, 2.88583, 2.90616, 2.91994, 
+    2.92916, 2.93529, 2.93916, 2.94138, 2.94196, 2.94078, 2.93773, 
+    2.93282, 2.92612, 2.91774, 2.90785, 2.89661, 2.88419, 2.87065, 
+    2.85612, 2.84069, 2.8244, 2.8075, 2.79021, 2.77252, 2.75458, 
+    2.7363, 2.71771, 2.69879, 2.67949, 2.65973, 2.63952, 2.619, 
+    2.59833, 2.57781, 2.55758, 2.53766, 2.51807, 2.49881, 2.4799, 
+    2.46146, 2.44357, 2.4263, 2.40964, 2.39354, 2.3779)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.26737, 2.26801, 2.26855, 
+    2.26914, 2.2698, 2.27054, 2.27141, 2.27241, 2.27358, 2.27494, 
+    2.27648, 2.27824, 2.28016, 2.28225, 2.28453, 2.28708, 2.28989, 
+    2.293, 2.2964, 2.30007, 2.30388, 2.30775, 2.3116, 2.3154, 
+    2.31914, 2.32281, 2.32649, 2.33029, 2.33427, 2.33844, 2.34274, 
+    2.34719, 2.35188, 2.357, 2.36291, 2.36996, 2.37872, 2.38914, 
+    2.40115, 2.41456, 2.42916, 2.44469, 2.461, 2.47814, 2.49637, 
+    2.5162, 2.53832, 2.56392, 2.59354, 2.62785, 2.66699, 2.71024, 
+    2.75558, 2.79995, 2.8399, 2.87272, 2.89737, 2.91457, 2.92617, 
+    2.93389, 2.93896, 2.94226, 2.94401, 2.94414, 2.94257, 2.9392, 
+    2.93403, 2.92715, 2.9187, 2.90887, 2.89776, 2.88552, 2.87227, 
+    2.85809, 2.84305, 2.82735, 2.81108, 2.79443, 2.77744, 2.76022, 
+    2.7427, 2.72486, 2.70663, 2.68799, 2.66896, 2.64956, 2.62993, 
+    2.61027, 2.59078, 2.57159, 2.5527, 2.53414, 2.51593, 2.49812, 
+    2.48075, 2.46394, 2.44775, 2.43212, 2.41694, 2.40224)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.91627, 2.92053, 2.92478, 
+    2.92903, 2.93332, 2.93767, 2.94212, 2.94667, 2.95135, 2.95622, 
+    2.96122, 2.96637, 2.97163, 2.977, 2.98252, 2.98819, 2.99414, 
+    3.00033, 3.00677, 3.01333, 3.02007, 3.02698, 3.03397, 3.0409, 
+    3.04772, 3.05439, 3.06104, 3.06767, 3.07435, 3.08108, 3.08782, 
+    3.09458, 3.1014, 3.10842, 3.1159, 3.12415, 3.13382, 3.14476, 
+    3.15702, 3.17035, 3.18452, 3.19926, 3.21433, 3.22972, 3.24563, 
+    3.26251, 3.28111, 3.30259, 3.32764, 3.35692, 3.39062, 3.42833, 
+    3.4686, 3.50871, 3.54535, 3.57567, 3.59813, 3.61318, 3.62249, 
+    3.62753, 3.62986, 3.63014, 3.62888, 3.6261, 3.62162, 3.61531, 
+    3.60718, 3.59733, 3.58586, 3.57301, 3.55897, 3.54373, 3.5275, 
+    3.51038, 3.49243, 3.47358, 3.45415, 3.43443, 3.4146, 3.39446, 
+    3.37401, 3.35328, 3.33222, 3.31076, 3.28888, 3.26662, 3.24415, 
+    3.22164, 3.19926, 3.1772, 3.15548, 3.13412, 3.1131, 3.09243, 
+    3.07224, 3.05255, 3.03338, 3.01478, 2.99666, 2.97895)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.31514, 2.31512, 2.31509, 
+    2.3151, 2.31517, 2.31538, 2.31581, 2.31649, 2.31734, 2.31842, 
+    2.31972, 2.32124, 2.32308, 2.32519, 2.32754, 2.33018, 2.33307, 
+    2.33637, 2.34005, 2.34404, 2.34826, 2.35253, 2.35674, 2.36087, 
+    2.36493, 2.36894, 2.37296, 2.37714, 2.38155, 2.3862, 2.39111, 
+    2.39623, 2.40157, 2.40727, 2.41376, 2.42145, 2.43104, 2.44242, 
+    2.45556, 2.47019, 2.48607, 2.50291, 2.52053, 2.53889, 2.55822, 
+    2.57908, 2.6022, 2.629, 2.66018, 2.69655, 2.73846, 2.78535, 
+    2.83535, 2.88517, 2.93071, 2.96841, 2.99657, 3.01571, 3.02792, 
+    3.03533, 3.03968, 3.04188, 3.0423, 3.04091, 3.03763, 3.03229, 
+    3.02489, 3.01554, 3.0044, 2.99164, 2.97743, 2.96194, 2.94532, 
+    2.92764, 2.90903, 2.8896, 2.86954, 2.84907, 2.82824, 2.80712, 
+    2.78573, 2.76399, 2.74188, 2.71932, 2.69629, 2.67286, 2.64916, 
+    2.62542, 2.60187, 2.57867, 2.55589, 2.53354, 2.51162, 2.49019, 
+    2.46934, 2.44912, 2.42961, 2.41078, 2.39256, 2.37491)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.37006, 2.37051, 2.37103, 
+    2.37163, 2.37234, 2.37315, 2.37409, 2.37524, 2.37657, 2.37818, 
+    2.37998, 2.38196, 2.38413, 2.38646, 2.38901, 2.39187, 2.39497, 
+    2.39836, 2.40195, 2.40585, 2.40998, 2.41427, 2.41865, 2.42304, 
+    2.42729, 2.43153, 2.43582, 2.44013, 2.44457, 2.44914, 2.4538, 
+    2.45849, 2.46327, 2.4683, 2.47386, 2.48033, 2.48811, 2.49717, 
+    2.50746, 2.51888, 2.53115, 2.544, 2.55721, 2.57076, 2.58489, 
+    2.59999, 2.61683, 2.63654, 2.65969, 2.68698, 2.71866, 2.75431, 
+    2.79234, 2.83008, 2.86433, 2.89229, 2.91258, 2.92568, 2.93324, 
+    2.9369, 2.93798, 2.93728, 2.93502, 2.9312, 2.92575, 2.91857, 
+    2.90967, 2.89912, 2.88706, 2.87363, 2.85894, 2.84311, 2.82628, 
+    2.80857, 2.79007, 2.7709, 2.75108, 2.73083, 2.71032, 2.68962, 
+    2.66869, 2.64747, 2.62585, 2.60379, 2.58138, 2.55859, 2.53556, 
+    2.51251, 2.48964, 2.46708, 2.44486, 2.42302, 2.40158, 2.38056, 
+    2.36006, 2.34009, 2.32073, 2.30193, 2.28374, 2.26604)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.90188, 2.90403, 2.90624, 
+    2.90848, 2.91075, 2.91307, 2.91548, 2.91807, 2.92082, 2.92381, 
+    2.92696, 2.93029, 2.93382, 2.93757, 2.94155, 2.9458, 2.95033, 
+    2.9552, 2.96037, 2.96577, 2.9714, 2.97715, 2.98282, 2.9883, 
+    2.99358, 2.99863, 3.00361, 3.00856, 3.01365, 3.01893, 3.02439, 
+    3.02994, 3.0356, 3.0416, 3.04827, 3.05612, 3.0658, 3.07719, 
+    3.09017, 3.10446, 3.11975, 3.13574, 3.1522, 3.16912, 3.18689, 
+    3.20619, 3.22797, 3.25371, 3.28409, 3.31992, 3.36141, 3.40785, 
+    3.45722, 3.50614, 3.55068, 3.5876, 3.61553, 3.63533, 3.64887, 
+    3.65817, 3.66469, 3.66928, 3.67207, 3.67307, 3.67216, 3.66922, 
+    3.6642, 3.65718, 3.64833, 3.63775, 3.6256, 3.61199, 3.59693, 
+    3.58064, 3.56322, 3.5448, 3.52544, 3.50543, 3.48487, 3.46386, 
+    3.44234, 3.42027, 3.39759, 3.37425, 3.35019, 3.32553, 3.30042, 
+    3.27509, 3.24981, 3.22475, 3.19998, 3.17552, 3.15139, 3.12767, 
+    3.10446, 3.08183, 3.05976, 3.03824, 3.01719, 2.99663)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.76128, 2.76333, 2.76547, 
+    2.76762, 2.76983, 2.77215, 2.77464, 2.77733, 2.78019, 2.78318, 
+    2.78645, 2.78986, 2.79345, 2.79724, 2.80126, 2.80553, 2.81005, 
+    2.81485, 2.81995, 2.82534, 2.83098, 2.83673, 2.84247, 2.84812, 
+    2.85367, 2.85918, 2.8647, 2.87031, 2.87606, 2.88199, 2.8881, 
+    2.8943, 2.90055, 2.90701, 2.914, 2.92198, 2.93138, 2.94221, 
+    2.95428, 2.96731, 2.98097, 2.99489, 3.00885, 3.0229, 3.03735, 
+    3.05293, 3.0705, 3.09144, 3.11641, 3.14617, 3.18083, 3.2198, 
+    3.26122, 3.30217, 3.33929, 3.36978, 3.39235, 3.40754, 3.41705, 
+    3.42258, 3.42544, 3.42646, 3.42589, 3.42367, 3.41969, 3.41391, 
+    3.40627, 3.39687, 3.38587, 3.37345, 3.35972, 3.3448, 3.32881, 
+    3.31181, 3.29399, 3.2754, 3.25622, 3.2366, 3.21674, 3.1966, 
+    3.17619, 3.15543, 3.13426, 3.11263, 3.09055, 3.06801, 3.04511, 
+    3.0221, 2.99923, 2.97671, 2.9546, 2.93286, 2.91148, 2.89044, 
+    2.8698, 2.84967, 2.83006, 2.81094, 2.79227, 2.77402)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.27259, 3.28032, 3.28783, 
+    3.29528, 3.30272, 3.3102, 3.31766, 3.32504, 3.33256, 3.34015, 
+    3.3478, 3.35558, 3.36342, 3.37125, 3.37914, 3.38724, 3.39547, 
+    3.40391, 3.41249, 3.42129, 3.43023, 3.43929, 3.44833, 3.45725, 
+    3.46604, 3.4746, 3.48305, 3.49161, 3.50022, 3.50892, 3.51769, 
+    3.52644, 3.53518, 3.54415, 3.55358, 3.56398, 3.57564, 3.58864, 
+    3.60286, 3.61808, 3.63399, 3.65032, 3.66685, 3.68359, 3.70083, 
+    3.7191, 3.73923, 3.76247, 3.78931, 3.82045, 3.85626, 3.89631, 
+    3.93884, 3.98101, 4.01956, 4.05179, 4.07636, 4.09355, 4.10504, 
+    4.11258, 4.11755, 4.12052, 4.1219, 4.12167, 4.11976, 4.11611, 
+    4.11068, 4.10355, 4.09488, 4.08484, 4.07364, 4.06133, 4.04813, 
+    4.03409, 4.01937, 4.004, 3.98821, 3.97213, 3.95588, 3.93947, 
+    3.92291, 3.90611, 3.88904, 3.87163, 3.85382, 3.83568, 3.81729, 
+    3.79883, 3.78055, 3.76258, 3.74492, 3.72757, 3.7105, 3.6937, 
+    3.67716, 3.66098, 3.64524, 3.62991, 3.61487, 3.60001)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.60481, 2.6064, 2.60805, 
+    2.60977, 2.61163, 2.61364, 2.61581, 2.61818, 2.6208, 2.62374, 
+    2.62694, 2.63033, 2.63396, 2.63789, 2.64212, 2.64668, 2.6515, 
+    2.6567, 2.66226, 2.66818, 2.67437, 2.68073, 2.68714, 2.69346, 
+    2.69967, 2.70587, 2.71203, 2.71829, 2.72477, 2.73153, 2.73855, 
+    2.74575, 2.75309, 2.76075, 2.7691, 2.77863, 2.78993, 2.803, 
+    2.81763, 2.83348, 2.85017, 2.8673, 2.88463, 2.90215, 2.92015, 
+    2.93936, 2.96081, 2.98605, 3.01594, 3.05126, 3.09228, 3.1384, 
+    3.1877, 3.2368, 3.28163, 3.31865, 3.34602, 3.36429, 3.37554, 
+    3.38189, 3.38515, 3.38621, 3.38525, 3.38242, 3.3775, 3.37046, 
+    3.36136, 3.35026, 3.33728, 3.3226, 3.30641, 3.28882, 3.27006, 
+    3.25022, 3.2294, 3.2077, 3.18523, 3.16237, 3.13918, 3.11576, 
+    3.09202, 3.06789, 3.04325, 3.01808, 2.99244, 2.96634, 2.93991, 
+    2.91338, 2.88698, 2.86098, 2.8355, 2.81053, 2.78599, 2.76191, 
+    2.73834, 2.7154, 2.69317, 2.67161, 2.65057, 2.63004)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.44952, 3.45759, 3.46563, 
+    3.4736, 3.48156, 3.48952, 3.49751, 3.50559, 3.5137, 3.5219, 
+    3.53029, 3.53872, 3.54727, 3.55595, 3.56475, 3.57375, 3.58299, 
+    3.59248, 3.60227, 3.6123, 3.62253, 3.63285, 3.64315, 3.65335, 
+    3.6634, 3.67333, 3.68328, 3.69319, 3.70324, 3.71338, 3.7236, 
+    3.73389, 3.74426, 3.75485, 3.76603, 3.77816, 3.79175, 3.80691, 
+    3.8234, 3.84111, 3.8596, 3.87849, 3.89755, 3.91677, 3.9366, 
+    3.95768, 3.98077, 4.00731, 4.03796, 4.07362, 4.11449, 4.16011, 
+    4.20869, 4.25727, 4.30238, 4.34098, 4.37144, 4.39405, 4.41035, 
+    4.42215, 4.43069, 4.4369, 4.44103, 4.44345, 4.444, 4.44245, 
+    4.43872, 4.43287, 4.42521, 4.41594, 4.40507, 4.39299, 4.37956, 
+    4.36492, 4.34932, 4.33279, 4.31561, 4.29785, 4.27985, 4.26159, 
+    4.24301, 4.22396, 4.2045, 4.18452, 4.16397, 4.14296, 4.12168, 
+    4.10025, 4.07891, 4.0579, 4.03726, 4.01699, 3.99705, 3.97741, 
+    3.95819, 3.93945, 3.92121, 3.90339, 3.88594, 3.86888)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.16095, 3.16676, 3.1725, 
+    3.17813, 3.18381, 3.18961, 3.19554, 3.2016, 3.2077, 3.21402, 
+    3.22049, 3.22711, 3.23392, 3.24089, 3.248, 3.25529, 3.26284, 
+    3.27069, 3.27891, 3.2874, 3.29606, 3.3048, 3.31355, 3.32223, 
+    3.33081, 3.33927, 3.3476, 3.35604, 3.36463, 3.3734, 3.38226, 
+    3.39116, 3.40014, 3.40933, 3.41907, 3.42975, 3.44193, 3.45555, 
+    3.4705, 3.48656, 3.50337, 3.52058, 3.53797, 3.55557, 3.57371, 
+    3.59298, 3.61431, 3.63895, 3.66769, 3.70124, 3.7399, 3.78311, 
+    3.82909, 3.87483, 3.91674, 3.95171, 3.97812, 3.99648, 4.00855, 
+    4.01617, 4.02081, 4.0234, 4.0243, 4.02349, 4.02079, 4.01613, 
+    4.00949, 4.001, 3.99081, 3.97903, 3.9659, 3.95159, 3.93623, 
+    3.91978, 3.90244, 3.8844, 3.8658, 3.8468, 3.82749, 3.80794, 
+    3.78818, 3.76809, 3.74764, 3.72677, 3.70548, 3.68383, 3.66186, 
+    3.6398, 3.61791, 3.5964, 3.57535, 3.55465, 3.53433, 3.51442, 
+    3.49493, 3.47594, 3.45752, 3.43963, 3.42218, 3.40509)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.20781, 3.21294, 3.2181, 
+    3.22318, 3.22838, 3.23368, 3.23907, 3.24463, 3.25038, 3.25634, 
+    3.26259, 3.269, 3.27568, 3.28255, 3.2896, 3.29693, 3.3046, 
+    3.3125, 3.32077, 3.32939, 3.33835, 3.34752, 3.35677, 3.36601, 
+    3.37513, 3.38412, 3.39302, 3.40194, 3.411, 3.4203, 3.42977, 
+    3.43928, 3.44882, 3.4585, 3.46858, 3.47953, 3.49176, 3.50575, 
+    3.52126, 3.53807, 3.55583, 3.57413, 3.59263, 3.61127, 3.63027, 
+    3.65016, 3.67178, 3.69607, 3.7246, 3.75817, 3.79742, 3.84225, 
+    3.89112, 3.941, 3.98791, 4.02819, 4.05966, 4.08209, 4.09703, 
+    4.10652, 4.11237, 4.11552, 4.11665, 4.11594, 4.11328, 4.10846, 
+    4.1014, 4.09224, 4.08121, 4.06844, 4.05407, 4.03827, 4.02116, 
+    4.00291, 3.98358, 3.96336, 3.9425, 3.92105, 3.89919, 3.87704, 
+    3.85464, 3.83195, 3.80885, 3.78536, 3.7613, 3.73669, 3.71166, 
+    3.68648, 3.66144, 3.63672, 3.61248, 3.58871, 3.5653, 3.54227, 
+    3.51973, 3.49781, 3.47657, 3.45589, 3.43573, 3.41604)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.7875, 2.78852, 2.78955, 
+    2.79057, 2.79163, 2.79278, 2.79408, 2.7956, 2.79736, 2.79933, 
+    2.80154, 2.80393, 2.80657, 2.80953, 2.81281, 2.8164, 2.8203, 
+    2.8246, 2.82931, 2.83436, 2.83964, 2.84496, 2.85016, 2.85518, 
+    2.86003, 2.86484, 2.86976, 2.87494, 2.8805, 2.88652, 2.89288, 
+    2.89952, 2.90641, 2.91368, 2.92179, 2.93133, 2.94296, 2.95657, 
+    2.97207, 2.98908, 3.00712, 3.02579, 3.0449, 3.0645, 3.08499, 
+    3.10725, 3.13236, 3.16194, 3.19693, 3.23813, 3.28576, 3.33913, 
+    3.39599, 3.45246, 3.50401, 3.54689, 3.57934, 3.60221, 3.61774, 
+    3.62815, 3.63532, 3.64023, 3.64321, 3.64417, 3.64301, 3.63956, 
+    3.6338, 3.62587, 3.61597, 3.60433, 3.59113, 3.57648, 3.5605, 
+    3.54333, 3.52508, 3.50593, 3.4861, 3.46575, 3.44502, 3.42397, 
+    3.40253, 3.38068, 3.35838, 3.33556, 3.31213, 3.28812, 3.26368, 
+    3.23911, 3.21473, 3.19076, 3.16728, 3.14422, 3.12155, 3.0993, 
+    3.07755, 3.05638, 3.0359, 3.01602, 2.99669, 2.97785)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.8439, 2.84588, 2.8478, 
+    2.84981, 2.85197, 2.85428, 2.85674, 2.85931, 2.86212, 2.86513, 
+    2.86844, 2.87201, 2.87578, 2.87978, 2.88406, 2.88863, 2.89357, 
+    2.8988, 2.90437, 2.91025, 2.91643, 2.92275, 2.92907, 2.93531, 
+    2.9414, 2.94736, 2.95338, 2.95957, 2.96598, 2.97269, 2.97965, 
+    2.98678, 2.99406, 3.00168, 3.00999, 3.01943, 3.03064, 3.04351, 
+    3.05786, 3.07342, 3.08971, 3.10633, 3.12303, 3.13983, 3.15713, 
+    3.17575, 3.19661, 3.22139, 3.25082, 3.28568, 3.32628, 3.37195, 
+    3.42065, 3.46891, 3.51267, 3.54853, 3.57497, 3.59275, 3.60383, 
+    3.61033, 3.61368, 3.61488, 3.61421, 3.61169, 3.60717, 3.60058, 
+    3.59188, 3.58115, 3.56858, 3.55433, 3.53858, 3.52154, 3.50327, 
+    3.48386, 3.46344, 3.44217, 3.42023, 3.39783, 3.37512, 3.35209, 
+    3.32872, 3.30493, 3.28072, 3.25606, 3.23086, 3.20514, 3.17904, 
+    3.1528, 3.12677, 3.10115, 3.076, 3.05132, 3.027, 3.00307, 
+    2.97966, 2.95692, 2.93482, 2.91325, 2.89212, 2.87146)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.19967, 3.20278, 3.206, 
+    3.2093, 3.21274, 3.21636, 3.22018, 3.22416, 3.22841, 3.23295, 
+    3.23771, 3.24274, 3.24799, 3.25349, 3.25927, 3.26539, 3.27184, 
+    3.27865, 3.28588, 3.29343, 3.30131, 3.30939, 3.31751, 3.32551, 
+    3.3334, 3.34129, 3.34918, 3.35722, 3.36545, 3.37391, 3.38255, 
+    3.39125, 3.39998, 3.4089, 3.41829, 3.42862, 3.44044, 3.45379, 
+    3.46846, 3.48411, 3.50034, 3.51678, 3.53319, 3.54959, 3.56639, 
+    3.58432, 3.60432, 3.62799, 3.65603, 3.68931, 3.72812, 3.77184, 
+    3.8185, 3.86476, 3.90672, 3.94109, 3.96632, 3.9829, 3.99259, 
+    3.9975, 3.99922, 3.99876, 3.99639, 3.99216, 3.98594, 3.97761, 
+    3.96717, 3.95469, 3.94039, 3.92453, 3.90719, 3.88846, 3.86852, 
+    3.8475, 3.82562, 3.80297, 3.77962, 3.75583, 3.73175, 3.7075, 
+    3.68302, 3.65822, 3.63299, 3.60725, 3.58092, 3.55412, 3.527, 
+    3.49983, 3.47286, 3.44625, 3.42011, 3.3944, 3.36914, 3.34433, 
+    3.32, 3.29626, 3.27314, 3.25068, 3.22876, 3.20729)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.50771, 2.50836, 2.50896, 
+    2.50962, 2.51038, 2.51128, 2.51235, 2.51365, 2.51523, 2.51706, 
+    2.51911, 2.52147, 2.52412, 2.52705, 2.5303, 2.53392, 2.53787, 
+    2.54234, 2.54727, 2.55253, 2.55802, 2.56361, 2.56913, 2.57449, 
+    2.57966, 2.58477, 2.59, 2.59548, 2.60142, 2.60782, 2.6146, 
+    2.62169, 2.629, 2.63665, 2.64515, 2.65504, 2.66701, 2.68095, 
+    2.69665, 2.71371, 2.73162, 2.74992, 2.76837, 2.787, 2.80632, 
+    2.82727, 2.85097, 2.87926, 2.91284, 2.95257, 2.99859, 3.05009, 
+    3.10479, 3.15904, 3.20855, 3.24973, 3.28103, 3.30315, 3.31828, 
+    3.32861, 3.33581, 3.3409, 3.34411, 3.34542, 3.34467, 3.34172, 
+    3.33658, 3.32937, 3.32033, 3.30965, 3.29735, 3.28359, 3.26845, 
+    3.25217, 3.23489, 3.21664, 3.19758, 3.17796, 3.15795, 3.13756, 
+    3.11683, 3.09571, 3.07404, 3.05173, 3.02873, 3.00511, 2.98106, 
+    2.95683, 2.93275, 2.90904, 2.88576, 2.86291, 2.84043, 2.8184, 
+    2.79685, 2.77581, 2.75538, 2.73553, 2.71615, 2.69724)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.48686, 2.4818, 2.47689, 
+    2.47213, 2.46752, 2.46308, 2.4589, 2.45508, 2.45155, 2.44836, 
+    2.44548, 2.44293, 2.44076, 2.43899, 2.43762, 2.43655, 2.43582, 
+    2.43553, 2.43571, 2.43627, 2.43717, 2.43831, 2.43959, 2.44096, 
+    2.44245, 2.44407, 2.4459, 2.44811, 2.45097, 2.45449, 2.45865, 
+    2.46335, 2.46851, 2.47431, 2.48121, 2.48979, 2.50071, 2.51378, 
+    2.52872, 2.5451, 2.56244, 2.58025, 2.59813, 2.61604, 2.63445, 
+    2.65429, 2.67678, 2.70365, 2.73566, 2.77351, 2.81731, 2.8662, 
+    2.91796, 2.96917, 3.01591, 3.05497, 3.08492, 3.10651, 3.12157, 
+    3.13206, 3.13961, 3.14501, 3.14855, 3.15014, 3.14973, 3.14727, 
+    3.14271, 3.13612, 3.12767, 3.11755, 3.10597, 3.09305, 3.07886, 
+    3.06355, 3.04721, 3.03, 3.01201, 2.99357, 2.97474, 2.95553, 
+    2.93594, 2.91591, 2.89548, 2.87461, 2.85321, 2.83133, 2.80914, 
+    2.78691, 2.76492, 2.74336, 2.72234, 2.70186, 2.68188, 2.66234, 
+    2.64331, 2.62492, 2.60712, 2.58987, 2.57305, 2.55666)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.35001, 3.3581, 3.36609, 
+    3.37403, 3.38189, 3.38971, 3.39757, 3.40553, 3.41355, 3.42171, 
+    3.42991, 3.43814, 3.44651, 3.45503, 3.46369, 3.47254, 3.48152, 
+    3.49071, 3.50021, 3.50994, 3.51984, 3.52977, 3.53963, 3.54939, 
+    3.55906, 3.56859, 3.57798, 3.58742, 3.59705, 3.60689, 3.61688, 
+    3.62691, 3.63698, 3.6472, 3.65785, 3.66944, 3.68247, 3.69682, 
+    3.71233, 3.72874, 3.74572, 3.76291, 3.78007, 3.79722, 3.81467, 
+    3.83316, 3.85356, 3.87735, 3.90518, 3.93767, 3.97511, 4.017, 
+    4.06156, 4.10595, 4.14698, 4.18192, 4.20933, 4.22927, 4.2434, 
+    4.25325, 4.26031, 4.26559, 4.26897, 4.27051, 4.27019, 4.26813, 
+    4.26423, 4.25845, 4.25095, 4.24187, 4.23134, 4.21962, 4.20686, 
+    4.19314, 4.17848, 4.16297, 4.14674, 4.13009, 4.11314, 4.09595, 
+    4.0785, 4.06062, 4.04227, 4.02346, 4.00416, 3.98443, 3.96436, 
+    3.94408, 3.92387, 3.90399, 3.88447, 3.86527, 3.84638, 3.82782, 
+    3.80954, 3.7916, 3.77413, 3.75704, 3.74028, 3.72367)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.30175, 2.30322, 2.30467, 
+    2.30611, 2.30758, 2.30913, 2.31074, 2.31247, 2.31435, 2.31639, 
+    2.31856, 2.32089, 2.32339, 2.3261, 2.32903, 2.33221, 2.3356, 
+    2.33931, 2.34334, 2.34755, 2.3519, 2.35627, 2.36052, 2.3646, 
+    2.36857, 2.37245, 2.37648, 2.38075, 2.38537, 2.39042, 2.3958, 
+    2.4014, 2.40715, 2.41315, 2.41972, 2.42723, 2.43616, 2.44644, 
+    2.45788, 2.47021, 2.48304, 2.49604, 2.50904, 2.5221, 2.53561, 
+    2.55023, 2.56687, 2.58685, 2.61073, 2.63908, 2.6721, 2.70924, 
+    2.74884, 2.78831, 2.82451, 2.85478, 2.87789, 2.89424, 2.90537, 
+    2.91289, 2.91801, 2.92153, 2.9236, 2.92421, 2.92328, 2.92075, 
+    2.91665, 2.91101, 2.90395, 2.8956, 2.8861, 2.87562, 2.86427, 
+    2.85213, 2.83924, 2.82569, 2.81167, 2.79729, 2.78263, 2.76781, 
+    2.75279, 2.73749, 2.72184, 2.70584, 2.68943, 2.67263, 2.65554, 
+    2.63835, 2.62126, 2.6045, 2.58811, 2.57205, 2.55629, 2.54081, 
+    2.52567, 2.51089, 2.4965, 2.48249, 2.46875, 2.45533)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.418, 2.41326, 2.40866, 
+    2.40415, 2.39977, 2.3956, 2.39173, 2.38817, 2.38485, 2.38189, 
+    2.37929, 2.37703, 2.37512, 2.37357, 2.3724, 2.37161, 2.37123, 
+    2.37129, 2.3718, 2.37265, 2.37383, 2.37527, 2.37687, 2.37856, 
+    2.38034, 2.38217, 2.38433, 2.38701, 2.39044, 2.39472, 2.39974, 
+    2.4053, 2.41134, 2.41802, 2.42572, 2.43506, 2.44666, 2.46033, 
+    2.47571, 2.49226, 2.50931, 2.52622, 2.54257, 2.55841, 2.5744, 
+    2.59162, 2.61153, 2.63592, 2.66565, 2.70138, 2.74318, 2.79008, 
+    2.83987, 2.88918, 2.93417, 2.97177, 3.00072, 3.02165, 3.03633, 
+    3.04658, 3.05397, 3.05934, 3.06288, 3.06464, 3.06441, 3.0621, 
+    3.05772, 3.05148, 3.04349, 3.03385, 3.02278, 3.0104, 2.99686, 
+    2.98221, 2.96656, 2.95007, 2.93287, 2.91522, 2.8971, 2.87873, 
+    2.85994, 2.8408, 2.82128, 2.80131, 2.78077, 2.75969, 2.73821, 
+    2.71668, 2.69547, 2.67474, 2.65457, 2.63493, 2.61572, 2.59702, 
+    2.57887, 2.56125, 2.54406, 2.52722, 2.51069, 2.4946)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.58587, 2.58671, 2.5876, 
+    2.58849, 2.58942, 2.59051, 2.59184, 2.59343, 2.59526, 2.59735, 
+    2.59974, 2.60238, 2.60536, 2.60866, 2.61231, 2.61634, 2.62078, 
+    2.62567, 2.63107, 2.63683, 2.64287, 2.64893, 2.65484, 2.66052, 
+    2.66597, 2.67139, 2.67698, 2.68295, 2.68946, 2.6966, 2.70421, 
+    2.71215, 2.72032, 2.72878, 2.73796, 2.74841, 2.76095, 2.77543, 
+    2.79153, 2.80872, 2.8264, 2.84403, 2.86127, 2.87825, 2.89563, 
+    2.9145, 2.93625, 2.96264, 2.99466, 3.03301, 3.07787, 3.12839, 
+    3.18229, 3.23588, 3.28484, 3.32558, 3.35648, 3.37824, 3.39318, 
+    3.40336, 3.41043, 3.41545, 3.41857, 3.41979, 3.41901, 3.41608, 
+    3.41099, 3.40385, 3.39484, 3.38413, 3.37188, 3.35825, 3.34329, 
+    3.32722, 3.31004, 3.29194, 3.27303, 3.25357, 3.23376, 3.21363, 
+    3.19312, 3.17216, 3.1507, 3.12861, 3.10581, 3.0823, 3.05828, 
+    3.03405, 3.00995, 2.98625, 2.96303, 2.94027, 2.91793, 2.89593, 
+    2.87436, 2.85323, 2.83267, 2.81262, 2.79292, 2.77366)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.69766, 2.69948, 2.70131, 
+    2.70313, 2.70502, 2.70703, 2.70922, 2.71167, 2.71436, 2.71732, 
+    2.72054, 2.72399, 2.72773, 2.73185, 2.73635, 2.7412, 2.74643, 
+    2.7521, 2.75824, 2.76484, 2.77172, 2.77861, 2.78531, 2.79175, 
+    2.79797, 2.80408, 2.8104, 2.81713, 2.82453, 2.83269, 2.84144, 
+    2.85054, 2.85985, 2.86946, 2.87977, 2.89132, 2.90496, 2.92053, 
+    2.93765, 2.95571, 2.97403, 2.99195, 3.00912, 3.02567, 3.04234, 
+    3.06034, 3.08129, 3.10713, 3.13878, 3.17702, 3.22204, 3.27301, 
+    3.32761, 3.38211, 3.43207, 3.47379, 3.50564, 3.52833, 3.54393, 
+    3.55475, 3.56243, 3.56793, 3.57162, 3.57341, 3.57308, 3.57059, 
+    3.56596, 3.55929, 3.55072, 3.5404, 3.52854, 3.51521, 3.50057, 
+    3.48478, 3.46793, 3.45016, 3.43159, 3.41243, 3.39286, 3.37297, 
+    3.35276, 3.33211, 3.31089, 3.28902, 3.2664, 3.24301, 3.21905, 
+    3.19489, 3.17083, 3.14718, 3.12408, 3.10142, 3.0791, 3.05713, 
+    3.03554, 3.01444, 2.99378, 2.97347, 2.9535, 2.93385)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.07259, 3.07707, 3.08152, 
+    3.08597, 3.0905, 3.09514, 3.09988, 3.10476, 3.10978, 3.11506, 
+    3.12055, 3.12628, 3.13225, 3.13845, 3.1449, 3.15167, 3.15875, 
+    3.16623, 3.17404, 3.18222, 3.19073, 3.1994, 3.20801, 3.2164, 
+    3.22456, 3.23256, 3.24054, 3.24868, 3.25724, 3.26633, 3.27589, 
+    3.28569, 3.29551, 3.30536, 3.31569, 3.32721, 3.34055, 3.35566, 
+    3.37218, 3.38955, 3.407, 3.42379, 3.43942, 3.45392, 3.46803, 
+    3.48289, 3.50014, 3.5217, 3.54856, 3.58157, 3.62085, 3.6658, 
+    3.71446, 3.76356, 3.80911, 3.84756, 3.87708, 3.89791, 3.91179, 
+    3.92133, 3.92812, 3.93276, 3.93549, 3.93642, 3.93551, 3.93267, 
+    3.92771, 3.9207, 3.91183, 3.90113, 3.88882, 3.87534, 3.86049, 
+    3.84454, 3.82725, 3.80908, 3.79004, 3.77038, 3.75041, 3.73002, 
+    3.70931, 3.68798, 3.66599, 3.6433, 3.61973, 3.59535, 3.57032, 
+    3.54496, 3.51966, 3.49467, 3.47022, 3.44614, 3.42233, 3.39884, 
+    3.37572, 3.35297, 3.33047, 3.3083, 3.28639, 3.26463)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.70562, 2.70762, 2.70961, 
+    2.71157, 2.71359, 2.71571, 2.71793, 2.72037, 2.72311, 2.72613, 
+    2.72934, 2.73279, 2.73651, 2.74058, 2.74502, 2.74982, 2.75503, 
+    2.76061, 2.76671, 2.77324, 2.78003, 2.78685, 2.7935, 2.79989, 
+    2.80609, 2.81225, 2.81858, 2.8254, 2.83284, 2.84094, 2.84963, 
+    2.85872, 2.86799, 2.87757, 2.88786, 2.89953, 2.91325, 2.92898, 
+    2.94632, 2.96468, 2.98339, 3.00173, 3.01932, 3.03631, 3.05348, 
+    3.07201, 3.09338, 3.11961, 3.15151, 3.18988, 3.23501, 3.28613, 
+    3.34097, 3.39576, 3.44605, 3.48812, 3.52027, 3.5432, 3.55901, 
+    3.5699, 3.57757, 3.58307, 3.58668, 3.58834, 3.58792, 3.58538, 
+    3.58066, 3.57385, 3.56517, 3.55478, 3.54287, 3.52959, 3.51512, 
+    3.49953, 3.48293, 3.4655, 3.44733, 3.42872, 3.40978, 3.39065, 
+    3.37125, 3.35145, 3.33118, 3.31034, 3.28887, 3.26667, 3.24394, 
+    3.22103, 3.1983, 3.17603, 3.15429, 3.13301, 3.11214, 3.09161, 
+    3.07149, 3.05181, 3.03259, 3.01373, 2.99516, 2.9769)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.39787, 2.39827, 2.39871, 
+    2.39925, 2.3999, 2.40071, 2.40172, 2.40302, 2.40459, 2.40649, 
+    2.40871, 2.41121, 2.41399, 2.41713, 2.42071, 2.42473, 2.42914, 
+    2.43398, 2.43931, 2.44509, 2.45116, 2.45731, 2.46333, 2.46909, 
+    2.47461, 2.48014, 2.48589, 2.49211, 2.499, 2.50658, 2.5147, 
+    2.52319, 2.53192, 2.54097, 2.55064, 2.56153, 2.57424, 2.58874, 
+    2.6047, 2.62159, 2.63878, 2.65568, 2.672, 2.6879, 2.704, 
+    2.72135, 2.74127, 2.76566, 2.7953, 2.83102, 2.87309, 2.92085, 
+    2.97229, 3.02386, 3.0712, 3.11058, 3.14007, 3.16022, 3.17307, 
+    3.18092, 3.18552, 3.18791, 3.18835, 3.18698, 3.18363, 3.17816, 
+    3.1706, 3.16106, 3.14973, 3.13679, 3.12243, 3.10685, 3.09019, 
+    3.07249, 3.05387, 3.0345, 3.01456, 2.99423, 2.97367, 2.9529, 
+    2.93196, 2.91073, 2.88911, 2.86701, 2.84436, 2.82115, 2.79751, 
+    2.7738, 2.75034, 2.72735, 2.70492, 2.683, 2.66153, 2.64047, 
+    2.61986, 2.59977, 2.58023, 2.56117, 2.54243, 2.52407)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.7536, 2.75518, 2.75668, 
+    2.75824, 2.75986, 2.76161, 2.76355, 2.76568, 2.76804, 2.77072, 
+    2.77364, 2.77682, 2.78029, 2.7841, 2.78828, 2.79288, 2.79785, 
+    2.80335, 2.80928, 2.8156, 2.82216, 2.82872, 2.83509, 2.84116, 
+    2.84699, 2.85279, 2.85876, 2.86523, 2.87241, 2.88034, 2.88888, 
+    2.89778, 2.90683, 2.91613, 2.92614, 2.93742, 2.95064, 2.96568, 
+    2.98215, 2.99942, 3.01679, 3.03363, 3.0496, 3.06488, 3.08025, 
+    3.097, 3.11658, 3.1411, 3.17136, 3.20808, 3.25142, 3.30045, 
+    3.35292, 3.40516, 3.45295, 3.49279, 3.52312, 3.54456, 3.55932, 
+    3.56938, 3.5764, 3.58133, 3.58449, 3.58574, 3.585, 3.58215, 
+    3.57719, 3.57022, 3.56145, 3.55106, 3.53916, 3.52591, 3.51143, 
+    3.49579, 3.47912, 3.46157, 3.44333, 3.42459, 3.40551, 3.3861, 
+    3.36637, 3.34623, 3.32558, 3.30434, 3.28237, 3.25968, 3.23641, 
+    3.21293, 3.18962, 3.16672, 3.14432, 3.12238, 3.10084, 3.07961, 
+    3.05877, 3.03835, 3.01833, 2.9987, 2.97934, 2.9602)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.7832, 2.78493, 2.78661, 
+    2.78827, 2.79001, 2.79191, 2.79401, 2.79633, 2.79889, 2.80179, 
+    2.80493, 2.80834, 2.81204, 2.81612, 2.8206, 2.82546, 2.83077, 
+    2.83661, 2.84296, 2.84976, 2.85683, 2.86392, 2.87081, 2.87741, 
+    2.88377, 2.8901, 2.89658, 2.90361, 2.91139, 2.92, 2.92926, 
+    2.93891, 2.94875, 2.95882, 2.96961, 2.98173, 2.9959, 3.01198, 
+    3.02952, 3.04786, 3.0662, 3.08383, 3.10037, 3.11601, 3.13157, 
+    3.14844, 3.16823, 3.19313, 3.22404, 3.26172, 3.30626, 3.35684, 
+    3.41116, 3.46548, 3.51545, 3.55737, 3.58953, 3.61259, 3.62862, 
+    3.63983, 3.6479, 3.65381, 3.65784, 3.65995, 3.65995, 3.65781, 
+    3.65347, 3.64703, 3.63872, 3.6287, 3.6171, 3.60409, 3.58984, 
+    3.5744, 3.55796, 3.54053, 3.52236, 3.50373, 3.48469, 3.46537, 
+    3.44572, 3.42568, 3.4051, 3.38386, 3.36189, 3.33912, 3.31571, 
+    3.29206, 3.26859, 3.2456, 3.22316, 3.20119, 3.17963, 3.15837, 
+    3.13748, 3.11698, 3.09686, 3.0771, 3.05761, 3.03836)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.66921, 2.67101, 2.6728, 
+    2.6746, 2.67649, 2.6785, 2.6807, 2.68311, 2.68573, 2.68855, 
+    2.69159, 2.69479, 2.69825, 2.70201, 2.706, 2.71023, 2.7148, 
+    2.71972, 2.72501, 2.7307, 2.73669, 2.74282, 2.74892, 2.75492, 
+    2.76082, 2.76667, 2.77257, 2.77876, 2.78537, 2.79247, 2.79991, 
+    2.80753, 2.81521, 2.82302, 2.83128, 2.84043, 2.85113, 2.86316, 
+    2.8762, 2.88966, 2.90299, 2.9157, 2.92748, 2.93841, 2.94908, 
+    2.9604, 2.97364, 2.99041, 3.01159, 3.03777, 3.06913, 3.10496, 
+    3.14335, 3.18138, 3.2157, 3.24359, 3.26381, 3.27678, 3.28412, 
+    3.28756, 3.28842, 3.28755, 3.28511, 3.28116, 3.27553, 3.26816, 
+    3.25905, 3.24831, 3.23617, 3.22275, 3.20819, 3.19261, 3.17613, 
+    3.15886, 3.14093, 3.12249, 3.10358, 3.08437, 3.06505, 3.04566, 
+    3.02616, 3.00651, 2.98659, 2.96624, 2.94537, 2.92399, 2.90228, 
+    2.88053, 2.85903, 2.83793, 2.81729, 2.79708, 2.77723, 2.75775, 
+    2.73865, 2.71995, 2.70153, 2.68337, 2.66548, 2.64785)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67577, 2.6781, 2.68057, 
+    2.68308, 2.68571, 2.68853, 2.69157, 2.69489, 2.69854, 2.70251, 
+    2.70676, 2.7113, 2.71615, 2.72137, 2.72701, 2.73307, 2.73955, 
+    2.74652, 2.754, 2.76197, 2.77035, 2.77892, 2.78748, 2.79586, 
+    2.80403, 2.81209, 2.82032, 2.82889, 2.83809, 2.84789, 2.85821, 
+    2.86882, 2.8795, 2.89031, 2.90161, 2.91401, 2.92812, 2.94384, 
+    2.96075, 2.97829, 2.99575, 3.01248, 3.02806, 3.04267, 3.05704, 
+    3.07238, 3.09013, 3.11232, 3.13979, 3.17344, 3.21352, 3.25929, 
+    3.30875, 3.35841, 3.40402, 3.44181, 3.4699, 3.48879, 3.50047, 
+    3.50707, 3.51038, 3.51142, 3.51051, 3.50774, 3.50292, 3.496, 
+    3.48695, 3.47585, 3.46298, 3.44857, 3.43265, 3.41545, 3.39706, 
+    3.37756, 3.35728, 3.33633, 3.31474, 3.29277, 3.27057, 3.24835, 
+    3.22594, 3.20318, 3.18005, 3.15643, 3.13218, 3.10726, 3.08186, 
+    3.05635, 3.03107, 3.00627, 2.98206, 2.95833, 2.93503, 2.91218, 
+    2.88979, 2.86786, 2.84635, 2.8252, 2.80435, 2.78379)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(4.08011, 4.08917, 4.09812, 
+    4.10717, 4.11636, 4.12572, 4.13525, 4.14491, 4.15468, 4.16492, 
+    4.17554, 4.18645, 4.19747, 4.20886, 4.22073, 4.23294, 4.2455, 
+    4.25861, 4.27223, 4.28657, 4.30121, 4.3161, 4.33101, 4.34588, 
+    4.3608, 4.37556, 4.39022, 4.40491, 4.42026, 4.4365, 4.45333, 
+    4.47067, 4.48824, 4.50578, 4.52351, 4.54213, 4.56224, 4.58461, 
+    4.6081, 4.63278, 4.65754, 4.68129, 4.70336, 4.72369, 4.74296, 
+    4.76233, 4.78281, 4.8067, 4.83717, 4.87521, 4.92083, 4.97348, 
+    5.03142, 5.09114, 5.14815, 5.1977, 5.23638, 5.26409, 5.28335, 
+    5.29501, 5.30188, 5.30611, 5.30785, 5.30751, 5.30478, 5.29954, 
+    5.29237, 5.28192, 5.26895, 5.2545, 5.23829, 5.22042, 5.20074, 
+    5.17928, 5.15806, 5.13563, 5.11103, 5.08558, 5.06087, 5.03552, 
+    5.01022, 4.98451, 4.95862, 4.93205, 4.90456, 4.87669, 4.84758, 
+    4.81772, 4.78824, 4.75949, 4.73128, 4.70338, 4.67597, 4.64937, 
+    4.62348, 4.59796, 4.57249, 4.54711, 4.52221, 4.49772)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.69029, 2.69155, 2.69276, 
+    2.69401, 2.69537, 2.6969, 2.6986, 2.70053, 2.70275, 2.70526, 
+    2.70805, 2.71117, 2.7146, 2.71841, 2.72263, 2.72727, 2.73244, 
+    2.73811, 2.74434, 2.751, 2.75796, 2.76499, 2.77182, 2.77832, 
+    2.78454, 2.79058, 2.79694, 2.80387, 2.81172, 2.82049, 2.82999, 
+    2.83991, 2.84997, 2.86024, 2.87113, 2.88325, 2.89732, 2.91313, 
+    2.93024, 2.94801, 2.96556, 2.98217, 2.99748, 3.01169, 3.02566, 
+    3.04081, 3.05887, 3.08206, 3.11116, 3.14693, 3.1896, 3.23838, 
+    3.29101, 3.34378, 3.39235, 3.43296, 3.46384, 3.48563, 3.50041, 
+    3.51027, 3.51704, 3.52177, 3.52465, 3.52563, 3.52458, 3.52144, 
+    3.51616, 3.50887, 3.49979, 3.48911, 3.47693, 3.46346, 3.44884, 
+    3.4332, 3.41664, 3.39924, 3.3811, 3.3626, 3.34385, 3.3249, 
+    3.30577, 3.28632, 3.26639, 3.24585, 3.22459, 3.20263, 3.18013, 
+    3.15743, 3.13493, 3.11287, 3.09137, 3.07036, 3.04977, 3.02952, 
+    3.00962, 2.99011, 2.97094, 2.95202, 2.9333, 2.91486)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.92248, 2.92659, 2.93066, 
+    2.93476, 2.9389, 2.94308, 2.94739, 2.95193, 2.95676, 2.96173, 
+    2.96689, 2.97227, 2.97786, 2.98379, 2.99011, 2.9968, 3.00377, 
+    3.0111, 3.01896, 3.02727, 3.03586, 3.04451, 3.05301, 3.06118, 
+    3.06903, 3.0768, 3.08475, 3.09322, 3.10233, 3.11213, 3.1225, 
+    3.13318, 3.14395, 3.15491, 3.16634, 3.17886, 3.19301, 3.20873, 
+    3.22561, 3.24301, 3.26018, 3.2765, 3.29172, 3.30608, 3.32035, 
+    3.33582, 3.35393, 3.37659, 3.40472, 3.43908, 3.47988, 3.52634, 
+    3.57629, 3.62625, 3.67206, 3.71023, 3.73918, 3.75953, 3.77312, 
+    3.78205, 3.78784, 3.79147, 3.79327, 3.79326, 3.79136, 3.78742, 
+    3.78144, 3.77352, 3.76378, 3.75249, 3.7399, 3.72614, 3.71132, 
+    3.6955, 3.67875, 3.66128, 3.64318, 3.62484, 3.60627, 3.58762, 
+    3.56874, 3.54952, 3.52987, 3.50973, 3.48896, 3.46756, 3.44566, 
+    3.42355, 3.40161, 3.38009, 3.35907, 3.33851, 3.31828, 3.2983, 
+    3.2786, 3.25925, 3.24021, 3.2214, 3.20277, 3.1843)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.07417, 3.07832, 3.08256, 
+    3.08688, 3.09123, 3.09573, 3.10044, 3.10533, 3.11044, 3.1159, 
+    3.12162, 3.12756, 3.13378, 3.14033, 3.14725, 3.15455, 3.16225, 
+    3.1703, 3.17894, 3.18809, 3.19769, 3.20758, 3.21752, 3.22731, 
+    3.23689, 3.24624, 3.25556, 3.26508, 3.27514, 3.28594, 3.29737, 
+    3.30911, 3.32084, 3.33249, 3.34436, 3.35702, 3.37108, 3.3869, 
+    3.40401, 3.42185, 3.43951, 3.45611, 3.47104, 3.48416, 3.49604, 
+    3.5079, 3.52138, 3.53821, 3.56034, 3.58853, 3.62328, 3.66426, 
+    3.70985, 3.75699, 3.80171, 3.8403, 3.87054, 3.89217, 3.90665, 
+    3.91598, 3.92194, 3.92538, 3.92686, 3.92665, 3.92453, 3.92037, 
+    3.91412, 3.90588, 3.89585, 3.8842, 3.87107, 3.85659, 3.8409, 
+    3.82405, 3.80613, 3.78732, 3.76779, 3.74775, 3.72738, 3.70683, 
+    3.68611, 3.66511, 3.6437, 3.62174, 3.59898, 3.57531, 3.55086, 
+    3.52601, 3.50123, 3.47687, 3.45302, 3.42964, 3.40662, 3.38389, 
+    3.36145, 3.3394, 3.31769, 3.29618, 3.27475, 3.25335)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.38078, 2.38131, 2.38193, 
+    2.38262, 2.38344, 2.38444, 2.38567, 2.38712, 2.38881, 2.39093, 
+    2.39336, 2.39607, 2.39913, 2.40258, 2.40648, 2.41084, 2.41573, 
+    2.42118, 2.42714, 2.43349, 2.44015, 2.44684, 2.45331, 2.45944, 
+    2.46526, 2.47099, 2.47707, 2.48374, 2.49133, 2.49984, 2.50913, 
+    2.51884, 2.52869, 2.5387, 2.54918, 2.56081, 2.57425, 2.58935, 
+    2.60564, 2.62234, 2.63857, 2.65354, 2.66685, 2.67873, 2.69011, 
+    2.70243, 2.71745, 2.73727, 2.76279, 2.79473, 2.83319, 2.87739, 
+    2.92526, 2.97336, 3.01761, 3.05455, 3.08254, 3.102, 3.1149, 
+    3.12322, 3.12856, 3.13191, 3.13356, 3.13355, 3.13171, 3.12793, 
+    3.12214, 3.11448, 3.10521, 3.09451, 3.08255, 3.0694, 3.05518, 
+    3.03994, 3.0239, 3.00716, 2.98977, 2.97209, 2.95419, 2.93616, 
+    2.91792, 2.89938, 2.88046, 2.86104, 2.8409, 2.81999, 2.7985, 
+    2.77678, 2.75526, 2.73427, 2.71386, 2.69391, 2.67432, 2.65502, 
+    2.63606, 2.6175, 2.59918, 2.58105, 2.56303, 2.5451)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.63825, 2.63919, 2.64014, 
+    2.64123, 2.64246, 2.64389, 2.64558, 2.64761, 2.64998, 2.65278, 
+    2.65598, 2.65958, 2.66361, 2.66813, 2.67324, 2.67897, 2.68525, 
+    2.69222, 2.70001, 2.70847, 2.71745, 2.7266, 2.73557, 2.74411, 
+    2.75221, 2.76007, 2.768, 2.7766, 2.78636, 2.79748, 2.80979, 
+    2.82279, 2.83596, 2.84913, 2.86261, 2.87708, 2.89327, 2.91169, 
+    2.93162, 2.95221, 2.97227, 2.9907, 3.00674, 3.02035, 3.03249, 
+    3.04496, 3.05986, 3.0792, 3.10543, 3.13931, 3.18133, 3.23093, 
+    3.28613, 3.34326, 3.39753, 3.44451, 3.48155, 3.50849, 3.52714, 
+    3.53984, 3.54853, 3.55441, 3.5583, 3.56023, 3.55998, 3.5574, 
+    3.55253, 3.5455, 3.53648, 3.52565, 3.51321, 3.49934, 3.48427, 
+    3.46805, 3.45075, 3.43245, 3.41334, 3.3937, 3.37388, 3.35394, 
+    3.33372, 3.31327, 3.29239, 3.27094, 3.24863, 3.22526, 3.20096, 
+    3.17615, 3.15144, 3.12726, 3.10379, 3.0809, 3.05842, 3.03629, 
+    3.01448, 2.99302, 2.97185, 2.95081, 2.92979, 2.90876)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.87837, 2.88271, 2.88708, 
+    2.89146, 2.89592, 2.90046, 2.90509, 2.90997, 2.91502, 2.92024, 
+    2.92567, 2.93129, 2.93715, 2.94329, 2.94974, 2.95651, 2.96366, 
+    2.97114, 2.97908, 2.98747, 2.99621, 3.00505, 3.01382, 3.02242, 
+    3.0308, 3.03906, 3.04747, 3.05634, 3.0659, 3.07621, 3.08711, 
+    3.09828, 3.10944, 3.12059, 3.13215, 3.14464, 3.15853, 3.1737, 
+    3.18951, 3.20521, 3.21989, 3.23277, 3.24348, 3.25224, 3.25995, 
+    3.26813, 3.27841, 3.29284, 3.31223, 3.33716, 3.36772, 3.40306, 
+    3.44131, 3.47964, 3.5148, 3.54412, 3.56629, 3.58167, 3.59171, 
+    3.59801, 3.60182, 3.60394, 3.60454, 3.60367, 3.60122, 3.59715, 
+    3.59143, 3.58416, 3.5755, 3.56566, 3.55478, 3.54297, 3.53027, 
+    3.51677, 3.5027, 3.48804, 3.47291, 3.4576, 3.44223, 3.42687, 
+    3.41144, 3.3958, 3.37986, 3.36343, 3.34636, 3.32867, 3.31044, 
+    3.29199, 3.27373, 3.25592, 3.23864, 3.22181, 3.20524, 3.18885, 
+    3.17261, 3.15657, 3.14061, 3.12457, 3.10847, 3.09232)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.47135, 2.47174, 2.47226, 
+    2.47287, 2.47361, 2.47453, 2.47567, 2.47711, 2.47892, 2.48107, 
+    2.48352, 2.48635, 2.48958, 2.49326, 2.49747, 2.50224, 2.50755, 
+    2.5135, 2.52001, 2.52708, 2.5345, 2.54193, 2.54905, 2.55576, 
+    2.56211, 2.56838, 2.57508, 2.5827, 2.59144, 2.60145, 2.61249, 
+    2.62407, 2.63575, 2.64744, 2.65949, 2.67255, 2.6874, 2.70375, 
+    2.72096, 2.73804, 2.75394, 2.76769, 2.77884, 2.78774, 2.79558, 
+    2.80417, 2.81551, 2.83199, 2.85453, 2.8839, 2.92019, 2.96246, 
+    3.00854, 3.05499, 3.0977, 3.13321, 3.15993, 3.17837, 3.19028, 
+    3.19772, 3.2023, 3.20494, 3.20596, 3.20532, 3.20292, 3.19859, 
+    3.19233, 3.1843, 3.17471, 3.16379, 3.1517, 3.13856, 3.1244, 
+    3.10943, 3.09371, 3.07732, 3.06038, 3.04319, 3.02595, 3.00868, 
+    2.99136, 2.97384, 2.95599, 2.9376, 2.91847, 2.89855, 2.87797, 
+    2.85714, 2.83653, 2.81648, 2.7971, 2.77831, 2.75989, 2.74172, 
+    2.72378, 2.70611, 2.68857, 2.67098, 2.6533, 2.63569)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.13359, 3.14021, 3.14671, 
+    3.15323, 3.15981, 3.16644, 3.17315, 3.18009, 3.1872, 3.19458, 
+    3.20217, 3.2099, 3.21785, 3.22611, 3.23471, 3.24369, 3.2531, 
+    3.26288, 3.2732, 3.28394, 3.29503, 3.30621, 3.3172, 3.32782, 
+    3.33804, 3.34806, 3.35835, 3.36935, 3.38124, 3.39417, 3.40786, 
+    3.42189, 3.4359, 3.44978, 3.46387, 3.47879, 3.49511, 3.51269, 
+    3.5308, 3.54847, 3.56471, 3.57862, 3.58982, 3.59871, 3.60641, 
+    3.61462, 3.62533, 3.64088, 3.66217, 3.68981, 3.72383, 3.76341, 
+    3.80641, 3.84966, 3.8896, 3.92328, 3.9493, 3.96804, 3.98114, 
+    3.9904, 3.99704, 4.00178, 4.00485, 4.00646, 4.00641, 4.00452, 
+    4.00082, 3.99543, 3.9885, 3.98028, 3.97088, 3.96041, 3.94888, 
+    3.93642, 3.92322, 3.90931, 3.89486, 3.88006, 3.86511, 3.85008, 
+    3.83486, 3.81935, 3.80341, 3.7868, 3.76934, 3.75101, 3.73197, 
+    3.71258, 3.69334, 3.67453, 3.65619, 3.63822, 3.62045, 3.60274, 
+    3.58512, 3.56752, 3.54991, 3.53214, 3.51407, 3.49581)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.70879, 2.70999, 2.71117, 
+    2.7124, 2.71383, 2.71551, 2.71747, 2.71983, 2.72259, 2.7258, 
+    2.72949, 2.73365, 2.73837, 2.74371, 2.74971, 2.75644, 2.76391, 
+    2.77223, 2.7814, 2.79136, 2.8018, 2.81228, 2.82239, 2.83189, 
+    2.84091, 2.84982, 2.85929, 2.86997, 2.88238, 2.8966, 2.91225, 
+    2.92872, 2.94543, 2.9622, 2.97954, 2.99832, 3.01946, 3.04257, 
+    3.06671, 3.09045, 3.11224, 3.1308, 3.14556, 3.15705, 3.16697, 
+    3.17792, 3.19264, 3.21433, 3.24412, 3.28282, 3.3305, 3.38599, 
+    3.44641, 3.50723, 3.56318, 3.60983, 3.64509, 3.6696, 3.68587, 
+    3.69653, 3.70351, 3.70804, 3.71047, 3.71079, 3.70884, 3.70447, 
+    3.69772, 3.68879, 3.67788, 3.66524, 3.65107, 3.63561, 3.61905, 
+    3.60142, 3.58283, 3.56343, 3.54348, 3.52322, 3.50289, 3.48255, 
+    3.46215, 3.44145, 3.42034, 3.39855, 3.37579, 3.35201, 3.32742, 
+    3.30253, 3.27797, 3.25417, 3.23124, 3.20898, 3.18723, 3.16582, 
+    3.14464, 3.12365, 3.10273, 3.08167, 3.06041, 3.03908)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.44037, 2.44137, 2.44241, 
+    2.44349, 2.44469, 2.44612, 2.44783, 2.44975, 2.45196, 2.4546, 
+    2.45753, 2.46082, 2.46452, 2.46869, 2.47339, 2.47864, 2.4844, 
+    2.49087, 2.49791, 2.50552, 2.51343, 2.52131, 2.52889, 2.53603, 
+    2.54281, 2.54951, 2.55665, 2.56477, 2.57415, 2.58488, 2.59665, 
+    2.60896, 2.62139, 2.63388, 2.64674, 2.66062, 2.6761, 2.6929, 
+    2.71029, 2.72724, 2.74266, 2.75564, 2.76579, 2.77356, 2.78021, 
+    2.78758, 2.79774, 2.81314, 2.83459, 2.86272, 2.89753, 2.93806, 
+    2.98213, 3.0264, 3.06701, 3.10077, 3.12619, 3.14375, 3.15525, 
+    3.16253, 3.1671, 3.16978, 3.17085, 3.17034, 3.16813, 3.16412, 
+    3.15832, 3.15088, 3.14198, 3.1318, 3.12057, 3.10838, 3.09533, 
+    3.08149, 3.06701, 3.05197, 3.03653, 3.02088, 3.0052, 2.98956, 
+    2.97388, 2.95803, 2.9419, 2.92526, 2.90794, 2.88989, 2.87126, 
+    2.85241, 2.8338, 2.81578, 2.79845, 2.78167, 2.76524, 2.74903, 
+    2.73301, 2.71715, 2.70132, 2.68542, 2.66937, 2.65327)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.67358, 2.67434, 2.67519, 
+    2.6761, 2.67712, 2.67835, 2.67985, 2.68166, 2.68387, 2.68649, 
+    2.68953, 2.693, 2.69698, 2.70155, 2.70682, 2.71286, 2.71963, 
+    2.72727, 2.73573, 2.7448, 2.75424, 2.76361, 2.7725, 2.78072, 
+    2.78843, 2.79605, 2.80442, 2.81417, 2.82571, 2.83904, 2.85383, 
+    2.86946, 2.88526, 2.90096, 2.91697, 2.93407, 2.95314, 2.97379, 
+    2.99519, 3.0161, 3.03507, 3.05087, 3.06296, 3.07183, 3.07902, 
+    3.0869, 3.09809, 3.11537, 3.13987, 3.17231, 3.21287, 3.26075, 
+    3.31378, 3.36849, 3.42059, 3.46606, 3.50251, 3.52969, 3.54909, 
+    3.56259, 3.57202, 3.57867, 3.58296, 3.58507, 3.58488, 3.58227, 
+    3.57725, 3.56999, 3.56077, 3.54985, 3.53734, 3.52347, 3.50834, 
+    3.49221, 3.47504, 3.45706, 3.43851, 3.41953, 3.4005, 3.38145, 
+    3.36239, 3.34316, 3.32355, 3.30336, 3.28234, 3.26037, 3.23765, 
+    3.21466, 3.19199, 3.17005, 3.14903, 3.12878, 3.10904, 3.08964, 
+    3.07051, 3.0516, 3.03275, 3.0138, 2.99462, 2.97534)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.46575, 2.46646, 2.46735, 
+    2.46835, 2.46952, 2.47089, 2.4725, 2.47447, 2.47683, 2.47971, 
+    2.48294, 2.48654, 2.49059, 2.49518, 2.50042, 2.50634, 2.51289, 
+    2.52017, 2.5281, 2.5367, 2.5457, 2.55468, 2.5633, 2.57137, 
+    2.57901, 2.58654, 2.5946, 2.60376, 2.61431, 2.62637, 2.6397, 
+    2.65378, 2.66804, 2.68224, 2.69667, 2.71213, 2.72941, 2.74823, 
+    2.76778, 2.78689, 2.80425, 2.81868, 2.82966, 2.83761, 2.84394, 
+    2.85083, 2.86076, 2.87633, 2.89868, 2.92849, 2.96593, 3.01009, 
+    3.05871, 3.10815, 3.15398, 3.19232, 3.22121, 3.24108, 3.25385, 
+    3.26168, 3.26632, 3.26883, 3.26957, 3.26858, 3.26569, 3.26074, 
+    3.25379, 3.24499, 3.23453, 3.22262, 3.20954, 3.19539, 3.1803, 
+    3.16429, 3.14751, 3.13004, 3.11212, 3.094, 3.07586, 3.05775, 
+    3.03959, 3.02127, 3.00259, 2.98335, 2.9633, 2.94233, 2.92065, 
+    2.89868, 2.87699, 2.85596, 2.83571, 2.81611, 2.7969, 2.77795, 
+    2.75922, 2.74063, 2.72212, 2.70349, 2.68459, 2.66562)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.59886, 2.59913, 2.59953, 
+    2.60005, 2.60077, 2.60173, 2.60298, 2.60457, 2.60665, 2.60915, 
+    2.6121, 2.61558, 2.61962, 2.6243, 2.62973, 2.63598, 2.64299, 
+    2.65096, 2.65968, 2.6691, 2.67886, 2.68844, 2.69745, 2.70572, 
+    2.7134, 2.72097, 2.72931, 2.73911, 2.75077, 2.76434, 2.77945, 
+    2.7954, 2.81151, 2.8275, 2.84379, 2.86117, 2.8805, 2.90141, 
+    2.92292, 2.94362, 2.96196, 2.97664, 2.98709, 2.99392, 2.99886, 
+    3.00453, 3.01375, 3.0295, 3.05295, 3.08476, 3.12492, 3.17233, 
+    3.22448, 3.27746, 3.32673, 3.36845, 3.40069, 3.42388, 3.43988, 
+    3.45085, 3.45845, 3.46381, 3.46725, 3.46884, 3.46838, 3.46572, 
+    3.46093, 3.45417, 3.44563, 3.43555, 3.42414, 3.41153, 3.39782, 
+    3.38313, 3.36752, 3.35112, 3.33407, 3.31673, 3.29928, 3.28177, 
+    3.26425, 3.24649, 3.22827, 3.20933, 3.18945, 3.16846, 3.14656, 
+    3.12429, 3.10226, 3.08091, 3.06039, 3.04056, 3.02117, 3.00201, 
+    2.98298, 2.96401, 2.94502, 2.92575, 2.9061, 2.88626)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.73763, 2.74109, 2.74458, 
+    2.74814, 2.75179, 2.7556, 2.75967, 2.76403, 2.76866, 2.77362, 
+    2.77892, 2.78456, 2.79053, 2.79693, 2.80383, 2.81124, 2.8192, 
+    2.82779, 2.83706, 2.84702, 2.85753, 2.86829, 2.87894, 2.88925, 
+    2.89928, 2.90919, 2.91948, 2.93061, 2.94301, 2.95671, 2.97145, 
+    2.98671, 3.00196, 3.01703, 3.03246, 3.04905, 3.06758, 3.0876, 
+    3.10824, 3.12825, 3.14622, 3.16095, 3.17191, 3.17956, 3.18538, 
+    3.19169, 3.20096, 3.21612, 3.23816, 3.26783, 3.30505, 3.34881, 
+    3.39668, 3.44502, 3.48968, 3.52719, 3.55589, 3.5762, 3.58995, 
+    3.59914, 3.60532, 3.60955, 3.61203, 3.61279, 3.61166, 3.60858, 
+    3.6036, 3.59683, 3.58846, 3.5787, 3.56774, 3.55568, 3.54271, 
+    3.52888, 3.51429, 3.49905, 3.48335, 3.46745, 3.4516, 3.43584, 
+    3.42006, 3.40408, 3.38768, 3.37066, 3.35272, 3.33379, 3.31407, 
+    3.29404, 3.27428, 3.25513, 3.23664, 3.21866, 3.20099, 3.18344, 
+    3.16598, 3.1486, 3.13113, 3.11335, 3.09517, 3.07675)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.44332, 2.44409, 2.44489, 
+    2.44579, 2.44678, 2.44796, 2.44944, 2.45123, 2.45334, 2.45577, 
+    2.45866, 2.46193, 2.46565, 2.46989, 2.47471, 2.48019, 2.48634, 
+    2.49312, 2.50068, 2.50897, 2.51772, 2.52654, 2.53506, 2.54299, 
+    2.55035, 2.5574, 2.56466, 2.57288, 2.58249, 2.59381, 2.60666, 
+    2.6204, 2.63432, 2.64809, 2.66188, 2.67633, 2.69209, 2.70954, 
+    2.72782, 2.74589, 2.76247, 2.77623, 2.78635, 2.79291, 2.79713, 
+    2.80096, 2.8068, 2.81678, 2.83326, 2.85689, 2.88798, 2.92597, 
+    2.96901, 3.01392, 3.05676, 3.09392, 3.12327, 3.14464, 3.15931, 
+    3.16916, 3.17584, 3.1803, 3.18313, 3.18439, 3.1839, 3.1816, 
+    3.17744, 3.17149, 3.16399, 3.15517, 3.14515, 3.13407, 3.12207, 
+    3.10925, 3.09567, 3.08134, 3.06643, 3.05117, 3.03584, 3.02054, 
+    3.00525, 2.9898, 2.97409, 2.95789, 2.94097, 2.92304, 2.90418, 
+    2.88477, 2.86541, 2.84659, 2.82852, 2.81109, 2.79403, 2.77717, 
+    2.7605, 2.74395, 2.72737, 2.71054, 2.6934, 2.67601)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.44699, 2.44795, 2.449, 
+    2.45011, 2.45135, 2.45283, 2.45462, 2.45665, 2.45904, 2.46175, 
+    2.46485, 2.46835, 2.47233, 2.47681, 2.48182, 2.48743, 2.49369, 
+    2.50062, 2.50824, 2.51635, 2.52477, 2.53314, 2.54115, 2.54863, 
+    2.55566, 2.56259, 2.57004, 2.57856, 2.58852, 2.59995, 2.61255, 
+    2.62576, 2.63906, 2.65229, 2.6658, 2.68021, 2.69625, 2.71349, 
+    2.73118, 2.74815, 2.76316, 2.77518, 2.7838, 2.78956, 2.79386, 
+    2.79872, 2.80644, 2.81959, 2.83907, 2.86546, 2.89872, 2.93784, 
+    2.98065, 3.02376, 3.06338, 3.09637, 3.12122, 3.13839, 3.14961, 
+    3.15668, 3.16109, 3.16369, 3.16472, 3.16421, 3.16207, 3.15813, 
+    3.15243, 3.14512, 3.13639, 3.12644, 3.11544, 3.10351, 3.09074, 
+    3.07724, 3.06312, 3.0484, 3.03325, 3.0179, 3.00258, 2.98736, 
+    2.97214, 2.95673, 2.94099, 2.92469, 2.90767, 2.88986, 2.87136, 
+    2.85261, 2.8341, 2.81616, 2.79891, 2.78225, 2.766, 2.74996, 
+    2.73402, 2.71818, 2.7023, 2.68622, 2.66984, 2.65336)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.73924, 2.74018, 2.74127, 
+    2.74251, 2.74391, 2.74558, 2.74762, 2.75007, 2.75289, 2.75622, 
+    2.75992, 2.76415, 2.76893, 2.77435, 2.78048, 2.78727, 2.79478, 
+    2.80309, 2.81221, 2.82203, 2.83223, 2.84241, 2.85211, 2.86111, 
+    2.86953, 2.8778, 2.88657, 2.89653, 2.9081, 2.92144, 2.93623, 
+    2.9518, 2.96749, 2.98305, 2.99875, 3.01546, 3.03391, 3.05382, 
+    3.07422, 3.09379, 3.11102, 3.12465, 3.13416, 3.14004, 3.14404, 
+    3.14857, 3.15629, 3.17018, 3.19139, 3.22069, 3.25817, 3.30284, 
+    3.35239, 3.40286, 3.44957, 3.48842, 3.51727, 3.53676, 3.54895, 
+    3.55599, 3.55967, 3.56117, 3.56091, 3.55872, 3.55451, 3.54823, 
+    3.53989, 3.52958, 3.51748, 3.50394, 3.48913, 3.47321, 3.45626, 
+    3.43843, 3.41978, 3.40044, 3.38061, 3.36062, 3.34063, 3.32072, 
+    3.30083, 3.28066, 3.26007, 3.23884, 3.21683, 3.19391, 3.17022, 
+    3.14621, 3.12244, 3.09934, 3.07716, 3.05579, 3.03495, 3.01437, 
+    2.99393, 2.97357, 2.95318, 2.93267, 2.91191, 2.89096)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.48451, 3.49135, 3.49814, 
+    3.50489, 3.51172, 3.51873, 3.5259, 3.53318, 3.54071, 3.54849, 
+    3.55644, 3.56464, 3.57317, 3.58208, 3.59138, 3.60112, 3.6112, 
+    3.62184, 3.63309, 3.64489, 3.65725, 3.66984, 3.6823, 3.69441, 
+    3.70617, 3.7178, 3.72966, 3.74219, 3.75576, 3.77055, 3.7863, 
+    3.80241, 3.81833, 3.83392, 3.84971, 3.86662, 3.88536, 3.90544, 
+    3.92594, 3.94548, 3.96255, 3.97579, 3.98447, 3.98901, 3.99094, 
+    3.99268, 3.99703, 4.00691, 4.0233, 4.04678, 4.07732, 4.11388, 
+    4.15431, 4.19534, 4.23334, 4.26535, 4.28997, 4.30757, 4.31939, 
+    4.32707, 4.3322, 4.33546, 4.33731, 4.33745, 4.33589, 4.3326, 
+    4.32758, 4.32093, 4.31281, 4.30343, 4.29299, 4.28149, 4.26907, 
+    4.2559, 4.24204, 4.22749, 4.21255, 4.19749, 4.18245, 4.16748, 
+    4.15254, 4.13745, 4.12198, 4.10575, 4.08849, 4.07008, 4.05071, 
+    4.03094, 4.01145, 3.99255, 3.97422, 3.95634, 3.93865, 3.92098, 
+    3.90326, 3.88547, 3.86741, 3.84885, 3.82957, 3.80973)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.38648, 3.39204, 3.39767, 
+    3.40334, 3.40911, 3.41516, 3.4216, 3.42841, 3.43562, 3.44328, 
+    3.45134, 3.45989, 3.469, 3.47874, 3.48917, 3.50034, 3.51227, 
+    3.52516, 3.539, 3.55378, 3.56928, 3.58508, 3.60068, 3.61571, 
+    3.63015, 3.64426, 3.65871, 3.67431, 3.69172, 3.71117, 3.73231, 
+    3.75425, 3.77609, 3.79742, 3.81876, 3.84119, 3.86596, 3.89244, 
+    3.91938, 3.94496, 3.96711, 3.98394, 3.9945, 3.99937, 4.00062, 
+    4.00158, 4.00599, 4.01785, 4.0387, 4.06915, 4.10915, 4.15748, 
+    4.21139, 4.26675, 4.31857, 4.36255, 4.39676, 4.42139, 4.43873, 
+    4.45111, 4.46021, 4.46702, 4.47187, 4.47474, 4.47562, 4.47427, 
+    4.47061, 4.4648, 4.45713, 4.44795, 4.43744, 4.42541, 4.41209, 
+    4.39771, 4.38216, 4.36577, 4.34875, 4.33146, 4.31393, 4.29623, 
+    4.27848, 4.2604, 4.24177, 4.22214, 4.20113, 4.17867, 4.15492, 
+    4.13051, 4.10624, 4.08267, 4.05998, 4.03794, 4.01625, 3.99466, 
+    3.97296, 3.95117, 3.9291, 3.90649, 3.88301, 3.85878)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.5593, 3.56522, 3.57129, 
+    3.57747, 3.58383, 3.59043, 3.59735, 3.60471, 3.61261, 3.62094, 
+    3.62971, 3.63896, 3.6487, 3.65904, 3.6701, 3.68198, 3.69452, 
+    3.70801, 3.72235, 3.73766, 3.75366, 3.76994, 3.78602, 3.8016, 
+    3.81667, 3.83159, 3.84706, 3.86378, 3.88241, 3.90302, 3.92523, 
+    3.94825, 3.97119, 3.99367, 4.01627, 4.03991, 4.06586, 4.09347, 
+    4.12136, 4.14779, 4.17059, 4.18808, 4.19942, 4.20513, 4.20742, 
+    4.20952, 4.21507, 4.2281, 4.24984, 4.28129, 4.32244, 4.37198, 
+    4.42694, 4.48289, 4.53478, 4.57832, 4.61133, 4.63427, 4.64928, 
+    4.65865, 4.66423, 4.66762, 4.6691, 4.66838, 4.66538, 4.65997, 
+    4.65237, 4.64278, 4.63121, 4.61788, 4.60316, 4.58706, 4.56996, 
+    4.55183, 4.53264, 4.51277, 4.49243, 4.47191, 4.45134, 4.43079, 
+    4.41046, 4.39004, 4.36905, 4.34696, 4.32358, 4.29898, 4.27327, 
+    4.24689, 4.22071, 4.19547, 4.17131, 4.14782, 4.12463, 4.10158, 
+    4.07851, 4.05522, 4.0317, 4.00756, 3.98268, 3.95716)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.89826, 2.90112, 2.90404, 
+    2.90705, 2.91017, 2.91349, 2.91708, 2.92096, 2.92521, 2.92993, 
+    2.93498, 2.94053, 2.94659, 2.95323, 2.96057, 2.96867, 2.97755, 
+    2.98729, 2.99783, 3.00894, 3.02037, 3.03161, 3.04224, 3.05212, 
+    3.06134, 3.07048, 3.08028, 3.0915, 3.1046, 3.11967, 3.13637, 
+    3.1539, 3.17146, 3.18881, 3.20623, 3.22467, 3.24492, 3.26659, 
+    3.28855, 3.30932, 3.32728, 3.34105, 3.35, 3.35471, 3.35701, 
+    3.35964, 3.36553, 3.3779, 3.39783, 3.42603, 3.46235, 3.50571, 
+    3.55365, 3.60248, 3.64789, 3.68626, 3.71587, 3.73708, 3.75169, 
+    3.76171, 3.76878, 3.77386, 3.77732, 3.77902, 3.77882, 3.77662, 
+    3.77247, 3.76656, 3.75908, 3.75017, 3.7401, 3.72893, 3.71678, 
+    3.70378, 3.6901, 3.67568, 3.6607, 3.64543, 3.63014, 3.61495, 
+    3.59972, 3.58433, 3.5685, 3.55195, 3.53444, 3.5158, 3.49617, 
+    3.47611, 3.45628, 3.43714, 3.41881, 3.40113, 3.38382, 3.36664, 
+    3.34945, 3.3322, 3.31475, 3.29688, 3.27847, 3.25968)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.9307, 2.93266, 2.93466, 
+    2.93686, 2.93931, 2.94209, 2.94526, 2.94887, 2.95297, 2.95763, 
+    2.9629, 2.96883, 2.97539, 2.98275, 2.99109, 3.00038, 3.01071, 
+    3.0221, 3.03455, 3.04792, 3.06177, 3.07552, 3.08858, 3.10061, 
+    3.11181, 3.12277, 3.1343, 3.14763, 3.16323, 3.18142, 3.20172, 
+    3.22316, 3.24471, 3.26587, 3.28691, 3.30899, 3.33311, 3.35903, 
+    3.38544, 3.41044, 3.43188, 3.44782, 3.45721, 3.46064, 3.46044, 
+    3.46012, 3.46341, 3.47436, 3.49427, 3.52408, 3.56377, 3.61228, 
+    3.66696, 3.72351, 3.77676, 3.82203, 3.85668, 3.88092, 3.89701, 
+    3.90785, 3.91482, 3.91937, 3.92196, 3.92283, 3.9219, 3.91855, 
+    3.91288, 3.90506, 3.89536, 3.88434, 3.87198, 3.85811, 3.8431, 
+    3.82717, 3.81061, 3.79337, 3.77528, 3.75695, 3.73874, 3.72067, 
+    3.70259, 3.68432, 3.66565, 3.64619, 3.62546, 3.6033, 3.57985, 
+    3.55569, 3.53177, 3.50874, 3.48671, 3.46548, 3.44468, 3.42403, 
+    3.40336, 3.38262, 3.36162, 3.33994, 3.31745, 3.29426)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.46981, 3.47372, 3.47772, 
+    3.48186, 3.48627, 3.49097, 3.49603, 3.50161, 3.50774, 3.51438, 
+    3.52163, 3.52949, 3.53814, 3.54769, 3.55822, 3.5698, 3.58239, 
+    3.59615, 3.61096, 3.62665, 3.64266, 3.65829, 3.67303, 3.68662, 
+    3.69926, 3.71175, 3.7251, 3.74049, 3.75855, 3.77937, 3.80233, 
+    3.82634, 3.85036, 3.87397, 3.89769, 3.92265, 3.94995, 3.97894, 
+    4.00814, 4.03525, 4.058, 4.07446, 4.08384, 4.08707, 4.08692, 
+    4.08732, 4.09234, 4.10604, 4.12985, 4.16456, 4.20998, 4.2647, 
+    4.32547, 4.38728, 4.44435, 4.49178, 4.52734, 4.55199, 4.56806, 
+    4.57824, 4.58459, 4.58805, 4.58977, 4.58906, 4.58585, 4.58015, 
+    4.57198, 4.56149, 4.54907, 4.5351, 4.51971, 4.50302, 4.48515, 
+    4.46641, 4.44682, 4.42616, 4.40495, 4.38368, 4.36264, 4.34186, 
+    4.32104, 4.29986, 4.27814, 4.25569, 4.23196, 4.20665, 4.18009, 
+    4.15307, 4.1264, 4.10069, 4.07612, 4.05251, 4.02937, 4.0063, 
+    3.98315, 3.95982, 3.93608, 3.91162, 3.88632, 3.86038)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.09812, 3.10292, 3.10775, 
+    3.11264, 3.11762, 3.12276, 3.12814, 3.13385, 3.1399, 3.14639, 
+    3.1532, 3.16037, 3.16801, 3.17616, 3.1849, 3.19435, 3.20441, 
+    3.21504, 3.22648, 3.23877, 3.25191, 3.26547, 3.27903, 3.29222, 
+    3.30489, 3.31721, 3.32954, 3.34262, 3.35729, 3.374, 3.39256, 
+    3.41218, 3.43186, 3.45109, 3.47012, 3.48988, 3.51132, 3.53474, 
+    3.559, 3.58251, 3.60334, 3.61944, 3.62929, 3.63273, 3.6313, 
+    3.62793, 3.62616, 3.62919, 3.64, 3.65937, 3.68749, 3.72365, 
+    3.76584, 3.81063, 3.85387, 3.89173, 3.92184, 3.94387, 3.95919, 
+    3.96957, 3.9767, 3.98149, 3.98459, 3.98611, 3.98588, 3.98373, 
+    3.9797, 3.97396, 3.96665, 3.95793, 3.94795, 3.93688, 3.92487, 
+    3.912, 3.89835, 3.88399, 3.86889, 3.8534, 3.83797, 3.82281, 
+    3.80771, 3.79253, 3.77706, 3.76104, 3.74391, 3.72527, 3.7052, 
+    3.68429, 3.66345, 3.6433, 3.62404, 3.6055, 3.58735, 3.56935, 
+    3.55131, 3.53315, 3.51464, 3.49539, 3.47518, 3.45412)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.6674, 2.66808, 2.66885, 
+    2.66966, 2.67064, 2.67194, 2.67363, 2.67569, 2.67822, 2.68112, 
+    2.6845, 2.68841, 2.69295, 2.69823, 2.70429, 2.71119, 2.71885, 
+    2.72744, 2.73692, 2.74717, 2.75777, 2.76819, 2.778, 2.78701, 
+    2.79538, 2.80367, 2.81273, 2.82341, 2.83624, 2.85132, 2.86821, 
+    2.88602, 2.90385, 2.92137, 2.93904, 2.95778, 2.97841, 3.00045, 
+    3.0226, 3.04314, 3.06015, 3.07201, 3.07804, 3.07892, 3.07682, 
+    3.07489, 3.07638, 3.08478, 3.10115, 3.12618, 3.15972, 3.2005, 
+    3.24597, 3.29227, 3.33501, 3.3706, 3.3974, 3.41592, 3.42797, 
+    3.43556, 3.44033, 3.44322, 3.44447, 3.44403, 3.44177, 3.4376, 
+    3.43156, 3.42387, 3.41475, 3.40432, 3.39276, 3.38032, 3.36709, 
+    3.35312, 3.33845, 3.32325, 3.30759, 3.29182, 3.27618, 3.26073, 
+    3.24543, 3.22999, 3.21421, 3.19775, 3.18028, 3.16159, 3.14192, 
+    3.12184, 3.10205, 3.08308, 3.06507, 3.04783, 3.03101, 3.01437, 
+    2.99772, 2.98092, 2.96374, 2.94596, 2.92745, 2.90838)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.62312, 3.63101, 3.63885, 
+    3.64674, 3.6548, 3.66311, 3.67172, 3.68061, 3.6899, 3.69954, 
+    3.70961, 3.72016, 3.73129, 3.743, 3.75536, 3.76844, 3.78237, 
+    3.79717, 3.81289, 3.82948, 3.8468, 3.8644, 3.88175, 3.89847, 
+    3.9145, 3.93021, 3.94646, 3.96434, 3.98447, 4.00698, 4.03141, 
+    4.05674, 4.08194, 4.10664, 4.13132, 4.15717, 4.18514, 4.21473, 
+    4.24431, 4.27201, 4.29546, 4.31271, 4.32307, 4.32739, 4.32803, 
+    4.32864, 4.33294, 4.3451, 4.36674, 4.39858, 4.44057, 4.49128, 
+    4.54781, 4.6057, 4.65961, 4.70502, 4.73971, 4.7641, 4.78052, 
+    4.79134, 4.79875, 4.80411, 4.80704, 4.8076, 4.806, 4.80227, 
+    4.79644, 4.78849, 4.77858, 4.76699, 4.7539, 4.73989, 4.72508, 
+    4.70914, 4.69195, 4.67406, 4.65608, 4.63775, 4.61943, 4.60144, 
+    4.58349, 4.56541, 4.54666, 4.52697, 4.50602, 4.48377, 4.46047, 
+    4.43653, 4.41259, 4.38942, 4.36744, 4.34641, 4.32573, 4.30489, 
+    4.28372, 4.26231, 4.24044, 4.2178, 4.19408, 4.16972)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.6676, 2.66901, 2.6705, 
+    2.67217, 2.67412, 2.67643, 2.67917, 2.68237, 2.68613, 2.6904, 
+    2.6953, 2.70084, 2.70706, 2.71408, 2.72199, 2.73087, 2.74075, 
+    2.75172, 2.76377, 2.77672, 2.79024, 2.8038, 2.8168, 2.82894, 
+    2.84032, 2.85154, 2.86355, 2.87736, 2.89368, 2.9126, 2.93364, 
+    2.95582, 2.97806, 2.99984, 3.02162, 3.04442, 3.06929, 3.09561, 
+    3.12191, 3.14615, 3.16599, 3.17944, 3.18571, 3.18567, 3.1819, 
+    3.17814, 3.17819, 3.18615, 3.20323, 3.23019, 3.26681, 3.31185, 
+    3.36258, 3.41478, 3.46352, 3.50453, 3.53558, 3.55691, 3.57064, 
+    3.57912, 3.58431, 3.58753, 3.58875, 3.58797, 3.58513, 3.58019, 
+    3.57322, 3.56437, 3.55384, 3.54189, 3.52875, 3.51465, 3.49974, 
+    3.48407, 3.46762, 3.4505, 3.43307, 3.41552, 3.39823, 3.38122, 
+    3.36441, 3.34748, 3.33014, 3.31199, 3.29266, 3.27199, 3.25018, 
+    3.22789, 3.20592, 3.18492, 3.16503, 3.14597, 3.12734, 3.10886, 
+    3.09031, 3.07147, 3.05208, 3.03188, 3.01087, 2.98917)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.88374, 2.88575, 2.8879, 
+    2.89029, 2.89302, 2.89618, 2.89988, 2.90418, 2.90917, 2.91488, 
+    2.92123, 2.92841, 2.93654, 2.94579, 2.95629, 2.96811, 2.98124, 
+    2.99585, 3.01186, 3.02906, 3.04686, 3.06443, 3.08098, 3.09612, 
+    3.11006, 3.12365, 3.13841, 3.15574, 3.17653, 3.2011, 3.22879, 
+    3.25815, 3.28753, 3.31593, 3.3437, 3.37208, 3.40244, 3.43411, 
+    3.46519, 3.49277, 3.51356, 3.52486, 3.52558, 3.51704, 3.50292, 
+    3.48822, 3.4778, 3.47675, 3.48651, 3.50785, 3.54045, 3.58299, 
+    3.63252, 3.68449, 3.7336, 3.77525, 3.80709, 3.82943, 3.84396, 
+    3.85345, 3.85966, 3.86387, 3.86606, 3.86661, 3.86521, 3.86167, 
+    3.85604, 3.84859, 3.83973, 3.82967, 3.81837, 3.8061, 3.79314, 
+    3.7796, 3.76539, 3.75047, 3.73514, 3.71991, 3.70487, 3.69032, 
+    3.67615, 3.66199, 3.64734, 3.6318, 3.61468, 3.59562, 3.57499, 
+    3.55363, 3.53258, 3.51258, 3.49386, 3.47617, 3.45888, 3.4416, 
+    3.42387, 3.40547, 3.38601, 3.36518, 3.34297, 3.31949)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.79263, 2.79402, 2.79551, 
+    2.79717, 2.79909, 2.80135, 2.80405, 2.8072, 2.81082, 2.81511, 
+    2.8199, 2.82535, 2.83158, 2.83871, 2.84687, 2.8561, 2.86639, 
+    2.87791, 2.89055, 2.90419, 2.91842, 2.9325, 2.94577, 2.95789, 
+    2.96902, 2.97996, 2.99198, 3.00626, 3.02362, 3.0442, 3.06736, 
+    3.09185, 3.1163, 3.13996, 3.16318, 3.18711, 3.21269, 3.23932, 
+    3.26511, 3.2876, 3.30401, 3.31203, 3.31074, 3.30125, 3.28668, 
+    3.2715, 3.26008, 3.25687, 3.26306, 3.27924, 3.30516, 3.33934, 
+    3.37909, 3.42059, 3.45959, 3.4926, 3.51778, 3.53536, 3.54693, 
+    3.5543, 3.55911, 3.5622, 3.56379, 3.56394, 3.56246, 3.55929, 
+    3.55447, 3.54817, 3.54068, 3.53216, 3.52281, 3.51287, 3.50233, 
+    3.49129, 3.47973, 3.46771, 3.45537, 3.44308, 3.43121, 3.4198, 
+    3.40872, 3.39768, 3.38631, 3.37417, 3.36072, 3.34564, 3.32909, 
+    3.31183, 3.29485, 3.27887, 3.26409, 3.2502, 3.23662, 3.22297, 
+    3.20893, 3.19431, 3.17875, 3.16188, 3.1436, 3.12417)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.74019, 2.74104, 2.74208, 
+    2.74336, 2.74496, 2.74697, 2.74955, 2.75276, 2.75667, 2.76128, 
+    2.76663, 2.77277, 2.77988, 2.78819, 2.79785, 2.80881, 2.82116, 
+    2.83493, 2.85019, 2.86675, 2.88403, 2.90111, 2.91709, 2.93156, 
+    2.94486, 2.95795, 2.97245, 2.9899, 3.0111, 3.03628, 3.06464, 
+    3.09458, 3.12443, 3.15328, 3.18144, 3.21026, 3.241, 3.27267, 
+    3.30315, 3.32938, 3.34803, 3.35635, 3.35338, 3.34073, 3.32236, 
+    3.30359, 3.28953, 3.28529, 3.29229, 3.31113, 3.34137, 3.38132, 
+    3.42779, 3.4763, 3.52189, 3.56051, 3.59015, 3.61113, 3.62535, 
+    3.63491, 3.64153, 3.64612, 3.64908, 3.65036, 3.64982, 3.64733, 
+    3.64292, 3.63685, 3.62938, 3.62072, 3.61116, 3.60084, 3.58991, 
+    3.57844, 3.56625, 3.55355, 3.54043, 3.52739, 3.51482, 3.50281, 
+    3.49117, 3.47943, 3.46721, 3.45399, 3.43921, 3.42254, 3.40422, 
+    3.38506, 3.3662, 3.34849, 3.33216, 3.31681, 3.30181, 3.28664, 
+    3.27097, 3.25446, 3.23681, 3.21748, 3.19647, 3.1742)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.0035, 3.00693, 3.01034, 
+    3.01383, 3.01746, 3.02126, 3.02523, 3.02946, 3.0339, 3.0387, 
+    3.04373, 3.04901, 3.05462, 3.0606, 3.06701, 3.07388, 3.08118, 
+    3.08905, 3.09742, 3.10628, 3.11559, 3.12507, 3.13443, 3.14347, 
+    3.15219, 3.16076, 3.16963, 3.17923, 3.18983, 3.20157, 3.21419, 
+    3.22722, 3.24023, 3.25311, 3.26613, 3.27984, 3.29496, 3.31106, 
+    3.32756, 3.34338, 3.35741, 3.3687, 3.37681, 3.38208, 3.38567, 
+    3.38938, 3.39525, 3.40564, 3.42155, 3.44362, 3.47188, 3.50557, 
+    3.54284, 3.58067, 3.61553, 3.64437, 3.66568, 3.67973, 3.688, 
+    3.69225, 3.69373, 3.69339, 3.69153, 3.68823, 3.68331, 3.6767, 
+    3.66841, 3.65854, 3.64733, 3.63498, 3.6216, 3.60739, 3.59239, 
+    3.57675, 3.56051, 3.54377, 3.52667, 3.50951, 3.49241, 3.47545, 
+    3.45855, 3.44156, 3.42426, 3.40654, 3.38818, 3.36908, 3.34935, 
+    3.32937, 3.30959, 3.29039, 3.27185, 3.25385, 3.23615, 3.2186, 
+    3.20121, 3.18385, 3.16651, 3.14903, 3.13123, 3.1132)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.78816, 2.78946, 2.79088, 
+    2.79238, 2.794, 2.79581, 2.79781, 2.80003, 2.80251, 2.8052, 
+    2.80813, 2.81122, 2.81462, 2.81826, 2.82214, 2.82631, 2.83078, 
+    2.83556, 2.84066, 2.84606, 2.85164, 2.85721, 2.86276, 2.86831, 
+    2.87382, 2.87933, 2.88486, 2.89035, 2.8959, 2.90147, 2.90708, 
+    2.91285, 2.91894, 2.92564, 2.93333, 2.94229, 2.95267, 2.96464, 
+    2.97801, 2.99246, 3.00777, 3.02385, 3.04068, 3.05843, 3.0775, 
+    3.0985, 3.12214, 3.14929, 3.18115, 3.21795, 3.25898, 3.3024, 
+    3.345, 3.38317, 3.41406, 3.43652, 3.45115, 3.4596, 3.46375, 
+    3.46499, 3.4641, 3.46135, 3.4569, 3.45058, 3.44228, 3.43199, 
+    3.41982, 3.40599, 3.39061, 3.37381, 3.35575, 3.33653, 3.31627, 
+    3.29515, 3.27323, 3.25075, 3.22778, 3.20451, 3.18092, 3.15701, 
+    3.1328, 3.10826, 3.08333, 3.058, 3.03236, 3.00649, 2.98064, 
+    2.95502, 2.92975, 2.90491, 2.88048, 2.85646, 2.83293, 2.81004, 
+    2.78787, 2.76645, 2.7458, 2.72582, 2.70645, 2.68771)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.02768, 3.03286, 3.03808, 
+    3.04335, 3.04876, 3.05436, 3.06027, 3.06656, 3.07319, 3.08018, 
+    3.08759, 3.09542, 3.10375, 3.11273, 3.12244, 3.13287, 3.14401, 
+    3.15589, 3.16877, 3.18258, 3.19715, 3.21204, 3.22673, 3.24083, 
+    3.25427, 3.26738, 3.28095, 3.29582, 3.31272, 3.33204, 3.35349, 
+    3.37623, 3.3992, 3.42165, 3.44356, 3.4659, 3.48959, 3.51435, 
+    3.53904, 3.56187, 3.5806, 3.59309, 3.59791, 3.59504, 3.58624, 
+    3.57495, 3.56565, 3.56132, 3.56413, 3.57509, 3.59431, 3.62114, 
+    3.65392, 3.69003, 3.72606, 3.75847, 3.78399, 3.80266, 3.8156, 
+    3.82433, 3.83022, 3.83413, 3.83651, 3.83758, 3.83738, 3.83582, 
+    3.83276, 3.82827, 3.82256, 3.8158, 3.8082, 3.79993, 3.79112, 
+    3.78185, 3.77217, 3.76206, 3.75162, 3.74104, 3.7306, 3.72056, 
+    3.71098, 3.70165, 3.69224, 3.68246, 3.67194, 3.66028, 3.64725, 
+    3.63314, 3.61861, 3.60446, 3.59119, 3.57889, 3.56716, 3.55564, 
+    3.544, 3.53205, 3.51955, 3.5062, 3.49175, 3.47613)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.06642, 2.06583, 2.06518, 
+    2.06465, 2.06417, 2.06373, 2.0634, 2.06314, 2.06301, 2.06317, 
+    2.06347, 2.06387, 2.06434, 2.06493, 2.06572, 2.06673, 2.06794, 
+    2.06937, 2.07092, 2.07277, 2.07489, 2.07718, 2.07952, 2.08184, 
+    2.08416, 2.08646, 2.08871, 2.09084, 2.09289, 2.09478, 2.09661, 
+    2.09849, 2.10066, 2.10347, 2.10722, 2.11224, 2.11908, 2.12781, 
+    2.13855, 2.15138, 2.16619, 2.18286, 2.20128, 2.22135, 2.24308, 
+    2.26663, 2.29241, 2.32141, 2.35402, 2.39101, 2.43253, 2.47795, 
+    2.52536, 2.5717, 2.61349, 2.64805, 2.67435, 2.69332, 2.70675, 
+    2.71638, 2.72355, 2.72883, 2.73251, 2.73456, 2.73488, 2.73335, 
+    2.72997, 2.72481, 2.71797, 2.70959, 2.69981, 2.68876, 2.67659, 
+    2.66335, 2.64921, 2.63422, 2.61852, 2.60227, 2.58562, 2.5686, 
+    2.55113, 2.53326, 2.5149, 2.49606, 2.47682, 2.45726, 2.43748, 
+    2.41761, 2.3978, 2.37818, 2.35881, 2.33972, 2.32094, 2.30254, 
+    2.28461, 2.26731, 2.25074, 2.23491, 2.21983, 2.2054)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.60033, 2.60095, 2.60167, 
+    2.60247, 2.6034, 2.60448, 2.60572, 2.60715, 2.60881, 2.61076, 
+    2.61291, 2.61524, 2.6178, 2.6206, 2.62364, 2.62693, 2.63044, 
+    2.63425, 2.63835, 2.64272, 2.64736, 2.65214, 2.657, 2.66189, 
+    2.66674, 2.67156, 2.67636, 2.68107, 2.68575, 2.69039, 2.69502, 
+    2.69966, 2.70443, 2.70954, 2.7153, 2.72201, 2.73022, 2.73999, 
+    2.75126, 2.764, 2.77808, 2.7933, 2.80949, 2.82657, 2.84466, 
+    2.8641, 2.88535, 2.90952, 2.9372, 2.9692, 3.00597, 3.047, 
+    3.09055, 3.13361, 3.17252, 3.2041, 3.22677, 3.24095, 3.24878, 
+    3.25206, 3.25235, 3.25048, 3.24681, 3.24137, 3.23402, 3.22465, 
+    3.21323, 3.19989, 3.18485, 3.16826, 3.15025, 3.13096, 3.11046, 
+    3.08894, 3.06658, 3.04341, 3.01957, 2.99533, 2.97075, 2.94584, 
+    2.92067, 2.89517, 2.8693, 2.84303, 2.81635, 2.78936, 2.76224, 
+    2.73515, 2.70825, 2.68169, 2.65551, 2.62978, 2.60453, 2.5798, 
+    2.55569, 2.53232, 2.50979, 2.48807, 2.46712, 2.44686)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.24077, 2.24064, 2.24046, 
+    2.24035, 2.24029, 2.24031, 2.24045, 2.24075, 2.2412, 2.24187, 
+    2.24274, 2.24381, 2.24508, 2.24656, 2.24824, 2.25014, 2.2523, 
+    2.25474, 2.25752, 2.26059, 2.2639, 2.26741, 2.27096, 2.2745, 
+    2.27804, 2.28149, 2.28501, 2.28848, 2.29211, 2.29587, 2.29977, 
+    2.3038, 2.30799, 2.31249, 2.31766, 2.32392, 2.33163, 2.34133, 
+    2.35283, 2.36604, 2.38071, 2.3966, 2.41346, 2.43119, 2.44994, 
+    2.47011, 2.49224, 2.51708, 2.54601, 2.57958, 2.61839, 2.66216, 
+    2.70935, 2.75705, 2.80156, 2.83955, 2.86915, 2.8905, 2.90518, 
+    2.91508, 2.92187, 2.92634, 2.92908, 2.93014, 2.92938, 2.92673, 
+    2.92215, 2.9157, 2.90755, 2.89783, 2.88671, 2.87434, 2.86082, 
+    2.84623, 2.83066, 2.81431, 2.79729, 2.77977, 2.76189, 2.74368, 
+    2.72513, 2.70628, 2.68706, 2.66739, 2.6473, 2.62676, 2.60581, 
+    2.58472, 2.56375, 2.54305, 2.52269, 2.50266, 2.48295, 2.46358, 
+    2.44466, 2.42634, 2.40867, 2.39164, 2.3752, 2.3593)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.90188, 2.90403, 2.90624, 
+    2.90848, 2.91075, 2.91307, 2.91548, 2.91807, 2.92082, 2.92381, 
+    2.92696, 2.93029, 2.93382, 2.93757, 2.94155, 2.9458, 2.95033, 
+    2.9552, 2.96037, 2.96577, 2.9714, 2.97715, 2.98282, 2.9883, 
+    2.99358, 2.99863, 3.00361, 3.00856, 3.01365, 3.01893, 3.02439, 
+    3.02994, 3.0356, 3.0416, 3.04827, 3.05612, 3.0658, 3.07719, 
+    3.09017, 3.10446, 3.11975, 3.13574, 3.1522, 3.16912, 3.18689, 
+    3.20619, 3.22797, 3.25371, 3.28409, 3.31992, 3.36141, 3.40785, 
+    3.45722, 3.50614, 3.55068, 3.5876, 3.61553, 3.63533, 3.64887, 
+    3.65817, 3.66469, 3.66928, 3.67207, 3.67307, 3.67216, 3.66922, 
+    3.6642, 3.65718, 3.64833, 3.63775, 3.6256, 3.61199, 3.59693, 
+    3.58064, 3.56322, 3.5448, 3.52544, 3.50543, 3.48487, 3.46386, 
+    3.44234, 3.42027, 3.39759, 3.37425, 3.35019, 3.32553, 3.30042, 
+    3.27509, 3.24981, 3.22475, 3.19998, 3.17552, 3.15139, 3.12767, 
+    3.10446, 3.08183, 3.05976, 3.03824, 3.01719, 2.99663)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.30817, 2.30655, 2.30498, 
+    2.30344, 2.30198, 2.30067, 2.29955, 2.29861, 2.29793, 2.29748, 
+    2.29728, 2.29731, 2.29761, 2.29821, 2.29919, 2.3005, 2.30214, 
+    2.30416, 2.30658, 2.30939, 2.31246, 2.31561, 2.3187, 2.32168, 
+    2.32463, 2.32763, 2.33081, 2.33434, 2.33841, 2.34303, 2.34808, 
+    2.35334, 2.35875, 2.36458, 2.37138, 2.37963, 2.38966, 2.40148, 
+    2.41497, 2.42973, 2.44533, 2.46133, 2.47746, 2.49385, 2.51103, 
+    2.52976, 2.55099, 2.57573, 2.60486, 2.63926, 2.67948, 2.72483, 
+    2.77326, 2.82118, 2.86454, 2.9003, 2.92752, 2.94712, 2.96099, 
+    2.97079, 2.97769, 2.98247, 2.98539, 2.9864, 2.98535, 2.98216, 
+    2.9769, 2.96968, 2.96067, 2.95006, 2.93805, 2.92484, 2.91055, 
+    2.89523, 2.87902, 2.86206, 2.84454, 2.82669, 2.80863, 2.79036, 
+    2.77187, 2.75312, 2.7341, 2.71471, 2.69486, 2.67462, 2.65416, 
+    2.63377, 2.61375, 2.59426, 2.57528, 2.55677, 2.53869, 2.5211, 
+    2.50412, 2.48775, 2.47195, 2.45662, 2.4417, 2.42723)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.40439, 2.40103, 2.3978, 
+    2.39473, 2.39185, 2.38919, 2.38685, 2.38486, 2.38324, 2.38199, 
+    2.3811, 2.3806, 2.38055, 2.38104, 2.3821, 2.38371, 2.38583, 
+    2.38847, 2.39175, 2.39558, 2.39978, 2.40402, 2.40804, 2.41179, 
+    2.41534, 2.41883, 2.42255, 2.42687, 2.43215, 2.43851, 2.44567, 
+    2.45309, 2.46056, 2.46837, 2.47736, 2.48826, 2.50143, 2.51684, 
+    2.53412, 2.55253, 2.57115, 2.58906, 2.60587, 2.62187, 2.63818, 
+    2.65641, 2.67825, 2.70522, 2.73843, 2.7788, 2.8267, 2.88101, 
+    2.93884, 2.99554, 3.04616, 3.08755, 3.11899, 3.14215, 3.1594, 
+    3.17266, 3.18321, 3.19173, 3.19833, 3.20289, 3.20521, 3.20525, 
+    3.20298, 3.19853, 3.19204, 3.1837, 3.17368, 3.16205, 3.14897, 
+    3.1345, 3.11875, 3.10189, 3.08411, 3.06564, 3.04666, 3.0272, 
+    3.00723, 2.98673, 2.96565, 2.94381, 2.92099, 2.89719, 2.87274, 
+    2.84812, 2.82384, 2.80012, 2.77692, 2.75416, 2.73179, 2.70992, 
+    2.68864, 2.66795, 2.64772, 2.62778, 2.60808, 2.5888)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.86543, 3.87217, 3.87899, 
+    3.88595, 3.89309, 3.90047, 3.90805, 3.91575, 3.92366, 3.93195, 
+    3.94064, 3.94957, 3.9587, 3.96805, 3.97773, 3.98786, 3.99844, 
+    4.00936, 4.02065, 4.03238, 4.04441, 4.05661, 4.06886, 4.081, 
+    4.09296, 4.10488, 4.1168, 4.12904, 4.1417, 4.15476, 4.16811, 
+    4.18159, 4.195, 4.20827, 4.22183, 4.23607, 4.25172, 4.2685, 
+    4.28633, 4.30451, 4.32225, 4.33905, 4.35464, 4.36909, 4.38306, 
+    4.39755, 4.41426, 4.43485, 4.46015, 4.49106, 4.52807, 4.57026, 
+    4.61538, 4.66003, 4.70025, 4.73279, 4.75613, 4.7707, 4.77813, 
+    4.78081, 4.78058, 4.7779, 4.77333, 4.76669, 4.75798, 4.7472, 
+    4.73417, 4.71906, 4.70219, 4.68367, 4.66366, 4.64241, 4.61988, 
+    4.5961, 4.57132, 4.54599, 4.52021, 4.49376, 4.46722, 4.44044, 
+    4.41347, 4.38621, 4.35852, 4.33036, 4.30158, 4.27217, 4.24226, 
+    4.21219, 4.1824, 4.15317, 4.12448, 4.09623, 4.06837, 4.04096, 
+    4.01399, 3.98755, 3.96163, 3.93614, 3.91103, 3.88612)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.66778, 3.67131, 3.67494, 
+    3.67866, 3.68262, 3.68689, 3.6917, 3.69716, 3.7032, 3.70984, 
+    3.71726, 3.72547, 3.73466, 3.74486, 3.75628, 3.76891, 3.78271, 
+    3.79762, 3.81365, 3.83059, 3.84773, 3.86417, 3.8793, 3.89313, 
+    3.90627, 3.91957, 3.93393, 3.9503, 3.96967, 3.99224, 4.0173, 
+    4.04334, 4.0691, 4.09479, 4.12182, 4.1517, 4.18516, 4.22198, 
+    4.26084, 4.30027, 4.33792, 4.37153, 4.40013, 4.4247, 4.44833, 
+    4.47492, 4.50794, 4.55026, 4.60366, 4.66969, 4.74887, 4.83984, 
+    4.93747, 5.03277, 5.11724, 5.1854, 5.23697, 5.27241, 5.29821, 
+    5.31631, 5.32999, 5.34049, 5.34857, 5.35279, 5.35347, 5.3503, 
+    5.34562, 5.33675, 5.3247, 5.30865, 5.29139, 5.27323, 5.25269, 
+    5.22966, 5.20456, 5.17801, 5.15068, 5.12181, 5.09311, 5.06304, 
+    5.03194, 5.00015, 4.96762, 4.93454, 4.89922, 4.86201, 4.82403, 
+    4.78551, 4.74722, 4.70967, 4.67364, 4.63864, 4.60427, 4.5701, 
+    4.53654, 4.50319, 4.4704, 4.43776, 4.40496, 4.37236)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.24932, 3.25538, 3.26152, 
+    3.26786, 3.27439, 3.28116, 3.28824, 3.29561, 3.30333, 3.31161, 
+    3.32026, 3.32935, 3.33894, 3.34909, 3.3599, 3.37146, 3.38372, 
+    3.3968, 3.41069, 3.42554, 3.44114, 3.45697, 3.4726, 3.48774, 
+    3.50217, 3.51623, 3.53044, 3.54569, 3.56269, 3.58143, 3.6016, 
+    3.62244, 3.64321, 3.66366, 3.6842, 3.70608, 3.73041, 3.75648, 
+    3.78363, 3.81015, 3.83429, 3.85457, 3.87018, 3.88147, 3.89025, 
+    3.89914, 3.9116, 3.93076, 3.95824, 3.99489, 4.04115, 4.09553, 
+    4.15548, 4.21671, 4.27389, 4.32257, 4.35974, 4.3848, 4.40194, 
+    4.41304, 4.4212, 4.42665, 4.42975, 4.43109, 4.43003, 4.42625, 
+    4.42019, 4.41197, 4.40183, 4.39028, 4.3772, 4.36255, 4.34649, 
+    4.32906, 4.31105, 4.29159, 4.27118, 4.25072, 4.23038, 4.20996, 
+    4.18913, 4.16835, 4.14694, 4.12455, 4.10072, 4.07527, 4.04871, 
+    4.02162, 3.99473, 3.96851, 3.94297, 3.91813, 3.89359, 3.86914, 
+    3.84505, 3.82099, 3.7966, 3.77185, 3.74664, 3.72105)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.32289, 3.32988, 3.33671, 
+    3.34351, 3.35041, 3.35752, 3.36478, 3.37218, 3.37992, 3.38802, 
+    3.39639, 3.405, 3.41396, 3.42346, 3.4336, 3.44424, 3.4552, 
+    3.46674, 3.47931, 3.49255, 3.50631, 3.52039, 3.53451, 3.54839, 
+    3.56181, 3.57481, 3.58768, 3.60141, 3.61664, 3.63352, 3.65187, 
+    3.67102, 3.69025, 3.70922, 3.72814, 3.74779, 3.76919, 3.79253, 
+    3.81681, 3.84067, 3.86255, 3.88085, 3.89436, 3.90296, 3.90789, 
+    3.91149, 3.91676, 3.92679, 3.94425, 3.96963, 4.00317, 4.04437, 
+    4.09133, 4.14051, 4.1875, 4.22847, 4.26129, 4.28582, 4.30327, 
+    4.31539, 4.32391, 4.33007, 4.33461, 4.33767, 4.33869, 4.33761, 
+    4.33448, 4.32962, 4.32324, 4.31528, 4.30588, 4.2954, 4.28411, 
+    4.27209, 4.25902, 4.24516, 4.23058, 4.21576, 4.20114, 4.18673, 
+    4.1721, 4.15727, 4.14239, 4.12713, 4.11084, 4.09316, 4.0742, 
+    4.05465, 4.03541, 4.01694, 3.99917, 3.98182, 3.96473, 3.94794, 
+    3.93132, 3.91463, 3.89764, 3.88028, 3.86239, 3.84393)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.63488, 2.63596, 2.63717, 
+    2.63858, 2.64022, 2.64213, 2.64446, 2.64736, 2.65078, 2.65477, 
+    2.6594, 2.66459, 2.67057, 2.67746, 2.68539, 2.69441, 2.70446, 
+    2.7157, 2.72822, 2.74188, 2.75635, 2.77086, 2.78464, 2.79728, 
+    2.8088, 2.81971, 2.83108, 2.84427, 2.86035, 2.87983, 2.90236, 
+    2.9267, 2.9513, 2.97515, 2.99831, 3.02171, 3.04632, 3.07241, 
+    3.09845, 3.12235, 3.14132, 3.15266, 3.15472, 3.14771, 3.13401, 
+    3.11771, 3.10342, 3.09487, 3.09562, 3.10625, 3.12682, 3.15628, 
+    3.19244, 3.23178, 3.27016, 3.30384, 3.33047, 3.34971, 3.36272, 
+    3.37119, 3.3767, 3.38006, 3.38206, 3.38268, 3.38174, 3.37916, 
+    3.37493, 3.36916, 3.36216, 3.35415, 3.34528, 3.33571, 3.32558, 
+    3.31499, 3.30395, 3.29235, 3.2803, 3.2681, 3.25627, 3.24502, 
+    3.23411, 3.22337, 3.21253, 3.20117, 3.18866, 3.17442, 3.15845, 
+    3.14138, 3.12433, 3.1082, 3.09329, 3.0794, 3.06598, 3.05257, 
+    3.03894, 3.02488, 3.00998, 2.99377, 2.97599, 2.95689)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.23024, 3.24007, 3.24974, 
+    3.25922, 3.26856, 3.27784, 3.28712, 3.2964, 3.30564, 3.31485, 
+    3.32401, 3.33323, 3.34245, 3.35166, 3.36085, 3.37004, 3.37931, 
+    3.38867, 3.39819, 3.40774, 3.41735, 3.42699, 3.43657, 3.44603, 
+    3.4554, 3.46472, 3.4739, 3.48295, 3.49194, 3.50086, 3.5097, 
+    3.51847, 3.52726, 3.53619, 3.54547, 3.55547, 3.56644, 3.57841, 
+    3.59148, 3.60549, 3.62036, 3.63596, 3.65214, 3.66887, 3.68624, 
+    3.70458, 3.72435, 3.74645, 3.77132, 3.79946, 3.83115, 3.86597, 
+    3.90264, 3.93902, 3.97254, 4.00096, 4.02317, 4.03942, 4.05103, 
+    4.05938, 4.06545, 4.06994, 4.073, 4.07477, 4.07506, 4.07382, 
+    4.07108, 4.06685, 4.0612, 4.05435, 4.04653, 4.03784, 4.02828, 
+    4.0179, 4.0068, 3.99507, 3.98293, 3.97049, 3.95784, 3.94499, 
+    3.93191, 3.91852, 3.90482, 3.89085, 3.8766, 3.8621, 3.84742, 
+    3.83262, 3.81789, 3.80334, 3.78898, 3.77483, 3.76084, 3.74703, 
+    3.73346, 3.72015, 3.70723, 3.69467, 3.68233, 3.67024)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.19217, 2.19194, 2.19171, 
+    2.19145, 2.19119, 2.19103, 2.19104, 2.1912, 2.19145, 2.19189, 
+    2.19249, 2.19321, 2.1941, 2.19519, 2.19645, 2.19783, 2.1994, 
+    2.20129, 2.20351, 2.20599, 2.20865, 2.21141, 2.21423, 2.21712, 
+    2.22003, 2.22288, 2.22567, 2.22831, 2.23082, 2.23325, 2.23571, 
+    2.23826, 2.24109, 2.24451, 2.24892, 2.25478, 2.26264, 2.27259, 
+    2.28467, 2.29884, 2.31506, 2.33321, 2.35317, 2.37487, 2.39831, 
+    2.42368, 2.45147, 2.48271, 2.51801, 2.55812, 2.60317, 2.6524, 
+    2.70369, 2.75371, 2.79878, 2.83598, 2.86432, 2.88472, 2.89911, 
+    2.90935, 2.91687, 2.92257, 2.92655, 2.92871, 2.92894, 2.92716, 
+    2.92336, 2.91766, 2.91022, 2.90114, 2.89056, 2.87859, 2.86535, 
+    2.85098, 2.8357, 2.81951, 2.80262, 2.78518, 2.76722, 2.74885, 
+    2.73009, 2.71089, 2.69116, 2.67094, 2.65025, 2.62919, 2.60792, 
+    2.5866, 2.56538, 2.54438, 2.52357, 2.50304, 2.4829, 2.46319, 
+    2.44407, 2.4256, 2.40785, 2.39088, 2.37466, 2.35912)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.69596, 2.69735, 2.69875, 
+    2.70025, 2.70182, 2.70353, 2.70536, 2.7073, 2.70951, 2.71207, 
+    2.71481, 2.71774, 2.7208, 2.72404, 2.72752, 2.73126, 2.73533, 
+    2.73966, 2.74422, 2.749, 2.75402, 2.75924, 2.76455, 2.76985, 
+    2.77509, 2.78024, 2.78534, 2.79039, 2.79547, 2.80055, 2.80558, 
+    2.81063, 2.81583, 2.82137, 2.82766, 2.835, 2.844, 2.85462, 
+    2.86694, 2.88087, 2.89624, 2.91287, 2.93061, 2.94937, 2.96923, 
+    2.99042, 3.01366, 3.04, 3.07032, 3.1053, 3.14538, 3.19011, 
+    3.23766, 3.28488, 3.3278, 3.36284, 3.38831, 3.40479, 3.41427, 
+    3.41873, 3.41989, 3.41904, 3.41637, 3.41165, 3.4048, 3.39588, 
+    3.38488, 3.3719, 3.35707, 3.34053, 3.32245, 3.30298, 3.28228, 
+    3.26046, 3.23769, 3.21414, 3.18989, 3.16524, 3.14018, 3.11483, 
+    3.08914, 3.06307, 3.03664, 3.00976, 2.98246, 2.95483, 2.92702, 
+    2.89921, 2.87158, 2.84432, 2.81748, 2.79105, 2.76506, 2.73962, 
+    2.71482, 2.69079, 2.66755, 2.64519, 2.62356, 2.60263)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.49473, 2.49564, 2.49655, 
+    2.49751, 2.49853, 2.49967, 2.50098, 2.50236, 2.50387, 2.50561, 
+    2.50748, 2.5095, 2.51168, 2.51399, 2.5164, 2.51898, 2.52181, 
+    2.52489, 2.52813, 2.5316, 2.53526, 2.53902, 2.54285, 2.54672, 
+    2.55053, 2.55429, 2.55807, 2.56179, 2.56557, 2.56933, 2.57305, 
+    2.57677, 2.5806, 2.5847, 2.58939, 2.59488, 2.60166, 2.6097, 
+    2.61903, 2.62958, 2.64119, 2.65371, 2.66699, 2.68101, 2.69587, 
+    2.71189, 2.72959, 2.74998, 2.77357, 2.80095, 2.83233, 2.86716, 
+    2.90379, 2.93963, 2.97171, 2.99765, 3.01647, 3.02871, 3.03605, 
+    3.03993, 3.04148, 3.04146, 3.03995, 3.03697, 3.03242, 3.02626, 
+    3.01851, 3.00922, 2.99845, 2.98639, 2.97315, 2.95882, 2.94352, 
+    2.92733, 2.91037, 2.89273, 2.87452, 2.85596, 2.8371, 2.81797, 
+    2.79853, 2.77874, 2.75862, 2.73813, 2.71728, 2.69612, 2.67475, 
+    2.65337, 2.63211, 2.61107, 2.59034, 2.56992, 2.54984, 2.5301, 
+    2.5108, 2.49207, 2.47391, 2.4564, 2.4395, 2.42313)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.78651, 2.78878, 2.79103, 
+    2.7933, 2.79563, 2.79802, 2.80049, 2.80311, 2.80582, 2.80872, 
+    2.81181, 2.81499, 2.81834, 2.82185, 2.82551, 2.82938, 2.83346, 
+    2.83774, 2.84226, 2.84704, 2.85199, 2.857, 2.86201, 2.86694, 
+    2.87179, 2.87655, 2.88129, 2.88592, 2.89062, 2.89536, 2.90015, 
+    2.905, 2.90995, 2.91522, 2.92114, 2.92812, 2.93662, 2.94669, 
+    2.95829, 2.97124, 2.98536, 3.00038, 3.01613, 3.03264, 3.0501, 
+    3.06893, 3.0899, 3.11417, 3.14247, 3.17544, 3.21331, 3.25545, 
+    3.29998, 3.34382, 3.38349, 3.41621, 3.44083, 3.45806, 3.46969, 
+    3.47751, 3.48281, 3.48628, 3.4881, 3.48828, 3.4867, 3.48324, 
+    3.47787, 3.47064, 3.46173, 3.45125, 3.4393, 3.42598, 3.4114, 
+    3.39569, 3.37892, 3.36117, 3.34265, 3.3235, 3.30391, 3.28381, 
+    3.26323, 3.24213, 3.22049, 3.19829, 3.17551, 3.15219, 3.12848, 
+    3.10459, 3.08076, 3.05715, 3.03382, 3.01077, 2.98801, 2.96558, 
+    2.94358, 2.92211, 2.90129, 2.88106, 2.86135, 2.84216)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.77778, 2.78078, 2.7838, 
+    2.78679, 2.78979, 2.79282, 2.7959, 2.7991, 2.80242, 2.8059, 
+    2.80943, 2.81309, 2.81689, 2.82079, 2.8248, 2.829, 2.8334, 
+    2.83802, 2.84284, 2.8478, 2.85292, 2.85812, 2.86332, 2.86846, 
+    2.87349, 2.87836, 2.88313, 2.88787, 2.89253, 2.8972, 2.90191, 
+    2.90661, 2.9114, 2.91649, 2.92213, 2.92872, 2.93678, 2.94623, 
+    2.9571, 2.96927, 2.98252, 2.99662, 3.01143, 3.02693, 3.0433, 
+    3.06095, 3.08052, 3.10315, 3.12938, 3.15995, 3.19504, 3.23405, 
+    3.27523, 3.31584, 3.35267, 3.38314, 3.40616, 3.42239, 3.43344, 
+    3.4409, 3.446, 3.44941, 3.45128, 3.45163, 3.45033, 3.44732, 
+    3.44253, 3.43605, 3.42802, 3.41851, 3.40765, 3.39552, 3.38228, 
+    3.36799, 3.35273, 3.33661, 3.31975, 3.30238, 3.28456, 3.26637, 
+    3.24773, 3.22865, 3.20907, 3.18897, 3.16838, 3.14733, 3.12595, 
+    3.10443, 3.08295, 3.06165, 3.04061, 3.01981, 2.99927, 2.97911, 
+    2.95938, 2.94017, 2.92146, 2.90324, 2.88553, 2.86827)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.60265, 2.60327, 2.6039, 
+    2.60448, 2.60511, 2.60584, 2.60667, 2.60758, 2.6087, 2.61, 
+    2.61148, 2.61312, 2.61489, 2.61681, 2.61892, 2.62123, 2.62382, 
+    2.62673, 2.62989, 2.63329, 2.63687, 2.64051, 2.64416, 2.64775, 
+    2.65122, 2.65471, 2.65816, 2.66169, 2.66534, 2.66914, 2.67309, 
+    2.67716, 2.68144, 2.68615, 2.69162, 2.69826, 2.7066, 2.71673, 
+    2.72862, 2.74206, 2.75686, 2.7728, 2.78973, 2.80764, 2.82678, 
+    2.84752, 2.87058, 2.8972, 2.92798, 2.96365, 3.00451, 3.04996, 
+    3.0981, 3.1458, 3.18933, 3.22559, 3.25316, 3.27262, 3.2858, 
+    3.29461, 3.30052, 3.30456, 3.30686, 3.30745, 3.30617, 3.30291, 
+    3.29771, 3.29065, 3.28187, 3.27156, 3.25983, 3.24676, 3.2325, 
+    3.21729, 3.20115, 3.18416, 3.16655, 3.14842, 3.1299, 3.11107, 
+    3.09191, 3.07238, 3.05243, 3.03203, 3.0112, 2.98998, 2.96847, 
+    2.94688, 2.92545, 2.9043, 2.88349, 2.86303, 2.84294, 2.82324, 
+    2.804, 2.78534, 2.76731, 2.74997, 2.73318, 2.71695)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.62326, 2.62422, 2.62517, 
+    2.6261, 2.62708, 2.62814, 2.62931, 2.63069, 2.63226, 2.63397, 
+    2.63586, 2.63796, 2.64028, 2.64279, 2.64549, 2.64842, 2.65156, 
+    2.65505, 2.65892, 2.66297, 2.66714, 2.6714, 2.67566, 2.67982, 
+    2.68391, 2.688, 2.69205, 2.69615, 2.70041, 2.70489, 2.70954, 
+    2.71436, 2.71941, 2.72488, 2.73121, 2.73885, 2.74844, 2.76, 
+    2.77339, 2.78845, 2.8049, 2.82252, 2.84115, 2.86078, 2.88162, 
+    2.90423, 2.92933, 2.95826, 2.99188, 3.0309, 3.07557, 3.12516, 
+    3.17751, 3.22914, 3.27598, 3.31469, 3.34398, 3.36462, 3.37873, 
+    3.38839, 3.39516, 3.39984, 3.40278, 3.40391, 3.40302, 3.40004, 
+    3.39498, 3.38792, 3.37902, 3.36845, 3.35637, 3.34285, 3.32799, 
+    3.31195, 3.2949, 3.27689, 3.25814, 3.23878, 3.21895, 3.19868, 
+    3.17797, 3.15683, 3.1352, 3.11303, 3.09033, 3.06709, 3.0435, 
+    3.01984, 2.99632, 2.97316, 2.95032, 2.9278, 2.90566, 2.88394, 
+    2.86276, 2.84219, 2.82237, 2.80319, 2.78469, 2.76671)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.53274, 2.53378, 2.53481, 
+    2.53585, 2.53697, 2.53818, 2.53951, 2.54099, 2.54263, 2.5445, 
+    2.5465, 2.5487, 2.55107, 2.55361, 2.55633, 2.55924, 2.56241, 
+    2.56584, 2.5696, 2.57357, 2.57775, 2.58204, 2.58637, 2.59068, 
+    2.59492, 2.59911, 2.6032, 2.60736, 2.61156, 2.6159, 2.62036, 
+    2.62487, 2.62951, 2.63447, 2.64009, 2.6468, 2.65507, 2.66487, 
+    2.67618, 2.68876, 2.70237, 2.71671, 2.73159, 2.747, 2.76309, 
+    2.78045, 2.79978, 2.82239, 2.84889, 2.87995, 2.91579, 2.95586, 
+    2.99839, 3.04046, 3.07866, 3.11014, 3.13363, 3.1497, 3.15988, 
+    3.16612, 3.16963, 3.17132, 3.17141, 3.16987, 3.16659, 3.16147, 
+    3.1545, 3.14582, 3.13554, 3.12376, 3.11065, 3.09635, 3.08096, 
+    3.06462, 3.04738, 3.02944, 3.01082, 2.9918, 2.97245, 2.95281, 
+    2.93287, 2.91261, 2.89194, 2.87083, 2.84927, 2.8273, 2.80503, 
+    2.78267, 2.76047, 2.73857, 2.71703, 2.69583, 2.67496, 2.65448, 
+    2.63445, 2.61498, 2.5961, 2.5778, 2.56, 2.54266)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.99476, 3.00045, 3.00601, 
+    3.0116, 3.01721, 3.02282, 3.02849, 3.03421, 3.03999, 3.04597, 
+    3.05204, 3.05822, 3.06448, 3.07084, 3.07732, 3.08396, 3.09079, 
+    3.09787, 3.10507, 3.11249, 3.12009, 3.1278, 3.13549, 3.14306, 
+    3.15051, 3.15793, 3.16533, 3.17275, 3.18021, 3.1877, 3.19525, 
+    3.20284, 3.21048, 3.21832, 3.22664, 3.23576, 3.24606, 3.25761, 
+    3.27036, 3.28418, 3.29886, 3.3142, 3.33004, 3.34639, 3.36346, 
+    3.38163, 3.40144, 3.42399, 3.44992, 3.47988, 3.51409, 3.55209, 
+    3.59226, 3.63198, 3.6682, 3.6983, 3.72102, 3.73672, 3.74682, 
+    3.75309, 3.75677, 3.75866, 3.75902, 3.75774, 3.75482, 3.75017, 
+    3.74378, 3.73578, 3.72632, 3.71554, 3.70355, 3.69045, 3.67636, 
+    3.66135, 3.64563, 3.62938, 3.61252, 3.59533, 3.57788, 3.56021, 
+    3.54236, 3.52425, 3.50586, 3.48712, 3.46808, 3.44874, 3.42922, 
+    3.40971, 3.39038, 3.37132, 3.35257, 3.33414, 3.31602, 3.29827, 
+    3.28089, 3.26402, 3.24762, 3.23169, 3.21628, 3.20131)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.46943, 2.46967, 2.46997, 
+    2.47022, 2.47056, 2.47102, 2.47162, 2.47245, 2.47348, 2.47471, 
+    2.47612, 2.47776, 2.47966, 2.48178, 2.48413, 2.48676, 2.48968, 
+    2.49298, 2.49663, 2.50058, 2.50478, 2.50909, 2.51337, 2.51755, 
+    2.52168, 2.52574, 2.5299, 2.53416, 2.53864, 2.54339, 2.54837, 
+    2.55355, 2.55898, 2.56486, 2.5716, 2.57965, 2.58971, 2.60179, 
+    2.6157, 2.63122, 2.64798, 2.66564, 2.68395, 2.70293, 2.72295, 
+    2.7446, 2.76873, 2.79692, 2.82989, 2.86839, 2.91273, 2.96225, 
+    3.0148, 3.06687, 3.11436, 3.15379, 3.18361, 3.20455, 3.21859, 
+    3.22789, 3.2341, 3.23824, 3.2406, 3.24112, 3.23966, 3.23609, 
+    3.23037, 3.22265, 3.21315, 3.202, 3.18939, 3.17541, 3.16017, 
+    3.14382, 3.12655, 3.10846, 3.08965, 3.07041, 3.05076, 3.03082, 
+    3.01055, 2.98992, 2.96887, 2.94731, 2.9252, 2.9026, 2.8797, 
+    2.85671, 2.83388, 2.81141, 2.78935, 2.76771, 2.74643, 2.72555, 
+    2.70518, 2.68547, 2.66639, 2.64796, 2.63005, 2.61266)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.57138, 3.5816, 3.59165, 
+    3.60163, 3.61153, 3.62135, 3.63113, 3.6409, 3.65073, 3.66056, 
+    3.67041, 3.6804, 3.69047, 3.70058, 3.71076, 3.72103, 3.73144, 
+    3.7421, 3.75292, 3.76408, 3.77542, 3.78679, 3.79813, 3.80938, 
+    3.82051, 3.83146, 3.84237, 3.85338, 3.8645, 3.87568, 3.88692, 
+    3.89825, 3.90961, 3.92108, 3.93306, 3.94584, 3.96, 3.97551, 
+    3.99234, 4.01028, 4.02896, 4.04811, 4.06755, 4.0872, 4.10725, 
+    4.12832, 4.15124, 4.1772, 4.20687, 4.24094, 4.27983, 4.32318, 
+    4.36949, 4.41622, 4.46031, 4.49899, 4.53057, 4.55488, 4.57284, 
+    4.58592, 4.59574, 4.60358, 4.60939, 4.61331, 4.61522, 4.61499, 
+    4.61273, 4.60849, 4.60255, 4.5951, 4.58599, 4.57547, 4.56354, 
+    4.55056, 4.53677, 4.52221, 4.50686, 4.49093, 4.47484, 4.45828, 
+    4.44151, 4.42448, 4.40703, 4.38926, 4.37098, 4.35216, 4.33298, 
+    4.31372, 4.29471, 4.27606, 4.25772, 4.23973, 4.22206, 4.2046, 
+    4.18749, 4.17078, 4.15465, 4.13888, 4.1234, 4.10817)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.24882, 3.25481, 3.26085, 
+    3.267, 3.27328, 3.27958, 3.28588, 3.2923, 3.29888, 3.3057, 
+    3.31264, 3.31982, 3.32723, 3.3348, 3.34253, 3.35048, 3.35872, 
+    3.36722, 3.37607, 3.3852, 3.39461, 3.40415, 3.41367, 3.42304, 
+    3.43224, 3.4415, 3.45062, 3.45985, 3.46922, 3.4788, 3.48856, 
+    3.49844, 3.50836, 3.51849, 3.52917, 3.54092, 3.5543, 3.56925, 
+    3.58553, 3.60287, 3.62086, 3.6392, 3.65758, 3.67585, 3.69446, 
+    3.7141, 3.7359, 3.76145, 3.79112, 3.82598, 3.86631, 3.91172, 
+    3.95994, 4.00763, 4.0512, 4.08728, 4.11402, 4.13218, 4.14346, 
+    4.15047, 4.15379, 4.15524, 4.15499, 4.15278, 4.14849, 4.14211, 
+    4.13375, 4.12338, 4.11106, 4.09719, 4.08208, 4.06574, 4.04797, 
+    4.0291, 4.00968, 3.98926, 3.96821, 3.94671, 3.925, 3.90291, 
+    3.88053, 3.85782, 3.83462, 3.81086, 3.78651, 3.7617, 3.73673, 
+    3.71177, 3.68694, 3.66238, 3.63821, 3.61438, 3.59086, 3.56787, 
+    3.54536, 3.52347, 3.50214, 3.48134, 3.46092, 3.44076)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.23103, 2.23081, 2.2307, 
+    2.23064, 2.23062, 2.23071, 2.23097, 2.23138, 2.23193, 2.23281, 
+    2.23381, 2.23504, 2.23652, 2.23822, 2.24019, 2.24247, 2.24507, 
+    2.24806, 2.25145, 2.2551, 2.25899, 2.2629, 2.26673, 2.27043, 
+    2.27401, 2.27753, 2.2812, 2.28515, 2.2894, 2.29399, 2.29889, 
+    2.30401, 2.30935, 2.31503, 2.32144, 2.32904, 2.33857, 2.34978, 
+    2.36258, 2.37662, 2.39145, 2.40672, 2.42225, 2.43819, 2.45499, 
+    2.4734, 2.49437, 2.51939, 2.54905, 2.58402, 2.62439, 2.66927, 
+    2.71649, 2.76279, 2.80461, 2.83919, 2.86551, 2.88433, 2.89759, 
+    2.90696, 2.9138, 2.91895, 2.92258, 2.92458, 2.92477, 2.92307, 
+    2.91955, 2.91434, 2.90751, 2.89922, 2.8896, 2.87881, 2.86685, 
+    2.8538, 2.83987, 2.82516, 2.80978, 2.79394, 2.77767, 2.7611, 
+    2.74416, 2.72681, 2.70901, 2.6907, 2.67178, 2.65228, 2.63238, 
+    2.61235, 2.59246, 2.57285, 2.55357, 2.53461, 2.51595, 2.49756, 
+    2.47958, 2.46208, 2.44513, 2.42868, 2.41263, 2.39692)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.29172, 2.29224, 2.29277, 
+    2.29329, 2.29389, 2.29465, 2.2956, 2.29675, 2.29811, 2.29968, 
+    2.30147, 2.30355, 2.30592, 2.30856, 2.31143, 2.31465, 2.31824, 
+    2.32228, 2.32684, 2.33178, 2.33695, 2.34214, 2.34723, 2.35219, 
+    2.35703, 2.36181, 2.36665, 2.37183, 2.37744, 2.38358, 2.39012, 
+    2.39687, 2.40376, 2.41095, 2.41894, 2.42828, 2.4396, 2.45276, 
+    2.46755, 2.48354, 2.50012, 2.51686, 2.53352, 2.55019, 2.56749, 
+    2.58636, 2.60802, 2.63421, 2.66559, 2.70287, 2.74618, 2.79458, 
+    2.84585, 2.89648, 2.94249, 2.98078, 3.0101, 3.03125, 3.04622, 
+    3.05691, 3.0649, 3.07107, 3.07558, 3.07833, 3.07912, 3.07791, 
+    3.07481, 3.06985, 3.06313, 3.05481, 3.04504, 3.03395, 3.02167, 
+    3.00827, 2.99386, 2.97852, 2.96252, 2.94601, 2.92911, 2.91178, 
+    2.89407, 2.87596, 2.85735, 2.83813, 2.8182, 2.7976, 2.77645, 
+    2.75508, 2.73384, 2.71296, 2.69248, 2.67232, 2.6524, 2.6328, 
+    2.61362, 2.59492, 2.5767, 2.55889, 2.54148, 2.52447)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.99463, 3.00099, 3.00726, 
+    3.01352, 3.01982, 3.02616, 3.03256, 3.039, 3.04554, 3.05228, 
+    3.05918, 3.06617, 3.07327, 3.0805, 3.08791, 3.09552, 3.10337, 
+    3.11147, 3.11982, 3.12844, 3.13738, 3.14652, 3.15572, 3.16482, 
+    3.17371, 3.18251, 3.19128, 3.20023, 3.20954, 3.21914, 3.22896, 
+    3.23888, 3.24882, 3.25892, 3.26955, 3.28119, 3.29441, 3.30915, 
+    3.3252, 3.34209, 3.35914, 3.37579, 3.39163, 3.40664, 3.42139, 
+    3.43685, 3.45432, 3.47547, 3.50098, 3.53169, 3.56779, 3.60868, 
+    3.65261, 3.69652, 3.73679, 3.77034, 3.79578, 3.81363, 3.8255, 
+    3.83309, 3.83786, 3.84071, 3.84187, 3.84139, 3.83917, 3.8352, 
+    3.82936, 3.82172, 3.81257, 3.80207, 3.79039, 3.77767, 3.76395, 
+    3.74932, 3.73393, 3.718, 3.70163, 3.68507, 3.66837, 3.65151, 
+    3.63449, 3.61725, 3.59977, 3.5819, 3.56352, 3.5446, 3.52526, 
+    3.50581, 3.48656, 3.46772, 3.44931, 3.43125, 3.41345, 3.3959, 
+    3.37868, 3.36182, 3.34531, 3.32905, 3.31284, 3.29672)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.15492, 3.16084, 3.16672, 
+    3.17258, 3.1785, 3.1845, 3.19064, 3.19703, 3.20365, 3.21042, 
+    3.21748, 3.22473, 3.23218, 3.23991, 3.24796, 3.25639, 3.26518, 
+    3.27436, 3.28397, 3.29409, 3.30457, 3.31526, 3.32592, 3.3364, 
+    3.34667, 3.35675, 3.36688, 3.37729, 3.38816, 3.39954, 3.4113, 
+    3.42319, 3.43506, 3.44704, 3.45958, 3.47342, 3.48919, 3.50666, 
+    3.52548, 3.54497, 3.5643, 3.58275, 3.5999, 3.61587, 3.63145, 
+    3.64806, 3.66742, 3.69166, 3.72168, 3.75828, 3.80148, 3.85036, 
+    3.90266, 3.95481, 4.0026, 4.04258, 4.07322, 4.09521, 4.11071, 
+    4.12151, 4.12931, 4.13493, 4.13866, 4.1404, 4.14008, 4.13765, 
+    4.1331, 4.12647, 4.11795, 4.10775, 4.096, 4.08284, 4.06843, 
+    4.05281, 4.03613, 4.01851, 4.00024, 3.98156, 3.96253, 3.94322, 
+    3.9236, 3.90359, 3.88307, 3.86187, 3.83984, 3.81698, 3.79347, 
+    3.76971, 3.74612, 3.72298, 3.70034, 3.6781, 3.65612, 3.63443, 
+    3.61308, 3.59219, 3.57161, 3.55126, 3.53098, 3.51084)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.65472, 2.65579, 2.65681, 
+    2.6579, 2.65911, 2.66053, 2.66221, 2.66413, 2.66629, 2.66873, 
+    2.67152, 2.67465, 2.67811, 2.68191, 2.68606, 2.69062, 2.69564, 
+    2.70116, 2.70712, 2.71352, 2.72014, 2.72679, 2.7333, 2.73958, 
+    2.74567, 2.75166, 2.75778, 2.76435, 2.77156, 2.7795, 2.78806, 
+    2.79698, 2.80607, 2.81534, 2.82521, 2.83632, 2.84933, 2.86403, 
+    2.88009, 2.89698, 2.91401, 2.93057, 2.94632, 2.96134, 2.97634, 
+    2.99244, 3.01117, 3.03455, 3.06335, 3.09839, 3.13999, 3.18742, 
+    3.23865, 3.29011, 3.33742, 3.37667, 3.4058, 3.42545, 3.43764, 
+    3.44472, 3.44859, 3.45023, 3.44988, 3.44751, 3.44317, 3.43675, 
+    3.42823, 3.41768, 3.40527, 3.39121, 3.37569, 3.35894, 3.34109, 
+    3.32232, 3.30269, 3.28219, 3.26108, 3.23965, 3.21806, 3.1963, 
+    3.17432, 3.15207, 3.12948, 3.10637, 3.08268, 3.05845, 3.03384, 
+    3.00917, 2.98471, 2.96069, 2.93729, 2.9145, 2.89222, 2.87035, 
+    2.84895, 2.82801, 2.80755, 2.78759, 2.76793, 2.74865)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.47687, 2.47783, 2.47875, 
+    2.4797, 2.48078, 2.48203, 2.48349, 2.48521, 2.48718, 2.48942, 
+    2.49195, 2.49477, 2.49797, 2.50153, 2.50548, 2.50988, 2.51472, 
+    2.52022, 2.52621, 2.53268, 2.53946, 2.54631, 2.55297, 2.55931, 
+    2.56539, 2.57138, 2.57767, 2.58449, 2.59213, 2.60063, 2.60984, 
+    2.61943, 2.62915, 2.63905, 2.64956, 2.66138, 2.67527, 2.69102, 
+    2.70806, 2.72578, 2.74331, 2.75995, 2.77536, 2.78973, 2.804, 
+    2.81955, 2.83806, 2.86174, 2.8914, 2.92776, 2.97086, 3.01978, 
+    3.07222, 3.12453, 3.17252, 3.21267, 3.24345, 3.26554, 3.28097, 
+    3.29188, 3.29977, 3.30574, 3.30989, 3.31222, 3.31254, 3.31077, 
+    3.30696, 3.30125, 3.29379, 3.28472, 3.27422, 3.26239, 3.24941, 
+    3.23533, 3.22025, 3.20437, 3.18775, 3.17067, 3.15335, 3.13581, 
+    3.11799, 3.09981, 3.08112, 3.06177, 3.04164, 3.02072, 2.99921, 
+    2.97744, 2.95581, 2.93462, 2.91393, 2.8937, 2.87381, 2.85421, 
+    2.8349, 2.81594, 2.79734, 2.77896, 2.76081, 2.74286)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.96706, 2.97199, 2.97683, 
+    2.98166, 2.98654, 2.99151, 2.99664, 3.00192, 3.00742, 3.01312, 
+    3.01897, 3.025, 3.03125, 3.03772, 3.04443, 3.05148, 3.05888, 
+    3.06661, 3.0748, 3.08335, 3.09222, 3.10123, 3.11015, 3.11887, 
+    3.12737, 3.13577, 3.14415, 3.15288, 3.16213, 3.17194, 3.1822, 
+    3.19269, 3.20325, 3.21389, 3.22495, 3.23699, 3.25062, 3.26566, 
+    3.28172, 3.29819, 3.31433, 3.32947, 3.34325, 3.35581, 3.36794, 
+    3.38087, 3.39606, 3.41551, 3.43997, 3.47019, 3.50632, 3.54758, 
+    3.59207, 3.63669, 3.67775, 3.7121, 3.7382, 3.75644, 3.76848, 
+    3.7762, 3.78099, 3.78382, 3.78498, 3.78447, 3.7822, 3.77808, 
+    3.77204, 3.7642, 3.75475, 3.74386, 3.73169, 3.71839, 3.7041, 
+    3.68889, 3.67281, 3.656, 3.63863, 3.62103, 3.60328, 3.58534, 
+    3.5673, 3.54895, 3.53023, 3.51099, 3.49111, 3.47058, 3.4495, 
+    3.42818, 3.40701, 3.38622, 3.36591, 3.34607, 3.3265, 3.30716, 
+    3.28802, 3.26913, 3.25053, 3.23212, 3.21381, 3.19558)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.69311, 2.69501, 2.69693, 
+    2.69885, 2.70091, 2.70316, 2.70565, 2.70845, 2.7115, 2.7149, 
+    2.71869, 2.7228, 2.72731, 2.7323, 2.73783, 2.74392, 2.75061, 
+    2.75793, 2.7659, 2.7744, 2.78322, 2.79204, 2.80058, 2.80864, 
+    2.81627, 2.82377, 2.83158, 2.84036, 2.85036, 2.86172, 2.87413, 
+    2.8871, 2.9002, 2.91332, 2.92691, 2.94174, 2.95861, 2.97725, 
+    2.99688, 3.01651, 3.0349, 3.05095, 3.06407, 3.07457, 3.08372, 
+    3.09358, 3.1066, 3.12543, 3.15101, 3.18406, 3.2247, 3.27191, 
+    3.3233, 3.37512, 3.42306, 3.46342, 3.4944, 3.51657, 3.53201, 
+    3.5428, 3.55054, 3.55635, 3.56033, 3.56245, 3.56262, 3.56074, 
+    3.55683, 3.55099, 3.54338, 3.53418, 3.52357, 3.51167, 3.49866, 
+    3.48455, 3.46959, 3.45374, 3.43716, 3.42007, 3.40278, 3.38541, 
+    3.36787, 3.34993, 3.33149, 3.31233, 3.29224, 3.27117, 3.24929, 
+    3.22701, 3.20488, 3.18329, 3.16235, 3.142, 3.12207, 3.10234, 
+    3.08282, 3.06349, 3.04427, 3.02498, 3.00555, 2.98611)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.05898, 3.06231, 3.06561, 
+    3.06896, 3.07245, 3.07616, 3.08014, 3.08444, 3.08901, 3.09404, 
+    3.09936, 3.10514, 3.11142, 3.11828, 3.12573, 3.13382, 3.14263, 
+    3.15215, 3.16241, 3.17334, 3.18469, 3.19603, 3.20696, 3.21729, 
+    3.22719, 3.23695, 3.24726, 3.25863, 3.27157, 3.28614, 3.30203, 
+    3.31862, 3.33535, 3.35207, 3.36924, 3.38766, 3.40824, 3.43065, 
+    3.45396, 3.47681, 3.49766, 3.51518, 3.52877, 3.5389, 3.54724, 
+    3.55637, 3.56896, 3.58817, 3.61508, 3.65042, 3.69415, 3.74519, 
+    3.80093, 3.8573, 3.9095, 3.9535, 3.98738, 4.01192, 4.0291, 
+    4.04116, 4.04993, 4.0564, 4.06088, 4.06334, 4.06372, 4.06187, 
+    4.05774, 4.05148, 4.04334, 4.0336, 4.02237, 4.00984, 3.99607, 
+    3.98127, 3.96548, 3.94893, 3.93166, 3.91399, 3.89619, 3.87842, 
+    3.86048, 3.84221, 3.8234, 3.80384, 3.78331, 3.7617, 3.73916, 
+    3.71622, 3.69355, 3.67159, 3.65044, 3.62993, 3.60982, 3.5899, 
+    3.5701, 3.55045, 3.53083, 3.51098, 3.49082, 3.47049)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.28923, 3.29435, 3.29952, 
+    3.30482, 3.31024, 3.31584, 3.32175, 3.32799, 3.33462, 3.34161, 
+    3.34884, 3.35658, 3.36484, 3.37365, 3.38304, 3.39305, 3.40377, 
+    3.41512, 3.42711, 3.4398, 3.45325, 3.46712, 3.48094, 3.49437, 
+    3.50743, 3.52031, 3.53333, 3.54702, 3.56211, 3.57889, 3.59706, 
+    3.6159, 3.63477, 3.65344, 3.6723, 3.69241, 3.71491, 3.73952, 
+    3.76504, 3.7901, 3.81303, 3.83228, 3.84694, 3.85717, 3.86438, 
+    3.87121, 3.88087, 3.89714, 3.9213, 3.95425, 3.99568, 4.0447, 
+    4.09892, 4.15442, 4.20617, 4.24958, 4.28242, 4.30494, 4.31881, 
+    4.32701, 4.33287, 4.3362, 4.33732, 4.33575, 4.33218, 4.32636, 
+    4.31847, 4.30851, 4.29635, 4.28259, 4.26773, 4.25157, 4.23451, 
+    4.21601, 4.1967, 4.17603, 4.15489, 4.1336, 4.11297, 4.09191, 
+    4.07025, 4.04831, 4.02608, 4.00345, 3.97974, 3.95469, 3.92851, 
+    3.9018, 3.87532, 3.84964, 3.82507, 3.80137, 3.77789, 3.75457, 
+    3.73154, 3.70883, 3.68601, 3.66249, 3.63866, 3.61474)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.40898, 2.40986, 2.41082, 
+    2.41182, 2.41295, 2.41429, 2.41586, 2.41772, 2.41995, 2.42252, 
+    2.42542, 2.42869, 2.43242, 2.43671, 2.44157, 2.44697, 2.453, 
+    2.45975, 2.46721, 2.47521, 2.48347, 2.4916, 2.49931, 2.50646, 
+    2.51319, 2.51987, 2.52715, 2.53548, 2.54527, 2.5566, 2.56911, 
+    2.58223, 2.59545, 2.60859, 2.62196, 2.63625, 2.65215, 2.66921, 
+    2.6866, 2.70322, 2.71789, 2.7296, 2.738, 2.74359, 2.74785, 
+    2.7528, 2.76067, 2.77401, 2.79356, 2.81999, 2.85324, 2.8923, 
+    2.9349, 2.97775, 3.01714, 3.05001, 3.07493, 3.09235, 3.10399, 
+    3.11156, 3.11656, 3.11972, 3.12141, 3.12155, 3.11999, 3.1167, 
+    3.11165, 3.10499, 3.09696, 3.08772, 3.07742, 3.06622, 3.05418, 
+    3.04141, 3.02801, 3.01401, 2.9996, 2.98499, 2.97038, 2.95584, 
+    2.94129, 2.92655, 2.91145, 2.89583, 2.8795, 2.86235, 2.84455, 
+    2.82649, 2.80863, 2.79135, 2.77475, 2.7587, 2.74299, 2.72747, 
+    2.71202, 2.69663, 2.68122, 2.6656, 2.64974, 2.63371)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.14612, 3.15093, 3.15574, 
+    3.16061, 3.16566, 3.17092, 3.17644, 3.18231, 3.18861, 3.1954, 
+    3.20245, 3.20985, 3.21775, 3.22624, 3.23537, 3.24517, 3.25556, 
+    3.2667, 3.27861, 3.29134, 3.3048, 3.31867, 3.33254, 3.34605, 
+    3.35915, 3.37205, 3.38531, 3.39957, 3.41547, 3.43327, 3.45262, 
+    3.47275, 3.49282, 3.51247, 3.5323, 3.55355, 3.57744, 3.60341, 
+    3.6303, 3.65631, 3.67926, 3.69716, 3.70879, 3.7144, 3.716, 
+    3.71688, 3.7209, 3.7322, 3.75223, 3.78176, 3.82068, 3.86774, 
+    3.92017, 3.97382, 4.02388, 4.06629, 4.09921, 4.12302, 4.13973, 
+    4.15158, 4.1602, 4.16684, 4.17153, 4.17428, 4.17503, 4.17365, 
+    4.17011, 4.16454, 4.1572, 4.14828, 4.13792, 4.12622, 4.11329, 
+    4.09934, 4.08432, 4.06839, 4.05181, 4.03479, 4.0177, 4.00064, 
+    3.98351, 3.9661, 3.94809, 3.92913, 3.90887, 3.88703, 3.86381, 
+    3.83995, 3.81634, 3.79357, 3.77165, 3.75041, 3.72952, 3.70873, 
+    3.68796, 3.66707, 3.64591, 3.62403, 3.60136, 3.57803)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.99043, 2.99504, 2.99975, 
+    3.00449, 3.0093, 3.01429, 3.01953, 3.02504, 3.03088, 3.03697, 
+    3.04342, 3.05019, 3.05736, 3.06499, 3.07312, 3.0818, 3.09101, 
+    3.10082, 3.1113, 3.12241, 3.13405, 3.14591, 3.15759, 3.16888, 
+    3.17979, 3.19058, 3.20176, 3.21391, 3.2275, 3.24268, 3.25914, 
+    3.2762, 3.29322, 3.30991, 3.32666, 3.34446, 3.364, 3.38484, 
+    3.40599, 3.42597, 3.44324, 3.45645, 3.46496, 3.46925, 3.47094, 
+    3.47257, 3.47697, 3.48724, 3.5045, 3.52944, 3.56199, 3.60112, 
+    3.64452, 3.68862, 3.72937, 3.76341, 3.78912, 3.80682, 3.81811, 
+    3.82504, 3.82903, 3.83115, 3.83168, 3.83052, 3.82759, 3.82278, 
+    3.81611, 3.8077, 3.79779, 3.78665, 3.77442, 3.76123, 3.74714, 
+    3.73218, 3.71657, 3.70037, 3.68374, 3.66693, 3.65021, 3.63358, 
+    3.61697, 3.6002, 3.58302, 3.56519, 3.54647, 3.52671, 3.50609, 
+    3.4851, 3.46431, 3.44414, 3.42474, 3.40597, 3.38753, 3.36922, 
+    3.35091, 3.33253, 3.31386, 3.29475, 3.27505, 3.25491)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.81424, 2.81871, 2.82315, 
+    2.82763, 2.83221, 2.83694, 2.84185, 2.84701, 2.85241, 2.85812, 
+    2.86408, 2.87033, 2.87695, 2.88398, 2.89144, 2.89943, 2.90789, 
+    2.917, 2.92665, 2.93687, 2.94764, 2.95861, 2.96942, 2.97991, 
+    2.99003, 3.00002, 3.0103, 3.02155, 3.03419, 3.04832, 3.06359, 
+    3.07941, 3.09519, 3.11069, 3.12635, 3.14293, 3.161, 3.18021, 
+    3.19947, 3.21746, 3.23262, 3.24365, 3.24994, 3.25199, 3.25146, 
+    3.25071, 3.25242, 3.25952, 3.27296, 3.29327, 3.32027, 3.35296, 
+    3.38931, 3.42633, 3.46065, 3.48949, 3.51149, 3.52691, 3.53712, 
+    3.54364, 3.54779, 3.55031, 3.55143, 3.55118, 3.54947, 3.54622, 
+    3.54143, 3.5352, 3.52776, 3.51933, 3.51002, 3.49987, 3.48902, 
+    3.47756, 3.46551, 3.453, 3.44012, 3.42721, 3.41444, 3.40185, 
+    3.38937, 3.37678, 3.36384, 3.3503, 3.33593, 3.32062, 3.30451, 
+    3.28804, 3.27177, 3.2561, 3.24113, 3.22668, 3.2125, 3.19839, 
+    3.18422, 3.16992, 3.15522, 3.14002, 3.12421, 3.10789)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.23021, 3.23348, 3.23678, 
+    3.24026, 3.24399, 3.24807, 3.25256, 3.25751, 3.26301, 3.26927, 
+    3.27614, 3.28372, 3.29211, 3.30149, 3.31198, 3.32363, 3.33644, 
+    3.35051, 3.36576, 3.38206, 3.39891, 3.41563, 3.43147, 3.44599, 
+    3.45941, 3.47253, 3.48661, 3.50306, 3.52262, 3.54558, 3.57136, 
+    3.59867, 3.62606, 3.65278, 3.67927, 3.70684, 3.73698, 3.76901, 
+    3.80111, 3.83084, 3.85523, 3.87165, 3.87893, 3.87801, 3.87203, 
+    3.8656, 3.86359, 3.87088, 3.88918, 3.91934, 3.96119, 4.01319, 
+    4.07223, 4.13339, 4.19084, 4.23958, 4.27703, 4.30365, 4.32186, 
+    4.33418, 4.3428, 4.34894, 4.35309, 4.35499, 4.35458, 4.35181, 
+    4.34669, 4.33938, 4.33007, 4.31906, 4.30664, 4.29293, 4.27821, 
+    4.26253, 4.24569, 4.22792, 4.20958, 4.19088, 4.17231, 4.1541, 
+    4.13591, 4.11746, 4.09841, 4.07842, 4.05695, 4.03358, 4.00854, 
+    3.98264, 3.957, 3.93248, 3.90926, 3.88707, 3.86537, 3.84375, 
+    3.82193, 3.79978, 3.77693, 3.75293, 3.72764, 3.70141)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.91042, 2.91224, 2.91419, 
+    2.91639, 2.9189, 2.92185, 2.92538, 2.92956, 2.93438, 2.94, 
+    2.94634, 2.95354, 2.96176, 2.97117, 2.98193, 2.99411, 3.00767, 
+    3.0227, 3.0392, 3.05696, 3.07544, 3.09366, 3.11071, 3.1262, 
+    3.14052, 3.15459, 3.16998, 3.18836, 3.21061, 3.23699, 3.2667, 
+    3.29807, 3.32934, 3.35954, 3.3891, 3.41952, 3.45203, 3.48575, 
+    3.51835, 3.5466, 3.56697, 3.57646, 3.57384, 3.56064, 3.54114, 
+    3.52105, 3.50589, 3.50111, 3.508, 3.52723, 3.55833, 3.59951, 
+    3.64751, 3.69765, 3.74477, 3.78466, 3.81523, 3.8369, 3.85168, 
+    3.86166, 3.86871, 3.87382, 3.87724, 3.87893, 3.87869, 3.87641, 
+    3.87222, 3.8663, 3.85894, 3.85044, 3.84093, 3.83057, 3.81947, 
+    3.80779, 3.79545, 3.78248, 3.76899, 3.7555, 3.74245, 3.72989, 
+    3.71769, 3.70547, 3.69275, 3.67895, 3.66339, 3.64573, 3.62625, 
+    3.60585, 3.58577, 3.5669, 3.54949, 3.53316, 3.51721, 3.50109, 
+    3.48442, 3.46696, 3.44816, 3.42762, 3.40528, 3.38148)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.83385, 2.83706, 2.84025, 
+    2.84353, 2.84703, 2.85084, 2.85502, 2.8596, 2.86457, 2.87001, 
+    2.87591, 2.88228, 2.88928, 2.89703, 2.90555, 2.91488, 2.925, 
+    2.93611, 2.94829, 2.96146, 2.9753, 2.98929, 3.00285, 3.01566, 
+    3.02792, 3.04009, 3.05299, 3.06774, 3.08502, 3.10489, 3.1268, 
+    3.14964, 3.17232, 3.19434, 3.21607, 3.23847, 3.2622, 3.28646, 
+    3.30951, 3.32916, 3.34315, 3.34967, 3.34815, 3.33973, 3.32718, 
+    3.3143, 3.30479, 3.30234, 3.3081, 3.32257, 3.34534, 3.3751, 
+    3.40934, 3.4447, 3.47759, 3.50507, 3.52568, 3.53965, 3.54843, 
+    3.55349, 3.55611, 3.55724, 3.55709, 3.55568, 3.55286, 3.54852, 
+    3.54273, 3.5357, 3.52771, 3.51896, 3.50954, 3.49962, 3.48927, 
+    3.47859, 3.46763, 3.45633, 3.44492, 3.4337, 3.42299, 3.41284, 
+    3.40307, 3.39331, 3.38322, 3.37246, 3.36065, 3.34758, 3.33347, 
+    3.31892, 3.30467, 3.29126, 3.27883, 3.26711, 3.25563, 3.24407, 
+    3.23212, 3.21955, 3.2061, 3.19153, 3.17575, 3.15905)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.78079, 2.78273, 2.78479, 
+    2.78699, 2.78944, 2.79224, 2.7954, 2.79891, 2.80277, 2.807, 
+    2.81182, 2.81717, 2.82306, 2.82959, 2.83679, 2.84468, 2.8533, 
+    2.86262, 2.87271, 2.8832, 2.89354, 2.90344, 2.91275, 2.92164, 
+    2.93048, 2.9397, 2.9499, 2.96168, 2.97516, 2.98992, 3.00535, 
+    3.02091, 3.03647, 3.05247, 3.06965, 3.08851, 3.10913, 3.13084, 
+    3.1522, 3.1719, 3.18879, 3.20247, 3.21348, 3.22333, 3.23417, 
+    3.24829, 3.26777, 3.29427, 3.32934, 3.37279, 3.42346, 3.47874, 
+    3.53449, 3.58595, 3.62923, 3.66246, 3.68608, 3.70215, 3.71302, 
+    3.72047, 3.72559, 3.72863, 3.72971, 3.72866, 3.7254, 3.71993, 
+    3.71236, 3.70294, 3.69193, 3.67951, 3.66585, 3.65104, 3.6352, 
+    3.61843, 3.60092, 3.58283, 3.56431, 3.54564, 3.52687, 3.50802, 
+    3.48889, 3.46939, 3.44925, 3.42825, 3.40631, 3.38358, 3.36051, 
+    3.33764, 3.31542, 3.29395, 3.27314, 3.25278, 3.23275, 3.21297, 
+    3.19336, 3.17388, 3.15438, 3.13476, 3.11509, 3.09565)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.5739, 2.57476, 2.57555, 
+    2.57644, 2.57734, 2.57839, 2.57962, 2.58103, 2.58266, 2.58443, 
+    2.58649, 2.58883, 2.5914, 2.59421, 2.59732, 2.60078, 2.60459, 
+    2.60876, 2.61334, 2.61822, 2.62334, 2.62844, 2.63344, 2.63824, 
+    2.64285, 2.64742, 2.6521, 2.65704, 2.66234, 2.66806, 2.67404, 
+    2.68017, 2.68654, 2.69345, 2.70138, 2.71077, 2.72193, 2.73491, 
+    2.74949, 2.7653, 2.78182, 2.79868, 2.81573, 2.83339, 2.85238, 
+    2.87373, 2.89855, 2.92792, 2.96273, 3.00354, 3.05019, 3.1013, 
+    3.15401, 3.20379, 3.2461, 3.27912, 3.30329, 3.32044, 3.33271, 
+    3.3417, 3.34841, 3.35325, 3.35628, 3.35738, 3.35642, 3.35337, 
+    3.34828, 3.34129, 3.33247, 3.32204, 3.31007, 3.29671, 3.28215, 
+    3.26635, 3.24957, 3.23195, 3.21367, 3.19486, 3.17555, 3.15578, 
+    3.13547, 3.1146, 3.09307, 3.07083, 3.04792, 3.02444, 3.00066, 
+    2.97695, 2.95356, 2.93055, 2.90784, 2.88545, 2.8634, 2.8418, 
+    2.82073, 2.80025, 2.78029, 2.76085, 2.74186, 2.72338)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.19217, 2.19194, 2.19171, 
+    2.19145, 2.19119, 2.19103, 2.19104, 2.1912, 2.19145, 2.19189, 
+    2.19249, 2.19321, 2.1941, 2.19519, 2.19645, 2.19783, 2.1994, 
+    2.20129, 2.20351, 2.20599, 2.20865, 2.21141, 2.21423, 2.21712, 
+    2.22003, 2.22288, 2.22567, 2.22831, 2.23082, 2.23325, 2.23571, 
+    2.23826, 2.24109, 2.24451, 2.24892, 2.25478, 2.26264, 2.27259, 
+    2.28467, 2.29884, 2.31506, 2.33321, 2.35317, 2.37487, 2.39831, 
+    2.42368, 2.45147, 2.48271, 2.51801, 2.55812, 2.60317, 2.6524, 
+    2.70369, 2.75371, 2.79878, 2.83598, 2.86432, 2.88472, 2.89911, 
+    2.90935, 2.91687, 2.92257, 2.92655, 2.92871, 2.92894, 2.92716, 
+    2.92336, 2.91766, 2.91022, 2.90114, 2.89056, 2.87859, 2.86535, 
+    2.85098, 2.8357, 2.81951, 2.80262, 2.78518, 2.76722, 2.74885, 
+    2.73009, 2.71089, 2.69116, 2.67094, 2.65025, 2.62919, 2.60792, 
+    2.5866, 2.56538, 2.54438, 2.52357, 2.50304, 2.4829, 2.46319, 
+    2.44407, 2.4256, 2.40785, 2.39088, 2.37466, 2.35912)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.58878, 2.59457, 2.60029, 
+    2.60591, 2.61148, 2.61697, 2.62238, 2.62785, 2.63335, 2.63882, 
+    2.64424, 2.64962, 2.65506, 2.66056, 2.66607, 2.6716, 2.67711, 
+    2.68272, 2.68843, 2.69427, 2.7002, 2.70614, 2.71207, 2.71795, 
+    2.72379, 2.72961, 2.73536, 2.74099, 2.74655, 2.75209, 2.75767, 
+    2.7633, 2.76904, 2.77504, 2.78156, 2.78887, 2.7974, 2.80725, 
+    2.81838, 2.83072, 2.84419, 2.85869, 2.87409, 2.89035, 2.90752, 
+    2.92574, 2.9454, 2.96739, 2.99218, 3.02032, 3.05209, 3.08718, 
+    3.12441, 3.16167, 3.19643, 3.22642, 3.25031, 3.26818, 3.28097, 
+    3.29008, 3.29665, 3.30141, 3.30466, 3.30636, 3.30645, 3.30488, 
+    3.3017, 3.29701, 3.29088, 3.28342, 3.27475, 3.265, 3.25427, 
+    3.24276, 3.23055, 3.21765, 3.20415, 3.19025, 3.17609, 3.16165, 
+    3.14698, 3.13205, 3.11677, 3.1011, 3.08508, 3.06882, 3.05239, 
+    3.03588, 3.0194, 3.00307, 2.98695, 2.971, 2.95528, 2.93982, 
+    2.92464, 2.9098, 2.89538, 2.88134, 2.86766, 2.85427)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.55331, 2.55364, 2.55392, 
+    2.55425, 2.55462, 2.55506, 2.55561, 2.55631, 2.5572, 2.5583, 
+    2.55962, 2.56117, 2.56288, 2.56475, 2.56686, 2.56923, 2.57182, 
+    2.57468, 2.57791, 2.5814, 2.58511, 2.58896, 2.59287, 2.59678, 
+    2.60064, 2.60439, 2.60815, 2.612, 2.61596, 2.62007, 2.62433, 
+    2.6287, 2.63322, 2.63807, 2.6435, 2.64996, 2.65782, 2.6676, 
+    2.67914, 2.69238, 2.70712, 2.72306, 2.74003, 2.75797, 2.77697, 
+    2.79738, 2.81979, 2.84492, 2.87412, 2.90812, 2.94749, 2.99206, 
+    3.0404, 3.08953, 3.13562, 3.17516, 3.20611, 3.22841, 3.24358, 
+    3.2537, 3.2604, 3.26473, 3.26718, 3.26783, 3.26661, 3.2634, 
+    3.25812, 3.25085, 3.24179, 3.23113, 3.21897, 3.20545, 3.19075, 
+    3.17492, 3.15814, 3.1405, 3.12215, 3.10324, 3.08394, 3.06434, 
+    3.04444, 3.02421, 3.00359, 2.98251, 2.96102, 2.93911, 2.91684, 
+    2.89442, 2.87211, 2.85013, 2.8285, 2.80723, 2.7863, 2.76575, 
+    2.74566, 2.72617, 2.70738, 2.68926, 2.67178, 2.65484)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.84297, 2.84677, 2.85048, 
+    2.85414, 2.85778, 2.86148, 2.86523, 2.86905, 2.87294, 2.87691, 
+    2.88097, 2.8851, 2.8893, 2.8936, 2.89804, 2.90262, 2.90732, 
+    2.91215, 2.91715, 2.92233, 2.92762, 2.9329, 2.93806, 2.94304, 
+    2.94785, 2.95245, 2.95692, 2.96132, 2.96584, 2.97054, 2.97534, 
+    2.98007, 2.98474, 2.98963, 2.99524, 3.00201, 3.01021, 3.01991, 
+    3.03106, 3.04338, 3.05652, 3.07003, 3.08363, 3.09737, 3.11169, 
+    3.12738, 3.14542, 3.16678, 3.19235, 3.22292, 3.2589, 3.29947, 
+    3.34237, 3.38394, 3.42042, 3.44955, 3.4711, 3.48657, 3.49787, 
+    3.50652, 3.51331, 3.51866, 3.52265, 3.52516, 3.52606, 3.52521, 
+    3.52259, 3.51828, 3.51242, 3.50509, 3.49641, 3.4864, 3.47515, 
+    3.46277, 3.44931, 3.43489, 3.41964, 3.40375, 3.38733, 3.37038, 
+    3.35289, 3.33483, 3.31614, 3.29673, 3.27654, 3.25559, 3.23406, 
+    3.21229, 3.1906, 3.1691, 3.14778, 3.12655, 3.10541, 3.08446, 
+    3.06387, 3.04372, 3.02398, 3.00454, 2.98533, 2.96638)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.48686, 2.4818, 2.47689, 
+    2.47213, 2.46752, 2.46308, 2.4589, 2.45508, 2.45155, 2.44836, 
+    2.44548, 2.44293, 2.44076, 2.43899, 2.43762, 2.43655, 2.43582, 
+    2.43553, 2.43571, 2.43627, 2.43717, 2.43831, 2.43959, 2.44096, 
+    2.44245, 2.44407, 2.4459, 2.44811, 2.45097, 2.45449, 2.45865, 
+    2.46335, 2.46851, 2.47431, 2.48121, 2.48979, 2.50071, 2.51378, 
+    2.52872, 2.5451, 2.56244, 2.58025, 2.59813, 2.61604, 2.63445, 
+    2.65429, 2.67678, 2.70365, 2.73566, 2.77351, 2.81731, 2.8662, 
+    2.91796, 2.96917, 3.01591, 3.05497, 3.08492, 3.10651, 3.12157, 
+    3.13206, 3.13961, 3.14501, 3.14855, 3.15014, 3.14973, 3.14727, 
+    3.14271, 3.13612, 3.12767, 3.11755, 3.10597, 3.09305, 3.07886, 
+    3.06355, 3.04721, 3.03, 3.01201, 2.99357, 2.97474, 2.95553, 
+    2.93594, 2.91591, 2.89548, 2.87461, 2.85321, 2.83133, 2.80914, 
+    2.78691, 2.76492, 2.74336, 2.72234, 2.70186, 2.68188, 2.66234, 
+    2.64331, 2.62492, 2.60712, 2.58987, 2.57305, 2.55666)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.418, 2.41326, 2.40866, 
+    2.40415, 2.39977, 2.3956, 2.39173, 2.38817, 2.38485, 2.38189, 
+    2.37929, 2.37703, 2.37512, 2.37357, 2.3724, 2.37161, 2.37123, 
+    2.37129, 2.3718, 2.37265, 2.37383, 2.37527, 2.37687, 2.37856, 
+    2.38034, 2.38217, 2.38433, 2.38701, 2.39044, 2.39472, 2.39974, 
+    2.4053, 2.41134, 2.41802, 2.42572, 2.43506, 2.44666, 2.46033, 
+    2.47571, 2.49226, 2.50931, 2.52622, 2.54257, 2.55841, 2.5744, 
+    2.59162, 2.61153, 2.63592, 2.66565, 2.70138, 2.74318, 2.79008, 
+    2.83987, 2.88918, 2.93417, 2.97177, 3.00072, 3.02165, 3.03633, 
+    3.04658, 3.05397, 3.05934, 3.06288, 3.06464, 3.06441, 3.0621, 
+    3.05772, 3.05148, 3.04349, 3.03385, 3.02278, 3.0104, 2.99686, 
+    2.98221, 2.96656, 2.95007, 2.93287, 2.91522, 2.8971, 2.87873, 
+    2.85994, 2.8408, 2.82128, 2.80131, 2.78077, 2.75969, 2.73821, 
+    2.71668, 2.69547, 2.67474, 2.65457, 2.63493, 2.61572, 2.59702, 
+    2.57887, 2.56125, 2.54406, 2.52722, 2.51069, 2.4946)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.23632, 2.23328, 2.23031, 
+    2.22744, 2.22472, 2.22221, 2.22, 2.21809, 2.21649, 2.21521, 
+    2.21429, 2.21374, 2.21362, 2.21397, 2.21489, 2.21635, 2.21837, 
+    2.22095, 2.22415, 2.22791, 2.23199, 2.23603, 2.23978, 2.24319, 
+    2.24646, 2.24984, 2.25364, 2.25823, 2.26398, 2.27089, 2.27864, 
+    2.28663, 2.29453, 2.3026, 2.31158, 2.3222, 2.3348, 2.34926, 
+    2.36514, 2.3816, 2.39766, 2.41241, 2.42555, 2.43748, 2.44942, 
+    2.46303, 2.47993, 2.50152, 2.52877, 2.56248, 2.60301, 2.64947, 
+    2.69953, 2.74941, 2.7948, 2.83264, 2.86184, 2.88333, 2.89896, 
+    2.91041, 2.91892, 2.92524, 2.92962, 2.932, 2.93225, 2.93027, 
+    2.92613, 2.91999, 2.91199, 2.90235, 2.89126, 2.87884, 2.86526, 
+    2.85061, 2.83497, 2.81847, 2.80131, 2.78378, 2.76605, 2.74817, 
+    2.73009, 2.71174, 2.69305, 2.67383, 2.65383, 2.63304, 2.61173, 
+    2.59043, 2.56961, 2.54949, 2.53004, 2.51109, 2.49255, 2.47444, 
+    2.45685, 2.43978, 2.42305, 2.40649, 2.39006, 2.37389)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.93533, 2.93565, 2.93599, 
+    2.93649, 2.93722, 2.93821, 2.93953, 2.94132, 2.94357, 2.94635, 
+    2.94968, 2.95352, 2.95794, 2.96301, 2.96881, 2.97537, 2.98274, 
+    2.99098, 3.00009, 3.00997, 3.02037, 3.03085, 3.04103, 3.0507, 
+    3.05991, 3.06903, 3.07863, 3.0894, 3.10171, 3.11574, 3.13118, 
+    3.14747, 3.16404, 3.18072, 3.19805, 3.21697, 3.23843, 3.26218, 
+    3.28736, 3.31266, 3.33668, 3.35819, 3.37658, 3.39222, 3.40656, 
+    3.42199, 3.44117, 3.46732, 3.5017, 3.5453, 3.5983, 3.65964, 
+    3.7265, 3.79415, 3.85683, 3.90947, 3.94932, 3.97701, 3.99516, 
+    4.00683, 4.01428, 4.01875, 4.0209, 4.02072, 4.01795, 4.01255, 
+    4.00451, 3.994, 3.98126, 3.96659, 3.95029, 3.93246, 3.91326, 
+    3.89286, 3.87148, 3.84928, 3.82639, 3.80305, 3.77962, 3.75628, 
+    3.73285, 3.70912, 3.68485, 3.65989, 3.63403, 3.60723, 3.57968, 
+    3.55181, 3.52422, 3.49743, 3.47158, 3.44649, 3.42192, 3.39776, 
+    3.37404, 3.35068, 3.32751, 3.30448, 3.28137, 3.25845)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.10191, 3.10588, 3.10988, 
+    3.11395, 3.11808, 3.12238, 3.12691, 3.13173, 3.13697, 3.14254, 
+    3.14837, 3.15457, 3.16129, 3.16859, 3.17648, 3.1849, 3.19382, 
+    3.20347, 3.21397, 3.22524, 3.23709, 3.24932, 3.26161, 3.27361, 
+    3.28507, 3.29607, 3.30708, 3.31893, 3.33226, 3.34733, 3.36388, 
+    3.38128, 3.39886, 3.41633, 3.43401, 3.45262, 3.47311, 3.49598, 
+    3.52025, 3.54434, 3.56642, 3.58483, 3.59843, 3.60715, 3.61224, 
+    3.61609, 3.62177, 3.63234, 3.65086, 3.67805, 3.71405, 3.7581, 
+    3.80814, 3.86049, 3.91054, 3.954, 3.98839, 4.01361, 4.03118, 
+    4.04332, 4.05181, 4.05775, 4.06198, 4.0643, 4.06478, 4.06308, 
+    4.05928, 4.05343, 4.04572, 4.03645, 4.02578, 4.01384, 4.00075, 
+    3.98658, 3.9715, 3.95542, 3.93876, 3.92167, 3.90444, 3.88721, 
+    3.86988, 3.85248, 3.83478, 3.81636, 3.79682, 3.77595, 3.75396, 
+    3.73134, 3.70873, 3.68666, 3.66544, 3.64501, 3.62509, 3.60538, 
+    3.58573, 3.56619, 3.5466, 3.52658, 3.50584, 3.48451)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(4.21506, 4.22527, 4.23556, 
+    4.24588, 4.25643, 4.26727, 4.27837, 4.28978, 4.3015, 4.31379, 
+    4.3266, 4.33978, 4.35348, 4.36789, 4.38311, 4.39911, 4.41585, 
+    4.43347, 4.45195, 4.47157, 4.49199, 4.5127, 4.53306, 4.55264, 
+    4.57153, 4.59008, 4.60894, 4.62943, 4.65202, 4.67684, 4.7032, 
+    4.73033, 4.75771, 4.78492, 4.81184, 4.83944, 4.86814, 4.89901, 
+    4.93018, 4.95934, 4.98424, 5.00296, 5.01484, 5.02054, 5.02147, 
+    5.02169, 5.02523, 5.03657, 5.05663, 5.08597, 5.12523, 5.17332, 
+    5.22716, 5.28189, 5.33227, 5.37438, 5.40621, 5.42798, 5.44268, 
+    5.45358, 5.46192, 5.46703, 5.47086, 5.47339, 5.47374, 5.47094, 
+    5.46518, 5.45833, 5.45074, 5.44102, 5.4293, 5.41587, 5.40228, 
+    5.38922, 5.37368, 5.3566, 5.33971, 5.32278, 5.30455, 5.2867, 
+    5.27026, 5.25309, 5.23453, 5.21448, 5.1942, 5.17313, 5.14989, 
+    5.12529, 5.10037, 5.07625, 5.05386, 5.0324, 5.01149, 4.98981, 
+    4.96771, 4.94535, 4.92276, 4.89965, 4.87567, 4.85102)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.89064, 2.89244, 2.89438, 
+    2.89659, 2.89913, 2.90211, 2.90566, 2.90982, 2.91468, 2.92031, 
+    2.92672, 2.93393, 2.94215, 2.95162, 2.96246, 2.97468, 2.98837, 
+    3.00351, 3.02017, 3.03799, 3.05637, 3.07442, 3.09126, 3.10649, 
+    3.12049, 3.13426, 3.14938, 3.1674, 3.18931, 3.21534, 3.24464, 
+    3.27559, 3.30644, 3.33614, 3.36509, 3.39483, 3.42658, 3.45948, 
+    3.49127, 3.51876, 3.53835, 3.547, 3.5435, 3.52941, 3.50883, 
+    3.48751, 3.47102, 3.46452, 3.46957, 3.48671, 3.51552, 3.55417, 
+    3.59944, 3.64683, 3.69145, 3.72932, 3.75847, 3.77923, 3.79343, 
+    3.80307, 3.80985, 3.81487, 3.81816, 3.81992, 3.81981, 3.81779, 
+    3.81395, 3.80847, 3.80162, 3.79364, 3.78474, 3.77509, 3.7647, 
+    3.7537, 3.74201, 3.72972, 3.71702, 3.70437, 3.69211, 3.68038, 
+    3.66899, 3.65755, 3.64566, 3.63274, 3.6181, 3.60131, 3.58258, 
+    3.56287, 3.5435, 3.52541, 3.50878, 3.49314, 3.47783, 3.46234, 
+    3.44632, 3.42949, 3.41136, 3.39146, 3.36959, 3.34622)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.63719, 3.64846, 3.65957, 
+    3.67057, 3.68146, 3.69229, 3.70307, 3.71379, 3.72457, 3.73542, 
+    3.74623, 3.75713, 3.76805, 3.77902, 3.79008, 3.80124, 3.81262, 
+    3.82412, 3.8358, 3.84772, 3.85974, 3.87184, 3.88394, 3.89596, 
+    3.90781, 3.91942, 3.93098, 3.94257, 3.95437, 3.96637, 3.9785, 
+    3.99067, 4.00286, 4.01513, 4.02787, 4.04137, 4.05612, 4.07219, 
+    4.08947, 4.10781, 4.12676, 4.14594, 4.16516, 4.18443, 4.20405, 
+    4.22462, 4.24696, 4.27225, 4.30128, 4.33467, 4.37272, 4.41516, 
+    4.46056, 4.50655, 4.55016, 4.58851, 4.61978, 4.64389, 4.6622, 
+    4.6758, 4.68574, 4.69328, 4.69888, 4.70273, 4.70457, 4.70444, 
+    4.70241, 4.69832, 4.69216, 4.68431, 4.67511, 4.66479, 4.65323, 
+    4.64045, 4.62661, 4.61193, 4.59671, 4.58119, 4.5655, 4.54925, 
+    4.53268, 4.51576, 4.49862, 4.48107, 4.46308, 4.44466, 4.42587, 
+    4.4069, 4.38806, 4.36966, 4.35176, 4.33413, 4.31666, 4.29959, 
+    4.28297, 4.26668, 4.25065, 4.23491, 4.21959, 4.20452)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.88841, 2.89612, 2.90365, 
+    2.91112, 2.91849, 2.9258, 2.93305, 2.94026, 2.94758, 2.95479, 
+    2.96199, 2.96915, 2.97629, 2.98345, 2.99066, 2.99786, 3.00509, 
+    3.01239, 3.01979, 3.02726, 3.03478, 3.04228, 3.04975, 3.05717, 
+    3.0645, 3.07174, 3.07889, 3.08585, 3.09261, 3.09925, 3.10582, 
+    3.1123, 3.11879, 3.12548, 3.13253, 3.14018, 3.14885, 3.15851, 
+    3.16929, 3.18116, 3.19405, 3.20791, 3.22266, 3.23827, 3.25478, 
+    3.27232, 3.29121, 3.31209, 3.33552, 3.36191, 3.39153, 3.42403, 
+    3.45826, 3.49226, 3.52367, 3.55044, 3.57162, 3.58746, 3.59899, 
+    3.60745, 3.61372, 3.61844, 3.62181, 3.62383, 3.62442, 3.62355, 
+    3.6212, 3.6174, 3.61231, 3.60604, 3.59863, 3.59021, 3.58088, 
+    3.57073, 3.55985, 3.54833, 3.53635, 3.52394, 3.51121, 3.49822, 
+    3.48495, 3.47135, 3.45745, 3.44325, 3.42874, 3.41397, 3.39902, 
+    3.38402, 3.36908, 3.35426, 3.3396, 3.3251, 3.31075, 3.29666, 
+    3.28288, 3.26947, 3.25639, 3.24368, 3.23138, 3.21932)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.2865, 2.28699, 2.28749, 
+    2.28799, 2.28851, 2.28908, 2.28977, 2.29066, 2.29165, 2.29279, 
+    2.2941, 2.29556, 2.29717, 2.29893, 2.30087, 2.30301, 2.3054, 
+    2.30801, 2.31098, 2.3142, 2.31759, 2.32107, 2.32462, 2.32821, 
+    2.33184, 2.33549, 2.33914, 2.34275, 2.34643, 2.35016, 2.35399, 
+    2.35796, 2.36215, 2.36678, 2.37228, 2.37903, 2.38759, 2.39795, 
+    2.41014, 2.42413, 2.43975, 2.45682, 2.4752, 2.49481, 2.51578, 
+    2.53837, 2.56322, 2.59134, 2.62334, 2.6599, 2.70126, 2.74683, 
+    2.79483, 2.84228, 2.88563, 2.92194, 2.94992, 2.97009, 2.98427, 
+    2.9942, 3.00128, 3.00649, 3.00995, 3.01171, 3.01165, 3.00967, 
+    3.00581, 3.00016, 2.99281, 2.9839, 2.97368, 2.96225, 2.94969, 
+    2.93613, 2.9217, 2.90655, 2.89077, 2.87453, 2.85801, 2.84116, 
+    2.82403, 2.80653, 2.78868, 2.77049, 2.75187, 2.73291, 2.7137, 
+    2.69445, 2.67542, 2.65667, 2.63822, 2.62009, 2.60229, 2.5849, 
+    2.56798, 2.55165, 2.53597, 2.52102, 2.50662, 2.49281)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.62979, 2.632, 2.63413, 
+    2.63626, 2.63846, 2.64072, 2.64303, 2.64548, 2.648, 2.65065, 
+    2.65346, 2.6564, 2.65947, 2.66264, 2.66592, 2.6694, 2.67302, 
+    2.67689, 2.68095, 2.68514, 2.68946, 2.69387, 2.69828, 2.70267, 
+    2.70697, 2.71114, 2.71522, 2.71923, 2.72323, 2.72725, 2.73128, 
+    2.73533, 2.73948, 2.74393, 2.74898, 2.755, 2.76246, 2.77138, 
+    2.78171, 2.79331, 2.806, 2.81959, 2.83391, 2.84895, 2.86486, 
+    2.88209, 2.90118, 2.92336, 2.94913, 2.97917, 3.01363, 3.0519, 
+    3.09222, 3.13179, 3.16746, 3.19675, 3.21871, 3.23405, 3.24441, 
+    3.25133, 3.25598, 3.25903, 3.26062, 3.26066, 3.25909, 3.25586, 
+    3.25095, 3.24435, 3.23616, 3.22654, 3.2156, 3.20347, 3.19022, 
+    3.17585, 3.16056, 3.14436, 3.12748, 3.11004, 3.09214, 3.07381, 
+    3.05504, 3.03578, 3.01601, 2.99572, 2.97493, 2.95364, 2.93202, 
+    2.91024, 2.8885, 2.86696, 2.84566, 2.82459, 2.80375, 2.78326, 
+    2.7632, 2.74361, 2.72461, 2.70611, 2.6881, 2.67051)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.61033, 2.61247, 2.61469, 
+    2.61696, 2.61926, 2.62165, 2.62417, 2.62684, 2.62977, 2.6329, 
+    2.63616, 2.6396, 2.64323, 2.64709, 2.65115, 2.65541, 2.65986, 
+    2.66458, 2.66962, 2.67491, 2.68041, 2.68605, 2.69175, 2.6974, 
+    2.70302, 2.70861, 2.71415, 2.71969, 2.72523, 2.73082, 2.73648, 
+    2.74224, 2.74813, 2.75434, 2.76115, 2.76893, 2.7783, 2.78926, 
+    2.80179, 2.81573, 2.83079, 2.84675, 2.86347, 2.88089, 2.89914, 
+    2.91863, 2.94004, 2.96454, 2.99285, 3.02579, 3.0637, 3.10612, 
+    3.15131, 3.19623, 3.23717, 3.27093, 3.29592, 3.31265, 3.32292, 
+    3.32865, 3.33137, 3.33212, 3.33113, 3.32841, 3.32376, 3.31713, 
+    3.30857, 3.29814, 3.28594, 3.27217, 3.257, 3.24055, 3.22289, 
+    3.2042, 3.18459, 3.16427, 3.14326, 3.1218, 3.10003, 3.07788, 
+    3.05545, 3.03269, 3.00952, 2.98597, 2.962, 2.93764, 2.91304, 
+    2.8884, 2.86396, 2.83988, 2.8162, 2.79291, 2.77001, 2.74757, 
+    2.72574, 2.70455, 2.68405, 2.6642, 2.645, 2.62642)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.2863, 2.28689, 2.28745, 
+    2.288, 2.28864, 2.2894, 2.29022, 2.29114, 2.29227, 2.29358, 
+    2.29504, 2.29669, 2.29849, 2.30044, 2.30259, 2.30498, 2.30761, 
+    2.31047, 2.31365, 2.31709, 2.3207, 2.32442, 2.32817, 2.33185, 
+    2.33547, 2.33904, 2.34265, 2.3463, 2.35009, 2.35395, 2.35791, 
+    2.36202, 2.36636, 2.37116, 2.37677, 2.38359, 2.39209, 2.40235, 
+    2.4143, 2.42779, 2.4426, 2.45849, 2.47529, 2.49301, 2.51186, 
+    2.53232, 2.55503, 2.58117, 2.61134, 2.64615, 2.6858, 2.72962, 
+    2.77564, 2.82077, 2.86151, 2.89507, 2.92038, 2.93819, 2.95021, 
+    2.95837, 2.96387, 2.96754, 2.96964, 2.97012, 2.96892, 2.9659, 
+    2.961, 2.95439, 2.94621, 2.93656, 2.92568, 2.91365, 2.90054, 
+    2.88649, 2.87157, 2.85599, 2.8398, 2.82325, 2.80637, 2.78922, 
+    2.77176, 2.75396, 2.73582, 2.7173, 2.69838, 2.67907, 2.65953, 
+    2.63997, 2.62056, 2.60142, 2.58261, 2.56414, 2.54602, 2.52828, 
+    2.511, 2.49429, 2.47822, 2.46271, 2.44769, 2.4332)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.51682, 2.51816, 2.51946, 
+    2.52081, 2.52229, 2.52386, 2.52555, 2.52742, 2.52948, 2.53174, 
+    2.5342, 2.53684, 2.53965, 2.54264, 2.54581, 2.54917, 2.55277, 
+    2.55667, 2.56081, 2.56517, 2.56972, 2.57444, 2.57923, 2.58401, 
+    2.58875, 2.59345, 2.59806, 2.60278, 2.60749, 2.61228, 2.61713, 
+    2.62204, 2.62704, 2.6323, 2.63806, 2.64474, 2.65274, 2.66203, 
+    2.67261, 2.68428, 2.69688, 2.71017, 2.72394, 2.73819, 2.75304, 
+    2.76891, 2.78636, 2.8066, 2.83018, 2.85781, 2.88973, 2.92544, 
+    2.96338, 3.00088, 3.03475, 3.06225, 3.08218, 3.09498, 3.10222, 
+    3.1055, 3.10623, 3.10513, 3.1026, 3.09849, 3.09269, 3.08513, 
+    3.07583, 3.06492, 3.05254, 3.03877, 3.02377, 3.00762, 2.99043, 
+    2.97238, 2.95357, 2.93408, 2.91399, 2.89355, 2.87279, 2.85179, 
+    2.83056, 2.80904, 2.78714, 2.7649, 2.7423, 2.71938, 2.69628, 
+    2.67318, 2.65026, 2.62766, 2.60541, 2.58353, 2.56208, 2.54105, 
+    2.52051, 2.50057, 2.48125, 2.46252, 2.44439, 2.42677)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.18439, 2.18363, 2.18281, 
+    2.18202, 2.1813, 2.1807, 2.18027, 2.17998, 2.17983, 2.17997, 
+    2.18033, 2.18091, 2.1817, 2.18273, 2.184, 2.18551, 2.18734, 
+    2.18955, 2.1921, 2.19491, 2.19796, 2.20118, 2.20445, 2.20766, 
+    2.21081, 2.21399, 2.21724, 2.22062, 2.22423, 2.22807, 2.23214, 
+    2.23644, 2.24103, 2.24617, 2.25218, 2.25953, 2.26885, 2.28014, 
+    2.29341, 2.30851, 2.32525, 2.34338, 2.36269, 2.38312, 2.40488, 
+    2.4283, 2.45402, 2.48334, 2.51693, 2.55554, 2.59955, 2.64853, 
+    2.70088, 2.75353, 2.80248, 2.84417, 2.87667, 2.90023, 2.91667, 
+    2.92797, 2.93595, 2.94161, 2.94539, 2.94719, 2.94696, 2.94469, 
+    2.94033, 2.93386, 2.92547, 2.91537, 2.90373, 2.89071, 2.87637, 
+    2.86097, 2.84455, 2.82725, 2.80925, 2.79073, 2.77179, 2.75249, 
+    2.73288, 2.7129, 2.6925, 2.67164, 2.65036, 2.62868, 2.6067, 
+    2.58463, 2.56272, 2.54114, 2.52, 2.49925, 2.4789, 2.45895, 
+    2.43959, 2.42091, 2.40297, 2.38574, 2.36915, 2.3532)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.50203, 2.50432, 2.50668, 
+    2.50898, 2.51126, 2.51357, 2.51599, 2.51853, 2.52127, 2.52408, 
+    2.52702, 2.53004, 2.53321, 2.53654, 2.53999, 2.54362, 2.54737, 
+    2.55137, 2.55555, 2.55997, 2.56457, 2.56925, 2.57389, 2.57842, 
+    2.58289, 2.58734, 2.59172, 2.59607, 2.60041, 2.6048, 2.60925, 
+    2.61382, 2.61853, 2.62351, 2.62903, 2.63549, 2.64341, 2.6528, 
+    2.66363, 2.67575, 2.68893, 2.70291, 2.71754, 2.73282, 2.74896, 
+    2.76644, 2.78589, 2.8084, 2.83457, 2.86514, 2.90035, 2.93959, 
+    2.98124, 3.02253, 3.0602, 3.09151, 3.11519, 3.13183, 3.14299, 
+    3.1504, 3.15522, 3.15832, 3.15992, 3.16, 3.15844, 3.15513, 
+    3.15004, 3.14323, 3.13487, 3.12508, 3.11399, 3.10168, 3.0882, 
+    3.07371, 3.05828, 3.04208, 3.02525, 3.00788, 2.99004, 2.97182, 
+    2.95326, 2.93431, 2.91489, 2.89498, 2.87456, 2.85366, 2.83242, 
+    2.81109, 2.78988, 2.76888, 2.74815, 2.72767, 2.70745, 2.68761, 
+    2.66817, 2.64924, 2.63083, 2.61296, 2.5956, 2.57864)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.4291, 2.4294, 2.42976, 
+    2.43004, 2.43036, 2.43077, 2.43133, 2.43208, 2.43303, 2.43417, 
+    2.43542, 2.43689, 2.43855, 2.44042, 2.44251, 2.44483, 2.44739, 
+    2.45026, 2.45354, 2.45707, 2.46077, 2.46456, 2.46834, 2.47205, 
+    2.47572, 2.47926, 2.48286, 2.48652, 2.4904, 2.49449, 2.49873, 
+    2.50312, 2.50773, 2.51279, 2.51866, 2.52578, 2.53472, 2.54547, 
+    2.55795, 2.57189, 2.58704, 2.60313, 2.61998, 2.63764, 2.65641, 
+    2.6768, 2.69963, 2.7262, 2.75717, 2.7932, 2.83454, 2.8804, 
+    2.92863, 2.97596, 3.01874, 3.05407, 3.08084, 3.09987, 3.113, 
+    3.122, 3.12836, 3.13289, 3.13581, 3.13709, 3.13645, 3.13386, 
+    3.12936, 3.12302, 3.115, 3.10544, 3.09448, 3.08229, 3.06887, 
+    3.05428, 3.03878, 3.02252, 3.00554, 2.98807, 2.97019, 2.95193, 
+    2.9333, 2.91424, 2.89476, 2.87479, 2.85428, 2.83331, 2.81203, 
+    2.79068, 2.76945, 2.74849, 2.72789, 2.70764, 2.68773, 2.66817, 
+    2.64906, 2.63058, 2.61273, 2.59548, 2.57871, 2.56249)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.09, 3.09225, 3.09453, 
+    3.09688, 3.09937, 3.102, 3.10473, 3.10761, 3.11074, 3.1142, 
+    3.11784, 3.12168, 3.1257, 3.12996, 3.13452, 3.13937, 3.1445, 
+    3.15002, 3.15595, 3.16218, 3.16868, 3.1753, 3.18191, 3.18843, 
+    3.19481, 3.2011, 3.20738, 3.21375, 3.22031, 3.22705, 3.23392, 
+    3.24088, 3.24794, 3.25528, 3.26338, 3.27265, 3.28367, 3.29635, 
+    3.31065, 3.32625, 3.34284, 3.36007, 3.37773, 3.39585, 3.4148, 
+    3.43519, 3.45786, 3.48443, 3.51545, 3.55194, 3.59424, 3.64167, 
+    3.69207, 3.74184, 3.78673, 3.82318, 3.84948, 3.8664, 3.87624, 
+    3.8811, 3.88259, 3.88168, 3.87882, 3.87401, 3.86708, 3.85788, 
+    3.84643, 3.83287, 3.81747, 3.80043, 3.78188, 3.76203, 3.74093, 
+    3.7188, 3.69577, 3.67199, 3.64765, 3.62289, 3.59793, 3.57275, 
+    3.54739, 3.52168, 3.4956, 3.46907, 3.4421, 3.41476, 3.38717, 
+    3.35959, 3.33227, 3.30534, 3.27887, 3.25287, 3.22735, 3.20233, 
+    3.17789, 3.15413, 3.13105, 3.10859, 3.08674, 3.06546)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.38922, 3.39664, 3.40399, 
+    3.4113, 3.41858, 3.42588, 3.43325, 3.44067, 3.44816, 3.45586, 
+    3.4637, 3.47156, 3.47952, 3.48763, 3.49592, 3.50443, 3.51321, 
+    3.52217, 3.53144, 3.54099, 3.55075, 3.5606, 3.57043, 3.58016, 
+    3.58972, 3.59919, 3.60859, 3.61796, 3.62743, 3.63709, 3.6469, 
+    3.65674, 3.66661, 3.67669, 3.68728, 3.69897, 3.71219, 3.72697, 
+    3.74327, 3.76068, 3.77885, 3.79743, 3.81616, 3.83508, 3.85458, 
+    3.87527, 3.89808, 3.9245, 3.95524, 3.99115, 4.03248, 4.07853, 
+    4.12756, 4.17656, 4.22181, 4.26014, 4.28994, 4.31172, 4.3271, 
+    4.33793, 4.34572, 4.35141, 4.35524, 4.35707, 4.35688, 4.35457, 
+    4.35027, 4.3441, 4.33605, 4.32624, 4.3149, 4.30218, 4.28825, 
+    4.27321, 4.25709, 4.24012, 4.22238, 4.20434, 4.1858, 4.16696, 
+    4.1477, 4.12807, 4.10804, 4.08755, 4.06649, 4.04482, 4.02274, 
+    4.00052, 3.9784, 3.9566, 3.93521, 3.91414, 3.89337, 3.87291, 
+    3.85288, 3.83339, 3.81432, 3.79572, 3.77751, 3.75961)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.44674, 2.44683, 2.44694, 
+    2.44709, 2.44732, 2.44766, 2.44818, 2.44887, 2.44969, 2.45081, 
+    2.45209, 2.45361, 2.45537, 2.45737, 2.45963, 2.46221, 2.46509, 
+    2.46836, 2.4719, 2.47569, 2.4797, 2.48376, 2.48775, 2.49162, 
+    2.49532, 2.49894, 2.50273, 2.50677, 2.51116, 2.51595, 2.5211, 
+    2.5265, 2.53211, 2.53813, 2.54496, 2.55301, 2.56287, 2.57445, 
+    2.5876, 2.60204, 2.61732, 2.63304, 2.64899, 2.66526, 2.68227, 
+    2.70081, 2.72184, 2.74689, 2.77661, 2.81168, 2.85228, 2.89764, 
+    2.94563, 2.99295, 3.03583, 3.07123, 3.0979, 3.11653, 3.12914, 
+    3.13759, 3.14327, 3.14709, 3.14926, 3.14976, 3.14843, 3.14514, 
+    3.13993, 3.13287, 3.12412, 3.11384, 3.10215, 3.0892, 3.07511, 
+    3.05993, 3.04379, 3.02681, 3.0091, 2.99087, 2.97226, 2.95328, 
+    2.93395, 2.91419, 2.89395, 2.8732, 2.85189, 2.83008, 2.80789, 
+    2.78554, 2.76334, 2.74148, 2.72002, 2.69896, 2.67823, 2.65789, 
+    2.63799, 2.61861, 2.5998, 2.58157, 2.56376, 2.5464)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.45278, 3.46285, 3.47272, 
+    3.48244, 3.49209, 3.5017, 3.51128, 3.52089, 3.53049, 3.54013, 
+    3.54981, 3.55954, 3.5693, 3.57915, 3.58915, 3.59927, 3.60952, 
+    3.61988, 3.63045, 3.64124, 3.6522, 3.66323, 3.67419, 3.68496, 
+    3.69556, 3.70608, 3.71658, 3.72711, 3.73775, 3.74853, 3.75946, 
+    3.77049, 3.78154, 3.79266, 3.80418, 3.81649, 3.83008, 3.84495, 
+    3.86101, 3.87794, 3.89531, 3.91284, 3.93043, 3.94809, 3.96609, 
+    3.98501, 4.00569, 4.02936, 4.05667, 4.08829, 4.12454, 4.16489, 
+    4.20784, 4.25102, 4.29146, 4.32648, 4.35456, 4.3758, 4.39156, 
+    4.4033, 4.41206, 4.41871, 4.4236, 4.4268, 4.42832, 4.42794, 
+    4.42558, 4.42143, 4.41569, 4.40847, 4.39974, 4.38971, 4.37863, 
+    4.36678, 4.35397, 4.34035, 4.32614, 4.31131, 4.29624, 4.28092, 
+    4.26531, 4.24938, 4.23316, 4.21653, 4.19934, 4.18164, 4.16362, 
+    4.14549, 4.12746, 4.10972, 4.09232, 4.07519, 4.05834, 4.04174, 
+    4.02546, 4.00952, 3.99395, 3.97875, 3.96379, 3.94896)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.61809, 2.61982, 2.62147, 
+    2.62313, 2.6248, 2.62654, 2.62843, 2.63046, 2.63271, 2.63515, 
+    2.63774, 2.64052, 2.64352, 2.64676, 2.65025, 2.65403, 2.65815, 
+    2.66259, 2.66738, 2.67252, 2.67784, 2.68316, 2.68832, 2.69327, 
+    2.69808, 2.7028, 2.70766, 2.71279, 2.71837, 2.72433, 2.73063, 
+    2.73719, 2.74394, 2.75094, 2.7586, 2.76734, 2.77777, 2.7898, 
+    2.80322, 2.81769, 2.83273, 2.84796, 2.86315, 2.87844, 2.89427, 
+    2.91152, 2.93114, 2.95474, 2.98297, 3.01649, 3.05545, 3.09915, 
+    3.14565, 3.1918, 3.23396, 3.26917, 3.29612, 3.31542, 3.32879, 
+    3.33812, 3.34477, 3.34956, 3.35275, 3.35426, 3.35403, 3.35191, 
+    3.34791, 3.34211, 3.33465, 3.32573, 3.31554, 3.30413, 3.29156, 
+    3.27797, 3.26343, 3.24815, 3.2322, 3.21584, 3.19911, 3.1821, 
+    3.16477, 3.14708, 3.12894, 3.1103, 3.09111, 3.0714, 3.05129, 
+    3.031, 3.01083, 2.99102, 2.97164, 2.95259, 2.93384, 2.9154, 
+    2.89734, 2.87968, 2.8625, 2.84578, 2.82941, 2.81338)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.76153, 2.76213, 2.7628, 
+    2.76346, 2.76422, 2.76512, 2.76617, 2.7674, 2.76882, 2.77056, 
+    2.77252, 2.77478, 2.77732, 2.78015, 2.78333, 2.78688, 2.79082, 
+    2.7952, 2.80007, 2.80528, 2.81074, 2.81628, 2.82171, 2.82695, 
+    2.83203, 2.83702, 2.84224, 2.84787, 2.85403, 2.86083, 2.86817, 
+    2.87587, 2.88384, 2.89214, 2.90118, 2.91152, 2.92383, 2.93798, 
+    2.95368, 2.97042, 2.98762, 3.00475, 3.02152, 3.03805, 3.05496, 
+    3.07328, 3.09424, 3.11972, 3.15051, 3.18736, 3.23047, 3.27916, 
+    3.33131, 3.38344, 3.43146, 3.47184, 3.50285, 3.525, 3.54018, 
+    3.55037, 3.55727, 3.56196, 3.56467, 3.56536, 3.56399, 3.56046, 
+    3.55474, 3.54693, 3.53719, 3.52573, 3.51274, 3.4984, 3.48284, 
+    3.46619, 3.44846, 3.42986, 3.41053, 3.39073, 3.37065, 3.35027, 
+    3.32963, 3.30859, 3.28707, 3.26499, 3.24232, 3.21907, 3.19541, 
+    3.1716, 3.14798, 3.12478, 3.1021, 3.07993, 3.0582, 3.03689, 
+    3.01599, 2.99552, 2.97558, 2.95612, 2.93704, 2.91837)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.34749, 3.35503, 3.36246, 
+    3.36992, 3.37733, 3.38473, 3.39223, 3.39981, 3.40747, 3.4153, 
+    3.42323, 3.43131, 3.43954, 3.44798, 3.45662, 3.46542, 3.4744, 
+    3.48371, 3.49328, 3.50316, 3.51325, 3.52341, 3.53349, 3.54342, 
+    3.55318, 3.56283, 3.57248, 3.58235, 3.59259, 3.60327, 3.61425, 
+    3.62535, 3.63647, 3.64772, 3.65945, 3.67207, 3.68626, 3.70188, 
+    3.71854, 3.7358, 3.75304, 3.76979, 3.78574, 3.80091, 3.81593, 
+    3.83176, 3.84979, 3.87174, 3.89838, 3.93043, 3.96797, 4.01026, 
+    4.05538, 4.10031, 4.14154, 4.17609, 4.20253, 4.22125, 4.23392, 
+    4.24245, 4.24833, 4.25235, 4.25465, 4.25526, 4.25404, 4.25089, 
+    4.24588, 4.23913, 4.23078, 4.22098, 4.20989, 4.19761, 4.18439, 
+    4.1702, 4.15517, 4.13937, 4.12304, 4.1064, 4.08956, 4.07249, 
+    4.05523, 4.03769, 4.01977, 4.00131, 3.98219, 3.96259, 3.94262, 
+    3.92245, 3.90239, 3.88264, 3.86336, 3.84447, 3.82581, 3.80741, 
+    3.78926, 3.77143, 3.75382, 3.7364, 3.71913, 3.70207)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.86543, 3.87217, 3.87899, 
+    3.88595, 3.89309, 3.90047, 3.90805, 3.91575, 3.92366, 3.93195, 
+    3.94064, 3.94957, 3.9587, 3.96805, 3.97773, 3.98786, 3.99844, 
+    4.00936, 4.02065, 4.03238, 4.04441, 4.05661, 4.06886, 4.081, 
+    4.09296, 4.10488, 4.1168, 4.12904, 4.1417, 4.15476, 4.16811, 
+    4.18159, 4.195, 4.20827, 4.22183, 4.23607, 4.25172, 4.2685, 
+    4.28633, 4.30451, 4.32225, 4.33905, 4.35464, 4.36909, 4.38306, 
+    4.39755, 4.41426, 4.43485, 4.46015, 4.49106, 4.52807, 4.57026, 
+    4.61538, 4.66003, 4.70025, 4.73279, 4.75613, 4.7707, 4.77813, 
+    4.78081, 4.78058, 4.7779, 4.77333, 4.76669, 4.75798, 4.7472, 
+    4.73417, 4.71906, 4.70219, 4.68367, 4.66366, 4.64241, 4.61988, 
+    4.5961, 4.57132, 4.54599, 4.52021, 4.49376, 4.46722, 4.44044, 
+    4.41347, 4.38621, 4.35852, 4.33036, 4.30158, 4.27217, 4.24226, 
+    4.21219, 4.1824, 4.15317, 4.12448, 4.09623, 4.06837, 4.04096, 
+    4.01399, 3.98755, 3.96163, 3.93614, 3.91103, 3.88612)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.4571, 2.45753, 2.458, 
+    2.45851, 2.45914, 2.45993, 2.46092, 2.46218, 2.4637, 2.46556, 
+    2.46773, 2.47015, 2.47292, 2.47609, 2.47969, 2.48381, 2.48834, 
+    2.49349, 2.49913, 2.50529, 2.51177, 2.51831, 2.52462, 2.53054, 
+    2.53614, 2.54174, 2.54766, 2.55419, 2.56157, 2.56979, 2.57867, 
+    2.58797, 2.59743, 2.60706, 2.61732, 2.62876, 2.64214, 2.6574, 
+    2.67399, 2.6912, 2.7082, 2.72422, 2.73887, 2.75242, 2.76577, 
+    2.78041, 2.79803, 2.82075, 2.8494, 2.88464, 2.92668, 2.97457, 
+    3.02604, 3.0775, 3.12474, 3.16434, 3.19473, 3.21655, 3.23181, 
+    3.24257, 3.25032, 3.25612, 3.26017, 3.26243, 3.26276, 3.26105, 
+    3.2573, 3.25163, 3.24417, 3.23516, 3.22476, 3.2131, 3.2002, 
+    3.18622, 3.17128, 3.15548, 3.13896, 3.12201, 3.10479, 3.08731, 
+    3.06956, 3.05141, 3.03278, 3.01352, 2.99348, 2.97264, 2.95113, 
+    2.92931, 2.90764, 2.88643, 2.86575, 2.84549, 2.82557, 2.80593, 
+    2.78655, 2.76754, 2.74893, 2.73054, 2.71234, 2.6943)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.88306, 2.88677, 2.89044, 
+    2.89414, 2.89791, 2.90176, 2.90573, 2.90989, 2.9143, 2.91903, 
+    2.92394, 2.92904, 2.93437, 2.94003, 2.94609, 2.95257, 2.95938, 
+    2.96665, 2.97443, 2.98265, 2.99116, 2.99972, 3.00809, 3.01613, 
+    3.02389, 3.03147, 3.03931, 3.0477, 3.05682, 3.06678, 3.07739, 
+    3.08834, 3.09939, 3.11056, 3.12223, 3.13496, 3.14937, 3.16535, 
+    3.18243, 3.1999, 3.21697, 3.23295, 3.24754, 3.26104, 3.27428, 
+    3.28862, 3.30558, 3.32734, 3.35473, 3.38852, 3.42889, 3.47512, 
+    3.52502, 3.57505, 3.62108, 3.65958, 3.68876, 3.70925, 3.72293, 
+    3.73192, 3.73779, 3.74156, 3.74356, 3.74368, 3.74189, 3.73809, 
+    3.73223, 3.72441, 3.71482, 3.70372, 3.69125, 3.67759, 3.6629, 
+    3.64718, 3.63051, 3.61314, 3.59514, 3.57685, 3.55838, 3.53986, 
+    3.52109, 3.50195, 3.48234, 3.46223, 3.44151, 3.42011, 3.39813, 
+    3.3759, 3.35383, 3.33214, 3.311, 3.29039, 3.2701, 3.25002, 
+    3.23018, 3.21065, 3.19142, 3.17242, 3.15349, 3.1347)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.29881, 3.30738, 3.31586, 
+    3.32423, 3.33257, 3.34094, 3.34939, 3.35796, 3.36666, 3.37546, 
+    3.38441, 3.39341, 3.40255, 3.41191, 3.4215, 3.43138, 3.44156, 
+    3.45203, 3.46293, 3.47418, 3.48569, 3.49729, 3.50876, 3.51993, 
+    3.53083, 3.54155, 3.55232, 3.56349, 3.57531, 3.58782, 3.60084, 
+    3.61404, 3.6271, 3.63998, 3.65304, 3.66685, 3.68195, 3.69809, 
+    3.71473, 3.73111, 3.74636, 3.75971, 3.77075, 3.77971, 3.7876, 
+    3.79579, 3.80605, 3.82038, 3.83956, 3.86416, 3.8941, 3.92865, 
+    3.96614, 4.00387, 4.03878, 4.06834, 4.0913, 4.108, 4.11974, 
+    4.12825, 4.13442, 4.1389, 4.1419, 4.14347, 4.14354, 4.14196, 
+    4.13884, 4.13427, 4.12834, 4.1212, 4.11295, 4.10376, 4.09368, 
+    4.08281, 4.07122, 4.05897, 4.0463, 4.03331, 4.02036, 4.00725, 
+    3.99401, 3.98042, 3.96649, 3.95204, 3.93691, 3.921, 3.90441, 
+    3.88754, 3.87076, 3.85427, 3.8382, 3.82241, 3.80682, 3.79124, 
+    3.77567, 3.7601, 3.74453, 3.72884, 3.71288, 3.69671)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.70628, 2.70826, 2.71029, 
+    2.7124, 2.71465, 2.71706, 2.71968, 2.7226, 2.72576, 2.72931, 
+    2.73311, 2.73725, 2.74177, 2.74672, 2.75211, 2.75797, 2.76431, 
+    2.77121, 2.77869, 2.78675, 2.79528, 2.80399, 2.81261, 2.82096, 
+    2.82907, 2.83711, 2.84537, 2.85443, 2.86451, 2.87581, 2.88813, 
+    2.90097, 2.91383, 2.9266, 2.93965, 2.95375, 2.96952, 2.98665, 
+    3.0044, 3.02172, 3.03738, 3.05037, 3.06017, 3.06705, 3.07218, 
+    3.07748, 3.08516, 3.09784, 3.11655, 3.14198, 3.17415, 3.21218, 
+    3.25394, 3.29617, 3.33508, 3.3674, 3.39158, 3.40791, 3.41812, 
+    3.42408, 3.42725, 3.42859, 3.42833, 3.4264, 3.42278, 3.41737, 
+    3.41016, 3.40127, 3.3909, 3.37923, 3.36642, 3.35262, 3.33794, 
+    3.32251, 3.30636, 3.28961, 3.27242, 3.25499, 3.23759, 3.22027, 
+    3.2029, 3.18537, 3.1675, 3.14911, 3.13001, 3.11008, 3.08947, 
+    3.06859, 3.04795, 3.02791, 3.00854, 2.98973, 2.97128, 2.95307, 
+    2.93505, 2.91717, 2.89927, 2.88124, 2.86292, 2.84446)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.66118, 2.66172, 2.66232, 
+    2.66297, 2.66379, 2.66482, 2.66612, 2.66783, 2.66992, 2.67245, 
+    2.6754, 2.67887, 2.68287, 2.68748, 2.69285, 2.699, 2.70596, 
+    2.71377, 2.7224, 2.73172, 2.74133, 2.7508, 2.75974, 2.76798, 
+    2.77569, 2.78335, 2.79168, 2.8015, 2.81312, 2.82666, 2.8417, 
+    2.85757, 2.87361, 2.88955, 2.90581, 2.92322, 2.94266, 2.96368, 
+    2.98534, 3.00628, 3.02501, 3.04033, 3.05169, 3.05963, 3.06587, 
+    3.0729, 3.08344, 3.10045, 3.12506, 3.15795, 3.19915, 3.24763, 
+    3.30094, 3.35529, 3.40621, 3.44979, 3.48393, 3.50877, 3.52604, 
+    3.53787, 3.54612, 3.552, 3.55575, 3.55741, 3.55684, 3.55402, 
+    3.54897, 3.54179, 3.53276, 3.52211, 3.51003, 3.49665, 3.48213, 
+    3.46661, 3.45017, 3.43291, 3.41501, 3.39675, 3.37846, 3.36014, 
+    3.34179, 3.3232, 3.30417, 3.2845, 3.26391, 3.2423, 3.21985, 
+    3.19706, 3.17455, 3.1528, 3.13189, 3.11167, 3.09195, 3.07253, 
+    3.05325, 3.03411, 3.01496, 2.99568, 2.97606, 2.95627)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.4916, 2.49183, 2.49209, 
+    2.49243, 2.49296, 2.49373, 2.4948, 2.49621, 2.498, 2.50019, 
+    2.50281, 2.50585, 2.50937, 2.51343, 2.51811, 2.52347, 2.52952, 
+    2.53624, 2.54376, 2.55204, 2.5609, 2.56985, 2.57845, 2.58651, 
+    2.59404, 2.6012, 2.60856, 2.61684, 2.62663, 2.63816, 2.65126, 
+    2.66526, 2.67947, 2.69353, 2.70763, 2.72247, 2.73873, 2.75684, 
+    2.77591, 2.79484, 2.81217, 2.82651, 2.83701, 2.84369, 2.84777, 
+    2.85143, 2.85721, 2.8674, 2.88453, 2.90922, 2.94176, 2.98159, 
+    3.02678, 3.07393, 3.11882, 3.15761, 3.18803, 3.20995, 3.22481, 
+    3.23456, 3.24101, 3.24511, 3.24748, 3.2482, 3.24712, 3.24408, 
+    3.2391, 3.23231, 3.22388, 3.21398, 3.20279, 3.19048, 3.17721, 
+    3.16304, 3.14806, 3.13227, 3.11587, 3.09905, 3.0821, 3.06518, 
+    3.04825, 3.03118, 3.0138, 2.99589, 2.97714, 2.95731, 2.93645, 
+    2.915, 2.89362, 2.87283, 2.85283, 2.8335, 2.81459, 2.79591, 
+    2.77743, 2.75912, 2.74081, 2.72225, 2.70332, 2.6841)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(3.14626, 3.15166, 3.15703, 
+    3.16244, 3.16791, 3.17348, 3.17923, 3.18521, 3.1914, 3.19792, 
+    3.20466, 3.21167, 3.21896, 3.22665, 3.23481, 3.24345, 3.25255, 
+    3.26199, 3.27205, 3.28263, 3.29378, 3.30525, 3.31673, 3.32801, 
+    3.33896, 3.34976, 3.36068, 3.37238, 3.38527, 3.39963, 3.4152, 
+    3.43129, 3.44727, 3.46298, 3.47899, 3.49632, 3.51585, 3.5372, 
+    3.55932, 3.58079, 3.59985, 3.61481, 3.62461, 3.62933, 3.63054, 
+    3.63101, 3.63398, 3.64281, 3.65859, 3.68207, 3.71307, 3.75049, 
+    3.792, 3.83423, 3.87342, 3.90643, 3.93181, 3.95001, 3.96265, 
+    3.97146, 3.9777, 3.98224, 3.98529, 3.98674, 3.9865, 3.98449, 
+    3.98077, 3.97541, 3.96853, 3.96031, 3.95092, 3.94047, 3.92904, 
+    3.91669, 3.9035, 3.88954, 3.87495, 3.86015, 3.84524, 3.83036, 
+    3.81533, 3.80008, 3.7844, 3.76797, 3.75045, 3.73165, 3.71175, 
+    3.69136, 3.67117, 3.65168, 3.63298, 3.61483, 3.59695, 3.57915, 
+    3.56142, 3.54365, 3.52563, 3.50705, 3.48765, 3.46769)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.57992, 2.5804, 2.58099, 
+    2.58175, 2.58266, 2.58381, 2.5853, 2.58719, 2.58949, 2.59225, 
+    2.59546, 2.59916, 2.60344, 2.60844, 2.61426, 2.6209, 2.6283, 
+    2.6366, 2.64579, 2.65571, 2.66593, 2.67596, 2.68532, 2.69384, 
+    2.70178, 2.70963, 2.71821, 2.72828, 2.74035, 2.75449, 2.77031, 
+    2.78703, 2.8038, 2.82023, 2.83676, 2.85417, 2.87346, 2.8941, 
+    2.91494, 2.93442, 2.95082, 2.96273, 2.96953, 2.97185, 2.97162, 
+    2.97162, 2.97492, 2.98472, 3.00209, 3.02779, 3.06168, 3.10263, 
+    3.14821, 3.19467, 3.23772, 3.27377, 3.30103, 3.31999, 3.33247, 
+    3.34044, 3.34554, 3.34879, 3.35034, 3.35024, 3.34828, 3.34443, 
+    3.33876, 3.3314, 3.32251, 3.31228, 3.30093, 3.28863, 3.27554, 
+    3.2617, 3.24715, 3.23194, 3.21627, 3.20037, 3.18462, 3.1691, 
+    3.15364, 3.13802, 3.122, 3.10534, 3.08777, 3.06908, 3.04942, 
+    3.02933, 3.00947, 2.99033, 2.97211, 2.95464, 2.93756, 2.92062, 
+    2.90367, 2.88668, 2.86951, 2.8518, 2.83347, 2.81473)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.56875, 2.56923, 2.56985, 
+    2.5706, 2.5715, 2.57268, 2.5742, 2.5761, 2.57841, 2.58129, 
+    2.58459, 2.58841, 2.59283, 2.59793, 2.60381, 2.61049, 2.61803, 
+    2.62646, 2.6358, 2.64594, 2.65656, 2.66712, 2.67713, 2.68634, 
+    2.69486, 2.70325, 2.7124, 2.72326, 2.73624, 2.75153, 2.76861, 
+    2.78661, 2.80469, 2.82242, 2.84016, 2.8588, 2.87925, 2.901, 
+    2.92268, 2.94262, 2.9589, 2.96995, 2.97513, 2.97519, 2.97228, 
+    2.96949, 2.97017, 2.97767, 2.99317, 3.01732, 3.04997, 3.08988, 
+    3.13449, 3.18006, 3.22227, 3.25753, 3.28414, 3.30259, 3.31466, 
+    3.32223, 3.32701, 3.32995, 3.33129, 3.331, 3.32899, 3.32509, 
+    3.31935, 3.31195, 3.30309, 3.29304, 3.28196, 3.26999, 3.2572, 
+    3.24373, 3.22963, 3.21494, 3.19986, 3.18464, 3.16959, 3.15474, 
+    3.14004, 3.12525, 3.11007, 3.0942, 3.07733, 3.05928, 3.0402, 
+    3.02069, 3.00145, 2.98301, 2.96551, 2.9487, 2.93226, 2.91592, 
+    2.89952, 2.88291, 2.86595, 2.84836, 2.82998, 2.81111)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.65884, 2.65943, 2.66023, 
+    2.66108, 2.66215, 2.6636, 2.6655, 2.66787, 2.6707, 2.67405, 
+    2.67793, 2.68247, 2.68779, 2.69399, 2.70113, 2.70924, 2.71836, 
+    2.72863, 2.73998, 2.75222, 2.76488, 2.7773, 2.78888, 2.79945, 
+    2.80927, 2.81894, 2.82961, 2.84233, 2.8578, 2.87611, 2.89671, 
+    2.91843, 2.94011, 2.96121, 2.98209, 3.00378, 3.02727, 3.05186, 
+    3.07592, 3.09723, 3.11338, 3.12235, 3.12336, 3.11738, 3.10714, 
+    3.09663, 3.08976, 3.09058, 3.10028, 3.11944, 3.14776, 3.18386, 
+    3.22511, 3.26766, 3.30724, 3.34036, 3.36529, 3.38239, 3.39337, 
+    3.40012, 3.4042, 3.40646, 3.4072, 3.4064, 3.40391, 3.39969, 
+    3.39374, 3.38624, 3.37745, 3.36758, 3.35682, 3.34528, 3.33315, 
+    3.32046, 3.30723, 3.29347, 3.27941, 3.26533, 3.25161, 3.23831, 
+    3.22525, 3.21218, 3.19873, 3.18455, 3.16919, 3.15241, 3.13437, 
+    3.11574, 3.09745, 3.08013, 3.0639, 3.04851, 3.03351, 3.01851, 
+    3.00327, 2.98759, 2.97121, 2.95374, 2.93514, 2.91564)), .Names = c("args", 
+    "vals")), structure(list(args = c(850, 852.020202020202, 
+    854.040404040404, 856.060606060606, 858.080808080808, 860.10101010101, 
+    862.121212121212, 864.141414141414, 866.161616161616, 868.181818181818, 
+    870.20202020202, 872.222222222222, 874.242424242424, 876.262626262626, 
+    878.282828282828, 880.30303030303, 882.323232323232, 884.343434343434, 
+    886.363636363636, 888.383838383838, 890.40404040404, 892.424242424242, 
+    894.444444444444, 896.464646464646, 898.484848484848, 900.50505050505, 
+    902.525252525253, 904.545454545455, 906.565656565657, 908.585858585859, 
+    910.606060606061, 912.626262626263, 914.646464646465, 916.666666666667, 
+    918.686868686869, 920.707070707071, 922.727272727273, 924.747474747475, 
+    926.767676767677, 928.787878787879, 930.808080808081, 932.828282828283, 
+    934.848484848485, 936.868686868687, 938.888888888889, 940.909090909091, 
+    942.929292929293, 944.949494949495, 946.969696969697, 948.989898989899, 
+    951.010101010101, 953.030303030303, 955.050505050505, 957.070707070707, 
+    959.090909090909, 961.111111111111, 963.131313131313, 965.151515151515, 
+    967.171717171717, 969.191919191919, 971.212121212121, 973.232323232323, 
+    975.252525252525, 977.272727272727, 979.292929292929, 981.313131313131, 
+    983.333333333333, 985.353535353535, 987.373737373737, 989.393939393939, 
+    991.414141414141, 993.434343434343, 995.454545454545, 997.474747474747, 
+    999.49494949495, 1001.51515151515, 1003.53535353535, 1005.55555555556, 
+    1007.57575757576, 1009.59595959596, 1011.61616161616, 1013.63636363636, 
+    1015.65656565657, 1017.67676767677, 1019.69696969697, 1021.71717171717, 
+    1023.73737373737, 1025.75757575758, 1027.77777777778, 1029.79797979798, 
+    1031.81818181818, 1033.83838383838, 1035.85858585859, 1037.87878787879, 
+    1039.89898989899, 1041.91919191919, 1043.93939393939, 1045.9595959596, 
+    1047.9797979798, 1050), vals = c(2.89064, 2.89244, 2.89438, 
+    2.89659, 2.89913, 2.90211, 2.90566, 2.90982, 2.91468, 2.92031, 
+    2.92672, 2.93393, 2.94215, 2.95162, 2.96246, 2.97468, 2.98837, 
+    3.00351, 3.02017, 3.03799, 3.05637, 3.07442, 3.09126, 3.10649, 
+    3.12049, 3.13426, 3.14938, 3.1674, 3.18931, 3.21534, 3.24464, 
+    3.27559, 3.30644, 3.33614, 3.36509, 3.39483, 3.42658, 3.45948, 
+    3.49127, 3.51876, 3.53835, 3.547, 3.5435, 3.52941, 3.50883, 
+    3.48751, 3.47102, 3.46452, 3.46957, 3.48671, 3.51552, 3.55417, 
+    3.59944, 3.64683, 3.69145, 3.72932, 3.75847, 3.77923, 3.79343, 
+    3.80307, 3.80985, 3.81487, 3.81816, 3.81992, 3.81981, 3.81779, 
+    3.81395, 3.80847, 3.80162, 3.79364, 3.78474, 3.77509, 3.7647, 
+    3.7537, 3.74201, 3.72972, 3.71702, 3.70437, 3.69211, 3.68038, 
+    3.66899, 3.65755, 3.64566, 3.63274, 3.6181, 3.60131, 3.58258, 
+    3.56287, 3.5435, 3.52541, 3.50878, 3.49314, 3.47783, 3.46234, 
+    3.44632, 3.42949, 3.41136, 3.39146, 3.36959, 3.34622)), .Names = c("args", 
+    "vals"))), labels = list("large", "large", "small", "small", 
+    "large", "large", "large", "small", "small", "small", "large", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large", "large", "large", "large", "large", "large", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "small", "large", "small", "small", "small", "small", "small", 
+    "small", "small", "large", "large", "large", "large", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "large", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large", "large", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "large", "large", "large", "large", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "small", 
+    "small", "small", "small", "small", "small", "small", "large", 
+    "large", "large", "large", "large", "large", "large", "large", 
+    "large")), class = "functional")
+)
diff --git a/R/ddalpha-internal.r b/R/ddalpha-internal.r
new file mode 100644
index 0000000..47cc12c
--- /dev/null
+++ b/R/ddalpha-internal.r
@@ -0,0 +1,1734 @@
+################################################################################
+# File:             ddalpha-internal.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     13.11.2015
+# 
+# Contains the internal functions of the DDalpha-classifier.
+# 
+# For a description of the algorithm, see:
+#   Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric 
+#     classification based on data depth. Statistical Papers.
+#   Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world 
+#     data with the DDalpha-procedure. Mimeo.
+################################################################################
+
+
+.ddalpha.create.structure <- function(formula, data, subset, ...){
+  
+  # if the user calls ddalpha(data, <other named parameters>, ...)
+  # for backward compatibility
+  if(!missing(formula) && missing(data) && (is.data.frame(formula) || is.matrix(formula))){
+    data = formula
+    formula = NULL
+  }
+  
+  # formula is present
+  if(!missing(formula) && !is.null(formula)){
+    
+    needed.frame <- sys.nframe() - 1
+
+    cl <- match.call(call = sys.call(sys.parent(n = needed.frame)))
+    mf <- match.call(expand.dots = FALSE, call = sys.call(sys.parent(n = needed.frame)))
+    m <- match(c("formula", "data", "subset"#, "weights", "na.action", "offset"
+                 ), names(mf), 0L)
+    mf <- mf[c(1L, m)]
+    mf$drop.unused.levels <- TRUE
+    mf[[1L]] <- quote(stats::model.frame)
+    mf <- eval(mf, parent.frame())
+    
+    clres = colnames(mf)
+    cat("Selected columns: ", paste(clres, collapse = ",   "), "\n")
+    classif.formula = delete.response(terms(mf))
+    
+    data = cbind(mf[,-1,drop=F], mf[,1,drop=F])
+    
+  #  y = model.response(mf)
+  #  mm = model.matrix(formula, data = mf)
+  #  mm = as.data.frame(mm[,-1,drop=F])
+    
+  #  colnames(mm) <- paste0("P_",1:ncol(mm))
+  #  data = cbind(mm, y)
+    
+    #colnames(mf) <- paste0("P_",1:ncol(mm))
+                           
+  } else {  # no formula
+    # Check for data consistency
+    if (!(is.matrix(data) && is.numeric(data)
+          || is.data.frame(data) && prod(sapply(data[,-ncol(data)], is.numeric)))){
+      stop("Argument data has unacceptable format. Classifier can not be trained!!!")
+    }
+    cl = NULL
+    classif.formula = NULL
+    clres = colnames(data)
+    
+    if(!is.data.frame(data))
+      data = as.data.frame(data)
+    if(!missing(subset))
+      data = data[subset,]
+  }
+  
+  names(data)[ncol(data)] <- "CLASS"
+  
+  # Elemantary statistics
+  dimension <- ncol(data) - 1
+  numOfPoints <- nrow(data)
+  classNames <- unique(data[,dimension + 1])
+  numOfClasses <- length(classNames)
+
+  if(!is.data.frame(data))
+    data = as.data.frame(data)
+  names(data)[ncol(data)] <- "CLASS"
+  
+  # Creating overall structure
+  ddalpha <- list(
+         call = cl,
+         colnames = clres, # colnames after formula is applied
+         classif.formula = classif.formula, # for classification
+         raw = data, # after formula is applied
+         dimension = dimension, 
+         numPatterns = numOfClasses, 
+         numPoints = numOfPoints, 
+         patterns = list(), 
+         needtransform = 0,    # 0 - no transform, 1 - transform new points before classification, all classes the same, 2 - transform differently w.r.t. to classes.
+         classifiers = list(), 
+#         numClassifiers = 0, 
+#         methodDepth = "halfspace", 
+#         methodSeparator = "alpha", 
+#         methodAggregation = "majority", 
+#         methodsOutsider = NULL, 
+#         numDirections = 1000, 
+#         directions = NULL, 
+#         projections = NULL, 
+         sameDirections = TRUE, 
+         useConvex = FALSE, 
+         maxDegree = 3, 
+         numChunks = numOfPoints, 
+#         knnrange = NULL,
+#         mahEstimate = "moment", 
+#         mahParMcd = 0.75, 
+#         mahPriors = NULL, 
+#         knnK = 1, 
+#         knnX = NULL, 
+#         knnY = NULL, 
+#         knnD = NULL, 
+         treatments = c("LDA", "KNNAFF", "KNN", "DEPTH.MAHALANOBIS", "RANDEQUAL", "RANDPROP", "IGNORE"))
+
+  # Ordering patterns according to their cardinalities
+  classCardinalities <- rep(0, numOfClasses)
+  for (i in 1:numOfClasses){
+    classCardinalities[i] <- nrow(data[data[,dimension + 1] == classNames[i],])
+  }
+  # Creating pattern templates
+  patterns <- as.list("")
+  for (i in 1:numOfClasses){
+    maxCarIndex <- which.max(classCardinalities)
+    # Creating a single template
+    ddalpha$patterns[[i]] <- list(
+      index = i, 
+      points = data[data[,dimension + 1] == classNames[maxCarIndex],1:dimension], 
+      name = classNames[maxCarIndex], 
+      cardinality = classCardinalities[maxCarIndex], 
+      depths = matrix(rep(0, numOfClasses*classCardinalities[maxCarIndex]), nrow = classCardinalities[maxCarIndex], ncol = numOfClasses), 
+      votes = 0#, 
+      #         center = 0, 
+      #         cov = 0, 
+      #         sigma = 0, 
+      #         centerMcd = 0, 
+      #         covMcd = 0, 
+      #         sigmaMcd = 0
+    )    
+
+    # Adding pattern template to the list of patterns
+    class(ddalpha$patterns[[i]])<-"ddalpha.pattern"
+    # Deleting processed pattern
+    classCardinalities[maxCarIndex] <- -1    
+  }
+
+  return (ddalpha)
+}
+
+.ddalpha.learn.depth <- function(ddalpha){
+  
+  # try to find a custom depth
+  fname = paste0(".", ddalpha$methodDepth, "_learn")
+  f <- try(match.fun(fname), silent = T)
+  if (is.function(f)){
+    ddalpha = f(ddalpha)
+    return(ddalpha)
+  }
+  
+  # If it's the random Tukey depth, compute it first
+  if (ddalpha$methodDepth == "halfspace"){
+    dSpaceStructure <- .halfspace_space(ddalpha)
+    ddalpha$directions <- dSpaceStructure$directions
+    ddalpha$projections <- dSpaceStructure$projections
+    tmpDSpace <- dSpaceStructure$dspace
+  }
+  if (ddalpha$methodDepth == "projection"){
+    dSpaceStructure <- .projection_space(ddalpha)
+    tmpDSpace <- dSpaceStructure$dspace
+    if (ddalpha$dmethod == "random"){
+      ddalpha$directions <- dSpaceStructure$directions
+      ddalpha$projections <- dSpaceStructure$projections
+    }
+  }
+  
+  classBegin = 1
+  if (ddalpha$methodDepth == "potential"){
+    tmpDSpace <- .ddalpha.count.depths(ddalpha, NULL)
+  }
+  
+  # Calculating depths in each pattern
+  for (i in 1:ddalpha$numPatterns){
+    if (   ddalpha$methodDepth == "halfspace" 
+        || ddalpha$methodDepth == "projection"
+        || ddalpha$methodDepth == "potential"){
+      # Random depth is already calculated, just distribute
+      ddalpha$patterns[[i]]$depths <- tmpDSpace[classBegin:(classBegin+ddalpha$patterns[[i]]$cardinality-1),]
+      classBegin = classBegin+ddalpha$patterns[[i]]$cardinality
+    } else
+    if (ddalpha$methodDepth == "zonoid"){
+      # Calculate depths for the class w.r.t all classes, saying to which of the classes the chunk belongs
+      ddalpha$patterns[[i]]$depths <- .zonoid_depths(ddalpha, ddalpha$patterns[[i]]$points, i)
+    } else
+    if (ddalpha$methodDepth == "Mahalanobis"){
+      ddalpha$patterns[[i]]$depths <- .Mahalanobis_depths(ddalpha, ddalpha$patterns[[i]]$points)
+    }
+    if (ddalpha$methodDepth == "spatial"){
+      # Calculate depths for the class w.r.t all classes, saying to which of the classes the chunk belongs
+      ddalpha$patterns[[i]]$depths <- .spatial_depths(ddalpha, ddalpha$patterns[[i]]$points)
+    }
+    if (ddalpha$methodDepth == "spatialLocal"){
+      # Calculate depths for the class w.r.t all classes, saying to which of the classes the chunk belongs
+      ddalpha$patterns[[i]]$depths <- .spatialLocal_depths(ddalpha, ddalpha$patterns[[i]]$points)
+    }
+    if (ddalpha$methodDepth == "simplicial"){
+      # Calculate depths for the class w.r.t all classes, saying to which of the classes the chunk belongs
+      ddalpha$patterns[[i]]$depths <- .simplicial_depths(ddalpha, ddalpha$patterns[[i]]$points)
+    }
+    if (ddalpha$methodDepth == "simplicialVolume"){
+      # Calculate depths for the class w.r.t all classes, saying to which of the classes the chunk belongs
+      ddalpha$patterns[[i]]$depths <- .simplicialVolume_depths(ddalpha, ddalpha$patterns[[i]]$points)
+    }
+  }
+
+  return (ddalpha)
+}
+
+.getFunction <- function(fname) {
+  f <- try(match.fun(fname), silent = T)
+  if (!is.function(f))
+    stop("Wrong or absent function: ", fname)
+  f
+}
+
+.ddalpha.learn.binary <- function(ddalpha){
+  
+  fname = paste0(".", ddalpha$methodSeparator, "_learn")
+  learn <- try(match.fun(fname), silent = T)
+  if (!is.function(learn))
+    stop("Wrong or absent function: ", fname)
+  
+  # Separating (calculating extensions and normals)
+  counter <- 1
+  # Determining multi-class behaviour
+  if (ddalpha$methodAggregation == "majority"){
+    for (i in 1:(ddalpha$numPatterns - 1)){
+      for (j in (i + 1):ddalpha$numPatterns){
+        # Creating a classifier
+        classifier <- learn(ddalpha, i, j,
+                            ddalpha$patterns[[i]]$depths, 
+                            ddalpha$patterns[[j]]$depths)
+        
+        classifier$index          = counter
+        classifier$index1         = i
+        classifier$index2         = j
+        
+        if(class(classifier)=="list")
+          class(classifier) <- paste0("ddalpha.", ddalpha$methodSeparator)
+        else
+          class(classifier) <- c(class(classifier), paste0("ddalpha.", ddalpha$methodSeparator))
+        
+        # Adding the classifier to the list of classifiers
+        ddalpha$classifiers[[counter]] <- classifier
+        
+        counter <- counter + 1
+      }
+    }
+    ddalpha$numClassifiers <- counter - 1
+  }
+  if (ddalpha$methodAggregation == "sequent"){
+    for (i in 1:ddalpha$numPatterns){
+      anotherClass <- NULL
+      for (j in 1:ddalpha$numPatterns){
+        if (j != i){
+          anotherClass <- rbind(anotherClass, ddalpha$patterns[[j]]$depths)
+        }
+      }
+      classifier <- learn(ddalpha, i, -i,
+                          ddalpha$patterns[[i]]$depths, 
+                          anotherClass)
+      
+      classifier$index          = counter
+      classifier$index1         = i
+      classifier$index2         = -i
+      
+      if(class(classifier)=="list")
+        class(classifier) <- paste0("ddalpha.", ddalpha$methodSeparator)
+      else
+        class(classifier) <- c(class(classifier), paste0("ddalpha.", ddalpha$methodSeparator))
+      
+      # Adding the classifier to the list of classifiers
+      ddalpha$classifiers[[i]] <- classifier
+    }
+    ddalpha$numClassifiers <- ddalpha$numPatterns
+  }
+  
+  return (ddalpha)
+}
+
+.alpha_learn <- function(ddalpha, index1, index2, depths1, depths2){
+  points <- as.vector(t(rbind(depths1, depths2)))
+  numClass1 <- nrow(depths1)
+  numClass2 <- nrow(depths2)
+  numPoints <- numClass1 + numClass2
+  dimension <- ncol(depths1)
+  cardinalities <- c(numClass1, numClass2)
+  upToPower <- ddalpha$maxDegree
+  minFeatures <- 2
+  maxExtDimension <- (factorial(dimension + upToPower) / (factorial(dimension)*factorial(upToPower))) - 1;
+  
+  p <- .C("AlphaLearnCV", as.double(points), as.integer(numPoints), as.integer(dimension), as.integer(cardinalities),  as.integer(upToPower), as.integer(ddalpha$numChunks), as.integer(minFeatures), as.integer(ddalpha$debug), portrait=double(maxExtDimension + 1))$portrait
+  
+  degree <- p[1];
+  extDimension <- (factorial(dimension + degree) / (factorial(dimension)*factorial(degree))) - 1;
+  d <- 0
+  for (i in 2:(extDimension + 1)){
+    if (p[i] != 0){
+      d <- d + 1
+    }
+  }
+  
+  return(list(
+    hyperplane     = p,
+    degree         = degree,
+    dimProperties  = length(p) - 1,
+    dimFeatures    = d
+  ))
+}
+
+.alpha_classify <- function(ddalpha, classifier, depths){
+  toClassify <- as.double(as.vector(t(depths)))
+  m = as.integer(nrow(depths))
+  q = as.integer(ncol(depths))
+  result <- .C("AlphaClassify", 
+               toClassify, 
+               m, q, 
+               as.integer(classifier$degree), 
+               as.double(classifier$hyperplane), 
+               output=integer(m))$output
+  return(result)
+}
+
+.polynomial_learn <- function(ddalpha, index1, index2, depths1, depths2){
+  
+  polynomial <- .polynomial_learn_C(ddalpha$maxDegree, 
+                                    rbind(depths1[,c(index1, index2)], depths2[,c(index1, index2)]),
+                                    nrow(depths1), nrow(depths2), 
+                                    ddalpha$numChunks, ddalpha$seed)
+  return(list(
+    polynomial     = polynomial$coefficients,
+    degree         = polynomial$degree,
+    axis           = polynomial$axis))
+}
+
+.polynomial_classify <- function(ddalpha, classifier, depths){
+  x = ifelse(classifier$axis == 0, classifier$index1, classifier$index2)
+  y = ifelse(classifier$axis == 0, classifier$index2, classifier$index1)
+  
+  result <- (- depths[,y])
+  for (obj in 1:nrow(depths)){        
+    val <- depths[obj,x]
+    for(j in 1:classifier$degree){
+      result[obj] <- result[obj] + classifier$polynomial[j]*val^j
+    }
+    if(classifier$axis != 0)
+      result[obj] <- (- result[obj])
+  }
+  return(result)
+}
+
+
+.ddalpha.learn.multiclass <- function(ddalpha){
+  
+  fname = paste0(".", ddalpha$methodSeparator, "_learn")
+  learn <- try(match.fun(fname), silent = T)
+  if (!is.function(learn))
+    stop("Wrong or absent function: ", fname)
+  
+  classifier <- learn(ddalpha)
+  if(class(classifier)=="list")
+    class(classifier) <- paste0("ddalpha.", ddalpha$methodSeparator)
+  else
+    class(classifier) <- c(class(classifier), paste0("ddalpha.", ddalpha$methodSeparator))
+      
+  ddalpha$classifiers[[1]] <- classifier
+  ddalpha$numClassifiers <- 1
+  
+  return (ddalpha)
+}
+
+#.ddalpha.learn.knnlm 
+.knnlm_learn <- function(ddalpha){
+  
+  x <- NULL
+  y <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    x <- rbind(x, ddalpha$patterns[[i]]$depths)
+    y <- c(y, rep(i - 1, ddalpha$patterns[[i]]$cardinality))
+  }
+  x <- as.vector(t(x))
+  y <- as.vector(y)
+
+  k <- .C("KnnLearnJK", 
+          as.double(x), 
+          as.integer(y), 
+          as.integer(ddalpha$numPoints), 
+          as.integer(ddalpha$numPatterns), 
+          as.integer(ddalpha$knnrange), 
+          as.integer(2), 
+          k=integer(1))$k
+
+  return (list(knnK = k,
+               knnX = x,
+               knnY = y))
+}
+
+.knnlm_classify <- function(ddalpha, classifier, depths){
+  z <- as.vector(t(depths))
+  output <- .C("KnnClassify", 
+               as.double(z), 
+               as.integer(nrow(depths)), 
+               as.double(classifier$knnX), 
+               as.integer(classifier$knnY), 
+               as.integer(ddalpha$numPoints), 
+               as.integer(ddalpha$numPatterns), 
+               as.integer(classifier$knnK), 
+               as.integer(2), 
+               output=integer(nrow(depths)))$output
+  
+  return(output+1)
+}
+
+.maxD_learn <- function(ddalpha) return(list())
+
+.maxD_classify <- function(ddalpha, classifier, depths) apply(depths, 1, which.max)
+
+.ddalpha.learn.outsiders <- function(ddalpha, methodsOutsider = "LDA", settingsOutsider = NULL){
+  # Refine treatments
+  if (is.null(settingsOutsider)){
+    ddalpha$methodsOutsider <- .parse.methods(methodsOutsider)
+  }else{
+    ddalpha$methodsOutsider <- .parse.settings(ddalpha, settingsOutsider)
+  }
+  # Train treatments
+  treatments = list(LDA = .lda_learn, QDA = .qda_learn, 
+                    KNN = .knn_learn, KNNAff = .knnAff_learn, depth.Mahalanobis = .mah_learn,
+                    Ignore = NA, Mark = NA, RandEqual = NA, RandProp = NA)
+  for (i in 1:length(ddalpha$methodsOutsider)){
+    .treatment = treatments[[ddalpha$methodsOutsider[[i]]$method]]
+    if(is.null(.treatment)) stop("Unknown outsiders treatment method ", ddalpha$methodsOutsider[[i]]$method)
+    if(!is.function(.treatment)) next; # need no training
+    ddalpha$methodsOutsider[[i]] <- .treatment(ddalpha, ddalpha$methodsOutsider[[i]])
+  }
+  
+  return(ddalpha)
+}
+
+.ddalpha.count.depths <- function(ddalpha, objects, ...){
+  fname = paste0(".", ddalpha$methodDepth, "_depths")
+  f <- (match.fun(fname))
+  if (!is.function(f))
+    stop(paste0("Wrong function for ", ddalpha$methodDepth))
+  
+  # Count for all data
+  if (is.null(objects))  
+    for (i in 1:ddalpha$numPatterns){
+      objects <- rbind(objects, ddalpha$patterns[[i]]$points)
+    }
+  else ## if needtransform == 1 the data is already scaled
+  # Transform the data once
+  if (ddalpha$needtransform == 1){
+    objects <- ddalpha$patterns[[1]]$transformer(objects)
+  } 
+  
+  # Calculate depths for all classes together
+  if (ddalpha$needtransform != 2){
+    res <- f(ddalpha, objects, ...)
+    return(res) 
+  }
+  # Calculate depths w.r.t. each class
+  else {
+    d <- NULL
+    # w.r.t. each class
+    for (cls in 1:ddalpha$numPatterns){      
+      depth <- f(ddalpha, objects, class = cls, ...)
+      
+      d = cbind(d, depth)
+    }
+    
+    return(d)    
+  }
+}
+
+.ddalpha.classify.outsiders<- function (objects, ddalpha, settings){
+  if (settings$method == "Ignore"){
+    return (.ignore_classify(nrow(objects)))
+  }
+  if (settings$method == "Mark"){
+    return (.right_classify(nrow(objects)))
+  }
+  if (settings$method == "RandEqual"){
+    return (.randequal_classify(nrow(objects), ddalpha))
+  }
+  if (settings$method == "RandProp"){
+    return (.randprop_classify(nrow(objects), ddalpha, settings))
+  }
+  
+  treatments = list(LDA = .lda_classify, QDA = .qda_classify, 
+                    KNN = .knn_classify, KNNAff = .knnAff_classify, 
+                    depth.Mahalanobis = .mah_classify)
+
+  .treatment = treatments[[settings$method]]
+  if(is.null(.treatment)) stop("Unknown outsiders treatment method ", settings$method)
+  return(.treatment(objects, ddalpha, settings))
+}
+
+################################################################################
+# Functions used for intermediate calculations and checks are presented below
+################################################################################
+
+.are_classifiable <- function(objects, points, cardinalities){
+  convexes <- .count_convexes(objects, points, cardinalities)
+  return (ifelse(rowSums(convexes)>0,1,0))
+}
+
+.count_convexes <- function(objects, points, cardinalities, seed = 0){
+  if (is.na(seed)) seed = 0
+  x <- as.vector(t(points))
+  dimension <- ncol(points)
+  numClasses <- length(cardinalities)
+  o <- as.vector(t(objects))
+  numObjects <- nrow(objects)
+  result <- .C("IsInConvexes", 
+               as.double(x), 
+               as.integer(dimension), 
+               as.integer(cardinalities), 
+               as.integer(numClasses), 
+               as.double(o), 
+               as.integer(numObjects), 
+               as.integer(seed), 
+               isInConvexes=integer(numObjects*numClasses))$isInConvexes
+  result <- matrix(result, byrow = T, ncol = numClasses)
+  return (result)
+}
+
+.halfspace_space <- function(ddalpha){
+  points <- NULL
+  cardinalities <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    points <- rbind(points, ddalpha$patterns[[i]]$points)
+    cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+  }
+  x <- as.vector(t(points))
+  c <- as.vector(cardinalities)
+  k <- ddalpha$numDirections
+
+  method = ddalpha$dmethod
+  
+  if (method == 0){
+    if (ddalpha$sameDirections){
+      rez <- .C("HDSpace", as.double(x), as.integer(ncol(points)), as.integer(c), as.integer(ddalpha$numPatterns), as.integer(k), as.integer(1), as.integer(ddalpha$seed), dspc=double(nrow(points)*ddalpha$numPatterns), dirs=double(k*ncol(points)), prjs=double(k*nrow(points)))
+      return (list(dspace=matrix(rez$dspc, nrow=nrow(points), ncol=ddalpha$numPatterns, byrow=TRUE), directions=rez$dirs, projections=rez$prjs))
+    }else{
+      rez <- .C("HDSpace", as.double(x), as.integer(ncol(points)), as.integer(c), as.integer(ddalpha$numPatterns), as.integer(k), as.integer(0), as.integer(ddalpha$seed), dspc=double(nrow(points)*ddalpha$numPatterns), dirs=double(k*ncol(points)), prjs=double(k*nrow(points)))
+      return (list(dspace=matrix(rez$dspc, nrow=nrow(points), ncol=ddalpha$numPatterns, byrow=TRUE), directions=0, projections=0))
+    }
+  } else 
+    if (method %in% 1:3){
+      
+      ds <- .C("HDepthSpaceEx", 
+               as.double(x), 
+               as.double(x), 
+               as.integer(c), 
+               as.integer(length(cardinalities)), 
+               as.integer(nrow(points)),  
+               as.integer(ncol(points)), 
+               as.integer(method), 
+               depths=double(nrow(points)*length(cardinalities)))$depths  
+      
+      return (list(dspace=matrix(ds, nrow=nrow(points), ncol=ddalpha$numPatterns, byrow=F)))
+    }
+  else 
+    stop("wrong choise of the algorithm, method = ", method)
+}
+
+.halfspace_depths <- function(ddalpha, objects){
+  points <- NULL
+  cardinalities <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    points <- rbind(points, ddalpha$patterns[[i]]$points)
+    cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+  }
+  x <- as.vector(t(points))
+  y <- as.vector(t(objects))
+  c <- as.vector(cardinalities)
+  k <- ddalpha$numDirections
+  method <- ddalpha$dmethod
+  if (method == 0){
+    if (ddalpha$sameDirections){
+      result <- .C("HDepth", 
+                   as.double(x), 
+                   as.double(y), 
+                   as.integer(nrow(objects)), 
+                   as.integer(ncol(points)), 
+                   as.integer(c), 
+                   as.integer(ddalpha$numPatterns), 
+                   as.double(ddalpha$directions), 
+                   as.double(ddalpha$projections), 
+                   as.integer(k), 
+                   as.integer(1), 
+                   as.integer(ddalpha$seed),
+                   depths=double(ddalpha$numPatterns*nrow(objects)))
+    }else{
+      result <- .C("HDepth", 
+                   as.double(x), 
+                   as.double(y), 
+                   as.integer(nrow(objects)), 
+                   as.integer(ncol(points)), 
+                   as.integer(c), 
+                   as.integer(ddalpha$numPatterns), 
+                   dirs=double(k*ncol(points)), 
+                   prjs=double(k*nrow(points)),
+                   as.integer(k), 
+                   as.integer(0), 
+                   as.integer(ddalpha$seed),
+                   depths=double(ddalpha$numPatterns*nrow(objects)))
+    }
+  }
+  else
+    if (method %in% 1:3){
+      
+      ds <- .C("HDepthSpaceEx", 
+               as.double(x), 
+               as.double(y), 
+               as.integer(c), 
+               as.integer(length(cardinalities)), 
+               as.integer(nrow(objects)),  
+               as.integer(ncol(points)), 
+               as.integer(method), 
+               depths=double(nrow(objects)*length(cardinalities)))$depths  
+      
+      depths <- matrix(ds, nrow=nrow(objects), ncol=length(cardinalities), byrow=F)
+      return (depths)
+  }
+  else 
+    stop("wrong choise of the algorithm, method = ", method)
+  return (matrix(result$depths, nrow=nrow(objects), ncol=ddalpha$numPatterns, byrow=TRUE))
+}
+
+.zonoid_depths <- function(ddalpha, objects, ownPattern = 0){
+  depths <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    pattern <- ddalpha$patterns[[i]]$points
+    x <- as.vector(t(pattern))
+    y <- as.vector(t(objects))
+    ds <- .C("ZDepth", as.double(x), as.double(y), as.integer(nrow(pattern)), as.integer(nrow(objects)), 
+             as.integer(ncol(pattern)), as.integer(ddalpha$seed), depths=double(nrow(objects)))$depths
+    if (i == ownPattern){
+      ds <- replace(ds, which(ds < 1/nrow(pattern) - sqrt(.Machine$double.eps)), 1/nrow(pattern))
+    }else{
+      ds <- replace(ds, which(ds < 1/nrow(pattern) - sqrt(.Machine$double.eps)), 0)
+    }
+    depths <- cbind(depths, ds)
+  }
+  return (depths)
+}
+
+.estimate_moments <- function(ddalpha){
+  for (i in 1:ddalpha$numPatterns){
+    if (ddalpha$mahEstimate == "moment"){
+      
+      ddalpha$patterns[[i]]$center <- colMeans(ddalpha$patterns[[i]]$points)
+      ddalpha$patterns[[i]]$cov    <- cov(ddalpha$patterns[[i]]$points)
+      try(
+        ddalpha$patterns[[i]]$sigma  <- solve(ddalpha$patterns[[i]]$cov)
+      )        
+    }
+    if (ddalpha$mahEstimate == "MCD"){
+      try(
+        estimate <- covMcd(ddalpha$patterns[[i]]$points, ddalpha$mahParMcd)
+      )
+      try(
+        ddalpha$patterns[[i]]$center <- estimate$center
+      )
+      try(
+        ddalpha$patterns[[i]]$cov    <- estimate$cov
+      )
+      try(
+        ddalpha$patterns[[i]]$sigma  <- solve(estimate$cov)
+      )
+    }
+  }
+  return(ddalpha)
+}
+
+.Mahalanobis_learn <- function(ddalpha){
+
+  if (is.null(ddalpha$mahPriors)){
+    ddalpha$mahPriors <- c()
+    for (i in 1:ddalpha$numPatterns){
+      ddalpha$mahPriors[i] <- ddalpha$patterns[[i]]$cardinality/ddalpha$numPoints
+    }
+  }
+  
+  ddalpha <- .estimate_moments(ddalpha)
+  
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$depths <- .Mahalanobis_depths(ddalpha, ddalpha$patterns[[i]]$points)
+  }
+  
+  return(ddalpha)
+}
+
+.Mahalanobis_depths <- function(ddalpha, objects){
+  depths <- NULL
+  for (j in 1:ddalpha$numPatterns){
+    depths <- cbind(depths, .Mahalanobis_depth (objects, center = ddalpha$patterns[[j]]$center, sigma = ddalpha$patterns[[j]]$sigma))
+  }
+  return (depths)
+}
+
+.Mahalanobis_depth <- function(points, center = colMeans(points), sigma = solve(cov(points))){
+  if (is.data.frame(points))
+    points <- as.matrix(points, drop = F)
+  if(is.vector(points))
+    points <- t(as.matrix(points, drop = F))
+  if (!is.matrix(points))
+    stop("Wrong format of 'points'")
+  
+  i = 1; step = 200
+  d <- NULL
+  while (i<=nrow(points)){
+    tmp1 <- t(t(points[i:min(i+step, nrow(points)),, drop = F]) - center)
+
+    dd <- diag(tmp1 %*% sigma %*% t(tmp1))
+    d <- c(d,1/(1 + dd))
+    i = i+1+step
+  }
+
+   # d <- 1/(1 + (points - center) %*% sigma %*% t(points - center))
+  return (d)
+}
+
+.projection_space <- function(ddalpha){
+  points <- NULL
+  cardinalities <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    points <- rbind(points, ddalpha$patterns[[i]]$points)
+    cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+  }
+  if (ddalpha$dmethod == "random"){
+    x <- as.vector(t(points))
+    y <- as.vector(t(points))
+    c <- as.vector(cardinalities)
+    k <- ddalpha$numDirections
+    result <- .C("ProjectionDepth", 
+                 as.double(x), 
+                 as.double(y), 
+                 as.integer(nrow(points)), 
+                 as.integer(ncol(points)), 
+                 as.integer(c), 
+                 as.integer(ddalpha$numPatterns), 
+                 dirs=double(k*ncol(points)), 
+                 prjs=double(k*nrow(points)), 
+                 as.integer(k), 
+                 as.integer(1), 
+                 as.integer(ddalpha$seed),
+                 dspc=double(ddalpha$numPatterns*nrow(points)))
+    return (list(dspace=matrix(result$dspc, nrow=nrow(points), 
+                               ncol=ddalpha$numPatterns, byrow=TRUE), 
+                 directions=result$dirs, projections=result$prjs))
+  }
+  if (ddalpha$dmethod == "linearize"){
+    depths <- NULL
+    for (i in 1:ddalpha$numPatterns){
+      ds <- .zdepth(ddalpha$patterns[[i]]$points, points)
+      depths <- cbind(depths, ds)
+    }
+    return (list(dspace=depths))
+  }
+}
+
+.projection_depths <- function(ddalpha, objects){
+  points <- NULL
+  cardinalities <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    points <- rbind(points, ddalpha$patterns[[i]]$points)
+    cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+  }
+  if (ddalpha$dmethod == "random"){
+    x <- as.vector(t(points))
+    y <- as.vector(t(objects))
+    c <- as.vector(cardinalities)
+    k <- ddalpha$numDirections
+    result <- .C("ProjectionDepth", 
+                 as.double(x), 
+                 as.double(y), 
+                 as.integer(nrow(objects)), 
+                 as.integer(ncol(points)), 
+                 as.integer(c), 
+                 as.integer(ddalpha$numPatterns), 
+                 as.double(ddalpha$directions), 
+                 as.double(ddalpha$projections), 
+                 as.integer(k), 
+                 as.integer(0), 
+                 as.integer(ddalpha$seed),
+                 depths=double(ddalpha$numPatterns*nrow(objects)))
+    return (matrix(result$depths, nrow=nrow(objects), ncol=ddalpha$numPatterns, byrow=TRUE))
+  }
+  if (ddalpha$dmethod == "linearize"){
+    depths <- NULL
+    for (i in 1:ddalpha$numPatterns){
+      ds <- .zdepth(ddalpha$patterns[[i]]$points, objects)
+      depths <- cbind(depths, ds)
+    }
+    return (depths)
+  }
+}
+
+.simplicialVolume_depths <- function(ddalpha, objects){
+  if (is.data.frame(objects))
+    objects = as.matrix(objects)
+  depths <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    pattern <- ddalpha$patterns[[i]]$points
+    
+    points <- as.vector(t(pattern))
+    x <- as.vector(t(objects))
+    ds <- .C("OjaDepth", 
+             as.double(points), 
+             as.double(x), 
+             as.integer(nrow(pattern)), 
+             as.integer(nrow(objects)), 
+             as.integer(ncol(pattern)), 
+             as.integer(ddalpha$seed),
+             as.integer(ddalpha$d_exact),
+             as.integer(.longtoint(ddalpha$d_k)),
+             depths=double(nrow(objects)))$depths
+    depths <- cbind(depths, ds, deparse.level = 0)
+  }  
+  return (depths) 
+}
+
+.simplicial_depths <- function(ddalpha, objects){
+  if (is.data.frame(objects))
+    objects = as.matrix(objects)
+  depths <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    pattern <- ddalpha$patterns[[i]]$points
+    
+    points <- as.vector(t(pattern))
+    x <- as.vector(t(objects))
+    ds <- .C("SimplicialDepth", 
+             as.double(points), 
+             as.double(x), 
+             as.integer(nrow(pattern)), 
+             as.integer(nrow(objects)), 
+             as.integer(ncol(pattern)), 
+             as.integer(ddalpha$seed),
+             as.integer(ddalpha$d_exact),
+             as.integer(.longtoint(ddalpha$d_k)),           
+             depths=double(nrow(objects)))$depths
+    depths <- cbind(depths, ds, deparse.level = 0)
+  }  
+  return (depths) 
+}
+
+
+
+.spatial_learn <- function(ddalpha){
+  if (ddalpha$mahEstimate == "none"){
+    for (i in 1:ddalpha$numPatterns){
+        ddalpha$patterns[[i]]$center <- colMeans(ddalpha$patterns[[i]]$points)
+        ddalpha$patterns[[i]]$cov <- NA
+    }
+  }else{
+    ddalpha <- .estimate_moments(ddalpha)
+  }
+  
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$depths <- .spatial_depths(ddalpha, ddalpha$patterns[[i]]$points)
+  }
+  
+  return(ddalpha)
+}
+
+.spatialLocal_learn <- function(ddalpha){
+  
+  ddalpha <- .estimate_moments(ddalpha)
+  
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$depths <- .spatialLocal_depths(ddalpha, ddalpha$patterns[[i]]$points)
+  }
+  
+  return(ddalpha)
+}
+
+.spatial_depths <- function(ddalpha, objects){
+  if (is.data.frame(objects))
+    objects = as.matrix(objects)
+  depths <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    pattern <- ddalpha$patterns[[i]]$points
+    mean <- ddalpha$patterns[[i]]$center
+    cov <- ddalpha$patterns[[i]]$cov
+    suppressWarnings(
+    if(!is.na(cov)){
+      cov.eig <- eigen(cov)
+      B <- cov.eig$vectors %*% diag(sqrt(cov.eig$values))
+      lambda <- solve(B)
+    } else{
+      lambda = diag(ncol(pattern))
+    })
+    ds <- rep(-1, nrow(objects))
+    for (i in 1:nrow(objects)){
+      tmp1 <- t(lambda %*% (objects[i,] - t(pattern)))
+      tmp1 <- tmp1[which(rowSums(tmp1) != 0),]
+      tmp2 <- 1/sqrt(rowSums(tmp1^2))
+      ds[i] <- 1 - sqrt(sum((colSums(tmp2*tmp1)/nrow(pattern))^2))
+    }
+    depths <- cbind(depths, ds)
+  }
+  return (depths)
+}
+
+.spatialLocal_depths <- function(ddalpha, objects){
+  depths <- NULL
+  for (i in 1:ddalpha$numPatterns){
+    depths <- cbind(depths, depth.spatial.local(objects, ddalpha$patterns[[i]]$points, ddalpha$kernel.bandwidth[i]))
+  }
+  return (depths)
+}
+
+.NONE_depths <- function(ddalpha, objects){
+  depths <- matrix(0, ncol = ddalpha$numPatterns, nrow = nrow(objects))
+  
+  return (depths)
+}
+#==========================================================
+
+.alpha_learnOLD <- function(maxDegree, data, numClass1, numClass2, numChunks, debug = F){
+  points <- as.vector(t(data))
+  numPoints <- numClass1 + numClass2
+  dimension <- ncol(data)
+  cardinalities <- c(numClass1, numClass2)
+  upToPower <- maxDegree
+  minFeatures <- 2
+  maxExtDimension <- (factorial(dimension + maxDegree) / (factorial(dimension)*factorial(maxDegree))) - 1;
+  
+  p <- .C("AlphaLearnCV", as.double(points), as.integer(numPoints), as.integer(dimension), as.integer(cardinalities),  as.integer(upToPower), as.integer(numChunks), as.integer(minFeatures), as.integer(debug), portrait=double(maxExtDimension + 1))$portrait
+  
+  degree <- p[1];
+  extDimension <- (factorial(dimension + degree) / (factorial(dimension)*factorial(degree))) - 1;
+  d <- 0
+  for (i in 2:(extDimension + 1)){
+    if (p[i] != 0){
+      d <- d + 1
+    }
+  }
+  return(list(por=p,dim=d,deg=degree))
+}
+
+.parse.methods <- function(methods){
+  if (!is.vector(methods) || length(methods) <= 0){return(list())}
+  methods.refined <- unique(toupper(methods))
+  
+  treatments.settings <- list()
+  counter <- 1
+  for (i in 1:length(methods.refined)){
+    supported <- FALSE
+    if (methods.refined[i] == "LDA"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "LDA", 
+             method = "LDA", 
+             priors = NULL, 
+             lda = NULL), 
+        .Names = c("name", "method", "priors", "lda"))
+    }
+    if (methods.refined[i] == "QDA"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "QDA", 
+             method = "QDA", 
+             priors = NULL, 
+             qda = NULL))
+    }
+    if (methods.refined[i] == "KNNAFF"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "KNNAff", 
+             method = "KNNAff", 
+             knnAff.methodAggregation = "majority", 
+             knnAff.range = -1, 
+             knnAff.k = -1, 
+             knnAff.classifiers = NULL), 
+        .Names = c("name", "method", "knnAff.methodAggregation", "knnAff.range", "knnAff.k", "knnAff.classifiers"))
+    }
+    if (methods.refined[i] == "KNN"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "KNN", 
+             method = "KNN", 
+             knn.range = -1, 
+             knn.k = -1, 
+             knn.train = NULL, 
+             knn.cl = NULL), 
+        .Names = c("name", "method", "knn.range", "knn.k", "knn.train", "knn.cl"))
+    }
+    if (methods.refined[i] == "DEPTH.MAHALANOBIS"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "depth.Mahalanobis", 
+             method = "depth.Mahalanobis", 
+             mah.estimate = "moment", 
+             priors = NULL, 
+             mah.classes = NULL, 
+             mcd.alpha = 0.5), 
+        .Names = c("name", "method", "mah.estimate", "priors", "mah.classes", "mcd.alpha"))
+    }
+    if (methods.refined[i] == "RANDEQUAL"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "RandEqual", 
+             method = "RandEqual"), 
+        .Names = c("name", "method"))
+    }
+    if (methods.refined[i] == "RANDPROP"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "RandProp", 
+             method = "RandProp", 
+             priors = NULL), 
+        .Names = c("name", "method", "priors"))
+    }
+    if (methods.refined[i] == "IGNORE"){
+      supported <- TRUE
+      treatment.settings <- structure(
+        list(name = "Ignore", 
+             method = "Ignore"), 
+        .Names = c("name", "method"))
+    }
+    if (supported){
+      treatments.settings[[counter]] <- treatment.settings
+      counter <- counter + 1
+    }
+  }
+  return(treatments.settings)
+}
+
+.parse.settings <- function(ddalpha, settings){
+  if (!is.list(settings) || length(settings) <= 0){return(list())}
+  treatments.names <- c()
+  
+  treatments.settings <- list()
+  counter <- 1
+  for (i in 1:length(settings)){
+    supported <- FALSE
+    if (!is.list(settings[[i]]) 
+        || is.null(settings[[i]]$name) 
+        || is.null(settings[[i]]$method)){
+      warning("In treatment number ", i, ": The treatment has unacceptable format. The treatment will be ignored")
+      next
+    }
+    if (!is.character(settings[[i]]$method) 
+        || length(settings[[i]]$method) != 1 
+        || !(toupper(settings[[i]]$method) %in% ddalpha$treatments)){
+      warning("In treatment number ", i, ": The method name of the treatment is not acceptable. The treatment will be ignored")
+      next
+    }
+    if (!is.character(settings[[i]]$name) 
+        || length(settings[[i]]$name) != 1){
+      warning("In treatment number ", i, ": The name of the treatment is not acceptable. The treatment will be ignored")
+      next
+    }
+    if (settings[[i]]$name %in% treatments.names){
+      warning("In treatment number ", i, ": Treatment with the name ", settings[[i]]$name, " already exists. The treatment will be ignored")
+      next
+    }else{
+      treatments.names <- c(treatments.names, settings[[i]]$name)
+    }
+    if (toupper(settings[[i]]$method) == "LDA"){
+      tmp.name <- settings[[i]]$name
+      if (!is.vector(settings[[i]]$priors, mode = "double") 
+          || is.na(min(settings[[i]]$priors)) 
+          || length(settings[[i]]$priors) != ddalpha$numPatterns 
+          || min(settings[[i]]$priors) <= 0 
+          || max(settings[[i]]$priors) <= 0){
+        warning("In treatment number ", i, ": Argument \"priors\" not specified correctly. Defaults in the form of class portions are applied")
+        tmp.priors <- NULL
+      }else{
+        tmp.priors <- settings[[i]]$priors/sum(settings[[i]]$priors)
+      }
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "LDA", 
+             priors = tmp.priors, 
+             lda = NULL), 
+        .Names = c("name", "method", "priors", "lda"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "KNNAFF"){
+      tmp.name <- settings[[i]]$name
+      if (!is.character(settings[[i]]$knnAff.methodAggregation) 
+          || length(settings[[i]]$knnAff.methodAggregation) != 1 
+          || !(settings[[i]]$knnAff.methodAggregation %in% c("majority", "sequent"))){
+        warning("In treatment number ", i, ": Argument \"knnAff.methodAggregation\" not specified correctly. \"majority\" is used as a default value")
+        tmp.knnAff.methodAggregation <- "majority"
+      }else{
+        tmp.knnAff.methodAggregation <- settings[[i]]$knnAff.methodAggregation
+      }
+      if (!is.numeric(settings[[i]]$knnAff.range) 
+          || is.na(settings[[i]]$knnAff.range) 
+          || length(settings[[i]]$knnAff.range) != 1 
+          || !.is.wholenumber(settings[[i]]$knnAff.range) 
+          || !(settings[[i]]$knnAff.range >= 2 
+               && settings[[i]]$knnAff.range <= (ddalpha$patterns[[ddalpha$numPatterns]]$cardinality + ddalpha$patterns[[ddalpha$numPatterns - 1]]$cardinality - 1) 
+               || settings[[i]]$knnAff.range == -1)){
+        warning("In treatment number ", i, ": Argument \"knnAff.range\" not specified correctly. Defaults are applied")
+        tmp.knnAff.range <- -1
+      }else{
+        tmp.knnAff.range <- settings[[i]]$knnAff.range
+      }
+      if (!is.numeric(settings[[i]]$knnAff.k) 
+          || is.na(settings[[i]]$knnAff.k) 
+          || length(settings[[i]]$knnAff.k) != 1 
+          || !.is.wholenumber(settings[[i]]$knnAff.k) 
+          || !(settings[[i]]$knnAff.k >= 1 
+               && settings[[i]]$knnAff.k <= (ddalpha$patterns[[ddalpha$numPatterns]]$cardinality + ddalpha$patterns[[ddalpha$numPatterns - 1]]$cardinality) 
+               || settings[[i]]$knnAff.k == -1)){
+        warning("In treatment number ", i, ": Argument \"knnAff.k\" not specified correctly. Defaults are applied")
+        tmp.knnAff.k <- -1
+      }else{
+        tmp.knnAff.k <- settings[[i]]$knnAff.k
+      }
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "KNNAff", 
+             knnAff.methodAggregation = tmp.knnAff.methodAggregation, 
+             knnAff.range = tmp.knnAff.range, 
+             knnAff.k = tmp.knnAff.k, 
+             knnAff.classifiers = NULL), 
+        .Names = c("name", "method", "knnAff.methodAggregation", "knnAff.range", "knnAff.k", "knnAff.classifiers"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "KNN"){
+      tmp.name <- settings[[i]]$name
+      if (!is.numeric(settings[[i]]$knn.range) 
+          || is.na(settings[[i]]$knn.range) 
+          || length(settings[[i]]$knn.range) != 1 
+          || !.is.wholenumber(settings[[i]]$knn.range) 
+          || !(settings[[i]]$knn.range >= 2 
+               && settings[[i]]$knn.range <= (ddalpha$numPoints - 1) 
+               || settings[[i]]$knn.range == -1)){
+        warning("In treatment number ", i, ": Argument \"knn.range\" not specified correctly. Defaults are applied")
+        tmp.knn.range <- -1
+      }else{
+        tmp.knn.range <- settings[[i]]$knn.range
+      }
+      if (!is.numeric(settings[[i]]$knn.k) 
+          || is.na(settings[[i]]$knn.k) 
+          || length(settings[[i]]$knn.k) != 1 
+          || !.is.wholenumber(settings[[i]]$knn.k) 
+          || !(settings[[i]]$knn.k >= 1 
+               && settings[[i]]$knn.k <= (ddalpha$numPoints) 
+               || settings[[i]]$knn.k == -1)){
+        warning("In treatment number ", i, ": Argument \"knn.k\" not specified correctly. Defaults are applied")
+        tmp.knn.k <- -1
+      }else{
+        tmp.knn.k <- settings[[i]]$knn.k
+      }
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "KNN", 
+             knn.range = tmp.knn.range, 
+             knn.k = tmp.knn.k, 
+             knn.train = NULL, 
+             knn.cl = NULL), 
+        .Names = c("name", "method", "knn.range", "knn.k", "knn.train", "knn.cl"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "DEPTH.MAHALANOBIS"){
+      tmp.name <- settings[[i]]$name
+      if (!is.character(settings[[i]]$mah.estimate) 
+          || length(settings[[i]]$mah.estimate) != 1 
+          || !(settings[[i]]$mah.estimate %in% c("moment", "MCD"))){
+        warning("In treatment number ", i, ": Argument \"mah.estimate\" not specified correctly. \"moment\" is used as a default value")
+        tmp.mah.estimate <- "moment"
+      }else{
+        tmp.mah.estimate <- settings[[i]]$mah.estimate
+      }
+      if (!is.vector(settings[[i]]$priors, mode = "double") 
+          || is.na(min(settings[[i]]$priors)) 
+          || length(settings[[i]]$priors) != ddalpha$numPatterns 
+          || min(settings[[i]]$priors) <= 0 
+          || max(settings[[i]]$priors) <= 0){
+        warning("In treatment number ", i, ": Argument \"priors\" not specified correctly. Defaults in the form of class portions are applied")
+        tmp.priors <- NULL
+      }else{
+        tmp.priors <- settings[[i]]$priors/sum(settings[[i]]$priors)
+      }
+      if (!is.vector(settings[[i]]$mcd.alpha, mode = "double") 
+          || is.na(min(settings[[i]]$mcd.alpha)) 
+          || length(settings[[i]]$mcd.alpha) != 1 
+          || settings[[i]]$mcd.alpha < 0.5 
+          || settings[[i]]$mcd.alpha > 1){
+        if (tmp.mah.estimate == "MCD"){
+          warning("In treatment number ", i, ": Argument \"mcd.alpha\" not specified correctly. 0.75 is used as a default value")
+        }
+        tmp.mcd.alpha <- 0.75
+      }else{
+        tmp.mcd.alpha <- settings[[i]]$mcd.alpha
+      }
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "depth.Mahalanobis", 
+             mah.estimate = tmp.mah.estimate, 
+             priors = tmp.priors, 
+             mah.classes = NULL, 
+             mcd.alpha = tmp.mcd.alpha), 
+        .Names = c("name", "method", "mah.estimate", "priors", "mah.classes", "mcd.alpha"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "RANDEQUAL"){
+      tmp.name <- settings[[i]]$name
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "RandEqual"), 
+        .Names = c("name", "method"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "RANDPROP"){
+      tmp.name <- settings[[i]]$name
+      if (!is.vector(settings[[i]]$priors, mode = "double") 
+          || is.na(min(settings[[i]]$priors)) 
+          || length(settings[[i]]$priors) != ddalpha$numPatterns 
+          || min(settings[[i]]$priors) <= 0 
+          || max(settings[[i]]$priors) <= 0){
+        warning("In treatment number ", i, ": Argument \"priors\" not specified correctly. Defaults in the form of class portions are applied")
+        tmp.priors <- NULL
+      }else{
+        tmp.priors <- settings[[i]]$priors/sum(settings[[i]]$priors)
+      }
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "RandProp", 
+             priors = NULL), 
+        .Names = c("name", "method", "priors"))
+      supported <- TRUE
+    }
+    if (toupper(settings[[i]]$method) == "IGNORE"){
+      tmp.name <- settings[[i]]$name
+      treatment.settings <- structure(
+        list(name = tmp.name, 
+             method = "Ignore"), 
+        .Names = c("name", "method"))
+      supported <- TRUE
+    }
+    if (supported){
+      treatments.settings[[counter]] <- treatment.settings
+      counter <- counter + 1
+    }
+  }
+
+  return (treatments.settings)
+}
+
+.lda_learn <- function(ddalpha, settings){
+  settings$lda <- MASS::lda(formula=as.formula("CLASS ~ ."), data=ddalpha$raw, priors=settings$priors)
+  settings$priors <- settings$lda$prior
+  return (settings)
+}
+
+.lda_classify <- function(objects, ddalpha, settings){
+  if (!is.data.frame(objects)) objects = as.data.frame(objects)
+  names(objects) <- names(ddalpha$raw)[1:ncol(objects)]
+  return (as.list(predict(settings$lda, objects)$class))
+}
+
+.qda_learn <- function(ddalpha, settings){
+  settings$qda <- MASS::qda(formula=as.formula("CLASS ~ ."), data=ddalpha$raw, priors=settings$priors)
+  settings$priors <- settings$qda$prior
+  return (settings)
+}
+
+.qda_classify <- function(objects, ddalpha, settings){
+  if (!is.data.frame(objects)) objects = as.data.frame(objects)
+  names(objects) <- names(ddalpha$raw)[1:ncol(objects)]
+  return (as.list(predict(settings$qda, objects)$class))
+}
+
+.knnAff_learn <- function(ddalpha, settings){
+  counter <- 1
+  # Determining multi-class behaviour
+  if (settings$knnAff.methodAggregation == "majority"){
+    for (i in 1:(ddalpha$numPatterns - 1)){
+      for (j in (i + 1):ddalpha$numPatterns){
+        # Creating a classifier
+        classifier.index          <- counter
+        classifier.index1         <- i
+        classifier.index2         <- j
+        classifier.points         <- as.double(t(rbind(ddalpha$patterns[[i]]$points, ddalpha$patterns[[j]]$points)))
+        classifier.cardinalities  <- as.integer(c(ddalpha$patterns[[i]]$cardinality, ddalpha$patterns[[j]]$cardinality))
+        if (settings$knnAff.k < 1 || settings$knnAff.k > (ddalpha$patterns[[i]]$cardinality + ddalpha$patterns[[j]]$cardinality - 1))
+        {
+          if (settings$knnAff.range < 2 || settings$knnAff.range > (ddalpha$patterns[[i]]$cardinality + ddalpha$patterns[[j]]$cardinality - 1)){
+            maxk <- 10*( (ddalpha$numPoints)^(1/ddalpha$dimension) ) + 1
+          }else{
+            maxk <- settings$knnAff.range
+          }
+          maxk <- min(maxk, ddalpha$patterns[[i]]$cardinality + ddalpha$patterns[[j]]$cardinality - 1)
+          maxk <- max(maxk, 2)
+          classifier.range <- maxk
+          classifier.k <- as.integer(.C("KnnAffInvLearnJK", 
+                             classifier.points, 
+                             as.integer(ddalpha$dimension), 
+                             classifier.cardinalities, 
+                             as.integer(maxk), 
+                             k=integer(1))$k)
+        }else{
+          classifier.range <- settings$knnAff.range
+          classifier.k <- as.integer(settings$knnAff.k)
+        }
+        # Adding the classifier to the list of classifiers
+        settings$knnAff.classifiers[[counter]] <- 
+          list(index = classifier.index, 
+               index1 = classifier.index1, 
+               index2 = classifier.index2, 
+               points = classifier.points, 
+               cardinalities = classifier.cardinalities, 
+               k = classifier.k, 
+               range = classifier.range)
+        counter <- counter + 1
+      }
+    }
+  }
+  if (settings$knnAff.methodAggregation == "sequent"){
+    for (i in 1:ddalpha$numPatterns){
+      anotherClass <- NULL
+      for (j in 1:ddalpha$numPatterns){
+        if (j != i){
+          anotherClass <- rbind(anotherClass, ddalpha$patterns[[j]]$points)
+        }
+      }
+      classifier.index          <- counter
+      classifier.index1         <- i
+      classifier.index2         <- -1
+      classifier.points         <- as.double(t(rbind(ddalpha$patterns[[i]]$points, anotherClass)))
+      classifier.cardinalities  <- as.integer(c(ddalpha$patterns[[i]]$cardinality, nrow(anotherClass)))
+      if (settings$knnAff.k < 1 || settings$knnAff.k > ddalpha$numPoints)
+      {
+        if (settings$knnAff.range < 2 || settings$knnAff.range > (ddalpha$numPoints - 1)){
+          maxk <- 10*( (ddalpha$numPoints)^(1/ddalpha$dimension) ) + 1
+        }else{
+          maxk <- settings$knnAff.range
+        }
+        maxk <- min(maxk, ddalpha$numPoints - 1)
+        maxk <- max(maxk, 2)
+        classifier.range <- maxk
+        classifier.k <- as.integer(.C("KnnAffInvLearnJK", 
+                           classifier.points, 
+                           as.integer(ddalpha$dimension), 
+                           classifier.cardinalities, 
+                           as.integer(maxk), 
+                           k=integer(1))$k)
+      }else{
+        classifier.range <- settings$knnAff.range
+        classifier.k <- as.integer(settings$knnAff.k)
+      }
+      # Adding the classifier to the list of classifiers
+      settings$knnAff.classifiers[[counter]] <- 
+        list(index = classifier.index, 
+             index1 = classifier.index1, 
+             index2 = classifier.index2, 
+             points = classifier.points, 
+             cardinalities = classifier.cardinalities, 
+             k = classifier.k, 
+             range = classifier.range)
+      counter <- counter + 1
+    }
+  }
+  return (settings)
+}
+
+.knnAff_classify <- function(objects, ddalpha, settings){
+  # Correct input data
+  if (!is.matrix(objects)){
+    objects <- matrix(objects, nrow=1)
+  }
+  # Initialization of the vote array
+  votes <- matrix(rep(0, nrow(objects)*ddalpha$numPatterns), nrow=nrow(objects), ncol=ddalpha$numPatterns)
+  for (i in 1:length(settings$knnAff.classifiers)){
+    res <- .C("KnnAffInvClassify", 
+              as.double(t(objects)), 
+              as.integer(nrow(objects)), 
+              settings$knnAff.classifiers[[i]]$points, 
+              as.integer(ddalpha$dimension), 
+              settings$knnAff.classifiers[[i]]$cardinalities, 
+              settings$knnAff.classifiers[[i]]$k, 
+              output=integer(nrow(objects)))$output
+    for (j in 1:nrow(objects)){
+      if (res[j] == 0){
+        votes[j,settings$knnAff.classifiers[[i]]$index1] <- votes[j,settings$knnAff.classifiers[[i]]$index1] + 1
+      }else{
+        votes[j,settings$knnAff.classifiers[[i]]$index2] <- votes[j,settings$knnAff.classifiers[[i]]$index2] + 1
+      }
+    }
+  }
+  # Collect results
+  results <- list()
+  for (i in 1:nrow(objects)){
+    results[[i]] <- ddalpha$patterns[[which.max(votes[i,])]]$name
+  }
+  return (results)
+}
+
+.knn_learn <- function(ddalpha, settings){
+  settings$knn.train <- ddalpha$raw[,1:ddalpha$dimension]
+  settings$knn.cl <- ddalpha$raw[,ddalpha$dimension + 1]
+  if (settings$knn.k < 1 || settings$knn.k > ddalpha$numPoints){
+    if (settings$knn.range < 1 || settings$knn.range > ddalpha$numPoints - 1){
+      settings$knn.range <- 10*( (ddalpha$numPoints)^(1/ddalpha$dimension) ) + 1
+      settings$knn.range <- min(settings$knn.range, ddalpha$numPoints - 1)
+      settings$knn.range <- max(settings$knn.range, 2)
+    }
+    cv.err <- c()
+    ks <- 1:settings$knn.range
+    for (i in ks){
+      newpre <- as.vector(class::knn.cv(settings$knn.train, settings$knn.cl, k = i))
+      cv.err <- c(cv.err, sum(settings$knn.cl != newpre))
+    }
+    settings$knn.k <- ks[which.min(cv.err)] 
+  }
+  return (settings)
+}
+
+.knn_classify <- function(objects, ddalpha, settings){
+  return (class::knn(settings$knn.train, objects, settings$knn.cl, settings$knn.k))
+}
+
+.mah_learn <- function(ddalpha, settings){
+  settings$mah.classes <- list()
+  if (is.null(settings$priors)){
+    settings$priors <- c()
+    for (i in 1:ddalpha$numPatterns){
+      settings$priors[i] <- ddalpha$patterns[[i]]$cardinality/ddalpha$numPoints
+    }
+  }
+  for (i in 1:ddalpha$numPatterns){
+    class.prior <- NULL
+    class.mean <- NULL
+    class.cov <- NULL
+    class.sigma <- NULL
+    class.prior <- settings$priors[i]
+    if (settings$mah.estimate == "moment"){
+      class.mean <- colMeans(ddalpha$patterns[[i]]$points)
+      class.cov <- cov(ddalpha$patterns[[i]]$points)
+      class.sigma <- solve(class.cov)
+    }
+    if (settings$mah.estimate == "MCD"){
+      estimate <- robustbase::covMcd(ddalpha$patterns[[i]]$points, alpha=settings$mcd.alpha)
+      class.mean <- estimate$center
+      class.cov <- estimate$cov
+      class.sigma <- solve(class.cov)
+    }
+    settings$mah.classes[[i]] <- structure(
+      list(index = i, 
+           prior = class.prior, 
+           mean = class.mean, 
+           cov = class.cov, 
+           sigma = class.sigma), 
+      .Names = c("index", "prior", "mean", "cov", "sigma"))
+  }
+  return (settings)
+}
+
+.mah_classify <- function(objects, ddalpha, settings){
+  # Correct input data
+  if (!is.matrix(objects)){
+    objects <- matrix(objects, nrow=1)
+  }
+  # Initialization of the vote array
+  votes <- matrix(rep(0, nrow(objects)*ddalpha$numPatterns), nrow=nrow(objects), ncol=ddalpha$numPatterns)
+  for (i in 1:nrow(objects)){
+    for (j in 1:length(settings$mah.classes)){
+      votes[i,j] <- settings$mah.classes[[j]]$prior*.Mahalanobis_depth(objects[i,], settings$mah.classes[[j]]$mean, settings$mah.classes[[j]]$sigma)
+    }
+  }
+  # Collect results
+  results <- list()
+  for (i in 1:nrow(objects)){
+    results[[i]] <- ddalpha$patterns[[which.max(votes[i,])]]$name
+  }
+  return (results)
+}
+
+.ignore_classify <- function(nobjects){
+  return (as.list(rep("Ignored", nobjects)))
+}
+
+.right_classify <- function(nobjects){
+  return (as.list(rep("Outsider", nobjects)))
+}
+
+.randequal_classify <- function(nobjects, ddalpha){
+  results <- list()
+  for (i in 1:nobjects){
+    results[[i]] <- ddalpha$patterns[[sample(1:ddalpha$numPatterns,1)]]$name
+  }
+  return (results)
+}
+
+.randprop_classify <- function(nobjects, ddalpha, settings){
+  priors <- settings$priors
+  if (is.null(priors)){
+    priors <- c()
+    for (i in 1:ddalpha$numPatterns){
+      priors[i] <- ddalpha$patterns[[i]]$cardinality/ddalpha$numPoints
+    }
+  }
+  results <- list()
+  for (i in 1:nobjects){
+    results[[i]] <- ddalpha$patterns[[sample(1:ddalpha$numPatterns,1,prob = priors)]]$name
+  }
+  return (results)
+}
+
+# Function is taken from the R-documentation, "Examples" to the function "is.integer"
+.is.wholenumber <- function(x, tol = .Machine$double.eps^0.5)  abs(x - round(x)) < tol
+
+summary.ddalpha <- function(object, printseparators = T, ...){
+  x = object
+  if(!is.null(x$call)){
+      cat("Call: ", format(x$call), "\nResulting table: ", paste(x$colnames, collapse = ",   "),"\n")
+  }
+  
+  cat("ddalpha:\n")
+  cat("\t num.points = ", x$numPoints, 
+      ", dimension = ", x$dimension, 
+      ", num.patterns = ", x$numPatterns, "\n", sep="")
+  cat("\t depth = \"", x$methodDepth, "\"\n", sep="")
+  cat("\t separator = \"", x$methodSeparator, "\"\n", sep="")
+  cat("\t aggregation.method = \"", x$methodAggregation, "\"\n", sep="")
+  if (is.numeric(x$numChunks)) cat("\t num.chunks =", x$numChunks, "\n")
+  if (is.numeric(x$numDirections)) cat("\t num.directions =", x$numDirections, "\n")
+  cat("\t use.convex =", x$useConvex, "\n")
+  if (is.numeric(x$maxDegree)) cat("\t max.degree =", x$maxDegree, "\n")
+  cat("patterns:\n")
+  for (i in 1:length(x$patterns)){
+    cat("\t ");print(x$patterns[[i]])
+  }
+  cat("num.classifiers = ", x$numClassifiers, "\n")
+  if(x$numClassifiers == 1 || printseparators)
+    for (i in 1:x$numClassifiers){
+      print(x$classifiers[[i]], prefix = "\t ")
+    }
+  cat("outsider.methods:\n")
+  if (is.null(x$methodsOutsider)){
+    cat ("\t Absent\n", sep="")
+  }else{
+    for (i in 1:length(x$methodsOutsider)){
+      cat ("\t \"",x$methodsOutsider[[i]]$name, "\":\n", sep="")
+      cat("\t\t method = \"", x$methodsOutsider[[i]]$method, "\"\n", sep="")
+      if (   x$methodsOutsider[[i]]$method == "LDA" 
+          || x$methodsOutsider[[i]]$method == "RandProp" 
+          || x$methodsOutsider[[i]]$method == "depth.Mahalanobis"){
+        cat("\t\t priors =", x$methodsOutsider[[i]]$priors, "\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "KNNAff"){
+        cat("\t\t aggregation.method = \"", 
+            x$methodsOutsider[[i]]$knnAff.methodAggregation, "\"\n", sep="")
+        for (j in 1:length(x$methodsOutsider[[i]]$knnAff.classifiers)){
+          cat("\t\t k.range = ", format(paste("1:", 
+                                              x$methodsOutsider[[i]]$knnAff.classifiers[[j]]$range, sep=""), 
+                                        justify="right", width=10), sep="")
+        }
+        cat("\n")
+        for (j in 1:length(x$methodsOutsider[[i]]$knnAff.classifiers)){
+          cat("\t\t k       = ", format( 
+            x$methodsOutsider[[i]]$knnAff.classifiers[[j]]$k, 
+            justify="right", width=10), sep="")
+        }
+        cat("\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "KNN"){
+        cat("\t\t k.range = 1:", x$methodsOutsider[[i]]$knn.range, "\n", sep="")
+        cat("\t\t k =", x$methodsOutsider[[i]]$knn.k, "\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "depth.Mahalanobis"){
+        cat("\t\t estimate = \"", x$methodsOutsider[[i]]$mah.estimate, "\"\n", sep="")
+        if (x$methodsOutsider[[i]]$mah.estimate == "MCD"){
+          cat("\t\t mcd.alpha = ", x$methodsOutsider[[i]]$mcd.alpha, "\n")
+        }
+      }
+    }
+  }
+  invisible(x)
+}
+
+print.ddalpha <- function(x, printseparators = F, ...){
+  if(!is.null(x$call)){
+    cat("Call: ", format(x$call), "\nResulting table: ", paste(x$colnames, collapse = ",   "),"\n")
+  }
+
+  cat("depth = \"", x$methodDepth, "\"\n", sep="")
+  cat("separator = \"", x$methodSeparator, "\"\n", sep="")
+  cat("aggregation.method = \"", x$methodAggregation, "\"\n", sep="")
+  cat("patterns:\n")
+  for (i in 1:length(x$patterns)){
+    cat("\t ");print(x$patterns[[i]])
+  }
+  cat("num.classifiers = ", x$numClassifiers, "\n")
+  if(x$numClassifiers == 1 || printseparators)
+    for (i in 1:x$numClassifiers){
+      print(x$classifiers[[i]], prefix = "\t ", full = F)
+    }
+  cat("outsider.methods:\n")
+  if (is.null(x$methodsOutsider)){
+    cat ("\t Absent\n", sep="")
+  }else{
+    for (i in 1:length(x$methodsOutsider)){
+      cat("\t method = \"", x$methodsOutsider[[i]]$method, "\"\n", sep="")
+      if (   x$methodsOutsider[[i]]$method == "LDA" 
+             || x$methodsOutsider[[i]]$method == "RandProp" 
+             || x$methodsOutsider[[i]]$method == "depth.Mahalanobis"){
+        cat("\t priors =", x$methodsOutsider[[i]]$priors, "\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "KNNAff"){
+        cat("\t aggregation.method = \"", 
+            x$methodsOutsider[[i]]$knnAff.methodAggregation, "\"\n", sep="")
+        for (j in 1:length(x$methodsOutsider[[i]]$knnAff.classifiers)){
+          cat("\t k.range = ", format(paste("1:", 
+                                              x$methodsOutsider[[i]]$knnAff.classifiers[[j]]$range, sep=""), 
+                                        justify="right", width=10), sep="")
+        }
+        cat("\n")
+        for (j in 1:length(x$methodsOutsider[[i]]$knnAff.classifiers)){
+          cat("\t k       = ", format( 
+            x$methodsOutsider[[i]]$knnAff.classifiers[[j]]$k, 
+            justify="right", width=10), sep="")
+        }
+        cat("\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "KNN"){
+        cat("\t k.range = 1:", x$methodsOutsider[[i]]$knn.range, "\n", sep="")
+        cat("\t k =", x$methodsOutsider[[i]]$knn.k, "\n")
+      }
+      if (x$methodsOutsider[[i]]$method == "depth.Mahalanobis"){
+        cat("\t estimate = \"", x$methodsOutsider[[i]]$mah.estimate, "\"\n", sep="")
+        if (x$methodsOutsider[[i]]$mah.estimate == "MCD"){
+          cat("\t mcd.alpha = ", x$methodsOutsider[[i]]$mcd.alpha, "\n")
+        }
+      }
+    }
+  }
+  invisible(x)
+}
+
+print.ddalpha.pattern <- function(x, ...){
+  cat("pattern[", x$index, "]:", sep="")
+  cat("\t ", x$cardinality, " points, label = \"", x$name, "\"\n", sep="")
+  invisible(x)
+}
+
+print.ddalpha.alpha <- function(x, prefix = "", full = T, ...){
+  if(full){
+    cat(prefix,x$index, ". alpha:\n", sep="")
+    cat(prefix,"   degree: ", x$degree,"; axes: ", x$index1, ", ", x$index2, "\n", sep="")
+    cat(prefix,"   hyperplane: ", paste(x$hyperplane, collapse = ", "), "\n", sep="")
+  } else{
+    cat(prefix, x$index, ". degree: ", x$degree,"; axes: ", x$index1, ", ", x$index2, "\n", sep="")
+    cat(prefix,"   hyperplane: ", paste(x$hyperplane, collapse = ", "), "\n", sep="")
+  }
+  invisible(x)
+}
+print.ddalpha.polynomial <- function(x, prefix = "", full = T,...){
+  if(full){
+    cat(prefix,x$index, ". polynomial:\n", sep="")
+    cat(prefix,"   degree: ", x$degree,"; axes: ", x$index1, ", ", x$index2, ifelse(x$axis!=0, ", invert", ""), "\n", sep="")
+    cat(prefix,"   polynomial: ", paste(x$polynomial, collapse = ", "), "\n", sep="")
+  } else {
+    cat(prefix,x$index, ". degree: ", x$degree,"; axes: ", x$index1, ", ", x$index2, ifelse(x$axis!=0, ", invert", ""), "\n", sep="")
+    cat(prefix,"   polynomial: ", paste(x$polynomial, collapse = ", "), "\n", sep="")
+  }
+  invisible(x)
+}
+print.ddalpha.knnlm <- function(x, prefix = "", full = T,...){
+  if(full)
+    cat(prefix,"knnlm:  k = ", x$knnK, "\n", sep="")
+  else
+    cat(prefix,"k = ", x$knnK, "\n", sep="")
+  invisible(x)
+}
+print.ddalpha.maxD <- function(x, prefix = "", full = T,...){
+  if(full)
+    cat(prefix,"maximum depth separator\n")
+  invisible(x)
+}
+
+# .ddalpha.learn.knnlm <- function(ddalpha){
+#   
+#   # Prepare outputs and distance matrix
+#   y <- NULL
+#   allPoints <- NULL
+#   for (i in 1:ddalpha$numPatterns){
+#     allPoints<- rbind(allPoints, ddalpha$patterns[[i]]$depths)
+#     y <- c(y, rep(ddalpha$patterns[[i]]$name, ddalpha$patterns[[i]]$cardinality))
+#   }
+#   #  print(y)
+#   dists <- knn.dist(allPoints, dist.meth="maximum")
+#   #  plot(ddalpha$patterns[[1]]$depths, col = "red", xlim=c(0,1), ylim=c(0,1))
+#   #  points(ddalpha$patterns[[2]]$depths, col = "blue", xlim=c(0,1), ylim=c(0,1))
+#   # Cross-validate knn
+#   cvErr  <- c()
+#   allIndices <- 1:ddalpha$numPoints
+#   krange <- 10*( (ddalpha$numPoints)^(1/ddalpha$numPatterns) ) + 1
+#   krange <- min(krange, ceiling(ddalpha$numPoints/2))
+#   if (ddalpha$numPatterns == 2){krange <- min(krange, 50)}
+#   krange <- max(krange, 2)
+#   #  cat("Range: 1:", krange, ".\n", sep="")
+#   for (i in 1:krange){
+#     curPreErr <- 0
+#     for (j in 0:(ddalpha$numChunks - 1)){
+#       testSel <- allIndices[allIndices%%ddalpha$numChunks == j]
+#       test <- allIndices[testSel]
+#       train <- allIndices[-test]
+#       #      cat("1. Train: ", train, ", test: ", test, ".\n")
+#       curPreErr <- curPreErr + sum(knn.predict(train, test, y, dists, k=i, agg.meth="majority", ties.meth="first") != y[test])
+#     }
+#     cvErr <- c(cvErr, curPreErr)
+#     #    cat("i = ", i, "done.\n")
+#     #    print(cvErr)
+#   }
+#   # Collect results
+#   ddalpha$knnK <- (1:krange)[which.min(cvErr)]
+#   ddalpha$knnX <- allPoints
+#   ddalpha$knnY <- y
+#   ddalpha$knnD <- dists
+#   
+#   #  print(ddalpha$knnK)
+#   
+#   return (ddalpha)
+# }
diff --git a/R/ddalpha.classify.r b/R/ddalpha.classify.r
new file mode 100644
index 0000000..61d5d99
--- /dev/null
+++ b/R/ddalpha.classify.r
@@ -0,0 +1,193 @@
+################################################################################
+# File:             ddalpha.classify.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     15.05.2013
+# 
+# Contains the classification function of the DDalpha-classifier.
+# 
+# For a description of the algorithm, see:
+#   Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric 
+#     classification based on data depth. Statistical Papers.
+#   Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world 
+#     data with the DDalpha-procedure. Mimeo.
+################################################################################
+
+ddalpha.classify <- function(ddalpha, 
+                             objects,
+                             subset,
+                             outsider.method = NULL, 
+                             use.convex = NULL){
+  # Checks
+  if (!is.matrix(objects) && !is.data.frame(objects)){
+    objects <- matrix(objects, nrow=1)
+  }
+  if (!(is.matrix(objects) && is.numeric(objects)
+        || is.data.frame(objects) && prod(sapply(objects, is.numeric)))){
+    warning("Argument \"objects\" has unacceptable format. Classification can not be performed!!!")
+    return (NULL)
+  } 
+  
+  # convert using formula
+  if(!is.null(ddalpha$classif.formula)){
+    objects = model.frame(ddalpha$classif.formula, data = objects)
+  }
+  
+  if(!missing(subset))
+    objects = objects[subset,]
+  
+  if (ncol(objects) != ddalpha$dimension){
+    warning("Dimension of the objects to be classified does not correspond to the dimension of the trained classifier. Classification can not be performed!!!")
+    return (NULL)
+  }
+  
+  if (ddalpha$methodSeparator == "Dknn")
+    return(dknn.classify.trained(objects, ddalpha))
+  
+#  if (!is.character(outsider.method) 
+#      || length(outsider.method) != 1){
+#    warning("Argument \"outsidet.method\" not specified correctly. Outsiders will be ignored!!!")
+#    outsider.method <- NULL
+#  }
+  if (is.null(use.convex)){
+    use.convex <- ddalpha$useConvex
+  }
+  depths <- matrix(nrow=0, ncol=ddalpha$numPatterns) #?
+  freePoints <- matrix(nrow=0, ncol=ncol(objects)) #?
+  
+  if (is.null(ddalpha$methodDepth)){ #use only outsiders treatment
+    classifiableIndices <- c()
+    resultsDepths <- list()
+    freePoints <- objects
+  } 
+  else {
+  # Define points that can be classified by the DD-Alpha and the outsiders
+  if (use.convex){
+    points <- ddalpha$patterns[[1]]$points
+    cardinalities <- c(ddalpha$patterns[[1]]$cardinality)
+    for (i in 2:ddalpha$numPatterns){
+      points <- rbind(points, ddalpha$patterns[[i]]$points)
+      cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+    }
+    classifiable <- .are_classifiable(objects, points, cardinalities)
+    classifiableIndices <- which(classifiable == 1)
+    if (length(classifiableIndices) == 0){
+      depths <- matrix(nrow=0, ncol=ddalpha$numPatterns)
+      freePoints <- objects
+    }else{
+      depths <- .ddalpha.count.depths(ddalpha, objects[classifiableIndices,])
+      
+      freePoints <- matrix(objects[-classifiableIndices,,drop=F], 
+                           nrow=nrow(objects)-length(classifiableIndices))
+    }
+  }else{
+    ifelse(ddalpha$methodDepth == "ddplot",
+      depths <- objects,
+      depths <- .ddalpha.count.depths(ddalpha, objects) )
+
+    classifiableIndices <- c()
+    for (i in 1:nrow(depths)){
+      if (sum(depths[i,]) > 0){
+        classifiableIndices <- c(classifiableIndices, i)
+      }
+    }
+    if (length(classifiableIndices) == 0){
+      depths <- matrix(nrow=0, ncol=ddalpha$numPatterns)
+      freePoints <- objects
+    }else{
+      depths <- suppressWarnings( as.matrix(depths[classifiableIndices,,drop=F], 
+                       nrow=length(classifiableIndices), ncol=ddalpha$numPatterns))
+      freePoints <- # objects[-classifiableIndices,,drop=F]# 
+                suppressWarnings( as.matrix(objects[-classifiableIndices,,drop=F], 
+                           nrow=nrow(objects)-length(classifiableIndices), 
+                           ncol=ncol(objects)))
+    }
+  }
+  
+  # Classify with the pure DD classifiers
+  resultsDepths <- list()
+  if (nrow(depths) > 0){
+
+    fname = paste0(".", ddalpha$methodSeparator, "_classify")
+    classify <- .getFunction(fname)
+
+    resultsDepths1 <- list()
+    if (ddalpha$methodSeparatorBinary){
+      #### Binary classifiers
+      
+      votes <- matrix(rep(0, nrow(depths)*ddalpha$numPatterns), nrow=nrow(depths), ncol=ddalpha$numPatterns)
+      for (i in 1:ddalpha$numClassifiers){
+        xAxis <- ddalpha$classifiers[[i]]$index1
+        yAxis <- ddalpha$classifiers[[i]]$index2
+        
+        result <- classify(ddalpha, ddalpha$classifiers[[i]], depths)
+        
+        for (obj in 1:nrow(depths)){
+          if (result[obj] > 0){
+            votes[obj,xAxis] <- votes[obj,xAxis] + 1
+          }else{
+            votes[obj,yAxis] <- votes[obj,yAxis] + 1
+          }
+        }
+      }
+      for (i in 1:nrow(depths)){
+        resultsDepths[[i]] <- ddalpha$patterns[[which.max(votes[i,])]]$name
+      }
+    } else {
+      #### Multiclass classifiers
+      
+      indexes <- classify(ddalpha, ddalpha$classifiers[[1]], depths)
+      
+      for (i in 1:nrow(depths)){
+        resultsDepths[[i]] <- ddalpha$patterns[[indexes[i]]]$name
+      }
+    }
+
+  }
+  } # end if(!is.null(ddalpha$methodDepth))
+  
+  # Classify Outsiders
+  resultsOutsiders <- as.list(rep("Ignored", nrow(freePoints)))
+  freePoints
+  if (is.null(outsider.method) && length(ddalpha$methodsOutsider) == 1)
+    outsider.method = ddalpha$methodsOutsider[[1]]$name
+  if (length(resultsOutsiders) > 0 && !is.null(outsider.method)){
+    for (i in 1:length(ddalpha$methodsOutsider)){
+      if (toupper(ddalpha$methodsOutsider[[i]]$name) == toupper(outsider.method)){
+        resultsOutsiders <- .ddalpha.classify.outsiders(freePoints, ddalpha, ddalpha$methodsOutsider[[i]])
+        break
+      }
+    }
+  }
+  
+  # Merge classifiable and outsiders
+  if (length(resultsOutsiders) == 0)
+    results <- resultsDepths
+  else if(length(resultsDepths) == 0)
+    results <- resultsOutsiders
+  else{
+    results <- list()
+    counterDepths <- 1
+    counterOutsiders <- 1
+    for (i in 1:nrow(objects)){
+      if (i %in% classifiableIndices){
+        results[[i]] <- resultsDepths[[counterDepths]]
+        counterDepths <- counterDepths + 1
+      }else{
+        results[[i]] <- resultsOutsiders[[counterOutsiders]]
+        counterOutsiders <- counterOutsiders + 1
+      }
+    }
+  }
+
+  if (length(results) == 1) return(results[[1]])
+                       else return (results)
+}
+
+predict.ddalpha <- function(object, 
+                            objects, 
+                            subset,
+                            outsider.method = NULL, 
+                            use.convex = NULL, ...){
+  return(ddalpha.classify(object, objects, subset, outsider.method, use.convex))
+}
diff --git a/R/ddalpha.test.r b/R/ddalpha.test.r
new file mode 100644
index 0000000..3709531
--- /dev/null
+++ b/R/ddalpha.test.r
@@ -0,0 +1,100 @@
+ddalpha.test <- function(learn, test, ...){
+  ops <- options(warn = -1)
+  on.exit(options(ops))
+  
+  if(is.vector(test))
+    test = t(as.matrix(test))
+  
+  tryCatch({
+    time <- system.time(
+      ddalpha <- ddalpha.train(learn, ...)
+    )
+    C = ddalpha$dimension+1
+    cc = ddalpha.classify(objects = test[,-C], ddalpha = ddalpha)
+    if (is.numeric(test[,C])){
+      if(is.factor(cc[[1]]) || is.character(cc[[1]])){
+        cc <- unlist(lapply(cc, as.character))
+        cc[cc == "Ignored"] <- NA
+      }
+      equal = (cc == test[,C])
+    } else {
+      cc <- unlist(lapply(cc, as.numeric)) 
+      equal = (cc == as.numeric(test[,C]))      
+    }
+    
+    if(!(T %in% equal) && !(F %in% equal)) 
+    { return(NA)}
+    error = sum(!equal,na.rm = T)/(sum(!equal,na.rm = T)+sum(equal,na.rm = T))
+    return(list(error = error, correct = sum(equal,na.rm = T), incorrect = sum(!equal,na.rm = T), 
+                total = length(cc)-sum(is.na(equal)), ignored = sum(is.na(equal)), n = length(cc),
+                time = time[1])) 
+  }
+  #  tryCatch({}
+  , error = function(e) {
+    print ("ERROR T")
+    print (e)
+  }, finally = {          
+  })
+  return (NA)
+}
+
+
+ddalpha.getErrorRateCV <- function(data, numchunks = 10,  ...){
+  n = nrow(data)
+  numchunks = min(n, numchunks)
+  chunksize = ceiling(n/numchunks)
+  
+  sample = seq(from = 1, by = numchunks, length.out = chunksize)   
+  
+  errors = 0
+  total = 0
+  times = c()
+  
+  for (i in 1:numchunks){
+    sample = sample[sample<=n]
+    learn = data[-sample,,drop = F]
+    test  = data[sample,,drop = F]
+    
+    el = ddalpha.test(learn, test, ...)
+    if(is.list(el)){
+      errors = errors + el$incorrect
+      total = total + el$total
+      times = c(times,el$time)
+    }
+    
+    sample = sample+1
+  }
+  
+  return (list(errors = errors/total, time = mean(times), time_sd = sd(times)))  
+}
+
+
+ddalpha.getErrorRatePart <- function(data, size = 0.3, times = 10,  ...){
+  
+  if (!is.numeric(size) || size <=0 || size >= nrow(data)) stop("Wrong size of excluded sequences")
+  
+  if(size < 1)
+    size = max(1, size*nrow(data)) # at least 1 point
+  
+  size = as.integer(size)
+  
+  indexes = 1:nrow(data)
+  
+  errors = c()
+  total = 0
+  time = c()
+  
+  for (i in 1:times){
+    samp = sample(indexes, size)
+    learn = data[-samp,,drop = F]
+    test  = data[samp,,drop = F]
+    
+    el = ddalpha.test(learn, test, ...)
+    if(is.list(el)){
+      errors = c(errors,el$incorrect/el$total)
+      time = c(time,el$time)
+    }
+  }
+  
+  return (list(errors = mean(errors), errors_sd = sd(errors), errors_vec = errors, time = mean(time), time_sd = sd(time)))  
+}
\ No newline at end of file
diff --git a/R/ddalpha.train.r b/R/ddalpha.train.r
new file mode 100644
index 0000000..633db98
--- /dev/null
+++ b/R/ddalpha.train.r
@@ -0,0 +1,491 @@
+################################################################################
+# File:             ddalpha.train.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     28.02.2013
+# 
+# Contains the training function of the DDalpha-classifier.
+# 
+# For a description of the algorithm, see:
+#   Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric 
+#     classification based on data depth. Statistical Papers.
+#   Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world 
+#     data with the DDalpha-procedure. Mimeo.
+################################################################################
+
+ddalpha.train <- function(formula, data, subset,
+                          depth = "halfspace", 
+                          separator = "alpha", 
+                          outsider.methods = "LDA", 
+                          outsider.settings = NULL, 
+                          aggregation.method = "majority",
+                          pretransform = NULL,
+                          mah.parMcd = 0.75,
+                          use.convex = FALSE,
+                          seed = 0,
+                          
+                          ...
+                          
+                          #                           # knn
+                          #                           knnrange = NULL, 
+                          #                           # alpha
+                          #                           num.chunks = 10, 
+                          #                           max.degree = 3, 
+                          #                          
+#                           # halfspace depth
+                          #                           num.directions = 1000,                          
+                          #                           # Mahalanobis depth
+                          #                           mah.estimate = "moment", 
+                          #                           mah.parMcd = 0.75, 
+                          #                           mah.priors = NULL
+                          
+){
+  
+ 
+  # Raw data processing
+  ddalpha <- .ddalpha.create.structure(formula, data, subset, ...) 
+
+  # Check for data consistency #1 (moved to .ddalpha.create.structure)
+  #if (!(is.matrix(data) && is.numeric(data)
+  #    || is.data.frame(data) && prod(sapply(data[,-ncol(data)], is.numeric)))){
+  #  stop("Argument data has unacceptable format. Classifier can not be trained!!!")
+  #}
+  
+  # Check for data consistency #2
+  if (ddalpha$numPatterns < 2){
+    stop("Number of patterns is < 2. Classifier can not be trained!!!")
+  }
+  
+  # TODO ddalpha$numPatterns should be restricted from above as well
+  if (ddalpha$dimension < 2){
+    stop("Data dimension is < 2. Classifier can not be trained!!!")
+  }
+  
+  if(separator == "Dknn"){
+    dknn = dknn.train(ddalpha$raw, depth = depth, seed = seed, ...)
+    dknn$call = ddalpha$call
+    dknn$colnames = ddalpha$colnames
+    dknn$classif.formula = ddalpha$classif.formula
+    return(dknn)
+  }
+  
+  for (i in 1:ddalpha$numPatterns){
+    if (ddalpha$patterns[[i]]$cardinality < ddalpha$dimension + 1){
+      stop("At least in one patern number of the points < (dimension + 1). Classifier can not be trained!!!")
+    }
+  }
+  if (seed != 0){
+    set.seed(seed)
+  }
+  ddalpha$seed = seed
+  
+  ## Validating the properties
+  depthsThatNeedNoScaling = c("zonoid", "halfspace", "Mahalanobis", "projection", "spatial", "spatialLocal", "simplicial", "simplicialVolume", "ddplot") # note: "spatialLocal" thansforms the data inside, by itself
+  supportedDepths = c(depthsThatNeedNoScaling, "potential")
+  if (is.null(depth) || toupper(depth) %in% c("", "NULL", "NONE")){
+      ddalpha$methodDepth <- NULL
+      warning("Argument \"depth\" specified as NULL.")    
+  } else
+  if (!is.character(depth)
+      || length(depth) != 1){
+    stop("Argument \"depth\" not specified correctly.")
+  } else
+  if(!(depth %in% supportedDepths)){
+    fname = paste0(".", depth, "_validate")
+    f <- try(match.fun(fname), silent = T)
+    if (!is.function(f))
+      warning(paste0("No validator function: ", fname))
+    fname = paste0(".", depth, "_learn")
+    f <- (match.fun(fname))
+    if (!is.function(f))
+      stop(paste0("No function: ", fname))
+    fname = paste0(".", depth, "_depths")
+    f <- (match.fun(fname))
+    if (!is.function(f))
+      stop(paste0("No function: ", fname))
+    ddalpha$methodDepth <- depth
+  }else{
+    ddalpha$methodDepth <- depth
+  }
+  if (!is.character(separator)
+      || length(separator) != 1){
+    stop("Argument \"separator\" not specified correctly.")
+  } else
+  if(!(separator %in% c("alpha", "polynomial", "knnlm", "maxD"))){
+    fname = paste0(".", separator, "_validate")
+    f <- try(match.fun(fname), silent = T)
+    if (!is.function(f))
+      warning(paste0("No validator function: ", fname, ". Cannot set 'methodSeparatorBinary'."))
+    fname = paste0(".", separator, "_learn")
+    f <- (match.fun(fname))
+    if (!is.function(f))
+      stop(paste0("No function: ", fname))
+    fname = paste0(".", separator, "_classify")
+    f <- (match.fun(fname))
+    if (!is.function(f))
+      stop(paste0("No function: ", fname))
+    ddalpha$methodSeparator <- separator
+  }else{
+    ddalpha$methodSeparator <- separator
+  }
+  if (!is.character(aggregation.method)
+      || length(aggregation.method) != 1
+      || !(aggregation.method %in% c("majority", "sequent", "none"))){
+    ddalpha$methodAggregation <- "majority"
+    warning("Argument \"aggregation.method\" not specified correctly. \"majority\" is used as a default value")
+  }else{
+    ddalpha$methodAggregation <- aggregation.method
+    
+    ddalpha$methodSeparatorBinary = (aggregation.method !="none")
+  }
+  
+  ddalpha$needtransform = 0
+  if (!is.null(pretransform))
+    if (ddalpha$methodDepth %in% depthsThatNeedNoScaling){
+      warning("The used depth method is affine-invariant and pretransform doesn't influence the result. The data won't be transformed.")
+    } else if (pretransform == "1Mom" || pretransform == "1MCD"){
+      ddalpha$needtransform = 1
+      
+      if (pretransform == "1Mom")
+        mm <- mah.moment(data[,-ncol(data)])
+      else   # "1MCD"
+        mm <- mah.mcd(data[,-ncol(data)], mah.parMcd)              
+      
+      for (i in 1:ddalpha$numPatterns){
+        ddalpha$patterns[[i]]$transformer <- MahMomentTransformer(mm$mu, mm$b)
+        ddalpha$patterns[[i]]$points <- ddalpha$patterns[[i]]$transformer(ddalpha$patterns[[i]]$points)
+      }
+    } else if (pretransform == "NMom" || pretransform == "NMCD"){
+      ddalpha$needtransform = 2
+      
+      for (i in 1:ddalpha$numPatterns){
+        if (pretransform == "NMom")
+          mm <- mah.moment(ddalpha$patterns[[i]]$points)
+        else   # "NMCD"
+          mm <- mah.mcd(ddalpha$patterns[[i]]$points, mah.parMcd)
+        
+        ddalpha$patterns[[i]]$transformer <- MahMomentTransformer(mm$mu, mm$b)
+      }
+    } else {
+      warning("Argument pretransform has unacceptable format. The data won't be transformed.")
+    }  
+  
+  # appends ddalpha with the values from the given list (lst)
+  ddalpha.append <- function(lst){ if(is.list(lst)) for(k in names(lst))  ddalpha[[k]] <<- lst[[k]] }
+  # calls the validation method for the selected separator || depth
+  # NO errors or warnings if the function doesn't exist!!
+  # ddalpha is READONLY inside the validators
+  validate <- function(method_name){
+    f <- try(match.fun(paste0(".", method_name, "_validate")), silent = T)
+    if (is.function(f)){
+      lst  <- f(ddalpha, ...)
+      ddalpha.append(lst) 
+    }
+  }
+  
+  ## Separator parameters validation
+  
+  if (!is.null(ddalpha$methodDepth))  
+  validate(ddalpha$methodSeparator)
+  
+  ## Depth parameters validation
+  
+  if (!is.logical(use.convex) 
+      || length(use.convex) != 1 
+      || !(use.convex %in% c(TRUE, FALSE))){
+    ddalpha$useConvex <- FALSE
+    warning("Argument \"use.convex\" not specified correctly. FALSE is used as a default value")
+  }else{
+    ddalpha$useConvex <- use.convex
+  }
+  
+  if (!is.null(ddalpha$methodDepth))
+  validate(ddalpha$methodDepth)
+  
+  ## The learning procedures
+  
+  if (!is.null(ddalpha$methodDepth)){
+    # Calculate depths
+    if(ddalpha$methodDepth == "ddplot"){
+      for(i in 1:ddalpha$numPatterns)
+        ddalpha$patterns[[i]]$depths <- ddalpha$patterns[[i]]$points
+    } else{
+      ddalpha <- .ddalpha.learn.depth(ddalpha)
+      if(is.null(ddalpha))
+        stop("The depth method did not return the 'ddalpha' object.")
+    }
+    
+    # Learn classification machine
+    if (ddalpha$methodSeparatorBinary){
+      ddalpha <- .ddalpha.learn.binary(ddalpha)
+    } else {
+      ddalpha <- .ddalpha.learn.multiclass(ddalpha)
+    }
+    if(is.null(ddalpha))
+      stop("The separator method did not return the 'ddalpha' object.")
+    
+    # if (ddalpha$methodSeparator == "alpha"){
+    #   ddalpha <- .ddalpha.learn.alpha(ddalpha)
+    # } else
+    # if (ddalpha$methodSeparator == "polynomial"){
+    #   ddalpha <- .ddalpha.learn.polynomial(ddalpha)
+    # } else
+    # if (ddalpha$methodSeparator == "knnlm"){
+    #   ddalpha <- .ddalpha.learn.knnlm(ddalpha)
+    # } else
+    #   stop("Define custom classifier")
+  } else {
+    ddalpha$numClassifiers = 0
+  }
+  
+  # Learn outsider treatments if needed
+  if (is.null(ddalpha$methodDepth) || !(ddalpha$methodDepth %in% 
+          c("Mahalanobis", "projection", "spatial", "simplicialVolume", "potential"))){#, "simplicial" (may obtain too small values)
+    ddalpha <- .ddalpha.learn.outsiders(ddalpha = ddalpha, 
+                                        methodsOutsider = outsider.methods, 
+                                        settingsOutsider = outsider.settings)
+  }
+  class(ddalpha) <- "ddalpha"
+  
+  return (ddalpha)
+}
+
+################################################################################
+# Validation functions
+################################################################################
+
+.alpha_validate  <- function(ddalpha, num.chunks = 10, max.degree = 3, debug = F,...){
+  
+  if (ddalpha$methodAggregation == "majority"){
+    maxChunks <- ddalpha$patterns[[ddalpha$numPatterns]]$cardinality + ddalpha$patterns[[ddalpha$numPatterns - 1]]$cardinality
+  }else{
+    maxChunks <- ddalpha$numPoints
+  }
+  
+  if (is.character(num.chunks) && toupper(num.chunks)=="MAX")
+    num.chunks <- maxChunks
+  else if (!is.numeric(num.chunks) 
+           || is.na(num.chunks) 
+           || length(num.chunks) != 1 
+           || !.is.wholenumber(num.chunks) 
+           || !(num.chunks > 0 && num.chunks <= maxChunks)){
+    if (!missing(num.chunks))
+      warning("Argument \"num.chunks\" not specified correctly. ", maxChunks, " is used instead")
+    num.chunks <- maxChunks
+  }
+  
+  if(!is.numeric(max.degree) 
+     || is.na(max.degree) 
+     || length(max.degree) != 1 
+     || !.is.wholenumber(max.degree) 
+     || !(max.degree %in% 1:10)){
+    max.degree <- 3
+    warning("Argument \"max.degree\" not specified correctly. 3 is used as a default value")
+  }
+  
+  return (list(numChunks = num.chunks, maxDegree = max.degree, debug = (debug == T), methodSeparatorBinary = T))  
+}
+
+.polynomial_validate  <- .alpha_validate  # the same  
+
+.knnlm_validate  <- function(ddalpha, knnrange = 10*( (ddalpha$numPoints)^(1/ddalpha$numPatterns) ) + 1,...){
+  isnull = missing(knnrange) || is.null(knnrange)
+  
+  if (is.character(knnrange) && toupper(knnrange)=="MAX")
+    knnrange = ceiling(ddalpha$numPoints/2)
+  else if(is.null(knnrange)
+          || !is.numeric(knnrange) 
+          || is.na(knnrange) 
+          || length(knnrange) != 1 
+          || !.is.wholenumber(knnrange) 
+          || !(knnrange >=2 && knnrange <= ceiling(ddalpha$numPoints/2))){    
+    knnrange <- 10*( (ddalpha$numPoints)^(1/ddalpha$numPatterns) ) + 1   # Default
+    
+    knnrange <- min(knnrange, ceiling(ddalpha$numPoints/2))
+    knnrange <- max(knnrange, 2)
+    
+    if (!isnull) warning("Argument \"knnrange\" not specified correctly. ", knnrange, " is used instead")
+  }
+  return (list(knnrange = knnrange, methodSeparatorBinary = F))
+}
+
+.maxD_validate  <- function(ddalpha,...){
+  return(list(methodSeparatorBinary = F))
+}
+
+.ddplot_validate <- function(ddalpha, ...){
+  if(ddalpha$dimension!=ddalpha$numPatterns)
+    stop("You must pass a DD-plot, with the number of columns equal to the number of classes as data.")
+}
+
+.halfspace_validate  <- function(ddalpha, exact, method, num.directions = 1000,...){
+  method = .parse_HSD_pars(exact, method)
+  if(method == 0)
+    if(!is.numeric(num.directions) 
+     || is.na(num.directions) 
+     || length(num.directions) != 1 
+     || !.is.wholenumber(num.directions) 
+     || !(num.directions > 1 && num.directions < 10000000) ){
+    num.directions <- 1000
+    warning("Argument \"num.directions\" not specified correctly. 1000 is used as a default value")
+  }
+  return (list(dmethod = method, numDirections = num.directions))
+}
+
+.projection_validate <- function(ddalpha, method = "random", num.directions = 1000,...){
+  if (!(method %in% c("random","linearize")))
+    stop("Wrong method")
+  if(method == "random")
+  if(!is.numeric(num.directions) 
+     || is.na(num.directions) 
+     || length(num.directions) != 1 
+     || !.is.wholenumber(num.directions) 
+     || !(num.directions > 1 && num.directions < 10000000) ){
+    num.directions <- 1000
+    warning("Argument \"num.directions\" not specified correctly. 1000 is used as a default value")
+  }
+  return (list(dmethod = method, numDirections = num.directions))
+}
+
+.simplicial_validate <- function(ddalpha, exact = F, k = 0.05, ...){
+  if (exact)
+    return(list(d_exact = exact))
+  
+  if (k <= 0) stop("k must be positive")
+  else if (k < 1) k = choose(ddalpha$numPoints, ddalpha$dimension)*k
+  
+  return(list(d_exact = exact, d_k = k))
+}
+.simplicialVolume_validate <- .simplicial_validate
+
+.Mahalanobis_validate  <- function(ddalpha, mah.estimate = "moment", mah.priors = NULL, mah.parMcd = 0.75, ...){ 
+  if (!is.character(mah.estimate) 
+      || length(mah.estimate) != 1 
+      || !(mah.estimate %in% c("moment", "MCD"))){
+    mah.estimate <- "moment"
+    warning("Argument \"mah.estimate\" not specified correctly. \"moment\" is used as a default value")
+  }
+  
+  if (!is.vector(mah.priors, mode = "double") 
+      || is.na(min(mah.priors)) 
+      || length(mah.priors) != ddalpha$numPatterns 
+      || min(mah.priors) <= 0 
+      || max(mah.priors) <= 0){
+    if (!is.null(mah.priors)){
+      warning("Argument \"mah.priors\" not specified correctly. Defaults in the form of class portions are applied")
+    }
+    mah.priors <- NULL
+  }else{
+    mah.priors <- mah.priors/sum(mah.priors)
+    
+  }
+  
+  ret <- list(mahEstimate = mah.estimate, mahPriors = mah.priors)
+  
+  if (mah.estimate == "MCD"){
+    if (is.null(mah.parMcd) 
+        || !is.vector(mah.parMcd, mode = "double") 
+        || is.na(min(mah.parMcd)) 
+        || length(mah.parMcd) != 1 
+        || mah.parMcd < 0.5 
+        || mah.parMcd > 1){
+      mah.parMcd <- 0.75
+      warning("Argument \"mah.parMcd\" not specified correctly. 0.75 is used as a default value")
+    }
+    ret$mahParMcd = mah.parMcd
+  }
+  return (ret)
+}
+
+.spatial_validate <- function(ddalpha, mah.estimate = "moment", mah.parMcd = 0.75, ...){ 
+  if(mah.estimate == "none")
+    return(list(mahEstimate = "none"))
+  
+  return(.Mahalanobis_validate(ddalpha, mah.estimate = mah.estimate, mah.parMcd = mah.parMcd, ...))
+}
+
+.spatialLocal_validate  <- function(ddalpha, kernel = "GKernel", kernel.bandwidth = 1, ...)
+{  
+  # validate paraameters mah.estimate, mah.parMcd
+  spatial_val = .spatial_validate(ddalpha, ...)
+  
+  if (is.null(kernel)
+      || suppressWarnings (
+        !((kernel  %in% .potentialKernelTypes) || !is.na(as.numeric(kernel))&&(as.numeric(kernel) %in% c(1:length(.potentialKernelTypes))))
+      )){
+    stop("Argument \"Kernel\" has invaid format.")
+  }  
+  if (is.null(kernel.bandwidth) 
+      || !is.numeric(kernel.bandwidth)){
+    stop("Argument \"kernel.bandwidth\" has invaid format.")
+  }
+  if (length(kernel.bandwidth) == 1){
+    if (length(kernel.bandwidth) || is.na(kernel.bandwidth) || kernel.bandwidth == 0){
+      stop("Argument \"kernel.bandwidth\" is Zero or NA.")
+    } 
+    kernel.bandwidth = rep(kernel.bandwidth, ddalpha$numPatterns)
+  }
+  else {
+    if (sum(!is.na(kernel.bandwidth)) != ddalpha$numPatterns || sum(kernel.bandwidth != 0) != ddalpha$numPatterns){
+      stop("Argument \"kernel.bandwidth\" has invaid length, Zero or NA elements.")
+    }
+     
+    
+    # order bandwidths the same as the classes
+    names = sapply(ddalpha$patterns, FUN=function(X) X$name)
+    kernel.bandwidth = kernel.bandwidth[order(names)]
+  }
+  
+  spatial_val$kernel = kernel
+  spatial_val$kernel.bandwidth = kernel.bandwidth
+  
+  return(spatial_val)
+}
+
+.potential_validate  <- function(ddalpha, kernel = "GKernel", kernel.bandwidth = NULL, ignoreself = FALSE, ...)
+{  
+  # if kernel.bandwidth is a vector - the values are given in the alphabetical order of the classes nemes
+  if (ddalpha$needtransform == 0)
+    stop("'pretransform' must be set for depth = 'potential'")
+  
+  if (is.null(kernel)
+      || suppressWarnings (
+        !((kernel  %in% .potentialKernelTypes) || !is.na(as.numeric(kernel))&&(as.numeric(kernel) %in% c(1:length(.potentialKernelTypes))))
+        )){
+    stop("Argument \"Kernel\" has invaid format.")
+  }  
+  if (is.null(kernel.bandwidth)) {    # use the rule of thumb
+    if (ddalpha$needtransform == 2){
+      kernel.bandwidth = sapply(ddalpha$patterns, FUN=function(X) nrow(X$points)) ^ (-2/(ddalpha$dimension+4))
+    } else {
+      kernel.bandwidth = ddalpha$numPoints ^ (-2/(ddalpha$dimension+4))
+    }
+  }
+  else{
+  if (#is.null(kernel.bandwidth) ||
+        !is.numeric(kernel.bandwidth)
+      ||!(is.vector(kernel.bandwidth) || is.list(kernel.bandwidth))){
+    stop("Argument \"kernel.bandwidth\" has invaid format.")
+  }
+  
+  if (ddalpha$needtransform == 2){
+    if (length(kernel.bandwidth) == 1)
+      kernel.bandwidth = rep(kernel.bandwidth, ddalpha$numPatterns)
+    if (sum(!is.na(kernel.bandwidth)) != ddalpha$numPatterns || sum(kernel.bandwidth != 0) != ddalpha$numPatterns){
+      stop("Argument \"kernel.bandwidth\" has invaid length, Zero or NA elements.")
+    } 
+    
+    # order bandwidths the same as the classes
+    names = sapply(ddalpha$patterns, FUN=function(X) X$name)
+    kernel.bandwidth = kernel.bandwidth[order(names)]
+  } else if (length(kernel.bandwidth) != 1 || is.na(kernel.bandwidth) || kernel.bandwidth == 0){
+    stop("Argument \"kernel.bandwidth\" has invaid length, Zero or NA elements.")
+  }  
+  }
+  
+  if (is.null(ignoreself) || !is.logical(ignoreself))
+    warning ("Argument \"ignoreself\" has invaid format. FALSE used.")
+  
+  return(list("kernel" = kernel, "kernel.bandwidth" = kernel.bandwidth, "ignoreself" = ignoreself))
+}
+
diff --git a/R/ddalphaf.r b/R/ddalphaf.r
new file mode 100644
index 0000000..202dab9
--- /dev/null
+++ b/R/ddalphaf.r
@@ -0,0 +1,947 @@
+ddalphaf.train <- function(dataf, labels, subset,
+                           adc.args = list(instance = "avr", 
+                                           numFcn = -1, 
+                                           numDer = -1), 
+                           classifier.type = c("ddalpha", "maxdepth", "knnaff", "lda", "qda"), 
+                           cv.complete = FALSE, 
+                           maxNumIntervals = min(25, ceiling(length(dataf[[1]]$args)/2)),
+                           seed = 0,
+                           ...){
+  # Trains the functional DDalpha-classifier
+  # Args:
+  #   dataf:  list containing lists (functions) of two vectors of equal length, 
+  #           named "args" and "vals": arguments sorted in ascending order and 
+  #           corresponding them values respectively
+  #   labels: output labels of the functinal observations
+  #   other arguments: TODO
+  # Returns:
+  #   Functional DDalpha-classifier
+  
+  # Check "dataf"
+  if (!is.list(dataf))
+    stop("Argument 'dataf' must be a list")
+  for (df in dataf)
+    if (!(is.list(df) && length(df) == 2 &&
+            !is.null(df$args) && !is.null(df$vals) &&
+            is.vector(df$args) && is.vector(df$vals) &&
+            is.numeric(df$args) && is.numeric(df$vals) &&
+            length(df$args) == length(df$vals) &&
+            sort(df$args) == df$args))
+      stop("Argument 'dataf' must be a list containing lists (functions) of two vectors of equal length, named 'args' and 'vals': arguments sorted in ascending order and corresponding them values respectively")
+  
+  if(!missing(subset)) {
+    dataf = dataf[subset]
+    labels = labels[subset]
+  }
+  
+  # Check "labels"
+  if (!(length(dataf)==length(labels) && length(unique(labels))>=2))
+    stop("Argument 'labels' has wrong format")
+  
+  # Check classifier.type
+  classifier.type = match.arg(classifier.type)
+  
+  # Check "adc.method"
+  adc.method = 'equalCover'
+  
+  if (seed != 0) set.seed(seed)
+  
+  # Check "adc.args"
+  if(!is.null(names(adc.args))){
+    if (!(adc.args$instance %in% c("val", "avr") && 
+        ((adc.args$numFcn >= 0 &&  adc.args$numDer >= 0 && (adc.args$numFcn + adc.args$numDer >= 2)) ||
+         (adc.args$numFcn == -1 &&  adc.args$numDer == -1))))
+      stop("Argument 'adc.args' has wrong format")
+  } else {
+    if(!is.list(adc.args))
+      stop("Argument 'adc.args' has wrong format")
+    for(.adc.args in adc.args){
+        if (!(.adc.args$instance %in% c("val", "avr") && 
+            ((.adc.args$numFcn >= 0 &&  .adc.args$numDer >= 0 && (.adc.args$numFcn + .adc.args$numDer >= 2)) ||
+             (.adc.args$numFcn == -1 &&  .adc.args$numDer == -1))))
+        stop("Argument 'adc.args' has wrong format")
+    }
+  }
+  
+  # CV
+  if (is.null(names(adc.args)) || adc.args$numFcn == -1 && adc.args$numDer == -1){
+    if (cv.complete){
+      res <- getBestSpaceCV(dataf, labels, adc.method, adc.args, 
+                            classifier.type, num.chunks=10, numMax = maxNumIntervals, ...)
+    }else{
+      res <- getBestSpace(dataf, labels, adc.method, adc.args,
+                          classifier.type, num.chunks=10, numMax = maxNumIntervals, ...)
+    }
+    the.args <- res$args
+    num.cv <- res$num.cv
+  }else{
+    the.args <- adc.args
+    num.cv <- 0
+  }
+  # Pointize
+  points <- GetPoints(dataf, labels, adc.method, the.args)
+  
+  if(any(!is.finite(points$data))) {
+    warning("infinite or missing values in 'points$data'")
+    return (NA)
+  }
+  
+  # Apply chosen classifier to train the data
+  if (classifier.type == "ddalpha"){
+    classifier <- ddalpha.train(points$data, seed = seed, ...)
+  }
+  if (classifier.type == "maxdepth"){
+    classifier <- ddalpha.train(points$data, separator = "maxD", seed = seed, ...)
+  }
+  if (classifier.type == "knnaff"){
+    classifier <- knnaff.train(points$data, i = 0, ...)
+  }
+  if (classifier.type == "lda"){
+    classifier <- lda.train(points$data, ...)
+  }
+  if (classifier.type == "qda"){
+    classifier <- qda.train(points$data, ...)
+  }
+  # Create the eventual output structure
+  ddalphaf <- 
+    list(dataf = points$dataf, 
+      #labels_orig = labels,
+      labels = points$labels, 
+      adc.method = adc.method, 
+      adc.args = the.args, 
+      adc.num.cv = num.cv, 
+      adc.transmat = points$adc.transmat, 
+      data = points$data, 
+      classifier.type = classifier.type, 
+      classifier = classifier)
+  class(ddalphaf) <- "ddalphaf"
+  
+  return (ddalphaf)
+}
+
+ddalphaf.classify <- function(ddalphaf, objectsf, subset, ...){
+  # Classifies functions
+  # Args:
+  #   objectsf: sample to classify, a list containing lists (functions) of 
+  #             two vectors of equal length, named "args" and "vals": 
+  #             arguments sorted in ascending order and corresponding them 
+  #             values respectively
+  #   ddalphaf: functional DDalpha-classifier
+  # Returns:
+  #   List of labels assigned to the functions from "objectsf"
+
+  # Check "objectsf"
+  if (!is.list(objectsf))
+    stop("Argument 'objectsf' must be a list")
+  if (!is.null(objectsf$args)){
+    objectsf = list(objectsf) # there was a single element 
+  }
+  
+  if(!missing(subset)) {
+    objectsf = objectsf[subset]
+  }
+  
+  for (df in objectsf)
+    if (!(is.list(df) && length(df) == 2 &&
+            !is.null(df$args) && !is.null(df$vals) &&
+            is.vector(df$args) && is.vector(df$vals) &&
+            is.numeric(df$args) && is.numeric(df$vals) &&
+            length(df$args) == length(df$vals) &&
+            sort(df$args) == df$args))
+      stop("Argument 'objectsf' must be a list containing lists (functions) of two vectors of equal length, named 'args' and 'vals': arguments sorted in ascending order and corresponding them values respectively")
+
+  # Prepare to multivariate classification
+  objectsf.equalized <- equalize(objectsf)
+  if (ddalphaf$adc.method == "equalCover"){
+    if (ddalphaf$adc.args$instance == "val"){
+      input <- getValGrid(objectsf.equalized, 
+                          ddalphaf$adc.args$numFcn, ddalphaf$adc.args$numDer)
+    }
+    if (ddalphaf$adc.args$instance == "avr"){
+      input <- getAvrGrid(objectsf.equalized, 
+                          ddalphaf$adc.args$numFcn, ddalphaf$adc.args$numDer)
+    }
+    if (!is.null(ddalphaf$adc.transmat)){
+      input <- input%*%ddalphaf$adc.transmat
+    }
+  }
+  # Classify and assign class labels
+  if (ddalphaf$classifier.type == "ddalpha" || ddalphaf$classifier.type == "maxdepth"){
+    output <- ddalpha.classify(objects = input, ddalpha = ddalphaf$classifier, ...)
+  }
+  if (ddalphaf$classifier.type == "knnaff"){
+    output <- knnaff.classify(input, ddalphaf$classifier, ...)
+  }
+  if (ddalphaf$classifier.type == "lda"){
+    output <- lda.classify(input, ddalphaf$classifier, ...)
+  }
+  if (ddalphaf$classifier.type == "qda"){
+    output <- qda.classify(input, ddalphaf$classifier, ...)
+  }
+  classes <- list()
+  for (i in 1:length(output)){
+#    if (is.numeric(output[[i]])){
+      classes[[i]] <- ddalphaf$labels[[ output[[i]] ]]
+#    }else{
+#      classes[[i]] <- output[[i]]
+#    }
+  }
+
+  return (classes)
+}
+
+predict.ddalphaf <- function(object, objectsf, subset, ...){
+  return(ddalphaf.classify(object, objectsf, subset, ...))
+}
+
+is.in.convexf <- function(objectsf, dataf, cardinalities, 
+                          adc.method = "equalCover", 
+                          adc.args = list(instance = "val", 
+                                          numFcn = 5, 
+                                          numDer = 5), seed = 0){
+  # Checks if the function(s) lie(s) inside convex hulls of the 
+  # functions from the sample in the projection space
+  # Args:
+  #   objectsf:      list containing lists (functions) of two vectors of equal 
+  #                  length, named "args" and "vals": arguments sorted in 
+  #                  ascending order and corresponding them values 
+  #                  respectively. These functions are supposed to be checked 
+  #                  for 'outsiderness'
+  #   dataf:         list containing lists (functions) of two vectors of equal 
+  #                  length, named "args" and "vals": arguments sorted in 
+  #                  ascending order and corresponding them values respectively
+  #   cardinalities: cardinalities of the classes in "dataf"
+  #   other arguments: TODO
+  # Returns:
+  #   Vector with 1s for those lying inside of at least one of the convex hulls 
+  #   of the classes and 0s for those lying beyond them
+  
+  # Data-consistency checks
+  # TODO
+  
+  # Project "objectsf" into a multivariate space
+  objectsf.equalized <- equalize(objectsf)
+  if (adc.method == "equalCover"){
+    if (adc.args$instance == "val"){
+      objects <- getValGrid(objectsf.equalized, adc.args$numFcn, adc.args$numDer)
+    }
+    if (adc.args$instance == "avr"){
+      objects <- getAvrGrid(objectsf.equalized, adc.args$numFcn, adc.args$numDer)
+    }
+  }
+  # Project "dataf" into a multivariate space
+  dataf.equalized <- equalize(dataf)
+  if (adc.method == "equalCover"){
+    if (adc.args$instance == "val"){
+      data <- getValGrid(dataf.equalized, adc.args$numFcn, adc.args$numDer)
+    }
+    if (adc.args$instance == "avr"){
+      data <- getAvrGrid(dataf.equalized, adc.args$numFcn, adc.args$numDer)
+    }    
+  }
+  in.convex <- is.in.convex(objects, data, cardinalities, seed)
+  
+  return (in.convex)
+}
+
+print.ddalphaf <- function(x, ...){
+  cat("ddalphaf:\n")
+  cat("\t num.functions = ", length(x$dataf), 
+  ", num.patterns = ", length(unique(x$labels)), "\n", sep="")
+#  cat("\t adc.method", x$adc.method, "\"\n", sep="")
+  cat("\t adc: \"", x$adc.args$instance, "; numFcn:", x$adc.args$numFcn, "; numDer:", x$adc.args$numDer, "\"\n", sep="")
+  cat("\t adc.num.cv \"", x$adc.num.cv, "\"\n", sep="")
+  cat("\t adc.transmat \"", x$adc.transmat, "\"\n", sep="")
+  cat("\t classifier.type \"", x$classifier.type, "\"\n", sep="")
+  cat("classifier: ") 
+  print(x$classifier)
+}
+
+summary.ddalphaf <- function(object, ...) 
+  print.ddalphaf(object, ...)
+################################################################################
+# Functions below are used for intermediate computations                       #
+################################################################################
+
+equalize <- function(dataf){
+  # 1. Adjusts the data to have equal (the largest) argument interval
+  # 2. Calclates - numerically - derivative
+  # Args:
+  #   dataf: list containing lists (functions) of two vectors 
+  #          of equal length, named "args" and "vals": arguments 
+  #          sorted in ascending order and corresponding them 
+  #          values respectively
+  # Returns:
+  #   The list of lists of the same structure, 'equalized', 
+  #   contating derivatives as 3rd vector named "der1"
+  
+  # Check whether every function contains fields "args" and "vals", 
+  # whether they are numerical and of equal length, have no NAs or 
+  # ties and are sorted in ascending order
+  # TODO
+  
+  # 1.
+  # Get argument bounds
+  min <- Inf
+  max <- -Inf
+  for (i in 1:length(dataf)){
+    if (dataf[[i]]$args[1] < min){min <- dataf[[i]]$args[1]}
+    if (dataf[[i]]$args[length(dataf[[i]]$args)] > max){
+      max <- dataf[[i]]$args[length(dataf[[i]]$args)]
+    }
+  }
+  # and apply them to equalize functions timely
+  for (i in 1:length(dataf)){
+    if (dataf[[i]]$args[1] > min){
+      dataf[[i]]$args <- c(min, dataf[[i]]$args)
+      dataf[[i]]$vals <- c(dataf[[i]]$vals[1], dataf[[i]]$vals)
+    }
+    if (dataf[[i]]$args[length(dataf[[i]]$args)] < max){
+      dataf[[i]]$args <- c(dataf[[i]]$args, max)
+      dataf[[i]]$vals <- c(dataf[[i]]$vals, 
+                           dataf[[i]]$vals[length(dataf[[i]]$vals)])
+    }
+    # Computational trick - add "-1" to the "left"
+    #dataf[[i]]$args <- c(min - 1, dataf[[i]]$args)
+    #dataf[[i]]$vals <- c(dataf[[i]]$vals[1], dataf[[i]]$vals)
+  }
+  
+  # 2.
+  for (i in 1:length(dataf)){
+    dataf[[i]] <- derive(dataf[[i]])
+  }
+  
+  return (dataf)
+}
+
+derive <- function(fcn){
+  # Adds 1st derivative to the function: a vector named "der1"
+  # Args:
+  #   fcn: function, a list of two vectors of equal length, named "args" 
+  #   and "vals": arguments sorted in ascending order and corresponding 
+  #   them values respectively
+  # Returns:
+  #   The list of of the same structure contating derivative as 3rd 
+  #   vector named "der1"
+  
+  fcn$der1 <- rep(0, length(fcn$args))
+  fcn$der1[1] = 0
+  for (i in 2:length(fcn$der1)){
+    fcn$der1[i] <- (fcn$vals[i] - fcn$vals[i - 1])/
+      (fcn$args[i] - fcn$args[i - 1])
+  }
+  
+  return (fcn)
+}
+
+getValue <- function(fcn, arg, fcnInstance){
+  # Gets the value of the function or its derivative for the given argument 
+  # value
+  # Args:
+  #   fcn:         function, a list of vectors of equal length, named "args" 
+  #                (arguments), "vals" (function values) [and it's 
+  #                derivatives of order "I", named derI]; arguments (and 
+  #                corresponding values) sorted in ascending order
+  #   arg:         argument value at which the function (derivative) value 
+  #                is to be taken
+  #   fcnInstance: inctance to be evaluated; "vals" for the function values, 
+  #                "der1" for the first derivative
+  # Returns:
+  #   Value of the function (derivative)
+  
+  # Check "arg", evt. "fcnInstance"
+  # TODO
+  
+  # Find corresponding interval
+  index <- 2
+  while (arg > fcn$args[index]){
+    index <- index + 1
+  }
+  # Get the function value(s) by linear approximation
+  if (fcnInstance == "vals"){
+    value <- fcn$vals[index - 1] + 
+      (fcn$vals[index] - fcn$vals[index - 1])*
+      ((arg - fcn$args[index - 1])/(fcn$args[index] - fcn$args[index - 1]))
+  }
+  if (fcnInstance == "der1"){
+    value <- fcn$der1[index]
+  }
+  
+  return (value)
+}
+
+getAvrValue <- function(fcn, argFrom, argTo, fcnInstance){
+  # Gets the average value of the function or its derivative on the given 
+  # interval
+  # Args:
+  #   fcn:         function, a list of vectors of equal length, named "args" 
+  #                (arguments), "vals" (function values) [and it's 
+  #                derivatives of order "I", named derI]; arguments (and 
+  #                corresponding values) sorted in ascending order
+  #   argFrom:     argument value from which the function (derivative) value 
+  #                is to be averaged
+  #   argTo:       argument value to which the function (derivative) value 
+  #                is to be averaged
+  #   fcnInstance: inctance to be evaluated; "vals" for the function values, 
+  #                "der1" for the first derivative
+  # Returns:
+  #   Average value of the function (derivative) on the interval 
+  #   (argFrom, argTo)
+  
+  # Check "argFrom" and "argTo", evt. "fcnInstance"
+  # TODO
+  
+  # Define 'from' and 'to' interval
+  indexFrom <- 2
+  while (argFrom > fcn$args[indexFrom]){
+    indexFrom <- indexFrom + 1
+  }
+  indexTo <- 2
+  while (argTo > fcn$args[indexTo]){
+    indexTo <- indexTo + 1
+  }
+  average <- 0
+  valTo <- getValue(fcn, argTo, fcnInstance)
+  # Integrate
+  curArgFrom <- argFrom
+  if (fcnInstance == "vals"){
+    valFrom <- getValue(fcn, curArgFrom, "vals")
+    while(indexFrom < indexTo){
+      average <- average + (valFrom + fcn$vals[indexFrom])*
+        (fcn$args[indexFrom] - curArgFrom)/2
+      valFrom <- fcn$vals[indexFrom]
+      curArgFrom <- fcn$args[indexFrom]
+      indexFrom <- indexFrom + 1
+    }
+    average <- average + (valFrom + valTo)*(argTo - curArgFrom)/2
+  }
+  if (fcnInstance == "der1"){
+    while(indexFrom < indexTo){
+      average <- average + (fcn$der1[indexFrom])*
+        (fcn$args[indexFrom] - curArgFrom)
+      curArgFrom <- fcn$args[indexFrom]
+      indexFrom <- indexFrom + 1
+    }
+    average <- average + valTo*(argTo - curArgFrom)
+  }
+  average <- average/(argTo - argFrom)
+  
+  return (average)
+}
+
+getValGrid <- function(dataf, numFcn, numDer){
+  # Represents a function sample as a multidimensional (d="numFcn"+"numDer") 
+  # one averaging for that each function and it derivative on "numFcn" 
+  # (resp. "numDer") equal nonoverlapping covering intervals
+  # Args:
+  #   dataf:  list containing lists (functions) of vectors of equal length, 
+  #           first two named "args" and "vals" are arguments sorted in 
+  #           ascending order and having same bounds for all functions and 
+  #           corresponding them values respectively
+  #   numFcn: number of function intervals
+  #   numDer: number of first-derivative intervals
+  # Returns:
+  #   Matrix - a multidimensional presentation of the functional sample
+  
+  # Get argument bounds ("dataf" is equalized)
+  min <- dataf[[1]]$args[1]
+  max <- dataf[[1]]$args[length(dataf[[1]]$args)]
+  # Get argument grid
+  args <- dataf[[1]]$args
+  argsFcn <- min + 0:numFcn*(max - min)/(numFcn - 1)
+  argsDer <- min + 0:numDer*(max - min)/(numDer - 1)
+  # Get function/derivative grid
+  fcnGrid <- matrix(nrow = length(dataf), ncol = numFcn)
+  derGrid <- matrix(nrow = length(dataf), ncol = numDer)
+  if (numFcn > 0){
+    for (i in 1:length(dataf)){
+      # Set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsFcn <- 1
+      fcnGrid[i,1] <- dataf[[i]]$vals[1]
+      while (cArgsFcn != numFcn){
+#        print(argsFcn)
+#        print(fcnGrid[i,])
+#        cat(cArgs, " and ", cArgsFcn, "\n")
+#        cat(args[cArgs + 1], " and ", argsFcn[cArgsFcn + 1], "\n")
+        if (args[cArgs + 1] < argsFcn[cArgsFcn + 1]){
+          cArgs <- cArgs + 1
+        }else{
+          nextArg <- argsFcn[cArgsFcn + 1]
+          fcnGrid[i,cArgsFcn + 1] <- dataf[[i]]$vals[cArgs] + (nextArg - args[cArgs])*dataf[[i]]$der1[cArgs + 1]
+          if (args[cArgs + 1] == argsFcn[cArgsFcn + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsFcn <- cArgsFcn + 1
+        }
+      }
+    }
+  }
+  if (numDer > 0){
+    for (i in 1:length(dataf)){
+      # Again, set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsDer <- 1
+      derGrid[1] <- dataf[[i]]$ders[2]
+      while (cArgsDer != numDer){
+#        print(argsDer)
+#        print(derGrid[i,])
+#        cat(cArgs, " and ", cArgsDer, "\n")
+#        cat(args[cArgs + 1], " and ", argsDer[cArgsDer + 1], "\n")
+        if (args[cArgs + 1] < argsDer[cArgsDer + 1]){
+          cArgs <- cArgs + 1
+        }else{
+          derGrid[i,cArgsDer + 1] <- dataf[[i]]$der1[cArgs + 1]
+          if (args[cArgs + 1] == argsDer[cArgsDer + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsDer <- cArgsDer + 1
+        }
+      }
+    }
+  }
+  mvX <- cbind(fcnGrid, derGrid)
+  return (mvX)
+}
+
+getAvrGrid <- function(dataf, numFcn, numDer){
+  # Represents a function sample as a multidimensional (d="numFcn"+"numDer") 
+  # one averaging for that each function and it derivative on "numFcn" 
+  # (resp. "numDer") equal nonoverlapping covering intervals
+  # Args:
+  #   dataf:  list containing lists (functions) of vectors of equal length, 
+  #           first two named "args" and "vals" are arguments sorted in 
+  #           ascending order and having same bounds for all functions and 
+  #           corresponding them values respectively
+  #   numFcn: number of function intervals
+  #   numDer: number of first-derivative intervals
+  # Returns:
+  #   Matrix - a multidimensional presentation of the functional sample
+  
+  # Get argument bounds ("dataf" is equalized)
+  min <- dataf[[1]]$args[1]
+  max <- dataf[[1]]$args[length(dataf[[1]]$args)]
+  # Get argument grid
+  args <- dataf[[1]]$args
+  argsFcn <- min + 0:numFcn*(max - min)/numFcn
+  argsDer <- min + 0:numDer*(max - min)/numDer
+  # Get function/derivative grid
+  fcnGrid <- matrix(nrow = length(dataf), ncol = numFcn)
+  derGrid <- matrix(nrow = length(dataf), ncol = numDer)
+  if (numFcn > 0){
+    for (i in 1:length(dataf)){
+      # Set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsFcn <- 1
+      curArg <- min
+      curFcn <- dataf[[i]]$vals[1]
+      curAvr <- 0
+      while (cArgsFcn != numFcn + 1){
+#        print(argsFcn)
+#        print(fcnGrid[i,])
+#        cat(cArgs, " and ", cArgsFcn, "\n")
+#        cat(args[cArgs + 1], " and ", argsFcn[cArgsFcn + 1], "\n")
+        if (args[cArgs + 1] < argsFcn[cArgsFcn + 1]){
+          nextArg <- args[cArgs + 1]
+          nextFcn <- dataf[[i]]$vals[cArgs + 1]
+          curAvr <- curAvr + (nextArg - curArg)*(nextFcn + curFcn)/2
+          cArgs <- cArgs + 1
+        }else{
+          nextArg <- argsFcn[cArgsFcn + 1]
+          nextFcn <- dataf[[i]]$vals[cArgs] + (nextArg - args[cArgs])*dataf[[i]]$der1[cArgs + 1]
+          fcnGrid[i,cArgsFcn] <- curAvr + (nextArg - curArg)*(nextFcn + curFcn)/2
+          curAvr <- 0
+          if (args[cArgs + 1] == argsFcn[cArgsFcn + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsFcn <- cArgsFcn + 1
+        }
+        curArg <- nextArg
+        curFcn <- nextFcn
+      }
+    }
+  }
+  fcnGrid <- fcnGrid/(argsFcn[2] - argsFcn[1])
+  if (numDer > 0){
+    for (i in 1:length(dataf)){
+      # Again, set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsDer <- 1
+      curArg <- min
+      curAvr <- 0
+      while (cArgsDer != numDer + 1){
+#        print(argsDer)
+#        print(derGrid[i,])
+#        cat(cArgs, " and ", cArgsDer, "\n")
+#        cat(args[cArgs + 1], " and ", argsDer[cArgsDer + 1], "\n")
+        if (args[cArgs + 1] < argsDer[cArgsDer + 1]){
+          nextArg <- args[cArgs + 1]
+          curAvr <- curAvr + (nextArg - curArg)*dataf[[i]]$der1[cArgs + 1]
+          cArgs <- cArgs + 1
+        }else{
+          nextArg <- argsDer[cArgsDer + 1]
+          derGrid[i,cArgsDer] <- curAvr + (nextArg - curArg)*dataf[[i]]$der1[cArgs + 1]
+          curAvr <- 0
+          if (args[cArgs + 1] == argsDer[cArgsDer + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsDer <- cArgsDer + 1
+        }
+        curArg <- nextArg
+      }
+    }
+  }
+  derGrid <- derGrid/(argsDer[2] - argsDer[1])
+  mvX <- cbind(fcnGrid, derGrid)
+  return (mvX)
+}
+
+getVapnikBound <- function(points, dim = NULL){
+  n <- nrow(points)
+  d <- ncol(points) - 1
+  lda <- lda.train(points)
+  result <- lda.classify(points[,1:d], lda)
+  empRisk <- sum(result != points[,d + 1])/n
+  # Calculate the deviation from the empirical risk
+  nu <- 1/n
+  C <- 0
+  for (k in 0:d){
+    C <- C + 2*choose(n - 1, k)
+  }
+  epsilon <- sqrt( (log(C) - log(nu)) / (2*n) )
+  
+  return (empRisk + epsilon)
+}
+
+GetPoints <- function(dataf, labels, adc.method, adc.args){
+  # Numerize labels
+  names <- unique(labels)
+  output <- rep(0, length(labels))
+  for (i in 1:length(labels)){
+    for (j in 1:length(names)){
+      if (labels[[i]] == names[[j]]){
+        output[i] = j
+        break
+      }
+    }
+  }
+  # Pointize data
+  dataf.equalized <- equalize(dataf)
+  if (adc.method == "equalCover"){
+    if (adc.args$instance == "val"){
+      input <- getValGrid(dataf.equalized, adc.args$numFcn, adc.args$numDer)
+    }
+    if (adc.args$instance == "avr"){
+      input <- getAvrGrid(dataf.equalized, adc.args$numFcn, adc.args$numDer)
+    }
+    # Reduce dimension if needed
+    princomps <- NULL
+    newDim <- ncol(input)
+    for (i in 1:length(names)){
+      classi <- input[output == i,1:ncol(input)]
+      
+      if(any(!is.finite(classi))) {
+        warning("infinite or missing values in 'classi'")
+        next
+      }
+      
+      princompsi <- prcomp(x=classi, tol=sqrt(.Machine$double.eps))
+      #print(princompsi$sdev)
+      newDimi <- sum(princompsi$sdev > sqrt(.Machine$double.eps))
+      if (newDimi < newDim){
+        newDim <- newDimi
+        princomps <- princompsi
+      }
+    }
+    #print(newDim)
+    transmat <- NULL
+    if (newDim < ncol(input)){
+      transmat <- matrix(as.vector(princomps$rotation[,1:newDim]), ncol=newDim)
+      input <- input%*%transmat
+    }
+    # Combine data
+    data <- cbind(input, output, deparse.level=0)
+  }
+  
+  return (list(data = data, 
+               dataf = dataf.equalized, 
+               labels = names, 
+               adc.transmat = transmat))
+}
+
+GetPointsAll <- function(dataf, labels, adc.method = "equalCover", 
+                         adc.args = list(instance = "avr", 
+                                         numFcn = -1, 
+                                         numDer = -1), numMax){
+  # Numerize labels
+  names <- unique(labels)
+  output <- rep(0, length(labels))
+  for (i in 1:length(labels)){
+    for (j in 1:length(names)){
+      if (labels[[i]] == names[[j]]){
+        output[i] = j
+        break
+      }
+    }
+  }
+  # Prepare values
+  min <- dataf[[1]]$args[1]
+  max <- dataf[[1]]$args[length(dataf[[1]]$args)]
+  args <- dataf[[1]]$args
+  fcnsAll <- list("")
+  dersAll <- list("")
+  dataf.equalized <- equalize(dataf)
+  # Generate all one-type-argument ("fcn" or "der") for all num(Fcn,Der)-values
+  for (numFcn in 1:numMax){
+    numDer <- numFcn
+    argsFcn <- min + 0:numFcn*(max - min)/numFcn
+    argsDer <- min + 0:numDer*(max - min)/numDer
+    # Get function/derivative grid
+    fcnGrid <- matrix(nrow = length(dataf.equalized), ncol = numFcn)
+    derGrid <- matrix(nrow = length(dataf.equalized), ncol = numDer)
+    for (i in 1:length(dataf.equalized)){
+      # Set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsFcn <- 1
+      curArg <- min
+      curFcn <- dataf.equalized[[i]]$vals[1]
+      curAvr <- 0
+      while (cArgsFcn != numFcn + 1){
+        if (args[cArgs + 1] < argsFcn[cArgsFcn + 1]){
+          nextArg <- args[cArgs + 1]
+          nextFcn <- dataf.equalized[[i]]$vals[cArgs + 1]
+          curAvr <- curAvr + (nextArg - curArg)*(nextFcn + curFcn)/2
+          cArgs <- cArgs + 1
+        }else{
+          nextArg <- argsFcn[cArgsFcn + 1]
+          nextFcn <- dataf.equalized[[i]]$vals[cArgs] + (nextArg - args[cArgs])*dataf.equalized[[i]]$der1[cArgs + 1]
+          fcnGrid[i,cArgsFcn] <- curAvr + (nextArg - curArg)*(nextFcn + curFcn)/2
+          curAvr <- 0
+          if (args[cArgs + 1] == argsFcn[cArgsFcn + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsFcn <- cArgsFcn + 1
+        }
+        curArg <- nextArg
+        curFcn <- nextFcn
+      }
+    }
+    fcnsAll[[numFcn]] <- fcnGrid/(argsFcn[2] - argsFcn[1])
+    for (i in 1:length(dataf.equalized)){
+      # Again, set merging algorithm (Novikoff, Piter)
+      cArgs <- 1
+      cArgsDer <- 1
+      curArg <- min
+      curAvr <- 0
+      while (cArgsDer != numDer + 1){
+        if (args[cArgs + 1] < argsDer[cArgsDer + 1]){
+          nextArg <- args[cArgs + 1]
+          curAvr <- curAvr + (nextArg - curArg)*dataf.equalized[[i]]$der1[cArgs + 1]
+          cArgs <- cArgs + 1
+        }else{
+          nextArg <- argsDer[cArgsDer + 1]
+          derGrid[i,cArgsDer] <- curAvr + (nextArg - curArg)*dataf.equalized[[i]]$der1[cArgs + 1]
+          curAvr <- 0
+          if (args[cArgs + 1] == argsDer[cArgsDer + 1]){
+            cArgs <- cArgs + 1
+          }
+          cArgsDer <- cArgsDer + 1
+        }
+        curArg <- nextArg
+      }
+    }
+    dersAll[[numDer]] <- derGrid/(argsDer[2] - argsDer[1])
+  }
+  pointsAll <- list("")
+  counter <- 1
+  # Construct the spaces, reducing dimension if needed
+  for (dim in 2:numMax){
+    for(nDer in 0:dim){
+      nFcn <- dim - nDer
+      tmp.args <- list(instance=adc.args$instance, numFcn=nFcn, numDer=nDer)
+      if (nFcn == 0){
+        input <- dersAll[[nDer]]
+      }else{
+        if (nDer == 0){
+          input <- fcnsAll[[nFcn]]
+        }else{
+          input <- cbind(fcnsAll[[nFcn]], dersAll[[nDer]])
+        }
+      }
+      # Reduce dimension if needed
+      princomps <- NULL
+      newDim <- ncol(input)
+      for (i in 1:length(names)){
+        classi <- input[output == i,1:ncol(input)]
+        princompsi <- prcomp(x=classi, tol=sqrt(.Machine$double.eps))
+        newDimi <- sum(princompsi$sdev > sqrt(.Machine$double.eps))
+        if (newDimi < newDim){
+          newDim <- newDimi
+          princomps <- princompsi
+        }
+      }
+      transmat <- NULL
+      if (newDim < ncol(input)){
+        transmat <- matrix(as.vector(princomps$rotation[,1:newDim]), ncol=newDim)
+        input <- input%*%transmat
+      }
+      # Combine data
+      tmp.points <- cbind(input, output, deparse.level=0)
+      # Save to the list
+      pointsAll[[counter]] <- list(data = tmp.points, 
+                                   adc.args = tmp.args, 
+                                   adc.transmat = transmat)
+      counter <- counter + 1
+    }
+  }
+  return (pointsAll)
+}
+
+# adc.args is a list of args
+GetPointsArgs <- function(dataf, labels, adc.method = "equalCover", 
+                         adc.args){
+  pointsAll = list()
+  counter = 1
+  for(tmp.args in adc.args){
+    dat = GetPoints(dataf, labels, adc.method, tmp.args)
+    pointsAll[[counter]] <- list(data = dat$data, 
+                                 adc.args = tmp.args, 
+                                 adc.transmat = dat$adc.transmat)
+    counter <- counter + 1
+  
+  }
+  return (pointsAll)
+}
+
+getBestSpace <- function(dataf, labels, adc.method = "equalCover", 
+                         adc.args = list(instance = "avr", 
+                                         numFcn = -1, 
+                                         numDer = -1), 
+                         classifier.type = "ddalpha", 
+                         num.chunks = 10, numMax,
+                         ...){
+  # First, get Vapnik bounds for all plausible spaces
+  if(!is.null(names(adc.args))){
+    pointsAll <- GetPointsAll(dataf, labels, adc.method, adc.args, numMax)
+    numTries <- numMax * (numMax + 1) / 2 + numMax + 1 - 3  
+  } else {
+    pointsAll <- GetPointsArgs(dataf, labels, adc.method, adc.args)  
+    numTries <- length(adc.args)
+  }
+  Vapnik.bounds <- rep(Inf, numTries)
+  curTry <- 1
+  for (i in 1:length(pointsAll)){
+    tmp.args <- pointsAll[[i]]$adc.args
+    tmp.points <- pointsAll[[i]]$data
+    Vapnik.bounds[curTry] <- getVapnikBound(tmp.points, ncol(tmp.points) - 1)
+    curTry <- curTry + 1
+  }
+  # Second, get 5 best (i.e. lowest) Vapnik bounds
+  #   etalons <- sort(Vapnik.bounds)[1:5]
+  #   best.indices <- c()
+  #   while (length(best.indices) < 5 && length(etalons) > 0){
+  #     best.indices <- c(best.indices, which(Vapnik.bounds == etalons[1]))
+  #     etalons <- etalons[-1]
+  #   }
+  #   best.indices <- best.indices[1:5]
+  best.indices <- which(Vapnik.bounds %in% sort(Vapnik.bounds)[1:min(5, numTries)])
+  # Third, cross-validate over these best spaces
+  errors <- rep(0, length(best.indices))
+  for (i in 1:length(best.indices)){
+    tmp.args <- pointsAll[[best.indices[i]]]$adc.args
+    points.all <- pointsAll[[best.indices[i]]]$data
+    d <- ncol(points.all) - 1
+    # Actually CV
+    num.points <- nrow(points.all)
+    indices.off <- num.chunks*(0:(ceiling(num.points/num.chunks) - 1))
+    for (j in 1:num.chunks){
+      # Determine points to be taken off
+      take.off <- (indices.off + j)[(indices.off + j) <= num.points]
+      # Apply chosen classifier
+      if (classifier.type == "ddalpha"){
+        classifier <- ddalpha.train(points.all[-take.off,], ...)
+        results <- ddalpha.classify(objects = points.all[take.off,1:d], ddalpha = classifier)
+      }
+      if (classifier.type == "maxdepth"){
+        classifier <- ddalpha.train(points.all[-take.off,], separator = "maxD", ...)
+        results <- ddalpha.classify(objects = points.all[take.off,1:d], ddalpha = classifier)
+      }
+      if (classifier.type == "knnaff"){
+        classifier <- knnaff.train(points.all[-take.off,], i = i, ...)
+        results <- knnaff.classify(points.all[take.off,1:d], classifier)
+      }
+      if (classifier.type == "lda"){
+        classifier <- lda.train(points.all[-take.off,], ...)
+        results <- lda.classify(points.all[take.off,1:d], classifier)
+      }
+      if (classifier.type == "qda"){
+        classifier <- qda.train(points.all[-take.off,], ...)
+        results <- qda.classify(points.all[take.off,1:d], classifier)
+      }
+      # Collect errors
+      errors[i] <- errors[i] + sum(
+        unlist(results) != points.all
+        [take.off,d + 1])
+    }
+  }
+  best.i <- which.min(errors)
+  new.args <- pointsAll[[best.indices[best.i]]]$adc.args
+  return (list(args = new.args, num.cv = length(best.indices)))
+}
+
+getBestSpaceCV <- function(dataf, labels, adc.method = "equalCover", 
+                           adc.args = list(instance = "val", 
+                                           numFcn = -1, 
+                                           numDer = -1), 
+                           classifier.type = "ddalpha", 
+                           num.chunks = 10, numMax,
+                         ...){
+  if(!is.null(names(adc.args))){
+    pointsAll <- GetPointsAll(dataf, labels, adc.method, adc.args, numMax)  
+    numTries <- numMax * (numMax + 1) / 2 + numMax + 1 - 3
+  } else {
+    pointsAll <- GetPointsArgs(dataf, labels, adc.method, adc.args)  
+    numTries <- length(adc.args)
+  }
+  curTry <- 1
+  errors <- rep(0, length(pointsAll))
+  for (i in 1:length(pointsAll)){
+    points.all <- pointsAll[[i]]$data
+    d <- ncol(points.all) - 1
+    # Actually CV
+    num.points <- nrow(points.all)
+    indices.off <- num.chunks*(0:(ceiling(num.points/num.chunks) - 1))
+    for (j in 1:num.chunks){
+      # Determine points to be taken off
+      take.off <- (indices.off + j)[(indices.off + j) <= num.points]
+      # Apply chosen classifier
+      if (classifier.type == "ddalpha"){
+        classifier <- ddalpha.train(points.all[-take.off,], ...)
+        results <- ddalpha.classify(objects = points.all[take.off,1:d], ddalpha = classifier)
+      }
+      if (classifier.type == "maxdepth"){
+        classifier <- ddalpha.train(points.all[-take.off,], separator = "maxD", ...)
+        results <- ddalpha.classify(objects = points.all[take.off,1:d], ddalpha = classifier)
+      }
+      if (classifier.type == "knnaff"){
+        classifier <- knnaff.train(points.all[-take.off,], i = i, ...)
+        results <- knnaff.classify(points.all[take.off,1:d], classifier)
+      }
+      if (classifier.type == "lda"){
+        classifier <- lda.train(points.all[-take.off,], ...)
+        results <- lda.classify(points.all[take.off,1:d], classifier)
+      }
+      if (classifier.type == "qda"){
+        classifier <- qda.train(points.all[-take.off,], ...)
+        results <- qda.classify(points.all[take.off,1:d], classifier)
+      }
+      # Collect errors
+      errors[i] <- errors[i] + sum(
+        unlist(results) != points.all
+        [take.off,d + 1])
+    }
+  }
+  best.i <- which.min(errors)
+  new.args <- pointsAll[[best.i]]$adc.args
+  return (list(args = new.args, num.cv = length(pointsAll)))
+}
diff --git a/R/ddalphaf.test.r b/R/ddalphaf.test.r
new file mode 100644
index 0000000..f87cc91
--- /dev/null
+++ b/R/ddalphaf.test.r
@@ -0,0 +1,112 @@
+ddalphaf.test <- function(learn, learnlabels, test, testlabels, disc.type = c("LS", "comp"), ...){
+  ops <- options(warn = -1)
+  on.exit(options(ops))
+  
+  disc.type <- match.arg(disc.type)
+  
+  ftrain = switch(disc.type,
+              "LS" = ddalphaf.train,
+              "comp" = compclassf.train
+  )
+  fclassify = switch(disc.type,
+                  "LS" = ddalphaf.classify,
+                  "comp" = compclassf.classify
+  )
+  
+  
+  tryCatch({
+    time <- system.time(
+      ddalpha <- ftrain(learn, learnlabels, ...)
+    )
+    cc = fclassify(objectsf = test,ddalphaf = ddalpha)
+    if (is.numeric(testlabels[[1]])){
+      if(is.factor(cc[[1]]) || is.character(cc[[1]])){
+        cc <- unlist(lapply(cc, as.character))
+        cc[cc == "Ignored"] <- NA
+      }
+      equal = (cc == testlabels)
+    } else {
+      cc <- unlist(lapply(cc, as.character)) 
+      equal = (cc == as.character(testlabels))      
+    }
+    
+    if(!(T %in% equal) && !(F %in% equal)) 
+    { return(NA)}
+    error = sum(!equal,na.rm = T)/(sum(!equal,na.rm = T)+sum(equal,na.rm = T))
+    return(list(error = error, correct = sum(equal,na.rm = T), incorrect = sum(!equal,na.rm = T), 
+                total = length(cc)-sum(is.na(equal)), ignored = sum(is.na(equal)), n = length(cc),
+                time = time[1])) 
+  }
+  #  tryCatch({}
+  , error = function(e) {
+    print ("ERROR T")
+    print (e)
+  }, finally = {          
+  })
+  return (NA)
+}
+
+
+ddalphaf.getErrorRateCV <- function(dataf, labels, numchunks = 10, disc.type = c("LS", "comp"),  ...){
+  n = length(dataf)
+  numchunks = min(n, numchunks)
+  chunksize = ceiling(n/numchunks)
+  
+  sample = seq(from = 1, by = numchunks, length.out = chunksize)   
+  
+  errors = 0
+  total = 0
+  times = c()
+  
+  for (i in 1:numchunks){
+    sample = sample[sample<=n]
+    learn = dataf[-sample]
+    test  = dataf[sample]
+    learnlabels = labels[-sample]
+    testlabels  = labels[sample]
+    
+    el = ddalphaf.test(learn, learnlabels, test, testlabels, disc.type, ...)
+    if(is.list(el)){
+      errors = errors + el$incorrect
+      total = total + el$total
+      times = c(times,el$time)
+    }
+    
+    sample = sample+1
+  }
+  
+  return (list(errors = errors/total, time = mean(times), time_sd = sd(times)))  
+}
+
+
+ddalphaf.getErrorRatePart <- function(dataf, labels, size = 0.3, times = 10, disc.type = c("LS", "comp"),  ...){
+  
+  if (!is.numeric(size) || size <=0 || size >= length(dataf)) stop("Wrong size of excluded sequences")
+  
+  if(size < 1)
+    size = max(1, size*length(dataf)) # at least 1 point
+  
+  size = as.integer(size)
+  
+  indexes = 1:length(dataf)
+  
+  errors = c()
+  total = 0
+  time = c()
+  
+  for (i in 1:times){
+    samp = sample(indexes, size)
+    learn = dataf[-samp]
+    test  = dataf[samp]
+    learnlabels = labels[-samp]
+    testlabels  = labels[samp]
+    
+    el = ddalphaf.test(learn, learnlabels, test, testlabels, disc.type, ...)
+    if(is.list(el)){
+      errors = c(errors,el$incorrect/el$total)
+      time = c(time,el$time)
+    }
+  }
+  
+  return (list(errors = mean(errors), errors_sd = sd(errors), errors_vec = errors, time = mean(time), time_sd = sd(time)))  
+}
\ No newline at end of file
diff --git a/R/depth.contours.r b/R/depth.contours.r
new file mode 100644
index 0000000..5d9e295
--- /dev/null
+++ b/R/depth.contours.r
@@ -0,0 +1,326 @@
+################################################################################
+# File:             depth.contours.r
+# Created by:       Oleksii Pokotylo
+# First published:  03.07.2015
+# Last revised:     13.11.2015
+# 
+# Visualization of the depth contours
+################################################################################
+
+
+gcolors = c("red", "blue", "green", "orange", "violet")
+
+depth.contours.ddalpha <- function(ddalpha, main = "", xlab="", ylab = "", drawplot = T, frequency=100, levels = 10, drawsep = T, ...){
+  
+  if(class(ddalpha)!="ddalpha")
+    stop("Not a 'ddalpha' classifier")
+  
+  if (ddalpha$dimension != 2)
+  {
+    warning ("The contours may be drawn only for 2 dimensional datasets")
+    return(0)
+  }
+  
+  if (ddalpha$needtransform == 1){
+    data = ddalpha$patterns[[1]]$transformer(ddalpha$patterns[[1]]$points, inv = T)
+    for (i in 1:length(ddalpha$patterns))
+      data = rbind(data, ddalpha$patterns[[i]]$transformer(ddalpha$patterns[[i]]$points, inv = T))
+  }else{
+    data = ddalpha$patterns[[1]]$points
+    for (i in 1:length(ddalpha$patterns))
+      data = rbind(data, ddalpha$patterns[[i]]$points)
+  }
+  classes = rep(gcolors[1], ddalpha$patterns[[1]]$cardinality)
+  for (i in 1:length(ddalpha$patterns))
+    classes = c(classes, rep(gcolors[i], ddalpha$patterns[[i]]$cardinality))
+  margins = c(min(data[,1]), max(data[,1]), min(data[,2]), max(data[,2]));  margins = margins + c(-0.1*(margins[2]-margins[1]), 0.1*(margins[2]-margins[1]), -0.1*(margins[4]-margins[3]), 0.1*(margins[4]-margins[3]))
+  C = ncol(data)
+  
+  cr = 0
+  
+  if (drawplot)
+    plot(data, col = classes, main = main, xlab=xlab, ylab = ylab, ...)
+  if (!is.null(ddalpha$methodDepth))
+  if (ddalpha$methodDepth == "Mahalanobis" && ddalpha$mahEstimate == "moment"){
+    # Mahalanobis depth
+    for (i in seq(length(ddalpha$patterns))){
+      mahalanobisRegions(ddalpha$patterns[[i]]$points, levels, col = gcolors[i])
+    }
+  } else 
+    if (ddalpha$methodDepth == "Mahalanobis" && ddalpha$mahEstimate == "MCD"){
+      # Mahalanobis depth mit MCD
+      for (i in seq(length(ddalpha$patterns))){
+        mahalanobisMCDRegions(ddalpha$patterns[[i]]$points, ddalpha$mahParMcd, levels, col = gcolors[i])
+      }
+    } else 
+#       if (ddalpha$methodDepth == "zonoid"){
+#         if (require(WMTregions))
+#           for (i in seq(length(ddalpha$patterns))){
+#             wmtRegions(ddalpha$patterns[[i]]$points, depths = c(1:9/10), trtype = "zonoid", col = gcolors[i])
+#           }
+#         else{
+#           contourRegions(ddalpha, margins = margins, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), frequency=frequency)      
+#         }
+#       } else 
+#         if (ddalpha$methodDepth == "halfspace"){
+#           library(depth)
+#           for (i in seq(length(ddalpha$patterns))){
+#             locationRegions(ddalpha$patterns[[i]]$points, depths = c(1:9/10), col = gcolors[i])
+#           }    
+#         }  else
+          # no formal depth regions
+        {
+          cr = (contourRegions(ddalpha, margins = margins, depths = levels, frequency=frequency))
+        }   
+  
+  lwd = 2
+  if(drawsep){
+    gx <- seq(min(ddalpha$raw[, 1]), max(ddalpha$raw[, 1]), length = frequency)
+    gy <- seq(min(ddalpha$raw[, 2]), max(ddalpha$raw[, 2]), length = frequency)
+    y <- as.matrix(expand.grid(gx, gy))   
+    
+    depthcontours = ddalpha.classify(ddalpha = ddalpha, objects = y)
+    depthcontours = as.numeric(unlist(depthcontours))
+    contour(gx, gy, matrix(depthcontours, nrow=length(gx), ncol = length(gy)), add = TRUE, levels = unique(depthcontours)+0.5, drawlabels = FALSE, col = "black", lwd = lwd)
+  }
+  
+  invisible(cr)
+}
+
+
+depth.contours <- function(data, depth, main = "", xlab="", ylab = "", drawplot = T, frequency=100, levels = 10, col = "red", ...){
+  
+  if(!(is.matrix(data)||is.data.frame(data)))
+    stop("Data is not a matrix or a data frame")
+  
+  if (ncol(data) != 2)
+  {
+    stop("The contours may be drawn only for 2 dimensional datasets")
+  }
+  
+  if (drawplot){
+    #cc = tryCatchCapture(
+      plot(data, col = col, main = main, xlab=xlab, ylab = ylab, ...)
+    #, err = F) # catch all warnings about unused params
+    #wrns = sort(unique(cc$warnings))
+    #values = gsub("\"(.+)\".+", "\\1", wrns)
+    #if(lenght(values)>0)
+    #  warning("Unused by 'plot' arguments: ", paste(unused, collapse = ', '))
+  }
+  margins = c(min(data[,1]), max(data[,1]), min(data[,2]), max(data[,2]));  margins = margins + c(-0.1*(margins[2]-margins[1]), 0.1*(margins[2]-margins[1]), -0.1*(margins[4]-margins[3]), 0.1*(margins[4]-margins[3]))
+  
+  if (depth == "Mahalanobis"){
+    # Mahalanobis depth
+    mahalanobisRegions(data, levels, col = col)
+  } else 
+#     if (depth == "zonoid"){
+#       if (require(WMTregions))
+#         wmtRegions(data, depths = c(1:9/10), trtype = "zonoid", col = col)
+#       else{
+#         contourRegionsData(data, depth = depth, margins = margins, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), frequency=frequency, col = col, ...)      
+#       }
+#     } else 
+#       if (depth == "halfspace"){
+#         library(depth)
+#         locationRegions(data, depths = c(1:9/10), col = col)  
+#       }  else 
+        # no formal depth regions
+      {
+        invisible(contourRegionsData(data, depth = depth, margins = margins, depths = levels, frequency=frequency, col = col, ...))
+      }   
+  
+  invisible(0)
+}
+
+
+# wmtRegions <- function(x, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), trtype = "zonoid", col = "black"){
+#   fname <- "Cloud.dat"
+#   #trname <- "TRegion_vertices.dat"
+#   trname <- "tmp_vrtheap.dat"
+#   fdir = getwd()
+#   for (i in 1:length(depths)){
+#     ffullname = as.character(paste(fdir, "/", fname, sep = ""))
+#     write(trtype, ffullname)
+#     write(depths[i], ffullname, append = TRUE)
+#     write(ncol(x), ffullname, append = TRUE)
+#     write(nrow(x), ffullname, append = TRUE)
+#     write(array(t(x), dim = c(nrow(x), ncol(x))), ffullname, ncolumns = ncol(x), append = TRUE)
+#     WMTR()
+#     cat("Calculated for i = ", i, "\n")
+#     wmtreg <- read.table(as.character(paste(fdir, "/", trname, sep = "")), sep=" ")
+#     unlink(as.character(paste(fdir, "/", trname, sep = "")))
+#     wmtreg <- as.matrix(wmtreg)
+#     numribs <- nrow(wmtreg)/2
+#     for (i in 1:numribs){
+#       lines(rbind(wmtreg[i*2 - 1,], wmtreg[i*2,]), col = col)
+#     }    
+#   }
+# }
+# 
+# locationRegions <- function(x, depths = NULL, col = "black"){
+#   numLearn <- nrow(x)
+#   vert = isodepth(x, c(2:(numLearn - 1)), output = T, dpth = as.integer(depths*numLearn/2))
+#   for (verticles in vert){
+#     if(is.null(verticles) || nrow(verticles)<1) next
+#     verticles = rbind(verticles, verticles[1,])
+#     lines(verticles, col = col)
+#   }
+# }
+
+mahalanobisRegions <- function(x, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), col = "black"){
+  
+  if(is.na(depths) || is.null(depths))
+    depths = 10
+  if(length(depths) == 1 && depths > 1)
+    depths = seq(0.0001, 1, length.out = depths)
+  
+  c <- c(0,0)
+  for (i in 1:nrow(x)){
+    c <- c + x[i,]
+  }
+  mu <- c / nrow(x)
+  sigma.inv <- solve(cov(x))
+  for (i in 1:length(depths)){
+    ellipsem(mu = mu, amat = sigma.inv, c2 = 1/depths[i] - 1, showcentre = F, col = col)
+  }
+}
+
+mahalanobisMCDRegions <- function(x, alpha = 1/2, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), col = "black"){
+  
+  if(is.na(depths) || is.null(depths))
+    depths = 10
+  if(length(depths) == 1 && depths > 1)
+    depths = seq(0.0001, 1, length.out = depths)
+  
+  #  library(robustbase)
+  estimate <- covMcd(x, alpha = alpha)
+  mu <- estimate$center
+  sigma.inv <- solve(estimate$cov)
+  for (i in 1:length(depths)){
+    ellipsem(mu = mu, amat = sigma.inv, c2 = 1/depths[i] - 1, showcentre = F, col = col)
+  }
+}
+
+contourRegions <- function(ddalpha, margins = NULL, depths, frequency=100){
+  
+  if (is.null(margins)){
+    if (ddalpha$needtransform == 1)
+      data = rbind(ddalpha$patterns[[1]]$transformer(ddalpha$patterns[[1]]$points, inv = T), ddalpha$patterns[[2]]$transformer(ddalpha$patterns[[2]]$points, inv = T))
+    else
+      data = rbind(ddalpha$patterns[[1]]$points, ddalpha$patterns[[2]]$points)
+    margins = c(min(data[,1]), max(data[,1]), min(data[,2]), max(data[,2]));  margins = margins + c(-0.1*(margins[2]-margins[1]), 0.1*(margins[2]-margins[1]), -0.1*(margins[4]-margins[3]), 0.1*(margins[4]-margins[3]))
+  }
+  
+  gx <- seq(margins[1], margins[2], length=frequency)
+  gy <- seq(margins[3], margins[4], length=frequency)
+  y <- as.matrix(expand.grid(gx, gy))    
+  
+  depthcontours <- .ddalpha.count.depths(ddalpha, y)  
+  
+  if(is.na(depths) || is.null(depths))
+    depths = 10
+  
+  if(length(depths) == 1 && depths > 1)
+    depths = seq(0, max(depthcontours), length.out = depths)
+  
+  for (i in seq(length(ddalpha$patterns))){
+    contour(gx, gy, matrix(depthcontours[,i], nrow=length(gx), ncol=length(gy)), add=TRUE, levels=depths*max(depthcontours), drawlabels=FALSE, col = gcolors[i])
+  }
+  
+  invisible(list(gx = gx, gy = gy, depthcontours = depthcontours))
+}
+
+contourRegionsData <- function(data, depth, margins = NULL, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), frequency=100, col = "red", ...){
+  
+  if (is.null(depth) || depth == "none"){
+    invisible (0);}
+  else{
+  # df = switch(depth,
+  #             "zonoid" = function(x, data, ...) depth.zonoid(x, data) ,
+  #             "halfspace" = depth.halfspace,
+  #             "simplicialVolume" = depth.simplicialVolume,
+  #             "simplicial" = depth.simplicial,
+  #             "Mahalanobis" = function(x, X) (.Mahalanobis_depth(x, colMeans(X), solve(cov(X)))),
+  #             "projection" = depth.projection,
+  #             "spatial" = depth.spatial
+  # )
+  df = function(x, data, ...) 
+        ddalpha::depth.(x, data, notion = depth, ...)
+  
+  if (is.null(margins)){
+    margins = c(min(data[,1]), max(data[,1]), min(data[,2]), max(data[,2]));  margins = margins + c(-0.1*(margins[2]-margins[1]), 0.1*(margins[2]-margins[1]), -0.1*(margins[4]-margins[3]), 0.1*(margins[4]-margins[3]))
+  }
+  
+  gx <- seq(margins[1], margins[2], length=frequency)
+  gy <- seq(margins[3], margins[4], length=frequency)
+  y <- as.matrix(expand.grid(gx, gy))    
+  
+  depthcontours <- df(y,data,...)  
+  
+  if(is.na(depths) || is.null(depths))
+    depths = 10
+  if(length(depths) == 1 && depths > 1)
+    depths = seq(0.0001, max(depthcontours), length.out = depths)
+  
+  contour(gx, gy, matrix(depthcontours, nrow=length(gx), ncol=length(gy)), add=TRUE, levels=depths, drawlabels=FALSE, col = col)
+  
+  invisible(list(gx = gx, gy = gy, depthcontours = depthcontours))
+  }
+}
+
+
+ellipsem <- function (mu, amat, c2, npoints = 100, showcentre = T, col, ...){
+  if (all(dim(amat) == c(2, 2))) {
+    eamat <- eigen(amat)
+    hlen <- sqrt(c2/eamat$val)
+    theta <- angle(eamat$vec[1, 1], eamat$vec[2, 1])
+    ellipse(hlen[1], hlen[2], theta, mu[1], mu[2], npoints = npoints, col = col, ...)
+    if (showcentre)
+      points(mu[1], mu[2], pch = 3)
+  }
+  invisible()
+}
+
+ellipse <- function (hlaxa = 1, hlaxb = 1, theta = 0, xc = 0, yc = 0, newplot = F, npoints = 100, ...){
+  a <- seq(0, 2 * pi, length = npoints + 1)
+  x <- hlaxa * cos(a)
+  y <- hlaxb * sin(a)
+  alpha <- angle(x, y)
+  rad <- sqrt(x^2 + y^2)
+  xp <- rad * cos(alpha + theta) + as.double(xc)
+  yp <- rad * sin(alpha + theta) + as.double(yc)
+  if (newplot)
+    plot(xp, yp, type = "l", ...)
+  else lines(xp, yp, ...)
+  invisible()
+}
+
+angle <- function (x, y)
+{
+  angle2 <- function(xy) {
+    x <- xy[1]
+    y <- xy[2]
+    if (x > 0) {
+      atan(y/x)
+    }
+    else {
+      if (x < 0 & y != 0) {
+        atan(y/x) + sign(y) * pi
+      }
+      else {
+        if (x < 0 & y == 0) {
+          pi
+        }
+        else {
+          if (y != 0) {
+            (sign(y) * pi)/2
+          }
+          else {
+            NA
+          }
+        }
+      }
+    }
+  }
+  apply(cbind(x, y), 1, angle2)
+}
\ No newline at end of file
diff --git a/R/depth.fd.R b/R/depth.fd.R
new file mode 100644
index 0000000..8c3bd1f
--- /dev/null
+++ b/R/depth.fd.R
@@ -0,0 +1,2073 @@
+################
+# R call for the F procedures
+# functional depth computation
+# Stanislav Nagy
+# nagy at karlin.mff.cuni.cz
+# 26/09/2017
+#             
+# Nagy, Gijbels, Hlubinka: Depth-Based Recognition of Shape Outlying Functions. Journal of Computational and Graphical Statistics. To appear.
+# Nagy, Ferraty: Data Depth for Noisy Random Functions. Under review.
+################
+
+if(FALSE){
+  # for roxygenize only
+  unlink("depth.fd",recursive=TRUE)
+  library(roxygen2)
+  library(devtools)
+  package.skeleton("depth.fd",code_files="depth.fd.R")
+  roxygenize("depth.fd")
+}
+
+#' @useDynLib depth.fd
+#' @export FKS
+#' @export shape.fd.analysis
+#' @export shape.fd.outliers
+#' @export depthf.BD
+#' @export depthf.ABD
+#' @export depthf.fd1
+#' @export depthf.fd2
+#' @export depthf.HR
+#' @export depthf.hM
+#' @export depthf.hM2
+#' @export depthf.RP1
+#' @export depthf.RP2
+#' @export derivatives.est
+#' @export L2metric
+#' @export Cmetric
+#' @export depth.sample
+#' @export infimalRank
+#' @export dataf2rawfd
+#' @export rawfd2dataf
+
+#' @title Transform a \code{dataf} object to raw functional data
+#' 
+#' @description
+#' From a (possibly multivariate) functional data object \code{dataf} constructs an array of the functional values
+#' evaluated at an equi-distant grid of points.
+#' 
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords functional
+#'
+#' @param dataf Functions to be transformed, represented by a (possibly multivariate) \code{dataf} object of their arguments
+#' and functional values. \code{m} stands for the number of functions. The grid of observation points for the 
+#' functions in \code{dataf} may not be the same.
+#'
+#' @param range The common range of the domain where the fucntions \code{dataf} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{dataf}. If the range is not provided, the smallest interval in which all the arguments from the data functions
+#' are contained is chosen as the domain.
+#' 
+#' @param d Grid size to which all the functional data are transformed. All functional observations are 
+#' transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).
+#'
+#' @return If the functional data are univariate (scalar-valued), a matrix of size \code{m*d} is given, with each row
+#' corresponding to one function. If the functional data are \code{k}-variate with k>1, an array of size \code{m*d*k}
+#' of the functional values is given.
+#' 
+#' @examples
+#' ## transform a matrix into a functinal data set and back
+#' n = 5
+#' d = 21
+#' X = matrix(rnorm(n*d),ncol=d)
+#' R = rawfd2dataf(X,range=c(0,1))
+#' R2 = dataf2rawfd(R,range=c(0,1),d=d)
+#' all.equal(X,R2)
+#' 
+#' ## transform a functional dataset into a raw matrix of functional values
+#' dataf = dataf.population()$dataf
+#' dataf2rawfd(dataf,range=c(1950,2015),d=66)
+#' 
+#' ## transform an array into a multivariate functional data set and back
+#' k = 3
+#' X = array(rnorm(n*d*k),dim=c(n,d,k))
+#' R = rawfd2dataf(X,range=c(-1,1))
+#' dataf2rawfd(R,range=c(-1,1),d=50)
+#'
+#' @seealso \code{\link{rawfd2dataf}}
+#' @seealso \code{\link{depthf.fd1}}
+#' @seealso \code{\link{depthf.fd2}}
+
+# M = dataf2rawfd(dataf.growth()$dataf)
+
+dataf2rawfd = function(dataf, range = NULL, d = 101){
+  # transform dataf format for functional data to a raw matrix
+  # of functional values evaluated at a grid common to all functions
+  # range: range of the common grid, if not specified the range of all the functions
+  # d: no of discretized points in the grid, equidistant
+  # approximation procedure follows Nagy et al. (2016, JMVA)
+  
+  # Check "dataf"
+  if (!is.list(dataf))
+    stop("Argument 'dataf' must be a list")
+  
+  if(is.vector(dataf[[1]]$vals)){
+    mv = FALSE
+    for (df in dataf)
+      if (!(is.list(df) && length(df) == 2 &&
+            !is.null(df$args) && !is.null(df$vals) &&
+            is.vector(df$args) && is.vector(df$vals) &&
+            is.numeric(df$args) && is.numeric(df$vals) &&
+            length(df$args) == length(df$vals) &&
+            sort(df$args) == df$args))
+        stop("Argument 'dataf' must be a list containing lists (functions) 
+             of two vectors of equal length, named 'args' and 'vals': 
+             arguments sorted in ascending order and corresponding them 
+             values respectively") 
+  }
+  
+  if(is.matrix(dataf[[1]]$vals)){
+    mv = TRUE
+    for (df in dataf)
+      if (!(is.list(df) && length(df) == 2 &&
+            !is.null(df$args) && !is.null(df$vals) &&
+            is.vector(df$args) && is.matrix(df$vals) &&
+            is.numeric(df$args) && is.numeric(df$vals) &&
+            length(df$args) == nrow(df$vals) &&
+            sort(df$args) == df$args))
+        stop("Argument 'dataf' must be a list containing lists (functions) 
+             of a vector named 'args' and a matrix named 'vals'. The arguments
+             of 'args' must be sorted in ascending order. To each element of 'args'
+             the corresponding row in 'vals' represents 
+             the functional values at this point") 
+  }
+  
+  # range construction
+  rng = numeric(0)
+  for (df in dataf)	rng = range(c(rng,df$args)) # common range of all the data
+  if(!is.null(range)){ 
+    if(!(length(range) == 2 && is.numeric(range) && 
+         range[1]<=rng[1] && range[2]>=rng[2])) 
+      stop("Argument 'range' must be a numeric vector of two components
+           that defines the range of the domain of functional data. All
+           functional data must have 'args' vales inside this domain.")
+  } else range = rng
+  if(!(range[1]<range[2])) stop("Argument 'range' must define a non-degenerate interval.")	
+  
+  t = seq(range[1],range[2],length=d)
+  n = length(dataf)
+  if(!mv){
+    X = matrix(nrow=n,ncol=d)
+    # functional data interpolation / extrapolation
+    for(i in 1:n){
+      ni = length(dataf[[i]]$args)
+      X[i,] = approx(dataf[[i]]$args,dataf[[i]]$vals,t)$y
+      X[i,t<=dataf[[i]]$args[1]] = dataf[[i]]$vals[1]
+      X[i,t>=dataf[[i]]$args[ni]] = dataf[[i]]$vals[ni]
+    }
+  } else {
+    k = ncol(dataf[[1]]$vals)
+    X = array(dim=c(n,d,k))
+    # functional data interpolation / extrapolation
+    for(i in 1:n){
+      ni = length(dataf[[i]]$args)
+      for(j in 1:k) X[i,,j] = approx(dataf[[i]]$args,dataf[[i]]$vals[,j],t)$y
+      X[i,t<=dataf[[i]]$args[1],] = dataf[[i]]$vals[1,]
+      X[i,t>=dataf[[i]]$args[ni],] = dataf[[i]]$vals[ni,]
+    }
+  }
+  return(X)
+  }
+
+#' @title Transform raw functional data to a \code{dataf} object
+#' 
+#' @description
+#' Constructs a (possibly multivariate) functional data object given by an array of its functional values
+#' evaluated at an equi-distant grid of points, and transforms it into a \code{dataf} object more suitable 
+#' for work in the \code{ddalpha} package.
+#' 
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords functional
+#'
+#' @param X Either a matrix of size \code{n*d}, or an array of dimension \code{n*d*k} of functional values. Here \code{n}
+#' stands for the number of functions, \code{d} is the number of equi-distant points in the domain where the functional
+#' values are evaluated, and if applicable, \code{k} is the dimensionality of the (vector-valued) functional data.
+#'
+#' @param range A vector of size two that represents the endpoints of the common domain of all functions \code{X}.
+#'
+#' @return A (possibly multivariate) \code{dataf} object corresponding to the functional data \code{X} evaluated at an
+#' equi-distant grid of points.
+#' 
+#' @examples
+#' ## transform a matrix into a functinal data set
+#' n = 5
+#' d = 21
+#' X = matrix(rnorm(n*d),ncol=d)
+#' rawfd2dataf(X,range=c(0,1))
+#' 
+#' ## transform an array into a multivariate functional data set
+#' k = 3
+#' X = array(rnorm(n*d*k),dim=c(n,d,k))
+#' rawfd2dataf(X,range=c(-1,1))
+#'
+#' @seealso \code{\link{dataf2rawfd}}
+#' @seealso \code{\link{depthf.fd1}}
+#' @seealso \code{\link{depthf.fd2}}
+
+rawfd2dataf = function(X, range){
+  # transform a raw array of functional data values 
+  # to a dataf format, where the domain is assumed to be
+  # an equidistant grid in the interval given by range
+
+  if(is.vector(X)) X = matrix(X,nrow=1) # if X is a single vector, it is considered to be a matrix of one scalar function
+    
+  # Check "rawfd"
+  if (!is.array(X))
+    stop("Argument 'X' must be an array (multivariate functional data)
+         or a matix (univariate functional data)")
+  mv = !is.matrix(X)
+  
+  # range construction
+  if(!(range[1]<range[2])) stop("Argument 'range' must define a non-degenerate interval.")	
+  n = dim(X)[1]
+  d = dim(X)[2]
+  if(mv) k = dim(X)[3]
+  t = seq(range[1],range[2],length=d)
+  dataf = list()
+  for(i in 1:n){
+    if(mv) df = list(args = t, vals = X[i,,]) else df = list(args = t, vals = X[i,])
+    dataf[[i]] = df
+  }
+  return(dataf)
+}
+
+#' @title Fast kernel smoothing
+#'
+#' @description
+#' Produces a kernel smoothed version of a function based on
+#' the vectors given in the input. Bandwidth is selected using cross-validation.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords smoothing kernel functional
+#'
+#' @details
+#' A vector of the same length as \code{Tout}
+#' corresponding to the values of the
+#' function produced using kernel smoothing, is provided. Bandwidth is selected using the
+#' \code{K}-fold cross-validation of randomly shuffled input values.
+#'
+#' @param dataf A set of functional data given by a \code{dataf} object that are to be smoothed.
+#'
+#' @param Tout vector of values in the domain of the functions at which the
+#' resulting smoothed function is evaluated
+#' 
+#' @param kernel Kernel used for smoothing. Admissible values are \code{uniform}, 
+#' \code{triangular}, \code{Epanechnikov}, \code{biweight}, \code{triweight} and \code{Gaussian}.
+#' By default, \code{uniform} is used.
+#' 
+#' @param m Number of points in the grid for choosing the cross-validated bandwidth.
+#' 
+#' @param K Performs \code{K}-fold cross-validation based on randomly shuffled data.
+#'
+#' @return A \code{dataf} object corresponding to \code{Tout} of smoothed functional values.
+#' 
+#' @examples
+#' d = 10
+#' T = sort(runif(d))
+#' X = T^2+ rnorm(d,sd=.1)
+#' Tout = seq(0,1,length=101)
+#' 
+#' plot(T,X)
+#' dataf = list(list(args=T,vals=X))
+#' data.sm = FKS(dataf,Tout,kernel="Epan")
+#' lines(data.sm[[1]]$args,data.sm[[1]]$vals,col=2)
+#' 
+#' datafs = structure(list(dataf=dataf,labels=1:length(dataf)),class="functional")
+#' plot(datafs)
+#' points(T,X)
+#' data.sms = structure(list(dataf=data.sm,labels=1:length(data.sm)),class="functional")
+#' plot(data.sms)
+#' 
+#' n = 6
+#' dataf = list()
+#' for(i in 1:n) dataf[[i]] = list(args = T<-sort(runif(d)), vals = T^2 + rnorm(d,sd=.1))
+#' data.sm = FKS(dataf,Tout,kernel="triweight")
+#' data.sms = structure(list(dataf=data.sm,labels=1:length(data.sm)),class="functional")
+#' plot(data.sms)
+
+FKS = function(dataf,Tout,kernel=c("uniform","triangular","Epanechnikov","biweight","triweight","Gaussian"),m=51,K=20){
+  # kernel smoothing
+  # produces directly the kernel smoother with CV value of h
+  # Hmax 	the maximal H for CV
+  # m		no of elements of H for CV
+  # K		K-fold CV for bandwidth selection
+  #
+  # Args:
+  #   dataf:  list containing lists (functions) of two vectors of equal length, 
+  #           named "args" and "vals": arguments sorted in ascending order and 
+  #           corresponding them values respectively
+  #   labels: output labels of the functinal observations
+
+  # Check "dataf"
+  if (!is.list(dataf))
+    stop("Argument 'dataf' must be a list")
+  for (df in dataf)
+    if (!(is.list(df) && length(df) == 2 &&
+          !is.null(df$args) && !is.null(df$vals) &&
+          is.vector(df$args) && is.vector(df$vals) &&
+          is.numeric(df$args) && is.numeric(df$vals) &&
+          length(df$args) == length(df$vals) &&
+          sort(df$args) == df$args))
+      stop("Argument 'dataf' must be a list containing lists (functions) 
+           of two vectors of equal length, named 'args' and 'vals': 
+           arguments sorted in ascending order and corresponding them 
+           values respectively")  
+  
+  krn = c("uniform","triangular","Epanechnikov","biweight","triweight","Gaussian")
+  kernel = match.arg(kernel)
+  kernI = which(kernel==krn)
+  for(df in dataf) if(sum(is.na(df$args))>0) stop("NA values in the functional args vector are not allowed")
+  # produce the output structure
+  sm.dataf = list()
+  Tout = sort(Tout)
+  for(j in 1:length(dataf)){
+    T = dataf[[j]]$args
+    X = dataf[[j]]$vals
+    ST = dataf[[j]]$args
+    eps = 10^(-6)
+    Hmin = max(c(ST[1],(1-ST[length(ST)]),max(ST[-1] - ST[-length(ST)])/2))+eps
+    H = seq(Hmin,ST[length(ST)]-ST[1],length=m)
+    #
+    n = length(ST)
+    nR = max(1,floor(n/K))
+    if(nR==1) K = n
+    TRE = rep(NA,nR*K)
+    XRE = rep(NA,nR*K)
+    TNRE = rep(NA,K*(n-nR))
+    XNRE = rep(NA,K*(n-nR))
+    SH = sample(n,n)			# random shuffle of the points for CV
+    for(i in 1:K){
+      S = SH[(i-1)*nR+(1:nR)] 
+      TRE[(i-1)*nR+(1:nR)] = T[S]
+      XRE[(i-1)*nR+(1:nR)] = X[S]
+      TNRE[(i-1)*(n-nR)+(1:(n-nR))] = T[-S]
+      XNRE[(i-1)*(n-nR)+(1:(n-nR))] = X[-S]
+    }
+    Res = .Fortran("CVKERNSM",
+                   as.double(T),
+                   as.double(X),
+                   as.double(Tout),
+                   as.integer(length(T)),
+                   as.integer(length(Tout)),
+                   as.double(H),
+                   as.integer(length(H)),
+                   as.integer(kernI),
+                   as.double(TRE),
+                   as.double(XRE),
+                   as.double(TNRE),
+                   as.double(XNRE),
+                   as.integer(nR),		
+                   as.integer(K),
+                   as.double(rep(0,length(Tout)))
+    )
+    Res[Res[[15]]>10^6] = Inf
+    sm.dataf[[j]] = list(args = Tout, vals = Res[[15]])
+  }
+  return(sm.dataf)
+}
+      
+#' @title Fast depth computation for univariate and bivariate random samples
+#'
+#' @description
+#' Faster implementation of the halfspace and the simplicial depth. Computes the depth 
+#' of a whole random sample of a univariate or a bivariate data in one run.	
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth
+#'
+#' @details
+#' The function returns vectors of sample halfspace and simplicial depth values.
+#'
+#' @param A Univariate or bivariate points whose depth is computed, represented by a matrix of 
+#' size \code{m*2}. \code{m} stands for the number of points, \code{d} is 1 for univariate and 2 
+#' for bivariate data.
+#'
+#' @param B Random sample points with respect to which the depth of \code{A} is computed. 
+#' \code{B} is represented by a matrix of size \code{n*2}, where \code{n} is the sample size.
+#'
+#' @return Vector of length \code{m} of depth halfspace depth values is returned.
+#' 
+#' @examples
+#' n = 100
+#' m = 150
+#' A = matrix(rnorm(2*n),ncol=2)
+#' B = matrix(rnorm(2*m),ncol=2)
+#' depth.sample(A,B)
+#' system.time(D1<-depth.halfspace(A,B))
+#' system.time(D2<-depth.sample(A,B))
+#' max(D1-D2$Half)
+#'
+#' A = rnorm(100)
+#' B = rnorm(150)
+#' depth.sample(A,B)
+#' # depth.halfspace(matrix(A,ncol=1),matrix(B,ncol=1))
+#'
+#' @seealso \code{\link{depth.halfspace}}
+#' @seealso \code{\link{depth.simplicial}}
+
+depth.sample = function(A,B){
+	# bivariate halfspace depth
+	# A points whose depth I compute, M*2 matrix
+	# B points wrt whose the depth is computed, N*2 matrix
+      if(is.null(dim(A))){ # for univariate data
+	A1 = as.vector(A)
+      B1 = as.vector(B)	
+	m = length(A)
+	n = length(B)
+	FD = .Fortran("dpth1",	
+                  as.numeric(A1),		#	A1
+                  as.numeric(B1),		#	B1
+            	as.integer(m),		#	m
+            	as.integer(n),		#	n
+            	sdep=as.numeric(rep(-1,m)),
+                  hdep=as.numeric(rep(-1,m))
+      		)
+      return(list(Simpl = FD$sdep, Half = FD$hdep))
+	} else {
+	A1 = as.vector(A[,1])
+      A2 = as.vector(A[,2])
+      B1 = as.vector(B[,1])
+      B2 = as.vector(B[,2])
+	m = dim(A)[1]
+	n = dim(B)[1]
+      if((dim(B)[2]!=2)|(dim(A)[2]!=2)) stop("Computation for two dimensions only")
+	     FD = .Fortran("dpth2",	
+                  as.numeric(A1),		#	A1
+                  as.numeric(A2),		#	A2
+                  as.numeric(B1),		#	B1
+                  as.numeric(B2),		#	B2
+            	as.integer(m),		#	m
+            	as.integer(n),		#	n
+            	sdep=as.numeric(rep(-1,m)),
+                  hdep=as.numeric(rep(-1,m))
+      		)
+      return(list(Simpl = FD$sdep, Half = FD$hdep))
+	}
+	}
+
+#' @title Univariate integrated and infimal depth for functional data
+#'
+#' @description
+#' Usual, and order extended integrated and infimal depths for real-valued functional data based on the
+#' halfspace and simplicial depth.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns vectors of sample integrated and infimal depth values.
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).
+#'
+#' @param order The order of the order extended integrated and infimal depths.
+#' By default, this is set to \code{1}, meaning that the usual univariate depths of 
+#' the functional values are computed. For \code{order=2} or \code{3}, the second
+#' and the third order extended integrated and infimal depths are computed, 
+#' respectively. 
+#'
+#' @param approx Number of approximations used in the computation of the order extended depth
+#' for \code{order} greater than \code{1}. For \code{order=2}, the default
+#' value is set to \code{0}, meaning that the depth is computed at all possible \code{d^order}
+#' combinations of the points in the domain. For \code{order=3}, 
+#' the default value is set to \code{101}. When \code{approx} is a positive integer, \code{approx}
+#' points are randomly sampled in \code{[0,1]^order} and at these points the \code{order}-variate depths of the
+#' corresponding functional values are computed.
+#'
+#' @return Four vectors of length \code{m} of depth values are returned:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the integrated depth based on the simplicial depth,
+#'	\item \code{Half_FD} the integrated depth based on the halfspace depth,
+#'	\item \code{Simpl_ID} the infimal depth based on the simplicial depth,
+#'	\item \code{Half_ID} the infimal depth based on the halfspace depth.
+#'	}
+#' In addition, two vectors of length \code{m} of the relative area of smallest depth values is returned:
+#'	\itemize{
+#'	\item \code{Simpl_IA} the proportions of points at which the depth \code{Simpl_ID} was attained,
+#'	\item \code{Half_IA} the proportions of points at which the depth \code{Half_ID} was attained.
+#'	}
+#' The values \code{Simpl_IA} and \code{Half_IA} are always in the interval [0,1]. 
+#' They introduce ranking also among functions having the same
+#' infimal depth value - if two functions have the same infimal depth, the one with larger infimal area
+#' \code{IA} is said to be less central. 	
+#' For \code{order=2} and \code{m=1}, two additional matrices of pointwise depths are also returned:
+#'	\itemize{
+#'    \item \code{PSD} the matrix of size \code{d*d} containing the computed 
+#'    pointwise bivariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+#'    \item \code{PHD} the matrix of size \code{d*d} containing the computed 
+#'    pointwise bivariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+#'	}
+#' For \code{order=3}, only \code{Half_FD} and \code{Half_ID} are provided.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+#' Weak convergence of discretely observed functional data with applications. 
+#' \emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear.
+#'
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' depthf.fd1(datafA,datafB)
+#' depthf.fd1(datafA,datafB,order=2)
+#' depthf.fd1(datafA,datafB,order=3,approx=51)
+#'
+#' @seealso \code{\link{depthf.fd2}}, \code{\link{infimalRank}}
+
+depthf.fd1 = function(datafA,datafB,range=NULL,d=101,order=1,approx=0){
+  # univariate integrated depth
+  # A functions whose depth I compute, M*D matrix
+  # B functions wrt whose the depth is computed, N*D matrix
+  # both 1dimensional, n*d, n nr of functions, d dimensionality
+  
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+  
+  if(order==1){
+    A1 = as.vector(A)
+    B1 = as.vector(B)
+    d = dim(A)[2]
+    m = dim(A)[1]
+    n = dim(B)[1]
+    if(dim(B)[2]!=d) stop("dimension mismatch")
+    FD = .Fortran("funD1",	
+                  as.numeric(A1),		#	A
+                  as.numeric(B1),		#	B
+                  as.integer(m),		#	m
+                  as.integer(n),		#	n
+                  as.integer(d),		#	d
+                  funsdep=as.numeric(rep(-1,m)),	
+                  funhdep=as.numeric(rep(-1,m)),
+                  fIsdep =as.numeric(rep(-1,m)),
+                  fIhdep =as.numeric(rep(-1,m)),
+                  IAsdep =as.integer(rep(-1,m)),
+                  IAhdep =as.integer(rep(-1,m))
+    )
+    return(list(	Simpl_FD = FD$funsdep, Half_FD = FD$funhdep,
+                 Simpl_ID = FD$fIsdep, Half_ID = FD$fIhdep, 
+                 Simpl_IA = FD$IAsdep/d, Half_IA = FD$IAhdep/d ))
+  }
+  if(order==2) return(DiffDepth(A,B,approx))
+  if(order==3) return(DiffDepth3D(A,B,approx))
+}
+
+#' @title Fast computation of the \eqn{L^2} metric for sets of functional data
+#'
+#' @description
+#' Returns the matrix of \eqn{L^2} distances between two sets of functional data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords metric functional
+#'
+#' @details
+#' For two sets of functional data of sizes \code{m} and \code{n}
+#' represented by matrices of their functional values, 
+#' this function returns the symmetric matrix of size \code{m*n} whose entry in the
+#' \code{i}-th row and \code{j}-th column is the approximated \eqn{L^2} distance of the 
+#' \code{i}-th function from the first set, and the \code{j}-th function from the second set.
+#' This function is utilized in the computation of the h-mode depth.
+#'
+#' @param A Functions of the first set, represented by a matrix of their functional values of 
+#' size \code{m*d}. \code{m} stands for the number of functions, \code{d}
+#' is the number of the equi-distant points in the domain of the data at which the functional
+#' values of the \code{m} functions are evaluated.
+#'
+#' @param B Functions of the second set, represented by a matrix of their functional values of 
+#' size \code{n*d}. \code{n} stands for the number of functions, \code{d}
+#' is the number of the equi-distant points in the domain of the data at which the functional
+#' values of the \code{n} functions are evaluated. The grid of observation points for the 
+#' functions \code{A} and \code{B} must be the same.
+#'
+#' @return A symmetric matrix of the distances of the functions of size \code{m*n}.
+#' 
+#' @examples
+#' datapop = dataf2rawfd(dataf.population()$dataf,range=c(1950,2015),d=66)
+#' A = datapop[1:20,]
+#' B = datapop[21:50,]
+#' L2metric(A,B)
+#'
+#' @seealso \code{\link{depthf.hM}}
+#' @seealso \code{\link{dataf2rawfd}}
+
+L2metric = function(A,B){
+	# computes fast approximation of L2 distance between fctions A and B
+	M = .Fortran("metrl2",
+		as.numeric(A),
+		as.numeric(B),
+		as.integer(m<-nrow(A)),
+		as.integer(n<-nrow(B)),
+		as.integer(d<-length(as.numeric(A))/nrow(A)),
+		m = as.numeric(rep(-1,m*n)))$m
+	return(M = matrix(M,nrow=m))
+	}
+
+depthf.M = function(A,B,q=.2){
+	# h-mode depth for the L2 metric
+	mdist = L2metric(B,B)
+	mdist2 = L2metric(A,B)
+	hq2 = quantile(mdist[mdist>0],probs=q,type=1)	# probs=.2 as in Cuevas et al. (2007)
+	return(rowSums(dnorm(mdist2/hq2)))
+	}
+
+#' @title Fast computation of the uniform metric for sets of functional data
+#'
+#' @description
+#' Returns the matrix of \eqn{C} (uniform) distances between two sets of functional data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords metric functional
+#'
+#' @details
+#' For two sets of functional data of sizes \code{m} and \code{n}
+#' represented by matrices of their functional values, 
+#' this function returns the symmetric matrix of size \code{m*n} whose entry in the
+#' \code{i}-th row and \code{j}-th column is the approximated \eqn{C} (uniform) distance of the 
+#' \code{i}-th function from the first set, and the \code{j}-th function from the second set.
+#' This function is utilized in the computation of the h-mode depth.
+#'
+#' @param A Functions of the first set, represented by a matrix of their functional values of 
+#' size \code{m*d}. \code{m} stands for the number of functions, \code{d}
+#' is the number of the equi-distant points in the domain of the data at which the functional
+#' values of the \code{m} functions are evaluated.
+#'
+#' @param B Functions of the second set, represented by a matrix of their functional values of 
+#' size \code{n*d}. \code{n} stands for the number of functions, \code{d}
+#' is the number of the equi-distant points in the domain of the data at which the functional
+#' values of the \code{n} functions are evaluated. The grid of observation points for the 
+#' functions \code{A} and \code{B} must be the same.
+#'
+#' @return A symmetric matrix of the distances of the functions of size \code{m*n}.
+#' 
+#' @examples
+#' datapop = dataf2rawfd(dataf.population()$dataf,range=c(1950,2015),d=66)
+#' A = datapop[1:20,]
+#' B = datapop[21:50,]
+#' Cmetric(A,B)
+#'
+#' @seealso \code{\link{depthf.hM}}
+#' @seealso \code{\link{dataf2rawfd}}
+
+Cmetric = function(A,B){
+	# computes fast approximation of \eqn{C} distance between fctions A and B
+	M = .Fortran("metrC",
+		as.numeric(A),
+		as.numeric(B),
+		as.integer(m<-nrow(A)),
+		as.integer(n<-nrow(B)),
+		as.integer(d<-length(as.numeric(A))/nrow(A)),
+		m = as.numeric(rep(-1,m*n)))$m
+	return(M = matrix(M,nrow=m))
+	}
+
+depthf.MC = function(A,B,q=.2){
+	# h-mode depth for the \eqn{C} metric
+	mdist = Cmetric(B,B)
+	mdist2 = Cmetric(A,B)
+	hq2 = quantile(mdist[mdist>0],probs=q,type=1)	# probs=.2 as in Cuevas et al. (2007)
+	return(rowSums(dnorm(mdist2/hq2)))
+	}
+      
+#' @title h-mode depth for functional data
+#'
+#' @description
+#' The h-mode depth of functional real-valued data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns the vectors of the sample h-mode depth values. The kernel 
+#' used in the evaluation is the standard Gaussian kernel, the bandwidth value is chosen
+#' as a quantile of the non-zero distances between the random sample curves.
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param norm The norm used for the computation of the depth. Two possible 
+#' choices are implemented: \code{C} for the uniform norm of continuous functions, 
+#' and \code{L2} for the \eqn{L^2} norm of integrable functions.
+#'
+#' @param q The quantile used to determine the value of the bandwidth \eqn{h}
+#' in the computation of the h-mode depth. \eqn{h} is taken as the \code{q}-quantile of
+#' all non-zero distances between the functions \code{B}. By default, this value is set
+#' to \code{q=0.2}, in accordance with the choice of Cuevas et al. (2007).
+#'
+#' @return A vector of length \code{m} of the h-mode depth values.
+#' 
+#' @references Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+#' Robust estimation and classification for functional data via projection-based depth notions. 
+#' \emph{Computational Statistics} \bold{22} (3), 481--496.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+#' Weak convergence of discretely observed functional data with applications. 
+#' \emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+#'
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' depthf.hM(datafA,datafB)
+#' depthf.hM(datafA,datafB,norm="L2")
+      
+depthf.hM = function(datafA,datafB,range=NULL,d=101, norm = c("C","L2"), q=.2){
+
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+  
+  norm = match.arg(norm)
+  switch(norm,
+         C = depthf.MC(A,B,q),
+         L2 = depthf.M(A,B,q)
+  )
+}
+
+AdjBDKernL = function(b,v,J=3){
+	# v is a matrix m x eval
+	m = dim(v)[1]                                   # sample size
+	eval = length(b)                                
+	com = combn(m,J)
+	poc = dim(com)[2]
+	s = .Fortran("AdjLP",
+		as.integer(eval),
+		as.integer(J),
+		as.integer(m),
+		as.integer(poc),
+		as.integer(as.vector(com)),
+		as.numeric(b),
+		as.numeric(v),
+		dj = as.numeric(1))$dj
+	return(s)
+}
+
+AdjBDL = function(b,v,J=3,K=1){
+	eval = length(b)
+	m = dim(v)[1]                                   # sample size
+	sam = sample.int(m,m)                           # shuffle
+	if (K==0) K=1                                   # make sure K!=0
+	nk = m%/%K                                      # subsample size
+	nlast = m %% K+nk                               # last subsample size
+	Dpom = rep(NA,K)	   					# subsample depth
+	if (K>1){
+	        for (k in 1:(K-1)) 
+	                if (eval>1) Dpom[k] = AdjBDKernL(b,v[sam[((k-1)*nk+1):(k*nk)],],J)
+	                        else  Dpom[k] = AdjBDKernL(b,t(as.matrix(v[sam[((k-1)*nk+1):(k*nk)],])),J)
+	        }
+	{if (nlast>0){	
+	        if (eval>1) Dpom[K]= AdjBDKernL(b,v[sam[((K-1)*nk+1):m],],J)
+	                else  Dpom[K]= AdjBDKernL(b,t(as.matrix(v[sam[((K-1)*nk+1):m],])),J)
+     	   }
+        else (K=K-1)}
+	return(mean(Dpom[1:K]))
+}
+
+AdjBDsampleL = function(A,B,J=3,K=1){
+	m = dim(A)[1]
+	hlb = rep(NA,m)
+	for (i in 1:m) hlb[i] = AdjBDL(A[i,],B,J,K)
+	return(hlb)
+}
+
+AdjBDKernC = function(b,v,J=3){
+	# v ma rozmery m x eval
+	m = dim(v)[1]						# sample size
+	eval = length(b)					
+	com = combn(m,J)	
+	poc = dim(com)[2]
+	s = .Fortran("AdjC",
+		as.integer(eval),
+		as.integer(J),
+		as.integer(m),
+		as.integer(poc),
+		as.integer(as.vector(com)),
+		as.numeric(b),
+		as.numeric(v),
+		dj = as.numeric(1))$dj
+	return(s)
+}
+
+AdjBDC = function(b,v,J=3,K=1){
+	# v is a matrix m x eval
+	eval = length(b)
+	m = dim(v)[1]                                   # sample size
+	sam = sample.int(m,m)                           # shuffle
+	if (K==0) K=1                                   # make sure K!=0
+	nk = m%/%K                                      # subsample size
+	nlast = m %% K+nk                               # last subsample size
+	Dpom = rep(NA,K)	   					# subsample depth
+	if (K>1){
+		for (k in 1:(K-1)) 
+			if (eval>1) Dpom[k] = AdjBDKernC(b,v[sam[((k-1)*nk+1):(k*nk)],],J)
+				else  Dpom[k] = AdjBDKernC(b,t(as.matrix(v[sam[((k-1)*nk+1):(k*nk)],])),J)
+		}
+	{if (nlast>0){
+		if (eval>1) Dpom[K]= AdjBDKernC(b,v[sam[((K-1)*nk+1):m],],J)
+			else  Dpom[K]= AdjBDKernC(b,t(as.matrix(v[sam[((K-1)*nk+1):m],])),J)
+		}
+		else (K=K-1)}
+	return(mean(Dpom[1:K]))
+}
+
+AdjBDsampleC = function(A,B,J=3,K=1){
+	m = dim(A)[1]
+	hlb = rep(NA,m)
+	for (i in 1:m) hlb[i] = AdjBDC(A[i,],B,J,K)
+	return(hlb)
+}
+
+#' @title Adjusted band depth for functional data
+#'
+#' @description
+#' The adjusted band depth 
+#' of functional real-valued data based on either the
+#' \eqn{C} (uniform) norm, or on the \eqn{L^2} norm of functions.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns the vector of the sample adjusted band depth values. The kernel 
+#' used in the evaluation is the function \eqn{K(u) = exp(-u)}.
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).
+#'
+#' @param norm The norm used for the computation of the depth. Two possible 
+#' choices are implemented: \code{C} for the uniform norm of continuous functions, 
+#' and \code{L2} for the \eqn{L^2} norm of integrable functions. 
+#'
+#' @param J The order of the adjusted band depth, that is the maximal number of functions
+#' taken in a band. Acceptable values are \code{2}, \code{3},... By default this value is set to \code{2}. 
+#' Note that this is NOT the order as
+#' defined in the order-extended version of adjusted band depths in Nagy et al. (2016), used
+#' for the detection of shape outlying curves.
+#' 
+#' @param K Number of sub-samples of the functions from \code{B} taken to speed up the
+#' computation. By default, sub-sampling is not performed. Values of \code{K} larger than \code{1}
+#' result in an approximation of the adjusted band depth.
+#'
+#' @return A vectors of length \code{m} of the adjusted band depths.
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' depthf.ABD(datafA,datafB)
+#' depthf.ABD(datafA,datafB,norm="L2")
+#'
+#' @seealso \code{\link{depthf.BD}}
+#'
+#' @references Gijbels, I., Nagy, S. (2015).
+#' Consistency of non-integrated depths for functional data.
+#' \emph{Journal of Multivariate Analysis} \bold{140}, 259--282.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+#' Weak convergence of discretely observed functional data with applications. 
+#' \emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear.
+
+depthf.ABD = function(datafA,datafB,range=NULL,d=101, norm = c("C","L2"), J=2, K=1){
+  
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+  
+  norm = match.arg(norm)
+  switch(norm,
+         C = AdjBDsampleC(A,B,J,K),
+         L2 = AdjBDsampleL(A,B,J,K)
+  )
+}
+
+DiffDepth = function(A,B,approx=0){
+	# A functions whose depth I compute
+	# B functions wrt whose the depth is computed
+	# both 1dimensional, n*d, n nr of functions, d dimensionality
+	# approx is number of approximations to be used, 0 for full computation
+
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	Av = as.vector(A)
+	Bv = as.vector(B)
+	if (approx>0){
+		C = combn(1:d,2)		# all couples 
+		if (approx>=ncol(C)){ 
+			ind.sample = 1:ncol(C) 
+			approx = ncol(C) } else 
+			ind.sample = sample.int(ncol(C),approx)
+		RN = matrix(C[,ind.sample],nrow=2)		#	RN = random numbers of size 2*REP from 1:d
+		} else RN = 0		
+	FD = .Fortran("DiffD",	
+      	as.numeric(Av),		#	A
+       	as.numeric(Bv),		#	B
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+		as.integer(approx),	#	REP
+		as.integer(RN),		#	RN
+      	funsdep=as.numeric(rep(-1,m)),	
+      	funhdep=as.numeric(rep(-1,m)),
+      	funsdepm=as.numeric(rep(-1,m)),	
+      	funhdepm=as.numeric(rep(-1,m)),
+		Psdep = as.numeric(rep(-1,d*d)),
+		Phdep = as.numeric(rep(-1,d*d)),
+		IAsdep =as.integer(rep(-1,m)),
+		IAhdep =as.integer(rep(-1,m)))
+	if(approx==0){
+		S_IA = FD$IAsdep/(d^2)
+		H_IA = FD$IAhdep/(d^2)
+		} else {
+		S_IA = FD$IAsdep/(approx)
+		H_IA = FD$IAhdep/(approx)		
+		}
+	if (m>1) return(list(	Simpl_FD = FD$funsdep, Half_FD = FD$funhdep,
+					Simpl_ID = FD$funsdepm, Half_ID = FD$funhdepm,
+					Simpl_IA = S_IA, Half_IA = H_IA))
+	if ((m==1)&(approx==0)){
+		PSD = matrix(FD$Psdep,ncol=d)
+		PSD = pmax(PSD,0)
+		PSD = PSD + t(PSD)
+		diag(PSD) = NA
+		PHD = matrix(FD$Phdep,ncol=d)
+		PHD = pmax(PHD,0)
+		PHD = PHD + t(PHD)
+		diag(PHD) = NA
+		return(list(	Simpl_FD = FD$funsdep, Half_FD = FD$funhdep,
+					Simpl_ID = FD$funsdepm, Half_ID = FD$funhdepm,
+					PSD = PSD, PHD = PHD))
+		}
+	if ((m==1)&(approx>0)){
+		PSD = matrix(FD$Psdep,ncol=d)
+		for(i in 1:approx) PSD[RN[2*i-1],RN[2*i]]=PSD[RN[2*i],RN[2*i-1]]	# symmetrize
+		PSD[PSD==-1] = NA
+		PHD = matrix(FD$Phdep,ncol=d)
+		for(i in 1:approx) PHD[RN[2*i-1],RN[2*i]]=PHD[RN[2*i],RN[2*i-1]]	# symmetrize
+		PHD[PHD==-1] = NA
+		return(list(	Simpl_FD = FD$funsdep, Half_FD = FD$funhdep, 
+					Simpl_ID = FD$funsdepm, Half_ID = FD$funhdepm,
+					PSD = PSD, PHD = PHD))
+		}
+	}
+
+DiffDepth3D = function(A,B,approx=101){
+	
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	if(approx==0) approx=101
+	DT = matrix(nrow=m,ncol=approx)
+	for(a in 1:approx){
+		I = sample.int(d,3)
+		DT[,a] = depth.halfspace(A[,I],B[,I],exact=TRUE)  
+	}
+	D = apply(DT,1,mean)	# integrated depth
+	DI = apply(DT,1,min)	# infimal depth
+	IA = apply(DT,1,function(x) sum(x==min(x)))/approx	# infimal area
+	return(list(Half_FD=D,Half_ID=DI,Half_IA=IA))
+	}
+
+#' @title Bivariate h-mode depth for functional data based on the \eqn{L^2} metric
+#'
+#' @description
+#' The h-mode depth 
+#' of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+#' or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}) based on the
+#' \eqn{L^2} metric of functions.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional derivatives
+#'
+#' @details
+#' The function returns the vectors of sample h-mode depth values. The kernel 
+#' used in the evaluation is the standard Gaussian kernel, the bandwidth value is chosen
+#' as a quantile of the non-zero distances between the random sample curves.
+#'
+#' @param datafA Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+#' their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+#' \code{m} stands for the number of functions.
+#'
+#' @param datafB Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+#'  (vector), and a matrix with two columns of the corresponding bivariate functional values.
+#' \code{n} is the sample size. The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param q The quantile used to determine the value of the bandwidth \eqn{h}
+#' in the computation of the h-mode depth. \eqn{h} is taken as the \code{q}-quantile of
+#' all non-zero distances between the functions \code{B}. By default, this value is set
+#' to \code{q=0.2}, in accordance with the choice of Cuevas et al. (2007).
+#'
+#' @return Three vectors of length \code{m} of h-mode depth values are returned:
+#'	\itemize{
+#'	\item \code{hM} the unscaled h-mode depth,
+#'	\item \code{hM_norm} the h-mode depth \code{hM} linearly transformed so that its range is [0,1],
+#'	\item \code{hM_norm2} the h-mode depth \code{FD} linearly transformed by a transformation such that 
+#'    the range of the h-mode depth of \code{B} with respect to \code{B} is [0,1]. This depth may give negative values.
+#'	}
+#'
+#' @references Cuevas, A., Febrero, M. and Fraiman, R.  (2007). 
+#' Robust estimation and classification for functional data via projection-based depth notions. 
+#' \emph{Computational Statistics} \bold{22} (3), 481--496.
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#'
+#' datafA2 = derivatives.est(datafA,deriv=c(0,1))
+#' datafB2 = derivatives.est(datafB,deriv=c(0,1))
+#' 
+#' depthf.hM2(datafA2,datafB2)
+#'
+#' depthf.hM2(datafA2,datafB2)$hM
+#' # depthf.hM2(cbind(A2[,,1],A2[,,2]),cbind(B2[,,1],B2[,,2]))$hM
+#' # the two expressions above should give the same result
+#'
+#' @seealso \code{\link{depthf.hM}}
+
+depthf.hM2 = function(datafA,datafB,range=NULL,d=101,q=.2){
+# h-Mode depth Cuevas_etal2007
+# A functions whose depth is computed :	either M*D matrix (M functions, D points per function), 
+#							or M*D*2 array (2 derivative levels), 
+# B functions of random sample :		as A
+# q :							quantile, bandwidth value in the resulting kernel estimate
+#							computes the same as depthf.M (with cbind-ed 2 levels if derivatives are involved)
+#							depthf.M(cbind(A[,,1],A[,,2]),cbind(B[,,1],B[,,2]))
+#							depthf.M2(A,B)$FD
+#							depthf.M2(cbind(A[,,1],A[,,2]),cbind(B[,,1],B[,,2]))$FD
+# 							all should give the same result
+
+
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+  
+# q=.2 Cuevas et al, 0.15 default v usc.fda
+	M = .Fortran(	"funMD",
+		as.numeric(A),
+		as.numeric(B),
+		as.integer(m<-nrow(A)),
+		as.integer(n<-nrow(B)),
+		as.integer(d<-length(as.numeric(A))/nrow(A)),
+		as.numeric(q),
+		md = as.numeric(rep(-1,m))
+		)$md
+#	because of scaling in depth.mode() in fda.usc
+	M.ori = .Fortran(	"funMD",
+		as.numeric(B),
+		as.numeric(B),
+		as.integer(n),
+		as.integer(n),
+		as.integer(d),
+		as.numeric(q),
+		md = as.numeric(rep(-1,n))
+		)$md
+	Mn = (M-min(M))/(max(M)-min(M))
+	Mn2 = (M-min(M.ori))/(max(M.ori)-min(M.ori))
+	return(list(hM = M, hM_norm = Mn, hM_norm2 = Mn2))
+	}
+
+#' @title Univariate random projection depths for functional data
+#'
+#' @description
+#' Random projection depth and random functional depth for functional data.	
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns the vectors of sample random projection, and random functional depth values. 
+#' The random projection depth described in Cuevas et al. (2007) is based on the average univariate depth
+#' of one-dimensional projections of functional data. The projections are taken randomly as a sample of standard
+#' normal \code{d}-dimensional random variables, where \code{d} stands for the dimensionality of the discretized
+#' functional data. 
+#'
+#' The random functional depth (also called random Tukey depth, or random halfspace depth) is described in
+#' Cuesta-Albertos and Nieto-Reyes (2008). The functional data are projected into the real line in random 
+#' directions as for the random projection depths. Afterwards, an approximation of the halfspace (Tukey) depth
+#' based on this limited number of univariate projections is assessed. 
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param nproj Number of projections taken in the computation of the random projection depth. By default taken
+#' to be \code{51}.
+#'
+#' @param nproj2 Number of projections taken in the computation of the random functional depth. By default taken
+#' to be \code{5}. \code{nproj2} should be much smaller than \code{d}, the dimensionality of the discretized 
+#' functional data.
+#'
+#' @return Three vectors of depth values of length \code{m} are returned:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the random projection depth based on the univariate simplicial depth,
+#'	\item \code{Half_FD} the random projection depth based on the univariate halfspace depth,
+#'	\item \code{RHalf_FD} the random halfspace depth.
+#'	}
+#'
+#' @references Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+#' Robust estimation and classification for functional data via projection-based depth notions, 
+#' \emph{Computational Statistics} \bold{22} (3), 481--496.
+#'
+#' @references Cuesta-Albertos, J.A. and Nieto-Reyes, A. (2008).
+#'  The random Tukey depth. 
+#' \emph{Computational Statistics & Data Analysis} \bold{52} (11), 4979--4988.
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#'
+#' depthf.RP1(datafA,datafB)
+#'
+#' @seealso \code{\link{depthf.RP2}}
+      
+depthf.RP1 = function(datafA,datafB,range=NULL,d=101,nproj=50,nproj2=5){
+# simple 1D projection depth
+# nproj nr of projections taken
+#
+#	SFD : projection \eqn{L^2} -> R -> mean of univariate Simplicial Depth (nproj projections)
+#	HFD : projection \eqn{L^2} -> R -> mean of univariate Halfspace Depth (nproj projections)
+#	RFD : projection \eqn{L^2} -> R -> infimum of univariate Halfspace Depths (nproj2 projections)
+
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)  
+  
+	A1 = as.vector(A)
+	B1 = as.vector(B)
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	V = rnorm(nproj*d)
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	FD = .Fortran("funRPD1",	
+       	as.numeric(A1),		#	A
+      	as.numeric(B1),		#	B
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+		as.integer(nproj),	#	nproj
+		as.integer(nproj2),	#	nproj2
+		as.numeric(V),		#	projections
+      	funsdep=as.numeric(rep(-1,m)),	
+      	funhdep=as.numeric(rep(-1,m)),
+		funrdep=as.numeric(rep(-1,m)))
+	return(list(Simpl_FD = FD$funsdep, Half_FD = FD$funhdep, RHalf_FD = FD$funrdep))
+	}
+
+#' @title Bivariate integrated and infimal depth for functional data
+#'
+#' @description
+#' Integrated and infimal depths 
+#' of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+#' or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}) based on the
+#' bivariate halfspace and simplicial depths.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional derivatives
+#'
+#' @details
+#' The function returns the vectors of sample integrated and infimal depth values.
+#'
+#' @param datafA Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+#' their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+#' \code{m} stands for the number of functions.
+#'
+#' @param datafB Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+#'  (vector), and a matrix with two columns of the corresponding bivariate functional values.
+#' \code{n} is the sample size. The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @return Four vectors of length \code{m} are returned:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the integrated depth based on the bivariate simplicial depth,
+#'	\item \code{Half_FD} the integrated depth based on the bivariate halfspace depth,
+#'	\item \code{Simpl_ID} the infimal depth based on the bivariate simplicial depth,
+#'	\item \code{Half_ID} the infimal depth based on the bivariate halfspace depth.
+#'	}
+#' In addition, two vectors of length \code{m} of the relative area of smallest depth values is returned:
+#'	\itemize{
+#'	\item \code{Simpl_IA} the proportions of points at which the depth \code{Simpl_ID} was attained,
+#'	\item \code{Half_IA} the proportions of points at which the depth \code{Half_ID} was attained.
+#'	}
+#' The values \code{Simpl_IA} and \code{Half_IA} are always in the interval [0,1]. 
+#' They introduce ranking also among functions having the same
+#' infimal depth value - if two functions have the same infimal depth, the one with larger infimal area
+#' \code{IA} is said to be less central. 	
+#'
+#' @references Hlubinka, D., Gijbels, I., Omelka, M. and Nagy, S. (2015). 
+#' Integrated data depth for smooth functions and its application in supervised classification. 
+#' \emph{Computational Statistics}, \bold{30} (4), 1011--1031.
+#'
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear.
+#'  
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#'
+#' dataf2A = derivatives.est(datafA,deriv=c(0,1))
+#' dataf2B = derivatives.est(datafB,deriv=c(0,1))
+#' depthf.fd2(dataf2A,dataf2B)
+#'
+#' @seealso \code{\link{depthf.fd1}}, \code{\link{infimalRank}}
+      
+depthf.fd2 = function(datafA,datafB,range=NULL,d=101){
+	# A functions whose depth I compute
+	# B functions wrt whose the depth is computed
+	# both 2dimensional, n*d*2, n nr of functions, d dimensionality
+	# now provides also infimal depth (inf_D2)
+  
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+
+	A1 = as.vector(A[,,1])
+	A2 = as.vector(A[,,2])
+	B1 = as.vector(B[,,1])
+	B2 = as.vector(B[,,2])
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	FD = .Fortran("funD2",	
+      	as.numeric(A1),		#	A1
+      	as.numeric(A2),		#	A2
+      	as.numeric(B1),		#	B1
+      	as.numeric(B2),		#	B2
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+      	funsdep=as.numeric(rep(-1,m)),	
+      	funhdep=as.numeric(rep(-1,m)),
+		fIsdep =as.numeric(rep(-1,m)),
+		fIhdep =as.numeric(rep(-1,m)),
+		IAsdep =as.integer(rep(-1,m)),
+		IAhdep =as.integer(rep(-1,m))
+		)
+	return(list(	Simpl_FD = FD$funsdep, Half_FD = FD$funhdep,
+				Simpl_ID = FD$fIsdep,	Half_ID = FD$fIhdep,
+				Simpl_IA = FD$IAsdep/d, Half_IA = FD$IAhdep/d ))
+	}
+
+#' @title Bivariate random projection depths for functional data
+#'
+#' @description
+#' Double random projection depths of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+#' or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}).	
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional derivatives
+#'
+#' @details
+#' The function returns the vectors of sample double random projection depth values. 
+#' The double random projection depths are described in Cuevas et al. (2007). They are of two types: RP2 type, and
+#' RPD type. Both types of depths are based on bivariate projections of the bivariate functional data. 
+#' These projections are taken randomly as a sample of standard
+#' normal \code{d}-dimensional random variables, where \code{d} stands for the dimensionality of the internally 
+#' represented discretized
+#' functional data. For RP2 type depths, the average bivariate depth of the projected quantities is assessed.
+#' For RPD type depths, further univariate projections of these bivariate projected quantities are evaluated, and
+#' based on these final univariate quantities, the average univariate depth is computed.
+#' 
+#' @param datafA Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+#' their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+#' \code{m} stands for the number of functions.
+#'
+#' @param datafB Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+#'  (vector), and a matrix with two columns of the corresponding bivariate functional values.
+#' \code{n} is the sample size. The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param nproj Number of projections taken in the computation of the double random projection depth. By default taken
+#' to be \code{51}.
+#'
+#' @return Five vectors of length \code{m} are returned:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the double random projection depth RP2 based on the bivariate simplicial depth,
+#'	\item \code{Half_FD} the double random projection depth RP2 based on the bivariate halfspace depth,
+#'	\item \code{hM_FD} the double random projection depth RP2 based on the bivariate h-mode depth,
+#'	\item \code{Simpl_DD} the double random projection depth RPD based on the univariate simplicial depth,
+#'	\item \code{Half_DD} the random projection depth RPD based on the univariate halfspace depth,
+#'	}
+#'
+#' @references Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+#' Robust estimation and classification for functional data via projection-based depth notions.
+#' \emph{Computational Statistics} \bold{22} (3), 481--496.
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#'
+#' dataf2A = derivatives.est(datafA,deriv=c(0,1))
+#' dataf2B = derivatives.est(datafB,deriv=c(0,1))
+#' depthf.RP2(dataf2A,dataf2B)
+#'
+#'
+#' @seealso \code{\link{depthf.RP1}}
+      
+depthf.RP2 = function(datafA,datafB,range=NULL,d=101,nproj=51){
+# double projection depth
+# nproj nr of projections taken
+#
+#	SFD :	(\eqn{L^2})^2 -> R^2 -> 2D Mean Simplicial Depth
+#	HFD : (\eqn{L^2})^2 -> R^2 -> 2D Mean Halfspace Depth
+#	MFD : (\eqn{L^2})^2 -> R^2 -> 2D Mean h-Mode Depth
+#	SDD : (\eqn{L^2})^2 -> R^2 -> R^1 -> Mean Simplicial Depth
+#	HDD : (\eqn{L^2})^2 -> R^2 -> R^1 -> Mean Halfspace Depth
+#
+  
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+    
+	q = .2	# quantile for modal depth
+	A1 = as.vector(A[,,1])
+	A2 = as.vector(A[,,2])
+	B1 = as.vector(B[,,1])
+	B2 = as.vector(B[,,2])
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	V = rnorm(nproj*d+nproj*2)
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	FD = .Fortran("funRPD2",	
+       	as.numeric(A1),		#	A1
+      	as.numeric(A2),		#	A2
+      	as.numeric(B1),		#	B1
+      	as.numeric(B2),		#	B2
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+		as.integer(nproj),	#	nproj
+		as.numeric(V),		#	projections
+		as.numeric(q),		# 	q
+      	funsdep=as.numeric(rep(-1,m)),	
+      	funhdep=as.numeric(rep(-1,m)),
+		funmdep=as.numeric(rep(-1,m)),
+		funsddep=as.numeric(rep(-1,m)),
+		funhddep=as.numeric(rep(-1,m)))
+	return(list(Simpl_FD = FD$funsdep, Half_FD = FD$funhdep, hM_FD = FD$funmdep, Simpl_DD = FD$funsddep, Half_DD = FD$funhddep))
+	}
+      
+#' @title Half-region depth for functional data
+#'
+#' @description
+#' The half-region depth 
+#' for functional real-valued data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns the vector of the sample half-region depth values.
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @return A vector of length \code{m} of the half-region depth values.
+#'
+#' @references Lopez-Pintado, S. and Romo, J. (2011).
+#' A half-region depth for functional data.
+#' \emph{Computational Statistics & Data Analysis} \bold{55} (4), 1679--1695.
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' depthf.HR(datafA,datafB)
+
+depthf.HR = function(datafA,datafB,range=NULL,d=101){
+  
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)
+    
+	d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	FD = .Fortran("HRD",	
+       	as.numeric(A),		#	A
+      	as.numeric(B),		#	B
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+      	FD=as.numeric(rep(-1,m)))
+	return(FD$FD)
+	}
+
+#' @title Band depth for functional data
+#'
+#' @description
+#' The (unadjusted) band depth 
+#' for functional real-valued data of order \code{J=2}.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth functional
+#'
+#' @details
+#' The function returns the vector of the sample (unadjusted) band depth values.
+#'
+#' @param datafA Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'
+#' @param datafB Random sample functions with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} is the sample size. 
+#' The grid of observation points for the 
+#' functions \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @return A vector of length \code{m} of the band depth values.
+#' 
+#' @references Lopez-Pintado, S. and Romo, J. (2009), On the concept of depth for functional data,
+#' \emph{J. Amer. Statist. Assoc.} \bold{104} (486), 718 - 734.
+#'
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' depthf.BD(datafA,datafB)
+#'
+#' @seealso \code{\link{depthf.ABD}}, \code{\link{depthf.fd1}}
+       
+depthf.BD = function(datafA,datafB,range=NULL,d=101){
+
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)  
+
+  d = dim(A)[2]
+	m = dim(A)[1]
+	n = dim(B)[1]
+	if(dim(B)[2]!=d) stop("dimension mismatch")
+	FD = .Fortran("BD",	
+       	as.numeric(A),		#	A
+      	as.numeric(B),		#	B
+      	as.integer(m),		#	m
+      	as.integer(n),		#	n
+      	as.integer(d),		#	d
+      	FD=as.numeric(rep(-1,m))
+		)
+	return(FD$FD)
+	}
+
+#' @title Adjusted ranking of functional data based on the infimal depth
+#'
+#' @description
+#' Returns a vector of adjusted depth-based ranks for infimal depth for functional data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords rank depth functional
+#'
+#' @details
+#' Infimal depths for functional data tend to give to many functional observations the same 
+#' value of depth. Using this function, the data whose depth is the same is ranked according
+#' to the infimal area indicator. This indicator is provided in functions \code{depthf.fd1} along
+#' the value of the infimal depth. 
+#'
+#' @param ID The vector of infimal depths of the curves of length \code{n}.
+#'
+#' @param IA The vector of the infimal areas corresponding to the infimal depths from \code{ID}
+#' of length \code{n}.
+#'
+#' @param ties.method Parameter for breaking ties in infimal area index. By default \code{max}, see 
+#' \code{rank}.
+#' 
+#' @return A vector of length \code{n}. Low depth values mean high ranks, i.e. potential outlyingess. 
+#' If some of the infimal depths are identical, the ranking of these functions is made according to the 
+#' values of the infimal area. There, higher infimal area index means higher rank, i.e. non-centrality.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear. 
+#' 
+#' @examples
+#' datafA = dataf.population()$dataf[1:20]
+#' datafB = dataf.population()$dataf[21:50]
+#' D = depthf.fd1(datafA,datafB)
+#' infimalRank(D$Half_ID,D$Half_IA) 
+#' 
+#' ID = c(0,1,0,0,0,1,1)
+#' IA = c(2,3,1,0,2,4,1)
+#' infimalRank(ID,IA)
+
+
+infimalRank = function(ID,IA,ties.method="max"){
+# finds the adjusted rank for appropriate for the infimal depth for functional data
+# ID is the vector of infimal depths
+# IA is the vector of the corresponding infimal areas
+# returns a vector of ranks
+	n = length(ID)
+	if(length(IA)!=n) stop("Lengths of the vectors differ")
+	U = sort(unique(ID),decreasing=TRUE)
+	R = rep(NA,n)
+	cR = 0						# currently assigned rank	
+	for(u in U){
+		Iu = (ID==u)
+		R[Iu] = cR+rank(IA[Iu],ties.method=ties.method)
+		cR = sum(!is.na(R))
+		}
+	return(R)
+	}
+      
+#' @title Estimation of the first two derivatives for functional data
+#'
+#' @description
+#' Returns the estimated values of derivatives of functional data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords derivatives kernel functional
+#' 
+#' @details
+#' If the input \code{dataf} is a functional random sample of size \code{m}, 
+#' the function returns a \code{dataf} object of \code{nd}-dimensional functional data, where 
+#' in the elements of the vector-valued functional data represent the estimated values of the 
+#' derivatives of \code{dataf}. All derivatives are evaluated at an equi-distant grid of \code{d}
+#' points in the domain given by \code{range}. \code{nd} here stands for \code{1}, \code{2} or \code{3}, 
+#' depending on how many derivatives of \code{dataf} are
+#' requested to be computed. For the estimation, functions \code{D1ss} and \code{D2ss} from the package
+#' \code{sfsmisc} are utilized. 
+#'
+#' @param dataf Functional dataset, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{m} stands for the number of functions.
+#'  
+#' @param range The common range of the domain where the fucntions \code{dataf} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{dataf}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param spar If provided, this parameter is passed to functions \code{D1ss} and \code{D2ss} from package \code{sfsmisc}
+#' as the value of the smoothing spline parameter in order to numerically approximate
+#' the derivatives of \code{dataf}.
+#' 
+#' @param deriv A vector composed of \code{0}, \code{1}, and \code{2} of the demanded 
+#' functional values / derivatives of the functions in the rows of \code{dataf}.
+#' \code{0} stands for the functional values, \code{1} for the first derivatives, 
+#' \code{2} for the second derivatives.
+#' 
+#' @return A multivariate \code{dataf} object of the functional values and / or the derivatives of \code{dataf}. 
+#' The dimensionality of the vector-valued functional data is \code{nd}. The arguments of the data are all equal to 
+#' an equi-distant grid of \code{d} points in the domain given by \code{range}. \code{nd} is the demanded number 
+#' of derivatives at the output, i.e. the length of the vector \code{deriv}.
+#' 
+#' @seealso \code{\link[sfsmisc]{D1ss}} in package sfsmisc
+#' @seealso \code{\link[sfsmisc]{D2ss}} in package sfsmisc
+#' 
+#' @examples
+#' dataf = dataf.population()$dataf
+#' derivatives.est(dataf,deriv=c(0,1,2))
+
+derivatives.est = function(dataf,range=NULL,d=101,spar=NULL,deriv=c(0,1)){
+  
+  X = dataf2rawfd(dataf, range = range, d = d)
+  derd = length(deriv)
+  XK = array(dim=c(dim(X),derd))
+  # range construction
+  rng = numeric(0)
+  for (df in dataf)	rng = range(c(rng,df$args)) # common range of all the data
+  if(!is.null(range)){ 
+    if(!(length(range) == 2 && is.numeric(range) && 
+         range[1]<=rng[1] && range[2]>=rng[2])) 
+      stop("Argument 'range' must be a numeric vector of two components
+           that defines the range of the domain of functional data. All
+           functional data must have 'args' vales inside this domain.")
+  } else range = rng
+  if(!(range[1]<range[2])) stop("Argument 'range' must define a non-degenerate interval.")
+  
+  t = seq(range[1],range[2],length=d)
+  n = nrow(X)	
+  pb = txtProgressBar(min = 0, max = n, style = 3)	
+  for (nd in 1:derd){
+    if (deriv[nd]==0) XK[,,nd] = X else
+      for(i in 1:n){
+        if (deriv[nd]==1){
+          if(is.null(spar))	XK[i,,nd] = D1ss(t,X[i,]) else
+            XK[i,,nd] = D1ss(t,X[i,],spl.spar=spar)
+        }
+        if (deriv[nd]==2){
+          if(is.null(spar))	XK[i,,nd] = D2ss(t,X[i,])$y else
+            XK[i,,nd] = D2ss(t,X[i,],spl.spar=spar)$y
+        }
+        setTxtProgressBar(pb, i)
+      }
+  }
+  close(pb)
+  return(rawfd2dataf(XK,range=range))
+  }
+
+#' @title Diagnostic plot for first and second order integrated and infimal depths
+#'
+#' @description
+#' Produce the diagnostic plot based on the fist or second order extended integrated / infimal depths.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth shape outlier plot functional
+#'
+#' @details
+#' Plots a diagnostic plot of pointwise univariate (or bivariate) depths for all possible points (or couples of points) from the domain of the 
+#' functional data. From such a plot it is possible to infer into the first order (or second order) properties of a single function \emph{x} with respect 
+#' to the given set of functional data. For \code{order=1}, the integral of the displayed function is the integrated depth of \emph{x}, 
+#' the smallest value of the function is the infimal depth of \emph{x}. 
+#' For \code{order=2}, the bivariate integral of the displayed surface gives the second order extended 
+#' integrated depth of \emph{x}, the infimum of this bivariate function gives the second order infimal depth of \emph{x}. 
+#' For details see Nagy et al. (2016) and \code{\link{depthf.fd1}}.
+#'
+#' @param datafA A single function whose depth is computed, represented by a 
+#' \code{dataf} object of arguments and functional values.
+#'
+#' @param datafB Functional dataset with respect to which the depth of \code{datafA} is computed. 
+#' \code{datafB} is represented by a \code{dataf} object of arguments and functional values. 
+#' \code{n} stands for the number of functions. The grid of observation points for the 
+#' functions in \code{datafA} and \code{datafB} may not be the same.
+#' 
+#' @param range The common range of the domain where the fucntions \code{datafA} and \code{datafB} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{datafA} and \code{datafB}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param order The order of the depth to be used in the plot, for \code{order=1} produces
+#' the plot of univariate marginal depth of \code{A} and \code{nfun} functions from \code{B} 
+#' over the domain of the functions. For \code{order=2} produces the bivariate contour plot 
+#' of the bivariate depths of \code{A} at couples of points from the domain.
+#'
+#' @param method The depth that is used in the diagnostic plot. possible values are \code{halfspace} for 
+#' the halfspace depth, or \code{simplicial} for the simplicial depth. 
+#'
+#' @param approx For \code{order=2}, the number of approximations used in the computation of the order extended depth. By default
+#' this is set to \code{0}, meaning that the depth is computed at all possible \code{d^2}
+#' combinations of the points in the domain. When set to a positive integer, \code{approx}
+#' bivariate points are randomly sampled in unit square, and at these points the bivariate depths of the
+#' corresponding functional values are computed.
+#'
+#' @param title The title of the diagnostic plot.
+#'
+#' @param nfun For \code{order=1}, the number of functions from \code{B} whose coordinate-wise
+#' univariate depths of functional values should be displayes with the depth of \code{A}.
+#' The depth of \code{A} is displayed in solid red line, the depths of the functions from \code{B}
+#' in dashed black.
+#'
+#' @param plot Logical: should the function by plotted?
+#' 
+#' @return For \code{order=1} two depth values, and two vectors of pointwise depths:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the first order integrated depth based on the simplicial depth,
+#'	\item \code{Half_FD} the first order integrated depth based on the halfspace depth,
+#'	\item \code{Simpl_ID} the first order infimal depth based on the simplicial depth,
+#'	\item \code{Half_ID} the first order infimal depth based on the halfspace depth,
+#'    \item \code{PSD} the vector of length \code{d} containing the computed 
+#'    pointwise univariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+#'    \item \code{PHD} the vector of length \code{d} containing the computed 
+#'    pointwise univariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+#'	}
+#'    In addition, the first order integrated / infimal depth diagnostic plot of the function \code{A} with respect to
+#'    the random sample given by the functions corresponding to the rows of the matrix \code{B} is produced.
+#'
+#'    For \code{order=2} four depth values, and two matrices of pointwise depths:
+#'	\itemize{
+#'	\item \code{Simpl_FD} the second order integrated depth based on the simplicial depth,
+#'	\item \code{Half_FD} the second order integrated depth based on the halfspace depth,
+#'	\item \code{Simpl_ID} the second order infimal depth based on the simplicial depth,
+#'	\item \code{Half_ID} the second order infimal depth based on the halfspace depth,
+#'    \item \code{PSD} the matrix of size \code{d*d} containing the computed 
+#'    pointwise bivariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+#'    \item \code{PHD} the matrix of size \code{d*d} containing the computed 
+#'    pointwise bivariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+#'	}
+#'    In addition, the second order integrated / infimal depth diagnostic plot of the function \code{A} with respect to
+#'    the random sample given by the functions corresponding to the rows of the matrix \code{B} is produced.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear.
+#'
+#' @examples
+#' datafA = dataf.population()$dataf[1]
+#' dataf = dataf.population()$dataf[2:20]
+#' shape.fd.analysis(datafA,dataf,order=1)
+#' shape.fd.analysis(datafA,dataf,order=2,approx=0)
+#'
+#' @seealso \code{\link{depthf.fd1}}
+   
+shape.fd.analysis = function(datafA,datafB,range=NULL,d=101,order=1,method=c("halfspace","simplicial"),approx=0,title="",nfun=10,plot=TRUE){
+
+  A = dataf2rawfd(datafA, range = range, d = d)
+  B = dataf2rawfd(datafB, range = range, d = d)  
+  
+	if (nrow(A)>1) stop("works only for a single function A (matrix 1*d)")
+	method = match.arg(method)
+	#
+	# diagonal
+	d = ncol(A)
+	HDP = matrix(nrow=nrow(B)+1,ncol=d)
+	SDP = HDP
+	for(i in 1:d){
+		FL = ecdf(B[,i])
+		FU = ecdf(-B[,i])
+		HDP[,i] = pmin(FL(rbind(B,A)[,i]),FU(-rbind(B,A)[,i]))
+		SDP[,i] = FL(rbind(B,A)[,i])*FU(-rbind(B,A)[,i])*nrow(B)^2/choose(nrow(B),2)
+		}
+	if(order==2){
+            DD = DiffDepth(A,B,approx)
+		if (method=="halfspace") diag(DD$PHD) = HDP[nrow(B)+1,] else diag(DD$PSD) = SDP[nrow(B)+1,]
+            if (plot){
+	      	if (method=="halfspace") filled.contour(DD$PHD,main=title,color.palette= function(x)rev(heat.colors(x))) else
+	      	filled.contour(DD$PSD,main=title,color.palette = function(x)rev(heat.colors(x)))
+			}
+	      return(DD)
+            }
+      if(order==1){
+            nfun = min(nrow(B),nfun)
+		t = seq(0,1,length=ncol(B))
+            DD = list(Simpl_FD = mean(SDP[nrow(B)+1,]), Half_FD = mean(HDP[nrow(B)+1,]), 
+                  Simpl_ID = min(SDP[nrow(B)+1,]), Half_ID = min(HDP[nrow(B)+1,]), 
+                  PHD = HDP[nrow(B)+1,], PSD = SDP[nrow(B)+1,]) 
+	      if (plot) { if (method=="halfspace"){
+	           plot(rep(t,nrow(B)+1),HDP,type="n",main=title,ylim = c(0,max(HDP)),ann=FALSE)
+	           for(i in 1:nfun) lines(t,HDP[i,],lwd=.75,lty=2)
+	           lines(t,HDP[nrow(B)+1,],col=2,lwd=3,lty=1)
+	           } else {
+	           plot(rep(t,nrow(B)+1),SDP,type="n",main=title,ylim = c(0,max(SDP)),ann=FALSE)
+	           for(i in 1:nfun) lines(t,SDP[i,],lwd=.75,lty=2)
+	           lines(t,SDP[nrow(B)+1,],col=2,lwd=3,lty=1)
+	           }
+		}	
+	      return(DD)
+            }
+	}
+
+#' @title Functional depth-based shape outlier detection
+#'
+#' @description
+#' Detects functional outliers of first three orders, based on the order extended integrated depth for functional data.		
+#'
+#' @author Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+#' @keywords depth
+#' @keywords outlier
+#' @keywords functional
+#'
+#' @details
+#' Using the procedure described in Nagy et al. (2016), the function uses the order extended integrated depths for functions, 
+#' see \code{\link{depthf.fd1}} and \code{\link{shape.fd.analysis}}, to perform informal functional shape outlier detection. 
+#' Outliers of the first order (horizontal shift outliers) are found as the functions with \code{q} \% of smallest (first order)
+#' integrated depth values. Second and third order outliers (shape outliers) are found using the extension of the boxplot method
+#' for depths as described in the paper Nagy et al. (2016).
+#'
+#' @param dataf Functional dataset, represented by a \code{dataf} object of their arguments
+#'  and functional values. \code{n} stands for the number of functions.
+#'  
+#' @param range The common range of the domain where the fucntions \code{dataf} are observed.
+#' Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+#' \code{dataf}.
+#' 
+#' @param d Grid size to which all the functional data are transformed. For depth computation, 
+#' all functional observations are first transformed into vectors of their functional values of length \code{d}
+#' corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+#' points are reconstructed using linear interpolation, and extrapolation.
+#'
+#' @param q The quantile presenting a threshold for the first order outlier detection. Functions with first order integrated depth
+#' smaller than the \code{q} quantile of this sample of depths are flagged as potential outliers. If set to \code{NULL}, the
+#' the outliers are detected from the first order integrated depth after the log-transformation, as for higher order outliers.
+#'
+#' @param method The depth that is used in the diagnostic plot. possible values are \code{halfspace} for 
+#' the halfspace depth, or \code{simplicial} for the simplicial depth. 
+#'
+#' @param approx For the computation of the third order integrated depth,
+#' the number of approximations used in the computation of the order extended depth. By default
+#' this is set to \code{100}, meaning that \code{100}
+#' trivariate points are randomly sampled in unit cube, and at these points the trivariate depths of the
+#' corresponding functional values. May be set to \code{0} to compute the depth at all possible \code{d^3}
+#' combinations of the points in the domain. This choice may result in very slow computation, see also \code{\link{depthf.fd1}}. 
+#'
+#' @param print If the rows of \code{X} are named, \code{print=TRUE} enables a graphical output when the names of the outlying curves
+#' are displayed.
+#'
+#' @param plotpairs If set to \code{TRUE}, the scatter plot of the computed depths for orders \code{1}, \code{2} and \code{3} is
+#' is displayed. Here, the depths corresponding to the flagged outliers are plotted in colour.
+#'
+#' @param max.order Maximal order of shape outlyingness to be computed, can be set to \code{1}, \code{2}, or \code{3}.
+#'
+#' @param exclude.out Logical variable; exclude the detected lower order outliers in the flagging process? By default \code{TRUE}.
+#'
+#' @param output Output method, can be set to \code{matrix} for a matrix with logical entries (\code{TRUE} for outliers), or \code{list} for 
+#' a list of outliers.
+#' 
+#' @param identifiers A vector of names for the data observations. Facilitates identification of outlyig functions.
+#' 
+#' @return A matrix of logical values of size \code{n*4}, where \code{n} is the sample size. In the first three rows indicators of outlyingness
+#' of the corresponding functions for orders \code{1}, \code{2} and \code{3} are given, in the fourth row the indicator of outlyingness
+#' with respect to the comparison of the first, and third order depths is given. That is, the fist row corresponds to the first order outliers, 
+#' the second row to the second order outliers, and the last two rows formally to the third order outliers. Please consult Nagy et al. (2016)
+#' to interpret the notion of shape outlyingness.
+#' 
+#' @references Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+#' Depth-based recognition of shape outlying functions. 
+#' \emph{Journal of Computational and Graphical Statistics}. To appear.
+#'
+#' @examples
+#' n = 30
+#' dataf = dataf.population()$dataf[1:n]
+#' shape.fd.outliers(dataf,print=TRUE,plotpairs=TRUE,
+#' identifiers=unlist(dataf.population()$identifier)[1:n])
+#'
+#' @seealso \code{\link{depthf.fd1}}, \code{\link{shape.fd.analysis}}
+
+shape.fd.outliers = function(dataf,range=NULL,d=101,q=.05,method=c("halfspace","simplicial"),
+approx=100,print=FALSE,plotpairs=FALSE,max.order=3,
+exclude.out = TRUE, output=c("matrix","list"), identifiers = NULL){
+
+  X = dataf
+  
+	method = match.arg(method)
+	output = match.arg(output)
+	if(is.null(identifiers) | length(identifiers)!=length(dataf)){
+		print = FALSE
+		warning("Inconsistent identifiers, print is set to FALSE")
+		}
+	if((max.order>3)|(max.order<1)){
+            max.order=3
+            warning("Maximal order set to 3")
+      }
+      if (max.order==3){
+      if(approx<50){
+		approx=50
+		warning("Too small approx value, approximation set to 50")
+		}
+      }
+	n = length(X)									# set up the depths
+	D = matrix(nrow=max.order,ncol=n)
+	if(method=="halfspace"){
+		D[1,] = depthf.fd1(X,X)$Half_FD
+		if(max.order>1) D[2,] = depthf.fd1(X,X,range=range,d=d,order=2)$Half_FD
+		if(max.order>2) D[3,] = depthf.fd1(X,X,range=range,d=d,order=3,approx=approx)$Half_FD
+		}
+	if(method=="simplicial"){
+		D[1,] = depthf.fd1(X,X)$Simpl_FD
+		if(max.order>1) D[2,] = depthf.fd1(X,X,range=range,d=d,order=2)$Simpl_FD
+		if(max.order>2) D[3,] = depthf.fd1(X,X,range=range,d=d,order=3,approx=approx)$Simpl_FD
+		}
+	D = apply(D,1:2,function(x) max(0,x-1/n))
+      if(max.order==1) out.rows = 1
+      if(max.order==2) out.rows = 2
+      if(max.order==3) out.rows = 4
+	O = matrix(nrow=out.rows,ncol=ncol(D))					# compute the outliers
+	if (print){
+		colnames(O) = identifiers
+		print("first order outliers: ")
+		}
+	if(!is.null(q)) O[1,]<-D[1,]<quantile(D[1,],q)
+      if(is.null(q)){                  # for q null perform the log-transform
+		S = -log(D[1,]/1)
+		S[D[1,]==0] = Inf
+		B = boxplot(S,plot=FALSE)
+		O[1,]<-((S>B$stats[5,])|(S==Inf))            
+            } 	
+	if (print) print(which(O[1,]))
+	if(max.order>1) for(i in 1:(max.order-1)){
+		if (print){
+			if (i==1) print("second order outliers: ")
+			if (i==2) print("third order outliers: ")
+			}
+		S = -log(D[i+1,]/D[i,])
+		S[D[i+1,]==0] = Inf
+		B = boxplot(S,plot=FALSE)
+		if(exclude.out) O[i+1,]<-(((S>B$stats[5,])|(S==Inf))&(O[i,]==FALSE)&(O[1,]==FALSE))
+		if(!exclude.out) O[i+1,]<-((S>B$stats[5,])|(S==Inf))
+		if (print) print(which(O[i+1,]))
+		}
+	if(max.order==3){
+            if (print) print("1/3 outliers")
+      	S = -log(D[3,]/D[1,])
+      	S[D[3,]==0] = Inf
+      	B = boxplot(S,plot=FALSE)
+      	if(exclude.out) O[4,]<-(((S>B$stats[5,])|(S==Inf))&(O[3,]==FALSE)&(O[2,]==FALSE)&(O[1,]==FALSE))
+      	if(!exclude.out) O[4,]<-((S>B$stats[5,])|(S==Inf))
+      	if (print) print(which(O[4,]))
+            }
+      if(max.order==1) rownames(O) = "1st"
+      if(max.order==2) rownames(O) = c("1st","2nd")
+	if(max.order==3){
+            rownames(O) = c("1st","2nd","3rd","1/3rd")
+	      if (plotpairs) DpairsPlot(D,O)
+            }
+	if(output=="matrix") return(O)
+	if(output=="list") return(apply(O,1,which))
+	}
+
+DpairsPlot = function(DB2,O,sp.index=NULL){
+# plots a 2x2 scatter of all the pairs of order extended integrated depth values
+# for orders 1, 2, and 3 as presented in the Nagy et al. (2016), Figure 5
+	cexaxis = 1.3
+	cexlab = 1.5
+	n = ncol(O)
+	col = rep("grey",n)
+	colout1 = "olivedrab3"
+	colout2 = "navy"
+	colout3 = "darkorange"
+	colout = c(colout1,colout2,colout3)
+	col[O[1,]] = colout1
+	col[O[2,]] = colout2
+	col[O[3,]] = colout3
+	col[O[4,]] = colout3
+	pch = rep(16,n)
+	pch[O[1,]] = 1
+	pch[O[2,]] = 2
+	pch[O[3,]] = 18
+	pch[O[4,]] = 18
+	cx = 1.5
+	cex = rep(1,n)
+	cex[O[1,]] = cx
+	cex[O[2,]] = cx
+	cex[O[3,]] = cx
+	cex[O[4,]] = cx
+	OI = (colSums(O)>0)	# outlier indicator
+
+	op<-par(cex.axis=cexaxis,cex.lab=cexlab,mfrow = c(2, 2),     # 2x2 layout
+    		oma = c(3, 3.5, 0.45, 0.45), # two rows of text at the outer left and bottom margin
+    		mar = c(1, 1, 0, 0), # space for one row of text at ticks and to separate plots
+    		mgp = c(2, 1, 0),    # axis label at 2 rows distance, tick labels at 1 row
+    		xpd = NA)            # allow content to protrude into outer margin (and beyond)
+	plot(c(0,M<-max(DB2)),c(0,max(DB2)),type="n",ann=FALSE,axes=FALSE,frame=TRUE)
+	axis(2)
+	title(ylab=expression(FD[2]),line=2.5)
+	points(DB2[1,],DB2[2,],col=col,pch=pch,cex=cex,lwd=1.35*cex)
+	for(i in 1:n) if(OI[i]) points(DB2[1,i],DB2[2,i],col=col[i],pch=pch[i],cex=cex[i],lwd=1.35*cex[i])
+	if (!is.null(sp.index)) points(DB2[1,sp.index],DB2[2,sp.index],pch=16,col="orange")
+	segments(0,0,M,M,lty=3,lwd=2)
+	plot(c(0,1),c(0,1),type="n",ann=FALSE,axes=FALSE)
+	legend(0,.7,c("1st order outliers","2nd order outliers","3rd order outliers"),col=colout,pch=c(1,2,18),cex=cx,bty="n")
+	plot(c(0,max(DB2)),c(0,max(DB2)),type="n",ann=FALSE)
+	axis(2)
+	title(ylab=expression(FD[3]^A),line=2.5)
+	axis(1)
+	title(xlab=expression(FD[1]),line=3)
+	points(DB2[1,],DB2[3,],col=col,pch=pch,cex=cex,lwd=1.35*cex)
+	for(i in 1:n) if(OI[i]) points(DB2[1,i],DB2[3,i],col=col[i],pch=pch[i],cex=cex[i],lwd=1.35*cex[i])
+	if (!is.null(sp.index)) points(DB2[1,sp.index],DB2[3,sp.index],pch=16,col="orange")	
+	segments(0,0,M,M,lty=3,lwd=2)
+	plot(c(0,max(DB2)),c(0,max(DB2)),type="n",ann=FALSE,axes=FALSE,frame=TRUE)
+	axis(1)
+	title(xlab=expression(FD[2]),line=3)
+	points(DB2[2,],DB2[3,],col=col,pch=pch,cex=cex,lwd=1.35*cex)
+	for(i in 1:n) if(OI[i]) points(DB2[2,i],DB2[3,i],col=col[i],pch=pch[i],cex=cex[i],lwd=1.35*cex[i])
+	if (!is.null(sp.index)) points(DB2[2,sp.index],DB2[3,sp.index],pch=16,col="orange")
+	segments(0,0,M,M,lty=3,lwd=2)
+	par(op)
+	}
diff --git a/R/depth.graph.r b/R/depth.graph.r
new file mode 100644
index 0000000..fcbe6d6
--- /dev/null
+++ b/R/depth.graph.r
@@ -0,0 +1,65 @@
+################################################################################
+# File: depth.graph.r
+# Created by:       Oleksii Pokotylo
+# First published:  01.10.2014
+# Last revised:     01.10.2014
+# 
+# Builds the data depth surfaces for 2-dimensional data  
+################################################################################
+
+depth.graph <- function (data, depth_f = c("halfspace", "Mahalanobis", "projection", "simplicial", "simplicialVolume", "spatial", "zonoid", "none"), apoint = NULL
+                           , main = depth_f
+                           , xlim = c(min(data[,1]), max(data[,1])), ylim = c(min(data[,2]), max(data[,2])), zlim = c(0,max(z))
+                           , xnum = 250, ynum = 250
+                           , theta=15, phi=60, bold = F, ...){
+  
+  x1 <- seq(xlim[1], xlim[2], length = xnum)
+  x2 <- seq(ylim[1], ylim[2], length = ynum)
+  x1.step <- (x1[2]-x1[1])
+  x2.step <- (x2[2]-x2[1])
+  all.points <- as.matrix(expand.grid(x1, x2))
+  all.depths <- rep(0, nrow(all.points))
+  #library(depth)
+  df = depth_f
+  if (!is.function(depth_f)){
+    depth_f = match.arg (depth_f)            
+    df = switch(depth_f,
+                "none" = function(x, X,...) (0),
+                "zonoid" = depth.zonoid,
+                "halfspace" = depth.halfspace,
+                "simplicialVolume" = depth.simplicialVolume,
+                "simplicial" = depth.simplicial,
+                "Mahalanobis" = function(x, X,...) (.Mahalanobis_depth(x, colMeans(X), solve(cov(X)))),
+                "projection" = depth.projection,
+                "spatial" = depth.spatial
+    )
+    if (depth_f == "none") zlim = c(0,1)
+  }
+  
+  all.depths = df(all.points, data[,1:2], ...)
+  z <- matrix(all.depths, ncol=ynum, nrow=xnum, byrow=FALSE)
+  
+  z.red <- as.integer((data[,1]-x1[1])/x1.step+1) + as.integer((data[,2]-x2[1])/x2.step+1)*(xnum-1)
+  if (bold)
+    z.red <- c(z.red, 
+               as.integer((data[,1]-x1[1])/x1.step+2) + as.integer((data[,2]-x2[1])/x2.step+1)*(xnum-1),
+               as.integer((data[,1]-x1[1])/x1.step+1) + as.integer((data[,2]-x2[1])/x2.step+2)*(xnum-1),
+               as.integer((data[,1]-x1[1])/x1.step+0) + as.integer((data[,2]-x2[1])/x2.step+1)*(xnum-1),
+               as.integer((data[,1]-x1[1])/x1.step+1) + as.integer((data[,2]-x2[1])/x2.step+0)*(xnum-1)
+               )
+  z.black <- ifelse (is.null(apoint) || !is.numeric(apoint) || length(apoint) != 2, NA,
+                     as.integer((apoint[1]-x1[1])/x1.step+1) + as.integer((apoint[1]-x2[1])/x2.step+1)*(xnum-1))
+  
+  zfacet <- z[-1, -1] + z[-1, -ynum] + z[-xnum, -1] + z[-xnum, -ynum]
+  z.indices.zero <- which(zfacet == 0)
+  cols <- rep("gray", (xnum-1)*(ynum-1))
+  cols <- replace(cols, z.indices.zero, ifelse (depth_f == "none", NA,"lightblue"))
+  cols <- replace(cols, z.red, "red")
+  cols <- replace(cols, z.black, "black")
+  
+  par(bg = "white")
+  persp(x1, x2, z, xlim=xlim, ylim=ylim, zlim=zlim, r = 10, theta=theta, phi=phi, 
+        col=cols, main = main,
+        ltheta=55, shade=0.55, ticktype="detailed", 
+        xlab="x", ylab="y", zlab="D(x|X)", border=NA, box=FALSE, ...)
+}
diff --git a/R/depth.halfspace.r b/R/depth.halfspace.r
new file mode 100644
index 0000000..e0b9760
--- /dev/null
+++ b/R/depth.halfspace.r
@@ -0,0 +1,190 @@
+################################################################################
+# File:             depth.halfspace.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     13.11.2015
+# 
+# Computation of the Tukey data depth.
+################################################################################
+
+.parse_HSD_pars <- function(exact, method){
+  if(missing(exact) && missing(method))
+    return(0)
+  
+  if(!missing(exact)){
+    if(exact == F){
+      if (missing(method))
+        return(0)
+      else if (method != 0 && method != "Sunif.1D")
+        stop("Wrong combination of 'exact' and 'method' parameters.")
+    }
+    else{
+      if (missing(method))
+        return(1)           # default exact
+      else
+        if (!(method %in% 1:3 || method %in% c("recursive","plane","line")))
+          stop("Wrong combination of 'exact' and 'method' parameters.")
+    }
+  }
+  
+  if (!(method %in% 0:3 || method %in% c("Sunif.1D","recursive","plane","line")))
+    stop("Wrong parameter 'method'.")
+      
+  if (is.character(method))
+    method =  switch (method, random = 0, recursive = 1, plane = 2, line = 3)
+  
+  return(method)
+}
+
+depth.halfspace <- function(x, data, exact, method, num.directions = 1000, seed = 0){
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  if (ncol(data) + 1 > nrow(data)){ #?
+    stop("To few data points")
+  }
+
+  points <- as.vector(t(data))
+  objects <- as.vector(t(x))
+  
+  method = .parse_HSD_pars(exact, method)
+  
+  if (method == 0)
+  if (!is.numeric(num.directions) 
+      || is.na(num.directions) 
+      || length(num.directions) != 1 
+      || !.is.wholenumber(num.directions) 
+      || !(num.directions > 1 && num.directions < 10000000)){
+    numDirections <- 1000
+    warning("Argument \"num.directions\" not specified correctly. 1000 is used as a default value")
+  }else{
+    numDirections <- num.directions
+  }
+  
+  if (method == 0){
+    c <- as.vector(nrow(data))
+    k <- numDirections
+    ds <- .C("HDepth", 
+             as.double(points), 
+             as.double(objects), 
+             as.integer(nrow(x)), 
+             as.integer(ncol(data)), 
+             as.integer(c), 
+             as.integer(1), 
+             dirs=double(k*ncol(data)), 
+             prjs=double(k*nrow(data)), 
+             as.integer(k), 
+             as.integer(1), # use the same directions and projections
+             as.integer(seed),
+             depths=double(nrow(x)))$depths
+  } else 
+    if (method %in% 1:3){
+      ds <- .C("HDepthEx", 
+               as.double(points), 
+               as.double(objects), 
+               as.integer(nrow(data)),
+               as.integer(nrow(x)),  
+               as.integer(ncol(data)), 
+               as.integer(method), 
+               depths=double(nrow(x)))$depths  
+    }
+  else 
+    stop("wrong choise of the algorithm, method = ", method)
+  
+  return (ds)
+}
+
+
+
+
+depth.space.halfspace <- function(data, cardinalities, exact, method, num.directions = 1000, seed = 0){
+  if (seed != 0) set.seed(seed)
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  if (!is.numeric(num.directions) 
+      || is.na(num.directions) 
+      || length(num.directions) != 1 
+      || !.is.wholenumber(num.directions) 
+      || !(num.directions > 1 && num.directions < 10000000)){
+    numDirections <- 1000
+    warning("Argument \"num.directions\" not specified correctly. 1000 is used as a default value")
+  }else{
+    numDirections <- num.directions
+  }
+  
+  x <- as.vector(t(data))
+  c <- as.vector(cardinalities)
+  
+  method = .parse_HSD_pars(exact, method)
+  
+  if (method == 0)
+    if (!is.numeric(num.directions) 
+        || is.na(num.directions) 
+        || length(num.directions) != 1 
+        || !.is.wholenumber(num.directions) 
+        || !(num.directions > 1 && num.directions < 10000000)){
+      numDirections <- 1000
+      warning("Argument \"num.directions\" not specified correctly. 1000 is used as a default value")
+    }else{
+      numDirections <- num.directions
+    }
+  
+  if (method == 0){
+    k <- numDirections
+    rez <- .C("HDSpace", 
+              as.double(x), 
+              as.integer(ncol(data)), 
+              as.integer(c), 
+              as.integer(length(cardinalities)), 
+              as.integer(k), 
+              as.integer(1), 
+              as.integer(seed),
+              dspc=double(nrow(data)*length(cardinalities)), 
+              dirs=double(k*ncol(data)), 
+              prjs=double(k*nrow(data)))
+    depth.space <- matrix(rez$dspc, nrow=nrow(data), ncol=length(cardinalities), byrow=TRUE)
+  }else 
+    if (method %in% 1:3){
+      ds <- .C("HDepthSpaceEx", 
+               as.double(x), 
+               as.double(x), 
+               as.integer(c), 
+               as.integer(length(cardinalities)), 
+               as.integer(nrow(data)),  
+               as.integer(ncol(data)), 
+               as.integer(method), 
+               depths=double(nrow(data)*length(cardinalities)))$depths  
+      
+      depth.space <- matrix(ds, nrow=nrow(data), ncol=length(cardinalities), byrow=F)
+    }
+  else 
+    stop("wrong choise of the algorithm, method = ", method)
+  
+  return (depth.space)
+}
+
diff --git a/R/depth.potential.r b/R/depth.potential.r
new file mode 100644
index 0000000..f5a2b23
--- /dev/null
+++ b/R/depth.potential.r
@@ -0,0 +1,292 @@
+.potentialKernelTypes <- c("EDKernel", "GKernel", "EKernel", "TriangleKernel", "VarGKernel")
+
+.potential_depths <- function(ddalpha, objects, class = 0){
+  
+  if (ddalpha$ignoreself) stop("ignoreself not supported")  # todo ignore only if objects were NULL, @ what class do the points belong to? when seperately scaled
+  
+  # count all potential on the untransformed data
+  if (class == 0) { 
+    a = ddalpha$kernel.bandwidth
+    data <- NULL
+    cardinalities <- c()
+    for (i in 1:ddalpha$numPatterns){
+      data <- rbind(data, ddalpha$patterns[[i]]$points)
+      cardinalities <- c(cardinalities, ddalpha$patterns[[i]]$cardinality)
+    }
+    if (is.null(objects))
+      objects = data
+  }
+  # count potential w.r.t the given class
+  else {
+    a = ddalpha$kernel.bandwidth[class]
+    data <- ddalpha$patterns[[class]]$transformer( ddalpha$patterns[[class]]$points )
+    cardinalities <- c(ddalpha$patterns[[class]]$cardinality)      
+    objects <- ddalpha$patterns[[class]]$transformer(objects)
+    
+    #   if (is.null(objects)){
+    #     for (i in (1:ddalpha$numPatterns)){
+    #        objects <- rbind(objects, ddalpha$patterns[[i]]$points)
+    #     }
+    #      objects <- ddalpha$patterns[[class]]$transformer(objects)
+    #   } else {
+    #     ignoreself = F
+    #    }
+  }
+  
+  kernelType = ddalpha$kernel
+  if (is.character(kernelType))
+    kernelType =  switch (kernelType, EDKernel = 1, GKernel = 2, EKernel = 3, TriangleKernel = 4, 1)
+  
+  points <- as.vector(t(data))
+  numPoints <- sum(cardinalities)
+  dimension <- ncol(data)
+  points2 <- as.vector(t(objects))
+  numPoints2 <- nrow(objects)
+  classes <- length(cardinalities)
+  
+  depth <- .C("PotentialDepthsCount", 
+              as.double(points), 
+              as.integer(numPoints), 
+              as.integer(dimension), 
+              as.integer(classes),
+              as.integer(cardinalities), 
+              as.double(points2), 
+              as.integer(numPoints2), 
+              as.integer(kernelType), 
+              as.double(a), 
+              as.integer(ddalpha$ignoreself),
+              depth=double(numPoints2*classes))$depth
+  
+  d = as.matrix(depth)
+  dim(d)<-c(numPoints2,classes)
+  
+  return(d)
+}
+
+.potential_depths_wrt <- function(ddalpha, objects_){
+  
+  d <- NULL
+  
+  # w.r.t. each class
+  for (cls in 1:ddalpha$numPatterns){
+    
+    data <- ddalpha$patterns[[cls]]$transformer( ddalpha$patterns[[cls]]$points )
+    cardinalities <- c(ddalpha$patterns[[cls]]$cardinality)
+    
+    objects = objects_
+    if (is.null(objects_))  # count for all data
+      for (i in 1:ddalpha$numPatterns){
+        objects <- rbind(objects, ddalpha$patterns[[i]]$points)
+      }
+    
+    objects <- ddalpha$patterns[[cls]]$transformer(objects)
+    
+    kernelType = ddalpha$kernel
+    if (is.character(kernelType))
+      kernelType =  switch (kernelType, EDKernel = 1, GKernel = 2, EKernel = 3, TriangleKernel = 4, 1)
+    
+    points <- as.vector(t(data))
+    numPoints <- sum(cardinalities)
+    dimension <- ncol(data)
+    points2 <- as.vector(t(objects))
+    numPoints2 <- nrow(objects)
+    classes <- length(cardinalities)
+    
+    depth <- .C("PotentialDepthsCount", 
+                as.double(points), 
+                as.integer(numPoints), 
+                as.integer(dimension), 
+                as.integer(classes),
+                as.integer(cardinalities), 
+                as.double(points2), 
+                as.integer(numPoints2), 
+                as.integer(kernelType), 
+                as.double(ddalpha$kernel.bandwidth[cls]),
+                as.integer(ddalpha$ignoreself),
+                depth=double(numPoints2*classes))$depth
+    
+    d = cbind(d, depth)
+  }
+  
+  return(d)
+}
+
+depth.potential <- function(x, data, pretransform = "1Mom", kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75){
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  if (!is.matrix(x)) {
+    if(is.vector(x))
+      x <- matrix(x, nrow=1)
+    if(is.data.frame(x))
+      x <- data.matrix(x)
+  }
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if(is.data.frame(data))
+    data <- data.matrix(data)
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  if (ncol(data) + 1 > nrow(data)){ #?
+    stop("To few data points")
+  }
+  
+  if(!is.null(pretransform)){
+    if (pretransform == "1Mom" || pretransform == "NMom")
+      mm <- mah.moment(data)
+    else if (pretransform == "1MCD" || pretransform == "NMCD")
+      mm <- mah.mcd(data, mah.parMcd)              
+    
+    transformer <- MahMomentTransformer(mm$mu, mm$b)
+    data <- transformer(data)
+    x <- transformer(x)
+  }
+  
+  kernelType = kernel
+  if (is.character(kernelType))
+    kernelType =  switch (kernelType, EDKernel = 1, GKernel = 2, EKernel = 3, TriangleKernel = 4, 1)
+  
+  if (is.null(kernel.bandwidth)) {    # use the rule of thumb
+    kernel.bandwidth = nrow(data) ^ (-2/(ncol(data)+4))
+  }
+  else{
+    if (length(kernel.bandwidth) != 1 || is.na(kernel.bandwidth) || kernel.bandwidth == 0)
+      stop("Argument \"kernel.bandwidth\" has invaid format.")
+  }
+  
+  points <- as.vector(t(data))
+  numPoints <- nrow(data)
+  dimension <- ncol(data)
+  points2 <- as.vector(t(x))
+  numPoints2 <- nrow(x)
+  cardinalities = numPoints
+  classes <- 1
+  
+  ignoreself = F
+  
+  depth <- .C("PotentialDepthsCount", 
+              as.double(points), 
+              as.integer(numPoints), 
+              as.integer(dimension), 
+              as.integer(classes),
+              as.integer(cardinalities), 
+              as.double(points2), 
+              as.integer(numPoints2), 
+              as.integer(kernelType), 
+              as.double(kernel.bandwidth),
+              as.integer(ignoreself),
+              depth=double(numPoints2*classes))$depth
+  
+  return(depth)
+}
+
+
+
+
+depth.space.potential <- function(data, cardinalities, pretransform = "NMom", kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if(is.data.frame(data))
+    data <- data.matrix(data)
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  d <- NULL
+  
+  needtransform = F
+  
+  if (pretransform == "1Mom" || pretransform == "1MCD"){
+    if (pretransform == "1Mom")
+      mm <- mah.moment(data)
+    else   # "1MCD"
+      mm <- mah.mcd(data, mah.parMcd)              
+    
+    transformer <- MahMomentTransformer(mm$mu, mm$b)
+    data <- transformer(data)
+    
+    if (is.null(kernel.bandwidth)) {    # use the rule of thumb
+      kernel.bandwidth = nrow(data) ^ (-2/(ncol(data)+4))
+    }
+    else{
+      if (length(kernel.bandwidth) != 1 || is.na(kernel.bandwidth) || kernel.bandwidth == 0)
+        stop("Argument \"kernel.bandwidth\" has invaid length, Zero or NA elements.")
+    }
+    
+  } else if (pretransform == "NMom" || pretransform == "NMCD"){
+    needtransform = T
+    
+    if (is.null(kernel.bandwidth)) {    # use the rule of thumb
+      #separately calculated later
+    }
+    else{
+      if (!is.numeric(kernel.bandwidth)
+          ||!(is.vector(kernel.bandwidth) || is.list(kernel.bandwidth))){
+        stop("Argument \"kernel.bandwidth\" has invaid format.")
+      }
+      if (length(kernel.bandwidth) == 1)
+        kernel.bandwidth = rep(kernel.bandwidth, length(cardinalities))
+      if (sum(!is.na(kernel.bandwidth)) != length(cardinalities) || sum(kernel.bandwidth != 0) != length(cardinalities)){
+        stop("Argument \"kernel.bandwidth\" has invaid length, Zero or NA elements.")
+      } 
+    }
+  }
+  
+  if(needtransform)
+    # w.r.t. each class
+    for (cls in 1:length(cardinalities)){
+      pattern <- data[(1 + sum(cardinalities[0:(cls - 1)])):sum(cardinalities[1:cls]),]
+      if(is.null(kernel.bandwidth)) band <- NULL
+      else band <- kernel.bandwidth[cls]
+      
+      depth <- depth.potential(data, pattern, pretransform, kernel, band, mah.parMcd)
+      d <- cbind(d, depth)
+    }
+  else # not w.r.t.
+  {
+    points <- as.vector(t(data))
+    numPoints <- sum(cardinalities)
+    dimension <- ncol(data)
+    points2 <- as.vector(t(data))
+    numPoints2 <- nrow(data)
+    classes <- length(cardinalities)
+    
+    kernelType = kernel
+    if (is.character(kernelType))
+      kernelType =  switch (kernelType, EDKernel = 1, GKernel = 2, EKernel = 3, TriangleKernel = 4, 1)
+    
+    ignoreself = F
+    
+    depth <- .C("PotentialDepthsCount", 
+                as.double(points), 
+                as.integer(numPoints), 
+                as.integer(dimension), 
+                as.integer(classes),
+                as.integer(cardinalities), 
+                as.double(points2), 
+                as.integer(numPoints2), 
+                as.integer(kernelType), 
+                as.double(kernel.bandwidth), 
+                as.integer(ignoreself),
+                depth=double(numPoints2*classes))$depth
+    
+    d = as.matrix(depth)
+    dim(d)<-c(numPoints2,classes)
+  }
+  
+  return(d)
+}
diff --git a/R/depth.projection.r b/R/depth.projection.r
new file mode 100644
index 0000000..b86f542
--- /dev/null
+++ b/R/depth.projection.r
@@ -0,0 +1,295 @@
+################################################################################
+# File:             depth.projection.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     13.11.2015
+# 
+# Computation of the projection data depth.
+################################################################################
+# Conrains R-codes written by Subhajit Dutta,
+# taken from http://www.isical.ac.in/~tijahbus/GAM/r_wilcox.txt.
+################################################################################
+
+depth.projection <- function(x, data, method = "random", num.directions = 1000, seed = 0){
+  if (seed!=0) set.seed(seed)
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (method == "random"){
+    dt <- as.vector(t(data))
+    z <- as.vector(t(x))
+    m <- nrow(x)
+    d <- ncol(data)
+    n <- nrow(data)
+    q <- 1
+    k <- num.directions
+    newDirs <- 1
+    rez <- .C("ProjectionDepth", as.double(dt), 
+              as.double(z), 
+              as.integer(m), 
+              as.integer(d), 
+              as.integer(n), 
+              as.integer(q), 
+              dirs=double(k*d), 
+              prjs=double(k*n), 
+              as.integer(k), 
+              as.integer(1), 
+              as.integer(seed),
+              dps=double(m*q))
+    return (rez$dps)
+  }
+  if (method == "linearize"){
+    depths <- .zdepth(data, x)
+    return (1/(1 + depths))
+  }
+}
+
+depth.space.projection <- function(data, cardinalities, method = "random", num.directions = 1000, seed = 0){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    pattern <- data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]
+    pattern.depths <- depth.projection (data, pattern, method, num.directions, seed)
+    depth.space <- cbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+  
+  return (depth.space)
+}
+
+
+################################################################################
+# R-codes of this function written by Subhajit Dutta,
+# taken from http://www.isical.ac.in/~tijahbus/GAM/r_wilcox.txt.
+################################################################################
+.zdepth<-function(m,pts=m,zloc=median,zscale=mad){
+  # 
+  # Compute depth of points as in Zuo, Annals, 2003
+  #
+  if(!is.matrix(m))stop("argument m should be a matrix")
+  if(!is.matrix(pts))stop("argument pts should be a matrix")
+  if(ncol(m)!=ncol(pts))stop("Number of columns for m and pts are not equal")
+  np<-ncol(m)
+  val<-NA
+  for(i in 1:nrow(pts)){
+    pval<-pts[i,]
+    START<-rep(1,np)/sqrt(np)
+    temp<-.nelderv2(m,np,FN=.zdepth.sub,START=START,zloc=zloc,zscale=zscale,pts=pval)
+    temp<-temp/sqrt(sum(temp^2))
+    y<-t(t(m)*temp)
+    y<-apply(y,1,sum)
+    ppro<-sum(pval*temp)
+    val[i]<-abs(ppro-zloc(y))/zscale(y)
+  }
+  val
+}
+
+################################################################################
+# R-codes of this function written by Subhajit Dutta,
+# taken from http://www.isical.ac.in/~tijahbus/GAM/r_wilcox.txt.
+################################################################################
+.zdepth.sub<-function(x,theta,zloc=median,zscale=mad,pts=NA){
+  theta<-theta/sqrt(sum(theta^2))
+  temp<-t(t(x)*theta)
+  ppro<-sum(t(t(pts)*theta))
+  yhat<-apply(temp,1,sum)
+  val<-0-abs(ppro-zloc(yhat))/zscale(yhat)
+  val
+}
+
+################################################################################
+# R-codes of this function written by Subhajit Dutta,
+# taken from http://www.isical.ac.in/~tijahbus/GAM/r_wilcox.txt.
+################################################################################
+.nelderv2<-function(x,N,FN,START=c(rep(1,N)),STEP=c(rep(1,N)),
+                   XMIN=c(rep(0,N)),XSEC=c(rep(0,N)),...){
+  #     NELDER-MEAD method for minimzing a function
+  #
+  #     TAKEN FROM OLSSON, J QUALITY TECHNOLOGY, 1974, 6, 56.
+  #
+  #     x= n by p matrix containing data; it is used by 
+  #        function to be minimized.
+  #     N= number of parameters 
+  #
+  #     FN=the function to be minimized
+  #     FORM: FN(x,theta), theta is vector containing
+  #     values for N parameters.
+  #
+  #     START = starting values.
+  #     STEP=initial step.
+  #     This function returns the N values for theta that minimize FN
+  #
+  ICOUNT<-500
+  REQMIN<-.0000001
+  NN<-N+1
+  P<-matrix(NA,nrow=N,ncol=NN)
+  P[,NN]<-START
+  PBAR<-NA
+  RCOEFF<-1
+  ECOEFF<-2
+  CCOEFF<-.5
+  KCOUNT<-ICOUNT
+  ICOUNT<-0
+  DABIT<-2.04067e-35
+  BIGNUM<-1.e38
+  KONVGE<-5
+  XN<-N
+  DN<-N
+  Y<-rep(0,NN)
+  Y[NN]<-FN(x,START,...)
+  ICOUNT<-ICOUNT+1
+  for(J in 1:N){
+    DCHK<-START[J]
+    START[J]<-DCHK+STEP[J]
+    for(I in 1:N){
+      P[I,J]<-START[I]
+    }
+    Y[J]<-FN(x,START,...)
+    ICOUNT<-ICOUNT+1
+    START[J]<-DCHK
+  }
+  I1000<-T
+  while(I1000){
+    YLO<-Y[1]
+    YNEWLO<-YLO
+    ILO<-1
+    IHI<-1
+    for(I in 2:NN){
+      if(Y[I] <  YLO){
+        YLO<-Y[I]
+        ILO<-I}
+      if(Y[I] > YNEWLO){
+        YNEWLO<-Y[I]
+        IHI<-I}
+    }
+    DCHK<-(YNEWLO+DABIT)/(YLO+DABIT)-1
+    if(abs(DCHK) < REQMIN){
+      I1000<-F
+      next
+    }
+    KONVGE<-KONVGE-1
+    if(KONVGE == 0){
+      KONVGE<-5
+      for(I in 1:N){
+        COORD1<-P[I,1]
+        COORD2<-COORD1
+        for(J in 2:NN){
+          if(P[I,J] < COORD1)COORD1<-P[I,J]
+          if(P[I,J] > COORD2)COORD2<-P[I,J]
+        }     # 2010 CONTINUE
+        DCHK<-(COORD2+DABIT)/(COORD1+DABIT)-1
+        if(abs(DCHK) > REQMIN)break  
+      } 
+    }       
+    if(ICOUNT >= KCOUNT){
+      I1000<-F
+      next
+    }
+    for(I in 1:N){
+      Z<-0.0
+      Z<-sum(P[I,1:NN]) # 6
+      Z<-Z-P[I,IHI]
+      PBAR[I]<-Z/DN
+    }
+    PSTAR<-(1.+RCOEFF)*PBAR-RCOEFF*P[,IHI]
+    YSTAR<-FN(x,PSTAR,...)
+    ICOUNT<-ICOUNT+1
+    if(YSTAR < YLO && ICOUNT >= KCOUNT){
+      P[,IHI]<-PSTAR
+      Y[IHI]<-YSTAR
+      next 
+    }
+    IFLAG<-T   
+    if(YSTAR < YLO){
+      P2STAR<-ECOEFF*PSTAR+(1-ECOEFF)*PBAR
+      Y2STAR<-FN(x,P2STAR,...)
+      ICOUNT<-ICOUNT+1
+      if(Y2STAR >= YSTAR){ 
+        P[,IHI]<-PSTAR
+        Y[IHI]<-YSTAR
+        next #In essence, go to 19 which goes to 1000
+      }
+      IFLAG<-T
+      while(YSTAR < Y[IHI]){
+        P[,IHI]<-P2STAR
+        Y[IHI]<-Y2STAR
+        IFLAG<-F
+        break  
+        L<-sum(Y[1:NN] > YSTAR)
+        if(L > 1){
+          P[,IHI]<-PSTAR
+          Y[IHI]<-YSTAR
+          IFLAG<-T
+          break 
+        }
+        if(L > 1)break # go to 19
+        if(L != 0){
+          P[1:N,IHI]<-PSTAR[1:N]
+          Y[IHI]<-YSTAR
+        }
+        I1000<-F
+        break
+        if(ICOUNT >= KCOUNT){
+          I1000<-F
+          next
+        }
+        P2STAR[1:N]<-CCOEFF*P[1:N,IHI]+(1-CCOEFF)*PBAR[1:N]
+        Y2STAR<-FN(x,P2STAR,...)
+        ICOUNT<-ICOUNT+1
+      }   # END WHILE 
+    }
+    if(IFLAG){
+      for(J in 1:NN){
+        P[,J]=(P[,J]+P[,ILO])*.5
+        XMIN<-P[,J]
+        Y[J]<-FN(x,XMIN,...)
+      }
+      ICOUNT<-ICOUNT+NN
+      if(ICOUNT < KCOUNT)next
+      I1000<-F
+      next
+    }
+    P[1:N,IHI]<-PSTAR[1:N]
+    Y[IHI]<-YSTAR
+  } 
+  for(J in 1:NN){
+    XMIN[1:N]<-P[1:N,J]
+  }
+  Y[J]<-FN(x,XMIN,...)
+  YNEWLO<-BIGNUM
+  for(J in 1:NN){
+    if (Y[J] < YNEWLO){
+      YNEWLO<-Y[J]
+      IBEST<-J
+    }}
+  Y[IBEST]<-BIGNUM
+  YSEC<-BIGNUM
+  for(J in 1:NN){
+    if(Y[J] < YSEC){
+      YSEC<-Y[J]
+      ISEC<-J
+    }}
+  XMIN[1:N]<-P[1:N,IBEST]
+  XSEC[1:N]<-P[1:N,ISEC]
+  XMIN
+}
\ No newline at end of file
diff --git a/R/depth.r b/R/depth.r
new file mode 100644
index 0000000..7b1b5c8
--- /dev/null
+++ b/R/depth.r
@@ -0,0 +1,54 @@
+.depth <- function(fname, funcargs, ...){
+  f <- try(match.fun(fname), silent = T)
+  if (is.function(f)){
+    args = list(...)
+    fcnArgs <- names(formals(f))
+    fcnArgs <- unlist(fcnArgs, use.names=FALSE)
+    keep <- intersect(names(args), fcnArgs)
+    unused <- setdiff(names(args), fcnArgs)
+    args <- args[keep]
+    
+    args <- c(args, funcargs)
+    res <- do.call(fname, args=args)
+    
+    if(length(unused)>0)
+      warning("Unused by '", fname, "' arguments: ", paste(unused, collapse = ', '))
+    
+    #res <- f(x, data, ...)
+    
+    return(res)
+  } else {
+    warning("There is no depth function ", fname)
+  }
+}
+
+depth. <- function(x, data, notion = c("zonoid", "halfspace", "Mahalanobis", "projection", "spatial", "spatialLocal", "simplicial", "simplicialVolume", "ddplot", "potential"), ...){
+  
+  if(is.null(notion))
+    stop("Parameter 'notion' must be set")
+  t <- notion
+  try(t <- match.arg(notion), silent = T)
+  
+  fname = paste0("depth.", t)
+  funcargs = list(x = x, data = data)
+
+  return(.depth(fname, funcargs, ...))
+}
+
+depth.space. <- function(data, cardinalities, notion = c("zonoid", "halfspace", "Mahalanobis", "projection", "spatial", "spatialLocal", "simplicial", "simplicialVolume", "ddplot", "potential"), ...){
+  
+  if(is.null(notion))
+    stop("Parameter 'notion' must be set")
+  t <- notion
+  try(t <- match.arg(notion), silent = T)
+  
+  # try to find a depth
+  fname = paste0("depth.space.", t)
+  funcargs = list(cardinalities = cardinalities, data = data)
+  return(.depth(fname, funcargs, ...))
+}
+
+
+
+
+# d =  depth(data$train, data$train, exact = T)
diff --git a/R/depth.simplicial.r b/R/depth.simplicial.r
new file mode 100644
index 0000000..224308d
--- /dev/null
+++ b/R/depth.simplicial.r
@@ -0,0 +1,77 @@
+################################################################################
+# File:             depth.simplicial.r
+# Created by:       Oleksii Pokotylo
+# First published:  15.06.2015
+# Last revised:     15.06.2015
+# 
+# Computation of the simplicial data depth.
+################################################################################
+
+depth.simplicial <- function(x, data, exact = F, k = 0.05, seed = 0){
+  if (seed!=0) set.seed(seed)
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  if (ncol(data) + 1 > nrow(data)){ #?
+    stop("To few data points")
+  }
+  
+  if (!exact) if (k <= 0) stop("k must be positive")
+      else if (k < 1) k = choose(nrow(data), ncol(data))*k
+  
+  points <- as.vector(t(data))
+  objects <- as.vector(t(x))
+  ds <- .C("SimplicialDepth", 
+           as.double(points), 
+           as.double(objects), 
+           as.integer(nrow(data)), 
+           as.integer(nrow(x)), 
+           as.integer(ncol(data)), 
+           as.integer(seed),
+           as.integer(exact),
+           as.integer(.longtoint(k)),           
+           depths=double(nrow(x)))$depths
+  
+  return (ds)
+}
+
+
+depth.space.simplicial <- function(data, cardinalities, exact = F, k = 0.05, seed = 0){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    pattern <- data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]
+    pattern.depths <- depth.simplicial (data, pattern, exact, k, seed)
+    depth.space <- cbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+  
+  return (depth.space)
+}
diff --git a/R/depth.simplicialVolume.r b/R/depth.simplicialVolume.r
new file mode 100644
index 0000000..2b3af55
--- /dev/null
+++ b/R/depth.simplicialVolume.r
@@ -0,0 +1,85 @@
+################################################################################
+# File:             depth.simplicialVolume.r
+# Created by:       Oleksii Pokotylo
+# First published:  15.06.2015
+# Last revised:     15.06.2015
+# 
+# Computation of the simplicial volume data depth.
+################################################################################
+
+.longtoint <- function(k){
+  limit = 2000000000
+  k1 = as.integer(k/limit)
+  k2 = k - k1*limit
+  return(c(k1, k2))
+}
+
+depth.simplicialVolume <- function(x, data, exact = F, k = 0.05, seed = 0){
+  if (seed!=0) set.seed(seed)
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  if (ncol(data) + 1 > nrow(data)){ #?
+    stop("To few data points")
+  }
+  
+  if (!exact) if (k <= 0) stop("k must be positive")
+      else if (k < 1) k = choose(nrow(data), ncol(data))*k
+      
+  points <- as.vector(t(data))
+  objects <- as.vector(t(x))
+  ds <- .C("OjaDepth", 
+           as.double(points), 
+           as.double(objects), 
+           as.integer(nrow(data)), 
+           as.integer(nrow(x)), 
+           as.integer(ncol(data)), 
+           as.integer(seed),
+           as.integer(exact),
+           as.integer(.longtoint(k)),
+           depths=double(nrow(x)))$depths
+  
+  return (ds)
+}
+
+
+
+depth.space.simplicialVolume <- function(data, cardinalities, exact = F, k = 0.05, seed = 0){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    pattern <- data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]
+    pattern.depths <- depth.simplicialVolume(data, pattern, exact, k, seed)
+    depth.space <- cbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+  
+  return (depth.space)
+}
diff --git a/R/depth.space.zonoid.r b/R/depth.space.zonoid.r
new file mode 100644
index 0000000..19c69e1
--- /dev/null
+++ b/R/depth.space.zonoid.r
@@ -0,0 +1,54 @@
+################################################################################
+# File:             depth.space.zonoid.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     15.05.2013
+# 
+# Computation of the depth space based on the zonoid data depth.
+################################################################################
+
+depth.space.zonoid <- function(data, cardinalities, seed = 0){
+  if (seed!=0) set.seed(seed)
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  dim <- ncol(data)
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    objects <- as.vector(t(data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]))
+    pattern.depths <- NULL
+    for (j in 1:length(cardinalities)){
+      pattern <- as.vector(t(data[(1 + sum(cardinalities[0:(j - 1)])):sum(cardinalities[1:j]),]))
+      ds <- .C("ZDepth", 
+               as.double(pattern), 
+               as.double(objects), 
+               as.integer(cardinalities[j]), 
+               as.integer(cardinalities[i]), 
+               as.integer(dim), 
+               as.integer(seed),
+               depths=double(cardinalities[i]))$depths
+      if (j == i){
+        ds <- replace(ds, which(ds < 1/cardinalities[j] - sqrt(.Machine$double.eps)), 1/cardinalities[j])
+      }else{
+        ds <- replace(ds, which(ds < 1/cardinalities[j] - sqrt(.Machine$double.eps)), 0)
+      }
+      pattern.depths <- cbind(pattern.depths, ds, deparse.level = 0)
+    }
+    depth.space <- rbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+
+  return (depth.space)
+}
diff --git a/R/depth.spatial.r b/R/depth.spatial.r
new file mode 100644
index 0000000..3eb3bdd
--- /dev/null
+++ b/R/depth.spatial.r
@@ -0,0 +1,104 @@
+depth.spatial.local <- function(x, data, mah.estimate = "moment", mah.parMcd = 0.75, kernel.bandwidth = 1){
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  mean <- colMeans(data)
+  if(mah.estimate == "none"){
+    lambda = diag(ncol(data))
+  } else {
+    if(mah.estimate == "moment"){
+      cov <- cov(data)
+    } else if(mah.estimate == "MCD"){
+      cov <- covMcd(data, mah.parMcd)$cov
+    } else {stop("Wrong parameter 'mah.estimate'")}
+    cov.eig <- eigen(cov)
+    B <- cov.eig$vectors %*% diag(sqrt(cov.eig$values))
+    lambda <- solve(B)
+  }
+  
+  if (kernel.bandwidth>1){
+    k <- function(x){
+      return(sqrt(2*pi)^(-ncol(x))*exp(-rowSums(x^2)/2/kernel.bandwidth))
+    }
+  }else{  #1/kernel.bandwidth^d
+    k <- function(x){
+      return((sqrt(2*pi)*kernel.bandwidth)^(-ncol(x))*exp(-rowSums(x^2)/2/kernel.bandwidth))
+    }
+  }  
+
+  depths <- apply(x, 1, function(x){  
+            n = nrow(data)
+            t1 = t(lambda %*% (x - t(data)))
+            t1 <- t1[which(rowSums(t1) != 0),]
+            
+            return (sum(k(t1))/n - sqrt(sum((colSums( k(t1)*( t1/sqrt(rowSums(t1^2)) ) )/n)^2)))
+          }  
+        )
+  return (depths)
+}
+
+depth.spatial <- function(x, data, mah.estimate = "moment", mah.parMcd = 0.75){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if(is.data.frame(data))
+    data = data.matrix(data)
+  if (!is.matrix(x)){
+    if(is.vector(x))
+      x <- matrix(x, nrow=1)
+    if(is.data.frame(x))
+      x = data.matrix(x)
+  }
+  mean <- colMeans(data)
+  if(mah.estimate == "none"){
+    lambda = diag(ncol(data))
+  } else {
+    if(mah.estimate == "moment"){
+      cov <- cov(data)
+    } else if(mah.estimate == "MCD"){
+      cov <- covMcd(data, mah.parMcd)$cov
+    } else {stop("Wrong parameter 'mah.estimate'")}
+    cov.eig <- eigen(cov)
+    B <- cov.eig$vectors %*% diag(sqrt(cov.eig$values))
+    lambda <- solve(B)
+  }
+  
+  depths <- rep(-1, nrow(x))
+  for (i in 1:nrow(x)){
+    tmp1 <- t(lambda %*% (x[i,] - t(data)))
+    tmp1 <- tmp1[which(rowSums(tmp1) != 0),]
+    tmp2 <- 1/sqrt(rowSums(tmp1^2))
+    depths[i] <- 1 - sqrt(sum((colSums(tmp2*tmp1)/nrow(data))^2))
+  }
+  return (depths)
+}
+
+depth.space.spatial <- function(data, cardinalities, mah.estimate = "moment", mah.parMcd = 0.75){
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    pattern <- data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]
+    pattern.depths <- depth.spatial (data, pattern, mah.estimate, mah.parMcd)
+    depth.space <- cbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+  
+  return (depth.space)
+}
\ No newline at end of file
diff --git a/R/depth.zonoid.r b/R/depth.zonoid.r
new file mode 100644
index 0000000..a91bde2
--- /dev/null
+++ b/R/depth.zonoid.r
@@ -0,0 +1,44 @@
+################################################################################
+# File:             depth.zonoid.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     15.05.2013
+# 
+# Computation of the zonoid data depth.
+################################################################################
+
+depth.zonoid <- function(x, data, seed = 0){
+  if (seed!=0) set.seed(seed)
+  if (!is.matrix(x) 
+      && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (!(is.matrix(data) && is.numeric(data)
+        || is.data.frame(data) && prod(sapply(data, is.numeric))) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  if (ncol(data) + 1 > nrow(data)){ #?
+    stop("To few data points")
+  }
+  
+  points <- as.vector(t(data))
+  objects <- as.vector(t(x))
+  ds <- .C("ZDepth", 
+           as.double(points), 
+           as.double(objects), 
+           as.integer(nrow(data)), 
+           as.integer(nrow(x)), 
+           as.integer(ncol(data)), 
+           as.integer(seed),
+           depths=double(nrow(x)))$depths
+  
+  return (ds)
+}
diff --git a/R/depthf.r b/R/depthf.r
new file mode 100644
index 0000000..4bbd515
--- /dev/null
+++ b/R/depthf.r
@@ -0,0 +1,54 @@
+.depthf <- function(fname, funcargs, ...){
+  f <- try(match.fun(fname), silent = T)
+  if (is.function(f)){
+    args = list(...)
+    fcnArgs <- names(formals(f))
+    fcnArgs <- unlist(fcnArgs, use.names=FALSE)
+    keep <- intersect(names(args), fcnArgs)
+    unused <- setdiff(names(args), fcnArgs)
+    args <- args[keep]
+    
+    args <- c(args, funcargs)
+    res <- do.call(fname, args=args)
+    
+    if(length(unused)>0)
+      warning("Unused by '", fname, "' arguments: ", paste(unused, collapse = ', '))
+    
+    #res <- f(x, data, ...)
+    
+    return(res)
+  } else {
+    warning("There is no depth function ", fname)
+  }
+}
+
+depthf. <- function(datafA, datafB, notion = c("ABD", "BD", "fd1", "fd2", "hM", "hM2", "HR", "RP1", "RP2"), ...){
+  
+  if(is.null(notion))
+    stop("Parameter 'notion' must be set")
+  t <- notion
+  try(t <- match.arg(notion), silent = T)
+  
+  fname = paste0("depthf.", t)
+  funcargs = list(datafA = datafA, datafB = datafB)
+
+  return(.depthf(fname, funcargs, ...))
+}
+
+#depthf.space. <- function(dataf, cardinalities, notion = c("ABD", "BD", "fd1", "fd2", "hM", "hM2", "HR", "RP1", "RP2"), ...){
+#  
+#  if(is.null(notion))
+#    stop("Parameter 'notion' must be set")
+#  t <- notion
+#  try(t <- match.arg(notion), silent = T)
+#  
+#  # try to find a depth
+#  fname = paste0("depth.space.", t)
+#  funcargs = list(cardinalities = cardinalities, data = data)
+#  return(.depth(fname, funcargs, ...))
+#}
+
+
+
+
+# d =  depth(data$train, data$train, exact = T)
diff --git a/R/dknn.R b/R/dknn.R
new file mode 100644
index 0000000..65689bf
--- /dev/null
+++ b/R/dknn.R
@@ -0,0 +1,149 @@
+################################################################################
+# File:             dknn.r
+# Created by:       Oleksii Pokotylo
+# First published:  
+# Last revised:     
+# 
+# Contains the realization of the Depth-based KNN classifier of Paindaveine and Van Bever (2015).
+################################################################################
+
+dknn.train <- function(data, kMax = -1, depth = "halfspace", seed = 0){
+
+  dpth = switch (depth,
+                 "halfspace" = 1,
+                 "Mahalanobis" = 2,
+                 "simplicial" = 3, 0)
+  if(dpth == 0)
+    stop("Wrong depth: ", depth)
+  
+  n = nrow(data)
+  chunkNumber = n #10
+  dimension = ncol(data)-1
+  labs <- data[,dimension+1]
+  labels <- integer(length(labs))
+  
+  uniquelab = unique(labs)
+  cardinalities = unlist(lapply(uniquelab, function(l)sum(labs == l)))
+  uniquelab = uniquelab[order(cardinalities)]
+  cardinalities = cardinalities[order(cardinalities)]
+  for (i in seq_along(uniquelab)){
+    labels[labs == uniquelab[i]] <- i
+  }
+  if(length(uniquelab)<2)
+    stop("There is only one class")
+  
+  if (!is.numeric(kMax) 
+      || is.na(kMax) 
+      || length(kMax) != 1 
+      || !.is.wholenumber(kMax) 
+      || !(kMax >= 1 
+           && kMax <= (cardinalities[1]+rev(cardinalities)[1]) 
+           || kMax == -1)){
+    warning("In treatment number ", i, ": Argument \"k\" not specified 
+            correctly. Defaults are applied")
+    kMax <- - 1
+  }
+  if(kMax == -1)    kMax <- n/2
+
+  kMax <- min(kMax, n - 1)
+  kMax <- max(kMax, 2)
+  
+  points <- as.vector(t(data[,1:dimension]))
+  k <- as.integer(.C("DKnnLearnCv", 
+          as.double(points), 
+          as.integer(labels),
+          as.integer(n), 
+          as.integer(dimension), 
+          as.integer(kMax), 
+          as.integer(dpth),
+          k = integer(1),
+          as.integer(chunkNumber),
+          as.integer(seed))$k)
+  
+  dknn <- list(data = data, 
+               n = n, 
+               dimension = dimension,
+               labels = labels,
+               uniquelab = uniquelab,
+               methodSeparator = "Dknn",
+               k = k,
+               depth = dpth,#depth,
+               seed = seed)
+  
+  return (dknn)
+}
+
+dknn.classify.trained <- function(objects, dknn){
+  
+  # Correct input data
+  if(is.data.frame(objects))
+    objects = as.matrix(objects)
+  if (!is.matrix(objects)){
+    objects <- matrix(objects, nrow=1)
+  }
+  if(ncol(objects)!=dknn$dimension)
+    stop("Parameter 'objects' has wrong dimension")
+  
+  points <- as.vector(t(dknn$data[,1:dknn$dimension]))
+  obj <- as.vector(t(objects))
+  output <- .C("DKnnClassify", 
+          as.double(obj),
+          as.integer(nrow(objects)),
+          as.double(points), 
+          as.integer(dknn$labels),
+          as.integer(dknn$n), 
+          as.integer(dknn$dimension), 
+          as.integer(dknn$k), 
+          as.integer(dknn$depth),
+          as.integer(dknn$seed),
+          output=integer(nrow(objects)))$output
+
+  results = dknn$uniquelab[output]
+  return (results)
+}
+
+dknn.classify <- function(objects, data, k, depth = "halfspace", seed = 0){
+  
+  n = nrow(data)
+  dimension = ncol(data)-1
+  labs <- data[,dimension+1]
+  labels <- integer(length(labs))
+  
+  uniquelab = unique(labs)
+  cardinalities = unlist(lapply(uniquelab, function(l)sum(labs == l)))
+  uniquelab = uniquelab[order(cardinalities)]
+  cardinalities = cardinalities[order(cardinalities)]
+  for (i in seq_along(uniquelab)){
+    labels[labs == uniquelab[i]] <- i
+  }
+  if(length(uniquelab)<2)
+    stop("There is only one class")
+  
+  if (!is.numeric(k) 
+      || is.na(k) 
+      || length(k) != 1 
+      || !.is.wholenumber(k) 
+      || k < 1
+      || k > nrow(data)){
+    stop("Argument \"k\" not specified correctly.")
+  }
+  
+  dpth = switch (depth,
+                 "halfspace" = 1,
+                 "Mahalanobis" = 2,
+                 "simplicial" = 3, 0)
+  if(dpth == 0)
+    stop("Wrong depth: ", depth)
+  
+  dknn <- list(data = data, 
+               n = n, 
+               dimension = dimension,
+               labels = labels,
+               uniquelab = uniquelab,
+               methodSeparator = "Dknn",
+               k = k,
+               depth = dpth,#depth,
+               seed = seed)
+  
+  return (dknn.classify.trained(objects, dknn))
+}
\ No newline at end of file
diff --git a/R/draw.ddplot.r b/R/draw.ddplot.r
new file mode 100644
index 0000000..a138738
--- /dev/null
+++ b/R/draw.ddplot.r
@@ -0,0 +1,89 @@
+draw.ddplot <- function(ddalpha, depth.space, cardinalities,
+                        main = "DD plot", xlab = "C1", ylab = "C2", classes = c(1,2), colors = c("red", "blue", "green"), drawsep = T){
+  
+  if(!missing(ddalpha)){
+    
+    col = c()
+    points = NULL
+    for (c in classes){
+    points = rbind(points, ddalpha$patterns[[c]]$depths[,classes])
+    col = c(col, rep(colors[c], ddalpha$patterns[[c]]$cardinality))
+    }
+    
+    if (class(xlab) != "expression" && class(ylab) != "expression" &&
+        xlab == "C1" && ylab == "C2"){
+      xlab = ddalpha$patterns[[1]]$name
+      ylab = ddalpha$patterns[[2]]$name
+    }
+    
+    plot(points, col = col, main = main, xlab = xlab, ylab = ylab, asp = T, xlim = c(0, max(points[,])), ylim = c(0, max(points[,])))
+    
+    if(drawsep && ddalpha$methodSeparator %in% c("alpha", "polynomial"))
+    {
+      gx <- seq(-0.1, 1.2*max(points[,1]), length=100)
+      gy <- seq(0, 1.2*max(points[,2]), length=100)
+      y <- as.matrix(expand.grid(x = gx, y = gy))   
+      
+      if (ddalpha$methodSeparator == "alpha") {
+      ray = ddalpha$classifiers[[1]]$hyperplane[-1]
+      
+      funcs = list(function(x) x[1], function(x) x[2], function(x) x[1]^2, function(x) x[1]*x[2], function(x) x[2]^2, function(x) x[1]^3, function(x) x[1]^2*x[2], function(x) x[1]*x[2]^2, function(x) x[2]^3)
+      
+      depthcontours = apply(y, 1, function(xx) {
+        res = 0
+        for(i in 1:ddalpha$classifiers[[1]]$dimProperties)(res = res+funcs[[i]](xx)*ray[i])
+        res
+        })
+      } else if (ddalpha$methodSeparator == "polynomial"){
+        if (ddalpha$classifiers[[1]]$axis == 0){
+          xAxis <- ddalpha$classifiers[[1]]$index1
+          yAxis <- ddalpha$classifiers[[1]]$index2
+        }else{
+          xAxis <- ddalpha$classifiers[[1]]$index2
+          yAxis <- ddalpha$classifiers[[1]]$index1
+        }
+        
+       depthcontours = apply(y, 1, function(xx) {
+          res = 0
+        for(j in 1:ddalpha$classifiers[[1]]$degree){res <- res + ddalpha$classifiers[[1]]$polynomial[j]*xx[xAxis]^j}
+          res = res-xx[yAxis]
+        })
+      }
+      contour(gx, gy, matrix(depthcontours, nrow=length(gx), ncol=length(gy)), add=TRUE, levels=0, drawlabels=FALSE, col = "black")
+    }
+    
+  } else if(!missing(depth.space)){
+    
+    col = c()
+    for (c in classes){
+      col = c(col, rep(colors[c], cardinalities[c]))
+    }
+    
+    plot(depth.space[,classes], col = col, main = main, xlab = xlab, ylab = ylab)
+    
+  } else stop("Both 'ddalpha' and 'depth.space' area missing")
+  
+}
+
+plot.ddalpha <- function(x, type = c("ddplot", "depth.contours"), ...){
+  type = match.arg(type)
+  if(type == "ddplot") 
+    draw.ddplot(x, ...)
+  if(type == "depth.contours")
+    depth.contours.ddalpha(x, ...)
+}
+
+plot.ddalphaf <- function(x, type = c("functional.data", "ddplot", "depth.contours"), ...){
+  type = match.arg(type)
+  if(type == "functional.data")
+    plot.functional(list(dataf = x$dataf, labels = lapply(x$data[,ncol(x$data)], function(o){x$labels[[o]]})), ...)
+  
+  if(class(x$classifier)!="ddalpha")
+    stop(type, " is available only for the ddalpha classifier")
+  if(type == "ddplot") 
+    draw.ddplot(x$classifier, ...)
+  if(type == "depth.contours")
+    depth.contours.ddalpha(x$classifier, ...)
+}
+  
+  
\ No newline at end of file
diff --git a/R/getdata.R b/R/getdata.R
new file mode 100644
index 0000000..74af342
--- /dev/null
+++ b/R/getdata.R
@@ -0,0 +1,6 @@
+#all_datasets = c("baby","banknoten","biomed","bloodtransfusion","breast_cancer_wisconsin","bupa","chemdiab_1vs2","chemdiab_1vs3","chemdiab_2vs3","cloud","crabB_MvsF","crabF_BvsO","crabM_BvsO","crabO_MvsF","crab_BvsO","crab_MvsF","cricket_CvsP","diabetes","ecoli_cpvsim","ecoli_cpvspp","ecoli_imvspp","gemsen_MvsF","glass","groessen_MvsF","haberman","heart","hemophilia","indian_liver_patient_1vs2","indian_liver_patient_FvsM","iris_setosavsversicolor","iris_setosavsvirginica","iris_versicol [...]
+
+getdata <- function (name){
+  data(list = name, envir = environment())
+  return(get(name))
+}
diff --git a/R/is.in.convex.r b/R/is.in.convex.r
new file mode 100644
index 0000000..bbad96f
--- /dev/null
+++ b/R/is.in.convex.r
@@ -0,0 +1,40 @@
+################################################################################
+# File:             is.in.convex.r
+# Created by:       Pavlo Mozharovskyi
+# First published:  28.02.2013
+# Last revised:     28.02.2013
+# 
+# Check if points lie in the convex hulls of the data clouds.
+################################################################################
+
+is.in.convex <- function(x, data, cardinalities, seed = 0){
+  if (!is.numeric(data)
+      || !is.matrix(data) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  if (!is.matrix(x) 
+       && is.vector(x)){
+    x <- matrix(x, nrow=1)
+  }
+  if (!is.numeric(x)){
+    stop("Argument \"x\" should be numeric")
+  }
+  if (ncol(x) != ncol(data)){
+    stop("Dimensions of the arguments \"x\" and \"data\" should coincide")
+  }
+  
+  is.in.convex <- .count_convexes(x, data, cardinalities, seed)
+  
+  return (is.in.convex)
+}
diff --git a/R/knnaff.r b/R/knnaff.r
new file mode 100644
index 0000000..de50d89
--- /dev/null
+++ b/R/knnaff.r
@@ -0,0 +1,229 @@
+knnaff.train <- function(data, aggregation.method = "majority", range = -1, k = -1, i = 0){
+
+  knnaff <- knaff.create.structure(data)
+  # Checks
+  if (!is.character(aggregation.method) 
+      || length(aggregation.method) != 1 
+      || !(aggregation.method %in% c("majority", "sequent"))){
+    warning("In treatment number ", i, ": Argument \"aggregation.method\" not 
+            specified correctly. \"majority\" is used as a default value")
+    knnaff$methodAggregation <- "majority"
+  }else{
+    knnaff$methodAggregation <- aggregation.method
+  }
+  if (!is.numeric(range) 
+      || is.na(range) 
+      || length(range) != 1 
+      || !.is.wholenumber(range) 
+      || !(range >= 2 
+           && range <= (knnaff$patterns[[knnaff$numPatterns]]$cardinality + 
+                  knnaff$patterns[[knnaff$numPatterns - 1]]$cardinality - 1) 
+           || range == -1)){
+    warning("In treatment number ", i, ": Argument \"range\" not 
+            specified correctly. Defaults are applied")
+    knnaff$range <- -1
+  }else{
+    knnaff$range <- range
+  }
+  if (!is.numeric(k) 
+      || is.na(k) 
+      || length(k) != 1 
+      || !.is.wholenumber(k) 
+      || !(k >= 1 
+           && k <= (knnaff$patterns[[knnaff$numPatterns]]$cardinality + 
+                      knnaff$patterns[[knnaff$numPatterns - 1]]$cardinality) 
+           || k == -1)){
+    warning("In treatment number ", i, ": Argument \"k\" not specified 
+            correctly. Defaults are applied")
+    knnaff$k <- -1
+  }else{
+    knnaff$k <- k
+  }
+  # Do leave-one-out cross-validation
+  knnaff <- knnaff.docv(knnaff)
+  
+  return (knnaff)
+}
+
+knaff.create.structure <- function(data){
+
+  # Elemantary statistics
+  dimension <- ncol(data) - 1
+  numOfPoints <- nrow(data)
+  classNames <- unique(data[,dimension + 1])
+  numOfClasses <- length(classNames)
+  # Ordering patterns according to their cardinalities
+  classCardinalities <- rep(0, numOfClasses)
+  for (i in 1:numOfClasses){
+    classCardinalities[i] <- nrow(data[data[,dimension + 1] == classNames[i],])
+  }
+  # Creating pattern templates
+  patterns <- as.list("")
+  for (i in 1:numOfClasses){
+    maxCarIndex <- which.max(classCardinalities)
+    # Creating a single template
+    pattern.index       <- i
+    pattern.points      <- data[data[,dimension + 1] == classNames[maxCarIndex],
+                                1:dimension]
+    pattern.name        <- classNames[maxCarIndex]
+    pattern.cardinality <- classCardinalities[maxCarIndex]
+    pattern.votes       <- 0
+    pattern <- structure(
+      list(index = pattern.index, 
+           points = pattern.points, 
+           name = pattern.name, 
+           cardinality = pattern.cardinality, 
+           votes = pattern.votes), 
+      .Names = c("index", "points", "name", "cardinality", "votes"))
+    # Adding pattern template to the list of patterns
+    patterns[[i]] <- pattern
+    # Deleting processed pattern
+    classCardinalities[maxCarIndex] <- -1    
+  }
+  # Creating overall structure
+  knnaff <- structure(
+    list(raw <- data, 
+         dimension = dimension, 
+         numPatterns = numOfClasses, 
+         numPoints = numOfPoints, 
+         patterns = patterns, 
+         classifiers = list(), 
+         numClassifiers = 0, 
+         methodAggregation = "majority", 
+         range = -1, 
+         k = -1), 
+    .Names = c("raw", "dimension", "numPatterns", "numPoints", "patterns", 
+               "classifiers", "numClassifiers", "methodAggregation", "range", 
+               "k"))
+  
+  return (knnaff)
+}
+
+knnaff.docv <- function(knnaff){
+
+  counter <- 1
+  # Determining multi-class behaviour
+  if (knnaff$methodAggregation == "majority"){
+    for (i in 1:(knnaff$numPatterns - 1)){
+      for (j in (i + 1):knnaff$numPatterns){
+        # Creating a classifier
+        classifier.index          <- counter
+        classifier.index1         <- i
+        classifier.index2         <- j
+        classifier.points         <- as.double(t(rbind(knnaff$patterns[[i]]$points, knnaff$patterns[[j]]$points)))
+        classifier.cardinalities  <- as.integer(c(knnaff$patterns[[i]]$cardinality, knnaff$patterns[[j]]$cardinality))
+        if (knnaff$k < 1 || knnaff$k > (knnaff$patterns[[i]]$cardinality + knnaff$patterns[[j]]$cardinality - 1))
+        {
+          if (knnaff$range < 2 || knnaff$range > (knnaff$patterns[[i]]$cardinality + knnaff$patterns[[j]]$cardinality - 1)){
+            maxk <- 10*( (knnaff$numPoints)^(1/knnaff$dimension) ) + 1
+          }else{
+            maxk <- knnaff$range
+          }
+          maxk <- min(maxk, knnaff$patterns[[i]]$cardinality + knnaff$patterns[[j]]$cardinality - 1)
+          maxk <- max(maxk, 2)
+          classifier.range <- maxk
+          classifier.k <- as.integer(.C("KnnAffInvLearnJK", 
+                                        classifier.points, 
+                                        as.integer(knnaff$dimension), 
+                                        classifier.cardinalities, 
+                                        as.integer(maxk), 
+                                        k=integer(1))$k)
+        }else{
+          classifier.range <- knnaff$range
+          classifier.k <- as.integer(knnaff$k)
+        }
+        # Adding the classifier to the list of classifiers
+        knnaff$classifiers[[counter]] <- 
+          list(index = classifier.index, 
+               index1 = classifier.index1, 
+               index2 = classifier.index2, 
+               points = classifier.points, 
+               cardinalities = classifier.cardinalities, 
+               k = classifier.k, 
+               range = classifier.range)
+        counter <- counter + 1
+      }
+    }
+  }
+  if (knnaff$methodAggregation == "sequent"){
+    for (i in 1:knnaff$numPatterns){
+      anotherClass <- NULL
+      for (j in 1:knnaff$numPatterns){
+        if (j != i){
+          anotherClass <- rbind(anotherClass, knnaff$patterns[[j]]$points)
+        }
+      }
+      classifier.index          <- counter
+      classifier.index1         <- i
+      classifier.index2         <- -1
+      classifier.points         <- as.double(t(rbind(knnaff$patterns[[i]]$points, anotherClass)))
+      classifier.cardinalities  <- as.integer(c(knnaff$patterns[[i]]$cardinality, nrow(anotherClass)))
+      if (knnaff$k < 1 || knnaff$k > knnaff$numPoints)
+      {
+        if (knnaff$range < 2 || knnaff$range > (knnaff$numPoints - 1)){
+          maxk <- 10*( (knnaff$numPoints)^(1/knnaff$dimension) ) + 1
+        }else{
+          maxk <- knnaff$range
+        }
+        maxk <- min(maxk, knnaff$numPoints - 1)
+        maxk <- max(maxk, 2)
+        classifier.range <- maxk
+        classifier.k <- as.integer(.C("KnnAffInvLearnJK", 
+                                      classifier.points, 
+                                      as.integer(knnaff$dimension), 
+                                      classifier.cardinalities, 
+                                      as.integer(maxk), 
+                                      k=integer(1))$k)
+      }else{
+        classifier.range <- knnaff$range
+        classifier.k <- as.integer(knnaff$k)
+      }
+      # Adding the classifier to the list of classifiers
+      knnaff$classifiers[[counter]] <- 
+        list(index = classifier.index, 
+             index1 = classifier.index1, 
+             index2 = classifier.index2, 
+             points = classifier.points, 
+             cardinalities = classifier.cardinalities, 
+             k = classifier.k, 
+             range = classifier.range)
+      counter <- counter + 1
+    }
+  }
+  
+  return (knnaff)
+}
+
+knnaff.classify <- function(objects, knnaff){
+
+  # Correct input data
+  if (!is.matrix(objects)){
+    objects <- matrix(objects, nrow=1)
+  }
+  # Initialization of the vote array
+  votes <- matrix(rep(0, nrow(objects)*knnaff$numPatterns), nrow=nrow(objects), ncol=knnaff$numPatterns)
+  for (i in 1:length(knnaff$classifiers)){
+    res <- .C("KnnAffInvClassify", 
+              as.double(t(objects)), 
+              as.integer(nrow(objects)), 
+              knnaff$classifiers[[i]]$points, 
+              as.integer(knnaff$dimension), 
+              knnaff$classifiers[[i]]$cardinalities, 
+              knnaff$classifiers[[i]]$k, 
+              output=integer(nrow(objects)))$output
+    for (j in 1:nrow(objects)){
+      if (res[j] == 0){
+        votes[j,knnaff$classifiers[[i]]$index1] <- votes[j,knnaff$classifiers[[i]]$index1] + 1
+      }else{
+        votes[j,knnaff$classifiers[[i]]$index2] <- votes[j,knnaff$classifiers[[i]]$index2] + 1
+      }
+    }
+  }
+  # Collect results
+  results <- list()
+  for (i in 1:nrow(objects)){
+    results[[i]] <- knnaff$patterns[[which.max(votes[i,])]]$name
+  }
+  
+  return (results)
+}
diff --git a/R/lda.r b/R/lda.r
new file mode 100644
index 0000000..67af99d
--- /dev/null
+++ b/R/lda.r
@@ -0,0 +1,10 @@
+lda.train <- function(data){
+  new.frm <- data.frame(data)
+  z <- lda(formula=as.formula(paste("X", ncol(data), " ~ .", sep="")), data = new.frm, tol = sqrt(.Machine$double.eps))#, prior = rep(1, dimension)/dimension)
+  return (z)
+}
+
+lda.classify <- function(objects, lda){
+  z <- predict(lda, data.frame(objects))$class
+  return (z)
+}
diff --git a/R/mahalanobis.scaling.r b/R/mahalanobis.scaling.r
new file mode 100644
index 0000000..0f9629f
--- /dev/null
+++ b/R/mahalanobis.scaling.r
@@ -0,0 +1,121 @@
+
+mah.moment <- function(x){
+  mu <- colMeans(x)
+  
+  scale.eig <- eigen(cov(x))
+  B <- scale.eig$vectors %*% diag(sqrt(scale.eig$values)) 
+  B_inv <- solve(B)
+  return (list(mu = as.numeric(mu), b = B_inv, s = cov(x)))
+}
+
+mah.mcd <- function(x, alpha = 1/2){
+  #library(robustbase)
+  estimate <- covMcd(x, alpha = alpha)
+  mu <- estimate$center
+  
+  scale.eig <- eigen(estimate$cov)
+  B <- scale.eig$vectors %*% diag(sqrt(scale.eig$values)) 
+  B_inv <- solve(B)
+  return (list(mu = as.numeric(mu), b = B_inv, s = estimate$cov))
+}
+
+mah.transform <- function (x, mu, B_inv, inv = F)  {
+  if (inv)
+    return (t(solve(B_inv) %*% (t(x))+mu))
+  return (t(B_inv %*% (t(x)-mu)))
+}
+
+mah.transform.back <- function (x, mu, B_inv)  {
+  return (t(solve(B_inv) %*% (t(x))+mu))
+}
+
+MahMomentTransformer <- function(mu, b){
+  f <- function(points, inv = F){
+    return(mah.transform(points, mu, b, inv))
+  }
+  environment(f) <- new.env()
+  environment(f)$mu = mu
+  environment(f)$b = b
+  return (f)
+}
+
+# mahalanobisRegionsX <- function(x, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), col = "black"){
+#   c <- c(0,0)
+#   for (i in 1:nrow(x)){
+#     c <- c + x[i,]
+#   }
+#   mu <- c / nrow(x)
+#   
+#   mahalanobisRegions(mu, cov(x), col)
+# }
+# 
+# mahalanobisRegions <- function(mu, s, depths = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), col = "black"){
+#   sigma.inv <- solve(s)
+#   for (i in 1:length(depths)){
+#     ellipsem(mu = mu, amat = sigma.inv, c2 = 1/depths[i] - 1, showcentre = F, col = col)
+#   }
+# }
+
+depth.Mahalanobis <- function(x, data, mah.estimate = "moment", mah.parMcd = 0.75){
+  if (mah.estimate == "moment") s = solve(cov(data))
+  else if (mah.estimate == "MCD") s = solve(covMcd(data, alpha = mah.parMcd)$cov)
+  else stop ("Wrong parameter 'estimate'")
+  
+  if (is.matrix(x) || is.data.frame(x)) {
+    nx = nrow(x)
+    if (ncol(x) != ncol(data))
+      stop("Wrong dimension of x")
+  }
+  else if (is.vector(x)) {
+    nx = 1
+    if (length(x) != ncol(data))
+      stop("Wrong dimension of x")
+  } else stop("Wrong type of x")
+  
+#  if (mah.estimate == "MCD"){     # MCD in c++ is much slower
+    depths <- .Mahalanobis_depth(x, center = colMeans(data), sigma = s)
+    return (depths)
+#  }
+  
+  points <- as.vector(t(data))
+  objects <- as.vector(t(x))
+  depths <- .C("MahalanobisDepth", 
+           as.double(points), 
+           as.double(objects), 
+           as.integer(nrow(data)), 
+           as.integer(nx), 
+           as.integer(ncol(data)), 
+           as.double(mah.parMcd),
+           depths=double(nx))$depths
+  
+  return (depths)
+}
+
+depth.space.Mahalanobis <- function(data, cardinalities, mah.estimate = "moment", mah.parMcd = 0.75){
+  if (is.data.frame(data))
+    data <- data.matrix(data)
+  if (!is.numeric(data)
+      || !is.matrix(data) 
+      || ncol(data) < 2){
+    stop("Argument \"data\" should be a numeric matrix of at least 2-dimensional data")
+  }
+  if (!is.vector(cardinalities, mode = "numeric") 
+      || is.na(min(cardinalities)) 
+      || sum(.is.wholenumber(cardinalities)) != length(cardinalities) 
+      || min(cardinalities) <= 0 
+      || sum(cardinalities) != nrow(data)){
+    stop("Argument \"cardinalities\" should be a vector of cardinalities of the classes in \"data\" ")
+  }
+  if (sum(cardinalities < ncol(data) + 1) != 0){
+    stop("Not in all classes sufficiently enough objetcs")
+  }
+  
+  depth.space <- NULL
+  for (i in 1:length(cardinalities)){
+    pattern <- data[(1 + sum(cardinalities[0:(i - 1)])):sum(cardinalities[1:i]),]
+    pattern.depths <- depth.Mahalanobis (data, pattern, mah.estimate, mah.parMcd)
+    depth.space <- cbind(depth.space, pattern.depths, deparse.level = 0)
+  }
+  
+  return (depth.space)
+}
diff --git a/R/plot.functional.r b/R/plot.functional.r
new file mode 100644
index 0000000..e215379
--- /dev/null
+++ b/R/plot.functional.r
@@ -0,0 +1,66 @@
+plot.functional <- function(x, main = "Functional data", xlab = "args", ylab = "vals", colors = c("red", "blue", "green", "black", "orange", "pink"), ...) {
+  
+  if(main == "Functional data" && !is.null(x$name))
+    main = x$name
+  if(xlab == "args" && !is.null(x$args))
+    xlab = x$args
+  if(ylab == "vals" && !is.null(x$vals))
+    ylab = x$vals
+  
+  ylims = matrix(unlist(lapply(x$dataf, function(e) (range(e$vals)))), ncol = 2, byrow = TRUE)
+  plot(0, type="n", xlim=range(x$dataf[[1]]$args), ylim=c(min(ylims[,1]), max(ylims[,2])), 
+       xlab=xlab, ylab=ylab, 
+       main = main, ...)
+  grid()
+  
+  if (!is.null(x$labels))
+    labs = sort(unlist(unique(x$labels)))
+  else 
+    labs = NULL
+  
+  for (i in 1:length(x$dataf)){
+    if (!is.null(labs))
+      ind = match(x$labels[[i]],labs)
+    else
+      ind = 1
+    lineColor <- colors[ind]
+    
+    lines(x$dataf[[i]]$args, x$dataf[[i]]$vals, col=lineColor)
+  }
+}
+
+lines.functional <- function(x, colors = c("red", "blue", "green", "black", "orange", "pink"), ...) {
+  
+  if (!is.null(x$labels))
+    labs = sort(unlist(unique(x$labels)))
+  else 
+    labs = NULL
+  
+  for (i in 1:length(x$dataf)){
+    if (!is.null(labs))
+      ind = match(x$labels[[i]],labs)
+    else
+      ind = 1
+    lineColor <- colors[ind]
+    
+    lines(x$dataf[[i]]$args, x$dataf[[i]]$vals, col=lineColor, ...)
+  }
+}
+
+points.functional <- function(x, colors = c("red", "blue", "green", "black", "orange", "pink"), ...) {
+  
+  if (!is.null(x$labels))
+    labs = sort(unlist(unique(x$labels)))
+  else 
+    labs = NULL
+  
+  for (i in 1:length(x$dataf)){
+    if (!is.null(labs))
+      ind = match(x$labels[[i]],labs)
+    else
+      ind = 1
+    pointColor <- colors[ind]
+    
+    points(x$dataf[[i]]$args, x$dataf[[i]]$vals, col=pointColor, ...)
+  }
+}
\ No newline at end of file
diff --git a/R/qda.r b/R/qda.r
new file mode 100644
index 0000000..31f17c5
--- /dev/null
+++ b/R/qda.r
@@ -0,0 +1,10 @@
+qda.train <- function(data){
+  new.frm <- data.frame(data)
+  z <- qda(formula=as.formula(paste("X", ncol(data), " ~ .", sep="")), data = new.frm)#, prior = rep(1, dimension)/dimension)
+  return (z)
+}
+
+qda.classify <- function(objects, qda){
+  z <- predict(qda, data.frame(objects))$class
+  return (z)
+}
diff --git a/R/routines.r b/R/routines.r
new file mode 100644
index 0000000..d47710c
--- /dev/null
+++ b/R/routines.r
@@ -0,0 +1,49 @@
+is.numeric_data.frame <- function(x){
+  if (is.data.frame(x) && all(sapply(x,base::is.numeric)))
+    return (T)
+  return (F)
+}
+
+is.numeric <- function(x){
+  if (base::is.numeric(x))
+    return (T)
+  if (is.data.frame(x) && all(sapply(x,base::is.numeric)))
+    return (T)
+  return (F)
+}
+
+resetPar <- function() {
+  dev.new()
+  op <- par(no.readonly = TRUE)
+  dev.off()
+  op
+}
+
+
+tryCatchCapture <- function(expr, warn = T, err = T) {
+  val <- NULL
+  myWarnings <- NULL
+  wHandler <- function(w) {
+    myWarnings <<- c(myWarnings, w$message)
+    invokeRestart("muffleWarning")
+  }
+  myError <- NULL
+  eHandler <- function(e) {
+    myError <<- e$message
+    NULL
+  }
+  if(warn && err){
+    val <- tryCatch(withCallingHandlers(expr, warning = wHandler), error = eHandler)
+    return(list(value = val, warnings = myWarnings, error=myError))
+  }
+  if(warn){
+    val <- tryCatch(withCallingHandlers(expr, warning = wHandler))
+    return(list(value = val, warnings = myWarnings))
+  }
+  if(err){
+    val <- tryCatch(expr, error = eHandler)
+    return(list(value = val, error=myError))
+  }
+  val <- expr
+  return(list(value = val))
+}
diff --git a/R/separator.polynomial.r b/R/separator.polynomial.r
new file mode 100644
index 0000000..64228b0
--- /dev/null
+++ b/R/separator.polynomial.r
@@ -0,0 +1,177 @@
+
+.ddalpha.learn.polynomial <- function(ddalpha){
+  # Separating (calculating extensions and normals)
+  counter <- 1
+  # Determining multi-class behaviour
+  if (ddalpha$methodAggregation == "majority"){
+    for (i in 1:(ddalpha$numPatterns - 1)){
+      for (j in (i + 1):ddalpha$numPatterns){
+        # Creating a classifier
+        polynomial <- .polynomial_learn_C(ddalpha$maxDegree, 
+                                   rbind(ddalpha$patterns[[i]]$depths, 
+                                         ddalpha$patterns[[j]]$depths), 
+                                   ddalpha$patterns[[i]]$cardinality, 
+                                   ddalpha$patterns[[j]]$cardinality, 
+                                   ddalpha$numChunks, ddalpha$seed)
+ # DEBUG       
+ if (F){
+        print(polynomial$coefficients)
+        print(GetEmpiricalRisk (polynomial$coefficients,
+                          rbind(ddalpha$patterns[[i]]$depths, ddalpha$patterns[[j]]$depths), 
+                          ddalpha$patterns[[i]]$cardinality, 
+                          ddalpha$patterns[[j]]$cardinality))
+      }  
+        # Adding the classifier to the list of classifiers
+        ddalpha$classifiers[[counter]] <- 
+          list(
+            index          = counter,
+            index1         = i,
+            index2         = j,
+            polynomial     = polynomial$coefficients,
+            degree         = polynomial$degree,
+            axis           = polynomial$axis)
+        
+        counter <- counter + 1
+      }
+    }
+    ddalpha$numClassifiers <- counter - 1
+  }
+  if (ddalpha$methodAggregation == "sequent"){
+    for (i in 1:ddalpha$numPatterns){
+      anotherClass <- NULL
+      for (j in 1:ddalpha$numPatterns){
+        if (j != i){
+          anotherClass <- rbind(anotherClass, ddalpha$patterns[[j]]$depths)
+        }
+      }
+      polynomial <- .polynomial_learn_C(ddalpha$maxDegree, rbind(ddalpha$patterns[[i]]$depths, anotherClass), 
+                                        ddalpha$patterns[[i]]$cardinality, nrow(anotherClass), ddalpha$numChunks, ddalpha$seed)
+
+      # Adding the classifier to the list of classifiers
+      ddalpha$classifiers[[i]] <- 
+        list(index          = counter, 
+             index1         = i, 
+             index2         = -1, 
+             polynomial     = polynomial$coefficients,
+             degree         = polynomial$degree,
+             axis           = polynomial$axis)
+    }
+    ddalpha$numClassifiers <- ddalpha$numPatterns
+  }
+  
+  return (ddalpha)
+}
+
+################################################################################
+# Functions for intermediate calculations are presented below
+################################################################################
+
+.polynomial_learn_C <- function(maxDegree, data, numClass1, numClass2, numChunks, seed){
+  points <- as.vector(t(data))
+  numPoints <- numClass1 + numClass2
+  dimension <- ncol(data)
+  cardinalities <- c(numClass1, numClass2)
+  upToPower <- maxDegree
+  minFeatures <- 2
+  maxExtDimension <- (factorial(dimension + maxDegree) / (factorial(dimension)*factorial(maxDegree))) - 1;
+  
+
+  res <- .C("PolynomialLearnCV", 
+          as.double(points), 
+          as.integer(numPoints), 
+          as.integer(dimension), 
+          as.integer(cardinalities),  
+          as.integer(upToPower), 
+          as.integer(numChunks), 
+          as.integer(seed),
+          degree = integer(1),
+          axis = integer(1),
+          polynomial=double(upToPower))
+  
+  degree <- res$degree
+  axis <- res$axis
+  polynomial <- res$polynomial[1:degree]
+  
+  return(list(coefficients = polynomial, axis = axis, degree = degree))
+}
+
+GetNumsErrors <- function(polynomial, depths, numClass1, numClass2){
+  # Calculates the number of classification error for two classes on the
+  # basis of given depths
+  # 
+  # Args:
+  #   polynomial: Polynomial as a vector of coefficients starting with the 
+  #               first degree (a0 = 0 always)
+  #   depths:     nx2 matrix of depths, where each column contains the depths
+  #               against the corresponding class
+  #   numClass1:  Number of points belonging to the first class
+  #   numClass2:  Number of points belonging to the second class
+  # Returns:
+  #   Vector containing number of errors of the points from the firts and 
+  #   the second class
+  degree <- length(polynomial)
+  numErrors1 <- 0
+  if(numClass1 != 0){
+    for(i in 1:numClass1){      
+      val <- depths[i,1]
+      res <- 0
+      for(j in 1:degree){res <- res + polynomial[j]*val^j}
+      if(depths[i,2] > res){
+        numErrors1 <- numErrors1 + 1
+      }
+    }
+  }
+  numErrors2 <- 0
+  if(numClass2 != 0){
+    for(i in (numClass1 + 1):(numClass1 + numClass2)){
+      val <- depths[i,1]
+      res <- 0
+      for(j in 1:degree){res <- res + polynomial[j]*val^j}
+      if(depths[i,2] < res){
+        numErrors2 <- numErrors2 + 1
+      }
+    }
+  }
+  return(c(numErrors1, numErrors2))
+}
+
+GetEmpiricalRiskSmoothed <- function(polynomial, depths, numClass1, numClass2){
+  res = (colSums(sapply(depths[,1], '^', (1:length(polynomial)))*polynomial) - depths[,2])*c(rep(-1, numClass1), rep(1, numClass2))
+  risk = sum(1/(1 + exp(-100*(res))))
+  return (risk/(numClass1 + numClass2))
+}
+
+GetEmpiricalRisk <- function(polynomial, depths, numClass1, numClass2){
+  # Calculates the empirical risk for two classes on the basis of given depths
+  # 
+  # Args:
+  #   polynomial: Polynomial as a vector of coefficients starting with the 
+  #               first degree (a0 = 0 always)
+  #   depths:     nx2 matrix of depths, where each column contains the depths
+  #               against the corresponding class
+  #   numClass1:  Number of points belonging to the first class
+  #   numClass2:  Number of points belonging to the second class
+  # Returns:
+  #   Empirical risk
+  risk1 <- 0
+  degree <- length(polynomial)
+  for(i in 1:numClass1){
+    val <- depths[i,1]
+    res <- 0
+    for(j in 1:degree){res <- res + polynomial[j]*val^j}
+    if(depths[i,2] > res){
+      risk1 <- risk1 + 1
+    }
+  }
+  risk2 <- 0
+  for(i in (numClass1 + 1):(numClass1 + numClass2)){
+    val <- depths[i,1]
+    res <- 0
+    for(j in 1:degree){res <- res + polynomial[j]*val^j}
+    if(depths[i,2] < res){
+      risk2 <- risk2 + 1
+    }
+  }
+  risk <- (risk1 + risk2)/(numClass1 + numClass2)
+  return(risk)
+}
diff --git a/data/baby.txt.gz b/data/baby.txt.gz
new file mode 100644
index 0000000..bad162f
Binary files /dev/null and b/data/baby.txt.gz differ
diff --git a/data/banknoten.txt.gz b/data/banknoten.txt.gz
new file mode 100644
index 0000000..432ffb9
Binary files /dev/null and b/data/banknoten.txt.gz differ
diff --git a/data/biomed.txt.gz b/data/biomed.txt.gz
new file mode 100644
index 0000000..4dc3e3b
Binary files /dev/null and b/data/biomed.txt.gz differ
diff --git a/data/bloodtransfusion.txt.gz b/data/bloodtransfusion.txt.gz
new file mode 100644
index 0000000..f3b8063
Binary files /dev/null and b/data/bloodtransfusion.txt.gz differ
diff --git a/data/breast_cancer_wisconsin.txt.gz b/data/breast_cancer_wisconsin.txt.gz
new file mode 100644
index 0000000..e7e3a31
Binary files /dev/null and b/data/breast_cancer_wisconsin.txt.gz differ
diff --git a/data/bupa.txt.gz b/data/bupa.txt.gz
new file mode 100644
index 0000000..73f578b
Binary files /dev/null and b/data/bupa.txt.gz differ
diff --git a/data/chemdiab_1vs2.txt.gz b/data/chemdiab_1vs2.txt.gz
new file mode 100644
index 0000000..780090e
Binary files /dev/null and b/data/chemdiab_1vs2.txt.gz differ
diff --git a/data/chemdiab_1vs3.txt.gz b/data/chemdiab_1vs3.txt.gz
new file mode 100644
index 0000000..460a486
Binary files /dev/null and b/data/chemdiab_1vs3.txt.gz differ
diff --git a/data/chemdiab_2vs3.txt.gz b/data/chemdiab_2vs3.txt.gz
new file mode 100644
index 0000000..2d2630c
Binary files /dev/null and b/data/chemdiab_2vs3.txt.gz differ
diff --git a/data/cloud.txt.gz b/data/cloud.txt.gz
new file mode 100644
index 0000000..4f9e48f
Binary files /dev/null and b/data/cloud.txt.gz differ
diff --git a/data/crabB_MvsF.txt.gz b/data/crabB_MvsF.txt.gz
new file mode 100644
index 0000000..f46ffc0
Binary files /dev/null and b/data/crabB_MvsF.txt.gz differ
diff --git a/data/crabF_BvsO.txt.gz b/data/crabF_BvsO.txt.gz
new file mode 100644
index 0000000..9561f14
Binary files /dev/null and b/data/crabF_BvsO.txt.gz differ
diff --git a/data/crabM_BvsO.txt.gz b/data/crabM_BvsO.txt.gz
new file mode 100644
index 0000000..5614e88
Binary files /dev/null and b/data/crabM_BvsO.txt.gz differ
diff --git a/data/crabO_MvsF.txt.gz b/data/crabO_MvsF.txt.gz
new file mode 100644
index 0000000..3cb44f2
Binary files /dev/null and b/data/crabO_MvsF.txt.gz differ
diff --git a/data/crab_BvsO.txt.gz b/data/crab_BvsO.txt.gz
new file mode 100644
index 0000000..0488cc3
Binary files /dev/null and b/data/crab_BvsO.txt.gz differ
diff --git a/data/crab_MvsF.txt.gz b/data/crab_MvsF.txt.gz
new file mode 100644
index 0000000..bddb332
Binary files /dev/null and b/data/crab_MvsF.txt.gz differ
diff --git a/data/cricket_CvsP.txt.gz b/data/cricket_CvsP.txt.gz
new file mode 100644
index 0000000..16b6258
Binary files /dev/null and b/data/cricket_CvsP.txt.gz differ
diff --git a/data/diabetes.txt.gz b/data/diabetes.txt.gz
new file mode 100644
index 0000000..48f6110
Binary files /dev/null and b/data/diabetes.txt.gz differ
diff --git a/data/ecoli_cpvsim.txt.gz b/data/ecoli_cpvsim.txt.gz
new file mode 100644
index 0000000..749b6e5
Binary files /dev/null and b/data/ecoli_cpvsim.txt.gz differ
diff --git a/data/ecoli_cpvspp.txt.gz b/data/ecoli_cpvspp.txt.gz
new file mode 100644
index 0000000..aaf0cc1
Binary files /dev/null and b/data/ecoli_cpvspp.txt.gz differ
diff --git a/data/ecoli_imvspp.txt.gz b/data/ecoli_imvspp.txt.gz
new file mode 100644
index 0000000..581a0a0
Binary files /dev/null and b/data/ecoli_imvspp.txt.gz differ
diff --git a/data/gemsen_MvsF.txt.gz b/data/gemsen_MvsF.txt.gz
new file mode 100644
index 0000000..51c9f70
Binary files /dev/null and b/data/gemsen_MvsF.txt.gz differ
diff --git a/data/glass.txt.gz b/data/glass.txt.gz
new file mode 100644
index 0000000..61e313b
Binary files /dev/null and b/data/glass.txt.gz differ
diff --git a/data/groessen_MvsF.txt.gz b/data/groessen_MvsF.txt.gz
new file mode 100644
index 0000000..ca0f3c7
Binary files /dev/null and b/data/groessen_MvsF.txt.gz differ
diff --git a/data/haberman.txt.gz b/data/haberman.txt.gz
new file mode 100644
index 0000000..42b9d8a
Binary files /dev/null and b/data/haberman.txt.gz differ
diff --git a/data/heart.txt.gz b/data/heart.txt.gz
new file mode 100644
index 0000000..9dcb3d9
Binary files /dev/null and b/data/heart.txt.gz differ
diff --git a/data/hemophilia.txt.gz b/data/hemophilia.txt.gz
new file mode 100644
index 0000000..7077838
Binary files /dev/null and b/data/hemophilia.txt.gz differ
diff --git a/data/indian_liver_patient_1vs2.txt.gz b/data/indian_liver_patient_1vs2.txt.gz
new file mode 100644
index 0000000..a2b37ab
Binary files /dev/null and b/data/indian_liver_patient_1vs2.txt.gz differ
diff --git a/data/indian_liver_patient_FvsM.txt.gz b/data/indian_liver_patient_FvsM.txt.gz
new file mode 100644
index 0000000..2d585e7
Binary files /dev/null and b/data/indian_liver_patient_FvsM.txt.gz differ
diff --git a/data/iris_setosavsversicolor.txt.gz b/data/iris_setosavsversicolor.txt.gz
new file mode 100644
index 0000000..ba3d61f
Binary files /dev/null and b/data/iris_setosavsversicolor.txt.gz differ
diff --git a/data/iris_setosavsvirginica.txt.gz b/data/iris_setosavsvirginica.txt.gz
new file mode 100644
index 0000000..2e211ad
Binary files /dev/null and b/data/iris_setosavsvirginica.txt.gz differ
diff --git a/data/iris_versicolorvsvirginica.txt.gz b/data/iris_versicolorvsvirginica.txt.gz
new file mode 100644
index 0000000..86da60c
Binary files /dev/null and b/data/iris_versicolorvsvirginica.txt.gz differ
diff --git a/data/irish_ed_MvsF.txt.gz b/data/irish_ed_MvsF.txt.gz
new file mode 100644
index 0000000..8958d4e
Binary files /dev/null and b/data/irish_ed_MvsF.txt.gz differ
diff --git a/data/kidney.txt.gz b/data/kidney.txt.gz
new file mode 100644
index 0000000..1cb2613
Binary files /dev/null and b/data/kidney.txt.gz differ
diff --git a/data/pima.txt.gz b/data/pima.txt.gz
new file mode 100644
index 0000000..250b323
Binary files /dev/null and b/data/pima.txt.gz differ
diff --git a/data/plasma_retinol_MvsF.txt.gz b/data/plasma_retinol_MvsF.txt.gz
new file mode 100644
index 0000000..c036393
Binary files /dev/null and b/data/plasma_retinol_MvsF.txt.gz differ
diff --git a/data/segmentation.txt.gz b/data/segmentation.txt.gz
new file mode 100644
index 0000000..0d4be05
Binary files /dev/null and b/data/segmentation.txt.gz differ
diff --git a/data/socmob_IvsNI.txt.gz b/data/socmob_IvsNI.txt.gz
new file mode 100644
index 0000000..ac54cdd
Binary files /dev/null and b/data/socmob_IvsNI.txt.gz differ
diff --git a/data/socmob_WvsB.txt.gz b/data/socmob_WvsB.txt.gz
new file mode 100644
index 0000000..18633eb
Binary files /dev/null and b/data/socmob_WvsB.txt.gz differ
diff --git a/data/tae.txt.gz b/data/tae.txt.gz
new file mode 100644
index 0000000..56624c2
Binary files /dev/null and b/data/tae.txt.gz differ
diff --git a/data/tennis_MvsF.txt.gz b/data/tennis_MvsF.txt.gz
new file mode 100644
index 0000000..2642600
Binary files /dev/null and b/data/tennis_MvsF.txt.gz differ
diff --git a/data/tips_DvsN.txt.gz b/data/tips_DvsN.txt.gz
new file mode 100644
index 0000000..8ea745b
Binary files /dev/null and b/data/tips_DvsN.txt.gz differ
diff --git a/data/tips_MvsF.txt.gz b/data/tips_MvsF.txt.gz
new file mode 100644
index 0000000..f3da878
Binary files /dev/null and b/data/tips_MvsF.txt.gz differ
diff --git a/data/uscrime_SvsN.txt.gz b/data/uscrime_SvsN.txt.gz
new file mode 100644
index 0000000..916bec5
Binary files /dev/null and b/data/uscrime_SvsN.txt.gz differ
diff --git a/data/vertebral_column.txt.gz b/data/vertebral_column.txt.gz
new file mode 100644
index 0000000..7dac678
Binary files /dev/null and b/data/vertebral_column.txt.gz differ
diff --git a/data/veteran_lung_cancer.txt.gz b/data/veteran_lung_cancer.txt.gz
new file mode 100644
index 0000000..285b510
Binary files /dev/null and b/data/veteran_lung_cancer.txt.gz differ
diff --git a/data/vowel_MvsF.txt.gz b/data/vowel_MvsF.txt.gz
new file mode 100644
index 0000000..7f5289e
Binary files /dev/null and b/data/vowel_MvsF.txt.gz differ
diff --git a/data/wine_1vs2.txt.gz b/data/wine_1vs2.txt.gz
new file mode 100644
index 0000000..4a5c7ce
Binary files /dev/null and b/data/wine_1vs2.txt.gz differ
diff --git a/data/wine_1vs3.txt.gz b/data/wine_1vs3.txt.gz
new file mode 100644
index 0000000..cefacdd
Binary files /dev/null and b/data/wine_1vs3.txt.gz differ
diff --git a/data/wine_2vs3.txt.gz b/data/wine_2vs3.txt.gz
new file mode 100644
index 0000000..5e43e10
Binary files /dev/null and b/data/wine_2vs3.txt.gz differ
diff --git a/inst/CITATION b/inst/CITATION
new file mode 100644
index 0000000..40f7c20
--- /dev/null
+++ b/inst/CITATION
@@ -0,0 +1,15 @@
+citHeader("To cite ddalpha in publications use:")
+
+citEntry(entry = "Article",
+  title        = "Depth and depth-based classification with R-package ddalpha",
+  author       = personList(as.person("Oleksii Pokotylo"),
+                            as.person("Pavlo Mozharovskyi"),
+                            as.person("Rainer Dyckerhoff")),
+  journal      = "arXiv:1608.04109",
+  year         = "2016",
+  
+  textVersion  = 
+  paste("Pokotylo, O., Mozharovskyi, P., and Dyckerhoff, R. (2016).",
+        "Depth and depth-based classification with R-package ddalpha",
+        "arXiv:1608.04109")
+)
diff --git a/man/Cmetric.Rd b/man/Cmetric.Rd
new file mode 100644
index 0000000..c468f7b
--- /dev/null
+++ b/man/Cmetric.Rd
@@ -0,0 +1,49 @@
+\name{Cmetric}
+\alias{Cmetric}
+\title{Fast Computation of the Uniform Metric for Sets of Functional Data}
+\usage{
+Cmetric(A, B)
+}
+\arguments{
+\item{A}{Functions of the first set, represented by a matrix of their functional values of 
+size \code{m*d}. \code{m} stands for the number of functions, \code{d}
+is the number of the equi-distant points in the domain of the data at which the functional
+values of the \code{m} functions are evaluated.}
+
+\item{B}{Functions of the second set, represented by a matrix of their functional values of 
+size \code{n*d}. \code{n} stands for the number of functions, \code{d}
+is the number of the equi-distant points in the domain of the data at which the functional
+values of the \code{n} functions are evaluated. The grid of observation points for the 
+functions \code{A} and \code{B} must be the same.}
+}
+\value{
+A symmetric matrix of the distances of the functions of size \code{m*n}.
+}
+\description{
+Returns the matrix of \eqn{C} (uniform) distances between two sets of functional data.
+}
+\details{
+For two sets of functional data of sizes \code{m} and \code{n}
+represented by matrices of their functional values, 
+this function returns the symmetric matrix of size \code{m*n} whose entry in the
+\code{i}-th row and \code{j}-th column is the approximated \eqn{C} (uniform) distance of the 
+\code{i}-th function from the first set, and the \code{j}-th function from the second set.
+This function is utilized in the computation of the h-mode depth.
+}
+\examples{
+datapop = dataf2rawfd(dataf.population()$dataf,range=c(1950,2015),d=66)
+A = datapop[1:20,]
+B = datapop[21:50,]
+Cmetric(A,B)
+
+}
+\seealso{
+\code{\link{depthf.hM}}
+
+\code{\link{dataf2rawfd}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{functional}
+\keyword{metric}
diff --git a/man/CustomMethods.Rd b/man/CustomMethods.Rd
new file mode 100644
index 0000000..c4892e0
--- /dev/null
+++ b/man/CustomMethods.Rd
@@ -0,0 +1,369 @@
+\name{Custom Methods}
+\alias{Custom Methods}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{
+Using Custom Depth Functions and Classifiers
+}
+\description{
+To use a custom depth function or classifier one has to implement three functions: parameters validator, learning and calculating functions.
+
+}
+%\usage{
+%ddalpha.train(depth = "MyDepth", separator = "MyClassifier", ...)
+%}
+%- maybe also 'usage' for other objects documented here.
+%\arguments{
+%  \item{x}{
+%%     ~~Describe \code{x} here~~
+%}
+%}
+\details{
+
+\bold{To define a depth function:}
+\describe{
+  \item{.<NAME>_validate}{
+  validates parameters passed to \code{\link{ddalpha.train}} and passes them to the \code{ddalpha} object.
+  
+  \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and settings (mandatory)}\cr
+    \code{<custom parameters>} \tab  {parameters that are passed to the user-defined method}\cr
+    \code{...} \tab {other parameters (mandatory)}
+    %}  \tabular{ll}{
+    \cr
+    OUT:\cr 
+    \code{list()} \tab {list of output parameters, after the validation is finished, these parameters are stored in the \code{ddalpha} object}
+    }
+  }
+
+  \item{.<NAME>_learn}{
+  trains the depth
+  
+  \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and settings}
+    %}  \tabular{ll}{
+    \cr
+  MODIFIES:\cr
+  \code{ddalpha} \tab store the calculated statistics in the \code{ddalpha} object \cr
+  depths \tab calculate the depths of each pattern, e.g. \cr \tab \code{for (i in 1:ddalpha$numPatterns) ddalpha$patterns[[i]]$depths = .<NAME>_depths(ddalpha, ddalpha$patterns[[i]]$points)}
+  %}  \tabular{ll}{
+  \cr
+  OUT:\cr
+    \code{ddalpha} \tab {the updated \code{ddalpha} object}
+    }
+  
+  }
+  \item{.<NAME>_depths}{
+  calculates the depths
+  
+    \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and settings} \cr
+    \code{objects} \tab {the objects for which the depths are calculated} \cr
+    \cr
+    OUT:\cr
+      \code{depths} \tab {the calculated depths for each object (rows), with respect to each class (cols)}
+      }
+  }
+}
+Usage: \code{ddalpha.train(data, depth = "<NAME>", <custom parameters>, ...)}
+
+\verb{
+#### Custom depths ####
+
+.MyDepth_validate  <- function(ddalpha, mydepth.parameter = "value", ...){ 
+  print("MyDepth validating")
+  # validate the parameters
+  if (!is.valid(mydepth.parameter)){
+    warning("Argument \"mydepth.parameter\" not specified correctly. Default value is used")
+    mydepth.parameter = "value"
+    # or stop("Argument \"mydepth.parameter\" not specified correctly.")
+  }
+  
+  # the values from the return list will be stored in the ddalpha object
+  return (list(mydepthpar = mydepth.parameter))
+}
+
+.MyDepth_learn <- function(ddalpha){
+  print("MyDepth learning")
+  
+  #1. Calculate any statistics based on data that .MyDepth_depths needs
+  #   and store them to the ddalpha object: 
+  ddalpha$mydepth.statistic = "some value"
+  
+  #2. Calculate depths for each pattern
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$depths = .MyDepth_depths(ddalpha, ddalpha$patterns[[i]]$points)
+  }
+  
+  return(ddalpha)
+}
+
+.MyDepth_depths <- function(ddalpha, objects){
+  print("MyDepth calculating")
+  depths <- NULL
+  
+  # The depth parameters are accessible in the ddalpha object:
+  mydepth.parameter = ddalpha$mydepth.parameter
+  mydepth.statistic = ddalpha$mydepth.statistic
+  
+  #calculate the depths of the objects w.r.t. each pattern
+  for (i in 1:ddalpha$numPatterns){
+    depth_wrt_i = #calculate depths of the objects, as vector
+    
+    depths <- cbind(depths, depth_wrt_i)
+  }
+    
+  return (depths)
+}
+
+ddalpha.train(data, depth = "MyDepth", ...)
+}
+
+\bold{To define a classifier:}
+\describe{
+  \item{.<NAME>_validate}{
+  validates parameters passed to \code{\link{ddalpha.train}} and passes them to the \code{ddalpha} object
+    \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and settings (mandatory)}\cr
+    \code{<custom parameters>} \tab  {parameters that are passed to the user-defined method}\cr
+    \code{...} \tab {other parameters (mandatory)}
+    \cr
+    OUT:\cr 
+    \code{list()} \tab {list of output parameters, after the validation is finished, these parameters are stored in the \code{ddalpha} object. 
+    
+    In case of a multiclass classifier the validator must return \code{methodSeparatorBinary = F} and/or pass \code{aggregation.method = "none"} to \code{ddalpha.train}}
+    }
+  }
+  \item{.<NAME>_learn}{
+  trains the classifier. Is different for binnary and mylticlass classifiers.
+    \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and settings}\cr
+    \code{index1} \tab {(only for binary) index of the first class}\cr
+    \code{index2} \tab {(only for binary) index of the second class}\cr
+    \code{depths1} \tab {(only for binary) depths of the first class w.r.t. all classes}\cr
+    \code{depths2} \tab {(only for binary) depths of the second class w.r.t. all classes}\cr\cr
+    \tab depths w.r.t. only given classes are received by \code{depths1[,c(index1, index2)]}\cr\cr
+    \tab for the multiclass classifiers the depths are accessible via \code{ddalpha$patterns[[i]]$depths}
+    \cr
+    OUT:\cr 
+    \code{classifier} \tab { the trained \code{classifier} object}
+    }
+  }
+  \item{.<NAME>_classify}{
+  classifies the objects
+   \tabular{ll}{IN:\cr
+    \code{ddalpha} \tab {the ddalpha object, containing the data and global settings} \cr
+    \code{classifier} \tab {the previously trained classifier}\cr
+    \code{objects} \tab {the objects (depths) that are classified} \cr
+    \cr
+    OUT:\cr
+      \code{result} \tab { a vector with classification results}\cr
+        \tab {(binary) the objects from class \code{"classifier$index1"} get positive values} \cr
+        \tab {(multiclass) the objects get the numbers of patterns in \code{ddalpha}}
+    }
+      
+  }
+}
+Usage: \code{ddalpha.train(data, separator = "<NAME>", ...)}
+
+\verb{
+#### Custom classifiers ####
+
+
+.MyClassifier_validate  <- function(ddalpha, my.parameter = "value", ...){
+  print("MyClassifier validating")
+  # validate the parameters
+  ...
+  
+  # always include methodSeparatorBinary. 
+  # TRUE for the binary classifier, FALSE otherwise
+  return(list(methodSeparatorBinary = T, 
+              my.parameter = my.parameter
+              ))
+}
+
+# a binary classifier 
+# the package takes care of the voting procedures. Just train it as if there are only two classes
+.MyClassifier_learn <- function(ddalpha, index1, index2, depths1, depths2){
+  print("MyClassifier (binary) learning")
+  
+  # The parameters are accessible in the ddalpha object:
+  my.parameter = ddalpha$my.parameter
+  
+  #depths w.r.t. only given classes are received by
+  depths1[,c(index1, index2)]
+  depths2[,c(index1, index2)]
+  
+  # train the classifier
+  classifier <-  ...
+  
+  #return the needed values in a list, e.g.
+  return(list(
+    coefficients  = classifier$coefficients,
+    ... ))
+}
+
+# a multiclass classifier 
+.MyClassifier_learn <- function(ddalpha){
+  print("MyClassifier (multiclass) learning")
+  
+  # access the data through the ddalpha object, e.g.
+  for (i in 1:ddalpha$numPatterns){
+    depth  <- ddalpha$patterns[[i]]$depths
+    number <- ddalpha$patterns[[i]]$cardinality
+    ...
+  }
+  
+  # train the classifier
+  classifier <-  ...
+  
+  # return the classifier
+  return(classifier)
+}
+
+# the interface of the classify function is equal for binary and multiclass classifiers
+.MyClassifier_classify <- function(ddalpha, classifier, depths){
+  print("MyClassifier classifying")
+  
+  # The global parameters are accessible in the ddalpha object:
+  my.parameter = ddalpha$my.parameter
+  # The parameters generated by .MyClassifier_learn are accessible in the classifier object:
+  classifier$coefficients
+  
+  # here are the depths w.r.t. the first class
+  depths[,classifier$index1]
+  # here are the depths w.r.t. the second class
+  depths[,classifier$index2]
+  
+  # fill results in a vector, so that:
+  # (binary) the objects from class "classifier$index1" get positive values
+  # (multiclass) the objects get the numbers of patterns in ddalpha
+  result <- ...
+  
+  return(result)
+}
+
+ddalpha.train(data, separator = "MyClassifier", ...)
+}
+}
+%\value{
+%%  ~Describe the value returned
+%%  If it is a LIST, use
+%%  \item{comp1 }{Description of 'comp1'}
+%%  \item{comp2 }{Description of 'comp2'}
+%% ...
+%}
+%\references{
+%% ~put references to the literature/web site here ~
+%}
+%\author{
+%%  ~~who you are~~
+%}
+
+%% ~Make other sections like Warning with \section{Warning }{....} ~
+
+\seealso{
+\code{\link{ddalpha.train}}
+}
+\examples{
+
+\dontrun{
+
+#### example:  Euclidean depth ####
+
+#.Euclidean_validate is basically not needed
+
+.Euclidean_learn <- function(ddalpha){
+  print("Euclidean depth learning")
+  
+  #1. Calculate any statistics based on data that .MyDepth_depths needs
+  #   and store them to the ddalpha object: 
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$center <- colMeans(ddalpha$patterns[[i]]$points)
+  }
+  
+  #2. Calculate depths for each pattern
+  for (i in 1:ddalpha$numPatterns){
+    ddalpha$patterns[[i]]$depths = .Euclidian_depths(ddalpha, ddalpha$patterns[[i]]$points)
+  }
+  
+  return(ddalpha)
+}
+
+.Euclidean_depths <- function(ddalpha, objects){
+  print("Euclidean depth calculating")
+  depths <- NULL
+  
+  #calculate the depths of the objects w.r.t. each pattern
+  for (i in 1:ddalpha$numPatterns){
+    # The depth parameters are accessible in the ddalpha object:
+    center = ddalpha$patterns[[i]]$center
+    
+    depth_wrt_i <- 1/(1 + colSums((t(objects) - center)^2))
+    depths <- cbind(depths, depth_wrt_i)
+  }
+  
+  return (depths)
+}
+
+#### example:  binary decision tree ####
+
+library(rpart)
+
+.tree_validate  <- function(ddalpha, ...){
+  print("tree validating")
+  return(list(methodSeparatorBinary = T))
+}
+
+# a binary classifier 
+# the package takes care of the voting procedures. Just train it as if there are only two classes
+.tree_learn <- function(ddalpha, index1, index2, depths1, depths2){
+  print("tree learning")
+  
+  # prepare the data
+  data = as.data.frame(cbind( (rbind(depths1, depths2)), 
+                              c(rep(1, times = nrow(depths1)), rep(-1, times = nrow(depths1)))))
+  names(data) <- paste0("V",seq_len(ncol(data)))
+  names(data)[ncol(data)] <- "O"
+  # train the classifier
+  classifier <- rpart(O~., data = data)
+  
+  #return the needed values in a list, e.g.
+  return(classifier)
+}
+
+# the interface of the classify function is equal for binary and multiclass classifiers
+.tree_classify <- function(ddalpha, classifier, depths){
+  print("tree classifying")
+  
+  # fill results in a vector, so that the objects from class "classifier$index1" get positive values
+  data = as.data.frame(depths)
+  names(data) <- paste0("V",seq_len(ncol(data)))
+  result <- predict(classifier, as.data.frame(depths), type = "vector")
+  
+  return(result)
+}
+
+
+
+
+#### checking ####
+
+library(ddalpha)
+data = getdata("hemophilia")
+
+ddalpha = ddalpha.train(data = data, depth = "Euclidean", separator = "tree")
+c = ddalpha.classify(ddalpha, data[,1:2])
+errors = sum(unlist(c) != data[,3])/nrow(data)
+print(paste("Error rate: ",errors))
+
+# building the depth contours using the custom depth
+depth.contours.ddalpha(ddalpha, asp = T, levels = seq(0.5, 1, length.out = 10))
+
+}
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ depth }
+\keyword{ classif }
+\keyword{ custom }
diff --git a/man/FKS.Rd b/man/FKS.Rd
new file mode 100644
index 0000000..c2a3459
--- /dev/null
+++ b/man/FKS.Rd
@@ -0,0 +1,64 @@
+\name{FKS}
+\alias{FKS}
+\title{Fast Kernel Smoothing}
+\usage{
+FKS(dataf, Tout, kernel = c("uniform", "triangular", "Epanechnikov",
+  "biweight", "triweight", "Gaussian"), m = 51, K = 20)
+}
+\arguments{
+\item{dataf}{A set of functional data given by a \code{dataf} object that are to be smoothed.}
+
+\item{Tout}{vector of values in the domain of the functions at which the
+resulting smoothed function is evaluated}
+
+\item{kernel}{Kernel used for smoothing. Admissible values are \code{uniform}, 
+\code{triangular}, \code{Epanechnikov}, \code{biweight}, \code{triweight} and \code{Gaussian}.
+By default, \code{uniform} is used.}
+
+\item{m}{Number of points in the grid for choosing the cross-validated bandwidth.}
+
+\item{K}{Performs \code{K}-fold cross-validation based on randomly shuffled data.}
+}
+\value{
+A \code{dataf} object corresponding to \code{Tout} of smoothed functional values.
+}
+\description{
+Produces a kernel smoothed version of a function based on
+the vectors given in the input. Bandwidth is selected using cross-validation.
+}
+\details{
+A vector of the same length as \code{Tout}
+corresponding to the values of the
+function produced using kernel smoothing, is provided. Bandwidth is selected using the
+\code{K}-fold cross-validation of randomly shuffled input values.
+}
+\examples{
+d = 10
+T = sort(runif(d))
+X = T^2+ rnorm(d,sd=.1)
+Tout = seq(0,1,length=101)
+
+plot(T,X)
+dataf = list(list(args=T,vals=X))
+data.sm = FKS(dataf,Tout,kernel="Epan")
+lines(data.sm[[1]]$args,data.sm[[1]]$vals,col=2)
+
+datafs = structure(list(dataf=dataf,labels=1:length(dataf)),class="functional")
+plot(datafs)
+points(T,X)
+data.sms = structure(list(dataf=data.sm,labels=1:length(data.sm)),class="functional")
+plot(data.sms)
+
+n = 6
+dataf = list()
+for(i in 1:n) dataf[[i]] = list(args = T<-sort(runif(d)), vals = T^2 + rnorm(d,sd=.1))
+data.sm = FKS(dataf,Tout,kernel="triweight")
+data.sms = structure(list(dataf=data.sm,labels=1:length(data.sm)),class="functional")
+plot(data.sms)
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{functional}
+\keyword{kernel}
+\keyword{smoothing}
diff --git a/man/L2metric.Rd b/man/L2metric.Rd
new file mode 100644
index 0000000..9f6a072
--- /dev/null
+++ b/man/L2metric.Rd
@@ -0,0 +1,49 @@
+\name{L2metric}
+\alias{L2metric}
+\title{Fast Computation of the \eqn{L^2} Metric for Sets of Functional Data}
+\usage{
+L2metric(A, B)
+}
+\arguments{
+\item{A}{Functions of the first set, represented by a matrix of their functional values of 
+size \code{m*d}. \code{m} stands for the number of functions, \code{d}
+is the number of the equi-distant points in the domain of the data at which the functional
+values of the \code{m} functions are evaluated.}
+
+\item{B}{Functions of the second set, represented by a matrix of their functional values of 
+size \code{n*d}. \code{n} stands for the number of functions, \code{d}
+is the number of the equi-distant points in the domain of the data at which the functional
+values of the \code{n} functions are evaluated. The grid of observation points for the 
+functions \code{A} and \code{B} must be the same.}
+}
+\value{
+A symmetric matrix of the distances of the functions of size \code{m*n}.
+}
+\description{
+Returns the matrix of \eqn{L^2} distances between two sets of functional data.
+}
+\details{
+For two sets of functional data of sizes \code{m} and \code{n}
+represented by matrices of their functional values, 
+this function returns the symmetric matrix of size \code{m*n} whose entry in the
+\code{i}-th row and \code{j}-th column is the approximated \eqn{L^2} distance of the 
+\code{i}-th function from the first set, and the \code{j}-th function from the second set.
+This function is utilized in the computation of the h-mode depth.
+}
+\examples{
+datapop = dataf2rawfd(dataf.population()$dataf,range=c(1950,2015),d=66)
+A = datapop[1:20,]
+B = datapop[21:50,]
+L2metric(A,B)
+
+}
+\seealso{
+\code{\link{depthf.hM}}
+
+\code{\link{dataf2rawfd}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{functional}
+\keyword{metric}
diff --git a/man/compclassf.classify.Rd b/man/compclassf.classify.Rd
new file mode 100644
index 0000000..9d0f35f
--- /dev/null
+++ b/man/compclassf.classify.Rd
@@ -0,0 +1,63 @@
+\name{compclassf.classify}
+\alias{compclassf.classify}
+\alias{predict.compclassf}
+\title{
+Classify using Functional Componentwise Classifier
+}
+\description{
+Classifies data using the functional componentwise classifier.
+}
+\usage{
+compclassf.classify(compclassf, objectsf, subset, ...)
+
+\method{predict}{compclassf}(object, objectsf, subset, ...)
+}
+\arguments{
+  \item{compclassf, object}{
+Functional componentwise classifier (obtained by \code{\link{compclassf.train}}).
+}
+  \item{objectsf}{list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be classified.
+}
+  \item{\dots}{
+additional parameters, passed to the classifier, selected with parameter \code{classifier.type} in \code{\link{compclassf.train}}.
+}
+}
+
+
+
+\value{
+List containing class labels.
+}
+\references{
+Delaigle, A., Hall, P., and Bathia, N. (2012). Componentwise classification and clustering of functional data. \emph{Biometrika} \bold{99} 299--313.
+}
+\seealso{
+\code{\link{compclassf.train}} to train the functional componentwise classifier.
+}
+\examples{
+
+\dontrun{
+## load the Growth dataset
+dataf = dataf.growth()
+
+learn = c(head(dataf$dataf, 49), tail(dataf$dataf, 34))
+labels =c(head(dataf$labels, 49), tail(dataf$labels, 34)) 
+test = tail(head(dataf$dataf, 59), 10)    # elements 50:59. 5 girls, 5 boys
+
+c = compclassf.train (learn, labels, classifier.type = "ddalpha")
+
+classified = compclassf.classify(c, test)
+
+print(unlist(classified))
+
+}
+}
+
+\keyword{ functional }
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
\ No newline at end of file
diff --git a/man/compclassf.train.Rd b/man/compclassf.train.Rd
new file mode 100644
index 0000000..0f54d07
--- /dev/null
+++ b/man/compclassf.train.Rd
@@ -0,0 +1,89 @@
+\name{compclassf.train}
+\alias{compclassf.train}
+\title{
+Functional Componentwise Classifier
+}
+\description{
+Trains the functional componentwise classifier
+}
+\usage{
+compclassf.train (dataf, labels, subset,
+                  to.equalize = TRUE, 
+                  to.reduce = TRUE, 
+                  classifier.type = c("ddalpha", "maxdepth", "knnaff", "lda", "qda"), 
+                  ...)
+}
+
+\arguments{
+  \item{dataf}{
+list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{labels}{
+list of output labels of the functional observations
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be used in training the classifier.
+}
+  \item{to.equalize}{
+Adjust the data to have equal (the largest) argument interval.
+}
+  \item{to.reduce}{
+If the data spans a subspace only, project on it (by PCA).
+}
+  \item{classifier.type}{
+the classifier which is used on the transformed space. The default value is 'ddalpha'.
+}
+  \item{\dots}{
+additional parameters, passed to the classifier, selected with parameter \code{classifier.type}.
+}
+}
+\details{
+The finite-dimensional space is directly constructed from the observed values. 
+Delaigle, Hall and Bathia (2012) consider (almost) all sets of discretization points
+that have a given cardinality. 
+
+The usual classifiers are then trained on the constructed finite-dimensional space.
+}
+\value{
+Trained functional componentwise classifier
+%%  If it is a LIST, use
+%%  \item{comp1 }{Description of 'comp1'}
+%%  \item{comp2 }{Description of 'comp2'}
+%% ...
+}
+\references{
+Delaigle, A., Hall, P., and Bathia, N. (2012). Componentwise classification and clustering of functional data. \emph{Biometrika} \bold{99} 299--313.
+}
+
+\seealso{
+ \code{\link{compclassf.classify}} for classification using functional componentwise classifier,
+ 
+ \code{\link{ddalphaf.train}} to train the functional DD-classifier,
+ 
+ \code{\link{dataf.*}} for functional data sets included in the package.
+ 
+}
+\examples{
+
+\dontrun{
+## load the Growth dataset
+dataf = dataf.growth()
+
+learn = c(head(dataf$dataf, 49), tail(dataf$dataf, 34))
+labels =c(head(dataf$labels, 49), tail(dataf$labels, 34)) 
+test = tail(head(dataf$dataf, 59), 10)    # elements 50:59. 5 girls, 5 boys
+
+c = compclassf.train (learn, labels, classifier.type = "ddalpha")
+
+classified = compclassf.classify(c, test)
+
+print(unlist(classified))
+
+}
+}
+
+\keyword{ functional }
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
diff --git a/man/dataf..Rd b/man/dataf..Rd
new file mode 100644
index 0000000..b2e047b
--- /dev/null
+++ b/man/dataf..Rd
@@ -0,0 +1,67 @@
+\name{dataf.*}
+\alias{dataf.*}
+\docType{data}
+\title{
+Functional Data Sets
+}
+\description{
+The functions generate data sets of functional two-dimensional data of two or more classes.
+}
+\usage{
+# dataf.[name]()
+}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates 
+      \describe{
+        \item{\code{args}}{The arguments vector}
+        \item{\code{vals}}{The values vector}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects}
+  }
+}
+\details{
+More details about the datasets in the topics:
+
+\code{\link{dataf.geneexp}}
+
+\code{\link{dataf.growth}}
+
+\code{\link{dataf.medflies}}
+
+\code{\link{dataf.population}}
+
+\code{\link{dataf.population2010}}
+
+\code{\link{dataf.tecator}}
+
+\code{\link{dataf.tecator}}
+
+The following datasets provide simulated data:
+
+\code{\link{dataf.sim.1.CFF07}}
+
+\code{\link{dataf.sim.2.CFF07}}
+
+}
+\seealso{
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the Growth dataset
+dataf = dataf.growth()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+\dontrun{plot.functional(dataf)}
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.geneexp.Rd b/man/dataf.geneexp.Rd
new file mode 100644
index 0000000..05a0d34
--- /dev/null
+++ b/man/dataf.geneexp.Rd
@@ -0,0 +1,61 @@
+\name{dataf.geneexp}
+\alias{dataf.geneexp}
+\docType{data}
+\title{
+Gene Expression Profile Data
+}
+\description{
+A subet of the Drosophila life cycle gene expression data of Arbeitman et al. (2002). The original data set contains 77 gene expression profiles during 58 sequential time points from the embryonic, larval, and pupal periods of the life cycle. The gene expression levels were obtained by a cDNA microarray experiment. 
+}
+\usage{
+dataf.geneexp()
+}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates.
+      \describe{
+        \item{\code{args}}{\bold{Time} - a numeric vector of time periods}
+        \item{\code{vals}}{\bold{Gene Expression Level} - a numeric vector}
+       }
+    }
+    \item{\code{labels}}{ 
+    Biological classifications identified in Arbeitman et al.(2002) (1 = transient early zygotic genes; 2 = muscle-specific genes; 3 = eye-specific genes. )}
+  }
+}
+\source{
+Chiou, J.-M. and Li, P.-L. Functional clustering and identifying substructures of longitudinal data, J. R. Statist. Soc. B, Volume 69 (2007), 679-699
+
+Arbeitman, M.N., Furlong, E.E.M., Imam,F., Johnson, E., Null,B.H., Baker,B.S., Krasnow, M.A., Scott,M.P., Davis,R.W. and White,K.P. (2002) Gene expression during the life cycle of Drosophila melanogaster. Science, 297, 2270-2274.
+
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the dataset
+dataf = dataf.geneexp()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+\dontrun{
+labels = unlist(dataf$labels)
+plot(dataf, 
+  xlab="Time", ylab="Gene Expression Level", 
+  main=paste0("Gene Expression:  1 red (", sum(labels == 1), "), ", 
+            "2 green (", sum(labels == 2), "), ", 
+            "3 blue (", sum(labels == 3), ")"),
+  colors = c("red", "green", "blue"))
+}
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.growth.Rd b/man/dataf.growth.Rd
new file mode 100644
index 0000000..6035432
--- /dev/null
+++ b/man/dataf.growth.Rd
@@ -0,0 +1,65 @@
+\name{dataf.growth}
+\alias{dataf.growth}
+\docType{data}
+\title{
+Berkeley Growth Study Data
+}
+\description{
+The data set contains the heights of 39 boys and 54 girls from age 1 to 18 and the ages at which they were collected.
+}
+\usage{
+dataf.growth()
+}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates 
+      \describe{
+        \item{\code{args}}{\bold{age} - a numeric vector of length 31 giving the ages at which the heights were measured}
+        \item{\code{vals}}{\bold{height} - a numeric vector of heights in centimeters of 39 boys and 54 girls}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects: boy, girl}
+  }
+}
+\details{
+The ages are not equally spaced.
+}
+\source{
+Ramsay, James O., and Silverman, Bernard W. (2006), Functional Data Analysis, 2nd ed., Springer, New York.
+
+Ramsay, James O., and Silverman, Bernard W. (2002), Applied Functional Data Analysis, Springer, New York, ch. 6.
+
+Tuddenham, R. D., and Snyder, M. M. (1954) "Physical growth of California boys and girls from birth to age 18", University of California Publications in Child Development, 1, 183-364.
+
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the Growth dataset
+dataf = dataf.growth()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+\dontrun{
+  labels = unlist(dataf$labels)
+  plot(dataf, 
+    main = paste("Growth: girls red (", sum(labels == "girl"), "),", 
+                      " boys blue (", sum(labels == "boy"), ")", sep=""),
+    xlab="Year", ylab="Height, cm",
+    colors = c("blue", "red")   # in alphabetical order of class labels   
+    )
+}
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.medflies.Rd b/man/dataf.medflies.Rd
new file mode 100644
index 0000000..6bfb0ba
--- /dev/null
+++ b/man/dataf.medflies.Rd
@@ -0,0 +1,69 @@
+\name{dataf.medflies}
+\alias{dataf.medflies}
+\docType{data}
+\title{
+Relationship of Age Patterns of Fecundity to Mortality for Female Medflies.
+}
+\description{
+The data set consists of number of eggs laid daily for each of 1000 medflies (Mediterranean fruit flies, Ceratitis capitata) until time of death. Data were obtained in Dr. Carey's laboratory. The main questions are to explore the relationship of age patterns of fecundity to mortality, longevity and lifetime reproduction.
+ 
+A basic finding was that individual mortality is associated with the time-dynamics of the egg-laying trajectory. An approximate parametric model of the egg laying process was developed and used in Muller et al. (2001). Non-parametric approaches which extend principal component analysis for curve data to the situation when covariates are present have been developed and discussed in  Chiou, Muller and Wang (2003) and Chiou et al. (2003).
+}
+\usage{
+dataf.medflies()
+}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates.
+      \describe{
+        \item{\code{args}}{\bold{day} - a numeric vector of the days numbers}
+        \item{\code{vals}}{\bold{#eggs} - a numeric vector of numbers of eggs laid daily}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects: long-lived, short-lived}
+  }
+}
+\source{
+Carey, J.R., Liedo, P., Muller, H.G., Wang, J.L., Chiou, J.M. (1998). Relationship of age patterns of fecundity to mortality, longevity, and lifetime reproduction in a large cohort of Mediterranean fruit fly females. J. of Gerontology --Biological Sciences 53, 245-251. 
+
+Muller, H.G., Carey, J.R., Wu, D., Liedo, P., Vaupel, J.W. (2001). Reproductive potential predicts longevity of female Mediterranean fruit flies. Proceedings of the Royal Society B 268, 445-450. 
+
+Chiou, J.M., Muller, H.G., Wang, J.L. (2003). Functional quasi-likelihood regression models with smooth random effects. J. Royal Statist. Soc. B65, 405-423. 
+
+Chiou, J.M., Muller, H.G., Wang, J.L., Carey, J.R. (2003). A functional multiplicative effects model for longitudinal data, with application to reproductive histories of female medflies. Statistica Sinica 13, 1119-1133. 
+ 
+Chiou, J.M., Muller, H.G., Wang, J.L. (2004).Functional response models. Statistica Sinica 14,675-693.
+ 
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the dataset
+dataf = dataf.medflies()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+\dontrun{
+labels = unlist(dataf$labels)
+plot(dataf,
+  xlab="Day", ylab="# eggs", 
+  main=paste("Medflies (training time):\n short-lived red (", sum(labels == "short-lived"), "),", 
+                    " long-lived blue (", sum(labels == "long-lived"), ")", sep=""),
+  colors = c("blue", "red")   # in alphabetical order of class labels
+  )
+
+}
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.population.Rd b/man/dataf.population.Rd
new file mode 100644
index 0000000..18b31ba
--- /dev/null
+++ b/man/dataf.population.Rd
@@ -0,0 +1,67 @@
+\docType{data}
+\name{dataf.population}
+\alias{dataf.population}
+\title{World Historical Population-by-Country Dataset}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates 
+      \describe{
+        \item{\code{args}}{\bold{year} - a numeric vector of years 1950-2015 (66 years)}
+        \item{\code{vals}}{\bold{population} - a numeric vector of the estimated total population in thousands in 233 countries and regions}
+       }
+    }
+    \item{\code{labels}}{The geographic region of the country: Africa, Asia, Europe, Latin America, North America, Oceania}
+    \item{\code{identifier}}{The name of country or region}
+  }
+}
+\source{
+United Nations, Department of Economic and Social Affairs,
+Population Division,
+\url{https://esa.un.org/unpd/wpp/Download/Standard/Population/}, 
+file \code{Total population - Both sexes}
+}
+\usage{
+dataf.population()
+}
+\description{
+Historical world population data by countries.
+}
+\details{
+World population data by a country, area or region as of 1 July 
+of the year indicated. Figures are presented in thousands.
+}
+\examples{
+## load the Population dataset
+dataf = dataf.population()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+## Not run:
+labels = unlist(dataf$labels)
+plot(dataf,
+  main = "World population data",
+  xlab="Year", ylab="Population (in thousands)"
+  )
+## End(Not run)
+
+## compute the integrated and infimal depths of the data curves
+## with respect to the same set of curves
+depthf.fd1(dataf$dataf, dataf$dataf)
+}
+\seealso{
+\code{\link{dataf.population2010}}
+
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.population2010.Rd b/man/dataf.population2010.Rd
new file mode 100644
index 0000000..2394f8b
--- /dev/null
+++ b/man/dataf.population2010.Rd
@@ -0,0 +1,67 @@
+\docType{data}
+\name{dataf.population2010}
+\alias{dataf.population2010}
+\title{World Historical Population-by-Country Dataset (2010 Revision)}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates 
+      \describe{
+        \item{\code{args}}{\bold{year} - a numeric vector of years 1950-2010 (61 years)}
+        \item{\code{vals}}{\bold{population} - a numeric vector of the estimated total population in thousands in 233 countries and regions}
+       }
+    }
+    \item{\code{labels}}{The geographic region of the country}
+    \item{\code{identifier}}{The name of country or region}
+  }
+}
+\source{
+United Nations, Department of Economic and Social Affairs,
+Population Division,
+\url{https://esa.un.org/unpd/wpp/Download/Standard/Population/}, 
+file \code{Total population - Both sexes}
+}
+\usage{
+dataf.population2010()
+}
+\description{
+Historical world population data by countries.
+}
+\details{
+World population data by a country, area or region as of 1 July 
+of the year indicated. Figures are presented in thousands.
+}
+\examples{
+## load the Population dataset
+dataf = dataf.population2010()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+## Not run:
+labels = unlist(dataf$labels)
+plot(dataf,
+  main = "World population data",
+  xlab="Year", ylab="Population (in thousands)"
+  )
+## End(Not run)
+
+## compute the integrated and infimal depths of the data curves
+## with respect to the same set of curves
+depthf.fd1(dataf$dataf, dataf$dataf)
+}
+\seealso{
+\code{\link{dataf.population}}
+
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.sim.1.CFF07.Rd b/man/dataf.sim.1.CFF07.Rd
new file mode 100644
index 0000000..4fc0d73
--- /dev/null
+++ b/man/dataf.sim.1.CFF07.Rd
@@ -0,0 +1,84 @@
+\name{dataf.sim.1.CFF07}
+\alias{dataf.sim.1.CFF07}
+\title{
+Model 1 from Cuevas et al. (2007)
+}
+\description{
+Model 1 from Cuevas et al. (2007)
+
+Processes: \cr
+X(t) = m_0(t) + e(t), m_0(t) = 30*(1-t)*t^1.2 \cr
+Y(t) = m_1(t) + e(t), m_1(t) = 30*(1-t)^1.2*t \cr
+e(t): Gaussian with mean = 0, cov(X(s), X(t)) = 0.2*exp(-abs(s - t)/0.3)\cr
+the processes are discretized at \code{numDiscrets} equally distant points on [0, 1]. The functions
+are smooth and differ in mean only, which makes the classification task rather simple.
+}
+\usage{
+dataf.sim.1.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51, plot = FALSE)
+}
+
+\arguments{
+  \item{numTrain}{
+number of objects in the training sample
+  }
+  \item{numTest}{
+number of objects in the test sample
+  }
+  \item{numDiscrets}{
+number of points for each object
+  }
+  \item{plot}{
+if TRUE the training sample is plotted
+  }
+}
+
+\format{
+  A data strusture containing \code{$learn} and \code{$test} functional data.
+  The functional data are given as data structures.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates.
+      \describe{
+        \item{\code{args}}{a numeric vector}
+        \item{\code{vals}}{a numeric vector}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects: 0 for X(t), 1 for Y(t)}
+  }
+}
+
+\source{
+
+Cuevas, A., Febrero, M. and Fraiman, R. (2007). Robust estimation and classification for functional data via projection-based depth notions. Computational Statistics 22 481-496.
+
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the dataset
+dataf = dataf.sim.1.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51)
+learn = dataf$learn
+test = dataf$test
+
+## view the classes
+unique(learn$labels)
+
+## access the 5th point of the 2nd object
+learn$dataf[[2]]$args[5]
+learn$dataf[[2]]$vals[5]
+
+\dontrun{
+## plot the data
+plot(learn)
+plot(test)
+
+## or
+dataf = dataf.sim.1.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51, plot = TRUE)
+}
+
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.sim.2.CFF07.Rd b/man/dataf.sim.2.CFF07.Rd
new file mode 100644
index 0000000..a86399b
--- /dev/null
+++ b/man/dataf.sim.2.CFF07.Rd
@@ -0,0 +1,83 @@
+\name{dataf.sim.2.CFF07}
+\alias{dataf.sim.2.CFF07}
+\title{
+Model 2 from Cuevas et al. (2007)
+}
+\description{
+Model 2 from Cuevas et al. (2007)
+
+Processes: \cr
+X(t) = m_0(t) + e(t), m_0(t) = 30*(1-t)*t^2 + 0.5*abs(sin(20*pi*t)) \cr
+Y(t) = an 8-knot spline approximation of X \cr
+e(t): Gaussian with mean = 0, cov(X(s), X(t)) = 0.2*exp(-abs(s - t)/0.3)\cr
+the processes are discretized at \code{numDiscrets} equally distant points on [0, 1].
+}
+\usage{
+dataf.sim.2.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51, plot = FALSE)
+}
+
+\arguments{
+  \item{numTrain}{
+number of objects in the training sample
+  }
+  \item{numTest}{
+number of objects in the test sample
+  }
+  \item{numDiscrets}{
+number of points for each object
+  }
+  \item{plot}{
+if TRUE the training sample is plotted
+  }
+}
+
+\format{
+  A data strusture containing \code{$learn} and \code{$test} functional data.
+  The functional data are given as data structures.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates.
+      \describe{
+        \item{\code{args}}{a numeric vector}
+        \item{\code{vals}}{a numeric vector}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects: 0 for X(t), 1 for Y(t)}
+  }
+}
+
+\source{
+
+Cuevas, A., Febrero, M. and Fraiman, R. (2007). Robust estimation and classification for functional data via projection-based depth notions. Computational Statistics 22 481-496.
+
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the dataset
+dataf = dataf.sim.2.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51)
+learn = dataf$learn
+test = dataf$test
+
+## view the classes
+unique(learn$labels)
+
+## access the 5th point of the 2nd object
+learn$dataf[[2]]$args[5]
+learn$dataf[[2]]$vals[5]
+
+\dontrun{
+## plot the data
+plot(learn)
+plot(test)
+
+## or
+dataf = dataf.sim.2.CFF07(numTrain = 100, numTest = 50, numDiscrets = 51, plot = TRUE)
+}
+
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf.tecator.Rd b/man/dataf.tecator.Rd
new file mode 100644
index 0000000..3d47b64
--- /dev/null
+++ b/man/dataf.tecator.Rd
@@ -0,0 +1,69 @@
+\name{dataf.tecator}
+\alias{dataf.tecator}
+\docType{data}
+\title{
+Functional Data Set Spectrometric Data (Tecator)
+}
+\description{
+This dataset is a part of the original one which can be found at
+\url{http://stat.cmu.edu}. For each peace of finely chopped meat we observe one spectrometric curve which
+corresponds to the absorbance measured at 100 wavelengths. 
+The peaces are split according to Ferraty and Vieu (2006) into two classes: with small (<20) and large fat
+content obtained by an analytical chemical processing.
+}
+\usage{
+dataf.tecator()
+}
+\format{
+  The functional data as a data structure.
+  \describe{
+    \item{\code{dataf}}{
+      The functional data as a list of objects. Each object is characterized by two coordinates.
+      \describe{
+        \item{\code{args}}{\bold{wavelength} - a numeric vector of discretization points from 850 to 1050mm }
+        \item{\code{vals}}{\bold{absorbance} - a numeric vector of absorbance values}
+       }
+    }
+    \item{\code{labels}}{The classes of the objects: "small" (<20) and "large" fat content}
+  }
+}
+\author{
+
+Febrero-Bande, M and Oviedo de la Fuente, Manuel
+}
+\source{
+
+\url{http://stat.cmu.edu}
+
+}
+\references{
+Ferraty, F. and Vieu, P. (2006). \emph{Nonparametric functional data analysis: theory and practice}. Springer.
+}
+\seealso{
+\code{\link{dataf.*}} for other functional data sets
+
+\code{\link{plot.functional}} for building plots of functional data
+}
+\examples{
+## load the dataset
+dataf = dataf.tecator()
+
+## view the classes
+unique(dataf$labels)
+
+## access the 5th point of the 2nd object
+dataf$dataf[[2]]$args[5]
+dataf$dataf[[2]]$vals[5]
+
+## plot the data
+\dontrun{
+labels = unlist(dataf$labels)
+plot(dataf, 
+  xlab="Wavelengths", ylab="Absorbances", 
+  main=paste("Tecator: < 20 red (", sum(labels == "small"), "),", 
+            " >= 20 blue (", sum(labels == "large"), ")", sep=""),
+    colors = c("blue", "red"))
+}
+}
+\keyword{datasets}
+\keyword{functional}
diff --git a/man/dataf2rawfd.Rd b/man/dataf2rawfd.Rd
new file mode 100644
index 0000000..9f245c5
--- /dev/null
+++ b/man/dataf2rawfd.Rd
@@ -0,0 +1,61 @@
+\name{dataf2rawfd}
+\alias{dataf2rawfd}
+\title{Transform a \code{dataf} Object to Raw Functional Data}
+\usage{
+dataf2rawfd(dataf, range = NULL, d = 101)
+}
+\arguments{
+\item{dataf}{Functions to be transformed, represented by a (possibly multivariate) \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions. The grid of observation points for the 
+functions in \code{dataf} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{dataf} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{dataf}. If the range is not provided, the smallest interval in which all the arguments from the data functions
+are contained is chosen as the domain.}
+
+\item{d}{Grid size to which all the functional data are transformed. All functional observations are 
+transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).}
+}
+\value{
+If the functional data are univariate (scalar-valued), a matrix of size \code{m*d} is given, with each row
+corresponding to one function. If the functional data are \code{k}-variate with k>1, an array of size \code{m*d*k}
+of the functional values is given.
+}
+\description{
+From a (possibly multivariate) functional data object \code{dataf} constructs an array of the functional values
+evaluated at an equi-distant grid of points.
+}
+\examples{
+## transform a matrix into a functional data set and back
+n = 5
+d = 21
+X = matrix(rnorm(n*d),ncol=d)
+R = rawfd2dataf(X,range=c(0,1))
+R2 = dataf2rawfd(R,range=c(0,1),d=d)
+all.equal(X,R2)
+
+## transform a functional dataset into a raw matrix of functional values
+dataf = dataf.population()$dataf
+dataf2rawfd(dataf,range=c(1950,2015),d=66)
+
+## transform an array into a multivariate functional data set and back
+k = 3
+X = array(rnorm(n*d*k),dim=c(n,d,k))
+R = rawfd2dataf(X,range=c(-1,1))
+dataf2rawfd(R,range=c(-1,1),d=50)
+
+}
+\seealso{
+\code{\link{rawfd2dataf}}
+
+\code{\link{depthf.fd1}}
+
+\code{\link{depthf.fd2}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{functional}
diff --git a/man/ddalpha-package.Rd b/man/ddalpha-package.Rd
new file mode 100644
index 0000000..a9a1bd1
--- /dev/null
+++ b/man/ddalpha-package.Rd
@@ -0,0 +1,126 @@
+\name{ddalpha-package}
+\alias{ddalpha-package}
+\alias{ddalpha}
+\docType{package}
+\title{
+Depth-Based Classification and Calculation of Data Depth
+}
+\description{
+The package provides many procedures for calculating the depth of points in an empirical distribution for many notions of data depth. 
+Further it provides implementations for depth-based classification, for multivariate and functional data.
+
+The package implements the DD\eqn{\alpha}-classifier (Lange, Mosler and Mozharovskyi, 2014), a nonparametric procedure for supervised binary classification with \eqn{q\ge 2} classes. In the training step, the sample is first transformed into a \eqn{q}-dimensional cube of depth vectors, then a linear separation rule in its polynomial extension is constructed with the \eqn{\alpha}-procedure. The classification step involves alternative treatments of 'outsiders'.
+}
+\details{
+\tabular{ll}{
+Package: \tab ddalpha\cr
+Type: \tab Package\cr
+Version: \tab 1.3.1\cr
+Date: \tab 2017-09-27\cr
+License: \tab GPL-2\cr
+}
+Use \code{\link{ddalpha.train}} to train the DD-classifier and \code{\link{ddalpha.classify}} to classify with it. 
+Load sample classification problems using \code{\link{getdata}}. The package contains 50 classification problems built of 33 sets of real data.
+
+The list of the implemented multivariate depths is found in topic \code{\link{depth.}}, for functional depths see \code{\link{depthf.}}. The depth representations of the multivariate data are obtained with \code{\link{depth.space.}}. Functions \code{\link{depth.contours}} and \code{\link{depth.contours.ddalpha}} build depth contours, and \code{\link{depth.graph}} builds depth graphs for two-dimensional data. Function \code{\link{draw.ddplot}} draws DD-plot for the existing DD-classifier, [...]
+
+The package supports user-defined depths and classifiers, see topic \code{\link{Custom Methods}}. A pre-calculated DD-plot may also be used as \code{data}, see topic \code{\link{ddalpha.train}}.
+
+
+\code{\link{is.in.convex}} shows whether an object is no 'outsider', i.e. can be classified by its depth values. 
+Outsiders are alternatively classified by LDA, kNN and maximum Mahalanobis depth as well as by random assignment.
+
+Use \code{\link{compclassf.train}} and \code{\link{ddalphaf.train}} to train the functional DD-classifiers and \code{\link{compclassf.classify}} \code{\link{ddalpha.classify}} to classify with them. Load sample functional classification problems with \code{\link{dataf.*}}. The package contains 4 functional data sets and 2 data set generators. The functional data are visualized with \code{\link{plot.functional}}.
+
+
+}
+\author{
+Oleksii Pokotylo, <alexey.pokotylo at gmail.com>
+
+Pavlo Mozharovskyi, <pavlo.mozharovskyi at ensai.fr>
+
+Rainer Dyckerhoff, <rainer.dyckerhoff at statistik.uni-koeln.de>
+
+Stanislav Nagy, <nagy at karlin.mff.cuni.cz>
+}
+\references{
+Pokotylo, O., Mozharovskyi, P., Dyckerhoff, R. (2016). Depth and depth-based classification with R-package ddalpha. \emph{arXiv:1608.04109}
+
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). Fast nonparametric classification based on data depth. \emph{Statistical Papers} \bold{55} 49--69.
+
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). DD\eqn{\alpha}-classification of asymmetric and fat-tailed data. In: Spiliopoulou, M., Schmidt-Thieme, L., Janning, R. (eds), \emph{Data Analysis, Machine Learning and Knowledge Discovery}, Springer (Berlin), 71--78.
+
+Mosler, K. and Mozharovskyi, P. (2015). Fast DD-classification of functional data. \emph{Statistical Papers}, in press.
+
+Mozharovskyi, P. (2015). \emph{Contributions to Depth-based Classification and Computation of the Tukey Depth}. Verlag Dr. Kovac (Hamburg).
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017). Depth-based recognition of shape outlying functions. \emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\keyword{ package }
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ functional }
+\keyword{ nonparametric }
+\keyword{ classif }
+\seealso{
+\code{\link{ddalpha.train}}, \code{\link{ddalpha.classify}}, 
+
+\code{\link{ddalphaf.train}}, \code{\link{ddalphaf.classify}}, \code{\link{compclassf.train}}, \code{\link{compclassf.classify}}
+
+\code{\link{depth.}}, \code{\link{depthf.}}, \code{\link{depth.space.}}, 
+
+\code{\link{is.in.convex}},
+
+\code{\link{getdata}}, \code{\link{dataf.*}},
+
+\code{\link{plot.ddalpha}}, \code{\link{plot.ddalphaf}},
+\code{\link{plot.functional}}, \code{\link{depth.graph}}, \code{\link{draw.ddplot}}.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train the DDalpha-classifier
+ddalpha <- ddalpha.train(data$train)
+
+# Classify by means of DDalpha-classifier
+classes <- ddalpha.classify(ddalpha, data$test[,propertyVars])
+cat("Classification error rate:", 
+    sum(unlist(classes) != data$test[,classVar])/200, "\n")
+
+# Calculate zonoid depth of top 10 testing objects w.r.t. 1st class
+depths.zonoid <- depth.zonoid(data$test[1:10,propertyVars], 
+                              data$train[trainIndices,propertyVars])
+cat("Zonoid depths:", depths.zonoid, "\n")
+
+# Calculate the random Tukey depth of top 10 testing objects w.r.t. 1st class
+depths.halfspace <- depth.halfspace(data$test[1:10,propertyVars], 
+                                        data$train[trainIndices,propertyVars])
+cat("Random Tukey depths:", depths.halfspace, "\n")
+
+# Calculate depth space with zonoid depth
+dspace.zonoid <- depth.space.zonoid(data$train[,propertyVars], c(100, 100))
+
+# Calculate depth space with the exact Tukey depth
+dspace.halfspace <- depth.space.halfspace(data$train[,propertyVars], c(100, 100), exact = TRUE)
+
+# Count outsiders
+numOutsiders = sum(rowSums(is.in.convex(data$test[,propertyVars], 
+                                data$train[,propertyVars], c(100, 100))) == 0)
+cat(numOutsiders, "outsiders found in the testing sample.\n")
+}
diff --git a/man/ddalpha.classify.Rd b/man/ddalpha.classify.Rd
new file mode 100644
index 0000000..62082b2
--- /dev/null
+++ b/man/ddalpha.classify.Rd
@@ -0,0 +1,90 @@
+\name{ddalpha.classify}
+\alias{ddalpha.classify}
+\alias{predict.ddalpha}
+\title{
+Classify using DD-Classifier
+}
+\description{
+Classifies data using the DD-classifier and a specified outsider treatment.
+}
+\usage{
+ddalpha.classify(ddalpha, objects, subset, outsider.method = NULL, use.convex = NULL)
+
+\method{predict}{ddalpha}(object, objects, subset, outsider.method = NULL, use.convex = NULL, ...)
+}
+\arguments{
+  \item{ddalpha, object}{
+DD\eqn{\alpha}-classifier (obtained by \code{\link{ddalpha.train}}).
+}
+  \item{objects}{
+Matrix containing objects to be classified; each row is one \eqn{d}-dimensional object.
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be classified.
+}
+  \item{outsider.method}{
+Character string, name of a treatment to be used for outsiders; one of those trained by \code{\link{ddalpha.train}}. If the treatment was specified using the argument \code{outsider.methods} then use the name of the method.
+}
+  \item{use.convex}{
+Logical variable indicating whether outsiders should be determined as the points not contained in any of the convex hulls of the classes from the training sample (\code{TRUE}) or those having zero depth w.r.t. each class from the training sample (\code{FALSE}). For \code{depth =} \code{"zonoid"} both values give the same result. If \code{NULL} the value specified in DD\eqn{\alpha}-classifier (in \code{\link{ddalpha.train}}) is used.
+}
+  \item{\dots}{
+  additional parameters are ignored
+}
+}
+\details{
+Only one outsider treatment can be specified.
+
+See Lange, Mosler and Mozharovskyi (2014) for details and additional information.
+}
+\value{
+List containing class labels, or character string "Ignored" for the outsiders if "Ignore" was specified as the outsider treating method.
+}
+\references{
+Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996). Zonoid data depth: theory and computation. In: Prat A. (ed), \emph{COMPSTAT 1996. Proceedings in computational statistics}, Physica-Verlag (Heidelberg), 235--240.
+
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). Fast nonparametric classification based on data depth. \emph{Statistical Papers} \bold{55} 49--69.
+
+Li, J., Cuesta-Albertos, J.A., and Liu, R.Y. (2012). DD-classifier: Nonparametric classification procedure based on DD-plot. \emph{Journal of the American Statistical Association} \bold{107} 737--753.
+
+Mozharovskyi, P. (2015). \emph{Contributions to Depth-based Classification and Computation of the Tukey Depth}. Verlag Dr. Kovac (Hamburg).
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+Vasil'ev, V.I. (2003). The reduction principle in problems of revealing regularities I. \emph{Cybernetics and Systems Analysis} \bold{39} 686--694.
+}
+\seealso{
+\code{\link{ddalpha.train}} to train the DD-classifier.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train the DDalpha-Classifier (zonoid depth, maximum Mahalanobis depth 
+# classifier with defaults as outsider treatment)
+ddalpha <- ddalpha.train(data$train, 
+                         depth = "zonoid", 
+                         outsider.methods = "depth.Mahalanobis")
+# Get the classification error rate
+classes <- ddalpha.classify(data$test[,propertyVars], ddalpha, 
+                            outsider.method = "depth.Mahalanobis")
+cat("Classification error rate: ", 
+    sum(unlist(classes) != data$test[,classVar])/200, ".\n", sep="")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
diff --git a/man/ddalpha.getErrorRateCV.Rd b/man/ddalpha.getErrorRateCV.Rd
new file mode 100644
index 0000000..9ec29f1
--- /dev/null
+++ b/man/ddalpha.getErrorRateCV.Rd
@@ -0,0 +1,75 @@
+\name{ddalpha.getErrorRateCV}
+\alias{ddalpha.getErrorRateCV}
+\title{
+Test DD-Classifier
+}
+\description{
+Performs a cross-validation procedure over the given data. 
+On each step every \code{numchunks} observation is removed from the data, the DD-classifier is trained on these data and tested on the removed observations.
+}
+\usage{
+ddalpha.getErrorRateCV (data, numchunks = 10,  ...)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+}
+  \item{numchunks}{
+number of subsets of testing data. Equals to the number of times the classifier is trained.
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalpha.train}}
+}
+}
+
+\value{
+
+  \item{errors}{
+  the part of incorrectly classified data
+  }
+  \item{time}{
+  the mean training time
+  }
+  \item{time_sd}{
+  the standard deviation of training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalpha.train}} to train the DD\eqn{\alpha}-classifier, 
+\code{\link{ddalpha.classify}} for classification using DD\eqn{\alpha}-classifier, 
+\code{\link{ddalpha.test}} to test the DD-classifier on particular learning and testing data,
+\code{\link{ddalpha.getErrorRatePart}} to perform a benchmark study of the DD-classifier on particular data.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(150, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(150, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+propertyVars <- c(1:2)
+classVar <- 3
+data <- rbind(cbind(class1, rep(1, 150)), cbind(class2, rep(2, 150)))
+
+# Train 1st DDalpha-classifier (default settings) 
+# and get the classification error rate
+stat <- ddalpha.getErrorRateCV(data, numchunks = 5)
+cat("1. Classification error rate (defaults): ", 
+    stat$error, ".\n", sep = "")
+
+# Train 2nd DDalpha-classifier (zonoid depth, maximum Mahalanobis 
+# depth classifier with defaults as outsider treatment) 
+# and get the classification error rate
+stat2 <- ddalpha.getErrorRateCV(data, depth = "zonoid", 
+                          outsider.methods = "depth.Mahalanobis")
+cat("2. Classification error rate (depth.Mahalanobis): ", 
+    stat2$error, ".\n", sep = "")
+
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalpha.getErrorRatePart.Rd b/man/ddalpha.getErrorRatePart.Rd
new file mode 100644
index 0000000..23db142
--- /dev/null
+++ b/man/ddalpha.getErrorRatePart.Rd
@@ -0,0 +1,85 @@
+\name{ddalpha.getErrorRatePart}
+\alias{ddalpha.getErrorRatePart}
+\title{
+Test DD-Classifier
+}
+\description{
+Performs a benchmark procedure by partitioning the given data. 
+On each of \code{times} steps \code{size} observations are removed from the data, the DD-classifier is trained on these data and tested on the removed observations.
+}
+\usage{
+ddalpha.getErrorRatePart(data, size = 0.3, times = 10,  ...)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+}
+  \item{size}{
+  the excluded sequences size. Either an integer between \eqn{1} and \eqn{n}, or a fraction of data between \eqn{0} and \eqn{1}.
+}
+  \item{times}{
+  the number of times the classifier is trained.
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalpha.train}}
+}
+}
+
+\value{
+
+  \item{errors}{
+  the part of incorrectly classified data (mean)
+  }
+  \item{errors_sd}{
+  the standard deviation of errors
+  }
+  \item{errors_vec}{
+  vector of errors
+  }
+  \item{time}{
+  the mean training time
+  }
+  \item{time_sd}{
+  the standard deviation of training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalpha.train}} to train the DD\eqn{\alpha}-classifier, 
+\code{\link{ddalpha.classify}} for classification using DD\eqn{\alpha}-classifier, 
+\code{\link{ddalpha.test}} to test the DD-classifier on particular learning and testing data,
+\code{\link{ddalpha.getErrorRateCV}} to get error rate of the DD-classifier on particular data.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 200 objects
+class1 <- mvrnorm(100, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(100, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+propertyVars <- c(1:2)
+classVar <- 3
+data <- rbind(cbind(class1, rep(1, 100)), cbind(class2, rep(2, 100)))
+
+# Train 1st DDalpha-classifier (default settings) 
+# and get the classification error rate
+stat <- ddalpha.getErrorRatePart(data, size = 10, times = 10)
+cat("1. Classification error rate (defaults): ", 
+    stat$error, ".\n", sep = "")
+
+# Train 2nd DDalpha-classifier (zonoid depth, maximum Mahalanobis 
+# depth classifier with defaults as outsider treatment) 
+# and get the classification error rate
+stat2 <- ddalpha.getErrorRatePart(data, depth = "zonoid", 
+                                outsider.methods = "depth.Mahalanobis", size = 0.2, times = 10)
+cat("2. Classification error rate (depth.Mahalanobis): ", 
+    stat2$error, ".\n", sep = "")
+
+
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalpha.test.Rd b/man/ddalpha.test.Rd
new file mode 100644
index 0000000..cbcbb4d
--- /dev/null
+++ b/man/ddalpha.test.Rd
@@ -0,0 +1,91 @@
+\name{ddalpha.test}
+\alias{ddalpha.test}
+\title{
+Test DD-Classifier
+}
+\description{
+Trains DD-classifier on the learning sequence of the data and tests it on the testing sequence.
+}
+\usage{
+ddalpha.test(learn, test, ...)
+}
+\arguments{
+  \item{learn}{
+the learning sequence of the data. Matrix containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+}
+  \item{test}{
+the testing sequence. Has the same format as \code{learn}
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalpha.train}}
+}
+}
+
+\value{
+
+  \item{error}{
+  the part of incorrectly classified data
+  }
+  \item{correct}{
+  the number of correctly classified objects
+  }
+  \item{incorrect}{
+  the number of incorrectly classified objects
+  }
+  \item{total}{
+  the number of classified objects
+  }
+  \item{ignored}{
+  the number of ignored objects (outside the convex hull of the learning data)
+  }
+  \item{n}{
+  the number of objects in the testing sequence
+  }
+  \item{time}{
+  training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalpha.train}} to train the DD-classifier, 
+\code{\link{ddalpha.classify}} for classification using DD-classifier, 
+\code{\link{ddalpha.getErrorRateCV}} and \code{\link{ddalpha.getErrorRatePart}} to get error rate of the DD-classifier on particular data.
+}
+\examples{
+
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train 1st DDalpha-classifier (default settings) 
+# and get the classification error rate
+stat <- ddalpha.test(data$train, data$test)
+cat("1. Classification error rate (defaults): ", 
+    stat$error, ".\n", sep = "")
+
+# Train 2nd DDalpha-classifier (zonoid depth, maximum Mahalanobis 
+# depth classifier with defaults as outsider treatment) 
+# and get the classification error rate
+stat2 <- ddalpha.test(data$train, data$test, depth = "zonoid", 
+                          outsider.methods = "depth.Mahalanobis")
+cat("2. Classification error rate (depth.Mahalanobis): ", 
+    stat2$error, ".\n", sep = "")
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalpha.train.Rd b/man/ddalpha.train.Rd
new file mode 100644
index 0000000..dc2eff4
--- /dev/null
+++ b/man/ddalpha.train.Rd
@@ -0,0 +1,329 @@
+\name{ddalpha.train}
+\alias{ddalpha.train}
+
+\alias{alpha}
+\alias{polynomial}
+\alias{knnlm}
+\alias{maxD}
+
+\alias{outsiders}
+
+\title{
+Train DD-Classifier
+}
+\description{
+Trains the DD-classifier using a training sample according to given parameters. 
+The DD-classifier is a non-parametric procedure that first transforms the training sample into the depth space calculating the depth of each point w.r.t each class (dimension of this space equals the number of classes in the training sample), and then constructs a separating rule in this depth space. 
+If in the classification phase an object does not belong to the convex hull of at least one class (we mention such an object as an 'outsider'), it is mapped into the origin of the depth space and hence cannot be classified in the depth space. For these objects, after 'outsiderness' has been assured, an outsider treatment, i.e. a classification procedure functioning outside convex hulls of the classes is applied; it has to be trained too.
+
+The current realization of the DD-classifier allows for several alternative outsider treatments; they involve different traditional classification methods, see 'Details' and 'Arguments' for parameters needed. 
+
+The function allows for classification with \eqn{q\ge 2} classes, see \code{aggregation.method} in 'Arguments'.
+}
+\usage{
+ddalpha.train(formula, data, subset,
+              depth = "halfspace", 
+              separator = "alpha", 
+              outsider.methods = "LDA", 
+              outsider.settings = NULL, 
+              aggregation.method = "majority",
+              pretransform = NULL,
+              mah.parMcd = 0.75,
+              use.convex = FALSE,     
+              seed = 0,
+              ...)
+
+}
+\arguments{
+  \item{formula}{
+an object of class ``formula'' (or one that can be coerced to that class): a symbolic description of the model. If not found in \code{data}, the variables of the model are taken from environment.
+}
+  \item{data}{
+Matrix or data.frame containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+
+A pre-calculated DD-plot may be used as \code{data} with \code{depth="ddplot"}.
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be used in training the classifier.
+}
+  \item{depth}{
+Character string determining which depth notion to use; the default value is \code{"halfspace"}. The list of the supported depths is given in section \emph{\bold{\code{Depths}}}. To use a custom depth, see topic \code{\link{Custom Methods}}. To use an outsider treatment only set \code{depth = NULL}.
+}
+  \item{separator}{
+The method used for separation on the DD-plot; can be \code{"alpha"} (the default), \code{"polynomial"}, \code{"knnlm"} or \code{"maxD"}. See section \emph{\bold{\code{Separators}}} for the description of the separators and additional parameters. To use a custom separator, see topic \code{\link{Custom Methods}}.
+}
+  \item{outsider.methods}{
+Vector of character strings each being a name of a basic outsider method for eventual classification; possible names are: \code{"LDA"} (the default), \code{"LDA"}, \code{"kNN"}, \code{"kNNAff"}, \code{"depth.Mahalanobis"}, \code{"RandProp"}, \code{"RandEqual"} and \code{"Ignore"}. Each method can be specified only once, replications are ignored. By specifying treatments in such a way only a basic treatment method can be chosen (by the name), and the default settings for each of the metho [...]
+}
+  \item{outsider.settings}{
+List containing outsider treatments each described by a list of parameters including a name, see 'Details' and 'Examples'. Each method can be used multiply with (not necessarily) different parameters, just the name should be unique, entries with the repeating names are ignored.
+}
+  \item{aggregation.method}{
+Character string determining which method to apply to aggregate binary classification results during multiclass classification; can be \code{"majority"} (the default) or \code{"sequent"}. If \code{"majority"}, \eqn{q(q-1)/2} (with \eqn{q} being the number of classes in the training sample) binary classifiers are trained, the classification results are aggregated using the majority voting, where classes with larger proportions in the training sample (eventually with the earlier entries in [...]
+}
+  \item{pretransform}{
+indicates if the data has to be scaled before the learning procedure.
+If the used depth method is affine-invariant and pretransform doesn't influence the result, the data won't be transformed (the parameter is ignored).
+
+\describe{
+  \item{NULL}{
+applies no transformation to the data
+  }
+  \item{"1Mom", "1MCD"}{
+the data is transformed with the common covariance matrix of the whole data
+  }
+  \item{"NMom", "NMCD"}{
+the data is transformed w.r.t. each class using its covariance martix. The depths w.r.t. each class are calculated using the transformed data.
+  }
+  for the values \code{"1MCD", "NMCD"} \code{\link{covMcd}} is used to calculate the covariance matrix, and the parameter \code{mah.parMcd} is used.
+  }
+  
+}
+  \item{mah.parMcd}{
+  is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used if \code{depth = "Mahalanobis"} when \code{mah.estimate = "MCD"} and in pretransforming the data if \code{pretransform in ("1MCD", "NMCD")}.
+}
+  \item{use.convex}{
+Logical variable indicating whether outsiders should be determined exactly, i.e. as the points not contained in any of the convex hulls of the classes from the training sample (\code{TRUE}), or those having zero depth w.r.t. each class from the training sample (\code{FALSE}). For \code{depth =} \code{"zonoid"} both values give the same result.
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+  \item{...}{
+The parameters for the depth calculating and separation methods.
+}
+}
+
+\details{
+
+\subsection{Depths}{
+
+For \code{depth="ddplot"} the pre-calculated DD-plot shall be passed as \code{data}.
+
+To use a custom depth, see topic \code{\link{Custom Methods}}.
+
+To use an outsider treatment only set \code{depth = NULL}.
+
+The following depths are supported:
+
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+The additional parameters are described in the corresponding topics.
+
+}
+
+\subsection{Separators}{
+
+The separators classify data on the 2-dimensional space of a DD-plot built using the depths.
+
+To use a custom separator, see topic \code{\link{Custom Methods}}.
+
+\subsection{alpha}{
+
+Trains the DD\eqn{\alpha}-classifier (Lange, Mosler and Mozharovskyi, 2014; Mozharovskyi, Mosler and Lange, 2015). The DD\eqn{\alpha}-classifier constructs a linear separating rule in the polynomial extension of the depth space with the \eqn{\alpha}-procedure (Vasil'ev, 2003); maximum degree of the polynomial products is determined via cross-validation (in the depth space).
+
+The additional parameters:
+\describe{
+  \item{max.degree}{
+Maximum of the range of degrees of the polynomial depth space extension over which the \eqn{\alpha}-procedure is to be cross-validated; can be 1, 2 or 3 (default).
+}
+  \item{num.chunks}{
+Number of chunks to split data into when cross-validating the \eqn{\alpha}-procedure; should be \eqn{>0}, and smaller than the total number of points in the two smallest classes when \code{aggregation.method =} \code{"majority"} and smaller than the total number of points in the training sample when \code{aggregation.method =} \code{"sequent"}. The default value is 10.
+}
+}
+}
+
+\subsection{polynomial}{
+
+Trains the polynomial DD-classifier (Li, Cuesta-Albertos and Liu, 2012). The DD-classifier constructs a polynomial separating rule in the depth space; the degree of the polynomial is determined via cross-validation (in the depth space).
+
+The additional parameters:
+\describe{
+  \item{max.degree}{
+Maximum of the range of degrees of the polynomial over which the separator is to be cross-validated; can be in [1:10], the default value is 3.
+}
+  \item{num.chunks}{
+Number of chunks to split data into when cross-validating the separator; should be \eqn{>0}, and smaller than the total number of points in the two smallest classes when \code{aggregation.method =} \code{"majority"} and smaller than the total number of points in the training sample when \code{aggregation.method =} \code{"sequent"}. The default value is 10.
+}
+}
+}
+
+\subsection{knnlm}{
+
+Trains the \code{k}-nearest neighbours classifier in the depth space.
+
+The additional parameters:
+\describe{
+  \item{knnrange}{
+The maximal number of neighbours for kNN separation. The value is bounded by \eqn{2} and \eqn{n/2}.
+
+\code{NULL} for the default value \eqn{10*(n^{1/q})+1}, where \eqn{n} is the number of objects, \eqn{q} is the number of classes. 
+
+\code{"MAX"} for the maximum value \eqn{n/2}
+}
+}
+}
+
+\subsection{maxD}{
+The \code{maximum depth} separator classifies an object to the class that provides it the largest depth value.
+}
+
+}
+
+\subsection{Outsider treatment}{
+
+An outsider treatment is a supplementary classifier for data that lie outside the convex hulls of all \eqn{q} training classes.
+Available methods are: Linear Discriminant Analysis (referred to as "LDA"), see \code{\link{lda}}; \eqn{k}-Nearest-Neighbor Classifier ("kNN"), see \code{\link{knn}}, \code{\link{knn.cv}}; Affine-Invariant kNN ("kNNAff"), an affine-invariant version of the kNN, suited only for binary classification (some aggregation is used with multiple classes) and not accounting for ties (at all), but very fast by that; Maximum Mahalanobis Depth Classifier ("depth.Mahalanobis"), the outsider is referr [...]
+
+An outsider treatment is specified by a list containing a name and parameters:
+
+\code{name} is a character string, name of the outsider treatment to be freely specified; should be unique; is obligatory.
+
+\code{method} is a character string, name of the method to use, can be \code{"LDA"}, \code{"kNN"}, \code{"kNNAff"}, \code{"depth.Mahalanobis"}, \code{"RandProp"}, \code{"RandEqual"} and \code{"Ignore"}; is obligatory.
+
+\code{priors} is a numerical vector specifying prior probabilities of classes; class portions in the training sample are used by the default. \code{priors} is used in methods "LDA", "depth.Mahalanobis" and "RandProp".
+
+\code{knn.k} is the number of the nearest neighbors taken into account; can be between \eqn{1} and the number of points in the training sample. Set to \eqn{-1} (the default) to be determined by the leave-one-out cross-validation. \code{knn.k} is used in method "kNN".
+
+\code{knn.range} is the upper bound on the range over which the leave-one-out cross-validation is performed (the lower bound is \eqn{1}); can be between \eqn{2} and the number of points in the training sample \eqn{-1}. Set to \eqn{-1} (the default) to be calculated automatically accounting for number of points and dimension. \code{knn.range} is used in method "kNN".
+
+\code{knnAff.methodAggregation} is a character string specifying the aggregation technique for method "kNNAff"; works in the same way as the function argument \code{aggregation.method}. \code{knnAff.methodAggregation} is used in method "kNNAff".
+
+\code{knnAff.k} is the number of the nearest neighbors taken into account; should be at least \eqn{1} and up to the number of points in the training sample when \code{knnAff.methodAggregation =} \code{"sequent"}, and up to the total number of points in the training sample when \code{knnAff.methodAggregation =} \code{"majority"}. Set to \eqn{-1} (the default) to be determined by the leave-one-out cross-validation. \code{knnAff.k} is used in method "kNNAff".
+
+\code{knnAff.range} is the upper bound on the range over which the leave-one-out cross-validation is performed (the lower bound is \eqn{1}); should be \eqn{>1} and smaller than the total number of points in the two smallest classes when \code{knnAff.methodAggregation =} \code{"majority"}, and \eqn{>1} and smaller than the total number of points in the training sample when \code{knnAff.methodAggregation =} \code{"sequent"}. Set to \eqn{-1} to be calculated automatically accounting for num [...]
+
+\code{mah.estimate} is a character string specifying which estimates to use when calculating the Mahalanobis depth; can be \code{"moment"} or \code{"MCD"}, determining whether traditional moment or Minimum Covariance Determinant (MCD) (see \code{\link{covMcd}}) estimates for mean and covariance are used. \code{mah.estimate} is used in method "depth.Mahalanobis".
+
+\code{mcd.alpha} is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used in method "depth.Mahalanobis" when \code{mah.estimate =} \code{"MCD"}.
+}
+}
+\value{
+Trained DD\eqn{\alpha}-classifier containing following - rather informative - fields:
+\item{num.points}{Total number of points in the training sample.}
+\item{dimension}{Dimension of the original space.}
+\item{depth}{Character string determining which depth notion to use.}
+\item{methodAggregation}{Character string determining which method to apply to aggregate binary classification results.}
+\item{num.chunks}{Number of chunks data has been split into when cross-validating the \eqn{\alpha}-procedure.}
+\item{num.directions}{Number of directions used for approximating the Tukey depth (when it is used).}
+\item{use.convex}{Logical variable indicating whether outsiders should be determined exactly when classifying.}
+\item{max.degree}{Maximum of the range of degrees of the polynomial depth space extension over which the \eqn{\alpha}-procedure has been cross-validated.}
+\item{patterns}{Classes of the training sample.}
+\item{num.classifiers}{Number of binary classifiers trained.}
+\item{outsider.methods}{Treatments to be used to classify outsiders.}
+}
+\references{
+Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996). Zonoid data depth: theory and computation. In: Prat A. (ed), \emph{COMPSTAT 1996. Proceedings in computational statistics}, Physica-Verlag (Heidelberg), 235--240.
+
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). Fast nonparametric classification based on data depth. \emph{Statistical Papers} \bold{55} 49--69.
+
+Li, J., Cuesta-Albertos, J.A., and Liu, R.Y. (2012). DD-classifier: Nonparametric classification procedure based on DD-plot. \emph{Journal of the American Statistical Association} \bold{107} 737--753.
+
+Mozharovskyi, P. (2015). \emph{Contributions to Depth-based Classification and Computation of the Tukey Depth}. Verlag Dr. Kovac (Hamburg).
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+Vasil'ev, V.I. (2003). The reduction principle in problems of revealing regularities I. \emph{Cybernetics and Systems Analysis} \bold{39} 686--694.
+}
+\seealso{
+\code{\link{ddalpha.classify}} for classification using DD-classifier, 
+\code{\link{depth.}} for calculation of depths, 
+\code{\link{depth.space.}} for calculation of depth spaces, 
+\code{\link{is.in.convex}} to check whether a point is not an outsider.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train 1st DDalpha-classifier (default settings) 
+# and get the classification error rate
+ddalpha1 <- ddalpha.train(data$train)
+classes1 <- ddalpha.classify(ddalpha1, data$test[,propertyVars])
+cat("1. Classification error rate (defaults): ", 
+    sum(unlist(classes1) != data$test[,classVar])/200, ".\n", sep = "")
+
+# Train 2nd DDalpha-classifier (zonoid depth, maximum Mahalanobis 
+# depth classifier with defaults as outsider treatment) 
+# and get the classification error rate
+ddalpha2 <- ddalpha.train(data$train, depth = "zonoid", 
+                          outsider.methods = "depth.Mahalanobis")
+classes2 <- ddalpha.classify(ddalpha2, data$test[,propertyVars], 
+                               outsider.method = "depth.Mahalanobis")
+cat("2. Classification error rate (depth.Mahalanobis): ", 
+    sum(unlist(classes2) != data$test[,classVar])/200, ".\n", sep = "")
+
+# Train 3rd DDalpha-classifier (100 random directions for the Tukey depth, 
+# adjusted maximum Mahalanobis depth classifier 
+# and equal randomization as outsider treatments) 
+# and get the classification error rates
+treatments <- list(list(name = "mahd1", method = "depth.Mahalanobis", 
+                        mah.estimate = "MCD", mcd.alpha = 0.75, priors = c(1, 1)/2), 
+                   list(name = "rand1", method = "RandEqual"))
+ddalpha3 <- ddalpha.train(data$train, outsider.settings = treatments, 
+                          num.direction = 100)
+classes31 <- ddalpha.classify(ddalpha3, data$test[,propertyVars], 
+                              outsider.method = "mahd1")
+classes32 <- ddalpha.classify(ddalpha3, data$test[,propertyVars], 
+                              outsider.method = "rand1")
+cat("3. Classification error rate (by treatments):\n")
+cat("   Error (mahd1): ", 
+    sum(unlist(classes31) != data$test[,classVar])/200, ".\n", sep = "")
+cat("   Error (rand1): ", 
+    sum(unlist(classes32) != data$test[,classVar])/200, ".\n", sep = "")
+    
+# Train using some weird formula
+ddalpha = ddalpha.train(
+    I(mpg >= 19.2) ~ log(disp) + I(disp^2) + disp + I(disp * drat),
+    data = mtcars, subset = (carb!=1), 
+    depth = "Mahalanobis", separator = "alpha")
+print(ddalpha) # make sure that the resulting table is what you wanted
+CC = ddalpha.classify(ddalpha, mtcars)
+sum((mtcars$mpg>=19.2)!= unlist(CC))/nrow(mtcars) # error rate
+    
+#Use the pre-calculated DD-plot
+data = cbind(rbind(mvrnorm(n = 50, mu = c(0,0), Sigma = diag(2)),
+                   mvrnorm(n = 50, mu = c(5,10), Sigma = diag(2)),
+                   mvrnorm(n = 50, mu = c(10,0), Sigma = diag(2))),
+             rep(c(1,2,3), each = 50))
+plot(data[,1:2], col = (data[,3]+1))
+
+ddplot = depth.space.Mahalanobis(data = data[,1:2], cardinalities = c(50,50,50))
+ddplot = cbind(ddplot, data[,3])
+ddalphaD = ddalpha.train(data = ddplot, depth = "ddplot", separator = "alpha")
+c = ddalpha.classify(ddalphaD, ddplot[,1:3])
+errors = sum(unlist(c) != data[,3])/nrow(data)
+print(paste("Error rate: ",errors))
+
+ddalpha = ddalpha.train(data = data, depth = "Mahalanobis", separator = "alpha")
+c = ddalpha.classify(ddalpha, data[,1:2])
+errors = sum(unlist(c) != data[,3])/nrow(data)
+print(paste("Error rate: ",errors))
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
diff --git a/man/ddalphaf.classify.Rd b/man/ddalphaf.classify.Rd
new file mode 100644
index 0000000..94c73e8
--- /dev/null
+++ b/man/ddalphaf.classify.Rd
@@ -0,0 +1,65 @@
+\name{ddalphaf.classify}
+\alias{ddalphaf.classify}
+\alias{predict.ddalphaf}
+\title{
+Classify using Functional DD-Classifier
+}
+\description{
+Classifies data using the functional DD-classifier.
+}
+\usage{
+ddalphaf.classify(ddalphaf, objectsf, subset, ...)
+
+\method{predict}{ddalphaf}(object, objectsf, subset, ...)
+}
+\arguments{
+  \item{ddalphaf, object}{
+Functional DD-classifier (obtained by \code{\link{ddalphaf.train}}).
+}
+  \item{objectsf}{list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be classified.
+}
+  \item{\dots}{
+additional parameters, passed to the classifier, selected with parameter \code{classifier.type} in \code{\link{ddalphaf.train}}.
+}
+}
+
+
+
+\value{
+List containing class labels.
+}
+\references{
+Mosler, K. and Mozharovskyi, P. (2015). Fast DD-classification of functional data, \emph{Statistical Papers}, in press.
+
+Mozharovskyi, P. (2015). \emph{Contributions to Depth-based Classification and Computation of the Tukey Depth}. Verlag Dr. Kovac (Hamburg).
+}
+\seealso{
+\code{\link{ddalphaf.train}} to train the functional DD\eqn{\alpha}-classifier.
+}
+\examples{
+
+\dontrun{
+## load the Growth dataset
+dataf = dataf.growth()
+
+learn = c(head(dataf$dataf, 49), tail(dataf$dataf, 34))
+labels= c(head(dataf$labels, 49), tail(dataf$labels, 34)) 
+test  = tail(head(dataf$dataf, 59), 10)    # elements 50:59. 5 girls, 5 boys
+
+c = ddalphaf.train (learn, labels, classifier.type = "ddalpha")
+
+classified = ddalphaf.classify(c, test)
+
+print(unlist(classified))
+
+}
+}
+
+\keyword{ functional }
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
\ No newline at end of file
diff --git a/man/ddalphaf.getErrorRateCV.Rd b/man/ddalphaf.getErrorRateCV.Rd
new file mode 100644
index 0000000..5cc5276
--- /dev/null
+++ b/man/ddalphaf.getErrorRateCV.Rd
@@ -0,0 +1,68 @@
+\name{ddalphaf.getErrorRateCV}
+\alias{ddalphaf.getErrorRateCV}
+\title{
+Test Functional DD-Classifier
+}
+\description{
+Performs a cross-validation procedure over the given data. 
+On each step every \code{numchunks} observation is removed from the data, the functional DD-classifier is trained on these data and tested on the removed observations.
+}
+\usage{
+ddalphaf.getErrorRateCV (dataf, labels, numchunks = 10, disc.type = c("LS", "comp"),  ...)
+}
+\arguments{
+  \item{dataf}{
+list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{labels}{
+list of output labels of the functional observations
+}
+  \item{numchunks}{
+number of subsets of testing data. Equals to the number of times the classifier is trained.
+}
+  \item{disc.type}{
+type of the used discretization scheme. "LS" for \code{\link{ddalphaf.train}}, "comp" for  for \code{\link{compclassf.train}}
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalphaf.train}}
+}
+}
+
+\value{
+
+  \item{errors}{
+  the part of incorrectly classified data
+  }
+  \item{time}{
+  the mean training time
+  }
+  \item{time_sd}{
+  the standard deviation of training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalphaf.train}} to train the functional DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.classify}} for classification using functional DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.test}} to test the functional DD-classifier on particular learning and testing data,
+\code{\link{ddalphaf.getErrorRatePart}} to perform a benchmark study of the functional DD-classifier on particular data.
+}
+\examples{
+# load the fdata
+df = dataf.growth()
+
+stat <- ddalphaf.getErrorRateCV(dataf = df$dataf, labels = df$labels, 
+                                numchunks = 5,
+                                adc.args = list(instance = "avr", 
+                                                numFcn = 2, 
+                                                numDer = 2))
+                                                
+cat("Classification error rate: ", stat$errors, ".\n", sep = "")
+
+    
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalphaf.getErrorRatePart.Rd b/man/ddalphaf.getErrorRatePart.Rd
new file mode 100644
index 0000000..921ef01
--- /dev/null
+++ b/man/ddalphaf.getErrorRatePart.Rd
@@ -0,0 +1,78 @@
+\name{ddalphaf.getErrorRatePart}
+\alias{ddalphaf.getErrorRatePart}
+\title{
+Test Functional DD-Classifier
+}
+\description{
+Performs a benchmark procedure by partitioning the given data. 
+On each of \code{times} steps \code{size} observations are removed from the data, the functional DD-classifier is trained on these data and tested on the removed observations.
+}
+\usage{
+ddalphaf.getErrorRatePart(dataf, labels, size = 0.3, times = 10, 
+                          disc.type = c("LS", "comp"),  ...)
+}
+\arguments{
+  \item{dataf}{
+list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{labels}{
+list of output labels of the functional observations
+}
+  \item{size}{
+  the excluded sequences size. Either an integer between \eqn{1} and \eqn{n}, or a fraction of data between \eqn{0} and \eqn{1}.
+}
+  \item{times}{
+  the number of times the classifier is trained.
+}
+  \item{disc.type}{
+type of the used discretization scheme. "LS" for \code{\link{ddalphaf.train}}, "comp" for  for \code{\link{compclassf.train}}
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalphaf.train}}
+}
+}
+
+\value{
+
+  \item{errors}{
+  the part of incorrectly classified data (mean)
+  }
+  \item{errors_sd}{
+  the standard deviation of errors
+  }
+  \item{errors_vec}{
+  vector of errors
+  }
+  \item{time}{
+  the mean training time
+  }
+  \item{time_sd}{
+  the standard deviation of training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalphaf.train}} to train the functional DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.classify}} for classification using functional DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.test}} to test the functional DD-classifier on particular learning and testing data,
+\code{\link{ddalphaf.getErrorRateCV}} to get error rate of the functional DD-classifier on particular data.
+}
+\examples{
+# load the fdata
+df = dataf.growth()
+
+stat <- ddalphaf.getErrorRatePart(dataf = df$dataf, labels = df$labels, 
+                          size = 0.3, times = 5,
+                          adc.args = list(instance = "avr", 
+                                         numFcn = 2, 
+                                         numDer = 2))
+
+cat("Classification error rate: ", stat$errors, ".\n", sep = "")
+
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalphaf.test.Rd b/man/ddalphaf.test.Rd
new file mode 100644
index 0000000..a0957bf
--- /dev/null
+++ b/man/ddalphaf.test.Rd
@@ -0,0 +1,81 @@
+\name{ddalphaf.test}
+\alias{ddalphaf.test}
+\title{
+Test Functional DD-Classifier
+}
+\description{
+Trains functional DD-classifier on the learning sequence of the data and tests it on the testing sequence.
+}
+\usage{
+ddalphaf.test(learn, learnlabels, test, testlabels, disc.type = c("LS", "comp"), ...)
+}
+\arguments{
+  \item{learn}{
+list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{learnlabels}{
+list of output labels of the functional observations
+}
+  \item{test}{
+the testing sequence. Has the same format as \code{learn}
+}
+  \item{disc.type}{
+type of the used discretization scheme. "LS" for \code{\link{ddalphaf.train}}, "comp" for  for \code{\link{compclassf.train}}
+}
+  \item{testlabels}{
+list of output labels of the functinal observations
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{ddalphaf.train}}
+}
+}
+
+\value{
+
+  \item{error}{
+  the part of incorrectly classified data
+  }
+  \item{correct}{
+  the number of correctly classified objects
+  }
+  \item{incorrect}{
+  the number of incorrectly classified objects
+  }
+  \item{total}{
+  the number of classified objects
+  }
+  \item{ignored}{
+  the number of ignored objects (outside the convex hull of the learning data)
+  }
+  \item{n}{
+  the number of objects in the testing sequence
+  }
+  \item{time}{
+  training time
+  }
+
+}
+
+
+\seealso{
+\code{\link{ddalphaf.train}} to train the functional DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.classify}} for classification using functonal DD\eqn{\alpha}-classifier, 
+\code{\link{ddalphaf.getErrorRateCV}} and \code{\link{ddalphaf.getErrorRatePart}} to get error rate of the functional DD-classifier on particular data.
+}
+\examples{
+
+# load the fdata
+df = dataf.growth()
+
+samp = c(35:70)
+
+ddalphaf.test(learn = df$dataf[-samp], learnlabels = df$labels[-samp], 
+              test =  df$dataf[samp],  testlabels =  df$labels[samp], 
+              adc.args = list(instance = "avr", 
+                              numFcn = 2, 
+                              numDer = 2))
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ benchmark }
diff --git a/man/ddalphaf.train.Rd b/man/ddalphaf.train.Rd
new file mode 100644
index 0000000..0c74ff8
--- /dev/null
+++ b/man/ddalphaf.train.Rd
@@ -0,0 +1,145 @@
+\name{ddalphaf.train}
+\alias{ddalphaf.train}
+\title{
+Functional DD-Classifier
+}
+\description{
+Trains the functional DD-classifier
+}
+\usage{
+ddalphaf.train(dataf, labels, subset, 
+                adc.args = list(instance = "avr", 
+                               numFcn = -1, 
+                               numDer = -1), 
+                classifier.type = c("ddalpha", "maxdepth", "knnaff", "lda", "qda"), 
+                cv.complete = FALSE, 
+                maxNumIntervals = min(25, ceiling(length(dataf[[1]]$args)/2)),
+                seed = 0,
+                ...)
+}
+
+\arguments{
+  \item{dataf}{
+list containing lists (functions) of two vectors of equal length, named "args" and "vals": arguments sorted in ascending order and corresponding them values respectively
+}
+  \item{labels}{
+list of output labels of the functional observations
+}
+  \item{subset}{
+an optional vector specifying a subset of observations to be used in training the classifier.
+}
+  \item{adc.args}{
+Represents a function sample as a multidimensional (dimension=\code{"numFcn"+"numDer"}) 
+one averaging (\code{instance = "avr"}) or evaluating (\code{instance = "val"}) for that each function and it derivative on \code{"numFcn"} 
+(resp. \code{"numDer"}) equal nonoverlapping covering intervals
+
+First two named \code{"args"} and \code{"vals"} are arguments sorted in 
+ascending order and having same bounds for all functions and 
+corresponding them values respectively
+
+  \describe{
+    \item{instance}{
+type of discretizing the functions: \cr
+"avr" - by averaging over intervals of the same length \cr
+"val" - by taking values on equally-spaced grid
+    }
+    \item{numFcn}{
+  number of function intervals
+    }  
+    \item{numDer}{
+  number of first-derivative intervals 
+    }
+  }
+  Set \code{numFcn} and \code{numDer} to -1 to apply cross-validation.
+  
+  Set  \code{adc.args} to a list of "adc.args" objects to cross-validate only over these values.
+}
+  \item{classifier.type}{
+the classifier which is used on the transformed space. The default value is 'ddalpha'.
+}
+  \item{cv.complete}{
+T: apply complete cross-validation\cr
+F: restrict cross-validation by Vapnik-Chervonenkis bound
+}
+  \item{maxNumIntervals}{
+maximal number of intervals for cross-validation ( max(numFcn + numDer) = maxNumIntervals )
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+  \item{\dots}{
+additional parameters, passed to the classifier, selected with parameter \code{classifier.type}.
+}
+}
+\details{
+The functional DD-classifier is fast nonparametric procedure for classifying functional data. It consists of
+a two-step transformation of the original data plus a classifier operating on a low-dimensional
+hypercube. The functional data are first mapped into a finite-dimensional location-slope space
+and then transformed by a multivariate depth function into the DD-plot, which is a subset of
+the unit hypercube. This transformation yields a new notion of depth for functional data. Three
+alternative depth functions are employed for this, as well as two rules for the final classification. 
+The resulting classifier is cross-validated over a small range of parameters only,
+which is restricted by a Vapnik-Cervonenkis bound. The entire methodology does not involve
+smoothing techniques, is completely nonparametric and allows to achieve Bayes optimality under
+standard distributional settings. It is robust and efficiently computable.
+}
+\value{
+Trained functional DD-classifier
+%%  If it is a LIST, use
+%%  \item{comp1 }{Description of 'comp1'}
+%%  \item{comp2 }{Description of 'comp2'}
+%% ...
+}
+\references{
+Mosler, K. and Mozharovskyi, P. (2015). Fast DD-classification of functional data, \emph{Statistical Papers}, in press.
+
+Mozharovskyi, P. (2015). \emph{Contributions to Depth-based Classification and Computation of the Tukey Depth}. Verlag Dr. Kovac (Hamburg).
+}
+
+\seealso{
+ \code{\link{ddalphaf.classify}} for classification using functional DD\eqn{\alpha}-classifier,
+ \code{\link{compclassf.train}} to train the functional componentwise classifier,
+ \code{\link{dataf.*}} for functional data sets included in the package.
+}
+\examples{
+
+\dontrun{
+
+## load the Growth dataset
+dataf = dataf.growth()
+
+learn = c(head(dataf$dataf, 49), tail(dataf$dataf, 34))
+labels= c(head(dataf$labels, 49), tail(dataf$labels, 34)) 
+test  = tail(head(dataf$dataf, 59), 10)    # elements 50:59. 5 girls, 5 boys
+
+#cross-validate over the whole variants up to dimension 3
+c1 = ddalphaf.train (learn, labels, classifier.type = "ddalpha", maxNumIntervals = 3)
+
+classified1 = ddalphaf.classify(c1, test)
+
+print(unlist(classified1))
+print(c1$adc.args) 
+
+# cross-validate over these two variants
+c2 = ddalphaf.train (learn, labels, classifier.type = "ddalpha", 
+                     adc.args = list(
+                       list(instance = "avr", 
+                            numFcn = 1, 
+                            numDer = 2),
+                       list(instance = "avr", 
+                            numFcn = 0, 
+                            numDer = 2)))
+
+classified2 = ddalphaf.classify(c2, test)
+
+print(unlist(classified2))
+print(c2$adc.args) 
+
+}
+}
+
+\keyword{ functional }
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
diff --git a/man/depth..Rd b/man/depth..Rd
new file mode 100644
index 0000000..03ea00c
--- /dev/null
+++ b/man/depth..Rd
@@ -0,0 +1,100 @@
+\name{depth.}
+\alias{depth.}
+\title{
+Calculate Depth
+}
+\description{
+Calculates the depth of points w.r.t. a multivariate data set.
+
+The detailed descriptions are found in the corresponding topics.
+}
+\usage{
+depth.(x, data, notion, ...)
+
+## Tukey depth
+# depth.halfspace(x, data, exact, method, num.directions = 1000, seed = 0)
+
+## Mahalanobis depth
+# depth.Mahalanobis(x, data, mah.estimate = "moment", mah.parMcd = 0.75)
+
+## projection depth
+# depth.projection(x, data, method = "random", num.directions = 1000)
+
+## simplicial depth
+# depth.simplicial(x, data, exact = F, k = 0.05, seed = 0)
+
+## simplicial volume depth
+# depth.simplicialVolume(x, data, exact = F, k = 0.05, seed = 0)
+
+## spatial depth
+# depth.spatial(x, data)
+
+## zonoid depth
+# depth.zonoid(x, data)
+
+# Potential
+# depth.potential (x, data, pretransform = "1Mom", 
+#            kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{notion}{
+The name of the depth notion (shall also work with a user-defined depth function named \code{"depth.<name>"}).
+}
+  \item{\dots}{
+Additional parameters passed to the depth functions.
+}
+}
+
+\seealso{
+
+\code{\link{depth.halfspace}}
+
+\code{\link{depth.Mahalanobis}}
+
+\code{\link{depth.projection}}
+
+\code{\link{depth.simplicial}}
+
+\code{\link{depth.simplicialVolume}}
+
+\code{\link{depth.spatial}}
+
+\code{\link{depth.zonoid}}
+
+\code{\link{depth.potential}}
+
+\code{\link{depth.graph}} for building the depth surfaces of the two dimensional data.
+
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\examples{
+# 5-dimensional normal distribution
+data <- mvrnorm(1000, rep(0, 5), 
+                matrix(c(1, 0, 0, 0, 0, 
+                         0, 2, 0, 0, 0, 
+                         0, 0, 3, 0, 0, 
+                         0, 0, 0, 2, 0, 
+                         0, 0, 0, 0, 1),
+                nrow = 5))
+x <- mvrnorm(10, rep(1, 5), 
+             matrix(c(1, 0, 0, 0, 0, 
+                      0, 1, 0, 0, 0, 
+                      0, 0, 1, 0, 0, 
+                      0, 0, 0, 1, 0, 
+                      0, 0, 0, 0, 1),
+             nrow = 5))
+                
+depths <- depth.(x, data, notion = "zonoid")
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.Mahalanobis.Rd b/man/depth.Mahalanobis.Rd
new file mode 100644
index 0000000..16928e7
--- /dev/null
+++ b/man/depth.Mahalanobis.Rd
@@ -0,0 +1,87 @@
+\name{depth.Mahalanobis}
+\alias{depth.Mahalanobis}
+\title{
+Calculate Mahalanobis Depth
+}
+\description{
+Calculates the Mahalanobis depth of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.Mahalanobis(x, data, mah.estimate = "moment", mah.parMcd = 0.75)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{mah.estimate}{ is a character string specifying which estimates to use when calculating the Mahalanobis depth; can be \code{"moment"} or \code{"MCD"}, determining whether traditional moment or Minimum Covariance Determinant (MCD) (see \code{\link{covMcd}}) estimates for mean and covariance are used. By default \code{"moment"} is used.
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{mah.estimate =} \code{"MCD"}.
+}
+}
+\details{
+Calculates Mahalanobis depth. Mahalanobis depth is based on an outlyingness measure (Zuo & Serfling, 2000), \emph{viz.} the Mahalanobis distance between the given point and the center of the data (Mahalanobis, 1936).
+
+ \emph{Moment estimates} may be used i.e. traditional \emph{mean} and \emph{covariance matrix}, the corresponding depth may be sensitive to
+outliers. A more robust depth is obtained with \emph{minimum volume ellipsoid} (MVE) or \emph{minimum
+covariance determinant} (MCD) estimators, see Rousseeuw & Leroy (1987) and Lopuhaa &
+Rousseeuw (1991).
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Mahalanobis, P. (1936). On the generalized distance in statistics. \emph{Proceedings of the National
+Academy India} \bold{12} 49--55.
+
+Liu, R.Y. (1992). Data depth and multivariate rank tests. In: Dodge, Y. (ed.), \emph{L1-Statistics and Related Methods}, North-Holland (Amsterdam), 279--294.
+
+Lopuhaa, H.P. and Rousseeuw, P.J. (1991). Breakdown points of affine equivariant estimators of multivariate location and covariance matrices. \emph{The Annals of Statistics} \bold{19} 229--248.
+
+Rousseeuw, P.J. and Leroy, A.M. (1987). Robust Regression and Outlier Detection. John Wiley & Sons (New York).
+
+Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth function. \emph{The Annals of Statistics} \bold{28} 461--482.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+}
+\examples{
+# 5-dimensional normal distribution
+data <- mvrnorm(1000, rep(0, 5), 
+                matrix(c(1, 0, 0, 0, 0, 
+                         0, 2, 0, 0, 0, 
+                         0, 0, 3, 0, 0, 
+                         0, 0, 0, 2, 0, 
+                         0, 0, 0, 0, 1),
+                nrow = 5))
+x <- mvrnorm(10, rep(1, 5), 
+             matrix(c(1, 0, 0, 0, 0, 
+                      0, 1, 0, 0, 0, 
+                      0, 0, 1, 0, 0, 
+                      0, 0, 0, 1, 0, 
+                      0, 0, 0, 0, 1),
+             nrow = 5))
+                
+depths <- depth.Mahalanobis(x, data)
+cat("Depths moment: ", depths, "\n")
+depths <- depth.Mahalanobis(x, data, mah.estimate = "MCD", mah.parMcd = 0.75)
+cat("Depths MCD: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.contours.Rd b/man/depth.contours.Rd
new file mode 100644
index 0000000..298159b
--- /dev/null
+++ b/man/depth.contours.Rd
@@ -0,0 +1,74 @@
+\name{depth.contours}
+\alias{depth.contours}
+\title{
+Depth Contours
+}
+\description{
+Builds the data depth contours for 2-dimensional data.
+}
+\usage{
+depth.contours(data, depth, 
+              main = "", xlab="", ylab = "", 
+              drawplot = T, frequency=100, levels = 10,
+              col = "red",
+              ...)
+}
+
+\arguments{
+  \item{data}{
+2-dimensional numeric data frame or matrix
+}
+  \item{depth}{
+the name of the depth function. The list of the supported depths and described in the topic \code{\link{depth.}}.
+}
+  \item{main}{
+an overall title for the plot: see \code{\link{title}}
+}
+  \item{xlab, ylab}{
+labels of the axes
+}
+  \item{drawplot}{
+if set to false, the contours are built on the existing plot. 
+}
+  \item{frequency}{
+number of points on each direction, x and y. Impacts the smoothness of the contours.
+}
+  \item{levels}{
+numeric vector of levels at which to draw contour lines. 
+If the vector contains only ONE element, the levels are generated automatically as \code{seq(0, max(depth), length.out = levels)}.
+}
+  \item{col}{
+color, used to draw points and contours
+}
+  \item{\dots}{
+additional parameters passed to the depth functions and to \code{\link{plot}}
+}
+}
+
+\seealso{
+ \code{\link{depth.}}, 
+ \code{\link{depth.contours.ddalpha}}, 
+ \code{\link{depth.graph}}.
+}
+\examples{
+
+\dontrun{
+
+par(mfrow = c(2,2))
+data(hemophilia)
+
+depth.contours(hemophilia[,1:2], depth = "none", main = "data")
+
+for (depth in c("zonoid", "Mahalanobis", "projection", "spatial")){
+  depth.contours(hemophilia[,1:2], depth = depth, main = depth)
+}
+
+for (depth in c("halfspace", "simplicial", "simplicialVolume")){
+  depth.contours(hemophilia[,1:2], depth = depth, main = depth, exact = T)
+}
+
+
+}
+}
+
+\keyword{ visualization }
diff --git a/man/depth.contours.ddalpha.Rd b/man/depth.contours.ddalpha.Rd
new file mode 100644
index 0000000..92c05fd
--- /dev/null
+++ b/man/depth.contours.ddalpha.Rd
@@ -0,0 +1,73 @@
+\name{depth.contours.ddalpha}
+\alias{depth.contours.ddalpha}
+\title{
+Depth Contours
+}
+\description{
+Builds the data depth contours for multiclass 2-dimensional data using the trained classifier.
+Also accessible from \code{\link{plot.ddalpha}}.
+}
+\usage{
+depth.contours.ddalpha(ddalpha,
+              main = "", xlab="", ylab = "", 
+              drawplot = T, frequency=100, levels = 10, drawsep = T, ...)
+}
+
+\arguments{
+  \item{ddalpha}{
+DD\eqn{\alpha}-classifier (obtained by \code{\link{ddalpha.train}}).
+}
+  \item{main}{
+an overall title for the plot: see \code{\link{title}}
+}
+  \item{xlab, ylab}{
+labels of the axes
+}
+  \item{drawplot}{
+if set to false, the contours are built on the existing plot. 
+}
+  \item{frequency}{
+number of points on each direction, x and y. Impacts the smoothness of the contours.
+}
+  \item{levels}{
+numeric vector of levels at which to draw contour lines. 
+If the vector contains only ONE element, the levels are generated automatically as \code{seq(0, max(depth), length.out = levels)}.
+}
+  \item{drawsep}{
+draws the separation on the DD-plot (currently for 2 classes and not for knn)
+}
+  \item{\dots}{
+additional parameters passed to the depth functions and to \code{\link{plot}}
+}
+}
+
+\seealso{
+ \code{\link{depth.}}, 
+ \code{\link{depth.contours}}, 
+ \code{\link{depth.graph}}.
+}
+\examples{
+
+\dontrun{
+
+par(mfrow = c(2,2))
+data(hemophilia)
+
+ddalpha = ddalpha.train(hemophilia, depth = "none")
+depth.contours.ddalpha(ddalpha, main = "data")
+
+for (depth in c("zonoid", "Mahalanobis", "projection", "spatial")){
+  ddalpha = ddalpha.train(hemophilia, depth = depth)
+  depth.contours.ddalpha(ddalpha, main = depth)
+}
+
+for (depth in c("halfspace", "simplicial", "simplicialVolume")){
+  ddalpha = ddalpha.train(hemophilia, depth = depth, exact = T)
+  depth.contours.ddalpha(ddalpha, main = depth)
+}
+
+
+}
+}
+
+\keyword{ visualization }
diff --git a/man/depth.graph.Rd b/man/depth.graph.Rd
new file mode 100644
index 0000000..f95b445
--- /dev/null
+++ b/man/depth.graph.Rd
@@ -0,0 +1,76 @@
+\name{depth.graph}
+\alias{depth.graph}
+\title{
+Depth Graph
+}
+\description{
+Builds the data depth graphs for 2-dimensional data. The graph is built using \code{\link{persp}}.
+}
+\usage{
+depth.graph(data, 
+  depth_f = c("halfspace", "Mahalanobis", "projection", "simplicial", 
+              "simplicialVolume", "spatial", "zonoid", "none"), 
+  apoint = NULL, 
+  main = depth_f,  
+  xlim = c(min(data[, 1]), max(data[, 1])), 
+  ylim = c(min(data[, 2]), max(data[, 2])), 
+  zlim = c(0, max(z)), 
+  xnum = 250, 
+  ynum = 250, 
+  theta=15, phi=60,
+  bold = F,
+  ...)
+}
+
+\arguments{
+  \item{data}{
+2-dimensional numeric data frame or matrix
+}
+  \item{depth_f}{
+the name of the depth function. The list of the supported depths and described in the topic \code{\link{depth.}}.
+}
+  \item{apoint}{
+a 2-dimensional point which is shown in black color.
+}
+  \item{main}{
+an overall title for the plot: see \code{\link{title}}
+}
+  \item{xlim, ylim, zlim}{
+numeric vectors of length 2, giving the x, y and z coordinates ranges: see \code{\link{plot.window}}
+}
+  \item{xnum, ynum}{
+number of points on each direction, x and y. Impacts the smoothness of the surface. 
+}
+  \item{theta, phi}{
+rotation angles
+}
+  \item{bold}{
+draws bold points
+}
+  \item{\dots}{
+additional parameters passed to \code{\link{persp}}
+}
+}
+
+\seealso{
+\code{\link{depth.}}
+
+\code{\link{persp}}
+}
+\examples{
+
+\dontrun{
+
+par(mfrow = c(2,3), mar = c(0,0,0,0), mai = c(0,0,0.2,0))
+data(hemophilia)
+depth.graph(hemophilia, "none", xnum = 100, ynum = 100)
+depth.graph(hemophilia, "Mahalanobis", xnum = 100, ynum = 100)
+depth.graph(hemophilia, "halfspace", xnum = 100, ynum = 100)
+depth.graph(hemophilia, "projection", xnum = 100, ynum = 100)
+depth.graph(hemophilia, "zonoid", xnum = 100, ynum = 100)
+depth.graph(hemophilia, "spatial", xnum = 100, ynum = 100)
+
+}
+}
+
+\keyword{ visualization }
diff --git a/man/depth.halfspace.Rd b/man/depth.halfspace.Rd
new file mode 100644
index 0000000..6fa923e
--- /dev/null
+++ b/man/depth.halfspace.Rd
@@ -0,0 +1,95 @@
+\name{depth.halfspace}
+\alias{depth.halfspace}
+\title{
+Calculate Halfspace Depth
+}
+\description{
+Calculates the exact or random Tukey (=halfspace, location) depth  (Tukey, 1975) of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.halfspace(x, data, exact, method, num.directions = 1000, seed = 0)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{exact}{
+The type of the used method. The default is \code{exact=F}, which leads to approximate computation of the Tukey depth. For \code{exact=F}, \code{method="Sunif.1D"} is used by default. If \code{exact=T}, the Tukey depth is computed exactly, with \code{method="recursive"} by default.}
+  \item{method}{
+For \code{exact=F}, if \code{method="Sunif.1D"} (by default), the Tukey depth is computed approximately by being minimized over univariate projections (see Details below).
+
+For \code{exact=T}, the Tukey depth is calculated as the minimum over all combinations of \eqn{k} points from \code{data} (see Details below). In this case parameter \code{method} specifies \eqn{k}, with possible values \eqn{1} for \code{method="recursive"} (by default), \eqn{d-2} for \code{method="plane"}, \eqn{d-1} for \code{method="line"}.
+
+The name of the method may be given as well as just parameter \code{exact}, in which case the default method will be used.
+}
+  \item{num.directions}{
+Number of random directions to be generated (for \code{method="Sunif.1D"}). The algorithmic complexity is linear in the number of observations in \code{data}, given the number of directions.
+}
+  \item{seed}{
+The random seed. The default value \code{seed=0} makes no changes (for \code{method="Sunif.1D"}).
+}
+}
+\details{
+For \code{exact=F}, if \code{method="Sunif.1D"}, the Tukey depth is computed approximately using the random Tukey depth method proposed by Cuesta-Albertos and Nieto-Reyes (2008). Here the depth is determined as the minimum univariate Tukey depth of the - on lines in several directions - projected data. The directions are distributed uniformly on the \eqn{(d-1)}-sphere; the same direction set is used for all points.
+
+For \code{exact=T}, the Tukey depth is computed exactly as the minimum of the sum of the depths in two orthogonal complementary affine subspaces, which dimensions add to \eqn{d}: one of the subspaces (combinatorial) is the \eqn{k}-dimensional hyperplane through (a point from) \code{x} and \eqn{k} points from \code{data}, another one is its orthogonal complement (see Dyckerhoff and Mozharovskyi, 2016 for the detailed description of the algorithmic framework). The algorithm then minimizes  [...]
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Cuesta-Albertos, J.A. and Nieto-Reyes, A. (2008). The random Tukey depth. \emph{Computational Statistics and Data Analysis} \bold{52} 4979--4988.
+
+Dyckerhoff, R. and Mozharovskyi, P. (2016). Exact computation of the halfspace depth. \emph{Computational Statistics and Data Analysis} \bold{98} 19--30.
+
+Rousseeuw, P.J. and Ruts, I. (1996). Algorithm AS 307: Bivariate location depth. \emph{Journal of the Royal Statistical Society. Seriec C (Applied Statistics)} \bold{45} 516--526.
+
+Tukey, J.W. (1974). Mathematics and the picturing of data. In: \emph{Proceeding of the International Congress of Mathematicians}, Vancouver, 523--531.
+}
+\seealso{
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+# 3-dimensional normal distribution
+data <- mvrnorm(200, rep(0, 3), 
+                matrix(c(1, 0, 0,
+                         0, 2, 0, 
+                         0, 0, 1),
+                nrow = 3))
+x <- mvrnorm(10, rep(1, 3), 
+             matrix(c(1, 0, 0,
+                      0, 1, 0, 
+                      0, 0, 1),
+             nrow = 3))
+              
+# default - random Tukey depth
+depths <- depth.halfspace(x, data)
+cat("Depths: ", depths, "\n")
+
+# default exact method - "recursive"
+depths <- depth.halfspace(x, data, exact = TRUE)
+cat("Depths: ", depths, "\n")
+
+# method "line"
+depths <- depth.halfspace(x, data, method = "line")
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.potential.Rd b/man/depth.potential.Rd
new file mode 100644
index 0000000..62ea825
--- /dev/null
+++ b/man/depth.potential.Rd
@@ -0,0 +1,102 @@
+\name{depth.potential}
+\alias{depth.potential}
+\title{
+Calculate Potential of the Data
+}
+\description{
+Calculate the potential of the points w.r.t. a multivariate data set. The potential is the kernel-estimated density multiplied by the prior probability of a class. Different from the data depths, a density estimate measures at a given point how much mass is located around it.
+}
+\usage{
+depth.potential (x, data, pretransform = "1Mom", 
+                kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{pretransform}{
+The method of data scaling. 
+
+\code{NULL} to use the original data, 
+
+\code{1Mom} or \code{NMom} for scaling using data moments, 
+
+\code{1MCD} or \code{NMCD} for scaling using robust data moments (Minimum Covariance Determinant (MCD) ).
+}
+  \item{kernel}{
+\code{"EDKernel"} for the kernel of type 1/(1+kernel.bandwidth*EuclidianDistance2(x, y)), 
+
+\code{"GKernel"} [default and recommended] for the simple Gaussian kernel, 
+
+\code{"EKernel"} exponential kernel: exp(-kernel.bandwidth*EuclidianDistance(x, y)), 
+
+%\code{"TriangleKernel"}, 
+\code{"VarGKernel"} variable Gaussian kernel, where \code{kernel.bandwidth} is proportional to the \code{depth.zonoid} of a point.
+}
+  \item{kernel.bandwidth}{
+  the single bandwidth parameter of the kernel. If \code{NULL} - the Scott's rule of thumb is used.
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{pretransform = "*MCD"}.
+}
+}
+\details{
+The potential is the kernel-estimated density multiplied by the prior probability of a class.
+The kernel bandwidth matrix is decomposed into two parts, one of which describes the form of the data, and the other the width of the kernel. Then the first part is used to transform the data using the moments, while the second is employed as a parameter of the kernel and tuned to achieve the best separation.
+For details see Pokotylo and Mosler (2015).
+}
+\value{
+Numerical vector of potentials, one for each row in \code{x}; or one potential value if \code{x} is a numerical vector.
+}
+\references{
+Aizerman, M.A., Braverman, E.M., and Rozonoer, L.I. (1970). \emph{The Method of Potential Functions in the Theory of Machine Learning}. Nauka (Moscow).
+
+Pokotylo, O. and Mosler, K. (2015). Classification with the pot-pot plot. \emph{Mimeo}.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+}
+\examples{
+# 3-dimensional normal distribution
+data <- mvrnorm(200, rep(0, 3), 
+                matrix(c(1, 0, 0,
+                         0, 2, 0, 
+                         0, 0, 1),
+                       nrow = 3))
+x <- mvrnorm(10, rep(1, 3), 
+             matrix(c(1, 0, 0,
+                      0, 1, 0, 
+                      0, 0, 1),
+                    nrow = 3))
+
+# potential with rule of thumb bandwidth
+pot <- depth.potential(x, data)
+cat("Potentials: ", pot, "\n")
+
+# potential with bandwidth = 0.1
+pot <- depth.potential(x, data, kernel.bandwidth = 0.1)
+cat("Potentials: ", pot, "\n")
+
+# potential with robust MCD scaling
+pot <- depth.potential(x, data, kernel.bandwidth = 0.1, 
+                      pretransform = "NMCD", mah.parMcd = 0.6)
+cat("Potentials: ", pot, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.projection.Rd b/man/depth.projection.Rd
new file mode 100644
index 0000000..bce6efe
--- /dev/null
+++ b/man/depth.projection.Rd
@@ -0,0 +1,97 @@
+\name{depth.projection}
+\alias{depth.projection}
+\title{
+  Calculate Projection Depth
+}
+\description{
+  Calculates the projection depth of points w.r.t. a multivariate data set.
+}
+\usage{
+  depth.projection(x, data, method = "random", num.directions = 1000, seed = 0)
+}
+\arguments{
+  \item{x}{
+    Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+  }
+  \item{data}{
+    Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+  }
+  \item{method}{
+  to be used in calculations.
+  
+  \code{"random"} Here the depth is determined as the minimum univariate depth of the data projected on lines in several directions. The directions are distributed uniformly on the \eqn{(d-1)}-sphere; the same direction set is used for all points.
+  
+  \code{"linearize"} The Nelder-Mead method for function minimization, taken from Olsson, Journal of Quality Technology, 1974, 6, 56.
+  }
+  \item{num.directions}{
+Number of random directions to be generated for \code{method = "random"}. With the growth of n the complexity grows linearly for the same number of directions. 
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+  Calculates projection depth. Projection depth, similar to Mahalanobis depth, is based on a measure of outlyingness,
+used by Stahel (1981) and Donoho (1982), and has been first formulated by Liu (1992). The
+worst case outlyingness is obtained by maximizing an outlyingness measure over all univariate
+projections. In practice most
+often \emph{median}, and \emph{median absolute deviation from the median }(MAD), are used as they are robust measures.
+}
+\value{
+  Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\author{
+ R-codes for the "linearize" method were written by Subhajit Dutta.
+}
+\references{
+Donoho, D.L. (1982). \emph{Breakdown properties of multivariate location estimators}. Ph.D. qualifying paper. Department of Statistics, Harvard University.
+
+Liu, R.Y. (1992). Data depth and multivariate rank tests. In: Dodge, Y. (ed.), L1-Statistics and Related Methods, North-Holland (Amsterdam), 279--294.
+
+Liu, X. and Zuo, Y. (2014). Computing projection depth and its associated estimators. \emph{Statistics and Computing} \bold{24} 51--63.
+
+Stahel, W.A. (1981). \emph{Robust estimation: infinitesimal optimality and covariance matrix estimators}. Ph.D. thesis (in German). Eidgenossische Technische Hochschule Zurich.
+
+Zuo, Y.J. and Lai, S.Y. (2011). Exact computation of bivariate projection depth and the Stahel-Donoho estimator. \emph{Computational Statistics and Data Analysis} \bold{55} 1173--1179.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+  # 5-dimensional normal distribution
+  data <- mvrnorm(100, rep(0, 5), 
+                  matrix(c(1, 0, 0, 0, 0, 
+                           0, 2, 0, 0, 0, 
+                           0, 0, 3, 0, 0, 
+                           0, 0, 0, 2, 0, 
+                           0, 0, 0, 0, 1),
+                         nrow = 5))
+  x <- mvrnorm(10, rep(1, 5), 
+               matrix(c(1, 0, 0, 0, 0, 
+                        0, 1, 0, 0, 0, 
+                        0, 0, 1, 0, 0, 
+                        0, 0, 0, 1, 0, 
+                        0, 0, 0, 0, 1),
+                      nrow = 5))
+  
+  depths <- depth.projection(x, data, method = "random", num.directions = 1000)
+  cat("Depths random: ", depths, "\n")
+  depths <- depth.projection(x, data, method = "linearize")
+  cat("Depths linearize: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.sample.Rd b/man/depth.sample.Rd
new file mode 100644
index 0000000..e911f8a
--- /dev/null
+++ b/man/depth.sample.Rd
@@ -0,0 +1,51 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/depth.fd.R
+\name{depth.sample}
+\alias{depth.sample}
+\title{Fast Depth Computation for Univariate and Bivariate Random Samples}
+\usage{
+depth.sample(A, B)
+}
+\arguments{
+\item{A}{Univariate or bivariate points whose depth is computed, represented by a matrix of 
+size \code{m*2}. \code{m} stands for the number of points, \code{d} is 1 for univariate and 2 
+for bivariate data.}
+
+\item{B}{Random sample points with respect to which the depth of \code{A} is computed. 
+\code{B} is represented by a matrix of size \code{n*2}, where \code{n} is the sample size.}
+}
+\value{
+Vector of length \code{m} of depth halfspace depth values is returned.
+}
+\description{
+Faster implementation of the halfspace and the simplicial depth. Computes the depth 
+of a whole random sample of a univariate or a bivariate data in one run.
+}
+\details{
+The function returns vectors of sample halfspace and simplicial depth values.
+}
+\examples{
+n = 100
+m = 150
+A = matrix(rnorm(2*n),ncol=2)
+B = matrix(rnorm(2*m),ncol=2)
+depth.sample(A,B)
+system.time(D1<-depth.halfspace(A,B))
+system.time(D2<-depth.sample(A,B))
+max(D1-D2$Half)
+
+A = rnorm(100)
+B = rnorm(150)
+depth.sample(A,B)
+# depth.halfspace(matrix(A,ncol=1),matrix(B,ncol=1))
+
+}
+\seealso{
+\code{\link{depth.halfspace}}
+
+\code{\link{depth.simplicial}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
diff --git a/man/depth.simplicial.Rd b/man/depth.simplicial.Rd
new file mode 100644
index 0000000..305a459
--- /dev/null
+++ b/man/depth.simplicial.Rd
@@ -0,0 +1,81 @@
+\name{depth.simplicial}
+\alias{depth.simplicial}
+\title{
+Calculate Simplicial Depth
+}
+\description{
+Calculates the simplicial depth of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.simplicial(x, data, exact = F, k = 0.05, seed = 0)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{exact}{
+\code{exact=F} (by default) implies the approximative algorithm, considering \code{k} simplices, \code{exact=T} implies the exact algorithm.
+}
+  \item{k}{
+Number (\eqn{k>1}) or portion (if \eqn{0<k<1}) of simplices that are considered if \code{exact=F}. If \eqn{k>1}, then the algorithmic complexity is polynomial in \eqn{d} but is independent of the number of observations in \code{data}, given \eqn{k}. If \eqn{0<k<1}, then the algorithmic complexity is exponential in the number of observations in \code{data}, but the calculation precision stays approximately the same.
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+Calculates simplicial depth. Simplicial depth is counted as a probability that a point lies in a simplex, built on \eqn{d+1} data points.
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Chaudhuri, P. (1996). On a geometric notion of quantiles for multivariate data. \emph{Journal of the American Statistical Association} \bold{91} 862--872.
+
+Liu, R. Y. (1990). On a notion of data depth based on random simplices. \emph{The Annals of Statistics} \bold{18} 405--414.
+
+Rousseeuw, P.J. and Ruts, I. (1996). Algorithm AS 307: Bivariate location depth. \emph{Journal of the Royal Statistical Society. Seriec C (Applied Statistics)} \bold{45} 516--526.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+# 3-dimensional normal distribution
+data <- mvrnorm(20, rep(0, 3), 
+                matrix(c(1, 0, 0,
+                         0, 2, 0,
+                         0, 0, 1),
+                       nrow = 3))
+x <- mvrnorm(10, rep(1, 3), 
+             matrix(c(1, 0, 0,
+                      0, 1, 0,
+                      0, 0, 1),
+                    nrow = 3))
+
+#exact
+depths <- depth.simplicial(x, data, exact = TRUE)
+cat("Depths: ", depths, "\n")
+
+#approximative
+depths <- depth.simplicial(x, data, exact = FALSE, k = 0.2)
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.simplicialVolume.Rd b/man/depth.simplicialVolume.Rd
new file mode 100644
index 0000000..afdc8b2
--- /dev/null
+++ b/man/depth.simplicialVolume.Rd
@@ -0,0 +1,82 @@
+\name{depth.simplicialVolume}
+\alias{depth.simplicialVolume}
+\title{
+Calculate Simplicial Volume Depth
+}
+\description{
+Calculates the simpicial volume depth of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.simplicialVolume(x, data, exact = F, k = 0.05, seed = 0)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{exact}{
+\code{exact=F} (by default) implies the approximative algorithm, considering \code{k} simplices, \code{exact=T} implies the exact algorithm.
+}
+  \item{k}{
+Number (\eqn{k>1}) or portion (if \eqn{0<k<1}) of simplices that are considered if \code{exact=F}. If \eqn{k>1}, then the algorithmic complexity is polynomial in \eqn{d} but is independent of the number of observations in \code{data}, given \eqn{k}. If \eqn{0<k<1}, then the algorithmic complexity is exponential in the number of observations in \code{data}, but the calculation precision stays approximately the same.
+}
+  \item{seed}{
+The random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+Calculates Oja depth (also: Simplicial volume depth). 
+At first the Oja outlyingness function \code{O(x,data)} is calculated as the average of the volumes of simplices built on \eqn{d} data points and the measurement point \code{x} (Oja, 1983).
+
+Zuo and Serfling (2000) proposed Oja depth based on the Oja outlyingness function as \code{1/(1 + O(x,data)/S)}, where S is a square root of the determinant of \code{cov(data)}, which makes the depth function affine-invariant.
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Oja, H. (1983). Descriptive statistics for multivariate distributions. \emph{Statistics & Probability Letters} \bold{1} 327--332.
+
+Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth function. \emph{The Annals of Statistics} \bold{28} 461--482.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+# 3-dimensional normal distribution
+data <- mvrnorm(20, rep(0, 3), 
+                matrix(c(1, 0, 0,
+                         0, 2, 0,
+                         0, 0, 1),
+                       nrow = 3))
+x <- mvrnorm(10, rep(1, 3), 
+             matrix(c(1, 0, 0,
+                      0, 1, 0,
+                      0, 0, 1),
+                    nrow = 3))
+
+#exact
+depths <- depth.simplicialVolume(x, data, exact = TRUE)
+cat("Depths: ", depths, "\n")
+
+#approximative
+depths <- depth.simplicialVolume(x, data, exact = FALSE, k = 0.2)
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space..Rd b/man/depth.space..Rd
new file mode 100644
index 0000000..1759842
--- /dev/null
+++ b/man/depth.space..Rd
@@ -0,0 +1,80 @@
+\name{depth.space.}
+\alias{depth.space.}
+
+\title{
+Calculate Depth Space using the Given Depth
+}
+\description{
+Calculates the representation of the training classes in depth space.
+
+The detailed descriptions are found in the corresponding topics.
+}
+\usage{
+depth.space.(data, cardinalities, notion, ...)
+
+## Mahalanobis depth
+# depth.space.Mahalanobis(data, cardinalities, mah.estimate = "moment", mah.parMcd = 0.75)
+
+## projection depth
+# depth.space.projection(data, cardinalities, method = "random", num.directions = 1000)
+
+## Tukey depth
+# depth.space.halfspace(data, cardinalities, exact, alg, num.directions = 1000)
+
+## spatial depth
+# depth.space.spatial(data, cardinalities)
+
+## zonoid depth
+# depth.space.zonoid(data, cardinalities)
+
+# Potential
+# depth.space.potential(data, cardinalities, pretransform = "NMom", 
+#            kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75)
+}
+
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{notion}{
+The name of the depth notion (shall also work with \code{\link{Custom Methods}}).
+}
+  \item{\dots}{
+Additional parameters passed to the depth functions.
+}
+}
+
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+
+\seealso{
+
+\code{\link{depth.space.Mahalanobis}}
+
+\code{\link{depth.space.projection}}
+
+\code{\link{depth.space.halfspace}}
+
+\code{\link{depth.space.spatial}}
+
+\code{\link{depth.space.zonoid}}
+
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using zonoid depth
+depth.space.(data, c(10, 10), notion = "zonoid")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.Mahalanobis.Rd b/man/depth.space.Mahalanobis.Rd
new file mode 100644
index 0000000..efd10de
--- /dev/null
+++ b/man/depth.space.Mahalanobis.Rd
@@ -0,0 +1,64 @@
+\name{depth.space.Mahalanobis}
+\alias{depth.space.Mahalanobis}
+\title{
+Calculate Depth Space using Mahalanobis Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using Mahalanobis depth.
+}
+\usage{
+depth.space.Mahalanobis(data, cardinalities, mah.estimate = "moment", mah.parMcd = 0.75)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{mah.estimate}{ is a character string specifying which estimates to use when calculating the Mahalanobis depth; can be \code{"moment"} or \code{"MCD"}, determining whether traditional moment or Minimum Covariance Determinant (MCD) (see \code{\link{covMcd}}) estimates for mean and covariance are used. By default \code{"moment"} is used.
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{mah.estimate =} \code{"MCD"}.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.Mahalanobis}}, see 'References' for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Mahalanobis, P. (1936). On the generalized distance in statistics. \emph{Proceedings of the National
+Academy India} \bold{12} 49--55.
+
+Liu, R.Y. (1992). Data depth and multivariate rank tests. In: Dodge, Y. (ed.), \emph{L1-Statistics and Related Methods}, North-Holland (Amsterdam), 279--294.
+
+Lopuhaa, H.P. and Rousseeuw, P.J. (1991). Breakdown points of affine equivariant estimators of multivariate location and covariance matrices. \emph{The Annals of Statistics} \bold{19} 229--248.
+
+Rousseeuw, P.J. and Leroy, A.M. (1987). Robust Regression and Outlier Detection. John Wiley & Sons (New York).
+
+Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth function. \emph{The Annals of Statistics} \bold{28} 461--482.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using Mahalanobis depth
+depth.space.Mahalanobis(data, c(10, 10))
+depth.space.Mahalanobis(data, c(10, 10), mah.estimate = "MCD", mah.parMcd = 0.75)
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.Mahalanobis(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.halfspace.Rd b/man/depth.space.halfspace.Rd
new file mode 100644
index 0000000..4c98bb3
--- /dev/null
+++ b/man/depth.space.halfspace.Rd
@@ -0,0 +1,78 @@
+\name{depth.space.halfspace}
+\alias{depth.space.halfspace}
+\title{
+Calculate Depth Space using Halfspace Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using the halfspace depth.
+}
+\usage{
+depth.space.halfspace(data, cardinalities, exact, method, num.directions = 1000, seed = 0)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{exact}{
+The type of the used method. The default is \code{exact=F}, which leads to approximate computation of the halfspace depth. For \code{exact=F}, \code{method="Sunif.1D"} is used by default. If \code{exact=T}, the halfspace depth is computed exactly, with \code{method="recursive"} by default.}
+  \item{method}{
+For \code{exact=F}, if \code{method="Sunif.1D"} (by default), the halfspace depth is computed approximately by being minimized over univariate projections (see details).
+
+For \code{exact=T}, the halfspace depth is calculated as the minimum over all combinations of \eqn{k} points from \code{data} (see details). In this case parameter \code{method} specifies \eqn{k}, with possible values \eqn{1} for \code{method="recursive"} (by default), \eqn{d-2} for \code{method="plane"}, \eqn{d-1} for \code{method="line"}.
+
+The name of the method may be given as well as just parameter \code{exact}, in which case the default method will be used.
+}
+  \item{num.directions}{
+Number of random directions to be generated. As the same direction set is used for all observations, the algorithmic complexity of calculating the depth of each single point in \code{data} is logarithmic in the number of observations in \code{data}, given the number of directions, see Mozharovskyi et al. (2015), Section 2.3 for discussion.
+}
+  \item{seed}{
+The random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.halfspace}}, see References below for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Cuesta-Albertos, J.A. and Nieto-Reyes, A. (2008). The random Tukey depth. \emph{Computational Statistics and Data Analysis} \bold{52} 4979--4988.
+
+Dyckerhoff, R. and Mozharovskyi, P. (2016). Exact computation of the halfspace depth. \emph{Computational Statistics and Data Analysis} \bold{98} 19--30.
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+Rousseeuw, P.J. and Ruts, I. (1996). Algorithm AS 307: Bivariate location depth. \emph{Journal of the Royal Statistical Society. Series C (Applied Statistics)} \bold{45} 516--526.
+
+Tukey, J.W. (1974). Mathematics and the picturing of data. In: \emph{Proceeding of the International Congress of Mathematicians}, Vancouver, 523--531.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.halfspace}} for calculation of the Tukey depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(1,1), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+plot(data, col = c(rep(1,10), rep(2,10)))
+# Get depth space using the random Tukey depth
+dhA = depth.space.halfspace(data, c(10, 10))
+(dhA)
+
+# Get depth space using default exact method - "recursive"
+dhE = depth.space.halfspace(data, c(10, 10), exact = TRUE)
+(dhE)
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.halfspace(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.potential.Rd b/man/depth.space.potential.Rd
new file mode 100644
index 0000000..dce8cdf
--- /dev/null
+++ b/man/depth.space.potential.Rd
@@ -0,0 +1,101 @@
+\name{depth.space.potential}
+\alias{depth.space.potential}
+\title{
+Calculate Potential Space
+}
+\description{
+Calculates the representation of the training classes in potential space.
+}
+\usage{
+depth.space.potential(data, cardinalities, pretransform = "NMom", 
+            kernel = "GKernel", kernel.bandwidth = NULL, mah.parMcd = 0.75)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{pretransform}{
+The method of data scaling. 
+
+\code{NULL} to use the original data, 
+
+The data may be scaled jointly or separately:
+
+\code{1Mom} or \code{1MCD} for joint scaling of the classes, 
+
+\code{NMom} or \code{NMCD} for separate scaling of the classes.
+
+You may use traditional moments or Minimum Covariance Determinant (MCD) estimates for mean and covariance:
+
+\code{1Mom} or \code{NMom} for scaling using traditional data moments, 
+
+\code{1MCD} or \code{NMCD} for scaling using robust MCD data moments.
+}
+  \item{kernel}{
+\code{"EDKernel"} for the kernel of type 1/(1+kernel.bandwidth*EuclidianDistance2(x, y)), 
+
+\code{"GKernel"} [default and recommended] for the simple Gaussian kernel, 
+
+\code{"EKernel"} exponential kernel: exp(-kernel.bandwidth*EuclidianDistance(x, y)), 
+
+%\code{"TriangleKernel"}, 
+\code{"VarGKernel"} variable Gaussian kernel, where \code{kernel.bandwidth} is proportional to the \code{depth.zonoid} of a point.
+}
+  \item{kernel.bandwidth}{
+  the bandwidth parameter of the kernel. If \code{NULL} - the Scott's rule of thumb is used.
+  May be a single value for all classes, or a vector of values for each of the classes.
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{pretransform = "*MCD"}.
+}
+}
+\details{
+The potential representation is calculated in the same way as in \code{\link{depth.potential}}, see References below for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its potentials (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Aizerman, M.A., Braverman, E.M., and Rozonoer, L.I. (1970). \emph{The Method of Potential Functions in the Theory of Machine Learning}. Nauka (Moscow).
+
+Pokotylo, O. and Mosler, K. (2015). Classification with the pot-pot plot. \emph{Mimeo}.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.potential}} for calculation of the potential.
+}
+\examples{
+
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(50, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(50, c(1,1), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+plot(data, col = c(rep(1,50), rep(2,50)))
+# potential with rule of thumb bandwidth
+ds = depth.space.potential(data, c(50, 50))
+# draw.ddplot(depth.space = ds, cardinalities = c(50, 50))
+
+# potential with bandwidth = 0.5 and joint scaling
+ds = depth.space.potential(data, c(50, 50), kernel.bandwidth = 0.5,
+                           pretransform = "1Mom")
+# draw.ddplot(depth.space = ds, cardinalities = c(50, 50))
+
+# potential with bandwidth = 0.5 and separate scaling
+ds = depth.space.potential(data, c(50, 50), kernel.bandwidth = 0.5, 
+                           pretransform = "NahMom") # or without pretransform
+# draw.ddplot(depth.space = ds, cardinalities = c(50, 50))
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+ds = depth.space.potential(data[,1:2], cardinalities)
+# draw.ddplot(depth.space = ds, cardinalities = cardinalities)
+
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.projection.Rd b/man/depth.space.projection.Rd
new file mode 100644
index 0000000..f26c6e8
--- /dev/null
+++ b/man/depth.space.projection.Rd
@@ -0,0 +1,72 @@
+\name{depth.space.projection}
+\alias{depth.space.projection}
+\title{
+Calculate Depth Space using Projection Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using projection depth.
+}
+\usage{
+depth.space.projection(data, cardinalities, 
+                       method = "random", num.directions = 1000, seed = 0)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{method}{
+  to be used in calculations.
+  
+  \code{"random"} Here the depth is determined as the minimum univariate depth of the data projected on lines in several directions. The directions are distributed uniformly on the \eqn{(d-1)}-sphere; the same direction set is used for all points.
+  
+  \code{"linearize"} The Nelder-Mead method for function minimization, taken from Olsson, Journal of Quality Technology, 1974, 6, 56. R-codes of this function were written by Subhajit Dutta.
+  }
+  \item{num.directions}{
+Number of random directions to be generated for \code{method = "random"}. With the growth of n the complexity grows linearly for the same number of directions. 
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.projection}}, see 'References' for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Donoho, D.L. (1982). \emph{Breakdown properties of multivariate location estimators}. Ph.D. qualifying paper. Department of Statistics, Harvard University.
+
+Liu, R.Y. (1992). Data depth and multivariate rank tests. In: Dodge, Y. (ed.), L1-Statistics and Related Methods, North-Holland (Amsterdam), 279--294.
+
+Liu, X. and Zuo, Y. (2014). Computing projection depth and its associated estimators. \emph{Statistics and Computing} \bold{24} 51--63.
+
+Stahel, W.A. (1981). \emph{Robust estimation: infinitesimal optimality and covariance matrix estimators}. Ph.D. thesis (in German). Eidgenossische Technische Hochschule Zurich.
+
+Zuo, Y.J. and Lai, S.Y. (2011). Exact computation of bivariate projection depth and the Stahel-Donoho estimator. \emph{Computational Statistics and Data Analysis} \bold{55} 1173--1179.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.projection}} for calculation of projection depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using projection depth
+depth.space.projection(data, c(10, 10), method = "random", num.directions = 1000)
+depth.space.projection(data, c(10, 10), method = "linearize")
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.projection(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.simplicial.Rd b/man/depth.space.simplicial.Rd
new file mode 100644
index 0000000..6f177ce
--- /dev/null
+++ b/man/depth.space.simplicial.Rd
@@ -0,0 +1,62 @@
+\name{depth.space.simplicial}
+\alias{depth.space.simplicial}
+\title{
+Calculate Depth Space using Simplicial Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using simplicial depth.
+}
+\usage{
+depth.space.simplicial(data, cardinalities, exact = F, k = 0.05, seed = 0)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{exact}{
+\code{exact=F} (by default) implies the approximative algorithm, considering \code{k} simplices, \code{exact=T} implies the exact algorithm.
+}
+  \item{k}{
+Number (\eqn{k>1}) or portion (if \eqn{0<k<1}) of simplices that are considered if \code{exact=F}. If \eqn{k>1}, then the algorithmic complexity is polynomial in \eqn{d} but is independent of the number of observations in \code{data}, given \eqn{k}. If \eqn{0<k<1}, then the algorithmic complexity is exponential in the number of observations in \code{data}, but the calculation precision stays approximately the same.
+}
+  \item{seed}{
+The random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.simplicial}}, see 'References' for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Chaudhuri, P. (1996). On a geometric notion of quantiles for multivariate data. \emph{Journal of the American Statistical Association} \bold{91} 862--872.
+
+Liu, R. Y. (1990). On a notion of data depth based on random simplices. \emph{The Annals of Statistics} \bold{18} 405--414.
+
+Rousseeuw, P.J. and Ruts, I. (1996). Algorithm AS 307: Bivariate location depth. \emph{Journal of the Royal Statistical Society. Seriec C (Applied Statistics)} \bold{45} 516--526.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.simplicial}} for calculation of simplicial depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(1,1), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using simplicial depth
+depth.space.simplicial(data, c(10, 10))
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.simplicial(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.simplicialVolume.Rd b/man/depth.space.simplicialVolume.Rd
new file mode 100644
index 0000000..ecfadbc
--- /dev/null
+++ b/man/depth.space.simplicialVolume.Rd
@@ -0,0 +1,60 @@
+\name{depth.space.simplicialVolume}
+\alias{depth.space.simplicialVolume}
+\title{
+Calculate Depth Space using Simplicial Volume Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using simplicial volume depth.
+}
+\usage{
+depth.space.simplicialVolume(data, cardinalities, exact = F, k = 0.05, seed = 0)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{exact}{
+\code{exact=F} (by default) implies the approximative algorithm, considering \code{k} simplices, \code{exact=T} implies the exact algorithm.
+}
+  \item{k}{
+Number (\eqn{k>1}) or portion (if \eqn{0<k<1}) of simplices that are considered if \code{exact=F}. If \eqn{k>1}, then the algorithmic complexity is polynomial in \eqn{d} but is independent of the number of observations in \code{data}, given \eqn{k}. If \eqn{0<k<1}, then the algorithmic complexity is exponential in the number of observations in \code{data}, but the calculation precision stays approximately the same.
+}
+  \item{seed}{
+The random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.simplicialVolume}}, see References below for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Oja, H. (1983). Descriptive statistics for multivariate distributions. \emph{Statistics & Probability Letters} \bold{1} 327--332.
+
+Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth function. \emph{The Annals of Statistics} \bold{28} 461--482.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.simplicialVolume}} for calculation of simplicial depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using Oja depth
+depth.space.simplicialVolume(data, c(10, 10))
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.simplicialVolume(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.spatial.Rd b/man/depth.space.spatial.Rd
new file mode 100644
index 0000000..eac7959
--- /dev/null
+++ b/man/depth.space.spatial.Rd
@@ -0,0 +1,60 @@
+\name{depth.space.spatial}
+\alias{depth.space.spatial}
+\title{
+Calculate Depth Space using Spatial Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using spatial depth.
+}
+\usage{
+depth.space.spatial(data, cardinalities, mah.estimate = "moment", mah.parMcd = 0.75)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{mah.estimate}{ is a character string specifying which estimates to use when calculating sample covariance matrix; can be \code{"none"}, \code{"moment"} or \code{"MCD"}, determining whether traditional moment or Minimum Covariance Determinant (MCD) (see \code{\link{covMcd}}) estimates for mean and covariance are used. By default \code{"moment"} is used. With \code{"none"} the non-affine invariant version of Spatial depth is calculated
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{mah.estimate =} \code{"MCD"}.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.spatial}}, see 'References' for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Chaudhuri, P. (1996). On a geometric notion of quantiles for multivariate data. \emph{Journal of the Americal Statistical Association} \bold{91} 862--872.
+
+Koltchinskii, V.I. (1997). M-estimation, convexity and quantiles. \emph{The Annals of Statistics} \bold{25} 435--477.
+
+Serfling, R. (2006). Depth functions in nonparametric multivariate inference. In: Liu, R., Serfling, R., Souvaine, D. (eds.), \emph{Data Depth: Robust Multivariate Analysis, Computational Geometry and Applications}, American Mathematical Society, 1--16.
+
+Vardi, Y. and Zhang, C.H. (2000). The multivariate L1-median and associated data depth. \emph{Proceedings of the National Academy of Sciences, U.S.A.} \bold{97} 1423--1426.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.spatial}} for calculation of spatial depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using spatial depth
+depth.space.spatial(data, c(10, 10))
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.spatial(data[,1:2], cardinalities)
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.space.zonoid.Rd b/man/depth.space.zonoid.Rd
new file mode 100644
index 0000000..7abb65a
--- /dev/null
+++ b/man/depth.space.zonoid.Rd
@@ -0,0 +1,57 @@
+\name{depth.space.zonoid}
+\alias{depth.space.zonoid}
+\title{
+Calculate Depth Space using Zonoid Depth
+}
+\description{
+Calculates the representation of the training classes in depth space using zonoid depth.
+}
+\usage{
+depth.space.zonoid(data, cardinalities, seed = 0)
+}
+\arguments{
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+The depth representation is calculated in the same way as in \code{\link{depth.zonoid}}, see 'References' for more information and details.
+}
+\value{
+Matrix of objects, each object (row) is represented via its depths (columns) w.r.t. each of the classes of the training sample; order of the classes in columns corresponds to the one in the argument \code{cardinalities}.
+}
+\references{
+Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996). Zonoid data depth: theory and computation. In: Prat A. (ed), \emph{COMPSTAT 1996. Proceedings in computational statistics}, Physica-Verlag (Heidelberg), 235--240.
+
+Koshevoy, G. and Mosler, K. (1997). Zonoid trimming for multivariate distributions \emph{Annals of Statistics} \bold{25} 1998--2017.
+
+Mosler, K. (2002). \emph{Multivariate dispersion, central regions and depth: the lift zonoid approach} Springer (New York).
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application, \code{\link{depth.zonoid}} for calculation of zonoid depth.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 20 training objects
+class1 <- mvrnorm(10, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(10, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+data <- rbind(class1, class2)
+# Get depth space using zonoid depth
+depth.space.zonoid(data, c(10, 10))
+
+data <- getdata("hemophilia")
+cardinalities = c(sum(data$gr == "normal"), sum(data$gr == "carrier"))
+depth.space.zonoid(data[,1:2], cardinalities)
+
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.spatial.Rd b/man/depth.spatial.Rd
new file mode 100644
index 0000000..3162629
--- /dev/null
+++ b/man/depth.spatial.Rd
@@ -0,0 +1,78 @@
+\name{depth.spatial}
+\alias{depth.spatial}
+\title{
+Calculate Spatial Depth
+}
+\description{
+Calculates the spatial depth of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.spatial(x, data, mah.estimate = "moment", mah.parMcd = 0.75)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{mah.estimate}{ is a character string specifying which estimates to use when calculating sample covariance matrix; can be \code{"none"}, \code{"moment"} or \code{"MCD"}, determining whether traditional moment or Minimum Covariance Determinant (MCD) (see \code{\link{covMcd}}) estimates for mean and covariance are used. By default \code{"moment"} is used. With \code{"none"} the non-affine invariant version of Spatial depth is calculated
+}
+  \item{mah.parMcd}{
+is the value of the argument \code{alpha} for the function \code{\link{covMcd}}; is used when \code{mah.estimate =} \code{"MCD"}.
+}
+}
+\details{
+Calculates spatial depth. Spatial depth (also L1-depth) is a distance-based depth exploiting the idea of spatial quantiles of Chaudhuri (1996) and Koltchinskii (1997), formulated by Vardi & Zhang (2000) and Serfling (2002).
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Chaudhuri, P. (1996). On a geometric notion of quantiles for multivariate data. \emph{Journal of the Americal Statistical Association} \bold{91} 862--872.
+
+Koltchinskii, V.I. (1997). M-estimation, convexity and quantiles. \emph{The Annals of Statistics} \bold{25} 435--477.
+
+Serfling, R. (2006). Depth functions in nonparametric multivariate inference. In: Liu, R., Serfling, R., Souvaine, D. (eds.), \emph{Data Depth: Robust Multivariate Analysis, Computational Geometry and Applications}, American Mathematical Society, 1--16.
+
+Vardi, Y. and Zhang, C.H. (2000). The multivariate L1-median and associated data depth. \emph{Proceedings of the National Academy of Sciences, U.S.A.} \bold{97} 1423--1426.
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.zonoid}} for calculation of zonoid depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+# 5-dimensional normal distribution
+data <- mvrnorm(1000, rep(0, 5), 
+                matrix(c(1, 0, 0, 0, 0, 
+                         0, 2, 0, 0, 0, 
+                         0, 0, 3, 0, 0, 
+                         0, 0, 0, 2, 0, 
+                         0, 0, 0, 0, 1),
+                nrow = 5))
+x <- mvrnorm(10, rep(1, 5), 
+             matrix(c(1, 0, 0, 0, 0, 
+                      0, 1, 0, 0, 0, 
+                      0, 0, 1, 0, 0, 
+                      0, 0, 0, 1, 0, 
+                      0, 0, 0, 0, 1),
+             nrow = 5))
+                
+depths <- depth.spatial(x, data)
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depth.zonoid.Rd b/man/depth.zonoid.Rd
new file mode 100644
index 0000000..4f38ecb
--- /dev/null
+++ b/man/depth.zonoid.Rd
@@ -0,0 +1,74 @@
+\name{depth.zonoid}
+\alias{depth.zonoid}
+\title{
+Calculate Zonoid Depth
+}
+\description{
+Calculates the zonoid depth of points w.r.t. a multivariate data set.
+}
+\usage{
+depth.zonoid(x, data, seed = 0)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose depth is to be calculated; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix of data where each row contains a \eqn{d}-variate point, w.r.t. which the depth is to be calculated.
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+Calculates zonoid depth (Koshevoy and Mosler, 1997; Mosler, 2002) exactly based on the algorithm of Dyckerhoff, Koshevoy and Mosler (1996), implemented in C++ (and provided) by Rainer Dyckerhoff.
+}
+\value{
+Numerical vector of depths, one for each row in \code{x}; or one depth value if \code{x} is a numerical vector.
+}
+\references{
+Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996). Zonoid data depth: theory and computation. In: Prat A. (ed), \emph{COMPSTAT 1996. Proceedings in computational statistics}, Physica-Verlag (Heidelberg), 235--240.
+
+Koshevoy, G. and Mosler, K. (1997). Zonoid trimming for multivariate distributions \emph{Annals of Statistics} \bold{25} 1998--2017.
+
+Mosler, K. (2002). \emph{Multivariate dispersion, central regions and depth: the lift zonoid approach} Springer (New York).
+}
+\seealso{
+\code{\link{depth.halfspace}} for calculation of the Tukey depth.
+
+\code{\link{depth.Mahalanobis}} for calculation of Mahalanobis depth.
+
+\code{\link{depth.projection}} for calculation of projection depth.
+
+\code{\link{depth.simplicial}} for calculation of simplicial depth.
+
+\code{\link{depth.simplicialVolume}} for calculation of simplicial volume depth.
+
+\code{\link{depth.spatial}} for calculation of spatial depth.
+
+\code{\link{depth.potential}} for calculation of data potential.
+
+}
+\examples{
+# 5-dimensional normal distribution
+data <- mvrnorm(1000, rep(0, 5), 
+                matrix(c(1, 0, 0, 0, 0, 
+                         0, 2, 0, 0, 0, 
+                         0, 0, 3, 0, 0, 
+                         0, 0, 0, 2, 0, 
+                         0, 0, 0, 0, 1),
+                nrow = 5))
+x <- mvrnorm(10, rep(1, 5), 
+             matrix(c(1, 0, 0, 0, 0, 
+                      0, 1, 0, 0, 0, 
+                      0, 0, 1, 0, 0, 
+                      0, 0, 0, 1, 0, 
+                      0, 0, 0, 0, 1),
+             nrow = 5))
+                
+depths <- depth.zonoid(x, data)
+cat("Depths: ", depths, "\n")
+}
+\keyword{ robust }
+\keyword{ multivariate }
+\keyword{ nonparametric }
diff --git a/man/depthf..Rd b/man/depthf..Rd
new file mode 100644
index 0000000..ad94c26
--- /dev/null
+++ b/man/depthf..Rd
@@ -0,0 +1,99 @@
+\name{depthf.}
+\alias{depthf.}
+\title{
+Calculate Functional Depth
+}
+\description{
+Calculates the depth of functions w.r.t. a functional data set.
+
+The detailed descriptions are found in the corresponding topics.
+}
+\usage{
+depthf.(datafA, datafB, notion, ...)
+
+## Adjusted band depth
+# depthf.ABD(datafA, datafB, range = NULL, d = 101, norm = c("C", "L2"), 
+# J = 2, K = 1)
+
+## Band depth
+# depthf.BD(datafA, datafB, range = NULL, d = 101)
+
+## Univariate integrated and infimal depth
+# depthf.fd1(datafA, datafB, range = NULL, d = 101, order = 1, approx = 0)
+
+## Bivariate integrated and infimal depth
+# depthf.fd2(datafA, datafB, range = NULL, d = 101)
+
+## h-mode depth
+# depthf.hM(datafA, datafB, range = NULL, d = 101, norm = c("C", "L2"),
+#  q = 0.2)
+
+## Bivariate h-mode depth
+# depthf.hM2(datafA, datafB, range = NULL, d = 101, q = 0.2)
+
+## Half-region depth
+# depthf.HR(datafA, datafB, range = NULL, d = 101)
+
+## Univariate random projection depths
+# depthf.RP1(datafA, datafB, range = NULL, d = 101, nproj = 50, nproj2 = 5)
+
+# Bivariate random projection depths
+# depthf.RP2(datafA, datafB, range = NULL, d = 101, nproj = 51)
+}
+\arguments{
+  \item{datafA}{
+Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values.
+}
+  \item{datafB}{
+Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values.
+}
+  \item{notion}{
+The name of the depth notion (shall also work with a user-defined depth function named \code{"depthf.<name>"}).
+}
+  \item{\dots}{
+Additional parameters passed to the depth functions.
+}
+}
+
+\seealso{
+
+\code{\link{depthf.ABD}}
+
+\code{\link{depthf.BD}}
+
+\code{\link{depthf.fd1}}
+
+\code{\link{depthf.fd2}}
+
+\code{\link{depthf.hM}}
+
+\code{\link{depthf.hM2}}
+
+\code{\link{depthf.HR}}
+
+\code{\link{depthf.RP1}}
+
+\code{\link{depthf.RP2}}
+
+}
+\value{
+Numerical vector of depths, one for each function in \code{datafA}; or one depth value if \code{datafA} is a single function.
+}
+\examples{
+# real data example
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+                
+depthf.(datafA, datafB, notion = "HR")
+
+dataf2A = derivatives.est(datafA,deriv=c(0,1))
+dataf2B = derivatives.est(datafB,deriv=c(0,1))
+
+depthf.(dataf2A, dataf2B, notion = "fd2")
+}
+\keyword{ robust }
+\keyword{ functional }
+\keyword{ nonparametric }
diff --git a/man/depthf.ABD.Rd b/man/depthf.ABD.Rd
new file mode 100644
index 0000000..315cdd7
--- /dev/null
+++ b/man/depthf.ABD.Rd
@@ -0,0 +1,79 @@
+\name{depthf.ABD}
+\alias{depthf.ABD}
+\title{Adjusted Band Depth for Functional Data}
+\usage{
+depthf.ABD(datafA, datafB, range = NULL, d = 101, norm = c("C", "L2"),
+  J = 2, K = 1)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).}
+
+\item{norm}{The norm used for the computation of the depth. Two possible 
+choices are implemented: \code{C} for the uniform norm of continuous functions, 
+and \code{L2} for the \eqn{L^2} norm of integrable functions.}
+
+\item{J}{The order of the adjusted band depth, that is the maximal number of functions
+taken in a band. Acceptable values are \code{2}, \code{3},... By default this value is set to \code{2}. 
+Note that this is NOT the order as
+defined in the order-extended version of adjusted band depths in Nagy et al. (2016), used
+for the detection of shape outlying curves.}
+
+\item{K}{Number of sub-samples of the functions from \code{B} taken to speed up the
+computation. By default, sub-sampling is not performed. Values of \code{K} larger than \code{1}
+result in an approximation of the adjusted band depth.}
+}
+\value{
+A vectors of length \code{m} of the adjusted band depths.
+}
+\description{
+The adjusted band depth 
+of functional real-valued data based on either the
+\eqn{C} (uniform) norm, or on the \eqn{L^2} norm of functions.
+}
+\details{
+The function returns the vector of the sample adjusted band depth values. The kernel 
+used in the evaluation is the function \eqn{K(u) = exp(-u)}.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+depthf.ABD(datafA,datafB)
+depthf.ABD(datafA,datafB,norm="L2")
+
+}
+\references{
+Gijbels, I., Nagy, S. (2015).
+Consistency of non-integrated depths for functional data.
+\emph{Journal of Multivariate Analysis} \bold{140}, 259--282.
+
+Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+Weak convergence of discretely observed functional data with applications. 
+\emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\seealso{
+\code{\link{depthf.BD}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.BD.Rd b/man/depthf.BD.Rd
new file mode 100644
index 0000000..f128902
--- /dev/null
+++ b/man/depthf.BD.Rd
@@ -0,0 +1,52 @@
+\name{depthf.BD}
+\alias{depthf.BD}
+\title{Band Depth for Functional Data}
+\usage{
+depthf.BD(datafA, datafB, range = NULL, d = 101)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+}
+\value{
+A vector of length \code{m} of the band depth values.
+}
+\description{
+The (unadjusted) band depth 
+for functional real-valued data of order \code{J=2}.
+}
+\details{
+The function returns the vector of the sample (unadjusted) band depth values.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+depthf.BD(datafA,datafB)
+
+}
+\references{
+Lopez-Pintado, S. and Romo, J. (2009), On the concept of depth for functional data,
+\emph{J. Amer. Statist. Assoc.} \bold{104} (486), 718 - 734.
+}
+\seealso{
+\code{\link{depthf.ABD}}, \code{\link{depthf.fd1}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.HR.Rd b/man/depthf.HR.Rd
new file mode 100644
index 0000000..4ce85b4
--- /dev/null
+++ b/man/depthf.HR.Rd
@@ -0,0 +1,49 @@
+\name{depthf.HR}
+\alias{depthf.HR}
+\title{Half-Region Depth for Functional Data}
+\usage{
+depthf.HR(datafA, datafB, range = NULL, d = 101)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+}
+\value{
+A vector of length \code{m} of the half-region depth values.
+}
+\description{
+The half-region depth 
+for functional real-valued data.
+}
+\details{
+The function returns the vector of the sample half-region depth values.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+depthf.HR(datafA,datafB)
+}
+\references{
+Lopez-Pintado, S. and Romo, J. (2011).
+A half-region depth for functional data.
+\emph{Computational Statistics & Data Analysis} \bold{55} (4), 1679--1695.
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.RP1.Rd b/man/depthf.RP1.Rd
new file mode 100644
index 0000000..8040b3c
--- /dev/null
+++ b/man/depthf.RP1.Rd
@@ -0,0 +1,78 @@
+\name{depthf.RP1}
+\alias{depthf.RP1}
+\title{Univariate Random Projection Depths for Functional Data}
+\usage{
+depthf.RP1(datafA, datafB, range = NULL, d = 101, nproj = 50, nproj2 = 5)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{nproj}{Number of projections taken in the computation of the random projection depth. By default taken
+to be \code{51}.}
+
+\item{nproj2}{Number of projections taken in the computation of the random functional depth. By default taken
+to be \code{5}. \code{nproj2} should be much smaller than \code{d}, the dimensionality of the discretized 
+functional data.}
+}
+\value{
+Three vectors of depth values of length \code{m} are returned:
+\itemize{
+\item \code{Simpl_FD} the random projection depth based on the univariate simplicial depth,
+\item \code{Half_FD} the random projection depth based on the univariate halfspace depth,
+\item \code{RHalf_FD} the random halfspace depth.
+}
+}
+\description{
+Random projection depth and random functional depth for functional data.
+}
+\details{
+The function returns the vectors of sample random projection, and random functional depth values. 
+The random projection depth described in Cuevas et al. (2007) is based on the average univariate depth
+of one-dimensional projections of functional data. The projections are taken randomly as a sample of standard
+normal \code{d}-dimensional random variables, where \code{d} stands for the dimensionality of the discretized
+functional data. 
+
+The random functional depth (also called random Tukey depth, or random halfspace depth) is described in
+Cuesta-Albertos and Nieto-Reyes (2008). The functional data are projected into the real line in random 
+directions as for the random projection depths. Afterwards, an approximation of the halfspace (Tukey) depth
+based on this limited number of univariate projections is assessed.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+
+depthf.RP1(datafA,datafB)
+
+}
+\references{
+Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+Robust estimation and classification for functional data via projection-based depth notions, 
+\emph{Computational Statistics} \bold{22} (3), 481--496.
+
+Cuesta-Albertos, J.A. and Nieto-Reyes, A. (2008).
+ The random Tukey depth. 
+\emph{Computational Statistics & Data Analysis} \bold{52} (11), 4979--4988.
+}
+\seealso{
+\code{\link{depthf.RP2}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.RP2.Rd b/man/depthf.RP2.Rd
new file mode 100644
index 0000000..cf41373
--- /dev/null
+++ b/man/depthf.RP2.Rd
@@ -0,0 +1,78 @@
+\name{depthf.RP2}
+\alias{depthf.RP2}
+\title{Bivariate Random Projection Depths for Functional Data}
+\usage{
+depthf.RP2(datafA, datafB, range = NULL, d = 101, nproj = 51)
+}
+\arguments{
+\item{datafA}{Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+\code{m} stands for the number of functions.}
+
+\item{datafB}{Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+ (vector), and a matrix with two columns of the corresponding bivariate functional values.
+\code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{nproj}{Number of projections taken in the computation of the double random projection depth. By default taken
+to be \code{51}.}
+}
+\value{
+Five vectors of length \code{m} are returned:
+\itemize{
+\item \code{Simpl_FD} the double random projection depth RP2 based on the bivariate simplicial depth,
+\item \code{Half_FD} the double random projection depth RP2 based on the bivariate halfspace depth,
+\item \code{hM_FD} the double random projection depth RP2 based on the bivariate h-mode depth,
+\item \code{Simpl_DD} the double random projection depth RPD based on the univariate simplicial depth,
+\item \code{Half_DD} the random projection depth RPD based on the univariate halfspace depth,
+}
+}
+\description{
+Double random projection depths of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}).
+}
+\details{
+The function returns the vectors of sample double random projection depth values. 
+The double random projection depths are described in Cuevas et al. (2007). They are of two types: RP2 type, and
+RPD type. Both types of depths are based on bivariate projections of the bivariate functional data. 
+These projections are taken randomly as a sample of standard
+normal \code{d}-dimensional random variables, where \code{d} stands for the dimensionality of the internally 
+represented discretized
+functional data. For RP2 type depths, the average bivariate depth of the projected quantities is assessed.
+For RPD type depths, further univariate projections of these bivariate projected quantities are evaluated, and
+based on these final univariate quantities, the average univariate depth is computed.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+
+dataf2A = derivatives.est(datafA,deriv=c(0,1))
+dataf2B = derivatives.est(datafB,deriv=c(0,1))
+depthf.RP2(dataf2A,dataf2B)
+
+
+}
+\references{
+Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+Robust estimation and classification for functional data via projection-based depth notions.
+\emph{Computational Statistics} \bold{22} (3), 481--496.
+}
+\seealso{
+\code{\link{depthf.RP1}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{derivatives}
+\keyword{functional}
diff --git a/man/depthf.fd1.Rd b/man/depthf.fd1.Rd
new file mode 100644
index 0000000..8182c44
--- /dev/null
+++ b/man/depthf.fd1.Rd
@@ -0,0 +1,96 @@
+\name{depthf.fd1}
+\alias{depthf.fd1}
+\title{Univariate Integrated and Infimal Depth for Functional Data}
+\usage{
+depthf.fd1(datafA, datafB, range = NULL, d = 101, order = 1, approx = 0)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation, see Nagy et al. (2016).}
+
+\item{order}{The order of the order extended integrated and infimal depths.
+By default, this is set to \code{1}, meaning that the usual univariate depths of 
+the functional values are computed. For \code{order=2} or \code{3}, the second
+and the third order extended integrated and infimal depths are computed, 
+respectively.}
+
+\item{approx}{Number of approximations used in the computation of the order extended depth
+for \code{order} greater than \code{1}. For \code{order=2}, the default
+value is set to \code{0}, meaning that the depth is computed at all possible \code{d^order}
+combinations of the points in the domain. For \code{order=3}, 
+the default value is set to \code{101}. When \code{approx} is a positive integer, \code{approx}
+points are randomly sampled in \code{[0,1]^order} and at these points the \code{order}-variate depths of the
+corresponding functional values are computed.}
+}
+\value{
+Four vectors of length \code{m} of depth values are returned:
+\itemize{
+\item \code{Simpl_FD} the integrated depth based on the simplicial depth,
+\item \code{Half_FD} the integrated depth based on the halfspace depth,
+\item \code{Simpl_ID} the infimal depth based on the simplicial depth,
+\item \code{Half_ID} the infimal depth based on the halfspace depth.
+}
+In addition, two vectors of length \code{m} of the relative area of smallest depth values is returned:
+\itemize{
+\item \code{Simpl_IA} the proportions of points at which the depth \code{Simpl_ID} was attained,
+\item \code{Half_IA} the proportions of points at which the depth \code{Half_ID} was attained.
+}
+The values \code{Simpl_IA} and \code{Half_IA} are always in the interval [0,1]. 
+They introduce ranking also among functions having the same
+infimal depth value - if two functions have the same infimal depth, the one with larger infimal area
+\code{IA} is said to be less central. 	
+For \code{order=2} and \code{m=1}, two additional matrices of pointwise depths are also returned:
+\itemize{
+   \item \code{PSD} the matrix of size \code{d*d} containing the computed 
+   pointwise bivariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+   \item \code{PHD} the matrix of size \code{d*d} containing the computed 
+   pointwise bivariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+}
+For \code{order=3}, only \code{Half_FD} and \code{Half_ID} are provided.
+}
+\description{
+Usual, and order extended integrated and infimal depths for real-valued functional data based on the
+halfspace and simplicial depth.
+}
+\details{
+The function returns vectors of sample integrated and infimal depth values.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+depthf.fd1(datafA,datafB)
+depthf.fd1(datafA,datafB,order=2)
+depthf.fd1(datafA,datafB,order=3,approx=51)
+
+}
+\references{
+Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+Weak convergence of discretely observed functional data with applications. 
+\emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\seealso{
+\code{\link{depthf.fd2}}, \code{\link{infimalRank}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.fd2.Rd b/man/depthf.fd2.Rd
new file mode 100644
index 0000000..ae9eeb1
--- /dev/null
+++ b/man/depthf.fd2.Rd
@@ -0,0 +1,80 @@
+\name{depthf.fd2}
+\alias{depthf.fd2}
+\title{Bivariate Integrated and Infimal Depth for Functional Data}
+\usage{
+depthf.fd2(datafA, datafB, range = NULL, d = 101)
+}
+\arguments{
+\item{datafA}{Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+\code{m} stands for the number of functions.}
+
+\item{datafB}{Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+ (vector), and a matrix with two columns of the corresponding bivariate functional values.
+\code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+}
+\value{
+Four vectors of length \code{m} are returned:
+\itemize{
+\item \code{Simpl_FD} the integrated depth based on the bivariate simplicial depth,
+\item \code{Half_FD} the integrated depth based on the bivariate halfspace depth,
+\item \code{Simpl_ID} the infimal depth based on the bivariate simplicial depth,
+\item \code{Half_ID} the infimal depth based on the bivariate halfspace depth.
+}
+In addition, two vectors of length \code{m} of the relative area of smallest depth values is returned:
+\itemize{
+\item \code{Simpl_IA} the proportions of points at which the depth \code{Simpl_ID} was attained,
+\item \code{Half_IA} the proportions of points at which the depth \code{Half_ID} was attained.
+}
+The values \code{Simpl_IA} and \code{Half_IA} are always in the interval [0,1]. 
+They introduce ranking also among functions having the same
+infimal depth value - if two functions have the same infimal depth, the one with larger infimal area
+\code{IA} is said to be less central.
+}
+\description{
+Integrated and infimal depths 
+of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}) based on the
+bivariate halfspace and simplicial depths.
+}
+\details{
+The function returns the vectors of sample integrated and infimal depth values.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+
+dataf2A = derivatives.est(datafA,deriv=c(0,1))
+dataf2B = derivatives.est(datafB,deriv=c(0,1))
+depthf.fd2(dataf2A,dataf2B)
+
+}
+\references{
+Hlubinka, D., Gijbels, I., Omelka, M. and Nagy, S. (2015). 
+Integrated data depth for smooth functions and its application in supervised classification. 
+\emph{Computational Statistics}, \bold{30} (4), 1011--1031.
+
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\seealso{
+\code{\link{depthf.fd1}}, \code{\link{infimalRank}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{derivatives}
+\keyword{functional}
diff --git a/man/depthf.hM.Rd b/man/depthf.hM.Rd
new file mode 100644
index 0000000..8af73be
--- /dev/null
+++ b/man/depthf.hM.Rd
@@ -0,0 +1,65 @@
+\name{depthf.hM}
+\alias{depthf.hM}
+\title{h-Mode Depth for Functional Data}
+\usage{
+depthf.hM(datafA, datafB, range = NULL, d = 101, norm = c("C", "L2"),
+  q = 0.2)
+}
+\arguments{
+\item{datafA}{Functions whose depth is computed, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{datafB}{Random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of their arguments
+ and functional values. \code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{norm}{The norm used for the computation of the depth. Two possible 
+choices are implemented: \code{C} for the uniform norm of continuous functions, 
+and \code{L2} for the \eqn{L^2} norm of integrable functions.}
+
+\item{q}{The quantile used to determine the value of the bandwidth \eqn{h}
+in the computation of the h-mode depth. \eqn{h} is taken as the \code{q}-quantile of
+all non-zero distances between the functions \code{B}. By default, this value is set
+to \code{q=0.2}, in accordance with the choice of Cuevas et al. (2007).}
+}
+\value{
+A vector of length \code{m} of the h-mode depth values.
+}
+\description{
+The h-mode depth of functional real-valued data.
+}
+\details{
+The function returns the vectors of the sample h-mode depth values. The kernel 
+used in the evaluation is the standard Gaussian kernel, the bandwidth value is chosen
+as a quantile of the non-zero distances between the random sample curves.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+depthf.hM(datafA,datafB)
+depthf.hM(datafA,datafB,norm="L2")
+}
+\references{
+Cuevas, A., Febrero, M. and Fraiman, R.  (2007).
+Robust estimation and classification for functional data via projection-based depth notions. 
+\emph{Computational Statistics} \bold{22} (3), 481--496.
+
+Nagy, S., Gijbels, I. and Hlubinka, D. (2016). 
+Weak convergence of discretely observed functional data with applications. 
+\emph{Journal of Multivariate Analysis}, \bold{146}, 46--62.
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
diff --git a/man/depthf.hM2.Rd b/man/depthf.hM2.Rd
new file mode 100644
index 0000000..61b1ffd
--- /dev/null
+++ b/man/depthf.hM2.Rd
@@ -0,0 +1,79 @@
+\name{depthf.hM2}
+\alias{depthf.hM2}
+\title{Bivariate h-Mode Depth for Functional Data Based on the \eqn{L^2} Metric}
+\usage{
+depthf.hM2(datafA, datafB, range = NULL, d = 101, q = 0.2)
+}
+\arguments{
+\item{datafA}{Bivariate functions whose depth is computed, represented by a multivariate \code{dataf} object of 
+their arguments (vector), and a matrix with two columns of the corresponding bivariate functional values. 
+\code{m} stands for the number of functions.}
+
+\item{datafB}{Bivariate random sample functions with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a multivariate \code{dataf} object of their arguments
+ (vector), and a matrix with two columns of the corresponding bivariate functional values.
+\code{n} is the sample size. The grid of observation points for the 
+functions \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{q}{The quantile used to determine the value of the bandwidth \eqn{h}
+in the computation of the h-mode depth. \eqn{h} is taken as the \code{q}-quantile of
+all non-zero distances between the functions \code{B}. By default, this value is set
+to \code{q=0.2}, in accordance with the choice of Cuevas et al. (2007).}
+}
+\value{
+Three vectors of length \code{m} of h-mode depth values are returned:
+\itemize{
+\item \code{hM} the unscaled h-mode depth,
+\item \code{hM_norm} the h-mode depth \code{hM} linearly transformed so that its range is [0,1],
+\item \code{hM_norm2} the h-mode depth \code{FD} linearly transformed by a transformation such that 
+   the range of the h-mode depth of \code{B} with respect to \code{B} is [0,1]. This depth may give negative values.
+}
+}
+\description{
+The h-mode depth 
+of functional bivariate data (that is, data of the form \eqn{X:[a,b] \to R^2},
+or \eqn{X:[a,b] \to R} and the derivative of \eqn{X}) based on the
+\eqn{L^2} metric of functions.
+}
+\details{
+The function returns the vectors of sample h-mode depth values. The kernel 
+used in the evaluation is the standard Gaussian kernel, the bandwidth value is chosen
+as a quantile of the non-zero distances between the random sample curves.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+
+datafA2 = derivatives.est(datafA,deriv=c(0,1))
+datafB2 = derivatives.est(datafB,deriv=c(0,1))
+
+depthf.hM2(datafA2,datafB2)
+
+depthf.hM2(datafA2,datafB2)$hM
+# depthf.hM2(cbind(A2[,,1],A2[,,2]),cbind(B2[,,1],B2[,,2]))$hM
+# the two expressions above should give the same result
+
+}
+\references{
+Cuevas, A., Febrero, M. and Fraiman, R.  (2007). 
+Robust estimation and classification for functional data via projection-based depth notions. 
+\emph{Computational Statistics} \bold{22} (3), 481--496.
+}
+\seealso{
+\code{\link{depthf.hM}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{derivatives}
+\keyword{functional}
diff --git a/man/derivatives.est.Rd b/man/derivatives.est.Rd
new file mode 100644
index 0000000..74cf236
--- /dev/null
+++ b/man/derivatives.est.Rd
@@ -0,0 +1,63 @@
+\name{derivatives.est}
+\alias{derivatives.est}
+\title{Estimation of the First Two Derivatives for Functional Data}
+\usage{
+derivatives.est(dataf, range = NULL, d = 101, spar = NULL, deriv = c(0,
+  1))
+}
+\arguments{
+\item{dataf}{Functional dataset, represented by a \code{dataf} object of their arguments
+and functional values. \code{m} stands for the number of functions.}
+
+\item{range}{The common range of the domain where the functions \code{dataf} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{dataf}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{spar}{If provided, this parameter is passed to functions \code{D1ss} and \code{D2ss} from package \code{sfsmisc}
+as the value of the smoothing spline parameter in order to numerically approximate
+the derivatives of \code{dataf}.}
+
+\item{deriv}{A vector composed of \code{0}, \code{1}, and \code{2} of the demanded 
+functional values / derivatives of the functions in the rows of \code{dataf}.
+\code{0} stands for the functional values, \code{1} for the first derivatives, 
+\code{2} for the second derivatives.}
+}
+\value{
+A multivariate \code{dataf} object of the functional values and / or the derivatives of \code{dataf}. 
+The dimensionality of the vector-valued functional data is \code{nd}. The arguments of the data are all equal to 
+an equi-distant grid of \code{d} points in the domain given by \code{range}. \code{nd} is the demanded number 
+of derivatives at the output, i.e. the length of the vector \code{deriv}.
+}
+\description{
+Returns the estimated values of derivatives of functional data.
+}
+\details{
+If the input \code{dataf} is a functional random sample of size \code{m}, 
+the function returns a \code{dataf} object of \code{nd}-dimensional functional data, where 
+in the elements of the vector-valued functional data represent the estimated values of the 
+derivatives of \code{dataf}. All derivatives are evaluated at an equi-distant grid of \code{d}
+points in the domain given by \code{range}. \code{nd} here stands for \code{1}, \code{2} or \code{3}, 
+depending on how many derivatives of \code{dataf} are
+requested to be computed. For the estimation, functions \code{D1ss} and \code{D2ss} from the package
+\code{sfsmisc} are utilized.
+}
+\examples{
+dataf = dataf.population()$dataf
+derivatives.est(dataf,deriv=c(0,1,2))
+}
+\seealso{
+\code{\link[sfsmisc]{D1ss}} in package sfsmisc
+
+\code{\link[sfsmisc]{D2ss}} in package sfsmisc
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{derivatives}
+\keyword{functional}
+\keyword{kernel}
diff --git a/man/dknn.classify.Rd b/man/dknn.classify.Rd
new file mode 100644
index 0000000..12099bb
--- /dev/null
+++ b/man/dknn.classify.Rd
@@ -0,0 +1,92 @@
+\name{dknn.classify}
+\alias{dknn.classify}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{
+Depth-Based kNN
+}
+\description{
+The implementation of the affine-invariant depth-based kNN of Paindaveine and Van Bever (2015). 
+}
+\usage{
+dknn.classify(objects, data, k, depth = "halfspace", seed = 0)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{objects}{
+Matrix containing objects to be classified; each row is one \eqn{d}-dimensional object.
+}
+  \item{data}{
+Matrix containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+}
+  \item{k}{
+the number of neighbours
+}
+  \item{depth}{
+Character string determining which depth notion to use; the default value is \code{"halfspace"}. 
+Currently the method supports the following depths: "halfspace", "Mahalanobis", "simplicial".
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+%\details{
+%%  ~~ If necessary, more details than the description above ~~
+%}
+\value{
+List containing class labels, or character string "Ignored" for the outsiders if "Ignore" was specified as the outsider treating method.
+}
+\references{
+Paindaveine, D. and Van Bever, G. (2015). Nonparametrically consistent depth-based classifiers. \emph{Bernoulli} \bold{21} 62--82.
+}
+%\note{
+%%  ~~further notes~~
+%}
+
+%% ~Make other sections like Warning with \section{Warning }{....} ~
+
+\seealso{
+\code{\link{dknn.train}} to train the Dknn-classifier.
+
+\code{\link{dknn.classify.trained}} to classify with the Dknn-classifier.
+
+\code{\link{ddalpha.train}} to train the DD\eqn{\alpha}-classifier.
+
+\code{\link{ddalpha.getErrorRateCV}} and \code{\link{ddalpha.getErrorRatePart}} to get error rate of the Dknn-classifier on particular data (set \code{separator = "Dknn"}).
+}
+\examples{
+
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train the classifier
+# and get the classification error rate
+cls <- dknn.train(data$train, kMax = 20, depth = "Mahalanobis")
+cls$k
+classes1 <- dknn.classify.trained(data$test[,propertyVars], cls)
+cat("Classification error rate: ", 
+    sum(unlist(classes1) != data$test[,classVar])/200)
+
+# Classify the new data based on the old ones in one step
+classes2 <- dknn.classify(data$test[,propertyVars], data$train, k = cls$k, depth = "Mahalanobis")
+cat("Classification error rate: ", 
+    sum(unlist(classes2) != data$test[,classVar])/200)
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
\ No newline at end of file
diff --git a/man/dknn.classify.trained.Rd b/man/dknn.classify.trained.Rd
new file mode 100644
index 0000000..f2c0aa5
--- /dev/null
+++ b/man/dknn.classify.trained.Rd
@@ -0,0 +1,82 @@
+\name{dknn.classify.trained}
+\alias{dknn.classify.trained}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{
+Depth-Based kNN
+}
+\description{
+The implementation of the affine-invariant depth-based kNN of Paindaveine and Van Bever (2015). 
+}
+\usage{
+dknn.classify.trained(objects, dknn)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{objects}{
+Matrix containing objects to be classified; each row is one \eqn{d}-dimensional object.
+}
+  \item{dknn}{
+Dknn-classifier (obtained by \code{\link{dknn.train}}).
+}
+}
+%\details{
+%%  ~~ If necessary, more details than the description above ~~
+%}
+\value{
+List containing class labels, or character string "Ignored" for the outsiders if "Ignore" was specified as the outsider treating method.
+}
+\references{
+Paindaveine, D. and Van Bever, G. (2015). Nonparametrically consistent depth-based classifiers. \emph{Bernoulli} \bold{21} 62--82.
+}
+%\note{
+%%  ~~further notes~~
+%}
+
+%% ~Make other sections like Warning with \section{Warning }{....} ~
+
+\seealso{
+\code{\link{dknn.train}} to train the Dknn-classifier.
+
+\code{\link{dknn.classify}} to classify with the Dknn-classifier.
+
+\code{\link{ddalpha.train}} to train the DD\eqn{\alpha}-classifier.
+
+\code{\link{ddalpha.getErrorRateCV}} and \code{\link{ddalpha.getErrorRatePart}} to get error rate of the Dknn-classifier on particular data (set \code{separator = "Dknn"}).
+}
+\examples{
+
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train the classifier
+# and get the classification error rate
+cls <- dknn.train(data$train, kMax = 20, depth = "Mahalanobis")
+cls$k
+classes1 <- dknn.classify.trained(data$test[,propertyVars], cls)
+cat("Classification error rate: ", 
+    sum(unlist(classes1) != data$test[,classVar])/200)
+
+# Classify the new data based on the old ones in one step
+classes2 <- dknn.classify(data$test[,propertyVars], data$train, k = cls$k, depth = "Mahalanobis")
+cat("Classification error rate: ", 
+    sum(unlist(classes2) != data$test[,classVar])/200)
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
\ No newline at end of file
diff --git a/man/dknn.train.Rd b/man/dknn.train.Rd
new file mode 100644
index 0000000..8181415
--- /dev/null
+++ b/man/dknn.train.Rd
@@ -0,0 +1,86 @@
+\name{dknn.train}
+\alias{dknn.train}
+\title{
+Depth-Based kNN
+}
+\description{
+The implementation of the affine-invariant depht-based kNN of Paindaveine and Van Bever (2015). 
+}
+\usage{
+dknn.train(data, kMax = -1, depth = "halfspace", seed = 0)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{data}{
+Matrix containing training sample where each of \eqn{n} rows is one object of the training sample where first \eqn{d} entries are inputs and the last entry is output (class label).
+}
+  \item{kMax}{
+the maximal value for the number of neighbours. If the value is set to -1, the default value is calculated as n/2, but at least 2, at most n-1.
+}
+  \item{depth}{
+Character string determining which depth notion to use; the default value is \code{"halfspace"}. 
+Currently the method supports the following depths: "halfspace", "Mahalanobis", "simplicial".
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+%\details{
+%%  ~~ If necessary, more details than the description above ~~
+%}
+\value{
+  The returned object contains technical information for classification, including the found optimal value \code{k}.
+}
+\references{
+Paindaveine, D. and Van Bever, G. (2015). Nonparametrically consistent depth-based classifiers. \emph{Bernoulli} \bold{21} 62--82.
+}
+%\note{
+%%  ~~further notes~~
+%}
+
+%% ~Make other sections like Warning with \section{Warning }{....} ~
+
+\seealso{
+\code{\link{dknn.classify}} and \code{\link{dknn.classify.trained}} to classify with the Dknn-classifier.
+
+\code{\link{ddalpha.train}} to train the DD\eqn{\alpha}-classifier.
+
+\code{\link{ddalpha.getErrorRateCV}} and \code{\link{ddalpha.getErrorRatePart}} to get error rate of the Dknn-classifier on particular data (set \code{separator = "Dknn"}).
+}
+\examples{
+
+# Generate a bivariate normal location-shift classification task
+# containing 200 training objects and 200 to test with
+class1 <- mvrnorm(200, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(200, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:100)
+testIndices <- c(101:200)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 100)), 
+                   cbind(class2[trainIndices,], rep(2, 100)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 100)), 
+                  cbind(class2[testIndices,], rep(2, 100)))
+data <- list(train = trainData, test = testData)
+
+# Train the classifier
+# and get the classification error rate
+cls <- dknn.train(data$train, kMax = 20, depth = "Mahalanobis")
+cls$k
+classes1 <- dknn.classify.trained(data$test[,propertyVars], cls)
+cat("Classification error rate: ", 
+    sum(unlist(classes1) != data$test[,classVar])/200)
+
+# Classify the new data based on the old ones in one step
+classes2 <- dknn.classify(data$test[,propertyVars], data$train, k = cls$k, depth = "Mahalanobis")
+cat("Classification error rate: ", 
+    sum(unlist(classes2) != data$test[,classVar])/200)
+
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ multivariate }
+\keyword{ nonparametric }
+\keyword{ classif }
diff --git a/man/draw.ddplot.Rd b/man/draw.ddplot.Rd
new file mode 100644
index 0000000..b42f0f4
--- /dev/null
+++ b/man/draw.ddplot.Rd
@@ -0,0 +1,68 @@
+\name{draw.ddplot}
+\alias{draw.ddplot}
+\title{
+Draw \emph{DD}-Plot
+}
+\description{
+The function draws the \emph{DD}-plot either of the existing DD\eqn{\alpha}-classifier of the depth space.
+Also accessible from \code{\link{plot.ddalpha}}.
+}
+\usage{
+draw.ddplot(ddalpha, depth.space, cardinalities, 
+            main = "DD plot", xlab = "C1", ylab = "C2", 
+            classes = c(1, 2), colors = c("red", "blue", "green"), drawsep = T)
+
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{ddalpha}{
+DD\eqn{\alpha}-classifier (obtained by \code{\link{ddalpha.train}}).
+}
+  \item{depth.space}{
+The ready depth space obtained by \code{\link{depth.space.}}}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{main}{
+an overall title for the plot: see \code{\link{title}}
+}
+  \item{xlab, ylab}{
+class labels
+}
+  \item{classes}{
+vector of numbers of two classes used for depth calculation
+}
+  \item{colors}{
+vector of the classes' colors
+}
+  \item{drawsep}{
+draws the separation on the DD-plot (currently for 2 classes and not for knn)
+}
+}
+
+\seealso{
+\code{\link{ddalpha.train}}
+
+\code{\link{depth.space.}}
+
+}
+\examples{
+  data = getdata("kidney")
+  
+  #1. using the existing ddalpha classifier
+  ddalpha = ddalpha.train(data, depth = "spatial")
+  draw.ddplot(ddalpha, main = "DD-plot")
+  
+  #2. using depth.space.
+  # Sort the data w.r.t. classes
+  data = rbind(data[data$C == 1,], data[data$C == 2,])
+  cardinalities = c(sum(data$C == 1), sum(data$C == 2))
+  
+  dspace = depth.space.spatial(data[,-6], cardinalities = cardinalities)
+  draw.ddplot(depth.space = dspace, cardinalities = cardinalities, 
+              main = "DD-plot", xlab = 1, ylab = 2)
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ visualization }
+
diff --git a/man/getdata.Rd b/man/getdata.Rd
new file mode 100644
index 0000000..98355a6
--- /dev/null
+++ b/man/getdata.Rd
@@ -0,0 +1,193 @@
+\name{getdata}
+\alias{getdata}
+\alias{data}
+
+\alias{baby}
+\alias{banknoten}
+\alias{biomed}
+\alias{bloodtransfusion}
+\alias{breast_cancer_wisconsin}
+\alias{bupa}
+\alias{chemdiab_1vs2}
+\alias{chemdiab_1vs3}
+\alias{chemdiab_2vs3}
+\alias{cloud}
+\alias{crabB_MvsF}
+\alias{crabF_BvsO}
+\alias{crabM_BvsO}
+\alias{crabO_MvsF}
+\alias{crab_BvsO}
+\alias{crab_MvsF}
+\alias{cricket_CvsP}
+\alias{diabetes}
+\alias{ecoli_cpvsim}
+\alias{ecoli_cpvspp}
+\alias{ecoli_imvspp}
+\alias{gemsen_MvsF}
+\alias{glass}
+\alias{groessen_MvsF}
+\alias{haberman}
+\alias{heart}
+\alias{hemophilia}
+\alias{indian_liver_patient_1vs2}
+\alias{indian_liver_patient_FvsM}
+\alias{iris_setosavsversicolor}
+\alias{iris_setosavsvirginica}
+\alias{iris_versicolorvsvirginica}
+\alias{irish_ed_MvsF}
+\alias{kidney}
+\alias{pima}
+\alias{plasma_retinol_MvsF}
+\alias{segmentation}
+\alias{socmob_IvsNI}
+\alias{socmob_WvsB}
+\alias{tae}
+\alias{tennis_MvsF}
+\alias{tips_DvsN}
+\alias{tips_MvsF}
+\alias{uscrime_SvsN}
+\alias{vertebral_column}
+\alias{veteran_lung_cancer}
+\alias{vowel_MvsF}
+\alias{wine_1vs2}
+\alias{wine_1vs3}
+\alias{wine_2vs3}
+
+\title{
+Data for Classification
+}
+\description{
+50 multivariate data sets for binary classification. For more details refer {\url{http://www.wisostat.uni-koeln.de/de/forschung/software-und-daten/data-for-classification/}}
+
+The \code{getdata} function gets the data set from the package, and returns it. The dataset itself does not appear in the global environment and the existing variables with the same name remain unchanged.
+}
+\usage{
+# load the data set
+# data(name)
+
+# load the data set by name
+# data(list = "name")
+
+# load the data set by name to a variable
+# getdata("name")
+
+}
+\arguments{
+  \item{name}{
+the data set name. 
+}
+}
+\format{
+  A data frame with \code{n} observations on the \code{d} variables. The last \code{d+1} column is the class label.
+  \describe{
+    \item{\code{x[,1:d]}}{numeric values}
+    \item{\code{x[,d+1]}}{the numeric class label (0 or 1) or (1 or 2)}
+  }
+}
+\details{
+The package contains data sets used in the joint project of the University of Cologne and the Hochschule Merseburg "Classifying real-world data with the DDalpha-procedure". Comprehensive description of the methodology, and experimental settings and results of the study are presented in the work:
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+For a more complete explanation of the technique and further experiments see:
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). Fast nonparametric classification based on data depth. \emph{Statistical Papers} \bold{55} 49--69.
+
+50 binary classification tasks have been obtained from partitioning 33 freely accessible data sets. Multiclass problems were reasonably split into binary classification problems, some of the data set were slightly processed by removing objects or attributes and selecting prevailing classes. Each data set is provided with a (short) description and brief descriptive statistics. The name reflects the origination of the data. A letter after the name is a property filter, letters (also their  [...]
+
+The data have been collected as open source data in January 2013. Owners of the package decline any responsibility regarding their correctness or consequences of their usage. If you publish material based on these data, please quote the original source. Special requests regarding citations are found on data set's web page.
+
+}
+\references{
+Lange, T., Mosler, K., and Mozharovskyi, P. (2014). Fast nonparametric classification based on data depth. \emph{Statistical Papers} \bold{55} 49--69.
+
+Mozharovskyi, P., Mosler, K., and Lange, T. (2015). Classifying real-world data with the DD\eqn{\alpha}-procedure. \emph{Advances in Data Analysis and Classification} \bold{9} 287--314.
+
+The general list of sources consists of:
+
+UCI Machine Learning Repository {\url{http://archive.ics.uci.edu/ml}}\cr
+R-packages {\url{https://CRAN.R-project.org/}} \cr
+{\url{http://stat.cmu.edu}} \cr
+{\url{http://stat.ethz.ch/Teaching/Datasets}} \cr
+{\url{http://www.stats.ox.ac.uk/pub/PRNN}} 
+}
+
+\seealso{
+\code{\link[utils:data]{utils:data}}
+}
+
+\note{
+List of the datasets:
+
+baby\cr
+banknoten\cr
+biomed\cr
+bloodtransfusion\cr
+breast_cancer_wisconsin\cr
+bupa\cr
+chemdiab_1vs2\cr
+chemdiab_1vs3\cr
+chemdiab_2vs3\cr
+cloud\cr
+crabB_MvsF\cr
+crabF_BvsO\cr
+crabM_BvsO\cr
+crabO_MvsF\cr
+crab_BvsO\cr
+crab_MvsF\cr
+cricket_CvsP\cr
+diabetes\cr
+ecoli_cpvsim\cr
+ecoli_cpvspp\cr
+ecoli_imvspp\cr
+gemsen_MvsF\cr
+glass\cr
+groessen_MvsF\cr
+haberman\cr
+heart\cr
+hemophilia\cr
+indian_liver_patient_1vs2\cr
+indian_liver_patient_FvsM\cr
+iris_setosavsversicolor\cr
+iris_setosavsvirginica\cr
+iris_versicolorvsvirginica\cr
+irish_ed_MvsF\cr
+kidney\cr
+pima\cr
+plasma_retinol_MvsF\cr
+segmentation\cr
+socmob_IvsNI\cr
+socmob_WvsB\cr
+tae\cr
+tennis_MvsF\cr
+tips_DvsN\cr
+tips_MvsF\cr
+uscrime_SvsN\cr
+vertebral_column\cr
+veteran_lung_cancer\cr
+vowel_MvsF\cr
+wine_1vs2\cr
+wine_1vs3\cr
+wine_2vs3
+
+}
+
+
+\examples{
+# load a dataset using data()
+data(hemophilia)
+data(list = "hemophilia")
+rm(hemophilia)
+
+# load data set using getdata()
+hemophilia = "This is some existing object called 'hemophilia'. It remains unchanged"
+d = getdata("hemophilia")
+head(d)
+print(hemophilia)
+
+#get the list of all data sets
+names = data(package = "ddalpha")$results[,3]
+
+}
+
+
+\keyword{datasets}
\ No newline at end of file
diff --git a/man/infimalRank.Rd b/man/infimalRank.Rd
new file mode 100644
index 0000000..c002663
--- /dev/null
+++ b/man/infimalRank.Rd
@@ -0,0 +1,50 @@
+\name{infimalRank}
+\alias{infimalRank}
+\title{Adjusted Ranking of Functional Data Based on the Infimal Depth}
+\usage{
+infimalRank(ID, IA, ties.method = "max")
+}
+\arguments{
+\item{ID}{The vector of infimal depths of the curves of length \code{n}.}
+
+\item{IA}{The vector of the infimal areas corresponding to the infimal depths from \code{ID}
+of length \code{n}.}
+
+\item{ties.method}{Parameter for breaking ties in infimal area index. By default \code{max}, see 
+\code{rank}.}
+}
+\value{
+A vector of length \code{n}. Low depth values mean high ranks, i.e. potential outlyingness. 
+If some of the infimal depths are identical, the ranking of these functions is made according to the 
+values of the infimal area. There, higher infimal area index means higher rank, i.e. non-centrality.
+}
+\description{
+Returns a vector of adjusted depth-based ranks for infimal depth for functional data.
+}
+\details{
+Infimal depths for functional data tend to give to many functional observations the same 
+value of depth. Using this function, the data whose depth is the same is ranked according
+to the infimal area indicator. This indicator is provided in functions \code{depthf.fd1} along
+the value of the infimal depth.
+}
+\examples{
+datafA = dataf.population()$dataf[1:20]
+datafB = dataf.population()$dataf[21:50]
+D = depthf.fd1(datafA,datafB)
+infimalRank(D$Half_ID,D$Half_IA) 
+
+ID = c(0,1,0,0,0,1,1)
+IA = c(2,3,1,0,2,4,1)
+infimalRank(ID,IA)
+}
+\references{
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
+\keyword{rank}
diff --git a/man/is.in.convex.Rd b/man/is.in.convex.Rd
new file mode 100644
index 0000000..fe14e36
--- /dev/null
+++ b/man/is.in.convex.Rd
@@ -0,0 +1,63 @@
+\name{is.in.convex}
+\alias{is.in.convex}
+\title{
+Check Outsiderness
+}
+\description{
+Checks the belonging to at least one of class convex hulls of the training sample.
+}
+\usage{
+is.in.convex(x, data, cardinalities, seed = 0)
+}
+\arguments{
+  \item{x}{
+Matrix of objects (numerical vector as one object) whose belonging to convex hulls is to be checked; each row contains a \eqn{d}-variate point. Should have the same dimension as \code{data}.
+}
+  \item{data}{
+Matrix containing training sample where each row is a \eqn{d}-dimensional object, and objects of each class are kept together so that the matrix can be thought of as containing blocks of objects, representing classes.
+}
+  \item{cardinalities}{
+Numerical vector of cardinalities of each class in \code{data}, each entry corresponds to one class.
+}
+  \item{seed}{
+the random seed. The default value \code{seed=0} makes no changes.
+}
+}
+\details{
+Checks are conducted w.r.t. each separate class in \code{data} using the simplex algorithm, taken from the C++ implementation of the zonoid depth calculation  by Rainer Dyckerhoff.
+}
+\value{
+Matrix of \code{number of objects} rows and \code{number of classes} columns, containing \code{1} if an object belongs to the convex hull of the corresponding class, and \code{0} otherwise.
+}
+\references{
+Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996). Zonoid data depth: theory and computation. In: Prat A. (ed), \emph{COMPSTAT 1996. Proceedings in computational statistics}, Physica-Verlag (Heidelberg), 235--240.
+}
+\author{
+Implementation of the simplex algorithm is taken from the algorithm for computation of zonoid depth (Dyckerhoff, Koshevoy and Mosler, 1996) that has been implemented in C++ by Rainer Dyckerhoff.
+}
+\seealso{
+\code{\link{ddalpha.train}} and \code{\link{ddalpha.classify}} for application.
+}
+\examples{
+# Generate a bivariate normal location-shift classification task
+# containing 400 training objects and 1000 to test with
+class1 <- mvrnorm(700, c(0,0), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+class2 <- mvrnorm(700, c(2,2), 
+                  matrix(c(1,1,1,4), nrow = 2, ncol = 2, byrow = TRUE))
+trainIndices <- c(1:200)
+testIndices <- c(201:700)
+propertyVars <- c(1:2)
+classVar <- 3
+trainData <- rbind(cbind(class1[trainIndices,], rep(1, 200)), 
+                   cbind(class2[trainIndices,], rep(2, 200)))
+testData <- rbind(cbind(class1[testIndices,], rep(1, 500)), 
+                  cbind(class2[testIndices,], rep(2, 500)))
+data <- list(train = trainData, test = testData)
+
+# Count outsiders
+numOutsiders = sum(rowSums(is.in.convex(data$test[,propertyVars], 
+                                data$train[,propertyVars], c(200, 200))) == 0)
+cat(numOutsiders, "outsiders found in the testing sample.\n")
+}
+\keyword{ multivariate }
diff --git a/man/plot.ddalpha.Rd b/man/plot.ddalpha.Rd
new file mode 100644
index 0000000..ea31386
--- /dev/null
+++ b/man/plot.ddalpha.Rd
@@ -0,0 +1,54 @@
+\name{plot.ddalpha}
+\alias{plot.ddalpha}
+\title{
+Plots for the "ddalpha" Class
+}
+\description{
+\code{\link{depth.contours.ddalpha}} -- builds the data depth contours for multiclass 2-dimensional data using the trained classifier.
+\code{\link{draw.ddplot}} -- draws the \emph{DD}-plot of the existing DD\eqn{\alpha}-classifier.
+}
+\usage{
+\method{plot}{ddalpha}(x, type = c("ddplot", "depth.contours"), ...)
+}
+
+\arguments{
+  \item{x}{
+DD\eqn{\alpha}-classifier (obtained by \code{\link{ddalpha.train}}).
+}
+  \item{type}{
+type of the plot for \code{\link{draw.ddplot}} or \code{\link{depth.contours.ddalpha}}
+}
+  \item{\dots}{
+additional parameters passed to the depth functions and to \code{\link{plot}}
+}
+}
+
+\seealso{
+\code{\link{depth.}}
+
+\code{\link{depth.contours}}
+
+\code{\link{depth.graph}}
+}
+\examples{
+
+\dontrun{
+
+
+par(mfrow = c(2,2))
+data(hemophilia)
+
+ddalpha = ddalpha.train(hemophilia, depth = "none")
+plot(ddalpha, type = "depth.contours", main = "data")
+plot(ddalpha, type = "ddplot", main = "data", drawsep = F)
+
+for (depth in c("zonoid", "Mahalanobis", "projection", "spatial")){
+  ddalpha = ddalpha.train(hemophilia, depth = depth)
+  plot(ddalpha, type = "depth.contours", main = depth, drawsep = T)
+  plot(ddalpha, type = "ddplot", main = depth)
+}
+
+}
+}
+
+\keyword{ visualization }
diff --git a/man/plot.ddalphaf.Rd b/man/plot.ddalphaf.Rd
new file mode 100644
index 0000000..ccc2cd5
--- /dev/null
+++ b/man/plot.ddalphaf.Rd
@@ -0,0 +1,57 @@
+\name{plot.ddalphaf}
+\alias{plot.ddalphaf}
+\title{
+Plots for the "ddalphaf" Class
+}
+\description{
+
+\code{\link{plot.functional}} -- plots the functional data used by classifier
+
+\code{\link{depth.contours.ddalpha}} -- builds the data depth contours for multiclass 2-dimensional data using the trained classifier.
+\code{\link{draw.ddplot}} -- draws the \emph{DD}-plot of the existing DD\eqn{\alpha}-classifier.
+}
+\usage{
+\method{plot}{ddalphaf}(x, type = c("functional.data", "ddplot", "depth.contours"), ...)
+}
+
+\arguments{
+  \item{x}{
+functional DD\eqn{\alpha}-classifier (obtained by \code{\link{ddalphaf.train}}).
+}
+  \item{type}{
+type of the plot for \code{\link{plot.functional}}, \code{\link{draw.ddplot}} or \code{\link{depth.contours.ddalpha}}
+}
+  \item{\dots}{
+additional parameters passed to the depth functions and to \code{\link{plot}}
+}
+}
+
+\seealso{
+\code{\link{depth.}}
+
+\code{\link{depth.contours}}
+
+\code{\link{depth.graph}}
+}
+\examples{
+
+\dontrun{
+
+dataf = dataf.growth()
+ddalphaf = ddalphaf.train (dataf$dataf, dataf$labels, 
+                            classifier.type = "ddalpha", maxNumIntervals = 2)
+
+# plot the functional data
+plot(ddalphaf)
+
+# plot depth contours and separation in the transformed space 
+# (possible only if maxNumIntervals = 2)
+plot(ddalphaf, type = "depth.contours")
+
+# plot the DD-plot
+plot(ddalphaf, type = "ddplot")
+
+}
+}
+\keyword{ functional }
+\keyword{ visualization }
diff --git a/man/plot.functional.Rd b/man/plot.functional.Rd
new file mode 100644
index 0000000..e86c67e
--- /dev/null
+++ b/man/plot.functional.Rd
@@ -0,0 +1,77 @@
+\name{plot.functional}
+\alias{plot.functional}
+\alias{lines.functional}
+\alias{points.functional}
+\title{
+Plot functions for the Functional Data
+}
+\description{
+Plots the functional data given in the form which is described in the topic \code{\link{dataf.*}}.
+}
+\usage{
+\method{plot}{functional}(x, 
+      main = "Functional data", xlab = "args", ylab = "vals", 
+      colors = c("red", "blue", "green", "black", "orange", "pink"), ...)
+      
+\method{lines}{functional}(x, 
+      colors = c("red", "blue", "green", "black", "orange", "pink"), ...)
+      
+\method{points}{functional}(x, 
+      colors = c("red", "blue", "green", "black", "orange", "pink"), ...)
+}
+
+\arguments{
+  \item{x}{
+The functional data as in the topic \code{\link{dataf.*}}. 
+Note, that the in order to use s3 methods the data must be of class "functional". 
+}
+  \item{main}{
+an overall title for the plot: see \code{\link{title}}
+}
+  \item{xlab}{
+a title for the x axis: see \code{\link{title}}
+}
+  \item{ylab}{
+a title for the y axis: see \code{\link{title}}
+}
+  \item{colors}{
+the colors for the classes of the data. The colors are applied to the classes sorted in alphabetical order. Use the same set of classes to ensure that the same colours are selected in \code{lines} and \code{points} as in \code{plot} (do not remove entire classes). 
+}
+  \item{\dots}{
+  additional parameters
+}
+}
+
+\seealso{
+\code{\link{dataf.*}} for functional data description
+}
+\examples{
+
+\dontrun{
+  ## load the Growth dataset
+  dataf = dataf.growth()
+  
+  labels = unlist(dataf$labels)
+  plot(dataf, 
+       main = paste("Growth: girls red (", sum(labels == "girl"), "),", 
+                    " boys blue (", sum(labels == "boy"), ")", sep=""),
+       xlab="Year", ylab="Height, cm",
+       colors = c("blue", "red")   # in alphabetical order of class labels   
+  )
+  
+  # plot an observation as a line
+  observation = structure(list(dataf = list(dataf$dataf[[1]])), class = "functional")
+  lines(observation, colors = "green", lwd = 3)
+  
+  # plot hight at the age of 14 
+  indexAge14 = which(observation$dataf[[1]]$args == 14)
+  hightAge14 = observation$dataf[[1]]$vals[indexAge14]
+  atAge14 = structure(list(
+                      dataf = list(dataf = list(args = 14, vals = hightAge14))
+                      ), class = "functional")
+  points(atAge14, colors = "yellow", pch = 18)
+}
+
+}
+\keyword{ visualization }
+\keyword{ functional }
diff --git a/man/rawfd2dataf.Rd b/man/rawfd2dataf.Rd
new file mode 100644
index 0000000..3ec9055
--- /dev/null
+++ b/man/rawfd2dataf.Rd
@@ -0,0 +1,46 @@
+\name{rawfd2dataf}
+\alias{rawfd2dataf}
+\title{Transform Raw Functional Data to a \code{dataf} Object}
+\usage{
+rawfd2dataf(X, range)
+}
+\arguments{
+\item{X}{Either a matrix of size \code{n*d}, or an array of dimension \code{n*d*k} of functional values. Here \code{n}
+stands for the number of functions, \code{d} is the number of equi-distant points in the domain where the functional
+values are evaluated, and if applicable, \code{k} is the dimensionality of the (vector-valued) functional data.}
+
+\item{range}{A vector of size two that represents the endpoints of the common domain of all functions \code{X}.}
+}
+\value{
+A (possibly multivariate) \code{dataf} object corresponding to the functional data \code{X} evaluated at an
+equi-distant grid of points.
+}
+\description{
+Constructs a (possibly multivariate) functional data object given by an array of its functional values
+evaluated at an equi-distant grid of points, and transforms it into a \code{dataf} object more suitable 
+for work in the \code{ddalpha} package.
+}
+\examples{
+## transform a matrix into a functional data set
+n = 5
+d = 21
+X = matrix(rnorm(n*d),ncol=d)
+rawfd2dataf(X,range=c(0,1))
+
+## transform an array into a multivariate functional data set
+k = 3
+X = array(rnorm(n*d*k),dim=c(n,d,k))
+rawfd2dataf(X,range=c(-1,1))
+
+}
+\seealso{
+\code{\link{dataf2rawfd}}
+
+\code{\link{depthf.fd1}}
+
+\code{\link{depthf.fd2}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{functional}
diff --git a/man/resetPar.Rd b/man/resetPar.Rd
new file mode 100644
index 0000000..1554c5f
--- /dev/null
+++ b/man/resetPar.Rd
@@ -0,0 +1,30 @@
+\name{resetPar}
+\alias{resetPar}
+\title{
+Reset Graphical Parameters
+}
+\description{
+The function returns the default graphical parameters for \code{\link{par}}.
+}
+\usage{
+resetPar()
+}
+\details{
+The returned parameters are used as input parameters for \code{\link{par}}.
+}
+\value{
+The list of graphical parameters described in the 'Graphical Parameters' section of \code{\link{par}}.
+}
+\examples{
+
+par(mfrow = c(1,2), mar = c(2,2,2,2))
+plot(sin, -pi, 2*pi)
+plot(cos, -pi, 2*pi)
+
+par(resetPar())
+plot(sin, -pi, 2*pi)
+plot(cos, -pi, 2*pi)
+
+}
+
+\keyword{ visualization }
diff --git a/man/shape.fd.analysis.Rd b/man/shape.fd.analysis.Rd
new file mode 100644
index 0000000..567d9e6
--- /dev/null
+++ b/man/shape.fd.analysis.Rd
@@ -0,0 +1,113 @@
+\name{shape.fd.analysis}
+\alias{shape.fd.analysis}
+\title{Diagnostic Plot for First and Second Order Integrated and Infimal Depths}
+\usage{
+shape.fd.analysis(datafA, datafB, range = NULL, d = 101, order = 1,
+  method = c("halfspace", "simplicial"), approx = 0, title = "",
+  nfun = 10, plot = TRUE)
+}
+\arguments{
+\item{datafA}{A single function whose depth is computed, represented by a 
+\code{dataf} object of arguments and functional values.}
+
+\item{datafB}{Functional dataset with respect to which the depth of \code{datafA} is computed. 
+\code{datafB} is represented by a \code{dataf} object of arguments and functional values. 
+\code{n} stands for the number of functions. The grid of observation points for the 
+functions in \code{datafA} and \code{datafB} may not be the same.}
+
+\item{range}{The common range of the domain where the functions \code{datafA} and \code{datafB} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{datafA} and \code{datafB}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{order}{The order of the depth to be used in the plot, for \code{order=1} produces
+the plot of univariate marginal depth of \code{A} and \code{nfun} functions from \code{B} 
+over the domain of the functions. For \code{order=2} produces the bivariate contour plot 
+of the bivariate depths of \code{A} at couples of points from the domain.}
+
+\item{method}{The depth that is used in the diagnostic plot. possible values are \code{halfspace} for 
+the halfspace depth, or \code{simplicial} for the simplicial depth.}
+
+\item{approx}{For \code{order=2}, the number of approximations used in the computation of the order extended depth. By default
+this is set to \code{0}, meaning that the depth is computed at all possible \code{d^2}
+combinations of the points in the domain. When set to a positive integer, \code{approx}
+bivariate points are randomly sampled in unit square, and at these points the bivariate depths of the
+corresponding functional values are computed.}
+
+\item{title}{The title of the diagnostic plot.}
+
+\item{nfun}{For \code{order=1}, the number of functions from \code{B} whose coordinate-wise
+univariate depths of functional values should be displayed with the depth of \code{A}.
+The depth of \code{A} is displayed in solid red line, the depths of the functions from \code{B}
+in dashed black.}
+
+\item{plot}{Logical: should the function by plotted?}
+}
+\value{
+For \code{order=1} two depth values, and two vectors of pointwise depths:
+\itemize{
+\item \code{Simpl_FD} the first order integrated depth based on the simplicial depth,
+\item \code{Half_FD} the first order integrated depth based on the halfspace depth,
+\item \code{Simpl_ID} the first order infimal depth based on the simplicial depth,
+\item \code{Half_ID} the first order infimal depth based on the halfspace depth,
+   \item \code{PSD} the vector of length \code{d} containing the computed 
+   pointwise univariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+   \item \code{PHD} the vector of length \code{d} containing the computed 
+   pointwise univariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+}
+   In addition, the first order integrated / infimal depth diagnostic plot of the function \code{A} with respect to
+   the random sample given by the functions corresponding to the rows of the matrix \code{B} is produced.
+
+   For \code{order=2} four depth values, and two matrices of pointwise depths:
+\itemize{
+\item \code{Simpl_FD} the second order integrated depth based on the simplicial depth,
+\item \code{Half_FD} the second order integrated depth based on the halfspace depth,
+\item \code{Simpl_ID} the second order infimal depth based on the simplicial depth,
+\item \code{Half_ID} the second order infimal depth based on the halfspace depth,
+   \item \code{PSD} the matrix of size \code{d*d} containing the computed 
+   pointwise bivariate simplicial depths used for the computation of \code{Simpl_FD} and \code{Simpl_ID},
+   \item \code{PHD} the matrix of size \code{d*d} containing the computed 
+   pointwise bivariate halfspace depths used for the computation of \code{Half_FD} and \code{Half_ID}.
+}
+   In addition, the second order integrated / infimal depth diagnostic plot of the function \code{A} with respect to
+   the random sample given by the functions corresponding to the rows of the matrix \code{B} is produced.
+}
+\description{
+Produce the diagnostic plot based on the fist or second order extended integrated / infimal depths.
+}
+\details{
+Plots a diagnostic plot of pointwise univariate (or bivariate) depths for all possible points (or couples of points) from the domain of the 
+functional data. From such a plot it is possible to infer into the first order (or second order) properties of a single function \emph{x} with respect 
+to the given set of functional data. For \code{order=1}, the integral of the displayed function is the integrated depth of \emph{x}, 
+the smallest value of the function is the infimal depth of \emph{x}. 
+For \code{order=2}, the bivariate integral of the displayed surface gives the second order extended 
+integrated depth of \emph{x}, the infimum of this bivariate function gives the second order infimal depth of \emph{x}. 
+For details see Nagy et al. (2016) and \code{\link{depthf.fd1}}.
+}
+\examples{
+datafA = dataf.population()$dataf[1]
+dataf = dataf.population()$dataf[2:20]
+shape.fd.analysis(datafA,dataf,order=1)
+shape.fd.analysis(datafA,dataf,order=2,approx=0)
+
+}
+\references{
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\seealso{
+\code{\link{depthf.fd1}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
+\keyword{outlier}
+\keyword{plot}
+\keyword{shape}
diff --git a/man/shape.fd.outliers.Rd b/man/shape.fd.outliers.Rd
new file mode 100644
index 0000000..ced484d
--- /dev/null
+++ b/man/shape.fd.outliers.Rd
@@ -0,0 +1,89 @@
+\name{shape.fd.outliers}
+\alias{shape.fd.outliers}
+\title{Functional Depth-Based Shape Outlier Detection}
+\usage{
+shape.fd.outliers(dataf, range = NULL, d = 101, q = 0.05,
+  method = c("halfspace", "simplicial"), approx = 100, print = FALSE,
+  plotpairs = FALSE, max.order = 3, exclude.out = TRUE,
+  output = c("matrix", "list"), identifiers = NULL)
+}
+\arguments{
+\item{dataf}{Functional dataset, represented by a \code{dataf} object of their arguments
+and functional values. \code{n} stands for the number of functions.}
+
+\item{range}{The common range of the domain where the fucntions \code{dataf} are observed.
+Vector of length 2 with the left and the right end of the interval. Must contain all arguments given in 
+\code{dataf}.}
+
+\item{d}{Grid size to which all the functional data are transformed. For depth computation, 
+all functional observations are first transformed into vectors of their functional values of length \code{d}
+corresponding to equi-spaced points in the domain given by the interval \code{range}. Functional values in these
+points are reconstructed using linear interpolation, and extrapolation.}
+
+\item{q}{The quantile presenting a threshold for the first order outlier detection. Functions with first order integrated depth
+smaller than the \code{q} quantile of this sample of depths are flagged as potential outliers. If set to \code{NULL}, the
+the outliers are detected from the first order integrated depth after the log-transformation, as for higher order outliers.}
+
+\item{method}{The depth that is used in the diagnostic plot. possible values are \code{halfspace} for 
+the halfspace depth, or \code{simplicial} for the simplicial depth.}
+
+\item{approx}{For the computation of the third order integrated depth,
+the number of approximations used in the computation of the order extended depth. By default
+this is set to \code{100}, meaning that \code{100}
+trivariate points are randomly sampled in unit cube, and at these points the trivariate depths of the
+corresponding functional values. May be set to \code{0} to compute the depth at all possible \code{d^3}
+combinations of the points in the domain. This choice may result in very slow computation, see also \code{\link{depthf.fd1}}.}
+
+\item{print}{If the rows of \code{X} are named, \code{print=TRUE} enables a graphical output when the names of the outlying curves
+are displayed.}
+
+\item{plotpairs}{If set to \code{TRUE}, the scatter plot of the computed depths for orders \code{1}, \code{2} and \code{3} is
+is displayed. Here, the depths corresponding to the flagged outliers are plotted in colour.}
+
+\item{max.order}{Maximal order of shape outlyingness to be computed, can be set to \code{1}, \code{2}, or \code{3}.}
+
+\item{exclude.out}{Logical variable; exclude the detected lower order outliers in the flagging process? By default \code{TRUE}.}
+
+\item{output}{Output method, can be set to \code{matrix} for a matrix with logical entries (\code{TRUE} for outliers), or \code{list} for 
+a list of outliers.}
+
+\item{identifiers}{A vector of names for the data observations. Facilitates identification of outlying functions.}
+}
+\value{
+A matrix of logical values of size \code{n*4}, where \code{n} is the sample size. In the first three rows indicators of outlyingness
+of the corresponding functions for orders \code{1}, \code{2} and \code{3} are given, in the fourth row the indicator of outlyingness
+with respect to the comparison of the first, and third order depths is given. That is, the fist row corresponds to the first order outliers, 
+the second row to the second order outliers, and the last two rows formally to the third order outliers. Please consult Nagy et al. (2016)
+to interpret the notion of shape outlyingness.
+}
+\description{
+Detects functional outliers of first three orders, based on the order extended integrated depth for functional data.
+}
+\details{
+Using the procedure described in Nagy et al. (2016), the function uses the order extended integrated depths for functions, 
+see \code{\link{depthf.fd1}} and \code{\link{shape.fd.analysis}}, to perform informal functional shape outlier detection. 
+Outliers of the first order (horizontal shift outliers) are found as the functions with \code{q} \% of smallest (first order)
+integrated depth values. Second and third order outliers (shape outliers) are found using the extension of the boxplot method
+for depths as described in the paper Nagy et al. (2016).
+}
+\examples{
+n = 30
+dataf = dataf.population()$dataf[1:n]
+shape.fd.outliers(dataf,print=TRUE,plotpairs=TRUE,
+identifiers=unlist(dataf.population()$identifier)[1:n])
+
+}
+\references{
+Nagy, S., Gijbels, I. and Hlubinka, D.  (2017).
+Depth-based recognition of shape outlying functions. 
+\emph{Journal of Computational and Graphical Statistics}. To appear.
+}
+\seealso{
+\code{\link{depthf.fd1}}, \code{\link{shape.fd.analysis}}
+}
+\author{
+Stanislav Nagy, \email{nagy at karlin.mff.cuni.cz}
+}
+\keyword{depth}
+\keyword{functional}
+\keyword{outlier}
diff --git a/src/AlphaProcedure.cpp b/src/AlphaProcedure.cpp
new file mode 100644
index 0000000..ba944b9
--- /dev/null
+++ b/src/AlphaProcedure.cpp
@@ -0,0 +1,330 @@
+/*
+  File:             AlphaProcedure.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     13.11.2015
+
+  Contains the modified alpha-procedure for the DDalpha-classifier.
+
+  For a description of the algorithm, see:
+    Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric classification based on data depth. Statistical Papers.
+    Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world data with the DDalpha-procedure. Mimeo.
+*/
+
+#include "stdafx.h"
+
+#define PI2 1.5707963267948966192313216916398
+
+/* Definition of static variables*/
+static TMatrix x;
+static TVariables y;
+static unsigned int numLess;
+static unsigned int numMore;
+static int difference;
+static unsigned int n;
+static unsigned int d;
+static TVariables properties;
+static Features features;
+static TPoint curFeature;
+static int numStartFeatures;
+
+static int GetProducts(TPoint values, unsigned int power, TPoint *output){
+	int d = values.size();
+	if (power == 1){
+		output->resize(d);
+		for (int i = 0; i < d; i++){(*output)[i] = values[i];}
+		return 0;
+	}
+	output->resize(0);
+	TVariables indices(power);
+	unsigned int counter = 0;
+	while(indices[0] < d){
+		output->push_back(1);
+		for (unsigned int i = 0; i < power; i++){
+			(*output)[counter] *= values[indices[i]];
+		}
+		counter++;
+		int lastArray = power - 1;
+		while(lastArray > 0 && indices[lastArray] == d - 1){lastArray--;}
+		indices[lastArray]++;
+		for (unsigned int i = lastArray; i < power; i++){
+			indices[i] = indices[lastArray];
+		}
+		
+	}
+	return 0;
+}
+
+static int Compare(UPoint p1, UPoint p2){
+	return (p1.value < p2.value);
+}
+
+static int UpdateCurFeature(){	
+	double angle = -features[features.size() - 1].angle;
+	unsigned int yAxisNumber = features[features.size() - 1].number;
+	for (unsigned int i = 0; i < n; i++){
+		curFeature[i] = curFeature[i]*cos(angle) - x[yAxisNumber][i]*sin(angle);
+	}
+	return 0;
+}
+
+static unsigned int DGetMinError(unsigned int yAxisNumber, Feature *yFeature){
+	/* Calculate angle of each point to the xAxis and sort them */
+	UPoints angles(n);
+	for (unsigned int i = 0; i < n; i++){
+		angles[i] = UPoint((x[yAxisNumber][i] == 0 && curFeature[i] == 0) ? 0 : y[i] , atan2(x[yAxisNumber][i], curFeature[i]));
+	}
+	sort(angles.begin(), angles.end(), Compare);
+/*
+	for (unsigned i = 0; i < n; i++){
+		cout << (angles[i].pattern > 0 ? 1 : angles[i].pattern < 0 ? 0 : 3);
+	}
+	cout << endl;
+*/
+	/* Look for the optimal threshold */
+	int leftDiff = 0; unsigned int optThreshold = 0; int maxCorr = 0; double nextValue = angles[0].value;
+	for (unsigned i = 0; i < n - 1; i++){
+		leftDiff += angles[i].pattern;
+		if (angles[i + 1].value == nextValue){ continue; } nextValue = angles[i].value;
+		int corr = max(numMore - leftDiff, numLess + leftDiff);
+		//int corr = abs(leftDiff) + abs(difference - leftDiff); 
+		if (corr > maxCorr){ maxCorr = corr; optThreshold = i; }
+//		cout << i << " " << corr << "; ";
+	}
+//	cout << endl;
+
+	/* Determine the angle of the separating direction */
+	yFeature->angle = (angles[optThreshold].value + angles[optThreshold + 1].value) / 2. - PI2; yFeature->error = n - maxCorr; yFeature->number = yAxisNumber;
+	return yFeature->error;
+}
+
+static unsigned int GetRay(TPoint *ray){
+	ray->resize(d);
+	double drivingAxis = 1;
+	for (unsigned int i = features.size() - 1; i > 0; i--){
+		(*ray)[features[i].number] = drivingAxis*sin(features[i].angle);
+		drivingAxis = drivingAxis*cos(features[i].angle);
+	}
+	(*ray)[features[0].number] = drivingAxis;
+	
+	UPoints points(n);
+	for (unsigned int i = 0; i < n; i++){
+		points[i].pattern = y[i];
+		for (unsigned int j = 0; j < d; j++){
+			points[i].value += (*ray)[j]*x[j][i];
+		}
+#ifdef DEF_OUT_ALPHA
+		if (OUT_ALPHA) Rcout << points[i].value << ", ";
+#endif
+	}
+#ifdef DEF_OUT_ALPHA
+	if (OUT_ALPHA) Rcout << endl;
+#endif
+	sort(points.begin(), points.end(), Compare);
+	unsigned int numLeftLess = 0;
+	unsigned int numLeftMore = 0;
+	for (unsigned int i = 0; i < n; i++){
+		if (points[i].value > 0){break;}
+		if (points[i].pattern > 0){numLeftMore++;}else{numLeftLess++;}
+	}
+	unsigned int errorLeftLess = numLeftMore + numLess - numLeftLess;
+	unsigned int errorLeftMore = numLeftLess + numMore - numLeftMore;
+	if (errorLeftLess > errorLeftMore){
+		for (unsigned int i = 0; i < d; i++){
+			(*ray)[i] *= -1.;
+		}
+	}
+#ifdef DEF_OUT_ALPHA
+	if (OUT_ALPHA){
+	Rcout << errorLeftLess << " " << errorLeftMore << " ";
+	}
+#endif
+	return 0;
+}
+
+int Initialization(TMatrix input, TVariables output, unsigned int minFeatures){
+	n = input.size(); if (n == 0){return -1;} // number of points
+	if (output.size() != n){return -1;}
+	d = input[0].size(); if (d == 0){return -1;} // space dimension		
+	if (minFeatures == 0 || minFeatures > 2){return -1;}else{numStartFeatures = minFeatures;}
+	
+	/* Filling static variables x and y with input and output (transposing x) */
+	x.resize(d);
+	for (unsigned int i = 0; i < d; i++){
+		x[i] = TPoint(n);
+		for (unsigned int j = 0; j < n; j++){
+			x[i][j] = input[j][i];
+		}
+	}
+	y.resize(n); numLess = 0; numMore = 0;
+	difference = 0;
+	for (unsigned int i = 0; i < n; i++){
+		y[i] = output[i];
+		difference += y[i];
+		if (y[i] > 0){numMore++;}else{numLess++;}
+	}
+	return 0;
+}
+
+int Alpha(TPoint *ray){
+	/* 0. Subinitialization - clear auxiliary variables and empty and nonsignificant input axes */
+	properties.resize(d); for (unsigned int i = 0; i < d; i++){properties[i] = i;} // initialize properties: all available
+	features.clear();
+
+	outMatrix(x);
+
+	/* 1. Null-cycle */
+	if (numStartFeatures == 2){ // start with two features?
+		Feature optFeatureX;
+		Feature optFeatureY;
+		for (unsigned int i = 0; i < properties.size() - 1; i++){
+			for (unsigned int j = i + 1; j < properties.size(); j++){
+				/* Calculating minimal error on the plane of the i-th and the j-th properties */
+				Feature tmpFeature;
+				curFeature = x[properties[i]];
+				unsigned int error = DGetMinError(properties[j], &tmpFeature);
+#ifdef DEF_OUT_ALPHA
+				if (OUT_ALPHA){
+					Rcout << properties[i] << ", " << properties[j] << ", " << tmpFeature.angle << ", " << error << ", " << endl;
+				}
+#endif
+				if (error < optFeatureY.error){optFeatureX.number = properties[i]; optFeatureY = tmpFeature;}
+			}
+		}
+		features.push_back(optFeatureX);
+		features.push_back(optFeatureY);
+		for (unsigned int i = 0; i < properties.size(); i++){ // delete recently found X and Y properties
+			if (properties[i] == optFeatureX.number){properties.erase(properties.begin() + i);}
+			if (properties[i] == optFeatureY.number){properties.erase(properties.begin() + i);}
+		}
+		curFeature = x[features[0].number];
+		UpdateCurFeature();
+		outString("Feature 1:");
+		outVector(curFeature);
+	}
+
+	/* 2. Main cycle */
+	/* Searching an optimal feature space while empirical error rate decreases */	
+	while(features[features.size() - 1].error > 0 && properties.size() > 0){
+		Feature optFeature;
+		for (unsigned int i = 0; i < properties.size(); i++){
+			/* Calculating minimal error on the plane of the curFeature and the j-th properties */
+			Feature tmpFeature;
+			unsigned int error = DGetMinError(properties[i], &tmpFeature);
+#ifdef DEF_OUT_ALPHA
+			if (OUT_ALPHA){
+				Rcout << properties[i] << ", " << tmpFeature.angle << ", " << error << ", " << endl;
+			}
+#endif
+			if (error < optFeature.error){optFeature = tmpFeature;}
+		}		
+		if (optFeature.error < features[features.size() - 1].error){
+			features.push_back(optFeature);
+			for (unsigned int i = 0; i < properties.size(); i++){ // delete recently found property
+				if (properties[i] == optFeature.number){properties.erase(properties.begin() + i);}
+			}
+			UpdateCurFeature();
+			outString("Feature :");
+			outVector(curFeature);
+		}else{break;}
+	}
+	
+	outString("Features:");
+	outFeatures(features);
+
+	/* Restoring the projection vector */
+	GetRay(ray);
+	return features[features.size() - 1].error;
+}
+
+int Classify(TMatrix input, TPoint weights, TVariables *output){
+	/* 0. Initialization */
+	unsigned int l = input.size(); if (l == 0){return -1;}
+	unsigned int p = weights.size(); if (p == 0){return -1;} if (p > input[0].size()){return -1;}
+	output->resize(l);
+	/* 1. Classification of each point by comparison of their projections to 0 */
+	for (unsigned int i = 0; i < l; i++){
+		double curSum = 0;
+		for (unsigned int j = 0; j < p; j++){curSum += weights[j]*input[i][j];}
+		(*output)[i] = (curSum > 0) ? 1 : -1;
+	}
+	return 0;
+}
+
+int ExtendWithProducts(TMatrix input, unsigned int upToPower, TMatrix *output){
+	unsigned int n = input.size();
+	output->resize(n);
+	for (unsigned int i = 0; i < n; i++){
+		for(unsigned int j = 1; j <= upToPower; j++){
+			TPoint extension;
+			GetProducts(input[i], j, &extension);
+			TPoint::iterator it;
+			it = (*output)[i].end();
+			(*output)[i].insert(it, extension.begin(), extension.end());
+		}
+	}
+	return 0;
+}
+
+int Learn(TMatrix input, TVariables output, unsigned int minFeatures, TPoint *ray){
+	if (Initialization(input, output, minFeatures) != 0){return -1;}
+	return Alpha(ray);
+}
+
+int LearnCV(TMatrix input,  TVariables output, unsigned int minFeatures, unsigned int upToPower, unsigned int folds, TPoint *ray, unsigned int *power){
+	bool oldOUT_ALPHA = OUT_ALPHA;
+	OUT_ALPHA = false;
+	unsigned int optDegree = 0;
+	unsigned int optError = INT_MAX;
+	unsigned int shortFolds = folds - 1;
+
+	/* Get the optimal degree (outer cross-validation loop) */
+	vector<TMatrix> spaceExtensions(upToPower);
+	for (unsigned int i = 0; i < upToPower; i++){
+		ExtendWithProducts(input, i + 1, &spaceExtensions[i]); // get the (i + 1)-th space extention
+		Initialization(spaceExtensions[i], output, minFeatures); // initialize
+		/* Prepare slider and start to cut data */
+		unsigned sliderSize = (unsigned)ceil((double)n / folds); unsigned chSizeVal = n%folds - 1;
+		TMatrix xSlider(sliderSize); TVariables ySlider(sliderSize);
+		for (unsigned int j = 0; j < sliderSize; j++){
+			xSlider[j] = TPoint(d);
+			for (unsigned int k = 0; k < d; k++){xSlider[j][k] = x[k][j*shortFolds]; x[k].erase(x[k].begin() + j*shortFolds);}
+			ySlider[j] = y[j*shortFolds]; y.erase(y.begin() + j*shortFolds);
+			difference -= ySlider[j]; if (ySlider[j] > 0){numMore--;}else{numLess--;}			
+		}
+		n -= sliderSize;
+		/* Cross-validation for the (i + 1)-th space extension (inner cross-validation loop) */
+		unsigned int error = 0; TPoint p(0);
+		double tmpXSliderVal; int tmpYSliderVal;
+		for (unsigned int j = 0; j < folds; j++){
+			/* Estimate the current cut */			
+			Alpha(&p);
+			TVariables res(0);
+			Classify(xSlider, p, &res);
+			for (unsigned int k = 0; k < sliderSize; k++){error += abs(res[k] - ySlider[k])/2;}
+			/* Increment the pointer */
+			if (j == shortFolds){break;}
+			/* Replace the slider */
+			if (j == chSizeVal){
+				for (unsigned int l = 0; l < d; l++){x[l].push_back(xSlider[sliderSize - 1][l]);} y.push_back(ySlider[sliderSize - 1]);
+				n++; difference += ySlider[sliderSize - 1]; if (ySlider[sliderSize - 1] > 0){numMore++;}else{numLess++;}
+				sliderSize--; xSlider.erase(xSlider.begin() + sliderSize); ySlider.erase(ySlider.begin() + sliderSize);
+//				for (unsigned int j = 0; j < d; j++){x[j].shrink_to_fit();} y.shrink_to_fit(); - IT IS TOO DANGEROUS
+			}
+			for (unsigned int k = 0; k < sliderSize; k++){
+				for (unsigned int l = 0; l < d; l++){tmpXSliderVal = x[l][k*shortFolds + j]; x[l][k*shortFolds + j] = xSlider[k][l]; xSlider[k][l] = tmpXSliderVal;}
+				difference += ySlider[k]; if (ySlider[k] > 0){numMore++;}else{numLess++;}
+				tmpYSliderVal = y[k*shortFolds + j]; y[k*shortFolds + j] = ySlider[k]; ySlider[k] = tmpYSliderVal;
+				difference -= ySlider[k]; if (ySlider[k] > 0){numMore--;}else{numLess--;}
+			}
+		}
+		/* Check if we've got a better result */ 
+		if (error < optError){optError = error; optDegree = i + 1; if (optError == 0){break;}}
+	}
+
+	OUT_ALPHA = oldOUT_ALPHA;
+	/* Eventually get the classification ray */
+	Initialization(spaceExtensions[optDegree - 1], output, minFeatures); // initialize
+	power[0] = optDegree;
+	return Alpha(ray);
+}
diff --git a/src/AlphaProcedure.h b/src/AlphaProcedure.h
new file mode 100644
index 0000000..8b2485e
--- /dev/null
+++ b/src/AlphaProcedure.h
@@ -0,0 +1,17 @@
+/*
+  File:             AlphaProcedure.h
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     28.02.2013
+
+  Contains the modified alpha-procedure for the DDalpha-classifier.
+
+  For a description of the algorithm, see:
+    Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric classification based on data depth. Statistical Papers.
+    Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world data with the DDalpha-procedure. Mimeo.
+*/
+
+int ExtendWithProducts(TMatrix x, unsigned int upToPower, TMatrix *_x);
+int Learn(TMatrix input, TVariables output, unsigned int minFeatures, TPoint *ray);
+int LearnCV(TMatrix input, TVariables output, unsigned int minFeatures, unsigned int upToPower, unsigned int folds, TPoint *ray, unsigned int *power);
+int Classify(TMatrix input, TPoint weights, TVariables *output);
diff --git a/src/Common.cpp b/src/Common.cpp
new file mode 100644
index 0000000..ad0f698
--- /dev/null
+++ b/src/Common.cpp
@@ -0,0 +1,281 @@
+/*
+  File:             Common.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  17.05.2013
+  Last revised:     13.11.2015
+  
+  Commonly used functions.
+*/
+
+#include "stdafx.h"
+
+// by rows
+TDMatrix asMatrix(double* arr, int n, int d){
+	TDMatrix mat = new double*[n];
+	for (int i = 0; i < n; i++)
+		mat[i] = arr + i*d;
+	return mat;
+}
+
+double** newM(int n, int d){
+	double* a = new double[n*d];
+	return asMatrix(a, n, d);
+}
+
+void deleteM(TDMatrix X){
+	delete[] X[0];
+	delete[] X;
+}
+
+TDMatrix copyM(TDMatrix X, int n, int d){
+	double* a = new double[n*d];
+	memcpy(a, X[0], n*d*sizeof(double));
+	return asMatrix(a, n, d);
+}
+
+void printMatrix(TDMatrix mat, int n, int d){
+	for (int i = 0; i < n; i++){
+		for (int j = 0; j < d; j++)
+			Rcout << mat[i][j] << "\t";
+		Rcout << endl;
+	}
+	Rcout << endl;
+}
+
+
+unsigned long long choose(unsigned long long n, unsigned long long k){
+	unsigned long long r = n--; unsigned long long d = 2;
+	while (d <= k){ r *= n--; r /= d++; }
+	return r;
+}
+
+unsigned long long fact(unsigned long long n){
+	unsigned long long r = 1; unsigned long long i = 2;
+	while (i <= n){ r *= i++; }
+	return r;
+}
+
+/* -------------------------------------------------------------------------- */
+/* By Rainer Dyckerhoff, modified by Pavlo Mozharovskyi                       */
+/* Solves a uniquely solvable system of linear equations                      */
+/* -------------------------------------------------------------------------- */
+bool solveUnique(TDMatrix A, double* b, double* x, int d){
+	int imax, jmax;
+	int* colp = new int[d];
+	double amax;
+	for (int k = 0; k < d - 1; k++) {
+		imax = k;
+		amax = abs(A[k][k]);
+		colp[k] = k;
+		// Spaltenmaximum finden
+		for (int i = k + 1; i < d; i++) {
+			if (abs(A[i][k]) > amax) {
+				amax = abs(A[i][k]);
+				imax = i;
+			}
+		}
+		// Spaltenmaximum gleich null => complete pivoting
+		if (amax < eps_pivot) {
+			for (int j = k + 1; j < d; j++) {
+				for (int i = k; i < d; i++) {
+					if (abs(A[i][j]) > amax) {
+						amax = abs(A[i][j]);
+						imax = i;
+						jmax = j;
+					}
+				}
+			}
+			if (amax < eps_pivot) {
+				delete[] colp;
+				return false;
+			}
+			// Spaltentausch
+			for (int i = 0; i < d; i++) {
+				double tmp = A[i][k];
+				A[i][k] = A[i][jmax];
+				A[i][jmax] = tmp;
+			}
+			colp[k] = jmax;
+		}
+		// Zeilentausch
+		if (imax != k) {
+			for (int j = k; j < d; j++) {
+				double tmp = A[k][j];
+				A[k][j] = A[imax][j];
+				A[imax][j] = tmp;
+			}
+			double tmp = b[k];
+			b[k] = b[imax];
+			b[imax] = tmp;
+		}
+		// Elimination
+		for (int i = k + 1; i < d; i++) {
+			double factor = A[i][k] / A[k][k];
+			for (int j = k + 1; j < d; j++){
+				A[i][j] -= factor * A[k][j];
+			}
+			b[i] -= factor * b[k];
+		}
+	}
+	// R?cksubstituition
+	colp[d - 1] = d - 1;
+	for (int k = d - 1; k >= 0; k--) {
+		x[k] = b[k] / A[k][k];
+		for (int i = k - 1; i >= 0; i--) b[i] -= x[k] * A[i][k];
+	}
+	// Spaltenvertauschungen r?ckg?ngig machen
+	for (int k = d - 1; k >= 0; k--) {
+		if (colp[k] != k) {
+			double temp = x[k];
+			x[k] = x[colp[k]];
+			x[colp[k]] = temp;
+		}
+	}
+	delete[] colp;
+	return true;
+}
+
+double determinant(bMatrix& m)
+{
+	bMatrix mLu(m);
+	bPM pivots(m.size1());
+
+	if (bnu::lu_factorize(mLu, pivots))
+		return 0;
+
+	double det = 1;
+	for (size_t i = 0; i < pivots.size(); ++i)
+	{
+		if (pivots(i) != i)
+			det *= -1;
+		det *= mLu(i, i);
+	}
+	return det;
+}
+
+double* means(TDMatrix X, int n, int d) {
+	double* ms = new double[d];
+	for (unsigned i = 0; i < d; i++) {
+		ms[i] = 0.0;
+		for (unsigned j = 0; j < n; j++)
+			ms[i] += X[j][i];
+		ms[i] /= n;
+	}
+	return ms;
+}
+
+TDMatrix cov(TDMatrix X, int n, int d) {
+	double* means = new double[d];
+	double* dev = new double[d];
+	// zeroing TDMatrix
+	TDMatrix covX = newM(d, d);
+	for (unsigned k = 0; k < d; k++)
+		for (unsigned j = 0; j < d; j++)
+			covX[k][j] = 0;
+	// means
+	for (unsigned i = 0; i < d; i++) {
+		means[i] = 0.0;
+		for (unsigned j = 0; j < n; j++)
+			means[i] += X[j][i];
+		means[i] /= n;
+	}
+	for (unsigned i = 0; i < n; i++) {
+		// deviations
+		for (unsigned k = 0; k < d; k++) {
+			dev[k] = X[i][k] - means[k];
+		}
+		// add to cov
+		for (unsigned k = 0; k < d; k++) {
+			for (unsigned j = 0; j < d; j++) {
+				covX[k][j] += dev[k] * dev[j];
+			}
+		}
+	}
+	//scale
+	for (unsigned i = 0; i < d; i++) {
+		for (unsigned j = 0; j < d; j++) {
+			covX[i][j] /= n - 1;
+		}
+	}
+	delete[] means;
+	delete[] dev;
+	return covX;
+}
+
+void GetDirections(TDMatrix directions, unsigned int k, unsigned int d){
+	for (unsigned int i = 0; i < k; i++){
+		double* direction = directions[i];
+		double sqrSum = 0;
+		for (unsigned int j = 0; j < d; j++){
+			direction[j] = normDist(rEngine);
+			sqrSum += direction[j]*direction[j];
+		}
+		sqrSum = sqrt(sqrSum);
+		for (unsigned int j = 0; j < d; j++){
+			direction[j] = direction[j]/sqrSum;
+		}
+	}
+}
+
+void GetProjections(TDMatrix points, int n, int d, TDMatrix directions, int k, TDMatrix projections){
+	for (int i = 0; i < k; i++){
+		double* projection = projections[i];
+		for (int j = 0; j < n; j++){
+			double sum = 0;
+			for (int l = 0; l < d; l++){
+				sum += points[j][l]*directions[i][l];
+			}
+			projection[j] = sum;
+		}
+	}
+}
+
+
+void outVector(TVariables& point){
+
+}
+
+
+
+bool OUT_ALPHA = false;
+
+void outString(char const * str){
+#ifdef DEF_OUT_ALPHA
+	if (!OUT_ALPHA) return;
+	Rcout << str << endl;
+#endif
+}
+
+//template<typename T>
+void outVector(TPoint& point){
+#ifdef DEF_OUT_ALPHA
+	if (!OUT_ALPHA) return;
+	for (int j = 0; j < point.size(); j++){
+		Rcout << point[j] << ", ";
+	}
+	Rcout << endl;
+#endif
+}
+
+void outMatrix(TMatrix& points){
+#ifdef DEF_OUT_ALPHA
+	if (!OUT_ALPHA) return;
+	for (int i = 0; i < points.size(); i++){
+		//Rcout << i << ": ";
+		for (int j = 0; j < points[i].size(); j++){
+			Rcout << points[i][j] << ", ";
+		}
+		Rcout << endl;
+	}
+#endif
+}
+
+void outFeatures(Features fs){
+#ifdef DEF_OUT_ALPHA
+	if (!OUT_ALPHA) return;
+	Rcout << "order\t number\t angle\t error" << endl;
+	for (int i = 0; i < fs.size(); i++){
+		Rcout << fs[i].order << ",\t " << fs[i].number << ",\t " << fs[i].angle << ",\t " << fs[i].error << endl;
+	}
+#endif
+}
diff --git a/src/Common.h b/src/Common.h
new file mode 100644
index 0000000..bb16688
--- /dev/null
+++ b/src/Common.h
@@ -0,0 +1,42 @@
+/*
+  File:             Common.h
+  Created by:       Pavlo Mozharovskyi
+  First published:  17.05.2013
+  Last revised:     13.11.2015
+  
+  Commonly used functions.
+*/
+
+#pragma once
+
+const double eps_pivot = 1e-10;
+
+//#define DEF_OUT_ALPHA
+extern bool OUT_ALPHA;
+#ifndef _MSC_VER
+#define DEF_OUT_ALPHA
+#endif
+#ifdef DEF_OUT_ALPHA
+using namespace Rcpp;
+#endif
+
+void outString(char const * str);
+//template<typename T>
+void outVector(TPoint& point);
+void outMatrix(TMatrix& points);
+void outFeatures(Features fs);
+
+#ifndef M_PI
+#define M_PI       3.14159265358979323846
+#endif
+
+unsigned long long choose(unsigned long long n, unsigned long long k);
+unsigned long long fact(unsigned long long n);
+bool solveUnique(TDMatrix A, double* b, double* x, int d);
+
+double determinant(bMatrix& m);
+double* means(TDMatrix X, int n, int d);
+TDMatrix cov(TDMatrix X, int n, int d);
+
+void GetDirections(TDMatrix directions, unsigned int k, unsigned int d);
+void GetProjections(TDMatrix points, int n, int d, TDMatrix directions, int k, TDMatrix projections);
diff --git a/src/DKnn.cpp b/src/DKnn.cpp
new file mode 100644
index 0000000..d7aad1d
--- /dev/null
+++ b/src/DKnn.cpp
@@ -0,0 +1,207 @@
+/*
+File:             DKnn.cpp
+Created by:       Oleksii Pokotylo
+First published:
+Last revised:
+
+The realization of the Depth-based KNN classifier of Paindaveine and Van Bever (2015).
+*/
+
+#include "stdafx.h"
+
+// compare UPoints descending
+static int Compare(UPoint p1, UPoint p2){
+	return (p1.value > p2.value);
+}
+
+
+void CountDepths(TDMatrix learnpoints, int* learnlabels, int nlearn, int d, TDMatrix checkpoints, int ncheck,
+	int depthType, vector<UPoint>& depths, double* tempDepths, 
+	TVariables car, TDMatrix dirs, TDMatrix prjs, TDMatrix ptPrjDepths, int ndir // halfspace
+	){
+	if (depthType == 1){
+		for (int i = 0; i < ncheck; i++){
+			GetDepths(checkpoints[i], learnpoints, nlearn, d, car,
+				ndir, i != 0, dirs, prjs, &(depths[i].value), ptPrjDepths);
+			depths[i].pattern = learnlabels[i];
+		}
+		return;
+	}
+
+	if (depthType == 2)
+		MahalanobisDepth(learnpoints, checkpoints, d, nlearn, ncheck, 1, tempDepths);
+	if (depthType == 3)
+		SimplicialDepthsApx(learnpoints, checkpoints, d, nlearn, ncheck, choose(nlearn, d)*0.05, tempDepths);
+
+	for (int i = 0; i < ncheck; i++){
+		depths[i].value = tempDepths[i];
+		depths[i].pattern = learnlabels[i];
+	}
+}
+
+
+
+/*parameter cv: true - return classes for each k, false - return classes for kMax only*/
+void knnGetClasses(TDMatrix learnpoints, int* learnlabels, int nlearn, int d,
+	int nClasses, TDMatrix checkpoints, int ncheck, int kMax, bool cv,
+	int depthType,
+	int* classes /*for cv matrix [ncheck*kMax], for classification vector [ncheck]*/
+	){
+	// create the data structure for the reflected points
+	double* arr = new double[nlearn*d];
+	TDMatrix reflected = new double*[nlearn * 2];
+	for (int i = 0; i < nlearn; i++){
+		reflected[2 * i] = learnpoints[i];
+		reflected[2 * i + 1] = arr + i*d;
+	}
+
+	vector<UPoint> depths(nlearn);
+	double* tempDepths = new double[nlearn];
+	int ndir = 1000;
+	TVariables car(1, nlearn * 2);
+	TDMatrix dirs; if (depthType == 1) dirs = newM(ndir, d);
+	TDMatrix prjs; if (depthType == 1) prjs = newM(ndir, nlearn * 2);
+	TDMatrix ptPrjDepths; if (depthType == 1) ptPrjDepths = newM(ndir, 1);
+
+	for (int p = 0; p < ncheck; p++){
+		double* point = checkpoints[p];
+		// reflect
+		for (int i = 0; i < nlearn; i++){
+			for (int j = 0; j < d; j++){
+				reflected[2 * i + 1][j] = 2 * point[j] - reflected[2 * i][j];
+			}
+		}
+
+		// count depths of learn in reflected
+		CountDepths(reflected, learnlabels, nlearn * 2, d, learnpoints, nlearn,
+			depthType, depths, tempDepths,
+			car, dirs, prjs, ptPrjDepths, ndir // halfspace
+			);
+	/*	for (int i = 0; i < nlearn; i++){
+			GetDepths(learnpoints[i], reflected, nlearn * 2, d, car,
+				ndir, i != 0, dirs, prjs, &(depths[i].value), ptPrjDepths);
+			depths[i].pattern = learnlabels[i];
+		}*/
+
+		sort(depths.begin(), depths.end(), Compare);
+
+		TVariables counts(nClasses+1, 0); 
+		for (int i = 1; i <= nClasses; i++) counts[i] = 0;
+
+		int prevmax = 0, prevclass = -1;
+		for (int k = 1; k <= kMax; k++){
+			counts[depths[k - 1].pattern]++;
+			int max = -1, clmax = -1;
+			for (int cl = 1; cl <= nClasses; cl++){
+				if (counts[cl]>max){
+					max = counts[cl];
+					clmax = cl;
+				} else if (max == counts[cl] && max == prevmax){
+					// if the same number of neighbors, use the prev rule
+					clmax = prevclass;
+				}
+			}
+			if (cv) classes[p*kMax + k - 1] = clmax;
+			prevclass = clmax;
+			prevmax = max;
+		}
+		if (!cv)
+			classes[p] = prevclass;
+	}
+
+	delete[] tempDepths;
+	if (depthType == 1){
+		deleteM(dirs);
+		deleteM(prjs);
+		deleteM(ptPrjDepths);
+	}
+
+	delete[] reflected;
+	delete[] arr;
+}
+
+int DKnnCv(TDMatrix points, int n, int d, int* labels, unsigned int kMax, int depthType, unsigned int chunkNumber){
+	set<int> unique_labels; unique_labels.insert(labels, labels + n - 1);
+	int nClasses = unique_labels.size();
+
+	unsigned chunkSize = ceil((double)n / chunkNumber);
+
+	TDMatrix learnpoints = new double*[n - chunkSize + 1];
+	TDMatrix checkpoints = new double*[chunkSize];
+	int* learnlabels = new int[n - chunkSize + 1];
+	int* checklabels = new int[chunkSize];
+	int* testlabels = new int[n];
+	int* classes = new int[n*kMax];
+
+	int chunk = 0;
+	for (unsigned j = 0, l = 0, c = 0; j < n; j++){
+		if (j%chunkNumber){
+			learnpoints[l] = points[j];
+			learnlabels[l++] = labels[j];
+		}
+		else{
+			checkpoints[c] = points[j];
+			checklabels[c++] = labels[j];
+		}
+	}
+
+	bool bigch = true;
+	int hadObjects = 0;
+	for (; chunk < chunkNumber; chunk++){
+		if (chunk > 0){
+			if (bigch && (chunkNumber)*(chunkSize - 1) + chunk == n){
+				bigch = false;
+				chunkSize--;
+				learnpoints[n - chunkSize - 1] = points[n - 1];
+				learnlabels[n - chunkSize - 1] = labels[n - 1];
+			}
+
+			for (int i = 0; i < chunkSize; i++){
+				checkpoints[i] = learnpoints[(chunkNumber - 1)*i + chunk - 1];
+				checklabels[i] = learnlabels[(chunkNumber - 1)*i + chunk - 1];
+				learnpoints[(chunkNumber - 1)*i + chunk - 1] = points[chunkNumber*i + chunk - 1];
+				learnlabels[(chunkNumber - 1)*i + chunk - 1] = labels[chunkNumber*i + chunk - 1];
+			}
+		}
+
+		knnGetClasses(learnpoints, learnlabels, n - chunkSize, d, nClasses, 
+			checkpoints, chunkSize, kMax, true, depthType, classes + hadObjects*kMax);
+		//store checklabels
+		memcpy(testlabels + hadObjects, checklabels, chunkSize*sizeof(int));
+		hadObjects += chunkSize;
+	}
+
+	// run over k, count errors
+	int kopt = 1, opterr = n;
+	for (int k = 1; k <= kMax; k++){
+		int err = 0;
+		for (int p = 0; p < n; p++){
+			if (classes[p*kMax + k - 1] != testlabels[p])
+				err++;
+		}
+		if (err < opterr){
+			opterr = err;
+			kopt = k;
+		}
+	}
+
+	delete[] learnpoints;
+	delete[] checkpoints;
+	delete[] learnlabels;
+	delete[] checklabels;
+	delete[] testlabels;
+	delete[] classes;
+	return kopt;
+}
+
+void DKnnClassify(TDMatrix points, int n, int d, int* labels, TDMatrix objects, int nobjects, unsigned int k, int depthType, int* classes){
+	set<int> unique_lasbels; unique_lasbels.insert(labels, labels + n - 1);
+	int nClasses = unique_lasbels.size();
+
+	knnGetClasses(points, labels, n, d,
+		nClasses, objects, nobjects, k, false,
+		depthType,
+		classes);
+}
+
+
diff --git a/src/DKnn.h b/src/DKnn.h
new file mode 100644
index 0000000..975b51b
--- /dev/null
+++ b/src/DKnn.h
@@ -0,0 +1,12 @@
+/*
+File:             DKnn.h
+Created by:       Oleksii Pokotylo
+First published:  
+Last revised:     
+
+The realization of the Depth-based KNN classifier of Paindaveine and Van Bever (2015).
+*/
+
+int DKnnCv(TDMatrix points, int n, int d, int* labels, unsigned int kMax, int depthType, unsigned int chunkNumber);
+
+void DKnnClassify(TDMatrix points, int n, int d, int* labels, TDMatrix objects, int nobjects, unsigned int k, int depthType, int* classes);
diff --git a/src/DataStructures.h b/src/DataStructures.h
new file mode 100644
index 0000000..01a2a41
--- /dev/null
+++ b/src/DataStructures.h
@@ -0,0 +1,89 @@
+/*
+  File:             DataStructures.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     28.02.2013
+
+  Defines the data structures used in the package.
+*/
+#pragma once
+
+#ifndef PI2
+#define PI2 1.5707963267948966192313216916398
+#endif
+#ifndef PI
+#define PI (PI2*2)
+#endif
+
+typedef vector<double> TPoint;
+typedef vector<vector<double> > TMatrix;
+typedef vector<vector<int> > TIntMatrix;
+typedef vector<int> TVariables;
+
+typedef double** TDMatrix;
+
+// by rows
+TDMatrix asMatrix(double* arr, int n, int d);
+
+double** newM(int n, int d);
+void deleteM(TDMatrix X);
+TDMatrix copyM(TDMatrix X, int n, int d);
+void printMatrix(TDMatrix mat, int n, int d);
+
+
+namespace bnu = boost::numeric::ublas;
+typedef boost::numeric::ublas::matrix<double> bMatrix;
+typedef boost::numeric::ublas::vector<double> bVector;
+typedef boost::numeric::ublas::permutation_matrix<size_t> bPM;
+
+struct UPoint{
+	 int pattern;
+	 double value;
+	 UPoint(int pattern = 0, double value = 0){
+		 this->pattern = pattern;
+		 this->value = value;
+	 }
+ };
+
+ struct Feature{
+	 unsigned int order;
+	 int number;
+	 double angle;
+	 unsigned int error;
+	 Feature(unsigned int order = 0, int number = 0, double angle = 0, unsigned int error = INT_MAX){
+		 this->order = order;
+		 this->number = number;
+		 this->angle = angle;
+		 this->error = error;
+	 }
+ };
+
+struct OrderRec {
+	int order;
+	double value;
+	OrderRec(int order = -1, double value = 0) {
+		this->order = order;
+		this->value = value;
+	}
+};
+
+struct SortRec { 
+	double v; 
+	TPoint* p; 
+	SortRec(double v = 0, TPoint* p = NULL) {
+		this->v = v;
+		this->p = p;
+	}
+};
+
+struct SortRecClassified {
+	int c; 
+	double v; 
+	SortRecClassified(int c = 0, double v = 0, int p = 0) {
+		this->c = c;
+		this->v = v;
+	}
+};
+
+typedef vector<Feature> Features;
+typedef vector<UPoint> UPoints;
diff --git a/src/HD.cpp b/src/HD.cpp
new file mode 100644
index 0000000..779e76f
--- /dev/null
+++ b/src/HD.cpp
@@ -0,0 +1,767 @@
+/******************************************************************************/
+/* File:             HD.cpp                                                   */
+/* Created by:       Rainer Dyckerhoff, Pavlo Mozharovskyi                    */
+/* First published:  19.06.2015                                               */
+/* Last revised:     03.07.2015                                               */
+/*                                                                            */
+/* Contains functions that compute the exact halfspace depth of a point z     */
+/* w.r.t. n data points x[1],...x[n].                                         */
+/*                                                                            */
+/******************************************************************************/
+
+#include "stdafx.h"
+
+#define _USE_MATH_DEFINES
+#include <math.h>
+#include <algorithm>
+
+
+using namespace std;
+
+/* Definition of constants */
+const double eps_HD1 = 1e-8;
+const double eps_HD2 = 1e-8;
+const double eps_HDx = 1e-8;
+const double eps_Cmb1 = 1e-8;
+//const double eps_pivot = 1e-8;
+
+
+/****************************************************************************/
+/*                                                                          */
+/* 'norm2' computes the Euclidean norm of a vector x in d-space.            */
+/*                                                                          */
+/****************************************************************************/
+
+double norm2(double* x, int d) {
+	double result = 0;
+	for (int i = 0; i < d; i++) result += x[i] * x[i];
+	return sqrt(result);
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'intHD1' computes the integer hafspace depth of 0 w.r.t n data points    */
+/* in R^1.                                                                  */
+/*                                                                          */
+/****************************************************************************/
+
+int intHD1(double** x, int n) {
+	int cnt1 = 0, cnt2 = 0;
+	for (int i = 0; i < n; i++, x++) {
+		if (**x <  eps_HD1) cnt1++;
+		if (**x > -eps_HD1) cnt2++;
+	}
+	return min(cnt1, cnt2);
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'intHD2' computes the integer hafspace depth of 0 w.r.t n data points    */
+/* in R^2.                                                                  */
+/*                                                                          */
+/* This is an implemetation of the algorithm of                             */
+/* Rousseeuw, P.J.and Ruts, I. (1996). Algorithm AS 307: bivariate          */
+/* location depth. Journal of the Royal Statistical Society. Series C:      */
+/* Applied Statistics 45, 516�526.                                          */
+/*                                                                          */
+/****************************************************************************/
+
+int intHD2(double** x, int n) {
+	double* alpha = new double[n];
+	int nt = 0; // how many zeros in in x ?
+	int nh = 0; // how many points in the halfspace ?
+	// compute angles alpha[i] and initilize array angle
+	for (int i = 0; i < n; i++) {
+		if (hypot(x[i][0], x[i][1]) <= eps_HD2)
+			nt++;
+		else {
+			alpha[i - nt] = atan2(x[i][1], x[i][0]);  // alpha in (-pi,pi]
+			// correction for points like (-1, -1e-16)
+			if (alpha[i - nt] < -M_PI + eps_HD2) alpha[i - nt] = M_PI;
+			if (alpha[i - nt] <= eps_HD2) nh++;
+		}
+	}
+	int nn = n - nt;
+	// sort angles
+	sort(alpha, alpha + nn);
+	// compute halfspace depth
+	int result = nh;
+	if (result > 0) {
+		int j = nh;
+		for (int i = 0; i < nh; i++) {
+			while ((j <= nn - 1) && (alpha[j] - M_PI <= alpha[i] + eps_HD2))
+				j++;
+			if (j - i <= result) result = j - i - 1;
+		}
+		j = 0;
+		for (int i = nh; i < nn; i++) {
+			while ((j <= nh - 1) && (alpha[j] + M_PI <= alpha[i] + eps_HD2))
+				j++;
+			if (j - (i - nn) <= result) result = j - (i - nn) - 1;
+		}
+	}
+	delete[] alpha;
+	return result + nt;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'nHD_Rec' computes the integer halfspace depth of 0 w.r.t n data points  */
+/* in R^d.                                                                  */
+/*                                                                          */
+/* 'nHD_Rec' implements the recursive algorithm (k = 1) as described in     */
+/* Section 3.3 of "Exact computation of the halfspace depth" by             */
+/* Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)               */
+/*                                                                          */
+/****************************************************************************/
+
+int nHD_Rec(double** xx, int n, int d) {
+	if (d == 1) return intHD1(xx, n);
+	if (d == 2) return intHD2(xx, n);
+
+	double* y = new double[d - 1];
+	double* z = new double[d];
+	double** x = new double*[n];
+	for (int k = 0; k < n; k++) x[k] = new double[d - 1];
+
+	int result = n;
+	for (int i = 0; i < n; i++) {
+
+		int kmax = d;
+		double xmax = 0;
+		for (int k = 0; k < d; k++)
+		if (fabs(xx[i][k]) > xmax) {
+			xmax = fabs(xx[i][k]);
+			kmax = k;
+		}
+		if (xmax > eps_HDx) {
+			int nNull = 0, nPos = 0, nNeg = 0, m = 0;
+			for (int k = 0; k < d; k++) z[k] = xx[i][k] / xx[i][kmax];
+			// project data points
+			for (int j = 0; j < n; j++){
+				double alpha = -xx[j][kmax];
+				for (int k = 0; k < kmax; k++)
+					y[k] = xx[j][k] + alpha * z[k];
+				for (int k = kmax; k < d - 1; k++)
+					y[k] = xx[j][k + 1] + alpha * z[k + 1];
+				if (norm2(y, d - 1) > eps_HDx) {
+					for (int k = 0; k < d - 1; k++) x[m][k] = y[k];
+					m++;
+				}
+				else {
+					// in this case alpha = -sign(x_i*x_j)
+					if (alpha > eps_HDx) nPos++;
+					else if (alpha < -eps_HDx) nNeg++;
+					else nNull++;
+				}
+			}
+			result = min(result, nHD_Rec(x, m, d - 1) +
+				nNull + min(nPos, nNeg));
+			if (result == 0) break;
+		}
+	}
+	for (int k = 0; k < n; k++) delete[] x[k];
+	delete[] x;
+	delete[] z;
+	delete[] y;
+	return result;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'HD_Rec' computes the halfspace depth of a point z w.r.t n data          */
+/* points in R^d.                                                           */
+/*                                                                          */
+/* 'HD_Rec' does some preprocessing of the data and then calls              */
+/* 'nHD_Rec'.                                                               */
+/*                                                                          */
+/* See also the description in the header file.                             */
+/*                                                                          */
+/* HD_Rec calls the following routines:                                     */
+/*     norm2                                                                */
+/*     intHD1                                                               */
+/*     intHD2                                                               */
+/*     nHD_Rec                                                              */
+/*                                                                          */
+/****************************************************************************/
+
+double HD_Rec(double* z, double** xx, int n, int d) {
+	if (n <= 0) throw invalid_argument("n <= 0");
+	if (d <= 0) throw invalid_argument("d <= 0");
+	// preprocess data
+	// subtract z from all data points x[i]
+	int m = 0;
+	double** x = new double*[n];
+	bool create = true;
+	for (int i = 0; i < n; i++) {
+		if (create)
+			x[m] = new double[d];
+
+		for (int j = 0; j < d; j++) x[m][j] = xx[i][j] - z[j];
+		create = norm2(x[m], d) >= eps_HDx;
+		if (create)	m++;
+	}
+	int result = nHD_Rec(x, m, d) + (n - m);
+	// deallocate array x
+	if (!create) m++;
+	for (int i = 0; i < m; i++) delete[] x[i];
+	delete[] x;
+	return result / (double)n;
+}
+
+/****************************************************************************/
+/* 'getRank' computes the rank of the matrix x                              */
+/*                                                                          */
+/* 'getRank' is used in preprocessing the data in HD_comb and HD_Comb2.     */
+/* 'getRank' detects if the data points are contained in a lower            */
+/*  dimensional space, by computing the rank of the matrix formed by the    */
+/*  data points x[i].                                                       */
+/*                                                                          */
+/****************************************************************************/
+
+int getRank(double** x, int n, int d, int* piv) {
+	int imax;
+	int pc = 0, rank = 0;
+	double amax;
+	// copy x to A
+	double** A = new double*[d];
+	for (int i = 0; i < d; i++) {
+		A[i] = new double[n];
+		for (int j = 0; j < n; j++) A[i][j] = x[j][i];
+	}
+	rank = 0;
+	for (int k = 0; k < min(n, d); k++) {
+		// k-th elimination step
+		do {
+			imax = k;
+			amax = fabs(A[k][pc]);
+			// find maximum element in column
+			for (int i = k + 1; i < d; i++) {
+				if (fabs(A[i][pc]) > amax) {
+					amax = fabs(A[i][pc]);
+					imax = i;
+				}
+			}
+			if (amax < eps_pivot) pc++;
+		} while ((amax < eps_pivot) && (pc < n));
+		if (pc < n) {
+			rank++;
+			piv[k] = pc;
+			// exchange rows
+			if (imax != k) {
+				for (int j = pc; j < n; j++) {
+					double tmp = A[k][j];
+					A[k][j] = A[imax][j];
+					A[imax][j] = tmp;
+				}
+			}
+			// elimination
+			for (int i = k + 1; i < d; i++) {
+				double factor = A[i][pc] / A[k][pc];
+				for (int j = pc + 1; j < n; j++)
+					A[i][j] -= factor * A[k][j];
+			}
+			if (++pc >= n) break;
+		}
+		else break;
+	}
+	for (int i = 0; i < d; i++) delete[] A[i];
+	delete[] A;
+
+	return rank;
+}
+
+/****************************************************************************/
+/* 'project' projects the data points on a lower dimensional subspace.      */
+/*                                                                          */
+/* 'project' is used in preprocessing the data in HD_comb and HD_Comb2.     */
+/* If the data points x[i] are contained in a subspace of dimension 'rank'  */
+/* (as detected by a call to getRank), the representation of the data       */
+/* points w.r.t. a basis of this subspace is computed. This gives a         */
+/* representation of the data points in the Euclidean space of dimension    */
+/* rank.                                                                    */
+/*                                                                          */
+/****************************************************************************/
+
+void project(double** x, int n, int d, int rank, int indices[]) {
+	double** z = new double*[n];
+	for (int k = 0; k < n; k++) {
+		z[k] = new double[rank];
+		for (int i = 0; i < rank; i++) {
+			z[k][i] = 0;
+			for (int l = 0; l < d; l++)
+				z[k][i] += x[k][l] * x[indices[i]][l];
+		}
+	}
+	for (int k = 0; k < n; k++) {
+		delete[] x[k];
+		x[k] = z[k];
+	}
+	delete[] z;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'getNormal' computes the normal vector to the d-1 vectors passed         */
+/* in A.                                                                    */
+/*                                                                          */
+/* If the rank of A is equal to d-1, then the function returns 'true' and   */
+/* the normal vector is passed to the calling routine in 'normal[]'.        */
+/* If the rank of A is less than d-1, then the function returns 'false'     */
+/* and the value of 'normal[]' is undefined.                                */
+/*                                                                          */
+/****************************************************************************/
+
+bool getNormal(double** A, int d, double* normal) {
+	int imax, jmax;
+	int* colp = new int[d];
+	double amax;
+	for (int k = 0; k < d - 1; k++) {
+		imax = k;
+		amax = fabs(A[k][k]);
+		colp[k] = k;
+		// find maximum element in column
+		for (int i = k + 1; i < d - 1; i++) {
+			if (fabs(A[i][k]) > amax) {
+				amax = fabs(A[i][k]);
+				imax = i;
+			}
+		}
+		// maximum equal to zero => complete pivoting
+		if (amax < eps_pivot) {
+			for (int j = k + 1; j < d; j++) {
+				for (int i = k; i < d - 1; i++) {
+					if (fabs(A[i][j]) > amax) {
+						amax = fabs(A[i][j]);
+						imax = i;
+						jmax = j;
+					}
+				}
+			}
+			if (amax < eps_pivot) {
+				delete[] colp;
+				return false;
+			}
+			// exchange columns 
+			for (int i = 0; i < d - 1; i++) {
+				double tmp = A[i][k];
+				A[i][k] = A[i][jmax];
+				A[i][jmax] = tmp;
+			}
+			colp[k] = jmax;
+		}
+		// exchange rows
+		if (imax != k) {
+			for (int j = k; j < d; j++) {
+				double tmp = A[k][j];
+				A[k][j] = A[imax][j];
+				A[imax][j] = tmp;
+			}
+		}
+		// elimination
+		for (int i = k + 1; i < d - 1; i++) {
+			double factor = A[i][k] / A[k][k];
+			for (int j = k + 1; j < d; j++) A[i][j] -= factor * A[k][j];
+		}
+	}
+	// back substitution
+	colp[d - 1] = d - 1;
+	normal[d - 1] = -1;
+	for (int k = d - 2; k >= 0; k--) {
+		normal[k] = A[k][d - 1] / A[k][k];
+		for (int i = k - 1; i >= 0; i--) A[i][d - 1] -= normal[k] * A[i][k];
+	}
+	// reverse column permutations
+	for (int k = d - 1; k >= 0; k--) {
+		if (colp[k] != k) {
+			double temp = normal[k];
+			normal[k] = normal[colp[k]];
+			normal[colp[k]] = temp;
+		}
+	}
+	delete[] colp;
+
+	return true;
+}
+
+int nHD_Comb(double** xx, int n, int d);
+
+/****************************************************************************/
+/*                                                                          */
+/* 'HD1proj' performs the following steps:                                  */
+/*                                                                          */
+/*  1) All data points x[i] are projected in the direction p,               */
+/*     i.e., z[i] = p'x[i] is computed.                                     */
+/*  2) The univariate integer halfspace depth of 0 is computed w.r.t. all   */
+/*     the z[i] that are not equal to 0.                                    */
+/*  3) If there are more than d-1 values z[i] that are equal to zero,       */
+/*     the respective points are projected on the orthogonal complement     */
+/*     of p. Then, the integer halfspace depth of 0 w.r.t. these            */
+/*     projected points is computed.                                        */
+/*  4) The sum of the values from step 2) and 3) is returned.               */
+/*                                                                          */
+/****************************************************************************/
+
+int HD1proj(double** x, int n, int d, double* p, int indices[]) {
+	int cnt0 = 0, cnt1 = 0, cnt2 = 0, HDproj = 0;
+	int* plane = new int[n];
+	for (int i = 0; i < n; i++) {
+		double sum = 0;
+		for (int j = 0; j < d; j++) sum += p[j] * x[i][j];
+		if (sum >  eps_HD1) cnt1++;
+		else if (sum < -eps_HD1) cnt2++;
+		else plane[cnt0++] = i;
+	}
+	if (cnt0 > d - 1) {
+		// recursion
+		double** z = new double*[cnt0];
+		for (int i = 0; i
+			< cnt0; i++) {
+			z[i] = new double[d - 1];
+			for (int j = 0; j < d - 1; j++) {
+				z[i][j] = 0;
+				for (int k = 0; k < d; k++)
+					z[i][j] += x[indices[j]][k] * x[plane[i]][k];
+			}
+		}
+		HDproj = nHD_Comb(z, cnt0, d - 1);
+		for (int i = 0; i < cnt0; i++) delete[] z[i];
+		delete[] z;
+	}
+	delete[] plane;
+	return min(cnt1, cnt2) + HDproj;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'nHD_Comb' computes the integer halfspace depth of 0 w.r.t n data points */
+/* in R^d.                                                                  */
+/*                                                                          */
+/* 'nHD_Comb' implements the combinatorial algorithm (k = d-1) as described */
+/* in Section 3.1 of "Exact computation of the halfspace depth" by          */
+/* Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)               */
+/*                                                                          */
+/****************************************************************************/
+
+int nHD_Comb(double** xx, int n, int d) {
+	if (d == 1) return intHD1(xx, n);
+	if (d == 2) return intHD2(xx, n);
+
+	int result = n + 1;
+	double** a = new double*[d - 1];
+	for (int i = 0; i < d - 1; i++) a[i] = new double[d];
+	double* p = new double[d];
+	int* indices = new int[d - 1];
+	indices[0] = -1;
+	int pos = 0;
+	while (pos >= 0) {
+		indices[pos]++;
+		for (pos++; pos < d - 1; pos++) indices[pos] = indices[pos - 1] + 1;
+		pos--;
+		do {
+			for (int i = 0; i < d - 1; i++)
+			for (int j = 0; j < d; j++) a[i][j] = xx[indices[i]][j];
+			if (getNormal(a, d, p))
+				result = min(result, HD1proj(xx, n, d, p, indices));
+			indices[pos]++;
+		} while (indices[pos] < n - d + pos + 2);
+		do pos--; while (pos >= 0 && indices[pos] >= n - d + pos + 1);
+	}
+	for (int i = 0; i < d - 1; i++) delete[] a[i];
+	delete[] a;
+	delete[] p;
+	delete[] indices;
+	return result;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'HD_Comb' computes the halfspace depth of a point z w.r.t n data         */
+/* points in R^d.                                                           */
+/*                                                                          */
+/* 'HD_Comb' does some preprocessing of the data and then calls             */
+/* 'nHD_Comb'.                                                              */
+/*                                                                          */
+/* See also the description in the header file.                             */
+/*                                                                          */
+/* HD_Comb calls the following routines:                                    */
+/*     norm2                                                                */
+/*     intHD1                                                               */
+/*     intHD2                                                               */
+/*     getRank                                                              */
+/*     project                                                              */
+/*     getNormal                                                            */
+/*     HD1proj                                                              */
+/*     nHD_Rec                                                              */
+/*                                                                          */
+/****************************************************************************/
+
+double HD_Comb(double* z, double** xx, int n, int d) {
+	if (n <= 0) throw invalid_argument("n <= 0");
+	if (d <= 0) throw invalid_argument("d <= 0");
+	// preprocess data
+	//   subtract z from all data points x[i]
+	//   check whether the data points are concentrated on a lower 
+	//   dimensional space 
+	int m = 0, rank;
+	int* indices = new int[d];
+	double** x = new double*[n];
+	for (int i = 0; i < n; i++) {
+		x[m] = new double[d];
+		for (int j = 0; j < d; j++) x[m][j] = xx[i][j] - z[j];
+		if (norm2(x[m], d) >= eps_HDx) m++; else delete[] x[m];
+	}
+	if (m == 0) return 1.0;
+
+	rank = getRank(x, m, d, indices);
+	if (rank < d) project(x, m, d, rank, indices);
+	int result = nHD_Comb(x, m, rank) + (n - m);
+	// deallocate array x
+	for (int i = 0; i < m; i++) delete[] x[i];
+	delete[] x;
+	delete[] indices;
+	return result / (double)n;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'getBasisComplement' computes a basis of the orthogonal complement of    */
+/* the d-2 vectors passed in A.                                             */
+/*                                                                          */
+/* If the rank of A is equal to d-2, then the function returns 'true' and   */
+/* the two basis vectors are passed to the calling routine in 'basis[][]'.  */
+/* If the rank of A is less than d-2, then the function returns 'false'     */
+/* and the value of 'basis[]' is undefined.                                 */
+/*                                                                          */
+/****************************************************************************/
+
+bool getBasisComplement(double** A, int d, double** basis) {
+	int imax, jmax;
+	int* colp = new int[d];
+	double amax;
+	for (int k = 0; k < d - 2; k++) {
+		imax = k;
+		amax = fabs(A[k][k]);
+		colp[k] = k;
+		// find maximum element in column
+		for (int i = k + 1; i < d - 2; i++) {
+			if (fabs(A[i][k]) > amax) {
+				amax = fabs(A[i][k]);
+				imax = i;
+			}
+		}
+		// maximum equal to zero  => complete pivoting
+		if (amax < eps_pivot) {
+			for (int j = k + 1; j < d; j++) {
+				for (int i = k; i < d - 2; i++) {
+					if (fabs(A[i][j]) > amax) {
+						amax = fabs(A[i][j]);
+						imax = i;
+						jmax = j;
+					}
+				}
+			}
+			if (amax < eps_pivot) {
+				delete[] colp;
+				return false;
+			}
+			// exchange columns
+			for (int i = 0; i < d - 2; i++) {
+				double tmp = A[i][k];
+				A[i][k] = A[i][jmax];
+				A[i][jmax] = tmp;
+			}
+			colp[k] = jmax;
+		}
+		// exchange rows
+		if (imax != k) {
+			for (int j = k; j < d; j++) {
+				double tmp = A[k][j];
+				A[k][j] = A[imax][j];
+				A[imax][j] = tmp;
+			}
+		}
+		// elimination
+		for (int i = k + 1; i < d - 2; i++) {
+			double factor = A[i][k] / A[k][k];
+			for (int j = k + 1; j < d; j++) A[i][j] -= factor * A[k][j];
+		}
+	}
+	// back substitution
+	colp[d - 2] = d - 2;
+	colp[d - 1] = d - 1;
+	basis[0][d - 2] = -1;
+	basis[0][d - 1] = 0;
+	basis[1][d - 2] = 0;
+	basis[1][d - 1] = -1;
+	for (int k = d - 3; k >= 0; k--) {
+		basis[0][k] = A[k][d - 2] / A[k][k];
+		basis[1][k] = A[k][d - 1] / A[k][k];
+		for (int i = k - 1; i >= 0; i--) {
+			A[i][d - 2] -= basis[0][k] * A[i][k];
+			A[i][d - 1] -= basis[1][k] * A[i][k];
+		}
+	}
+	// reverse column permutations
+	for (int k = d - 1; k >= 0; k--) {
+		if (colp[k] != k) {
+			for (int l = 0; l < 2; l++) {
+				double temp = basis[l][k];
+				basis[l][k] = basis[l][colp[k]];
+				basis[l][colp[k]] = temp;
+			}
+		}
+	}
+	delete[] colp;
+	return true;
+}
+
+int nHD_Comb2(double** xx, int n, int d);
+
+/****************************************************************************/
+/*                                                                          */
+/* 'HD2proj' performs the following steps:                                  */
+/*                                                                          */
+/*  1) All data points x[i] are projected on the space spanned by the       */
+/*     two vectors passed in p, i.e., y[i,1] = p[1]'x[i] and                */
+/*     y[i,2] = p[2]'x[i] are computed.                                     */
+/*  2) The bivariate integer halfspace depth of 0 is computed w.r.t. all    */
+/*     the y[i] that are not equal to (0,0).                                */
+/*  3) If there are more than d-2 values y[i] that are equal to (0,0),      */
+/*     the respective points are projected on the orthogonal complement     */
+/*     of p. Then, the integer halfspace depth of 0 w.r.t. these            */
+/*     projected points is computed.                                        */
+/*  4) The sum of the values from step 2) and 3) is returned.               */
+/*                                                                          */
+/****************************************************************************/
+
+int HD2proj(double** x, int n, int d, double** p, int* indices) {
+	double** y = new double*[n];
+	for (int i = 0; i < n; i++) y[i] = new double[2];
+
+	int cnt0 = 0, cnt1 = 0, HDproj = 0;
+	int* plane = new int[n];
+	for (int i = 0; i < n; i++) {
+		y[cnt1][0] = y[cnt1][1] = 0;
+		for (int j = 0; j < d; j++)
+		for (int k = 0; k < 2; k++) y[cnt1][k] += p[k][j] * x[i][j];
+		if (norm2(y[cnt1], 2) > eps_HD2) cnt1++;
+		else plane[cnt0++] = i;
+
+	}
+	if (cnt0 > d - 2) {
+		double** z = new double*[cnt0];
+		for (int i = 0; i < cnt0; i++) {
+			z[i] = new double[d - 2];
+			for (int j = 0; j < d - 2; j++) {
+				z[i][j] = 0;
+				for (int k = 0; k < d; k++)
+					z[i][j] += x[indices[j]][k] * x[plane[i]][k];
+			}
+		}
+		HDproj = nHD_Comb2(z, cnt0, d - 2);
+		for (int i = 0; i < cnt0; i++) delete[] z[i];
+		delete[] z;
+	}
+	int result = intHD2(y, cnt1) + HDproj;
+	delete[] plane;
+	for (int i = 0; i < n; i++) delete[] y[i];
+	delete[] y;
+	return result;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'nHD_Comb2' computes the integer halfspace depth of 0 w.r.t n data       */
+/* points in R^d.                                                           */
+/*                                                                          */
+/* 'nHD_Comb2' implements the combinatorial algorithm (k = d-2) as          */
+/* described in Section 3.2 of "Exact computation of the halfspace depth"   */
+/* by Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)            */
+/*                                                                          */
+/****************************************************************************/
+
+int nHD_Comb2(double** xx, int n, int d) {
+	if (d == 1) return intHD1(xx, n);
+	if (d == 2) return intHD2(xx, n);
+
+	int result = n + 1;
+	double** a = new double*[d - 2];
+	for (int i = 0; i < d - 2; i++) a[i] = new double[d];
+	double** p = new double*[2];
+	for (int i = 0; i < 2; i++) p[i] = new double[d];
+	int* indices = new int[d - 2];
+
+	indices[0] = -1;
+	int pos = 0;
+	while (pos >= 0) {
+		indices[pos]++;
+		for (pos++; pos < d - 2; pos++) indices[pos] = indices[pos - 1] + 1;
+		pos--;
+		do {
+			for (int i = 0; i < d - 2; i++)
+			for (int j = 0; j < d; j++) a[i][j] = xx[indices[i]][j];
+			if (getBasisComplement(a, d, p))
+				result = min(result, HD2proj(xx, n, d, p, indices));
+			indices[pos]++;
+		} while (indices[pos] < n - d + pos + 3);
+		do pos--; while (pos >= 0 && indices[pos] >= n - d + pos + 2);
+	}
+	for (int i = 0; i < d - 2; i++) delete[] a[i];
+	delete[] a;
+	for (int i = 0; i < 2; i++) delete[] p[i];
+	delete[] p;
+	delete[] indices;
+	return result;
+}
+
+/****************************************************************************/
+/*                                                                          */
+/* 'HD_Comb2' computes the halfspace depth of a point z w.r.t. n data       */
+/* points in R^d.                                                           */
+/*                                                                          */
+/* 'HD_Comb2' does some preprocessing of the data and then calls            */
+/* 'nHD_Comb2'.                                                             */
+/*                                                                          */
+/* See also the description in the header file.                             */
+/*                                                                          */
+/* HD_Comb2 calls the following routines:                                   */
+/*     norm2                                                                */
+/*     intHD1                                                               */
+/*     intHD2                                                               */
+/*     getRank                                                              */
+/*     project                                                              */
+/*     getBasisComplement                                                   */
+/*     HD2proj                                                              */
+/*     nHD_Rec                                                              */
+/*                                                                          */
+/****************************************************************************/
+
+double HD_Comb2(double* z, double** xx, int n, int d) {
+	if (n <= 0) throw invalid_argument("n <= 0");
+	if (d <= 0) throw invalid_argument("d <= 0");
+	int m = 0, rank;
+	int* indices = new int[d];
+	double** x = new double*[n];
+	// preprocess data
+	//   subtract z from all data points x[i]
+	//   check whether the data points are concentrated on a lower 
+	//   dimensional spcae 
+	for (int i = 0; i < n; i++) {
+		x[m] = new double[d];
+		for (int j = 0; j < d; j++) x[m][j] = xx[i][j] - z[j];
+		if (norm2(x[m], d) >= eps_HDx) m++; else delete[] x[m];
+	}
+	if (m == 0) return 1.0;
+	rank = getRank(x, m, d, indices);
+	if (rank < d) project(x, m, d, rank, indices);
+
+	int result = nHD_Comb2(x, m, rank) + (n - m);
+	// deallocate array x
+	for (int i = 0; i < m; i++) delete[] x[i];
+	delete[] x;
+	delete[] indices;
+	return result / (double)n;
+}
+
+
diff --git a/src/HD.h b/src/HD.h
new file mode 100644
index 0000000..0e8d6c3
--- /dev/null
+++ b/src/HD.h
@@ -0,0 +1,71 @@
+/******************************************************************************/
+/* File:             HD.h                                                     */
+/* Created by:       Rainer Dyckerhoff, Pavlo Mozharovskyi                    */
+/* First published:  19.06.2015                                               */
+/* Last revised:     19.06.2015                                               */
+/*                                                                            */
+/* Contains declarations of functions that compute the exact halfspace depth  */
+/* of a point w.r.t. a data cloud.                                            */
+/*                                                                            */
+/******************************************************************************/
+
+enum HDalgs{
+//	random = 0, 
+	recursive = 1,	// HD_DRS
+	plane = 2,		// HDc2
+	line = 3		//HD_Cmb
+};
+
+/****************************************************************************/
+/* HD_Comb computes the halfspace depth of a point z in d-space w.r.t.      */
+/*   n data points passed in xx.                                            */
+/*   HD_Comb implements the combinatorial algorithm (k = d-1) as described  */
+/*   in Section 3.1 of "Exact computation of the halfspace depth" by        */
+/*   Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)             */
+/*                                                                          */
+/* Args:                                                                    */
+/*   z  - the point to calculate the depth for (vector of dimension d),     */
+/*   xx - the data w.r.t. which the depth has to be computed, (matrix of    */
+/*        dimension n x d)                                                  */
+/*   n  - number of the data points,                                        */
+/*   d  - dimension of the Euclidean space.                                 */
+/* Returns:                                                                 */
+/*   depth of z w.r.t. xx in the interval [0,1].                            */
+/****************************************************************************/
+double HD_Comb(double* z, double** xx, int n, int d);
+
+/****************************************************************************/
+/* HD_Comb2 computes the halfspace depth of a point z in d-space w.r.t.     */
+/*   n data points passed in xx.                                            */
+/*   HD_Comb2 implements the combinatorial algorithm (k = d-2) as described */
+/*   in Section 3.2 of "Exact computation of the halfspace depth" by        */
+/*   Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)             */
+/*                                                                          */
+/* Args:                                                                    */
+/*   z  - the point to calculate the depth for (vector of dimension d),     */
+/*   xx - the data w.r.t. which the depth has to be computed, (matrix of    */
+/*        dimension n x d)                                                  */
+/*   n  - number of the data points,                                        */
+/*   d  - dimension of the Euclidean space.                                 */
+/* Returns:                                                                 */
+/*   depth of z w.r.t. xx in the interval [0,1].                            */
+/****************************************************************************/
+double HD_Comb2(double* z, double** xx, int n, int d);
+
+/****************************************************************************/
+/* HD_Rec computes the halfspace depth of a point z in d-space w.r.t.       */
+/*   n data points passed in xx.                                            */
+/*   HD_Rec implements the recursive algorithm (k = 1) as described in      */
+/*   Section 3.3 of "Exact computation of the halfspace depth" by           */
+/*   Rainer Dyckerhoff and Pavlo Mozharovskyi (arXiv:1411:6927)             */
+/*                                                                          */
+/* Args:                                                                    */
+/*   z  - the point to calculate the depth for (vector of dimension d),     */
+/*   xx - the data w.r.t. which the depth has to be computed, (matrix of    */
+/*        dimension n x d)                                                  */
+/*   n  - number of the data points,                                        */
+/*   d  - dimension of the Euclidean space.                                 */
+/* Returns:                                                                 */
+/*   depth of z w.r.t. xx in the interval [0,1].                            */
+/****************************************************************************/
+double HD_Rec(double* z, double** xx, int n, int d);
diff --git a/src/Knn.cpp b/src/Knn.cpp
new file mode 100644
index 0000000..2790f33
--- /dev/null
+++ b/src/Knn.cpp
@@ -0,0 +1,272 @@
+/*
+  File:             Knn.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     13.11.2015
+
+  The realization of the fast binary affine-invariante KNN classifier.
+*/
+
+#include "stdafx.h"
+
+#define DISTTYPE_EUCLIDEAN    1
+#define DISTTYPE_MAXIMUM      2
+#define DISTTYPE_STANDARDIZE 64
+
+static TMatrix Sigma;
+
+static int CompareValue(UPoint a, UPoint b)
+/* This routine is passed to the sort routine. */
+{
+  return (a.value < b.value);
+}
+
+static int GetMean(TMatrix x, TPoint *mean){
+	unsigned int n = x.size();if (n <= 0){return -1;}
+	unsigned int d = x[0].size();if (d <= 0){return -1;}
+	mean->resize(d);
+	for (unsigned int i = 0; i < n; i++){
+		for (unsigned int j = 0; j < d; j++){
+			(*mean)[j] += x[i][j];
+		}
+	}
+	for (unsigned int j = 0; j < d; j++){
+		(*mean)[j] /= (double)n;
+	}
+	return 0;
+}
+
+static int GetCov(TMatrix x, TMatrix *cov){
+	unsigned int n = x.size();if (n <= 0){return -1;}
+	unsigned int d = x[0].size();if (d <= 0){return -1;}
+	TPoint mean;GetMean(x, &mean);
+	cov->resize(d);
+	for (unsigned int i = 0; i < d; i++){(*cov)[i].resize(d);}
+	for (unsigned int i = 0; i < n; i++){
+		for (unsigned int j = 0; j < d; j++){
+			for (unsigned int k = 0; k < d; k++){
+				(*cov)[j][k] += (x[i][j] - mean[j])*(x[i][k] - mean[k]);
+			}
+		}
+	}
+	for (unsigned int j = 0; j < d; j++){
+		for (unsigned int k = 0; k < d; k++){
+			(*cov)[j][k] /= (double)(n - 1);
+		}
+	}
+	return 0;
+}
+
+static int GetInverted(TMatrix x, TMatrix *inv){
+	unsigned int d = x.size();if (d <= 0){return -1;}
+	unsigned int _d = x[0].size();if (_d != d){return -1;}
+  
+	boost::numeric::ublas::matrix<double> A(d, d);A.clear();
+	for (unsigned int i = 0; i < d; i++){
+		for (unsigned int j = 0; j < d; j++){
+			A(i,j) = x[i][j];
+		}
+	}
+	typedef boost::numeric::ublas::permutation_matrix<std::size_t> pmatrix;
+	boost::numeric::ublas::matrix<double> Inv(d, d);Inv.clear();
+	pmatrix pm(A.size1());
+	int res = lu_factorize(A, pm);
+	if (res != 0){return -1;}
+	Inv.assign(boost::numeric::ublas::identity_matrix<double> (A.size1()));
+	boost::numeric::ublas::lu_substitute(A, pm, Inv);
+  
+	inv->resize(d); for (unsigned int i = 0; i < d; i++){ (*inv)[i].resize(d); }
+	for (unsigned int i = 0; i < d; i++){
+		for (unsigned int j = 0; j < d; j++){
+			 (*inv)[i][j] = Inv(i,j);
+		}
+	}
+	return 0;
+}
+
+static double GetNormalized(TPoint dif){
+	unsigned int d = dif.size();
+	TPoint tmp(d);
+	for (unsigned int i = 0; i < d; i++){
+		for (unsigned int j = 0; j < d; j++){
+			tmp[i] += dif[j]*Sigma[j][i];
+		}
+	}
+	double res = 0;
+	for (unsigned int i = 0; i < d; i++){
+		res += tmp[i]*dif[i];
+	}
+	return res;
+}
+
+static double GetDistance(TPoint x, TPoint y, int d, int distType){
+	double dist = 0.;
+	if ((distType & DISTTYPE_EUCLIDEAN) == DISTTYPE_EUCLIDEAN){
+		TPoint distVector(d);
+		for (int i = 0; i < d; i++){distVector[i] = x[i] - y[i];}
+		if ((distType & DISTTYPE_STANDARDIZE) == DISTTYPE_STANDARDIZE){
+			dist = GetNormalized(distVector);
+		}else{
+			for (int i = 0; i < d; i++){dist += std::pow(x[i] - y[i],2);}
+		}
+	}
+	if ((distType & DISTTYPE_MAXIMUM) == DISTTYPE_MAXIMUM){
+		for (int i = 0; i < d; i++){
+			if (abs(x[i] - y[i]) > dist){dist = abs(x[i] - y[i]);}
+		}
+	}
+	return dist;
+}
+
+static int GetDistances(TMatrix x, TMatrix *dist, int distanceType){
+	unsigned int n = x.size();if (n <= 0){return -1;}
+	unsigned int d = x[0].size();if (d <= 0){return -1;}
+	TMatrix cov;GetCov(x, &cov);GetInverted(cov, &Sigma);
+	dist->resize(n);
+	for (unsigned int i = 0; i < n; i++){(*dist)[i].resize(n);}
+	for (unsigned int i = 0; i < n - 1; i++){
+		for (unsigned int j = i + 1; j < n; j++){
+			(*dist)[i][j] = (*dist)[j][i] = 
+				GetDistance(x[i], x[j], d, distanceType);
+		}
+	}
+	return 0;
+}
+
+static int GetMaxIndex(TVariables v){
+	int index = 0;int maxValue = v[0];int d = v.size();
+	for (int i = 1; i < d; i++){
+		if (v[i] > maxValue){index = i; maxValue = v[i];}
+	}
+	return index;
+}
+
+int KnnCv(TMatrix points, TVariables labels, unsigned int kMax, int distType, unsigned int numFolds){
+	// Collect basic statistics (and check it)
+	unsigned int d = points[0].size();unsigned int n = points.size();
+	int q = labels[GetMaxIndex(labels)] + 1;
+	if (labels.size() != n){return -1;}
+	// Prepare indicator array for Jack-Knifing
+	TMatrix dist;GetDistances(points, &dist, distType);
+	vector<vector<UPoint> > indicators(n, vector<UPoint>(n));
+	for (unsigned i = 0; i < n; i++){
+		for (unsigned j = 0; j < n; j++){
+			indicators[i][j] = UPoint(labels[j], dist[i][j]);
+		}
+	}
+	for (unsigned i = 0; i < n; i++){indicators[i][i].value = -1;}
+	for (unsigned i = 0; i < n; i++){
+		sort(indicators[i].begin(), indicators[i].end(), CompareValue);
+	}
+	// Jack-knifing
+	vector<TVariables> decisions(kMax + 1, TVariables(n));
+	for (unsigned int i = 0; i < n; i++){decisions[0][i] = labels[i];}
+	for (unsigned int i = 0; i < n; i++){
+		TVariables locVotes(q);
+		for (unsigned j = 1; j < kMax + 1; j++){
+			locVotes[indicators[i][j].pattern]++;
+			decisions[j][i] = GetMaxIndex(locVotes);
+		}
+	}
+	TVariables guessed(kMax + 1);
+	for (unsigned i = 1; i < kMax + 1; i++){
+		for (unsigned j = 0; j < n; j++){
+			if (decisions[i][j] == decisions[0][j]){guessed[i]++;}
+		}
+	}
+	return GetMaxIndex(guessed);
+}
+
+int Knn(TMatrix objects, TMatrix points, TVariables labels, unsigned int k, 
+		int distType, TVariables *output){
+	unsigned int n = points.size();if (n <= 0){return -1;}
+	unsigned int d = points[0].size();if (d <= 0){return -1;}
+	int q = labels[GetMaxIndex(labels)] + 1;
+	unsigned int nobjects = objects.size();if (nobjects <= 0){return -1;}
+	if (labels.size() != n){return -1;}if (objects[0].size() != d){return -1;}
+	output->resize(nobjects);
+	if ((distType & DISTTYPE_STANDARDIZE) == DISTTYPE_STANDARDIZE){
+		TMatrix cov;GetCov(points, &cov);GetInverted(cov, &Sigma);
+	}
+	for (unsigned int i = 0; i < nobjects; i++){
+		vector<UPoint> indicators(n);
+		for (unsigned int j = 0; j < n; j++){
+			indicators[j] = UPoint(labels[j], 
+				GetDistance(objects[i], points[j], d, distType));
+		}
+		sort(indicators.begin(), indicators.end(), CompareValue);
+		TVariables locVotes(q);
+		for (unsigned j = 0; j < k; j++){
+			locVotes[indicators[j].pattern]++;
+		}
+		(*output)[i] = GetMaxIndex(locVotes);
+	}
+	return 0;
+}
+
+int GetK_JK_Binary(TMatrix points, TVariables cardinalities, unsigned int maxk){
+	// Collect basic statistics (and check it)
+	unsigned int d = points[0].size();
+	unsigned int n = points.size();
+	unsigned int q = cardinalities.size();    if (q != 2){return -1;}
+	// Prepare indicator array for Jack-Knife
+	TMatrix dist;GetDistances(points, &dist, DISTTYPE_EUCLIDEAN | DISTTYPE_STANDARDIZE);
+	vector<vector<UPoint> > indicators;
+	indicators.resize(n);
+	for (unsigned int i = 0; i < n; i++){
+		indicators[i].resize(n);
+		for (int j = 0; j < cardinalities[0]; j++){indicators[i][j] = UPoint(0, dist[i][j]);}
+		for (unsigned j = cardinalities[0]; j < n; j++){indicators[i][j] = UPoint(1, dist[i][j]);}
+	}
+	for (unsigned int i = 0; i < n; i++){indicators[i][i].value = -1;}
+	for (unsigned int i = 0; i < n; i++){sort(indicators[i].begin(), indicators[i].end(), CompareValue);}
+	// Jack-knifing
+	vector<TVariables> decisions(maxk);
+	decisions[0].resize(n);for (unsigned int j = 0; j < n; j++){decisions[0][j] = indicators[j][1].pattern;}
+	for (unsigned int i = 1; i < maxk; i++){
+		decisions[i].resize(n);
+		for (unsigned int j = 0; j < n; j++){
+			decisions[i][j] = decisions[i - 1][j] + indicators[j][i + 1].pattern;
+		}
+	}
+	for (unsigned i = 0; i < maxk; i++){
+		for (unsigned j = 0; j < n; j++){
+			decisions[i][j] = (decisions[i][j] > (i + 1)/2 ? 1 : 0);
+		}
+	}
+	TVariables errors(maxk);
+	for (unsigned int i = 0; i < maxk; i++){
+		for (int j = 0; j < cardinalities[0]; j++){errors[i] += decisions[i][j];}
+		for (unsigned j = cardinalities[0]; j < n; j++){errors[i] += 1 - decisions[i][j];}
+	}
+	int k = -1; int minErr = n + 1;
+	for (unsigned int i = 0; i < maxk; i++){if (errors[i] < minErr){k = i + 1; minErr = errors[i];}}
+	return k;
+}
+
+int Knn_Classify_Binary(TMatrix objects, TMatrix points, TVariables cardinalities, unsigned int k, TVariables *output){
+	unsigned int n = points.size();if (n <= 0){return -1;}
+	unsigned int d = points[0].size();if (d <= 0){return -1;}
+	unsigned int nobjects = objects.size();if (nobjects <= 0){return -1;}
+	if (objects[0].size() != d){return -1;}
+	output->resize(nobjects);
+	TMatrix cov;GetCov(points, &cov);
+	GetInverted(cov, &Sigma);
+	for (unsigned int i = 0; i < nobjects; i++){
+		TPoint point = objects[i];
+		TPoint tmp(d);
+		TPoint dist(n);
+		for (unsigned int j = 0; j < n; j++){
+			for (unsigned int l = 0; l < d; l++){tmp[l] = point[l] - points[j][l];}
+			dist[j] = GetNormalized(tmp);
+		}
+		vector<UPoint> indicators(n);
+		for (int j = 0; j < cardinalities[0]; j++){indicators[j] = UPoint(0, dist[j]);}
+		for (unsigned j = cardinalities[0]; j < n; j++){indicators[j] = UPoint(1, dist[j]);}
+		sort(indicators.begin(), indicators.end(), CompareValue);
+		unsigned decision = 0;
+		for(unsigned int j = 0; j < k; j++){decision += indicators[j].pattern;}
+		(*output)[i] = (decision > k/2 ? 1 : 0);
+	}
+	return 0;
+}
diff --git a/src/Knn.h b/src/Knn.h
new file mode 100644
index 0000000..d58c552
--- /dev/null
+++ b/src/Knn.h
@@ -0,0 +1,21 @@
+/*
+  File:             Knn.h
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     28.02.2013
+  
+  The realization of the KNN classifier.
+*/
+
+int GetK_JK_Binary(TMatrix points, TVariables cardinalities, unsigned int maxk);
+int Knn_ClassifyOne_Binary(TPoint point, TMatrix points, 
+						   TVariables cardinalities, unsigned int k);
+int Knn_Classify_Binary(TMatrix objects, TMatrix points, 
+						TVariables cardinalities, unsigned int k, TVariables *output);
+int GetDDK_JK_Binary(TMatrix points, TVariables cardinalities, unsigned int maxk);
+int DDKnn_ClassifyOne(TPoint point, TMatrix points, TVariables cardinalities, 
+					  int k);
+int KnnCv(TMatrix points, TVariables labels, unsigned int kMax, int distType, 
+		  unsigned int numFolds);
+int Knn(TMatrix objects, TMatrix points, TVariables labels, unsigned int k, 
+		int distType, TVariables *output);
diff --git a/src/Mahalanobis.cpp b/src/Mahalanobis.cpp
new file mode 100644
index 0000000..a77c371
--- /dev/null
+++ b/src/Mahalanobis.cpp
@@ -0,0 +1,52 @@
+
+#include "stdafx.h"
+
+void MahalanobisDepth(TDMatrix X, TDMatrix x, int d, int n, int nx, double MCD, double *depths){
+	double* ms = means(X, n, d);
+	bMatrix A(d, d);
+	if (MCD == 1){
+		TDMatrix covXtemp = cov(X, n, d);
+		for (unsigned k = 0; k < d; k++)
+		for (unsigned j = 0; j < d; j++)
+			A(k, j) = covXtemp[k][j];
+		deleteM(covXtemp);
+	}
+	else{
+#ifndef _MSC_VER
+		Environment env("package:robustbase");
+		Function covMcd = env["covMcd"];
+		NumericMatrix X2(n,d);
+		for (int i = 0; i < n; i++)
+		for (int j = 0; j < d; j++)
+			X2(i, j) = X[i][j]; 
+		List ret = covMcd(X2, false, false, MCD);
+		NumericMatrix covXtemp = ret["cov"];
+		for (unsigned k = 0; k < d; k++)
+		for (unsigned j = 0; j < d; j++)
+			A(k, j) = covXtemp(k, j);
+#endif
+	}
+	using namespace boost::numeric::ublas;
+	bMatrix s(d, d); s.assign(identity_matrix<double>(d));
+	permutation_matrix<std::size_t> pm(A.size1());
+	int res = lu_factorize(A, pm);
+	//	if (res != 0) return false;
+	lu_substitute(A, pm, s);
+
+	double *a = new double[d];
+	for (int i = 0; i < nx; i++){
+		depths[i] = 0;
+		for (int k = 0; k < d; k++){
+			a[k] = 0;
+			for (int j = 0; j < d; j++){
+				a[k] += (x[i][j] - ms[j])*s(j, k);
+			}
+		}
+		for (int j = 0; j < d; j++){
+			depths[i] += (x[i][j] - ms[j])*a[j];
+		}
+		depths[i] = 1.0 / ((depths[i]) + 1);
+	}
+	delete[] a;
+	delete[] ms;
+}
diff --git a/src/Mahalanobis.h b/src/Mahalanobis.h
new file mode 100644
index 0000000..cb4de6b
--- /dev/null
+++ b/src/Mahalanobis.h
@@ -0,0 +1,2 @@
+
+void MahalanobisDepth(TDMatrix X, TDMatrix x, int d, int n, int nx, double MCD, double *depths);
diff --git a/src/OjaDepth.cpp b/src/OjaDepth.cpp
new file mode 100644
index 0000000..985a9bc
--- /dev/null
+++ b/src/OjaDepth.cpp
@@ -0,0 +1,107 @@
+#include "stdafx.h"
+
+void OjaDepthsEx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	double *depths){
+
+	int* counters = new int[d + 1];
+	bMatrix A (d + 1, d + 1);
+	unsigned long long div0 = choose(n, d);
+
+	TDMatrix covXtemp = cov(X,n,d);
+	bMatrix covX(d, d); 
+	for (unsigned k = 0; k < d; k++)
+	for (unsigned j = 0; j < d; j++)
+		covX(k,j) = covXtemp[k][j];
+	deleteM(covXtemp);
+	double S = pow(abs(determinant(covX)),-0.5);
+
+	for (int obs = 0; obs < nx; obs++){
+		long double sumVolume = 0;
+		unsigned long long numSimplicesChecked = 0;
+
+		int p = d - 1;
+		for (int i = 0; i < p; i++){ counters[i] = i; }counters[p] = p - 1;
+		while (counters[0] != n - (p + 1)){
+			int i = p;
+			while (i > 0 && counters[i] == n - (p + 1) + i){ i--; }
+			counters[i]++; int j = i + 1;
+			while (j < p + 1){ counters[j] = counters[j - 1] + 1; j++; }
+			for (int j = 0; j < d; j++){
+				for (int k = 0; k < d; k++){
+					A(j + 1, k) = X[counters[k]][j];
+				}
+			}
+			for (int j = 0; j < d; j++){
+				A(j + 1, d) = x[obs][j];
+			}
+			for (int k = 0; k < d + 1; k++){
+				A(0,k) = 1;
+			}
+			double volume = abs(determinant(A));
+			sumVolume += volume;
+			numSimplicesChecked ++;
+		}
+		bool sc = numSimplicesChecked == div0;
+		double O = sumVolume / fact(d) / div0;
+
+		double depth = 1/(1+O*S);
+		depths[obs] = depth;
+	}
+	
+	delete[] counters;
+}
+
+void OjaDepthsApx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	unsigned long long k, double *depths){
+
+	int* counters = new int[d + 1];
+	bMatrix A(d + 1, d + 1);
+	TDMatrix covXtemp = cov(X, n, d);
+	bMatrix covX(d, d);
+	for (unsigned k = 0; k < d; k++)
+	for (unsigned j = 0; j < d; j++)
+		covX(k, j) = covXtemp[k][j];
+	deleteM(covXtemp);
+	double S = pow(abs(determinant(covX)), -0.5);
+
+	for (int obs = 0; obs < nx; obs++){
+
+		long double sumVolume = 0;
+
+		for (unsigned long long i = 0; i < k; i++){
+			// Generate a combination of indices
+			for (int j = 0; j < d; j++){
+				bool _new = false;
+				do{
+					_new = true;
+					counters[j] = random(n);
+					for (int l = 0; l < j; l++){
+						if (counters[l] == counters[j]){
+							_new = false;
+							break;
+						}
+					}
+				} while (!_new);
+			}
+			// Construct the simplex out of it
+			for (int j = 0; j < d; j++){
+				for (int k = 0; k < d; k++){
+					A(j + 1, k) = X[counters[k]][j];
+				}
+			}
+			for (int j = 0; j < d; j++){
+				A(j + 1, d) = x[obs][j];
+			}
+			for (int k = 0; k < d + 1; k++){
+				A(0, k) = 1;
+			}
+			double volume = abs(determinant(A));
+			sumVolume += volume;
+		}
+		double O = sumVolume / fact(d) / k;
+
+		double depth = 1 / (1 + O*S);
+		depths[obs] = depth;
+	}
+	delete[] counters;
+}
diff --git a/src/OjaDepth.h b/src/OjaDepth.h
new file mode 100644
index 0000000..da7e858
--- /dev/null
+++ b/src/OjaDepth.h
@@ -0,0 +1,6 @@
+
+
+void OjaDepthsEx(TDMatrix X, TDMatrix x, int d, int n, int nx, double *depths);
+
+void OjaDepthsApx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	unsigned long long k, double *depths);
diff --git a/src/Polynomial.cpp b/src/Polynomial.cpp
new file mode 100644
index 0000000..bf663ce
--- /dev/null
+++ b/src/Polynomial.cpp
@@ -0,0 +1,425 @@
+/*
+  File:             Polynomial.cpp
+  Created by:       Oleksii Pokotylo
+  First published:  07.05.2014
+  Last revised:     07.05.2014
+
+  Contains the polynomial classifier the DD-plot classification.
+
+  For a description of the algorithm, see:
+    Li, J., Cuesta-Albertos, J. A. and Liu, R. Y. (2012). DD-classifier: Nonparametric classification procedure based on
+DD-plot, Journal of the American Statistical Association 107(498): 737 - 753.
+*/
+
+#include "stdafx.h"
+
+#include <limits>
+#include <boost/math/special_functions/binomial.hpp>
+
+#include "asa047.h"
+
+#ifndef _MSC_VER
+#include <Rcpp.h>
+using namespace Rcpp;
+#endif
+
+/**
+Calculates the empirical risk for two classes on the basis of given depths
+
+ at param polynomial : Polynomial as a vector of coefficients starting with the first degree(a0 = 0 always)
+ at param points : nx2 matrix of depths, where each column contains the depths against the corresponding class
+ at param numClass1:  Number of points belonging to the first class
+ at return polynomial as a vector of coefficients starting with the first degree (a0 = 0 always)
+
+ at throws empirical risk
+*/
+double GetEmpiricalRisk(TPoint& polynomial, TDMatrix points, unsigned numClass1, unsigned numClass2){
+	unsigned degree = polynomial.size();
+	unsigned n = numClass1 + numClass2;
+
+	double risk = 0;
+	int sign = 1;
+	for (unsigned i = 0; i < n; i++){
+		if (i >= numClass1)
+			sign = -1;
+
+		double val = points[i][0];
+		double res = 0;
+		for (unsigned j = 0; j<degree; j++){
+			res += polynomial[j] * std::pow(val, j+1);
+		}
+		if ((points[i][1] - res)*sign > 0){    // for class1 depths[i,2] > res, for class 2 <
+			risk++;
+		}
+	}
+
+	return risk / n;
+}
+
+/**
+Calculates the coefficients of the polynomial of a given degree
+going through given points and the origin
+
+ at param degree : degree of the polynomial, should be equal the number of points
+ at param points : degreex2 points for the polynomial to path through
+
+ at return polynomial as a vector of coefficients starting with the first degree (a0 = 0 always)
+
+ at throws runtime_error in case of singularity
+*/
+bool GetPolynomial(unsigned degree, TDMatrix points, TPoint& polynomial) {
+
+	bMatrix A(degree, degree);
+	for (unsigned i = 0; i < degree; i++){
+		for (unsigned j = 0; j < degree; j++){
+			A(i, j) = (std::pow(points[i][0], j + 1));
+		}
+	}
+
+	bVector b(degree);
+	for (unsigned i = 0; i < degree; i++){
+		b[i] = points[i][1];
+	}
+
+	bPM pm(A.size1());
+	bPM::size_type singular = boost::numeric::ublas::lu_factorize(A, pm);
+	if (singular != 0) return false;
+	boost::numeric::ublas::lu_substitute(A, pm, b);
+
+	for (unsigned i = 0; i < degree; i++){
+		if (!(b[i] < std::numeric_limits<double>::max()) || b[i] < -std::numeric_limits<double>::max()){  return false; }
+		polynomial[i] = b[i];
+	}
+  
+	return true;
+}
+
+/**
+Chooses the best in classification sense polynomial among
+"cardinality" randomly chosen polynomials, passing through
+"degree" arbitrary points
+
+ at param points:       nx2 matrix of points where first column is an absciss,	n = numClass1 + numClass2
+ at param numClass1:    Number of points belonging to the first class
+ at param degree:       Degree of the polynomial
+ at param n_polynomials:  Number of randomly chosen polynomials
+
+ at return polynomial as a vector of coefficients starting with the first degree (a0 = 0 always)
+*/
+TPoint GetRandomMinPolynomial(TDMatrix points, unsigned numClass1, unsigned numClass2, unsigned degree, unsigned n_polynomials){
+	unsigned n = numClass1 + numClass2;
+	vector<int> usedIndexesX(n);
+	vector<int> usedIndexesY(n);
+	int nx = 0, ny = 0;
+
+	for (unsigned i = 0; i<n; i++){
+		if (points[i][0] != 0){
+			usedIndexesX[nx++] = i;
+			if (points[i][1] != 0)
+				usedIndexesY[ny++] = i;
+		}
+	}
+
+	// 0.3 of all combination
+	int numOfCombinations = boost::math::binomial_coefficient<double>(nx - 1, degree - 1) * ny * 0.3; 
+	int numCandidates = (numOfCombinations > n_polynomials
+		? n_polynomials
+		: numOfCombinations);
+
+	TPoint minPolynomial(degree);
+	double minEmpRisk = 1;
+	TDMatrix sample = new double*[degree];
+	for (int i = 0; i < numCandidates; i++){
+		// generate sample
+		set<int> smp;
+		smp.insert(usedIndexesY[random(ny)]);
+		while (smp.size() < degree){
+			smp.insert(usedIndexesX[random(nx)]);
+		}
+
+		set <int>::const_iterator s = smp.begin();
+		for (unsigned j = 0; j < degree; j++, s++) {
+			sample[j] = points[*s];
+		}
+
+		try{
+			TPoint pol(degree);
+			if(!GetPolynomial(degree, sample, pol))
+				continue;
+			double rsk = GetEmpiricalRisk(pol, points, numClass1, numClass2);
+			if (rsk < minEmpRisk) {
+  				minPolynomial = pol;
+  				minEmpRisk = rsk;        
+			}
+		}
+		catch (runtime_error &e){ /* singular matrix*/ }
+		catch (...){ /* NA or inf */ }
+	}
+	delete[] sample;
+	return minPolynomial;
+}
+
+static int _degree;
+static TDMatrix _points;
+static unsigned _numClass1;
+static unsigned _numClass2;
+
+/**
+Calculates the empirical risk for two classes on the basis of given depths
+and approximates it to get continuous derivative
+
+ at param polynomial : Polynomial as a vector of coefficients starting with the first degree(a0 = 0 always)
+ at param _points : nx2 matrix of depths, where each column contains the depths against the corresponding class
+ at param _numClass1:  Number of points belonging to the first class
+ at param _numClass2:  Number of points belonging to the first class
+ at return polynomial as a vector of coefficients starting with the first degree (a0 = 0 always)
+*/
+double GetEmpiricalRiskSmoothed(double polynomial[]){
+	const float smoothingConstant = 100;
+	
+	double risk = 0;
+	int sign = 1;
+	for (unsigned i = 0; i < _numClass1 + _numClass2; i++){
+		if (i >= _numClass1)
+			sign = -1;
+
+		double val = (_points)[i][0];
+		double res = 0;
+		for (unsigned j = 0; j < _degree; j++){
+			res += polynomial[j] * std::pow(val, j+1);
+		}
+		risk += 1 / (1 + exp(-smoothingConstant*((_points)[i][1] - res)*sign));
+	}
+
+	return risk / _numClass1 + _numClass2;
+}
+
+
+TPoint nlm_optimize(TDMatrix points, TPoint& minCandidate, int numClass1, int numClass2){
+	/* static variables for GetEmpiricalRiskSmoothed */
+	_points = points;
+	_numClass1 = numClass1;
+	_numClass2 = numClass2;
+	_degree = minCandidate.size();
+
+	double* start = new double[_degree];
+	std::copy(minCandidate.begin(), minCandidate.end(), start);
+
+	int icount;
+	int ifault;
+	int kcount;
+	int konvge;
+	int n = _degree;
+	int numres;
+	double reqmin;
+	double *step;
+	double *xmin;
+	double ynewlo;
+
+	step = new double[n];
+	xmin = new double[n];
+
+	reqmin = 1.0E-06;
+
+	for (int i = 0; i < n; i++)
+	{
+		// determines the size and shape of the initial simplex.
+		// The relative magnitudes of its elements should reflect the units of the variables.  
+		step[i] = 1.0;
+	}
+
+	konvge = 10;
+	kcount = 500;
+	/*
+	cout << "\n";
+	cout << "  Starting point X:\n";
+	cout << "\n";
+	for (i = 0; i < n; i++)
+	{
+		cout << "  " << start[i] << "";
+	}
+	cout << "\n";
+	
+	ynewlo = GetEmpiricalRiskSmoothed(start);
+
+	cout << "\n";
+	cout << "  F(X) = " << ynewlo << "\n";
+	*/
+	nelmin(GetEmpiricalRiskSmoothed, n, start, xmin, &ynewlo, reqmin, step,
+		konvge, kcount, &icount, &numres, &ifault);
+	/*
+	cout << "\n";
+	cout << "  Return code IFAULT = " << ifault << "\n";
+	cout << "\n";
+	cout << "  Estimate of minimizing value X*:\n";
+	cout << "\n";
+	for (i = 0; i < n; i++)
+	{
+		cout << "  " << setw(14) << xmin[i] << "\n";
+	}
+
+	cout << "\n";
+	cout << "  F(X*) = " << ynewlo << "\n";
+
+	cout << "\n";
+	cout << "  Number of iterations = " << icount << "\n";
+	cout << "  Number of restarts =   " << numres << "\n";
+*/
+	TPoint minpol = TPoint(xmin, xmin + _degree);
+
+	delete[] start;
+	delete[] step;
+	delete[] xmin;
+
+	return minpol;
+}
+
+/**
+Chooses the best in classification sense polynomial
+
+ at param points:       nx2 matrix of points where first column is an abscissa, n = numClass1 + numClass2
+ at param numClass1:    Number of points belonging to the first class
+ at param degree:       Degree of the polynomial
+ at param presize:		 if true - run evaluation 5 times
+
+ at return polynomial as a vector of coefficients starting with the first degree (a0 = 0 always)
+*/
+TPoint GetOptPolynomial(TDMatrix points, unsigned numClass1, unsigned numClass2, unsigned degree, bool presize /*default = FALSE*/){
+
+	double minError = 100.1;
+	TPoint minPol;
+	
+	for (int i = 0; i < (presize ? 3 : 1); i++){
+		TPoint minCandidate = GetRandomMinPolynomial(points, numClass1, numClass2, degree, 10 ^ degree);
+		double err = GetEmpiricalRisk(minCandidate, points, numClass1, numClass2);
+		if (err < minError){
+			minPol = minCandidate;
+			minError = err;
+		}
+
+//#define DEBUG
+#ifdef DEBUG
+Rcpp::Rcout << "candminPol: ";
+for (int i = 0; i< degree; i++){
+  Rcpp::Rcout << minCandidate[i] << " ";
+}
+Rcpp::Rcout << " ; error = "<< err << " \n";
+#endif
+
+		TPoint optPolynomial = nlm_optimize(points, minCandidate, numClass1, numClass2);
+		err = GetEmpiricalRisk(optPolynomial, points, numClass1, numClass2);
+		if (err <= minError){
+			minPol = optPolynomial;
+			minError = err;
+		}
+  
+#ifdef DEBUG
+Rcpp::Rcout << "minPol: ";
+for (int i = 0; i< minPol.size(); i++){
+  Rcpp::Rcout << minPol[i] << " ";
+}
+Rcpp::Rcout << " ; error = "<< minError << " \n";
+#endif		
+	}  
+
+	return(minPol);
+}
+
+
+/**
+Calculates classification error of "degree" - degree polynomial using cross - validation approach
+
+ at param points:       nx2 matrix of points where first column is an absciss,	n = numClass1 + numClass2
+ at param numClass1:    Number of points belonging to the first class
+ at param degree:       Degree of the polynomial
+ at param chunkNumber:  Number of chunks in which data set should be splitted, chunkNumber should be a divider of n(n%%chunkNumber = 0)
+
+ at return Number of errors
+*/
+double GetCvError(TDMatrix points, unsigned numClass1, unsigned numClass2, unsigned degree, unsigned chunkNumber){
+
+	unsigned n = numClass1 + numClass2;
+	unsigned chunkSize = ceil((double)n / chunkNumber);
+
+	TDMatrix learnpoints = new double*[n - chunkSize+1]; 
+	TDMatrix checkpoints = new double*[chunkSize];
+
+	int chunk = 0;
+	int n1 = 0; // number of Class1 points in checkpoints
+	for (unsigned j = 0, l = 0, c = 0; j < n; j++){
+		if (j%chunkNumber)
+			learnpoints[l++] = points[j];
+		else
+			checkpoints[c++] = points[j];
+		if (j < numClass1 && (j%chunkNumber == 0)) n1++;
+	}
+
+	double err = 0;
+	bool bigch = true;
+	for (; chunk < chunkNumber; chunk++){
+
+		if (chunk > 0){
+			if (bigch && (chunkNumber)*(chunkSize - 1) + chunk == n){
+				bigch = false;
+				chunkSize--;
+				//checkpoints.resize(chunkSize);
+				//learnpoints.resize(n - chunkSize);
+				learnpoints[n - chunkSize - 1] = points[n - 1];
+			}
+
+			for (int i = 0; i < chunkSize; i++){
+				checkpoints[i] = learnpoints[(chunkNumber - 1)*i + chunk - 1];
+				learnpoints[(chunkNumber - 1)*i + chunk - 1] = points[chunkNumber*i + chunk - 1];
+				if (chunkNumber*i + chunk == numClass1)
+					n1--;
+			}
+		}
+
+		TPoint minPolynomial = GetOptPolynomial(learnpoints, numClass1 - n1, numClass2 - chunkSize + n1, degree, false);
+		double curErr = GetEmpiricalRisk(minPolynomial, checkpoints, n1, chunkSize - n1);
+		err += curErr;//  chunkSize;
+	}
+
+	delete[] learnpoints;
+	delete[] checkpoints;
+	return err/n;
+}
+
+TPoint PolynomialLearnCV(TDMatrix input, unsigned numClass1, unsigned numClass2, unsigned int maxDegree, unsigned int chunkNumber, int *degree, int *axis){
+	unsigned numPoints = numClass1 + numClass2;
+
+	unsigned polOptDegree = 0;
+	double polOptError = numPoints;
+	unsigned polOptAxis = 0;
+
+	TDMatrix input2 = newM(numPoints, 2); // copy
+	for (int i = 0, tmp; i < numPoints; i++){ input2[i][0] = input[i][1]; input2[i][1] = input[i][0]; } // swap columns
+
+	for (int degree = 1; degree <= maxDegree; degree++){
+		double polError = GetCvError(input, numClass1, numClass2, degree, chunkNumber);
+		//cout << degree << " " << polError << "\n";
+		if (polError < polOptError){
+			polOptAxis = 0;
+			polOptDegree = degree;
+			polOptError = polError;
+		}
+		polError = GetCvError(input2, numClass1, numClass2, degree, chunkNumber);
+		//cout << degree << " " << polError << "\n";
+		if (polError < polOptError){
+			polOptAxis = 1;
+			polOptDegree = degree;
+			polOptError = polError;
+		}
+	}
+
+	//cout << polOptDegree << " " << polOptError << "\n";
+	TPoint polynomial = polOptAxis == 0
+		? GetOptPolynomial(input, numClass1, numClass2, polOptDegree, true)
+		: GetOptPolynomial(input2, numClass1, numClass2, polOptDegree, true);
+
+	deleteM(input2);
+
+	*axis = polOptAxis;
+	*degree = polOptDegree;
+	return polynomial;
+}
diff --git a/src/Polynomial.h b/src/Polynomial.h
new file mode 100644
index 0000000..4546055
--- /dev/null
+++ b/src/Polynomial.h
@@ -0,0 +1,14 @@
+/*
+  File:             Polynomial.h
+  Created by:       Oleksii Pokotylo
+  First published:  07.05.2014
+  Last revised:     07.05.2014
+
+  Contains the polynomial classifier the DD-plot classification.
+
+  For a description of the algorithm, see:
+    Li, J., Cuesta-Albertos, J. A. and Liu, R. Y. (2012). DD-classifier: Nonparametric classification procedure based on
+DD-plot, Journal of the American Statistical Association 107(498): 737 - 753.
+*/
+
+TPoint PolynomialLearnCV(TDMatrix input, unsigned numClass1, unsigned numClass2, unsigned int maxDegree, unsigned int chunkNumber, int *degree, int *axis);
diff --git a/src/PotentialDepth.cpp b/src/PotentialDepth.cpp
new file mode 100644
index 0000000..a07e381
--- /dev/null
+++ b/src/PotentialDepth.cpp
@@ -0,0 +1,107 @@
+#include "stdafx.h"
+
+double EuclidianDistance(TPoint& x, TPoint& y){
+	double accu = 0;
+	for (int i = 0; i< x.size(); i++){
+		accu += pow(x[i] - y[i], 2);
+	}
+	return sqrt(accu);
+}
+
+double EuclidianDistance2(TPoint& x, TPoint& y){
+  double accu = 0;
+	for (int i = 0; i< x.size(); i++){
+		accu += pow(x[i] - y[i], 2);
+	}
+	return (accu);
+}
+
+// alpha - kernel sharpness. sharp - a more
+double EDKernel (TPoint& x, TPoint& y, double a){
+	return 1/(1+a*EuclidianDistance2(x, y));
+}
+
+// ss - sigma squared. sharp - a less
+double GKernel (TPoint& x, TPoint& y, double ss){
+  int d = x.size();
+	return pow((2*PI*ss), - d/2) * exp(-EuclidianDistance2(x, y) / (2*ss));   //04.04.2014  added power d
+}
+
+// ss - sigma squared. sharp - a less
+double VarGKernel(TPoint& x, TPoint& y, double ss){
+	int d = x.size();
+	return pow((2 * PI*ss), -d / 2) * exp(-EuclidianDistance2(x, y) / (2 * ss));   //04.04.2014  added power d
+}
+
+// alpha - kernel sharpness. sharp - a more
+double EKernel (TPoint& x, TPoint& y, double a){
+	return exp(-a*EuclidianDistance(x, y));
+}
+
+// alpha - triangle sharpness. sharp - a more. a in (0..pi/2)
+double TriangleKernel (TPoint& x, TPoint& y, double a){
+	return 1/(EuclidianDistance(x, y)+0.000001)*tan(a);
+}
+
+void PotentialDepths(TMatrix& points, TVariables& cardinalities, /*OUT*/ TMatrix& depths, double (*Kernel) (TPoint& x, TPoint& y, double a), double a){
+	PotentialDepths(points, cardinalities, points, depths, Kernel, a, 0);
+}
+
+void PotentialDepths(TMatrix& points, TVariables& cardinalities, TMatrix& testpoints, /*OUT*/ TMatrix& depths, double (*Kernel) (TPoint& x, TPoint& y, double ss), double ss, int ignoreself){
+	int classBeginning = 0;
+	
+	bool var = Kernel == VarGKernel;
+	double weight = 1;
+	TMatrix* classPoints;
+	TPoint* classPointsDepths;
+	int error;
+	
+	// loop classes
+	for (int i = 0; i < cardinalities.size(); classBeginning += cardinalities[i], i++){
+
+		if (var){
+			if (classPoints) delete[] classPoints;
+			classPoints = new TMatrix(points.begin() + classBeginning, points.begin() + classBeginning + cardinalities[i]);
+			if (!classPointsDepths)
+				classPointsDepths = new TPoint(cardinalities[i]);
+			else if (classPointsDepths->size() < cardinalities[i])
+				classPointsDepths->resize(cardinalities[i]);
+
+			for (int c = 0; c < cardinalities[i]; c++){
+				(*classPointsDepths)[c] = 1 - ZonoidDepth(*classPoints, points[classBeginning + c], error);
+			}
+		}
+
+		// loop all the points, find their potential relatively to class i
+		for (int p = 0; p< testpoints.size(); p++){
+			double pointDepth = 0;
+
+			// loop the points of i-th class, find the point's potential
+			for (int c = 0; c < cardinalities[i]; c++){
+				//      if (ignoreself && p == classBeginning + c) // ignore the potential created by this point
+				//        continue;
+
+				if (var)
+					weight = (*classPointsDepths)[c];
+
+				pointDepth += Kernel(testpoints[p], points[classBeginning + c], ss*weight);
+			}
+			depths[p][i] = pointDepth;
+		}
+    
+		if (false) {  //28.05.2014 no normalization
+			int n = ignoreself ? points.size() - 1 : points.size();
+
+			// normalize
+			for (int p = 0; p < testpoints.size(); p++){
+				depths[p][i] *= 1.0 / n;  //04.04.2014   1.0*cardinalities[i]/points.size()/Kernel(points[0], points[0], a);
+			}
+		}
+	}
+
+	if (var){
+		delete[] classPoints;
+		delete[] classPointsDepths;
+	}
+}
+
diff --git a/src/PotentialDepth.h b/src/PotentialDepth.h
new file mode 100644
index 0000000..e6351b0
--- /dev/null
+++ b/src/PotentialDepth.h
@@ -0,0 +1,28 @@
+#ifndef PotentialDepth_h
+#define PotentialDepth_h
+
+// Kernel constant: 1
+// alpha - kernel sharpness. sharp - a more
+double EDKernel (TPoint& x, TPoint& y, double a);
+
+// Kernel constant: 2
+// ss - sigma squared. sharp - a less
+double GKernel (TPoint& x, TPoint& y, double ss);
+
+// Kernel constant: 5
+// ss - sigma squared. sharp - a less
+double VarGKernel(TPoint& x, TPoint& y, double ss);
+
+// Kernel constant: 3
+// alpha - kernel sharpness. sharp - a more
+double EKernel (TPoint& x, TPoint& y, double a);
+
+// Kernel constant: 4
+// alpha - triangle sharpness. sharp - a more. a in (0..pi/2)
+double TriangleKernel (TPoint& x, TPoint& y, double a);
+
+void PotentialDepths(TMatrix& points, TVariables& cardinalities, /*OUT*/ TMatrix& depths, double (*Kernel) (TPoint& x, TPoint& y, double a), double a);
+
+void PotentialDepths(TMatrix& points, TVariables& cardinalities, TMatrix& testpoints, /*OUT*/ TMatrix& depths, double (*Kernel) (TPoint& x, TPoint& y, double a), double a, int ignoreself);
+
+#endif
diff --git a/src/ProjectionDepth.cpp b/src/ProjectionDepth.cpp
new file mode 100644
index 0000000..a3aacac
--- /dev/null
+++ b/src/ProjectionDepth.cpp
@@ -0,0 +1,102 @@
+/*
+  File:             ProjectionDepth.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  17.05.2013
+  Last revised:     13.11.2015
+  
+  Computation of the projection depth using random sampling.
+
+  For a description of the method, see:
+    Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth
+	  function. Annals of Statistics 28, 461-482.
+*/
+
+#include "stdafx.h"
+
+static int CompareAsc(OrderRec x, OrderRec y)
+{
+	return (x.value < y.value);
+}
+
+static int CompareDec(OrderRec x, OrderRec y)
+{
+	return (x.value > y.value);
+}
+
+static void GetMedMad(TPoint &points, double &median, double &mad){
+	/* First, determine median */
+	int n = points.size();
+	//sort(points.begin(), points.end());
+  //median = (points[(n + 1)/2 - 1] + points[(n + 2)/2 - 1])/2.;
+  nth_element(points.begin(), points.begin() + n/2, points.end());
+	median = points[n/2];
+	/* Obtain median absolute deviation (from median) (MAD) */
+	TPoint deviations(n);
+	for (int i = 0; i < n; i++){deviations[i] = abs(points[i] - median);}
+  //sort(deviations.begin(), deviations.end());
+  //median = (deviations[(n + 1)/2 - 1] + deviations[(n + 2)/2 - 1])/2.;
+  nth_element(deviations.begin(), deviations.begin() + n/2, deviations.end());
+	mad = deviations[n/2];
+}
+
+void GetPtsPrjDepths(double* projection, int n, double* objectsProjection, int m,
+					 TVariables cardinalities, TMatrix *ptsPrjDepths){
+	/* Collect basic statistics */
+	int q = cardinalities.size();
+	for (int i = 0; i < q; i++){
+		/* Prepare data and obtain median and mad*/
+		int beginIndex = 0;
+		for (int j = 0; j < q; j++){
+			if (j >= i){break;}
+			beginIndex += cardinalities[j];
+		}
+		int endIndex = beginIndex + cardinalities[i];
+		TPoint curClassProjection(projection + beginIndex, projection + endIndex);
+		double median, mad;GetMedMad(curClassProjection, median, mad);
+		/* Calculate i-class projectional univariate depths */
+		for (int j = 0; j < m; j++){
+			(*ptsPrjDepths)[i][j] = (objectsProjection[j] - median)/mad;
+		}
+	}
+}
+
+int GetDepthsPrj(TDMatrix points, int n, int d, TDMatrix objects, int m,
+				  TVariables cardinalities, int k, bool newDirs, 
+				  TDMatrix depths, TDMatrix directions, TDMatrix projections){
+	/* 1. Collecting basic statistics */
+	int q = cardinalities.size();
+	TDMatrix objectsProjections = newM(k,m);
+	if (newDirs){
+		GetDirections(directions, k, d);
+		GetProjections(points, n, d, directions, k, projections);
+	}
+	GetProjections(objects, m, d, directions, k, objectsProjections);
+	/* 2. Calculate projection depths */
+	vector<vector<vector<double> > > prjDepths(k, vector<vector<double> >(q, vector<double > (m)));
+	for (int i = 0; i < k; i++){
+		GetPtsPrjDepths(projections[i], n, objectsProjections[i], m, cardinalities,
+			&prjDepths[i]);
+	}
+	/* 3. Merge depths */
+	for (int i = 0; i < m; i++){
+		for (int j = 0; j < q; j++){
+			depths[i][j] = DBL_MIN;
+		}
+	}
+	for (int i = 0; i < k; i++){
+		for (int j = 0; j < q; j++){
+			for (int l = 0; l < m; l++){
+				if (prjDepths[i][j][l] > depths[l][j]){
+					depths[l][j] = prjDepths[i][j][l];
+				}
+			}
+		}
+	}
+	for (int i = 0; i < m; i++){
+		for (int j = 0; j < q; j++){		
+			depths[i][j] = 1/(1 + depths[i][j]);
+		}
+	}
+	deleteM(objectsProjections);
+	return 0;
+}
diff --git a/src/ProjectionDepth.h b/src/ProjectionDepth.h
new file mode 100644
index 0000000..450cbb2
--- /dev/null
+++ b/src/ProjectionDepth.h
@@ -0,0 +1,16 @@
+/*
+  File:             ProjectionDepth.h
+  Created by:       Pavlo Mozharovskyi
+  First published:  17.05.2013
+  Last revised:     13.11.2015
+  
+  Computation of the projection depth using random sampling.
+
+  For a description of the method, see:
+    Zuo, Y.J. and Serfling, R. (2000). General notions of statistical depth
+	  function. Annals of Statistics 28, 461-482.
+*/
+
+int GetDepthsPrj(TDMatrix points, int n, int d, TDMatrix objects, int m,
+	TVariables cardinalities, int k, bool newDirs,
+	TDMatrix depths, TDMatrix directions, TDMatrix projections);
diff --git a/src/SimplicialDepth.cpp b/src/SimplicialDepth.cpp
new file mode 100644
index 0000000..20e9c09
--- /dev/null
+++ b/src/SimplicialDepth.cpp
@@ -0,0 +1,175 @@
+
+#include "stdafx.h"
+
+/* -------------------------------------------------------------------------- */
+/* Calculates multivariate Liu (=simplicial) depth going through all          */
+/* possible simplices                                                         */
+/* -------------------------------------------------------------------------- */
+void SimplicialDepthsEx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	 double *depths){
+
+	double* b = new double[d + 1]; b[d] = 1;
+	double* z = new double[d + 1];
+	int* counters = new int[d + 1];
+	TDMatrix A = newM(d + 1, d + 1);
+	unsigned long long div0 = choose(n, d + 1);
+
+	for (int obs = 0; obs < nx; obs++){
+		unsigned long long theCounter = 0;
+		unsigned long long numSimplicesChecked = 0;
+
+		for (int i = 0; i < d; i++){ counters[i] = i; }counters[d] = d - 1;
+		while (counters[0] != n - (d + 1)){
+			int i = d;
+			while (i > 0 && counters[i] == n - (d + 1) + i){ i--; }
+			counters[i]++; int j = i + 1;
+			while (j < d + 1){ counters[j] = counters[j - 1] + 1; j++; }
+			
+			for (int j = 0; j < d; j++){
+				for (int k = 0; k < d + 1; k++){
+					A[j][k] = X[counters[k]][j];
+				}
+			}
+			for (int k = 0; k < d + 1; k++){
+				A[d][k] = 1;
+			}
+			memcpy(b, x[obs], d*sizeof(double)); b[d] = 1;
+			if (solveUnique(A, b, z, d + 1)){
+				bool isInside = true;
+				for (int j = 0; j < d + 1; j++){
+					if (z[j] < 0){ isInside = false; break; }
+				}
+				if (isInside){ theCounter++; }
+			}
+			(numSimplicesChecked) ++;
+		}		
+		bool sc = numSimplicesChecked == div0;
+		double depth = (double)theCounter / div0;
+		depths[obs] = depth;
+	}
+
+	delete[] b;
+	delete[] z;
+	delete[] counters;
+	deleteM(A);
+}
+
+
+/* -------------------------------------------------------------------------- */
+/* Estimates multivariate Liu (=simplicial) depth based on 'k' randomly       */
+/* drawn simplices                                                            */
+/* -------------------------------------------------------------------------- */
+void SimplicialDepthsApx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	unsigned long long k, double *depths){
+
+	double* b = new double[d + 1]; b[d] = 1;
+	double* z = new double[d + 1];
+	int* counters = new int[d + 1];
+	double* a = new double[(d + 1)*(d + 1)];
+	TDMatrix A = asMatrix(a, d + 1, d + 1);
+
+	for (int obs = 0; obs < nx; obs++){
+	unsigned long long theCounter = 0;
+
+	for (unsigned long long i = 0; i < k; i++){
+		// Generate a combination of indices
+		for (int j = 0; j < d + 1; j++){
+			bool _new = false;
+			do{
+				_new = true;
+				counters[j] = random(n);
+				for (int l = 0; l < j; l++){
+					if (counters[l] == counters[j]){
+						_new = false;
+						break;
+					}
+				}
+			} while (!_new);
+		}
+		// Construct the simplex out of it
+		for (int j = 0; j < d; j++){
+			for (int l = 0; l < d + 1; l++){
+				A[j][l] = X[counters[l]][j];
+			}
+		}
+		for (int l = 0; l < d + 1; l++){
+			A[d][l] = 1;
+		}
+		memcpy(b, x[obs], d*sizeof(double)); b[d] = 1;
+		// Check whether 'x' lies inside of this simplex
+		solveUnique(A, b, z, d + 1);
+		bool isInside = true;
+		for (int j = 0; j < d + 1; j++){
+			if (z[j] < 0){ isInside = false; break; }
+		}
+		if (isInside){ theCounter++; }
+	}
+	double depth = (double)theCounter / k;
+	depths[obs] = depth;
+}
+
+delete[] b;
+delete[] z;
+delete[] counters;
+delete[] A;
+delete[] a;
+}
+
+//#include <stdexcept>
+
+
+/*******************************************************************************************************************************************************
+*
+*     intSD2
+*
+******************************************************************************************************************************************************/
+
+unsigned long long intSD2(double** x, int n) {
+	const double eps = 1e-10;
+	double* alpha = new double[n];
+	int nt = 0; // Wie oft ist 0 in Points enthalten ? 
+	int nh = 0; // Wie viele Punkte im Halbraum ?
+	//  Winkel alpha berechnen und array initialisieren 
+	for (int i = 0; i < n; i++) {
+		if (hypot(x[i][0], x[i][1]) <= eps)
+			nt++;
+		else {
+			alpha[i - nt] = atan2(x[i][1], x[i][0]);  // alpha in (-pi,pi]
+			if (alpha[i - nt] < -M_PI + eps) alpha[i - nt] = M_PI; //  Korrektur f�r Zahlen wie (-1, -1e-16)
+			if (alpha[i - nt] <= eps) nh++;
+		}
+	}
+	unsigned long long nn = n - nt;
+	// Winkel sortieren
+	sort(alpha, alpha + nn);
+	// Simpliziale Tiefe berechnen
+	unsigned long long result = nn * (nn - 1) * (nn - 2) / 6;
+	int j = nh;
+	for (int i = 0; i < nh; i++) {
+		while ((j <= nn - 1) && (alpha[j] - M_PI <= alpha[i] - eps)) j++;
+		result -= (j - i - 1) * (j - i - 2) / 2;
+	}
+	j = 0;
+	for (int i = nh; i < nn; i++) {
+		while ((j <= nh - 1) && (alpha[j] + M_PI <= alpha[i] - eps)) j++;
+		result -= (nn + j - i - 1) * (nn + j - i - 2) / 2;
+	}
+	delete[] alpha;
+	result += choose(nt, 1)*choose(nn, 2) + choose(nt, 2)*choose(nn, 1) + choose(nt, 3);
+	return result;
+}
+
+void SimplicialDepths2(TDMatrix X, TDMatrix x, int n, int nx, double *depths) {
+	if (n <= 0) throw invalid_argument("n <= 0");
+	double c = (double)(n * (n - 1) * (n - 2) / 6);  // Anzahl aller Simplizes
+	double** xz = newM(n, 2);
+	for (int zi = 0; zi < nx; zi++){
+		// z in Ursprung verschieben
+		for (int i = 0; i < n; i++)
+			for (int j = 0; j < 2; j++) 
+				xz[i][j] = X[i][j] - x[zi][j];
+		unsigned long long result = intSD2(xz, n);
+		depths[zi] = result / c;
+	}
+	deleteM(xz);
+}
diff --git a/src/SimplicialDepth.h b/src/SimplicialDepth.h
new file mode 100644
index 0000000..5e5c00e
--- /dev/null
+++ b/src/SimplicialDepth.h
@@ -0,0 +1,9 @@
+
+
+void SimplicialDepthsEx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	double *depths);
+
+void SimplicialDepthsApx(TDMatrix X, TDMatrix x, int d, int n, int nx,
+	unsigned long long k, double *depths);
+
+void SimplicialDepths2(TDMatrix X, TDMatrix x, int n, int nx, double *depths);
diff --git a/src/TukeyDepth.cpp b/src/TukeyDepth.cpp
new file mode 100644
index 0000000..bbeb98a
--- /dev/null
+++ b/src/TukeyDepth.cpp
@@ -0,0 +1,170 @@
+/*
+  File:             TukeyDepth.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     13.11.2015
+  
+  Computation of the random Tukey data depth.
+
+  For a description of the algorithm, see:
+    Cuesta-Albertos, J. A. and Nieto-Reyes, A. (2008). The random Tukey depth. Computational Statistics & Data Analysis 52, 11 (July 2008), 4979-4988.
+    Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world data with the DDalpha-procedure. Mimeo.
+*/
+
+#include "stdafx.h"
+
+static int CompareAsc(OrderRec x, OrderRec y)
+{
+	return (x.value < y.value);
+}
+
+static int CompareDec(OrderRec x, OrderRec y)
+{
+	return (x.value > y.value);
+}
+
+void GetPrjDepths(double* projection, int n, TVariables& cardinalities, unsigned curClass, TVariables *prjDepths){
+	//Collecting basic statistics
+	int beginIndex = 0;
+	for (unsigned i = 0; i < cardinalities.size(); i++){
+		if (i >= curClass){break;}
+		beginIndex += cardinalities[i];
+	}
+	int endIndex = beginIndex + cardinalities[curClass] - 1;
+
+	//Preparing structures
+	vector<OrderRec> prjSort(n);
+	for (int i = 0; i < n; i++){
+		prjSort[i].order = i;
+		prjSort[i].value = projection[i];
+	}
+	
+	//Calculating projection depths
+	TVariables depthsForwards(n);
+	TVariables depthsBackwards(n);
+	//Forwards
+	sort(prjSort.begin(), prjSort.end(), CompareAsc);
+	int curDepth = 0;
+	for (int i = 0; i < n; i++){
+		if ((prjSort[i].order >= beginIndex) && (prjSort[i].order <= endIndex)){curDepth++;}
+		depthsForwards[prjSort[i].order] = curDepth;
+	}
+	//Backwards
+	sort(prjSort.begin(), prjSort.end(), CompareDec);
+	curDepth = 0;
+	for (int i = 0; i < n; i++){
+		if ((prjSort[i].order >= beginIndex) && (prjSort[i].order <= endIndex)){curDepth++;}
+		depthsBackwards[prjSort[i].order] = curDepth;
+	}
+	//Merge
+	for (int i = 0; i < n; i++){
+		if (depthsForwards[i] < depthsBackwards[i]){
+			(*prjDepths)[i] = depthsForwards[i];
+		}else{
+			(*prjDepths)[i] = depthsBackwards[i];
+		}
+	}
+}
+
+inline void GetPtPrjDepths(double* projection, int n, double point, TVariables& cardinalities, double* ptPrjDepths){
+	int q = cardinalities.size();
+	for (int i = 0; i < q; i++){
+		int beginIndex = 0;
+		for (int j = 0; j < q; j++){
+			if (j >= i){break;}
+			beginIndex += cardinalities[j];
+		}
+		int endIndex = beginIndex + cardinalities[i];
+		int nPtsBelow = 0;
+		int nPtsAbove = 0;
+		for (int j = beginIndex; j < endIndex; j++){
+			if (projection[j] <= point){nPtsBelow++;}
+			if (projection[j] >= point){nPtsAbove++;}
+		}
+		ptPrjDepths[i] = (nPtsBelow <= nPtsAbove)?(double)nPtsBelow:(double)nPtsAbove;
+	}
+}
+
+//Indexing from zero
+void GetDSpace(TDMatrix points, int n, int d, TVariables& cardinalities, int k, bool atOnce, TDMatrix dSpace, TDMatrix directions, TDMatrix projections){
+	//1. Collecting basic statistics
+	int q = cardinalities.size();
+
+	if (!atOnce){
+		TDMatrix ptPrjDepths = newM(k, q);
+		for (int i = 0; i < n; i++){
+/*			TMatrix dir(k, TPoint(d));
+			TMatrix proj(k, TPoint(q));*/
+			GetDepths(points[i], points, n, d, cardinalities, k, false, directions, projections, dSpace[i], ptPrjDepths);
+		}
+		deleteM(ptPrjDepths);
+		return;
+	}
+	GetDirections(directions, k, d);
+	GetProjections(points, n, d, directions, k, projections);
+	//2. Calculate projection depths
+	vector<vector<TVariables> > prjDepths(k, vector<TVariables>(q, TVariables(n)));
+	for (int i = 0; i < k; i++){
+		for (int j = 0; j < q; j++){
+			GetPrjDepths(projections[i], n, cardinalities, j, &prjDepths[i][j]);
+		}
+	}
+	//3. Merge depths
+	for (int i = 0; i < n; i++){
+		for (int j = 0; j < q; j++){
+			dSpace[i][j] = cardinalities[j] + 1;
+		}
+	}
+	for (int i = 0; i < k; i++){
+		for (int j = 0; j < q; j++){
+			for (int l = 0; l < n; l++){
+				if (prjDepths[i][j][l] < dSpace[l][j]){
+					dSpace[l][j] = prjDepths[i][j][l];
+				}
+			}
+		}
+	}
+	for (int i = 0; i < q; i++){
+		for (int j = 0; j < n; j++){
+			dSpace[j][i] /= cardinalities[i];
+		}
+	}
+}
+
+void GetDepths(double* point, TDMatrix points, int n, int d, 
+	TVariables& cardinalities, int k, bool atOnce, 
+	TDMatrix directions, TDMatrix projections, double* depths,
+	TDMatrix ptPrjDepths /*accu, k*q */){
+	//1. Collecting basic statistics
+	int q = cardinalities.size();
+	if (!atOnce){
+		GetDirections(directions, k, d);
+		GetProjections(points, n, d, directions, k, projections);
+	}	
+	//2. Calculate projection depths
+	TPoint pointProjections(k);
+	for (int i = 0; i < k; i++){
+		double curPrj = 0;
+		for (int j = 0; j < d; j++){
+			curPrj += point[j]*directions[i][j];
+		}
+		pointProjections[i] = curPrj;
+	}
+	for (int i = 0; i < k; i++){
+		GetPtPrjDepths(projections[i], n, pointProjections[i], cardinalities, ptPrjDepths[i]);
+	}
+	//3. Merge depths
+	for (int i = 0; i < q; i++){
+		depths[i] = cardinalities[i] + 1;
+	}
+	for (int i = 0; i < k; i++){
+		for (int j = 0; j < q; j++){
+			if (ptPrjDepths[i][j] < depths[j]){
+				depths[j] = ptPrjDepths[i][j];
+			}
+		}
+	}
+	for (int i = 0; i < q; i++){
+		depths[i] /= (double)cardinalities[i];
+	}
+}
diff --git a/src/TukeyDepth.h b/src/TukeyDepth.h
new file mode 100644
index 0000000..ed3fb4d
--- /dev/null
+++ b/src/TukeyDepth.h
@@ -0,0 +1,15 @@
+/*
+  File:             TukeyDepth.h
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     13.11.2015
+
+  Computation of the random Tukey data depth.
+
+  For a description of the algorithm, see:
+    Cuesta-Albertos, J. A. and Nieto-Reyes, A. (2008). The random Tukey depth. Computational Statistics & Data Analysis 52, 11 (July 2008), 4979-4988.
+    Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world data with the DDalpha-procedure. Mimeo.
+*/
+
+void GetDSpace(TDMatrix points, int n, int d, TVariables& cardinalities, int k, bool atOnce, TDMatrix dSpace, TDMatrix directions, TDMatrix projections);
+void GetDepths(double* point, TDMatrix points, int n, int d, TVariables& cardinalities, int k, bool atOnce, TDMatrix directions, TDMatrix projections, double* depths, TDMatrix ptPrjDepths /*accu, k*q */);
diff --git a/src/ZonoidDepth.cpp b/src/ZonoidDepth.cpp
new file mode 100644
index 0000000..309f730
--- /dev/null
+++ b/src/ZonoidDepth.cpp
@@ -0,0 +1,487 @@
+/*
+  File:         depth.cpp
+  Created by:   Rainer Dyckerhoff
+  Last revised: 15.05.2013
+
+  Computation of the zonoid data depth.
+
+  For a description of the algorithm, see:
+  Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996)
+  Zonoid Data Depth: Theory and Computation,
+  in: A. Compstat - Proceedings in Computational Statistics
+      (Albert Prat, ed.), Physica-Verlag, Heidelberg, p. 235--240.
+*/
+
+#include "stdafx.h"
+
+/* Definition of constants */
+static const double eps = 1e-8;
+static const double accuracy = 1e-10;
+static const int MaxIt = 1000;
+/* Definition of types */
+typedef vector<vector<double> > TMatrix;  //typedef double TRevSimplexTableau[MaxD + 2][MaxD + 3];
+typedef vector<int> TVariablen;          // typedef int  TVariablen[MaxD + 1];
+
+/* Definition of static variables */
+static int n, d, ItCount;
+static double lowerbound;
+static TMatrix rs;
+static TVariablen bv;
+static vector<SortRec> x_sort;
+static vector<unsigned short> RowInverted;
+
+/* Definition of static functions */
+
+static void RSInit(TPoint& z)
+/* Initialize the revised simplex tableau. */
+{
+  int i, j;
+  /* Basis = Identity matrix. */
+  rs.resize(d+2);
+  for (i = 0; i < d+2; i++) rs[i].resize(d+3);
+  for (i = 1; i <= d + 1; i++) 
+    for (j = 1; j <= d + 1; j++) rs[i][j] = (i == j);
+  /*  All simplex multipliers are equal to unity. */
+  for (j = 1; j <= d + 1; j++) rs[0][j] = 1;
+  /* RHS = z,1  */
+  /* Objective = 1 + sum of the z_i  */
+  rs[0][d + 2] = rs[d + 1][d + 2] = 1;
+  for (i = 1; i <= d; i++)
+    rs[0][d + 2] += rs[i][d + 2] = z[i-1];
+  /* Initially all basis variables are artificial variables. */
+  bv.resize(d+1);
+  for (i = 0; i <= d; i++) bv[i] = -1;
+}
+
+static void MakeCanonical(vector<TPoint>& x, TPoint& z)
+/* Convert master problem to canonical form. */
+{
+  int i, j;
+  RowInverted.resize(d);
+
+  for (j = 0; j < d; j++)
+    if ( RowInverted[j] = z[j] < 0 ) {
+      for (i = 0; i < n; i++) x[i][j] = -x[i][j];
+      z[j] = -z[j];
+    }
+}
+
+static void MakeOriginal(vector<TPoint>& x, TPoint& z)
+/* Reconstruct the original data. */
+{
+  int i, j;
+
+  for (j = 0; j < d; j++)
+    if (RowInverted[j]) {
+      for (i = 0; i < n; i++) x[i][j] = -x[i][j];
+      z[j] = -z[j];
+    }
+}
+
+static void CancelRow(int ip)
+/* Delete a zero row from the RS tableau. */
+{
+  int i, j;
+
+  for (i = 0; i <= d + 1; i++) rs[i][ip] = 0;
+  for (j = 1; j <= d + 2; j++) rs[ip][j] = 0;
+}
+
+static int Compare(SortRec a, SortRec b)
+/* This routine is passed to the sort routine. */
+{
+  return (a.v > b.v) ;
+}
+
+static bool AddColumn(vector<TPoint>& x)
+/* Solve the subproblem, generate the pivot column and adjoin it to the
+   to the RS tableau. */
+{
+  int    card, i, j, k;
+  double max, sum, rtmp;
+
+  /* Generate the coefficient of the subproblem's objective. */
+  for (k = 0; k < n; k++) {
+    for (x_sort[k].v = 0, j = 0; j < d; j++) 
+      x_sort[k].v += rs[0][j + 1] * x[k][j];
+    x_sort[k].p = &x[k];
+  }
+  /* Sort the coefficients in decreasing order. */
+  sort(x_sort.begin(), x_sort.end(), Compare);
+  /* Find the maximum of the subproblem as well as the extreme point
+     at which it is assmed. */
+  card = 0;
+  max = -rs[0][d + 1];
+  sum = -1;
+  for (k = 1; k <= n; k++)
+    if ((rtmp = (sum += x_sort[k-1].v) / k) > max) {
+      max = rtmp;
+      card = k;
+    }
+  max += rs[0][d + 1];
+
+  /* If the maximum is less than zero, the value of the objective of the
+     MP cannot be decreased. */
+  if (max < eps) return false; /* Solution found. */
+  /* If the relative error is less than 'accuracy', the iteration is stopped
+     as well. */
+  if (rs[0][d + 2] - max > lowerbound) lowerbound = rs[0][d + 2] - max;
+  if ((rs[0][d + 2] - lowerbound) / lowerbound < accuracy) return false;
+  /* If the number of iterations exceeds 'MaxIt', the iteration is stopped. */
+  if ( ++ItCount > MaxIt ) return false;
+
+  /*  Generate the new pivot column for the MP. */
+  rs[0][0] = max;
+  for (i = 1; i <= d + 1; i++) rs[i][0] = rs[i][d + 1];
+  for (j = 0; j < d; j++) {
+    for (sum = 0, k = 0; k < card; k++) sum += x_sort[k].p->operator[](j);
+    for (sum /= card, i = 1; i <= d + 1; i++) rs[i][0] += rs[i][j + 1] * sum;
+  }
+  return true;
+}
+
+static bool NonBasis(int v)
+/* Check whether 'v' is a basis variable. */
+{
+  int i;
+
+  for (i = 0; i <= d; i++) if (bv[i] == v) return false;
+  return true;
+}
+
+static bool PhaseIGeneratePivotColumn(vector<TPoint>& x, int *PivotColumn)
+/* Generate the new pivot column in phase I of the simplex algorithm. */
+{
+  int i, j, k;
+  double rtmp;
+
+  /* Find the pivot column */
+  rs[0][0] = -rs[0][d + 1];
+  *PivotColumn = 0;
+  for (k = 1; k <= n; k++)
+    if (NonBasis(k)) {
+      for (rtmp = 0, j = 1; j <= d; j++) rtmp += rs[0][j] * x[k-1][j-1];
+      if (rtmp > rs[0][0]) {
+        rs[0][0] = rtmp;
+        *PivotColumn = k;
+      }
+    }
+
+  if ((rs[0][0] += rs[0][d + 1]) < eps) return false;
+  /*  Generate the  pivot column */
+  for (i = 1; i <= d + 1; i++) {
+    rs[i][0] = rs[i][d + 1];
+    for (j = 1; j <= d; j++) rs[i][0] += rs[i][j] * x[*PivotColumn-1][j-1];
+  }
+  return true;
+}
+
+static int FindPivotRow()
+/* Find the pivot row. */
+{
+  int i;
+  double min, quot;
+  vector<int> I;
+  
+  I.resize(d+1);
+  min = DBL_MAX;
+  for (i = 1; i <= d + 1; i++)
+    if (rs[i][0] > eps) {
+      quot = rs[i][d + 2] / rs[i][0];
+      if (quot <= min+eps) {
+		if (quot < min-eps) {
+          I.clear();
+          min = quot;
+		}
+	    I.push_back(i);
+      }
+	}
+	if (I.size() <= 1) 
+	  return I[0];
+	else
+	  return I[random(I.size())];
+}
+
+static void RSStep(int PivotRow, int PivotColumn)
+/* Update the revised simplex tableau. */
+{
+  int i, j;
+  double pivot;
+
+  /* Calculate the new tableau. */
+  pivot = rs[PivotRow][0];
+  for (j = 1; j <= d + 2; j++) {
+    rs[PivotRow][j] /= pivot;
+    for (i = 0; i <= d + 1; i++)
+    if (i != PivotRow) rs[i][j] -= rs[PivotRow][j] * rs[i][0];
+  }
+  /* 'PivotColumn' goes into the basis. */
+  bv[PivotRow - 1] = PivotColumn;
+}
+
+static bool NoZeroRow(vector<TPoint>& x, int * PivotRow, int * PivotColumn)
+/* Check if a given row of the is a zero row. If a nonzero element is
+found, it is returned in '*PivcotColumn'. */
+{
+  int i, j, k;
+  double rtmp;
+
+  /* Find a non-zero element. */
+  *PivotColumn = 0;
+  for (k = n; k > 0; k--)
+    if (NonBasis(k)) {
+      rtmp = rs[*PivotRow][d + 1];
+      for (j = 1; j <= d; j++) rtmp += rs[*PivotRow][j] * x[k-1][j-1];
+      if (fabs(rtmp) > eps) {
+        *PivotColumn = k;
+        for (i = 0; i <= d + 1; i++) {
+          rs[i][0] = rs[i][d + 1];
+          for (j = 1; j <= d; j++)
+            rs[i][0] += rs[i][j] * x[*PivotColumn-1][j-1];
+        }
+        return true;
+      }
+    }
+  return false;
+}
+
+/* Standardizing functions */
+
+int GetMeansSds(vector<TPoint>& x, TPoint *means, TPoint *sds){
+/*
+	Get means and standard deviations, coordinatewise
+*/
+	int _n = x.size();int _d = x[0].size();means->resize(_d);sds->resize(_d);
+	for (int j = 0; j < _d; j++){
+		double tmpMean = 0;double tmpVar = 0;
+		for (int i = 0; i < _n; i++){
+			tmpMean += x[i][j];
+		}
+		(*means)[j] = tmpMean/_n;
+		for (int i = 0; i < _n; i++){
+			tmpVar += std::pow(x[i][j] - (*means)[j], 2);
+		}
+		(*sds)[j] = sqrt(tmpVar/(_n - 1));
+	}
+	return 0;
+}
+
+int Standardize(vector<TPoint> &x, TPoint& means, TPoint& sds){
+/*
+	Standardize data cloud, coordinatewise
+*/
+	int _n = x.size();int _d = x[0].size();
+	for (int i = 0; i < _n; i++){
+		for (int j = 0; j < _d; j++){
+			x[i][j] = (x[i][j] - means[j])/sds[j];
+		}
+	}
+	return 0;
+}
+
+int GetMeansSds(TDMatrix& x, int n, int d, TPoint *means, TPoint *sds){
+	/*
+	Get means and standard deviations, coordinatewise
+	*/
+	for (int j = 0; j < d; j++){
+		double tmpMean = 0; double tmpVar = 0;
+		for (int i = 0; i < n; i++){
+			tmpMean += x[i][j];
+		}
+		(*means)[j] = tmpMean / n;
+		for (int i = 0; i < n; i++){
+			tmpVar += std::pow(x[i][j] - (*means)[j], 2);
+		}
+		(*sds)[j] = sqrt(tmpVar / (n - 1));
+	}
+	return 0;
+}
+
+int Standardize(TDMatrix &x, int n, int d, TPoint& means, TPoint& sds){
+	/*
+	Standardize data cloud, coordinatewise
+	*/;
+	for (int i = 0; i < n; i++){
+		for (int j = 0; j < d; j++){
+			x[i][j] = (x[i][j] - means[j]) / sds[j];
+		}
+	}
+	return 0;
+}
+
+int Standardize(TPoint &x, TPoint& means, TPoint& sds){
+/*
+	Standardize point, coordinatewise
+*/
+	int _d = x.size();
+	for (int i = 0; i < _d; i++){
+			x[i] = (x[i] - means[i])/sds[i];
+	}
+	return 0;
+}
+
+int Unstandardize(vector<TPoint> &x, TPoint& means, TPoint& sds){
+/*
+	Unstandardize data cloud, coordinatewise
+*/
+	int _n = x.size();int _d = x[0].size();
+	for (int i = 0; i < _n; i++){
+		for (int j = 0; j < _d; j++){
+			x[i][j] = x[i][j]*sds[j] + means[j];
+		}
+	}
+	return 0;
+}
+
+int Unstandardize(TPoint &x, TPoint& means, TPoint& sds){
+/*
+	Unstandardize point, coordinatewise
+*/
+	int _d = x.size();
+	for (int i = 0; i < _d; i++){
+			x[i] = x[i]*sds[i] + means[i];
+	}
+	return 0;
+}
+
+/* Definition of public functions */
+
+double ZonoidDepth(vector<TPoint>& x, TPoint& z, int& Error)
+/*
+   Calculate the zonoid data depth of the point 'z' with respect to the
+   data points 'x'. The number of data points is passed in 'NoPoints',
+   the dimension in 'Dimension'. If an error occurs, the error code is
+   stored in '*Error'. Possible error codes are:
+     0: no error,
+     1: simplex algorithm did not terminate within 'MaxIt' iterations.
+     2: not enough memory available,
+   If no error occured, the return value is the zonoid data depth of 'z'.
+   If the error code is 1, the return value is an lower bound to the
+   zonoid data depth of 'z'. If the error code is 2, the return value is -1.
+*/
+{
+  int j, k, row, PivotColumn;
+
+  n = x.size();
+  d = z.size();
+
+  Error = 0;
+
+  MakeCanonical(x,z);  /* Convert tableau to canonical form. */
+
+  /* Phase I */
+
+  RSInit(z); /* Initialize tableau und basis variables. */
+  /* Try to eliminate the artificial variables from the basis to get a
+     basic feasible solution. */
+  while (PhaseIGeneratePivotColumn(x, &PivotColumn))
+    RSStep(FindPivotRow(), PivotColumn);
+  /* If the maximum objective is greater than zero, no basic feasible
+     solution exists. Thus, 'z' lies outside the convex hull of 'x' and the
+     zonoid data depth is 0. */
+  if (fabs(rs[0][d + 2]) > eps) {
+    MakeOriginal(x,z); /* Reconstruct the original data. */
+    return 0;          /* Return zonoid data depth. */
+  }
+  /* Check if there are still artificial variables on zero level in the basis
+     and remove them from the basis. */
+  for (row = 1; row <= d + 1; row++)
+    if (bv[row - 1] < 0) {
+      if (NoZeroRow(x, &row, &PivotColumn))
+        RSStep(row, PivotColumn);
+      else
+        CancelRow(row);
+    }
+
+  /*  Phase II  */
+
+  /* Try to allocate memory for 'x_sort'. */
+  x_sort.resize(n);
+  if (x_sort.size() == n) { /* Allocation successful. */
+    lowerbound = 1.0 / n; /* Lower bound for the objective of the MP. */
+    /* Reinitialize the objective of the MP. */
+    for (j = 1; j <= d + 2; j++)
+    for (rs[0][j] = 0, k = 1; k <= d + 1; k++) rs[0][j] += rs[k][j];
+    /* Revised simplex algorithm */
+    ItCount = 0;
+    while (AddColumn(x)) 
+		RSStep(FindPivotRow(), 0);
+    if ( ItCount > MaxIt ) Error = 1;
+
+//    free(x_sort);       /* Free the memory allocated for 'x_sort'. */
+    MakeOriginal(x,z);  /* Reconstruct the original data. */
+    return 1 / (n * rs[0][d + 2]); /* Return zonoid data depth. */
+  }
+  else { /* Memory for 'x_sort' could not be allocated. */
+    Error = 2;
+    MakeOriginal(x,z);  /* Reconstruct original data. */
+    return -1;
+  }
+}
+
+int InConvexes(TMatrix& points, TVariables& cardinalities, TMatrix& objects, int& Error, TIntMatrix *areInConvexes)
+/*
+   Check if the points are inside of the convex hull.
+   1: Point lies inside of the convex hull of the data
+   0: Point lies beyond the convex hull of the data
+*/
+{
+	d = points[0].size();
+
+	// Prepare a structure indicating if each point lies inside the convex hull of each class
+	int m = objects.size();
+	int q = cardinalities.size();
+  
+  areInConvexes->resize(m);
+  for (int i = 0; i < m; i++){(*areInConvexes)[i].resize(q);}
+  TIntMatrix &separateAnswers = (*areInConvexes);  // a link to output. just not to rewrite all occurances of separateAnswers  
+
+	// Split into separate data sets and
+	// check if each point lies inside each of the convex hulls
+	int startIndex = 0;
+	for (int i = 0; i < q; i++){ // Cycling through data sets
+		n = cardinalities[i];
+		TMatrix x(n);
+		for (int j = 0; j < cardinalities[i]; j++){
+			x[j] = points[startIndex + j];
+		}
+		/* Standardize */
+		TPoint means(d);TPoint sds(d);
+		GetMeansSds(x, &means, &sds);
+		Standardize(x, means, sds);
+		for (int j = 0; j < m; j++){ // Cycling through points
+			int PivotColumn;
+			TPoint z = objects[j];
+
+			/* Standardize */
+			Standardize(z, means, sds);			
+
+			/* Rainer's codes (slightly modified) */
+			Error = 0;
+			
+			MakeCanonical(x,z);  /* Convert tableau to canonical form. */
+			
+			/* Phase I */
+
+			RSInit(z); /* Initialize tableau und basis variables. */
+			/* Try to eliminate the artificial variables from the basis to get a
+			basic feasible solution. */
+			while (PhaseIGeneratePivotColumn(x, &PivotColumn))
+				RSStep(FindPivotRow(), PivotColumn);
+			/* If the maximum objective is greater than zero, no basic feasible
+			solution exists. Thus, 'z' lies outside the convex hull of 'x'. */
+			if (fabs(rs[0][d + 2]) > eps) {
+				MakeOriginal(x,z); /* Reconstruct the original data. */
+				Unstandardize(z, means, sds);
+				separateAnswers[j][i] = 0; /* Point lies outside the convex hull. */
+			}else{
+				MakeOriginal(x,z); /* Reconstruct the original data. */
+				Unstandardize(z, means, sds);
+				separateAnswers[j][i] = 1; /* Point lies inside of the convex hull of the data. */
+			}
+		}
+		startIndex+=cardinalities[i];
+	}
+
+	return 0;
+}
diff --git a/src/ZonoidDepth.h b/src/ZonoidDepth.h
new file mode 100644
index 0000000..65f04a0
--- /dev/null
+++ b/src/ZonoidDepth.h
@@ -0,0 +1,42 @@
+#ifndef __ZonoidDepth__
+#define __ZonoidDepth__
+/*
+   File:         depth.h
+   Created by:   Rainer Dyckerhoff
+   Last revised: 15.05.2013
+
+   Computation of the zonoid data depth. 
+   
+   For a description of the algorithm, see:
+   Dyckerhoff, R., Koshevoy, G., and Mosler, K. (1996)
+   Zonoid Data Depth: Theory and Computation,
+   in: Compstat - Proceedings in Computational Statistics, (Albert Prat, ed.), 
+   Physica-Verlag, Heidelberg, p. 235--240.
+*/   
+
+double ZonoidDepth(vector<TPoint>& x, TPoint& z, int& Error);
+/* 
+   Calculate the zonoid data depth of the point 'z' with respect to the
+   data points 'x'. The number of data points is passed in 'NoPoints',
+   the dimension in 'Dimension'. If an error occurs, the error code is
+   stored in '*Error'. Possible error codes are:
+     0: no error,
+     1: simplex algorithm did not terminate within 'MaxIt' iterations,
+     2: not enough memory available,
+   If no error occured, the return value is the zonoid data depth of 'z'.
+   If the error code is 1, the return value is an lower bound to the
+   zonoid data depth of 'z'. If the error code is 2, the return value is -1. 
+*/
+
+int IsInConvex(vector<TPoint>& x, TPoint& z, int& Error);
+int InConvexes(TMatrix& points, TVariables& cardinalities, TMatrix& objects, int& Error, TIntMatrix *areInConvexes);
+
+int GetMeansSds(vector<TPoint>& x, TPoint *means, TPoint *sds);
+int Standardize(vector<TPoint> &x, TPoint& means, TPoint& sds);
+int Standardize(TPoint &x, TPoint& means, TPoint& sds);
+
+int GetMeansSds(TDMatrix &x, int n, int d, TPoint *means, TPoint *sds);
+int Standardize(TDMatrix &x, int n, int d, TPoint& means, TPoint& sds);
+
+#endif
+
diff --git a/src/asa047.cpp b/src/asa047.cpp
new file mode 100644
index 0000000..cb5e833
--- /dev/null
+++ b/src/asa047.cpp
@@ -0,0 +1,494 @@
+# include <cstdlib>
+# include <iostream>
+# include <iomanip>
+# include <ctime>
+# include <cmath>
+
+using namespace std;
+
+# include "asa047.h"
+
+//****************************************************************************80
+
+void nelmin ( double fn ( double x[] ), int n, double start[], double xmin[], 
+  double *ynewlo, double reqmin, double step[], int konvge, int kcount, 
+  int *icount, int *numres, int *ifault )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NELMIN minimizes a function using the Nelder-Mead algorithm.
+//
+//  Discussion:
+//
+//    This routine seeks the minimum value of a user-specified function.
+//
+//    Simplex function minimisation procedure due to Nelder+Mead(1965),
+//    as implemented by O'Neill(1971, Appl.Statist. 20, 338-45), with
+//    subsequent comments by Chambers+Ertel(1974, 23, 250-1), Benyon(1976,
+//    25, 97) and Hill(1978, 27, 380-2)
+//
+//    The function to be minimized must be defined by a function of
+//    the form
+//
+//      function fn ( x, f )
+//      double fn
+//      double x(*)
+//
+//    and the name of this subroutine must be declared EXTERNAL in the
+//    calling routine and passed as the argument FN.
+//
+//    This routine does not include a termination test using the
+//    fitting of a quadratic surface.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license. 
+//
+//  Modified:
+//
+//    27 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by R ONeill.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    John Nelder, Roger Mead,
+//    A simplex method for function minimization,
+//    Computer Journal,
+//    Volume 7, 1965, pages 308-313.
+//
+//    R ONeill,
+//    Algorithm AS 47:
+//    Function Minimization Using a Simplex Procedure,
+//    Applied Statistics,
+//    Volume 20, Number 3, 1971, pages 338-345.
+//
+//  Parameters:
+//
+//    Input, double FN ( double x[] ), the name of the routine which evaluates
+//    the function to be minimized.
+//
+//    Input, int N, the number of variables.
+//
+//    Input/output, double START[N].  On input, a starting point
+//    for the iteration.  On output, this data may have been overwritten.
+//
+//    Output, double XMIN[N], the coordinates of the point which
+//    is estimated to minimize the function.
+//
+//    Output, double YNEWLO, the minimum value of the function.
+//
+//    Input, double REQMIN, the terminating limit for the variance
+//    of function values.
+//
+//    Input, double STEP[N], determines the size and shape of the
+//    initial simplex.  The relative magnitudes of its elements should reflect
+//    the units of the variables.
+//
+//    Input, int KONVGE, the convergence check is carried out 
+//    every KONVGE iterations.
+//
+//    Input, int KCOUNT, the maximum number of function 
+//    evaluations.
+//
+//    Output, int *ICOUNT, the number of function evaluations 
+//    used.
+//
+//    Output, int *NUMRES, the number of restarts.
+//
+//    Output, int *IFAULT, error indicator.
+//    0, no errors detected.
+//    1, REQMIN, N, or KONVGE has an illegal value.
+//    2, iteration terminated because KCOUNT was exceeded without convergence.
+//
+{
+  double ccoeff = 0.5;
+  double del;
+  double dn;
+  double dnn;
+  double ecoeff = 2.0;
+  double eps = 0.001;
+  int i;
+  int ihi;
+  int ilo;
+  int j;
+  int jcount;
+  int l;
+  int nn;
+  double *p;
+  double *p2star;
+  double *pbar;
+  double *pstar;
+  double rcoeff = 1.0;
+  double rq;
+  double x;
+  double *y;
+  double y2star;
+  double ylo;
+  double ystar;
+  double z;
+//
+//  Check the input parameters.
+//
+  if ( reqmin <= 0.0 )
+  {
+    *ifault = 1;
+    return;
+  }
+
+  if ( n < 1 )
+  {
+    *ifault = 1;
+    return;
+  }
+
+  if ( konvge < 1 )
+  {
+    *ifault = 1;
+    return;
+  }
+
+  p = new double[n*(n+1)];
+  pstar = new double[n];
+  p2star = new double[n];
+  pbar = new double[n];
+  y = new double[n+1];
+
+  *icount = 0;
+  *numres = 0;
+
+  jcount = konvge; 
+  dn = ( double ) ( n );
+  nn = n + 1;
+  dnn = ( double ) ( nn );
+  del = 1.0;
+  rq = reqmin * dn;
+//
+//  Initial or restarted loop.
+//
+  for ( ; ; )
+  {
+    for ( i = 0; i < n; i++ )
+    { 
+      p[i+n*n] = start[i];
+    }
+    y[n] = fn ( start );
+    *icount = *icount + 1;
+
+    for ( j = 0; j < n; j++ )
+    {
+      x = start[j];
+      start[j] = start[j] + step[j] * del;
+      for ( i = 0; i < n; i++ )
+      {
+        p[i+j*n] = start[i];
+      }
+      y[j] = fn ( start );
+      *icount = *icount + 1;
+      start[j] = x;
+    }
+//                    
+//  The simplex construction is complete.
+//                    
+//  Find highest and lowest Y values.  YNEWLO = Y(IHI) indicates
+//  the vertex of the simplex to be replaced.
+//                
+    ylo = y[0];
+    ilo = 0;
+
+    for ( i = 1; i < nn; i++ )
+    {
+      if ( y[i] < ylo )
+      {
+        ylo = y[i];
+        ilo = i;
+      }
+    }
+//
+//  Inner loop.
+//
+    for ( ; ; )
+    {
+      if ( kcount <= *icount )
+      {
+        break;
+      }
+      *ynewlo = y[0];
+      ihi = 0;
+
+      for ( i = 1; i < nn; i++ )
+      {
+        if ( *ynewlo < y[i] )
+        {
+          *ynewlo = y[i];
+          ihi = i;
+        }
+      }
+//
+//  Calculate PBAR, the centroid of the simplex vertices
+//  excepting the vertex with Y value YNEWLO.
+//
+      for ( i = 0; i < n; i++ )
+      {
+        z = 0.0;
+        for ( j = 0; j < nn; j++ )
+        { 
+          z = z + p[i+j*n];
+        }
+        z = z - p[i+ihi*n];  
+        pbar[i] = z / dn;
+      }
+//
+//  Reflection through the centroid.
+//
+      for ( i = 0; i < n; i++ )
+      {
+        pstar[i] = pbar[i] + rcoeff * ( pbar[i] - p[i+ihi*n] );
+      }
+      ystar = fn ( pstar );
+      *icount = *icount + 1;
+//
+//  Successful reflection, so extension.
+//
+      if ( ystar < ylo )
+      {
+        for ( i = 0; i < n; i++ )
+        {
+          p2star[i] = pbar[i] + ecoeff * ( pstar[i] - pbar[i] );
+        }
+        y2star = fn ( p2star );
+        *icount = *icount + 1;
+//
+//  Check extension.
+//
+        if ( ystar < y2star )
+        {
+          for ( i = 0; i < n; i++ )
+          {
+            p[i+ihi*n] = pstar[i];
+          }
+          y[ihi] = ystar;
+        }
+//
+//  Retain extension or contraction.
+//
+        else
+        {
+          for ( i = 0; i < n; i++ )
+          {
+            p[i+ihi*n] = p2star[i];
+          }
+          y[ihi] = y2star;
+        }
+      }
+//
+//  No extension.
+//
+      else
+      {
+        l = 0;
+        for ( i = 0; i < nn; i++ )
+        {
+          if ( ystar < y[i] )
+          {
+            l = l + 1;
+          }
+        }
+
+        if ( 1 < l )
+        {
+          for ( i = 0; i < n; i++ )
+          {
+            p[i+ihi*n] = pstar[i];
+          }
+          y[ihi] = ystar;
+        }
+//
+//  Contraction on the Y(IHI) side of the centroid.
+//
+        else if ( l == 0 )
+        {
+          for ( i = 0; i < n; i++ )
+          {
+            p2star[i] = pbar[i] + ccoeff * ( p[i+ihi*n] - pbar[i] );
+          }
+          y2star = fn ( p2star );
+          *icount = *icount + 1;
+//
+//  Contract the whole simplex.
+//
+          if ( y[ihi] < y2star )
+          {
+            for ( j = 0; j < nn; j++ )
+            {
+              for ( i = 0; i < n; i++ )
+              {
+                p[i+j*n] = ( p[i+j*n] + p[i+ilo*n] ) * 0.5;
+                xmin[i] = p[i+j*n];
+              }
+              y[j] = fn ( xmin );
+              *icount = *icount + 1;
+            }
+            ylo = y[0];
+            ilo = 0;
+
+            for ( i = 1; i < nn; i++ )
+            {
+              if ( y[i] < ylo )
+              {
+                ylo = y[i];
+                ilo = i;
+              }
+            }
+            continue;
+          }
+//
+//  Retain contraction.
+//
+          else
+          {
+            for ( i = 0; i < n; i++ )
+            {
+              p[i+ihi*n] = p2star[i];
+            }
+            y[ihi] = y2star;
+          }
+        }
+//
+//  Contraction on the reflection side of the centroid.
+//
+        else if ( l == 1 )
+        {
+          for ( i = 0; i < n; i++ )
+          {
+            p2star[i] = pbar[i] + ccoeff * ( pstar[i] - pbar[i] );
+          }
+          y2star = fn ( p2star );
+          *icount = *icount + 1;
+//
+//  Retain reflection?
+//
+          if ( y2star <= ystar )
+          {
+            for ( i = 0; i < n; i++ )
+            {
+              p[i+ihi*n] = p2star[i];
+            }
+            y[ihi] = y2star;
+          }
+          else
+          {
+            for ( i = 0; i < n; i++ )
+            {
+              p[i+ihi*n] = pstar[i];
+            }
+            y[ihi] = ystar;
+          }
+        }
+      }
+//
+//  Check if YLO improved.
+//
+      if ( y[ihi] < ylo )
+      {
+        ylo = y[ihi];
+        ilo = ihi;
+      }
+      jcount = jcount - 1;
+
+      if ( 0 < jcount )
+      {
+        continue;
+      }
+//
+//  Check to see if minimum reached.
+//
+      if ( *icount <= kcount )
+      {
+        jcount = konvge;
+
+        z = 0.0;
+        for ( i = 0; i < nn; i++ )
+        {
+          z = z + y[i];
+        }
+        x = z / dnn;
+
+        z = 0.0;
+        for ( i = 0; i < nn; i++ )
+        {
+          z = z + pow ( y[i] - x, 2 );
+        }
+
+        if ( z <= rq )
+        {
+          break;
+        }
+      }
+    }
+//
+//  Factorial tests to check that YNEWLO is a local minimum.
+//
+    for ( i = 0; i < n; i++ )
+    {
+      xmin[i] = p[i+ilo*n];
+    }
+    *ynewlo = y[ilo];
+
+    if ( kcount < *icount )
+    {
+      *ifault = 2;
+      break;
+    }
+
+    *ifault = 0;
+
+    for ( i = 0; i < n; i++ )
+    {
+      del = step[i] * eps;
+      xmin[i] = xmin[i] + del;
+      z = fn ( xmin );
+      *icount = *icount + 1;
+      if ( z < *ynewlo )
+      {
+        *ifault = 2;
+        break;
+      }
+      xmin[i] = xmin[i] - del - del;
+      z = fn ( xmin );
+      *icount = *icount + 1;
+      if ( z < *ynewlo )
+      {
+        *ifault = 2;
+        break;
+      }
+      xmin[i] = xmin[i] + del;
+    }
+
+    if ( *ifault == 0 )
+    {
+      break;
+    }
+//
+//  Restart the procedure.
+//
+    for ( i = 0; i < n; i++ )
+    {
+      start[i] = xmin[i];
+    }
+    del = eps;
+    *numres = *numres + 1;
+  }
+  delete [] p;
+  delete [] pstar;
+  delete [] p2star;
+  delete [] pbar;
+  delete [] y;
+
+  return;
+}
diff --git a/src/asa047.h b/src/asa047.h
new file mode 100644
index 0000000..5b6e40a
--- /dev/null
+++ b/src/asa047.h
@@ -0,0 +1,16 @@
+/*******************************************************************************
+Author:
+Original FORTRAN77 version by R ONeill; C++ version by John Burkardt.
+http://people.sc.fsu.edu/~jburkardt/cpp_src/asa047/asa047.html
+*******************************************************************************/
+
+#ifndef ASA047
+#define ASA047
+
+void nelmin(double fn(double x[]), int n, double start[], double xmin[],
+	double *ynewlo, double reqmin, double step[], int konvge, int kcount,
+	int *icount, int *numres, int *ifault);
+void timestamp();
+
+#endif
+
diff --git a/src/ddalpha.cpp b/src/ddalpha.cpp
new file mode 100644
index 0000000..d896a45
--- /dev/null
+++ b/src/ddalpha.cpp
@@ -0,0 +1,554 @@
+/*
+  File:             ddalpha.cpp
+  Created by:       Pavlo Mozharovskyi
+  First published:  28.02.2013
+  Last revised:     13.11.2015
+
+  Defines the exported functions for the 'ddalpha'-package.
+
+  For a description of the algorithm, see:
+    Lange, T., Mosler, K. and Mozharovskyi, P. (2012). Fast nonparametric classification based on data depth. Statistical Papers.
+    Mozharovskyi, P., Mosler, K. and Lange, T. (2013). Classifying real-world data with the DDalpha-procedure. Mimeo.
+*/
+
+#include "stdafx.h"
+
+#define EOF (-1)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void Sum(double *a, double *b, double *res){
+	res[0] = a[0] + b[0];
+}
+
+void setSeed(unsigned int random_seed){
+	if (random_seed != 0) {
+		setseed(random_seed);
+		rEngine.seed(random_seed);
+	}
+	else {
+		setseed(time(NULL));
+		rEngine.seed(time(NULL));
+	}
+}
+
+void IsInConvexes(double *points, int *dimension, int *cardinalities, int *numClasses, double *objects, int *numObjects, int *seed, int *isInConvexes){
+	setSeed(*seed);
+	int numPoints = 0;for (int i = 0; i < numClasses[0]; i++){numPoints += cardinalities[i];}
+	TMatrix x(numPoints);
+	for (int i = 0; i < numPoints; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TMatrix o(numObjects[0]);
+	for (int i = 0; i < numObjects[0]; i++){o[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numObjects[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			o[i][j] = objects[i * dimension[0] + j];
+		}
+	}
+	TVariables cars(numClasses[0]);
+	for (int i = 0; i < numClasses[0]; i++){
+		cars[i] = cardinalities[i];
+	}
+	TIntMatrix answers(o.size());
+	int error = 0;
+	InConvexes(x, cars, o, error, &answers);
+	for (int i = 0; i < numObjects[0]; i++)
+    for (int j = 0; j < numClasses[0]; j++){
+  		isInConvexes[numClasses[0]*i+j] = answers[i][j];
+  	}
+}
+
+void ZDepth(double *points, double *objects, int *numPoints, int *numObjects, int *dimension, int *seed, double *depths){
+	setSeed(*seed);
+	TMatrix x(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TPoint means(*dimension); TPoint sds(*dimension);
+	GetMeansSds(x, &means, &sds);
+	Standardize(x, means, sds);
+	TMatrix z(numObjects[0]);
+	for (int i = 0; i < numObjects[0]; i++){z[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numObjects[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			z[i][j] = objects[i * dimension[0] + j];
+		}
+		Standardize(z[i], means, sds);
+		int error;
+		depths[i] = ZonoidDepth(x, z[i], error);
+	}
+}
+
+void HDepth(double *points, double *objects, int *numObjects, int *dimension, 
+	int *cardinalities, int *numClasses, double *directions, double *projections, 
+	int *k, int *sameDirs, int *seed, double *depths){
+	setSeed(*seed);
+	int numPoints = 0;for (int i = 0; i < numClasses[0]; i++){numPoints += cardinalities[i];}
+	TDMatrix x = asMatrix(points, numPoints, dimension[0]);
+	TDMatrix z = asMatrix(objects, numObjects[0], dimension[0]);
+
+	TVariables cars(numClasses[0]);
+	for (int i = 0; i < numClasses[0]; i++){
+		cars[i] = cardinalities[i];
+	}
+
+	TDMatrix dirs = asMatrix(directions, k[0], *dimension);
+	TDMatrix prjs = asMatrix(projections,k[0], numPoints);
+	TDMatrix ptPrjDepths = newM(*k, *numClasses);
+	for (int i = 0; i < numObjects[0]; i++){
+		GetDepths(z[i], x, numPoints, *dimension, cars, 
+			k[0], i == 0 ? 0 : sameDirs[0] /*at the first step fill the matrices*/, 
+			dirs, prjs, depths + i * numClasses[0], ptPrjDepths);
+	/*	for (int j = 0; j < numClasses[0]; j++){
+			depths[i * numClasses[0] + j] = dps[j];
+		}*/
+	}
+	deleteM(ptPrjDepths);
+
+/*	if (*sameDirs){
+		for (int i = 0; i < k[0] * dimension[0]; i++){
+			directions[i] = dirs[i / dimension[0]][i%dimension[0]];
+		}
+		for (int i = 0; i < k[0] * numPoints; i++){
+			projections[i] = prjs[i / numPoints][i%numPoints];
+		}
+		}
+	deleteM(dirs);
+	deleteM(prjs);
+*/
+
+	delete[] x;
+	delete[] z;
+	delete[] dirs;
+	delete[] prjs;
+}
+
+void HDSpace(double *points, int *dimension, int *cardinalities, int *numClasses,
+	int *k, int *sameDirs, int *seed, double *dSpace, double *directions, double *projections){
+	setSeed(*seed);
+	int numPoints = 0;for (int i = 0; i < numClasses[0]; i++){numPoints += cardinalities[i];}
+	TDMatrix x = asMatrix(points, numPoints, *dimension);
+
+	TVariables cars(numClasses[0]);
+	for (int i = 0; i < numClasses[0]; i++){
+		cars[i] = cardinalities[i];
+	}
+	TDMatrix dsps = asMatrix(dSpace, numPoints, *numClasses);
+	TDMatrix dirs = asMatrix(directions, k[0], (*dimension));
+	TDMatrix prjs = asMatrix(projections, k[0], (numPoints));
+	GetDSpace(x, numPoints, *dimension, cars, k[0], sameDirs[0], dsps, dirs, prjs);
+/*	for (int i = 0; i < numPoints*numClasses[0]; i++){
+		dSpace[i] = dsps[i/numClasses[0]][i%numClasses[0]];
+	}
+*/
+	/*	if (*sameDirs){
+	for (int i = 0; i < k[0] * dimension[0]; i++){
+	directions[i] = dirs[i / dimension[0]][i%dimension[0]];
+	}
+	for (int i = 0; i < k[0] * numPoints; i++){
+	projections[i] = prjs[i / numPoints][i%numPoints];
+	}
+	}
+	deleteM(dirs);
+	deleteM(prjs);
+	*/
+
+	delete[] x;
+	delete[] dsps;
+	delete[] dirs;
+	delete[] prjs;
+}
+
+void HDepthSpaceEx(double *points, double *objects, int *cardinalities, int *numClasses, int *numObjects,
+	int *dimension, int *algNo, double *depths){
+	
+	double(*func)(double *z, double **xx, int n, int d);
+	switch ((HDalgs)*algNo)
+	{
+	case recursive:
+		func = &HD_Rec; break;
+	case plane:
+		func = &HD_Comb2; break;
+	case line:
+		func = &HD_Comb; break;
+	default:
+		func = 0; break;
+	}
+
+	TDMatrix x = asMatrix(objects, *numObjects, *dimension);
+	int classBegin = 0;
+
+	if (func)
+	for (int c = 0; c < *numClasses; c++){
+		TDMatrix X = asMatrix(points+classBegin, cardinalities[c], *dimension);
+	//	printMatrix(X, cardinalities[c], *dimension);
+		for (int i = 0; i < *numObjects; i++){
+			depths[c * (*numObjects) + i] = func(x[i], X, cardinalities[c], *dimension);
+		}
+		classBegin += cardinalities[c]* *dimension;
+		delete[] X;
+	}
+	delete[] x;
+}
+
+void HDepthEx(double *points, double *objects, int *numPoints, int *numObjects, int *dimension, int *algNo, double *depths){
+
+	double(*func)(double *z, double **xx, int n, int d);
+	switch ((HDalgs)*algNo)
+	{
+	case recursive:
+		func = &HD_Rec; break;
+	case plane:
+		func = &HD_Comb2; break;
+	case line:
+		func = &HD_Comb; break;
+	default:
+		func = 0; break;
+	}
+
+	TDMatrix X = asMatrix(points, *numPoints, *dimension);
+	TDMatrix x = asMatrix(objects, *numObjects, *dimension);
+
+	if (func)
+	for (int i = 0; i < *numObjects; i++){
+		depths[i] = func(x[i], X, *numPoints, *dimension);
+	}
+	delete[] X;
+	delete[] x;
+}
+
+void MahalanobisDepth(double *points, double *objects, int *numPoints, int *numObjects, int *dimension, double* MCD, double *depths){
+	TDMatrix X = asMatrix(points, *numPoints, *dimension);
+	TDMatrix x = asMatrix(objects, *numObjects, *dimension);
+
+	MahalanobisDepth(X, x, *dimension, *numPoints, *numObjects, *MCD, depths);
+
+	delete[] X;
+	delete[] x;
+}
+
+void OjaDepth(double *points, double *objects, int *numPoints, int *numObjects, int *dimension, int *seed, int* exact, int *k, double *depths){
+	setSeed(*seed);
+	TDMatrix X = asMatrix(points, *numPoints, *dimension);
+	TDMatrix x = asMatrix(objects, *numObjects, *dimension);
+
+	if (*exact)
+		OjaDepthsEx(X, x, *dimension, *numPoints, *numObjects, depths);
+	else{
+		long long K = ((long long)2000000000)*k[0] + k[1];
+		OjaDepthsApx(X, x, *dimension, *numPoints, *numObjects, K, depths);
+	}
+	delete[] X;
+	delete[] x;
+}
+
+void SimplicialDepth(double *points, double *objects, int *numPoints, int *numObjects, int *dimension, int *seed, int* exact, int *k, double *depths){
+	setSeed(*seed);
+	TDMatrix X = asMatrix(points, *numPoints, *dimension);
+	TDMatrix x = asMatrix(objects, *numObjects, *dimension);
+
+	if (*dimension == 2)
+		SimplicialDepths2(X, x, *numPoints, *numObjects, depths);
+	else if (*exact)
+		SimplicialDepthsEx(X, x, *dimension, *numPoints, *numObjects, depths);
+	else {
+		long long K = ((long long)2000000000)*k[0] + k[1];
+		SimplicialDepthsApx(X, x, *dimension, *numPoints, *numObjects, K, depths);
+	}
+	delete[] X;
+	delete[] x;
+}
+
+void AlphaLearn(double *points, int *numPoints, int *dimension, int *cardinalities, int *degree, int *minFeatures, double *ray){
+	
+
+	TMatrix x(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TVariables y(numPoints[0]);
+	for (int i = 0; i < cardinalities[0]; i++){y[i] = 1;}
+	for (int i = cardinalities[0]; i < numPoints[0]; i++){y[i] = -1;}
+	TMatrix _x;
+	ExtendWithProducts(x, degree[0], &_x);
+	TPoint direction;
+	OUT_ALPHA = true;
+	Learn(_x, y, minFeatures[0], &direction);
+	ray[0] = degree[0];
+	for (unsigned i = 0; i < direction.size(); i++){
+		ray[i + 1] = direction[i];
+	}
+}
+
+void AlphaLearnCV(double *points, int *numPoints, int *dimension, int *cardinalities, int *upToPower, int *numFolds, int *minFeatures, int *debug, double *ray){
+	TMatrix x(numPoints[0],TPoint(dimension[0]));
+	for (int i = 0; i < numPoints[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TVariables y(numPoints[0]);
+	for (int i = 0; i < cardinalities[0]; i++){y[i] = 1;}
+	for (int i = cardinalities[0]; i < numPoints[0]; i++){y[i] = -1;}
+	TPoint direction; unsigned int power;
+	OUT_ALPHA = (debug[0])!=0;
+	LearnCV(x, y, minFeatures[0], upToPower[0], numFolds[0], &direction, &power);
+	ray[0] = power;
+	for (unsigned i = 0; i < direction.size(); i++){
+		ray[i + 1] = direction[i];
+	}
+}
+
+void AlphaClassify(double *points, int *numPoints, int *dimension, int *degree, double *ray, int *output){
+	TMatrix x(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TMatrix _x;
+	ExtendWithProducts(x, degree[0], &_x);
+	TPoint direction(_x[0].size());
+	for (unsigned i = 0; i < _x[0].size(); i++){
+		direction[i] = ray[i + 1];
+	}
+	TVariables y;
+	Classify(_x, direction, &y);
+	for (int i = 0; i < numPoints[0]; i++){
+		output[i] = y[i];
+	}
+}
+
+void KnnAffInvLearnJK(double *points, int *dimension, int *cardinalities, int *maxk, int *k){
+	int numPoints = cardinalities[0] + cardinalities[1];
+	TMatrix x(numPoints);
+	for (int i = 0; i < numPoints; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TVariables cars(2);cars[0] = cardinalities[0];cars[1] = cardinalities[1];
+	k[0] = GetK_JK_Binary(x, cars, maxk[0]);
+}
+
+void KnnAffInvClassify(double *objects, int *numObjects, double *points, int *dimension, int *cardinalities, int *k, int *output){
+	int numPoints = cardinalities[0] + cardinalities[1];
+	TMatrix x(numPoints);
+	for (int i = 0; i < numPoints; i++){x[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numPoints; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TVariables cars(2);cars[0] = cardinalities[0];cars[1] = cardinalities[1];
+	TMatrix y(numObjects[0]);
+	for (int i = 0; i < numObjects[0]; i++){y[i] = TPoint(dimension[0]);}
+	for (int i = 0; i < numObjects[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			y[i][j] = objects[i * dimension[0] + j];
+		}
+	}
+	TVariables result;
+	Knn_Classify_Binary(y, x, cars, k[0], &result);
+	for (int i = 0; i < numObjects[0]; i++){
+		output[i] = result[i];
+	}
+}
+
+void KnnLearnJK(double *points, int *labels, int *numPoints, int *dimension, int *kmax, int *distType, int *k){
+	TMatrix x(numPoints[0]);TVariables y(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){
+		x[i] = TPoint(dimension[0]);
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+		y[i] = labels[i];
+	}
+	k[0] = KnnCv(x, y, kmax[0], distType[0], 0);
+}
+
+void KnnClassify(double *objects, int *numObjects, double *points, int *labels, int *numPoints, int *dimension, int *k, int *distType, int *output){
+	TMatrix x(numPoints[0]);TVariables y(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){
+		x[i] = TPoint(dimension[0]);
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+		y[i] = labels[i];
+	}
+	TMatrix z(numObjects[0]);
+	for (int i = 0; i < numObjects[0]; i++){
+		z[i] = TPoint(dimension[0]);
+		for (int j = 0; j < dimension[0]; j++){
+			z[i][j] = objects[i * dimension[0] + j];
+		}
+	}
+	TVariables result;
+	Knn(z, x, y, k[0], distType[0], &result);
+	for (int i = 0; i < numObjects[0]; i++){
+		output[i] = result[i];
+	}
+}
+
+void DKnnLearnCv(double *points, int *labels, int *numPoints, int *dimension, int *kmax, int *depthType, int *k, int* chunkNumber, int *seed){
+	setSeed(*seed);
+	TDMatrix x = asMatrix(points, *numPoints, *dimension);
+	*k = DKnnCv(x, *numPoints, *dimension, labels, *kmax, *depthType, *chunkNumber);
+	delete[] x;
+}
+
+void DKnnClassify(double *objects, int *numObjects, double *points, int *labels, int *numPoints, int *dimension, int *k, int *depthType, int *seed, int *output){
+	setSeed(*seed);
+	TDMatrix x = asMatrix(points, *numPoints, *dimension);
+	TDMatrix z = asMatrix(objects, *numObjects, *dimension);
+	
+	DKnnClassify(x, *numPoints, *dimension, labels, z, *numObjects, *k, *depthType, output);
+	delete[] x;
+	delete[] z;
+}
+
+void PolynomialLearnCV(double *points, int *numPoints, int *dimension, int *cardinalities, int *maxDegree, int *chunkNumber, int *seed, /*OUT*/ int *degree, /*OUT*/ int *axis, /*OUT*/ double *polynomial){
+	setSeed(*seed);
+	TDMatrix x = asMatrix(points, numPoints[0], dimension[0]);
+	TVariables y(numPoints[0]);
+	for (int i = 0; i < cardinalities[0]; i++){ y[i] = 1; }
+	for (int i = cardinalities[0]; i < numPoints[0]; i++){ y[i] = -1; }
+	
+	TPoint pol = PolynomialLearnCV(x, cardinalities[0], cardinalities[1], *maxDegree, *chunkNumber, degree, axis);
+
+	for (unsigned i = 0; i < pol.size(); i++){
+		polynomial[i] = pol[i];
+	}
+	delete[] x;
+}
+/* everything implemented in R
+void PolynomialClassify(double *points, int *numPoints, int *dimension, int *degree, double *ray, int *output){
+	TMatrix x(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){ x[i] = TPoint(dimension[0]); }
+	for (int i = 0; i < numPoints[0]; i++){
+		for (int j = 0; j < dimension[0]; j++){
+			x[i][j] = points[i * dimension[0] + j];
+		}
+	}
+	TMatrix _x;
+	ExtendWithProducts(x, degree[0], &_x);
+	TPoint direction(_x[0].size());
+	for (unsigned i = 0; i < _x[0].size(); i++){
+		direction[i] = ray[i + 1];
+	}
+	TVariables y;
+	Classify(_x, direction, &y);
+	for (int i = 0; i < numPoints[0]; i++){
+		output[i] = y[i];
+	}
+}
+*/
+
+void ProjectionDepth(double *points, double *objects, int *numObjects,
+					 int *dimension, int *cardinalities, int *numClasses,
+					 double *directions, double *projections, int *k,
+					 int *newDirs, int *seed, double *depths){
+	setSeed(*seed);
+	TVariables cars(numClasses[0]);
+	int numPoints = 0;
+	for (int i = 0; i < numClasses[0]; i++){
+		numPoints += cardinalities[i];
+		cars[i] = cardinalities[i];
+	}
+	TDMatrix x = asMatrix(points, numPoints, *dimension);
+	TDMatrix z = asMatrix(objects, *numObjects, *dimension);
+
+	TDMatrix dirs = asMatrix(directions, k[0], *dimension);
+	TDMatrix prjs = asMatrix(projections, k[0], numPoints);
+	TDMatrix _depths = asMatrix(depths, *numObjects, *numClasses);
+	GetDepthsPrj(x, numPoints, *dimension, z, *numObjects, cars, 
+		*k, *newDirs, _depths, dirs, prjs);
+/*	for (int i = 0; i < numObjects[0]; i++){
+		for (int j = 0; j < numClasses[0]; j++){
+			depths[i * numClasses[0] + j] = _depths[i][j];
+		}
+	}
+	if (newDirs[0]){
+		for (int i = 0; i < k[0]*dimension[0]; i++){
+			directions[i] = dirs[i/dimension[0]][i%dimension[0]];
+		}
+		for (int i = 0; i < k[0]*numPoints; i++){
+			projections[i] = prjs[i/numPoints][i%numPoints];
+		}
+	}
+	*/
+
+	delete[] x;
+	delete[] z;
+	delete[] dirs;
+	delete[] prjs;
+	delete[] _depths;
+}
+
+void PotentialDepthsCount(double *points, int *numPoints, int *dimension, int *classes, int *cardinalities, double *testpoints, int *numTestPoints, int* kernelType, double *a, int* ignoreself, double *depths){
+	TMatrix x(numPoints[0]);
+	for (int i = 0; i < numPoints[0]; i++){
+		TPoint& curPoint = x[i];
+		curPoint.resize(dimension[0]);
+		for (int j = 0; j < dimension[0]; j++){
+			curPoint[j] = points[i * dimension[0] + j];
+		}
+	}
+	
+	TMatrix xt(numTestPoints[0]);
+	for (int i = 0; i < numTestPoints[0]; i++){
+		TPoint& curPoint = xt[i];
+		curPoint.resize(dimension[0]);
+		for (int j = 0; j < dimension[0]; j++){
+			curPoint[j] = testpoints[i * dimension[0] + j];
+		}
+	}
+
+	TMatrix d(numTestPoints[0]);
+	for (int i = 0; i < numTestPoints[0]; i++){
+		d[i].resize(classes[0]);
+	}
+	TVariables car(classes[0]);
+	for (int i = 0; i < classes[0]; i++){
+		car[i] = cardinalities[i];
+	}
+
+	double (*Kernel) (TPoint& x, TPoint& y, double a) = 0;
+
+	switch (*kernelType){
+		case 1: Kernel = EDKernel; break;
+		case 2: Kernel = GKernel; break;
+		case 3: Kernel = EKernel; break;
+		case 4: Kernel = TriangleKernel; break;
+		case 5: Kernel = VarGKernel; break;
+		default: throw "Unsupported kernel type";
+	}
+	
+	PotentialDepths(x, car, xt, d, Kernel, *a, *ignoreself);
+
+	for (int i = 0; i < numTestPoints[0]; i++){
+		for (int j = 0; j < classes[0]; j++){
+		//	depths[i * classes[0] + j] = d[i][j];
+			depths[j * numTestPoints[0] + i] = d[i][j];
+		}
+	}
+}
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/depth.fd.f b/src/depth.fd.f
new file mode 100644
index 0000000..36ecdb8
--- /dev/null
+++ b/src/depth.fd.f
@@ -0,0 +1,1232 @@
+c----------------------------------------------------------------------
+c     Stanislav Nagy
+c     nagy at karlin.mff.cuni.cz
+c     27/06/2016
+c
+c     Fortran implementation of functional depths and kernel smoothing
+c     - Nagy, Ferraty: Depth for Noisy Random Functions
+c     - Nagy, Gijbels, Hlubinka: Depth-Based Recognition of Shape 
+c           Outlying Functions
+c
+c----------------------------------------------------------------------
+
+c----------------------------------------------------------------------
+c     kernel smoothing of a set of functions
+c----------------------------------------------------------------------
+
+      SUBROUTINE KERNSM(T,X,G,M,N,H,K,R)
+c     kernel smoothing of a single function
+c     T vector of observation points (M)
+c     X vector of observed values (M)
+c     G grid to evaluate (N)
+c     H bandwidth
+c     K kernel code to use, see below
+c     R resulting estimate (N)
+
+      integer M,N,K
+      integer I,J
+      double precision T(M),X(M),G(N),R(N),H
+      double precision DEN,P
+      
+      DO 10 I=1,N
+            R(I)=0.0
+            DEN = 0.0
+            DO 5 J=1,M
+                  CALL KERN((G(I)-T(J))/H,P,K)
+                  R(I) = R(I) + X(J)*P
+                  DEN = DEN + P
+5           CONTINUE
+            IF (DEN.GT.0) THEN
+                  R(I) = R(I)/DEN
+               ELSE
+                  R(I) = 10**6
+            ENDIF      
+10    CONTINUE
+      RETURN
+      END
+      
+c----------------------------------------------------------------------
+
+      SUBROUTINE KERN(T,R,K)
+c     kernel functions
+      
+      double precision T,R
+      INTEGER K
+      
+      IF(K.EQ.1) THEN
+c     uniform kernel
+            IF (ABS(T).LE.1.0) THEN
+                  R = .5
+                  ELSE
+                  R = 0.0
+            ENDIF
+      ENDIF
+      IF(K.EQ.2) THEN
+c     triangular kernel
+            IF (ABS(T).LE.1.0) THEN
+                  R = 1-ABS(T)
+                  ELSE
+                  R = 0.0
+            ENDIF
+      ENDIF
+      IF(K.EQ.3) THEN
+c     Epanechnikov kernel
+            IF (ABS(T).LE.1.0) THEN
+                  R = 3.0/4.0*(1.0-T**2.0)
+                  ELSE
+                  R = 0.0
+            ENDIF
+      ENDIF
+      IF(K.EQ.4) THEN
+c     biweight kernel
+            IF (ABS(T).LE.1.0) THEN
+                  R = 15.0/16.0*(1.0-T**2.0)**2
+                  ELSE
+                  R = 0.0
+            ENDIF
+      ENDIF
+      IF(K.EQ.5) THEN
+c     triweight kernel
+            IF (ABS(T).LE.1.0) THEN
+                  R = 35.0/32.0*(1.0-T**2.0)**3
+                  ELSE
+                  R = 0.0
+            ENDIF
+      ENDIF
+      IF(K.EQ.6) THEN
+c     Gaussian kernel
+            R = (2*4.D0*DATAN(1.D0))**(-0.5)*EXP(-0.5*T**2)
+      ENDIF
+      RETURN
+      END
+  
+c----------------------------------------------------------------------
+      
+      SUBROUTINE CVKERNSM(T,X,G,M,N,H,NH,KER,TRE,XRE,TNRE,XNRE,NR,NT,R)
+c     as in KERNSM, but with automated BW seletction
+c     from the vector H(NH)
+c     KER kernel code
+c     TRE,XRE vectors from T,X for omission for the CV (NR*NT)
+c     TNRE,XNRE supplementary vectors to TRE,NRE ((M-NR)*NT)
+c     NR no of random elements for each H choice
+c     NT no of random trials for each H choice
+c     for each H we choose NR random points from X
+c     compute the kernel smoother without these points
+c     and evaluate the error. repeat NT times, then average
+c     the errors to get the CV estimate
+
+      integer M,N,NH,NR,NT,KER
+      integer I,J,K,OM(NR),L
+      double precision T(M),X(M),G(N),R(N),H(NH),TRE(NR*NT),XRE(NR*NT)
+      double precision TNRE((M-NR)*NT),XNRE((M-NR)*NT)
+      double precision TOM(NR),XOM(NR),TNOM(M-NR),XNOM(M-NR)
+      double precision CV(NH),SR(NR),MCV
+      
+      DO 30 I=1,NH
+            CV(I) = 0.0
+            DO 20 J=1,NT
+                  DO 5 K=1,NR
+                        TOM(K) = TRE((J-1)*NR+K)
+                        XOM(K) = XRE((J-1)*NR+K)
+5                 CONTINUE
+                  DO 6 K=1,(M-NR)
+                        TNOM(K) = TNRE((J-1)*(M-NR)+K)
+                        XNOM(K) = XNRE((J-1)*(M-NR)+K)
+6                 CONTINUE
+            CALL KERNSM(TNOM,XNOM,TOM,(M-NR),NR,H(I),KER,SR)
+                  DO 10 K=1,NR
+                  CV(I) = CV(I) + (XOM(K)-SR(K))**2
+10                CONTINUE
+20          CONTINUE            
+30    CONTINUE
+      K = 0
+      MCV = CV(1)+1
+      DO 40 I=1,NH
+            IF (CV(I).LT.MCV) THEN
+                  K = I
+                  MCV = CV(I)
+            ENDIF
+40    CONTINUE
+      CALL KERNSM(T,X,G,M,N,H(K),KER,R)
+      RETURN
+      END
+      
+c----------------------------------------------------------------------
+c     fucntional data depth computation      
+c----------------------------------------------------------------------
+
+      SUBROUTINE funD1(A,B,M,N,D,funSDEP,funHDEP,fIsdep,fIhdep,IAsdep,
+     +IAhdep)
+c     univariate integrated depth
+       
+      INTEGER N,M,D
+      INTEGER IAsdep(M),IAhdep(M)
+      double precision A(M*D),B(N*D),funSDEP(M),funHDEP(M),
+     +fIsdep(M),fIhdep(M) 
+      double precision BH(N)
+      double precision hSDEP,hHDEP
+      INTEGER I,J,K
+
+c     initializing
+      DO 5 I=1,M
+            funSDEP(I) = 0.0
+            funHDEP(I) = 0.0
+            fISDEP(I) = 2.0
+            fIHDEP(I) = 2.0 
+            IAsdep(I) = 0
+            IAhdep(I) = 0
+5     CONTINUE
+c     essential loop, computing 1D depths at each point
+      DO 30 I=1,D
+            DO 10 K=1,N
+                  BH(K) = B((I-1)*N+K)
+10          CONTINUE
+            DO 20 J=1,M
+                  hSDEP = 0.0
+                  hHDEP = 0.0
+                  CALL fD1(A((I-1)*M+J),N,BH,hSDEP,hHDEP)
+c     integrated depth evaluation
+                  funSDEP(J) = funSDEP(J) + hSDEP
+                  funHDEP(J) = funHDEP(J) + hHDEP
+c     counting the area of the smallest depth for each function
+                  IF (hSDEP.EQ.fISDEP(J)) THEN
+                        IAsdep(J) = IAsdep(J)+1
+                  ELSEIF (hSDEP.LT.fISDEP(J)) THEN 
+                        IAsdep(J) = 1
+                  ENDIF
+                  IF (hHDEP.EQ.fIHDEP(J)) THEN
+                        IAhdep(J) = IAhdep(J)+1
+                  ELSEIF (hHDEP.LT.fIHDEP(J)) THEN 
+                        IAhdep(J) = 1
+                  ENDIF 
+c     infimal depth evaluation                 
+                  fISDEP(J) = min(fISDEP(J),hSDEP)
+                  fIHDEP(J) = min(fIHDEP(J),hHDEP)
+20          CONTINUE
+30    CONTINUE
+c     dividing the resulting depths by number of points d
+      DO 40 I=1,M
+            funSDEP(I) = funSDEP(I)/(D+0.0)
+            funHDEP(I) = funHDEP(I)/(D+0.0)
+40    CONTINUE
+      RETURN
+      END 
+      
+c----------------------------------------------------------------------
+
+      SUBROUTINE fD1(U,N,X,SDEP,HDEP)
+c     computes 1D simplicial and halfspace depth of U wrt X of size N
+c     used in the univariate integrated depth
+
+      double precision U,X(N),SDEP,HDEP
+      INTEGER N,RB,RA,I
+      
+      RB = 0
+      RA = 0
+      DO 10 I=1,N
+            IF (U .LE. X(I)) THEN 
+                  RB = RB + 1
+                  ENDIF
+            IF (U .GE. X(I)) THEN 
+                  RA = RA + 1
+                  ENDIF
+10    CONTINUE     
+      HDEP = min(RA+0.0,RB+0.0)/(N+0.0)
+      SDEP = (RA+0.0)*(RB+0.0)/(K(N,2)+0.0)
+      RETURN
+      END
+      
+c----------------------------------------------------------------------
+
+      INTEGER FUNCTION K(M,J)
+c     combination number (m choose j)
+
+      integer m,j
+      IF (M.LT.J) THEN
+          K=0
+      ELSE
+          IF (J.EQ.1) K=M
+          IF (J.EQ.2) K=(M*(M-1))/2
+          IF (J.EQ.3) K=(M*(M-1)*(M-2))/6
+      ENDIF
+      RETURN
+      END
+      
+c----------------------------------------------------------------------
+
+      SUBROUTINE metrl2(A,B,M,N,D,METR)
+c     computes a fast approximation of the L2 metric between A and B
+c     supporting functions on regular grids only
+c     used in the h-mode depth 
+        
+      INTEGER N,M,D
+      double precision A(M*D),B(N*D),METR(M*N)
+      INTEGER I,J,K
+
+      DO 15 I=1,M
+            DO 10 J=1,N
+            METR((J-1)*M+I) = 0.0
+                  DO 5 K=1,D
+                  METR((J-1)*M+I) = METR((J-1)*M+I) + (A((K-1)*M+I)-
+     +B((K-1)*N+J))**2
+5                 CONTINUE
+            METR((J-1)*M+I) = sqrt(METR((J-1)*M+I) - 
+     +((A((0)*M+I)-B((0)*N+J))**2+(A((D-1)*M+I)-B((D-1)*N+J))**2)
+     +/(2.0))
+10          CONTINUE
+15    CONTINUE
+      RETURN
+      END 
+      
+c----------------------------------------------------------------------
+
+      SUBROUTINE metrC(A,B,M,N,D,METR)
+c     computes a fast approximation of the C metric between A and B
+c     supporting functions on regular grids only
+c     used in the h-mode depth 
+        
+      INTEGER N,M,D
+      double precision A(M*D),B(N*D),METR(M*N)
+      INTEGER I,J,K
+
+      DO 15 I=1,M
+            DO 10 J=1,N
+            METR((J-1)*M+I) = 0.0
+                  DO 5 K=1,D
+                  METR((J-1)*M+I) = MAX(METR((J-1)*M+I),A((K-1)*M+I)-
+     +B((K-1)*N+J))
+            METR((J-1)*M+I) = MAX(METR((J-1)*M+I),-A((K-1)*M+I)+
+     +B((K-1)*N+J))
+5                 CONTINUE
+10          CONTINUE
+15    CONTINUE
+      RETURN
+      END 
+
+c----------------------------------------------------------------------
+
+      double precision FUNCTION MAX(A,B)
+c     maximum of two numbers A and B
+
+      double precision A,B
+      
+      IF (A.LE.B) THEN
+            MAX = B
+      ELSE
+            MAX = A
+      ENDIF
+      RETURN
+      END 
+
+      double precision FUNCTION AdjLPindicator(EVAL,J,B,V)
+c     adjusted band depth core function, smoothing (exp(-u)), L2 metric
+c     b is a vector of length eval
+c     v is a matrix j*eval
+
+      INTEGER EVAL, J
+      double precision B(EVAL), V(J*EVAL)
+      double precision MINI, MAXI, DIST, POWER
+      INTEGER I, II
+
+      DIST = 0.0
+      POWER = 1.0
+c     power in exp(-power*dist) for weighting
+      DO 10 I=1,EVAL 
+            MINI = V((I-1)*J+1)
+            MAXI = V((I-1)*J+1)
+            DO 5 II=1,J
+            IF (MINI.GT.V((I-1)*J+II)) THEN
+                  MINI = V((I-1)*J+II)
+           ENDIF
+            IF (MAXI.LT.V((I-1)*J+II)) THEN
+                  MAXI = V((I-1)*J+II)
+            ENDIF
+5           CONTINUE
+            IF  ((B(I).GE.MINI).AND.(B(I).LE.MAXI)) THEN
+                  DIST = DIST + 0.0
+            ELSE
+                  IF(B(I).GT.MAXI) THEN
+                  DIST = DIST + (B(I)-MAXI)**2
+                  ENDIF
+                  IF(B(I).LT.MINI) THEN
+                  DIST = DIST + (MINI-B(I))**2
+                  ENDIF
+            ENDIF
+10    CONTINUE
+      DIST = DIST/(EVAL+0.0)
+      DIST = EXP(-POWER*DIST)
+      AdjLPindicator = DIST
+      RETURN
+      END
+
+      SUBROUTINE AdjLP(EVAL,J,M,KOMB,COM,B,V,DJ)
+c     adjusted band depth function, smoothing (exp(-u)), L2 metric
+c     eval     no of time points for each functions
+c     J        order of the depth
+c     m        sample size
+c     komb     m choose J number
+c     com      vector of all the combinations of J elements from m
+c     b        functional values of the x function, length eval
+c     v        matrix of sample funct. values, dimension [m x eval]
+
+      INTEGER EVAL,J,M,KOMB,COM(KOMB*J)
+      double precision B(EVAL),V(M*EVAL),DJ
+      double precision VPOM(J*EVAL)
+      INTEGER C,I,II
+      double precision ADJLPINDICATOR
+
+      DJ = 0.0
+      DO 10 C=1,KOMB
+            DO 5 I=1,J
+                  DO 3 II=1,EVAL
+                        VPOM((II-1)*J+I) = V((II-1)*M+COM((C-1)*J+I))
+3                 CONTINUE
+5           CONTINUE 
+            DJ = DJ + AdjLPindicator(EVAL,J,B,VPOM)     
+10    CONTINUE
+      DJ = DJ/(KOMB+0.0)
+      RETURN
+      END
+
+c----------------------------------------------------------------------
+      
+      double precision FUNCTION AdjCindicator(EVAL,J,B,V)
+c     adjusted band depth core function, smoothing (exp(-u)), C metric
+c     b is a vector of length eval
+c     v is a matrix j*eval
+
+      INTEGER EVAL, J
+      double precision B(EVAL), V(J*EVAL)
+      double precision MINI, MAXI, DIST, POWER, MAX
+      INTEGER I, II
+
+      DIST = 0.0
+      POWER = 1.0
+c     power in exp(-power*dist) for weighting
+      DO 10 I=1,EVAL 
+            MINI = V((I-1)*J+1)
+            MAXI = V((I-1)*J+1)
+            DO 5 II=1,J
+            IF (MINI.GT.V((I-1)*J+II)) THEN
+                  MINI = V((I-1)*J+II)
+           ENDIF
+            IF (MAXI.LT.V((I-1)*J+II)) THEN
+                  MAXI = V((I-1)*J+II)
+            ENDIF
+5           CONTINUE
+            IF  ((B(I).GE.MINI).AND.(B(I).LE.MAXI)) THEN
+                  DIST = DIST + 0.0
+            ELSE
+                  IF(B(I).GT.MAXI) THEN
+                  DIST = MAX(DIST,(B(I)-MAXI))
+                  ENDIF
+                  IF(B(I).LT.MINI) THEN
+                  DIST = MAX(DIST,(MINI-B(I)))
+                  ENDIF
+            ENDIF
+10    CONTINUE
+      DIST = EXP(-POWER*DIST)
+      AdjCindicator = DIST
+      RETURN
+      END
+
+      SUBROUTINE AdjC(EVAL,J,M,KOMB,COM,B,V,DJ)
+c     adjusted band depth function, smoothing (exp(-u)), C metric
+c     eval     no of time points for each functions
+c     J        order of the depth
+c     m        sample size
+c     komb     m choose J number
+c     com      vector of all the combinations of J elements from m
+c     b        functional values of the x function, length eval
+c     v        matrix of sample funct. values, dimension [m x eval]
+
+      INTEGER EVAL,J,M,KOMB,COM(KOMB*J)
+      double precision B(EVAL),V(M*EVAL),DJ
+      double precision VPOM(J*EVAL)
+      INTEGER C,I,II
+      double precision ADJCINDICATOR
+
+      DJ = 0.0
+      DO 10 C=1,KOMB
+            DO 5 I=1,J
+                  DO 3 II=1,EVAL
+                        VPOM((II-1)*J+I) = V((II-1)*M+COM((C-1)*J+I))
+3                 CONTINUE
+5           CONTINUE 
+            DJ = DJ + AdjCindicator(EVAL,J,B,VPOM)     
+10    CONTINUE
+      DJ = DJ/(KOMB+0.0)
+      RETURN
+      END
+      
+c-----------------------------------
+c     DiffDepth.f
+c-----------------------------------
+
+c-------------------------------------
+c     first Difference Depth for 1D functions
+c     for 1d functions, halfspace and simplicial depth
+c-------------------------------------
+
+      SUBROUTINE DiffD(A,B,M,N,D,REP,RN,funSDEP,funHDEP,funSDEPm,
+     +funHDEPm,PSDEP,PHDEP,IAsdep,IAhdep)
+
+c     using fdepth computes 2dimensional diff depth of functions in A
+c     with respect to the functions in B
+c     M     size of functions in A
+c     N     size of functions in B
+c     D     dimensionality of functions
+c     REP   is the number of simulations to approximate the real value
+c           of depth, if set to 0 full comutation is made
+c     RN    random numbers, arrray of randoms from 1:D of size 2*REP
+c     funSDEPm    DiffDepth when taking infimum of projected depths
+c     funSDEP     DiffDepth when taking integral of projected depths
+c     P.DEP pointwise depth, depth at each point of domain x domain
+c     P.DEP is computed only if M=1, for simplicity
+        
+      INTEGER N,M,D,REP
+      INTEGER IAsdep(M),IAhdep(M)
+      double precision A(M*D),B(N*D),funSDEP(M),funHDEP(M),PSDEP(D*D),
+     +PHDEP(D*D)
+      double precision funSDEPm(M),funHDEPm(M),B1H(N),B2H(N)
+      double precision hSDEP,hHDEP
+      double precision hALPHA(N)
+      INTEGER hF(N),I,J,K,RN(2*REP)
+
+      DO 5 I=1,M
+            funSDEP(I) = 0.0
+            funHDEP(I) = 0.0
+            funSDEPm(I) = 2.0
+            funHDEPm(I) = 2.0
+            IAsdep(I) = 0
+            IAhdep(I) = 0
+5     CONTINUE
+c     initialization for easier recognition of unfilled elements
+      IF (M.EQ.1) THEN 
+            DO 8 I=1,(D*D)
+                  PSDEP(I) = -1.0
+                  PHDEP(I) = -1.0
+8                 CONTINUE
+            ENDIF
+c     essential loop, computing 2D depths at each point
+      IF (REP.EQ.0) THEN
+c     if we compute the complete, non-approximated depth
+      DO 30 I=1,D
+            DO 25 J=(I+1),D
+c     not taking into account diagonal elements, there is 0 depth
+                  DO 10 K=1,N
+                  B1H(K) = B((I-1)*N+K)
+                  B2H(K) = B((J-1)*N+K)
+10                CONTINUE
+                  DO 20 L=1,M
+                        hSDEP = 0.0
+                        hHDEP = 0.0
+                        hALPHA(1) = N+0.0
+                        hF(1) = N
+      CALL fD2(A((I-1)*M+L),A((J-1)*M+L),N,B1H,B2H,hALPHA,hF,
+     +hSDEP,hHDEP)
+                        funSDEP(L) = funSDEP(L) + hSDEP
+                        funHDEP(L) = funHDEP(L) + hHDEP
+c     counting the area of the smallest depth for each function
+                        IF (hSDEP.EQ.funSDEPm(L)) THEN
+                              IAsdep(L) = IAsdep(L)+1
+                        ELSEIF (hSDEP.LT.funSDEPm(L)) THEN 
+                              IAsdep(L) = 1
+                        ENDIF
+                        IF (hHDEP.EQ.funHDEPm(L)) THEN
+                              IAhdep(L) = IAhdep(L)+1
+                        ELSEIF (hHDEP.LT.funHDEPm(L)) THEN 
+                              IAhdep(L) = 1
+                        ENDIF 
+                        funSDEPm(L) = min(funSDEPm(L),hSDEP)
+                        funHDEPm(L) = min(funHDEPm(L),hHDEP)
+                        IF (M.EQ.1) THEN
+                              PSDEP((I-1)*D+J) = hSDEP
+                              PHDEP((I-1)*D+J) = hHDEP
+                              ENDIF
+20                CONTINUE
+25          CONTINUE
+30    CONTINUE
+c       dividing the resulting depths by number of points d
+c     for infimal area, the result is *2+D because the diagonal 
+c     has zero depth by default, and only the lower triangle 
+c     of the matrix is actually computed
+      DO 40 I=1,M
+            funSDEP(I) = 2.0*funSDEP(I)/(D*(D-1.0))
+c     diagonals are always zero, do not count into the sum 
+c ((D+0.0)*(D+1.0)/2+0.0-D)
+            funHDEP(I) = 2.0*funHDEP(I)/(D*(D-1.0))
+c ((D+0.0)*(D+1.0)/2+0.0-D)
+            IAhdep(I) = IAhdep(I)*2+D
+            IAsdep(I) = IAsdep(I)*2+D
+40    CONTINUE
+      ELSE 
+c     else of if(REP.EQ.0), that is if we approximate
+      DO 70 I=1,REP
+c     going through random elements
+                  DO 50 K=1,N
+                  B1H(K) = B((RN(2*I-1)-1)*N+K)
+                  B2H(K) = B((RN(2*I)-1)*N+K)
+50                CONTINUE
+                  DO 60 L=1,M
+                        hSDEP = 0.0
+                        hHDEP = 0.0
+                        hALPHA(1) = N+0.0
+                        hF(1) = N
+      CALL fD2(A((RN(2*I-1)-1)*M+L),A((RN(2*I)-1)*M+L),N,
+     +B1H,B2H,hALPHA,hF,hSDEP,hHDEP)
+                        funSDEP(L) = funSDEP(L) + hSDEP
+                        funHDEP(L) = funHDEP(L) + hHDEP
+c     counting the area of the smallest depth for each function
+                        IF (hSDEP.EQ.funSDEPm(L)) THEN
+                              IAsdep(L) = IAsdep(L)+1
+                        ELSEIF (hSDEP.LT.funSDEPm(L)) THEN 
+                              IAsdep(L) = 1
+                        ENDIF
+                        IF (hHDEP.EQ.funHDEPm(L)) THEN
+                              IAhdep(L) = IAhdep(L)+1
+                        ELSEIF (hHDEP.LT.funHDEPm(L)) THEN 
+                              IAhdep(L) = 1
+                        ENDIF 
+                        funSDEPm(L) = min(funSDEPm(L),hSDEP)
+                        funHDEPm(L) = min(funHDEPm(L),hHDEP)
+                        IF (M.EQ.1) THEN
+                              PSDEP((RN(2*I-1)-1)*D+RN(2*I)) = hSDEP
+                              PHDEP((RN(2*I-1)-1)*D+RN(2*I)) = hHDEP
+                              ENDIF
+60                CONTINUE
+70    CONTINUE
+      DO 80 I=1,M
+            funSDEP(I) = funSDEP(I)/(REP+0.0) 
+            funHDEP(I) = funHDEP(I)/(REP+0.0)
+80    CONTINUE      
+      ENDIF
+      RETURN
+      END 
+      
+c----------------------------------------------------------------------
+
+      SUBROUTINE fD2(U,V,N,X,Y,ALPHA,F,SDEP,HDEP)
+
+c        Rousseuw, P.J., and Ruts, I. (1996), AS 307 : Bivariate location
+c        depth, Applied Statistics (JRRSS-C), vol.45, 516-526
+
+      double precision U,V,X(n),Y(n),ALPHA(n)
+      double precision P,P2,EPS,D,XU,YU,ANGLE,ALPHK,BETAK,SDEP,HDEP
+      INTEGER F(N),GI
+      integer n,nums,numh,nt,i,nn,nu,ja,jb,nn2,nbad,nf,j,ki,k
+      NUMS=0
+      NUMH=0
+      SDEP=0.0
+      HDEP=0.0
+      IF (N.LT.1) RETURN
+      P=ACOS(-1.0)
+      P2=P*2.0
+      EPS=0.00000001
+      NT=0
+C
+C  Construct the array ALPHA.
+C
+      DO 10 I=1,N
+          D=SQRT((X(I)-U)*(X(I)-U)+(Y(I)-V)*(Y(I)-V))
+          IF (D.LE.EPS) THEN
+              NT=NT+1
+          ELSE
+              XU=(X(I)-U)/D
+              YU=(Y(I)-V)/D
+              IF (ABS(XU).GT.ABS(YU)) THEN
+                  IF (X(I).GE.U) THEN
+                      ALPHA(I-NT)=ASIN(YU)
+                      IF(ALPHA(I-NT).LT.0.0) THEN
+                          ALPHA(I-NT)=P2+ALPHA(I-NT)
+                      ENDIF
+                  ELSE
+                      ALPHA(I-NT)=P-ASIN(YU)
+                  ENDIF
+              ELSE
+                  IF (Y(I).GE.V) THEN
+                      ALPHA(I-NT)=ACOS(XU)
+                  ELSE
+                      ALPHA(I-NT)=P2-ACOS(XU)
+                  ENDIF
+              ENDIF
+              IF (ALPHA(I-NT).GE.(P2-EPS)) ALPHA(I-NT)=0.0
+          ENDIF
+  10  CONTINUE
+      NN=N-NT
+      IF (NN.LE.1) GOTO 60
+C
+C  Sort the array ALPHA.
+C
+      CALL SORT(ALPHA,NN)
+C
+C  Check whether theta=(U,V) lies outside the data cloud.
+C
+      ANGLE=ALPHA(1)-ALPHA(NN)+P2
+      DO 20 I=2,NN
+          ANGLE=MAX(ANGLE,(ALPHA(I)-ALPHA(I-1)))
+  20  CONTINUE
+      IF (ANGLE.GT.(P+EPS)) GOTO 60
+C
+C  Make smallest alpha equal to zero,
+C  and compute NU = number of alpha < pi.
+C
+      ANGLE=ALPHA(1)
+      NU=0
+      DO 30 I=1,NN
+          ALPHA(I)=ALPHA(I)-ANGLE
+          IF (ALPHA(I).LT.(P-EPS)) NU=NU+1
+  30  CONTINUE
+      IF (NU.GE.NN) GOTO 60
+C
+C  Mergesort the alpha with their antipodal angles beta,
+C  and at the same time update I, F(I), and NBAD.
+C
+      JA=1
+      JB=1
+      ALPHK=ALPHA(1)
+      BETAK=ALPHA(NU+1)-P
+      NN2=NN*2
+      NBAD=0
+      I=NU
+      NF=NN
+      DO 40 J=1,NN2
+          IF ((ALPHK+EPS).LT.BETAK) THEN
+              NF=NF+1
+              IF (JA.LT.NN) THEN
+                  JA=JA+1
+                  ALPHK=ALPHA(JA)
+              ELSE
+                  ALPHK=P2+1.0
+              ENDIF
+          ELSE
+              I=I+1
+              IF (I.EQ.(NN+1)) THEN
+                  I=1
+                  NF=NF-NN
+              ENDIF
+              F(I)=NF
+              NBAD=NBAD+K((NF-I),2)
+              IF (JB.LT.NN) THEN
+                  JB=JB+1
+                  IF ((JB+NU).LE.NN) THEN
+                      BETAK=ALPHA(JB+NU)-P
+                  ELSE
+                      BETAK=ALPHA(JB+NU-NN)+P
+                  ENDIF
+              ELSE
+                  BETAK=P2+1.0
+              ENDIF
+          ENDIF
+  40  CONTINUE
+      NUMS=K(NN,3)-NBAD
+C
+C  Computation of NUMH for halfspace depth.
+C
+      GI=0
+      JA=1
+      ANGLE=ALPHA(1)
+      NUMH=MIN(F(1),(NN-F(1)))
+      DO 50 I=2,NN
+          IF(ALPHA(I).LE.(ANGLE+EPS)) THEN
+              JA=JA+1
+          ELSE
+              GI=GI+JA
+              JA=1
+              ANGLE=ALPHA(I)
+          ENDIF
+          KI=F(I)-GI
+          NUMH=MIN(NUMH,MIN(KI,(NN-KI)))
+   50 CONTINUE
+C
+C  Adjust for the number NT of data points equal to theta:
+C
+  60  NUMS=NUMS+K(NT,1)*K(NN,2)+K(NT,2)*K(NN,1)+K(NT,3)
+      IF (N.GE.3) SDEP=(NUMS+0.0)/(K(N,3)+0.0)
+      NUMH=NUMH+NT
+      HDEP=(NUMH+0.0)/(N+0.0)
+      RETURN
+      END
+c----------------------------------------------------------------------
+
+
+c      INTEGER FUNCTION K(M,J)
+c      integer m,j
+c      IF (M.LT.J) THEN
+c          K=0
+c      ELSE
+c          IF (J.EQ.1) K=M
+c          IF (J.EQ.2) K=(M*(M-1))/2
+c          IF (J.EQ.3) K=(M*(M-1)*(M-2))/6
+c      ENDIF
+c      RETURN
+c      END
+
+c----------------------------------------------------------------------
+
+      SUBROUTINE SORT(B,N)
+C  Sorts an array B (of length N<=1000) in O(NlogN) time.
+
+      double precision B(N),x(n)
+      integer q(n),i,n
+      
+      call indexx(n,b,q)
+      
+      do 10 i=1,n
+        x(i)=b(i)
+10    continue
+ 
+      do 20 i=1,n
+        b(i)=x(q(i))
+20    continue
+      end
+c----------------------------------------------------------------------
+
+      SUBROUTINE INDEXX(N,ARRIN,INDX)
+
+      integer INDX(N)
+      integer n,j,l,ir,indxt,i
+      double precision arrin(n),q
+
+      DO 11 J=1,N
+        INDX(J)=J
+11    CONTINUE
+      L=N/2+1
+      IR=N
+10    CONTINUE
+        IF(L.GT.1)THEN
+          L=L-1
+          INDXT=INDX(L)
+          Q=ARRIN(INDXT)
+        ELSE
+          INDXT=INDX(IR)
+          Q=ARRIN(INDXT)
+          INDX(IR)=INDX(1)
+          IR=IR-1
+          IF(IR.EQ.1)THEN
+            INDX(1)=INDXT
+            RETURN
+          ENDIF
+        ENDIF
+        I=L
+        J=L+L
+20      IF(J.LE.IR)THEN
+          IF(J.LT.IR)THEN
+            IF(ARRIN(INDX(J)).LT.ARRIN(INDX(J+1)))J=J+1
+          ENDIF
+          IF(Q.LT.ARRIN(INDX(J)))THEN
+            INDX(I)=INDX(J)
+            I=J
+            J=J+J
+          ELSE
+            J=IR+1
+          ENDIF
+        GO TO 20
+        ENDIF
+        INDX(I)=INDXT
+      GO TO 10
+      END
+      
+cccccccccccccccccc
+c
+c     newdepth
+c
+cccccccccccccccccc
+
+c----------------------------------------------------------------------
+      SUBROUTINE funMD(A,B,M,N,D,Q,funDEP)
+      
+      INTEGER N,M,D,I,J      
+      double precision A(M*D),B(N*D),METR1(N*N),METR2(N*M),funDEP(M)
+      double precision Q,H,PI
+c     Q is quantile, default 0.15, Cuevas 0.2     
+      
+      CALL metrl2(B,B,N,N,D,METR1)
+      CALL metrl2(A,B,M,N,D,METR2)
+      CALL SORT(METR1,N*N)
+      H = METR1(INT(Q*(N*N+0.0)))
+      PI=4.D0*DATAN(1.D0)
+      DO 10 I=1,M*N
+            METR2(I) = EXP(-(METR2(I)/H)**2/2.0)/SQRT(2.0*PI)
+10    CONTINUE
+      DO 20 I=1,M
+            funDEP(I)=0.0
+            DO 15 J=1,N
+                  funDEP(I) = funDEP(I)+METR2((J-1)*M+I)
+15          CONTINUE
+20    CONTINUE      
+      RETURN
+      END
+      
+
+c----------------------------------------------------------------------
+      SUBROUTINE funRPD1(A,B,M,N,D,NPROJ,NPROJ2,V,funSDEP,
+     +funHDEP,funRDEP)
+      
+c     computes fast random projection depth for 1D functions using 
+c     NPROJ simple iid gaussian processes projection and then 1D
+c     simplicial or halfspace depth 
+c     RDEP random halfspace depth (Cuesta-Albertos, Nieto-Reyes 2008)
+c     NPROJ2 nr of projections for RDEP
+
+      INTEGER M,N,D,NPROJ,NPROJ2
+      double precision A(M*D),B(N*D),funSDEP(M),funHDEP(M),funRDEP(M)
+      double precision V(D*NPROJ),AP,BP(N),VNORM
+      INTEGER I,J,K
+      double precision hSDEP,hHDEP
+
+      DO 5 I=1,M
+            funSDEP(I) = 0.0
+            funHDEP(I) = 0.0
+            funRDEP(I) = 2.0
+5     CONTINUE      
+c     main loop
+      DO 40 K=1,NPROJ
+c     generating a single gaussian processes
+      VNORM = 0.0
+      DO 10 I=1,D
+             Vnorm = VNORM + V((K-1)*D+I)**2
+10    CONTINUE
+      VNORM = sqrt(VNORM - (V((K-1)*D+1)**2+V((K-1)*D+D)**2)/(2.0))
+c     loop projecting j-th function of the random sample B on v
+      DO 18 J=1,N
+            BP(J) = 0.0
+            DO 15 I=1,D
+                  BP(J) = BP(J)+ B((I-1)*N+J)*V((K-1)*D+I)/VNORM
+15          CONTINUE
+            BP(J) = BP(J)/(D+0.0)
+18    CONTINUE
+c     loop with projecting j-th function of the random sample A on v
+      DO 30 J=1,M
+            AP = 0.0
+c     compute projection of j-th function A
+            DO 20 I=1,D
+                  AP = AP + A((I-1)*M+J)*V((K-1)*D+I)/VNORM
+20          CONTINUE
+            AP = AP/(D+0.0)
+            hSDEP = 0.0
+            hHDEP = 0.0
+            CALL fD1(AP,N,BP,hSDEP,hHDEP)
+            funSDEP(J) = funSDEP(J) + hSDEP
+            funHDEP(J) = funHDEP(J) + hHDEP
+            IF (K .LE. NPROJ2) THEN 
+                  funRDEP(J) = min(funRDEP(J),hHDEP)
+                  ENDIF
+30    CONTINUE
+40    CONTINUE
+c     averaging projection depth over all projections
+      DO 50 I=1,M
+            funSDEP(I) = funSDEP(I)/(NPROJ+0.0)
+            funHDEP(I) = funHDEP(I)/(NPROJ+0.0)
+50    CONTINUE
+      RETURN
+      END
+      
+c-------------------------------------
+c Fraiman Muniz type integrated depths
+c for 1 and 2d functions, halfspace and simplicial depth
+c-------------------------------------
+
+      SUBROUTINE funD2(A1,A2,B1,B2,M,N,D,funSDEP,funHDEP,
+     +fIsdep,fIhdep,IAsdep,IAhdep)
+
+c     using fdepth computes 2dimensional depth of functions in A1,A2
+c     with respect to the functions in B1,B2
+c     M size of functions in A
+c     N size of functions in B
+c     D dimensionality of functions
+        
+      INTEGER N,M,D
+      INTEGER IAsdep(M),IAhdep(M)
+      double precision A1(M*D),A2(M*D),B1(N*D),B2(N*D),funSDEP(M),
+     +funHDEP(M),fIsdep(M),fIhdep(M) 
+      double precision B1H(N),B2H(N)
+      double precision hSDEP,hHDEP
+      double precision hALPHA(N)
+      INTEGER hF(N),I,J,K
+
+      DO 5 I=1,M
+            funSDEP(I) = 0.0
+            funHDEP(I) = 0.0
+            fISDEP(I) = 2.0
+            fIHDEP(I) = 2.0 
+            IAsdep(I) = 0
+            IAhdep(I) = 0           
+5     CONTINUE
+c       essential loop, computing 2D depths at each point
+      DO 30 I=1,D
+            DO 10 K=1,N
+                  B1H(K) = B1((I-1)*N+K)
+                  B2H(K) = B2((I-1)*N+K)
+10          CONTINUE
+            DO 20 J=1,M
+                  hSDEP = 0.0
+                  hHDEP = 0.0
+                  hALPHA(1) = N+0.0
+                  hF(1) = N
+      CALL fD2(A1((I-1)*M+J),A2((I-1)*M+J),N,B1H,B2H,hALPHA,hF,
+     +hSDEP,hHDEP)
+                  funSDEP(J) = funSDEP(J) + hSDEP
+                  funHDEP(J) = funHDEP(J) + hHDEP
+c     counting the area of the smallest depth for each function
+                  IF (hSDEP.EQ.fISDEP(J)) THEN
+                        IAsdep(J) = IAsdep(J)+1
+                  ELSEIF (hSDEP.LT.fISDEP(J)) THEN 
+                        IAsdep(J) = 1
+                  ENDIF
+                  IF (hHDEP.EQ.fIHDEP(J)) THEN
+                        IAhdep(J) = IAhdep(J)+1
+                  ELSEIF (hHDEP.LT.fIHDEP(J)) THEN 
+                        IAhdep(J) = 1
+                  ENDIF 
+c     infimal depth evaluation
+                  fISDEP(J) = min(fISDEP(J),hSDEP)
+                  fIHDEP(J) = min(fIHDEP(J),hHDEP)                  
+20          CONTINUE
+30    CONTINUE
+c       dividing the resulting depths by number of points d
+      DO 40 I=1,M
+            funSDEP(I) = funSDEP(I)/(D+0.0)
+            funHDEP(I) = funHDEP(I)/(D+0.0)
+40    CONTINUE
+      RETURN
+      END 
+      
+c----------------------------------------------------------------------
+c     2D RANDOM PROJECTION DEPTH
+c     PROJECTIONS ON WHITE NOISE
+c     DEPENDS ON THE RANDOM NUMBER GENERATOR VERSION
+c----------------------------------------------------------------------
+      
+      SUBROUTINE funRPD2(A1,A2,B1,B2,M,N,D,NPROJ,V,Q,funSDEP,
+     +funHDEP,funMDEP,funSDDEP,funHDDEP)
+      
+c     computes fast random projection depth for 2D functions using 
+c     NPROJ simple iid gaussian processes projection and then 2D
+c     simplicial or halfspace depth 
+c     Q is quantile used in MDEP
+c     funDDEP is double random projection (2*D-dim)->(2-dim)->(1-dim)
+c     and then appying Halfspace depth (equiv to quantile as Cuevas 2007)
+
+      INTEGER M,N,D,NPROJ
+      double precision A1(M*D),A2(M*D),B1(N*D),B2(N*D),funSDEP(M),
+     +funHDEP(M),funMDEP(M),Q,funSDDEP(M),funHDDEP(M)
+      double precision V(D*NPROJ+2*NPROJ),A1P,A2P,B1P(N),B2P(N),
+     +VNORM,VNORMF,AP(2*M),BP(2*N),VF(2),AFP,BFP(N)
+c     last 2*NPROJ of V are for the second random projection 2d->1d
+c     VF(2) is the final projection
+      INTEGER I,J,K
+      double precision hSDEP,hHDEP,hMDEP(M),hHDDEP,hSDDEP
+      double precision hALPHA(N)
+      INTEGER hF(N)
+
+      DO 5 I=1,M
+            funSDEP(I) = 0.0
+            funHDEP(I) = 0.0
+            funMDEP(I) = 0.0
+            funSDDEP(I) = 0.0
+            funHDDEP(I) = 0.0
+5     CONTINUE      
+c     main loop
+      DO 40 K=1,NPROJ
+c     generating a single gaussian processes
+      VNORM = 0.0
+      VNORMF = sqrt(V(NPROJ*D+(K-1)*2+1)**2+V(NPROJ*D+(K-1)*2+2)**2)
+      VF(1) = V(NPROJ*D+(K-1)*2+1)/VNORMF
+      VF(2) = V(NPROJ*D+(K-1)*2+2)/VNORMF
+c     final projection is now normed
+      DO 10 I=1,D
+             VNORM = VNORM + V((K-1)*D+I)**2
+10    CONTINUE
+      VNORM = sqrt(VNORM - (V((K-1)*D+1)**2+V((K-1)*D+D)**2)/(2.0))
+c     loop projecting j-th function of the random sample B on v
+      DO 18 J=1,N
+            B1P(J) = 0.0
+            B2P(J) = 0.0
+            DO 15 I=1,D
+                  B1P(J) = B1P(J)+ B1((I-1)*N+J)*V((K-1)*D+I)/VNORM
+                  B2P(J) = B2P(J)+ B2((I-1)*N+J)*V((K-1)*D+I)/VNORM
+15          CONTINUE
+            BFP(J) = B1P(J)*VF(1)+B2P(J)*VF(2)
+18    CONTINUE
+      DO 19 I=1,N
+            BP(I)=B1P(I)
+            BP(N+I)=B2P(I)
+19    CONTINUE
+c     loop with projecting j-th function of the random sample A on v
+      DO 30 J=1,M
+            A1P = 0.0
+            A2P = 0.0
+c     compute projection of j-th function A
+            DO 20 I=1,D
+                  A1P = A1P + A1((I-1)*M+J)*V((K-1)*D+I)/VNORM
+                  A2P = A2P + A2((I-1)*M+J)*V((K-1)*D+I)/VNORM
+20          CONTINUE
+            AP(J) = A1P
+            AP(J+M) = A2P
+            hSDEP = 0.0
+            hHDEP = 0.0
+            hMDEP(J) = 0.0
+            hALPHA(1) = N+0.0
+            hF(1) = N
+            CALL fD2(A1P,A2P,N,B1P,B2P,hALPHA,hF,
+     +hSDEP,hHDEP)
+            funSDEP(J) = funSDEP(J) + hSDEP
+            funHDEP(J) = funHDEP(J) + hHDEP
+c     and now the second projection of A
+            AFP = A1P*VF(1)+A2P*VF(2)
+            hHDDEP = 0.0
+            hSDDEP = 0.0
+            CALL fD1(AFP,N,BFP,hSDDEP,hHDDEP)
+            funSDDEP(J) = funSDDEP(J) + hSDDEP
+            funHDDEP(J) = funHDDEP(J) + hHDDEP
+30    CONTINUE
+      CALL funMD(AP,BP,M,N,2,Q,hMDEP)
+      DO 35 I=1,M
+            funMDEP(I) = funMDEP(I) + hMDEP(I)
+35    CONTINUE
+40    CONTINUE
+c     averaging projection depth over all projections
+      DO 50 I=1,M
+            funSDEP(I) = funSDEP(I)/(NPROJ+0.0)
+            funHDEP(I) = funHDEP(I)/(NPROJ+0.0)
+            funMDEP(I) = funMDEP(I)/(NPROJ+0.0)
+            funSDDEP(I) = funSDDEP(I)/(NPROJ+0.0)
+            funHDDEP(I) = funHDDEP(I)/(NPROJ+0.0)
+50    CONTINUE
+      RETURN
+      END
+      
+c
+c
+c     halfregiondepth.f
+c
+c
+
+      SUBROUTINE HRD(A,B,M,N,D,FD)
+c     computes fast half-region depth of Lopez-Pintado and Romo 2011
+      INTEGER M,N,D
+      double precision A(M*D),B(N*D),FD(M)
+      INTEGER I,J,K, U, L, UI, LI
+
+      DO 30 I=1,M
+            FD(I) = 0.0
+            U = 0
+            L = 0
+            DO 20 J=1,N
+                  UI = 0
+                  LI = 0
+                  K = 0
+                  DO 10 WHILE ((K .LT. D) 
+     +                  .AND. (UI .EQ. 0 .OR. LI .EQ. 0)) 
+                        K = K + 1
+                        IF(A((K-1)*M+I) .GT. B((K-1)*N+J)) UI = UI + 1
+                        IF(A((K-1)*M+I) .LT. B((K-1)*N+J)) LI = LI + 1
+10                CONTINUE
+                  IF (UI .EQ. 0) U = U+1
+                  IF (LI .EQ. 0) L = L+1
+20          CONTINUE
+            FD(I) = (MIN(U,L)+0.0)/(N+0.0)             
+30    CONTINUE
+      RETURN
+      END 
+
+c----------------------------------------------------------------------      
+      SUBROUTINE BD(A,B,M,N,D,FD)
+c     computes fast 2nd order band depth of Lopez-Pintado and Romo 2009
+      INTEGER M,N,D
+      double precision A(M*D),B(N*D),FD(M),L,U
+      INTEGER I,J,JJ,K,W,WI
+
+      DO 30 I=1,M
+            FD(I) = 0.0
+            W = 0
+            DO 20 J=1,(N-1)
+                  DO 15 JJ=(J+1),N
+                        WI = 0
+                        K = 0
+                  DO 10 WHILE ( WI .GE. 0) 
+c     -1 means TRUE, the function is in the band of J and JJ
+c     -2 means FALSE, the function crosses
+                        WI = WI + 1
+                        K = K+1
+                        L = MIN(B((K-1)*N+J),B((K-1)*N+JJ))
+                        U = MAX(B((K-1)*N+J),B((K-1)*N+JJ))
+                        IF (A((K-1)*M+I) .LT. L .OR. 
+     +  A((K-1)*M+I) .GT. U) WI = -2
+                        IF (WI .NE. -2 .AND. WI .EQ. D) WI = -1
+10                CONTINUE
+                  IF (WI .EQ. -1) W = W+1
+15                CONTINUE
+20          CONTINUE
+            FD(I) = (W+0.0)/((N*(N-1))/2 + 0.0)          
+30    CONTINUE
+      RETURN
+      END 
+      
+c-------------------------------------
+c bivariate halfspace and simplicial depth
+c-------------------------------------
+
+      SUBROUTINE DPTH2(A1,A2,B1,B2,M,N,SDEP,HDEP)
+
+c     computes 2dimensional depth of A1,A2
+c     with respect to B1,B2
+c     M size of A
+c     N size of B
+        
+      INTEGER N,M
+      double precision A1(M),A2(M),B1(N),B2(N),SDEP(M),HDEP(M)
+      double precision hSDEP,hHDEP
+      double precision hALPHA(N)
+      INTEGER hF(N),I,J,K
+
+      DO 5 I=1,M
+            SDEP(I) = 0.0
+            HDEP(I) = 0.0
+5     CONTINUE
+      DO 10 J=1,M
+            hSDEP = 0.0
+            hHDEP = 0.0
+            hALPHA(1) = N+0.0
+            hF(1) = N
+      CALL fD2(A1(J),A2(J),N,B1,B2,hALPHA,hF,
+     +hSDEP,hHDEP)
+            SDEP(J) = hSDEP
+            HDEP(J) = hHDEP
+10    CONTINUE
+      RETURN
+      END 
+      
+c-------------------------------------
+c univariate halfspace and simplicial depth
+c-------------------------------------
+
+      SUBROUTINE DPTH1(A1,B1,M,N,SDEP,HDEP)
+
+c     computes 1dimensional depth of A1
+c     with respect to B1
+c     M size of A
+c     N size of B
+        
+      INTEGER N,M
+      double precision A1(M),B1(N),SDEP(M),HDEP(M)
+      double precision hSDEP,hHDEP
+      double precision hALPHA(N)
+      INTEGER hF(N),I,J,K
+
+      DO 5 I=1,M
+            SDEP(I) = 0.0
+            HDEP(I) = 0.0
+5     CONTINUE
+      DO 10 J=1,M
+            hSDEP = 0.0
+            hHDEP = 0.0
+            hALPHA(1) = N+0.0
+            hF(1) = N
+      CALL fD1(A1(J),N,B1,hSDEP,hHDEP)
+            SDEP(J) = hSDEP
+            HDEP(J) = hHDEP
+10    CONTINUE
+      RETURN
+      END 
diff --git a/src/init.c b/src/init.c
new file mode 100644
index 0000000..f0c4619
--- /dev/null
+++ b/src/init.c
@@ -0,0 +1,97 @@
+#include <R_ext/RS.h>
+#include <stdlib.h> // for NULL
+#include <R_ext/Rdynload.h>
+
+/* FIXME: 
+   Check these declarations against the C/Fortran source code.
+*/
+
+/* .C calls */
+extern void AlphaLearn(double *, int *, int *, int *, int *, int *, double *);
+extern void AlphaClassify(void *, void *, void *, void *, void *, void *);
+extern void AlphaLearnCV(void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void DKnnClassify(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void DKnnLearnCv(void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void HDepth(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void HDepthEx(void *, void *, void *, void *, void *, void *, void *);
+extern void HDepthSpaceEx(void *, void *, void *, void *, void *, void *, void *, void *);
+extern void HDSpace(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void IsInConvexes(void *, void *, void *, void *, void *, void *, void *, void *);
+extern void KnnAffInvClassify(void *, void *, void *, void *, void *, void *, void *);
+extern void KnnAffInvLearnJK(void *, void *, void *, void *, void *);
+extern void KnnClassify(void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void KnnLearnJK(void *, void *, void *, void *, void *, void *, void *);
+extern void MahalanobisDepth(void *, void *, void *, void *, void *, void *, void *);
+extern void OjaDepth(void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void PolynomialLearnCV(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void PotentialDepthsCount(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void ProjectionDepth(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void SimplicialDepth(void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void ZDepth(void *, void *, void *, void *, void *, void *, void *);
+
+/* .Fortran calls */
+extern void F77_NAME(adjc)(void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(adjlp)(void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(bd)(void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(cvkernsm)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(diffd)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(dpth1)(void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(dpth2)(void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(fund1)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(fund2)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(funmd)(void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(funrpd1)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(funrpd2)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(hrd)(void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(metrc)(void *, void *, void *, void *, void *, void *);
+extern void F77_NAME(metrl2)(void *, void *, void *, void *, void *, void *);
+
+static const R_CMethodDef CEntries[] = {
+    {"AlphaLearn",           (DL_FUNC) &AlphaLearn,            7},
+    {"AlphaClassify",        (DL_FUNC) &AlphaClassify,         6},
+    {"AlphaLearnCV",         (DL_FUNC) &AlphaLearnCV,          9},
+    {"DKnnClassify",         (DL_FUNC) &DKnnClassify,         10},
+    {"DKnnLearnCv",          (DL_FUNC) &DKnnLearnCv,           9},
+    {"HDepth",               (DL_FUNC) &HDepth,               12},
+    {"HDepthEx",             (DL_FUNC) &HDepthEx,              7},
+    {"HDepthSpaceEx",        (DL_FUNC) &HDepthSpaceEx,         8},
+    {"HDSpace",              (DL_FUNC) &HDSpace,              10},
+    {"IsInConvexes",         (DL_FUNC) &IsInConvexes,          8},
+    {"KnnAffInvClassify",    (DL_FUNC) &KnnAffInvClassify,     7},
+    {"KnnAffInvLearnJK",     (DL_FUNC) &KnnAffInvLearnJK,      5},
+    {"KnnClassify",          (DL_FUNC) &KnnClassify,           9},
+    {"KnnLearnJK",           (DL_FUNC) &KnnLearnJK,            7},
+    {"MahalanobisDepth",     (DL_FUNC) &MahalanobisDepth,      7},
+    {"OjaDepth",             (DL_FUNC) &OjaDepth,              9},
+    {"PolynomialLearnCV",    (DL_FUNC) &PolynomialLearnCV,    10},
+    {"PotentialDepthsCount", (DL_FUNC) &PotentialDepthsCount, 11},
+    {"ProjectionDepth",      (DL_FUNC) &ProjectionDepth,      12},
+    {"SimplicialDepth",      (DL_FUNC) &SimplicialDepth,       9},
+    {"ZDepth",               (DL_FUNC) &ZDepth,                7},
+    {NULL, NULL, 0}
+};
+
+static const R_FortranMethodDef FortranEntries[] = {
+    {"adjc",     (DL_FUNC) &F77_NAME(adjc),      8},
+    {"adjlp",    (DL_FUNC) &F77_NAME(adjlp),     8},
+    {"bd",       (DL_FUNC) &F77_NAME(bd),        6},
+    {"cvkernsm", (DL_FUNC) &F77_NAME(cvkernsm), 15},
+    {"diffd",    (DL_FUNC) &F77_NAME(diffd),    15},
+    {"dpth1",    (DL_FUNC) &F77_NAME(dpth1),     6},
+    {"dpth2",    (DL_FUNC) &F77_NAME(dpth2),     8},
+    {"fund1",    (DL_FUNC) &F77_NAME(fund1),    11},
+    {"fund2",    (DL_FUNC) &F77_NAME(fund2),    13},
+    {"funmd",    (DL_FUNC) &F77_NAME(funmd),     7},
+    {"funrpd1",  (DL_FUNC) &F77_NAME(funrpd1),  11},
+    {"funrpd2",  (DL_FUNC) &F77_NAME(funrpd2),  15},
+    {"hrd",      (DL_FUNC) &F77_NAME(hrd),       6},
+    {"metrc",    (DL_FUNC) &F77_NAME(metrc),     6},
+    {"metrl2",   (DL_FUNC) &F77_NAME(metrl2),    6},
+    {NULL, NULL, 0}
+};
+
+void R_init_ddalpha(DllInfo *dll)
+{
+    R_registerRoutines(dll, CEntries, NULL, FortranEntries, NULL);
+    R_useDynamicSymbols(dll, FALSE);
+}
diff --git a/src/stdafx.cpp b/src/stdafx.cpp
new file mode 100644
index 0000000..61d6826
--- /dev/null
+++ b/src/stdafx.cpp
@@ -0,0 +1,14 @@
+// stdafx.cpp : source file that includes just the standard includes
+// ddalpha.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
+
+
+int random(int x){
+  int c = ran(x); 
+  return c == x ? random(x) : c;
+}
diff --git a/src/stdafx.h b/src/stdafx.h
new file mode 100644
index 0000000..580511a
--- /dev/null
+++ b/src/stdafx.h
@@ -0,0 +1,75 @@
+/*
+  File:             stdafx.h
+  Created by:       Oleksii Pokotylo
+  First published:  28.02.2013
+  Last revised:     28.02.2013
+  
+  Defines the Includes needed.
+*/
+
+#pragma once
+
+#define BOOST_UBLAS_NO_STD_CERR
+
+#include <time.h>
+#include <algorithm>
+#include <math.h>
+#include <float.h>
+#include <vector>
+#include <set>
+#include <stdlib.h>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/io.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <boost/random.hpp>
+#ifndef _MSC_VER
+#include <Rcpp.h> 
+using namespace Rcpp;
+#endif
+
+using namespace std;
+
+#include "DataStructures.h"
+#include "Common.h"
+#include "AlphaProcedure.h"
+#include "TukeyDepth.h"
+#include "HD.h"
+#include "ZonoidDepth.h"
+#include "Mahalanobis.h"
+#include "SimplicialDepth.h"
+#include "OjaDepth.h"
+#include "Knn.h"
+#include "Polynomial.h"
+#include "PotentialDepth.h"
+#include "ProjectionDepth.h"
+#include "DKnn.h"
+
+
+static boost::random::rand48 rEngine;
+static boost::random::normal_distribution<double> normDist;
+
+#define ran(x) rEngine()%x
+#define setseed(x) rEngine.seed(x)
+
+//#include <Rmath.h> 
+//
+////#include <Rcpp/stats/random/runif.h>
+////static Rcpp::stats::UnifGenerator rndm;
+//#define ran(x) ((int)runif(0,x))
+//
+//
+//#define setseed(x) set_seed(x,x)
+//
+//#include <Rcpp.h> 
+//using namespace Rcpp;
+//
+//#else
+//#define ran(x) rand()%x
+//
+//#define setseed(x) srand(x)
+//
+//#endif
+
+int random(int x);
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/r-cran-ddalpha.git



More information about the debian-science-commits mailing list