eaf/0000755000175000017500000000000014160351052011134 5ustar nileshnilesheaf/MD50000644000175000017500000002215114160351052011445 0ustar nileshnileshdf396fad4423e98a7f9557c79ebf453c *DESCRIPTION 2ba5bf013a29d33d55497108b16660ba *NAMESPACE 46dd27554c7c382fa403a6c91faa61ad *NEWS.md fb8f30570a80df0b4ce527e5b76b7fff *R/common.R 791af0530529d31ead82c39937acbfdb *R/eaf-package.R 7b593ad9e06be39b86570b93d3b4c06b *R/eaf.R 4f03026c8fea7b9211d4b1502f7e6a9e *R/epsilon.R f85f3bfafb89e9b11a9a73deaa9c854b *R/hv.R c531f54c81f0dbe1b55f884050bc3b3b *R/igd.R 17758b6fc8a99a113d1d72212eb34419 *R/interactive.R b9f781b9aafdc6597fd9a3c6782a9bb0 *R/nondominated.R f73c977e020a4b4e6a69bdf09016a661 *R/normalise.R e2b9b3458b85dddab5e1a364de6f888f *R/pdf_crop.R 027c47df86a832c6c5c66810769a648c *R/read_datasets.R 6e40e25f078efb350d4a5dba249218ce *R/vorob.R 1f3f781d2742e1121d167e756b9d581a *R/whv.R 864043835b30246f8d76259ce4a784cd *R/zzz.R a4467bef1ef5c9e3a00767cceac280e9 *README.md 0844cd9b7f001e1e510938f2610cb560 *build/partial.rdb dfc7a41aac3265e11a4d8c28ed672bc6 *cleanup 41c37e710931451855cf73f2801d8a4e *configure 9ee12349a3ba2ce4f73a1ef31366a42a *configure.ac 1c38bb40df3f939a3d506de57fadf6f9 *data/CPFs.rda 85bae51ecf771dbb34c15360c8f35aed *data/HybridGA.rda 8204f9c487a6fcf83e9bfe7df735cc08 *data/SPEA2minstoptimeRichmond.rda f7ae86083ff009c8f86665993c753428 *data/SPEA2relativeRichmond.rda 6a8def87a4e0571e7f10ee0e264e8897 *data/SPEA2relativeVanzyl.rda 096884252796983614f37d872868e5e8 *data/gcp2x2.rda 770178f45be322d2dd9194898627213d *inst/CITATION 5e5401e5ed7cc9b8c5c88e2e6b59d281 *inst/REFERENCES.bib 0a51a42293544f2385830398072f8ee2 *inst/extdata/ALG_1_dat.xz fc76696f58dd31636dd4c236c6e16335 *inst/extdata/ALG_2_dat.xz 100ea9fe4fb0f17ed398d8b4edc26518 *inst/extdata/README 3a72770374fc82071704eb2b7cc57631 *inst/extdata/example1_dat 64faa31d86f5ea7069cd047924b1af30 *inst/extdata/n75_dat 7513b5cc8c089d8aa5babb3573a25d71 *inst/extdata/p75_dat 44b992e874df3900e98cfc5c6fb2ed18 *inst/extdata/r15_dat 81f0836809f1458230b4fafb0441eb32 *inst/extdata/r200_dat f5408c370334bbbca9fc24f4c75bfb04 *inst/extdata/r50_dat 6ee4e33b1533646d833dfc0caaf15e66 *inst/extdata/ran.10pts.3d.10 30713d1e2848e7ba967817142c276d95 *inst/extdata/rest c82ae516bb78c2c480edc0d2b772d094 *inst/extdata/run.sh 4a66840e409ebf4709b8f4e7f448d9ba *inst/extdata/spherical-250-10-3d.txt 62e7406969121933b5388117d9fca1cb *inst/extdata/tpls 30ef7b0e9f67878a4391065d44a7d7f2 *inst/extdata/uniform-250-10-3d.txt 56013215aaa2b074b6d28f5db146e2cd *inst/extdata/wrots_l100w10_dat 9d8856755ed34b78a57c0c5f6475319b *inst/extdata/wrots_l10w100_dat d73144bf8650a6b2188917c4fd25671c *inst/scripts/eafdiff.py a270ec64c26d92343b3824ee874d4139 *inst/scripts/eafdiff/README d28edbaf57f729e7df5591feacca65a0 *inst/scripts/eafdiff/eafdiff.pl 85d028a18ca7d9e2828e778c03efefb6 *inst/scripts/eafplot/README 13b05c6ba4c262939c6c914a6285fa2c *inst/scripts/eafplot/eafplot.pl 926237bd4bf9d25ca3953a8953cfe23d *man/CPFs.Rd 599f4a426e1b2bcf510b5ba212de6aab *man/HybridGA.Rd 2af34f6d5b39c25edd2e8f4cd650c139 *man/SPEA2minstoptimeRichmond.Rd 0e982818cc23adde064a4de3d0f8a0c0 *man/SPEA2relativeRichmond.Rd 18b6bbd6770861c73c45e970384e11cf *man/SPEA2relativeVanzyl.Rd c5310c83733d813620c86141a8379254 *man/Vorob.Rd 8fa6650bad55b4756768f6c82e489cad *man/attsurf2df.Rd fec4df2184e97ed4b41c3a42c7efce47 *man/choose_eafdiffplot.Rd cdba99fd79b85fe258cd26f9d17845e1 *man/eaf-package.Rd a0bc19c48c7f63bcc8b49cc51236b6a8 *man/eafdiff.Rd 6776e51b4ce687faf3d1b3bee70b098b *man/eafdiffplot.Rd bc051e7f5c92738d73277f00caef372c *man/eafplot.Rd 47afe14758deaf2c72daa29b6d53a2d2 *man/eafs.Rd dcb0ffdafb38c52297de06a5f07f2277 *man/epsilon.Rd 74f8a70a8960d45d2b7adb155eeab39e *man/figures/ALG_1_dat-ALG_2_dat.png 83f968797ff9e6bda2891e1f2253beca *man/figures/eafdiff-color.png 573eff347a3b839b4f4ff1091ab33381 *man/gcp2x2.Rd 7d103570c0534b546338c688f99c3e44 *man/hv_contributions.Rd 4493a4037b81a27d81bd5e8495776849 *man/hypervolume.Rd 82ca4bf108cb72e84469c05e7b0a7c41 *man/igd.Rd 7dd7dbf58bf9bb8077bc76de2807a8d6 *man/largest_eafdiff.Rd 65c0471d596edb00830fc8a077f415c5 *man/macros/macros.Rd e419ac8d191263667c651909bd0c74e6 *man/nondominated.Rd 72184c2f38e7d72189b3cde2a213ac6e *man/normalise.Rd 6b42b1b1634e5405c2d6cd6c57999aee *man/pdf_crop.Rd a166d35f3b8d2e37233aa567f3708887 *man/read_datasets.Rd 4a2874c61ac92b29c11450aa0c6aaaf0 *man/whv_hype.Rd a7218fa6c9992f0368d607a86924144c *man/whv_rect.Rd 11dac062191c95bd4463055645c31636 *man/write_datasets.Rd b6c088c035f28f6a09763d32abf76a58 *src/Makevars.in 52de5aba8a6890074115cc9ce3cc75cc *src/Makevars.ucrt 44f58570efc7c5d64f7041e238da6cde *src/Makevars.win fe109dca0b4629def3e8312b10a09171 *src/Rcommon.h 586492dd0a7c1430b5e98e91939951a1 *src/Reaf.c 42b3788f2e6afb93a41bc46a2b9c2428 *src/Repsilon.c 4bdf5e054651b7d6a4fa78d0c0f40875 *src/Rhv.c 03942508bd969029f16e96db1da0dac3 *src/Rnondominated.c 742f056bccc5fe7a863025d06b9c948d *src/eaf/GNUmakefile 484135344662eef149f0cfaf462e9493 *src/eaf/LICENSE 1908e34165a33e012b63da870f2e181e *src/eaf/README a71e8acc52010d0dfec874ab235fc9ca *src/eaf/TODO f9cdc405e605580a238209bce6cdec76 *src/eaf/avl.c b8a0410dba14f027b4b5b0ac916e95a8 *src/eaf/avl.h 60b8de2d43c4a090807823eff135d310 *src/eaf/bit_array.h 8de218a4775d1c98ece51a0037b0c67f *src/eaf/common.h 4aabf9a9fb54e64e2c2ea5c06e14ea1d *src/eaf/cvector.h 27c6121cfbda075532af82c01fad0fac *src/eaf/eaf.c 1cc1ece820865410b78b2d5ea754f948 *src/eaf/eaf.h aa4be882b43627573b318b01b3521986 *src/eaf/eaf3d.c 9751ed91890120cebc60a3b5d196443e *src/eaf/eaf_main.c e3ee21f60f32ff264993f183a12e5bb1 *src/eaf/gcc.mk 9b6b1648fbf0203d0b2413b872823d85 *src/eaf/gcc_attribs.h 72093397996e24d9d21409517ac1a529 *src/eaf/io.c 0cfac7d994677bdc1ae5e6662e956d4f *src/eaf/io.h ceed8236a8a1cbc7c9f67921fc2e25ba *src/eaf/io_priv.h 07cdfd23373b17c6b337251c22b7ea57 *src/eaf/svn_version e0a298d685b5eaa09750fb7ffba4c0c0 *src/eaf/svnversion.mk d51b7a8845aa6e5ceb43fb8a8c6b91ff *src/init.c c470187859d210700c7819e4eb4d5b6d *src/install.libs.R 3ca7fe858ecf50d9faf3f446664ad29e *src/mo-tools/LICENSE a5f6d94a9a58a18b05558d477220731d *src/mo-tools/Makefile eb0cadb962cc4fafa46ed630de2b197b *src/mo-tools/README dc863657cb2d06c36cc22b2894f47d4b *src/mo-tools/cmdline.h 8de218a4775d1c98ece51a0037b0c67f *src/mo-tools/common.h 87223f485dd5db2880c65f8b8d158a7c *src/mo-tools/dominatedsets.c 338e4d74b705773f10ab4e47577cf66b *src/mo-tools/epsilon.c 83e1e1c8d12b928081ad6fff0b0e9fa1 *src/mo-tools/epsilon.h e3ee21f60f32ff264993f183a12e5bb1 *src/mo-tools/gcc.mk 9b6b1648fbf0203d0b2413b872823d85 *src/mo-tools/gcc_attribs.h 5c2375e337690475ac725daa993d18e3 *src/mo-tools/hv.c 36ef43fcef7f5eb00b7db207f7ef604f *src/mo-tools/hv.h 1c272a972cec8178522770a17a2f5f5e *src/mo-tools/hv_contrib.c ffa352eb035478c1284a4a8b98e523a9 *src/mo-tools/hv_contrib.h 8846bf4ad800cbc87e61f48ecfc2bf74 *src/mo-tools/igd.c 372a34801cb49fb339f804c72189b92d *src/mo-tools/igd.h 72093397996e24d9d21409517ac1a529 *src/mo-tools/io.c 0cfac7d994677bdc1ae5e6662e956d4f *src/mo-tools/io.h ceed8236a8a1cbc7c9f67921fc2e25ba *src/mo-tools/io_priv.h 8a653910ffaf66db511603967b13167f *src/mo-tools/libhv.mk 694a19e0b4e16d9e56eb5eb5f897cd20 *src/mo-tools/ndsort.c 6f7179d59ce4573f7f6633b0970d5e61 *src/mo-tools/nondominated.c 8bd803d1123a7b6a088784680dd0ff29 *src/mo-tools/nondominated.h 2b3a49ebf51aeb7ebdbfc97e86a14b80 *src/mo-tools/pareto.c 7e7757b1e12abcb736ab9a754ffb617a *src/mo-tools/svn_version e0a298d685b5eaa09750fb7ffba4c0c0 *src/mo-tools/svnversion.mk 3e5452b7a1214aa99494855502c81a29 *src/mo-tools/whv.c e5b00714f00674de4d44db14ab735e15 *src/mo-tools/whv.h 4d4bca4ec2065042f79b1fbd908c7d2a *src/mo-tools/whv_hype.c ca49a6152d99126f2fd963729389f512 *src/mo-tools/whv_hype.h 6e5a1cbeb86060ad4bb467da07894631 *tests/eafplot.R b793b7e3495f8749165e834bce4a1ea6 *tests/eafplot.Rout.saved 2ca5ab91a77c124cf4b15167bcbfafaf *tests/eafplot.pdf 1a0679214ca7d4d85bf0f8f213afb9c3 *tests/lin-sph.R c8f8305f7261d8ce612f3481e88af5bf *tests/lin.S-sph.S-diff.txt.xz 61e3a7ea3e8d4fd5aea29ba4cbe9ba28 *tests/lin.S.txt 531a72b084bb2fb5b8f3934bd33557f7 *tests/ran.100pts.3d.10 5fb94455367e35186e82f0fefea91e23 *tests/ran.100pts.3d.10.R 1251de3c14b9de8ab2989c04fa727250 *tests/sph.S.txt 2b35c6701cd26d5d0425a4af5313f714 *tests/testthat.R af090b5579d5d4238c6db00ad8295699 *tests/testthat/ALG_1_dat-eaf.rds d0de8cc0944e7281cd4b45cb2576adc4 *tests/testthat/DTLZDiscontinuousShape.3d.front.1000pts.10.rda 3730b92afc4289858f297cf56c4aba39 *tests/testthat/SPEA2relativeRichmond-eaf.rds 3ee789a747a479a58525e08fb949e799 *tests/testthat/duplicated3.inp d4903c9ee6f119a3993ecabd792d265b *tests/testthat/helper-common.R 45b40dcf1a24c1aa87883441d87f2ae2 *tests/testthat/test-eaf.R b70ee040d1978f4b502acd5c3beaedd3 *tests/testthat/test-eafdiffplot.R 504d17c2707641a763d104ca2944b2eb *tests/testthat/test-eafplot-list.R 7b0ea06608c50eca22a885577f42b553 *tests/testthat/test-eafplot.R a647c2465829395150c1a9bc5a66440f *tests/testthat/test-hv.R 4c53fb6bfa85217e751e8cfbdccbad1f *tests/testthat/test-normalise.R 5a935d0c7134349e450f6aa49dcb33bf *tests/testthat/test-pareto-rank.R 4dd95339e67a8dde13fd55ad249822a5 *tests/testthat/test-vorob.R acb30dc057d504cb290d2a0f614a9c34 *tests/testthat/test-whv.R 9c7c0273f26ba59345e751928b1b13ab *tests/testthat/test-whv.rdat 94529228f8f50bb73ced52b43686e578 *tests/testthat/test-whv_hype.R 7191acd18b96c1431d70a1907dac0020 *tests/testthat/test-write_datasets.R d9bc1e3f7925bd5846f8e3c76a14b963 *tools/create-figures.R 52457537b091438b3ceb8b0efbe1b097 *tools/winlibs.R eaf/NEWS.md0000644000175000017500000001267314154005001012234 0ustar nileshnilesh# eaf 2.3 * `eafplot()` now returns the attainment surfaces computed invisibly. * New functions `pdf_crop()`, `write_datasets()`, `attsurf2df()`. * Fix bug that made polygons extend beyond their boundaries affecting `eafdiff()` and `eafdiffplot()`. # eaf 2.2 * `col` argument of `eafdiffplot()` may be a colormap function. # eaf 2.1 * Improve documentation of `igd()`. * Fix errors with single-point attainment surfaces. * Fix bug in `eafplot.list()`. # eaf 2.0 * `read_datasets()` is able to read files compressed with `xz`. * `eafs()` and `eafdiff()` and the plotting functions using them now consume slightly less memory. * New function `whv_hype()` to estimate weighted hypervolume using Monte-Carlo sampling. * New functions `total_whv_rect()` and `whv_rect()` to compute weighted hypervolume with rectangular weighted regions. * New functions `largest_eafdiff()`, `choose_eafdiffplot()` and `choose_eafdiff()` for converting EAF differences into weighted regions for calculating the weighted hypervolume. * New function `avg_hausdorff_dist()` for computing the averaged Hausdorff distance. # eaf 1.9-1 * Fixes to Makefiles for non-GCC compilers and parallel build setups. # eaf 1.9 * Compute Vorob'ev threshold, expectation and deviation. Plots of the symmetric deviation. (Mickael Binois) * Non-integer EAF percentiles are computed correctly. * Various aesthetic improvements in `eafplot()` and `eafdiffplot()`. * Functions for computing hypervolume, hypervolume contributions, epsilon metric, IGD+, filter dominated points, and fast normalisation of ranges. * Command-line tools for computing the above are installed in `system.file(package="eaf", "bin/")`. * Online documentation available at: http://lopez-ibanez.eu/eaftools * New `read_datasets()` replaces deprecated `read.data.sets()`. New parameter `text` of `read_datasets()`. * New `eafdiff()` function for computing EAF differences. * The `data.frame` method for `eafplot` has been removed. It had unexpected behavior and the default method handles `data.frame` already. * Python script to compute EAF differences installed at `system.file(package="eaf", "scripts/eafdiff.py")`. # eaf 1.8 * Development version moved to GitHub: https://github.com/MLopez-Ibanez/eaf * Remove leading zeros from version number. * New parameters `left.panel.last` and `right.panel.last` of `eafdiffplot()`. * Export and document function `eafs()` to compute EAFs. * `eafdiff.pl`: Handle `--colors=`, `--intervals=`. * Fix crash in `eafplot()` if `sets` is a vector of strings. * Reset layout in `eafdiffplot()`. * Compute eaf for 3D. * Added testthat testing framework. * The documentation is now generated with Roxygen2. * Entry points to C code are now properly registered. # eaf 1.07 * Silence CRAN warning for GNU extensions in Makefiles in `inst/scripts/eaf/Makefile`. # eaf 1.06 * Fix bug when automatically generating a legend in eafplot with the formula interface (Thanks to Bernd Bischl for reporting this) * Improve handling of various newline character formats. * Reduce memory consumption (up to four times less memory). * `eafdiff.pl`: Mention option --legendpos=none to hide the legend. * eafplot.pl: Add options --maximise and --xmaximise and --colors=. Fix bug with --area. * `eafplot.default()` now requires two colors when `type=="area"` and a palette is interpolated between these two colors for all the different levels plotted (Thanks to Alexandre Quemy for the suggestion). # eaf 1.05 * Implement `type = "area")` for `eafdiffplot()`. This is now the default. The idea for the algorithm to compute the areas was provided by Carlos M. Fonseca. The implementation uses R polygons, which some PDF viewers may have trouble rendering correctly (See https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-are-there-unwanted-borders). Plots will look correct when printed. To get the previous behavior use `eafdiffplot(, type = "point")`. * Attempt to deal with DOS/Unix newlines correctly. * eafplot.pl: Lots of cleanup. (--single, --output, --legend): New options. Default to PDF. * eafdiff.pl: Many cleanups. EAF diff with type="area" is the default now. Parameter --cex replaced by --scale. Do not require ps2eps. Handle --obj1= better. Crop pdf before converting to png. (--noattsurfs): New option. (--output-dir,--output): New options. (--eps): New option. PDF is the default now. * Force eafdiff plots to use a square plotting region. * `read.data.sets()` normalizes paths, thus it works with files such as ~/file. * Function eafdiffplot() handles percentiles=NA and grand.lines parameter. * Fix bug with ranges and maximise=TRUE in eafdiffplot(). * Fix points.steps to work correctly for all values of maximise. * Fix bug in eafdiffplot(..., maximise=c(TRUE,FALSE), full.eaf = TRUE) * Fix "log" parameter in eafplot and eafdiffplot. * Avoid that eafplot.formula modifies global options. * Add 'axes' parameter to eafplot. * To avoid confusion, the arguments 'xaxis.side' and 'yaxis.side' of eafplot can only take values c("below", "above") and c("left", "right"), respectively. * Add missing Makefile in inst/scripts/eaf/. # eaf 1.04 * Fix issues with only one point in the EAF. # eaf 1.03 * Handle maximise argument in eafdiffplot and --maximise command-line option in eafdiff.pl * R/calls.R (eafplot.data.frame): Fix problem with main parameter. # eaf 1.00 * Initial release available in CRAN. eaf/DESCRIPTION0000644000175000017500000000317614160351052012651 0ustar nileshnileshPackage: eaf Type: Package Title: Plots of the Empirical Attainment Function Version: 2.3 Authors@R: c(person("Manuel", "López-Ibáñez", role = c("aut", "cre"), email = "manuel.lopez-ibanez@manchester.ac.uk", comment = c(ORCID = "0000-0001-9974-1295")), person("Marco", "Chiarandini", role = "aut"), person("Carlos", "Fonseca", role = "aut"), person("Luís", "Paquete", role = "aut"), person("Thomas", "Stützle", role = "aut"), person("Mickaël", "Binois", role = "ctb")) Description: Computation and visualization of the empirical attainment function (EAF) for the analysis of random sets in multi-criterion optimization. M. López-Ibáñez, L. Paquete, and T. Stützle (2010) . Depends: R (>= 3.2) Imports: modeltools, graphics, grDevices, stats, Rdpack Suggests: testthat, withr, viridisLite License: GPL (>= 2) BugReports: https://github.com/MLopez-Ibanez/eaf/issues URL: https://mlopez-ibanez.github.io/eaf/, https://github.com/MLopez-Ibanez/eaf LazyLoad: true LazyData: true Encoding: UTF-8 RoxygenNote: 7.1.1 SystemRequirements: GNU make, Gnu Scientific Library RdMacros: Rdpack NeedsCompilation: yes Packaged: 2021-12-21 12:49:48 UTC; manu Author: Manuel López-Ibáñez [aut, cre] (), Marco Chiarandini [aut], Carlos Fonseca [aut], Luís Paquete [aut], Thomas Stützle [aut], Mickaël Binois [ctb] Maintainer: Manuel López-Ibáñez Repository: CRAN Date/Publication: 2021-12-21 13:10:02 UTC eaf/README.md0000644000175000017500000002366114156713740012436 0ustar nileshnileshEAF
   differences between two bi-objective optimizers EAF differences between two variants of W-RoTS (color) **eaf**: Empirical Attainment Function (EAF) Tools ================================================================ [![CRAN Status](https://www.r-pkg.org/badges/version-last-release/eaf)](https://cran.r-project.org/package=eaf) [![CRAN Downloads](https://cranlogs.r-pkg.org/badges/grand-total/eaf)](https://CRAN.R-project.org/package=eaf) [![R build status](https://github.com/MLopez-Ibanez/eaf/workflows/R-CMD-check/badge.svg)](https://github.com/MLopez-Ibanez/eaf/actions) [![Codecov test coverage](https://codecov.io/gh/MLopez-Ibanez/eaf/branch/master/graph/badge.svg)](https://app.codecov.io/gh/MLopez-Ibanez/eaf?branch=master) [ [**Homepage**](https://mlopez-ibanez.github.io/eaf/) ] [ [**GitHub**](https://github.com/MLopez-Ibanez/eaf) ] **Maintainer:** [Manuel López-Ibáñez](https://lopez-ibanez.eu) **Contributors:** [Manuel López-Ibáñez](https://lopez-ibanez.eu), [Marco Chiarandini](http://www.imada.sdu.dk/~marco), [Carlos M. Fonseca](https://eden.dei.uc.pt/~cmfonsec/), [Luís Paquete](https://eden.dei.uc.pt/~paquete/), Thomas Stützle, and Mickaël Binois. --------------------------------------- Introduction ============ The empirical attainment function (EAF) describes the probabilistic distribution of the outcomes obtained by a stochastic algorithm in the objective space. This [R](https://www.R-project.org/) package implements plots of summary attainment surfaces and differences between the first-order EAFs. These plots may be used for exploring the performance of stochastic local search algorithms for biobjective optimization problems and help in identifying certain algorithmic behaviors in a graphical way. The corresponding [book chapter](#LopPaqStu09emaa) [1] explains the use of these visualization tools and illustrates them with examples arising from practice. In addition, the package provides functions for computing several quality metrics, such as hypervolume, IGD, IGD+, and epsilon. **Keywords**: empirical attainment function, summary attainment surfaces, EAF differences, multi-objective optimization, bi-objective optimization, performance measures, performance assessment, graphical analysis, visualization. **Relevant literature:** 1. Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. [Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization](https://doi.org/10.1007/978-3-642-02538-9_9). In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuss, editors, *Experimental Methods for the Analysis of Optimization Algorithms*, pages 209–222. Springer, Berlin, Germany, 2010.
(This chapter is also available in a slightly extended form as Technical Report TR/IRIDIA/2009-015).
[ [bibtex](https://lopez-ibanez.eu/LopezIbanez_bib.html#LopPaqStu09emaa) | doi: [10.1007/978-3-642-02538-9_9](https://doi.org/10.1007/978-3-642-02538-9_9) | [Presentation](https://lopez-ibanez.eu/doc/gecco2010moworkshop.pdf) ] Download and installation ------------------------- The software is implemented as an R package, but the code for only computing the EAF is available as a C program, and it does not require installing R or any R packages. Just [download the package source code](https://cran.r-project.org/package=eaf), uncompress it, and look for the directory `src/eaf`. This code can be used to implement your own visualizations instead of the visualizations provided by the **eaf** package. Compiled binaries can be found under `system.file(package="eaf", "bin")`. Other useful binaries can be found there. The visualization of the EAFs requires installing the **eaf** package. Therefore, a basic knowledge of R is recommended to make use of all features. However, the `eaf` package contains two Perl scripts that allow to generate standard plots without any R knowledge. See `inst/scripts/eafplot/` and `inst/scripts/eafdiff/` in the package source code. The scripts use the **eaf** package internally to generate the plots, and, hence, the **eaf** package must be installed and working. The first step before installing the **eaf** package is to [install R](https://cran.r-project.org/). Once R is installed in the system, there are two methods for installing the **eaf** package: 1. Install within R (automatic download, internet connection required). Invoke R, then ```r install.packages("eaf") ``` 2. [Download the **eaf** package from CRAN](https://cran.r-project.org/package=eaf) (you may also need to download and install first the [package modeltools](https://cran.r-project.org/package=modeltools)), and invoke at the command-line: ```bash R CMD INSTALL ``` where `` is one of the three versions available: `.tar.gz` (Unix/BSD/GNU/Linux), `.tgz` (MacOS X), or `.zip` (Windows). Search the [R documentation](https://cran.r-project.org/faqs.html) if you need more help to install an R package on your system. If you wish to be notified of bugfixes and new versions, please subscribe to the [low-volume emo-list](https://lists.dei.uc.pt/mailman/listinfo/emo-list), where announcements will be made. [ [Download **eaf** package from CRAN](https://cran.r-project.org/package=eaf) ] [ [Documentation](https://mlopez-ibanez.github.io/eaf/) ] [ [Development version (GitHub)](https://github.com/MLopez-Ibanez/eaf) ] Usage ----- Once the **eaf** package is installed, the following R commands will give more information: ```r library(eaf) ?eaf ?eafplot ?eafdiffplot ?read.data.sets example(eafplot) example(eafdiffplot) # This one takes some time ``` Apart from the main R package, the source code contains the following extras in the directory `inst/` (after installation, these files can be found at the directory printed by the R command `system.file(package="eaf")`): * `scripts/eafplot` : Perl script to plot summary attainment surfaces. * `scripts/eafdiff` : Perl script to plot the differences between the EAFs of two input sets. * `extdata/` : Examples of utilization of the above programs. These are discussed in the corresponding [book chapter](#LopPaqStu09emaa) [1]. In addition, the source code contains the following under `src/`: * `src/eaf` : This C program computes the empirical attainment function in 2 or 3 dimensions. It is NOT required by the other programs, but it is provided as a useful command-line utility. This version is based on the original code written by Carlos M. Fonseca available at http://www.tik.ee.ethz.ch/pisa/. A more recent version is available at [Prof. Fonseca's website](https://eden.dei.uc.pt/~cmfonsec/software.html). * `src/mo-tools` : Several tools for working with multi-objective data. For more information, consult the `README` files at each subdirectory. Python ------ Thanks to [rpy2](https://rpy2.github.io/doc/latest/html/index.html), you can use the `eaf` package from Python. A complete example would be: ```python import os ## Uncomment this if you suffer from this bug in cffi 1.13.0 ## https://bitbucket.org/rpy2/rpy2/issues/591/runtimeerror-found-a-situation-in-which-we #os.environ['RPY2_CFFI_MODE'] = "API" # Tested with rpy2 2.9.2-1 and 3.2.6 import numpy as np from rpy2.robjects.packages import importr from rpy2.robjects import r as R from rpy2.robjects import numpy2ri numpy2ri.activate() from rpy2.interactive import process_revents process_revents.start() eaf = importr("eaf") path = R('system.file(package="eaf", "extdata")')[0] + "/" alg1 = eaf.read_data_sets_(path + "ALG_1_dat.xz") alg1 = np.asarray(alg1) alg2 = np.asarray(eaf.read_data_sets_(path + "ALG_2_dat.xz")) eaf.eafplot(alg1[:, 0:2], sets=alg1[:,2]) input("Press ENTER to see next plot: ") eaf.eafdiffplot(alg1, alg2, title_left="A", title_right="B") ``` License -------- This software is Copyright (C) 2011-2021 Carlos M. Fonseca, Luís Paquete, Thomas Stützle, Manuel López-Ibáñez and Marco Chiarandini. This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU General Public License](http://www.gnu.org/licenses/gpl.html) for more details. **IMPORTANT NOTE**: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to (a) mention the fashion in which this software was used in the Methods section; (b) mention the algorithm in the References section. The appropriate citation is: * Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. **Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization.** In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuss, editors, *Experimental Methods for the Analysis of Optimization Algorithms*, pages 209–222. Springer, Berlin, Germany, 2010. doi: 10.1007/978-3-642-02538-9_9 Moreover, as a personal note, I would appreciate it if you would email `manuel.lopez-ibanez@manchester.ac.uk` with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. eaf/man/0000755000175000017500000000000014160032547011714 5ustar nileshnilesheaf/man/eafdiffplot.Rd0000644000175000017500000001561414160076744014504 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf.R \name{eafdiffplot} \alias{eafdiffplot} \title{Plot empirical attainment function differences} \usage{ eafdiffplot( data.left, data.right, col = c("#FFFFFF", "#808080", "#000000"), intervals = 5, percentiles = c(50), full.eaf = FALSE, type = "area", legend.pos = if (full.eaf) "bottomleft" else "topright", title.left = deparse(substitute(data.left)), title.right = deparse(substitute(data.right)), xlim = NULL, ylim = NULL, cex = par("cex"), cex.lab = par("cex.lab"), cex.axis = par("cex.axis"), maximise = c(FALSE, FALSE), grand.lines = TRUE, sci.notation = FALSE, left.panel.last = NULL, right.panel.last = NULL, ... ) } \arguments{ \item{data.left, data.right}{Data frames corresponding to the input data of left and right sides, respectively. Each data frame has at least three columns, the third one being the set of each point. See also \code{\link[=read_datasets]{read_datasets()}}.} \item{col}{A character vector of three colors for the magnitude of the differences of 0, 0.5, and 1. Intermediate colors are computed automatically given the value of \code{intervals}. Alternatively, a function such as \code{\link[viridisLite:viridis]{viridisLite::viridis()}} that generates a colormap given an integer argument.} \item{intervals}{(\code{integer(1)}|\code{character()}) \cr The absolute range of the differences \eqn{[0, 1]} is partitioned into the number of intervals provided. If an integer is provided, then labels for each interval are computed automatically. If a character vector is provided, its length is taken as the number of intervals.} \item{percentiles}{The percentiles of the EAF of each side that will be plotted as attainment surfaces. \code{NA} does not plot any. See \code{\link[=eafplot]{eafplot()}}.} \item{full.eaf}{Whether to plot the EAF of each side instead of the differences between the EAFs.} \item{type}{Whether the EAF differences are plotted as points (\samp{points}) or whether to color the areas that have at least a certain value (\samp{area}).} \item{legend.pos}{The position of the legend. See \code{\link[=legend]{legend()}}. A value of \code{"none"} hides the legend.} \item{title.left, title.right}{Title for left and right panels, respectively.} \item{xlim, ylim, cex, cex.lab, cex.axis}{Graphical parameters, see \code{\link[=plot.default]{plot.default()}}.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{grand.lines}{Whether to plot the grand-best and grand-worst attainment surfaces.} \item{sci.notation}{Generate prettier labels} \item{left.panel.last, right.panel.last}{An expression to be evaluated after plotting has taken place on each panel (left or right). This can be useful for adding points or text to either panel. Note that this works by lazy evaluation: passing this argument from other \code{plot} methods may well not work since it may be evaluated too early.} \item{...}{Other graphical parameters are passed down to \code{\link[=plot.default]{plot.default()}}.} } \value{ No return value. } \description{ Plot the differences between the empirical attainment functions of two data sets as a two-panel plot, where the left side shows the values of the left EAF minus the right EAF and the right side shows the differences in the other direction. } \details{ This function calculates the differences between the EAFs of two data sets, and plots on the left the differences in favour of the left data set, and on the right the differences in favour of the right data set. By default, it also plots the grand best and worst attainment surfaces, that is, the 0\%- and 100\%-attainment surfaces over all data. These two surfaces delimit the area where differences may exist. In addition, it also plots the 50\%-attainment surface of each data set. With \code{type = "point"}, only the points where there is a change in the value of the EAF difference are plotted. This means that for areas where the EAF differences stays constant, the region will appear in white even if the value of the differences in that region is large. This explains "white holes" surrounded by black points. With \code{type = "area"}, the area where the EAF differences has a certain value is plotted. The idea for the algorithm to compute the areas was provided by Carlos M. Fonseca. The implementation uses R polygons, which some PDF viewers may have trouble rendering correctly (See \url{https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-are-there-unwanted-borders}). Plots (should) look correct when printed. Large differences that appear when using \code{type = "point"} may seem to disappear when using \code{type = "area"}. The explanation is the points size is independent of the axes range, therefore, the plotted points may seem to cover a much larger area than the actual number of points. On the other hand, the areas size is plotted with respect to the objective space, without any extra borders. If the range of an area becomes smaller than one-pixel, it won't be visible. As a consequence, zooming in or out certain regions of the plots does not change the apparent size of the points, whereas it affects considerably the apparent size of the areas. } \examples{ ## NOTE: The plots in the website look squashed because of how pkgdown ## generates them. They should look fine when you generate them yourself. extdata_dir <- system.file(package="eaf", "extdata") A1 <- read_datasets(file.path(extdata_dir, "ALG_1_dat.xz")) A2 <- read_datasets(file.path(extdata_dir, "ALG_2_dat.xz")) \donttest{# These take time eafdiffplot(A1, A2, full.eaf = TRUE) if (requireNamespace("viridisLite", quietly=TRUE)) { viridis_r <- function(n) viridisLite::viridis(n, direction=-1) eafdiffplot(A1, A2, type = "area", col = viridis_r) } else { eafdiffplot(A1, A2, type = "area") } A1 <- read_datasets(file.path(extdata_dir, "wrots_l100w10_dat")) A2 <- read_datasets(file.path(extdata_dir, "wrots_l10w100_dat")) eafdiffplot(A1, A2, type = "point", sci.notation = TRUE, cex.axis=0.6) } # A more complex example DIFF <- eafdiffplot(A1, A2, col = c("white", "blue", "red"), intervals = 5, type = "point", title.left=expression("W-RoTS," ~ lambda==100 * "," ~ omega==10), title.right=expression("W-RoTS," ~ lambda==10 * "," ~ omega==100), right.panel.last={ abline(a = 0, b = 1, col = "red", lty = "dashed")}) DIFF$right[,3] <- -DIFF$right[,3] ## Save the values to a file. # write.table(rbind(DIFF$left,DIFF$right), # file = "wrots_l100w10_dat-wrots_l10w100_dat-diff.txt", # quote = FALSE, row.names = FALSE, col.names = FALSE) } \seealso{ \code{\link[=read_datasets]{read_datasets()}}, \code{\link[=eafplot]{eafplot()}} } \keyword{graphs} eaf/man/SPEA2relativeVanzyl.Rd0000644000175000017500000000140614010304644015750 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{SPEA2relativeVanzyl} \alias{SPEA2relativeVanzyl} \title{Results of SPEA2 with relative time-controlled triggers on Vanzyl's water network.} \format{ A data frame as produced by \code{\link[=read_datasets]{read_datasets()}}. } \source{ \insertRef{LopezIbanezPhD}{eaf} } \usage{ SPEA2relativeVanzyl } \description{ The data has the only goal of providing an example of use of eafplot. } \examples{ data(HybridGA) data(SPEA2relativeVanzyl) eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400), extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA") } \keyword{datasets} eaf/man/epsilon.Rd0000644000175000017500000000723714033606237013667 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/epsilon.R \name{epsilon} \alias{epsilon} \alias{epsilon_additive} \alias{epsilon_mult} \title{Epsilon metric} \usage{ epsilon_additive(data, reference, maximise = FALSE) epsilon_mult(data, reference, maximise = FALSE) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{reference}{(\code{matrix} | \code{data.frame}) \cr Reference set as a matrix or data.frame of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} } \value{ A single numerical value. } \description{ Computes the epsilon metric, either additive or multiplicative. } \details{ The epsilon metric of a set \eqn{A} with respect to a reference set \eqn{R} is defined as \deqn{epsilon(A,R) = \max_{r \in R} \min_{a \in A} \max_{1 \leq i \leq n} epsilon(a_i, r_i)} where \eqn{a} and \eqn{b} are objective vectors and, in the case of minimization of objective \eqn{i}, \eqn{epsilon(a_i,b_i)} is computed as \eqn{a_i/b_i} for the multiplicative variant (respectively, \eqn{a_i - b_i} for the additive variant), whereas in the case of maximization of objective \eqn{i}, \eqn{epsilon(a_i,b_i) = b_i/a_i} for the multiplicative variant (respectively, \eqn{b_i - a_i} for the additive variant). This allows computing a single value for problems where some objectives are to be maximized while others are to be minimized. Moreover, a lower value corresponds to a better approximation set, independently of the type of problem (minimization, maximization or mixed). However, the meaning of the value is different for each objective type. For example, imagine that objective 1 is to be minimized and objective 2 is to be maximized, and the multiplicative epsilon computed here for \eqn{epsilon(A,R) = 3}. This means that \eqn{A} needs to be multiplied by 1/3 for all \eqn{a_1} values and by 3 for all \eqn{a_2} values in order to weakly dominate \eqn{R}. The computation of the multiplicative version for negative values doesn't make sense. Computation of the epsilon indicator requires \eqn{O(n \cdot |A| \cdot |R|)}, where \eqn{n} is the number of objectives (dimension of vectors). } \examples{ # Fig 6 from Zitzler et al. (2003). A1 <- matrix(c(9,2,8,4,7,5,5,6,4,7), ncol=2, byrow=TRUE) A2 <- matrix(c(8,4,7,5,5,6,4,7), ncol=2, byrow=TRUE) A3 <- matrix(c(10,4,9,5,8,6,7,7,6,8), ncol=2, byrow=TRUE) plot(A1, xlab=expression(f[1]), ylab=expression(f[2]), panel.first=grid(nx=NULL), pch=4, cex=1.5, xlim = c(0,10), ylim=c(0,8)) points(A2, pch=0, cex=1.5) points(A3, pch=1, cex=1.5) legend("bottomleft", legend=c("A1", "A2", "A3"), pch=c(4,0,1), pt.bg="gray", bg="white", bty = "n", pt.cex=1.5, cex=1.2) epsilon_mult(A1, A3) # A1 epsilon-dominates A3 => e = 9/10 < 1 epsilon_mult(A1, A2) # A1 weakly dominates A2 => e = 1 epsilon_mult(A2, A1) # A2 is epsilon-dominated by A1 => e = 2 > 1 # A more realistic example extdata_path <- system.file(package="eaf","extdata") path.A1 <- file.path(extdata_path, "ALG_1_dat.xz") path.A2 <- file.path(extdata_path, "ALG_2_dat.xz") A1 <- read_datasets(path.A1)[,1:2] A2 <- read_datasets(path.A2)[,1:2] ref <- filter_dominated(rbind(A1, A2)) epsilon_additive(A1, ref) epsilon_additive(A2, ref) # Multiplicative version of epsilon metric ref <- filter_dominated(rbind(A1, A2)) epsilon_mult(A1, ref) epsilon_mult(A2, ref) } \references{ \insertRef{ZitThiLauFon2003:tec}{eaf} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/gcp2x2.Rd0000644000175000017500000000356514010304644013313 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{gcp2x2} \alias{gcp2x2} \title{Metaheuristics for solving the Graph Vertex Coloring Problem} \format{ A data frame with 3133 observations on the following 6 variables. \describe{ \item{\code{alg}}{a factor with levels \code{SAKempeFI} and \code{TSinN1}} \item{\code{inst}}{a factor with levels \code{DSJC500.5} and \code{DSJC500.9}. Instances are taken from the DIMACS repository.} \item{\code{run}}{a numeric vector indicating the run to which the observation belong. } \item{\code{best}}{a numeric vector indicating the best solution in number of colors found in the corresponding run up to that time.} \item{\code{time}}{a numeric vector indicating the time since the beginning of the run for each observation. A rescaling is applied.} \item{\code{titer}}{a numeric vector indicating iteration number corresponding to the observations.} } } \source{ \insertRef{ChiarandiniPhD}{eaf} (page 138) } \usage{ gcp2x2 } \description{ Two metaheuristic algorithms, TabuCol (Hertz et al., 1987) and simulated annealing \citep{JohAraMcGSch1991}, to find a good approximation of the chromatic number of two random graphs. The data here has the only goal of providing an example of use of eafplot for comparing algorithm performance with respect to both time and quality when modelled as two objectives in trade off. } \details{ Each algorithm was run 10 times per graph registering the time and iteration number at which a new best solution was found. A time limit corresponding to 500*10^5 total iterations of TabuCol was imposed. The time was then normalized on a scale from 0 to 1 to make it instance independent. } \examples{ data(gcp2x2) } \references{ A. Hertz and D. de Werra. Using Tabu Search Techniques for Graph Coloring. Computing, 1987, 39(4), 345-351. \insertAllCited{} } \keyword{datasets} eaf/man/pdf_crop.Rd0000644000175000017500000000167314154006014013777 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pdf_crop.R \name{pdf_crop} \alias{pdf_crop} \title{Remove whitespace margins from a PDF file} \usage{ pdf_crop(filename, mustWork = FALSE, pdfcrop = Sys.which("pdfcrop")) } \arguments{ \item{filename}{Filename of a PDF file to crop. The file will be overwritten.} \item{mustWork}{If \code{TRUE}, then give an error if the file cannot be cropped.} \item{pdfcrop}{Path to the \code{pdfcrop} utility.} } \value{ Nothing } \description{ Remove whitespace margins using \url{https://ctan.org/pkg/pdfcrop} } \examples{ \dontrun{ extdata_path <- system.file(package = "eaf", "extdata") A1 <- read_datasets(file.path(extdata_path, "wrots_l100w10_dat")) A2 <- read_datasets(file.path(extdata_path, "wrots_l10w100_dat")) pdf(file = "eaf.pdf", onefile = TRUE, width = 5, height = 4) eafplot(list(A1 = A1, A2 = A2), percentiles = 50, sci.notation=TRUE) dev.off() pdf_crop("eaf.pdf") } } eaf/man/choose_eafdiffplot.Rd0000644000175000017500000000742513771367251016050 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/interactive.R \name{choose_eafdiffplot} \alias{choose_eafdiffplot} \alias{choose_eafdiff} \title{Interactively choose according to empirical attainment function differences} \usage{ choose_eafdiffplot( data.left, data.right, intervals = 5, maximise = c(FALSE, FALSE), title.left = deparse(substitute(data.left)), title.right = deparse(substitute(data.right)), ... ) choose_eafdiff(x, left = stop("'left' must be either TRUE or FALSE")) } \arguments{ \item{data.left, data.right}{Data frames corresponding to the input data of left and right sides, respectively. Each data frame has at least three columns, the third one being the set of each point. See also \code{\link[=read_datasets]{read_datasets()}}.} \item{intervals}{(\code{integer(1)}|\code{character()}) \cr The absolute range of the differences \eqn{[0, 1]} is partitioned into the number of intervals provided. If an integer is provided, then labels for each interval are computed automatically. If a character vector is provided, its length is taken as the number of intervals.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{title.left, title.right}{Title for left and right panels, respectively.} \item{...}{Other graphical parameters are passed down to \code{\link[=eafdiffplot]{eafdiffplot()}}.} \item{x}{(\code{matrix()}) Matrix of rectangles representing EAF differences (returned by \code{\link[=eafdiff]{eafdiff()}} with \code{rectangles=TRUE}).} \item{left}{(\code{logical(1)}) With \code{left=TRUE} return the rectangles with positive differences, otherwise return those with negative differences but differences are converted to positive.} } \value{ \code{matrix} where the first 4 columns give the coordinates of two corners of each rectangle and the last column. In both cases, the last column gives the positive differences in favor of the chosen side. } \description{ The function \code{choose_eafdiffplot()} creates the same plot as \code{eafdiffplot()} but waits for the user to click in one of the sides. Then it returns the rectangles the give the differences in favour of the chosen side. These rectangles may be used for interactive decision-making as shown in \citet{DiaLop2020ejor}. The function \code{choose_eafdiff()} may be used in a non-interactive context. } \examples{ \donttest{ extdata_dir <- system.file(package="eaf", "extdata") A1 <- read_datasets(file.path(extdata_dir, "wrots_l100w10_dat")) A2 <- read_datasets(file.path(extdata_dir, "wrots_l10w100_dat")) if (interactive()) { rectangles <- choose_eafdiffplot(A1, A2, intervals = 5) } else { # Choose A1 rectangles <- eafdiff(A1, A2, intervals = 5, rectangles = TRUE) rectangles <- choose_eafdiff(rectangles, left = TRUE) } reference <- c(max(A1[, 1], A2[, 1]), max(A1[, 2], A2[, 2])) x <- split.data.frame(A1[,1:2], A1[,3]) hv_A1 <- sapply(split.data.frame(A1[, 1:2], A1[, 3]), hypervolume, reference=reference) hv_A2 <- sapply(split.data.frame(A2[, 1:2], A2[, 3]), hypervolume, reference=reference) boxplot(list(A1=hv_A1, A2=hv_A2), main = "Hypervolume") whv_A1 <- sapply(split.data.frame(A1[, 1:2], A1[, 3]), whv_rect, rectangles=rectangles, reference=reference) whv_A2 <- sapply(split.data.frame(A2[, 1:2], A2[, 3]), whv_rect, rectangles=rectangles, reference=reference) boxplot(list(A1=whv_A1, A2=whv_A2), main = "Weighted hypervolume") } } \references{ \insertAllCited{} } \seealso{ \code{\link[=read_datasets]{read_datasets()}}, \code{\link[=eafdiffplot]{eafdiffplot()}}, \code{\link[=whv_rect]{whv_rect()}} } \keyword{graphs} eaf/man/hypervolume.Rd0000644000175000017500000000271513645120067014571 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/hv.R \name{hypervolume} \alias{hypervolume} \title{Hypervolume metric} \usage{ hypervolume(data, reference, maximise = FALSE) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} } \value{ A single numerical value. } \description{ Computes the hypervolume metric with respect to a given reference point assuming minimization of all objectives. } \details{ The algorithm has \eqn{O(n^{d-2} \log n)} time and linear space complexity in the worst-case, but experimental results show that the pruning techniques used may reduce the time complexity even further. } \examples{ data(SPEA2minstoptimeRichmond) # The second objective must be maximized # We calculate the hypervolume of the union of all sets. hypervolume(SPEA2minstoptimeRichmond[, 1:2], reference = c(250, 0), maximise = c(FALSE, TRUE)) } \references{ \insertRef{FonPaqLop06:hypervolume}{eaf} \insertRef{BeuFonLopPaqVah09:tec}{eaf} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/whv_hype.Rd0000644000175000017500000000476213771367251014057 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/whv.R \name{whv_hype} \alias{whv_hype} \title{Approximation of the (weighted) hypervolume by Monte-Carlo sampling} \usage{ whv_hype( data, reference, ideal, maximise = FALSE, dist = list(type = "uniform"), nsamples = 100000L ) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{ideal}{(\code{numeric()}) \cr Ideal point as a vector of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{dist}{(\code{list()}) weight distribution. See Details.} \item{nsamples}{(\code{integer(1)}) number of samples for Monte-Carlo sampling.} } \value{ A single numerical value. } \description{ Return an estimation of the hypervolume of the space dominated by the input data following the procedure described by \citet{AugBadBroZit2009gecco}. A weight distribution describing user preferences may be specified. } \details{ A weight distribution \citep{AugBadBroZit2009gecco} can be provided via the \code{dist} argument. The ones currently supported are: \itemize{ \item \code{type="point"} describes a goal in the objective space, where \code{mu} gives the coordinates of the goal. The resulting weight distribution is a multivariate normal distribution centred at the goal. \item \code{type="exponential"} describes an exponential distribution with rate parameter \code{1/mu}, i.e., \eqn{\lambda = \frac{1}{\mu}}. } } \examples{ whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1) whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1) whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1, dist = list(type="exponential", mu=0.2)) whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1, dist = list(type="exponential", mu=0.2)) whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1, dist = list(type="point", mu=c(1,1))) whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1, dist = list(type="point", mu=c(1,1))) } \references{ \insertAllCited{} } \seealso{ \code{\link[=read_datasets]{read_datasets()}}, \code{\link[=eafdiff]{eafdiff()}}, \code{\link[=whv_rect]{whv_rect()}} } eaf/man/whv_rect.Rd0000644000175000017500000000507013771405744014040 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/whv.R \name{whv_rect} \alias{whv_rect} \alias{total_whv_rect} \title{Compute (total) weighted hypervolume given a set of rectangles} \usage{ whv_rect(data, rectangles, reference, maximise = FALSE) total_whv_rect( data, rectangles, reference, maximise = FALSE, ideal = NULL, scalefactor = 0.1 ) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{rectangles}{(\code{matrix()}) weighted rectangles that will bias the computation of the hypervolume. Maybe generated by \code{\link[=eafdiff]{eafdiff()}} with \code{rectangles=TRUE} or by \code{\link[=choose_eafdiff]{choose_eafdiff()}}.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{ideal}{(\code{numeric()}) \cr Ideal point as a vector of numerical values.} \item{scalefactor}{(\code{numeric(1)}) real value within \eqn{(0,1]} that scales the overall weight of the differences. This is parameter psi (\eqn{\psi}) in \citet{DiaLop2020ejor}.} } \value{ A single numerical value. } \description{ The function \code{whv_rect()} calculates the hypervolume weighted by a set of rectangles (with zero weight outside the rectangles). The function \code{total_whv_rect()} calculates the total weighted hypervolume as \code{hypervolume() + scalefactor * abs(prod(reference - ideal)) * whv_rect()}. The details of the computation are given by \citet{DiaLop2020ejor}. } \details{ TODO } \examples{ rectangles <- as.matrix(read.table(header=FALSE, text=' 1.0 3.0 2.0 Inf 1 2.0 3.5 2.5 Inf 2 2.0 3.0 3.0 3.5 3 ')) whv_rect (matrix(2, ncol=2), rectangles, reference = 6) whv_rect (matrix(c(2, 1), ncol=2), rectangles, reference = 6) whv_rect (matrix(c(1, 2), ncol=2), rectangles, reference = 6) total_whv_rect (matrix(2, ncol=2), rectangles, reference = 6, ideal = c(1,1)) total_whv_rect (matrix(c(2, 1), ncol=2), rectangles, reference = 6, ideal = c(1,1)) total_whv_rect (matrix(c(1, 2), ncol=2), rectangles, reference = 6, ideal = c(1,1)) } \references{ \insertAllCited{} } \seealso{ \code{\link[=read_datasets]{read_datasets()}}, \code{\link[=eafdiff]{eafdiff()}}, \code{\link[=choose_eafdiff]{choose_eafdiff()}}, \code{\link[=whv_hype]{whv_hype()}} } eaf/man/eafs.Rd0000644000175000017500000000371414153724701013130 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf.R \name{eafs} \alias{eafs} \title{Exact computation of the EAF} \usage{ eafs(points, sets, groups = NULL, percentiles = NULL) } \arguments{ \item{points}{Either a matrix or a data frame of numerical values, where each row gives the coordinates of a point.} \item{sets}{A vector indicating which set each point belongs to.} \item{groups}{Indicates that the EAF must be computed separately for data belonging to different groups.} \item{percentiles}{(\code{numeric()}) Vector indicating which percentiles are computed. \code{NULL} computes all.} } \value{ A data frame (\code{data.frame}) containing the exact representation of EAF. The last column gives the percentile that corresponds to each point. If groups is not \code{NULL}, then an additional column indicates to which group the point belongs. } \description{ This function computes the EAF given a set of points and a vector \code{set} that indicates to which set each point belongs. } \note{ There are several examples of data sets in \code{system.file(package="eaf","extdata")}. } \examples{ extdata_path <- system.file(package="eaf", "extdata") x <- read_datasets(file.path(extdata_path, "example1_dat")) # Compute full EAF str(eafs(x[,1:2], x[,3])) # Compute only best, median and worst str(eafs(x[,1:2], x[,3], percentiles = c(0, 50, 100))) x <- read_datasets(file.path(extdata_path, "spherical-250-10-3d.txt")) y <- read_datasets(file.path(extdata_path, "uniform-250-10-3d.txt")) x <- data.frame(x, groups = "spherical") x <- rbind(x, data.frame(y, groups = "uniform")) # Compute only median separately for each group z <- eafs(x[,1:3], sets = x[,4], groups = x[,5], percentiles = 50) str(z) # library(plotly) # plot_ly(z, x = ~X1, y = ~X2, z = ~X3, color = ~groups, # colors = c('#BF382A', '#0C4B8E')) \%>\% add_markers() } \seealso{ \code{\link[=read_datasets]{read_datasets()}} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/macros/0000755000175000017500000000000013645042056013203 5ustar nileshnilesheaf/man/macros/macros.Rd0000644000175000017500000000013413645042056014754 0ustar nileshnilesh\newcommand{\citep}{\insertCite{#1}{eaf}} \newcommand{\citet}{\insertCite{#1;textual}{eaf}} eaf/man/nondominated.Rd0000644000175000017500000000471613771367251014704 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nondominated.R \name{is_nondominated} \alias{is_nondominated} \alias{filter_dominated} \alias{pareto_rank} \title{Identify, remove and rank dominated points according to Pareto optimality} \usage{ is_nondominated(data, maximise = FALSE, keep_weakly = FALSE) filter_dominated(data, maximise = FALSE, keep_weakly = FALSE) pareto_rank(data, maximise = FALSE) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{keep_weakly}{If \code{FALSE}, return \code{FALSE} for any duplicates of nondominated points.} } \value{ \code{is_nondominated} returns a logical vector of the same length as the number of rows of \code{data}, where \code{TRUE} means that the point is not dominated by any other point. \code{filter_dominated} returns a matrix or data.frame with only mutually nondominated points. \code{pareto_rank()} returns an integer vector of the same length as the number of rows of \code{data}, where each value gives the rank of each point. } \description{ Identify nondominated points with \code{is_nondominated} and remove dominated ones with \code{filter_dominated}. \code{pareto_rank()} ranks points according to Pareto-optimality, which is also called nondominated sorting \citep{Deb02nsga2}. } \details{ \code{pareto_rank()} is meant to be used like \code{rank()}, but it assigns ranks according to Pareto dominance. Duplicated points are kept on the same front. When \code{ncol(data) == 2}, the code uses the \eqn{O(n \log n)} algorithm by \citet{Jen03}. } \examples{ path_A1 <- file.path(system.file(package="eaf"),"extdata","ALG_1_dat.xz") set <- read_datasets(path_A1)[,1:2] is_nondom <- is_nondominated(set) cat("There are ", sum(is_nondom), " nondominated points\n") plot(set, col = "blue", type = "p", pch = 20) ndset <- filter_dominated(set) points(ndset[order(ndset[,1]),], col = "red", pch = 21) ranks <- pareto_rank(set) colors <- colorRampPalette(c("red","yellow","springgreen","royalblue"))(max(ranks)) plot(set, col = colors[ranks], type = "p", pch = 20) } \references{ \insertAllCited{} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/eafplot.Rd0000644000175000017500000001537114157751431013652 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf.R \name{eafplot} \alias{eafplot} \alias{eafplot.default} \alias{eafplot.formula} \alias{eafplot.list} \title{Plot the Empirical Attainment Function for two objectives} \usage{ eafplot(x, ...) \method{eafplot}{default}( x, sets = NULL, groups = NULL, percentiles = c(0, 50, 100), attsurfs = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, log = "", type = "point", col = NULL, lty = c("dashed", "solid", "solid", "solid", "dashed"), lwd = 1.75, pch = NA, cex.pch = par("cex"), las = par("las"), legend.pos = "topright", legend.txt = NULL, extra.points = NULL, extra.legend = NULL, extra.pch = 4:25, extra.lwd = 0.5, extra.lty = NA, extra.col = "black", maximise = c(FALSE, FALSE), xaxis.side = "below", yaxis.side = "left", axes = TRUE, sci.notation = FALSE, ... ) \method{eafplot}{formula}(formula, data, groups = NULL, subset = NULL, ...) \method{eafplot}{list}(x, ...) } \arguments{ \item{x}{Either a matrix of data values, or a data frame, or a list of data frames of exactly three columns.} \item{...}{Other graphical parameters to \code{\link[=plot.default]{plot.default()}}.} \item{sets}{(\link{numeric})\cr Vector indicating which set each point belongs to.} \item{groups}{This may be used to plot profiles of different algorithms on the same plot.} \item{percentiles}{(\code{numeric()}) Vector indicating which percentile should be plot. The default is to plot only the median attainment curve.} \item{attsurfs}{TODO} \item{xlab, ylab, xlim, ylim, log, col, lty, lwd, pch, cex.pch, las}{Graphical parameters, see \code{\link[=plot.default]{plot.default()}}.} \item{type}{(\code{character(1)})\cr string giving the type of plot desired. The following values are possible, \samp{points} and \samp{area}.} \item{legend.pos}{the position of the legend, see \code{\link[=legend]{legend()}}. A value of \code{"none"} hides the legend.} \item{legend.txt}{a character or expression vector to appear in the legend. If \code{NULL}, appropriate labels will be generated.} \item{extra.points}{A list of matrices or data.frames with two-columns. Each element of the list defines a set of points, or lines if one of the columns is \code{NA}.} \item{extra.legend}{A character vector providing labels for the groups of points.} \item{extra.pch, extra.lwd, extra.lty, extra.col}{Control the graphical aspect of the points. See \code{\link[=points]{points()}} and \code{\link[=lines]{lines()}}.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{xaxis.side}{On which side that xaxis is drawn. Valid values are "below" and "above". See \code{\link[=axis]{axis()}}.} \item{yaxis.side}{On which side that yaxis is drawn. Valid values are "left" and "right". See \code{\link[=axis]{axis()}}.} \item{axes}{A logical value indicating whether both axes should be drawn on the plot.} \item{sci.notation}{Generate prettier labels} \item{formula}{A formula of the type: \code{time + cost ~ run | instance} will draw \code{time} on the x-axis and \code{cost} on the y-axis. If \code{instance} is present the plot is conditional to the instances.} \item{data}{Dataframe containing the fields mentioned in the formula and in groups.} \item{subset}{(\code{integer()} | \code{NULL})\cr A vector indicating which rows of the data should be used. If left to default \code{NULL} all data in the data frame are used.} } \value{ Return (invisibly) the attainment surfaces computed. } \description{ Computes and plots the Empirical Attainment Function, either as attainment surfaces for certain percentiles or as points. } \details{ This function can be used to plot random sets of points like those obtained by different runs of biobjective stochastic optimization algorithms. An EAF curve represents the boundary separating points that are known to be attainable (that is, dominated in Pareto sense) in at least a fraction (quantile) of the runs from those that are not. The median EAF represents the curve where the fraction of attainable points is 50%. In single objective optimization the function can be used to plot the profile of solution quality over time of a collection of runs of a stochastic optimizer. } \section{Methods (by class)}{ \itemize{ \item \code{default}: Main function \item \code{formula}: Formula interface \item \code{list}: List interface for lists of data.frames or matrices }} \examples{ data(gcp2x2) tabucol <- subset(gcp2x2, alg != "TSinN1") tabucol$alg <- tabucol$alg[drop=TRUE] eafplot(time + best ~ run, data = tabucol, subset = tabucol$inst=="DSJC500.5") \dontrun{# These take time eafplot(time + best ~ run | inst, groups=alg, data=gcp2x2) eafplot(time + best ~ run | inst, groups=alg, data=gcp2x2, percentiles=c(0,50,100), cex.axis = 0.8, lty = c(2,1,2), lwd = c(2,2,2), col = c("black","blue","grey50")) extdata_path <- system.file(package = "eaf", "extdata") A1 <- read_datasets(file.path(extdata_path, "ALG_1_dat.xz")) A2 <- read_datasets(file.path(extdata_path, "ALG_2_dat.xz")) eafplot(A1, percentiles = 50, sci.notation = TRUE, cex.axis=0.6) # The attainment surfaces are returned invisibly. attsurfs <- eafplot(list(A1 = A1, A2 = A2), percentiles = 50) str(attsurfs) ## Save as a PDF file. # dev.copy2pdf(file = "eaf.pdf", onefile = TRUE, width = 5, height = 4) } ## Using extra.points \dontrun{ data(HybridGA) data(SPEA2relativeVanzyl) eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400), extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA") data(SPEA2relativeRichmond) eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(90, 140), ylim = c(0, 25), extra.points = HybridGA$richmond, extra.lty = "dashed", extra.legend = "Hybrid GA") eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(90, 140), ylim = c(0, 25), type = "area", extra.points = HybridGA$richmond, extra.lty = "dashed", extra.legend = "Hybrid GA", legend.pos = "bottomright") data(SPEA2minstoptimeRichmond) SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60 eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]), ylab = "Minimum idle time (minutes)", maximise = c(FALSE, TRUE), las = 1, log = "y", main = "SPEA2 (Richmond)", legend.pos = "bottomright") } } \seealso{ \code{\link[=read_datasets]{read_datasets()}} \code{\link[=eafdiffplot]{eafdiffplot()}} } \keyword{graphs} eaf/man/attsurf2df.Rd0000644000175000017500000000175614153737022014302 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf.R \name{attsurf2df} \alias{attsurf2df} \title{Convert a list of attainment surfaces to a data.frame} \usage{ attsurf2df(x) } \arguments{ \item{x}{(\code{list()}) List of data.frames or matrices. The names of the list give the percentiles of the attainment surfaces. This is the format returned by \code{\link[=eafplot]{eafplot()}} (and the internal function \code{compute.eaf.as.list}).} } \value{ A data.frame with as many columns as objectives and an additional column \code{percentiles}. } \description{ Convert a list of attainment surfaces to a single data.frame. } \examples{ data(SPEA2relativeRichmond) attsurfs <- eafplot (SPEA2relativeRichmond, percentiles = c(0,50,100), xlab = expression(C[E]), ylab = "Total switches", lty=0, pch=21, xlim = c(90, 140), ylim = c(0, 25)) attsurfs <- attsurf2df(attsurfs) text(attsurfs[,1:2], labels = attsurfs[,3], adj = c(1.5,1.5)) } eaf/man/igd.Rd0000644000175000017500000001344114011174177012752 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/igd.R \name{igd} \alias{igd} \alias{IGDX} \alias{igd_plus} \alias{avg_hausdorff_dist} \title{Inverted Generational Distance (IGD and IGD+) and Averaged Hausdorff Distance} \usage{ igd(data, reference, maximise = FALSE) igd_plus(data, reference, maximise = FALSE) avg_hausdorff_dist(data, reference, maximise = FALSE, p = 1L) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{reference}{(\code{matrix} | \code{data.frame}) \cr Reference set as a matrix or data.frame of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{p}{(\code{integer(1)}) Hausdorff distance parameter (default: \code{1L}).} } \value{ (\code{numeric(1)}) A single numerical value. } \description{ Functions to compute the inverted generational distance (IGD and IGD+) and the averaged Hausdorff distance between nondominated sets of points. } \details{ The generational distance (GD) of a set \eqn{A} is defined as the distance between each point \eqn{a \in A} and the closest point \eqn{r} in a reference set \eqn{R}, averaged over the size of \eqn{A}. Formally, \deqn{GD_p(A,R) = \left(\frac{1}{|A|}\sum_{a\in A}\min_{r\in R} d(a,r)^p\right)^{\frac{1}{p}} }{GD(A,R) = (1/|A|) * ( sum_{a in A} min_{r in R} d(a,r)^p )^(1/p)} where the distance in our implementation is the Euclidean distance: \deqn{d(a,r) = \sqrt{\sum_{k=1}^M (a_k - r_k)^2} }{d(a,r) = sqrt( sum_{k=1}^M (a_k - r_k)^2)} The inverted generational distance (IGD) is calculated as \eqn{IGD_p(A,R) = GD_p(R,A)}. The modified inverted generational distanced (IGD+) was proposed by \citet{IshMasTanNoj2015igd} to ensure that IGD+ is weakly Pareto compliant, similarly to \code{\link[=epsilon_additive]{epsilon_additive()}} or \code{\link[=epsilon_mult]{epsilon_mult()}}. It modifies the distance measure as: \deqn{d^+(r,a) = \sqrt{\sum_{k=1}^M (\max\{r_k - a_k, 0\})^2}}{d^+(r,a) = sqrt(sum_{k=1}^M (max {r_k - a_k, 0 })^2)} The average Hausdorff distance (\eqn{\Delta_p}) was proposed by \citet{SchEsqLarCoe2012tec} and it is calculated as: \deqn{\Delta_p(A,R) = \max\{ IGD_p(A,R), IGD_p(R,A) \}} IGDX \citep{ZhoZhaJin2009igdx} is the application of IGD to decision vectors instead of objective vectors to measure closeness and diversity in decision space. One can use the functions \code{igd()} or \code{igd_plus()} (recommended) directly, just passing the decision vectors as \code{data}. There are different formulations of the GD and IGD metrics in the literature that differ on the value of \eqn{p}, on the distance metric used and on whether the term \eqn{|A|^{-1}} is inside (as above) or outside the exponent \eqn{1/p}. GD was first proposed by \citet{VelLam1998gp} with \eqn{p=2} and the term \eqn{|A|^{-1}} outside the exponent. IGD seems to have been mentioned first by \citet{CoeSie2004igd}, however, some people also used the name D-metric for the same concept with \eqn{p=1} and later papers have often used IGD/GD with \eqn{p=1}. \citet{SchEsqLarCoe2012tec} proposed to place the term \eqn{|A|^{-1}} inside the exponent, as in the formulation shown above. This has a significant effect for GD and less so for IGD given a constant reference set. IGD+ also follows this formulation. We refer to \citet{IshMasTanNoj2015igd} and \citet{BezLopStu2017emo} for a more detailed historical perspective and a comparison of the various variants. Following \citet{IshMasTanNoj2015igd}, we always use \eqn{p=1} in our implementation of IGD and IGD+ because (1) it is the setting most used in recent works; (2) it makes irrelevant whether the term \eqn{|A|^{-1}} is inside or outside the exponent \eqn{1/p}; and (3) the meaning of IGD becomes the average Euclidean distance from each reference point to its nearest objective vector). It is also slightly faster to compute. GD should never be used directly to compare the quality of approximations to a Pareto front, as it often contradicts Pareto optimality. We recommend IGD+ instead of IGD, since the latter contradicts Pareto optimality in some cases (see examples below), but we implement IGD here because it is still popular due to historical reasons. We are not aware of any proof of whether \eqn{\Delta_p(A,R)} contradicts or not Pareto optimality, thus it must be used with care. } \examples{ # Example 4 from Ishibuchi et al. (2015) ref <- matrix(c(10,0,6,1,2,2,1,6,0,10), ncol=2, byrow=TRUE) A <- matrix(c(4,2,3,3,2,4), ncol=2, byrow=TRUE) B <- matrix(c(8,2,4,4,2,8), ncol=2, byrow=TRUE) plot(ref, xlab=expression(f[1]), ylab=expression(f[2]), panel.first=grid(nx=NULL), pch=23, bg="gray", cex=1.5) points(A, pch=1, cex=1.5) points(B, pch=19, cex=1.5) legend("topright", legend=c("Reference", "A", "B"), pch=c(23,1,19), pt.bg="gray", bg="white", bty = "n", pt.cex=1.5, cex=1.2) cat("A is better than B in terms of Pareto optimality,\n however, IGD(A)=", igd(A, ref), "> IGD(B)=", igd(B, ref), ", which contradicts it.\nBy contrast, IGD+(A)=", igd_plus(A, ref), "< IGD+(B)=", igd_plus(B, ref), ", which is correct.\n") # A less trivial example. extdata_path <- system.file(package="eaf","extdata") path.A1 <- file.path(extdata_path, "ALG_1_dat.xz") path.A2 <- file.path(extdata_path, "ALG_2_dat.xz") A1 <- read_datasets(path.A1)[,1:2] A2 <- read_datasets(path.A2)[,1:2] ref <- filter_dominated(rbind(A1, A2)) igd(A1, ref) igd(A2, ref) # IGD+ (Pareto compliant) igd_plus(A1, ref) igd_plus(A2, ref) # Average Haussdorff distance avg_hausdorff_dist(A1, ref) avg_hausdorff_dist(A2, ref) } \references{ \insertAllCited{} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/normalise.Rd0000644000175000017500000000271513771367251014213 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/normalise.R \name{normalise} \alias{normalise} \title{Normalise points} \usage{ normalise(data, to.range = c(1, 2), lower = NA, upper = NA, maximise = FALSE) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{to.range}{Normalise values to this range. If the objective is maximised, it is normalised to \code{c(to.range[1], to.range[0])} instead.} \item{lower, upper}{Bounds on the values. If NA, the maximum and minimum values of each coordinate are used.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} } \value{ A numerical matrix } \description{ Normalise points per coordinate to a range, e.g., \code{c(1,2)}, where the minimum value will correspond to 1 and the maximum to 2. If bounds are given, they are used for the normalisation. } \examples{ data(SPEA2minstoptimeRichmond) # The second objective must be maximized head(SPEA2minstoptimeRichmond[, 1:2]) head(normalise(SPEA2minstoptimeRichmond[, 1:2], maximise = c(FALSE, TRUE))) head(normalise(SPEA2minstoptimeRichmond[, 1:2], to.range = c(0,1), maximise = c(FALSE, TRUE))) } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/write_datasets.Rd0000644000175000017500000000135414153743307015235 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/read_datasets.R \name{write_datasets} \alias{write_datasets} \title{Write data sets} \usage{ write_datasets(x, file = "") } \arguments{ \item{x}{The data set to write. The last column must be the set number.} \item{file}{either a character string naming a file or a connection open for writing. ‘""’ indicates output to the console.} } \description{ Write data sets to a file in the same format as \code{\link[=read_datasets]{read_datasets()}}. } \examples{ x <- read_datasets(text="1 2\n3 4\n\n5 6\n7 8\n", col_names=c("obj1", "obj2")) write_datasets(x) } \seealso{ \code{\link[utils]{write.table}}, \code{\link[=read_datasets]{read_datasets()}} } \keyword{file} eaf/man/SPEA2minstoptimeRichmond.Rd0000644000175000017500000000171514010304644016770 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{SPEA2minstoptimeRichmond} \alias{SPEA2minstoptimeRichmond} \title{Results of SPEA2 when minimising electrical cost and maximising the minimum idle time of pumps on Richmond water network.} \format{ A data frame as produced by \code{\link[=read_datasets]{read_datasets()}}. The second column measures time in seconds and corresponds to a maximisation problem. } \source{ \insertRef{LopezIbanezPhD}{eaf} } \usage{ SPEA2minstoptimeRichmond } \description{ The data has the only goal of providing an example of use of eafplot. } \examples{ data(HybridGA) data(SPEA2minstoptimeRichmond) SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60 eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]), ylab = "Minimum idle time (minutes)", maximise = c(FALSE, TRUE), las = 1, log = "y", legend.pos = "bottomright") } \keyword{datasets} eaf/man/Vorob.Rd0000644000175000017500000000667314010304644013300 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/vorob.R \name{vorobT} \alias{vorobT} \alias{vorobDev} \alias{symDifPlot} \title{Vorob'ev computations} \usage{ vorobT(x, reference) vorobDev(x, VE, reference) symDifPlot( x, VE, threshold, nlevels = 11, ve.col = "blue", xlim = NULL, ylim = NULL, legend.pos = "topright", main = "Symmetric deviation function", col.fun = function(n) gray(seq(0, 0.9, length.out = n)^2) ) } \arguments{ \item{x}{Either a matrix of data values, or a data frame, or a list of data frames of exactly three columns. The third column gives the set (run, sample, ...) identifier.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{VE, threshold}{Vorob'ev expectation and threshold, e.g., as returned by \code{\link[=vorobT]{vorobT()}}.} \item{nlevels}{number of levels in which is divided the range of the symmetric deviation.} \item{ve.col}{plotting parameters for the Vorob'ev expectation.} \item{xlim, ylim, main}{Graphical parameters, see \code{\link[graphics:plot.default]{plot.default()}}.} \item{legend.pos}{the position of the legend, see \code{\link[graphics:legend]{legend()}}. A value of \code{"none"} hides the legend.} \item{col.fun}{function that creates a vector of \code{n} colors, see \code{\link[grDevices:palettes]{heat.colors()}}.} } \value{ \code{vorobT} returns a list with elements \code{threshold}, \code{VE}, and \code{avg_hyp} (average hypervolume) \code{vorobDev} returns the Vorob'ev deviation. } \description{ Compute Vorob'ev threshold, expectation and deviation. Also, displaying the symmetric deviation function is possible. The symmetric deviation function is the probability for a given target in the objective space to belong to the symmetric difference between the Vorob'ev expectation and a realization of the (random) attained set. } \examples{ data(CPFs) res <- vorobT(CPFs, reference = c(2, 200)) print(res$threshold) ## Display Vorob'ev expectation and attainment function # First style eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 25, 50, 75, 100, res$threshold), main = substitute(paste("Empirical attainment function, ",beta,"* = ", a, "\%"), list(a = formatC(res$threshold, digits = 2, format = "f")))) # Second style eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 20, 40, 60, 80, 100), col = gray(seq(0.8, 0.1, length.out = 6)^0.5), type = "area", legend.pos = "bottomleft", extra.points = res$VE, extra.col = "cyan", extra.legend = "VE", extra.lty = "solid", extra.pch = NA, extra.lwd = 2, main = substitute(paste("Empirical attainment function, ",beta,"* = ", a, "\%"), list(a = formatC(res$threshold, digits = 2, format = "f")))) # Now print Vorob'ev deviation VD <- vorobDev(CPFs, res$VE, reference = c(2, 200)) print(VD) # Now display the symmetric deviation function. symDifPlot(CPFs, res$VE, res$threshold, nlevels = 11) # Levels are adjusted automatically if too large. symDifPlot(CPFs, res$VE, res$threshold, nlevels = 200, legend.pos = "none") # Use a different palette. symDifPlot(CPFs, res$VE, res$threshold, nlevels = 11, col.fun = heat.colors) } \references{ \insertRef{BinGinRou2015gaupar}{eaf} C. Chevalier (2013), Fast uncertainty reduction strategies relying on Gaussian process models, University of Bern, PhD thesis. I. Molchanov (2005), Theory of random sets, Springer. } \author{ Mickael Binois } eaf/man/largest_eafdiff.Rd0000644000175000017500000000307013771367251015322 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/interactive.R \name{largest_eafdiff} \alias{largest_eafdiff} \title{Identify largest EAF differences} \usage{ largest_eafdiff(data, maximise = FALSE, intervals = 5, reference, ideal = NULL) } \arguments{ \item{data}{(\code{list(1)}) A list of matrices with at least 3 columns} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{intervals}{(\code{integer(1)}) \cr The absolute range of the differences \eqn{[0, 1]} is partitioned into the number of intervals provided.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{ideal}{(\code{numeric()}) \cr Ideal point as a vector of numerical values.} } \value{ (\code{list()}) A list with two components \code{best_pair} and \code{best_value}. } \description{ Given a list of datasets, return the indexes of the pair with the largest EAF differences according to the method proposed by \citet{DiaLop2020ejor}. } \examples{ # FIXME: This example is too large, we need a smaller one. files <- c("wrots_l100w10_dat","wrots_l10w100_dat") data <- lapply(files, function(x) read_datasets(file.path(system.file(package="eaf"), "extdata", x))) nadir <- apply(do.call(rbind, data)[,1:2], 2, max) x <- largest_eafdiff(data, reference = nadir) str(x) } \references{ \insertAllCited{} } eaf/man/read_datasets.Rd0000644000175000017500000000446514154006207015014 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/read_datasets.R \name{read_datasets} \alias{read_datasets} \alias{read.data.sets} \title{Read several data sets} \usage{ read_datasets(file, col_names, text) read.data.sets(file, col.names) } \arguments{ \item{file}{(\code{character()}) \cr Filename that contains the data. Each row of the table appears as one line of the file. If it does not contain an \emph{absolute} path, the file name is \emph{relative} to the current working directory, \code{\link[base]{getwd}()}. Tilde-expansion is performed where supported. Files compressed with \code{xz} are supported.} \item{col_names, col.names}{Vector of optional names for the variables. The default is to use \samp{"V"} followed by the column number.} \item{text}{(\code{character()}) \cr If \code{file} is not supplied and this is, then data are read from the value of \code{text} via a text connection. Notice that a literal string can be used to include (small) data sets within R code.} } \value{ (\code{matrix()}) containing a representation of the data in the file. An extra column \code{set} is added to indicate to which set each row belongs. } \description{ Reads a text file in table format and creates a matrix from it. The file may contain several sets, separated by empty lines. Lines starting by \code{'#'} are considered comments and treated as empty lines. The function adds an additional column \code{set} to indicate to which set each row belongs. } \note{ There are several examples of data sets in \code{system.file(package="eaf","extdata")}. \code{read.data.sets()} is a deprecated alias. It will be removed in the next major release. } \section{Warning}{ A known limitation is that the input file must use newline characters native to the host system, otherwise they will be, possibly silently, misinterpreted. In GNU/Linux the program \code{dos2unix} may be used to fix newline characters. } \examples{ extdata_path <- system.file(package="eaf","extdata") A1 <- read_datasets(file.path(extdata_path,"ALG_1_dat.xz")) str(A1) read_datasets(text="1 2\n3 4\n\n5 6\n7 8\n", col_names=c("obj1", "obj2")) } \seealso{ \code{\link[utils]{read.table}}, \code{\link[=eafplot]{eafplot()}}, \code{\link[=eafdiffplot]{eafdiffplot()}} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } \keyword{file} eaf/man/hv_contributions.Rd0000644000175000017500000000370213645120067015606 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/hv.R \name{hv_contributions} \alias{hv_contributions} \title{Hypervolume contribution of a set of points} \usage{ hv_contributions(data, reference, maximise = FALSE) } \arguments{ \item{data}{(\code{matrix} | \code{data.frame}) \cr Matrix or data frame of numerical values, where each row gives the coordinates of a point.} \item{reference}{(\code{numeric()}) \cr Reference point as a vector of numerical values.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} } \value{ ([numeric]) A numerical vector } \description{ Computes the hypervolume contribution of each point given a set of points with respect to a given reference point assuming minimization of all objectives. Dominated points have zero contribution. Duplicated points have zero contribution even if not dominated, because removing one of them does not change the hypervolume dominated by the remaining set. } \examples{ data(SPEA2minstoptimeRichmond) # The second objective must be maximized # We calculate the hypervolume contribution of each point of the union of all sets. hv_contributions(SPEA2minstoptimeRichmond[, 1:2], reference = c(250, 0), maximise = c(FALSE, TRUE)) # Duplicated points show zero contribution above, even if not # dominated. However, filter_dominated removes all duplicates except # one. Hence, there are more points below with nonzero contribution. hv_contributions(filter_dominated(SPEA2minstoptimeRichmond[, 1:2], maximise = c(FALSE, TRUE)), reference = c(250, 0), maximise = c(FALSE, TRUE)) } \references{ \insertRef{FonPaqLop06:hypervolume}{eaf} \insertRef{BeuFonLopPaqVah09:tec}{eaf} } \seealso{ \code{\link{hypervolume}} } \author{ Manuel \enc{López-Ibáñez}{Lopez-Ibanez} } eaf/man/eafdiff.Rd0000644000175000017500000000373113771367251013605 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf.R \name{eafdiff} \alias{eafdiff} \title{Compute empirical attainment function differences} \usage{ eafdiff(x, y, intervals = NULL, maximise = c(FALSE, FALSE), rectangles = FALSE) } \arguments{ \item{x, y}{Data frames corresponding to the input data of left and right sides, respectively. Each data frame has at least three columns, the third one being the set of each point. See also \code{\link[=read_datasets]{read_datasets()}}.} \item{intervals}{(\code{integer(1)}) \cr The absolute range of the differences \eqn{[0, 1]} is partitioned into the number of intervals provided.} \item{maximise}{(\code{logical()} | \code{logical(1)}) \cr Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.} \item{rectangles}{If TRUE, the output is in the form of rectangles of the same color.} } \value{ With \code{rectangle=FALSE}, a \code{data.frame} containing points where there is a transition in the value of the EAF differences. With \code{rectangle=TRUE}, a \code{matrix} where the first 4 columns give the coordinates of two corners of each rectangle and the last column. In both cases, the last column gives the difference in terms of sets in \code{x} minus sets in \code{y} that attain each point (i.e., negative values are differences in favour \code{y}). } \description{ Calculate the differences between the empirical attainment functions of two data sets. } \details{ This function calculates the differences between the EAFs of two data sets. } \examples{ A1 <- read_datasets(text=' 3 2 2 3 2.5 1 1 2 1 2 ') A2 <- read_datasets(text=' 4 2.5 3 3 2.5 3.5 3 3 2.5 3.5 2 1 ') d <- eafdiff(A1, A2) str(d) print(d) d <- eafdiff(A1, A2, rectangles = TRUE) str(d) print(d) } \seealso{ \code{\link[=read_datasets]{read_datasets()}}, \code{\link[=eafdiffplot]{eafdiffplot()}} } eaf/man/SPEA2relativeRichmond.Rd0000644000175000017500000000151214010304644016226 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{SPEA2relativeRichmond} \alias{SPEA2relativeRichmond} \title{Results of SPEA2 with relative time-controlled triggers on Richmond water network.} \format{ A data frame as produced by \code{\link[=read_datasets]{read_datasets()}}. } \source{ \insertRef{LopezIbanezPhD}{eaf} } \usage{ SPEA2relativeRichmond } \description{ The data has the only goal of providing an example of use of eafplot. } \examples{ data(HybridGA) data(SPEA2relativeRichmond) eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(90, 140), ylim = c(0, 25), extra.points = HybridGA$richmond, extra.lty = "dashed", extra.legend = "Hybrid GA") } \keyword{datasets} eaf/man/eaf-package.Rd0000644000175000017500000000653114160032547014334 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{package} \name{eaf-package} \alias{eaf-package} \alias{_PACKAGE} \alias{eaf} \title{Computation and visualization of the empirical attainment function (EAF) for the analysis of random sets in multi-criterion optimization.} \description{ The empirical attainment function (EAF) describes the probabilistic distribution of the outcomes obtained by a stochastic algorithm in the objective space. This package implements plots of summary attainment surfaces and differences between the first-order EAFs. These plots may be used for exploring the performance of stochastic local search algorithms for biobjective optimization problems and help in identifying certain algorithmic behaviors in a graphical way. } \section{Functions}{ \tabular{rl}{ \code{\link[=eafdiffplot]{eafdiffplot()}} \tab Empirical attainment function differences\cr \code{\link[=eafplot]{eafplot()}} \tab Plot the Empirical Attainment Function for two objectives\cr \code{\link[=read_datasets]{read_datasets()}} \tab Read several data.frame sets } } \section{Data}{ \describe{ \item{\code{\link{gcp2x2}}}{ Metaheuristics for solving the Graph Vertex Coloring Problem} \item{\code{\link{HybridGA}}}{ Results of Hybrid GA on vanzyl and Richmond water networks} \item{\code{\link{SPEA2minstoptimeRichmond}}}{ Results of SPEA2 when minimising electrical cost and maximising the minimum idle time of pumps on Richmond water network} } Extras are available at \code{system.file(package="eaf")}: \tabular{rl}{ \code{extdata} \tab External data sets (see \code{\link{read_datasets}}) \cr \code{scripts/eaf} \tab EAF command-line program \cr \code{scripts/eafplot}\tab Perl script to generate plots of attainment surfaces\cr \code{scripts/eafdiff}\tab Perl script to generate plots of EAF differences } } \examples{ data(gcp2x2) tabucol<-subset(gcp2x2, alg!="TSinN1") tabucol$alg<-tabucol$alg[drop=TRUE] eafplot(time+best~run,data=tabucol,subset=tabucol$inst=="DSJC500.5") eafplot(time+best~run|inst,groups=alg,data=gcp2x2) eafplot(time+best~run|inst,groups=alg,data=gcp2x2, percentiles = c(0,50,100), cex = 1.4, lty = c(2,1,2),lwd = c(2,2,2), col = c("black","blue","grey50")) extdata_path <- system.file(package="eaf","extdata") A1 <- read_datasets(file.path(extdata_path, "wrots_l100w10_dat")) A2 <- read_datasets(file.path(extdata_path, "wrots_l10w100_dat")) eafplot(A1, percentiles=c(50)) eafplot(list(A1=A1, A2=A2), percentiles=c(50)) eafdiffplot(A1, A2) ## Save to a PDF file # dev.copy2pdf(file="eaf.pdf", onefile=TRUE, width=5, height=4) } \references{ \insertRef{Grunert01}{eaf} \insertRef{GruFon2009:emaa}{eaf} \insertRef{LopPaqStu09emaa}{eaf} } \seealso{ Useful links: \itemize{ \item \url{https://mlopez-ibanez.github.io/eaf/} \item \url{https://github.com/MLopez-Ibanez/eaf} \item Report bugs at \url{https://github.com/MLopez-Ibanez/eaf/issues} } } \author{ Maintainer: Manuel \enc{López-Ibáñez}{Lopez-Ibanez} \email{manuel.lopez-ibanez@manchester.ac.uk} Contributors: Carlos Fonseca, Luis Paquete, Thomas \enc{Stützle}{Stuetzle}, Manuel \enc{López-Ibáñez}{Lopez-Ibanez}, Marco Chiarandini and \enc{Mickaël}{Mickael} Binois. } \concept{empirical attainment function} \concept{multivariate} \concept{optimize} \concept{time-quality algorithm profile} \keyword{graphs} \keyword{package} eaf/man/HybridGA.Rd0000644000175000017500000000140514010304644013626 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{HybridGA} \alias{HybridGA} \title{Results of Hybrid GA on vanzyl and Richmond water networks} \format{ A list with two data frames, each of them with three columns, as produced by \code{\link[=read_datasets]{read_datasets()}}. \describe{ \item{\verb{$vanzyl}}{data frame of results on vanzyl network} \item{\verb{$richmond}}{data frame of results on Richmond network. The second column is filled with \code{NA}} } } \source{ \insertRef{LopezIbanezPhD}{eaf}. } \usage{ HybridGA } \description{ The data has the only goal of providing an example of use of eafplot. } \examples{ data(HybridGA) print(HybridGA$vanzyl) print(HybridGA$richmond) } \keyword{datasets} eaf/man/CPFs.Rd0000644000175000017500000000230114010304644012764 0ustar nileshnilesh% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eaf-package.R \docType{data} \name{CPFs} \alias{CPFs} \title{Conditional Pareto fronts obtained from Gaussian processes simulations.} \format{ A data frame with 2967 observations on the following 3 variables. \describe{ \item{\code{f1}}{first objective values.} \item{\code{f2}}{second objective values.} \item{\code{set}}{indices of corresponding conditional Pareto fronts.} } } \source{ \insertRef{BinGinRou2015gaupar}{eaf} } \usage{ CPFs } \description{ The data has the only goal of providing an example of use of \code{\link[=vorobT]{vorobT()}} and \code{\link[=vorobDev]{vorobDev()}}. It has been obtained by fitting two Gaussian processes on 20 observations of a bi-objective problem, before generating conditional simulation of both GPs at different locations and extracting non-dominated values of coupled simulations. } \examples{ data(CPFs) res <- vorobT(CPFs, reference = c(2, 200)) eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 20, 40, 60, 80, 100), col = gray(seq(0.8, 0.1, length.out = 6)^2), type = "area", legend.pos = "bottomleft", extra.points = res$VE, extra.col = "cyan") } \keyword{datasets} eaf/man/figures/0000755000175000017500000000000014160032557013361 5ustar nileshnilesheaf/man/figures/ALG_1_dat-ALG_2_dat.png0000644000175000017500000007354414160346535017235 0ustar nileshnileshPNG  IHDRW IDATxg@Ggrt8zD@ ``;[KƞXQ Xi98a ?v$?ue>ުn( '"8h4NyꟇة?$$׹gETY`7^2pw88λ+],&ّX קloܹϬL Šw264sF!9NKB--gb>8~ݺ{+z-Ĭ J7|azMƐ/J lN#[A /v_r*ǤFͿX;tcū3M۝%9EOLu_Ziy3|_Ƭ8ZާWGn^|4ymO1`Dat+I<5  ~qpoo*jYC͐$D%2;六v4Q?R}9#h@28`YwkϯEqGMr饽4!:IlхaB o,=TW֚XQmIu" Ҏڛ3Jka`XK?5Ƭ!l= layY%g9v+]fpݾ;,aCyr qZA % tC 2Lo*K+Dz0D0ݐfC)| XK88.} ^/wa:O;[}@}wlX D"T=پI]-bֿv!IgNWaJ| r垗ZgС4bճeL؝-a _:@UcHSf6"m;lh4ŝk&t򐞷kҚ01{^,Ll!x#7zo \jեWT;h'W1=MDPDy2P?3C7y P~IсvMt% L7u??mm3Ύ,yIPp 2.Xq)~+"r‘Q;iD&[8͊*‚ʔM a]}BTEYìXpc\άNT EOw[ :MP6f%'t,>i6,jxydӊdN{0/aD Qu'okEr8w^- ,>Y-E܂kZ;uig!ed.Ngz9= V&f#V]}߼BTxeװ%gsR>ss̻\[Q\s%S,v qppp)i:y0Ui:7~e[p}üu5Ft}m-N&mc)(mZAf_}o=<<ɷ?{eac Lkxɓl/\pmlKOOfnݺBlgnl 8q"6C5mMXfq^{'{Yw2mp8lY,fd2U c1 KWUU{ʰi-mZ:s4ejd9l \DӦ~%C'{l]5\ }KR^y]HBmqppp6c-ق&Zsbʿ"RTI `8888Ck6G_W+IȪ){v+h3,Y*`Id2$R}-d2aё\РI$J8N^^Lia&` $Ir ܤ@ H$˒\ۢBH mG&!PgG"<Jb(ojn?Qfd$%e԰DMs/ L3 KԞK.֭:D"d&٢UU\YǏ\9cƌI,  !@sx<͖|go޼9000$$I[#U/N $4O}}e[mmOUUNG&Z*++1*E{я M&t@X]Ch23gnܸ:zheee&&&H -EEE666Ǐ?v a[ Rkkk \.-d٘D"+++T hh``sm 0aUxH&~ _M&$ iݼ|ڵkht: 6 055fV߀L&#Zh4'PX]],={-ǫV.nhhfd2Y,6[r  TVVbLfmO>>G(DP@{/^#SDrrr &e|BD"5E(_@-I +^N {A___R055zWBݻɂ8JTޱftD[\.H$T*$R+FINB/^z'!R&*d2 &[bUVVaUTT`0Tb+FPCEGw g=!&o޼A^x<^^^y9oqzFjre;rW/<] ˅a?}T:3`ee8xCE q)\vѡ ^'P P5(|.<;aoOJ1j틑 q[-PH*ZARr,1FF=, xl񉟿YAy{{qہ*J 3hjaTYVU<||vY^ʃeGaɂD2cTxCu#!chyM6|yM35Fbo 9'd!77Wq*8Hd2H|V|\ܕYUۀ.C Ѫ嶷0:t1T&y-;[??ǐ_ ða0Ƚi򵌇8TܨS Tmdg?  CvG$chA6 JZ䰢 EɆ8Tozt0̙3{)OΝeW~ yѾٳHv3dMwm|4|nMN6?@ŗVGD&>T*Xv$!h/hQ5Ex mHk?up}֙M]@d]Cfoܱz Ad&D"QJl6ƍCV:88H#Zܮܨɇ훬dG577W]T(~ .;q+SEKr筝WO:L%#3L6KƔTǎ;T< '7jffUlqQi'!chIc+.{xxo7~!bC 곶Аi&(顒 qt?;z_BgG}J~G MhH>owZ=!T!###<ġ:"~ -yiwR|`fj?gL +Onqu>UՠWTvvvAWWW6 0b+y EG8T qLV>̜:b'G}4eZ.<|O<Ѷts1T&Ѝ _ 8K 25*ʫmbooA CNVР(U64??_J~YhWZr슐055-((PPvhn?Ah:/sH(HaKGHVgkk뫪T磬LR1RlCKKK$ógdڵJeל<3ɮYοj9txą:tɟ*XZ>F@6UY$Չ&OmkXsmMUERnGleFU|BpQi QchNBK>w/}Zwppo#"NFW#5qJ,  diJ@dhhl2@ee2ˍWVVJ!%%%.h4}-3LV:c+Tϟ?z gΜ5g0zAGw4߶$kO!۬#{=ph-ݓui}7iHY"sÍ']3Ȩ褹^ٷ/wԮI_ zUr2]x͒%K~g}-|}}}5HIs]]z6bY \.y8QY! ,9L Cՙb8 bIcc .4SWZݻw <o֬Y{%UC9((H^RR"qM65YBY31v֭W^g"J8~nCFMd|+h%OG 3u;XCHfXQBs3Thꥉ% |:i>oѷ}md?}tjj#G_$WM>}sV@itxӧ]$ eqqq5>|=ܮ!SVV잲t*TV 8|O( )]Gw& 'O~z,3gT$xG`~/gճ0[Q"꯿4hz$.--MrOMMMZkqZKH_k2}?e8PHyyVW]] x ^-d2Yj,ݾ}T9 .7:>C-u(:2ɝOt YxaL r_hhhbbbeeرcg͚b,,,Ml6H6H$zDOJFLf(8ֽ| @TWYVnՇSU,Y9v؄dTرc|r݆8apCGmSԅ/rȵ~S# JlRR޼yK&O\ZZ =+6&RyJXXXcQ+QhqZ;rbᅣAж#hq.1ՊD֧o1T>͝;w„ >|XhѣG3??K.MMB mUn{ ScjY& ](@7o*YƲZCC|kkk嶸tG8Lu5N~Zd4t\:a IDATg|WOHH@#@h#Ēd}K! k괙MCPj0f _pK.]~=P ks^nɓM/tG8LzQ]1OϘ-<鋘&,@_-d;B*F!7.^ h56 &ai =ǏvW͛7 &rQmhh(@?4CmhjY&Gf뛧jd5>#ٳ m&k! //OH$aZ6$-RѧOL8VZGP(?^__ժUJ"7~P"…gqNq4DWW_Anb%vLjUBf2Ƽ8&&&"92bgq |X*Zq{J[ⷉmtt4$Y[[gee9;;+6=T cerc߆8DʼnɔQ.THꄇu\.v*ޟeBJְ>b{ L6gaiYYYݻwOQbM4IQ:mYx T }7*:3f_~ر000XtPJJJ>}"G*tR___䧣#$w!T !/2Qyib/6κ]`_#7kq7V _;Sgձ?&:Q(7%P DnT)Sܻwoԩ[eFPsDĹsJr.FDP"րn0xN!+_Pʺ ww#9R݃mBEÇ̙cّ!Lj*kqC-}ŗǥ*Zr /++SϢEmU{)C<цt(}_= ]tQdCmA׭[ 9Ѳ;p8=D&RM=ā U8n]]Ls7%hqHKydb%$$Çъ100P4GyY8::JmCCj;Lg0D6dQ+/7pmIy<ͦh, % 6mb0ӧOOJJ DnQ(#FH'H$r/^066WTVUU5zzz5YC zzz*삩)BşEwė2ac^~;gMNTE,2B_.Xz/ڛ/55X,*1y{1{5cj{qvD*Pb`g_Tf0dw=zwީSLLL|}}vکSHmp8&&&ME$ kǃF) TVBee%^A[( B 浵CKKK1 0ё._,xh!C`sVPa|- _>yM35n"55 _Ŷe}}} 0 # H@XhQNNׯc߿\2uW7^YY/,JAPvD"aBT*BܵkעDd!''C "(֜p`JfnDCqZw4Fbsﲝ޷ }|!LIߞڵk}<==d7!Z~9I+bPGo aYߢyB^}ɕ \~͛7k׮3U

!2}3(* 4{*[I}g+u5w{8 %" ~YKC*ΪˍH$/>PEu@)1h^ι?zƚQMPxiwR|׿0{~Q+vu{@ TWL&Anݚ4iU~~~N<I-š1ZkDnEk-K{{hC_D"mܸQVRdѶ:~ ÔJMra1b ϰqƏdv/%P|T +R/ B> $ $4H?~%Ȝ-[&kkk̙>FQ8̤ؔ(`2l6[.~eFBVX+7:l2<&LA[g\nT}[Y1TSg|ʊu#3INRf|7C@A _ Ϛ廼|տW} .K&wp"""-\nIIk@ ՌX[[K"<(.wӦMG +I`V0 s\l"ck BP("QŠBa]] +W:tOZ&)~)"KUU\.͛FR\|YjS?5 :;tq'=$?h7Rfa]6͊@Yq'wB#G9sQbbb^xA Q^^J&HΜcjyzz`9!qqwwwo֭ۖ-[d JbIˋ:<'oR$ZKD":bI7005k֕+Wzvڽ{} N:%hq$PUflQRğx` ~L5)-hѧGgO^#p;tv7YKh:ZqC YHP <:22ĉT*ڵkt:],@P",),,>}:ZGK{غuTnxqqqRRѣG 8 =RNd2'q4#޻SAgBnL4I8?$eMK!e3vȝ~~ 5,1>|ٵkWPPЂ dw 3gٳGqٿ4`ڏaubPKۗtBV]VuSC7^ 55uuh{R.58H$Rý !Cp\#B˗/eĉr111r/_|rZZ*ŁDHh0- LzB(šF3, aoo3i$#w"xԩ>}0Fu&r=|rrrTų8ԷP~ Ôo}4+΋w P(0^Oas.We8@`0Tƴi(R#\*?֖?~|ӦM׹=8P[,5)T:dBJZK!H$hӓ Q (::ݻ={COmX[[vP}~ Ôۗկ[@ʛQ*ۧ{r;UõVؾG). A0dqH}!_>ok?2SO=uĒ,h2F[fĉx!CL<ݻwbYUFU]ȍbcU+P=uG/QEh`$ "#byzz>r["#D"џV!ā/YXĒ nqĒDB[-5Œ/^z~H",,,PY! d2!ZN:!UКkjjb(Td2BN:1ڏau_A?}5]?_ǭ9ʽ21-071 w++dܸqx-]pEEWr2,PV2xݺugϞVg%4p>qDG\3s͟욵;ۜCx| pm&:3˦m!R z:T+o 4P҈r ~ڄ̾&7>$$ʕ+G (i 2wbKd2D"z l:::bUUUt:[s#Z-*7"u kJz0jJ3o\ S$-XZZ 2]J䀀@RRRFF"m4| OLL~LLL455ڵ+l!$QSPP:/U=3ܰ$Tˎdd-"W)n}Ώ 8:-T(qT%KܹYhѰaÀRQ]] \ti͚5rw&8Էmm]I]f]}zc/SnBa9?őgjYC׮]133KII|D"25x܆@ffԚĪ={'Md(R|V]Cv-i)Jkqȥo޼AumܸqgT:uĉJ2Jff\\C}f$Ds[@2>vcPyB_%~CyyaH{͚!_շoF@pppRRRdddqq8Iq⁁!y5t:[nǏr'OC2PET^ZihN!ߜ`9/R$٣ơe@HHȜ9sƌs)Ndkk먨˗\222RKlɓ'߾}ҥKo޼ gqiF0:L϶0jEağCW\˗H6@hhhZd"+99oqzFjre;rW/<]DR =!CjkkH_׮]x{E$''?}TrJ}Aط QŠOF_8lR!kHy 03*,7M Z3bĈSN8p@);GGDž ج[nʕJ'hzH/<ġ-`cj{?ivY)9}\ !^@dK?Z?Z4ā@ "##GSPPAPPPPBBBDD+++355\6 1111(( ð/t277/***z̙3f̐766lkAǏAZMh8`<ΦW/`PDPPТE6nxMwwlex) ׮] @&Ur!ݻ7m (00P:tג>yɦ ;vׯ_seq̝;WV`$RJnh_}E$&ѻBC6?.;($kK)M >y{56$EOLIRZJ>x`n%KbB ꪪ>}憡ܞ={Ju; IDAT+>!!!B Ypyw :{2ȼ[q֊O|QC9'**ի{챱illDt磌srrccc}||,--GmCOOOO<M HkqfPǫ ;vd'pN>'OZZZ-ٳ׬YcllkqZLx$fBS#e}t^{ &iB5j۷ocǎ1c;55NG<}TSSѱ7))IrHϩTjnݤb}83?9(-Z-$:::_lۉ'$Jr,H$xXm Z`^]%dh1lyX |||VXC>IIIՏ?.++1c@ (GPz%D%w0&~P%UTQEVIc1`&<|pT1Wݻĉ+TiA/Τ*P1WlI^.yIp..0!:VaknCӑFtd#o=z >JZTD{PVǏrr]u7t<:0W7: UUd'=-a 4.^ZM\UV's鲲2j|@SSDX,2}233áRGuv JWW7??NBD"@ P(h 500(--666R]D"Nm*z/ijj2, 5N}^~fa<||||^6\0776mPWWw׮]\&?aJ9tZ7${]\JJJd?ǺuV[[K$A" l6D"!Sf4'H)ߙbDEEua$f=n\j % $*,A8[$lM-GT`;v{4 }RUUϟ_pRZsYj*Pl[btn=$i;\ϟ̛56PyUUb믿[ȈL&Cð]ZZZbbYH$H$B e===wwwq******)<A >|PRg/8Ӛ zzzGvqqg0oڴi&Lhr͛L&A?Ӌ/V\)%dꬥK>hoضj;L%'McL)W7Xq3,?_=z(((#B%7n֭ >Dccc,0 Ȇ)֯_$4++k֭q ܹsΝ۷mTD+V~:߿իr\&yuhZfpvg#XS]y}:p۷onj3bĈ7644[DL&333&//Rv\7 uj=z@6ڹsgn  *80زl@#e˖egg_pAy.cccG9{lwdCʩ9sk"kyE֫g5n!1.]<}lذa>|@tG<⠠ ;;^zYYY ˗/?|i_+/Ê ͛檳UJْH]6,,͛wR[nD555UUUJzpQV q0v ?56d+a}m4YEOrٹ.!ŵk޽۷YXX )))|>㥥[XX$x8 =z4dKG;oxxqlڴi۶mSGA_UCj;LmL˙'3kdqA;PEqȑǎtRLLСC_~Lӧ@P(ϟ?q۷og0o߾2'11ŁEZdX[[]v=~`'OA{:uT]]]WW;ɉq-$TabpCC!s݆7TΝ;2eСCCPC_zU^^n``0}zKKKKARWWWIٰl]]]U418$ jiiϳf͚1cŋ/_!M+ hѢEԽ{jii:u #!VPa^l>2ѱSAҥˡC .gڵkppppp!2F޼yɓK5 W|QSE(`r,`2bɍbnkhh2P,::z˖-)))G6UɓZZZYYYߦ)1v"7ڦƬ-Z 8љ6mڴiv.;w|[[ۅ >d>}WSSS<3P("k * 1ġQ'CիW^cǎ;vl||}tPP֭[EļzJ__޾({'FvË/9r`dffvkĶmgTQ34 x*++ʊ|XKN8hnnN"TɌdaaa۶mի;JґtGh$"<<|޽b$Dw\G*Gѻ" EET%vKb]l1Ec&(**&1*-b(]­qvٙ<'Ovv-_>.. ΍QQGw-^Xm–v۵kW9sn}Р 8gk8ޔ$=t ۘ}l]9gD"q\www;wX[[{{{=p+++oo BafffVVÇa6L&:Tirrr߿ [4Pm]QT),,2QYAa:$k= fN6~lܢ TFV\\\TjbbR^^fK*qu}WQQQ>>>#F0u$$$$$$$D$88LfkkkXCBBK(ʣG@ӯ_zzz9svY.d2MUWW'Z'> 捍X X`T"D"M+ Cf===CN ~/tРAP(0 MRݡբEʕ+GaaaѢv333wqqJ}||2$!!`baqǎ#GT}5|piZ. N:6}t(?v+HZj=FcX_0 W^gx{{҉(1Ц@KDDΥwLulON ~a$[A0'''>>رc/V.tttl3}UUUbbWvvW_}eii9}ɓ'wގDq'%%ṴM ?DZt H$H$fΝ,mД'OH$Y ,YzRijj*,˗/>ѣl6[(¾0aי>,qT_ʿt:`p8&.^wuַtF) R&H @XXf=1Цl6,yB /*t (^= F|}}]\\"""T-^ݻL&sʔ)C imecc)44=ddd,Zd4?0,''ɩŋyGDFFFFF^N-w=/o8Z`bbү_lq…l6O>K.P(UUUʵ eڴiYQQq…CBwroQQQ;CRa%Hl6[u> wwwacc`tX  lz:ZA+^.w\3(N+!vbƢszm\VVV⢢+V,]tʔ)m̶Uoss3urrjllܸqcff9ÇMLLWZSk4P 84CISS{ h4O =xgʟ?zH:UFCCC+++);Oj666bbY핎oP(l[~~>J555JLL$b833L&4F޿U:Y4Bavxc͘+d^O `QDYņ>,G\l8*ꭩr """zժU<)AEET*544tssobՔt忕aaah.iFh5̮✁[>,\+pCMfᕆ\k+cccsrr^}w;+s޽ 3440aRMIDATൻV^f'Ԋ.1n<3s!#^߳㞜a8d ?ӧ^:|p??1c8;;c؎_AUjuuuBߜ:uɓvvv...{ lhhx crF酅ba1U4vqti6]{GI܉cT>bu鷟0h>Mrqhɖd*/ؽ{wJJJAA1cƍ)WЌ*=^m۶m۶#G\rp8WWW:NRq/...--h0͖X,NOOWPkF,Xٳ/_VѸ1':vo{ &U!(xqB-4XmBa^^^IIIVVVLLa`````F.ܚԛ7oX,[[ۀ6M&+++aE]]]~~D"Qm 422R֫yG'FhQ*'%=.)(^!!}m #G$&&fddԔ~tlccp:28v3H$Ǐ߾}ѣGBؘD"UWWq8 ٳgoz(J$iɒ%C jll'DӈM7(NQ{|k|>?//L&>_VVvp C__ȨEPPk{%???4PE-tz3xL[]]\D"Ӄ0|>T) > (>>vXejjP(v- ߼iDI(ݮutX.*.2.Rnn500V8&M\%+++UC52fTZ;747U1Ym?R|uIHHI={ *5㵵l6SZPR0L,f:hX5\eN.*b G[ZZX---/`F:q1ԔqSSSssH$xqh3D666i4#H, Y,FV,Ҳbqhhh[H$R[0<bY XYYNq)ܹs\^ӧOìOy3ӈ.Q)l۶fbyyysssvT*}91[@x) jq?~<}"oM+Rz-Umذ!55󋊊َ3F9%3.[.;}tb+V fo޽-tuGB囇LvѦ@ HXW8%WVw4s{0;qQc_2@ :K+?!?rN> ]粮N@ D&Ӿ@2bc8ǀ XW|%z9ti_)9hN{ʰbk9 @tݤch@9WvF2?!Ćƒd___bcyTJzzz{&`]T*N{{{hL&͍X-F*"Zt+߈KxZ)Z8ͨ' D бIRNIctiEU¾%C7M!L}Sb'B3FӦ@c 6j'[2?!La]ӟž~D9 C O6]қ =OEfһ˼vy'Ё \?d tis7W)VcK2`+!}UǴ ^yS\e9EOcv̘3@ OV%\fsFD$?"sB DWӝ:av(=$$+?|& c>mkfjw7;A%/6ւe?y{w^ntk5ݹB 芤o4#a{@ 嚙7XqT$~>fԾG2Q9;ɊZ'O.qf孭؁;՝عB j!=bd2z0C:өNlskWK y)5 绫&Kfc?^`JeشFN:W7e;{*W7b[~%YuJ"ȵ" ᡒ H(xEFj>/te͢NU uK3ULm? tݜom'W"sĆþnźW[kF}8Ifvp@Hb0Hz6<$7 F'6o_9\_J 1y_N=nsGPp;zjQ\i*U߿x6Ȓ Sbfan1icgIEJ["Cv%pc Wlfpr—{z^9*HQJ v- WV &t;V#[;.J9Ipy͟!a^(p/g k~XBrA+m_BVvnKielwzlDvsOk's<^,n1~αISĺfir~Z`ڵڝ;.!8tFS]+.)[kfx-}Kj9xщgŦz'5`K/:]'0^nlwSms 5c/)QVCPkHBQzF@ F  4@(HBGA@ : hQ@w3IPgv{,,{Rd@{ȗ7l&}F h݂#s;`;0@]z { Z1A{m  /~<)pڞ:xSWئl!~|*(^|S/1Feqa^l[ e4foV\}㢕ߍf=QAֳb~Jh} Y_0cJx. g,~v2`f(ڴ˲}R:=U)ۗ@}1;0zLTwq7g[Jh}{+(~;n4}θM$\I{&;3!7F\ǯ6,3d>? 2h.nlWj|`7o3l/3azDޒcO@fs ՞c z.680j.+UPQFD+`ռ J \^QVW2j%ՇVv2ƀ#qֹ}>ת2Q7~W"P]7'nԮ=r,C0Y察y2!d}~\ Q Cx8?sћoqZ _)l?mZWB%phq捜>Ʈ " Y>V7U6$vT!6,9z? kř#\ok97;~[LbqjǷS(n!όsږ^"ԕ)pQee= Z?3q]^زɮ@ @ tԃF  4@(HBGA@ : hQ@#@ t$+>0LL:LT&5?XE$A}l؝I-Q/]&("z?4o w39BCt$Z+s_EKi7l7r֭-ȊWYw=U*X>gіCT z"iڪӥ vlhI;@m/bcGE.Swa 'f9 [q+Ȕ8PTsFOCq E/tӱu{E.WqpǎR͍ř7P7uEl =p`{cv]!јi>:.Ou >&uA+D^RE=Y˄Ģ7{[C h-xP0iÞqﵸ3Kn[w/(8Δ諵>Kvmfrejq'va5! }#^??FYs3YJ#yVjy%maXڳTJtM]FOB(.~}|W "OSMhM9ibyξ4 ;bqO<UO6vñ#$^~ڏFYp8V&9ted_&ZHX&qi*' ߧD7ொ4# k.?6M֪;Fo.8=ۍNw[_uz@O?xv)&KN3}&^Cª+d;O7C ||[(N%YP}<R)Œ G8?$Cc# L^MB%֍<ܟnc&UVȳcbe<.~9|N20'aY/KAacQQ mcIV?onLZJ$R[7JKqWC^%:䲾H DiyV̥g2Ί㲇}HqSMȶg2/_57礙N7*bEΊ0of h0zv-EOBVP=j?ݟH塋N '11jp{PyYUwHHs6G>9n 9_]=6ӪΊސsXS ѩ+D|9vo޼y[&ՠhL-w36| `$ܽGFsw]]]!o3<PO,31 aTC BfPZ7$|f`@"ԃ$ @(HBGA@ : hQ@#@ t6]?@ j}g^mqn6noS::a hr 2=74RSM[ 9<^pz\AwAP, ^!7+JWr~{@Ƿ1^_k^VO;e7S Mb(MBQxBsG 3K)tH}fz q]X,¡z ߟ#G }8O$ww*l oN?GMKbeY?ׂSrn_v=S?`R)\ Տ{ h׼DjoxSߠN<N@XQ#O4_gfsId:\*@x-ǏC^kPQH}ebVקF?0%MAզo0I[Q[Y3oWͬG DmTfe8<` Yc="XQ@i!@ 4("N!@ 4("v]8`gH՟l2s?h"mM7:x/"D$j=*H^raS/謷UW]5aϣ:6yy|ol VשM.h/NkubBP(Jz c<>:xё1>[T&k޼yQ˟U \`NN*E P`NC j}֗QϢCa(QM5-Zj\W6oܱ#=l'Kjke}] $>C|)r9|t|0NRRWE7'q?.enP o5r s@8FNoP0r9 e~2|weҮq3,6Ωm^jw 6oZx0SܯSۨě!?2g RwiIt@dIҧW= & R(NZ˴=ͩIS~˓R.}з\Ր$!;0*ՔcYZ(XTu!efaMxsl{|q337 $Ir\FastMR@Ν׭[xpܻwƍ@u֭ۙ3g=|@ 68e@  >}fTtuS.2}lٲEժT*ӻ͛7XL4 ~ǀ.]0J&/dth4͍yyyl/((pwwp8jNsuueKR'#SR ???_(ϋnݺ1nS+l; >xT(ll333 cs\.$ qEEEl:!l:l |>-s}5* 6QX8 ( lDA`7ꥆ>Μ9Ν;2ӓr///T㸧NQsJ/(.ː@^FsNNNl͍9㾾l}||d2csWWWLf{ѝlAaa!csNG]pd2J*;Vd2NF' e2YIIL&31dRT(*J\.Hx<ŕm%]\\cP(Ό322up20H$:.00L&+** al^\\\TT\8;;z``spHܹsgfp77UV;\؁033bpp8sÉ9uqN Q%A(iMG~`؉'NPB˜zA=10%Zq7 13xNs^oㇺXkZVKSnnnC)8bbb.NNN\.^WTwlnn7c|777>\Tt:www?T*D B!3KV$(((`sd2yum(@  G }"8H$Hp8eJ+ w! T*V Fs!!!ͳze`NdZZZHH3sAAA B`fNDvvvz@VVs\(Zl:8::RW1ٳgqMNxzz1p8ԓ.3secƜys8HLkK ̍8'44j QG l^f899|`-D"D塁]~P-[v鶼ܹ{wR\mtdQEi?$5?Z&%v !4gIHeFk Q*kB$aŋ7oT~T=$9h z4yDŽE"_A詿:URߦ-N;}ӽ}&zaas@EiTe)W[ M֚csTRVkZ69Yf`^^ KL_s2"͐ ɫa!>,aQ!< pueT4FY؟|i([@mYE9 0]ъ+#iy;ϲ}-2y&&݉"`Pػ *w%Hc{(kAC-p04eրZ_k4,,lŦsK(k(kU wEUB;|u{\8]|ByU׵۳]mؘWnR@8|O$(5%߿o[kצuvxy&POT)njE5p~G(ee5jxA ?6Sߺ.z q0Z(Ȁ p2 r$q]4ex!mذyYѤ"^Oo_MVs_8|#1qOoz楥J߼qffs>YJYn*Z@1vJdn)? |xۇ eAӛ72lOؐ5 iyŐ$UC4FkN(Ăc/@LF 0N 5_j >.p4ڲ󺰰RJi+ds-ۑ8@ Q?9(k9Q{ z1guJǩ]y[#dKb;RܠXܕNNN΋/~VZ͛7'.Q6-D"if+ KoPz͝kk򚯻ܡťηRR]L΍#עǒ bJuuu5S2 /^8d0lƍvEY՚5jxA*>9a`H={@vi׀TJtG6k͛7ydjjFlj4Ɯ% :3_.;oS+@a^Qtͯ{YR_Q,rOGEDD"Ν;{3f o4Ƽxg?-^؉MHg>Q0 AK;$^T% س ڟ5JMVRkTtjQc"] ?ai4]j1/YqF}||ݩEYl?B=xA40Z_ @ uB_"' TQtAc Vl5m$ѹkE$/6ǩPkfR S2i&wD0Q6T0LH6dqF:1A5WمviS ($@No4PRrjMʏTkt)_Nm?HNK~U5JT)E;Z(r=*fϞ=n8c\$ͱ1vDhxAuv oZQZtQLLA p%r H qI,..ϯx񂮉)bX36/**J `ZZ``l.d2cs؜$Ԣ/C7^ZXnAaa!2rDӋb1cƌ3vhĉ>d$ak氋MOj*pvr7QH$¨ZђҌF+ɺu#m BaIHeF_ZT#iP IDATpOue34r#F F٘GAskXD^#GGGfso߾~iy;odv/h^ m8$`2(7-7@[ @PPСO^zvOPhF ((A(&=eok׮?Q5ܾY-^G ԧ%LVSبߏ-s{ﵭJ2>S,77RN8qͤ$jN88+5*ݎ2oѢEXXU`TQW8ppglT*]]]26H$>>>yyy]\\?%sBJuĔӉpn9 ٹO/?(Yfmm-yrQ!.#vgPj5U(77Wbx`x 򷐆AawUyWݰf1d ww&+djlذaܸqcǎѣ5aTvLꋝ(."H$ Sϟ7o|Ŋǎ;Hao^@Mٲe1akſ&n-ljB~V]Ҩ->r\2Iu=G_G+F1 {>| @Ѽb%a111]t5ZFI"7+OPXhy?,,G6.5F٘'k~U_~V1|3ĪvxgO/ڲ}Z%W\{1<q=cq+lڳF0L2^,B{=>8D1ɆROYeTь,ͬիW/^8!!>}``MzQ Zdc^~!Yڭ?Obš^{֎ 6\4j$008 Cq=[(]4ZQVkԗ8֠rmF-*eVkՕܹs H(@I]4Q6v[k>aKA玭2ա؄3LeuGҨMFt7m;ƸiT޵F)_nr K6\;$"i;%^vמY)0JiԂ a2`k.60Ν;s1?e9.:iyE{4_VTkoHxͽc&PB[ܳvp E%`dֱcGA}oݎ- iy;`-0;kݹ}3MnrpAr~HrNrfffV2B 玫G 9"MV$ɤ$_uСݺu3ft6#>--bs}GEZZqɋ./nA7]^I>|Tg0- ߋVUe>-[Tnh}cǎU\P(d2Y! P\#5cf7Rtw1^mUD_4.{ Ӣ}994>Ԑkb]i5ph/f:vg F:ÇW\ڥQ6/5Aeu;POmZ\&ZiF\\\4 AfTP֍iQpp1RP@#ԣuz; ZT;B̥G?;: y *w3^ zܕ=KMwҥVtF5:b^t  dҲ1 WQ#.]*APzW}_cc^F/heB]9Nub_*m5ÁF\wO/u&MQd Fȇ%8p94.m(ke1S֨-^S(׿~h+jԧm(Xo=;;օ,;;;++tNK(k9f25PkW5Ju^lڴť-[ 0x@j5FmzP(RRRLo(Q(ecnǬQ Z!pawmwr6J}YnZBzz~kF;w|ܹc#iݥ-[4|Z`~f믿f.w<4j߲eˎ#6ݖGl۲EIKizj"&z;1M3.F(9r䈵; M^ ċQwwQF8pHKsl̫݁7{fV[B`ء.ٵ֨]v:M4}Slll|||``L$(i4;;{4[]L?㡭55==$9 Go1)vrBIVmkB$o$cъ3ewVҨު9圳ku?>F?=ZҨJyf<>v'G Wir^㸅O?HE(sdqE5B^OLrammݺ^-4h`ڛ7I_&+MJNPIeEMkҫ-0ޙ?nG0aѣG+רIBX$Okr߅Q$1 Z@Hj %y gYk=>IlkBhd%U \CҚw:heܮ2-&(ݚݼm</qf0cm"y8PG3ņ)¾jw ߮Ol-6{d|Aה@W /q2yХ5rǎ;dȐ[ngR~OBzžhРA ]t&"""PU idNWRt[.IGr_iޝ[jc*ҭ+RәJ<?2dȪUL8o͕$*p$˟ګY6m2C ӧ5mf iI,}-C=q iH>g=a[iu߶mRܶm۳gZnM3E+ݻwo7m6U*#5A}Hԡԡٞ$Gel\۴[``¨.K_vWbe5 oVqtfڡK..\0 Æ 9sRR9}aK5:R#Ko״CY)%[@QzV/hQm'F"RKtZl9u3%$2HɩLlpɴх+5:u\jj*m'gfHQJNNNo'NݬTj^IlG.???NaSȂd1~z-J&O=&nf5q ž5gh}xx/[9#64Z9U_uǸw0UbVOHHH8d!)neCQ$1g+;^ЃJԏ7_hCq-析[&T*AӧGm:G˜ b>{A$T*[otm":N26'MsNRYKij/]{DCS J23f̘1cHh42Ʀ7o^\\l63777???g߆p9R@linMTj^111IBV1eT"6?//`006W* Z_"o\ێ}-v&AQ;ow魢 Gπ1킝ԩSEprhPzǠA>x@㷹Msie2ZnΜ9C%a60Ѹ)G4zn_|a 4j30LM+CnI7}{nJ-:hEBBB.4T5U } d w>h^cdN DQz6Uԡ%05~V܍}2{EU7EH_gLo&yЪUON2E̫]EY?~|%k6;&/8888Aʮ JI6Fm2_uyp3DhMFYl5 qo/j[QKJY5#''P"4\"KL0zIh<~IHec^]Ҩ] _?_<x䑀q{FF)4کSvOmf͚գGD(ZRk⌫+zuhӼe/|nu?ɋ0ߜo5woG\^{aXVVH$AP{+VܻwOSʺ u0 4hPrr?]yb8$$'555117 ʰ['r``fbJd`aXFF̜E$tjNRvb'IR8<$ $S+3܏7d;}gQY%l_|o+R\LK46u$I.Njq=zTu$jI;OMU/ HP@ T?Tn$\1$===I$qBh<e˖$I ꔴℷ7sޠkN؜$I+ csOOOߝ$I@Ɯ,;~{{{e5Q e?W.ރcPL<-fƌwF)(( [*8. _9;viذ!%mo߾ȑ#ѕ7H%J&M<{lΝ9::*Jk2,;;R8ofAtח KRd35vQ3W4%:Je|7wiD" s!‚b?o)8kwBPRO˸^Muw*ʰf]BSnޕ]ZTnS t:` ǧ 0, 44PNIOOOS ^!02 gΜ_jUϞ=OA:UZgusRsiF~?'kIC' I"7ߴ ,9996lX`СC% H q ۧa7 .cpܦj爩`L$GZfYHReXVfa~~>2r,5^k MFmPO*JTRV޳gOlllϞ=@Io JeҍtgFFTJ;ԏ?>22⚍7BzzgZcv! 8?nO'o~/E RsO|]léIkz:vļgY+Z2 ge1 /]w[잕YqdA>o[5|}}ǍSL10 %A#0 we19fbdRS[m#[Ylt)6}(sk%m}֨zGhB<7W.x;q8k@xbOOe˖Yz@=* ՞5 j@(W<[0 sm՞s_hƥtG|MY5{ř|b>EDv Qs a;|׮]ve$\4XAZ(=kр tzy4 0Lq`>-azF~nAоP?cƌ'Oi۶mec^3F?V=Uk#/kڽCӧOlr9EP87*6[7²5v`莝m—Q[1x{8_KoBꩾyyy\xq%DMPOt/Sq0qQrEpJ:ԻW\ 3P ]@n@Q١~%]5y^\='0wɓ\ZE'''77۷o+ kK]EÛRk"y6hoFBpɰ0-e q04@Qz6աf8{=|S>} }'V`'ip###{eq)i]r%..Hgg焄k0FlǏϟ?_q֭[m֢| dmxk>q?ykFQ37*uM)l\p\yS7ϙ?-\ݽJk />ohЪ۹7EqLp8ki IDAT`0NС^ֲ~n"?NmDxT2-w ,ڵ+ -1vSehf9h! A?;_{Ĭmz#I2##ȴſw޻wZ\… Zx㭓$)m68jQQT*eu X&[&>mE CZZ霯:zM?1E;KOn-ljB~V]aڴiwބәA޼`ZG ;HR,>=<;vزeKUQ/ׯ+o[|٭營Ą5­C_3јO_:;w=z4ZӤ@} Z~@l5 dᩅ[w*g[QKJ]k D2oSqxdj.6ڈm<\H {mjw^kp.1 s U.,RyHS{_I͠mTufAM{~t'2/iC{&sCm<'(((8qDPhm5Tr_h2g navy0ɺ9!ص~h$8*q|Μ9ٲun1G0pz7(VW.5F-L4;^_~uʺmjO_l~(uć^b׫ z,_J?TyOS4ZӤQZH[#1A#1>޾i{\rQgLn w5J~R8:xW4JMٳҥKpta7)J<@ VӤMٵY!N9$"iڤQց^A!Oɱ#<GH;J,s ww~lqKC d' ^`v#Nփ=cHZ5`OK&&&^\WK:ԫ0LAmǯY-;qLߦaNU5Uo$%:`p+=@P񲨆M\3[2~Ya2If^[e/&sݗB}_,+ZɵV?=6)с>A^nfLe"l] ,n~NH"##Zm>}vm\%ׯߊV40t[j[0F9M&8{L1kF@$}k)KU)u '#y)Z7綜~/Eu+V b@]U(h|kk:b=2a7A˅k 3Aq d@#p0pAjPC(CBHE(@<^ Lo^Qs7s=o͕\MƖHW*Ԣ~I~AMT*6zFCMk4N:Q DwSSS6mKT*ok't:#$kYt:Ri}&Kkמ+2ߐ}#2A `Da:^%$IO$MvykkƵhG߅o gށw!'\GYSR_]:VնQI Sr g?//,G`D"1x6V`Msa=NJEp/9A@P9S_FO5yY,/@>~w60V4fPQ6z֨tQF9r}FP_ c7 @<JuS8Z lsFL`"iy;Ve/h&Ks{}7x“ =V^[5kvs̾k.>~.o@[?eH0P(ZqLyfҁ{oCh͛7o|Rixnj v.AZE5(1}0 YYYv 3iСC=ã˻8`c@zApW@ 8kA NPJς'P:E2yYrB0101%h1ks~41z{Ő7qֵmi ޢuNd~'~FM)VZeKHH_j^^^&M [lYRRғ'OzEabPk aC=a(Lo߾MM+u֙B!+99_t€t %PB p,/OQegaRׇab/h&K'FSͻmo\Ms񨝷;wVQg@XvL#U!UAK.*U~޲eK@(V\M(Z|nֱ֨c&8zBY |ՕIlk4JA?^0 Lq-}H+92mȏԺhUSSZ ɫa!>,}&ڻCE +6J ?{+@ۡ _gyZacQC>svtc_'(M!=@B@ 8Iw(cYce"]kP:ޡY`*BW~[{<ٰ H۷dR5VV&MMJٻEj.JwATwKBvҨɈ5klݺ*j֭sNΝ_9P_F rD勅tdH 확#{Ƭq1m.P_T>Bok#B dյb\Y>!cCaRU[jGP J-<WP,${¬B){_y;Je/h&K d{N>zq0F?tTfK;|u{\8]|ByU-uX~ƫC{6m+!͍FGGW~(5ǥŠ)Fظfye[Q˥J_OQ3QQk-XH;t`u6d@uy4P n)mu ZtGzl~pc>hs@ /|nK>QxcP#HPާOJ.HFЯpavqcf;sNl0ZVJZtqvs/0<$J@$,+%h)-ISH~&IuZe/uGQ}wnݴM!C(RBhKE:RR EQDD !m&gcel6[93g&wS2L9!2a4܎9Q!8RsNlakn:@!u[&Ge5Ss_~[,}FwXI0y6eX];ӯ;3&򞣡ݧ0B W6^5f=5Lm1I._<`잜`>7ׁrz/ hAG @D*B %! DkA2#,h^xjF荽p09{r۾>+[BK/k)1^_9:^q#;=+E#٢V #<#5* W^k.UׯowsK@ФIW֯_(M˖9F7$INnŀbbbmԨn_ݑ/:{ -dǏ_Wl@ >|…:uh4TEB(Oaq7ip&L49 "hFAYPmm=ب={]Nn>8zWzp9ܳ^&gQƾf -_*w rvG"1S޵k̙3k 7شiDE6lذas( iii&S9H53k ?k֬ݻwj[C c?&@C1 "&%i,$8Jd#Ȃ/eB\ޭ[7LJ/^j*W+Իg/0LB]sL]|2xkp`l1 ,+00ͫe&Y:.+++22Cd̆@ `CTr0EQڹsF`R(˿1y?[B8 aDmx7paB$m↟)ÉX,6l6۳gt-p<,cq $S?emڶX,Pؾ}36;!7Nrk;sm3miolngB)`㈁+-tA=Ù =>="J .]T(b1f2Qƭ 6]9$K.%$$X,}N:d21CŇ "H$,3M&z1, :OPPW'BTf$=H$Zֹ7RfY x&r외lff/fl6 6 %L-6 B ‘#G{nҤIjt,iK֖#{f~ HvFG>~@:=~<رY#,bܛ]deeu cD"@ (,,43N燆z,n4JohZ>:w.J]0n O cFh3:z 7|cXye;^+dqǰoGԨ\.g)9Xnݺ5f̘m۶EFFٳgԩPاT{|KWJ5B^M(sj!h^p!A}QnnT*p8Y䔗5)HC6"HrA,R`"2&߹sÇ;h42̛5B999 ›5B$ LR쀀{a=Kv!;4sj+& .Ꝡ^zc] H߹s7J+6~ڵ""JB;;7F8++T*A$ݾ]Ϳ9}௧}u̿3t+N5~%ꋓn;pfs_%ߢ,TU ssa#?dOĝ C8B b  )DҲẽ0,CY}N).ѥK8Y_ ]C?~|zzzJ 'ׯ_._^ k v,97=Y/B-Xv#?yI"'?5a[?V+h&-g|Բ;@Hֈ;9g*DBmm& m_+jچgӱmq\4kXmddСCws{ k3x>`ᴑ]]ᮙ#a}V]9s;ﻟiQ[8{xxz…wܙ5kmcR}4iRllllllAAAЫgu6Fdf^ g=̎]?jݜ&}ʹF]-$*ӈ5qd(%(46J @Z >}7K9s7m[5k֔>G>Ԩ]d 7fZu[1`?d&ݴFDڟNJJPJSsCtZnԩsĉ TV*TjԛWHQK[RNmSҟK'U> Jl+Ի[՛νAk>A*݉42=h>07 `s?x@!'g~b !&OJJ{lu+Jmֺ0P_=텇IaN}qmiҢ1}=ǯ뗄7[oƭqh2{tsmpٺ.6XSP_s€f[.er5Pcb DVX9Pę˯}Ԣ7U@P  ӓp 5l\-Q3򂢙' `*Ѵʩі-[?>!!!,,nמ3.,:'boٲeqqqփ}^K$ҁ+ lQVhܵpyz :"س Θu" ~hȌg5LmUՉ 9uTBBB\\=&9~(=èFaH E_70d|G> ԨCd=PgTW* հi:Ji@Ww.&!]ōЯqpn^i\lz?A1 54ݭ[7rmm!xTx-(l6w9??{f3Z.v{vNսg*HW:`]4Mq:Bd IDATpEG4y{y;?B%Z i!o/ocm/yt~}j;'3I-K@-p!zK >9::h .@Р  8yPs߄{R]^_)υ~*e\2Fb D_>g22ө=O i& KeERRjqoQOۆ0PM9yFߏ_ [=sOJA1?$k  T30>>>>>>vWjjC&^Ъ=т?wZٝzE{Yp… ♙F2e+Rp9WjYnϟ?ml-x$rhU*Śk»ojgfMǡѶ=Ӝ}SM+m8m@=kԡ8ϫ1*6v:Ύ*>!C>}M6D`cIa }C\ 6REf R\Li)x2HJaa!IzzOۆ~dځ5QIaj?UH+g՞mݖ1aMZ4{&&tjs YR&8"s?A4#"(,{gϞ'N+nݚ2eʚ5k{6%;WԨhiX {_FI:ykl0,g?{e7SqT2I8UPoΝ;ےu㦊Y,X}veUVZcƌh4v  رcBBBBBB~wP݅kFN;ɵ\S\ޙ3g<|ˡgu ϣ9 ##ue8R.X41t,P9yA`c AaŜrRvf4<1dogϞ ]t8q^w}UPﹽp0 /uz-D lʊErjXYq ]!!5O>rի!AsyKzfg˖-.]ڭ[7/۷zfE֭[o!5.5n-5k֬Yyk 6hzh4 2L]nFr&. aGhz t3ZрiȠ*R9r-_ӕ9_9YTM^x]vLQ8`(oGV\  ӓp7uRtκn^Wr5eиq㄄-[t֥3ׯ_o>|Q^9{ʠF=& RPNM7ֽc]'oT̖\͛уq; jDC ܇X!je F!3x@ɑW,gjb՟mwF0׆捹{:߿O.]WrWfUTCѲ?qDf{ĉǏ˳^1%%%44]c{5ieXEf(gRR6{Όhh)LPyhAOubQ'ܜo.6sFToѲпv||-_\CcOmtd!V \ ,0$"B |~C ܟ_Ə>*^&w'1/c _Xz> s 5uxZdɳgv-"2LzϞ=KVes &tDqj[ ];ZtwCRVy׸ks'_:q/!pެ=~Z@ w5F`01$C2.eE?i IC(8Yk g <'kSk.j6v{rдC޹sGP4MQ޼ysÆ ,L"YD!-)cGk,ОVS\0=}N+WXf͚9ǚUI^&2j5j1cƌ33)))44s֯i޽{ϙ3-)+lQӣG;?3$''~Lr"_g#רZ?;wDEEYhνrH1X,qXpabl'](aG !@H4A;f{={~rmmP(t,Q?! nVR(  > I$Yf,+z]zFӧ9sfȑ&MrK5㍿I5j[n-]!9LBKom/f ih4ZGX5C?7oNJJ:y$ӞAI6MaƂL,1!%\ Pcgz A$[I} vN~w?IEY_+-+X |Ԩ-5jkj䌰Qv`wAH;tbiٲg 8џfKUAO ^垡O>}ܹQJ"Hcf.j^/~*`A@ &Iaa>N$X|lsǏ|s2Levrrn_U@US^FG3Q+Z۷Gb,z&&&֥C۷/j2򈺚k9TtZ5lFKmDp&^&)>6jS;BŃ>]diM&C~?LԔތ>254{E *.z]^nbל%Gי(sGq&U]oY/ܦ_-g|F[A̚5'2cPs)m26Ec8f>L|(dnmdddX,Zx^^^vvvtt&22RնkСC7o$B"hɓ'j*22 iad@౸`x, LJuūc<=P |TЃ>9]iZӉbϮ.J߿hm)L&ݻwO3ܽj\ǢEYj9LdWjj* q*Gug8W{]/$V*lϧiZ.{T*W(^a0uرDTZXXH}.\dɒR]ʯd[֭0^ --9ן'b)+ \l#,3HAĔm2̦c5shdnX,v\|bϐfX Um[ ܹs(o੡B׬Y̜@(ZVo1=3qPVy,PL c 8x|fAs//Y)BQe3>e(KxE;vcǎ;]X0¼X,̫<: dzuCu Ri᱙@$G  r9(8g%Y}Ri 5jM$+ ̔k4Ph5wōFbaHoTڶm[>o2h[ٳ |p힭;Q"B 0i!BbO rdXf- {Rbf3rh4Ey,P{RЭ[7MJE55[.foD¼V̭ 몲g|>gQ] mhmi\|yL_{ M/M;p߿/nݺ_~۷/W [ONNr7hϞ!3mq:T*-0ajeNz&661+NvYl9/(EK%F[噎maNr׃F27UU.:AصM7q 6$kW^||o|rxY K.ּy󀀀?z]ibQǻ\5(Ui5νF]WDWu]JPąf ,P(a~d:k0_}VHv^,WmJդIFkhM25:ר-x]_wر,6B!a2{D}Nj>}HRLT'$$۷.O[i\tSN'N\߷o߽{5j3k.Ws:HU :5j \`XNJLLlܸ3X_B֭_!_0h z 8XLn)Akn9)Lyd=[ ^|r{5ݻw?~5-jRf\zt 施qR'ⅅݻw?qqߴiӍ7} mVPPkU_nw=_ڎT귓>Q-_[J?6^6oVV7RCh4ZZlZ>|3N$4rf84@wj$Օ/,(9" \$X(9ۊD;K[;w>|piENNB$WgggX p]#PfjY|לwڵ[nn;vu[v!::fO6]vAu w\QԨRܸqѣG:@./[̶烾XA!Bg5 J%B7 " h&C 5&A"6H6Hte¥ߜ'ݽ}Ԩ4B2j$0ʕ+vj޼פRѣGWTzʕUVT X[&wR#vfp[kо8ר%T]&z05 `:ur">lذ3gԯ_J5l۰= ӛ<q/ Wx( r@J)ezt&& AHgf!@B@ 8x,-4RT=G\jiBڔWJ?**ʉ/{ oSnQx=qrhFybV2#. l6( 3*d ʃ")fp3DP `bAo,5 {TۄSu~OG ^nrֶ=GGn&U"~Ff+lQ<ۡ]dŊ ,HOOwx E" q&kDEEXK.7oLLL,WdorA绕 58$oҼߛ(ӧoݺU|ppϨNÓ$*\/ 0,V\ȇꔢZ"4SJ|J .?vyp S| B/Q/ a Pn»N㿻5 nmjwI?rHԽ{QF%`ɶXxUHRcjie2P(<{ŋׯ>hC$D>B+~(Lb`f{ kjMFd.e٠X eb!e\f{\^h{*siqAo<"%mw]Pw;5.׋"$#h`y͛7izO9>ÇNӴ FI(ެYK.1?ΝYvm\a)BQ= ?Dt30O P`3k(hW `ȇLva} IDATOk /n3jFX-T!6lY=)ŴjhуT,P9GWDt0/xVkXF0#>SZC7QJJy Ϡ6mf^m/BeBV >5ȩZaMZķ*_?5Z.(-[˛4iՃ ZjRlٲu9ڵ;p*ByzS^AQW`zx g֭vRwiR&JhO"8h aS"C!@S`14 G~L_!@`@7? F.F߿.^F+^==?fz%9tZR$[N!Q JO%ƍ+Wc;vl׮]+}WoܸqYz>jq5ꫯXpWggg׮]{Ŋ%"Pgh43ǐG 7"N(X6'>֌k" hhɌha4zƞ^:Tp S5NڰHgf baFˠFׯ~zɓ';\{w1({w^zرI&z}hiT[j>n?έ MMCh!ƅ;́6`A 8)P[ϳ{ a cv PWm@'K":m_Z5O}^RQ+W={mk5Z{zNN׻(h!7yVא򋸑|42" Ff~<_lUwX>Q/+Wp 9#~‡䏷-i dOMM5 P\]7ߟyRR:t3gμrZv}*øThZZZjj*wѣweÇPHZzv6J$Ʉ \H'J4OׂDX6{u3e0{lqŚgpʕvr^-Tp >Ab{@>{/(G,Q.Rek444g={6n@ɿ f3J4ѐJR ݛ16w5jߜ9szu[nrJդI r0X|ԨCj rrrr9Ͷ%Tcǎ 8n! d(\{5q̻ e/Iզ@`; j'}%+dAcKap8vFS*^[2rvG5xV{! sۺ}m1{O/$]'4 B&c9#G$5thd 3f*d `B+}x% UPo[tj w y4QHڢwfnݺ_~CA^4UX2,۷{g3foذ믿v251 cƌp8;vtF|h ֭[?3@m۶ҞaЮ4 L:VV(b$K!y0%x*dG)RZBҌKXl@w%Pp :YfNVӧd r0UϨ'p OR62B$3Q =>= 0 |>$IU.ץRBӴ7Z'0y0bĈr]bo栮Kz`*WTp!QE9۵7jZFT9&zB7-lP8`A`҃B3 k~>dSNq \]<~xjjZ]bQp>*^4#匟EQެ1 Y'Ntr;v0~Zv. C2#+FE=c4@Pzo IVV7`RCh4F&94>}]N;w˙h0fN}};t,>Aidp皠=D"Ԍ/T6H @8ACVǗ0@j_?MJg$IJ$'Onذ7dAÆ ˗gggX p9⌰Pq32Lڵ+ؤIwygǎqqq:BBkVTTD ,ktǏg5 ^vsYS / NވH~.t`X\~}^1dhh] = N' c>v3 )D cCƅ9| HE "">i3s?&_*(V$***((hϟ~ɮqYFOwFH7M- 3g+nݺÇsܞ={Μ9I|Wר7>#fNXKYYYJe@ QàNY,\mLTcq ͹`adȑ Kw,XcbP5=Wʟzzo/ӘZ3f)N|nX?eAaò=T*޽+333 P*nm$''$xfff^^^z</((]vNNg&I$Y,t:H=i$k$3Lv4Mo۶y\nAAP(txwӿ\bn׾}/^`0deetH\]ܾ}[&T*]ݛ|xǎ/^t7ء$I;v̮b?~|vڹsgі>I5Z>5j '^6l H  o6;ŧ/J2HZ 5Y}|ƽ,guϊ קtaaP6ݩSׯ_}ҥK{/_$QhԩS4M[;3g0FsC_xy 999 "sזxڍ;bs4;t@n60 l111111vt?6}hd^2Ci iԨ]eAAkITpo١WOӾغADad/shyJP?px01>i I[+hB& ɱ:i hӻJ0fês_G@AD'ܳl-[Ԯ SV&e(? lDߡ,Z:%Oi\.lM\&{&y$HfZp>uh cf.'ڿ?ѣGmRƏ4N[hY{bV=Kʭ?xrJ){tu"V ~C_v{FTsjtgΜq"^PPмy-Z6 )S6=ݷuڃ;DYvɉ%DLCSFXhL8gMS-HldyI&c_N!Qh$h`` AXA߈f6L4 P@q! GeԻr.]tKF0Ԩo;pRH$xb)((`,d:p@JJʝ;wf̘7|7bXVoڴ 3M&S-V\ `ĉLaf͖/_eرZldɒٳg[[_ !PA-<8BڔWJ<|ӬЗk2rGyC:,ɓ~ej3S.\ .~Κ+{Q+A`Z C )nA> M0$VQ`DF$P Na^v0`p#X xD t (b/&h!"iI75}&a6;udM🂧3B+nram[{|y,s꫏a2LKzDk׮Ya.]87HD^x6޹a^6 2$f*BP-Bt|] l,PP2K0B.bpyH1D~sbK$tFh%0L$" " Bڴ4 SF]Ai\.EQjݻw7ͮPead/\AeBκ a:w@0^2b̤x-'ꨖ^7NHH(7ҥKϝ;W&Ճ=4@l >'hJNE 4j]GMeh&@xBJR`ܹIRp*4Ž:C WP|x^EKﺪ2wj\̯ͯEx:F=QB1qremMQKm*"""?NorͫyAjle{.,mٔIQoKuŋ8{n&{9cLA\ԗ F=V@3y˅`f5{jd2YgoG:FIt1W`X,ެ;x_V{wE XE@MS/B2/2@vhGYij3<>LB@XvYvw""._83ܹٞs{8_4 *9ۆcQF8hb٠4{.zŦx)ZNbP8Rf”J= Ob/Ѭh&\rss D=ML6ͳ뭫(l*^g2nNʢ(q2QfԏF7'<|̓G1\PBJ~v)Fܦ"M1k5 &)e}S}5*))eܜĦ{pѦielyRRRR7'$%%y_TTĸB;<<<|С{0L,YFiYPh׮$"m +ʲ)844444r 2%\ll" IIDAT愐[2nrJ_޽h̚+ʁ̚B qF3;6oLQ5H$GX/^K ضmo̚~'ڬ'-M/YWqV2B>}Q ёcIּ@ˡ|Ѭk|BҜ$6Ҵ]vjtWQ];9vMbErU);޾mI+O N0s .Ou\ֶml^={}\"H$*}{,byY܄^dJ%w7 w{ENӴ4~Ne?;NW5WBV)Q|i^d=,;7r<;oq\DXmquۦ6*|;Uw[+Hne^iZ~~g9WtщA'2Nl=O*?5M) GN="*^>¤9'B]ìA4wjO< |:zH5hX⇣oT׍c/iϛGΕ<^+\hTfjan30RJV)8 7N~{uش)nNn3Fk\'ͭ -Zw~@E,m&0rz)}<]{}Jmү..jWF*?'Ĭ ३V|ƢV\_Y9Ce5$j9vwDM+ZZ;,;;iߎVǰ$ T=g~P(02f=ŝ#ݷB+dR*>7&XۼuoBI79vM]_MĨ=ےHQMw4;0'x' ֢{QB#Nv]_--Ε/mXwx-{TwOv>}_wϏ<:6ǔčR`;xSM!+cT }çmS, eS,ӛ!ne_h=bҎ|BWޙ#I[Lb\:Jcq>%d/%/uş.xg@/bN!80Z6AmEQN)r~vYBfUJXcVxI|7~y|NUТo RZ=UFW !BO nE7Е_[6a9Vv<6W;ωG81ɶû'W__3e>l>XuI̷0þ͛m@-H:SPoXg~C>V=}15/$FA3, wlF2?3CCy*?5M) GN=ƍ: NzrB>7 Hۣ?qfTkj,ZouBط'ILH:{"8Oh?SU^VصO7SWbUkftUCb/ܱA'~lk̢ |B]ذ%#V|ߨwG}%qkSJ{~{6<"x3;o꿥6uw1?#xgV6gwoK~"Dv7TF iR*4!"׶qBQ"Vl4&đQaz;B 8{H!ĢwNW7*E#B;\9@kgb=ќG;FXz||EӲ]SCۻڻwthNS ?7Z6rjbzP4M'̽ }Ṭ4Uxf.^{Nܔ$kxcCӴ2Ymڽ#F҅w;SEϼ>:7F0F~ T_h#N^nZ/7< U;>#z㝬CM7C e;B4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?-IENDB`eaf/src/0000755000175000017500000000000014160346554011736 5ustar nileshnilesheaf/src/eaf/0000755000175000017500000000000014160346554012471 5ustar nileshnilesheaf/src/eaf/avl.c0000644000175000017500000003317714160346517013431 0ustar nileshnilesh/***************************************************************************** avl.c - Source code for the AVL-tree library. Copyright (C) 1998 Michael H. Buselli Copyright (C) 2000-2002 Wessel Dankers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Augmented AVL-tree. Original by Michael H. Buselli . Modified by Wessel Dankers to add a bunch of bloat to the sourcecode, change the interface and squash a few bugs. Mail him if you find new bugs. *****************************************************************************/ #include #include #include #include "avl.h" static void avl_rebalance(avl_tree_t *, avl_node_t *); #ifdef AVL_COUNT #define NODE_COUNT(n) ((n) ? (n)->count : 0) #define L_COUNT(n) (NODE_COUNT((n)->left)) #define R_COUNT(n) (NODE_COUNT((n)->right)) #define CALC_COUNT(n) (L_COUNT(n) + R_COUNT(n) + 1) #endif #ifdef AVL_DEPTH #define NODE_DEPTH(n) ((n) ? (n)->depth : 0) #define L_DEPTH(n) (NODE_DEPTH((n)->left)) #define R_DEPTH(n) (NODE_DEPTH((n)->right)) #define CALC_DEPTH(n) ((L_DEPTH(n)>R_DEPTH(n)?L_DEPTH(n):R_DEPTH(n)) + 1) #endif #ifndef AVL_DEPTH /* Also known as ffs() (from BSD) */ static int lg(unsigned int u) { int r = 1; if(!u) return 0; if(u & 0xffff0000) { u >>= 16; r += 16; } if(u & 0x0000ff00) { u >>= 8; r += 8; } if(u & 0x000000f0) { u >>= 4; r += 4; } if(u & 0x0000000c) { u >>= 2; r += 2; } if(u & 0x00000002) r++; return r; } #endif static int avl_check_balance(avl_node_t *avlnode) { #ifdef AVL_DEPTH int d; d = R_DEPTH(avlnode) - L_DEPTH(avlnode); return d<-1?-1:d>1?1:0; #else /* int d; * d = lg(R_COUNT(avlnode)) - lg(L_COUNT(avlnode)); * d = d<-1?-1:d>1?1:0; */ #ifdef AVL_COUNT int pl, r; pl = lg(L_COUNT(avlnode)); r = R_COUNT(avlnode); if(r>>pl+1) return 1; if(pl<2 || r>>pl-2) return 0; return -1; #else #error No balancing possible. #endif #endif } #ifdef AVL_COUNT unsigned int avl_count(const avl_tree_t *avltree) { return NODE_COUNT(avltree->top); } avl_node_t *avl_at(const avl_tree_t *avltree, unsigned int index) { avl_node_t *avlnode; unsigned int c; avlnode = avltree->top; while(avlnode) { c = L_COUNT(avlnode); if(index < c) { avlnode = avlnode->left; } else if(index > c) { avlnode = avlnode->right; index -= c+1; } else { return avlnode; } } return NULL; } unsigned int avl_index(const avl_node_t *avlnode) { avl_node_t *next; unsigned int c; c = L_COUNT(avlnode); while((next = avlnode->parent)) { if(avlnode == next->right) c += L_COUNT(next) + 1; avlnode = next; } return c; } #endif int avl_search_closest(const avl_tree_t *avltree, const void *item, avl_node_t **avlnode) { avl_node_t *node; avl_compare_t cmp; int c; if(!avlnode) avlnode = &node; node = avltree->top; if(!node) return *avlnode = NULL, 0; cmp = avltree->cmp; for(;;) { c = cmp(item, node->item); if(c < 0) { if(node->left) node = node->left; else return *avlnode = node, -1; } else if(c > 0) { if(node->right) node = node->right; else return *avlnode = node, 1; } else { return *avlnode = node, 0; } } } /* * avl_search: * Return a pointer to a node with the given item in the tree. * If no such item is in the tree, then NULL is returned. */ avl_node_t *avl_search(const avl_tree_t *avltree, const void *item) { avl_node_t *node; return avl_search_closest(avltree, item, &node) ? NULL : node; } avl_tree_t *avl_init_tree(avl_tree_t *rc, avl_compare_t cmp, avl_freeitem_t freeitem) { if(rc) { rc->head = NULL; rc->tail = NULL; rc->top = NULL; rc->cmp = cmp; rc->freeitem = freeitem; } return rc; } avl_tree_t *avl_alloc_tree(avl_compare_t cmp, avl_freeitem_t freeitem) { return avl_init_tree(malloc(sizeof(avl_tree_t)), cmp, freeitem); } void avl_clear_tree(avl_tree_t *avltree) { avltree->top = avltree->head = avltree->tail = NULL; } void avl_free_nodes(avl_tree_t *avltree) { avl_node_t *node, *next; avl_freeitem_t freeitem; freeitem = avltree->freeitem; for(node = avltree->head; node; node = next) { next = node->next; if(freeitem) freeitem(node->item); free(node); } avl_clear_tree(avltree); } /* * avl_free_tree: * Free all memory used by this tree. If freeitem is not NULL, then * it is assumed to be a destructor for the items referenced in the avl_ * tree, and they are deleted as well. */ void avl_free_tree(avl_tree_t *avltree) { avl_free_nodes(avltree); free(avltree); } static void avl_clear_node(avl_node_t *newnode) { newnode->left = newnode->right = NULL; #ifdef AVL_COUNT newnode->count = 1; #endif #ifdef AVL_DEPTH newnode->depth = 1; #endif } avl_node_t *avl_init_node(avl_node_t *newnode, void *item) { if(newnode) { avl_clear_node(newnode); newnode->item = item; } return newnode; } avl_node_t *avl_insert_top(avl_tree_t *avltree, avl_node_t *newnode) { avl_clear_node(newnode); newnode->prev = newnode->next = newnode->parent = NULL; avltree->head = avltree->tail = avltree->top = newnode; return newnode; } avl_node_t *avl_insert_before(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { if(!node) return avltree->tail ? avl_insert_after(avltree, avltree->tail, newnode) : avl_insert_top(avltree, newnode); if(node->left) return avl_insert_after(avltree, node->prev, newnode); avl_clear_node(newnode); newnode->next = node; newnode->parent = node; newnode->prev = node->prev; if(node->prev) node->prev->next = newnode; else avltree->head = newnode; node->prev = newnode; node->left = newnode; avl_rebalance(avltree, node); return newnode; } avl_node_t *avl_insert_after(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { if(!node) return avltree->head ? avl_insert_before(avltree, avltree->head, newnode) : avl_insert_top(avltree, newnode); if(node->right) return avl_insert_before(avltree, node->next, newnode); avl_clear_node(newnode); newnode->prev = node; newnode->parent = node; newnode->next = node->next; if(node->next) node->next->prev = newnode; else avltree->tail = newnode; node->next = newnode; node->right = newnode; avl_rebalance(avltree, node); return newnode; } avl_node_t *avl_insert_node(avl_tree_t *avltree, avl_node_t *newnode) { avl_node_t *node; if(!avltree->top) return avl_insert_top(avltree, newnode); switch(avl_search_closest(avltree, newnode->item, &node)) { case -1: return avl_insert_before(avltree, node, newnode); case 1: return avl_insert_after(avltree, node, newnode); } return NULL; } /* * avl_insert: * Create a new node and insert an item there. * Returns the new node on success or NULL if no memory could be allocated. */ avl_node_t *avl_insert(avl_tree_t *avltree, void *item) { avl_node_t *newnode; newnode = avl_init_node(malloc(sizeof(avl_node_t)), item); if(newnode) { if(avl_insert_node(avltree, newnode)) return newnode; free(newnode); errno = EEXIST; } return NULL; } /* * avl_unlink_node: * Removes the given node. Does not delete the item at that node. * The item of the node may be freed before calling avl_unlink_node. * (In other words, it is not referenced by this function.) */ void avl_unlink_node(avl_tree_t *avltree, avl_node_t *avlnode) { avl_node_t *parent; avl_node_t **superparent; avl_node_t *subst, *left, *right; avl_node_t *balnode; if(avlnode->prev) avlnode->prev->next = avlnode->next; else avltree->head = avlnode->next; if(avlnode->next) avlnode->next->prev = avlnode->prev; else avltree->tail = avlnode->prev; parent = avlnode->parent; superparent = parent ? avlnode == parent->left ? &parent->left : &parent->right : &avltree->top; left = avlnode->left; right = avlnode->right; if(!left) { *superparent = right; if(right) right->parent = parent; balnode = parent; } else if(!right) { *superparent = left; left->parent = parent; balnode = parent; } else { subst = avlnode->prev; if(subst == left) { balnode = subst; } else { balnode = subst->parent; balnode->right = subst->left; if(balnode->right) balnode->right->parent = balnode; subst->left = left; left->parent = subst; } subst->right = right; subst->parent = parent; right->parent = subst; *superparent = subst; } avl_rebalance(avltree, balnode); } void *avl_delete_node(avl_tree_t *avltree, avl_node_t *avlnode) { void *item = NULL; if(avlnode) { item = avlnode->item; avl_unlink_node(avltree, avlnode); if(avltree->freeitem) avltree->freeitem(item); free(avlnode); } return item; } void *avl_delete(avl_tree_t *avltree, const void *item) { return avl_delete_node(avltree, avl_search(avltree, item)); } avl_node_t *avl_fixup_node(avl_tree_t *avltree, avl_node_t *newnode) { avl_node_t *oldnode = NULL, *node; if(!avltree || !newnode) return NULL; node = newnode->prev; if(node) { oldnode = node->next; node->next = newnode; } else { avltree->head = newnode; } node = newnode->next; if(node) { oldnode = node->prev; node->prev = newnode; } else { avltree->tail = newnode; } node = newnode->parent; if(node) { if(node->left == oldnode) node->left = newnode; else node->right = newnode; } else { oldnode = avltree->top; avltree->top = newnode; } return oldnode; } /* * avl_rebalance: * Rebalances the tree if one side becomes too heavy. This function * assumes that both subtrees are AVL-trees with consistant data. The * function has the additional side effect of recalculating the count of * the tree at this node. It should be noted that at the return of this * function, if a rebalance takes place, the top of this subtree is no * longer going to be the same node. */ void avl_rebalance(avl_tree_t *avltree, avl_node_t *avlnode) { avl_node_t *child; avl_node_t *gchild; avl_node_t *parent; avl_node_t **superparent; parent = avlnode; while(avlnode) { parent = avlnode->parent; superparent = parent ? avlnode == parent->left ? &parent->left : &parent->right : &avltree->top; switch(avl_check_balance(avlnode)) { case -1: child = avlnode->left; #ifdef AVL_DEPTH if(L_DEPTH(child) >= R_DEPTH(child)) { #else #ifdef AVL_COUNT if(L_COUNT(child) >= R_COUNT(child)) { #else #error No balancing possible. #endif #endif avlnode->left = child->right; if(avlnode->left) avlnode->left->parent = avlnode; child->right = avlnode; avlnode->parent = child; *superparent = child; child->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); #endif } else { gchild = child->right; avlnode->left = gchild->right; if(avlnode->left) avlnode->left->parent = avlnode; child->right = gchild->left; if(child->right) child->right->parent = child; gchild->right = avlnode; if(gchild->right) gchild->right->parent = gchild; gchild->left = child; if(gchild->left) gchild->left->parent = gchild; *superparent = gchild; gchild->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); gchild->count = CALC_COUNT(gchild); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); gchild->depth = CALC_DEPTH(gchild); #endif } break; case 1: child = avlnode->right; #ifdef AVL_DEPTH if(R_DEPTH(child) >= L_DEPTH(child)) { #else #ifdef AVL_COUNT if(R_COUNT(child) >= L_COUNT(child)) { #else #error No balancing possible. #endif #endif avlnode->right = child->left; if(avlnode->right) avlnode->right->parent = avlnode; child->left = avlnode; avlnode->parent = child; *superparent = child; child->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); #endif } else { gchild = child->left; avlnode->right = gchild->left; if(avlnode->right) avlnode->right->parent = avlnode; child->left = gchild->right; if(child->left) child->left->parent = child; gchild->left = avlnode; if(gchild->left) gchild->left->parent = gchild; gchild->right = child; if(gchild->right) gchild->right->parent = gchild; *superparent = gchild; gchild->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); gchild->count = CALC_COUNT(gchild); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); gchild->depth = CALC_DEPTH(gchild); #endif } break; default: #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); #endif } avlnode = parent; } } eaf/src/eaf/avl.h0000644000175000017500000001677514160346517013443 0ustar nileshnilesh/***************************************************************************** avl.h - Source code for the AVL-tree library. Copyright (C) 1998 Michael H. Buselli Copyright (C) 2000-2002 Wessel Dankers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Augmented AVL-tree. Original by Michael H. Buselli . Modified by Wessel Dankers to add a bunch of bloat to the sourcecode, change the interface and squash a few bugs. Mail him if you find new bugs. *****************************************************************************/ #ifndef _AVL_H #define _AVL_H #define AVL_DEPTH /* We need either depths, counts or both (the latter being the default) */ #if !defined(AVL_DEPTH) && !defined(AVL_COUNT) #define AVL_DEPTH #define AVL_COUNT #endif /* User supplied function to compare two items like strcmp() does. * For example: cmp(a,b) will return: * -1 if a < b * 0 if a = b * 1 if a > b */ typedef int (*avl_compare_t)(const void *, const void *); /* User supplied function to delete an item when a node is free()d. * If NULL, the item is not free()d. */ typedef void (*avl_freeitem_t)(void *); typedef struct avl_node_t { struct avl_node_t *next; struct avl_node_t *prev; struct avl_node_t *parent; struct avl_node_t *left; struct avl_node_t *right; void *item; #ifdef AVL_COUNT unsigned int count; #endif #ifdef AVL_DEPTH unsigned char depth; #endif /* The following members are necessary only to determine the attainment indicators. * set - set of the input point responsible for the promotion of this point * promoter - point from a lower (previous) level that is also responsible for the promotion of this point. * remover - point from the same level as this point that dominates this point. (Point * that removed this point from its level). * equal - point from a higher (next) level that is equal to this point (this point is equal's promoter) * * This point is attained by 'set' and by the same sets that attains its promoter. It is also * attained by any set that attains its remover. It is also attained by every set that attains * any point equal to itself. */ int set; struct avl_node_t *promoter; struct avl_node_t *remover; struct avl_node_t *equal; } avl_node_t; typedef struct avl_tree_t { avl_node_t *head; avl_node_t *tail; avl_node_t *top; avl_compare_t cmp; avl_freeitem_t freeitem; } avl_tree_t; /* Initializes a new tree for elements that will be ordered using * the supplied strcmp()-like function. * Returns the value of avltree (even if it's NULL). * O(1) */ extern avl_tree_t *avl_init_tree(avl_tree_t *avltree, avl_compare_t, avl_freeitem_t); /* Allocates and initializes a new tree for elements that will be * ordered using the supplied strcmp()-like function. * Returns NULL if memory could not be allocated. * O(1) */ extern avl_tree_t *avl_alloc_tree(avl_compare_t, avl_freeitem_t); /* Frees the entire tree efficiently. Nodes will be free()d. * If the tree's freeitem is not NULL it will be invoked on every item. * O(n) */ extern void avl_free_tree(avl_tree_t *); /* Reinitializes the tree structure for reuse. Nothing is free()d. * Compare and freeitem functions are left alone. * O(1) */ extern void avl_clear_tree(avl_tree_t *); /* Free()s all nodes in the tree but leaves the tree itself. * If the tree's freeitem is not NULL it will be invoked on every item. * O(n) */ extern void avl_free_nodes(avl_tree_t *); /* Initializes memory for use as a node. Returns NULL if avlnode is NULL. * O(1) */ extern avl_node_t *avl_init_node(avl_node_t *avlnode, void *item); /* Insert an item into the tree and return the new node. * Returns NULL and sets errno if memory for the new node could not be * allocated or if the node is already in the tree (EEXIST). * O(lg n) */ extern avl_node_t *avl_insert(avl_tree_t *, void *item); /* Insert a node into the tree and return it. * Returns NULL if the node is already in the tree. * O(lg n) */ extern avl_node_t *avl_insert_node(avl_tree_t *, avl_node_t *); /* Insert a node in an empty tree. If avlnode is NULL, the tree will be * cleared and ready for re-use. * If the tree is not empty, the old nodes are left dangling. * O(1) */ extern avl_node_t *avl_insert_top(avl_tree_t *, avl_node_t *avlnode); /* Insert a node before another node. Returns the new node. * If old is NULL, the item is appended to the tree. * O(lg n) */ extern avl_node_t *avl_insert_before(avl_tree_t *, avl_node_t *old, avl_node_t *new); /* Insert a node after another node. Returns the new node. * If old is NULL, the item is prepended to the tree. * O(lg n) */ extern avl_node_t *avl_insert_after(avl_tree_t *, avl_node_t *old, avl_node_t *new); /* Deletes a node from the tree. Returns immediately if the node is NULL. * The item will not be free()d regardless of the tree's freeitem handler. * This function comes in handy if you need to update the search key. * O(lg n) */ extern void avl_unlink_node(avl_tree_t *, avl_node_t *); /* Deletes a node from the tree. Returns immediately if the node is NULL. * If the tree's freeitem is not NULL, it is invoked on the item. * If it is, returns the item. * O(lg n) */ extern void *avl_delete_node(avl_tree_t *, avl_node_t *); /* Searches for an item in the tree and deletes it if found. * If the tree's freeitem is not NULL, it is invoked on the item. * If it is, returns the item. * O(lg n) */ extern void *avl_delete(avl_tree_t *, const void *item); /* If exactly one node is moved in memory, this will fix the pointers * in the tree that refer to it. It must be an exact shallow copy. * Returns the pointer to the old position. * O(1) */ extern avl_node_t *avl_fixup_node(avl_tree_t *, avl_node_t *new); /* Searches for a node with the key closest (or equal) to the given item. * If avlnode is not NULL, *avlnode will be set to the node found or NULL * if the tree is empty. Return values: * -1 if the returned node is greater * 0 if the returned node is equal or if the tree is empty * 1 if the returned node is smaller * O(lg n) */ extern int avl_search_closest(const avl_tree_t *, const void *item, avl_node_t **avlnode); /* Searches for the item in the tree and returns a matching node if found * or NULL if not. * O(lg n) */ extern avl_node_t *avl_search(const avl_tree_t *, const void *item); #ifdef AVL_COUNT /* Returns the number of nodes in the tree. * O(1) */ extern unsigned int avl_count(const avl_tree_t *); /* Searches a node by its rank in the list. Counting starts at 0. * Returns NULL if the index exceeds the number of nodes in the tree. * O(lg n) */ extern avl_node_t *avl_at(const avl_tree_t *, unsigned int); /* Returns the rank of a node in the list. Counting starts at 0. * O(lg n) */ extern unsigned int avl_index(const avl_node_t *); #endif #endif eaf/src/eaf/io_priv.h0000644000175000017500000001340214160346517014310 0ustar nileshnilesh#include #include #include /* for strerror() */ #include /* for errno */ #define PAGE_SIZE 4096 /* allocate one page at a time */ #define DATA_INC (PAGE_SIZE/sizeof(objective_t)) /* * Read an array of objective values from a stream. This function may * be called repeatedly to add data to an existing data set. * * nobjs : number of objectives, also the number of columns. */ int read_objective_t_data (const char *filename, objective_t **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p) { int nobjs = *nobjs_p; /* number of objectives (and columns). */ int *cumsizes = *cumsizes_p; /* cumulative sizes of data sets. */ int nsets = *nsets_p; /* number of data sets. */ objective_t *data = *data_p; int errorcode = 0; FILE *instream; if (filename == NULL) { instream = stdin; filename = stdin_name; /* used to diagnose errors. */ } else if (NULL == (instream = fopen (filename,"rb"))) { errprintf ("%s: %s", filename, strerror (errno)); return ERROR_FOPEN; } int ntotal; /* the current element of (*datap) */ int datasize; int sizessize; if (nsets == 0) { ntotal = 0; sizessize = 0; datasize = 0; } else { ntotal = nobjs * cumsizes[nsets - 1]; sizessize = ((nsets - 1) / DATA_INC + 1) * DATA_INC; datasize = ((ntotal - 1) / DATA_INC + 1) * DATA_INC; } /* if size is equal to zero, this is equivalent to free(). That is, reinitialize the data structures. */ cumsizes = realloc (cumsizes, sizessize * sizeof(int)); data = realloc (data, datasize * sizeof(objective_t)); /* skip over leading whitespace, comments and empty lines. */ int retval; /* return value for fscanf */ int column = 0, line = 0; do { line++; /* skip full lines starting with # */ retval = skip_comment_line (instream); } while (retval == 1); if (retval == EOF) { /* faster than !feof() */ warnprintf ("%s: file is empty.", filename); errorcode = READ_INPUT_FILE_EMPTY; goto read_data_finish; } do { /* beginning of data set */ if (nsets == sizessize) { sizessize += DATA_INC; cumsizes = realloc(cumsizes, sizessize * sizeof(int)); } cumsizes[nsets] = (nsets == 0) ? 0 : cumsizes[nsets - 1]; do { /* beginning of row */ column = 0; do { /* new column */ column++; objective_t number; if (fscanf (instream, objective_t_scanf_format, &number) != 1) { char buffer[64]; if (fscanf (instream, "%60[^ \t\r\n]", buffer) == EOF) { errprintf ("%s: line %d column %d: " "read error or EOF", filename, line, column); } else { errprintf ("%s: line %d column %d: " "could not convert string `%s' to double", filename, line, column, buffer); } errorcode = ERROR_CONVERSION; goto read_data_finish; } if (ntotal == datasize) { datasize += DATA_INC; data = realloc (data, datasize * sizeof(objective_t)); } data[ntotal] = number; ntotal++; DEBUG2(fprintf(stderr, "%s:%d:%d(%d) %d (set %d) = " point_printf_format "\n", filename, line, column, nobjs, cumsizes[nsets], nsets, (double)number)); /* skip possible trailing whitespace */ skip_trailing_whitespace(instream); retval = fscanf_newline(instream); } while (retval == 0); if (!nobjs) nobjs = column; else if (column == nobjs) ; /* OK */ else if (cumsizes[0] == 0) { /* just finished first row. */ errprintf ("%s: line %d: input has dimension %d" " while previous data has dimension %d", filename,line, column, nobjs); errorcode = READ_INPUT_WRONG_INITIAL_DIM; goto read_data_finish; } else { errprintf ("%s: line %d has different number of columns (%d)" " from first row (%d)\n", filename, line, column, nobjs); errorcode = ERROR_COLUMNS; goto read_data_finish; } cumsizes[nsets]++; /* look for an empty line */ line++; retval = skip_comment_line (instream); } while (retval == 0); nsets++; /* new data set */ DEBUG2(fprintf (stderr, "%s: set %d, read %d rows\n", filename, nsets, cumsizes[nsets - 1])); /* skip over successive empty lines */ do { line++; retval = skip_comment_line (instream); } while (retval == 1); } while (retval != EOF); /* faster than !feof() */ /* adjust to real size (saves memory but probably slower). */ cumsizes = realloc (cumsizes, nsets * sizeof(int)); data = realloc (data, ntotal * sizeof(objective_t)); read_data_finish: *nobjs_p = nobjs; *nsets_p = nsets; *cumsizes_p = cumsizes; *data_p = data; if (instream != stdin) fclose(instream); return errorcode; } #undef PAGE_SIZE #undef DATA_INC eaf/src/eaf/gcc.mk0000644000175000017500000000144514160346517013561 0ustar nileshnilesh# -*- Makefile-gmake -*- WARN_CFLAGS = -pedantic -Wall -Wextra SANITIZERS= -fsanitize=undefined -fsanitize=address ifeq ($(DEBUG), 0) OPT_CFLAGS ?= -O3 -DNDEBUG # Options -funroll-loops -ffast-math -msse -mfpmath=sse improve performance but are not portable. # Options -fstandard-precision=fast -ftree-vectorize are not well # supported in some versions/architectures. else OPT_CFLAGS += -g3 -O0 $(SANITIZERS) endif ifdef march MARCH=$(march) endif ifndef MARCH MARCH=native endif gcc-guess-march = $(strip $(shell $(CC) -march=$(MARCH) $(CFLAGS) -x c -S -\#\#\# - < /dev/null 2>&1 | \ grep -m 1 -e cc1 | grep -o -e "march=[^'\"]*" | head -n 1 | sed 's,march=,,')) ifeq ($(gcc-guess-march),) gcc-guess-march=unknown endif ifneq ($(MARCH),none) OPT_CFLAGS += -march=$(MARCH) endif eaf/src/eaf/io.c0000644000175000017500000001233514160346517013247 0ustar nileshnilesh/***************************************************************************** I/O functions --------------------------------------------------------------------- Copyright (c) 2005-2008 Carlos M. Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- TODO: things that may or may not improve reading performance. * different values for PAGE_SIZE. * reading whole lines and then sscanf the line. * mmaping the input file (or a big chunk of few megabytes), then read, then unmmap. *****************************************************************************/ #include #include #include "io.h" #include "common.h" /* FIXME: Do we need to handle the following weird files? */ /* fscanf (instream, "%*[ \t]"); retval = fscanf (instream, "%1[\r\n]", newline); // We do not consider that '\r\n' starts a new set. if (retval == 1 && newline[0] == '\r') fscanf (instream, "%*[\n]"); */ static inline void skip_trailing_whitespace (FILE * instream) { ignore_unused_result (fscanf (instream, "%*[ \t\r]")); } static inline int fscanf_newline(FILE * instream) { char newline[2]; return fscanf (instream, "%1[\n]", newline); } /* skip full lines starting with # */ static inline int skip_comment_line (FILE * instream) { char newline[2]; if (!fscanf (instream, "%1[#]%*[^\n]", newline)) /* and whitespace */ skip_trailing_whitespace(instream); return fscanf_newline(instream); } #define objective_t int #define objective_t_scanf_format "%d" #define read_objective_t_data read_int_data #include "io_priv.h" #undef objective_t #undef objective_t_scanf_format #undef read_objective_t_data #define objective_t double #define objective_t_scanf_format "%lf" #define read_objective_t_data read_double_data #include "io_priv.h" #undef objective_t #undef objective_t_scanf_format #undef read_objective_t_data #ifndef R_PACKAGE extern char *program_invocation_short_name; void fatal_error(const char *format,...) { va_list ap; fprintf(stderr, "%s: fatal error: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); exit(EXIT_FAILURE); } /* From: Edition 0.10, last updated 2001-07-06, of `The GNU C Library Reference Manual', for Version 2.3.x. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. */ void errprintf(const char *format,...) { va_list ap; fprintf(stderr, "%s: error: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); fprintf(stderr, "\n"); } /* End of copyright The GNU C Library Reference Manual */ void warnprintf(const char *format,...) { va_list ap; fprintf(stderr, "%s: warning: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); fprintf(stderr, "\n"); } void vector_fprintf (FILE *stream, const double * vector, int size) { int k; fprintf (stream, point_printf_format, vector[0]); for (k = 1; k < size; k++) fprintf (stream, point_printf_sep "" point_printf_format, vector[k]); } void vector_printf (const double *vector, int size) { vector_fprintf (stdout, vector, size); } int write_sets (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns) { int size = 0; int set = 0; for (set = 0; set < nruns; set++) { for (; size < cumsizes[set]; size++) { vector_fprintf (outfile, &data[ncols * size], ncols); fprintf (outfile, "\n"); } fprintf (outfile, "\n"); } return 0; } int write_sets_filtered (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns, const bool *write_p) { int size = 0; int set = 0; for (set = 0; set < nruns; set++) { for (; size < cumsizes[set]; size++) { if (write_p[size]) { vector_fprintf (outfile, &data[ncols * size], ncols); fprintf (outfile, "\n"); } } fprintf (outfile, "\n"); } return 0; } #endif eaf/src/eaf/eaf.h0000644000175000017500000001414614160346517013402 0ustar nileshnilesh/************************************************************************* eaf.h: prototypes and shared types of eaf and eaf-test --------------------------------------------------------------------- Copyright (c) 2006, 2007, 2008 Carlos Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- *************************************************************************/ #include #include #include #include #include #include "common.h" #ifdef R_PACKAGE #define R_NO_REMAP #include #define EAF_MALLOC(WHAT, NMEMB, TYPE) \ do { WHAT = malloc (NMEMB * sizeof(TYPE)); \ if (!WHAT) { \ Rf_error(__FILE__ ": %s = malloc (%u * %u) failed", \ #WHAT, (unsigned int) NMEMB, (unsigned int) sizeof(TYPE)); } \ } while (0) #else #define EAF_MALLOC(WHAT, NMEMB, TYPE) \ do { WHAT = malloc (NMEMB * sizeof(TYPE)); \ if (!WHAT) { perror (__FILE__ ": " #WHAT ); exit (EXIT_FAILURE); } \ } while(0) #endif #include "io.h" /* If the input are always integers, adjusting this type will certainly improve performance. */ #define objective_t double #if objective_t == double # define objective_MAX INFINITY # define objective_MIN -INFINITY # define objective_t_scanf_format "%lf" # define read_objective_t_data read_double_data #else # define objective_MAX INT_MAX # define objective_MIN INT_MIN # define objective_t_scanf_format "%d" # define read_objective_t_data read_int_data #endif #include "bit_array.h" typedef struct { int nobj; /* FIXME: there is no point to store this here. */ int nruns; size_t size; size_t maxsize; int nreallocs; bit_array *bit_attained; bool *attained; objective_t *data; } eaf_t; void eaf_print_attsurf (eaf_t *, FILE *coord_file, /* output file (coordinates) */ FILE *indic_file, /* output file (attainment indicators) */ FILE *diff_file); /* output file (difference nruns/2) */ eaf_t * eaf_create (int nobj, int nruns, int npoints); void eaf_delete (eaf_t * eaf); objective_t * eaf_store_point_help (eaf_t * eaf, int nobj, const int *save_attained); static inline int eaf_totalpoints (eaf_t **eaf, int n) { int totalpoints = 0; int k; for (k = 0; k < n; k++) { totalpoints += eaf[k]->size; } return totalpoints; } eaf_t ** eaf2d (const objective_t *data, /* the objective vectors */ const int *cumsize, /* the cumulative sizes of the runs */ int nruns, /* the number of runs */ const int *attlevel, /* the desired attainment levels */ int nlevels /* the number of att levels */ ); eaf_t ** eaf3d (objective_t *data, const int *cumsize, int nruns, const int *attlevel, const int nlevels); static inline eaf_t ** attsurf (objective_t *data, /* the objective vectors */ int nobj, /* the number of objectives */ const int *cumsize, /* the cumulative sizes of the runs */ int nruns, /* the number of runs */ const int *attlevel, /* the desired attainment levels */ int nlevels /* the number of att levels */ ) { switch (nobj) { case 2: return eaf2d (data, cumsize, nruns, attlevel, nlevels); break; case 3: return eaf3d (data, cumsize, nruns, attlevel, nlevels); break; default: fatal_error("this implementation only supports two or three dimensions.\n"); } } static inline void attained_left_right (const bit_array *attained, int division, int total, int *count_left, int *count_right) { eaf_assert (division < total); int count_l = 0; int count_r = 0; int k; for (k = 0; k < division; k++) if (bit_array_get(attained, k)) count_l++; for (k = division; k < total; k++) if (bit_array_get(attained, k)) count_r++; *count_left = count_l; *count_right = count_r; } static inline int percentile2level (double p, int n) { const double tolerance = sqrt(DBL_EPSILON); double x = (n * p) / 100.0; int level = (x - floor(x) <= tolerance) ? (int) floor(x) : (int) ceil(x); eaf_assert(level <= n); eaf_assert(level >= 0); if (level < 1) level = 1; return level; } #define cvector_assert(X) eaf_assert(X) #include "cvector.h" vector_define(vector_objective, objective_t) vector_define(vector_int, int) typedef struct { vector_objective xy; vector_int col; } eaf_polygon_t; #define eaf_compute_area eaf_compute_polygon eaf_polygon_t *eaf_compute_polygon (eaf_t **eaf, int nlevels); eaf_polygon_t *eaf_compute_polygon_old (eaf_t **eaf, int nlevels); void eaf_print_polygon (FILE* stream, eaf_t **eaf, int nlevels); eaf_polygon_t * eaf_compute_rectangles (eaf_t **eaf, int nlevels); eaf/src/eaf/eaf3d.c0000644000175000017500000005717714160346517013637 0ustar nileshnilesh/************************************************************************* eaf3d: Compute the empirical attainment function from a sequence of non-dominated point sets (three-objective case) --------------------------------------------------------------------- Copyright (c) 2009-2011 Andreia Guerreiro Carlos M. Fonseca Luis Paquete Manuel Lopez-Ibanez This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- *************************************************************************/ #include "eaf.h" #include "avl.h" #include #include #include #include #include #include #define max( a, b ) ( ((a) > (b)) ? (a) : (b) ) typedef struct dlnode { objective_t *x; /* The data vector */ struct dlnode *next; struct dlnode *prev; int set; } dlnode_t; typedef struct removed_list { avl_node_t *head; } removed_list_t; static removed_list_t * removed_list; static inline bool avl_tree_is_empty (const avl_tree_t *avltree) { return avltree->top == NULL; } static inline objective_t *node_point(const avl_node_t *node) { return (objective_t*) node->item; } static int compare_node(const void *p1, const void *p2) { const objective_t x1 = *((*(const dlnode_t **)p1)->x); const objective_t x2 = *((*(const dlnode_t **)p2)->x); return (x1 < x2) ? -1 : ( x1 > x2 ) ? 1 : 0; } /* Create a list of points, ordered by the third coordinate. */ static dlnode_t * setup_cdllist(objective_t *data, int d, const int *cumsize, int nsets) { dlnode_t **scratch; int n = cumsize[nsets - 1]; dlnode_t *head = malloc ((n + 1) * sizeof(dlnode_t)); head->x = data; head[0].set = 0; int i, k; for (i = 0, k = 0; i < n; i++) { if (i == cumsize[k]) k++; head[i+1].set = k; // ->x points to the first coordinate of each point. head[i+1].x = head[i].x + d ;// this will be fixed a few lines below... head[i+1].next = head[i].next; head[i+1].prev = head[i].prev; } head->x = NULL; // head contains no data scratch = malloc(n * sizeof(dlnode_t*)); for (i = 0; i < n; i++) scratch[i] = head + i + 1; // ->x points to the last coordinate of each point. for (i = 0; i < n; i++) scratch[i]->x--; // Sort according to the last coordinate. qsort(scratch, n, sizeof(dlnode_t*), compare_node); head->next = scratch[0]; scratch[0]->prev = head; for (i = 1; i < n; i++) { scratch[i-1]->next = scratch[i]; scratch[i]->prev = scratch[i-1]; } scratch[n-1]->next = head; head->prev = scratch[n-1]; // ->x points to the first coordinate. for (i = 0; i < n; i++) scratch[i]->x -= d - 1; free(scratch); return head; } /* FIXME: Why this variant in one single indirection and the eaf2d equivalent is 2. */ static int compare_tree_asc_x(const void *p1, const void *p2) { const objective_t x1 = *((const objective_t *)p1); const objective_t x2 = *((const objective_t *)p2); return (x1 < x2) ? -1 : (x1 > x2) ? 1 : 0; } static int compare_tree_desc_y( const void *p1, const void *p2) { const objective_t y1 = *((const objective_t *)p1+1); const objective_t y2 = *((const objective_t *)p2+1); return (y1 > y2) ? -1 : (y1 < y2) ? 1 : 0; } static int avl_search_closest_y(const avl_tree_t *avltree, const void *item, avl_node_t **avlnode) { avl_node_t *node; int c; if(!avlnode) avlnode = &node; node = avltree->top; if(!node) return *avlnode = NULL, 0; for(;;) { c = compare_tree_desc_y(item, node->item); if(c < 0) { if(node->left) node = node->left; else return *avlnode = node, -1; } else if(c > 0) { if(node->right) node = node->right; else return *avlnode = node, 1; } else { return *avlnode = node, 0; } } } static void find_all_promoters(avl_node_t * avlnode, int * dom_sets, int nruns) { avl_node_t *node = avlnode; while (node != NULL) { dom_sets[node->set] = 1; if (node->remover != NULL) find_all_promoters(node->remover, dom_sets, nruns); node = node->promoter; } node = avlnode->equal; while (node != NULL) { dom_sets[node->set] = 1; node = node->equal; } } /* Prints the list in the tree, ordered by the second dimension, from the highest value to the lowest. The values printed are the values from dimension 0 to dimension dim of each point */ static void printlist(avl_tree_t *avltree, int dim, FILE *outfile) { avl_node_t *aux; aux = avltree->head; int i; objective_t * val; while(aux){ val = (objective_t *)aux->item; //printf("-> "); for(i = 0; i < dim; i++){ fprintf(outfile, point_printf_format "\t", val[i]); } fprintf(outfile, "\n"); aux = aux->next; } } void printset(FILE* stream, avl_tree_t **set, int nset) { int i; fprintf(stream, "# sets\n----------------------\n"); for(i = 0; i < nset; i++){ if(set[i]->top != NULL) { fprintf (stream, "set: %d", i); printlist(set[i], 3, stream); } } } void printlevel(FILE * stream, avl_tree_t **level, int nset) { int i; fprintf (stream, "#levels\n-------------------\n"); for(i = 0; i < nset; i++){ if(level[i]->top != NULL){ fprintf (stream, "level: %d\n", i); printlist(level[i], 3, stream); } } } static int printlist_points_indic(avl_tree_t *avltree, int dim, int nruns, FILE *outfile, FILE *outfileindic) { avl_node_t *aux; aux = avltree->head; int * dom_sets = (int *) malloc(nruns * sizeof(int)); int i, k, totalp = 0; objective_t * val; while(aux){ val = (objective_t *)aux->item; if(outfile){ fprintf(outfile, point_printf_format, val[0]); for(i = 1; i < dim; i++){ fprintf(outfile, "\t" point_printf_format, val[i]); } fprintf(outfile, (outfile == outfileindic) ? "\t" : "\n"); } if(outfileindic){ for(k = 0; k < nruns; k++) dom_sets[k] = 0; find_all_promoters(aux, dom_sets, nruns); fprintf(outfileindic, "%d", dom_sets[0]); for(k = 1; k < nruns; k++){ fprintf(outfileindic, "\t%d", dom_sets[k]); } fprintf(outfileindic, "\n"); } aux = aux->next; totalp++; } free(dom_sets); return totalp; } /* Returns the total number of points printed */ int printoutput(avl_tree_t **level, int nset, int d, FILE **outfile, int noutfiles, FILE **outfileindic, int noutfilesi, int * attlevel, int nlevels){ int i, k, f, fi, totalp = 0; for(i = 0; i < nlevels; i++){ k = attlevel[i] - 1; f = (noutfiles > 1) ? i : 0; fi = (noutfilesi > 1) ? i : 0; if(level[k]->head != NULL){ totalp += printlist_points_indic(level[k], d, nset, (outfile ? outfile[f] : NULL), (outfileindic ? outfileindic[fi] : NULL)); } if(i < nlevels -1){ if(outfile) fprintf(outfile[f], "\n"); if(outfileindic && (outfile == NULL || outfile[f] != outfileindic[fi])){ fprintf(outfileindic[fi], "\n"); } } } return totalp; } static void print_list_indic(avl_tree_t * level, int nruns, FILE * indicfile){ int * dom_sets = (int *) malloc(nruns * sizeof(int)); avl_node_t * avlnode; avlnode = level->head; int i; while(avlnode){ for(i = 0; i < nruns; i++){ dom_sets[i] = 0; } find_all_promoters(avlnode, dom_sets, nruns); for(i = 0; i < nruns; i++){ fprintf(indicfile, "%d\t", dom_sets[i]); } fprintf(indicfile, "\n"); avlnode = avlnode->next; } free(dom_sets); } void printindic(avl_tree_t ** levels, int nruns, FILE ** indicfile, int nfiles, int * attlevel, int nlevels){ int i, k, f; for(i=0; i < nlevels; i++){ k = attlevel[i] - 1; f = (nfiles == 1) ? 0 : i; if(levels[k]->head != NULL){ print_list_indic(levels[k], nruns, indicfile[f]); } fprintf(indicfile[f], "\n"); } } void printitem(FILE * stream, objective_t *value, int dim) { int i; for (i = 0; i < dim; i++) fprintf (stream, "%f ", value[i]); fprintf (stream, "\n"); } void add2output(avl_tree_t *output, avl_node_t *tnode) { if(output->top != NULL){ output->tail->next = tnode; output->tail = tnode; }else{ avl_insert_top(output, tnode); } } void add2output_all(avl_tree_t *output, avl_tree_t *tree_add){ avl_node_t *node = tree_add->head; avl_unlink_node(tree_add, node); free(node->item); free(node); node = tree_add->tail; avl_unlink_node(tree_add, node); free(node->item); free(node); if(tree_add->head != NULL){ if(output->tail != NULL){ output->tail->next=tree_add->head; }else{ output->head=tree_add->head; } } } //this fuction is called only when item isn't dominated by any point in tree. //note: prevnode is above and at item's left, so any dominated point that it may dominate is at its right static void add2set(avl_tree_t *tree, avl_node_t *prevnode, avl_node_t *tnode, objective_t *item) { avl_init_node (tnode, item); if(node_point(prevnode)[0] == item[0]) prevnode = prevnode->prev; avl_insert_after (tree, prevnode, tnode); tnode = tnode->next; // tnode->next is dominated by item while (node_point(tnode)[1] >= item[1]) { avl_unlink_node(tree, tnode); avl_node_t *node = tnode; tnode = tnode->next; free(node); } } static void avl_add_promoter(avl_node_t *avlnode, int set, avl_node_t *promoter) { avlnode->set = set; avlnode->promoter = promoter; avlnode->remover = NULL; avlnode->equal = NULL; } static void add_removed(avl_node_t *node) { node->next = removed_list->head; removed_list->head = node; } static avl_node_t * add2level(avl_tree_t *tree, objective_t *item, avl_tree_t *output, int set, avl_node_t * promoter) { avl_node_t *prevnode; avl_node_t *aux; switch (avl_search_closest_y(tree, item, &prevnode)) { case -1: prevnode = prevnode->prev; break; case 0: prevnode = (node_point(prevnode)[0] > item[0]) ? prevnode : prevnode->prev; break; case 1: break; } //aux represents the point immediately below item. aux = prevnode->next; // A new point (item) is added, but only if it isn't dominated. if (node_point(aux)[0] > item[0]) { avl_node_t *tnode = malloc(sizeof(avl_node_t)); avl_init_node(tnode, item); avl_add_promoter(tnode, set, promoter); avl_node_t *newnode = tnode; avl_insert_after(tree, prevnode, tnode); tnode = tnode->prev; // tnode->prev is dominated by item while (node_point(tnode)[0] >= item[0]) { avl_unlink_node(tree,tnode); aux = tnode; tnode = tnode->prev; if (node_point(aux)[2] < item[2]) add2output(output, aux); else{ free(aux->item); add_removed(aux); aux->remover = newnode; } /* Each point that is removed from this level, becomes a final point but only if the point that dominates it (item) dominates it only from dimension 0 to 1. */ } return newnode; } else{ free(item); return NULL; } } static objective_t * copy_point(const objective_t * v) { objective_t *value = malloc(3 * sizeof(objective_t)); value[0] = v[0]; value[1] = v[1]; value[2] = v[2]; return value; } //at left or equal static avl_node_t * find_point_at_left(avl_tree_t *tree, objective_t *item){ avl_node_t *leftNode; if (avl_search_closest(tree, item, &leftNode) < 0) leftNode = leftNode->prev; return leftNode; } //below and not equal static avl_node_t * find_point_below(avl_tree_t *tree, objective_t *item){ avl_node_t *belowNode; if (avl_search_closest_y(tree, item, &belowNode) >= 0) belowNode = belowNode->next; return belowNode; } static objective_t * new_point(objective_t x1, objective_t x2, objective_t x3) { objective_t *value = malloc(3 * sizeof(objective_t)); value[0] = x1; value[1] = x2; value[2] = x3; return value; } void eaf3df(dlnode_t *list, avl_tree_t **set, avl_tree_t **level, avl_tree_t **output, int nset) { // point from some level immediately at new's left, corresponds to r in pseudocode avl_node_t *leftNodeL; /*levelNode[t] is the point being verified (possibly to be promoted) from level t, corresponds to s_t in pseudocode */ avl_node_t *levelNode[nset]; avl_node_t auxNodes[nset]; /* these points are needed to represent the intersections of new with the point, of each level, immediately at new's left */ objective_t auxValues[nset][2]; avl_node_t *promoters[nset]; dlnode_t *new = list->next; //new - represents the new point //add new to its set avl_node_t * tnode = avl_init_node(malloc(sizeof(avl_node_t)), new->x); avl_insert_after(set[new->set], set[new->set]->head, tnode); //new is the only point so far, so it is added to the first level tnode = avl_init_node(malloc(sizeof(avl_node_t)), copy_point(new->x)); avl_add_promoter(tnode, new->set, NULL); avl_insert_after(level[0], level[0]->head, tnode); bool mask[nset]; // needed to know how many different sets were considered so far memset(mask, false, nset * sizeof(mask[0])); mask[new->set] = true; int start_at = 0, stop_at; // indicates which levels must be verified (from and to which) // Points are sorted in ascending order with respect to the third coordinate. while (new->next->x != NULL) { new = new->next; /* newPrev: point from new's set immediately at its left, it corresponds to q in pseudocode. */ avl_node_t *newPrev = find_point_at_left(set[new->set], new->x); // if new is dominated by a point from its set, skip it. if (node_point(newPrev)[1] <= new->x[1]) { continue; } avl_node_t *dom_new = NULL; stop_at = 0; // First part int k; for(k = start_at; k >= stop_at; k--) { leftNodeL = find_point_at_left(level[k], new->x); // new is dominated by a point from level k if (node_point(leftNodeL)[1] <= new->x[1]) { dom_new = leftNodeL; stop_at = k + 1; } else if (node_point(leftNodeL)[1] < node_point(newPrev)[1]) { /* the intersection point of new with the point in level k immediately at new's left should be added to level k+1, so this intersection point is saved in levelNode in order to be added later */ auxValues[k][0] = new->x[0]; auxValues[k][1] = node_point(leftNodeL)[1]; auxNodes[k].item = auxValues[k]; auxNodes[k].next = leftNodeL->next; levelNode[k] = &auxNodes[k]; promoters[k] = leftNodeL; } else { levelNode[k] = find_point_below(level[k], newPrev->item); promoters[k] = levelNode[k]; } } /* setNode: a point from new's set at its right, it also corresponds to q in pseudocode. */ avl_node_t *setNode = newPrev; //Second part do { setNode = setNode->next; objective_t lbound = max(node_point(setNode)[1], new->x[1]); for (k = start_at; k >= stop_at; k--) { //while levelNode is dominated by new but not by any point from new's set, levelNode is promoted while (node_point(levelNode[k])[1] >= lbound && (node_point(levelNode[k])[1] > lbound || lbound > new->x[1])) { if (node_point(setNode)[0] <= node_point(levelNode[k])[0]) { levelNode[k] = find_point_below(level[k], setNode->item); promoters[k] = levelNode[k]; } else { objective_t *value = new_point(node_point(levelNode[k])[0], node_point(levelNode[k])[1], new->x[2]); tnode = add2level(level[k+1], value, output[k+1], new->set, promoters[k]); if(tnode != NULL && new->x[2] == node_point(promoters[k])[2] && node_point(levelNode[k])[0] == node_point(promoters[k])[0]){ promoters[k]->equal = tnode; } levelNode[k] = levelNode[k]->next; promoters[k] = levelNode[k]; } } } }while(node_point(setNode)[1] > new->x[1]); //Third part for(k = start_at; k >= stop_at; k--){ //if the intersection point of new with the point from level k immediately below new //isn't dominated, it is added to level k+1 if(node_point(levelNode[k])[0] < node_point(setNode)[0]){ objective_t *value; value = new_point(node_point(levelNode[k])[0], new->x[1], new->x[2]); tnode = add2level(level[k+1], value, output[k+1], new->set, promoters[k]); if(tnode != NULL && new->x[2] == node_point(levelNode[k])[2] && new->x[1] == node_point(levelNode[k])[1]){ promoters[k]->equal = tnode; } } } //add new to its set tnode = avl_init_node(malloc(sizeof(avl_node_t)), new->x); add2set(set[new->set], newPrev, tnode, new->x); //add new to the lowest level where it isn't dominated by any point from that level tnode = add2level(level[stop_at], copy_point(new->x), output[stop_at], new->set, dom_new); if(stop_at > 0 && tnode != NULL && new->x[2] == node_point(dom_new)[2] && new->x[1] == node_point(dom_new)[1] && new->x[0] == node_point(dom_new)[0]){ dom_new->equal = tnode; } if (!mask[new->set]) { if (start_at < (nset - 2)) start_at++; mask[new->set] = true; } } } static void freetree(avl_tree_t *avltree) { avl_node_t *aux, *aux2; aux=avltree->head; if(aux){ while(aux){ aux2 = aux; aux = aux2->next; free(aux2->item); free(aux2); } } free(avltree); } static void freetree2(avl_tree_t *avltree) { avl_node_t *aux, *aux2; aux=avltree->head; free(aux->item); while(aux->next){ aux2 = aux; aux = aux2->next; free(aux2); } free(aux->item); free(aux); free(avltree); } static void free_removed(removed_list_t * removed_list) { avl_node_t * aux, * node = removed_list->head; while(node != NULL){ aux = node; node = node->next; free(aux); } free(removed_list); } __unused static void freeoutput(avl_tree_t **output, int nset) { int i; for(i = 0; i < nset; i++){ freetree(output[i]); } free(output); free_removed(removed_list); } void add_sentinels(avl_tree_t * tree, int n) { objective_t *value = malloc(n * sizeof(objective_t)); value[0] = objective_MIN; value[1] = objective_MAX; avl_node_t *tnode = avl_init_node(malloc(sizeof(avl_node_t)), value); avl_insert_top(tree, tnode); value = malloc(n * sizeof(objective_t)); value[0] = objective_MAX; value[1] = objective_MIN; avl_node_t *tnode2 = avl_init_node(malloc(sizeof(avl_node_t)), value); avl_insert_after(tree, tnode, tnode2); } static void eaf_store_point_3d (eaf_t * eaf, objective_t x, objective_t y, objective_t z, const int *save_attained) { const int nobj = 3; objective_t * pos = eaf_store_point_help (eaf, nobj, save_attained); pos[0] = x; pos[1] = y; pos[2] = z; eaf->size++; } eaf_t ** eaf3d (objective_t *data, const int *cumsize, int nruns, const int *attlevel, const int nlevels) { const int nobj = 3; const int ntotal = cumsize[nruns - 1]; /* total number of points in data */ avl_tree_t **set = malloc (nruns * sizeof(avl_tree_t)); avl_tree_t **level = malloc (nruns * sizeof(avl_tree_t)); avl_tree_t **output = malloc (nruns * sizeof(avl_tree_t)); int i; for (i = 0; i < nruns; i++) { set[i] = avl_alloc_tree ((avl_compare_t) compare_tree_asc_x, (avl_freeitem_t) free); level[i] = avl_alloc_tree ((avl_compare_t) compare_tree_asc_x, (avl_freeitem_t) free); output[i] = avl_alloc_tree ((avl_compare_t) compare_tree_asc_x, (avl_freeitem_t) free); add_sentinels(set[i], nobj); add_sentinels(level[i], nobj); } removed_list = (removed_list_t *) malloc(sizeof(removed_list_t)); removed_list->head = NULL; dlnode_t *list = setup_cdllist(data, nobj, cumsize, nruns); eaf3df(list, set, level, output, nruns); for (i = 0; i < nruns; i++) { add2output_all(output[i], level[i]); } for(i=0; ihead; while (aux) { objective_t * val = aux->item; for(int j = 0; j < nruns; j++) attained[j] = 0; find_all_promoters(aux, attained, nruns); eaf_store_point_3d (eaf[l], val[0], val[1], val[2], attained); aux = aux->next; } } return eaf; } eaf/src/eaf/bit_array.h0000644000175000017500000000655714160346517014632 0ustar nileshnilesh/* A better implementation https://github.com/noporpoise/BitArray */ #include #include #include // malloc, calloc #include // memcpy typedef uint64_t bit_array, bit_array_word_t; typedef uint8_t word_offset_t; // Offset within a 64 bit word // number of bits per word static const size_t bit_array_word_size = sizeof(bit_array_word_t) * 8; static inline size_t bitset_index(const bit_array *b, size_t pos) { return(pos % (sizeof(*b)*8)); } static inline size_t bitset_word(const bit_array *b, size_t pos) { return(pos / (sizeof(*b)*8)); } static inline bit_array bitset_mask(size_t k) { return (bit_array)((bit_array)1 << k); } static inline void bit_array_set_one(bit_array * b, size_t i) { b[bitset_word(b, i)] |= bitset_mask(bitset_index(b,i)); } static inline void bit_array_set_zero(bit_array * b, size_t i) { b[bitset_word(b,i)] &=~ bitset_mask(bitset_index(b,i)); } static inline char bit_array_get(const bit_array * b, size_t i) { return (b[bitset_word(b,i)] >> bitset_index(b,i)) & 0x1; } static inline size_t bit_nwords(size_t nbits) { return (nbits + bit_array_word_size - 1) / bit_array_word_size; } static inline size_t bit_array_bytesize(size_t n) { return sizeof(bit_array_word_t) * bit_nwords(n); } static inline bit_array * bit_array_alloc(size_t n) { //fprintf(stderr, "n= %ld, word_size = %ld size = %ld\n", n, bit_array_word_size, bit_nwords(n)); return (bit_array *) malloc(bit_array_bytesize(n)); } static inline bit_array * bit_array_calloc(size_t n) { //fprintf(stderr, "word_size = %ld size = %ld", bit_array_word_size, bit_nwords(n)); return (bit_array *) calloc(bit_nwords(n), sizeof(bit_array_word_t)); } static inline bit_array * bit_array_realloc(bit_array *b, size_t n) { //fprintf(stderr, "word_size = %ld size = %ld", bit_array_word_size, bit_nwords(n)); return (bit_array *) realloc(b, bit_array_bytesize(n)); } static inline void bit_array_zero_all(bit_array *b, size_t n) { memset(b, 0, sizeof(bit_array_word_t) * bit_nwords(n)); } static inline void bit_array_set(bit_array * b, size_t i, bool x) { x ? bit_array_set_one(b, i) : bit_array_set_zero(b, i); } static inline void bitset_check(const bit_array *b __unused, const bool * ref __unused, size_t n) { for(size_t i = 0; i < n; i++) { if (bit_array_get(b, i) != ref[i]) { printf("bit_array_check_failed at %lu: %d != %d : %lu!\n", (unsigned long) i, bit_array_get(b, i), ref[i], (unsigned long) n); assert(false); abort(); } } } static inline bit_array * bit_array_offset(bit_array *b, size_t k, size_t nbits) { return b + k * bit_nwords(nbits); } static inline void bit_array_check (bit_array *b, const bool * ref, size_t n, size_t nbits) { for (size_t k = 0; k < n; k++) { // fprintf(stderr,"checking: k=%ld n=%ld, nbits=%ld offset=%ld\n", // k, n, nbits, k * bit_array_bytesize(nbits)); bitset_check(bit_array_offset(b, k, nbits), ref + k * nbits, nbits); } } static inline void bit_array_copy(bit_array * dest, const bit_array *src, size_t n) { memcpy(dest, src, sizeof(bit_array_word_t) * bit_nwords(n)); } static inline void bit_array_fprintf(FILE *stream, bit_array *b, size_t n) { for (size_t k = 0; k < n; k++) { fprintf(stream, "%d", bit_array_get(b, k) ? 1 : 0); } } eaf/src/eaf/io.h0000644000175000017500000000641314160346517013254 0ustar nileshnilesh#ifndef EAF_INPUT_OUTPUT_H #define EAF_INPUT_OUTPUT_H #include "common.h" #include #include #include #include #include static const char stdin_name[] = ""; // FIXME: Should this be %-16.15g ? #define point_printf_format "% 17.16g" #define point_printf_sep "\t" /* Error codes for read_data. */ enum ERROR_READ_DATA { READ_INPUT_FILE_EMPTY = -1, READ_INPUT_WRONG_INITIAL_DIM = -2, ERROR_FOPEN = -3, ERROR_CONVERSION = -4, ERROR_COLUMNS = -5, }; int read_int_data (const char *filename, int **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p); int read_double_data (const char *filename, double **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p); #ifndef R_PACKAGE void vector_fprintf (FILE *stream, const double * vector, int size); void vector_printf (const double *vector, int size); int write_sets (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns); int write_sets_filtered (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns, const bool *write_p); static inline const signed char * read_minmax (const char *str, int *nobj) { signed char * minmax; int i; if (str == NULL) { /* Default all minimised. */ assert (*nobj > 0); minmax = malloc (sizeof(signed char) * *nobj); for (i = 0; i < *nobj; i++) minmax[i] = -1; return minmax; } int len = strlen (str); bool all_ignored = true; minmax = malloc (sizeof(signed char) * MAX(len, *nobj)); for (i = 0; i < len; i++) { switch (str[i]) { case '+': minmax[i] = 1; all_ignored = false; break; case '-': minmax[i] = -1; all_ignored = false; break; case '0': case 'i': minmax[i] = 0; break; default: /* something unexpected was found */ return NULL; break; } } if (all_ignored == true) { warnprintf ("all objectives ignored because of --obj=%s\n", str); exit (EXIT_SUCCESS); } // FIXME: How to adjust minmax dynamically according to the number of objectives? if (len < *nobj) { // Cycle for (i = 0; i < (*nobj - len); i++) { minmax[len + i] = minmax[i]; } } *nobj = len; return minmax; } #endif static inline const bool * read_bitvector (const char *str, int *nobj) { bool * vec; int i; if (str == NULL) { /* Default all false. */ assert (*nobj > 0); vec = malloc (sizeof(bool) * *nobj); for (i = 0; i < *nobj; i++) vec[i] = false; return vec; } int len = strlen (str); vec = malloc (sizeof(bool) * len); for (i = 0; i < len; i++) { switch (str[i]) { case '1': vec[i] = true; break; case '0': vec[i] = false; break; default: /* something unexpected was found */ return NULL; } } *nobj = len; return vec; } #endif eaf/src/eaf/eaf.c0000644000175000017500000011031514160346517013370 0ustar nileshnilesh/************************************************************************* eaf: Computes the empirical attainment function (EAF) from a number of approximation sets. --------------------------------------------------------------------- Copyright (c) 2005 Carlos M. Fonseca Copyright (c) 2006, 2007, 2008, 2015 Carlos M. Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- *************************************************************************/ #include #include #include #include #include #include "eaf.h" #ifndef DEBUG #define DEBUG 0 #endif #ifndef DEBUG_POLYGONS #define DEBUG_POLYGONS 0 #endif //#define OLD_ATTAINED(X) do { X; } while(0); #define OLD_ATTAINED(X) while(0) { X; }; static int compare_x_asc (const void *p1, const void *p2) { objective_t x1 = **(objective_t **)p1; objective_t x2 = **(objective_t **)p2; return (x1 < x2) ? -1 : ((x1 > x2) ? 1 : 0); } static int compare_y_desc (const void *p1, const void *p2) { objective_t y1 = *(*(objective_t **)p1+1); objective_t y2 = *(*(objective_t **)p2+1); return (y1 > y2) ? -1 : ((y1 < y2) ? 1 : 0); } static inline void point2d_printf(FILE *stream, const objective_t x, const objective_t y) { fprintf(stream, point_printf_format "\t" point_printf_format, x, y); } static inline void point_printf(FILE *stream, const objective_t *p, int nobj) { point2d_printf(stream, p[0], p[1]); for (int k = 2; k < nobj; k++) fprintf (stream, "\t" point_printf_format, p[k]); } eaf_t * eaf_create (int nobj, int nruns, int npoints) { eaf_t *eaf; EAF_MALLOC (eaf, 1, eaf_t); eaf->nobj = nobj; eaf->nruns = nruns; eaf->size = 0; eaf->nreallocs = 0; /* Maximum is npoints, but normally it will be smaller, so at most log2(2 * nruns) realloc will occur. */ eaf->maxsize = 256 + npoints / (2 * nruns); /* fprintf(stderr,"maxsize %ld = %d npoints, %d nruns\n", */ /* eaf->maxsize, npoints, nruns); */ EAF_MALLOC (eaf->data, nobj * eaf->maxsize, objective_t); eaf->bit_attained = malloc (bit_array_bytesize(nruns) * eaf->maxsize); eaf->attained = NULL; OLD_ATTAINED(eaf->attained = malloc(sizeof(bool) * nruns * eaf->maxsize)); return eaf; } void eaf_delete (eaf_t * eaf) { free (eaf->data); OLD_ATTAINED(free (eaf->attained)); free (eaf->bit_attained); free (eaf); } void eaf_realloc(eaf_t * eaf, size_t nobj) { const int nruns = eaf->nruns; eaf->data = realloc (eaf->data, sizeof(objective_t) * nobj * eaf->maxsize); eaf_assert(eaf->data); OLD_ATTAINED( eaf->attained = realloc (eaf->attained, sizeof(bool) * nruns * eaf->maxsize); eaf_assert(eaf->attained); ); eaf->bit_attained = realloc (eaf->bit_attained, bit_array_bytesize(nruns) * eaf->maxsize); eaf_assert(eaf->bit_attained); } objective_t * eaf_store_point_help (eaf_t * eaf, int nobj, const int *save_attained) { const int nruns = eaf->nruns; if (eaf->size == eaf->maxsize) { eaf_assert (eaf->size < INT_MAX / 2); //size_t old_maxsize = eaf->maxsize; eaf->maxsize = (size_t) (eaf->maxsize * (1.0 + 1.0 / pow(2, eaf->nreallocs / 4.0))); eaf->maxsize += 100; // At least we increase it by 100 points /* fprintf(stderr,"maxsize (%d): %ld -> %ld\n", eaf->nreallocs, */ /* old_maxsize, eaf->maxsize); */ eaf->nreallocs++; // FIXME: We could save memory by only storing eaf->attained per point if requested. eaf_realloc(eaf, nobj); } // FIXME: provide a bit_array function to do this. for (int k = 0; k < nruns; k++) { bit_array_set(bit_array_offset(eaf->bit_attained, eaf->size, nruns), k, (bool) save_attained[k]); OLD_ATTAINED(eaf->attained[nruns * eaf->size + k] = (bool) save_attained[k]); } OLD_ATTAINED( bitset_check(bit_array_offset(eaf->bit_attained, eaf->size, eaf->nruns), eaf->attained + eaf->size * eaf->nruns, eaf->nruns)); return eaf->data + nobj * eaf->size; } static void eaf_adjust_memory (eaf_t * eaf, int nobj) { if (eaf->size < eaf->maxsize) { //fprintf(stderr,"reduce size: %ld -> %ld\n", eaf->maxsize, eaf->size); eaf->maxsize = eaf->size; eaf_realloc(eaf, nobj); } OLD_ATTAINED( bit_array_check(eaf->bit_attained, eaf->attained, eaf->size, eaf->nruns)); } static void eaf_store_point_2d (eaf_t * eaf, objective_t x, objective_t y, const int *save_attained) { const int nobj = 2; objective_t * pos = eaf_store_point_help (eaf, nobj, save_attained); pos[0] = x; pos[1] = y; eaf->size++; } static void eaf_print_line (FILE *coord_file, FILE *indic_file, FILE *diff_file, const objective_t *x, int nobj, const bit_array *attained, int nruns) { int count1 = 0; int count2 = 0; int k; if (coord_file) { point_printf(coord_file, x, nobj); fprintf (coord_file, (coord_file == indic_file) || (coord_file == diff_file) ? "\t" : "\n"); } if (indic_file) { fprintf (indic_file, "%d", bit_array_get(attained, 0) ? (count1++,1) : 0); for (k = 1; k < nruns/2; k++) fprintf (indic_file, "\t%d", bit_array_get(attained, k) ? (count1++,1) : 0); for (k = nruns/2; k < nruns; k++) fprintf (indic_file, "\t%d", bit_array_get(attained, k) ? (count2++,1) : 0); fprintf (indic_file, (indic_file == diff_file) ? "\t" : "\n"); } else if (diff_file) { attained_left_right (attained, nruns/2, nruns, &count1, &count2); } if (diff_file) fprintf (diff_file,"%d\t%d\n", count1, count2); } /* Print one attainment surface of the EAF. */ void eaf_print_attsurf (eaf_t * eaf, FILE *coord_file, FILE *indic_file, FILE *diff_file) { OLD_ATTAINED( bit_array_check(eaf->bit_attained, eaf->attained, eaf->size, eaf->nruns)); for (size_t i = 0; i < eaf->size; i++) { const objective_t *p = eaf->data + i * eaf->nobj; /* bit_array_fprintf(stderr, eaf->bit_attained, eaf->nruns * eaf->size); */ OLD_ATTAINED(bitset_check(bit_array_offset(eaf->bit_attained, i, eaf->nruns), eaf->attained + i * eaf->nruns, eaf->nruns)); eaf_print_line (coord_file, indic_file, diff_file, p, eaf->nobj, bit_array_offset(eaf->bit_attained, i, eaf->nruns), eaf->nruns); } } static inline void fprint_set2d (FILE *stream, const objective_t * const *data, int ntotal) { for (int k = 0; k < ntotal; k++) fprintf (stream, "%6d: " point_printf_format " " point_printf_format "\n", k, data[k][0], data[k][1]); } /* eaf2d: compute attainment surfaces from points in objective space, using dimension sweeping. Input arguments: data : a pointer to the data matrix, stored as a linear array of objective_t in row major order. cumsize : an array containing the cumulative number of rows in each non-dominated front (must be non-decreasing). nruns : the number of independent non-dominated fronts. attlevel : an array containing the attainment levels to compute. nlevel : number of attainment levels to compute. coord_file : stream to write the resulting attainment surfaces. indic_file : stream to write the resulting attainment indices. diff_file : stream to write the difference between the the first half and the second half of nruns. */ eaf_t ** eaf2d (const objective_t *data, const int *cumsize, int nruns, const int *attlevel, const int nlevels) { const int nobj = 2; eaf_t **eaf; const objective_t **datax, **datay; /* used to access the data sorted according to x or y */ const int ntotal = cumsize[nruns - 1]; /* total number of points in data */ int *runtab; int *attained, *save_attained; int k, j, l; /* Access to the data is made via two arrays of pointers: ix, iy These are sorted, to allow for dimension sweeping */ datax = malloc (ntotal * sizeof(objective_t *)); datay = malloc (ntotal * sizeof(objective_t *)); for (k = 0; k < ntotal ; k++) datax[k] = datay[k] = data + nobj * k; #if DEBUG > 1 fprintf (stderr, "Original data:\n"); fprint_set2d (stderr, datax, ntotal); #endif qsort (datax, ntotal, sizeof(*datax), &compare_x_asc); qsort (datay, ntotal, sizeof(*datay), &compare_y_desc); #if DEBUG > 1 fprintf (stderr, "Sorted data (x):\n"); fprint_set2d (stderr, datax, ntotal); fprintf (stderr, "Sorted data (y):\n"); fprint_set2d (stderr, datay, ntotal); #endif /* Setup a lookup table to go from a point to the approximation set (run) to which it belongs. */ runtab = malloc (ntotal * sizeof(int)); for (k = 0, j = 0; k < ntotal; k++) { if (k == cumsize[j]) j++; runtab[k] = j; } #if DEBUG > 1 fprintf (stderr, "Runtab:\n"); for (k = 0; k < ntotal; k++) fprintf (stderr, "%6d: %6d\n", k, runtab[k]); #endif /* Setup tables to keep attainment statistics. In particular, save_attained is needed to cope with repeated values on the same axis. */ attained = malloc (nruns * sizeof(int)); save_attained = malloc (nruns * sizeof(int)); eaf = malloc(nlevels * sizeof(eaf_t*)); for (l = 0; l < nlevels; l++) { eaf[l] = eaf_create (nobj, nruns, ntotal); int level = attlevel[l]; int x = 0; int y = 0; int nattained = 0; for (k = 0; k < nruns; k++) attained[k] = 0; /* Start at upper-left corner */ int run = runtab[(datax[x] - data) / nobj]; attained[run]++; nattained++; do { /* Move right until desired attainment level is reached */ while (x < ntotal - 1 && (nattained < level || datax[x][0] == datax[x+1][0])) { x++; if (datax[x][1] <= datay[y][1]) { run = runtab[(datax[x] - data)/nobj]; if (!attained[run]) nattained++; attained[run]++; } } #if DEBUG > 1 for (k = 0; k < nruns; k++) fprintf (stderr, "%d ", attained[k]); fprintf (stderr, "\n"); #endif if (nattained < level) continue; /* Now move down until desired attainment level is no longer reached. */ do { /* If there are repeated values along the y axis, we need to remember where we are. */ /*save_nattained = nattained;*/ memcpy (save_attained, attained, nruns * sizeof(*attained)); do { if (datay[y][0] <= datax[x][0]) { run = runtab[(datay[y] - data)/nobj]; attained[run]--; if (!attained[run]) nattained--; } #if DEBUG > 1 for (k = 0; k < nruns; k++) fprintf (stderr, "%d ", attained[k]); fprintf (stderr, "\n"); #endif y++; } while (y < ntotal && datay[y][1] == datay[y - 1][1]); } while (nattained >= level && y < ntotal); eaf_assert (nattained < level); eaf_store_point_2d (eaf[l], datax[x][0], datay[y - 1][1], save_attained); } while (x < ntotal - 1 && y < ntotal); eaf_adjust_memory(eaf[l], nobj); } free(save_attained); free(attained); free(runtab); free(datay); free(datax); return eaf; } #if DEBUG_POLYGONS > 0 #define PRINT_POINT(X,Y,C) do { \ fprintf(stdout, "PRINT_POINT:"); point2d_printf(stdout, X, Y); \ if (C != INT_MIN) fprintf(stdout, "\t%d", C); \ fprintf(stdout, "\n"); } while(0) #else #define PRINT_POINT(X,Y,C) (void)0 #endif static int eaf_max_size(eaf_t * const * eaf, int nlevels) { size_t max_size = 0; for (int a = 0; a < nlevels; a++) { if (max_size < eaf[a]->size) max_size = eaf[a]->size; } return max_size; } static int eaf_diff_color(const eaf_t * eaf, size_t k, int nruns) { const bit_array *bit_attained = bit_array_offset(eaf->bit_attained, k, nruns); OLD_ATTAINED( const bool *attained = eaf->attained + k * nruns; bitset_check(bit_attained, attained, nruns);); int count_left, count_right; attained_left_right (bit_attained, nruns/2, nruns, &count_left, &count_right); return count_left - count_right; } static void init_colors(int * color, const eaf_t * eaf, size_t eaf_size, int nruns) { for (size_t k = 0; k < eaf_size; k++) { color[k] = eaf_diff_color(eaf, k, nruns); } } static const objective_t * next_polygon(const objective_t *src, int nobj, const objective_t * end) { while (src < end && *src != objective_MIN) src += nobj; src += nobj; return src; } static void min_max_in_objective(const objective_t *v, int nobj, int k, objective_t *min_ref, objective_t *max_ref) { eaf_assert(k < nobj); eaf_assert(v[k] != objective_MIN); // Empty polygon? objective_t min = v[k]; objective_t max = v[k]; v += nobj; while (v[k] != objective_MIN) { if (min > v[k]) min = v[k]; if (max < v[k]) max = v[k]; v += nobj; } *min_ref = min; *max_ref = max; } static bool polygon_dominates_point(const objective_t *p, const objective_t *x, int nobj) { eaf_assert(x[0] != objective_MIN); while (p[0] != objective_MIN) { if (p[0] < x[0] && p[1] < x[1]) { /* point2d_printf(stdout, p[0], p[1]); */ /* printf(" dominates "); */ /* point2d_printf(stdout, x[0], x[1]); */ /* printf("\n"); */ return true; } p += nobj; } return false; } static bool polygon_dominates_any_point(const objective_t *a, const objective_t *b, int nobj) { while (b[0] != objective_MIN) { if (polygon_dominates_point(a, b, nobj)) return true; b += nobj; } return false; } static bool polygons_intersect(const objective_t *a, const objective_t *b, int nobj) { for (int k = 0; k < nobj; k++) { objective_t min_a, max_a, min_b, max_b; min_max_in_objective(a, nobj, k, &min_a, &max_a); min_max_in_objective(b, nobj, k, &min_b, &max_b); // If we can draw a line completely separating them in one axis, then // they don't intersect. if (max_a <= min_b || max_b <= min_a) return false; } // Two orthogonal polygons intersect if there is a corner of A that is // dominated by a corner of B and there is a corner of B that is dominated // by a corner of A return polygon_dominates_any_point(a, b, nobj) && polygon_dominates_any_point(b, a, nobj); } static inline void polygon_print(const objective_t *p, int nobj) { while (p[0] != objective_MIN) { point_printf(stderr, p, nobj); fprintf(stderr, "\n"); p += nobj; } point_printf(stderr, p, nobj); fprintf(stderr, "\n"); } __unused static void eaf_check_polygons(eaf_polygon_t *p, int nobj) { // This only works for 2 objectives. assert(nobj == 2); // Check #1: Polygons don't intersect // Last point of last polygon const objective_t * end = vector_objective_end(&p->xy); const objective_t * pi = vector_objective_begin(&p->xy); while(pi < end) { const objective_t * pj = next_polygon(pi, nobj, end); const objective_t * next = pj; while(pj < end) { if (polygons_intersect(pi, pj, nobj)) { #if DEBUG_POLYGONS > 0 fprintf(stderr, "ERROR: Polygons intersect!\n"); polygon_print(pi, nobj); polygon_print(pj, nobj); #endif eaf_assert(false); } pj = next_polygon(pj, nobj, end); } pi = next; } // Check #2: Every point in the EAF is a corner of a polygon and it has the // same color as the polygon. //TODO } /* Produce a polygon suitable to be plotted by the polygon function in R. */ eaf_polygon_t * eaf_compute_polygon (eaf_t **eaf, int nlevels) { /* FIXME: Don't add anything if color_0 == 0 */ #define POLY_SIZE_CHECK() \ do { _poly_size_check--; eaf_assert(_poly_size_check >= 4); \ eaf_assert(_poly_size_check % 2 == 0); _poly_size_check = 0; } while(0) #define eaf_point(A,K) (eaf[(A)]->data + (K) * nobj) #define push_point_color(X, Y, C) \ do { vector_objective_push_back (&polygon->xy, (X)); \ vector_objective_push_back (&polygon->xy, (Y)); \ _poly_size_check++; PRINT_POINT(X,Y, C); \ } while(0) #define push_point(X, Y) push_point_color(X,Y, INT_MIN) #if DEBUG_POLYGONS > 0 #define EXPENSIVE_CHECK_POLYGONS() eaf_check_polygons(polygon, nobj) #else #define EXPENSIVE_CHECK_POLYGONS() (void)0 #endif #define polygon_close(COLOR) do { \ vector_int_push_back (&polygon->col, COLOR); \ push_point_color(objective_MIN, objective_MIN, COLOR); \ POLY_SIZE_CHECK(); EXPENSIVE_CHECK_POLYGONS(); \ } while(0) int _poly_size_check = 0; int nruns = eaf[0]->nruns; int nobj = eaf[0]->nobj; eaf_assert(nruns % 2 == 0); int max_size = eaf_max_size(eaf, nlevels); int *color; EAF_MALLOC (color, max_size, int); eaf_polygon_t * polygon; EAF_MALLOC(polygon, 1, eaf_polygon_t); vector_objective_ctor (&polygon->xy, max_size); vector_int_ctor (&polygon->col, max_size); for (int b = 1; b < nlevels; b++) { const int a = b - 1; const int eaf_a_size = eaf[a]->size; const int eaf_b_size = eaf[b]->size; init_colors(color, eaf[a], eaf_a_size, nruns); /* Find color transitions along the EAF level set. */ objective_t topleft_y = objective_MAX; int last_b = -1; int ka = 0; while (true) { const objective_t * pka = NULL; const objective_t * pkb = NULL; int kb = last_b + 1; // Find a point in a that does not overlap with a point in b while (ka < eaf_a_size && kb < eaf_b_size) { pka = eaf_point (a, ka); pkb = eaf_point (b, kb); if (pkb[0] != pka[0]) break; // They overlap in x, so we will skip kb, remember it. topleft_y = pkb[1]; last_b = kb; if (pkb[1] == pka[1]) { /* Ignore points that exactly overlap. */ // FIXME: This should not happen, but it does. We should remove these points. // eaf_assert(false); ka++; kb++; } else { /* b intersects a above pka. */ eaf_assert(pkb[1] > pka[1]); kb++; break; } } /* Everything in A was overlapping. */ if (ka == eaf_a_size) break; objective_t prev_pka_y = topleft_y; int color_0 = color[ka]; /* Print points and corners until we reach a different color. */ do { pka = eaf_point (a, ka); /* Find the point in B not above the current point in A. */ while (kb < eaf_b_size) { pkb = eaf_point (b, kb); eaf_assert(pkb[0] > pka[0]); if (pkb[1] <= pka[1]) break; kb++; } eaf_assert(pka[1] < prev_pka_y); push_point (pka[0], prev_pka_y); push_point (pka[0], pka[1]); prev_pka_y = pka[1]; ka++; if (kb < eaf_b_size && ka < eaf_a_size) { const objective_t * pka_next = eaf_point (a, ka); eaf_assert (pkb[0] > pka[0]); eaf_assert (pkb[1] <= pka[1]); if (pkb[0] <= pka_next[0]) { /* If B intersects with A, stop here. */ eaf_assert(pkb[1] == pka[1] || pkb[0] == pka_next[0]); eaf_assert (prev_pka_y >= pkb[1]); break; } } /* FIXME: When is color_0 != color[ka] if they are in the same eaf level ? */ } while (ka < eaf_a_size && color_0 == color[ka]); /* pka is the point before changing color, but ka is the position after. */ if (ka == eaf_a_size) {/* We reached the end of eaf_a */ /* We don't have to go down the other side since eaf_a completely dominates eaf_b, so just start by the end. */ if (last_b == eaf_b_size - 1) { /* The last point we skipped was the last point, so there is nothing on the other side, just create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, topleft_y); eaf_assert(topleft_y > pka[1]); } else { kb = eaf_b_size - 1; pkb = eaf_point(b, kb); eaf_assert (pkb[1] >= pka[1]); if (pkb[1] > pka[1]) { // Create two points in the infinity to jump from a to b (turn the corner). /* If pkb is above pkda, then it may happen that pkb[0] <= pka[0] if pkb is dominated by a previous pka. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, pkb[1]); eaf_assert (pkb[1] <= topleft_y); } else { // If they are at the same y-level, then pka must be to // the left, otherwise we should have found the // intersection earlier and something is wrong. eaf_assert(pkb[0] > pka[0]); } /* Now print in reverse. */ objective_t prev_pkb_x = pkb[0]; push_point (pkb[0], pkb[1]); kb--; while (kb > last_b) { pkb = eaf_point(b, kb); eaf_assert (pkb[1] > pka[1]); // pkb cannot be below pka push_point (prev_pkb_x, pkb[1]); push_point (pkb[0], pkb[1]); prev_pkb_x = pkb[0]; kb--; } push_point (pkb[0], topleft_y); eaf_assert (topleft_y > pkb[1]); } /* last_b = eaf_b_size - 1; */ polygon_close(color_0); /* DONE */ break; /* Really done! */ } else { if (kb == eaf_b_size) { eaf_assert (pka[1] < topleft_y); /* There is nothing on the other side, just create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, topleft_y); last_b = eaf_b_size - 1; } else { // This polygon is bounded above by eaf_b from last_b up to kb. eaf_assert (kb < eaf_b_size); pkb = eaf_point (b, kb); // If we have not finished eaf_b is because pkb is not above pka eaf_assert (pkb[1] <= pka[1]); eaf_assert (pkb[0] != pka[0]); /* If pkb and pka are in the same horizontal, pkb does not affect the next polygon. Otherwise, it does. */ int save_last_b = (pkb[1] == pka[1]) ? kb : kb - 1; /* Now print eaf_b in reverse. */ objective_t prev_pkb_x = pkb[0]; push_point (pkb[0], pka[1]); kb--; while (kb > last_b) { pkb = eaf_point (b, kb); // pkb must be above pka or we would have found the // intersection earlier. eaf_assert (pkb[1] > pka[1]); push_point (prev_pkb_x, pkb[1]); push_point (pkb[0], pkb[1]); prev_pkb_x = pkb[0]; kb--; } push_point (pkb[0], topleft_y); eaf_assert (topleft_y > pkb[1]); last_b = save_last_b; } polygon_close(color_0); /* DONE */ eaf_assert(topleft_y >= pka[1]); topleft_y = pka[1]; } } } free (color); #if DEBUG >= 1 eaf_check_polygons(polygon, nobj); // This is slow with lots of polygons #endif return polygon; } /* FIXME: This version does not care about intersections, which is much simpler, but it produces artifacts when plotted with the polygon function in R. */ eaf_polygon_t * eaf_compute_polygon_old (eaf_t **eaf, int nlevels) { int _poly_size_check = 0; eaf_polygon_t * polygon; int *color; int max_size = eaf_max_size(eaf, nlevels); int nruns = eaf[0]->nruns; int nobj = eaf[0]->nobj; eaf_assert(nruns % 2 == 0); EAF_MALLOC (color, max_size, int); EAF_MALLOC(polygon, 1, eaf_polygon_t); vector_objective_ctor (&polygon->xy, max_size); vector_int_ctor (&polygon->col, max_size); for (int b = 1; b < nlevels; b++) { const int a = b - 1; int eaf_a_size = eaf[a]->size; int eaf_b_size = eaf[a + 1]->size; init_colors(color, eaf[a], eaf_a_size, nruns); /* Find color transitions along the EAF level set. */ int last_b = -1; objective_t topleft_y = objective_MAX; int ka = 0; while (ka < eaf_a_size) { objective_t prev_pka_y = topleft_y; const objective_t * pka; /* Print points and corners until we reach a different color. */ int color_0 = color[ka]; do { pka = eaf_point (a, ka); push_point (pka[0], prev_pka_y); push_point (pka[0], pka[1]); prev_pka_y = pka[1]; ka++; } while (ka < eaf_a_size && color_0 == color[ka]); /* pka is the point before changing color, but ka is the position after. */ if (ka == eaf_a_size) {/* We reached the end of eaf_a */ /* We don't have to go down the other side since eaf_a completely dominates eaf_b, so just start by the end. */ int kb = eaf_b_size - 1; if (last_b == kb) { /* There is nothing on the other side, just create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, topleft_y); } else { const objective_t * pkb = eaf_point(a + 1, kb); eaf_assert (pkb[1] >= pka[1]); if (pkb[1] > pka[1]) { /* Create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, pkb[1]); } objective_t prev_pkb_x = pkb[0]; push_point (pkb[0], pkb[1]); kb--; while (kb > last_b) { pkb = eaf_point(a + 1, kb); push_point (prev_pkb_x, pkb[1]); push_point (pkb[0], pkb[1]); prev_pkb_x = pkb[0]; kb--; } push_point (pkb[0], topleft_y); last_b = eaf_b_size - 1; } polygon_close(color_0); /* DONE */ } else { int kb = last_b + 1; /* Different color, go down by the other side until reaching this point. */ if (kb == eaf_b_size) { /* There is nothing on the other side, just create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, topleft_y); polygon_close(color_0); /* DONE */ } else { const objective_t * pkb; do { pkb = eaf_point (b, kb); if (pkb[1] <= pka[1]) break; kb++; } while (kb < eaf_b_size); int save_last_b = kb - 1; if (kb == eaf_b_size) { /* There is nothing on the other side, just create two points in the infinity. */ push_point (objective_MAX, pka[1]); push_point (objective_MAX, pkb[1]); } else {/* pkb_y <= pka_y */ objective_t prev_pkb_x = pkb[0]; push_point (pkb[0], pka[1]); /* Now print in reverse. */ kb--; while (kb > last_b) { pkb = eaf_point (b, kb); push_point (prev_pkb_x, pkb[1]); push_point (pkb[0], pkb[1]); prev_pkb_x = pkb[0]; kb--; } push_point (pkb[0], topleft_y); } polygon_close(color_0); /* DONE */ last_b = save_last_b; } } topleft_y = pka[1]; } } free (color); return polygon; } #undef eaf_point #undef push_point #undef polygon_close #undef PRINT_POINT #undef POLY_SIZE_CHECK void eaf_print_polygon (FILE *stream, eaf_t **eaf, int nlevels) { eaf_polygon_t *p = eaf_compute_area (eaf, nlevels); for(size_t i = 0; i < vector_objective_size(&p->xy); i += 2) { point2d_printf(stream, vector_objective_at(&p->xy, i), vector_objective_at(&p->xy, i + 1)); fprintf(stream, "\n"); } fprintf (stream, "# col ="); for (size_t k = 0; k < vector_int_size (&p->col); k++) fprintf (stream, " %d", vector_int_at(&p->col, k)); fprintf (stream, "\n"); vector_objective_dtor (&p->xy); vector_int_dtor (&p->col); free(p); } static size_t rectangle_add(eaf_polygon_t * regions, objective_t lx, objective_t ly, objective_t ux, objective_t uy, int color) { #if 0 printf("rectangle_add: (" point_printf_format ", " point_printf_format ", " point_printf_format ", " point_printf_format ")[%d]\n", lx, ly, ux, uy, color); #endif eaf_assert(lx < ux); eaf_assert(ly < uy); vector_objective *rect = ®ions->xy; vector_objective_push_back(rect, lx); vector_objective_push_back(rect, ly); vector_objective_push_back(rect, ux); vector_objective_push_back(rect, uy); vector_int_push_back(®ions->col, color); return vector_objective_size(rect); } eaf_polygon_t * eaf_compute_rectangles (eaf_t **eaf, int nlevels) { #define eaf_point(A,K) (eaf[(A)]->data + (K) * nobj) #if 0 #define printf_points(ka,kb,pka,pkb) \ printf("%4d: pa[%d]=(" point_printf_format ", " point_printf_format "), pb[%d] = (" point_printf_format ", " point_printf_format ")\n", \ __LINE__, ka, pka[0], pka[1], kb, pkb[0], pkb[1]) #else #define printf_points(ka,kb,pka,pkb) #endif int nruns = eaf[0]->nruns; const int nobj = eaf[0]->nobj; eaf_assert(nruns % 2 == 0); int max_size = eaf_max_size(eaf, nlevels); int *color; EAF_MALLOC (color, max_size, int); eaf_polygon_t * regions; EAF_MALLOC(regions, 1, eaf_polygon_t); vector_objective_ctor (®ions->xy, max_size); vector_int_ctor (®ions->col, max_size); for (int b = 1; b < nlevels; b++) { const int a = b - 1; const int eaf_a_size = eaf[a]->size; const int eaf_b_size = eaf[b]->size; if (eaf_a_size == 0 || eaf_b_size == 0) continue; // FIXME: Skip points with color 0? init_colors(color, eaf[a], eaf_a_size, nruns); objective_t top = objective_MAX; int ka = 0, kb = 0; const objective_t * pkb = eaf_point (b, kb); const objective_t * pka = eaf_point (a, ka); printf_points(ka, kb, pka, pkb); while (true) { while (pka[1] < pkb[1]) { if (pka[0] < pkb[0]) // pka strictly dominates pkb rectangle_add(regions, pka[0], pkb[1], pkb[0], top, color[ka]); top = pkb[1]; kb++; if (kb >= eaf_b_size) goto close_eaf; pkb = eaf_point (b, kb); printf_points(ka, kb, pka, pkb); } // pka_above_equal_pkb: if (pka[0] < pkb[0]) { // pka does not strictly dominate pkb rectangle_add(regions, pka[0], pka[1], pkb[0], top, color[ka]); } else { // Skip repeated points eaf_assert(pka[0] == pkb[0] && pka[1] == pkb[1]); } top = pka[1]; ka++; if (ka >= eaf_a_size) goto next_eaf; pka = eaf_point (a, ka); printf_points(ka, kb, pka, pkb); if (pkb[1] == top) { // pkb was not above but equal to previous pka // Move to next pkb kb++; if (kb >= eaf_b_size) goto close_eaf; pkb = eaf_point (b, kb); printf_points(ka, kb, pka, pkb); } } close_eaf: // b is finished, add one rectangle for each pka point. while (true) { eaf_assert(pka[1] < pkb[1]); rectangle_add(regions, pka[0], pka[1], objective_MAX, top, color[ka]); top = pka[1]; ka++; if (ka >= eaf_a_size) break; pka = eaf_point (a, ka); printf_points(ka, kb, pka, pkb); } next_eaf: continue; } return regions; #undef eaf_point } eaf/src/eaf/svnversion.mk0000644000175000017500000000054314160346517015237 0ustar nileshnilesh## Do we have svnversion? ifeq ($(shell sh -c 'which svnversion 1> /dev/null 2>&1 && echo y'),y) ## Is this a working copy? ifeq ($(shell sh -c 'LC_ALL=C svnversion -n . | grep -q ^[0-9] && echo y'),y) $(shell sh -c 'svnversion -n . > svn_version') endif endif ## Set version information: SVN_REV = $(shell sh -c 'cat svn_version 2> /dev/null') eaf/src/eaf/gcc_attribs.h0000644000175000017500000000612214160346517015126 0ustar nileshnilesh#ifndef GCC_ATTRIBUTES #define GCC_ATTRIBUTES /* FIXME: does this handle C++? */ /* FIXME: add the explanation from the GCC documentation to each attribute. */ #ifndef __pure_func # define __pure_func __attribute__ ((pure)) #endif /* Many functions have no effects except the return value and their return value depends only on the parameters and/or global variables. Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be. Some of common examples of pure functions are strlen or memcmp. Interesting non-pure functions are functions with infinite loops or those depending on volatile memory or other system resource, that may change between two consecutive calls (such as feof in a multithreading environment). */ #ifndef __const_func # define __const_func __attribute__ ((const)) #endif /* Many functions do not examine any values except their arguments, and have no effects except the return value. Basically this is just slightly more strict class than the pure attribute below, since function is not allowed to read global memory. Note that a function that has pointer arguments and examines the data pointed to must not be declared const. Likewise, a function that calls a non-const function usually must not be const. It does not make sense for a const function to return void. */ # define __noreturn __attribute__ ((noreturn)) /* The noreturn keyword tells the compiler to assume that function cannot return. It can then optimize without regard to what would happen if fatal ever did return. This makes slightly better code. More importantly, it helps avoid spurious warnings of uninitialized variables. */ # define __malloc __attribute__ ((malloc)) /* The malloc attribute is used to tell the compiler that a function may be treated as if any non-NULL pointer it returns cannot alias any other pointer valid when the function returns. This will often improve optimization. Standard functions with this property include malloc and calloc. realloc-like functions have this property as long as the old pointer is never referred to (including comparing it to the new pointer) after the function returns a non-NULL value. */ # define __must_check __attribute__ ((warn_unused_result)) /* The warn_unused_result attribute causes a warning to be emitted if a caller of the function with this attribute does not use its return value. */ #ifndef __deprecated # define __deprecated __attribute__ ((deprecated)) #endif /* The deprecated attribute results in a warning if the function is used anywhere in the source file. */ #ifndef __used # define __used __attribute__ ((used)) #endif #ifndef __unused # define __unused __attribute__ ((unused)) #endif #ifndef __packed # define __packed __attribute__ ((packed)) #endif #if __GNUC__ >= 3 # define likely(x) __builtin_expect (!!(x), 1) # define unlikely(x) __builtin_expect (!!(x), 0) #else # define __attribute__(x) /* If we're not using GNU C, elide __attribute__ */ # define likely(x) (x) # define unlikely(x) (x) #endif #endif eaf/src/eaf/svn_version0000644000175000017500000000000314160346517014757 0ustar nileshnilesh278eaf/src/eaf/eaf_main.c0000644000175000017500000003563714160346517014411 0ustar nileshnilesh/************************************************************************* eaf: Computes the empirical attainment function (EAF) from a number of approximation sets. --------------------------------------------------------------------- Copyright (c) 2006, 2007, 2008 Carlos Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- *************************************************************************/ #include "eaf.h" #include #include // strtol() #include // isprint() #include #include #include // for bool, true and false #include // for getopt() #define _GNU_SOURCE #include // for getopt_long() #include char *program_invocation_short_name = "eaf"; static void usage(void) { printf("\n" "Usage:\n" " %s [OPTIONS] [FILE...]\n\n", program_invocation_short_name); printf( "Computes the empirical attainment function (EAF) of all input FILEs. \n" "With no FILE, or when FILE is -, read standard input.\n\n" "Options:\n" " -h, --help print this summary and exit \n" " --version print version number (and compilation flags) and exit \n" " -v, --verbose print some information (time, input points, output \n" " points, etc) in stderr. Default is --quiet \n" " -o, --output FILE write output to FILE instead of standard output. \n" " -q, --quiet print just the EAF (as opposed to --verbose) \n" " -b, --best compute best attainment surface \n" " -m, --median compute median attainment surface \n" " -w, --worst compute worst attainment surface \n" " -p, --percentile REAL compute the given percentile of the EAF \n" " -l, --level LEVEL compute the given level of the EAF \n" " -i[FILE], --indices[=FILE] write attainment indices to FILE. \n" " If FILE is '-', print to stdout. \n" " If FILE is missing use the same file as for output. \n" " -d[FILE], --diff[=FILE] write difference between half of runs to FILE. \n" " If FILE is '-', print to stdout. \n" " If FILE is missing use the same file as for output. \n" " , --polygons Write EAF as R polygons. \n" "\n\n" ); } static void version(void) { printf("%s version %s" #ifdef MARCH " (optimised for "MARCH")" #endif #ifndef VERSION #define VERSION "unknown" #endif "\n\n", program_invocation_short_name, VERSION); printf( "Copyright (C) 2009\n" "Carlos Fonseca \n" "Manuel Lopez-Ibanez \n" "\n" "This is free software, and you are welcome to redistribute it under certain\n" "conditions. See the GNU General Public License for details. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "\n" ); } // FIXME: How to implement this with const char *str? static int read_doubles (double *vec, char *str) { char * cursor; char * endp = str; int k = 0; do { cursor = endp; vec[k] = strtod(cursor, &endp); if (cursor == endp && (*endp == ',' || *endp == ';')) { endp++; continue; } k++; } while (cursor != endp); // not end of string: error while (*cursor != '\0') { if (!isspace(*cursor)) { errprintf ("invalid argument to --percentiles '%s'", str); exit (EXIT_FAILURE); } cursor++; } // no number: error if (k == 1) { errprintf ("invalid argument to --percentiles '%s'", str); exit (EXIT_FAILURE); } return k - 1; } static int read_ints (int *levels, char *str) { char * cursor; char * endp = str; int k = 0; do { cursor = endp; levels[k] = strtol(cursor, &endp, 10); if (cursor == endp && (*endp == ',' || *endp == ';')) { endp++; continue; } k++; } while (cursor != endp); // not end of string: error while (*cursor != '\0') { if (!isspace(*cursor)) { errprintf ("invalid argument to --levels '%s'", str); exit (EXIT_FAILURE); } cursor++; } // no number: error if (k == 1) { errprintf ("invalid argument to --levels '%s'", str); exit (EXIT_FAILURE); } return k - 1; } void eaf_print (eaf_t **eaf, int nlevels, FILE *coord_file, FILE *indic_file, FILE *diff_file) { int k; for (k = 0; k < nlevels; k++) { eaf_print_attsurf (eaf[k], coord_file, indic_file, diff_file); if (coord_file) fprintf (coord_file, "\n"); else if (indic_file) fprintf(indic_file, "\n"); else if (diff_file) fprintf(diff_file, "\n"); } } void read_input_data (const char *filename, objective_t **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p) { int error = read_objective_t_data (filename, data_p, nobjs_p, cumsizes_p, nsets_p); switch (error) { case 0: /* No error */ break; case READ_INPUT_FILE_EMPTY: case READ_INPUT_WRONG_INITIAL_DIM: break; case ERROR_FOPEN: case ERROR_CONVERSION: case ERROR_COLUMNS: exit (EXIT_FAILURE); default: exit (EXIT_FAILURE); } } int main(int argc, char *argv[]) { bool verbose_flag = true; bool best_flag = false; bool median_flag = false; bool worst_flag = false; bool polygon_flag = false; const char *coord_filename = NULL; const char *indic_filename = NULL; const char *diff_filename = NULL; FILE *coord_file = stdout; FILE *indic_file = NULL; FILE *diff_file = NULL; int option; int longopt_index; /* see the man page for getopt_long for an explanation of these fields */ static const char short_options[] = "hVvqbmwl:p:o:i::d::P"; static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, {"best", no_argument, NULL, 'b'}, {"median", no_argument, NULL, 'm'}, {"worst", no_argument, NULL, 'w'}, {"output", required_argument, NULL, 'o'}, /* The optional_argument must be together with the parameter such as -iFILE or -i=FILE, otherwise it will be considered an input file. */ {"indices", optional_argument, NULL, 'i'}, {"diff", optional_argument, NULL, 'd'}, {"percentile", required_argument, NULL, 'p'}, {"level", required_argument, NULL, 'l'}, {"polygons", no_argument, NULL, 'P'}, {NULL, 0, NULL, 0} /* marks end of list */ }; #define MAX_LEVELS 50 int *level = malloc(MAX_LEVELS * sizeof(int)); int nlevels = 0; double *percentile = malloc(MAX_LEVELS * sizeof(double)); int npercentiles = 0; while (0 < (option = getopt_long(argc, argv, short_options, long_options, &longopt_index))) { switch (option) { case 'l': assert(nlevels < MAX_LEVELS); nlevels += read_ints(level + nlevels, optarg); break; case 'p': assert(npercentiles < MAX_LEVELS); npercentiles += read_doubles(percentile + npercentiles, optarg); break; case 'o': if (!strcmp(optarg,"-")) { coord_file = stdout; coord_filename = NULL; } else coord_filename = optarg; break; case 'i': if (!optarg) { indic_file = stdin; /* Overwrite with coord_file later. */ indic_filename = NULL; } else if (!strcmp(optarg,"-")) { indic_file = stdout; indic_filename = NULL; } else { indic_filename = optarg; } break; case 'd': if (!optarg) { diff_file = stdin; /* Overwrite with coord_file later. */ diff_filename = NULL; } else if (!strcmp(optarg,"-")) { diff_file = stdout; diff_filename = NULL; } else { diff_filename = optarg; } break; case 'b': best_flag = true; break; case 'm': median_flag = true; break; case 'w': worst_flag = true; break; case 'P': polygon_flag = true; break; case 'q': // --quiet verbose_flag = false; break; case 'v': // --verbose verbose_flag = true; break; case 'V': // --version version(); exit(EXIT_SUCCESS); case 'h': // --help usage(); exit(EXIT_SUCCESS); case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); default: abort (); } } objective_t *data = NULL; int* cumsizes = NULL; int nobj = 0, nruns = 0, k; if (optind < argc) { for (k = optind; k < argc; k++) { if (strcmp (argv[k],"-")) read_input_data (argv[k], &data, &nobj, &cumsizes, &nruns); else read_input_data (NULL, &data, &nobj, &cumsizes, &nruns); } } else read_input_data (NULL, &data, &nobj, &cumsizes, &nruns); if (coord_filename) { coord_file = fopen (coord_filename, "w"); if (NULL == coord_file) { errprintf ("%s: %s", coord_filename, strerror (errno)); exit (EXIT_FAILURE); } } /* indic_file is neither NULL nor stdout and no filename was given, use same settings as for --output. */ if (indic_file && indic_file != stdout && !indic_filename) { indic_file = coord_file; indic_filename = coord_filename; } /* If a different filename as for --output was given, open it. */ if (indic_filename && (!coord_filename || strcmp (indic_filename, coord_filename))) { indic_file = fopen (indic_filename, "w"); if (NULL == indic_file) { errprintf ("%s: %s", indic_filename, strerror (errno)); exit (EXIT_FAILURE); } } /* diff_file is neither NULL nor stdout and no filename was given, use same settings as for --output. */ if (diff_file && diff_file != stdout && !diff_filename) { diff_file = coord_file; diff_filename = coord_filename; } /* If a different filename as for --output and --indices was given, open it. */ if (diff_filename && (!coord_filename || strcmp (diff_filename, coord_filename)) && (!indic_filename || strcmp (diff_filename, indic_filename))) { diff_file = fopen (diff_filename, "w"); if (NULL == diff_file) { errprintf ("%s: %s", diff_filename, strerror (errno)); exit(EXIT_FAILURE); } } if (best_flag) { level[0] = 1; nlevels = 1; } else if (median_flag) { level[0] = percentile2level (50, nruns); nlevels = 1; } else if (worst_flag) { level[0] = nruns; nlevels = 1; } else if (npercentiles > 0) { nlevels = npercentiles; for (k = 0; k < nlevels; k++) { if (percentile[k] <= 0) { errprintf ("arg to --percentile must be higher than 0.\n"); exit (EXIT_FAILURE); } else if (percentile[k] > 100) { errprintf ("arg to --percentile must be <= 100.\n"); exit (EXIT_FAILURE); } level[k] = percentile2level(percentile[k], nruns); } } else if (nlevels > 0) { level = realloc (level, nlevels * sizeof(int)); for (k = 0; k < nlevels; k++) { if (level[k] <= 0) { errprintf ("arg to --level must be higher than 0.\n"); exit (EXIT_FAILURE); } else if (level[k] > nruns) { errprintf ("arg to --level must not be higher than number of" " approximation sets (%d).\n", nruns); exit (EXIT_FAILURE); } } } else if (nlevels == 0) { nlevels = nruns; level = realloc (level, nlevels * sizeof(int)); for (k = 0; k < nruns; k++) { level[k] = k + 1; } } if (verbose_flag) { fprintf (stderr, "# objectives (%d): --\n", nobj); fprintf (stderr, "# sets: %d\n", nruns); fprintf (stderr, "# points: %d\n", cumsizes[nruns - 1]); fprintf (stderr, "%s: calculating levels:", program_invocation_short_name); for (k = 0; k < nlevels; k++) fprintf (stderr, " %d", level[k]); fprintf (stderr, "\n"); } eaf_t **eaf = attsurf (data, nobj, cumsizes, nruns, level, nlevels); if (polygon_flag) { eaf_print_polygon (coord_file, eaf, nlevels); fclose (coord_file); } else { eaf_print (eaf, nlevels, coord_file, indic_file, diff_file); fclose (coord_file); if (indic_file && indic_file != coord_file) fclose (indic_file); if (diff_file && diff_file != coord_file && diff_file != indic_file) fclose (diff_file); } free(level); free(data); free(cumsizes); return 0; } eaf/src/eaf/cvector.h0000644000175000017500000003272414160346517014316 0ustar nileshnilesh#ifndef __CVECTOR_H__ #define __CVECTOR_H__ #ifndef cvector_assert #include #define cvector_assert(X) assert(X) #endif #include #define vector_define(VECTOR_TYPE, BASE_TYPE) \ struct VECTOR_TYPE; \ typedef struct VECTOR_TYPE VECTOR_TYPE; \ \ struct VECTOR_TYPE { \ BASE_TYPE *_begin; \ BASE_TYPE *_end; \ BASE_TYPE *_capacity; \ }; \ \ static inline \ void VECTOR_TYPE##_reserve(VECTOR_TYPE * v, size_t n); \ \ /* Default constructor: constructs an empty vector, with no content and a size of zero. */ \ static inline \ void VECTOR_TYPE##_ctor_zero(VECTOR_TYPE * v) \ { \ v->_begin = NULL; \ v->_end = NULL; \ v->_capacity = NULL; \ } \ \ /* Default constructor: constructs an empty vector, with no content and a size of zero. */ \ static inline \ void VECTOR_TYPE##_ctor(VECTOR_TYPE * v, size_t n) \ { \ VECTOR_TYPE##_ctor_zero (v); \ VECTOR_TYPE##_reserve (v, n); \ } \ \ /* Default constructor: dynamically allocates an empty vector, with no content and a size of zero. */ \ static inline \ VECTOR_TYPE * VECTOR_TYPE##_new(size_t n) \ { \ VECTOR_TYPE * v = malloc (sizeof(VECTOR_TYPE)); \ VECTOR_TYPE##_ctor (v, n); \ return v; \ } \ \ /* Destructor. It frees the memory allocated to the vector, but it does not try to free each of its elements or the vector itself. */ \ static inline \ void VECTOR_TYPE##_dtor(VECTOR_TYPE * v) \ { free(v->_begin); } \ \ /* Destructor. It frees the memory allocated to a dynamically allocated vector, but it does not try to free each of its elements. */ \ static inline \ void VECTOR_TYPE##_delete(VECTOR_TYPE * v) \ { VECTOR_TYPE##_dtor(v); free(v); } \ \ \ /* Returns the number of elements in the vector container. */ \ static inline \ size_t VECTOR_TYPE##_size(const VECTOR_TYPE * v) \ { return v->_end - v->_begin; } \ \ /* Return size of allocated storage capacity. */ \ static inline \ size_t VECTOR_TYPE##_capacity(const VECTOR_TYPE * v) \ { return v->_capacity - v->_begin; } \ \ /* Returns whether the vector container is empty, i.e. whether its size is 0. */ \ static inline \ bool VECTOR_TYPE##_empty(const VECTOR_TYPE * v) \ { return v->_begin == v->_end; } \ \ /* Requests that the capacity of the allocated storage space for the elements of the vector container be at least enough to hold n elements. This informs the vector of a planned increase in size, although notice that the parameter n informs of a minimum, so the resulting capacity may be any capacity equal or larger than this. When n is greater than the current capacity, a reallocation is attempted during the call to this function. If successful, it grants that no further automatic reallocations will happen because of a call to vector::insert or vector::push_back until the vector size surpasses at least n (this preserves the validity of iterators on all these future calls). A reallocation invalidates all previously obtained iterators, references and pointers to elements of the vector. In any case, a call to this function never affects the elements contained in the vector, nor the vector size. */ \ static inline \ void VECTOR_TYPE##_reserve(VECTOR_TYPE * v, size_t n) \ { \ size_t old_capacity = VECTOR_TYPE##_capacity(v); \ size_t old_size = VECTOR_TYPE##_size(v); \ if (n > old_capacity) { \ v->_begin = realloc(v->_begin, sizeof(BASE_TYPE) * n); \ v->_end = v->_begin + old_size; \ v->_capacity = v->_begin + n; \ } \ } \ \ /* Adds a new element at the end of the vector, after its current last element. The content of this new element is initialized to a copy of x. This effectively increases the vector size by one, which causes a reallocation of the internal allocated storage if the vector size was equal to the vector capacity before the call. Reallocations invalidate all previously obtained iterators, references and pointers. */ \ static inline \ void VECTOR_TYPE##_push_back(VECTOR_TYPE * v, BASE_TYPE x) \ { \ if (v->_end == v->_capacity) \ VECTOR_TYPE##_reserve (v, \ (VECTOR_TYPE##_capacity (v) == 0) \ ? 8 \ : 2 * VECTOR_TYPE##_capacity (v)); \ *(v->_end) = x; \ v->_end++; \ } \ \ /* Removes the last element in the vector, effectively reducing the vector size by one and invalidating all iterators and references to it. Note that the element is not freed. */ \ static inline \ BASE_TYPE VECTOR_TYPE##_pop_back(VECTOR_TYPE * v) \ { \ cvector_assert(!VECTOR_TYPE##_empty(v)); \ v->_end--; \ return *(v->_end); \ } \ \ /* Returns the first element in the vector container. This is not a reference like in C++! */ \ static inline \ BASE_TYPE VECTOR_TYPE##_front(const VECTOR_TYPE * v) \ { \ cvector_assert (!VECTOR_TYPE##_empty(v)); \ return v->_begin[0]; \ } \ \ /* Returns the last element in the vector container. This is not a reference like in C++! */ \ static inline \ BASE_TYPE VECTOR_TYPE##_back(const VECTOR_TYPE * v) \ { \ cvector_assert (!VECTOR_TYPE##_empty(v)); \ return *(v->_end - 1); \ } \ \ /* Returns an iterator (pointer) referring to the first element in the vector container. */ \ static inline \ BASE_TYPE * VECTOR_TYPE##_begin(const VECTOR_TYPE * v) \ { return v->_begin; } \ \ /* Returns an iterator (pointer) referring to the past-the-end element in the vector container. */ \ static inline \ BASE_TYPE * VECTOR_TYPE##_end(const VECTOR_TYPE * v) \ { return v->_end; } \ \ /* Returns the element at position pos. */ \ static inline \ BASE_TYPE VECTOR_TYPE##_at(const VECTOR_TYPE * v, size_t pos) \ { \ cvector_assert(pos <= VECTOR_TYPE##_size(v)); \ return v->_begin[pos]; \ } \ \ /* Set the element at position pos to value e and return it. */ \ static inline \ BASE_TYPE VECTOR_TYPE##_set(const VECTOR_TYPE * v, size_t pos, BASE_TYPE e) \ { \ cvector_assert(pos <= VECTOR_TYPE##_size(v)); \ return (v->_begin[pos] = e); \ } \ #endif eaf/src/eaf/README0000644000175000017500000000673014160346517013356 0ustar nileshnilesh-------------------------------------------------------------------- Computation of the Empirical Attainment Function in 2 or 3 Dimensions Carlos Fonseca and Manuel López-Ibáñez -------------------------------------------------------------------- Contents * Introduction * Usage * License * Changelog ------------ Introduction ------------ This program computes the empirical attainment function from a number of sets of nondominated points. This version is based on the original code written by Carlos M. Fonseca available at http://www.tik.ee.ethz.ch/pisa/. Relevant literature: [1] V. Grunert da Fonseca, C. M. Fonseca, and A. Hall. Inferential performance assessment of stochastic optimizers and the attainment function. In E. Zitzler, K. Deb, L. Thiele, C. C. Coello, and D. Corne, editors, Evolutionary Multi-criterion Optimization (EMO 2001), volume 1993 of Lecture Notes in Computer Science, pages 213-225. Springer Verlag, Berlin, Germany, 2001. ------------ Building ------------ The program has been tested on GNU/Linux using bash shell and a recent version of GCC (>= 4.2). If you have success or problems using other systems, please let me know. The default compilation is done with: make eaf You can optimize for a particular computer architecture with the option "march=", for example: make eaf march=pentium4 Modern versions of GCC support a value of 'march=native' that autodetects your architecture. See the GCC manual for the names of the architectures supported by your version of GCC. ------- Usage ------- For the remainder options available, see the output of eaf --help ------------ License ------------ This software is Copyright (C) 2006, 2007, 2008, 2009. Carlos Fonseca and Manuel López-Ibáñez. This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to (a) mention the fashion in which this software was used in the Methods section; (b) mention the algorithm in the References section. The appropriate citation is: V. Grunert da Fonseca, C. M. Fonseca, and A. Hall. Inferential performance assessment of stochastic optimizers and the attainment function. In E. Zitzler, K. Deb, L. Thiele, C. C. Coello, and D. Corne, editors, Evolutionary Multi-criterion Optimization (EMO 2001), volume 1993 of Lecture Notes in Computer Science, pages 213-225. Springer Verlag, Berlin, Germany, 2001. Moreover, as a personal note, I would appreciate it if you would email with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. ------------ Changelog ------------ eaf/src/eaf/LICENSE0000644000175000017500000004642014160346517013503 0ustar nileshnilesh --------------------------------------------------------------------- Copyright (c) 2006, 2007, 2008 Carlos Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. There should be a verbatim copy of the GNU General Public License below; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. eaf/src/eaf/TODO0000644000175000017500000000050014160346517013153 0ustar nileshnilesh eaf_input.c : * Experiment with different values for PAGE_SIZE in eaf_input.c. * Experiment reading whole lines and then sscanf the line. * Consider mmaping the input file (or a big chunk of few megabytes), then read, then unmap. * Perhaps add --obj=X so it reads only that number of columns from input. eaf/src/eaf/common.h0000644000175000017500000000623414160346517014136 0ustar nileshnilesh#ifndef LIBMISC_COMMON_H_ # define LIBMISC_COMMON_H_ #ifdef R_PACKAGE #define R_NO_REMAP #include #define eaf_assert(EXP) \ do { if (!(EXP)) { Rf_error("eaf package: error: assertion failed: '%s' at %s:%d", \ #EXP, __FILE__, __LINE__);}} while(0) #define fatal_error(...) Rf_error(__VA_ARGS__) #define errprintf Rf_error #define warnprintf Rf_warning #include "gcc_attribs.h" #else #include #include #include #include "gcc_attribs.h" #include #define eaf_assert(X) assert(X) #define Rprintf(...) printf(__VA_ARGS__) void fatal_error(const char * format,...) __attribute__ ((format(printf, 1, 2))) __noreturn __unused; void errprintf(const char * format,...) __attribute__ ((format(printf, 1, 2))); void warnprintf(const char *format,...) __attribute__ ((format(printf, 1, 2))); #endif #if __GNUC__ >= 3 #define MAX(x,y) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(y) _y__ = (y); \ _x__ > _y__ ? _x__ : _y__; }) #define MIN(x,y) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(y) _y__ = (y); \ _x__ < _y__ ? _x__ : _y__; }) #define CLAMP(x, xmin, xmax) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(x) _xmin__ = (xmin); \ __typeof__(x) _xmax__ = (xmax); \ _x__ < _xmin__ ? _xmin__ : _x__ > _xmax__ ? _xmax__ : _x__; }) #else #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) #define CLAMP(x, xmin, xmax) MAX(xim, MIN(x, xmax)) #endif #define DEBUG_DO(X) do{ X;} while(0) #define DEBUG_NOT_DO(X) while(0){ X;} #if DEBUG >= 1 #define DEBUG1(X) DEBUG_DO(X) #else #define DEBUG1(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 2 #define DEBUG2(X) DEBUG_DO(X) #else #define DEBUG2(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 3 #define DEBUG3(X) DEBUG_DO(X) #else #define DEBUG3(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 4 #define DEBUG4(X) DEBUG_DO(X) #else #define DEBUG4(X) DEBUG_NOT_DO(X) #endif #ifndef R_PACKAGE #define DEBUG2_PRINT(...) DEBUG2 (fprintf (stderr, __VA_ARGS__)) #else #define DEBUG2_PRINT(...) DEBUG2 (Rprintf ( __VA_ARGS__)) #endif #define DEBUG2_FUNPRINT(...) \ do { DEBUG2_PRINT ("%s(): ", __FUNCTION__); \ DEBUG2_PRINT (__VA_ARGS__); } while(0) /* This is deprecated. See https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html #if DEBUG >= 1 #ifndef MALLOC_CHECK_ #define MALLOC_CHECK_ 3 #endif #endif */ #include #define TRUE true #define FALSE false #ifndef ignore_unused_result #define ignore_unused_result(X) do { if(X) {}} while(0); #endif typedef unsigned long ulong; typedef long long longlong; static inline const char *str_is_default(bool flag) { return flag ? "(default)" : ""; } #endif /* !LIBMISC_COMMON_H_ */ eaf/src/eaf/GNUmakefile0000644000175000017500000001021114160346517014535 0ustar nileshnilesh#------------------------------------------------------*- Makefile-gmake -*- # Makefile for eaf VERSION = 0.1svn$(SVN_REV) # --------------------------------------------------------------------- # Copyright (c) 2007, 2008 # Carlos Fonseca # Manuel Lopez-Ibanez # This program is free software (software libre); you can redistribute # it and/or modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, you can obtain a copy of the GNU # General Public License at: # http://www.gnu.org/copyleft/gpl.html # or by writing to: # Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # #----------------------------------------------------------------------- # IMPORTANT NOTE: Please be aware that the fact that this program is # released as Free Software does not excuse you from scientific # propriety, which obligates you to give appropriate credit! If you # write a scientific paper describing research that made substantive # use of this program, it is your obligation as a scientist to # acknowledge its use. Moreover, as a personal note, I would # appreciate it if you would email # with citations of papers referencing this work so I can mention them # to my funding agent and tenure committee. #----------------------------------------------------------------------- DEBUG=0 mkfile_path:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) BINDIR:=$(mkfile_path) OBJS = eaf.o io.o eaf_main.o eaf3d.o avl.o HEADERS = eaf.h io_priv.h io.h cvector.h avl.h common.h gcc_attribs.h bit_array.h DIST_OTHER_FILES = *.mk TODO GNUmakefile README LICENSE svn_version EAFEXE=eaf$(EXE) EXE_LDFLAGS = -lm ECHO = @echo "$(1)" -include svnversion.mk -include gcc.mk EAF_CFLAGS += $(OPT_CFLAGS) $(WARN_CFLAGS) \ -DDEBUG=$(DEBUG) -DVERSION='"$(VERSION)"' -DMARCH='"$(gcc-guess-march)"' .PHONY : default all clean distclean check test dist default: $(BINDIR)/$(EAFEXE) $(BINDIR)/$(EAFEXE) : $(OBJS) @mkdir -p $(BINDIR) $(call ECHO,--> Building $@ version $(VERSION) <---) $(CC) -o $@ $(OBJS) $(EAF_CFLAGS) $(CFLAGS) $(EXE_LDFLAGS) $(OBJS) : eaf.h io.h io.o : io_priv.h %.o : %.c $(CC) $(EAF_CFLAGS) $(CFLAGS) -c -o $@ $< TESTSUITE:="$(PWD)/testsuite" check: clean $(MAKE) DEBUG=1 SANITIZERS="" $(BINDIR)/$(EAFEXE) $(call ECHO,---> Checking for errors (DEBUG=1)... <--- ) @if test -d $(TESTSUITE); then \ cd $(TESTSUITE) && ./regtest.pl $(BINDIR)/$(EAFEXE) && cd $(PWD); \ else \ echo "Error: Testsuite not found in $(TESTSUITE)" && exit 1; \ fi test: clean $(MAKE) DEBUG=0 SANITIZERS="" $(BINDIR)/$(EAFEXE) $(call ECHO,---> Testing for speed (DEBUG=0)... <--- ) @if test -d $(TESTSUITE); then \ cd $(TESTSUITE) && ./regtest.pl $(BINDIR)/$(EAFEXE) && cd $(PWD); \ else \ echo "Error: Testsuite not found in $(TESTSUITE)" && exit 1; \ fi clean : $(call ECHO,---> Removing $(BINDIR)/$(EAFEXE) <---) @$(RM) $(BINDIR)/$(EAFEXE) $(call ECHO,---> Removing object files $(OBJS) <---) @$(RM) $(OBJS) all : clean $(MAKE) default DIST_SRC_FILES = $(DIST_OTHER_FILES) $(OBJS:.o=.c) $(HEADERS) DIST_SRC := eaf-$(VERSION)-src dist : DEBUG=0 dist : CDEBUG= dist : all @(mkdir -p ../$(DIST_SRC) \ && rsync -rlpC --copy-unsafe-links --exclude=.svn $(DIST_SRC_FILES) ../$(DIST_SRC)/ \ && cd .. \ && tar cf - $(DIST_SRC) | gzip -f9 > $(DIST_SRC).tar.gz \ && rm -rf ./$(DIST_SRC)/* && rmdir ./$(DIST_SRC)/ \ && echo "$(DIST_SRC).tar.gz created." && cd $(PWD) ) eaf/src/Rcommon.h0000644000175000017500000001310413706402717013517 0ustar nileshnilesh#define R_NO_REMAP #include #include #include #include #include "common.h" #define CHECK_ARG_IS_NUMERIC_VECTOR(A) \ if (!Rf_isReal(A) || !Rf_isVector(A)) \ Rf_error("Argument '" #A "' is not a numeric vector"); #define CHECK_ARG_IS_INT_VECTOR(A) \ if (!Rf_isInteger(A) || !Rf_isVector(A)) \ Rf_error("Argument '" #A "' is not an integer vector"); #define CHECK_ARG_IS_LOGICAL_VECTOR(A) \ if (!Rf_isLogical(A) || !Rf_isVector(A)) \ Rf_error("Argument '" #A "' is not a logical vector"); /* The C API of R is awfully ugly and unpractical (and poorly documented). These wrappers make it a little more bearable. */ #define Rexp(VAR) Rexp_##VAR #define new_real_matrix(VAR, DIM1, DIM2) \ SEXP Rexp_##VAR; double *VAR; \ PROTECT(Rexp_##VAR = Rf_allocMatrix(REALSXP, (DIM1), (DIM2))); \ nprotected++; VAR = REAL(Rexp_##VAR) #define new_real_vector(VAR, DIM) \ SEXP Rexp_##VAR; double *VAR; \ PROTECT(Rexp_##VAR = Rf_allocVector(REALSXP, (DIM))); \ nprotected++; VAR = REAL(Rexp_##VAR) #define new_int_vector(VAR, DIM) \ SEXP Rexp_##VAR; int *VAR; \ PROTECT(Rexp_##VAR = Rf_allocVector(INTSXP, (DIM))); \ nprotected++; VAR = INTEGER(Rexp_##VAR) #define new_string_vector(VAR, DIM) \ SEXP Rexp_##VAR; int Rexp_##VAR##_len = 0; \ PROTECT(Rexp_##VAR = Rf_allocVector(STRSXP, (DIM))); \ nprotected++ #define string_vector_push_back(VAR, ELEMENT) \ SET_STRING_ELT(Rexp_##VAR, Rexp_##VAR##_len, Rf_mkChar(ELEMENT)); \ Rexp_##VAR##_len++ #define new_list(LISTVAR, LENGTH) \ SEXP Rexp_##LISTVAR; int Rexp_##LISTVAR##_len = 0; \ PROTECT(Rexp_##LISTVAR = Rf_allocVector(VECSXP, (LENGTH))); \ ++nprotected #define new_logical_vector(VAR, DIM) \ SEXP Rexp_##VAR; int *VAR; \ PROTECT(Rexp_##VAR = Rf_allocVector(LGLSXP, (DIM))); \ nprotected++; VAR = LOGICAL(Rexp_##VAR) #define list_len(VAR) Rexp_##VAR##_len #define list_push_back(LISTVAR, ELEMENT) \ SET_VECTOR_ELT(Rexp_##LISTVAR, Rexp_##LISTVAR##_len, Rexp_##ELEMENT); \ Rexp_##LISTVAR##_len++ #define set_names(VAR, NAMES) \ Rf_setAttrib(Rexp_##VAR, R_NamesSymbol, Rexp_##NAMES) #define set_attribute(VAR, ATTRIBUTE, VALUE) \ Rf_setAttrib(Rexp_##VAR, Rf_install(ATTRIBUTE), Rexp_##VALUE) /* * Unpack an integer vector stored in SEXP S. */ #define SEXP_2_DOUBLE_VECTOR(S, I, N) \ CHECK_ARG_IS_NUMERIC_VECTOR(S); \ double *I = REAL(S); \ const R_len_t N = Rf_length(S); #define SEXP_2_INT_VECTOR(S, I, N) \ CHECK_ARG_IS_INT_VECTOR(S); \ int *I = INTEGER(S); \ const R_len_t N = Rf_length(S); #define SEXP_2_LOGICAL_VECTOR(S, I, N) \ CHECK_ARG_IS_LOGICAL_VECTOR(S); \ int *I = LOGICAL(S); \ const R_len_t N = Rf_length(S); #define SEXP_2_INT(S,VAR) \ int VAR = Rf_asInteger(S); \ if (VAR == NA_INTEGER) \ Rf_error ("Argument '" #S "' is not an integer"); #define SEXP_2_LOGICAL(S,VAR) \ int VAR = Rf_asLogical(S); \ if (VAR == NA_LOGICAL) \ Rf_error ("Argument '" #S "' is not a logical"); #define SEXP_2_STRING(S,var) \ if (!Rf_isString(S) || Rf_length(S) != 1) \ Rf_error ("Argument '" #S "' is not a string"); \ const char * var = CHAR(STRING_ELT(S,0)); static inline void bool_2_logical_vector(int *dst, const bool *src, size_t n) { for (size_t i = 0; i < n; i++) dst[i] = src[i]; } /* FIXME: Measure if this is faster than the R implementation of t() */ static inline void double_transpose(double *dst, const double *src, const size_t nrows, const size_t ncols) { size_t j, i, pos = 0; for (j = 0; j < ncols; j++) { for (i = 0; i < nrows; i++) { dst[pos] = src[j + i * ncols]; pos++; } } } static inline SEXP set_colnames(SEXP matrix, const char *const * names, size_t names_len) { int nprotected=0; SEXP dimnames = Rf_getAttrib(matrix, R_DimNamesSymbol); if (dimnames == R_NilValue) { PROTECT(dimnames = Rf_allocVector(VECSXP, 2)); nprotected++; } new_string_vector (colnames, names_len); for (size_t k = 0; k < names_len; k++) { string_vector_push_back (colnames, names[k]); } SET_VECTOR_ELT(dimnames, 1, Rexp(colnames)); Rf_setAttrib(matrix, R_DimNamesSymbol, dimnames); UNPROTECT(nprotected); return(matrix); } eaf/src/Makevars.win0000644000175000017500000000311614160072323014215 0ustar nileshnilesh# -*- mode: makefile -*- # Do not put GCC specific flags here. Put them instead in CFLAGS and # CXXFLAGS in ~/.R/Makevars # This is from https://github.com/eddelbuettel/rcppgsl/blob/master/tools/winlibs.R RSCRIPT := "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" GSL_ROOT :=$(shell $(RSCRIPT) -e 'cat(file.path(getwd(), "../windows/gsl-2.7/"))') GSL_CFLAGS = -I"$(GSL_ROOT)/include" GSL_LIBS = -L"$(GSL_ROOT)/lib${R_ARCH}${CRT}" -lgsl -lgslcblas DEBUG=0 PKG_CPPFLAGS = $(GSL_CFLAGS) -DR_PACKAGE -DDEBUG=$(DEBUG) -I./eaf/ -I./mo-tools/ PKG_LIBS = $(GSL_LIBS) EAF_SRC_FILES= avl.c eaf3d.c eaf.c io.c MOTOOLS_SRC_FILES = hv_contrib.c hv.c pareto.c whv.c whv_hype.c SOURCES = $(EAF_SRC_FILES:%=eaf/%) $(MOTOOLS_SRC_FILES:%=mo-tools/%) init.c Reaf.c Repsilon.c Rhv.c Rnondominated.c OBJECTS = $(SOURCES:.c=.o) EXEEXT=.exe export GSL_CFLAGS GSL_LIBS eaf = eaf/eaf$(EXEEXT) igd = mo-tools/igd$(EXEEXT) epsilon = mo-tools/epsilon$(EXEEXT) dominatedsets = mo-tools/dominatedsets$(EXEEXT) nondominated = mo-tools/nondominated$(EXEEXT) ndsort = mo-tools/ndsort$(EXEEXT) .PHONY: all clean winlibs all: $(SHLIB) $(MAKE) -C eaf all march=none CC="$(CC)" CFLAGS="$(CFLAGS)" OPT_CFLAGS="" WARN_CFLAGS="" DEBUG=$(DEBUG) EXE=$(EXEEXT) $(MAKE) -C mo-tools all march=none CC="$(CC)" CFLAGS="$(CFLAGS)" OPT_CFLAGS="" WARN_CFLAGS="" DEBUG=$(DEBUG) EXE=$(EXEEXT) $(SHLIB): $(OBJECTS) mo-tools/hv.o: PKG_CPPFLAGS += -DVARIANT=4 clean: @-rm -f *.o *.so *.dll \ eaf/*.o $(eaf) \ $(igd) $(epsilon) $(dominatedsets) $(nondominated) $(ndsort) \ mo-tools/*.o $(OBJECTS): winlibs winlibs: $(RSCRIPT) "../tools/winlibs.R" eaf/src/Rhv.c0000644000175000017500000000635113706402717012645 0ustar nileshnilesh#include "Rcommon.h" #include "hv.h" SEXP hypervolume_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE) { int nprotected = 0; double *data = REAL(DATA); SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); SEXP_2_DOUBLE_VECTOR(REFERENCE, reference, reference_len); if (nobj != reference_len) Rf_error("length of reference point (%d) is different from number of objectives (%d)", reference_len, nobj); new_real_vector(hv, 1); hv[0] = fpli_hv(data, nobj, npoint, reference); UNPROTECT (nprotected); return Rexp(hv); } SEXP hv_contributions_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE) { int nprotected = 0; double *data = REAL(DATA); SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); SEXP_2_DOUBLE_VECTOR(REFERENCE, reference, reference_len); if (nobj != reference_len) Rf_error("length of reference point (%d) is different from number of objectives (%d)", reference_len, nobj); new_real_vector(hv, npoint); hv_contributions(hv, data, nobj, npoint, reference); UNPROTECT (nprotected); return Rexp(hv); } #include "whv.h" SEXP rect_weighted_hv2d_C(SEXP DATA, SEXP NPOINTS, SEXP RECTANGLES, SEXP RECTANGLES_NROW) { int nprotected = 0; // It cannot be const because we need to sort it. double *data = REAL(DATA); SEXP_2_INT(NPOINTS, npoints); // It cannot be const because we need to sort it. double *rectangles = REAL(RECTANGLES); SEXP_2_INT(RECTANGLES_NROW, rectangles_nrow); new_real_vector(hv, 1); hv[0] = rect_weighted_hv2d(data, npoints, rectangles, rectangles_nrow); UNPROTECT (nprotected); return Rexp(hv); } #include "whv_hype.h" hype_sample_dist * Sexp_to_dist(SEXP DIST, SEXP SEED) { int nprotected = 0; hype_sample_dist * dist = NULL; SEXP_2_INT(SEED, seed); const char * dist_type = CHAR(STRING_ELT(VECTOR_ELT(DIST, 0), 0)); if (0 == strcmp(dist_type, "uniform")) { dist = hype_dist_unif_new(seed); } else if (0 == strcmp(dist_type, "exponential")) { const double * mu = REAL(VECTOR_ELT(DIST, 1)); dist = hype_dist_exp_new(mu[0], seed); } else if (0 == strcmp(dist_type, "point")) { const double * mu = REAL(VECTOR_ELT(DIST, 1)); dist = hype_dist_gaussian_new(mu, seed); } else { Rf_error("unknown dist_type: %s", dist_type); } UNPROTECT (nprotected); return dist; } SEXP whv_hype_C(SEXP DATA, SEXP NPOINTS, SEXP IDEAL, SEXP REFERENCE, SEXP DIST, SEXP SEED, SEXP NSAMPLES) { int nprotected = 0; // It cannot be const because we need to sort it. double *data = REAL(DATA); SEXP_2_INT(NPOINTS, npoints); SEXP_2_INT(NSAMPLES, nsamples); SEXP_2_DOUBLE_VECTOR(REFERENCE, reference, reference_len); SEXP_2_DOUBLE_VECTOR(IDEAL, ideal, ideal_len); eaf_assert(reference_len == ideal_len); eaf_assert(reference_len == 2); hype_sample_dist * dist = Sexp_to_dist(DIST, SEED); new_real_vector(hv, 1); if (!dist) { Rf_error("Sexp_to_dist failed to create dist"); } else { hv[0] = whv_hype_estimate(data, npoints, ideal, reference, dist, nsamples); hype_dist_free(dist); } UNPROTECT (nprotected); return Rexp(hv); } eaf/src/mo-tools/0000755000175000017500000000000014160346554013507 5ustar nileshnilesheaf/src/mo-tools/hv.h0000644000175000017500000000316514160346515014277 0ustar nileshnilesh/************************************************************************* hv.h --------------------------------------------------------------------- Copyright (c) 2005, 2006 Carlos M. Fonseca Manuel Lopez-Ibanez Luis Paquete This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- *************************************************************************/ #ifndef HV_H_ #define HV_H_ #ifdef __cplusplus extern "C" { #endif double fpli_hv(const double *data, int d, int n, const double *ref); void hv_contributions (double *hvc, double *points, int dim, int size, const double * ref); #ifdef __cplusplus } #endif #endif eaf/src/mo-tools/io_priv.h0000644000175000017500000001340214160346515015324 0ustar nileshnilesh#include #include #include /* for strerror() */ #include /* for errno */ #define PAGE_SIZE 4096 /* allocate one page at a time */ #define DATA_INC (PAGE_SIZE/sizeof(objective_t)) /* * Read an array of objective values from a stream. This function may * be called repeatedly to add data to an existing data set. * * nobjs : number of objectives, also the number of columns. */ int read_objective_t_data (const char *filename, objective_t **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p) { int nobjs = *nobjs_p; /* number of objectives (and columns). */ int *cumsizes = *cumsizes_p; /* cumulative sizes of data sets. */ int nsets = *nsets_p; /* number of data sets. */ objective_t *data = *data_p; int errorcode = 0; FILE *instream; if (filename == NULL) { instream = stdin; filename = stdin_name; /* used to diagnose errors. */ } else if (NULL == (instream = fopen (filename,"rb"))) { errprintf ("%s: %s", filename, strerror (errno)); return ERROR_FOPEN; } int ntotal; /* the current element of (*datap) */ int datasize; int sizessize; if (nsets == 0) { ntotal = 0; sizessize = 0; datasize = 0; } else { ntotal = nobjs * cumsizes[nsets - 1]; sizessize = ((nsets - 1) / DATA_INC + 1) * DATA_INC; datasize = ((ntotal - 1) / DATA_INC + 1) * DATA_INC; } /* if size is equal to zero, this is equivalent to free(). That is, reinitialize the data structures. */ cumsizes = realloc (cumsizes, sizessize * sizeof(int)); data = realloc (data, datasize * sizeof(objective_t)); /* skip over leading whitespace, comments and empty lines. */ int retval; /* return value for fscanf */ int column = 0, line = 0; do { line++; /* skip full lines starting with # */ retval = skip_comment_line (instream); } while (retval == 1); if (retval == EOF) { /* faster than !feof() */ warnprintf ("%s: file is empty.", filename); errorcode = READ_INPUT_FILE_EMPTY; goto read_data_finish; } do { /* beginning of data set */ if (nsets == sizessize) { sizessize += DATA_INC; cumsizes = realloc(cumsizes, sizessize * sizeof(int)); } cumsizes[nsets] = (nsets == 0) ? 0 : cumsizes[nsets - 1]; do { /* beginning of row */ column = 0; do { /* new column */ column++; objective_t number; if (fscanf (instream, objective_t_scanf_format, &number) != 1) { char buffer[64]; if (fscanf (instream, "%60[^ \t\r\n]", buffer) == EOF) { errprintf ("%s: line %d column %d: " "read error or EOF", filename, line, column); } else { errprintf ("%s: line %d column %d: " "could not convert string `%s' to double", filename, line, column, buffer); } errorcode = ERROR_CONVERSION; goto read_data_finish; } if (ntotal == datasize) { datasize += DATA_INC; data = realloc (data, datasize * sizeof(objective_t)); } data[ntotal] = number; ntotal++; DEBUG2(fprintf(stderr, "%s:%d:%d(%d) %d (set %d) = " point_printf_format "\n", filename, line, column, nobjs, cumsizes[nsets], nsets, (double)number)); /* skip possible trailing whitespace */ skip_trailing_whitespace(instream); retval = fscanf_newline(instream); } while (retval == 0); if (!nobjs) nobjs = column; else if (column == nobjs) ; /* OK */ else if (cumsizes[0] == 0) { /* just finished first row. */ errprintf ("%s: line %d: input has dimension %d" " while previous data has dimension %d", filename,line, column, nobjs); errorcode = READ_INPUT_WRONG_INITIAL_DIM; goto read_data_finish; } else { errprintf ("%s: line %d has different number of columns (%d)" " from first row (%d)\n", filename, line, column, nobjs); errorcode = ERROR_COLUMNS; goto read_data_finish; } cumsizes[nsets]++; /* look for an empty line */ line++; retval = skip_comment_line (instream); } while (retval == 0); nsets++; /* new data set */ DEBUG2(fprintf (stderr, "%s: set %d, read %d rows\n", filename, nsets, cumsizes[nsets - 1])); /* skip over successive empty lines */ do { line++; retval = skip_comment_line (instream); } while (retval == 1); } while (retval != EOF); /* faster than !feof() */ /* adjust to real size (saves memory but probably slower). */ cumsizes = realloc (cumsizes, nsets * sizeof(int)); data = realloc (data, ntotal * sizeof(objective_t)); read_data_finish: *nobjs_p = nobjs; *nsets_p = nsets; *cumsizes_p = cumsizes; *data_p = data; if (instream != stdin) fclose(instream); return errorcode; } #undef PAGE_SIZE #undef DATA_INC eaf/src/mo-tools/pareto.c0000644000175000017500000001700014160346515015140 0ustar nileshnilesh#include "nondominated.h" struct point_2d_front { const double *p; unsigned int i; unsigned int f; }; static int point_2d_front_cmp (const void * a, const void * b) { const double *pa = ((const struct point_2d_front *)a)->p; const double *pb = ((const struct point_2d_front *)b)->p; const double x0 = pa[0]; const double x1 = pa[1]; const double y0 = pb[0]; const double y1 = pb[1]; /* FIXME: Use ?: */ if (x0 < y0) return -1; else if (x0 > y0) return 1; else if (x1 < y1) return -1; else if (x1 > y1) return 1; else return 0; } /* Nondominated sorting in 2D in O(n log n) from: M. T. Jensen. Reducing the run-time complexity of multiobjective EAs: The NSGA-II and other algorithms. IEEE Transactions on Evolutionary Computation, 7(5):503–515, 2003. FIXME: Could we avoid creating a copy of the points? */ static int * pareto_rank_2D (const double *points, int size) { const int dim = 2; int k; struct point_2d_front *data = malloc(sizeof(struct point_2d_front) * size); for (k = 0; k < size; k++) { data[k].p = &points[k * dim]; data[k].i = (unsigned) k; data[k].f = 0; } #if DEBUG >= 2 #define PARETO_RANK_2D_DEBUG double *help_0 = malloc (size * sizeof(double)); double *help_1 = malloc (size * sizeof(double)); int * help_i = malloc (size * sizeof(int)); for (k = 0; k < size; k++) { help_0[k] = data[k].p[0]; help_1[k] = data[k].p[1]; help_i[k] = data[k].i; } fprintf(stderr, "%s():\n-------------------\n>>INPUT:", __FUNCTION__); //fprintf(stderr, "\nIndex: "); vector_int_fprintf_fmt (stderr, help_i, size, "%4d"); fprintf(stderr, "\n[0] : "); vector_fprintf (stderr, help_0, size); fprintf(stderr, "\n[1] : "); vector_fprintf (stderr, help_1, size); #endif qsort (data, size, sizeof(struct point_2d_front), point_2d_front_cmp); #ifdef PARETO_RANK_2D_DEBUG for (k = 0; i < size; k++) { help_0[k] = data[k].p[0]; help_1[k] = data[k].p[1]; help_i[k] = data[k].i; } fprintf(stderr, "%s():\n-------------------\n>>SORTED:", __FUNCTION__); fprintf(stderr, "\nIndex: "); vector_int_fprintf_fmt (stderr, help_i, size, "%4d"); fprintf(stderr, "\n[0] : "); vector_fprintf (stderr, help_0, size); fprintf(stderr, "\n[1] : "); vector_fprintf (stderr, help_1, size); #endif int n_front = 0; int * front_last = malloc (size * sizeof(int)); front_last[0] = 0; data[0].f = 0; /* The first point is in the first front. */ for (k = 1; k < size; k++) { const double *p = data[k].p; if (p[1] < data[front_last[n_front]].p[1]) { int low = 0; int high = n_front + 1; do { int mid = low + (high - low) /2; eaf_assert (mid <= n_front); const double *pmid = data[front_last[mid]].p; if (p[1] < pmid[1]) high = mid; else if (p[1] > pmid[1] || (p[1] == pmid[1] && p[0] > pmid[0])) low = mid + 1; else { // Duplicated points are assigned to the same front. low = mid; break; } } while (low < high); eaf_assert (low <= n_front); eaf_assert (p[1] < data[front_last[low]].p[1] || (p[1] == data[front_last[low]].p[1] && p[0] == data[front_last[low]].p[0])); front_last[low] = k; data[k].f = low; } else if (p[1] == data[front_last[n_front]].p[1] && p[0] == data[front_last[n_front]].p[0]) { front_last[n_front] = k; data[k].f = n_front; } else { n_front++; front_last[n_front] = k; data[k].f = n_front; } } free (front_last); #ifdef PARETO_RANK_2D_DEBUG { n_front++; // count max + 1 int f, i; int *front_size = calloc(nfront, sizeof(int)); int ** front = calloc(nfront, sizeof(int *)); for (k = 0; k < size; k++) { f = data[k].f; if (front_size[f] == 0) { front[f] = malloc (size * sizeof(int)); } front[f][front_size[f]] = k; front_size[f]++; } int *order = malloc (size * sizeof(int)); f = 0, k = 0, i = 0; do { order[i] = front[f][k]; fprintf (stderr, "\nfront[%d][%d] = %d = { %g , %g, %d, %d }", f, k, front[f][k], data[front[f][k]].p[0], data[front[f][k]].p[1], data[front[f][k]].i, data[front[f][k]].f); i++, k++; if (k == front_size[f]) { f++; k = 0; } } while (f != n_front); for (f = 0; f < n_front; f++) free(front[f]); free(front); free(front_size); for (k = 0; i < size; k++) { help_0[k] = data[order[k]].p[0]; help_1[k] = data[order[k]].p[1]; help_i[k] = data[order[k]].i; } fprintf(stderr, "%s():\n-------------------\n>>OUTPUT:", __FUNCTION__); fprintf(stderr, "\nIndex: "); vector_int_fprintf_fmt (stderr, help_i, size, "%4d"); fprintf(stderr, "\n[0] : "); vector_fprintf (stderr, help_0, size); fprintf(stderr, "\n[1] : "); vector_fprintf (stderr, help_1, size); free (order); } free (help_0); free (help_1); free (help_i); exit(1); #endif int * rank = malloc(size * sizeof(int)); for (k = 0; k < size; k++) { rank[data[k].i] = data[k].f + 1; } free (data); return rank; } static bool dominates(const double *pj, const double * pk, int dim) { bool j_leq_k = true; for (int d = 0; d < dim; d++) { j_leq_k = j_leq_k && (pj[d] <= pk[d]); } return j_leq_k; } /* FIXME: This takes O(n^3). Look at M. T. Jensen. Reducing the run-time complexity of multiobjective EAs: The NSGA-II and other algorithms. IEEE Transactions on Evolutionary Computation, 7(5):503–515, 2003. */ int * pareto_rank (const double *points, int dim, int size) { int * rank2 = NULL; if (dim == 2) { rank2 = pareto_rank_2D(points, size); } int * rank = malloc(size * sizeof(int)); for (int k = 0; k < size; k++) { rank[k] = 1; } int level = 2; bool nothing_new; do { nothing_new = true; for (int j = 0; j < size; j++) { eaf_assert(rank[j] <= level); /* is already dominated or belongs to a previous front? */ if (rank[j] != level - 1) continue; for (int k = 0; k < size; k++) { if (k == j) continue; if (rank[k] != level - 1) continue; const double *pj = points + j * dim; const double *pk = points + k * dim; bool j_leq_k = dominates(pj, pk, dim); bool k_leq_j = dominates(pk, pj, dim); if (j_leq_k && !k_leq_j) { nothing_new = false; rank[k]++; } else if (!j_leq_k && k_leq_j) { nothing_new = false; rank[j]++; break; } } } level++; } while (!nothing_new); if (rank2 != NULL) { for (int k = 0; k < size; k++) { eaf_assert(rank[k] == rank2[k]); } free(rank2); } return rank; } eaf/src/mo-tools/gcc.mk0000644000175000017500000000144514160346515014575 0ustar nileshnilesh# -*- Makefile-gmake -*- WARN_CFLAGS = -pedantic -Wall -Wextra SANITIZERS= -fsanitize=undefined -fsanitize=address ifeq ($(DEBUG), 0) OPT_CFLAGS ?= -O3 -DNDEBUG # Options -funroll-loops -ffast-math -msse -mfpmath=sse improve performance but are not portable. # Options -fstandard-precision=fast -ftree-vectorize are not well # supported in some versions/architectures. else OPT_CFLAGS += -g3 -O0 $(SANITIZERS) endif ifdef march MARCH=$(march) endif ifndef MARCH MARCH=native endif gcc-guess-march = $(strip $(shell $(CC) -march=$(MARCH) $(CFLAGS) -x c -S -\#\#\# - < /dev/null 2>&1 | \ grep -m 1 -e cc1 | grep -o -e "march=[^'\"]*" | head -n 1 | sed 's,march=,,')) ifeq ($(gcc-guess-march),) gcc-guess-march=unknown endif ifneq ($(MARCH),none) OPT_CFLAGS += -march=$(MARCH) endif eaf/src/mo-tools/igd.h0000644000175000017500000001520214160346515014420 0ustar nileshnilesh#ifndef IGD_H #define IGD_H /************************************* GD was first proposed in [1] with p=2. IGD seems to have been mentioned first in [2], however, some people also used the name D-metric for the same thing with p=1 and later papers have often used IGD/GD with p=1. GD_p and IGD_p were proposed in [4] and they change how the numerator is computed. This has a significant effect for GD and less so for IGD given a constant reference set. IGD+ was proposed in [5] and changes how to compute the distances. In general, norm=2 (Euclidean distance), but other norms are possible [4]. See [6] for a comparison. [1] D. A. Van Veldhuizen and G. B. Lamont. Evolutionary Computation and Convergence to a Pareto Front. In J. R. Koza, editor, Late Breaking Papers at the Genetic Programming 1998 Conference, pages 221–228, Stanford University, California, July 1998. Stanford University Bookstore. Keywords: generational distance. [2] Coello Coello, C.A., Reyes-Sierra, M.: A study of the parallelization of a coevolutionary multi-objective evolutionary algorithm. In: Monroy, R., et al. (eds.) Proceedings of MICAI, LNAI, vol. 2972, pp. 688–697. Springer, Heidelberg, Germany (2004). [3] Q. Zhang and H. Li. MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition. IEEE Transactions on Evolutionary Computation, 11(6):712–731, 2007. doi:10.1109/TEVC.2007.892759. [4] Schutze, O., Esquivel, X., Lara, A., Coello Coello, C.A.: Using the averaged Hausdorff distance as a performance measure in evolutionary multiobjective optimization. IEEE Trans. Evol. Comput. 16(4), 504–522 (2012) [5] H. Ishibuchi, H. Masuda, Y. Tanigaki, and Y. Nojima. Modified Distance Calculation in Generational Distance and Inverted Generational Distance. In A. Gaspar-Cunha, C. H. Antunes, and C. A. Coello Coello, editors, Evolutionary Multi-criterion Optimization, EMO 2015 Part I, volume 9018 of Lecture Notes in Computer Science, pages 110–125. Springer, Heidelberg, Germany, 2015. [6] Leonardo C. T. Bezerra, Manuel López-Ibáñez, and Thomas Stützle. An empirical assessment of the properties of inverted generational distance indicators on multi- and many-objective optimization. In H. Trautmann, G. Rudolph, K. Klamroth, O. Schütze, M. M. Wiecek, Y. Jin, and C. Grimme, editors, Evolutionary Multi-criterion Optimization, EMO 2017, Lecture Notes in Computer Science, pages 31–45. Springer, 2017. */ #include #include #include #include #ifndef INFINITY #define INFINITY (HUGE_VAL) #endif #include "common.h" #include "io.h" static inline double gd_common (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r, bool plus, bool psize, unsigned int p) { if (size_a == 0) return INFINITY; int a, r, d; double gd = 0; for (a = 0; a < size_a; a++) { double min_dist = INFINITY; for (r = 0; r < size_r; r++) { double dist = 0.0; for (d = 0; d < dim; d++) { if (minmax[d] == 0) continue; double a_d = points_a[a * dim + d]; double r_d = points_r[r * dim + d]; double diff = (!plus) ? (r_d - a_d) : MAX((minmax[d] < 0) ? (r_d - a_d) : (a_d - r_d), 0.0); // TODO: Implement taxicab and infinity norms dist += diff * diff; } // We should calculate here the sqrt() of the Euclidean, however // that would not change which one is the minimum, so we compute it // outside the loop, which is faster. if (dist < min_dist) min_dist = dist; } // Here we calculate the actual Euclidean distance. min_dist = sqrtl(min_dist); gd += (p == 1) ? min_dist : powl (min_dist, p); } if (p == 1) return gd / (double) size_a; else if (psize) return powl (gd / (double) size_a, 1.0 / p); else return powl (gd, 1.0 / p) / (double) size_a; } static inline double GD (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r) { return gd_common (dim, minmax, points_a, size_a, points_r, size_r, /*plus=*/false, /*psize=*/false, /*p=*/1); } static inline double IGD (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r) { return gd_common (dim, minmax, points_r, size_r, points_a, size_a, /*plus=*/false, /*psize=*/false, /*p=*/1); } static inline double GD_p (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r, unsigned int p) { return gd_common (dim, minmax, points_a, size_a, points_r, size_r, /*plus=*/false, /*psize=*/true, p); } static inline double IGD_p (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r, unsigned int p) { return gd_common (dim, minmax, points_r, size_r, points_a, size_a, /*plus=*/false, /*psize=*/true, p); } static inline double IGD_plus (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r) { return gd_common (dim, minmax, points_r, size_r, points_a, size_a, /*plus=*/true, /*psize=*/true, /*p=*/1); } static inline double avg_Hausdorff_dist (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_r, int size_r, unsigned int p) { double gd_p = gd_common (dim, minmax, points_a, size_a, points_r, size_r, /*plus=*/false, /*psize=*/true, p); double igd_p = gd_common (dim, minmax, points_r, size_r, points_a, size_a, /*plus=*/false, /*psize=*/true, p); return MAX (gd_p, igd_p); } /* TODO: Implement p=INFINITY See [4] */ #endif /* IGD_H */ eaf/src/mo-tools/io.c0000644000175000017500000001233514160346515014263 0ustar nileshnilesh/***************************************************************************** I/O functions --------------------------------------------------------------------- Copyright (c) 2005-2008 Carlos M. Fonseca Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- TODO: things that may or may not improve reading performance. * different values for PAGE_SIZE. * reading whole lines and then sscanf the line. * mmaping the input file (or a big chunk of few megabytes), then read, then unmmap. *****************************************************************************/ #include #include #include "io.h" #include "common.h" /* FIXME: Do we need to handle the following weird files? */ /* fscanf (instream, "%*[ \t]"); retval = fscanf (instream, "%1[\r\n]", newline); // We do not consider that '\r\n' starts a new set. if (retval == 1 && newline[0] == '\r') fscanf (instream, "%*[\n]"); */ static inline void skip_trailing_whitespace (FILE * instream) { ignore_unused_result (fscanf (instream, "%*[ \t\r]")); } static inline int fscanf_newline(FILE * instream) { char newline[2]; return fscanf (instream, "%1[\n]", newline); } /* skip full lines starting with # */ static inline int skip_comment_line (FILE * instream) { char newline[2]; if (!fscanf (instream, "%1[#]%*[^\n]", newline)) /* and whitespace */ skip_trailing_whitespace(instream); return fscanf_newline(instream); } #define objective_t int #define objective_t_scanf_format "%d" #define read_objective_t_data read_int_data #include "io_priv.h" #undef objective_t #undef objective_t_scanf_format #undef read_objective_t_data #define objective_t double #define objective_t_scanf_format "%lf" #define read_objective_t_data read_double_data #include "io_priv.h" #undef objective_t #undef objective_t_scanf_format #undef read_objective_t_data #ifndef R_PACKAGE extern char *program_invocation_short_name; void fatal_error(const char *format,...) { va_list ap; fprintf(stderr, "%s: fatal error: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); exit(EXIT_FAILURE); } /* From: Edition 0.10, last updated 2001-07-06, of `The GNU C Library Reference Manual', for Version 2.3.x. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. */ void errprintf(const char *format,...) { va_list ap; fprintf(stderr, "%s: error: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); fprintf(stderr, "\n"); } /* End of copyright The GNU C Library Reference Manual */ void warnprintf(const char *format,...) { va_list ap; fprintf(stderr, "%s: warning: ", program_invocation_short_name); va_start(ap,format); vfprintf(stderr, format, ap); va_end(ap); fprintf(stderr, "\n"); } void vector_fprintf (FILE *stream, const double * vector, int size) { int k; fprintf (stream, point_printf_format, vector[0]); for (k = 1; k < size; k++) fprintf (stream, point_printf_sep "" point_printf_format, vector[k]); } void vector_printf (const double *vector, int size) { vector_fprintf (stdout, vector, size); } int write_sets (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns) { int size = 0; int set = 0; for (set = 0; set < nruns; set++) { for (; size < cumsizes[set]; size++) { vector_fprintf (outfile, &data[ncols * size], ncols); fprintf (outfile, "\n"); } fprintf (outfile, "\n"); } return 0; } int write_sets_filtered (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns, const bool *write_p) { int size = 0; int set = 0; for (set = 0; set < nruns; set++) { for (; size < cumsizes[set]; size++) { if (write_p[size]) { vector_fprintf (outfile, &data[ncols * size], ncols); fprintf (outfile, "\n"); } } fprintf (outfile, "\n"); } return 0; } #endif eaf/src/mo-tools/hv.c0000644000175000017500000006162214160346515014274 0ustar nileshnilesh/************************************************************************* hypervolume computation --------------------------------------------------------------------- Copyright (c) 2010 Carlos M. Fonseca Manuel Lopez-Ibanez Luis Paquete This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- Relevant literature: [1] C. M. Fonseca, L. Paquete, and M. Lopez-Ibanez. An improved dimension-sweep algorithm for the hypervolume indicator. In IEEE Congress on Evolutionary Computation, pages 1157-1163, Vancouver, Canada, July 2006. [2] Nicola Beume, Carlos M. Fonseca, Manuel López-Ibáñez, Luís Paquete, and J. Vahrenhold. On the complexity of computing the hypervolume indicator. IEEE Transactions on Evolutionary Computation, 13(5):1075-1082, 2009. *************************************************************************/ #include "hv.h" #include #include #include #include #include #ifdef R_PACKAGE #include #define fatal_error(...) Rf_error(__VA_ARGS__) #else #include #include "gcc_attribs.h" static void fatal_error(const char * str,...) __attribute__ ((format(printf, 1, 2))) __noreturn; static void fatal_error(const char *template,...) { va_list ap; va_start(ap,template); vfprintf(stderr, template, ap); va_end(ap); exit(EXIT_FAILURE); } #endif static int compare_tree_asc(const void *p1, const void *p2); /*----------------------------------------------------------------------------- The following is a reduced version of the AVL-tree library used here according to the terms of the GPL. See the copyright notice below. */ #define AVL_DEPTH /***************************************************************************** avl.h - Source code for the AVL-tree library. Copyright (C) 1998 Michael H. Buselli Copyright (C) 2000-2002 Wessel Dankers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Augmented AVL-tree. Original by Michael H. Buselli . Modified by Wessel Dankers to add a bunch of bloat to the sourcecode, change the interface and squash a few bugs. Mail him if you find new bugs. *****************************************************************************/ /* User supplied function to compare two items like strcmp() does. * For example: cmp(a,b) will return: * -1 if a < b * 0 if a = b * 1 if a > b */ typedef int (*avl_compare_t)(const void *, const void *); /* User supplied function to delete an item when a node is free()d. * If NULL, the item is not free()d. */ typedef void (*avl_freeitem_t)(void *); typedef struct avl_node_t { struct avl_node_t *next; struct avl_node_t *prev; struct avl_node_t *parent; struct avl_node_t *left; struct avl_node_t *right; const void *item; double domr; #ifdef AVL_DEPTH unsigned char depth; #endif } avl_node_t; typedef struct avl_tree_t { avl_node_t *head; avl_node_t *tail; avl_node_t *top; avl_compare_t cmp; avl_freeitem_t freeitem; } avl_tree_t; /***************************************************************************** avl.c - Source code for the AVL-tree library. *****************************************************************************/ static void avl_rebalance(avl_tree_t *, avl_node_t *); #ifdef AVL_DEPTH #define NODE_DEPTH(n) ((n) ? (n)->depth : 0) #define L_DEPTH(n) (NODE_DEPTH((n)->left)) #define R_DEPTH(n) (NODE_DEPTH((n)->right)) #define CALC_DEPTH(n) ((L_DEPTH(n)>R_DEPTH(n)?L_DEPTH(n):R_DEPTH(n)) + 1) #endif static int avl_check_balance(avl_node_t *avlnode) { #ifdef AVL_DEPTH int d; d = R_DEPTH(avlnode) - L_DEPTH(avlnode); return d<-1?-1:d>1?1:0; #endif } static int avl_search_closest(const avl_tree_t *avltree, const void *item, avl_node_t **avlnode) { avl_node_t *node; int c; if(!avlnode) avlnode = &node; node = avltree->top; if(!node) return *avlnode = NULL, 0; for(;;) { c = compare_tree_asc(item, node->item); if(c < 0) { if(node->left) node = node->left; else return *avlnode = node, -1; } else if(c > 0) { if(node->right) node = node->right; else return *avlnode = node, 1; } else { return *avlnode = node, 0; } } } static avl_tree_t * avl_init_tree(avl_tree_t *rc, avl_compare_t cmp, avl_freeitem_t freeitem) { if(rc) { rc->head = NULL; rc->tail = NULL; rc->top = NULL; rc->cmp = cmp; rc->freeitem = freeitem; } return rc; } static avl_tree_t * avl_alloc_tree(avl_compare_t cmp, avl_freeitem_t freeitem) { return avl_init_tree(malloc(sizeof(avl_tree_t)), cmp, freeitem); } static void avl_clear_tree(avl_tree_t *avltree) { avltree->top = avltree->head = avltree->tail = NULL; } static void avl_clear_node(avl_node_t *newnode) { newnode->left = newnode->right = NULL; #ifdef AVL_COUNT newnode->count = 1; #endif #ifdef AVL_DEPTH newnode->depth = 1; #endif } static avl_node_t * avl_insert_top(avl_tree_t *avltree, avl_node_t *newnode) { avl_clear_node(newnode); newnode->prev = newnode->next = newnode->parent = NULL; avltree->head = avltree->tail = avltree->top = newnode; return newnode; } static avl_node_t * avl_insert_after(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode); static avl_node_t * avl_insert_before(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { if(!node) return avltree->tail ? avl_insert_after(avltree, avltree->tail, newnode) : avl_insert_top(avltree, newnode); if(node->left) return avl_insert_after(avltree, node->prev, newnode); assert (node); assert (!node->left); avl_clear_node(newnode); newnode->next = node; newnode->parent = node; newnode->prev = node->prev; if(node->prev) node->prev->next = newnode; else avltree->head = newnode; node->prev = newnode; node->left = newnode; avl_rebalance(avltree, node); return newnode; } static avl_node_t * avl_insert_after(avl_tree_t *avltree, avl_node_t *node, avl_node_t *newnode) { if(!node) return avltree->head ? avl_insert_before(avltree, avltree->head, newnode) : avl_insert_top(avltree, newnode); if(node->right) return avl_insert_before(avltree, node->next, newnode); assert (node); assert (!node->right); avl_clear_node(newnode); newnode->prev = node; newnode->parent = node; newnode->next = node->next; if(node->next) node->next->prev = newnode; else avltree->tail = newnode; node->next = newnode; node->right = newnode; avl_rebalance(avltree, node); return newnode; } /* * avl_unlink_node: * Removes the given node. Does not delete the item at that node. * The item of the node may be freed before calling avl_unlink_node. * (In other words, it is not referenced by this function.) */ static void avl_unlink_node(avl_tree_t *avltree, avl_node_t *avlnode) { avl_node_t *parent; avl_node_t **superparent; avl_node_t *subst, *left, *right; avl_node_t *balnode; if(avlnode->prev) avlnode->prev->next = avlnode->next; else avltree->head = avlnode->next; if(avlnode->next) avlnode->next->prev = avlnode->prev; else avltree->tail = avlnode->prev; parent = avlnode->parent; superparent = parent ? avlnode == parent->left ? &parent->left : &parent->right : &avltree->top; left = avlnode->left; right = avlnode->right; if(!left) { *superparent = right; if(right) right->parent = parent; balnode = parent; } else if(!right) { *superparent = left; left->parent = parent; balnode = parent; } else { subst = avlnode->prev; if(subst == left) { balnode = subst; } else { balnode = subst->parent; balnode->right = subst->left; if(balnode->right) balnode->right->parent = balnode; subst->left = left; left->parent = subst; } subst->right = right; subst->parent = parent; right->parent = subst; *superparent = subst; } avl_rebalance(avltree, balnode); } /* * avl_rebalance: * Rebalances the tree if one side becomes too heavy. This function * assumes that both subtrees are AVL-trees with consistant data. The * function has the additional side effect of recalculating the count of * the tree at this node. It should be noted that at the return of this * function, if a rebalance takes place, the top of this subtree is no * longer going to be the same node. */ static void avl_rebalance(avl_tree_t *avltree, avl_node_t *avlnode) { avl_node_t *child; avl_node_t *gchild; avl_node_t *parent; avl_node_t **superparent; parent = avlnode; while(avlnode) { parent = avlnode->parent; superparent = parent ? avlnode == parent->left ? &parent->left : &parent->right : &avltree->top; switch(avl_check_balance(avlnode)) { case -1: child = avlnode->left; #ifdef AVL_DEPTH if(L_DEPTH(child) >= R_DEPTH(child)) { #else #ifdef AVL_COUNT if(L_COUNT(child) >= R_COUNT(child)) { #else #error No balancing possible. #endif #endif avlnode->left = child->right; if(avlnode->left) avlnode->left->parent = avlnode; child->right = avlnode; avlnode->parent = child; *superparent = child; child->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); #endif } else { gchild = child->right; avlnode->left = gchild->right; if(avlnode->left) avlnode->left->parent = avlnode; child->right = gchild->left; if(child->right) child->right->parent = child; gchild->right = avlnode; if(gchild->right) gchild->right->parent = gchild; gchild->left = child; if(gchild->left) gchild->left->parent = gchild; *superparent = gchild; gchild->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); gchild->count = CALC_COUNT(gchild); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); gchild->depth = CALC_DEPTH(gchild); #endif } break; case 1: child = avlnode->right; #ifdef AVL_DEPTH if(R_DEPTH(child) >= L_DEPTH(child)) { #else #ifdef AVL_COUNT if(R_COUNT(child) >= L_COUNT(child)) { #else #error No balancing possible. #endif #endif avlnode->right = child->left; if(avlnode->right) avlnode->right->parent = avlnode; child->left = avlnode; avlnode->parent = child; *superparent = child; child->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); #endif } else { gchild = child->left; avlnode->right = gchild->left; if(avlnode->right) avlnode->right->parent = avlnode; child->left = gchild->right; if(child->left) child->left->parent = child; gchild->left = avlnode; if(gchild->left) gchild->left->parent = gchild; gchild->right = child; if(gchild->right) gchild->right->parent = gchild; *superparent = gchild; gchild->parent = parent; #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); child->count = CALC_COUNT(child); gchild->count = CALC_COUNT(gchild); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); child->depth = CALC_DEPTH(child); gchild->depth = CALC_DEPTH(gchild); #endif } break; default: #ifdef AVL_COUNT avlnode->count = CALC_COUNT(avlnode); #endif #ifdef AVL_DEPTH avlnode->depth = CALC_DEPTH(avlnode); #endif } avlnode = parent; } } /*------------------------------------------------------------------------------ end of functions from AVL-tree library. *******************************************************************************/ typedef struct dlnode { const double *x; /* The data vector */ struct dlnode **next; /* Next-node vector */ struct dlnode **prev; /* Previous-node vector */ struct avl_node_t * tnode; int ignore; double *area; /* Area */ double *vol; /* Volume */ } dlnode_t; # define STOP_DIMENSION 2 /* default: stop on dimension 3 */ static int compare_node(const void *p1, const void* p2) { const double x1 = *((*(const dlnode_t **)p1)->x); const double x2 = *((*(const dlnode_t **)p2)->x); return (x1 < x2) ? -1 : (x1 > x2) ? 1 : 0; } static int compare_tree_asc(const void *p1, const void *p2) { const double *x1 = (const double *)p1; const double *x2 = (const double *)p2; return (x1[1] > x2[1]) ? -1 : (x1[1] < x2[1]) ? 1 : (x1[0] >= x2[0]) ? -1 : 1; } /* * Setup circular double-linked list in each dimension */ static dlnode_t * setup_cdllist(const double *data, int d, int n) { dlnode_t *head; dlnode_t **scratch; int i, j; head = malloc ((n+1) * sizeof(dlnode_t)); head->x = data; head->ignore = 0; /* should never get used */ head->next = malloc( d * (n+1) * sizeof(dlnode_t*)); head->prev = malloc( d * (n+1) * sizeof(dlnode_t*)); head->tnode = malloc ((n+1) * sizeof(avl_node_t)); head->area = malloc(d * (n+1) * sizeof(double)); head->vol = malloc(d * (n+1) * sizeof(double)); for (i = 1; i <= n; i++) { head[i].x = head[i-1].x + d;/* this will be fixed a few lines below... */ head[i].ignore = 0; head[i].next = head[i-1].next + d; head[i].prev = head[i-1].prev + d; head[i].tnode = head[i-1].tnode + 1; head[i].area = head[i-1].area + d; head[i].vol = head[i-1].vol + d; } head->x = NULL; /* head contains no data */ scratch = malloc(n * sizeof(dlnode_t*)); for (i = 0; i < n; i++) scratch[i] = head + i + 1; for (j = d-1; j >= 0; j--) { for (i = 0; i < n; i++) scratch[i]->x--; qsort(scratch, n, sizeof(dlnode_t*), compare_node); head->next[j] = scratch[0]; scratch[0]->prev[j] = head; for (i = 1; i < n; i++) { scratch[i-1]->next[j] = scratch[i]; scratch[i]->prev[j] = scratch[i-1]; } scratch[n-1]->next[j] = head; head->prev[j] = scratch[n-1]; } free(scratch); for (i = 1; i <= n; i++) { (head[i].tnode)->item = head[i].x; } for (i = 0; i < d; i++) head->area[i] = 0; return head; } static void free_cdllist(dlnode_t * head) { free(head->tnode); /* Frees _all_ nodes. */ free(head->next); free(head->prev); free(head->area); free(head->vol); free(head); } static void delete (dlnode_t *nodep, int dim, double * bound) { int i; for (i = STOP_DIMENSION; i < dim; i++) { nodep->prev[i]->next[i] = nodep->next[i]; nodep->next[i]->prev[i] = nodep->prev[i]; if (bound[i] > nodep->x[i]) bound[i] = nodep->x[i]; } } static void reinsert (dlnode_t *nodep, int dim, double * bound) { int i; for (i = STOP_DIMENSION; i < dim; i++) { nodep->prev[i]->next[i] = nodep; nodep->next[i]->prev[i] = nodep; if (bound[i] > nodep->x[i]) bound[i] = nodep->x[i]; } } static double hv_recursive(avl_tree_t *tree, dlnode_t *list, int dim, int c, const double * ref, double * bound) { /* ------------------------------------------------------ General case for dimensions higher than STOP_DIMENSION ------------------------------------------------------ */ if ( dim > STOP_DIMENSION ) { dlnode_t *p0 = list; dlnode_t *p1 = list->prev[dim]; double hyperv = 0; dlnode_t *pp; for (pp = p1; pp->x; pp = pp->prev[dim]) { if (pp->ignore < dim) pp->ignore = 0; } while (c > 1 /* We delete all points x[dim] > bound[dim]. In case of repeated coordinates, we also delete all points x[dim] == bound[dim] except one. */ && (p1->x[dim] > bound[dim] || p1->prev[dim]->x[dim] >= bound[dim]) ) { p0 = p1; delete(p0, dim, bound); p1 = p0->prev[dim]; c--; } if (c > 1) { hyperv = p1->prev[dim]->vol[dim] + p1->prev[dim]->area[dim] * (p1->x[dim] - p1->prev[dim]->x[dim]); p1->vol[dim] = hyperv; } else { int i; p1->area[0] = 1; for (i = 1; i <= dim; i++) p1->area[i] = p1->area[i-1] * (ref[i-1] - p1->x[i-1]); p1->vol[dim] = 0; } if (p1->ignore >= dim) { p1->area[dim] = p1->prev[dim]->area[dim]; } else { p1->area[dim] = hv_recursive(tree, list, dim-1, c, ref, bound); if (p1->area[dim] <= p1->prev[dim]->area[dim]) p1->ignore = dim; } while (p0->x != NULL) { hyperv += p1->area[dim] * (p0->x[dim] - p1->x[dim]); bound[dim] = p0->x[dim]; reinsert(p0, dim, bound); c++; p1 = p0; p0 = p0->next[dim]; p1->vol[dim] = hyperv; if (p1->ignore >= dim) { p1->area[dim] = p1->prev[dim]->area[dim]; } else { p1->area[dim] = hv_recursive(tree, list, dim-1, c, ref, bound); if (p1->area[dim] <= p1->prev[dim]->area[dim]) p1->ignore = dim; } } hyperv += p1->area[dim] * (ref[dim] - p1->x[dim]); return hyperv; } /* --------------------------- special case of dimension 3 --------------------------- */ else if (dim == 2) { dlnode_t *pp = list->next[2]; double hypera = (ref[0] - pp->x[0]) * (ref[1] - pp->x[1]); double height = (c == 1) ? ref[2] - pp->x[2] : pp->next[2]->x[2] - pp->x[2]; double hyperv = hypera * height; if (pp->next[2]->x == NULL) return hyperv; avl_insert_top(tree, pp->tnode); pp = pp->next[2]; do { height = (pp == list->prev[2]) ? ref[2] - pp->x[2] : pp->next[2]->x[2] - pp->x[2]; if (pp->ignore >= 2) hyperv += hypera * height; else { const double * prv_ip, * nxt_ip; avl_node_t *tnode; if (avl_search_closest(tree, pp->x, &tnode) <= 0) { nxt_ip = (double *)(tnode->item); tnode = tnode->prev; } else { nxt_ip = (tnode->next != NULL) ? (double *)(tnode->next->item) : ref; } if (nxt_ip[0] > pp->x[0]) { avl_insert_after(tree, tnode, pp->tnode); if (tnode != NULL) { prv_ip = (double *)(tnode->item); if (prv_ip[0] > pp->x[0]) { const double * cur_ip; tnode = pp->tnode->prev; /* cur_ip = point dominated by pp with highest [0]-coordinate */ cur_ip = (double *)(tnode->item); while (tnode->prev) { prv_ip = (double *)(tnode->prev->item); hypera -= (prv_ip[1] - cur_ip[1]) * (nxt_ip[0] - cur_ip[0]); if (prv_ip[0] < pp->x[0]) break; /* prv is not dominated by pp */ cur_ip = prv_ip; avl_unlink_node(tree,tnode); tnode = tnode->prev; } avl_unlink_node(tree,tnode); if (!tnode->prev) { hypera -= (ref[1] - cur_ip[1])*(nxt_ip[0] - cur_ip[0]); prv_ip = ref; } } } else prv_ip = ref; hypera += (prv_ip[1] - pp->x[1])*(nxt_ip[0] - pp->x[0]); } else pp->ignore = 2; if (height > 0) hyperv += hypera * height; } pp = pp->next[2]; } while (pp->x != NULL); avl_clear_tree(tree); return hyperv; } /* special case of dimension 2 */ else if (dim == 1) { const dlnode_t *p1 = list->next[1]; double hypera = p1->x[0]; double hyperv = 0; const dlnode_t *p0; while ((p0 = p1->next[1])->x) { hyperv += (ref[0] - hypera) * (p0->x[1] - p1->x[1]); if (p0->x[0] < hypera) hypera = p0->x[0]; p1 = p0; } hyperv += (ref[0] - hypera) * (ref[1] - p1->x[1]); return hyperv; } /* special case of dimension 1 */ else if (dim == 0) { return (ref[0] - list->next[0]->x[0]); } else fatal_error("%s:%d: unreachable condition! \n" "This is a bug, please report it to " "manuel.lopez-ibanez@manchester.ac.uk\n", __FILE__, __LINE__); } /* Removes the point from the circular double-linked list, but it doesn't remove the data. */ static void filter_delete_node(dlnode_t *node, int d) { /* The memory allocated for the deleted node is lost (leaked) until the end of the program, but this should not be a problem. */ for (int i = 0; i < d; i++) { node->next[i]->prev[i] = node->prev[i]; node->prev[i]->next[i] = node->next[i]; } } /* Filters those points that do not strictly dominate the reference point. This is needed to assure that the points left are only those that are needed to calculate the hypervolume. */ static int filter(dlnode_t *list, int d, int n, const double *ref) { int i, j; /* fprintf (stderr, "%d points initially\n", n); */ for (i = 0; i < d; i++) { dlnode_t *aux = list->prev[i]; const int np = n; for (j = 0; j < np; j++) { if (aux->x[i] < ref[i]) break; filter_delete_node (aux, d); aux = aux->prev[i]; n--; } } /* fprintf (stderr, "%d points remain\n", n); */ return n; } double fpli_hv(const double *data, int d, int n, const double *ref) { double hyperv; if (n == 0) return 0.0; avl_tree_t *tree = avl_alloc_tree ((avl_compare_t) compare_tree_asc, (avl_freeitem_t) NULL); dlnode_t *list = setup_cdllist(data, d, n); n = filter(list, d, n, ref); if (n == 0) { /* Returning here would leak memory. */ hyperv = 0.0; } else if (n == 1) { dlnode_t * p = list->next[0]; hyperv = 1; for (int i = 0; i < d; i++) hyperv *= ref[i] - p->x[i]; } else { double *bound = malloc (d * sizeof(double)); for (int i = 0; i < d; i++) bound[i] = -DBL_MAX; hyperv = hv_recursive(tree, list, d-1, n, ref, bound); free (bound); } /* Clean up. */ free_cdllist (list); free (tree); /* The nodes are freed by free_cdllist (). */ return hyperv; } eaf/src/mo-tools/whv_hype.c0000644000175000017500000002050314160346515015501 0ustar nileshnilesh#include "whv_hype.h" #undef DEBUG #define DEBUG 1 #include "common.h" #include "nondominated.h" #include #include #include #include static gsl_rng * rng_new(unsigned long int seed) { gsl_rng * rng = gsl_rng_alloc (gsl_rng_taus2); gsl_rng_set(rng, seed); return rng; } static double rng_double(gsl_rng * rng, double low, double high) { eaf_assert(rng != NULL); return(low + (gsl_rng_uniform(rng)*high)); } struct hype_sample_dist { enum hype_sample_dist_type type; gsl_rng * rng; double * lower; double * upper; double * mu; }; enum hype_sample_dist_type hype_dist_get_type(const hype_sample_dist * d) { eaf_assert(d != NULL); return d->type; } static hype_sample_dist * hype_dist_new(unsigned long int seed) { hype_sample_dist * dist = malloc(sizeof(hype_sample_dist)); dist->rng = rng_new(seed); const int nobj = 2; dist->lower = malloc(sizeof(double) * nobj); dist->upper = malloc(sizeof(double) * nobj); for (int i = 0; i < nobj; i++) { dist->lower[i] = 0; dist->upper[i] = 1; } dist->mu = NULL; return dist; } hype_sample_dist * hype_dist_gaussian_new(const double *mu, unsigned long int seed) { hype_sample_dist *dist = hype_dist_new(seed); dist->type = HYPE_DIST_GAUSSIAN; const int nobj = 2; dist->mu = malloc(sizeof(double) * nobj); memcpy(dist->mu, mu, sizeof(double) * nobj); return dist; } hype_sample_dist * hype_dist_exp_new(double mu, unsigned long int seed) { hype_sample_dist *dist = hype_dist_new(seed); dist->type = HYPE_DIST_EXPONENTIAL; dist->mu = malloc(sizeof(double) * 1); dist->mu[0] = mu; return dist; } hype_sample_dist * hype_dist_unif_new(unsigned long int seed) { hype_sample_dist *dist = hype_dist_new(seed); dist->type = HYPE_DIST_UNIFORM; return dist; } void hype_dist_free(hype_sample_dist * d) { gsl_rng_free(d->rng); if (d->mu) free(d->mu); free(d->lower); free(d->upper); free(d); } static double * exp_dist_sample(hype_sample_dist * dist, size_t nsamples) { const int nobj = 2; const double *lower = dist->lower; const double *upper = dist->upper; double * samples = malloc(sizeof(double) * nsamples * nobj); size_t n = 0.5 * nsamples; double mu = dist->mu[0]; for (size_t i = 0; i < n; i++) { double x = rng_double(dist->rng, 0, 1); samples[i * nobj + 0] = lower[0] - mu * log(x); x = rng_double(dist->rng, 0, 1); samples[i * nobj + 1] = lower[1] + x * (upper[1] - lower[1]); } for (size_t i = n; i < nsamples; i++) { double x = rng_double(dist->rng, 0, 1); samples[i * nobj + 0] = lower[0] + x * (upper[0] - lower[0]); x = rng_double(dist->rng, 0, 1); samples[i * nobj + 1] = lower[1] - mu * log(x); } return samples; } static double * gaussian_dist_sample(hype_sample_dist * dist, size_t nsamples) { const int nobj = 2; double * samples = malloc(sizeof(double) * nsamples * nobj); double sigma_x = 0.25; double sigma_y = 0.25; for (size_t i = 0; i < nsamples; i++) { double x, y; gsl_ran_bivariate_gaussian(dist->rng, sigma_x, sigma_y, /*rho=*/1.0, &x, &y); /* FIXME: do we need to use the truncated distribution? samples[i * nobj + 0] = CLAMP(dist->mu[0] + x, 0.0, 1.0); samples[i * nobj + 1] = CLAMP(dist->mu[1] + y, 0.0, 1.0); */ samples[i * nobj + 0] = dist->mu[0] + x; samples[i * nobj + 1] = dist->mu[1] + y; //fprintf(stderr, "x = %g (%g), y = %g (%g)\n", // x, samples[i * nobj + 0], y, samples[i * nobj + 1]); } return samples; } static double * uniform_dist_sample(hype_sample_dist * dist, size_t nsamples) { const int nobj = 2; const double *lower = dist->lower; const double *upper = dist->upper; double * samples = malloc(sizeof(double) * nsamples * nobj); for (size_t i = 0; i < nsamples; i++) { for (int d = 0; d < nobj; d++) { double x = rng_double(dist->rng, 0, 1); samples[i * nobj + d] = x * (upper[d] - lower[d]); } //printf("sample: { %g, %g }\n", samples[i * nobj + 0], samples[i * nobj + 1]); } return samples; } typedef double *(*hype_sample_fn)(hype_sample_dist *, size_t); static hype_sample_fn hype_dist_get_sample_fn(const hype_sample_dist * d) { switch(d->type) { case HYPE_DIST_UNIFORM: return uniform_dist_sample; case HYPE_DIST_EXPONENTIAL: return exp_dist_sample; case HYPE_DIST_GAUSSIAN: return gaussian_dist_sample; default: fatal_error("%s:%d: unknown hype_sample_dist type: %d\n", __FILE__, __LINE__, d->type); return NULL; } } static double estimate_whv(const double *points, size_t npoints, const double * samples, size_t nsamples) { const int nobj = 2; /* // compute alpha factor of HypE fitness: */ /* double * alpha = malloc(npoints * sizeof(double)); */ /* for (int i = 1; i <= npoints; i++) { */ /* alpha[i - 1] = 1.0 / i; */ /* } */ double whv = 0.0; // compute amount of dominators in p for each sample: unsigned int * dominated = calloc(nsamples, sizeof(unsigned int)); for (size_t s = 0; s < nsamples; s++) { const double *sample = samples + s * nobj; // compute amount of dominators in p for each sample: for (size_t j = 0; j < npoints; j++) { bool dom = true; const double *p = points + j * nobj; for (int d = 0; d < nobj; d++) { if (sample[d] < p[d]) { dom = false; break; } } if (dom) dominated[s]++; } // sum up alpha values of each dominated sample: for (size_t j = 0; j < npoints; j++) { bool dom = true; const double *p = points + j * nobj; for (int d = 0; d < nobj; d++) { if (sample[d] < p[d]) { dom = false; break; } } if (dom) { eaf_assert(dominated[s] > 0); whv += 1.0 / dominated[s]; //fprintf(stderr, "whv = %g\n", whv); } } } free(dominated); //free(alpha); return whv; } static double calculate_volume_between_points(const double *p1, const double * p2, size_t dim) { double volume = 1.0; for (size_t k = 0; k < dim; k++) volume *= (p2[k] - p1[k]); return volume; } static void normalise01_inplace(double *points, size_t dim, size_t npoints, const double *lbound, const double *ubound) { signed char * minmax = malloc(sizeof(signed char) * dim); memset(minmax, -1, sizeof(signed char) * dim); normalise(points, dim, npoints, minmax, /*agree=*/-1, 0.0, 1.0, lbound, ubound); free(minmax); } static double * normalise01(const double *points, size_t dim, size_t npoints, const double *lbound, const double *ubound) { double * points2 = malloc(sizeof(double) * dim * npoints); memcpy(points2, points, sizeof(double) * dim * npoints); normalise01_inplace(points2, dim, npoints, lbound, ubound); return points2; } double whv_hype_estimate(const double *points, size_t npoints, const double *ideal, const double *ref, hype_sample_dist * dist, size_t nsamples) { hype_sample_fn create_samples = hype_dist_get_sample_fn(dist); if (!create_samples) return NAN; const int nobj = 2; /* FIXME: this modifies mu, it would be better to keep mu and use a copy */ if (dist->type == HYPE_DIST_GAUSSIAN) { normalise01_inplace(dist->mu, nobj, 1, ideal, ref); //fprintf(stderr, "mu = %g, %g\n", dist->mu[0], dist->mu[1]); } const double * samples = create_samples(dist, nsamples); const double * points2 = normalise01(points, nobj, npoints, ideal, ref); double whv = estimate_whv(points2, npoints, samples, nsamples); free((void *)samples); free((void *)points2); /* Eq 18 */ //fprintf(stderr, "whv = %g\n", whv); whv *= calculate_volume_between_points(ideal, ref, nobj) / nsamples; //fprintf(stderr, "whv = %g\n", whv); return whv; } eaf/src/mo-tools/io.h0000644000175000017500000000641314160346515014270 0ustar nileshnilesh#ifndef EAF_INPUT_OUTPUT_H #define EAF_INPUT_OUTPUT_H #include "common.h" #include #include #include #include #include static const char stdin_name[] = ""; // FIXME: Should this be %-16.15g ? #define point_printf_format "% 17.16g" #define point_printf_sep "\t" /* Error codes for read_data. */ enum ERROR_READ_DATA { READ_INPUT_FILE_EMPTY = -1, READ_INPUT_WRONG_INITIAL_DIM = -2, ERROR_FOPEN = -3, ERROR_CONVERSION = -4, ERROR_COLUMNS = -5, }; int read_int_data (const char *filename, int **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p); int read_double_data (const char *filename, double **data_p, int *nobjs_p, int **cumsizes_p, int *nsets_p); #ifndef R_PACKAGE void vector_fprintf (FILE *stream, const double * vector, int size); void vector_printf (const double *vector, int size); int write_sets (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns); int write_sets_filtered (FILE *outfile, const double *data, int ncols, const int *cumsizes, int nruns, const bool *write_p); static inline const signed char * read_minmax (const char *str, int *nobj) { signed char * minmax; int i; if (str == NULL) { /* Default all minimised. */ assert (*nobj > 0); minmax = malloc (sizeof(signed char) * *nobj); for (i = 0; i < *nobj; i++) minmax[i] = -1; return minmax; } int len = strlen (str); bool all_ignored = true; minmax = malloc (sizeof(signed char) * MAX(len, *nobj)); for (i = 0; i < len; i++) { switch (str[i]) { case '+': minmax[i] = 1; all_ignored = false; break; case '-': minmax[i] = -1; all_ignored = false; break; case '0': case 'i': minmax[i] = 0; break; default: /* something unexpected was found */ return NULL; break; } } if (all_ignored == true) { warnprintf ("all objectives ignored because of --obj=%s\n", str); exit (EXIT_SUCCESS); } // FIXME: How to adjust minmax dynamically according to the number of objectives? if (len < *nobj) { // Cycle for (i = 0; i < (*nobj - len); i++) { minmax[len + i] = minmax[i]; } } *nobj = len; return minmax; } #endif static inline const bool * read_bitvector (const char *str, int *nobj) { bool * vec; int i; if (str == NULL) { /* Default all false. */ assert (*nobj > 0); vec = malloc (sizeof(bool) * *nobj); for (i = 0; i < *nobj; i++) vec[i] = false; return vec; } int len = strlen (str); vec = malloc (sizeof(bool) * len); for (i = 0; i < len; i++) { switch (str[i]) { case '1': vec[i] = true; break; case '0': vec[i] = false; break; default: /* something unexpected was found */ return NULL; } } *nobj = len; return vec; } #endif eaf/src/mo-tools/svnversion.mk0000644000175000017500000000054314160346515016253 0ustar nileshnilesh## Do we have svnversion? ifeq ($(shell sh -c 'which svnversion 1> /dev/null 2>&1 && echo y'),y) ## Is this a working copy? ifeq ($(shell sh -c 'LC_ALL=C svnversion -n . | grep -q ^[0-9] && echo y'),y) $(shell sh -c 'svnversion -n . > svn_version') endif endif ## Set version information: SVN_REV = $(shell sh -c 'cat svn_version 2> /dev/null') eaf/src/mo-tools/whv_hype.h0000644000175000017500000000131714160346515015510 0ustar nileshnilesh#ifndef WHV_HYPE_H #define WHV_HYPE_H #include enum hype_sample_dist_type { HYPE_DIST_UNIFORM, HYPE_DIST_EXPONENTIAL, HYPE_DIST_GAUSSIAN }; typedef struct hype_sample_dist hype_sample_dist; hype_sample_dist * hype_dist_unif_new(unsigned long seed); hype_sample_dist * hype_dist_exp_new(double mu, unsigned long seed); hype_sample_dist * hype_dist_gaussian_new(const double *mu, unsigned long int seed); void hype_dist_free(hype_sample_dist * d); enum hype_sample_dist_type hype_dist_get_type(const hype_sample_dist *); double whv_hype_estimate(const double *points, size_t n, const double *ideal, const double *ref, hype_sample_dist * dist, size_t nsamples); #endif eaf/src/mo-tools/gcc_attribs.h0000644000175000017500000000612214160346515016142 0ustar nileshnilesh#ifndef GCC_ATTRIBUTES #define GCC_ATTRIBUTES /* FIXME: does this handle C++? */ /* FIXME: add the explanation from the GCC documentation to each attribute. */ #ifndef __pure_func # define __pure_func __attribute__ ((pure)) #endif /* Many functions have no effects except the return value and their return value depends only on the parameters and/or global variables. Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be. Some of common examples of pure functions are strlen or memcmp. Interesting non-pure functions are functions with infinite loops or those depending on volatile memory or other system resource, that may change between two consecutive calls (such as feof in a multithreading environment). */ #ifndef __const_func # define __const_func __attribute__ ((const)) #endif /* Many functions do not examine any values except their arguments, and have no effects except the return value. Basically this is just slightly more strict class than the pure attribute below, since function is not allowed to read global memory. Note that a function that has pointer arguments and examines the data pointed to must not be declared const. Likewise, a function that calls a non-const function usually must not be const. It does not make sense for a const function to return void. */ # define __noreturn __attribute__ ((noreturn)) /* The noreturn keyword tells the compiler to assume that function cannot return. It can then optimize without regard to what would happen if fatal ever did return. This makes slightly better code. More importantly, it helps avoid spurious warnings of uninitialized variables. */ # define __malloc __attribute__ ((malloc)) /* The malloc attribute is used to tell the compiler that a function may be treated as if any non-NULL pointer it returns cannot alias any other pointer valid when the function returns. This will often improve optimization. Standard functions with this property include malloc and calloc. realloc-like functions have this property as long as the old pointer is never referred to (including comparing it to the new pointer) after the function returns a non-NULL value. */ # define __must_check __attribute__ ((warn_unused_result)) /* The warn_unused_result attribute causes a warning to be emitted if a caller of the function with this attribute does not use its return value. */ #ifndef __deprecated # define __deprecated __attribute__ ((deprecated)) #endif /* The deprecated attribute results in a warning if the function is used anywhere in the source file. */ #ifndef __used # define __used __attribute__ ((used)) #endif #ifndef __unused # define __unused __attribute__ ((unused)) #endif #ifndef __packed # define __packed __attribute__ ((packed)) #endif #if __GNUC__ >= 3 # define likely(x) __builtin_expect (!!(x), 1) # define unlikely(x) __builtin_expect (!!(x), 0) #else # define __attribute__(x) /* If we're not using GNU C, elide __attribute__ */ # define likely(x) (x) # define unlikely(x) (x) #endif #endif eaf/src/mo-tools/libhv.mk0000644000175000017500000000020414160346515015135 0ustar nileshnilesh# -*- Makefile-gmake -*- HV_SRCS = hv.c HV_HDRS = hv.h HV_OBJS = $(HV_SRCS:.c=.o) ## Dependencies: $(HV_OBJS): $(HV_HDRS) eaf/src/mo-tools/dominatedsets.c0000644000175000017500000003632614160346515016525 0ustar nileshnilesh/************************************************************************* Calculates the number of Pareto sets from one file that dominate the Pareto sets of the other files. --------------------------------------------------------------------- Copyright (c) 2007-2014 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. --------------------------------------------------------------------- Literature: [1] Eckart Zitzler, Lothar Thiele, Marco Laumanns, Carlos M. Fonseca and Viviane Grunert da Fonseca. "Performance assessment of multiobjective optimizers: an analysis and review," Evolutionary Computation, IEEE Transactions on , vol.7, no.2, pp. 117-132, April 2003. [2] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid population-based algorithms for the bi-objective quadratic assignment problem. Journal of Mathematical Modelling and Algorithms, 5(1):111-137, April 2006. *************************************************************************/ #include "epsilon.h" #include "nondominated.h" #include #include #include #include #include // for isspace() #include // for getopt() #include // for getopt_long() #define READ_INPUT_WRONG_INITIAL_DIM_ERRSTR "-o, --obj" #include "cmdline.h" char *program_invocation_short_name = "dominatedsets"; static void usage(void) { printf("\n" "Usage: %s [OPTIONS] [FILE...]\n\n", program_invocation_short_name); printf( "Calculates the number of Pareto sets from one file that \n" "dominate the Pareto sets of the other files. \n\n" "Options:\n" OPTION_HELP_STR OPTION_VERSION_STR " -v, --verbose print some information (time, number of points, etc.) \n" OPTION_QUIET_STR " -p, --percentages print results also as percentages. \n" " --no-check do not check nondominance of sets (faster but unsafe).\n" OPTION_OBJ_STR "\n"); } static bool verbose_flag = false; static bool percentages_flag = false; static bool check_flag = true; void print_results (char **filenames, int numfiles, int *nruns, int **results) { int k,j; int max_col_len = 0; int max_filename_len = 0; int max_result = 0; char buffer[32]; /* longest filename. */ for (k = 0; k < numfiles; k++) max_filename_len = MAX (max_filename_len, (int) strlen (filenames[k])); /* longest number. */ for (k = 0; k < numfiles; k++) for (j = 0; j < numfiles; j++) max_result = MAX (max_result, results[k][j]); snprintf(buffer, 32, "%d", max_result); buffer[31] = '\0'; max_col_len = MAX (max_filename_len, (int) strlen(buffer)); printf("\n\n" "Number of times that is better than :\n"); /* Header row. */ printf ("\n%*s", max_filename_len, ""); for (k = 0; k < numfiles; k++) { printf (" %*s", max_col_len, filenames[k]); } for (k = 0; k < numfiles; k++) { printf("\n%*s", max_filename_len, filenames[k]); for (j = 0; j < numfiles; j++) { if (k == j) printf (" %*s", max_col_len, "--"); else printf (" %*d", max_col_len, results[k][j]); } } printf ("\n"); if (percentages_flag) { max_col_len = MAX (max_col_len, (int) strlen("100.0")); printf("\n\n" "Percentage of times that is better than :\n"); /* Header row. */ printf ("\n%*s", max_filename_len, ""); for (k = 0; k < numfiles; k++) { printf (" %*s", max_col_len, filenames[k]); } for (k = 0; k < numfiles; k++) { printf("\n%*s", max_filename_len, filenames[k]); for (j = 0; j < numfiles; j++) { if (k == j) printf (" %*s", max_col_len, "--"); else printf (" %*.1f", max_col_len, results[k][j] * 100.0 / (nruns[k] * nruns[j])); } } } printf ("\n\n"); printf ("Ranks:"); for (k = 0; k < numfiles; k++) { int rank = 0; for (j = 0; j < numfiles; j++) { if (k == j) continue; rank += results[j][k]; } printf (" %3d", rank); } printf ("\n"); } static inline int dominance (int dim, const double *a, const double *b, const signed char *minmax) /*********************************************** return: O -> if a == b 1 -> if a dominates b -1 -> if a NOT dominates b ***********************************************/ { int d; /* If any objective is worse, A can't dominate B. */ for (d = 0; d < dim; d++) if ((minmax[d] < 0 && a[d] > b[d]) || (minmax[d] > 0 && a[d] < b[d])) return -1; /* If any objective is better, then A dominates B. */ for (d = 0; d < dim; d++) if ((minmax[d] < 0 && a[d] < b[d]) || (minmax[d] > 0 && a[d] > b[d])) return 1; return 0; } static int set_dominates (int dim, const signed char *minmax, const double *points_x, int size_x, const double *points_y, int size_y) { bool x_dominates_y = false, x_weakly_dominates_y = false; for (int y = 0; y < size_y; y++) { x_weakly_dominates_y = false; for (int x = 0; x < size_x; x++) { DEBUG1 ( printf ("X:"); vector_printf (points_x + x * dim, dim); printf ("Y:"); vector_printf (points_y + y * dim, dim); ); int result = dominance (dim, &points_x[x * dim], &points_y[y * dim], minmax); if (result == 1) { DEBUG1 (printf ("X dominates Y!\n")); x_weakly_dominates_y = true; x_dominates_y = true; break; } else if (result == 0) { DEBUG1 (printf ("X weakly dominates Y!\n")); x_weakly_dominates_y = true; break; } } if (!x_weakly_dominates_y) break; } if (!x_weakly_dominates_y) return 1; else if (size_x != size_y || x_dominates_y) return -1; else return 0; } int pareto_better (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_b, int size_b) { int result = set_dominates (dim, minmax, points_a, size_a, points_b, size_b); if (result == 1) { DEBUG1 (printf ("Trying with B\n")); result = set_dominates (dim, minmax, points_b, size_b, points_a, size_a); result = -result; if (result != 1) { DEBUG1(printf("A || B\n")); result = 0; } } int result2 = epsilon_additive_ind (dim, minmax, points_a, size_a, points_b, size_b); DEBUG2 ( printf ("result = %d, result2 = %d\n", result, result2); for (int a = 0; a < size_a; a++) { vector_printf (points_a + a * dim, dim); } printf("\n\n"); for (int b = 0; b < size_b; b++) { vector_printf (points_b + b * dim, dim); }); if (result != result2) { printf ("result = %d != result2 = %d\n", result, result2); abort(); } return result; } void cmpparetos (int dim, const signed char *minmax, const double * points_a, int nruns_a, const int *cumsizes_a, int *numbetter_a, const double * points_b, int nruns_b, const int *cumsizes_b, int *numbetter_b) { int a,b, result; int size_a; int size_b; *numbetter_a = 0; *numbetter_b = 0; for (a = 0, size_a = 0; a < nruns_a; a++) { for (b = 0, size_b = 0; b < nruns_b; b++) { result = pareto_better (dim, minmax, points_a + (dim * size_a), cumsizes_a[a] - size_a, points_b + (dim * size_b), cumsizes_b[b] - size_b); if (result < 0) (*numbetter_a)++; else if (result > 0) (*numbetter_b)++; size_b = cumsizes_b[b]; } size_a = cumsizes_a[a]; } } int main(int argc, char *argv[]) { int *nruns = NULL; int **cumsizes = NULL; double **points = NULL; int dim = 0; char **filenames; int numfiles; const signed char *minmax = NULL; int k, n, j; int opt; /* it's actually going to hold a char */ int longopt_index; /* see the man page for getopt_long for an explanation of these fields */ static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, {"percentages",no_argument, NULL, 'p'}, {"no-check", no_argument, NULL, 'c'}, {"obj", required_argument, NULL, 'o'}, {NULL, 0, NULL, 0} /* marks end of list */ }; while (0 < (opt = getopt_long(argc, argv, "hVvqpo:", long_options, &longopt_index))) { switch (opt) { case 'V': // --version version(); exit(EXIT_SUCCESS); case 'q': // --quiet verbose_flag = false; break; case 'v': // --verbose verbose_flag = true; break; case 'p': // --percentages percentages_flag = true; break; case 'c': // --no-check check_flag = false; break; case 'o': // --obj minmax = read_minmax (optarg, &dim); if (minmax == NULL) { fprintf(stderr, "%s: invalid argument '%s' for -o, --obj\n", program_invocation_short_name,optarg); exit(EXIT_FAILURE); } break; case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); case 'h': usage(); exit(EXIT_SUCCESS); default: // should never happen abort(); } } numfiles = argc - optind; if (numfiles <= 1) { fprintf(stderr, "%s: error: at least two input files are required.\n", program_invocation_short_name); usage(); exit(EXIT_FAILURE); } filenames = malloc (sizeof(char *) * numfiles); points = malloc (sizeof(double *) * numfiles); nruns = malloc (sizeof(int) * numfiles); cumsizes = malloc (sizeof(int *) * numfiles); for (k = 0; k < numfiles; optind++, k++) { filenames[k] = argv[optind]; points[k] = NULL; cumsizes[k] = NULL; nruns[k] = 0; int err = read_double_data (filenames[k], &points[k], &dim, &cumsizes[k], &nruns[k]); handle_read_data_error (err, filenames[k]); } /* Default minmax if not set yet. */ if (minmax == NULL) minmax = read_minmax (NULL, &dim); /* Print filename substitutions. */ for (k = 0; k < numfiles; k++) { char buffer[32]; char *p; snprintf(buffer, 32, "f%d", k + 1); buffer[31] = '\0'; p = malloc (sizeof(char) * (strlen(buffer) + 1)); strncpy (p, buffer, 32); printf ("# %s: %s\n", p, filenames[k]); filenames[k] = p; } printf ("\n"); /* Print some info about input files. */ for (k = 0; k < numfiles; k++) { printf ("# %s: %d (%d", filenames[k], nruns[k], cumsizes[k][0]); for (n = 1; n < nruns[k]; n++) printf (", %d", cumsizes[k][n]); printf (")\n"); } /* Print some info. */ printf ("# objectives (%d): ", dim); for (k = 0; k < dim; k++) { printf ("%c", (minmax[k] < 0) ? '-' : (minmax[k] > 0) ? '+' : 'i'); } printf ("\n"); if (check_flag) { bool check_failed = false; for (k = 0; k < numfiles; k++) { int size = 0; for (n = 0; n < nruns[k]; n++) { int failed_pos = find_dominated_point (&points[k][dim * size], dim, cumsizes[k][n] - size, minmax); if (failed_pos >= 0) { fprintf (stderr, "%s: %s: set %d: point %d is dominated.\n", program_invocation_short_name, filenames[k], n, failed_pos); check_failed = true; } size = cumsizes[k][n]; } } if (check_failed) { errprintf ("input must be a collection of nondominated sets."); exit (EXIT_FAILURE); } } int **results = malloc (sizeof(int) * numfiles * numfiles + sizeof(int *) * numfiles); for (k = 0; k < numfiles; k++) { results[k] = (int *) (results + numfiles) + k * numfiles; for (j = 0; j < numfiles; j++) results[k][j] = -1; } for (k = 0; k < numfiles; k++) for (j = k + 1; j < numfiles; j++) cmpparetos (dim, minmax, points[k], nruns[k], cumsizes[k], &(results[k][j]), points[j], nruns[j], cumsizes[j], &(results[j][k])); print_results (filenames, numfiles, nruns, results); if (verbose_flag) { } return EXIT_SUCCESS; } eaf/src/mo-tools/svn_version0000644000175000017500000000000314160346515015773 0ustar nileshnilesh166eaf/src/mo-tools/Makefile0000644000175000017500000001070514160346554015152 0ustar nileshnilesh#----------------------------------------------------------------------- # Makefile for mootools VERSION = 1.0svn$(SVN_REV) #----------------------------------------------------------------------- # Copyright (c) 2007, 2008, 2009, 2010 # Manuel Lopez-Ibanez # This program is free software (software libre); you can redistribute # it and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, you can obtain a copy of the GNU # General Public License at: # http://www.gnu.org/copyleft/gpl.html # or by writing to: # Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # #----------------------------------------------------------------------- # IMPORTANT NOTE: Please be aware that the fact that this program is # released as Free Software does not excuse you from scientific # propriety, which obligates you to give appropriate credit! If you # write a scientific paper describing research that made substantive # use of this program, it is your obligation as a scientist to # acknowledge its use. Moreover, as a personal note, I would # appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with # citations of papers referencing this work so I can mention them to # my funding agent and tenure committee. #----------------------------------------------------------------------- DEBUG?=1 BINDIR:=. ## Define source files SRCS = igd.c epsilon.c dominatedsets.c nondominated.c io.c ndsort.c hv_contrib.c hv.c pareto.c whv.c whv_hype.c HEADERS = io.h io_priv.h common.h gcc_attribs.h igd.h epsilon.h nondominated.h hv.h cmdline.h whv.h whv_hype.h OBJS = $(SRCS:.c=.o) DIST_OTHER_FILES = Makefile README LICENSE svn_version *.mk -include Makevars # We do not need $(GSL_LIBS) yet because we don't compile whv_hype.c into any executable. EXE_LDFLAGS=-lm ECHO = @echo "$(1)" include svnversion.mk include gcc.mk EXE_CFLAGS += $(OPT_CFLAGS) $(GSL_CFLAGS) $(WARN_CFLAGS) \ -D_GNU_SOURCE -DDEBUG=$(DEBUG) -DVERSION=\"$(VERSION)\" -DMARCH='"$(gcc-guess-march)"' igd = $(BINDIR)/igd$(EXE) epsilon = $(BINDIR)/epsilon$(EXE) dominatedsets = $(BINDIR)/dominatedsets$(EXE) nondominated = $(BINDIR)/nondominated$(EXE) ndsort = $(BINDIR)/ndsort$(EXE) .PHONY : all clean distclean dist default default : $(igd) $(epsilon) $(dominatedsets) $(nondominated) $(ndsort) $(igd) : OBJS=igd.o io.o $(igd) : igd.o io.o $(HEADERS) $(epsilon) : OBJS=epsilon.o io.o $(epsilon) : epsilon.o io.o $(HEADERS) $(dominatedsets) : OBJS=dominatedsets.o io.o $(dominatedsets) : dominatedsets.o io.o $(HEADERS) $(nondominated) : OBJS=nondominated.o io.o $(nondominated) : nondominated.o io.o $(HEADERS) include libhv.mk $(ndsort) : OBJS=ndsort.o pareto.o io.o hv_contrib.c $(HV_OBJS) $(ndsort) : $(OBJS) $(HEADERS) $(igd) $(epsilon) $(nondominated) $(dominatedsets) $(ndsort): @mkdir -p $(BINDIR) $(call ECHO,--> Building $@ version $(VERSION) <---) $(CC) -o $@ $(OBJS) $(EXE_CFLAGS) $(CFLAGS) $(EXE_LDFLAGS) $(OBJS) : $(HEADERS) clean : $(call ECHO,---> Removing $(igd) <---) @$(RM) $(igd) $(call ECHO,---> Removing $(epsilon) <---) @$(RM) $(epsilon) $(call ECHO,---> Removing $(dominatedsets) <---) @$(RM) $(dominatedsets) $(call ECHO,---> Removing $(nondominated) <---) @$(RM) $(nondominated) $(call ECHO,---> Removing $(ndsort) <---) @$(RM) $(ndsort) $(call ECHO,---> Removing object files: $(OBJS) <---) @$(RM) $(OBJS) $(HV_OBJS) all : clean $(MAKE) default %.o : %.c $(CC) $(CPPFLAGS) $(EXE_CFLAGS) $(CFLAGS) -c -o $@ $< DIST_SRC_FILES = $(DIST_OTHER_FILES) $(OBJS:.o=.c) $(HEADERS) DIST_SRC := mo-tools-$(VERSION)-src dist : DEBUG=0 dist : CDEBUG= dist : all @(mkdir -p ../$(DIST_SRC) \ && rsync -rlpC --exclude=.svn $(DIST_SRC_FILES) ../$(DIST_SRC)/ \ && cd .. \ && tar cf - $(DIST_SRC) | gzip -f9 > $(DIST_SRC).tar.gz \ && rm -rf ./$(DIST_SRC)/* && rmdir ./$(DIST_SRC)/ \ && echo "$(DIST_SRC).tar.gz created." && cd $(PWD) ) TAGS: *.c *.h etags *.c *.h eaf/src/mo-tools/whv.c0000644000175000017500000001176714160346515014470 0ustar nileshnilesh#include "whv.h" #undef DEBUG #define DEBUG 1 #include "common.h" #include static int cmp_data_y_desc (const void *p1, const void *p2) { const double *x1 = (const double *)p1; const double *x2 = (const double *)p2; return (x1[1] > x2[1]) ? -1 : (x1[1] < x2[1]) ? 1 : (x1[0] < x2[0]) ? -1 : (x1[0] > x2[0]) ? 1 : 0; } static int cmp_rectangles_y_desc (const void *p1, const void *p2) { const double *x1 = (const double *)p1; const double *x2 = (const double *)p2; // Order by upper (top-right) corner. return (x1[3] > x2[3]) ? -1 : (x1[3] < x2[3]) ? 1 : (x1[2] < x2[2]) ? -1 : (x1[2] > x2[2]) ? 1 : 0; } double rect_weighted_hv2d(double *data, size_t n, double * rectangles, size_t rectangles_nrow) { #define print_point(k, p, r, rect) \ DEBUG2_PRINT("%d: p[%lu] = (%16.15g, %16.15g)" \ "\trectangle[%lu] = (%16.15g, %16.15g, %16.15g, %16.15g)\n", \ __LINE__, (unsigned long) k, p[0], p[1], (unsigned long) r, rect[0], rect[1], rect[2], rect[3]) #define print_rect(r, rect) \ DEBUG2_PRINT("%d: rectangle[%lu] = (%16.15g, %16.15g, %16.15g, %16.15g, %16.15g)\n", \ __LINE__, (unsigned long) r, rect[0], rect[1], rect[2], rect[3], rect[4]) // rectangles: Two points per row + color // FIXME: Should we really allow color == 0 #define get_rectangle(ROW) do { \ rect = rectangles + (ROW) * (nobj * 2 + 1); \ lower0= rect[0]; lower1= rect[1]; upper0= rect[2]; upper1= rect[3]; \ color = rect[4]; \ print_rect(ROW, rect); \ eaf_assert(lower0 < upper0); \ eaf_assert(lower1 < upper1); \ eaf_assert(color >= 0); \ } while(0) #define next_point() do { \ top = p[1]; \ pk++; \ if (pk >= n || top == last_top || p[0] >= last_right) \ goto return_whv; \ p += nobj; \ print_point(pk, p, r, rect); \ } while(0) DEBUG2_PRINT("n = %ld\trectangles = %ld\n", n, rectangles_nrow); if (rectangles_nrow == 0 || n == 0) return 0; const int nobj = 2; qsort (data, n, 2 * sizeof(*data), &cmp_data_y_desc); qsort (rectangles, rectangles_nrow, (nobj * 2 + 1) * sizeof(*rectangles), &cmp_rectangles_y_desc); double whv = 0.0; size_t r = 0; const double *rect; // rectangles: Two points per row + color double lower0, lower1, upper0, upper1, color; get_rectangle(r); const double *p = data; size_t pk = 0; print_point(pk, p, r, rect); double top = upper1; // lowest_upper1; const double last_top = rectangles[rectangles_nrow * (nobj * 2 + 1) - 2]; // largest upper0; double last_right = -DBL_MAX; for (size_t r = 0; r < rectangles_nrow; r++) { last_right = MAX (last_right, rectangles[r * (nobj * 2 + 1) + 2]); } // Find first useful point. while (p[1] >= upper1) { // FIXME: We should delete repeated/dominated points when // sorting, skip for now. // Case #1: p is above the remaining rectangles: Next point next_point(); } r = 0; while (true) { eaf_assert(p[1] < upper1); do { if (p[0] < upper0 && lower1 < top) { // Case #4: p strictly dominates u and not completed eaf_assert(p[0] < upper0 && p[1] < upper1); eaf_assert(top > lower1); eaf_assert(top > p[1]); // min(top, upper1) because the whole rect may be below top. whv += (upper0 - MAX(p[0],lower0)) * (MIN(top, upper1) - MAX(p[1], lower1)) * color; DEBUG2_PRINT("whv: %16.15g\n", whv); } // else case #3: not dominated or already completed, skip // Next rectangle r++; if (r >= rectangles_nrow) break; // goto next_point; get_rectangle(r); } while (p[1] < upper1); // Also restart rectangles r = 0; get_rectangle(r); do { // FIXME: we need to loop because of repeated/dominated points when // sorting. We should delete them, skip for now. next_point(); } while (top == p[1] && p[1] >= upper1); } return_whv: DEBUG2_PRINT("whv: %16.15g\n", whv); return whv; } eaf/src/mo-tools/epsilon.h0000644000175000017500000001047014160346515015330 0ustar nileshnilesh#ifndef EPSILON_H #define EPSILON_H #include #include #include #ifndef INFINITY #define INFINITY (HUGE_VAL) #endif #include "common.h" #include "io.h" /* IMPLEMENTATION NOTE: Given objective vectors a and b, I_epsilon(a,b) is computed in the case of minimization as a/b for the multiplicative case (respectively, a - b for the additive case), whereas in the case of maximization it is computed as b/a for the multiplicative case (respectively, b - a for the additive case). This allows computing a single value for mixed optimization problems, where some objectives are to be maximized while others are to be minimized. Moreover, a lower value corresponds to a better approximation set, independently of the type of problem (minimization, maximization or mixed). However, the meaning of the value is different for each objective type. For example, imagine that f1 is to be minimized and f2 is to be maximized, and the multiplicative epsilon computed here for I_epsilon(A,B) = 3. This means that A needs to be multiplied by 1/3 for all f1 values and by 3 for all f2 values in order to weakly dominate B. This also means that the computation of the multiplicative version for negative values doesn't make sense. */ static inline double epsilon_mult (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_b, int size_b) { int a, b, d; double epsilon = 0; for (b = 0; b < size_b; b++) { double epsilon_min = INFINITY; for (a = 0; a < size_a; a++) { double epsilon_max = 0; for (d = 0; d < dim; d++) { double epsilon_temp; if (points_a[a * dim + d] <= 0 || points_b[b * dim + d] <= 0) { fatal_error ("cannot calculate multiplicative epsilon indicator with values <= 0\n."); } if (minmax[d] < 0) epsilon_temp = points_a[a * dim + d] / points_b[b * dim + d]; else if (minmax[d] > 0) epsilon_temp = points_b[b * dim + d] / points_a[a * dim + d]; else epsilon_temp = 1; if (epsilon_temp < 0) { fatal_error("cannot calculate multiplicative epsilon indicator with different signedness\n."); } epsilon_max = MAX (epsilon_max, epsilon_temp); } epsilon_min = MIN (epsilon_min, epsilon_max); } epsilon = MAX (epsilon, epsilon_min); } return epsilon; } static inline double epsilon_additive (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_b, int size_b) { int a, b, d; double epsilon = -INFINITY; for (b = 0; b < size_b; b++) { double epsilon_min = INFINITY; for (a = 0; a < size_a; a++) { double epsilon_max = -INFINITY; for (d = 0; d < dim; d++) { double epsilon_temp; if (minmax[d] < 0) epsilon_temp = points_a[a * dim + d] - points_b[b * dim + d]; else if (minmax[d] > 0) epsilon_temp = points_b[b * dim + d] - points_a[a * dim + d]; else epsilon_temp = 0; epsilon_max = MAX (epsilon_max, epsilon_temp); } epsilon_min = MIN (epsilon_min, epsilon_max); } epsilon = MAX (epsilon, epsilon_min); } return epsilon; } /* FIXME: this can be done much faster. For example, the diff needs to be calculated just once and stored on a temporary array diff[]. */ static inline int epsilon_additive_ind (int dim, const signed char *minmax, const double *points_a, int size_a, const double *points_b, int size_b) { double eps_ab, eps_ba; eps_ab = epsilon_additive (dim, minmax, points_a, size_a, points_b, size_b); eps_ba = epsilon_additive (dim, minmax, points_b, size_b, points_a, size_a); DEBUG2 (printf ("eps_ab = %g, eps_ba = %g\n", eps_ab, eps_ba)); if (eps_ab <= 0 && eps_ba > 0) return -1; else if (eps_ab > 0 && eps_ba <= 0) return 1; else return 0; } #endif /* EPSILON_H */ eaf/src/mo-tools/README0000644000175000017500000000170614160346515014370 0ustar nileshnileshnondominated ------------ Obtain information and perform some operations on the nondominated sets given as input. Building `nondominated' ----------------------- The program has been tested on GNU/Linux using bash as shell and a recent version of GCC (>= 4.2). If you have success or problems using other systems, please let me know. I recommend that you compile specifically for your architecture using GCC option -march=. The default compilation is done with: make nondominated This uses the option "-march=native". If your GCC version does not support "native", you can give an explicit architecture: make nondominated march=i686 See the GCC manual for the names of the architectures supported by your version of GCC. Using `nondominated' -------------------- See the output of nondominated --help License ------- See LICENSE file or contact the author. Contact ------- Manuel Lopez-Ibanez eaf/src/mo-tools/LICENSE0000644000175000017500000004630414160346515014520 0ustar nileshnilesh --------------------------------------------------------------------- Copyright (c) 2007, 2008 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@ulb.ac.be with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. There should be a verbatim copy of the GNU General Public License below; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. eaf/src/mo-tools/whv.h0000644000175000017500000000024214160346515014457 0ustar nileshnilesh#ifndef WHV_H #define WHV_H #include double rect_weighted_hv2d(double *data, size_t n, double * rectangles, size_t rectangles_nrow); #endif // WHV_H eaf/src/mo-tools/hv_contrib.c0000644000175000017500000000305714160346515016012 0ustar nileshnilesh#include "hv.h" #include #include #include #include #include #include "common.h" /* Given a list of points, compute the hypervolume of each set that can be obtained by removing just one point. It does not actually compute the contribution but HV_total - HV_i, where HV_total is the total HV and HV_i is the contribution of the point, that is, it actually computes the HV minus the point i. */ static double * hv_1point_diffs (double *hvc, double *points, int dim, int size, const double * ref, const bool * uev) { bool keep_uevs = uev != NULL; if (hvc == NULL) hvc = malloc (sizeof(double) * size); double * tmp = malloc (sizeof(double) * dim); for (int i = 0; i < size; i++) { memcpy (tmp, points + i * dim, sizeof(double) * dim); memcpy (points + i * dim, ref, sizeof(double) * dim); hvc[i] = (keep_uevs && uev[i]) ? 0.0 : fpli_hv(points, dim, size, ref); memcpy (points + i * dim, tmp, sizeof(double) * dim); } free(tmp); return hvc; } void hv_contributions (double *hvc, double *points, int dim, int size, const double * ref) { const double tolerance = sqrt(DBL_EPSILON); double hv_total = fpli_hv(points, dim, size, ref); hv_1point_diffs(hvc, points, dim, size, ref, NULL); for (int i = 0; i < size; i++) { hvc[i] = hv_total - hvc[i]; // Handle very small values. hvc[i] = (fabs(hvc[i]) >= tolerance) ? hvc[i] : 0.0; eaf_assert(hvc[i] >= 0); } } eaf/src/mo-tools/ndsort.c0000644000175000017500000002307614160346515015171 0ustar nileshnilesh/************************************************************************* ndsort: Perform nondominated sorting in a list of points. --------------------------------------------------------------------- Copyright (c) 2011 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at ---------------------------------------------------------------------- IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. --------------------------------------------------------------------- Literature: *************************************************************************/ #include "io.h" #include "nondominated.h" // for normalise() #include #include #include #include #include // for isspace() #include // for getopt() #include // for getopt_long() #include // for INFINITY #define READ_INPUT_WRONG_INITIAL_DIM_ERRSTR "-o, --obj" #include "cmdline.h" #include "hv.h" char *program_invocation_short_name = "ndsort"; static void usage(void) { printf("\n" "Usage: %s [OPTIONS] [FILE...]\n\n", program_invocation_short_name); printf( "Perform nondominated sorting in a list of points. \n\n" "Options:\n" OPTION_HELP_STR OPTION_VERSION_STR " -h, --help give this summary and exit. \n" " --version print version number and exit. \n" " -v, --verbose print some information (time, number of points, etc.) \n" OPTION_QUIET_STR //" -H, --hypervolume use hypervolume contribution to break ties \n" " -k, --keep-uevs keep uniquely extreme values \n" " -r, --rank don't break ties using hypervolume contribution \n" OPTION_OBJ_STR "\n"); } static bool verbose_flag = false; static void fprint_rank (FILE * stream, const int * rank, int size) { int k; for (k = 0; k < size; k++) { fprintf (stream, "%d\n", rank[k]); } } static void fprint_vector_double (FILE * stream, const double * vec, int size) { for (int k = 0; k < size; k++) fprintf (stream, "%g\n", vec[k]); } static bool * calculate_uev (bool *uev, const double *points, int dim, int size, const double *lbound, const double *ubound) { if (uev == NULL) { uev = malloc (sizeof(bool) * size); } for (int j = 0; j < size; j++) uev[j] = false; for (int i = 0; i < dim; i++) { assert (ubound[i] > -INFINITY); assert (lbound[i] < INFINITY); for (int j = 0; j < size; j++) { if (points[j * dim + i] == ubound[i]) { uev[j] = true; break; } } for (int j = 0; j < size; j++) { if (points[j * dim + i] == lbound[i]) { uev[j] = true; break; } } } return uev; } int main(int argc, char *argv[]) { int nsets = 0; int *cumsizes = NULL; double *points = NULL; int dim = 0; const char *filename; const signed char *minmax = NULL; bool only_rank_flag = false; // bool hypervolume_flag = false; // bool keep_uevs_flag = false; /* see the man page for getopt_long for an explanation of these fields */ static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, // {"hypervolume",no_argument, NULL, 'H'}, {"keep-uevs", no_argument, NULL, 'k'}, {"rank", no_argument, NULL, 'r'}, {"obj", required_argument, NULL, 'o'}, {NULL, 0, NULL, 0} /* marks end of list */ }; int opt; /* it's actually going to hold a char */ int longopt_index; while (0 < (opt = getopt_long(argc, argv, "hVvqkro:", long_options, &longopt_index))) { switch (opt) { case 'V': // --version version(); exit(EXIT_SUCCESS); case 'q': // --quiet verbose_flag = false; break; case 'v': // --verbose verbose_flag = true; break; case 'r': // --rank only_rank_flag = true; break; case 'k': // --keep-uevs // keep_uevs_flag = true; fprintf(stderr, "%s: --keep-uevs not implemented yet!\n",program_invocation_short_name); exit(EXIT_FAILURE); break; case 'o': // --obj minmax = read_minmax (optarg, &dim); if (minmax == NULL) { fprintf(stderr, "%s: invalid argument '%s' for -o, --obj\n", program_invocation_short_name,optarg); exit(EXIT_FAILURE); } break; case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); case 'h': usage(); exit(EXIT_SUCCESS); default: // should never happen abort(); } } int numfiles = argc - optind; if (numfiles <= 0) {/* No input files: read stdin. */ filename = NULL; } else if (numfiles == 1) { filename = argv[optind]; } else { errprintf ("more than one input file not handled yet."); exit(EXIT_FAILURE); } /* FIXME: Instead of this strange call, create a wrapper read_data_robust. */ int err = read_double_data (filename, &points, &dim, &cumsizes, &nsets); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); const int size = cumsizes[0] = cumsizes[nsets - 1]; nsets = 1; /* Default minmax if not set yet. */ if (minmax == NULL) minmax = read_minmax (NULL, &dim); if (verbose_flag) { printf ("# file: %s\n", filename); printf ("# points: %d\n", size); } int * rank = pareto_rank (points, dim, size); if (only_rank_flag) { fprint_rank (stdout, rank, size); } else { bool *uev = NULL; static const double upper_range = 0.9; static const double lower_range = 0.0; double * order = malloc (sizeof(double) * size); int max_rank = 0; for (int k = 0; k < size; k++) { if (rank[k] > max_rank) max_rank = rank[k]; order[k] = rank[k]; } double * data = malloc (sizeof(double) * size * dim); double * lbound = malloc(sizeof(double) * dim); double * ubound = malloc(sizeof(double) * dim); double * ref = malloc(sizeof(double) * dim); for (int d = 0; d < dim; d++) ref[d] = 1.0; max_rank = 1; for (int i = 1; i <= max_rank; i++) { for (int d = 0; d < dim; d++) { lbound[d] = INFINITY; ubound[d] = -INFINITY; } int data_size = 0; for (int k = 0; k < size; k++) { if (rank[k] != i) continue; const double *src = points + k * dim; memcpy (data + data_size * dim, src, sizeof(double) * dim); data_size++; for (int d = 0; d < dim; d++) { if (lbound[d] > src[d]) lbound[d] = src[d]; if (ubound[d] < src[d]) ubound[d] = src[d]; } } uev = calculate_uev (uev, data, dim, data_size, lbound, ubound); normalise (data, dim, data_size, minmax, AGREE_NONE, lower_range, upper_range, lbound, ubound); double *hvc = malloc (sizeof(double) * data_size); hv_contributions (hvc, data, dim, data_size, ref); /* FIXME: handle uevs: keep_uevs_flag ? uev : NULL);*/ for (int k = 0, j = 0; k < size; k++) { if (rank[k] != i) continue; order[k] += (1 - hvc[j++]); } free (hvc); } free (data); free (lbound); free (ubound); free (ref); fprint_vector_double (stdout, order, size); free (order); } free (rank); free (cumsizes); free (points); free ((void *) minmax); return 0; } eaf/src/mo-tools/cmdline.h0000644000175000017500000000566014160346515015277 0ustar nileshnilesh#ifndef CMDLINE_H #define CMDLINE_H #ifndef CMDLINE_COPYRIGHT_YEARS #define CMDLINE_COPYRIGHT_YEARS "2007-2018" #endif #ifndef CMDLINE_AUTHORS #define CMDLINE_AUTHORS "Manuel Lopez-Ibanez \n" #endif #ifndef MARCH #define MARCH "unknown" #endif #define OPTION_HELP_STR \ " -h, --help print this summary and exit; \n" #define OPTION_VERSION_STR \ " --version print version number and exit; \n" #define OPTION_OBJ_STR \ " -o, --obj=[+|-]... specify whether each objective should be minimised (-)\n" \ " or maximised (+). By default all are minimised; \n" #define OPTION_QUIET_STR \ " -q, --quiet print as little as possible \n" extern char *program_invocation_short_name; static void version(void) { printf("%s version %s (optimised for %s)\n\n", program_invocation_short_name, VERSION, MARCH); printf( "Copyright (C) " CMDLINE_COPYRIGHT_YEARS "\n" CMDLINE_AUTHORS "\n" "This is free software, and you are welcome to redistribute it under certain\n" "conditions. See the GNU General Public License for details. There is NO \n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "\n" ); } #ifndef READ_INPUT_WRONG_INITIAL_DIM_ERRSTR #define READ_INPUT_WRONG_INITIAL_DIM_ERRSTR "-r, --reference" #endif static inline void handle_read_data_error (int err, const char *filename) { switch (err) { case 0: /* No error */ break; case READ_INPUT_FILE_EMPTY: errprintf ("%s: no input data.", filename); exit (EXIT_FAILURE); case READ_INPUT_WRONG_INITIAL_DIM: errprintf ("check the argument of " READ_INPUT_WRONG_INITIAL_DIM_ERRSTR ".\n"); /* fall-through */ default: exit (EXIT_FAILURE); } } /* FILENAME: input filename. If NULL, read stdin. REFERENCE: reference point. If NULL, caculate it from the input file. NOBJ_P: pointer to number of objectives. If NULL, calculate it from input file. */ static inline int read_reference_set (double **reference_p, const char *filename, int *nobj_p) { double *reference = NULL; int *cumsizes = NULL; int nruns = 0; int nobj = *nobj_p; int reference_size; int err = read_double_data (filename, &reference, &nobj, &cumsizes, &nruns); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); assert (nruns == 1); reference_size = cumsizes[0]; free (cumsizes); *nobj_p = nobj; *reference_p = reference; return reference_size; } static inline char * m_strcat(const char * a, const char * b) { int dest_len = strlen(a) + strlen(b) + 1; char *dest = malloc (sizeof(char) * dest_len); if (dest == NULL) return NULL; strcpy (dest, a); strcat (dest, b); return dest; } #endif eaf/src/mo-tools/common.h0000644000175000017500000000623414160346515015152 0ustar nileshnilesh#ifndef LIBMISC_COMMON_H_ # define LIBMISC_COMMON_H_ #ifdef R_PACKAGE #define R_NO_REMAP #include #define eaf_assert(EXP) \ do { if (!(EXP)) { Rf_error("eaf package: error: assertion failed: '%s' at %s:%d", \ #EXP, __FILE__, __LINE__);}} while(0) #define fatal_error(...) Rf_error(__VA_ARGS__) #define errprintf Rf_error #define warnprintf Rf_warning #include "gcc_attribs.h" #else #include #include #include #include "gcc_attribs.h" #include #define eaf_assert(X) assert(X) #define Rprintf(...) printf(__VA_ARGS__) void fatal_error(const char * format,...) __attribute__ ((format(printf, 1, 2))) __noreturn __unused; void errprintf(const char * format,...) __attribute__ ((format(printf, 1, 2))); void warnprintf(const char *format,...) __attribute__ ((format(printf, 1, 2))); #endif #if __GNUC__ >= 3 #define MAX(x,y) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(y) _y__ = (y); \ _x__ > _y__ ? _x__ : _y__; }) #define MIN(x,y) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(y) _y__ = (y); \ _x__ < _y__ ? _x__ : _y__; }) #define CLAMP(x, xmin, xmax) __extension__({ \ __typeof__(x) _x__ = (x); \ __typeof__(x) _xmin__ = (xmin); \ __typeof__(x) _xmax__ = (xmax); \ _x__ < _xmin__ ? _xmin__ : _x__ > _xmax__ ? _xmax__ : _x__; }) #else #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) #define CLAMP(x, xmin, xmax) MAX(xim, MIN(x, xmax)) #endif #define DEBUG_DO(X) do{ X;} while(0) #define DEBUG_NOT_DO(X) while(0){ X;} #if DEBUG >= 1 #define DEBUG1(X) DEBUG_DO(X) #else #define DEBUG1(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 2 #define DEBUG2(X) DEBUG_DO(X) #else #define DEBUG2(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 3 #define DEBUG3(X) DEBUG_DO(X) #else #define DEBUG3(X) DEBUG_NOT_DO(X) #endif #if DEBUG >= 4 #define DEBUG4(X) DEBUG_DO(X) #else #define DEBUG4(X) DEBUG_NOT_DO(X) #endif #ifndef R_PACKAGE #define DEBUG2_PRINT(...) DEBUG2 (fprintf (stderr, __VA_ARGS__)) #else #define DEBUG2_PRINT(...) DEBUG2 (Rprintf ( __VA_ARGS__)) #endif #define DEBUG2_FUNPRINT(...) \ do { DEBUG2_PRINT ("%s(): ", __FUNCTION__); \ DEBUG2_PRINT (__VA_ARGS__); } while(0) /* This is deprecated. See https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html #if DEBUG >= 1 #ifndef MALLOC_CHECK_ #define MALLOC_CHECK_ 3 #endif #endif */ #include #define TRUE true #define FALSE false #ifndef ignore_unused_result #define ignore_unused_result(X) do { if(X) {}} while(0); #endif typedef unsigned long ulong; typedef long long longlong; static inline const char *str_is_default(bool flag) { return flag ? "(default)" : ""; } #endif /* !LIBMISC_COMMON_H_ */ eaf/src/mo-tools/hv_contrib.h0000644000175000017500000000024513627006324016011 0ustar nileshnilesh#ifndef HV_CONTRIB_H #define HV_CONTRIB_H double * hv_contrib (const double *points, int dim, int size, const double * ref, const bool * uev); #endif eaf/src/mo-tools/nondominated.c0000644000175000017500000006367114160346515016344 0ustar nileshnilesh/************************************************************************* nondominated: --------------------------------------------------------------------- Copyright (c) 2007, 2008 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. --------------------------------------------------------------------- Literature: *************************************************************************/ #include "io.h" #include "nondominated.h" #include #include #include #include #include // for isspace() #include #include // for getopt() #include // for getopt_long() #include // for log10() #define READ_INPUT_WRONG_INITIAL_DIM_ERRSTR "either -o, --obj, -u, --upper or -l, --lower" #include "cmdline.h" char *program_invocation_short_name = "nondominated"; static int verbose_flag = false; static bool union_flag = false; static bool check_flag = true; static bool filter_flag = false; static bool normalise_flag = false; static bool force_bounds_flag = false; static const char *suffix = "_dat"; static void usage(void) { printf("\n" "Usage:\n" " %s [OPTIONS] [FILES] \n" " %s [OPTIONS] < [INPUT] > [OUTPUT]\n\n", program_invocation_short_name, program_invocation_short_name); printf( "Obtain information and perform some operations on the nondominated sets " "given as input. \n\n" "Options:\n" OPTION_HELP_STR OPTION_VERSION_STR " -v, --verbose print some extra information; \n" OPTION_QUIET_STR " --no-check do not check nondominance of sets (faster but unsafe);\n" OPTION_OBJ_STR " -u, --upper-bound POINT defines an upper bound to check, e.g. \"10 5 30\";\n" " -l, --lower-bound POINT defines a lower bound to check;\n" " -U, --union consider each file as a whole approximation set, \n" " (by default, approximation sets are separated by an \n" " empty line within a file); \n" " -s, --suffix=STRING suffix to add to output files. Default is \"%s\". \n" " The empty string means overwrite the input file. \n" " This is ignored when reading from stdin because output\n" " is sent to stdout. \n" "\n" " The following options OVERWRITE output files:\n" " -a, --agree= transform objectives so all are maximised (or \n" " minimised). See also the option --obj. \n" " -f, --filter check and filter out dominated points; \n" " -b, --force-bound remove points that do not satisfy the bounds; \n" " -n, --normalise RANGE normalise all objectives to a range, e.g., \"1 2\". \n" " If bounds are given with -l and -u, they are used \n" " for the normalisation. \n" " -L, --log=[1|0]... specify whether each objective should be transformed \n" " to logarithmic scale (1) or not (0). \n" "\n", suffix); } static bool read_range (char *str, double *lower, double *upper) { char *endp; *lower = strtod (str, &endp); if (str == endp) return false; str = endp; *upper = strtod (str, &endp); if (str == endp) return false; str = endp; // not end of string: error while (*str != '\0') { if (!isspace(*str)) return false; str++; } return true; } /* FIXME: Handle "1 NAN 3", so NAN means: use the minimum/maximum for this dimension. */ static double * read_point (char * str, int *nobj) { int k = 0, size = 10; double * point = malloc (size * sizeof(double)); char * endp = str; char * cursor; do { cursor = endp; if (k == size) { size += 10; point = realloc (point, size * sizeof(double)); } point[k] = strtod (cursor, &endp); k++; } while (cursor != endp); // not end of string: error while (*cursor != '\0') { if (!isspace(*cursor)) return NULL; cursor++; } // no number: error if (k == 1) return NULL; *nobj = k - 1; return point; } static double * robust_read_point (char * str, int *nobj, const char * errmsg) { double * point = read_point(str, nobj); if (point == NULL) { errprintf (errmsg, optarg); exit (EXIT_FAILURE); } return point; } static void data_bounds (double **minimum, double **maximum, const double *data, int nobj, int rows) { int k, r; #ifndef INFINITY #define INFINITY DBL_MAX #endif #define NEG_INFINITY -DBL_MAX if (*minimum == NULL) { *minimum = malloc (nobj * sizeof(double)); for (k = 0; k < nobj; k++) (*minimum)[k] = INFINITY; } if (*maximum == NULL) { *maximum = malloc (nobj * sizeof(double)); for (k = 0; k < nobj; k++) (*maximum)[k] = NEG_INFINITY; } for (k = 0, r = 0; r < rows; r++) { for (int n = 0; n < nobj; n++, k++) { if ((*minimum)[n] > data[k]) (*minimum)[n] = data[k]; if ((*maximum)[n] < data[k]) (*maximum)[n] = data[k]; } } } static inline bool any_less_than (const double *a, const double *b, int dim) { int d; for (d = 0; d < dim; d++) if (a[d] < b[d]) return true; return false; } static void file_bounds (const char *filename, double **minimum_p, double **maximum_p, int *dim_p) { double *data = NULL; int *cumsizes = NULL; int nruns = 0; int dim = *dim_p; int err = read_double_data (filename, &data, &dim, &cumsizes, &nruns); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); data_bounds (minimum_p, maximum_p, data, dim, cumsizes[nruns - 1]); *dim_p = dim; free (data); free (cumsizes); } static void logarithm_scale (double *points, int dim, int size, const bool *logarithm) { int k, d; assert (logarithm); for (d = 0; d < dim; d++) { if (!logarithm[d]) continue; for (k = 0; k < size; k++) points[k * dim + d] = log10(points[k * dim + d]); } } static bool force_bounds (double *points, int dim, int *cumsizes, int nsets, const double *lbound, const double *ubound) { int n, n2, k; int size = cumsizes[nsets - 1]; bool *outbounds = malloc (sizeof(bool) * size); int outbounds_found = -1; for (n = size - 1; n >= 0; n--) { if (any_less_than (&points[n * dim], lbound, dim) || any_less_than (ubound, &points[n * dim], dim)) { outbounds[n] = true; outbounds_found = n; } else outbounds[n] = false; } if (outbounds_found < 0) { if (verbose_flag >= 2) fprintf (stderr, "# out of bounds: 0\n"); free (outbounds); return false; } int *ssizes = malloc (sizeof(int) * nsets); ssizes[0] = cumsizes[0]; for (k = 1; k < nsets; k++) ssizes[k] = cumsizes[k] - cumsizes[k-1]; /* Find the set of the first out-of-bounds point. */ for (k = 0; outbounds_found >= cumsizes[k]; k++); /* Delete it. */ ssizes[k]--; /* Delete the rest of them. */ for (n = outbounds_found, n2 = outbounds_found + 1; k < nsets; k++) { while (n2 < cumsizes[k]) { if (outbounds[n2]) { n2++; ssizes[k]--; } else { memcpy (&points[n * dim], &points[n2 * dim], sizeof(double) * dim); n++, n2++; } } } if (verbose_flag >= 2) fprintf (stderr, "# out of bounds: %d\n", n2 - n); cumsizes[0] = ssizes[0]; for (k = 1; k < nsets; k++) cumsizes[k] = ssizes[k] + cumsizes[k-1]; free (ssizes); free (outbounds); return true; } static bool check_nondominated (const char * filename, const double *points, int dim, const int *cumsizes, int nruns, const signed char *minmax, const signed char agree, bool **nondom_p) { bool *nondom = nondom_p ? *nondom_p : NULL; bool free_nondom = false; if (nondom == NULL) { free_nondom = true; nondom = nondom_init (cumsizes[nruns - 1]); } bool first_time = true; bool dominated_found = false; int n, cumsize; int filename_len = MAX(strlen(filename), strlen("filename")); for (n = 0, cumsize = 0; n < nruns; cumsize = cumsizes[n], n++) { int old_size = cumsizes[n] - cumsize; int new_size = find_nondominated_set_agree (&points[dim * cumsize], dim, old_size, minmax, agree, &nondom[cumsize]); if (verbose_flag >= 2) { if (first_time) { fprintf (stderr, "# %*s\tset\tsize\tnondom\tdom\n", filename_len - 2, "filename"); first_time = false; } fprintf (stderr, "%-*s\t%d\t%d\t%d\t%d\n", filename_len, filename, n+1, old_size, new_size, old_size - new_size); } else if (verbose_flag && new_size < old_size) { if (first_time) { fprintf (stderr, "%-*s\tset\tdom\n", filename_len, "filename"); first_time = false; } fprintf (stderr, "%-*s\t%d\t%d dominated\n", filename_len, filename, n+1, old_size - new_size); } if (new_size < old_size) { dominated_found = true; } else if (new_size > old_size) {/* This can't happen. */ fatal_error ("%s:%d: a bug happened: new_size > old_size!\n", __FILE__, __LINE__); } } if (nondom_p) *nondom_p = nondom; else if (free_nondom) free(nondom); return dominated_found; } static void print_file_info (FILE *stream, const char *filename, int dim, const signed char *minmax) { /* Print some info about input files. */ fprintf (stream, "# file: %s\n", filename); fprintf (stream, "# objectives (%d): ", dim); int n; for (n = 0; n < dim; n++) { fprintf (stream, "%c", (minmax[n] < 0) ? '-' : ((minmax[n] > 0) ? '+' : 'i')); } fprintf (stream, "\n"); } static void print_output_header (FILE *stream, const char *filename, int dim, const signed char *minmax, signed char agree, double lrange, double urange, const double *lbound, const double *ubound, const bool *logarithm) { int n; print_file_info (stream, filename, dim, minmax); fprintf (stream, "# agree: %s\n", (agree < 0) ? "min" : ((agree > 0) ? "max" : "no")); if (logarithm) { fprintf (stream, "# logarithm: "); for (n = 0; n < dim; n++) { fprintf (stream, "%c", logarithm[n] ? '1' : '0'); } fprintf (stream, "\n"); } if (normalise_flag) fprintf (stream, "# range: " point_printf_format " " point_printf_format "\n", lrange, urange); fprintf (stream, "# lower bound: "); vector_fprintf (stream, lbound, dim); fprintf (stream, "\n"); fprintf (stream, "# upper bound: "); vector_fprintf (stream, ubound, dim); fprintf (stream, "\n"); } static void print_input_info (FILE *stream, const char *filename, int dim, const int *cumsizes, int nruns, const signed char *minmax, const double *minimum, const double *maximum) { int n; print_file_info (stream, filename, dim, minmax); fprintf (stream, "# sets: %d\n", nruns); fprintf (stream, "# sizes: %d", cumsizes[0]); for (n = 1; n < nruns; n++) fprintf (stream, ", %d", cumsizes[n] - cumsizes[n - 1]); fprintf (stream, "\n"); fprintf (stream, "# points: %d\n", cumsizes[nruns - 1]); fprintf (stream, "# minimum:"); vector_fprintf (stream, minimum, dim); fprintf (stream, "\n"); fprintf (stream, "# maximum:"); vector_fprintf (stream, maximum, dim); fprintf (stream, "\n"); } static bool process_file (const char *filename, const signed char *minmax, int *dim_p, signed char agree, double lrange, double urange, double *lbound, double *ubound, double **minimum_p, double **maximum_p, bool check_minimum, bool check_maximum, const bool *logarithm) { bool *nondom = NULL; bool dominated_found = false; bool logarithm_flag = false; double *points = NULL; int d; int dim = *dim_p; int *cumsizes = NULL; int nsets = 0; int err = read_double_data (filename, &points, &dim, &cumsizes, &nsets); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); if (union_flag) { cumsizes[0] = cumsizes[nsets - 1]; nsets = 1; } /* Default minmax if not set yet. */ bool free_minmax = false; if (minmax == NULL) { minmax = read_minmax (NULL, &dim); free_minmax = true; } double *minimum = NULL; double *maximum = NULL; data_bounds (&minimum, &maximum, points, dim, cumsizes[nsets - 1]); if (verbose_flag >= 2) print_input_info (stderr, filename, dim, cumsizes, nsets, minmax, minimum, maximum); if (lbound == NULL) lbound = minimum; else if (check_minimum && !force_bounds_flag && any_less_than (minimum, lbound, dim)) { errprintf ("%s: found vector smaller than lower bound:", filename); vector_fprintf (stderr, minimum, dim); fprintf (stderr, "\n"); exit (EXIT_FAILURE); } if (ubound == NULL) ubound = maximum; else if (check_maximum && !force_bounds_flag && any_less_than (ubound, maximum, dim)) { errprintf ("%s: found vector larger than upper bound:", filename); vector_fprintf (stderr, maximum, dim); fprintf (stderr, "\n"); exit (EXIT_FAILURE); } if (force_bounds_flag) { force_bounds (points, dim, cumsizes, nsets, lbound, ubound); } double *log_lbound = NULL; double *log_ubound = NULL; if (logarithm) { log_lbound = malloc(sizeof(double) * dim); log_ubound = malloc(sizeof(double) * dim); memcpy (log_lbound, lbound, sizeof(double) * dim); memcpy (log_ubound, ubound, sizeof(double) * dim); for (d = 0; d < dim; d++) { if (!logarithm[d]) continue; log_lbound[d] = log10(lbound[d]); log_ubound[d] = log10(ubound[d]); logarithm_flag = true; } if (logarithm_flag) { lbound = log_lbound; ubound = log_ubound; logarithm_scale (points, dim, cumsizes[nsets - 1], logarithm); } } if (agree) agree_objectives (points, dim, cumsizes[nsets - 1], minmax, agree); if (normalise_flag) normalise (points, dim, cumsizes[nsets - 1], minmax, agree, lrange, urange, lbound, ubound); /* Check sets. */ if (check_flag || filter_flag) if (check_nondominated (filename, points, dim, cumsizes, nsets, minmax, agree, filter_flag ? &nondom : NULL)) dominated_found = true; if (verbose_flag >= 2) fprintf (stderr, "# nondominated: %s\n", dominated_found ? "FALSE" : "TRUE"); /* Write out nondominated sets. */ if (filter_flag || agree || normalise_flag || force_bounds_flag || logarithm_flag) { const char *outfilename = ""; FILE *outfile = stdout; if (filename != stdin_name) { outfilename = m_strcat(filename, suffix); outfile = fopen (outfilename, "w"); if (outfile == NULL) { errprintf ("%s: %s\n", outfilename, strerror(errno)); exit(EXIT_FAILURE); } } print_output_header (outfile, filename, dim, minmax, agree, lrange, urange, lbound, ubound, logarithm); if (filter_flag && dominated_found) write_sets_filtered (outfile, points, dim, cumsizes, nsets, nondom); else write_sets (outfile, points, dim, cumsizes, nsets); if (verbose_flag) fprintf (stderr, "# %s -> %s\n", filename, outfilename); if (outfile != stdout) { fclose (outfile); free ( (void *) outfilename); } } free (points); free (cumsizes); if (free_minmax) free( (void *) minmax); if (nondom) free (nondom); if (log_lbound) free (log_lbound); if (log_ubound) free (log_ubound); *minimum_p = minimum; *maximum_p = maximum; *dim_p = dim; if (verbose_flag >= 2) fprintf (stderr, "#\n"); return dominated_found; } int main(int argc, char *argv[]) { signed char agree = 0; double lower_range = 0.0; double upper_range = 0.0; double *lower_bound = NULL; double *upper_bound = NULL; const signed char *minmax = NULL; const bool *logarithm = NULL; int dim = 0; int opt; /* it's actually going to hold a char */ int longopt_index; /* see the man page for getopt_long for an explanation of these fields */ static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, {"no-check", no_argument, NULL, 'c'}, {"filter", no_argument, NULL, 'f'}, {"force-bounds",no_argument, NULL, 'b'}, {"obj", required_argument, NULL, 'o'}, {"agree", required_argument, NULL, 'a'}, {"normalise", required_argument, NULL, 'n'}, {"upper-bound",required_argument, NULL, 'u'}, {"lower-bound",required_argument, NULL, 'l'}, {"union", no_argument, NULL, 'U'}, {"suffix", required_argument, NULL, 's'}, {"log", required_argument, NULL, 'L'}, {NULL, 0, NULL, 0} /* marks end of list */ }; while (0 < (opt = getopt_long (argc, argv, "hVvqfo:a:n:u:l:Us:b", long_options, &longopt_index))) { switch (opt) { case 'V': // --version version(); exit(EXIT_SUCCESS); case 'q': // --quiet verbose_flag = 0; break; case 'v': // --verbose verbose_flag = 2; break; case 'c': // --no-check check_flag = false; break; case 'f': // --filter filter_flag = true; check_flag = true; break; case 'b': // --force-bounds force_bounds_flag = true; break; case 'U': // --union union_flag = true; break; case 'o': // --obj minmax = read_minmax (optarg, &dim); if (minmax == NULL) { errprintf ("invalid argument '%s' for -o, --obj" ", it should be a sequence of '+' or '-'\n", optarg); exit(EXIT_FAILURE); } break; case 'a': // --agree if (!strcmp (optarg, "max")) agree = 1; else if (!strcmp (optarg, "min")) agree = -1; else { errprintf ("invalid argument '%s' for -a, --agree" ", it should be either \'min\' or \'max\'\n", optarg); exit (EXIT_FAILURE); } break; case 'n': // --normalise normalise_flag = true; if (!read_range (optarg, &lower_range, &upper_range)) { errprintf ("invalid range '%s' for -n, --normalise" ", use for example -n \"1 2\"\n", optarg); exit (EXIT_FAILURE); } else if (lower_range >= upper_range) { errprintf ("lower range must be smaller than upper range" " for -n, --normalise\n"); exit (EXIT_FAILURE); } break; case 'u': // --upper-bound upper_bound = robust_read_point (optarg, &dim, "invalid upper bound point '%s'"); break; case 'l': // --lower-bound lower_bound = robust_read_point (optarg, &dim, "invalid lower bound point '%s'"); break; case 's': // --suffix suffix = optarg; break; case 'L': // --log logarithm = read_bitvector (optarg, &dim); if (logarithm == NULL) { errprintf ("invalid argument to --log '%s'", optarg); exit (EXIT_FAILURE); } break; case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); case 'h': usage(); exit(EXIT_SUCCESS); default: // should never happen abort(); } } if (lower_bound && upper_bound && any_less_than (upper_bound, lower_bound, dim)) { errprintf ("upper bound must be higher than lower bound."); exit (EXIT_FAILURE); } int numfiles = argc - optind; double *minimum = NULL; double *maximum = NULL; bool dominated_found = false; if (numfiles <= 1) {/* <= 0 means: No input files: read stdin. */ dominated_found = process_file ((numfiles == 1) ? argv[optind] : NULL, minmax, &dim, agree, lower_range, upper_range, lower_bound, upper_bound, &minimum, &maximum, /*check_minimum=*/true, /*check_maximum=*/true, logarithm); free(minimum); free(maximum); free((void*)minmax); return dominated_found; } int k; if (!lower_bound || !upper_bound) { /* Calculate the bounds among all input files. */ minimum = NULL, maximum = NULL; for (k = 0; k < numfiles; k++) file_bounds (argv[optind + k], &minimum, &maximum, &dim); k = 0; } else { /* If the bounds were given, initialize minimum and maximum. */ if (process_file (argv[optind], minmax, &dim, agree, lower_range, upper_range, lower_bound, upper_bound, &minimum, &maximum, /*check_minimum=*/true, /*check_maximum=*/true, logarithm)) dominated_found = true; k = 1; } for (; k < numfiles; k++) { double *tmp_maximum = NULL; double *tmp_minimum = NULL; if (process_file (argv[optind + k], minmax, &dim, agree, lower_range, upper_range, (lower_bound) ? lower_bound : minimum, (upper_bound) ? upper_bound : maximum, &tmp_minimum, &tmp_maximum, lower_bound != NULL, upper_bound != NULL, logarithm)) dominated_found = true; /* If the bounds were given, the real minimum and maximum must be calculated as we process the files. */ if (lower_bound && upper_bound) for (int n = 0; n < dim; n++) { if (minimum[n] > tmp_minimum[n]) minimum[n] = tmp_minimum[n]; if (maximum[n] < tmp_maximum[n]) maximum[n] = tmp_maximum[n]; } free (tmp_minimum); free (tmp_maximum); } if (verbose_flag) { printf ("# Total files: %d\n", numfiles); printf ("# Total minimum:"); vector_printf (minimum, dim); printf ("\n"); printf ("# Total maximum:"); vector_printf (maximum, dim); printf ("\n"); printf ("# Nondominated: %s\n", dominated_found ? "FALSE": "TRUE"); } free(minimum); free(maximum); return dominated_found; } eaf/src/mo-tools/igd.c0000644000175000017500000003345214160346515014422 0ustar nileshnilesh/************************************************************************* Inverted Generational Distance --------------------------------------------------------------------- Copyright (c) 2016 Manuel Lopez-Ibanez Leonardo C.T. Bezerra This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. --------------------------------------------------------------------- Literature: [1] Eckart Zitzler, Lothar Thiele, Marco Laumanns, Carlos M. Fonseca and Viviane Grunert da Fonseca. "Performance assessment of multiobjective optimizers: an analysis and review," Evolutionary Computation, IEEE Transactions on , vol.7, no.2, pp. 117-132, April 2003. [2] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid population-based algorithms for the bi-objective quadratic assignment problem. Journal of Mathematical Modelling and Algorithms, 5(1):111-137, April 2006. *************************************************************************/ #include #include #include #include #include #include // for isspace() #include // for getopt() #include // for getopt_long() #include "igd.h" #include "nondominated.h" char *program_invocation_short_name = "igd"; #define CMDLINE_COPYRIGHT_YEARS "2016" #define CMDLINE_AUTHORS "Manuel Lopez-Ibanez \n" \ "Leonardo C. T. Bezerra \n" #include "cmdline.h" static bool verbose_flag = false; static unsigned int exponent_p = 1; static bool gd = false; static bool igd = false; static bool gdp = false; static bool igdp = true; static bool igdplus = false; static bool hausdorff = false; static const char *suffix = NULL; static void usage(void) { printf("\n" "Usage:\n" " %s [OPTIONS] [FILES] \n" " %s [OPTIONS] < [INPUT] > [OUTPUT]\n\n", program_invocation_short_name, program_invocation_short_name); printf( "Calculates the inverted generational distance (IGD) measure for the Pareto sets given as input\n\n" "Options:\n" OPTION_HELP_STR OPTION_VERSION_STR " -v, --verbose print some information (time, number of points, etc.) \n" OPTION_QUIET_STR " , --gd %s report classical GD\n" " , --igd %s report classical IGD\n" " , --gd-p %s report GD_p (p=1 by default)\n" " , --igd-p %s report IGD_p (p=1 by default)\n" " , --igd-plus %s report IGD+\n" " , --hausdorff %s report avg Hausdorff distance = max (GD_p, IGD_p)\n" " -a, --all compute everything\n" " -p, exponent that averages the distances\n" " -r, --reference FILE file that contains the reference set \n" OPTION_OBJ_STR " -s, --suffix=STRING Create an output file for each input file by appending\n" " this suffix. This is ignored when reading from stdin. \n" " If missing, output is sent to stdout. \n" "\n", str_is_default(gd), str_is_default(igd), str_is_default(gdp), str_is_default(igdp), str_is_default(igdplus), str_is_default(hausdorff)); } static void do_file (const char *filename, double *reference, int reference_size, int *nobj_p, const signed char * minmax) { double *data = NULL; int *cumsizes = NULL; int nruns = 0; int nobj = *nobj_p; int err = read_double_data (filename, &data, &nobj, &cumsizes, &nruns); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); char *outfilename = NULL; FILE *outfile = stdout; if (filename != stdin_name && suffix) { outfilename = m_strcat(filename, suffix); outfile = fopen (outfilename, "w"); if (outfile == NULL) { errprintf ("%s: %s\n", outfilename, strerror(errno)); exit (EXIT_FAILURE); } } #if 0 if (union_flag) { cumsizes[0] = cumsizes[nruns - 1]; nruns = 1; } #endif /* Default minmax if not set yet. */ bool free_minmax = false; if (minmax == NULL) { minmax = read_minmax (NULL, &nobj); free_minmax = true; } const char * sep = ""; if (verbose_flag) { printf("# file: %s\n", filename); printf("# metrics (Euclidean distance) "); if (gd) { printf("GD"); sep = "\t"; } if (igd) { printf("%s", sep); printf("IGD"); sep = "\t"; } if (gdp) { printf("%s", sep); printf("GD_%d", exponent_p); sep = "\t"; } if (igdp) { printf("%s", sep); printf("IGD_%d", exponent_p); sep = "\t"; } if (igdplus) { printf("%s", sep); printf("IGD+"); sep = "\t"; } if (hausdorff) { printf("%s", sep); printf("avg_Hausdorff"); } printf("\n"); } int n; int cumsize; for (n = 0, cumsize = 0; n < nruns; cumsize = cumsizes[n], n++) { double __unused time_elapsed = 0; int size_a = cumsizes[n] - cumsize; const double *points_a = &data[nobj * cumsize]; //Timer_start (); sep = ""; #define print_value_if(IF, VALUE) \ do { \ if (IF) { \ fprintf (outfile, "%s%-16.15g", sep, VALUE); \ sep = "\t"; \ } \ } while(0) print_value_if (gd, GD (nobj, minmax, points_a, size_a, reference, reference_size)); print_value_if(igd, IGD (nobj, minmax, points_a, size_a, reference, reference_size)); print_value_if(gdp, GD_p (nobj, minmax, points_a, size_a, reference, reference_size, exponent_p)); print_value_if (igdp, IGD_p (nobj, minmax, points_a, size_a, reference, reference_size, exponent_p)); print_value_if (igdplus, IGD_plus (nobj, minmax, points_a, size_a, reference, reference_size)); print_value_if (hausdorff, avg_Hausdorff_dist (nobj, minmax, points_a, size_a, reference, reference_size, exponent_p)); //time_elapsed = Timer_elapsed_virtual (); fprintf(outfile, "\n"); /* if (verbose_flag) */ /* fprintf (outfile, "# Time: %f seconds\n", time_elapsed); */ } if (outfilename) { if (verbose_flag) fprintf (stderr, "# %s -> %s\n", filename, outfilename); fclose (outfile); free (outfilename); } free (data); free (cumsizes); if (free_minmax) free( (void *) minmax); *nobj_p = nobj; } int main(int argc, char *argv[]) { double *reference = NULL; int reference_size = 0; int nobj = 0; const signed char *minmax = NULL; enum { GD_opt = 1000, IGD_opt, GD_p_opt, IGD_p_opt, IGD_plus_opt, hausdorff_opt}; /* see the man page for getopt_long for an explanation of these fields */ static struct option long_options[] = { {"gd", no_argument, NULL, GD_opt}, {"igd", no_argument, NULL, IGD_opt}, {"gd-p", no_argument, NULL, GD_p_opt}, {"igd-p", no_argument, NULL, IGD_p_opt}, {"igd-plus", no_argument, NULL, IGD_plus_opt}, {"hausdorff", no_argument, NULL, hausdorff_opt}, {"all", no_argument, NULL, 'a'}, {"exponent-p", required_argument, NULL, 'p'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, {"reference", required_argument, NULL, 'r'}, {"suffix", required_argument, NULL, 's'}, {"obj", required_argument, NULL, 'o'}, {NULL, 0, NULL, 0} /* marks end of list */ }; int opt; int longopt_index; while (0 < (opt = getopt_long(argc, argv, "hVvqamr:us:o:", long_options, &longopt_index))) { switch (opt) { case 'p': // FIXME: Use strtol exponent_p = atoi(optarg); break; case 'a': // --all gd = true; igd = true; gdp = true; igdp = true; igdplus = true; hausdorff = true; break; case GD_opt: gd = true; break; case IGD_opt: igd = true; break; case GD_p_opt: gdp = true; break; case IGD_p_opt: igdp = true; break; case IGD_plus_opt: igdplus = true; break; case hausdorff_opt: hausdorff = true; break; case 'o': // --obj minmax = read_minmax (optarg, &nobj); if (minmax == NULL) { fprintf(stderr, "%s: invalid argument '%s' for -o, --obj\n", program_invocation_short_name,optarg); exit(EXIT_FAILURE); } break; case 'r': // --reference reference_size = read_reference_set (&reference, optarg, &nobj); if (reference == NULL || reference_size <= 0) { errprintf ("invalid reference set '%s", optarg); exit (EXIT_FAILURE); } break; case 's': // --suffix suffix = optarg; break; case 'V': // --version version(); exit(EXIT_SUCCESS); case 'q': // --quiet verbose_flag = false; break; case 'v': // --verbose verbose_flag = true; break; case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); case 'h': usage(); exit(EXIT_SUCCESS); default: // should never happen abort(); } } if (reference == NULL) { errprintf ("a reference set must be provided (--reference)"); exit (EXIT_FAILURE); } int numfiles = argc - optind; if (numfiles < 1) {/* Read stdin. */ do_file (NULL, reference, reference_size, &nobj, minmax); } else if (numfiles == 1) { do_file (argv[optind], reference, reference_size, &nobj, minmax); } else { int k; /* FIXME: Calculate the nondominated front among all input files to use as reference set. */ #if 0 if (reference == NULL) { reference_size = calculate_nondominated (&reference, data, nobj, cumsizes[nruns-1], minmax); write_sets (stderr, reference, nobj, &reference_size, 1); } for (k = 0; k < numfiles; k++) nondominatedfile_range (argv[optind + k], &maximum, &minimum, &nobj); if (verbose_flag >= 2) { printf ("# maximum:"); vector_printf (maximum, nobj); printf ("\n"); printf ("# minimum:"); vector_printf (minimum, nobj); printf ("\n"); } #endif for (k = 0; k < numfiles; k++) do_file (argv[optind + k], reference, reference_size, &nobj, minmax); } return EXIT_SUCCESS; } eaf/src/mo-tools/epsilon.c0000644000175000017500000002506014160346515015324 0ustar nileshnilesh/************************************************************************* epsilon: --------------------------------------------------------------------- Copyright (c) 2010 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can obtain a copy of the GNU General Public License at: http://www.gnu.org/copyleft/gpl.html or by writing to: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---------------------------------------------------------------------- IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to acknowledge its use. Moreover, as a personal note, I would appreciate it if you would email manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. --------------------------------------------------------------------- Literature: [1] Eckart Zitzler, Lothar Thiele, Marco Laumanns, Carlos M. Fonseca and Viviane Grunert da Fonseca. "Performance assessment of multiobjective optimizers: an analysis and review," Evolutionary Computation, IEEE Transactions on , vol.7, no.2, pp. 117-132, April 2003. [2] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid population-based algorithms for the bi-objective quadratic assignment problem. Journal of Mathematical Modelling and Algorithms, 5(1):111-137, April 2006. *************************************************************************/ #include "epsilon.h" #include "nondominated.h" #include #include #include #include #include #include // for isspace() #include // for getopt() #include // for getopt_long() #include "cmdline.h" char *program_invocation_short_name = "epsilon"; static bool verbose_flag = false; static bool additive_flag = true; static const char *suffix = NULL; static void usage(void) { printf("\n" "Usage:\n" " %s [OPTIONS] [FILES] \n" " %s [OPTIONS] < [INPUT] > [OUTPUT]\n\n", program_invocation_short_name, program_invocation_short_name); printf( "Calculates the epsilon measure for the Pareto sets given as input\n\n" "Options:\n" " -h, --help give this summary and exit. \n" " --version print version number and exit. \n" " -v, --verbose print some information (time, number of points, etc.) \n" " -q, --quiet print as little as possible \n" " -a, --additive epsilon additive value %s \n" " -m, --multiplicative epsilon multiplicative value %s \n" " -r, --reference FILE file that contains the reference set \n" " -o, --obj [+|-]... specify whether each objective should be \n" " minimised (-) or maximised (+) (default all minimised)\n" " -s, --suffix=STRING Create an output file for each input file by appending\n" " this suffix. This is ignored when reading from stdin. \n" " If missing, output is sent to stdout. \n" "\n", str_is_default(additive_flag), str_is_default(!additive_flag)); } static void do_file (const char *filename, double *reference, int reference_size, int *nobj_p, const signed char * minmax) { double *data = NULL; int *cumsizes = NULL; int nruns = 0; int nobj = *nobj_p; int err = read_double_data (filename, &data, &nobj, &cumsizes, &nruns); if (!filename) filename = stdin_name; handle_read_data_error (err, filename); char *outfilename = NULL; FILE *outfile = stdout; if (filename != stdin_name && suffix) { outfilename = m_strcat(filename, suffix); outfile = fopen (outfilename, "w"); if (outfile == NULL) { errprintf ("%s: %s\n", outfilename, strerror(errno)); exit (EXIT_FAILURE); } } #if 0 if (union_flag) { cumsizes[0] = cumsizes[nruns - 1]; nruns = 1; } #endif /* Default minmax if not set yet. */ bool free_minmax = false; if (minmax == NULL) { minmax = read_minmax (NULL, &nobj); free_minmax = true; } if (verbose_flag) printf("# file: %s\n", filename); int cumsize; int n; for (n = 0, cumsize = 0; n < nruns; cumsize = cumsizes[n], n++) { double time_elapsed = 0; double epsilon; //Timer_start (); epsilon = (additive_flag) ? epsilon_additive (nobj, minmax, &data[nobj * cumsize], cumsizes[n] - cumsize, reference, reference_size) : epsilon_mult (nobj, minmax, &data[nobj * cumsize], cumsizes[n] - cumsize, reference, reference_size); // time_elapsed = Timer_elapsed_virtual (); fprintf (outfile, "%-16.15g\n", epsilon); if ((additive_flag && epsilon < 0) || (!additive_flag && epsilon < 1)) { errprintf ("%s: some points are not dominated by the reference set", filename); exit (EXIT_FAILURE); } if (verbose_flag) fprintf (outfile, "# Time: %f seconds\n", time_elapsed); } if (outfilename) { if (verbose_flag) fprintf (stderr, "# %s -> %s\n", filename, outfilename); fclose (outfile); free (outfilename); } free (data); free (cumsizes); if (free_minmax) free( (void *) minmax); *nobj_p = nobj; } int main(int argc, char *argv[]) { double *reference = NULL; int reference_size = 0; int nobj = 0; const signed char *minmax = NULL; int k; /* see the man page for getopt_long for an explanation of these fields */ static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"verbose", no_argument, NULL, 'v'}, {"quiet", no_argument, NULL, 'q'}, {"additive", no_argument, NULL, 'a'}, {"multiplicative", no_argument, NULL, 'm'}, {"reference", required_argument, NULL, 'r'}, {"suffix", required_argument, NULL, 's'}, {"obj", required_argument, NULL, 'o'}, {NULL, 0, NULL, 0} /* marks end of list */ }; int opt; /* it's actually going to hold a char */ int longopt_index; while (0 < (opt = getopt_long(argc, argv, "hVvqamr:us:o:", long_options, &longopt_index))) { switch (opt) { case 'a': // --additive additive_flag = true; break; case 'm': // --multiplicative additive_flag = false; break; case 'o': // --obj minmax = read_minmax (optarg, &nobj); if (minmax == NULL) { fprintf(stderr, "%s: invalid argument '%s' for -o, --obj\n", program_invocation_short_name,optarg); exit(EXIT_FAILURE); } break; case 'r': // --reference reference_size = read_reference_set (&reference, optarg, &nobj); if (reference == NULL || reference_size <= 0) { errprintf ("invalid reference set '%s", optarg); exit (EXIT_FAILURE); } break; case 's': // --suffix suffix = optarg; break; case 'V': // --version version(); exit(EXIT_SUCCESS); case 'q': // --quiet verbose_flag = false; break; case 'v': // --verbose verbose_flag = true; break; case '?': // getopt prints an error message right here fprintf(stderr, "Try `%s --help' for more information.\n", program_invocation_short_name); exit(EXIT_FAILURE); case 'h': usage(); exit(EXIT_SUCCESS); default: // should never happen abort(); } } if (verbose_flag) fprintf (stderr, (additive_flag) ? "# Additive epsilon indicator\n" : "# Multiplicative epsilon indicator\n"); if (reference == NULL) { errprintf ("a reference set must be provided (--reference)"); exit (EXIT_FAILURE); } int numfiles = argc - optind; if (numfiles < 1) {/* Read stdin. */ do_file (NULL, reference, reference_size, &nobj, minmax); } else if (numfiles == 1) { do_file (argv[optind], reference, reference_size, &nobj, minmax); } else { /* FIXME: Calculate the nondominated front among all input files to use as reference set. */ #if 0 if (reference == NULL) { reference_size = calculate_nondominated (&reference, data, nobj, cumsizes[nruns-1], minmax); write_sets (stderr, reference, nobj, &reference_size, 1); } for (k = 0; k < numfiles; k++) nondominatedfile_range (argv[optind + k], &maximum, &minimum, &nobj); if (verbose_flag >= 2) { printf ("# maximum:"); vector_printf (maximum, nobj); printf ("\n"); printf ("# minimum:"); vector_printf (minimum, nobj); printf ("\n"); } #endif for (k = 0; k < numfiles; k++) do_file (argv[optind + k], reference, reference_size, &nobj, minmax); } return EXIT_SUCCESS; } eaf/src/mo-tools/nondominated.h0000644000175000017500000001651614160346515016345 0ustar nileshnilesh#ifndef NONDOMINATED_H #define NONDOMINATED_H #include "common.h" #include // memcpy enum objs_agree_t { AGREE_MINIMISE = -1, AGREE_NONE = 0, AGREE_MAXIMISE = 1 }; /* Convert from int vector to minmax vector. */ static inline signed char * create_minmax(int nobj, const int * maximise) { signed char * minmax = malloc(sizeof(signed char) * nobj); for (int k = 0; k < nobj; k++) { minmax[k] = (maximise[k] == TRUE) ? AGREE_MAXIMISE : (maximise[k] == FALSE) ? AGREE_MINIMISE : AGREE_NONE; } return minmax; } static inline bool * nondom_init (size_t size) { bool * nondom = malloc (sizeof(bool) * size); for (size_t n = 0; n < size; n++) nondom[n] = true; return nondom; } /* When find_dominated_p == true, then stop as soon as one dominated point is found and return its position. When find_dominated_p == true, store which points are nondominated in nondom and return the number of nondominated points. */ static inline int find_nondominated_set_ (const double *points, int dim, int size, const signed char *minmax, const signed char agree, bool *nondom, bool find_dominated_p, bool keep_weakly) { int j, k, d; for (k = 0; k < size - 1; k++) { for (j = k + 1; j < size; j++) { if (!nondom[k]) break; if (!nondom[j]) continue; bool k_leq_j = true; bool j_leq_k = true; const double *pk = points + k * dim; const double *pj = points + j * dim; /* FIXME: As soon as j_leq_k and k_leq_j become false, neither k or j will be removed, so break. */ /* FIXME: Do not handle agree here, assume that objectives have been fixed already to agree on minimization/maximization. */ if (agree < 0) { for (d = 0; d < dim; d++) { j_leq_k = j_leq_k && (pj[d] <= pk[d]); k_leq_j = k_leq_j && (pk[d] <= pj[d]); } } else if (agree > 0) { for (d = 0; d < dim; d++) { j_leq_k = j_leq_k && (pj[d] >= pk[d]); k_leq_j = k_leq_j && (pk[d] >= pj[d]); } } else { for (d = 0; d < dim; d++) { if (minmax[d] < 0) { j_leq_k = j_leq_k && (pj[d] <= pk[d]); k_leq_j = k_leq_j && (pk[d] <= pj[d]); } else if (minmax[d] > 0) { j_leq_k = j_leq_k && (pj[d] >= pk[d]); k_leq_j = k_leq_j && (pk[d] >= pj[d]); } } } // k is removed if it is weakly dominated by j (unless remove_weakly). nondom[k] = !j_leq_k || (keep_weakly && k_leq_j); // j is removed if it is dominated by k. nondom[j] = (!k_leq_j || j_leq_k); eaf_assert(nondom[k] || nondom[j]); /* both cannot be removed. */ if (find_dominated_p && (!nondom[k] || !nondom[j])) { return nondom[k] ? j : k; } } } if (find_dominated_p) return -1; int new_size = 0; for (k = 0; k < size; k++) if (nondom[k]) new_size++; return new_size; } static inline int find_dominated_point (const double *points, int dim, int size, const signed char *minmax) { bool *nondom = nondom_init (size); int pos = find_nondominated_set_ (points, dim, size, minmax, AGREE_NONE, nondom, /* find_dominated_p = */true, /* keep_weakly = */false); free (nondom); return pos; } static inline int find_nondominated_set_agree (const double *points, int dim, int size, const signed char *minmax, const signed char agree, bool *nondom) { return find_nondominated_set_ (points, dim, size, minmax, agree, nondom, /* find_dominated_p = */false, /* keep_weakly = */false); } static inline int find_nondominated_set (const double *points, int dim, int size, const signed char *minmax, bool *nondom) { return find_nondominated_set_ (points, dim, size, minmax, AGREE_NONE, nondom, /* find_dominated_p = */false, /* keep_weakly = */false); } static inline int find_weak_nondominated_set (const double *points, int dim, int size, const signed char *minmax, bool *nondom) { return find_nondominated_set_ (points, dim, size, minmax, AGREE_NONE, nondom, /* find_dominated_p = */false, /* keep_weakly = */true); } static inline int get_nondominated_set (double **pareto_set_p, const double *points, int dim, int size, const signed char *minmax) { bool *nondom = nondom_init(size); int new_size = find_nondominated_set (points, dim, size, minmax, nondom); DEBUG2 ( fprintf (stderr, "# size\tnondom\tdom\n"); fprintf (stderr, " %d\t%d\t%d\n", size, new_size, size - new_size); ); if (new_size > size) {/* This can't happen. */ fatal_error ("%s:%d: a bug happened: new_size > old_size!\n", __FILE__, __LINE__); } double *pareto_set = malloc (sizeof (double) * new_size * dim); int n, k; // FIXME: We could use new_size to stop earlier. for (n = 0, k = 0; n < size; n++) { if (!nondom[n]) continue; memcpy(&pareto_set[dim * k], &points[dim * n], sizeof(points[0]) * dim); k++; } eaf_assert (k == new_size); free (nondom); *pareto_set_p = pareto_set; return new_size; } static inline void agree_objectives (double *points, int dim, int size, const signed char *minmax, const signed char agree) { for (int d = 0; d < dim; d++) if ((agree > 0 && minmax[d] < 0) || (agree < 0 && minmax[d] > 0)) for (int k = 0; k < size; k++) points[k * dim + d] = -(points[k * dim + d]); } static inline void normalise (double *points, int dim, int size, const signed char *minmax, signed char agree, const double lower_range, const double upper_range, const double *lbound, const double *ubound) { int k, d; const double range = upper_range - lower_range; double *diff = malloc (dim * sizeof(double)); for (d = 0; d < dim; d++) { diff[d] = ubound[d] - lbound[d]; if (diff[d] == 0.0) // FIXME: Should we use approximate equality? diff[d] = 1; // FIXME: Do we need to handle agree? } for (k = 0; k < size; k++) { double *p = points + k * dim; for (d = 0; d < dim; d++) if ((agree > 0 && minmax[d] < 0) || (agree < 0 && minmax[d] > 0)) p[d] = lower_range + range * (ubound[d] + p[d]) / diff[d]; else p[d] = lower_range + range * (p[d] - lbound[d]) / diff[d]; } free (diff); } int * pareto_rank (const double *points, int dim, int size); #endif /* NONDOMINATED_H */ eaf/src/Reaf.c0000644000175000017500000002431514156675260012770 0ustar nileshnilesh#include "Rcommon.h" #include "eaf.h" static eaf_t ** compute_eaf_helper (SEXP DATA, int nobj, SEXP CUMSIZES, int nruns, const double *percentile, int nlevels) { int k; SEXP_2_INT_VECTOR(CUMSIZES, cumsizes, cumsizes_len); if (cumsizes_len < nruns) Rf_error("length of cumsizes (%d) is less than nruns (%d)", cumsizes_len, nruns); int *level; if (percentile != NULL) { level = malloc(sizeof(int) * nlevels); for (k = 0; k < nlevels; k++) level[k] = percentile2level(percentile[k], nruns); } else { eaf_assert (nlevels == nruns); level = malloc(sizeof(int) * nruns); for (k = 0; k < nruns; k++) level[k] = k + 1; } double *data = REAL(DATA); DEBUG2( Rprintf ("attsurf ({(%f, %f", data[0], data[1]); for (k = 2; k < nobj; k++) { Rprintf (", %f", data[k]); } Rprintf (")...}, %d, { %d", nobj, cumsizes[0]); for (k = 1; k < nruns; k++) { Rprintf (", %d", cumsizes[k]); } Rprintf ("}, %d, { %d", nruns, level[0]); for (k = 1; k < nlevels; k++) { Rprintf (", %d", level[k]); } Rprintf ("}, %d)\n", nlevels); ); eaf_t **eaf = attsurf (data, nobj, cumsizes, nruns, level, nlevels); free (level); DEBUG2( Rprintf ("eaf computed\n"); for (k = 0; k < nlevels; k++) { Rprintf ("eaf[%d] = %d\n", k, eaf[k]->size); }); return eaf; } SEXP compute_eaf_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP PERCENTILE) { SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NRUNS, nruns); SEXP_2_DOUBLE_VECTOR(PERCENTILE, percentile, nlevels); eaf_t **eaf = compute_eaf_helper(DATA, nobj, CUMSIZES, nruns, percentile, nlevels); int totalpoints = eaf_totalpoints (eaf, nlevels); SEXP mat; PROTECT(mat = Rf_allocMatrix(REALSXP, totalpoints, nobj + 1)); double * rmat = REAL(mat); int pos = 0; int k; for (k = 0; k < nlevels; k++) { int npoints = eaf[k]->size; DEBUG2( int totalsize = npoints * nobj; Rprintf ("totalpoints eaf[%d] = %d\n", k, totalsize) ); int i; for (i = 0; i < npoints; i++) { int j; for (j = 0; j < nobj; j++) { rmat[pos + j * totalpoints] = eaf[k]->data[j + i * nobj]; } rmat[pos + nobj * totalpoints] = percentile[k]; pos++; } eaf_delete (eaf[k]); } free(eaf); UNPROTECT (1); return mat; } SEXP compute_eafdiff_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP INTERVALS) { SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NRUNS, nruns); SEXP_2_INT(INTERVALS, intervals); int k; eaf_t **eaf = compute_eaf_helper(DATA, nobj, CUMSIZES, nruns, NULL, nruns); int nsets1 = nruns / 2; int nsets2 = nruns - nsets1; int totalpoints = eaf_totalpoints (eaf, nruns); SEXP mat; PROTECT(mat = Rf_allocMatrix(REALSXP, totalpoints, nobj + 1)); double *rmat = REAL(mat); int pos = 0; for (k = 0; k < nruns; k++) { int npoints = eaf[k]->size; int i, j; DEBUG2( int totalsize = npoints * nobj; Rprintf ("totalpoints eaf[%d] = %d\n", k, totalsize) ); // FIXME: Find the most efficient order of the loop. for (i = 0; i < npoints; i++) { for (j = 0; j < nobj; j++) { rmat[pos + j * totalpoints] = eaf[k]->data[j + i * nobj]; } pos++; } } pos += (nobj - 1) * totalpoints; for (k = 0; k < nruns; k++) { int i; int npoints = eaf[k]->size; for (i = 0; i < npoints; i++) { int count_left; int count_right; /* bit_array_check(bit_array_offset(eaf[k]->bit_attained,i, eaf[k]->nruns), */ /* eaf[k]->attained + i * eaf[k]->nruns, npoints, nruns); */ attained_left_right (bit_array_offset(eaf[k]->bit_attained, i, eaf[k]->nruns), nsets1, nruns, &count_left, &count_right); rmat[pos] = intervals * (double) ((count_left / (double) nsets1) - (count_right / (double) nsets2)); pos++; } eaf_delete (eaf[k]); } free(eaf); UNPROTECT (1); return mat; } static int polygon_len(const double *src, int nobj) { const double *src_orig = src; while (*src != objective_MIN) src += nobj; src += nobj; return (src - src_orig) / nobj; } static int polygon_copy(double *dest, int start, int nrows, const double *src) { int len = start; while (*src != objective_MIN) { dest[len] = *src; dest[len + nrows] = *(src + 1); len++; src += 2; } dest[len] = NA_REAL; dest[len + nrows] = NA_REAL; len++; return len - start; } SEXP compute_eafdiff_rectangles_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP INTERVALS); SEXP compute_eafdiff_rectangles_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP INTERVALS) { SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NRUNS, nruns); SEXP_2_INT(INTERVALS, intervals); int nprotected = 0; int k; eaf_t **eaf = compute_eaf_helper(DATA, nobj, CUMSIZES, nruns, NULL, nruns); eaf_polygon_t * rects = eaf_compute_rectangles(eaf, nruns); for (k = 0; k < nruns; k++) eaf_delete (eaf[k]); free(eaf); const int division = nruns / 2; int nrow = vector_int_size(&rects->col); // Two points per row + color new_real_matrix (result, nrow, 2 * nobj + 1); double * p_xy = vector_objective_begin(&rects->xy); for (k = 0; k < nrow; ++k) { for (int i = 0; i < 2 * nobj; i++) result[k + nrow * i] = (double) *(p_xy++); } vector_objective_dtor (&rects->xy); for (k = 0; k < nrow; ++k) { double color = vector_int_at(&rects->col, k); // Each color is within [0, nruns / 2] or [-nruns / 2, 0] result[k + nrow * 2 * nobj] = intervals * color / (double) division; } // FIXME: This may return duplicated rows, remove them. vector_int_dtor (&rects->col); free(rects); const char* const colnames[] = {"xmin", "ymin", "xmax", "ymax", "diff"}; set_colnames(Rexp(result), colnames, 5); UNPROTECT (nprotected); return Rexp(result); } SEXP compute_eafdiff_area_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP INTERVALS); SEXP compute_eafdiff_area_C(SEXP DATA, SEXP NOBJ, SEXP CUMSIZES, SEXP NRUNS, SEXP INTERVALS) { int nprotected = 0; int k; SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NRUNS, nruns); SEXP_2_INT(INTERVALS, intervals); eaf_t **eaf = compute_eaf_helper(DATA, nobj, CUMSIZES, nruns, NULL, nruns); eaf_polygon_t *p = eaf_compute_area(eaf, nruns); for (k = 0; k < nruns; k++) eaf_delete (eaf[k]); free(eaf); const int division = nruns / 2; int ncol = vector_int_size(&p->col); DEBUG2(Rprintf ("ncol: %d\n", ncol)); int left_ncol = 0, right_ncol = 0; int left_len = 0, right_len = 0; /* First compute the adjusted colors, and how much space we need on each side. */ double * p_xy = vector_objective_begin(&p->xy); for (k = 0; k < ncol; k++) { // Truncate colors to interval int color = vector_int_at(&p->col, k) * intervals / (double) division; int len = polygon_len (p_xy, nobj); p_xy += len * nobj; DEBUG2(Rprintf ("color: %d, len = %d\n", color, len)); // First interval (-1, 1) is white if (color >= 1) { left_len += len; left_ncol++; } else if (color <= 1) { right_len += len; right_ncol++; } vector_int_set(&p->col, k, color); } DEBUG2(Rprintf ("left_len: %d, right_len: %d, left_ncol: %d, right_ncol: %d\n", left_len, right_len, left_ncol, right_ncol)); /* Now assign points to each side. */ new_real_vector(left_col, left_ncol); new_real_vector(right_col, right_ncol); const int left_npoints = left_len; new_real_matrix (left, left_npoints, nobj); const int right_npoints = right_len; new_real_matrix (right, right_npoints, nobj); p_xy = vector_objective_begin(&p->xy); left_len = right_len = 0; left_ncol = right_ncol = 0; for (k = 0; k < ncol; k++) { int len; int color = vector_int_at(&p->col, k); if (color >= 1) { len = polygon_copy (left, left_len, left_npoints, p_xy); left_len += len; left_col[left_ncol++] = color + 1; } else if (color <= 1) { len = polygon_copy (right, right_len, right_npoints, p_xy); right_len += len; right_col[right_ncol++] = 1 - color; } else { len = polygon_len (p_xy, nobj); } p_xy += nobj * len; } vector_int_dtor (&p->col); vector_objective_dtor (&p->xy); free(p); set_attribute(left, "col", left_col); set_attribute(right, "col", right_col); new_list(poly, 2); list_push_back (poly, left); list_push_back (poly, right); new_string_vector (names, list_len (poly)); string_vector_push_back (names, "left"); string_vector_push_back (names, "right"); set_names (poly, names); UNPROTECT (nprotected); return Rexp(poly); } SEXP read_data_sets (SEXP FILENAME) { SEXP_2_STRING(FILENAME, filename); /* Rprintf ("filename: %s\n", filename); */ objective_t * data = NULL; int * cumsizes = NULL; int nobj = 0, nruns = 0; read_objective_t_data (filename, &data, &nobj, &cumsizes, &nruns); const int ntotal = cumsizes[nruns - 1]; SEXP DATA; PROTECT(DATA = Rf_allocMatrix(REALSXP, cumsizes[nruns-1], nobj + 1)); double *rdata = REAL(DATA); double_transpose (rdata, data, ntotal, nobj); int k, j; size_t pos = ntotal * nobj; for (k = 0, j = 0; k < ntotal; k++, pos++) { if (k == cumsizes[j]) j++; rdata[pos] = j + 1; } free(data); free(cumsizes); UNPROTECT (1); return DATA; } eaf/src/Makevars.in0000644000175000017500000000240314160072356014032 0ustar nileshnilesh# -*- mode: makefile -*- # set by configure GSL_CFLAGS = @GSL_CFLAGS@ GSL_LIBS = @GSL_LIBS@ # Do not put GCC specific flags here. Put them instead in CFLAGS and # CXXFLAGS in ~/.R/Makevars DEBUG=0 PKG_CPPFLAGS = $(GSL_CFLAGS) -DR_PACKAGE -DDEBUG=$(DEBUG) -I./eaf/ -I./mo-tools/ PKG_LIBS = $(GSL_LIBS) EAF_SRC_FILES= avl.c eaf3d.c eaf.c io.c MOTOOLS_SRC_FILES = hv_contrib.c hv.c pareto.c whv.c whv_hype.c SOURCES = $(EAF_SRC_FILES:%=eaf/%) $(MOTOOLS_SRC_FILES:%=mo-tools/%) init.c Reaf.c Repsilon.c Rhv.c Rnondominated.c OBJECTS = $(SOURCES:.c=.o) export GSL_CFLAGS GSL_LIBS eaf = eaf/eaf$(EXEEXT) igd = mo-tools/igd$(EXEEXT) epsilon = mo-tools/epsilon$(EXEEXT) dominatedsets = mo-tools/dominatedsets$(EXEEXT) nondominated = mo-tools/nondominated$(EXEEXT) ndsort = mo-tools/ndsort$(EXEEXT) .PHONY: all clean all: $(SHLIB) $(MAKE) -C eaf all march=none CC="$(CC)" CFLAGS="$(CFLAGS)" OPT_CFLAGS="" WARN_CFLAGS="" DEBUG=$(DEBUG) EXE=$(EXEEXT) $(MAKE) -C mo-tools all march=none CC="$(CC)" CFLAGS="$(CFLAGS)" OPT_CFLAGS="" WARN_CFLAGS="" DEBUG=$(DEBUG) EXE=$(EXEEXT) $(SHLIB): $(OBJECTS) mo-tools/hv.o: PKG_CPPFLAGS += -DVARIANT=4 clean: @-rm -f *.o *.so *.dll \ eaf/*.o $(eaf) \ $(igd) $(epsilon) $(dominatedsets) $(nondominated) $(ndsort) \ mo-tools/*.o eaf/src/Rnondominated.c0000644000175000017500000000610613627011751014701 0ustar nileshnilesh#include "Rcommon.h" #include "nondominated.h" SEXP normalise_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP RANGE, SEXP LBOUND, SEXP UBOUND, SEXP MAXIMISE) { int nprotected = 0; SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); SEXP_2_DOUBLE_VECTOR(RANGE, range, range_len); SEXP_2_DOUBLE_VECTOR(LBOUND, lbound, lbound_len); SEXP_2_DOUBLE_VECTOR(UBOUND, ubound, ubound_len); SEXP_2_LOGICAL_VECTOR(MAXIMISE, maximise, maximise_len); if (nobj != lbound_len) Rf_error("length of lbound (%d) is different from number of objectives (%d)", lbound_len, nobj); if (nobj != ubound_len) Rf_error("length of ubound (%d) is different from number of objectives (%d)", ubound_len, nobj); if (nobj != maximise_len) Rf_error("length of maximise (%d) is different from number of objectives (%d)", maximise_len, nobj); if (range_len != 2) Rf_error("length of range must be two (lower, upper)"); signed char * minmax = create_minmax(nobj, maximise); // FIXME: Is this slower than pure R? Why is R so inefficient? new_real_matrix (out, nobj, npoint); double * data = REAL(DATA); for (int i = 0; i < nobj * npoint; i++) out[i] = data[i]; // We have to make the objectives agree before normalisation. // FIXME: Do normalisation and agree in one step. const signed char agree = AGREE_MINIMISE; agree_objectives (out, nobj, npoint, minmax, agree); normalise(out, nobj, npoint, minmax, agree, range[0], range[1], lbound, ubound); free (minmax); UNPROTECT(nprotected); return Rexp_out; } SEXP is_nondominated_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP MAXIMISE, SEXP KEEP_WEAKLY) { int nprotected = 0; SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); SEXP_2_LOGICAL_VECTOR(MAXIMISE, maximise, maximise_len); SEXP_2_LOGICAL(KEEP_WEAKLY, keep_weakly); if (nobj != maximise_len) Rf_error("length of maximise (%d) is different from number of objectives (%d)", maximise_len, nobj); signed char * minmax = create_minmax(nobj, maximise); bool * bool_is_nondom = nondom_init(npoint); double * data = REAL(DATA); if (keep_weakly) { find_weak_nondominated_set(data, nobj, npoint, minmax, bool_is_nondom); } else { find_nondominated_set(data, nobj, npoint, minmax, bool_is_nondom); } new_logical_vector (is_nondom, npoint); bool_2_logical_vector(is_nondom, bool_is_nondom, npoint); free (minmax); free (bool_is_nondom); UNPROTECT(nprotected); return Rexp_is_nondom; } SEXP pareto_ranking_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT) { int nprotected = 0; SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); double * data = REAL(DATA); /* FIXME: How to assign directly? */ new_int_vector (rank, npoint); int * rank2 = pareto_rank(data, nobj, npoint); for (int i = 0; i < npoint; i++) { rank[i] = rank2[i]; } free (rank2); UNPROTECT(nprotected); return Rexp_rank; } eaf/src/Makevars.ucrt0000644000175000017500000000007214156576272014414 0ustar nileshnileshCRT=-ucrt include Makevars.win OBJECTS = $(SOURCES:.c=.o) eaf/src/Repsilon.c0000644000175000017500000000652113650337102013671 0ustar nileshnilesh#include "Rcommon.h" #include "epsilon.h" #include "igd.h" #include "nondominated.h" SEXP epsilon_mul_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); SEXP epsilon_add_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); enum unary_metric_t { EPSILON_ADD, EPSILON_MUL, INV_GD, INV_GDPLUS, AVG_HAUSDORFF }; static SEXP unary_metric_ref(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE, enum unary_metric_t metric, SEXP EXTRA) { int nprotected = 0; SEXP_2_INT(NOBJ, nobj); SEXP_2_INT(NPOINT, npoint); double *ref = REAL(REFERENCE); SEXP_2_INT(REFERENCE_SIZE, ref_size); SEXP_2_LOGICAL_VECTOR(MAXIMISE, maximise, maximise_len); if (nobj != maximise_len) Rf_error("length of maximise (%d) is different from number of objectives (%d)", maximise_len, nobj); signed char * minmax = create_minmax(nobj, maximise); new_real_vector(value, 1); double *data = REAL(DATA); switch(metric) { case EPSILON_ADD: value[0] = epsilon_additive (nobj, minmax, data, npoint, ref, ref_size); break; case EPSILON_MUL: value[0] = epsilon_mult (nobj, minmax, data, npoint, ref, ref_size); break; case INV_GD: value[0] = IGD (nobj, minmax, data, npoint, ref, ref_size); break; case INV_GDPLUS: value[0] = IGD_plus (nobj, minmax, data, npoint, ref, ref_size); break; case AVG_HAUSDORFF: { SEXP_2_INT(EXTRA, p); value[0] = avg_Hausdorff_dist (nobj, minmax, data, npoint, ref, ref_size, p); break; } default: Rf_error("unknown unary metric"); } free (minmax); UNPROTECT (nprotected); return Rexp(value); } SEXP epsilon_mul_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE) { return(unary_metric_ref(DATA, NOBJ, NPOINT, REFERENCE, REFERENCE_SIZE, MAXIMISE, EPSILON_MUL, R_NilValue)); } SEXP epsilon_add_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE) { return(unary_metric_ref(DATA, NOBJ, NPOINT, REFERENCE, REFERENCE_SIZE, MAXIMISE, EPSILON_ADD, R_NilValue)); } SEXP igd_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE) { return(unary_metric_ref(DATA, NOBJ, NPOINT, REFERENCE, REFERENCE_SIZE, MAXIMISE, INV_GD, R_NilValue)); } SEXP igd_plus_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE) { return(unary_metric_ref(DATA, NOBJ, NPOINT, REFERENCE, REFERENCE_SIZE, MAXIMISE, INV_GDPLUS, R_NilValue)); } SEXP avg_hausdorff_dist_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE, SEXP P) { return(unary_metric_ref(DATA, NOBJ, NPOINT, REFERENCE, REFERENCE_SIZE, MAXIMISE, AVG_HAUSDORFF, P)); } eaf/src/init.c0000644000175000017500000000554713706402717013057 0ustar nileshnilesh#include #include #include #include // for NULL /* .Call calls */ extern SEXP compute_eaf_C(SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP compute_eafdiff_area_C(SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP compute_eafdiff_rectangles_C(SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP compute_eafdiff_C(SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP read_data_sets(SEXP); extern SEXP hypervolume_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE); extern SEXP hv_contributions_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE); extern SEXP normalise_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP RANGE, SEXP LBOUND, SEXP UBOUND, SEXP MAXIMISE); extern SEXP is_nondominated_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP MAXIMISE, SEXP KEEP_WEAKLY); extern SEXP pareto_ranking_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT); extern SEXP epsilon_mul_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); extern SEXP epsilon_add_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); extern SEXP igd_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); extern SEXP igd_plus_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE); extern SEXP avg_hausdorff_dist_C(SEXP DATA, SEXP NOBJ, SEXP NPOINT, SEXP REFERENCE, SEXP REFERENCE_SIZE, SEXP MAXIMISE, SEXP P); extern SEXP rect_weighted_hv2d_C(SEXP DATA, SEXP NPOINT, SEXP RECTANGLES, SEXP RECTANGLES_NROW); extern SEXP whv_hype_C(SEXP DATA, SEXP NPOINTS, SEXP IDEAL, SEXP REFERENCE, SEXP DIST, SEXP SEED, SEXP NSAMPLES); #define DECLARE_CALL_ENTRY(NAME, NARGS) \ {#NAME, (DL_FUNC) &NAME, NARGS}, static const R_CallMethodDef CallEntries[] = { DECLARE_CALL_ENTRY(compute_eaf_C, 5) DECLARE_CALL_ENTRY(compute_eafdiff_area_C, 5) DECLARE_CALL_ENTRY(compute_eafdiff_rectangles_C, 5) DECLARE_CALL_ENTRY(compute_eafdiff_C, 5) DECLARE_CALL_ENTRY(read_data_sets, 1) DECLARE_CALL_ENTRY(hypervolume_C, 4) DECLARE_CALL_ENTRY(hv_contributions_C, 4) DECLARE_CALL_ENTRY(normalise_C, 7) DECLARE_CALL_ENTRY(is_nondominated_C, 5) DECLARE_CALL_ENTRY(pareto_ranking_C, 3) DECLARE_CALL_ENTRY(rect_weighted_hv2d_C, 4) DECLARE_CALL_ENTRY(whv_hype_C, 7) DECLARE_CALL_ENTRY(epsilon_add_C, 6) DECLARE_CALL_ENTRY(epsilon_mul_C, 6) DECLARE_CALL_ENTRY(igd_C, 6) DECLARE_CALL_ENTRY(igd_plus_C, 6) DECLARE_CALL_ENTRY(avg_hausdorff_dist_C, 7) {NULL, NULL, 0} }; void R_init_eaf(DllInfo *dll) { R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } eaf/src/install.libs.R0000644000175000017500000000121613627006324014452 0ustar nileshnileshexecs <- c(file.path("eaf", "eaf"), file.path("mo-tools", c("epsilon","igd","dominatedsets","nondominated","ndsort"))) if (WINDOWS) execs <- paste0(execs, ".exe") if (any(file.exists(execs))) { dest <- file.path(R_PACKAGE_DIR, paste0('bin', R_ARCH)) dir.create(dest, recursive = TRUE, showWarnings = FALSE) file.copy(execs, dest, overwrite = TRUE) } files <- Sys.glob(paste0("*", SHLIB_EXT)) dest <- file.path(R_PACKAGE_DIR, paste0('libs', R_ARCH)) dir.create(dest, recursive = TRUE, showWarnings = FALSE) file.copy(files, dest, overwrite = TRUE) if (file.exists("symbols.rds")) { file.copy("symbols.rds", dest, overwrite = TRUE) } eaf/tools/0000755000175000017500000000000014160346554012307 5ustar nileshnilesheaf/tools/winlibs.R0000644000175000017500000000066414077470030014101 0ustar nileshnilesh# Download GSL 2.7 Rtools build if(!file.exists("../windows/gsl-2.7/include/gsl/gsl_blas.h")){ download.file("https://github.com/rwinlib/gsl/archive/v2.7.zip", "lib.zip", quiet = TRUE) dir.create("../windows", showWarnings = FALSE) unzip("lib.zip", exdir = "../windows") unlink("lib.zip") stopifnot(file.exists("../windows/gsl-2.7/include/gsl/gsl_errno.h")) cat("Downloaded to '", file.path(getwd(), "../windows"), "'\n") } eaf/tools/create-figures.R0000644000175000017500000000164214160050741015330 0ustar nileshnileshlibrary(eaf) extdata_dir <- system.file(package="eaf", "extdata") A1 <- read_datasets(file.path(extdata_dir, "ALG_1_dat.xz")) A2 <- read_datasets(file.path(extdata_dir, "ALG_2_dat.xz")) # FIXME: How to crop PNG? png(filename = "man/figures/ALG_1_dat-ALG_2_dat.png", width = 480, height = 240) eafdiffplot(A1, A2, type = "point", title.left = "Algorithm 1", title.right = "Algorithm 2") invisible(dev.off()) a1 <- read_datasets(file.path(extdata_dir, "wrots_l100w10_dat")) a2 <- read_datasets(file.path(extdata_dir, "wrots_l10w100_dat")) # FIXME: How to crop PNG? png(filename = "man/figures/eafdiff-color.png", width = 600, height = 350) eafdiffplot(a1, a2, col = colorRampPalette(c("blue", "red")), intervals = 10, title.left = expression("W-RoTS, " * lambda * "=" * 100 * ", " * omega * "=" * 10), title.right= expression("W-RoTS, " * lambda * "=" * 10 * ", " * omega * "=" * 100)) invisible(dev.off()) eaf/build/0000755000175000017500000000000014160346554012246 5ustar nileshnilesheaf/build/partial.rdb0000644000175000017500000015422414160346554014403 0ustar nileshnileshklɷ'II$%*J"ID((zݼɪ +ʬ̢Dbvǰ ca {g0€wа? 2aq2OVEUe,'8:q7STGjݩ@~w8 x|ԞT7Z +2?lQcdLb݁QHtpohk⿱s/VޢdWVe䞔^=kXMuQ#otc_khej7}mlR+^`wgfWWsb1&Freh:>Qxx_hΫNK4C]aTٮ?zԲ4 {{{"F yYMQ025MYhw.9@Hgn=(~C|$«D;{ r6l?b=2ڵDzBCJޅ؋to"8'*=w"Gzd"ٻYbw!@@rOR X%kvH"-J{8'"<1 fJfQ$i861WM7̉\&mA*Mmbj#`#(Y,][)Q;+Z.(H7kjg8G=8'w†řgɆHKMBF:ܠ)!?'Vuv}2}*U NG6C!B@z y_TwDTuHVuEuO4φce=z般.7kuf(.C|b6uD *AԢY-Sރ:=HyGu6d3CbiYԮԒ )^Ģg_ҏk(1DT9XD|n>Q t.VYsB&ȸ?b}4ˆ> Ֆ ~X3R-9U؎F >n;v?XMlͪ?0@~ERc==pxNN[8;1)ןMH|M5}tn,ՑVh?*{ͫŅMz 2җEި[̦/y {|d! bV5je *ͤb8$ u^;W^h_Uo ?U#Ϫ醳MwYڼ0b)rDV{Uj:A:U2 9=[ eb{Df/*pInT%K\)&& QB=26b ɣ/=2!oNl§ Cc%{rrr傩aȬspecXvVvx4la(\Kx`K.1S!N)!lYl91>Iۙ,OTɡ!vִֆ`L{ِK?-ǻL;ʘ-Ew6O?1rs.ՠTMoo_~GhW*Y'k.iv7`G8mݗb׎f;Km4->j\ȲW_%;eo[ nضٷX@Bwaِi ~l]﬽=sh6 \[yX=UVTWOd:cU+3}XÈR{F_[KMc'H}/ EC,"}ٷT; *ꢮGQ|TSnUvQlE.5O2Y3=ƊeɦfA+WJ~_]q&SJS)i+Ӣ~wHƁ²Y!ym4UB O_"R -{qB{KH/C,!E]?{" r"cQ߾41=s-s1EHǯ'!Cl،YWVVb*!cɞɱJe+E"ϑ~\˛%mmSz8{;C )Qc)fͪ>9#Z;PfQ_&{gk5)Q66ڿ >Y.U?2p4Y^ 74_\ H/Dfӻput=l6jA;8T3-V0~HL.]K{ rj{6G 5@kK+X플F; \F2 !U?loۻda vlzKy{7=KԍE|w饃՘I@`V 7}6׭ΥU}jQ-__텮 S1xKhkn/-֩e_7kف%ʖfyfY*L4ӵdSl v,-nhKaVlnAˋ >on|ګ'Z4ڼ4gbQC6ѺΥ2u&[rW[}Ao]bʽu)׭wm^y?2lVU ʦs]mʁԪ!2oo ~%TPo~wI]>s^hZx a6Ѧ~Dl[}3jfqϣi Cx{ 7ovawph/ś@ }?p H!޴ S[k<Gz^YG|y/@pDH32/Xot!rKKM%/#oG[Ï||"F[Nu^oG*e Alc`I7׌*V,ZiHKqQՌ5TS/c D^ `47H:V[yT.D3ZZ+ܨ?iF>"͸isΠQsP 2O^|3(?Eߪ `K\l>Qv(V$ Ӱl>l!nglM- FL8 mW \oɐv<%:-_#_GԚ^oynF78ZNp|}x/7mEw4-}[ >z4=*Y[eˑcC(s{Q[8Fm9*s=+ܼ '6Ij]3PǸV@:|zXT+;ypͳ<[(rmT;pPJJҁC:WWo?Rcq>PZ'bsf>xnS?VjTD;v)ۙai-R=A) '+^x<mI)z}G d;dl$l,)lLQ$]%jizjR`HZ&{=iL OEևTTdk %@9'"L.zGoɇEZ@Ov ܻ?TyLNSHO*+uXY1)75"MVBrM)Wt<s#H?@Ez4~1ǒAQ7dWITh&7F&ֿtdts2ΛqnE3ǗŇ[$vQ/ }A5ፖ=yjO :UZ"/+9j@dj0Lyuv\j={Lz~I->w܋ukw!l`}.,C#L}<|balHW*_4M7VZ^3b!XZkE\Lo ldțg;LS&А -Z15\Z>[}794:<6&x!^RmPg 34ZݟVj oDXPmٱ]v6%aS^ Ie79 ؍48l?Fq%P%|LH=6!>H)F3#EY[ž>%qۤ_'Q|Lha'}nkä!ݧ wTc OYĹçiTjEN5qoLJ@8:ڦεÞZ/k<->Z+eQHb) X$NhdT~w~G4s%?{oe&e2$ W/gGʺa;Lsߜșv{K׹ yoQ<)lu(a!mxG|dbږ?z_H^FP<&#+Rmt\( !>Bhb!ʋ/R0l;lŦH޴}?vTAO3wy^(QnT˕F |Ȏq#ŭ\ܛHL^[#ʾ8*g9gz$"unB> DZW~%'H?I6Q?8B2O"VgnYf*s5[xLz3>?;&a[`PzE0 h7MoMIp(C|$MoT  xmiAD7-2~K MO|VBi27-aNMWSMţ¾imI] 35ͿJM0]ӀTM,qߐT-Ek 6>)OECj}XǡMkè">&.9VrbUOGiVjGDMuuG5v.8lrUlUW( @0)su*Rs^^@Z} 3#?~7 @"wP&ϐ%mL16dN|?@FiUxJ -G=iVCMHٛ8C5"TB "9`5 Y߬c-}sN =_v=dL}T1_R=$_w_G#ɋ&I|HgPy3_FO&F>M:;NY:wq3(?ۉl#&a$??rDŽte3^Ql8 A>BQdà-Id եlqM͢0rIuf3T]3–*y6sKvF3d|8CnK8SHO)aI y߽6fqg~ 𞎓HO*W S^v[ypnle~3"槐MI,e+&DJ%g$P"-Hv{g"պMPPFc|] }xKn$MZ,P6؉5ʓȠMkSM;[oJnT@toM\9ҧnkNq@fH 6}n)d:"}P9QL%ش$oDNv! -4!6aZ#J"8'"t"yH{jiMb 5wC ?!> eQ~deAP,_bGoB4W1wrɦ(H,cTP' ]iJZB꾆HJaW,Ǽ.!CKԢFtoDX|" w q?@+Uj)t0:]k -7Sdi/!ķ0Y?+򲏀(r×"3=8EETP6ppDig?^:Ȣ"[_Ny&)UrnS䬯vyqlgsw!WgHS Ǭxy9OƢ35^mԱ<)uIYy $ۿ?Ke|1}YMp d9ŬYu؛#jyrgIVCxaTCVw%::!>@eT>ť|pq\vv7NZDc:klt3Ąw|%vWeN#y畵˞{~NiÝP+ղag '[Yש.cSj7 1ҏ+svOs3$^ *MDfrb}s*yr;$ylfvdBʳ)}ڵIIjP轿б2E/FؕBn]vG? %H_K*Ky++א9w:U6Ѽ86h% E/Foⷾw^{#j7qAǖV)躪gM#O{ݻUKzʳ9sLy mO5"ғoDAZJzbGM~ŏqOx8A(&$ l1e[d} (iݩ]R8 986p<V↸f=%8Aq(nq zLɥ%2GezLᔷ"Dz0 ͑5!]--u*:z>ɜ1t6~C/+HP\i9CP{^ ŏpOD߿Yk~4m;8GpTe$š2ԡlt"q=DpM^l9.&%**֋xɫ{+ME68d2" A:SHOE&nbn؍t"U,XT[/=]vB _">6Œln晗lQ8S P9?dB~` fΐqK@@cn.4rm`;a}dz-;?D}K"uv<-!Q g25">uh}Lnr8oqg{50<ūxGX'oV~`hp?z]]atEgݻ:ҟa㹖72Dc/Q=.yĴ7|3k+ff WF knfzK̺͛u]nRtugMvB?Ê>GrTGކx1x17~Bvgz&[a:cCtqr:Kk ,dB,`E"W~)UVw7Y :ik~%_zX%_PkΡS s=qgۗ\."gۇHh }Y->gsÁ*24IwZ6B7RB~#=M.g:?uQ"À܉"#ȼVCՆZ .m}8IJ(i(3>/#j?Vƴ-KM!n:}ąr] .(rކM #ڐ4a՗XRލ;8Gr7[RHX7pn|MV4 ?n#*t0 xc7@fJ!auW*} yAX= UJCuCpu"SPj=eSVUa86uyY$ KT=Vm]38/Omm\-yyd`Kt\]*لxZf2=ezixd_T y'ELZw+d֑!;JhGFwlˮY#o؈Qo.m>o5iūoXN7v_@XitntY_rQZ:F':$}%bb_^!/KT3|t, $SebvQ\[;e,Ye[ 6GZPpCv;O"}R\DxII?aS"KLj))}KltHEIZqsgVn&{yETLqwnJ2uw|qS>yA/w qAAd <留"5D16 Y6MswjZ8 5{AQ@%\ 2|sS}U 3Ӈ Ef:]aܺ*)|1WE>8=v;,-F2,ׁ*Y2nHZ;v7Йp2nt]2Syhni@<, hpFB,yEd :lN!= tVX?1u7d ٤${T FZj%qώY<*m YvrOd~}tZ m' ݵE {W!'=L4VZ#`hC+Q+ (BT- {ܖ46,%/+%rC|"ˁ|QmL&)@Gz<\ADB0o#}[Z0w/子' }Gθ!f]ķHUf m.*/z?g%ߑ3Vq~-x:xiÊROFH=DPQFnbr[´޺6dz qYY2ي%slFprkՍ_O"ZGѭ^()^HkD}Vp9\tw5;LDkW!Or\S\HKbP%I >359#)o6؛jI 83o!<36sODS&B|D'PċHKuDB.njߗ 8X28Ԃ@qfDfPmI'=iH`>)s̷0`.,4bZTqL&k*N'HUC6se'L< 53^ ThM\&kU/]B)5_"\@9?vSb2̗N].2# `;!}Nzd50*ފk8U . _A>Gyjſٸ-c<ھ;Վk̀HwKkvs wt\JT*u0D$ JDټb5E0rwv#|چ&l *~s'"G=Oc@z@ 6(:mq34cŻDY]#>Ku!>mt5?;O"@<)e n;!!!\C Ffw+D8>qPL{N[,q&Hc~qw.ˈdf&,>h棈HKy7.iԛ*>o3CqR=G{ 88D\44 .O~, qi)VT݄- nU2PsI .4A3=9"NHKb\:U'UFDdJW8npMInpY(0݋iy2U{6`Ҽ eɜAV'yͦx- >(>`t3n{^ActZֽS}W60bM=(c< "="M޷:tk(k@Ad"C|dD6[(kQdcL{ <ԧjI%= Qý؝{4\27hn{R[ y­"T$`(P7[6X'H?Qڹڔ ~Q h^,ku{npId~28񃀞Ŭ3l!RXj?1{g}kfedxdi;0q2odڷg;\<28 $'"Gw>U_/~#{aIMZqkUgSqM;CGǶ1vY. rB}k,3lW0؀өOO ?z94W5{tRnx}n^ yX'zHԃUC7zWI3i6$w;F*qo?ic2ːLc|OƝEujL D./0tNGϣHAs/O H{bEno%`rse~K@ "9e FLL.1!_Aš=E֔rRҝ4 tfrڼOH^\_C.[n9'u ]J7*b{T+f\#(}df7l?Gv}i^1?cvIarZإF\–SIJD3l9>rd?nQ_c#Qi.OBڞ,7%׿ YT3}ݾo60_SL 4o{-Zi8(H;8ދ iA+WJI6aI vZ(8}v}?ΎRtPlv`}oytG>A`>jǛ{>d8o9"CW4qT,hF#qxq˟Op OkGG'q{˙3U1-ͽ?_QM^&v=̘ƪV .[|!/*)>.UΥWU :Gx5 =[ evY b|QLُԦ/(]J11udȎ;L+f<G 72<18iUO}-Vi2\04 J~Vy%@<2]L0T6.{uP~qV)/-oQZ(]HK~Mį*È MT[.r{H髅 Okϵk&fdʪ!?&#Oޠ!>վkɦ`G`P10sSo(CYZs'ƶL,`} xoZA'B(߸P#2NcnG?+CչExl|r+1:ؔcC~ ˿LzdԀCm/^e~X$)0B 5I3/f)g\P`}Atl<vYYX7xp6|//MjWv|j6N?:/\؄ƚ4}aBtN=&DlT#TpX)NHKOAbك؃mK=!>ޔr/OloI+Zv^TGAҵrzPaBهC/_HZO5sæIP6T&NF}w ȣe1)y`6ezGG; 3nVvo~uZci[n7q4݀)U=*Rzv6׽̅wcJFX2%G[C-W` Q/rn.CZ/w u>!>٭X^QlJ+~0_\VtEkٛd5y\`0|6N,C׈ͿvG"bA` GL2B1=97Q5v\֬ QM"I'HvZ7{JzA*nETC dZocMl`.Zp-b,kU\D2%_*W>%:wU^o!ZC̮vkkӠ"-U>ퟧ[Z+eKڨzچntQq@*JTm- 8,IjX=;17&G$WH8'iqک;DZll;VI(ZVm&`Cfl.X b@j=]LAYnNĀ Bp{HuTXKR lTn2ŒKK4Hys^[!RcDl ů;//$c XA<Ԏw7w"I'P/"}1ysOB Jxʍp Vu+7]rK$Ư!jHkI;(tt!ycS):ރT=MT}&OsrW0|mqӞp] pOAYIAC#H(7BSz@ Gcs_!Ud MS-iAřZAGD|+} p+tq[xV./qO}ƊO r{ z'.a<{%Yg>+:d <ӄ5F=]ŲiD x8zj:M2v3^NRz%>=񉹧|rvz2P_^GZLACq=7r$CqJ; =|{ˤ`a(%}?p͂ !Hʽ`Z&zD ԩR-Wl0d!U쳀cHo6pǓ7PMK+cj}-U5 E'g?8f͢D[ƦDs w w -94"Cs-mkM/ Fv9ĢCq'P^ǤAw2_GqQgۙL7cC|"U-S q3wBԙBUm{R#(8ǥE +=8$iZ7YBp@ݸEMLACZjδӚ9!6B+ ? :T-xg/ǟxRGd2P"ko [u( DdxnPP˝S_QNT;{$:pqP fէu|̖.W,,|D@y(O_"͛JaWE˲34+df{3H35&f-> mQڦ'3 .C|$[e7~ϷH/blj/&MoYjI6HSz9S/0k"-,jZlNʾf8m  w#S!ፖ.o1$魾k}p+D yd?k2Y%Sx r*li`Q]8W<z%ORGs*h9ttuӶMm=cznp8:^,6pg?ۮZڹTj:A]b92:wD y64lnt%CMY[WdƤ!u~IJӂNo]7KnQ Mx_p3dv%Z +SSyq杪Esf=0^C?8~r~M$;Kn[_ϺIY5Ǵ6]n9fB}eBur):;^ed>HZxx7Ydj:G;!ixFhOτ"`dHg[Go X;rZ\iIH 'W H KR_ {%Eb^I^I1VCNbm!l.qLWd>w ?4gG E$a?߅c`wqquc{YF!;Nn:SM KCUg.hXbI:R: ,{#븀(ub,upޫ$G|76]PsܼEW6Kli_aS|ZKIsRKH>3(v7b'ҝ fחKdQcvMwՕnB!YWƀ9sο~RGQhG9'γf=g;b{;"vc<]fyha\Rm$,bYL,bYloYc:+0y^ayi9DiŴR]%2&xKCmW3Vt)`cޥO~|8'w* ZĎ:&Qo(Co|n9ؔj% Y@io+>!(ڠ0;_QG|[肦pZ gߠ¾ZzN}/%O5-WtKc\ U X r;ttfk)oyZ rrZFFQNXVP|C|"2ĉX,]sDVPP:1 SD/6R)$ CI*Pk`2JILX C=ޗK9W5jrʕEDТ{w|r+1:#۲fg&|a/|_kRV{|^dǘx@V6e~X$)0B ي9l 2baayqˎ`_~yhMK-]lțlVo.mkIם/_&Կhsa""z4j:eWeZ':YDl1@6O +ej64`n7‚nzg x, C|$˜ q@{a*ԽKVrn؍bE7y@}^BEZmKݷVZl]ҍ$=D$C(e :c ^`Wlً<şs f +㏉&I c`zg=2u,=/['-D4D0hK/)@'8l͞+QlfÚ<Rw!e탛LGfMwO|Dz}l:sc7q4dp;bծmhu0P|HvnUvzd*R H3uv"Gz gHPi vz8'm_YccZXīоE7G8ħc80s <*c^@B;p` #ݿp`hqds qiK| ǑKJl Bo"FZjpitq!!#6uf뢶x@|} 뢣Oxin.6J%HG("$3Jw{33U_H[rޯ:HEGGq<.kНs -bQTߣ8 #^Frt/`n !-+.+Hˍ4ҷۈH/HJKzQbrv Ng-ݰ`.,:h֍%HΪHRҩpc^rKXIRop_g?1UjHLb*Tx"P&kU/xKGb'*PAOKݿYkKUC;|;a4礧}Դqv%uHc-\ ur56kٔ7Vt/ 8; +65>#өKj-R҆Pjy&4*;RxcSDZn%dC|,3'=E6zunՒ&޹5Ǣ}T S7hә2E:sE GX?NRDt}֖ ].F{pT]*I C|f2LEy\n S` ѮXLJV/A"AHrYII@._ B\n!q?ie^SUbEwt:ios uwAN\M).7.]P!>1kѩܙșTG1~KHM7!~ ">o#f28􄲌6}{ 2Wfq%$5$%(kD:!BZQZd .sH }jc Bc̊;ƈu RWn:xʒJP%lΧJ{pyҏ}M@ucR]@-*Re}fsV);seW$uy$M/"&"rlGY0-jS+A-ڢ5Ej$oZM`{'"+q@D*l^AV(6`jlTdvO~\gF$o!d4Z` +(S*&Z,V0:G^}=r^o|A+WJ %Z!(NojQ+#+~g˸Hg+1pq$vMKM!Q4x{Pu/RY=8` /H/p7QDp3PkĠPMhQzG7vk9 M AN"CVatu&QѮL!. VΌ rޕ[̈C>@i݈zz7{csYv/8#svpObxiFt"03_oFXR bG,A}!W &k)™oM [3vnTx&c4~)ٙV!+rA3ZD[' TMu8"m|tQbDn>Fr9z7=zO =EZn DԛrWUi |!>1JMկ39T(+j83ID7¦X>8^`]Khz)bD*Jk)lTe'.@PzI8ټDk&Y2NԊX,I N(wPjO"9rwOHvf,s+3 @y45a-|?zDŻT1ƧG)(>9={nk__ s9r/W ZʮLYz!m|zf~q_2$O?LPILH>= Sq͘z. rƍfG=az!q$Ok1M'6տfia ul0m7^iGKcymnzoI fzt\"lO}$}DO<1&wIW; lVi7bįEN1`tA#̸L\sf9ìbXrO"ܱ6o9l9ϰ#eH-t0O+8@4ado-g!OSAMSm?ӏ nS- (fo~N=x9~Qs'3(o#[r>"97ۈK^s3u.kM r>A w9Pӑ0NGd9}ܽk#Z5Vt6AQD\^"Ie/_ ~L<ڂIHq,lM9~\rn};TC_##-0)A#}2 th? ִ7fg_w]y676ɫ 7gY#X՝!S,ƣƺYy*5ð3dFJ*W˫2lOC s*2䭾k%jM V3td7ZŚ5OɴmSۆv0N#x滷IdJP-ui{jXjR᫪]G Y%-Ͱ([jddfww{/=T˜|4f|)WsCR{|r+1:rvMpK)7z˾Zs˳M:BSO,5F&I$Z2aԤun;tgKr/^!/K⮸X0nxyυeB[ >QvQ\C;e,Ye[ 6f2yw=HpXjJn`/ҽɋDϳa<8D<Ȅwɨek)JJ"{P!|V${[J.Ŏcu"Z^:Ġ-R$od,|ҋp!X}(<g";叝AK$<#)H=0l6!Hʃi>~47:JZZm'tkՄ@O7ALl q`6aӕ Av`wkѥ&H.!-ePBF\oQtz(^l*H1[Ε:- oܟ_t%H5l(WhBH,xH,x [B*B7p.w#̾ׯtyNF,3O~X琞ؐjsMzqOLud% 0=>^@qSvoX;F:Y7~pv\FbCi)K'.Ā*V[ SHOE/ QpKpwҙJdrЫ>,\1{.Q{G -L-Lϼ"κFVPai#l϶ ŪMO(~C|z[UCT9$=ZzM qM3`Yn1҈84{8 '/bNڒВie ܶP-[W/$ߠx!>qMVTdINŸ*Xsmᠥ`g8">DZ}~=4I6ajjk1`3rFtpCڸt5;9Wv!\sm9 x>0XO5O\)dr 7h<=HJq(9sraPCsuXkXӟ{}S_`3ՐOwn;7RJ <8oajH ܛT߃/sOD+Aݍ>tT :F :=N@w8GGs{5G|$[Q;S5K,>W$D\ۼK,eANջqwPՄ$tKW/jnȔy+8/͂ D_+খa;&1+p9ݴt7޵<5+nW=C\5/iG:}3<ːoC*3Pp21›MA0CrCo.7Y]:lj僦'fZ<K 3qP C|;J( "*֓[LCZ:0qG58.V{$VZc#S,3Z[Θ%~f1@n&n9NR_"r%zZrohAAθz̿r'T3lROlO =5Ӗ*_ML9l:v!fΈ8ܷgLWJ㼻i ,0J sfV}CKr->Y%@ˏYM B1N5Tf@B͕oap6mVuu@fvgk i9 䊸/Z&&wY&knYM\?_Ѫ4\SժI bc]3[0YuwL3Аg9_ŎhU."#TskC pQR\+L2UTeK?Guɾ/R-`]Mɟ@&n QZY`qRO2P;h,up65ۧ!>53 S.iY`C,klV* 0GͧDs礢tt έII/U`v-Gs?3aVW?:iCb|Yi Y2} *L8`KnX&(\9$b$:zdR3Y^G6}3, ٦.aA`bzC F :"-s3lҏyOڤ%Y մ9@0;C({dҘ a:Kk>6uZ%ol`s4_4 w %IE1Η51mdDzlxNZIIic4oJ%TuBbS^dS7%K%ؗSxC-DE9auKUvIм^҅Wpvhk-m ,WW[?f_|YJ^tM^נݟ0b*oWmixd[*nȗlLwn.1j?*o1mWK$j<:"l/*"!yG (\>GYW>;L!aVGozfYn Yc{ ʷ.RnypODͷE!3rS`C5\sr#F::?쮥wtiu}.ﯟB_p\27ک~TiM* to~W*Iȼ' r4K_zW~k2rʖ2122Hr+#*H4jֺ0BBNH.dkH^6PI!څxiF ,5$Gs <)MKaIWX ڗNBf:DEڤfỻ6d(חj(87pODE7hx "-zR-HaxbIW!}Mrd2u[ K4gE/`rN4&o1对 ag᮫mS6a5N9HR+q_(El GmYCr d`n !FѦ8xFE(&-oI%%6*B'VuW$&]+Wm{qwwCZ}xۂ{?j˺2KfuDg\+Q*^R/ڡ-s3)WcTܴf# 5#\5 UǸ;PZDKG@.CE>XnD?ȡ.o`4k=:yjaڴϰ:\M=`\H 4pL]zl]MG5u i(x{U8j*O8.Vy]m­&NDDY&% ls Zv c-*eB`B Y%Yvl ܤSZfa=oVɏܪ_BA8Wa7,Z6,0񂏔{s+>Wts;vkj.nlZt7z68H^w5*t.V wpf{N"Npt:f ##eX pW.b4 9#) E8C6evP_JYHCoU{y@z@חlxJyїF}[ 5jXHV\Q|!ɑ8"2E ׇ3r}OOzxGr1V7qfޥI]4߷NWb ? Ud'x<13 YKc;A3J\@ 5XQbcqբfP|j\(1á#|e84^j?͛ᛓL?C ElXLAӤ3U2 \I >.d kf62dtM k*u؀UZ"]~[os!{/n?+ZrާG7uM&qϽ hY t {J+\HH:ռlO%z`7VlE9(z2•]_C(kl@!:FԬ m2gfgvvZGl658m?=;7;;K^3n3626s_bfɞ\dS[i&3's\nxb)a0yذFS=KT}Y9.r$aLo'Iq*{7kZkCaB4d kvk)w7+ sŢ;-.觟Ø 1Tqɬ:7IG f*։\(-ZK]ͩMWEFQ[u\N~BWiɎuږፖWMÀfӸ-Iwn((v+D?IoZ am}T=G1oV^j?Պ+ncCr', }칞7Kau+S, _*qM-{nxfo;2~TJzT3%5f}O}%6&za]8;MD7GcGbt#_[akyLDw+GHxq8=>![ッ#m4idٷo/7>~k\v\9R瑉& -ͼym\Ѳzt5 Ș .5d3&џmv5Z;_7mĄljFQlGhf[xkշUo^]0Mx[M|՟*EAcQj<XI<ʵC|&/A.( х߻Tҍw!v"DZ*2H!a`}TQٔRd!c ߑ M%-9GU:G(M!>?ӏL AZNΛo!y.ʅCJBtW{7 өh-S4z+Vr 5Gi>uk)NT=ld$y;ɼp"r2s) 9 ֦pFN e6F c!md;)OE({B%-( Hc{l~;C*dhToJԭʎ)N'm%M6ǓMy#M+EMQ(zS0S$y7ABJK&ɧzdtzSVqToI [zK-RE4|ǕMp ;՛p[FԦ-7IhI7Fhw-&o7I>c}cJ&h|Nj|J⎤BS%STPzS0zKlToBS;*BzlSIrsSIVhzIl/qzKjoMJޒj-Rux#MUNO6i}!|ӖtXt8jjڢ&E7Vy;&̚ Ok3Y6n E" Mw6u |TT}|l7!*G cT=xQ _|:6n! 8"m083YbS7blbL#L,џT,V,v/d;RCc ͅhFtjqoj0u>{L`;~i`^iTB?0˫~%A(HZheΡ>FqXU7UCEC-HJemq^eDVyy쯣饠BPn;˦ pؔ0fV"uz~?Pv[zK#t1 axy@zBW\R D|mĕ*r01gS2 n)`qiբ (Ä0vp(:~~Tcv:p“xx#LaQ|dH¢9h\jH4ը%}),.߆La vVx LaV2ū]]Zxx2SXLa1p g$2E_FbN+mtOl1xLvs/SLaqObB65U׎(7A>LazC?vn'5&:_La"SqQj<XIG>8`K † A<8Eh50 8:8jA~60օx=Ւ(O(M9DYTᔂQ0jv%|Ph)jd60}69Tsl~4o4пwID~sirFiWd*Wٕ;tæ9ACn8a>P72 3oh?æɋgh?RX KJPA)c ,tiY@nH+ uJj e__{jbB0D$#rQZ]].v9jx:Q$R-ٸbɏJv:y@g8lƥ(9cZ0wY<˔C&& zscN11R5O|^2I6,Ϛ o,C|$%oF^|l),טU#7 ClHDz8ϦN i{#֍!FXXn,/6bP|HBQm*L0nPsM|v*.9x*ՒOy $׋x:ՒO+I KSB?`2`%_9Mx (q8ՒOP.CrT@9Ā<C?`p m%ϟ$I;o#};Bɜp+vq(~C|f)¤&<0u"Z%=EO{p]<بЎ1 H1@Az$\BEZ}á1qǥáЛ\<}Ѧ{뢶x@|}Q\@ZGb $!>Iq[xFi|I3UO"ӔRpޯ:H9xE>$sZA5@qG/ZA&7NS- Ui| ıTK>8s1 db41 d4zq2ՒR A.ՒR63e䃔P;AB"P& k5(ͫ@PAO|iWE-H!>>UY7F-:x:U;&{@>},j΁Q<*,fUKEγ#7/#gH'#Y"GZ~(9 _ò/~Ʌjy&CXs)UsP|HvH}a4E£jcq([lHK G>,$滇_$K O|(kR!(պrfسյ磪آ͋%}5?*Z~-`tkY]k1B0YvO n&@XHFS|Krj埪h9_!)fHxps#!Anr+0B;YH8CiCHD [d OTagHۮ/|ڸHTܔ&DGY "M) H_]$UP wsJMmG^^o!-- IMqOx{ʒ5<|i^o@'n`ߣVEAeIcJC<1A"S!-C2a,;þ41x{ O#^G,-_./#l(>x K44C\ԷW26THQݞ)s BiR7?C46QYDiSYmdɜ܍ a 5ױjL5wLlQ7]Lz>EV7VF ۨY*k>Y.C~= \DBZ-c\%M*%vo6v7df% $P|C|f&,fU- MTKiі+ \]EDz02Eە(bQT~#}?MWӼf͘-G ˷ĺ"BB@KG~k6l.Y~G)j! --;-S1qo ;ح|TaߠNݹgx$:NěHߌÝR#c2YOl1^OYrC_Ðw]Q{dP_+}<#*} hga"k-ΏYU"a! E\4Uϰ!]y݆_yA#L/ ~s Pl&Am -֝ Lk&Z)40H\tPg 1j{4{>lC/"}Qeo4@dHڢy\FB#o&įJtƔSȐ?@f}OaJx|郋CHEY)`&78zH"q(]&?Mc4׮f{7!U;\T~۔Ɏm{'YFi*Mc5VSu k$~rxx&d sOD=2lJ;x K⺒ĝԩ*X'ʬ~E3cJ_UTH\8? Dwc瑖ZivE[\Jv\03[![@x frܝ!~f7X#B"\={桪u4eU`U?Sx~DbvTy&M7:嫩)&{KaQ#:E֞Z}2Vb{ *T(Vp?V9MPCͦH*>/b/fejDl">Fq"f>'){eb s HĻeI\ %ypՇxk '"'͇:ϦnuCIDV ֦l&M P-Tt" ("w AmBp#@sp>Yo1#jS*&tڃ {N 26+%Jmzy \Ǧ9^ê&yӊ#5yq*@Rl,0ñZQ`9JO?cVQL >AZ}v\u;F` +HOP~Tq>bE!^@BD$)M2b؏t"33KSH ;1zgB^dwf$ž֞cqH?UfRTzky1 XYN,xsʂ5x<fpz9^N$.0{2k5!tuݣXOl 9ST'\i0g;k"ed˗*I3E. q;B0pgߖH:w  {D4I'z@?ΛWN5-Z6e5"mds3G'X-4ޒܷ)EM/QSi6~;^* &Csòhn{UEM&?7O]!1ix yTp׶p~ ^j*W#kdf>ܡ y ۽8#ܵ N!-s#n"C0 .D|#en6;W~nBhR:77݃&8`˦xgb% W- i]Q<:U}aB.ƱEvHKE.PmY%0U!uBpEUhx 7\` 5Ů=PAL#הG\YfB+^ѝ?r%'Yr7)1lͦr Bmk3|!v qw;.A:Yl: /^#πjOXoh#lEZ*0BFꍷ=>4z[bH%VXD6v=4?pwggo*%_ {I||CZ}7Sى]ȡo%nhEA8.LK]fRڦ0i0=ڱe@TXb&Kx8̟zSUK%f$+ՒfB j6W%BdK@+]Bca`6kd{dP-f3p;s` 5s@i|K2;lJc3HwLg u3G%@.SFDZvw_~H) F/у߰/RHve'N)oG|j 2VCʄ]Fa,2^){}[ldtn83eF9F grl3fij ~~Y* RtCߣ쿑XDlk*0l?h`60oG )۷+%I3CI[xjCȌ-af?,r(UfRֽz2f酴ay}%_e-6տfiO?L]l"^m6p)0H)HVkM Kt[Yqs1){ʧi߃~Ԍ|F.P5doXi8YNe|_ [L~%/qws uNQ3 Ze7Ij8dA~qX @t.S[LL>&O'r)r|8f1f]2llmMe_`s{qm~cjՅ;J5|B(c>F wXلe]JH(An\غM ۡe6ʗhvlOL?*!d+> Dz}lr2t>ժ dGdLV>"3#eL\>a>FZҔE?"c>Ym}m角Ygd P-.,ʪ?B*v/{E"2=s(C|$؀=) +>*?V*-ҭκ!:_^!'FmNJ[^ 2|x44 |![d{F,jF_g ɐͨ*/6=^;~s .u~Ur:K?fYlʁ %xڨKA=mrE&mڶd^ZfZH^ >0~|'ۜQb4|ǔuc8:=&K;"<^ţ_ QҪNY3 y˿6`zZ0KbmzUbͼ&:Y''' rp~,7 u{ptp4718>58<*;{Ufuc>UN[pN Gd&78{rh5MbL{![XdXݬ 5-Ewn^Ob/U'&џ=]2~NdtG)Zג]oNOw3QBX cWh] fOǎ^wh] ;F 7eiM_t_yrѬ2OX~Zu.%}X7R0y0^ȷt,]ㄪm{nL{)oz ?"3U2Mn:KCa'bMWNQ;,T%jw/CZ\ ӥ5սXu dQX" aj;ںI-9H_R2d*&:kXOUJ^U!Oj9&yeڶ3<XsfvTH|p](S22qkD"oJM[p:U*kp[ y͉[;-1ðƌʚԬS'nkf<Ά;͊j 35C_]}zYÛ;m`eόVc|0BnM}~#9E6G6_MX+58S5LYwJj۪AߩΜMò!Op],<6s#;yN+[]]!OURLyac&Waswol [mx]Wէ% Eʦ̼1:~km\ ~pnvv [{L&Yz#+%6aaX1Kћ(lc##a$u]8 Q<̜dc[ oiP)\algpwASʦtnbN 3ь ;G4E~ѦwuYN7}YM/5ߗ^xq'°5y}fi2Q|@GFn>wΖj|Ŕt~Z1ӆtDW6u1#qDrwVL[ybӽMc {Bms4BK_z.!~_V;c5lh߼58ݞ\>ʹቡ׳og0n]Qzph9zQ̛\|jWU#Dh:։l(5b07k7U4-<[Ȫk^k^#5'ڢRmm'Na+RG8'&=dib [?AG\)O,upߣ߰C|c~ 2?ĆD3¡s"gQ3Hl<8ozigN8Yo ) :a:%H3dԪNѴBz(?N)cxJRNT=lX<}鑿]\פyJn)WsC -VrctL QmuCZ!7zዾZSrǛ!sſB pjc6֨12I ݕt>(jF!Lg^,,>NqrrH-7 b}i^&qv6e׬7e3agפGm;Z?:/\ؔJFmg\WWkb;WZ':Y>r/&gWlidW!JsC52(2`2­q\";!}LկւQǑ>h3D 8RmX%kAK=(= EI6PIH6dlAPHdv)5^TVYX:^`t‚8GRXe'4%>(6˦,oR>ecS qud_Yu&9H&(E/*nG"!~H_L.} 1ǒqǕ1 #%-TH!NPmI')Rmۤ\eCJh͚wH3ؚvVpo~%[%-.U ZRҩ}ϔ+nJ|:r 534(VB-њ"~\*dCIL\l!JHC>3_ꮭكI'b}N qC|֨%10C`> x KmˈW ^EL#xf^BҌ5%_E;09*}?!x ?Tm=Y?!JgRQDIEy AxDYX^`Ai=~zkg4M!!;.u"-IEУ(0BYs~N!^DZj/6vGZjVAKrHPkHK 6&# ~![/X}R[dZ_`7 o}zzHك8-c6z9ħ8JⷼP\yϷB $) ^DnFY_"2~{yB!>~fAOXm۩M P|Hv.UvNz_Rh|h)j`˂u6={h3P+{O|ܽxIfV q!@Ft _U4ݒ$RL A1$$s>#~W2'#Lj/~hBZ}S/"BUd߷ɤž1=jwp6굜ùd).&O>ש8Ա9ԩZn894'=Y,S*g[hiܰsnp:En" r~CZ'!~%ݰ̰K;~DU?DSC]7+##U>L8Sh˴o)XwOE).*Z]6_Xqvi;H >KI񖁅Fi#nLAx | e_ϐ/2۩:Ⱦ e{Jݟq,v?)NCB:a4?L?BȑУ_& O<HG6<\*P;ozs |Ja7> V> \->—.8QT;ȣof'nA+WJ yO`F^#vZi5 (;HOತk˥23߱_yqTOak#$CV$A~dVdt4VX8.يr~dkr vl RP-6}o' ҃<ZMxjR0y Qfܹ2W r 82v] )VP(`2ӝctk`@В\|p~ӳ%#vZ/`qE P|jCw(; CQreRu/1zOkS>OJ0/xQ4zw؞V57=C2,,3W4 #C0`hA1:~s .5$YԲEbm'ΊK,[Μ7iybem}UDŽhy7GVj/އ~xaD0gYdZEzT%L<@B=r{b#$ @<8$#vdV>, i^;9,l~Bx2)2pgdW,I?z(kN5c aw!>r:-esTTlbvGztuIwO 0Y h\e2xwc+j 82Rѻ9G ^Jp^E32_ޝh^р$zhw'%(~݊9LCa_]N8|HK5ph VQC|"΁m~Ҍwrٗ>⏓\ԓQH.s~{p+V)Z?n67]xʓpZV'JҏZޕjߥ,հ|II_I.;]bL5 QZY~Ow ⮔(Nd1wqشe ǽ-CKC^ Rac^憣vo27̤%b0FD& I֭N_jӐ@eJt"$b>gh8AKQSZ!׿FrWA<Ȅ6jVb8]ZIB0Hg#BFzXZ.C+9QGYp(vzH&[*3zH-J/|O܈7 5oc\U<$! 'ơII#>OjHmQ%\M6•SQ}'B> |IDjIm` TKjFqoTKjQ\> | ıTKj8s1 Ib81 I8mĀ&ujb@jI.ۘڄ$DBHm}Cȧ6NR5_+6 IR( Jlpz1Ηp{ ߉x8UKt"9ej=J$:xiy(:.//"-5sO#ݯݵ8fx;@2#7d2%0JPei2`o#>CZ}<=܉=I< 6$mQ'o6@2&" BؾPxU+)ԶAN8Mɒ,󽻃)9lE@FfuB/!})~݂N#^FZn{ ҙz|XEt(nCL5XO gy1ҏemC>Yp^PȄ܅ȅFJzEu4td'T-=M:N%}k; X*mr2"h&-*cۧ^N^.bC@»[Pz֏n*J&W3` ф1Yg>6%l'Pŭ\P܉T=O҉Tghv̄j%(gHoGt Ϝ_PPOeO ~`l?.kP|j>UvCzQl~s>hcA>Pm!-fbvxi)g»x5bOϑ~~Ӡr U:g:lF$H5;xiL!-X ,-M/ye<6q (1ZLpؔ1URYBme'쟞ę%}FPiLꉵǬ#{JTu&c48hHe{ G_ѻl9b 4vq ȍ4[6K1<=u)K(bJbXamI̓3es<+2M^Zlr]ɐWdzMk yMf뚷 O,+{Hɪf;-6)3ekA5(dXMOeUR7I]#*uxe987;;K^!:61 2nnXk̘J D'6牍Wrn0idG}{{dp07q>,G,7<1462:9%;)W/p39ldB h7 tڬɥFf-HTL mtϥmv5WxXR0<:88Y6%<|]#}=fDԤ[QEARH=⣨- Q%"clh@H&!kԟ=_B?έ~` RɃǛfHqvq[b-.H_JVd(ilZU,y$`k5Gi>$jd6,_R.skOr)WsC -VrctL QmuM)M ?&\!A-?e~X$)nGZ[ak.x/?x2{ +K#ag_vyn>֛ 8sfO۳&O:;_x5Mѩn }q}Q5yhF=jWs&Dl3@ %g^!/KT3vD7"hvQ\7;UH_UfWՠk#Fna\ls1l'bo%I Y-BC/y|ħ2cم؇TL~ bO/d[CI(PaH(3ӕ gX0Zh=׊ll 0 6pfL^)CP "4Byߋ2 b _n ƩXPI:įb<6jkkAC?fMI }Xmv'#Bu) ;Pܛ%DduM¡D3{Mvp} 9x S.uB@q>ܕ$g!}.2gyeAs1t6#/#!a )=; !"=BCeylYeA+Q !E2ko-=?o a2Ax=ŀ*0WP$$$LmR][Q'b}cx[1( G|".GaŋHKFخHa/!^FrRzr{9wϺnHO^40Avӈ M֗[}E$>>dxw6L5Jv{xi#} ʿH&IY^("r# 9.X]`2K_ou{:WH9'i6܎1Z.Z;ډ؛R8}vگjxF{؍ I!uB1G/"C/s #^FZ~۲s%'%cH%#+H+ F|Do"B\Rb#"zqiMqݫFSdrvȊpfwHO@tvVpQ,սR֍'wY)JS̨btNh0ily)VB-њpZ5_|O  6_:˝'=Qr(Yl/큳tA`Չ~Bxlpe <3G=SP\/btG|z^X{2K^QJzQEM wFh=a&v${HKoC_rOl1%#݅gZ.X)`0.cx?0tbH@qGW.->&^AޯFX ص_"2!>~f$aIJ(5!>O]F{z_k5 GID(Ws i(R{jj&7r(:He v.#7Wnzx֍JU8!-(=5xd;(ndFHxoaƜL&a-v}kp#d{ RMB>C֍hl v;6]TL &E'E<-?FK Ou؁~凝NC) neh4!>pt;YRTK(z׉x SʂnJ[wT$xqQH%WHG!".",)qzӛz&h(뚥o i*4gԿ\ԸA_![mrm!h0Zv3nlˆIѵz#}>Nu"^Hs7qڥQ]PY>2uؔUB;ܭ灹!q{h Ɉ{D4UeWYa \".%RI+42EV---՟Ø Lڈ,џ4?C?SXYܑA7PY6@AY<ߝC* oD58 tE)[G|ҕP>r>F`R$źHd7KS/X anˌ ǀsVkE?ѴݖV̧G3Xr 䒱'ޔ\+xPHr5jg"lj8;"|WE]I\ &HRJ0NY `>~^FyF`x3{Sl O!HAl?C %e v oLc>Jk@`KZ2/GvՖ+-Dف2=*ܑV*-ҭ!:U^]zڤ])@GF9xOJp^^u"t65̴aP➋gSp@+IXf]\]͐;rwD-:ӞӖ%=ex^S/9) 1v2WJlK+wXI5ۮ*n/) Ҍdt%JҴ:*> rԎ O7cX^@F~hxvf뫲TO6]f͑6ӓ3 `Yl;C[zǨowܵ|C40GRO-Q^;7H'hٚg RsL+YT+, ހ V~.Up,&Y>KS K0ރxiR-܉9D$!|*CWBѸ眅CHET[-諫R 9ϓQخ)dZ廈3HD7_ "UF|6WH/Fnzt6v2=s-2k)뷈N2 t5I!>վkɦT+f<tI5F xbRozd~٤UJ]iѳMJM5IK5 V7j#gڕjTݨS rI\s2˥MJ&[mLXnjTQ&ҩF C|"Jc:ZiYR4|cHK@4|HO^4P H4SJҮH{l_=Qc5#M/U8:l K돠QW>>#)(@I6v3&ӒS˄K*jn+'kRCFS<.:7¡E:.5 $;/aܫHKMRK/{R)~%y$.DA)ue5\䞿gFVz{ gs¬qDb tc,7,H*J(yG@ MAHE@h|/ 9&.aàW2Q9j$oykKv%4$T=xS]E($.#Z)TK]i#/#!TK]ABJ$%b1 d#Đ@C|jI+I(.=Pi[pb'H~'9'i6 If~}#DEi2vow ί#FZzj͗S\}]]S^ 3=la# Ɇp1`Ln&Ψd F+ej28MzIoUg4]??"o/hڃǮHZϬE9{g9& a i ( ;d6dWaFW5( 5;pң!^AZh 1CP\"Bs(WKC&J2 +բ0DŞMBQ'1?P2/+=JCqDMc5SE;u&=E~MbB1Ƞ`RrCZ{t]%E];KZì`Ȟ${OEJ6pZkQ,wATv ۨ fptNup d_:$F= %A!R4.< tęIz*JMJ4HiMpL awL_ɗp^}Y3K2(}Ia^r}FQ √'8 <=j$H^ -m{^Pym/@D12NG`H[zhtY,5u8{J'bc_Q X^Fa+ Jm[4 ECm@~dT){+BlEPE|śUy[x,Y~֓q*p ܉>uzdTo2lbvŬgޞ;U`v<]-{w!++.0^PVJ+:}ΎGWr_>~o6's"?Qfݦ|+^ U"Qz E #nI Qfx"G^ePsވqS\ͽ'nOLQEofVBixC<󖖀(gP|=G3Fݨ}b}w a[bŽaoZa .Lq-s/qǜ,;Fl0U,/ 2p9ϕyBvB%[F~;iH4S:7?Z"57PVK ب~c*z6g*UkLz;(9?]] jQ@#%?pUHPz#좔l8q |]B:kwRy?gr:U֗ܝo x:qռ+\t67y1{ .S=WmgTb\oG>Hݐ[Dx. 77N?&Mn~4_5I!=w@hP'y@|LL82!ebħfB C|nB+;S*UL=gm!| [~ws(-qi{(|K"Kw#wfP2Μ憪,]%C:{5ճez3JVoG+ZO7eÙL<+sk~+v{dj26[l" ׆ġHOdQ6ϡ灇hQf,Z{Ag{m<@he,=i)y|=gvQ < [xS/`),苸{qƅOVX܀hzﰢD]߰*kܿ +^wڕ*1SL#qV! ,*K6$V6߆RȢ 8^JQتf+u[+~yKx2Q3cs} +Fj7ƾFd:`T#2ŕDls}J@/.ʝq! j?RSԚOf$#F8vO%߆(S hPt o⮵ÄZ i;rs8kqt k~pNyk. E"WmL. '}^aƒGZХSXk\|~IIuP\"x)>ɑ[.H+r!϶oK= W`*ME H]4im0spL4<~?FA 2?V3p?yhPѿ _ӫ[y뫦Az2N_G~#QIZn& 1*/$_;=#x-nT1K gueaw͘IjPwᄤx9t1.d-kYa#*-g6ri㭟ԀwjnW_+(Sk\MhGh|O\O6{w”.=EsMp" .61VE?ƨ|YP/MIQE`|u՚$06|7`\16G߸:]-tSF:׫8g0XAr#J.+z*ԛHM7#e[E|v ucڈ ?o_ȃD@;b 3dt a䮻wi gC|4,:sKzZӫaX8Aʟc2}.ӊu!nwAO.}YTtlT}ƌXk]*%g>OtY67 tAf? |cԟx] ;$_RDz,/VxpUiEC/ʷ:OA]_XɻpYiEPJM璅/_x`qSHnʐ%da H9g8쒌Bl-+vn-(=ae|{ޘ"Aǽ}%C60]2 ƼmL *fܲc\?t t%5hBAX.p.{; dC̛T 0[#`Y=U *gIڇ^{ hK@A|6Lk LG(WN˾aQۚ?VvF>7Bpo kYF.vyH<(F}O<f 1?PuvP~^rWz۟.5Rys<٪w>Xl^ HaYl@208mK# 9VL?`IAw-qUW\ hlԬ5,`F;ޞ6C-Eˑ-Gv.=Qjfe~f <2/<(8arϵXCvTkw®fqjUU`kXqEFMc)`3u a?E YJFuqG bB6tM؝V.K@Xw{b+wԆ֒ȋT,7O[hx Ok)s8: L옝'C~ *ɐc_&f)\^_HB<ܕҁb/JHJLw=^lj0]YRӜly  |T}Ŋ-]534ce(/V"!7>]xe]GuPAzңSycqːES#gcb@0]Z#hjъ~ƍ/B`4-쐊Oyu $[P܂{X$Fe]0@7CYJAM@e7DrAcVU]OШa7NcD|eq[52j*]ҪTޜV; dfOW&ۆ/!Lԯ8ʘ`e>R0< 4k{[.=!}XTG<ȃ(<]vJ&;q ]f76үq%/i>hm0sFsu|tahj#1s߬k8L^B-y pW>n$}lfٴA^ws]_%0NKx`S : y!# 7!NM C .7.չB1" GRN(Ck:Y4ږ̀O}^?ʖ~;XP8g+G _H~io+*iXv@LWJWpM"RBI,v̀P =<YnvF0lH:[㰖^es}di.9&5-?(|hJ?N-<0A#` 4ΉrV dnP=]3L`1;|"#An,J-'z? Hx U=^EBpZˤVC=*5GȧlJHiv#Q&}2~ qF}_(91ꭟz/(XT7nYnrnz[TBcߞK8u] y$I?>5Z X(mF= GU{{ƾt+a9c^G0O^{oc)q2kQzQ QS\0; u4W89lOkXD;ɂ~FG:kHE+$\s ;* y2vהdEzb~4 'nO7 KBNdOZ$SIVUnP}[i#Gmdǵu6Hc.cQRŭYtkH)>J 4nWh.X(,:l$H T_#*g;:^.tYa /8'zgjY`7,GC^.x&UlrFG|O~gcf1`"0i^`,{ ,,n*`nR/k'%HjVKAb[ 89y`~b7I-(QDLY2/E{\{tL%a 9: Y؊Nh5/iI0..P%҂ɽ9^ 1JI ZFfU+f7GL}l[wwINM+JszNcwՇq .͌gON+-==dT?+v&D+emg12dLȿ9zbTDY <-ٟjVo}>1)?pT"bkTǐ.u:=W1!x˙+:xfNJ%sOFM( ,GߍaPLeM繆 b`-vt p;:V!ѥ>@9\)9\)#Jasm\Iw?;J&IM~& g4fLqJw Tukzeo|(Wr*e$]Gdl1 G @U1#No1N V#Tۉgw>ZpjA<_⚜G)tGhי2/͹a(6x)J;\52 Iﲗ!+ r{e'"o7 e<ܐf*%X 5uӉ/fS `CM4Mku'Fjy4}hIv:rX90,& Wi(@#]‹i\ 纣n#50{  B8výkSn~T"+Aq's~6Nx? w몲7tT+7CHKW&'Ll+mGK(MB?"þo pir8J‹2Mʹ&mFS 4_x%/ji {q5rXR iޚs2K`Ywi>M5seH}26f@_ۤE`.LxJt#KtWgbH6 DsD=χX_LuZw <{mJy-&Si!Q{S.uG8 l5—_mzdOߊƲ-W숸ɗ;[](^ՌNZܴܰ_=B 7wi)>NW>xRPڨ([W z:2 KZRV;[l$Iݲ_3?Q.]*n .O?!dltzэrY;u9%*TzEn$-FYCt$_ |c9NZyq0pw_>YrzV2},%Kf#NVk5}' 45R4&ƆKS 5֭JAFWKX$$}Tv|[R ˑD)ff<<{g\ 7-rޱqq5/]̎=-tC.;յ;~y[;Vt㩒򌀳wVZDԭ7ƈ$R2Lgk˔Қ.%"72XTiە/ځV`=U5ee~%V"UFOPH&PN,k:;aὄU֓JN|"ߜ` 1mE'Z!ȓqPE)u"k} Wf"b)^ KuԶe.7kT,կ*瘫lvӲͧ\P3, >Ӷ._R]5O&տfhȥ B 96ÎdkIR /ڔp͉|G242Pv;&>dVegQEL>k.xc^dL^|nXֆ%iuSF7)`3%_,:N&avs@7քQ*ȧI=SƚtrN9? fĮ}Bsùl!CyXF.",xylRqRa ,O7I8z[{X}_H"x?s!bqoš)eu̓| {%2ȟ\m ζԧ?ܟtb"UY7؄/5T/>HloV t W]Zu@a=bTg)2†.un8!{Jj50Aq6 YˏثT`oE6c9lDw|<42k^ }J[)~hy~Lb+yS/ d.\=}86;U]T4@ɡW5Dc# >p "At0afRoCl~w!gg1l(YsB s䬼T`2qLoL܌q}ܭ>7{.i%f=#Ty،nlk:4sO?vvO> ^"k³lE?nkz!)o\bJ:<83dG,E+E|`CJ65"""f_vh>~5٧o%d5<-2csF| P'hD@`$pQՎ,s倝2;D"ƯǮMk؂}Jl)w ]:|pc{䳥lfwB >f`!bqfXLh3>N.ttGD;ηpw h]E-`Ȣ6k%Gȇo-HFM7Mxk  Og)ka[Dž<, eGRXWyy9Xɹg{UҐ6?)3Y6{oQ%No R_=DⅳQPPpu\kغuc,}V㽷DmV{}XN /ggVV q'5Cbh?Awu> .#$2ӉٞF`B7LRZtAz\E/lw;BN#]<;en m!6Y>|gpN'0:,אw_m4X sYQ5Omxj&0 ^ =}6H8jJ]s#lS8e1UZC.͈L=滖wKMVߋD/69BVh+ ==ζ1SѣWp@kakJ" )΋ܝFy$PY}Ua,khT|=6R7uہX3wDX/q4/$TAP55#S!&G_ijQrB(&^%g=<qCt 139gKaI4G yuRg݂m8A"ĈB Yn~qէX{aZ*?{yW]}L#q'hI\<{U,)Eb/j= o {6߈_^pLCŪ4:+OCkucL+R zz{4 l4?hFB(2O\Zy|JpN⹞m j,AJ́p熺!5Dw 1@mU}ŋ)ΑJ}CW&sjjr.(POJ}L6( b$UT}`ˏc?KpP ԸTa's\` \oi_֦̭N<@"D^M".hM D9q֡WnZq*nJϕj QaOr .r"Td(xRm0/W@A4 JǦA. n~ٰeEa'0#|^[BJޯAop^GLQToQ S:rW939kevjui\FqɒzC, Y nZvioF\ [1>,ף/!ed*iozUϜ-wIxAUs6;dЀkMwݤCBE)4ZOsԍ'BM#KX( &ė/x,444 =vd+d@Q>cS?> m7+U5Uk@ / ˃BW x hSecxj$AԉVfm_osE5+, 3&}/>SO7n"/U=djW;VF3#!±iZkǜ8,zv]DHs3l24hjW _ܵ61t aIld: bgB yUR)&rky>t{\ʼn sȄ$) 12xTL1蚹Rp \0PƗcajCI-fCY)>Ȏ\<ٚ\k50F~[#߯ر2Z=x$PaݰGKt1ͱK fi{+Kٯ+f;FV|j~(g7H{ƻM1Soۉ6 $=*FX y1<^ >Į9۪k;j?aP H 'I^W% X#6I$8XIEr`K5]ud ?JI={ -x&h9w=jipF;p<,C2qN`䫯C M˩}yayS˞sm î[̕]Js SQb{;ӳk Xh9g <[a ̌kVqWmk]Z轴in]<l_ vպ6) '3 ~><0"]. \(.[b 0rEdV0pJ1~9Vbo}( Kt B+kmKd{M-MzMT3ݗ+PROɃY&Y/Zk=؞%! oژ$ٍd^ڛvd?UΌY^_U"'xsMؐ GIzSEm-"9z++VdEc}&IdZ~UIR+TұnZߙq(`]lu/:00'4qn󯌎toi(޲,/H}Vth'I}VR?8Dcƞ9|pE䧢'5 -2f~A&,kVm|v ŠF9\d̪ŷBo;o-()T$Grn8o+0i\y. z_򔋾UL*ܕ[)>Q|}'*1LIa_ ^_A6a; s48:k]kPPu4o0.]{L48Q])_vo3T@> G0"W5wH] qO~NCYT~FK !(o| HigI+/2-p$,f_uUakϙZْɈ "RI%37jH/E55dPOEԣUo :֨'JT5nn6F2CquJ3ڍ7#ʌ .A7LϛW`NfZ]5p~%.rWΉP `ٕ^NZ+,%&#gU׵TmlvT#एqt28_;&'Ii'A9/8R3uݹAKpj6LqlV;-d҄CX|3sg(L,v3pRf;PNbˏ9V&8qɷ!Ԃ5>=| aI޻ W=߱na N2:ZBNħw9Gk.LS)_' _M:bTT\8ei]uzkD2~fPկ3pkgol$/奤`Yz!|jI |0T I2~%2ɧqv>`3ęKMC{ u.s|0j+!|8Pd^9ti)?9:seuą%.m@ gi֐1|C%Rf\̙2Csa3zX,JÜfʱ=rOT G-ezrpSuSU~T1Zz)hs(]9u!ښs\p Z$ L! 7߆ ,M'#xEͯmݗ/rUP]WaߌDO4f'rSa8d!s(d% Xs#`9鈲v7sxw,JH]KDV4&Ԯ WN(*wk~UϙK\ h%z I7,oL9$uH#]o<~o>qRgÞdv 3|-m}WCWi_b \F 3P@KSQ4=F_ hDn taAtOĿ,8/˭c|ݏ 쳖#=Tl m<]a}? Qr]竕jD]Kߤxz)ѸGA*HxP!+`<,ysJfZh@G3UtwҰr!D. m}JZp@WgWh|_AB3ڈ\~Yr՝XJ Ž?Li6zy[q4I֬ߠEW5aä @Ʌm}lӣ®e y #@蕌IE@zo,@xA+Dw>i(׬dҰ.bLTh;"jÃ>պTa(+gI [ZmlItt xÛ.cB/y}kϒdG?7ld RF`j7Ms^y Yz(a9~ޗmd X4Uw!ip,nt!$ڇ \bBBhj4gBC81R3l:VfS;!NN՜ *[Fqn ei1_G; rՒ^:`B#-"64,:)2 /"^ZZT 鰹?MӾMiԎ R W]6 {dC÷'>8scCm_(=y"d6< 5g3=o5)_{Q۔2MUp^MpsA۬G kClr3m0;*#_x:ե| 39 P/xN)D\t˜-]Vx MY_VFj˅?$;\e{ (.D5x@⇇vW\-. F#򞻫stϑG:Swx{<0ޅPM2s`FtKG9 { M$boScT^ƽNIy5dL'}VA)&.XA)!缁D lsC4*Ϛw"o:>M7ٛxlM椈9MK5CrUxy:msK=%L-X!CSZ睐n셷S5M'[a WY{|ڣDs@Eމ )]AWilT#~*S v $O5B4OҸR\r+Qq_ע`4)CFԕ\T]PqYElSW@Y1M 45OT)`1iML{өsƐd[i{f o2洈/W9M\xoӍ?P1}dstf\ 3O~5q϶(Q 3RFϹ3wEd@Ʃ^@֏ή!u1K f9~+&9&4[WKfv2vX%tY\>oFk]4閚sEWYx̴XgH:hj A/qQu1:P\N ؗ!(\p`="WʷD8/{S*^LW#TQ?R-eڰ鉚)v}rJbj)h뒋 YbZ{, Ny#E)7{EJi3D1n@,h6}'2)$,yȉg|#N(qΘB=s1R;FSog!h,FJػ( Ż-C YABX=գyQGV:\4y$WB ]|!qxƋ/k78h5~@B)Ʉs:Ԍ>>*Үg>ےh+)q*+@2Poi 24aK:9;b6lڣ!{ܻxyEhvGGF8&\2x:H (M#s'|G4AQb_XcV`z⁔ ( D}KTa̛ E &ǤuX&kyK}?B3SƩ4}} hg$b:))X4HmYXm5-Yp1|[ݕOfwN㔀m:z)"Ȋ9U-$`G'B) :ZJBɼHiG!D$ݩn$\f3r 0> Ӧu$LAa_=$1Jf-`6jHB6YN,5inٗ1{=`5xs63¥Nz)O1A"k`UE5O9K*FRx~ iHXav%;u16O&WNG sơlsK/5"#) !^dFnQJ} 3]q3dCqurϢ>ka~Mc g(̸uD)M݂~|/J u6 㼸;4TѦu0e  .j$e9PHndQSF[ѐo峙pN\,W:'PD\ Ҙ^2šzJt"x5. q/'ُ^N-nUL{U{B6ӺT<;WѦ1[/~ g:EHľ<)* @yA8h t" |ÚnZnh '/٠Wئ&W:oCv Au߱xt܊q}Q#2>tBq*F6Bw"-@QnP2CD-%pagbf^Ӄ%}WyaǫyLdetIXo5e VX`_Lq\,ttP.;-53QԊA_;ȲPbbҽ5MkR,'yȫɠ5}t BnOف"\k%U#m;B@+iUMU&uqI w (gFjcc-!b N "jM8Z-6 ?]r΋Lk^%/U58߆ڤ$k3,tsYO?@u60aWUOA- "!;IYLRfbVسf3~2Sr&k}w%% nċ#>CX)ca'iDڎ`35pFD y4^5t՚ ֳ[R!Gzצ>o9mR/EbtTi (CIC8H<Fs$SUo 9,b 4cR>! fJ8,vF )Us \7U @WA%έ $ЈB%ϙceI}5P.#0 '‹ ;esSD'{R;YV'wL8MT's2 *p1ʆoa14B9}*z蹔TAU&'Rb,lp[esn;ɦfG-$prDܤrP.pƿ@ӞVk l\_ *GAT( P݇Ԇb/!"g=b\ \7OJÐNO+@݆.Y}>лTh= 8/ß1dƸXWؗҒ#`-ª6W=#yro7apSb3MJ|M~8rS\;BTJzvVm?CWge!mj3}'|$DtG(q#6yc`-k SMO{[AG~XrP+0Xn0nw}Iݙw40V[nRhoҤ>yAuhV>"ȧ0(3!ũ,DuZJ_Ajˡ{q@`0Srۭ; l 7 'L5r1+ MO]Ovpۜ3?JΑIZMd$Zz8LџI3Nݙ#ѐH`7d9/4GނM ljKHsTꝡlLo;yڬZX}ѺƩfdxT”]N!*"aZJT2>-sfC;%pgܞVU:zp b"N6ꯋ%kX{ ,Br1Qx`Z;@ p._ gQL),ge-7C &͝hH}#OJWSG/ pj*Nl.|T&ӞY-lnyR#k ᔾiw4:&Od@DmΨ"H(!hunI]s̶.٦$_d UcSU/eV ƨd|;X{ӤcȜ3іxvb tzF2t@n[LYn$r7O l.Kw dOn[do2[3Qzz4Mٗ 2VR%lkV(( W̢ +G)0J3͸ ?`2. - ʭ 2$\ا_{41~`r3Yz<ꪹc_!V2Ajژ+?$n8JVC+FP E*%؂ r)iG*Xmm5D˘cAV+xA}t2QA1iq!v펖Mž7$h"+c˜QсldK^;~0r?,Lț5Y)ȲD):vcP ODK`$5:H˨n\eet҇oCݺ gz7;~(=Ipd{gIUk#rLڬS;'*Cz4`RQha' ^sI"dQ pyhɨEE~_,w~~M'(.ʬmRR}$#D~[Pf{fNcjzMG.1&A{IiaJYla9D"^gH-Q¡?0_䮰Ai͢Mbg1SӰC{I'`|5w'p8[XMBXw2C\8?Jay1eA$7xXod5 2U'dw>9$E?"[Ɲ%ݞW2vs;Ci0nz 'Q:5l{[cjUE\/۷T% OXxgK2( Ճh'kRyy0'zr+DZWRx'8pG3a4VK>{œاϱ 71YOhUhKn!,2Y=k:O@sQuxj&⤺*] vō|lyIFy?:=XN"(Ӕ"36^0}NWEFyXR5A@bA28%h2M W6?c]ЁJM_%ױ:P˙> 3#CYWxUMȮaNaVgoKAd23b*;]@ r*)QurvWy_oR2 # ';85e[=YDc n"V~u|LW!"bm_2ӚK`b^ 7Od$bg , >]ŅjVq \IU\?$`3+]۬:XUc9]`W61 QȄ)̀/_gm$G@Nnxn8$LO/bCOV)Z*E; G6gZS̰xV* (¢IH `O?5O5ͦH^X\)@/>DIǜvK慸Exv}de<G;ke89!M{p'3|5)02#푉k@K8 q&;\rͪ ueT= Cs`}cO8kתƆVj'Xg$B7lbmgAnxk'y(0/|pձ@%;#īS5N44|s3nW-_笕Emv$A&ǯd_<̀K*iĉD3ԣ %h~vqBxdL8ƈ823] JsSv22 D7m|a)=60J}aHԐɄ> 9ֶTc_[j(<j=JLzu}.f"C ^O*F}<7)BhSb5":\i 4 MT l7cOOǠ[l)R/\T`r%=8B0cD{QecdŒ]P9wXX'mzNVoG(g/ 3v4`u|N^Iɓ#[*8E& $( ͯ%S##2|U_(:$lf(+? 8a#r#t }u7g*IiRGB[e"v%PRdޞp15+֚Hr.wo't9ҡWn5duȄonW2& LI)drGXע"MR:PTnhp@ 1 Z+INڏȵWkkHyO=~;QdS@ګ_0e=ʗ"1|Ӂ ֿZ]sBD XKğ'Ns@ H΄gI]Cq0^^|Q~yT_yokXZP6^_񢉯lH"~!q^=4jW!\3y[Uȕ"OƤ]saux曽)6UnۊnV XdQ_o6aTioNxK~s%[:*( 5\PiAsw:@z;^qo⫛jtaqn? jDb= z\D0,u9w^OD̎: k2bVꨓ3-~[~F<vI;\1t_0 ڹ? .U.v5v'JA)\Mv\3la40rɝ\bj~~ *zdZ4J /:5k fZ`(:F:_T\>_/4yaAqܘ?r\| YP8%>ƋY)2L%/}S( -FI$~;"6\yL/fx26ւ6gAVSv_U[CK AAHlS/X>,АJQ@(gV@ta.ʹG<Ψl;^;,+ o2gJ9kPsTngSqȮpܚqR-Ir7Lr%]ӄ1mx޿EHG<͟՗JxP_Aյ!f~0ٗb;yCx}TVLlꙮcF`*q_ Pv2 9v:rl .W@^*?Dtop|/Yt#qs ,pBR^">pH3AK6=YU@]-m}C:1']<Mo{q6ĥvRYb2OT:K;0CʻL.[nf)lsD Z 'dHō')->nO"]M"g|Ϡ&D@*4RVhHٵͤ)(s'RG| <;)IeS2#\]h8Bn͔߃6X%t:wof']TPKŗk[ǖp^ e+  [&Bߑ ; PQP)5{~xۙؤig UwZٵ#7%b$v{ wv=\ur"i=ߠE)*R01&wԃ<|ڋwcZf5!*(GXLJR+ = _ oH35Q%s3ےUڈ}<>èdP#"s ]lo I^,Wf#vLz$HjN7w5 JYoh302RFw?=;z0//-Jt2I tDHq &ߥ )qpowD!- eIVʩF/SvE h;o+/z4+/lO'0MR1ߧ`ⱥy}āW%/6y 7XWl{u'+\XJ2Zi$SYf^s=ۜD[*[WPTmmҚ)P5g¦;) Y " ` 7mXx-VO>-b*՚lG ?g+!Hdܾ}xgdB#V@["uľXסNя;R1  7mjm΋{>;jt|8{ DI8mr" }$\YX*M0 %.TO[uMbiŁSGLSfEv4B2>\mt??hX̬qwF}!Grr! gdf[xҔdecfy;4bySиiTs<&;'zqՁsfЯ]dCRobVR*f1$~Lj*.Ԍ[y]C+#~y2Cka2`:4mY?4F9SSy8O¶ʺz_\ǁ *0Qn5oA֡G.4C)EWCS&bbJ191]5}aʪx18֌~(FF-k|//^8μԦc3Z /Z'p=;qVp`u)w$#?r'_:a!}2`$}qGXMtu=1u@_b,["-D{V\gYߴ4b0~O~Ф'{B?RyTz0潽#,Mkr_KclAVAf>fUM/86^C_-҈[:rD^<5br2"]ᅫc1bhA/dDF3ex+*EL03R)~VtNES )bBGNϨ$-.'M2>iX .ؓ8x Qmh+I{lbWšlD@D`?EUkVRxؓ/ tpk+UV5w# 7fk%2mT՘N[CvJD?g`v|=+q0&bLNitX,gn}vw"r=mȄ-cb82 ۧ9b9rTH~;Rdk^TvX~="'wyY5̷7#"Jim  *j[ᛥ-Sk,f* X 16(pezeu1SIoأ`z\dۧe+|\M{ߔ+`zDvTe1WIp8Eu7}ǧqv4-c (2{дԨ& rN+YkbUeׂ?h Uz KIL,HU& ĥh_!`%Im2קC $o=3dl.CZ^wʺ[fNu<:?@:A'f/JE[G@>,?L+o}m/_m%Nv)_u10,‚S%OQ5<ǤE]m}[Bww xdߡ+4`Չ' K%vA@@[hT3X{8="\](,$ї&Yg׋̦C`T+(ɌWeDB.VT0X+۝H UWgg\UMF4D] iO X/#bne?p^2&n|qAoL/[ڬeopV )ZV-e0'XIw{`rj݅pc-i)sO{[~;+siz])邯_ՙ:e!8ʶjA!Hc&?WV\2F XKP#OނW87 `j@ 4UsCgQ*ڒ=[`lX$@DTөc9LDTKW7s@l4 =Vaذ,+  Uw4!<$MePӥQUWf3)7^MFm};~gc)ڞЯfncCUBpVzuMr+G2i]3CB6rbKJU|u-hwל<o餞+ȰTA9viPv%7^Li&5炂kQ4$`\ed&Yb=a}ŕAnRl#gŽ3 9b:~hSH>/ F˺\}qՠ1-zi=/H3J8ŕ#, nYl.V2#D )ߗZ,iuPdI@BiӶo0³/(qOU,hC `LΗdѠ&0ԭb/=p-Yʀ,"qeQTTHd;QWU?Y"C[a`w.ztJ4%Y!a1ZFЧ8oT4g۱vJw#\kqU?P1zŽ6g5 *)Z/N}akn-{ REb8˄&$+]wx6ep60moJGLP5 |+@ϬßN梩s]v*4漨0m'XRȊzJS`qTo2~L8x/]4M&"/N\]K_Ap*WS#`b'tQ4>vZj 7%W]4m/68ːfū !I^DY޲W?^9tZU+[GH#Z dvyK:KA]mZA7=D/\X|\̚l*CGP/n7A"tJcd;@2Dm?Wa$$Yu[,ӦWQ/ptqA:O/%R`e ЫZ'v )q vHݑQnE4"tݱݵ&^:d8W-c؀[z|4ULN.)Nve>NgK û'jY8!\I2p֨#LԵZ),@YR$d+.ke$;6$6J^hK!d0fΤ5MD3:EiīIZ$tȦ";5Hx&.6_5e)AAwvbi0 uP18 M6ĨqxUI O2~MfB22\95pD@Jǡ|i pTyyݣ>ol ғ84Ќ|jZkX8E945oBʯ5Iaѻ:JHÁǸ { ]9k^[(bqQc)l\S y:. F1|]Ir i%a!T!1]t&$xQV>e&.O}Kwfc)Ukى(^ Bw9I^`t FKc]3XbN?JO\u2QYOLj^Ŝ9^r*z49>w(@YnѬGƤO,#?Nt[r}tgΐCMyݺ< S ``YF֖ ~ao4t )IHyc1C@Bz峤D] OLܐLtQբ]{X([$vTpb#hnFf!/`8ݜfpH9%]CxV[*U05f UD‰ר6`gt:']~X~x.m:A1lVLLo;PÒa&S`/["vQ`.^nш.}3LhB6 0r,DCJWgśTU_,xr b'C ﺡNz*Bw/obW=YV-Ed<>8#jl@l-,R[TrK͛E*8#ď[cׅ:"Q6ZjCOt*A , c徨ZAi4yŢ0C E;tbfJy$H*57R5 W7ޮDhb}Oe$.SsjJٵ?V66҉[?uJ.5^kDDSqz `ar2CğvIXEWnр=\Q:[T[%¶M2~uHBn vku*(6 B׷'hLoICzc_CLLpuvSԵjGPYV 7Tpb98] 0i?b|zj~wf/Hjs0OVjՙV o[vZS7b k$A!_vHP*,R^,8&N#-L;N9G[ϸ>T v}d% cvP6fn0ix)J++`a:?sр>&klr5g]PhIAqдaȫF. ./mP{wzuxPD# Rk=@k΀z4Ag cĞ b$7l5zJ@TA.Q-L:\-}cƄ73T`Y#-533H(!,Fi' H3a*z"n+:sh֬Y'QB(/4*Q][]T$2DAVǏrMRB:D!vF5Ik,.EnO'_Q#d\:T4L44ĕhDsi:Ԧ~t&;KFGJv>bLYߣ s|o;?z{ZAiد!N걆#q4SrdK;YĘyUM\|.jȫEU6n9ZN|a}HŽ)|kIFzζ cIj_jmUZH=UC )io/;F䕏P|^4u+&HS 3Ɍh1bֈ/}dn+X-81E/F"-9#KW>4X2r K?\{|hCwcy27W;VX'6\eϋדL;rnA% VIwG:=w|$wk}k(,hRn3ӷ#c7!qQ?666ڹah=e⛻ܺ_\͏"۹dHSH:1?Vіz1\u]M6+<}m jia7wdΪ9Ӯ/0]ԓr7Yz re &]i@"Cp^{IޠP~[Bk|ҳ 1v|aNdx b34Xv+IJ}`*6}LAsM% hX> `$9Qzԏtڦ5~d@m8tD)1cFvȍXo=07. dEڕ)ǭ;BWSѝb r /i jk<,mg>t@ރX]`?:72S䓽I)uD '!ޫF5DCLć3D>#rh~,+v`|DBp/3ڊiT7ܷ`jYۇa*C}I4z[p9zm ֻRv[<Iڣ塁Q,A44§,71뒚ފp$I0.؉MpX4t)_"Ѓd?IH#F󿃙v _,|-qYsLGZb|VvF9^+băw/_R%s%Ll[,>Y-m2rj嶢{+x;# t R=$<60@)b&KfL;׈͢6V7!6rȩw:mc%/{$4؝y9[¼l:63*#^% r& )x?B[1Jk,QO!?bOr涆GY?<`0A,iPN64 { q Dzj ܹt4TՉh\lwiq-=KY%3\ |ϦIQ1V*6׬2|nY& gvǨ%p y*¾Z'YN7[gť3wlNra} UVyY_etCkum*F:c?kNdQ◿z茛N Sa~Š ;ex5 ͅw]>8?&nO&S[@ȑyy ʫ (b>xZ'.zϵEܭa >-lj+P_:Ily&;<U.v?uY88 wdC*RSs%K:Wj~ ],UaYy}'bWlTia37HlȅM)^R!nRa%;-/ ;7.{3I-C`%] "d/|DaΈb?##/)P B-DV"]dIwH} 2>jH᫮`s a5)VsF(9MJM Qk@5갌CE}6"*A>1T։&&bb) ڃGN+!(JL ShZ=a붊(̹ch\u), 85ך%m-]6]L @SÉEEKRH=';%b?8[fe" #|C ULጰP*JL$O8̅K_r#ׂHod?Զhk\G" o$ ""RSiz4#odwL$s@ܛNՏk/Ջ1+5c&#]J~_c9V${FE|Ls9wՙf>ΰ(ӮFE }UXt x%\P{#''6XSH MH@,l?7g@@ۺ?رkI؁t4I@1h\vc@A";kY67 i·d>72 vJ|T8t&iWG(qU7+ޕmɯ_8L"z[mO2xb(-a$e7݌y Z;f2݅ 'ָnzoCօQ8"}AF- P&Bb[&_t{_t5^K-T#8frA i뿜08+{:=abZ yv1\QS ?;"\!"YCt>Oq{' b}q=&QR2OwS+ Hv h3]q/w>S>T9./ _I$hA~W J7)梾|h 5z#P٫GN50ƈ4m&@4Rlda %\G4/Fر)uvNЀXKM .Uw\ Ne>&×|F"'./J{&uYkupRj.l?X2{|RMqVOBAeH8"dـzc8VpҕJ)\EnxPU..,uZ B-~KA :%e/(zqLVKEj4#ӵՕLAIyhhŵ&34l׹j'E_TbmPn `b"0_'[,{Bk Ѕ޷xե9W|// @Z@LMHEKmv[.ramIGER^";ωe$p5B -__ oz:ҳ~v{lԊsea(mĀ W6hbwE|Dj\F "HuT:<{T?6"#+Y.[mn2]2u'$ zI10/֣ӣP4MlDwi(k㋐Q'F!4NzjO?lDD .T+uXo9ڥR +Ճ*! >:O2];$!%-"TA=2DHmt`&e6D8rN `60q ؟$s? b'guH(z 3W2VfcEؤ!oRt^.d}HG$uEs(PB4Eb^"d߆_UXf0]#VǏ]QnXS^W4y;LZCc/Ai>{!n9kHPvJP Ɣe}VϳU`ݫo ^4sprQԔ:0/BXlo-<iwx}ptm5K&lҩYBӴ'x1oa, u;q[GNl4b]_mZ Ȏ/-/(OUSU9OЁW:?g TƎ#DC4MCnϭlkqICl`C )d^M`9 :>S\/uҁ\|"*_1'gkH#+QuHK&/"]&4Y7Vl>iW `%o sg RZ){/kufJuT}f Viˢdig t6ADתy/^Ļ XմM KGn9\}ߑ47C(d74yuѳRȇ ZvV2)`dejӷN_e[*AnL^`Vq<$BFaC=el[CǏ_@h*ʙWbeC@:%"qA\*ֹlexh2JNxSW[3q+d&n ^~ʩuOTMu~Y:E`D%xxT ?~TzrE t,I:AYvJ,[9GUt_}>,]Ӯ0wY*&ѺvK:۰]gAHYcOKCzcF5+'5|;h{[+}r #0RClQb+J:牟y|Yvnt4V s&Og͌oZt]&OQ?Ɔͷ?(2_;_)Qb"4 #i! >_}BAZV2B[8+[~H.X]5\ŬW/pzYLD'-i?8-wH>^"(Eܛa&]. hdާY-z2~sOb"pGF6-JGuTAɀiɴ 0Lmp!Sv D/ӑ0cS?ex:=a)%OZ+[[֚ .ʌaHڎ0v Th,C6hK]$+u0Ot;e"kc畗-1h7O ~<[,|Ƕ#j53'j-wm՛;8 7* ώsRz)?Yj=Fa^';F3o 4K ;b盼Po~ FEMYO<֚|4 F"e7 f5GxS*イ#GӬ 3d5pqynwK 姘PgNb<0ea~_Ggެ 5PȚq[~1_m8PbϦ5|Ր֋pgֶ$F4W&HruR(yɕ?d!1[x;cZL9n2xcW u4QV,.|yu4Fqvix)ˤ(a5*;--/?ٰ:N ӂ}fOD/Of M#'/zr*HBpڒ)q)R55mSd()rd=čڳf]v8R"`u>evz(QU!<dPz,vB2)%Ӏr\I8c=:@H\Wu#\ u CZs7a9?o4BWח0lz*P`yi*P>߁ ( fJM|11ƑO!Kq")ޱ/l/W{ AMbpsaESf:8\տO])0q+ͫpYzeb7,]bxZyIi&X ; $?q(n髑u`(;ʌ,eoQj9@t,qSa> "TI^ŊXqմ\0/O4FXVkGtocCNhjA8^baTpg:@K]@՛WÞ-e^D,ug2sz3'2PuA/dȩM Y 6xH#=swbb6pМǞAvJ#V?z';duk'&Ry歑F#蓨vt=Po5&͢gnR[(U=3lC߰Ԯ)KW5i6m[O‹+508Ad _WO.ek-]n4B'sd>g72J'0= g7hL0|%gDTF^= E,p'Y71dr4M ֗\qR |ے[>Oj`9q4 􋝝âz1J5$έ110~0^وlZ^CGngFPD.UJ=PJ4yHP?ʶjeyIQzt_=Pt^3AV1= ޠ9Ƹa[ |*8!pdFEVPU?mY\>>yt U*8M%O4cY*#n'L,PrpCQLdK-\srHs䨅TRQ{tIKVPsZ7`yy8kgr:ώ%Nɞ~1tjOytR&FO/߈z{O `lޑˬQb1p_^{+hϜԻJԾmi44t:E`-ÿ0y4Ƶhe+ YeǕk ˠiVT8#KJ%Pj /d/0@n?—O}$쥜 q0+<=/.m6UlX!u`dqm jl5/ә#ڠ:nK+3tH,@݉!E8vҒ6M I~iH3KT2_y`CRG;BdزPr"YAT N? `ݳ`H7uч͆w}VmUw-PO5PCGWA7_;X&2~ap܅ioJΥm1ތ=Y\We7kVm[G Iz/ʎE_a {]8HRbݤװT@xd"Y*%tuߔ!AH| 9`Cx#xVNX cӒf,̙,Q4bʮjdnD؍$4w7 FiIZ YPPj3yȡӳW_u1&V҆nJ6A1,/ccOU ;aPڄ.՘CgB2lrO\wijL,bP6NonMͷ[XS_;dha<(Vk(+dv퓡{ JnjZ/FtI4H['%9:e~^l5*yUBu!W1YsG^IQ 66wн&)ww7z=XrŪi!=&ֶRG,iJJ53zHيN_b 7!d^0>wō#3r+ɕ;k_fsZuW8kւ,FjDzmvIgv6IM%0cuEB))mt*x{JIo~Zz0RPQP!rl=^ z'kΐc+auzɼL3Q4Q [^(d,#Tܥ” seg-8bD(@Fg7 :aW'VOP]i8Ε-Vn T6wS5RbbʨcW{vc }rAWxNyYLDyػߊ^ UNi@IUv08Kv[ Q^R1lgjBb\EinH{54n߶-Jg~TbѶ%$RBzkodCG* F5<I<3xfnb!Z~.Jȑ%E- o=5'03 4Ñ'Z,%} eDξD^b22A b*]8_"-c63_%O1J #t׽1u"=\ nO]- Ž=3dAYTBW]DjUC#;yCT`h~AxH>Ԉ -XRC%DUaiK#I20VNFT5M@ҋ vT?rDfiFL-9Ɇ@pĺWUBx u+T'y22ֲatm/i[{pI9VXȨޟW?yR7^k7JJbG}V;Hd%dpZ%RzoyV4UVB# Hg )}$ϼQk^!#M0B(D̪d], b (0 Kdm(ad>gwkV\@5F$M|Q nfk9Ca.HO+谴a*#Jb@ƓGE-٫y'H-pf>oO}K 8Q$޼QMqjjym`,H ֬" RLSZQyq-*,(\RN k&&jBJ Rܨ@F-k Aa 췇e4Ze(F.R(jV4? /(c1:ȯ.~siiҺsǙ{LBEǕQ'mĝwx?Zb`?b4RH0] >s׌h`>:Z\J}5a9JFJ8mϊ$dr~I&@gxAyzsHx!! U$1k"NEĹ:mEl@6~3%kHM@9)#܀Z4 .5ƔAA/!/"#E*@ޚc>0X<_f#;rڋX@cKN&eSX^uxU&;t>Ƀ_NfOR2BDW;FD&pl](wލG>w_I(μ1S] rO"z4HkDnޮeqlP!co&:e|hBy\$j|;YNWNN<ָ*fi㵝R\c"a!m,WpΤӹ+I#wGȃu}:ʟ5M虻IyM\WX[meN>C<+pY'ԖnUe%҇z'.|v?"mK 95 iUns8@>s6? Gkv{[{;Q{lkfTٓ =%&E'"*;V @ 3:Ad7M4BU!k$]R TKݬM%䟂8pMPj{U˶?8 ;Caޙ_}ʎީ}#$cR}/9>=+4Gu0 1l߀U6aXHqAM[qo Hp 3gnɕl-+n9O60DUzHbZ^IG檊BB6p_Q뼎/@=fBZ Rxa Iqi>O@506vX iMw|om%F<Th\z-ANU5XT Dˣ A$FK,+_ {OSǗ1PIJθQ)Jec]: Rs$}д T<5ťaxEsB`u8_ JY94COx!{٦'˭0VBڋ0H-C78͕N`đ.v.tziA_I^ӈȒm`URe6ܱ! ttfin)bnT$ S].YmBEy$i4oWoq +oF?J0i?IӞ@5jj[jgF 'Y"3芝bUJPau1@ 36=\ץZx\3, |]mŸ0*ޝT~)wVl|%/˷4Td} ;K-Mm;!VĠ^i_vV\H;\kRz, 8rx3\%vBR<BFÑtJZp,ʇ[kj-|w#mJbwOeGMjN]D<9Ɍ=j>rJF%e "/#A nP xaQ`'W}:ŽŸo.!ؗ<=A"G(뱨=fGl١ws?=Dgz>\JC7I"sQM̨5uRjC7y F(GI7mO-Zc)wG6 z禦f}t,'`ոEO;ǽ(?\e|(ނi`D5\LWAzGx# J8VλQJlЧ5'yd ߽o2IwD]$3 x6e!&=N䐩N6a06{D[EvZ0[##:B<#=_dTIXSw@7x:%Th+>+Ոpk{ȼJ=GXZZ7D0)BIru3D2y%nO%6,pm yMFFX/6eU**G Mɳ.xesq&"9+‹E;l[$%Q/4 ksa AcOڝCc=(fWs9/ڿn!:eՆCN aK{M NE"ۣ ha[r赻Xex~qseR%nF`Tux +xD` A "gy@Dy+DG.%݁r}%YNbޣ 3: \s;M_c&ű WhWUb)L r.pV(?9_[bt;],ܸFtӎad~m`p&Z=-R$1{KɕQY'_]Mwpqڑh6ؐ?i <-!]b)K/Ɍ)p :5YNЀ5O(#K|s o4N1Y_z!Q OɼέN%'t6[#q !})_5$8@&݌`c{ȃttd3#1ꏞAzk(} /sJPL7ঝNDCltwaQ z3̻F+ddcp$OS:ś]9Nk Zat fXrԝ5ٿ]DCS62﯋k ca.5 "^'&.ݠa1gc b \:GY4D&GOb-]Vh,vh({1 |`BamBINovLvG/>u_IsFX>ʀ W$5,sO}<뀃yi'It Kޝ/ss$~2>c {yX rv,.1OKDv 2c^WeFC}M~3iEuFxm윹x*utԅ29quFnH;#2%qt0=/$gQ4O]ƼDޤJ#3͢=v^ZYV7$>hCQH-%cwwSYeX%/(m#K|ڽ!#DUg}hQ;#@4J{ʽ7u*L*]+& erӦ(Ά^e)2^S_=-XeD=i~(?quT+0@3ie0*Sm){> \`((7cIwG|`_0Ag#G+YQm-I0惬*X&_ǰ ºAuڲ~4>ʼnrR"wuxb/ꌙ95ě׿ض<8M%j5#UcPJ\&n]{tD́45eoYXkjRl"| 5LR|)a`M?{'g ϛ Z314~8ĩ+&E ㇩2aI""2@ܔL1r'{oS*Wp0J:Ì^PuǰpP<bRKH6}},-“[xaGĞ=^~Gj$ļ}w !OiA>4!:qt*ZLUt[8Dž -4F ydll;U+ PF^b!3tMsCV udN_ oMB[*˴A~HX.wpuɟ5%F@_XIowp% dĺsN qʊhZPXx֗z`p,ރ廐qآ!C sFȖogBZdf|Z|{g0\19UI+iyQ7N=^ҽŅ8 $\ g'NW`9%HDhq=a^OՠisJm 5*a*lU^E $Rjѫ4`H񝍖b>kQ}K$IȞx'h{-s&ޝnUZ  B9]8M/. l,~ d?۸QAHk y_L8\ )U\ƝcىjE¤Bx$ ։ I`eRQ5oO}Q<_5,ҟ>8qfY}q&.$Pgf>YV;R 3dފo(Q9ZiV >6M/ S±--Dj/Pj|]rC΍ݰR̮F[c:CfS%_uRr7:h,1yV:c \,=Or8Vl{܈\Aɺ19ز,.sykf"M_dG]Mm\-c+-Vlr qM+$ eEtڷHcWz.PcVe?Sޢ%Uw]wZ7QyNmD1g1Rnnݞ?gFT YNN[vs*f} LRdE6#k2Ei$+'}o}lI.RH2yi>cБʽQ MvH]N~\v_*Ct#+B0c I{B̬p+vqҶNjZPYayܖXUG?GM;o'ٷY&wuy)S\i!H\v+[(\W`X=73Ög:<]b7뙕1ǕKAQCN6,+{ tqEu]ᲈyA!EP sANo~~ـh&cŐyQ.h߻D8)4 bL(8^ 8E1",?ez6H,UrYqH"q|>rg!{E'U2I}Z[ȿ;k`/sh14z hYF>U:5|4V;n+Yi!k)Ɉu)G@^.(Qe|Da[0vpB؂.Yr85و>թB@m- /gX6,'C 'Z,Rm63%$Ƚp0PxF^꞉l[2% Qq*FݣxKkZT3=FщpGR>a ^ W%+͎A{xM<#xXE3cϧ ?>Q|R_hkJo笃]0ܒ$-m7/t}n]KoQh=_Z8e5vq1w~XzR2fV!J=`G;Ùz;s P!H^u@5#ϒi,4hc;]NgGD]{,dD4RAbz :Ga 6l9rߨ49LY"&VH4\OILлr4hψ vU,^[M^5gLOmx nLg!>ޅ ?'1w8㡵tL2 ! ĚmhVK }x)rE7*|~p)ZY]H4WgYZeaf/tests/testthat/0000755000175000017500000000000014160351052014136 5ustar nileshnilesheaf/tests/testthat/duplicated3.inp0000644000175000017500000004067613627006324017072 0ustar nileshnilesh-14445.0 -15166.0 -14501.0 -14898.0 -14653.0 -19553.0 -18564.0 -15995.0 -14942.0 -15087.0 -14510.0 -16509.0 -18963.0 -15745.0 -14812.0 -15237.0 -14348.0 -15812.0 -19203.0 -15321.0 -14688.0 -15055.0 -14232.0 -15028.0 -19255.0 -15746.0 -14900.0 -15246.0 -14506.0 -14757.0 -14417.0 -15170.0 -14571.0 -14994.0 -14606.0 -19522.0 -16471.0 -15853.0 -14676.0 -15087.0 -14312.0 -18199.0 -18835.0 -15978.0 -14943.0 -15328.0 -14383.0 -16053.0 -19101.0 -15960.0 -14829.0 -15451.0 -14597.0 -15285.0 -14521.0 -15332.0 -14518.0 -14658.0 -14730.0 -19461.0 -15146.0 -17050.0 -14621.0 -14810.0 -14562.0 -18156.0 -16156.0 -19669.0 -15079.0 -14969.0 -15229.0 -14897.0 -18534.0 -16973.0 -14725.0 -14863.0 -14600.0 -15019.0 -19106.0 -16069.0 -14942.0 -14993.0 -14517.0 -14996.0 -15408.0 -18358.0 -14736.0 -14954.0 -14830.0 -17070.0 -15744.0 -19175.0 -14971.0 -15056.0 -15245.0 -16166.0 -16149.0 -19784.0 -15084.0 -15030.0 -15335.0 -14934.0 -16467.0 -19601.0 -14922.0 -14819.0 -15133.0 -14720.0 -15502.0 -19996.0 -14797.0 -14936.0 -15349.0 -14995.0 -15428.0 -20133.0 -14661.0 -15098.0 -15303.0 -14394.0 -15721.0 -20017.0 -14704.0 -14868.0 -15172.0 -14441.0 -15213.0 -20219.0 -14747.0 -14831.0 -15097.0 -14180.0 -14461.0 -15198.0 -14578.0 -14895.0 -14647.0 -19497.0 -14630.0 -15054.0 -14546.0 -14759.0 -14731.0 -19449.0 -15600.0 -15160.0 -14996.0 -14905.0 -14638.0 -18805.0 -18744.0 -15866.0 -15369.0 -15399.0 -14568.0 -16181.0 -19114.0 -15649.0 -15176.0 -15277.0 -14424.0 -15257.0 -19243.0 -15563.0 -14965.0 -15097.0 -14324.0 -14830.0 -14518.0 -15222.0 -14500.0 -14841.0 -14700.0 -19417.0 -18682.0 -15916.0 -15443.0 -15413.0 -14775.0 -16186.0 -14643.0 -15452.0 -14622.0 -14654.0 -14893.0 -19365.0 -16157.0 -19517.0 -15231.0 -15167.0 -15447.0 -14901.0 -19150.0 -16030.0 -14886.0 -15004.0 -14541.0 -14997.0 -15376.0 -19428.0 -15316.0 -14937.0 -15183.0 -15761.0 -15669.0 -19982.0 -15046.0 -14874.0 -15079.0 -14752.0 -16179.0 -19639.0 -15190.0 -15028.0 -15525.0 -14896.0 -15301.0 -20153.0 -14940.0 -14729.0 -14960.0 -14129.0 -15190.0 -20187.0 -14881.0 -14813.0 -15051.0 -14133.0 -15327.0 -15099.0 -16152.0 -15145.0 -14836.0 -18500.0 -17265.0 -15504.0 -17662.0 -15343.0 -14922.0 -15640.0 -18303.0 -15641.0 -16497.0 -15286.0 -15034.0 -15457.0 -15370.0 -16010.0 -17716.0 -15179.0 -15174.0 -16683.0 -16973.0 -16336.0 -17724.0 -15580.0 -15412.0 -15388.0 -17693.0 -16234.0 -17374.0 -15430.0 -14712.0 -15147.0 -15604.0 -16683.0 -18329.0 -14873.0 -14746.0 -15860.0 -15746.0 -18664.0 -17061.0 -15146.0 -15024.0 -14977.0 -15887.0 -18013.0 -17553.0 -15174.0 -14994.0 -14982.0 -15279.0 -19384.0 -16218.0 -15046.0 -15457.0 -14723.0 -15830.0 -19172.0 -16555.0 -15223.0 -15110.0 -14517.0 -15323.0 -20062.0 -15236.0 -14986.0 -15162.0 -14284.0 -15623.0 -15273.0 -16908.0 -15006.0 -15158.0 -17743.0 -15708.0 -15409.0 -18324.0 -15014.0 -14696.0 -16306.0 -16369.0 -15494.0 -18666.0 -15271.0 -14879.0 -15127.0 -16212.0 -15406.0 -18766.0 -15239.0 -14828.0 -15080.0 -15151.0 -15764.0 -18691.0 -15345.0 -14923.0 -15672.0 -15739.0 -16201.0 -18742.0 -15118.0 -15107.0 -15176.0 -16384.0 -15556.0 -18619.0 -15332.0 -14922.0 -15142.0 -15795.0 -17378.0 -18079.0 -15136.0 -15060.0 -14904.0 -15270.0 -18486.0 -17160.0 -15346.0 -15277.0 -14928.0 -15214.0 -15136.0 -18943.0 -15002.0 -14741.0 -15381.0 -15584.0 -15478.0 -18944.0 -15267.0 -14589.0 -15123.0 -15357.0 -15444.0 -18941.0 -15280.0 -14848.0 -15244.0 -15624.0 -15513.0 -18962.0 -15254.0 -14588.0 -15102.0 -15189.0 -15064.0 -19027.0 -15072.0 -14644.0 -15086.0 -15390.0 -15219.0 -19000.0 -15327.0 -14795.0 -15029.0 -15584.0 -15147.0 -15034.0 -15360.0 -14803.0 -18828.0 -19003.0 -15907.0 -15002.0 -15582.0 -14582.0 -15726.0 -19086.0 -15737.0 -14955.0 -15566.0 -14545.0 -15421.0 -14482.0 -15194.0 -14589.0 -15006.0 -14652.0 -19490.0 -18524.0 -16279.0 -15000.0 -15318.0 -14432.0 -16369.0 -14648.0 -15476.0 -14550.0 -14873.0 -15138.0 -19294.0 -15310.0 -18274.0 -14729.0 -14979.0 -14804.0 -17076.0 -16475.0 -19236.0 -14866.0 -15763.0 -14854.0 -14946.0 -19184.0 -15749.0 -15014.0 -15506.0 -14629.0 -14781.0 -15463.0 -19480.0 -14744.0 -15227.0 -15109.0 -15717.0 -15489.0 -20046.0 -14848.0 -15113.0 -15371.0 -14557.0 -15903.0 -19901.0 -15098.0 -15240.0 -15234.0 -14546.0 -15282.0 -20135.0 -14775.0 -15056.0 -15362.0 -14437.0 -15455.0 -20155.0 -14710.0 -15099.0 -15139.0 -14295.0 -15219.0 -20210.0 -14726.0 -14889.0 -15163.0 -14137.0 -14574.0 -15083.0 -14646.0 -15105.0 -14944.0 -19381.0 -18500.0 -15999.0 -15203.0 -15418.0 -14464.0 -16519.0 -14535.0 -15154.0 -14757.0 -15136.0 -14806.0 -19348.0 -14566.0 -15087.0 -14818.0 -15275.0 -14890.0 -19250.0 -18796.0 -15964.0 -15192.0 -15539.0 -14785.0 -15558.0 -15395.0 -18243.0 -15778.0 -16564.0 -15349.0 -15721.0 -15934.0 -19679.0 -15473.0 -15345.0 -15323.0 -14754.0 -15954.0 -19704.0 -15421.0 -15283.0 -15498.0 -14623.0 -15517.0 -19947.0 -14991.0 -15336.0 -15258.0 -14591.0 -15617.0 -19984.0 -15224.0 -15150.0 -15360.0 -14528.0 -15215.0 -20206.0 -14828.0 -14879.0 -15044.0 -14093.0 -16339.0 -15484.0 -18538.0 -15392.0 -14909.0 -15223.0 -15556.0 -16031.0 -18229.0 -16000.0 -15151.0 -15865.0 -16016.0 -15959.0 -18564.0 -15755.0 -14912.0 -15386.0 -16273.0 -15937.0 -18486.0 -15523.0 -14842.0 -15133.0 -15288.0 -18490.0 -17137.0 -15325.0 -15246.0 -14903.0 -15890.0 -18279.0 -16996.0 -15745.0 -15255.0 -15045.0 -15808.0 -19021.0 -16567.0 -15471.0 -15147.0 -14699.0 -15564.0 -15624.0 -18673.0 -15433.0 -15087.0 -15754.0 -15644.0 -15498.0 -18896.0 -15501.0 -14957.0 -15125.0 -15421.0 -15808.0 -18615.0 -15612.0 -15151.0 -15636.0 -16041.0 -15935.0 -18560.0 -15770.0 -14851.0 -15375.0 -15164.0 -17632.0 -17588.0 -15805.0 -15250.0 -14999.0 -15405.0 -15333.0 -18944.0 -15521.0 -14845.0 -15091.0 -14560.0 -15014.0 -14637.0 -15197.0 -14833.0 -19376.0 -19037.0 -15674.0 -15002.0 -15520.0 -14580.0 -15262.0 -14560.0 -15119.0 -14736.0 -15271.0 -14883.0 -19295.0 -15000.0 -16041.0 -15201.0 -18530.0 -15211.0 -16134.0 -16586.0 -16198.0 -15393.0 -17905.0 -14981.0 -15225.0 -19224.0 -15819.0 -14853.0 -15259.0 -14613.0 -14857.0 -15412.0 -18308.0 -14695.0 -16935.0 -15340.0 -15365.0 -16132.0 -19048.0 -14872.0 -16350.0 -14864.0 -14669.0 -16047.0 -18128.0 -15455.0 -17282.0 -15332.0 -15013.0 -15466.0 -19939.0 -15012.0 -15518.0 -15095.0 -14244.0 -15494.0 -19954.0 -15016.0 -15485.0 -15090.0 -14243.0 -15436.0 -19956.0 -14996.0 -15537.0 -15081.0 -14195.0 -14324.0 -14906.0 -14718.0 -15287.0 -14698.0 -19307.0 -15505.0 -15812.0 -15253.0 -18596.0 -15174.0 -15934.0 -17036.0 -15640.0 -15468.0 -17583.0 -14857.0 -15243.0 -14878.0 -15679.0 -15179.0 -18188.0 -15667.0 -16482.0 -15328.0 -16099.0 -15408.0 -18866.0 -15388.0 -15155.0 -15661.0 -16443.0 -15922.0 -18416.0 -15625.0 -15029.0 -15288.0 -17017.0 -15741.0 -18169.0 -15565.0 -15110.0 -15392.0 -16800.0 -15788.0 -18410.0 -15304.0 -14811.0 -15420.0 -15943.0 -17657.0 -16808.0 -15188.0 -15862.0 -15713.0 -15501.0 -17551.0 -17482.0 -14975.0 -14787.0 -15653.0 -15484.0 -17309.0 -17768.0 -14998.0 -14497.0 -15522.0 -16189.0 -17380.0 -17577.0 -15126.0 -14844.0 -15398.0 -16110.0 -17303.0 -17711.0 -15125.0 -14749.0 -15346.0 -15271.0 -18777.0 -15811.0 -14828.0 -15306.0 -15542.0 -15470.0 -18608.0 -16077.0 -14690.0 -15062.0 -15428.0 -16045.0 -18269.0 -16607.0 -15182.0 -15133.0 -15259.0 -15280.0 -18832.0 -15808.0 -14807.0 -14996.0 -14541.0 -15526.0 -15023.0 -18228.0 -15438.0 -16640.0 -15750.0 -15866.0 -15213.0 -18755.0 -15469.0 -15577.0 -16192.0 -15644.0 -15126.0 -18548.0 -15023.0 -14816.0 -14839.0 -15772.0 -14865.0 -18554.0 -15355.0 -16075.0 -15426.0 -16384.0 -15179.0 -18796.0 -15561.0 -15479.0 -15233.0 -16586.0 -15353.0 -18637.0 -15568.0 -15112.0 -15308.0 -16720.0 -15508.0 -18537.0 -15841.0 -15027.0 -14496.0 -15518.0 -15100.0 -18204.0 -15478.0 -16683.0 -15447.0 -15793.0 -15144.0 -18876.0 -15153.0 -15347.0 -16037.0 -15905.0 -15411.0 -18529.0 -15344.0 -15097.0 -15234.0 -16071.0 -15283.0 -18956.0 -15406.0 -15091.0 -15212.0 -15803.0 -15441.0 -18895.0 -15301.0 -15250.0 -14765.0 -15629.0 -15280.0 -18569.0 -15111.0 -16222.0 -15198.0 -15694.0 -15287.0 -18982.0 -15187.0 -15247.0 -15400.0 -15822.0 -15162.0 -18973.0 -15322.0 -14950.0 -15097.0 -16082.0 -15166.0 -18981.0 -15282.0 -15075.0 -15326.0 -15940.0 -15299.0 -18987.0 -15158.0 -14966.0 -15043.0 -15630.0 -15144.0 -19017.0 -15324.0 -15149.0 -14984.0 -15518.0 -15874.0 -18711.0 -15071.0 -14792.0 -14960.0 -15640.0 -15003.0 -19040.0 -15384.0 -15189.0 -14800.0 -15591.0 -14728.0 -19147.0 -15165.0 -14889.0 -14852.0 -15427.0 -14536.0 -14745.0 -15093.0 -19372.0 -14948.0 -15128.0 -14643.0 -15006.0 -15215.0 -19192.0 -19228.0 -15813.0 -14772.0 -15274.0 -14595.0 -14859.0 -15029.0 -15520.0 -14726.0 -14916.0 -15447.0 -19116.0 -16156.0 -19754.0 -15052.0 -15066.0 -15349.0 -14991.0 -17641.0 -18310.0 -14765.0 -14954.0 -14887.0 -14736.0 -15370.0 -19676.0 -14989.0 -15023.0 -15298.0 -15438.0 -15836.0 -19857.0 -14970.0 -14916.0 -15751.0 -14586.0 -15902.0 -19923.0 -14912.0 -15008.0 -15491.0 -14737.0 -15250.0 -20129.0 -14701.0 -14968.0 -15408.0 -14528.0 -14636.0 -15178.0 -14587.0 -14775.0 -14754.0 -19489.0 -14615.0 -15114.0 -14675.0 -14949.0 -14919.0 -19398.0 -19234.0 -15747.0 -14944.0 -15128.0 -14566.0 -14702.0 -14660.0 -15355.0 -14649.0 -14757.0 -14888.0 -19406.0 -16888.0 -16240.0 -15567.0 -15502.0 -15018.0 -17444.0 -15861.0 -19715.0 -15340.0 -15171.0 -15464.0 -14658.0 -15259.0 -20140.0 -14875.0 -15031.0 -15315.0 -14438.0 -15577.0 -19994.0 -15040.0 -15160.0 -15398.0 -14507.0 -15231.0 -20104.0 -15007.0 -15000.0 -15339.0 -14351.0 -18519.0 -15633.0 -16199.0 -15081.0 -15074.0 -14981.0 -15452.0 -16065.0 -17534.0 -15247.0 -15264.0 -16847.0 -16148.0 -17540.0 -17844.0 -15359.0 -15127.0 -15334.0 -15145.0 -18930.0 -16724.0 -15167.0 -15370.0 -14839.0 -15823.0 -19133.0 -16597.0 -15197.0 -15163.0 -14628.0 -15290.0 -19390.0 -16216.0 -15077.0 -15494.0 -14662.0 -15391.0 -15557.0 -18805.0 -15320.0 -15104.0 -15580.0 -15582.0 -15458.0 -18900.0 -15410.0 -15055.0 -15144.0 -15738.0 -16152.0 -18747.0 -15135.0 -15149.0 -15148.0 -15292.0 -15266.0 -18882.0 -15167.0 -14884.0 -15501.0 -14850.0 -15126.0 -14681.0 -15061.0 -15098.0 -19271.0 -16773.0 -15492.0 -15016.0 -15303.0 -15071.0 -18070.0 -15409.0 -15865.0 -15109.0 -15839.0 -17340.0 -17488.0 -15960.0 -19092.0 -15076.0 -15773.0 -16228.0 -15090.0 -16795.0 -19230.0 -14759.0 -15196.0 -15220.0 -14848.0 -15233.0 -20125.0 -14736.0 -15062.0 -15380.0 -14515.0 -14630.0 -15041.0 -14820.0 -15095.0 -15025.0 -19329.0 -14691.0 -15220.0 -14829.0 -15418.0 -15893.0 -18816.0 -15167.0 -16060.0 -14879.0 -15391.0 -15908.0 -18490.0 -15756.0 -16342.0 -16102.0 -16791.0 -17040.0 -15683.0 -18503.0 -16153.0 -15194.0 -15359.0 -16013.0 -15028.0 -15302.0 -19796.0 -14982.0 -15309.0 -15475.0 -14927.0 -15302.0 -20076.0 -14868.0 -15113.0 -15455.0 -14275.0 -14948.0 -15500.0 -17454.0 -15947.0 -15862.0 -16887.0 -15583.0 -15951.0 -18026.0 -15826.0 -15884.0 -15931.0 -15365.0 -16097.0 -18186.0 -16256.0 -15549.0 -15538.0 -15651.0 -16266.0 -18165.0 -16064.0 -15675.0 -15251.0 -15373.0 -15941.0 -18432.0 -16277.0 -15324.0 -15044.0 -14510.0 -15209.0 -14565.0 -15264.0 -15232.0 -19201.0 -15083.0 -15714.0 -15317.0 -18309.0 -15698.0 -16289.0 -14811.0 -15625.0 -15182.0 -18207.0 -15703.0 -16543.0 -16242.0 -16395.0 -15214.0 -18274.0 -15074.0 -15421.0 -15322.0 -20055.0 -14761.0 -15175.0 -15449.0 -14451.0 -16074.0 -15967.0 -15464.0 -18485.0 -15376.0 -15085.0 -15608.0 -15569.0 -17312.0 -17645.0 -15358.0 -14552.0 -15430.0 -16238.0 -17404.0 -17524.0 -15225.0 -14929.0 -15256.0 -15905.0 -18379.0 -16396.0 -15294.0 -15022.0 -15065.0 -16228.0 -14906.0 -18810.0 -15821.0 -15260.0 -15447.0 -16418.0 -15138.0 -18809.0 -15560.0 -15431.0 -15190.0 -15631.0 -15133.0 -19032.0 -15498.0 -15156.0 -15325.0 -15634.0 -15319.0 -18852.0 -15703.0 -14827.0 -15215.0 -15662.0 -16976.0 -18036.0 -15202.0 -14610.0 -15026.0 -15668.0 -14943.0 -19055.0 -15748.0 -14754.0 -15074.0 -15708.0 -14903.0 -19046.0 -15758.0 -14730.0 -16209.0 -15494.0 -15098.0 -15419.0 -17933.0 -16003.0 -18554.0 -15858.0 -14994.0 -15098.0 -15752.0 -15662.0 -15487.0 -15849.0 -15099.0 -15754.0 -17331.0 -17469.0 -17456.0 -16298.0 -15044.0 -15261.0 -17039.0 -15231.0 -14924.0 -16635.0 -15077.0 -15431.0 -18385.0 -15646.0 -15767.0 -18884.0 -14792.0 -15245.0 -16797.0 -14890.0 -15974.0 -19143.0 -14873.0 -15131.0 -16432.0 -14988.0 -15299.0 -20139.0 -14740.0 -14962.0 -15390.0 -14450.0 -14703.0 -15227.0 -14797.0 -15426.0 -15833.0 -18886.0 -14954.0 -15310.0 -15034.0 -15530.0 -17956.0 -17089.0 -16768.0 -16095.0 -15711.0 -15477.0 -17582.0 -15416.0 -14929.0 -15645.0 -15344.0 -15304.0 -18290.0 -16531.0 -15706.0 -16228.0 -15896.0 -15560.0 -18087.0 -15474.0 -17518.0 -16117.0 -15203.0 -15334.0 -16990.0 -14933.0 -15034.0 -18362.0 -14773.0 -15324.0 -17446.0 -14756.0 -15770.0 -19278.0 -15233.0 -15315.0 -16156.0 -14534.0 -15062.0 -15480.0 -16572.0 -15231.0 -17848.0 -16026.0 -15642.0 -15779.0 -16911.0 -15538.0 -17463.0 -15782.0 -15926.0 -15715.0 -16952.0 -15684.0 -17189.0 -14997.0 -15131.0 -16009.0 -16707.0 -15469.0 -17662.0 -15623.0 -15468.0 -16122.0 -17503.0 -15811.0 -17075.0 -15019.0 -15309.0 -19284.0 -16310.0 -15111.0 -15566.0 -14798.0 -15407.0 -15498.0 -18412.0 -15262.0 -16045.0 -15193.0 -15381.0 -15496.0 -18640.0 -15436.0 -15713.0 -15150.0 -15225.0 -15620.0 -18326.0 -15370.0 -16148.0 -15099.0 -15156.0 -15402.0 -15143.0 -15728.0 -17621.0 -17246.0 -16014.0 -15525.0 -15254.0 -15852.0 -17840.0 -16215.0 -15223.0 -16531.0 -14758.0 -16971.0 -17932.0 -15234.0 -17506.0 -16198.0 -15212.0 -15428.0 -17105.0 -15075.0 -15067.0 -17596.0 -14892.0 -15994.0 -17988.0 -15020.0 -15676.0 -19263.0 -15018.0 -15592.0 -16351.0 -14688.0 -15598.0 -19774.0 -14748.0 -15438.0 -15763.0 -14530.0 -15229.0 -15567.0 -15692.0 -15656.0 -18352.0 -15911.0 -14682.0 -16097.0 -15352.0 -16518.0 -18114.0 -15809.0 -15241.0 -16163.0 -15627.0 -15798.0 -18456.0 -15064.0 -15266.0 -15643.0 -17356.0 -16076.0 -16768.0 -15970.0 -15346.0 -15525.0 -18037.0 -15596.0 -16612.0 -15182.0 -14867.0 -15308.0 -15049.0 -17220.0 -16951.0 -16734.0 -15633.0 -15912.0 -14717.0 -17149.0 -17495.0 -15893.0 -15685.0 -15984.0 -14869.0 -18383.0 -16253.0 -14869.0 -15109.0 -16553.0 -14711.0 -17022.0 -17906.0 -15254.0 -15486.0 -16668.0 -14669.0 -17192.0 -17594.0 -14999.0 -14728.0 -15588.0 -15241.0 -16885.0 -18133.0 -15639.0 -15495.0 -15588.0 -15769.0 -17956.0 -16594.0 -15328.0 -15007.0 -16348.0 -15208.0 -17999.0 -16913.0 -15185.0 -15066.0 -15702.0 -16362.0 -16552.0 -17608.0 -15078.0 -14953.0 -15976.0 -14849.0 -18748.0 -15974.0 -15327.0 -15031.0 -16162.0 -14883.0 -18790.0 -15926.0 -15221.0 -14988.0 -15287.0 -15015.0 -15315.0 -18092.0 -17034.0 -15037.0 -15181.0 -14967.0 -15416.0 -17983.0 -17070.0 -16483.0 -15433.0 -15227.0 -15395.0 -17985.0 -15377.0 -17475.0 -16151.0 -15155.0 -15422.0 -17148.0 -15012.0 -14951.0 -15343.0 -15008.0 -15236.0 -18038.0 -17028.0 -14974.0 -15612.0 -14876.0 -15279.0 -18776.0 -15533.0 -16106.0 -16154.0 -15161.0 -15411.0 -18129.0 -15176.0 -14802.0 -17782.0 -14740.0 -15217.0 -17914.0 -15047.0 -14980.0 -18266.0 -14717.0 -15236.0 -17662.0 -14826.0 -15277.0 -15672.0 -15683.0 -15203.0 -18587.0 -15378.0 -15977.0 -15574.0 -15498.0 -15399.0 -18335.0 -15186.0 -14878.0 -15860.0 -15545.0 -15197.0 -18651.0 -15276.0 -15049.0 -15964.0 -15171.0 -15404.0 -18772.0 -14951.0 -14965.0 -17578.0 -15021.0 -15524.0 -18093.0 -14777.0 -14691.0 -15358.0 -15558.0 -14995.0 -18763.0 -15334.0 -15280.0 -15673.0 -15719.0 -15388.0 -18601.0 -15207.0 -14988.0 -15893.0 -15687.0 -15454.0 -18664.0 -15133.0 -14966.0 -15605.0 -15043.0 -15580.0 -18808.0 -15367.0 -15980.0 -15494.0 -15207.0 -15915.0 -18211.0 -14985.0 -14890.0 -15948.0 -15374.0 -16029.0 -18523.0 -15444.0 -15046.0 -16077.0 -14765.0 -15911.0 -18592.0 -14991.0 -14969.0 -15561.0 -15310.0 -15668.0 -18629.0 -15732.0 -15242.0 -15838.0 -15468.0 -15751.0 -18612.0 -15000.0 -14901.0 -16042.0 -15604.0 -15537.0 -18645.0 -15002.0 -14929.0 -15857.0 -15669.0 -15470.0 -18677.0 -15073.0 -14959.0 -15789.0 -14910.0 -16510.0 -18431.0 -14776.0 -15147.0 -16491.0 -14708.0 -16959.0 -17995.0 -15228.0 -14778.0 -15705.0 -15336.0 -16688.0 -18255.0 -15265.0 -14902.0 -15969.0 -15024.0 -17482.0 -17606.0 -15226.0 -15020.0 -15542.0 -14965.0 -15367.0 -18877.0 -15217.0 -14707.0 -16628.0 -14615.0 -15241.0 -18663.0 -14706.0 -14618.0 -15368.0 -15479.0 -14992.0 -18774.0 -15394.0 -14822.0 -15715.0 -15698.0 -15242.0 -18710.0 -15004.0 -14609.0 -15256.0 -14633.0 -15450.0 -18835.0 -15398.0 -14631.0 -15716.0 -14741.0 -15732.0 -18812.0 -14795.0 -14996.0 -15603.0 -15291.0 -15650.0 -18747.0 -15077.0 -14547.0 -15480.0 -14567.0 -15817.0 -18827.0 -14890.0 -14794.0 -15336.0 -14750.0 -15322.0 -18870.0 -15345.0 -14741.0 -16274.0 -14720.0 -15337.0 -18762.0 -14688.0 -14534.0 -15501.0 -14637.0 -15679.0 -18861.0 -14984.0 -14664.0 -15300.0 -14723.0 -15387.0 -18879.0 -15101.0 eaf/tests/testthat/test-write_datasets.R0000644000175000017500000000044714153775341020302 0ustar nileshnileshcontext("normalise") source("helper-common.R") test_that("write_datasets", { x <- read_datasets(text="1 2\n3 4\n\n5 6\n7 8\n", col_names=c("obj1", "obj2")) y <- read_datasets(text = capture.output(write_datasets(x)), col_names=c("obj1", "obj2")) expect_equal(x,y) }) eaf/tests/testthat/ALG_1_dat-eaf.rds0000644000175000017500000110373613627006324017075 0ustar nileshnilesh̽XT]>> """*va'Jم`X`cw؁݊-` vb1y7.v 3kw#H,%VVuX\.dp %ڥ#o_O Jc|H4{,A+ޡM |^C%1?ě}!ph_Yk UgB0ﱷ?u_w U,żKЯxD6~lJ?"Bܾ%/c]{n=~=" )c:#@6z#ˢ]'4]z+޲qҼjJQft=ݖkZ @{ ,>mcOn"n=/M|G/`v2Ӽ@a#YS,*֞O'>>m}hS\Aqhaߍ|~`j/e+׊q1ύG7a<`J7a@! cڠ?aN̏υ"%?q7'Ns]HfaătOr$Oj>IϧcruݮQdCzx6oc ';*waWm=:W/C-}6^255]צXoWv=] \svL菩}eL> qbW1wQ~Mx1 Xw#|)c%7/p&abǸ؉0.*~;k<;R! 8]@5^q8¼CG7 ߳Tٴװ~UY*탽}N.ڷw /?qTKO~C֮;r(_puς*S~ڿ]Y\&:ڳ"f8 C=)(k\v)t~.c*G|e+pWi 0>?=*ߵp"]=|^-.0\93 8))u>ӮYjlɄwоΰӮz3Zpk~(on(h7{Fv`܆0φiaEpo?üoc;1nʃ[пe$U&|x;eJ|ɽ~FT ;~7)K^bۀmq'}%۰"\Mq}кT 8~[?L Ac1e ,]Wm~`7,np9l}!xUSOL([,W,vhߖacѿ}>߾ (BxnE;HBOf?e?rD[_ǔ qm+p*nq[bbkشF'8o'] q;[Go{#[lðk=G OY|R ýGj #~gO;Z0[G79S݁{p:}@~g~ٸ:Wԑp?Ck  b='Va'^Bч~}{T?/5~%Zff U` m3YÙG뗠R\K -_V^|}7T|ڮN|! گ[]Ȏ{|Ihx_씈!l%h\ɞx_6>ESo 0d~ [X8i"Xk,߫7+]DcUOWfգXgƇg9K0qM >q=&8 tڍ,NVhnylnB2qClbs֤=7iNM x.zU}Zq/nz. %/}% U aе4]:=nl41,2/B<{]Oz.$o|N¸rKQN7Wh|WN%Ar W%7xө}K_~{|% 4C¿s)[zZ^d~=Ƶ{oYCcoa_i%[T,alx=^u c,:fsYz,].d,v*,!o6#xZև_A7I Ҷv[JtbW!+ݝ}od11qtrj٨dU8e[([eDn~g څ+>8샡/=Cqw {gGw~ \סٔglVS#[ͽZ s{ʮ؜.J>[uxvk,3^UP^W962g>dgG6~īQ3kT.;"^WĩoF-d q gӸؚ4L:@9a^j.85z#nMW(ٷEo1(7ܯH[H{/|&q?&׺2OySX]2Ӄy>P5_u8uu'AFVF\%i\qW|,_ꈛ/f>ٗNi& /@xjG= XgH΋6zVM{*=Xr#6^^ru:^D KE'!p?'a9dR o&bY߀]ӀU;jy"Y#~IJ ;m'~((8v/GyPOm$t^>;*EgqX?>Q!xAǡ_P_TɅ8j(CBafIfhOiNxrR-gF<&/cyGQB$K< l@32K "[ neWq[:}kMV%{N>I>k b>F_/^E@;WVvpb1o=0BS`wgW?/5 ;a!~:@J|N{]1DP{}Y#$B[`C^R in0nȉhڹM7  O<>xBBua#>9>!< GRe{h|63eyX\ed_2Q)ׁbjo؎i+3wr%nxn#OMi4E̻ã8c(=Voq<Tm:& 6rE;[ό@ ?$pp'_Z7aUE֥フ]/#X {#)^C_=RWdFnl2Iv}Il^sl^_V2 ONL.M9W>HHbJO$Уv6Ux |M6 F~#9W([St; f\'tޒahɞ_y3IcK㷌r`dzEx1Nj0  fX-?هn6# ܭKgA/_=GX8";ԛ 󺬫­*} ~e҃#{<q+;)2/sG7 eW]mew!k޲'-/g"[n%_ny- _`}2W`XaYMz@ra|!?#}n |CR346\ֵoȋdz^ㇾ݉xC3BV}~g\Oc*c=êw߰^+ðM}$^{nAQrWoŇ_as cv}J|U'?v֟Tf6֓#I\CVx4x=v:gLz26'nh瑨O8cj5Ϣz/%ɁYϢ6[/g]'reo-x+RKD(Iq- zj~B|&/:<։jw=a>u-8;֗VTϪ L5L+BרH;Uוv7ړ'>;@K?@ڧmpZ;r:;kYਚS_Oڐ~jZ駛M;]! gҌ@H3]ø/*^51Ja뒕V%U cz;FqQZOfYA[׬Ejt&e1_ar /)kv0)ϓ5_71Zt@>< ZV(qeFڻ?2}AϖÞ`}^oߋ=5>T~/Аl_nS gxgøX<˯lHR ğ[7犭2wG)|>;v<@WjB/t8fHKnPD>2we_Ceq{|Δnr=K݅,=t O~bsVV>_9^k+KZ/b=^kmJŞXvAyCL-2?Ulv6 t=r4p|^T [9H;&|Qyh@*My㋖ޠo\ǭ#O::i~̅xc M?һ{U/uu>^` ;^l7 m^O,?'GEI|4E?LJ}k8x?faxޫWWi^=/hl__7f?8jΝJOa>ڪrߧֻ@2P;3Ն/gi^ㄼ҅?y(%8I W׺>t/҇=_.;)^Z ay@[MuO* /<8җȮ77 W >gA{RdCՍhb#FBnB"Ix$oG>FSWq.CkW'lP~OscW/aw3#|d'/ rPWr% =׽#@y{ף@SwMEyW)1.eqȻߟypa?܇7 ~ f6b{1Lmx ϑGe, xF,Ԙl7VX0ml"X~̃ y;BߵQM_$%FKۇ'ȿ4VP`|Ś[0R?\l#ČѱqQgjq>7uAާ3璕/ ><'oFocy;xgƳx}17cCփ[򃳞 iֳuf=硑|#4y%|azn֋Ȯ҇p ⿈b{yq:Koa>2@-p(l=W:9a0,}~e_ aXc1''vݼ-@8bI /[ ,|m_3ܱ wVlkJ1< sǗb~!fqoa5ioQ,!n E1J1ޞx6Ҋb`R6|u8T/w>T޿Z/J/;o u?oo:|[qH}*7҈͔W8VFA뵼{> қy/q|o+];7~:Wyl*[l^AhVm#&8#Dz<_μk֫6=K9oc}U"湭N4`#7Ŀi#፼:N'ށ۸a37yT=}\GrVj?yϺ׎+CݿٖPO | *SѯzՆ]YjMq~>HmܫVPggkA=~n#] <#_DŽe_I}:!V[ kRYh=X=[(RC?y^kUG<ڸϔ[z:F[/=xIDbmyy]-R79^mt={4*xCK{`oN7!n@!v5{c{2xt%dߜG ߷}1۩۽_߾$qbw+죕}Oa}[`Ȍ ,ry>1l^prڬb垾mY\yΰ*oJY G[yڭEv{%~? ύ딷w+ojx4ozq#oگ Mi|b_t!]8u9O9'9q\Dě$xE G+ {MX^^Y 'o o`M[<]bս'8^N`)5kwx~y[ias~9~L?Viy򉕕snՉol|*)F~q^kJJa!}Rg&ƁU6>k,|+*I絛^#ףkj7}Bt*ȿRzOOg_ _ϝG|ި)xQHq>'Qw x^2Fray<ՕXʾ=kUðoKe?#*5q~Udw2rh=pXK_אP]*Q<ا@&ڇsjBjaO=A5},թOB3𻪈&ȇVEn*bj߇TU gyx _\i9IxTװX5CFkI5NQUᩈ9bmٕk`)E󡟼ϯv} Y]|hKy^tP9^th|?(NjF{9E?q>yʔ_<-g,+!&|.sW(@9~w+3xݘ'rmHC;em]ws0tzK/=FNr[R. wd}|OF6Fv|F8#:GDvrc">Q7y-~ntX(萺MEx%栝{'"ݥnwMv|=~zGxb6?UA~2{(::Yq{6.Ǽr?2NTE/5;A޵N0^֩k5޵nnx"SKԿ[Ix ?L~ꓭ^?y"' #LTor:S Un 3?@ fsx: vg4į{'u<7V}a675Y>s[,7cye> ;oz }_m-xxV􏙫fZ9^x{e0 _*y1˾l +ga֡Έ okzV)[vZmDhC5~VĞ ~7-]6Y^ gvw3M_p[훪h%?lto!_mgڳX5=-wVȿ>*ד3 , fsw_7D ZߡĻNxd?+Nb\k /ybVpe1~e̿FK{Y_<~,|lP6mIX.a!o@V%-ܳw^'li)/;-끼Mߑ뱞0KdĘ oBc:YO87#zW [BgRm-'M삸"/Aɕwa}WF6wݧq9֑^)fuxXf|mt·N`cgdsb=> !lK\浭ֲQ4l}6>_Nlݶ -ۮ·Tؾcut/i^vU'l5RL>h>v"^8>O|$ #0͟7GީB-_zrOuQ_&ZndqE}7l2|Q?S?3K#3~23+"%׹@?.M:z'F \7(㟜 xFkOF>{.ȏtُ]dҔX*y2M y3{ugӄm] ayU;(Q΄_y |)4V]W}n%wNwy=Ux Zg C孏0v~%=KawӴ9keP=?"PWc.Pq+b6|8Եխ=Zg9붷 { .Ioر a.6 nS̻u;KkΖngR{h4F]q?۵,:q|ǧ[1߱~!eO73nϗraf!3^/7K=_K[ZV$x>Y"uU˺`]G6ػ#!5l~CV Ż@2 B~֥jsiihlvvǣ+㼆&\pב6x4 ^_Ok‼CӀh#^|m`7 qMSbE^7{n8A_yPONڇup[7b3|] b:V8hjK0K A )+Ӎ쀊}ASNv"{ : y/6G *NrbfDG /[Ʊ/m\qQ8H#8>u~aOȅx2Nz c3w&\[9<v~vlx۟|mn6 uMS(ZN1ǢK)QEd[4`5/Qn:xT>hQ1nbou-ܖB<0OɄZj^_/c|pgVڇ>j@⌊b#o!{{:GgNu:#ǘwL 7]73;0J fOռ<׃%h<[> %{%{ނ?o jܻOy~<^ka y~a^]a:*W?5]~:+gn!\h~=\LuHXש npo3(\0><~Û~iW77~ߖcϚ4J f>0Ձfc ᦎf >yo'!xkƘ㕕M Ey"'{L[ϒzrk'6֝zW,m ܄}s 9V]887IݤǼX7/KM%\8[w?~@?s//="H{D;Ĥg T\x{;_G<_Gn\xTC +mU$0RoRԿ(;K>K@~lj.ޏڿ~PVy>BK'KK;qc8->7wq͏]>Jr:ֻ!%˺F,в S@Et'@~%ݩuk <ݻ+^5)޸D?7Ms%;A!{GiϓWb! UdaowϢ(uDy6?&F/`fDyjw%y/ x{/+yӨs'oy6#-o3y6ǐ"oiQmTK#mz߶B}6׶! I5}u?Y.x?Ӯ? y!xޣ= Q] NOqBI^?k<[yXe4͈;-/&'{;?N%lϔg>wBǒe+b=mx%UNo N>}#z޲<Ңv?xZ݃bP^x!~ ^o{hpz]x^^ W<3zs*,:1Rywԁƭsd E(5e e˿y}/QO_5_>x 2Tkx*Oa΋$> uMtN7t'QK nɅ~1DL' c (K:'G.OBWa5 IANu'@7Q~&x^?YET?_o>{9]Gߢ[uIwCYl yG껫X*N9V'xxu]2?:9V;|{uJ s!`}N"G<oK'l lYG_~H^ta8wQW&e}\|aNhvyCL =]C^JV_uza' u>Duh]\z?1t7:t޾PG)`;'8>_'84Ӣ8NvлNUnv:ǩ띂A4 N }'~B\b!8lb@2؜Qiꙉ&?t]qf9oE6x}97_ͱo-B<ޝɃ~Rv+s}+,`us|%&7DX7yN?ۑGx*PS;OOq kط ,BHjkTlq5kgqb2x5$|F'5p:ƷY 큓Sg~杰'G?_pDh'7tn  qB ÈԿ(x=n CqS=skt.Sh*ޡDOrvL Ic= 1P7 \"xb:% :в=9/v:x e[eq,f<-{T3'.b۰דL88B>~3qT [Ju/^X)p|-gY պs,|-k`m{9_˶s)_>ɵ5{x|Ƀ@7_Yq7tDd'ϧO'<{qeJEK; hay;ߟ58u~-_߳I{w=w+cZU,^+u,תyґZXU $/~.g1b[} 7g5G+1:-vvQ/.\NG៫XU钚W< ϯوs3O9ywVgp2<þg/B櫏2v ?>~:]x?;Ƿk3𼗩o,P Oyx_ MZ}k>,ޱa:8=;p<:gܧI]\S}+ sԍyxM,q O@'x1ϑSk>xo,~{X@2Ͼ9o& ͋8_~'? ZAN<7YX}b!%Sg] yo]-a /a݊lc*c>4~;97f¦'nPs☧dWc-CƦ%㐷nr8Yi[=dc%۫9Nv:)O #a]cKPbKgc}c7'8bXػz cWƍ[~v y[uaƹX˰Մ8y|'*U=v}l /ZZމu&_/^ө}pHԪF.s:b )s7#OZu'e\"+hK_<+ƿϭ#8E=h.2ǫw@PsRٌ=)s_~Qed}PyJ=~rw-7j͕.qgϭJtp~qCτ1a Gjru9J7u~. P`Nu6gT ~_)} BVv{_&ʋ y7a/]8'.#Gu" u$T'缄}>* y,ʟ*<( O-Cmu)M%ؼj{j{/ͫ}ۦc~dkj_zjv&ߤs?#?YI+CYePWsڧ n vv|U;#T]>/|pЅy^4h7z^]+y8!9xͤd^;4 l߾cs1=-h}A^fp33k ID>ft0˚!7t8G=l%"!XKzHuK5KRWiW'} cu(/|"m ut) ; il &ǣΰQG!/9΃ w^{؜>!K|p>5*PLW!\xʢf,Nu 1}bQ. \swr`褕>z@8Dh~?'pof=Lآa @f!?[+W}s?ߢi>GsC;G9YףW ~O8XI x~?P#ş|x~^pl2MtPTg\ed({D:F;+pzA3d_i u70 ٟ,V7YsRQUُ.gͱˍNaNx ?O%~%vKu>[!*6Gp: W}= _=`SQUv c^N&8xս>vu2ѫrzc\݈Qm\/R3+t(]:q/˹Fz.;BG5slĹ<Hwx8i`T_1؜jK^fy=cpV'T?~T}S}N/ط/~PD?x~PvN~t3甇+EzY=_|Nx>2_ǹVLv0tCC=&rĉxDёYhG#6Ǻ"0όޘ9?Zupsw2:(oTr[ǿ*uRc_=X"ll+/NG^m/gcא=dIiũ}[ij{^߿6Y?wm)>~eiqmPƮæuo%{r[|ɽ~꙯gpn6YK법,iV,z}xJ0iV<=27m-|lݘ!5,)S_[ 9[l=29O9q}.|ON< [ |y缪&z"ts+ OU4 K`u|UFh ؟.;iVIr%pzJbεuQ/X8uaTOuKx.\q+|X%Y9}/3ϵQe bSThtB?f9c6wG"1EUuHUӤW~'E .3lhv uFqu"'zy˨#3ه(3 -w- ? EKiG\%~>e[6Dh'ͧh?JA.{uA1X(–-c*ۏq$^0[מe8WV$(p:Ə Dg s k\D%=WK@y40B}Z߾Ey:jPu%B9@PWM?.@\>pbB9Tر ,%;Y ]"j/c瓿<5s}/\u>UǛ^"쵅Q$5Vpo'J ^["4lSt UV6P|9rStœp_`Vg|fg8&|@5gg8/q>ZjL|s5r^"#5QAS֓pKX` ߄uk $~AKb!eì)6n;5bV7蕌sS4}Znrp|w~ /O{ԨCuUxIVRνCn|vGˁ=YڋY_<*ZWwQ۬.ip6upRSNB6f"n3"jF{s7ٛWڅm߮myn^6me1_ݨӥm񖮳>Q=/p|Ȯ[1!cgQw:'{H:ٹ vg:꿅󓵻 @*xʃ&C'ø}.s e,-PS uM=NwFN3a=ޤK_2+̰hI~Gwoߋ޶D|$ݽw)yR.bJ QoJ2RB֥|=uܷC~_^[ hϘ.Nuƻup"!ִb4GL] ~1B}|հieW<^OE g m83y? -7LӦԟ]̞7+zfqkh67[ f`hv97ޞ դdh~~LE 4ܤgޥ.Qg0ɷ43iV $ĝ\OLv9KXwOn{~.3{0s7X9A:?_r3u88 8Yo]xls1 SnyЙ V~$/!/.M<&΅2.,sΌ wŸ0_j~qQ}-E[5% +Mt#l%itq^ uyy݈Ӌ8'ZY{׍8sU '^cVϔ^ue|^OΥP M Nɩc27Yv >6:N~ϨMP%>۴潪 y?V~'`XGTM7'=ITdڏQ}>.>w|Q*vdn;qzSW MS,=ko'N:s6y}(.2O=GZb:D.iL$_i;kQ}'*NW![T ؀UW΋8UΕJFo_ETh:vհ͘62tjI'SU[LxAqAǢ0_z2X>^DЍ }q`wyԿD {GB߱P%t{k1_#sWxrqעO{N1kσTJ:#e|>տXeu w)@; (_xF&rqPabu~B=ӿF^WP@vVW)>Yξ}ؔADlqS^ rlT8H:0?چu ftM_)C/`}eLTl]&2h_Ҝ+&=#J?Ʒdnf M!y߽}QO>KN擗\Puh\VXsLj08G򎑳ɞ>yG/G_JMi:wZ%~scV1s b^_b~8(t:Qqvj9QO8Ǻ{*czgi?? UQu x#^l#?-uy=rO 8]R?.8oO۳?;;?ٱ}oβ ع:b߽cEϴhN'}<|RN'-[YzPEgbϽQNuMtϟ:'kby]ӛ3|ͯ)~>A |g/O O_C|TV>ow)G݋s7T~~RixG&:KT~ t EӤKǺ /^ P(\z3?u8D̩>)%;/P0x}%@{{1!77#ݼ.KSuƹ:T{碡3zރq@N{<<^shƙwj;:ylqSl_vjڇ=@Np^SqhNM)#k;ߨܡ:WRօ_w`;_n[g?øUGyΜޕ{$OxݫX.M/^z٨C^>\ݥ=ukawB6ё}`'ad{Q$I0旞$E}cntl,Οȱ~( s#鵁Tӓ8b0ѓzľ.Q}f9x]姞Q]倾U8=%:P?i{9_Ý1z ^O'~97jF!اak_u&Ygǒuv+3#ui y-ֱ<s,=cN85u$nۡ5-BW_][^X_WYށϱlfX)'^_/➸{.1>qn /67P9KZyò_=Acnb\YGeaٿ0;-1?Aq2uY ײtky۰ #~Uh:X|+@ 6\!oMb_+d|6xv:x]!`έ ^Q-vl^SQ N{P阷9쿰]A.҆c}#<>ls:7tZKW۾oVOXқg』1 t m=Zmʟy65f<_:{we7|adٴwyK%8T޼!͛g] iٺ Jϣ#t3dҾsQ[Ws<ҨBX`[i,O@'Ӄ`Yj?Dv OU#n/uIfو; WYd/O}zp7v9yS y7P/_t;A8?@~in/_p.\dg¿WF_CϟAdcxkRHPW@ O?=Pޅz_:Oilgwݍd?ǯVO*ʯOzR<-7bE3fBa yO>a+^lQۜ{=ȻV/=J2_ލ߿#4$"2#kE=yӶc{qNzER3u[+^Dܕ9Rv/^sT՛|x^'2P_}ԏc=F燩;hry&:A.@`R ~:xb)/6^pu&@+~NxzhscǿRQ yТ<|Yط𕺌 x~JmSoj__5k>~~ x>~Dm@~>/R[^KFd&|p0e| ^q(_oOm+&ōןkp~O,?scz8tyatl|ms7 [s":@1wL ?.༚EQ ɱ s_O?2Mtq^',슸k/bnl@ƬW[fQ'nV6 Y} Ǻ/!^RŘ/(ΡJjャߘؖ]i#I`ߚHݻoO=9 rTx#NtNڌ'.|8I~X#P'X{ֱng1V A|?:)Z]\^_f4Ըb:AXY n`E~X]> 9zoW xe![usq9*O_^&+;R4aUBMq,++7sey qmF_x11vSĵ'+*%0 cߍU"aZozB~I0Й {.t=B95r|TXg* ċ:r| ]绺q'T7pYŷqM:9fcRP*zoiU]@͕{6M|s=Bݰ\~3O|r(up;4grxw0; 7%fNhn?."k>Wbenn[hB;P:6O):^eu#BV9u|: 3iajOA~z9]WEQ C p}g*>_Oeb ]QYh9㔅V< Oz!Oo햗WkWiؿ loy+o_&] <(/*4yy** ?fJ+l߭nd_9> // b yϗq˥ H^97 ~HooA,~Tu\dވ$oZll<ޑ_{7Za.fuk-/>Tnp6Y&:A{/^v aJ"9@q8'#^O+c}A+fD93/z®X2Od qon^r[/ cE-c8Sg9!QS_ teEk`2(t 1}#8n8T(5!w#S)g^RA9+KֻX#xWS=qvu?{:ƟsIX/+Ajc#b1;?pSpNzŃz\XosXjgxe-Nwg}ʵ>)GWCBb@ᾃ1O'c]c{*0^L!Mxq}Q6UynaNgx:r%r7  `7Mڍ~1>RYOzl.e3Xqʪ?K/dcGXY 5><^o}5<.`C098}l=&O]3ͨ;MK,O}ü.a;tfȟʱ>ވ}D2xs֘OSnPbX(s:DMtt9!8=nmq#;`5(!k`@Yâ!ke!9Wo0 ]nx~& zNWÖ.:\oN#+?bC\.-1q@~C|"p_CF=7e'ТN 3|UT7 id?;8/PopOG<}P,!ouޅz2M'- ɮԆ?r\x⥘;!bߤPh:P&:HhМ wD?6{,ڄ'̱] TIhu "/O9]:8ND5NolZo쑏.o,a|oB^!k݈. gf%K Ծt4m{: Cg˛v;اN28Ahk^G=,^1y~;0wu8=g<&Ξ|q.V:z΃xuG#Q?]hY4y$$8zFa;?48a?9b|L07 ~^>z".!CC!GLg;W~Eo^wh [Hoky*Z~VyPg@ժ^~tk;کZRDOLp^u`3f*WPYSQ!].qZ}3I7I}?K2:aJՖ֡@^=zzJaszJg3UZ߭e.;սS"1W9yp5lB$K:9Yf0cN/}; %EVgԸjl]&I{(ME8GDTW1S] Rx]*B*?$;?s0!oHeCsZ>:̗wnNi.' ~>/k~`b:0juϨ]Ӽ>AC=Ꚓ[0с<.a^o<PtBݮօ8=ou @ z9}r^Qg|k"ls`w8NS @N_8ELoi8) څz(wœ,.Lm~SÊ+?5IsmyQ'G-!=0Mra#iCP0m_A¬^ ]5'ԃE7',Ӱ cXj8׎׋8],bп 9w)՟M"NmBgհez;P'ϸcJY1 'c;^V2"Kf\@pdFZf)^hY^UO`̺z\Ϟ}%*>8.%ԣDu(ψ.α#;{comNzutwG{`})e*]D9]ʜժw,څzT@:'ԥz?`s0Pku Tgt&Dj]5zղyDu)ᾘkZz~B]ʬ.TՇ$v+rQ/j\}F]XP7΍]UkIYݷґ8=hˆ# {F_&"ޓ|^ynX`~v6FLOD$4<'6{l<~qOG' 0F8Y^g=h[]W&k4[qzUEG:gA[q:U=[ɺrlzS/Oо굛՛}јϜNON[ 77.k%dp^S26U2PUTi~~ 9댐`_u^$H`/>]a: |OC= {y|״69t[=sT:Qc@6=jn*[ P 4p:HȰްCDiȓͱ>3NߋꍾySkXWZb%xP^> bzEq[:ޭckC#/9;!&xmQ|̟-rW)Tځc*xy?O!vT/ 8`ٰWb=nh&mRK;h&}ȅd*q nߟ+𿵵.>ko<qn>mho7%]涷Nsf_݁qnZ?~¨WLoo]`v|>.h7{t^Q\|Qd| KCNmiuz!= ;ä1-{vB:ǞB? c]A§n#EMoU}di놵>cѨfX3׽nj7C_ ~T/rd'^OɩЬ~wZ (52/t*}.TGK],2>-^?cL󖄭iKLt }0(D 70+G+"fLS: L5N7[[bۼ8/O@}uc]LG'>Z0>"LQ[;XK,CDN-p^STtґX|}BLN_S1޾V/=ؙq-= ~-cϛXu׊|כOw= ]Vv}Ɲ9 >ϓrot?CtRm~ls-Knjbe<ҭ|l,ӳ ^Fs>!+s)=[jC8ݥh_.s}^o9VBՊ/oj}.)hOXVkD:SwuuY_R^cs7Tɩ^a>t~6<{;:+c~tX=.-tY@|<ߔCTiKzcNsγɱ^i~,6iX\!]6MV:2YxO,?`AuN?)}t_7t؃_hWt~)+W֜_,[op:'뿢 tdq ҞqQb:Tn.lYnTi4Nw[{ ӗ>[E■/%O*/qR& UF\Ngzz+J"P_IZrx}-ڛL}ITWI9֑~GCļ$n/EJz6D7r+Տ8ݨ4w8nW B/Ɓpc X$b-0%nE~Sv G-E`n_Ÿӳz8]+u+x]+l4&4Wğv6^qs&/ =H ӿ }鷎[=LLӽIwE>8XqGszצ}7[>BVdOyx[\¸ #N?f}&m-/Wns? UnS-JATm{Xq`LQ|O+cEܽӛ +1xu׮G;bp?<̉u_&]UǸdօnW6`%WCuBN< 2< ޗކ9OuBv `8uUa/" >sD-]МhN3lϩ?\y?|GKX:c/?6y[^hBP{Puc0ߩ?L~cq^DŽQb4wOMS:R [՟,a*ϛS?OqO:W7ܯ:jQA!+EPAbg뛥zxSw uNNꚼsfLN4WfA~jh5Rk7:5ð_CYb Oyam>j ~]?m[Zy૵gdƾ~c,OfMtȂաzdw: `Vﳮ֕џ'd ]ebl&Z¿\ ʅ@ѕݧ,*ø qR ι3QC;T7S4:E-y4XoQ}6BtaY:*:xNGtɸ/ ]MT o5οoe֠w? !p'Xx=[pNI{9tL<|Q;^ѝX\^f:ixN߂Q7OK>|npF羫M8SK@WCaeȞ8>+af&zP ʇu鮳>փߜMu?҆ndE0MzoD nNpej_:Ɓ}ju hFZ޾^O0s[^k>*&hW'zkouרïuyJzO>Bv>ovrzIq7o0.$uWLO#0:=_a-ka}B"p]lNw^nE'g5}I-K5+ S\c-|n;Ex ml.{Y fj}qܣ0o¬UXWcNOxq-*?, :FG]OĊ7%oHGqΦ XOe?-PNzt $wjc1%rúO}H\'*M_){"e2s^WՐOS i|SڄzuhXqߠZhۡӳsC CT-8NDy8=l 39W'݂ yJTb\oB=ݙ}gQ}{o un1]7K;vNǶ˭| cfl,?խzN]K2QhSZIP youb>|κ Ɲ|sPGz,C iwM jSz~Oֈw"xNJ_.]q}r!ɾ)E No#Р8KÐ{nRx:|൥*upzKӣ~J.]ɥlNΩ.-GӮ7ƬyGKӣSգr#УE3To8?״@oΩlmZq78-Qup7+V`vsޫ#Lv Z~184q=*,{?Kq^$4CECۄ="\>.gx=>*1 (Y/zuERLS+NG/(*l8RˁgST?1@AJ`ފc**:^q3>gWP{"bUE&:6_eG=**Rt7.A)]aVUQ =|pE-M0~<)؄_Р\ ԇpm2W4 -xQWدK@SR#9W ߓo%G?ӽgz@齍~l 0xED#:-bY.`N !&¼:t y"f tɏz. )?+ &:uy<ͻ'>w6mO ]p_{9J4nUz7W8GD_ta q]&祭xnN_\vDJrs:; uuNGCo诼-==gNGX>ziRꜞSW[e˘:&3;}`zjA7g|ќvϑpp ~`=4i*y6u0|jKjhlj4Ю W9߽COиhpFkQ4u4ZO}=hqG>FΣl]=~/oA;OzbE.N߼q#mɏenqv~oNW9y&el~ uD;;yH6BY7/oyWފxl8܁\*a?/_L}eL+ WQ2/_c\ȏ{ ۣ[&X? _'\@w=<:4^M}Ygr6|$>/&[q\P'Rnuw> sPVa_w)}@FPy}Zb\Kɰ;ZMGmNq5=ttN?dPJ>=`sz<l!A1#?~=~HyOY߁{j ?YA`@NYfu"3,1¹ٸ_@U9}by[ ɩ.ї~)[znT7B]ӭ|qdC i Q]gTӱjstٸm#GUzig<թuwl"D8}+&ﳔnUp_r:Dv)ܿdFSRq,I%KU?"K]vgސ;{{3𻚥^&KibS.dB]B^ǞY><ON"2! NUӛנH|%guf`ݗ1l{qB|;{9ܜ-Էwbb:7oY{9}[LΩn]Un`9CYO _wf?v~=<TޡJfckCUǰ׹zSkYױ9:lݼ]^~6gk|6cW qMRqe П,Gd<>u!x`kvv6vx>'a)g],}й>X!\ω1u-v~vep}=T o~c,vNw9;Ɋ𧎝W8>s|?s33M@}]o#6'ӑC_:;0Y=A.ӕ9=dOOQG޷篚Ȝn`ƁcП5vb>|x]Ӎ_|vCeSyzuYl Xyc6O^_%gɋ_00X7w{jJ cZ.7h?d u$,qD>bТh} F |GW@_`nq6?7,ECOԍT4DT4U#E#kM+M$}I|ג> .Itջǭ<By^΍R̛C^7F‡dΡǬʋٸ C+^*NQ= ϑMc-)~wB_X!~CPO3s,+ m_N.g$~rN_Tj/u+׷ ̩^.ɇ# BueDsypOUu/Ľ|Zdgb(87F+u*M#\ta'$$|%]>z|N%x&z|]W>v,Uo c|Nw:ꐅIU@~O4ɀ_@Xg@XU/綩:z`(42Lo 6y IM/ \Ye]`u@o~[-i^p~Ւ7#j%̯58.`5}{p7p|s&yMT >;\* ;h[|w0B ŕ#.?I]W>S |.ջj4;x.=oΚB#}`u<}5yt`A >K~q_93cx2CˁucQ7<GV+'rSsszTou{:8gD_DuυjxsO=@NtA19}}꥘Wq/vNou~awb:Tֳۜ=l1UDY-[$k+x!=mx#F @PB:#Y;7cUfiph/Wu~>*[򛎞'uC{gdo'p&86Wlܝ 7px7t(C߶}n x't>Pw9 9kyz8܈ErLO٢3|&?~GP~߈mx}׌!;z"R7e+ _1;py=Z=ü=Kwvoשdu* qzHX~[zq#Nt^m-%@7.;uZp*w aiP{8 =L:!ݞ09=wqy;uIu@98esdm\~3z#>y&/,1O/zx30|e &{vxsy 0LyYwlwg}9G|~PO  gt_fum>_@' pFKVHo#q@A/O\@~ #yIrq:']P/hBިt/C`Uu Ct} nC.Vp';xx7Cv/ӱ14f č ]U3ۚƟhybO%`MgZ3q%pCpybyybdžtb@Q}6:9ݤ{4^'kK5\qzr*r^aC+P!~#s3^]❀#PgS^p3+]xB}^˯<V}. =×>[Q\>AEy._\c3zyNq9՛)o5%әT_6 }xMtE\{v1lNwt Z,f潎#ӛMtw<x׷󪼾 .;T(5qnBv6=`#d$9ݨh8>o\F~7Kgb5RΛ zB;@kS1誼neºfu<;X< }T#^.{U]\G]Q[c٫zu>NCrƇ?,7 u=Zz9ԗGmNgu` `?1~Gloz9Xخ VG6w}Hq8ݸ?u`?~ɦK0W;7X=^ =a_ %%@OTh Q$UdnĹ[^$ kj+T/=3껁F }qG:t1C0ѣK&.]XIE%u@1ZM<7xRŧu=] ?աTY$EuK {θоAui1=Zo.mGScKsz)kVns0ӧ݀~sr ՙ?3Uۢy֢͆zuѭ O_23 ^Sr#K;;Eu.{zos6ї9]yW{y.3_ &:3/9.W:.3ǧ2TVj;!^8P5p?ĩw'W;ϑڣAhWD!^uwWyY3i+`+c?)d|Eo,iFȣ0PFZCO;ӽz7s O!g=<y};~prO|b_Fy׷ws-ԗvN_ (ԙV_ CP_~7yY#;Yf/`|x/Ѩ)[-?ŸӯeWß_uW03Mг98f ~zwcooUhotaw]}Eݾ79}E'>MAWopu nɺ\cp]. >zrc9yuS9s%+^8WrzF&|OjƝXwr_ϟ!u[idOuX9VK'sz=xRF{a>|vryqLyGuznY q;#fcKb9=8@ o W>lύ/N֟'rguّZFk r]kW~b:v>$x k`=VnPJ?ٝ#$y5ܥsvG`3<^.s..ߜ(cݺsuŸ'@ y=#Q{NlssKmVN1[_gA_ι=~c= ĭ%ݹJ5҅t*ûa.|.G\ѽ#9= kN߽}*)Yο.~Ꙋc7v'\#ōFz'!KnMϳfXܥ@͎3fap5yS±+wQ$8n"a/kS  *YcU*mG/wx#AP_r{=krnr#tU.3jo<[Q56EQk]zx\+ז6k?y? DRS^]FyybVIc6^T Bx %w`s.zJ8Uty;>Ӫ3ɾ#;-xgf1CTgΧ ȎBrdKNѸ ը9B9#JuQ ţ0ǩX`RD#_=W]~sw|2/jƇҀ~K܁S=vHJv>Y6jPXt0uz(45:V_"1>_\MvsN瑽{-/`|g( اn?'Z yQ$w<o|ѳ1?W{Yu^X:r_y\A8oH4 ТQoA3]`c5us¾q]7\߭AU߭mgjo0dN~ǾSPqz)yU wn.!:?k u\ѹɎ}H.jFc0 ^x'譺搽ߛK!ϥάq'?:.**؁(؊ba؍؉" `"؁`b(X, ?k={]3gjXvܙXI#/8Y~$w 3N.@:E>i40X֞yܸ{JC0 1orKuM[Pg=t[Pgا2d7d~Wpe(7heׅ">e^ û)mS틲^܂+4ZB/gy=o(+v,ʡ Ž {q_cO;[0S.n/t֡9@mW34A펣 1|,}NʷpĜ ,W 52}~ ZL!SO FY9u[u*_2y޲q|[ ,0}|PǠ;z}{`7LA>j!4܁mR;mX`nK:! OrpB0>ϱA9ϟ݁To]w7B@ |D[;{ɷoiOm̿4xeFﰎe-s>ށk'Jw &=pDcIS+A7ȫ3>y_0dGb~ zғK R cG=ׇ%rkۇB.Ǹy%5o MlzZ-##>c;~Z@MW;hH|H\ߓV ~T+GC8ץi7N|~4/iNt?}}E gh>#!33#(g ڸgn;q$S]gNoCu$^uGI_$(w߷:ʔ罤2mo0-3 &+KvGc\wPo+.Nqp.-gŖԶ]);>#Ǭ&.m==}h6{'KC>6[o"PDug}m_uG跎3D.帿+/3 e"OUOaA=E'O]W1/3).eqnД3műÐSrR^NȐsEɥО:R6L=d1|SAE\KЇ\ϼ5HtnEbիP9aA=_D6 K`cPQcfܗLݒ}D  ogg6=&L~!$mQUjQم|Y> ;:ȾB/qQ7B=.~ƥ>#S >*;J̸^c Tv,1$1~ϽoÏюQ/!tq4%58/W`kQ<8Dixpf)WP-h]s Hf?2Ҏ#8 h__J;Z?C;fx J;)Y1 w*O;yאW`4?w]c~%19L0Y}csE=ö8s i;q^V(a $.t7y~ "+CCc:Vq PK-DdYyž׋j~ߏ{)/!sxsLO&#Viͧw}_UoKͯ'sh~WJ7.ͯU=;~8yxsvL(ԙJNʎ4cw~T2{ M'eoϙqn_hmWhy|a~i?/y??'cZ=+OO ;?j^?ؠ̵\CW7h~^j>iƧyya>~i;u)}*`~_n3n0G{?|>MbH5x~MhM<VYyWq+a>yM[<UO>1 ȏ?E9K͛=|+9^XK} wW\мzVѾSŅ|=j*:s f9|>(;y [|ඉ]|!cXaP_&h+x?/BE3|z܈3v{tk,J>ڂ~6cM (7Y>=\oKq$iۈ%) &>% %%l<}cALy%/Aڭ\F! rNI=LR')m|;)F tRyq)uW\z]u}pzqCow*)D>?Q1q)P?AD~;ʛEw%Ga[=E*hiGHX)LWr9y! I̼0Om: #mGZ"+?#1k9j{Npe=>H9 ϗG ~aQd}U,_5B>Vj&r}{Rz@*vQ7BHy(*ZQU/ҧ|"'R qxB7BHȼhz+=s0żsq7 f&;M$Onϓ>\\f'<̬ [aH\G»loHv@Lɇ~Q̉ z1!tbo0hb?̓q.d!y.?\#x8s( }1oC-˦2+?TE6'aX/Cdy XZqx:bC[D{* HKBY${qujPSrW^UANE\9JxL3nEDNk1>w,10C^kΡVS\s!uyׅb#oWCPOwk?Di})?h=^K.WqDsO2>>sH<;2fد;.'ϓ<^o2'~Юo9ѷ}׷/|[F H㏉D28*glu qx3c?q=8ߛ-/IG:PZ`^uwY㱜Gke=*otaYkXkgC7JV2 .zNCxҭd,Xy{D?Npļ8:;Gu{>|Ig<N%WXt=uyP!?jbƢ>K*S$`Ico7)eN)/q8u\;%Q,*½Uv˰/:?x![gn5FQBytx=Qys֛W1#뛥McSW_ϯX3øGrgaѿ[SRp)oA~x~%9_5~ߴT]uh`JD7cC#s^zQM}.DɃ0ރ< C;${8oawo!9捜~sElɭ[8C >x y7O')|;槮B$NĖAdy WxKmZ_Jna\0fM!/lr`=gs[MQn]J "nA*sIw ?ю?u By,s\{1] k7|*aQ2 X`"g_\a{k#R'b#GJ"ϪvޟxfGyVVmԋc~y|f^hnI)yz| ODg8wPEDKی<>+/?Qռ=͛Wڀg?su!~z]W5^\inJp (|%߽i-Ӽ~O|Δ| |<CuF2o:PJyVa^fi8yŞW'^k K2+OɗNL4o,?CK sXyc;n䏥~?1}}:-sG컆~>ðg>r}1Y>.<韃 8gCkrD>:M8~+%wEPlWMa&y8WX)}= 3b=4}usi|̫̓H'?7gKuc=;s* !k7,Bxn4m܏U9=]O~|x"9߽*wk{O @YjyԟZ'~i>7Jp^2[Zxi-/yu! yW<o|XZj~z#-ozHw)~EtNHn*KwY%.K,I9磤 8"} MjZ:綊uWQĸ4ʧ)ϝ̼z6XͧӿNEJtgϧOshZ,jٺ#/+mF}qft;7 ̓ Oh'~~y[_G·0\6WUh1hYؿHr柅yga٣LDV擏'_ Qs-<8'E`;F4G'OU֩-0~*of?\<|>[{ l.r~O絅kanJnxTcKO y;٧毵kVޚ7Vg參FiL3by7_lf6W;;vTyD^uwG.V+YB\?U.W4Z&!瓝^xW|iJw3o,zzoO#J3+OG?uk7O<<3_^733DȾюUɶ4suW!>ix;W<;WWɝ];7WGFK8Ȼh鏻wm@?0Ak(y ƣ=p]|vcZs|md";Mei^9S ~A1^c]@Cڡ~h<4/?Ga>ڳo7-eNE=Tx|H|χ>̫HI(2RnE;N]qUwĹߒrծ)a+h7_9ݵqfО'^qhygyOyb塥查]Diyqh/?{U~}({5H'3?y=0ӼǞ㌘vY,|J512+}[R~Y,\ّp !nG7Aw`ZjZ 2KL5A~+1}aӯymU#[sdҘKSǷE|^n^@o")% #B:Ea<6n_[h^ |yq>s>v)5-8o>d?k8y!CVuyl]!m_ylm;c䱞$?בG$nN!6'3E}sW8|00(u9w}d- nv4]ĵi*Mݵ9+sgrm0Nh׹)w6띛L ]gF=Iҙ\߁s4;">d4䫒#B$w $1M}1no;{|]yj]Owt}K|oyrS,_@X>3h>^cvꥸy#}zr}OKk=>{by2}k濿4yun7&9]bLDV>N/?Qk|Jxb?Nm6)6{H{Iq-.6?GٶmM`=5HYż`KO?}1 Ǔ}ͣ~40'5ʣT}tV\ ]pUj x̫+ytU4_|ŹMJsa|S8ƣyqa>y?y΃7uݧapRMbyc'/L]물'?uVyd^${qF0.+7 JWk2'h^lCDa~f yg$/Mͯ's}u9'5iy0xBc HyB!?J~w✞ڝU&q{y| wL6F`Q3Wr*!Nbxz'78q&iw?/1RN"s/; 뽮^]/]/Nb?|[n7&gכ$Gw4< y4~7"R3/KļӿAv7\W si~I`dw3tLyq ~? 6"u$qr=̜݇ Žc1u , E_E[\떡VXXMxVz;ղ2ۇZClY]L]a]VӸg_Ko 믿6ƭ: %71Dx\OLC3=Ei4*bϫdöa1Oc{SyL闀Ǜ2b~+Wr},xc^U$:m\_事Q a= 1ި?Z\+mGW\;9轆ݳT3֩{%!uY;{@d9W!FKc<̓яzb pȶryq ?q?|w BzAFpJzEp]>oP|.({X~]\ޘ?Fܡ?nyT)aZaqyS|i7|"Ӱ/dOB=$>>IQӇ IBƧC%(كZD]ȋg/>DBRבuH!BRT$yVehN/jQ6>IEN!{}ى+)zC?H.hakf+㕨(٥ƾI>"9Q?c*ЭP2Jʺ零WSyޫ nUX>哓9?vw+̭?m ʼ_nv"">AmD8sܸr]-|L[!)BB%/l}ѶCW׿~z&/C#з}&~1q TGoU3꺙ObWr4ϴv4+}'Tu4ݐ4G{91Iپ(lk)zUXYJنw{pY|uw-ԳPv2=˕o?;Y_#Se#c}QE`vt8h=Ƌ7*fhqnJu3F(˾YoNVE;Fk?vtܺxogy QƧP7r]=mЇQ9h=+9UCݻI:{{`m;JnG^G{ZLwr\2 8}X/)EȌ4z"0u!ԃ,wCJ ٸ}nbDa_z *ᤴ;qWbшrep7AT xOCXzGDc^\EBSڿ>")>aBx>Y>C1|XrX0u d^+/7}&Nƈ[n mm:q]?DnIX)=@XVq5x 6 j~ UcqH;E{a^R~o^VF?~y~U ˸u0¼!O0>X[Oy~-/_\~NyY(z{{M?Tֱ;ָ#NF͋cc0樣c~c}[{ A^P Xk6y*!V-:ϯߟye!h, s&QI}*A~ ?;Vm2s&uu=Û~cf>N4/oI1>?1?NOyc10?r yk?Tʿ &6:+nwwV6ߟ'{}<i9֣j^ȷWGj~ls{ֻ )I)/qf R~}qr~ŰQ r~C;{ڝ_4hG];W.aS#j6Z/&eH~%˯v":ylUwPMڇD6y^+v?:A c2Qlbx;^b|3QMG$򙒽c&$wCE6ƥngz NBmѳ=sS;^b"ܟ`z G81ѩݨ_xܺ3)ێ'eZX%8)jc{|-Yc!ϝ[ U#N/vxGy'qm\2-dak1AT= [ol9= ^=Q^۴p_液X߶VxmIEUz@=̳-2:G`?n'|dycџC.Dܺ\1oO%}ƨ:6a9ȏ+9^~#Hhhz_Ӝ`xpmLjoPS<>"E7S&|GNE2D%'kED+t[&{}2)?i8 NΞDx,I#X.!i/NBkӑ\}^$MWrj僛NB#0'.BCR]Doi֑v)ƣ>BoZD/>¨_+n]ywF=dAsn;ׅΡgu7sNws R}âXߟvw=H7d+ǗY:֛)ueue> SA=Tl,b[XǞCQߓv w"]2]Sip Gt$_Ԥp?k|3n.b^.tfs]Cae}OSS<*Ⱓ؟DgxO3W?k-tFwOa>b; I FD(l^w #x ,{l;RN5un1/j&nE:#?ՋTlϳ~}OW̺"?w)yㅗqϋ-fR݉To3}Unz޼z;D7 .fxb.Vz`>!x_朆2Su Oշu(Ɔ}5=uK'ԙTϫ՗{pܝ~BJ'ԕx"[W qn&N|>@;?u'ԙsƹʼ3yb'Ӵ7s5ӝzĜp3݉ Sbz9(j{UJӛ8[ɣHu(C+OƬ@Sr'O F˗P s=J^gwPQyLyo/8.,a6~%Q7lW mG ˁZyݟAS%yPq~w2B>P~*C6F98}]Ųh]*c Ҥ oW)ڨ.9%}sUtsz\E/0/S)GXOOׅb^%_q|aa9kUy+b3|\}E7tWT^J=8BGHr㏙?)ʼn(]Ok8"IXW ޷Gw@nHuUqV8(\xø 0~.'W$~uE5|5LXRWty_.紥~ 3ɘߑk+Ղ[(D/_ɕxLD\3Ռw*ّP?ԑ< Fk<FX?vD;1Au<< mEQa\=+: ̖+;y$3 x!a|9s>y^t9QQ1ڙZG9#>V٥Ph,ơlRe8fVsG$μ,&vwii01seU1пj72~^VVգxUU/jا 1׸BV=WrR u'+P';6:OlO݉$+ ?9U΢^Uort/ qНD]ޟHu'Y˰"ӝTd:M|G^;o?l-ّP?R'9GW?2>wZx#~ y|$W_|b$s } J+턎KI#~]C7EInd'x}1y;'"a_}#i=/q1ż~k3B_`<ޓ亐,$^:j51~V#?7˦˚C}n; I+;mYkp?oqy_!Y!~AG#E{c×o\6:qq[hWuC\?){[aK]|:)S$3].5&#ש[є#ubt8ܕP_goȮ0?s88|4>O&cJ~6ZC~cyܼ+pl wh[R>cAxtwŸQk޻b8>bWĴ~luMt![J`]_n:T"D45Tue=a=~r%+\n A\; զz[8+ ];@tj)9r{,CYk#a mHbb  Q81,=Fp3.hŒ >C#W.c;q {_2uG} נNW7Rrt0eW gayѤq4}e9.UɮC9&|Ft)QU!uPQ;yq/wy +=CUA]{˻ 5Q/t9ϓPs9,Y7߱ ߠnywuo`ni];{Km~*;nўzUGﳹ+Yc>)֣i!9l ü;zXc΢诮Xq7X <beQ>/Pr,j,'0ی<%8`=, 8:Ee>+RsWDM<+q~; UPU8Vi+uSZ ;g}űC ԫ+}Prekf!+~R3џºWӮa y0%(6 żwk[uS=lH8Tϫ~$M"JlL1djn~7{i] 0EgLJoqI[$妳mH!mq׾^(EoM 3?"|-o%XחúRڲS밟IڊN7NCK6s<,VQn=p{Y~Cm,*(R5AȉxHF>wB?A݄Kh/'%6Mt[וMfq&ctbs (\|lE &]{* ^ߏ" Z%q:\ }ºP?dfCm'쿒վ.nCzI:|NЮRi_:v's->aJ/qpa<^v A!NдC`BۅGm U8BoAڪ7-:,`>"RЧL DGY[ΠYsu2}ˆ>NgG= yu u8,P(ce㊺0e t@B~s2>!tNA^i t f_r,r{b\?cSӯX Ʃ]2/)LmSW" Զqk7-C^"׎GSo" D$/u 1'zEC`=g-:@Ed17AĎ%xUu ZcL?Ѣ6(n=}b~ _(4km.ǻb/-^rNwB0.95*.aB@oџsKb:xz!*z[!Rw09e3dS@Uo𧜁.`[E]ؓ$D,^qW(bOuo5_gxU;m+>8=/rIgyޡQH*'woa;ۃ0m.a{$NG+N|@ۙx&qR?|ٰY.P™b)h/1h/Ecz#G^GcA@Uw T?(sț$: E[/y,r$6GO]ۉH|wJ[ߝZC0.u {O|EC{y;$9on5֣PPPiaDMx\z(yzFڑJyqzfGWXGwHyc\5(_fzC}Z$Ƹc>3gz>T"Rw>:d cF?UFDe }=g C$OOGdr3bm0V:}7kiLqnPn+n5NZK{> U=k?bpN0XBUwQg=Qa5KB1̿$K=CB"DYȆa4I:"bdeQ >!9j&G4z"H|x689ýx78ڣ9u c`cF]|_m+9S B"?LpZɁDYԃ:Pax0U/Bo#h7R[B ~';K{9GHˌ=h&g"OB}zdC ay^]yԤx痚 9އTKމtZ'݋gmL+61%yW0}@-9#C IY$C>6J_%9Hl ^z)t|\ϫ*Qe'-[e)2+w էiqJ.6s!cxgPf9mЋP'rg9ED ɫ?:C@׵FA:sq抭]О!Qﳿ}onB+;ݟkH5w <>>s} ܟ\(Yƈ/[˓m5\q*Pɩیj{TT)Va}JZ˹q| QIe/CY2w5оuYTBAʲ/q/DǽKpKv/ r7e3q!Կ{1u0g7Bx>5X>&y IRيGASp%;3R^H)_QN9S.<'ثdE0ڧ:\q/q=D$z쪸v ̹yS~OO+:${x}!OC>\y^syGwN 7NU#: ʝl'6{?$uf4Fy=:z<!&z=&o"=D̿NMgM[5:ϰNXH ύ]nRúYHV4m݈xvp RӶ\XDMe_9+$2QW^h7i * ~~;!~%#yvB#>|B/)tby q&s(vZ׵)(Bmqv,1=R^s;us;pJ;|~~w4m*;-gD*$fe$ 2Ɣ-OCg]Ws/R}9[~.L>w_}$ǹjM>RquoA}$c ,|1 y>]bx0>'^]Ď8XQ2. }ЋhrBA]: Q~*-yT? 6/E|?CI=WaޞpߟAB7v7a8_oR:lTu8F7_sg:2~8 yGeć#FF;\2IՔɶGQ_]ŹI~uRNu[< $s@MFPߦW;!xP o߅Ƽ~n4('uDoxzrDgg򹺳I9:rv2qc )E>Z~nϜCn=Hy޲7;v织a^pRc<i,bF;5%?;ɟĺl#/OvV#}iO%:uSK%)D>'gnz*-:*3IT,G%Sck#RGzzKc :Sm6uXqxOU4ytU+:{*G)8TBGukO=˫[;/~Q I藜OadeR\ 9s)NܣbRs-}$e+|Eh }WX.깨߲m}Tv\U\,ǵ~=O踶ߋ: t]Qx,ߕWէr0_\Xkh'<vя'|O9/I98?{^Ӟ<"Ѹ.?hOkb^Xɘ.Ҟn]H;W\~y/J_KW }YK/O˥Lw\x:?./\.kNr$=Bڭ(Cb<~/g=øWNB+vq]Q8ak0>N渘3ӚW/`Rvxsݙ7X?2mqŜ٧Mx,#٨flŹ@;=2f> 56ڏx[ z0HEԁ ef`+KYܜ%Mfiz~&K˽=)xL=~.!ٗl>c*2:|}_ޕLbmQ?1D^a!xߓ5riX.l 7 {71 }XJ2 isEX9}|~׸1;u?٧i3N;G8O/IYhzEI. ўD}fk?'JyCY1<ړxti_jc_6KS_ujWفJ/o0o( '1 ;Ts'ϹdRo^:cH٩<ޅ{&影|6Y ۿ;ŢW3Srk~_^Cz5S+ڟ[(;ir'dz^ڬVjOP/NMUg۟}t@Ӌ~;p/q)MBqi̻soԻ}0z7s5 {{oK~e:*?{~oyxi*U4g &YZ}W\\ߢGokx="qe%:Q?^mxZ~{[яւq[`/nWm8=_*{Q[㽚Ss2SիS?QQW:5O.MSloV'>Iɾh/թIi33ɹZyi>L~.tRqy9;]c7yݚЫuͫۥlմ2]g-֩k_sYDkh߭wx9v/ ׻YJUv`5J]m׶jR>+~,GvzūW@Yk=n=7}Z$<^Pss J7cホ:<@Յ5w<[Z؎zuZFՖ֒d!nMg'8I:gb߱$qh'uV{DZ\\y8O^@ qԿ|M-3S׾SnMLvWX23JUCrpIe?5\wE( T!R^*>ySB7%Rb|uݔKM_9yFwh7߿O1>Xqfl[Lq)_#ˌʈ3;+yb$A꽻iL}Gg_C6yN)ܯݖk-Z ']ϫ |e[_~9r*j6[ĭw]bUγb9eV-"q9+ܼzݮv{vwQ(ii~H:X` X]r=ֳ w$֒r#aZr-r=79C= yI*XJdU[>(V{WBQ }!PAD1o̽}C )rgx}d\_rKk+R߇"UW|ZwFFH5|"oT9-܇"9/0Ɗj7p=S%o(2*(2.QD[x}QٹUz޹Zf1^k^7Rjmk֤Qpĥ^-~; j'pݢfy R,=&ѽRA:ZͅwIi7:^v1.uvRی^({Snql"6C-%vyR~pne^RʓҁV)O:&םp.v9x|OE|ZyRou>Pן]9,;)0o^=TgMpS;nlsL]ެJx4<ItwVLݷ8,82+'): گ@>y.o1yǣ.ٚQ>wr>\wq ֑^Ƣ)zF4vBi3,,w9jġ}KXQNc?Iɱ}4j,ϖWokԫ8OSգQx`(՟23މiltGLAVf(굫Z(❴$G~h0u/KN/\}['ա-aGz O_CM1O2_4R>s˝kޟiw7 p@}".Ϡ?Htsvׯ+TF &p_>#tjCsNQju~Ml_3q0Nطh 拖{ض]#ޣ=ُƐi/qӾFV+d'l ǎ`k~X_Br9R_N Z!q5 \YW$N0|_&.F"}H4_Jb$vuEoP~,e4~ANdjAw>2$?S7}1pb20γ{cX#+J}ۼ,W(TnM@d}#SPo0.cwKqRRyڿ6| S_+=ӿ5:81~/%x<$U-qhԕ^%MÒ%-Ǜ ' xI;cIRsNgC?y6%wD>/= P ]^5n~ϫsS by$ĩQtrO:`>1/;9xm 򝪻+I?^U7S9~]'<.ts?nbX^NPqjϓ7⎮lG.Wvƭ Kuuz"8ӴqIt?V4ut,?O9qx?=Ӕcy9sUulKFsYmB\ߎCyB4J~M3~%&Ǥ111ԇrbzU%XN?oy0/E]!)fϷK(IcPOλZβKH[nd:'hzkޤc ]96d,Q&W. 9ÒL&o -dr3c|U,vxc=sAUXj3\<8ӏܘЉQ +ѫ75 uaz0꿦F}Iu^~xcދ??"Jʯ<*P 2ʱp5Xf:4j]Dޅ鸚nx2[bnKk5Bޏw[ Xn+N墶Xv(JAm%wPq(sC؅CE%?ICH肶-y>hw g'txz'A̻!:-x%q1^IPC݋EhזQ!)KJgkzySv2*xOZǽ a~:{O^eͲW.(IG1؁s[$J yD}J}64ž 1nΈqejquOed*ұjoјkaxXV\t%CXχu>,(>H Jf!8?N& ՇO:N`uSmpۙ ^S?}w5P/S?wt3֑~fŘhvfGک0ߙ2ׅnP\Fjsr 26E6ļbgoV(S| y[%#yG9j'<B;yCMI ^GUv9.} rFAY]g5yu5i~L$C2g2wz]E8b/;^@ bHSп*zRSU\/Kba.g1eH[\r O.z:հzv;^ڮemWbg/L nf gKh?35t$qk4v MnNwD$E~Lߊߋ7"0#?uўz#/Έz{}{:?_e;d>"1Ų)x.Kx~pQCJ8<#SykhZySF$;=#>,|svXg>/0ݏGyS{,TSpĺ|=-|Ja\UϰZ_h9r'F{saoi:5j~ƭ1Eq~.â} u1P#t0ȗf(vZwkb>>f6]( ]Bh%z.Fa#j* =տCY{A~?Vxw^DU{xwZB;C3"}gJ;R#w|~gb]w1n(~T>,SoHn|oLOùytZ֡:` onxԱOü6/t1"{tl+bۚQokl{8ԏ#v]lW"7`> ǭcgîJnNix^ļ6?J;bnI]{A n.iH/VESUrI-LPtTIUqޗ{%uOouiGZv'}(+w}փӴҡdB$;WǸBG*yrJ'ipuJyuIBo/)'rAva4.hW.h͙jgmѸy_&KnJwR!1.wċI>`|XOIhq|#/1t%'KICb#ZlX̍ǽѼ_ $zkc~UџFB_D]Q?#6 /gTҺ6SoE꺢vf/G>/&;א`OsRԏ$qOv\Q㦺m)cdk Ƿ?W>&l_;"No6qVcIs ~G'J? I$yyu)9)%%*?Eoo '2q(ǭSQf;w跏*;.:"(W[T&qz&k8DT׌S*;~ݷ΋`\/#D־JM&Ŷ2(-9[nJKMVJNu 28OD=uS,/zz?DI^e >ϐ:ڵ[KbCr>7燴VIdҮ:N~|ic>w>#:}t@~w[/;i:ߩ!L贁-BxV}V`|}6i,03)nC\I8JNzohzD0Np]j; TLyuL7GdyEQ3{s#%VQO}S(I~E,$Lw`qo1+XIgb:& %uݒo0҅Zwqz_5:&/IuK.svvp٥Dx5 P̓i7N\b<NgƔLs~9(:ϭCL7*de~rYU 5=M&>/0͟3 vbeteYx3 lc'}8H8$5y4oM>F# 6- 5v6@>Hԗ!6k כ)GS~gE{8i~{#·WvӑmtQ݈xGR^UwTbh<9h8:q㌸-i!sx&-uy~gطGx6n,MOzX'cS)v7o#vNGsZxX>s.a 9pWQ,p3$159zJ`>2 g3L¸MJ觮mnD?!ߺyn+Hu1ʯƗcC;5:?y/ ^Dpzr ^]yhr+F;Q=Y~V^~Uv+C;Wn;)vGQ ۵u5a| 03}uW[ўّrK'UvC9fwET܈@єQL܉\o#k\}!\g51)Or4b~w3gɳQP{oJZWyu?q.I_6h'չIҁEʻh#?{iy.Bb_v0{raXk0a=7Bsj"W\hܻ͗owhG k =GF[c##@Y_{QG)? u$~:݈eИؘnd\iΏ%;u^QD}n$"DtӋ-~_m7""ͫ?u#b^Y7ˍE4D>>[D®?B^$";G8X~$=IɍXA}uu#B%9zM8mxslrތIubfȻ*>8ߏ8Z=]Я<-NZ>"哫1^˻xE ާ|۟u!mPaonz.]/[H^\Oد1oA7W-{|}ۜ6[ێ~6hl~qNىloGm5'ؙ"nW/g]KkRv~vSK8 N2u"v s OɃ\e1s5sJ=H7Wu@>^ QB~KIu%;Q?"þwnd%|˜yU#kz-B5[?x$ֱ>e Qk/&#ӧ8·dLQ+%1ؖԇsXO8&>w~ 882}͑gmdƼ<~MnF?5;Q>\I_D"O- ؎!t2Űbrd]|0o]hDSP )u<سPߵCNͯYF)g9a=֧5-שsa9u}?T٩A~*nFUu+Bo:g*iCy_rs/t&Wޙhx%W7Q,SN܄ʓ(9طUmOfwەP7y+~DFNY "U's~))_}TR}x"B@~耘m ]H$\>DBå ԅ=T2"֯q :?"b1<b˘.Zu> }H]Ã@TG'?@rGؐ1h@$suiu=1*iq|X ?=v BklGC:OE;c=ߪ?GKayzrߎ<ӧ0E HDl ~֍zI}\:X3Nda;z1'r:<{k,7{\'B}Hj/8򶲴ȋҌzZh|,3̓v EL|iN{t?XGڷ2xz|ECt.֩G1՞#h*fڽ^xAT+g:qV?w"[gѴ_{_R݄>b=-NWSJRo%Mڝɤzbz?q05|Kj$ƝL |ezdTy/7WƓIZyy]B٫y|mW뤾3i.$;˻Wt>1=? yn'KNRMw"yC츞ľ1?a i|L֛xH͈ yM%& 7UuEg ĸ60S䛓΍&? 0 $>}I9 Ⳃ,o&?s@>1kY'iUЎz'sJN.҂w}ӂӸYiQL 1I螼}Nmgܓ"cq@*Me*8(jAoUf |s)o!NYKvRB?o z5= L32aPV#3%4EK]C#/9.鐦܋GʫCb>% EԴqq /Ms2)vr}Ro)9eiR>Z\?;S?Fy*7;#+?{;1]|]S'A:;ǹ* *5 &BAߡ?I۠Gȍqjq/,J>،u:/>~9eMyJW?u:B3g12wr:,*{>%;N:: #Uk-k*32B[zh瓿g҅,@IQ;$/[E;bgI!Rnf1h9\=)ǠԋsЎYV7>hi%c]jνu\yGI?6D?'p)Wd?YH'S ]Ik; ,{zW4 EBמ.>x#*E'hj~,#kȳWa92Qar'Srx)w7a8/9?LT%EcdYe}jVcԕ=q})S_؇#u7>7𾃺STc:M'_rJvbncuK+7A:0?/=D|s-}0m:D~kEVMo%Ute2 x:v̳ :8 6bN{>R[ }kX>h̉>v5D q{{c;%_z`#ԍL.ϡdgrR $㹾ycSJПzU=Ȫ2q]BK|k aUBz>crǴFP֢(kv{~p$+q</a=ꃺzHx/ཅ^'<*X'_Pב|A`>C2,E3.C10bBDž_yg.Xg_QiϮX^ %|ki8xa+(oa%WQx)XJߞB(z >)s,QWx`eOz{迮"j;T!4XA9w~4{ލ8u;}P{h?5|~G6ݸǡc. lsEtkG밹tmF{-(w<=>w;g zMy1pgy:qz`he8 qh3R=%eߙoXRǗ{gGyF1 glYb1j'I#"2Ysu~0N^= ZB!AMy"|ljp9=\ Uߜþ։f1~|n,'!G$BJIGKB^$2B7Q ;DdېT1/QS8R]cA*Nb]bbz"<яu.џаpo닮u)wX[\rKᾗ|igiH[ y@ڢYn%T*wewx=ߏ<j8yR Q"+㢞Bw]S2uBWu"UPGT<{+}੔|`y F,7OykKHtENN,crӻq51x??_Q? ė7/'e%XME}IgJ%nI6+YZuY_=H}lR~^_<Ǭo:?ʹ8V e}kx-q'ח&sǿw %ϑGǑ^Czq{稄]G `1z(f5)h?ڕ[L#I9f XMx G֏ D#"]3LLW4!Կbf=РWOН}QC6Q̣PQ{Oxg,24#t im9o:U,?Èy]]^ݔ/_TMulkMue#R?E}MS4$>a6W:(MmE#&C=v <x ?L1Ea}1&'<)<1sZ(⫪v} q>׷\1f)?OߪPꭜrϛ]t5R :7zz(Ꞔ w%z=qk-m^B3z$)|oҙrqLgO: ?l|ERXNyQDјROu|O ?{R;Yr?Jܷ!_"[]8p?/oǭ"=-:$z*~֎AT'>4~1壄.z(22L9hD Pɉ-pE]T#&lWoC^NQ*W*W+x#1G%:M*;mKTO%tT)a5KŮAwS!y)ʫUTuP*vV$8sm1/uP*0+9('muOw6z'1礮/\c>'+5r#r/( W$sݔK}u\T^=T~9(S?^vPREe.]IEbl{ʓu"(sHԥ  S\4ΊOJBOӍHHH2G-p|}ف?wI8*=Gwa}w:01s4ǧNS`yv` xށ5삿=B|mra6&t`Ů}FeRQ׃ X~Y)U>|LR688am.u}I'cĹ/mp}W7k5z\M%&1״u WVGugR?]C?5eܟTvOCSaC;p"'t nVDh9o"ðy I'LR~~%sB>qNHq+R>tv'F>[IuVeskK pwnowc;>7|Jwc1#{IX'LvGyuFR}Їnu1l/Tf wN>^"wXմ#~uPOx AyW5߾_nD#zwj{ /ps]E+#R1q a<\|Kb]A;yԞk'#~Jig$u_7x:=ڣ]ާ \W[/X e! ~JW@m+^ +19W8R報eވጜ ;ePћtw߸#/"'nwC/a#~ӄ/tD?JHaz'b9"M!9Qb>YMyvB+F9 ^\Q/YnN!~FnXeR0c%3D˵J"o#׺vr7LӈlǭG-Sm}ڦHQgk喻~z1`{`n0I?=C{1u?^oY}>?2Џ:{,@ޣ_~ v$;(kH9s"z -Hܷԇ&N `:E 'E i[/*j;II9G>'}=5z{SUx4M!rN"˻'" Z"_bX(v}DhgA/lH+}H\IEމٓ/Q[%wDަnۚ\ ;X!o3Ebgq]UP2AD:5mk.汮G"4A1N/6H68Ԩ+sR=$~ sDZ#QJTMK:i>I<ꍞ?CF*hWkQD70Ӹr#`Y y@"ꂨ2T 㚽Xj{N^i<}еYXb 0 MYQ׸BwRNSnȲλΰ82 ''0~į_|&q)[;bGO]nejN곝0nx^3(Epb|wL b>u}͌О1/#P#t1q)]~Q}Li!xJNcjxB'( 7J݌nzs[}D݌ u1N'=H;8{a{MVyܸL{\XB"-CqސUN~L[9=kZGbzaǑg/A̗W7#2B'{aͯOs)ӑ?U).k^\ۢKbs'A>2ѵBh77UsDf]|Iv{WQmD1sq?EzB5#ߐx= H'DGI )obvhU7ƧFټ&suXyu=,w9t b.v8J`J0NE2ejzÙgQU&L!=h}9Xo:u7zq_V_!{?#eO\ ϓgS v9V(]g0_p|⺪Gp7Uou8o4nl#ɻgeo=07[RlE39sggC½M_ ZG{MbK.܉XzYFE)9(~$e8aB>Ca(#e_x)\/6w0u4B?#* u[-n(9>1TrTIw+8gH_E혏Yx2a8?FT"kA\> .߆}WR\yC?؏#ūfR^R\/s*+֑I\[:\sڀx+t`+\G8eY8\K6B粦*/"t.OtW. r/zFyv/ Kx +g#ړwK g'".F(2WaR\?˩ ìH;n]Kwø4^~6=b6A&“ćxߔj8'KP- jkǤ6J껍[a>[Pv}C.,ٵv#jG#pmGhױ5B IA^kɾI w'<ù^l7tC"6Ǣ|}3_򞈺!/u@ErjZȷz7KvAR=PQsAӛF<&-߅z< cr?ݐʫ 2FIG;~j}yLcw>M}F?>uW| avBQTJ3&ru6 31^9oFk[enަnvmkr7rmf+ =7ǻ/_#t5fC¹q~ v!ʢ5ըoT<1e׉rܸq*#ьu2Fdyh>~#n >Gg4f:zq緓>FyIej8ܮčtw2ub=˰|_>SN5X?2Ǹ,/sxgDfkN4<ѩ7i;ys˽6ļڑ8uƻ CHKy/(a;Ӕɫ)ʍiU fzgLD/71f^w1C ˧<ʌPp?;$:0Ϩk:ƒXOظ/l-ǰMD;s/qQ"Y.mukCoqv<Ѵo6ݹէ]`_e2oiΣP7k,ݷwWgĸш g1avhP̿^hDݿyGڽ]4tƾ#rE<7R紱 ˿ن`K@_ Y!vv#n1Hh?Uo!w58YQ]7j;oTgTR/p2,C]̱}}PKLǹay2/q݌_[gnneĜ}e\g#?U D#S{W-쇑e]oJhٵ=Av3 "0u{3OL'{ƠOy˻Io6]dԫ_@9iSvbrks4/pChU] 4xU<cQceV[ u-KzSMe*)UuKu|H]JяsF^NGU2Ug7CʽF=^4dI|~ 1y^uh<|n{ᾌ|~$5=!](i_i6G;FSyLsb~xs9) } u1,C'M=LrZErZxRm瓸3N@̼󦒳ᾼwXy=ڡ82%=L0 ~tC{bWc^Z_M#U$DɹH&Hu#ԋFކENUE{ R\89Xɧl[xǸX_M=88~1XV$8q~EE)H Si<:KUE{RRE8w*I:x'٫Tv+b.ef$%K ΂} ӥ2:Ky>>q)ߧ#*bN0=Oԫk&W^_n5>ϥw<ʌ ~e /ײ{></{I=+n:<=.CSH܀[)9ѫB&~'>I_Y /xGN=%s]Mz5v2C#93u7't3jzQ'cb_)wL~9Aܣe4dD|LE+UP֔KyY<䨧nO;禣^S^F4DnF]/C}Yv0BҺpa9\`EU"t.d%qzD%b}_jyM]+^]?VPչ쵟X%d]¿Br3 ݋#?y܍Сȏ˲K #Wt(%'uM9sKmw7;JqN.>~+NtxNw:=v=+oN]IL10#ӟgy9S)Ϙ-8gjMhRO:Dy8JǛW7i ƣ~Ffҝww?_ GMbFU?3Y7?r3sq?Ϝ:ζ1|gDa޳ϼ?enX;c\nوl<Kt4YNyGS(/Maf2B'3d<Lx>QȒ8q~^nx̧_Qr+Rq9EbnnKp^c|ze8ƥE̵Pw2\d˧g&X"W.RBBzχ^7w܊MSsmԫXOz(#zJߪ~&e/^4]x[tX}>O^\Wii?fza?О:n՝_,ʼu0^x<ĕw"}4Q/qU痛9<2U37{ޚ0Cp߇aswMqka&Ͻ޿:*i7:::i&#oM\V|~߾;c?[:?AnLen4nGש;b`ny뎝@℗$_Iڻ!qi g9ݮcb·:P3k(gC=A,ϓgdzy0NuLD;HOE#7{CQS[9RQz.Wnyfzzmt.(y[wi0<8@t,HX8bnF]/r21)H\שTO-̟z&EOKMG92ErUֶoDrZK~ױs!2z مV>aƧNdMO9~Wԍ,9Q?"t#| Q׋t#U?"t#ԋx\q"C\H~9wgycy{ȉxL~lC#% ~ g~cp:0Лč$  &mq݉ЛBMu1wr'ʧǺOH=Ё܊ݏu ˁdl7^D=ˁ43ӁtޗH ,27jzPqb{yԟYyά^C]H~;I_U!澷v%QVv+sb=s}{; ?͓$:awrq82[Dɾ%L'Ce/"p"BB=ˁ<*D<7d!;XNcНMe4f8!ϑg!/IY͸{oGLܧr>=k =gO\ e}E%q {/ -1C8"'/bÓIxIyFy][%~[ 4ozy5 OD.}ǟAX"qkD1_z Yi6l@"uWOSk/T#azq R%YWɤbyu=p:gkyƵƵEq4q{|Bx&?w`Zy:,W+ON1& ?RRĻmH}?FR~sIqO>O, Ǣa#}=w{xқF(SwHf%uЗPW)G"ُ8J"ÑBC;#bn?"v"!,s מ _(AX$uUn [G}F5xFWNC3F~󱟳`9Yp]UWEF5r%ߨQ:hV>ƣCU1u^v>nN=ǎXI8-@Nűø=;bn"%#(1{|` %X":s+u_>QAÑC]nܴrnPޡ8_oA蠽:ϾNbҾ\_6u;ˎxJCHcp}i_Gv/)Kއ%ݯxä%tZ%Ӿl_݃xP» M]YxG?뗮_K(Ԑ{( }uC{tSb3\ƺ-u0޿YP_A]ʞ ), =M[ [}ڽLeا(|UZQWPWP_;^g΂+]Y+\U')Gz&E] \x&E-!{.ʓ1%&I>.$n #qf7GԊǹ99/b'[ NXLN-)~ߓv>kzl#Hu6y5{/Ez1.\Gy0 Ļ8(a_TgC]Mϰsho5ƺ5FlL7w6xDOUv7&R u70<}oY>a={5Y`\p7ZZ-{#0OQW}:rwW|L";im[C3!v멱(u!I{UF.ڙשڕ4E}W聨J?˴d .%Stn~Q_q?:`xNJzSoj_ϝW7FL!¼ctru}CSOu]N\ݢztjMDYSng^hx dGϣ})u .QS#5 >v[vzqy|q#|Mc}Cঝ>_n/0%~==x\Wl>h=C_\q%rϗdG!-7':H'}0vLz"F,?>쇨7 y}nMp}:$R/tB:|R=B"w>NB:ֹF}N܏g:WD=N]gggH"3GSMr/;%b"q*O:_9ܼ̫̒ۆq~u3?!ܔxÚ(ݱ*7&7NO}3s81n|cʅcpy$|chCڊ݊݊v!v+6a *bwv+v+v v+v#(v!:ϹY=9=a_ٰ 5833h5(|1y5D}2ݱ߼'ZEc{w;bw%o#^|=QojM\Os~P/ma8ŲXմ:ރV6t۰O +2 u {D˝`|;M1u~Ϻ+ދVh6BQJuEStb6iw`^>2?H~x~|?<< |?Ziiz~?c^~ ?cǒ ?y"x.)1üGF|q3y_P)'cn$|BI^R 1 RjVG2_P!A/ȵ~U+ִߵAG'Ana>b[c"_2$V@> .|Qxn!jF?:zFDˉ+9Hr{Pk<-Qc\'a1S Ը1~b}g\A1)y lyy҆Q_ vը=Es~8\ܙ=ǢA&iEvz{{-jii[h~ը}Uk7-o{]݃}/9929*Ox839ֺ ~+%UglU j}W#B]MȄZ(|BWzo29hVD]#Mkm:2^m8L?mmf2̊SYI\#b!_J'YʆD>) ?BY_poROGmpeCP>ZS =+&"~aGguK&ΡTGu0U碷ϊ:W}gT2U2O\fsq?9WpFW4N9y2߄Y[qYޣaYiD7ԯ%iOFb?}) }<^XE?ԝ.1>(CPUy+߄_Z7WLr1Jҷ -/'T5G̟4gi83"g_?\_"NG8sy.J_B^P:-&1~P&' eqߘPv3)!/-?8@>J~#ψDۍ?+R' /!f1_Q+^$ﻄ(+ڶu _t_t;]#>Wͯ?/ 2طg5 o3<[9f]uC>BaЊS0>nB6q]s`im! ]lD`mmC>agsK%liD֑JN[f I[*n+L~Cciq#'*U7a~*ӡ?}Ⱦ)+2X>w1< y }EJ~uD#R 7/}DܘoV\7k7\ǬiYJe?kzbugigg?~] b_9#0]j-J97U*ɯ !!vSڏz,wHAО>$.EW|Go4|~nFj}Fj}E > G|,A$$ya>]ȯs)};̟sB=>EF0M%P_xMc~ue>wG`|/_ѿ7pEm+4FEVj4f_~\cZ+]eIӬ4 |>'-6ߣt7+)ߎbԜu0^_Ϻ`?E]iigծϼs֗.]ؘV(w04mtO5Eum϶ˋ m@?bO|:'vCc?}#@F 0pof{#*gɄrw'iBW3'"^D>YscE[k"&gcqj6zF}r}7qVS Uo䳙 \RlV|y7sʾOs;>?ɇs/ WO2Cfw]z(uh}7/_.j|:#~OkFRO':+)tE>ؚFٜCxN_W7 xn.Z_&3 =nYi}c;]miyz:ϱS_e.WP_n5(]><;'ݐ(oG[e/F2|1;>y̙.eOQ?2zx/eoyG96I_ eQ䨇gEϥΘDih^j8Z$#]{tiy'k΂ujrtm` Tĺ_ahy:Ok{,C}8BFoI!݈6_34avcW䧹T1_Քw} 7si^>$_K`KtEޥMA\]E_>y.}A'iPίG8ܷTP[7%:g&7\" ַ֯%rʹ-ۿTF6_ɦ+y+_hWG|D1Uٴl KQV7 -Ѝ|Êܯam^=|ŻY8hwncێwEw;^pW&x:L{{Ż>e]ObW7׋%*.ؗȟE>%?̧?Kɧ2Yd['C-F j\;p:~b\NX/~5CcwEh0#ʗ/CjfL [TR@.:?o&_t-k'_0k` .~-K>aN{4*s3J+:1=1&+P#K}m"_ܳUzXE I:'NY]4]QI~-ozRS1o1U !hkguAvb֛ ƼEٶg mu^2|[̯5v:}Ϛȷ5Ng,v=̟:=ڏE_ԫWGEڊ IFƇb87_GO1?>t C51J?je<.I)}P]1ttuj;8~%_Tx*'e,сS{`}*?%ϧ_}-Oy}f º>ci}Y;X - ?8:ߒ-˃;XSB/^,{"z~xi.Vӗ|Z+d>-=Y)˺/s褪}Z?RZFi k1?k |/ }Z̟u0"@Gi>cipyhJ#;q#߭p}G~EJOv?"ecE[ِz_,.m EY+ tT8wEO#Y'c~1O='">R{95|b߲s&71f6 %X+xxXm(5eS{b|X'aͨimfn-<ݜ70Ϝlu0|0nNc$Z-?s':F>)+(+|_oPۧEE>0R}y1W误Khϫ[;]OkZٶИ3qj[˥ #eo1|]8Ga-Ycޔ} J ۉ;m4*A/(y>b^?H _>uy?Ϟ7S |tqG9|<G}i1MQN)˟3!7~/M'livޯ=ٿj_O/GgXX4 s$?>vaVڏ3g.}M|Z?GgT5/Gٵ,7/m/w̯1K(sϙ=z]_γs$v.E~o̿N@=WS9䫩t'_cf}%辚ZZ#j9Z|{~j &GOKvcOG`O/q?bZ|_ʭ>xN'I?4ڒL۬q{!ԧs2UbU蟮r̓я~ŶiMd2mFԋ@~ > ~7? ʬ|sx[J!>݋Cy a+ƿm\5&wq&*俒F_;3Mԗ\? .ECߥ.pf/ " nU/>zr!MĔ|[L~j/Q }0%͕`r ˽kٷ}0`>҃ Vhw/tE,zpGSƆOE>WS~od>@e?imk!1DaOQ_Jch|}ƏЛe>k `~ie.M%ߎ)t^sUt hNן|}/t?gq.Oc.szdx_P|Hs/50ˆ8. xuˡ[h߶޴yg?^0+Jxv'9Nb};Y+ QW7OF)*L!EԂCo a&y&>;0oО~J͏|1BI%qd/y|1_3 1̬Q?k7t} >:7{ʳ~C;0ˊ2'bD]VS{>~.3Ӻ3ZODFpK<\Rlu$e&xhC[:ߍ\etxE_a=`QZ_%ni%OG/͈KV$-upDR7KY-{]1~+~Ogb ~^6:zٽ` ﯹFtȋx+?, yGNWYu}5K_g-~VP3ޗ;NCıw;6*;._ǎw{csi=c0+'h<7#ci^qcf~$S,ŎuǷyz;oGo8<2iN}8O[ EKiL|5e6Ǘ }E賩_3 3j}3_KUV/dx ;&~?OtXd)eFmhxcy%q?,7%ni2/Eb꧰PsE3gXid/O@wc,i?K /KO̟Llگ%}OT ::#<@b֜x_&tY캥X/wY(*~ ݮ- >soEt[n ir?O΃qyLu<=17OX/~ctFm:Σv .ȟҾ`wEї8'kpdo%o\zuwF\qgmVYSi$NoGu|%txM9J%?]!q_Pq|8|tK(od({|5Mq{4O'|5ivE>'Eͺau[cu/i5̻.8.&n?{To~_Y: mlG >b~l9Ho|6j5+j"'l6V[O~PƵP~?\ [a^|3qG,S[@%.61"_Rc]d>xLwa>Z/Cz}.O}6y!Q{yE{Iwv0iW䨈}0| |/C/siSmUAUcJa֨曀u`<*$27+1 .WǺJ-_O1Ew9Mc ;f]C}ipn|e\24ݿuaxoA` \g|5v4vH sa>_1 ~Ȱ!b}%j}LW}?J({n9,7ayu-\IqߌZc<|3/S2?7#˸^}rtof34^Do|(/ 9 Z/,-oOp_+{=r%x]L8 rBPZ`GJ~RŘgk+g%?ϞRxs.j"6EY_<1z |)0GI~}:?'їsz(ΏpDQd}۔ʉ2←aU }8 '=wF ʅh.E 3,_ƼCG,rqWE"8kdה2Q$g~_s6oF_sЮ7#XƭF9旱5|(e߄0+G~Esl)p{_++k A }&Fvg2\"os#\va,A%\05Sq`~}*eH_e*E[iy$Pc5.Ęĺd%xco){TWsjږoYEɷSc?17cJSi[,ڽB}lHZyco~rqUN`N=뻔 ߙOy@߷ |n׌G{)| ّ'4$<6AS+̗b~g#׸=okd,툼&sN(K2Ǭ4_ɥ~|$yGgC8Y1DD#_ܫ~Ork7D?bjeGS$?r"֩~*9O$COs"~;5U כ+FH羼.q)+k>KDOGofsTqTa{|I跡/١=GN{d]D]d 1GII=|P_1*jDzW$ǪP^Ue}~u?(dK:~r_Jcϣ`p_; .ZW8Jcuwo$_3;H:~r_?wrW\?Eб Gg W s{$`~aZhg>א=k`~mS~%CJVW1lʎ]>z / [[ڍxy|E="o! ӿ|s:">k[~ӎ9 59$1!JwĭKhZ{wn}{B"nx8Ab aC|";`?U!p(*sv?;oǀH5a!'%~4و|O@GA_A w'Fvo]: K֟@nep3UI~Ϡ K@_'X䀿$_AYۅ0>W ǣ,Q,dK>>~\qn} D~Zc # U @t.U0^#`Y#4}?>~^{o@%|BҹQmpms5|>-'Pq_U /PÄ'4dO+Z_ C"_S")頋s.z=3i9uO\rEKRw2)PiL,'P;}/{?K4!i7O)^/'?6}yyl =lx˛Ĵ~~sYx^Wko0GW#o\;Gmr]vɪmO- e+Q˷"͵νMGƵ \0?̷ǎzƹg]Gm675eܛq?m0د_`_1 _ТcAḮa`/f[_'r=C0Ϟ#ڽƺ{q'71 K׿ױ߯m9w2wUVcƿ ޖI{7w$KLJs3~͸z7[">q|&1:~WF=9į}wV،_ܺ.摸r^Yz_ZĩZemK~#j G0JZ?˝˛%+aF!|7p"eƕGcEn,2&7Y tEorc|| 'ocghݗky#:FU6GOO qoVߒdizp!FENxϲޜ:FKBp>ܚjO+$N}~qj?K 3y>sIȼg.` \5W6O^<UWece㾎l0| 2_Mk{}R?,U=LZ?q06 lJ/a,7{~ynX4FghY#R!1x\D/On3r˚d|qezl#/]7QnxE\2N̝sOߡF틿?ơK0}ZzӗKtAtΛEQf|:cj9P\/o&YȣAL.>* J<Ǹ4JϷC{Jg;+ cqYoydYęx3ϙe\9yrl܊('*MřE^%^LgVzܶ`o/nzp,r`_/(Ash\KUu%Nx3x8ds`Ӗ /KH\@.}[8fW2j湰yă/j9 QOy‰`Nj7vٿI߂}1^H)nj(/=W D G9My鄯1n/|qS482Z"ZsN7_NGZ@h//g \矑7ptga?q+;qQ(ח֘<幨9(""ɸ 8_"|_ENSwG^}K|t{W⤆QE=7\P#mCdt7|/XEc_sQyQ=F(yuWC7:֏֍|1064ؘi㍍q.3 ?ؘ'i1Z!ƶV=b/g5ƺ1.΅~>Wm{淌2N+;\crX*qW5g(oeU_ڴ8? U碥hlouߗ=ƻTnZX]P8*X}|<6Kd抚ϖ9R5Rf^wAdv%au/_m4?6Z&ⵌ6>ey+Kux __.|Lo>c8/UcMD%.i/_+eNR_J\.箫洆e3brYCy짏n(zb*qZe [r>+NyE./};ǜ=N֕,e {TY,J<+{enWF+q 򺸯5cy+㷉V-<Si_783y=mȺBZ?d5xx[dM/xD82cmv\t0*rQA=5yqOM?㤪9g 9Ns>כwr\WX\5=S9V<~{E痌[\rqjO3.Iqէug|rrX_-<^5θfx/_-#ОJ|qZz<Pˊ#~2^pUj vC;o!ocz:xC.V}E<-'rUQ;|S>6}sU=yyW?F㪹}}Ǹ꬝mE|ulC_6myjYz_μJ#{qIo-O7{a 朻ݭPSg5 O5'rρo3|?/~PN8)ީ*5Nh4J1=qzM6a~_Q*co?G\dy麹8gZ[#b"z!ԫ)SEdymExJN+Zj`NZ.to!m73W":cW.Dx(y(s͙/QNi9#ksgS7;EB/S_~ktcngt8fy)rLt_ e#sK+OycWV3އ+K[~-!]c??uG?}yce|]c6xM<0D̐e7yx8/?+8&/#e|昶Vv}"jf_kZd#%y"lta*A<P )"y`qO?W=d\S%)R5ظʕo>hhq ! $~8#8b>c/И"ewWǦ:,Wd(]᜛Qm@&7s/5B?՜m8SǑ-C]NG #yvm DИ|-"1ڡYAYθYx~ܬS/Şwt>ٔ20^:cm;mFڧYFۯ>w} 1bF`yhR Z4b龗鷛Orwa/\z?܏C c߇6e'ߡh;t-9h w(t2=J8alp|08e aÍkc1i5ـ6pV$ wq3]W'^+χqʨg.ΘVE_-V^9ʱ=\s0^-:]2.F%z#}]4>=ui"KSu\cN%tXr&}\qylWr0ʎgޝL18_Nۚδ4κԴBǝ#ie\ZN@ jOOnMxrJ^y>˸0~V2~XeZ.sWIc8G8E}B?)~F=v>J]e#'㠟]ǑCc'2l,ďm~>fj4y^<)ƻ[x_r1?Ϗrd?.K=G6dXW[?xq˦}k5*m ?@&x>,ujaXH_kݨ=mT/y[xa⼯0_ۮծhu#׃\+{yL?8(+qlq[:^Ưr 0j~]>ucowαGx׌[jwWԌO@:[[YƫUͭkV__PNCHzʡZ,;.S9$%.suˡ{hA<&4i,djƩŧ6666wn!<$,z>u~y< #8/W>e=xD8iONȊpjq,<1qmuܫ/+<9uS<_g4l(O޷&\Ѹrd}!_ΦEf0g.?,7 8sbP+xƛS+ߪ `\9`w3K5_CPN;Y79`<7x sZL_qi?gy7Z._!}bw+0d_{6p{W0ÄF>}c=c,^m~!֌7kzs:_4Fϲ6lBQ\c&?P{#qnNxU㱾Q+]@<#B<[e:<'t&q]s>/Y>h?gݬcP]~ws4ߑNCi/(v}۪1 v^Fxf9[ȸ|/)>:,:oM%ͨا*~Rw_;nqBY %o(esy9g+Z97e/8g '͚3?O26w{z[y ͟76O.G]wrQSM`*t9_TCy#%qO3υ~"a+Āi;ɺ^ߍbci؜r`^}x#kĈͳB:|~~j{СBqCA ^[Z; Geǟ;l(T=c>%|(Jܘq~!/nxjΩ/fry㗌#}9:@|1"cDWd1y:><- ߟׇw17 ? >MBPqѹX97ysδY\;\=瘀(+N7y7L䘱QYτ[x_kfK[;at9Kn999ޙkyJSs5f\痌[2>Y!ZߌrQNi=kۻ?DO2j3KoeOgy/y*axq"ϏwuD-dƑ>%䚃J\Wp5|yԻj9/3l(O or_VBh{Z\keƼڦ0v|!Z~UeP"+;]?ӏωuW??5/П쌗߅D^{8zZXO?? x<>'3H+̖ߙ;ޙP>us`޳ZDA=þyrF"8>קlC%n_&sH1>?0y.lY 9y^>yy\Iԋ<N%yxY88<"2]/{'ȳ%{5v>ߋ8蕡_?G ˟rUO"r'ۭq WeY;aEYę?Z%wqLW>B)~_} aU@_ jƎ^u75 T]E[ulSu߶Y#ª)L#dz륧g6j~ 1)4 6cQ-Vԟǹ_J3ՙ#g`3Bpn@L3+|f%g|YLgyWc˯,8:1"G+!ǵ|tcƍSʇW9q֗1b%Nܧ,m{is 9r_{<>셨u{"2,⿌o弆ݷqx2:Ӽ]5:}}H\ץdƻHW⼣6Mڣ)My^#q*)ig@⨌pScRg)S<,1f{ya ?^+Ʀrفxbl\6a~Sy^~%90ehUr.دyf u󫎞g1㴆x߯whso?1Os g}Dc!ߴ4.F _lø_؁!y Bn*kfDaܔR%NZ^28i k]Ƶ֞7Iz{o?7q5i5qc6yf_ڌl~myuC`suXL[eB;.s#v#isUrܙ/W}*ڟqݥ>wuOȆ~YsxtScty2+;@c,'~W5)y}\޼-&'幛d3n qr=fx#Qe7K+D-yYT?U̟+OlCo:2exWOQ>9DE7xFgz17㸞);f~JN.x\ ~tQ ^@YW)?ʺ/O7u=1noGZص7:!'\_,d}E>X2n$9!".9ԂqAqYx˴eKqI05I5Y_ p7eI\z.Z.P9t󟿋1ױ "{Kb|~3[hS;qFzNb<{w01Vt?+p.7C;p"s7%ޖ\6xۡڗяl&m:ݒDnu{m~Z>&b|=ۑޜɌ_6rm\"G QxE՚9Qf(_q 9&؇=}e>[~"/wZ2_qO{9ʿq)εtGz ;چNŖS[؇< ;-Li9\!9H0PU 1^:4^H7ӗ.8Q7%9Z;qKluHo+܋WVM!がxԂ7 9ZwgsS.üJO}/qOb0^ Ĺ271#\Ux@ĝ?$7ј!E~X! Oѩƫ{G<9G8#@g l/<>}?E? aOi'`'Ų~fh}s$Z?h->-oy}?q cQ~Zl:ڟ1OogQŰ{l)_GL2n\^ni՞WlGs@%gz r\Z>wo·Wz2._n]J2@8~K ùdCԦX3(cėM> q˯2b\+ 愝>-A}htb2C])kq]{r]bnxO߯>ļlv6ŋ_x{ƺ֛}_^b='|!9*!sΞ*7dBwwqo$Bo";圩C#2Y~Y!笑Q;dv'7I<_r_ܯ84so[G9EeU*=O9i.Es69(qO%޹52Ω7o9+qיKh9\S_cZ♌c嗗U!K[)^sJ}VXg x=6]s`.%>ohºm :4ux7a~?ۧi_u8U# n4Xkbz׆6#m׮|h2Z{Li{!_} nzި0q,iˈčKAs0zEna+>/Ƒ/1֫~m꫿^ȝAqf!_VɕCP/˞"<~`y.< 8&חGsΥi.4t"hƟSva:2ɥ˞A ,nD?m2cܸ[{ďu^29?/Rƹt߉yqM>Փ\עk4ٯw.ji0ǝR<*jhW޷_S; f?ː|M!?I]:$ 2l.Aۯslu͠26j{?˔ \OʌWe7nT ڷ.qWs:zJ>Pש&u{byGӘ-w.t|=w;'ړ'{e|y?g\˯G乹\gz>濋ۊ񝮂3^~D<:rMS8zu;g끲s@;s1s`*ѥ-]NEq{Cyob"y-øQP1N.G?\CCrms;$- _ ڢHy8qbܸ1"{7n|@_פVZ ȓ_woc܄bo't}NpC>mI3L>9+co7gqa yI]S/qvͲ"δFS3N^,2Mhl2^\2q_vr5[vo}h/ߠ;݀FwvzG<4ϣ\:GKgwf9Ӧ1d^!ofY-WyG^Q=2nx?{ rbI5*xqC4pcc?8j>ƍS>1[Hxtӳ[ʞw4N{qz=7cɹb`SZ'=1rbcmX ƍqˇ}B 4ۇı-3Өg3m(Ninn#8['jr[&#:ѷ2ՌS|GSm=mI?_v3^*|CQo f8m4^zO{! oպFz#'=^hI% Ҟe%NyǪ:滷1ni(`n)lO5KX'jϫ5r<V~aUjͫN5>j}:C?+4vazݵ7G:EQxz<urБR^UFZ.]=WE塡qlS 2> I j. mg]?)u>ۄnΣP7%ޯ)T&]{z>y>@\+s\侅c1nks^)q2=!ܶB nD35o=@9r/ԏ?"+*Z1E?%sؔ⯉UJ|-tx9WE6x}9k`2ޚt,]xnF/8Bc"[g:xC4mG6m=Ѹ ~ʄ~̏a|8OSn^;<;A]siX]Py.#ۧ/~󔧱:tV]hhz?`?a%?GVr~c4Ah} 1#i4ѧ Cq8hubNwG^с:JR╹_2]-䖕k؟_[6| [^Sm2yS9_∆>q9h|+r:ϩr1~Hq:N?N<ݙx{^b݀lPP% ]`'wpҎӓ-+!>e_h_7h1פ-_dz4v_:¾zd3>7EKNMiD~sC凃mk:qeC&,'x]9|q9gxVr?y(U!KQ/X-B~)xϫ]2nvq\ϫ[UB9,wB^a5p>w߀ZJvvǸ]Gjw]zyvOMcER[vy8{J'< }1/ig %S B.\s2?ڕǘ_FLdYO3"x A/ֵ߿CUd_j/MQAz8Gm|C<\؉CyȉξN%" BԗHܣweF۸Ǵ؉؟qᓉj>:y0" 3]ь> ~I⁈N"wR=ʶ`}{4?W5G:ޗ{;rdse {TKs\9x0g40orGxjѡ7r*8\='nol콀w|W=h]-W 4:z+Xæ:>@h04_$lv*Ac"7uj>JD{v=pɹGH?ʌ,X7bK@`=0q5#{ڏrǺZ@״HOR""2>/%?9fE{oܺ yxFdk܂񊀘)[xS0#\G%^9N~8S6X3u܁5m1Ə(9W|\s4vu\r>D-.-vC9Z.&+r1_ҹysoKzGCc(;ywq6Oh~v8)9{L/ļ}:N>Ni}BBsNx.ZܣO5(Ye}9Ǥ?5;h4e_& $qrP1bL* 2;W|L2w9A}Ʈ+񍨥foo3U[Pa.Uhh mG"6;BGe\P>qyįs;;Wn~2~p@9StVUŢzeEL\kM~~*q!2C?I)΢02y")4S0^61n"%)IHf祚#=HvK8̶!?'' y޼DGj9Its&Ѷ1OtzX/z=â?9!,q\%, S4?n*+ݛ@oHq`CEEyR/q\Dd+7N&K"ro᫋}/ȟ# Xa=V[sU"}apNIąt8/bH6/4x_8y9c׍Bsq;Hq\ iwNGsV+3W \7Oo>$BJ?#1*Jȅ,J|k'T 1^:EC x^W#(}neSjEnt z2? ]8ulQEH]I"C[xЛ4Qol.$ANǸ^3W,|&3^sgR|Fe^6j>0\*y"q_rJMnq#a>Ynzn0"/g2r-ga|EU !|<_(+WI67^J/C*p]B~F({Sacq}ɨ3}XO7ѓ$yo0N;~/MCd$C |sRsDC_Αz9V;xΡ 8> |u}/(O1\:؟<}: ݅^և~㴹Pm?+n^$YW5/pv{87x{ړۢs(wsUT6 ?q ?p@oM[_M/an1ql./QSDu:oIz%]E:zۋMOg:&}rN~ Ѐ(zywK8n^NC;~?:eR_ۂzn`7"͸״c~on:co>=ٺc_osnAEp>m4؍o#ju؃0Xg:|rwB0;Kg]ٙ~J9wmЏ<DWo]wsbXSJwgz ݟΞ:>Uo$Ww?U'ב\=[uxNg{-3ɺ2l>#$=۝F=ݕvܧc^F}d3C;y]rB/$[g79ZT7#c$EzycɼMgg:ӟu yk+MA?.χ.֢j?)PP}<]d^sLjuqnyE)K.^VwvlIw:7ӷw<չtm]QfcQNﺶEڳ$϶H_tbǁ]!:q\ [~%3C#Uo]uFpquMڐ9_W܂X>21!o8y-rͮd?kkTx}uetU;إ:StvZ]\_=\^to^!ۛ`H>Zcz ed0>S;#'ߩO])A`^y"3}b2\{Ὕs>#+y}3uZN`DzέVޥMuԷõ<8E}hd?v&njo ug$}Nzuqn-ҫ6,׭?A=ӯtُb?L޺ e5nm^tj}i%]п[eC7ӀW5 vեCe4G_iקy]^Ou/{٧7r\\sci8O!ZiF_q!TW`W@ tTݫT'~2^Oi923==8 խkZyyk;(3[I<ecO?5ف bLNԱ%brSD^mẒZN5 JԫN=$tA/ơOONէ%nѼ ztruhs8ICP՗y]CwuMPV/K2ӓ=[2]9e=ueIGS1zAL)Xӫ&il}4)#ÚZLOV#3Sy8!ؗn\n-ȰgqA1_|.Qf m֑\ of',Ҏ܉2ӕ,ԁs\Q\UWMƼ{1O-y4!exlR%yR3}ro0ڟwDi8kf9 e*~z,y0Lo -D+Ω^.kC=i*ݽX;q|1#^5r~ ӧߵ=u!tm및v_wZ]2 |F[sQ;?Q0L[z lyxv^/ocqeW'y|l'ͷBޤK7i3Z/G%L'x~"}TFP\ҿ[ ݊zx64=q%]\_=`Jzu1غx=UUFH'䑀(@^7{e狲<~(t߭+Џ_䠓uKCqIY][CݑwJ >uv<|z:矁s@77N^ _^.U{>]IVқ5վGן\~=IWԟ[.қ=9ݒ|yYVWfzu&|\~%ߒtd3XsUBeh7T7.^٧|2YI?S^W| 1XI71t5@Ķ۵@{| ^rruh%*{iE syWl8|^,ҕEz¶0n!Ţ9 jYIo.\<[v;ފCQK|ʺ2% 3WIezxglZ?OyP~~Oj44z.S7΂u Uꦼ^tҐBPdn-Cц=@"o҆\s~h~?BvE.,ctX}Lw鬇ǣg?k83._F;aSJ}6<CLꮜ:;?AW|#b~|>z밆1% bf(_} /m# 9cW+Z}itX2ݵqRL_5TO={/ *EG;h'=~ wq'4k0?w"';k;>Igeͥ8g@O"kɺI:l~CE*jSZuD}S5 3SJǼq3Tnjz:fJO'kc21hu̦`}zf41?gtLTh +ic_xX&ztʇ%6ͼZf#/Fy3؏Z/s2+tGiy㘮yg1\A?%]3ߋ!qΙ\]RAtL22Qdc;70~WqL<36ʼLO\&y_-wqYx%֘Kۂ\g0^GBZ씬XCsFI_鈷Wǡ/!>A|I~xG wjGx#$=uH;*J:#c]}mc>kҠ]I_DvRge:'_o 'cK;<QaI3/ĥhy?&sۂOQ;V3<l-m{:ꗟ}cEeUI:HuI^,_Z}9ib=r{_G%?r)ڙaR'#?vC|@cuA.>U *_& $霼LϜЁ\Lה֡oa>Nw,isnEu~J,y"潲StM)"uH(6A)F=C_쌨V5ۙa(Cu>_&O<"]Rxd$?;y}taAOc^}uEz":EKzbmxxNh[ Xm& wRNcShgiS Dˡ~x:^q0i{x>|3C22QdeE?1>+|m*o2΁ꛆsBrsE|kJzfbSg&[, ƥΝLKRgjea>;c<9:gFN}U6d]yڹ6tN^|:g9-Pt.f{1d--I| ʼtOz's^qn$霷s.}s_9+"[K tο^T5Ez:fqm뙼9o],>2CT1yŸ94N.}A}e\BFu+:)[":\nI'HQc 9kU Dr~9F9=%Iȕ' Ea\Or: 1/e7疐ۑL_ezjҸ^IOuS~ $駅opZji?TUtv-Onj^j{D(Ig/@{~vFq= m?Z |:,D c@O|? < ~g@;d@A )3l⺦?L~L5TUE:h.Nho֘|Ih:%*w)5r6X7,qeVZv݉~WV`+G:ny\xg8]ͽZqs~8-_}^+sR^C Gwz@-&%?oz#C[ƒμո4DVu[XSD/n/ # N s4Ȁu& y/ίƷqz;Cs^_u Es50#~p;s?(e:~#i -|~+0J{Zn#X{B>C0,{a?&03?Ol7:ƽ_ӡtzڃd}I?nLGpo@ֱ}(?=>x=kZ?Ubrur^ϱ?Ygo8݇q~Uy\'SWy=n~et=tpO]-=[Gsoȋ ;]hz6c> *JZ}Z.SK_ImО\ZҧuiCw{}+.{1"{x={d^yzu_JZҩSZ^HYVy.)G {re.z]_=:.KOҧEtruo9oy7b[ت`n-ڏ~[h<ӟ_lEEwx_oxa^S:xو"O:g:8wtn6kO9VGlg_g'WǞ8ٗLؒ~LmIG򺵡zZzZ cN7"~<'qGLҫ3/O%dA%L" Y7`[f_HՇ.,҃jSvJB.|{9/$ezLm\d_bb<_]3̲B܉Mcc=.ECV鴫AoҐ[UϚDs"LDRi{Izm](KoZmc`m/l2V2T&"JzSMVtTn7mK?ïx5{mez~l`|?ηnݥ:c2m6wƘ5s-]̵Sb::" Zܪ*|t/}M[u"JoDLL?>I:P/} _|(铼VtMG?I;/ٺNH+醼uOg:po#f>O/z\_W/8i)ISYIzܥOQ3=iNė9W;2N~BSqhtn䑒 rs7E%ʾ^|7qk"rL]D:ZPfzZ:wy]M_=mڥ'8\צiS xK_<,iLQa~5h{n4:gF>Gyc<]=qxJ=-g߳C3Z/m1_uO^e u/<7Qu}Eы1{DCu̽ez^+ў\]yG?<%O_.Md^nWteJ }~YwnED[ZgZ6W+9_.)|+e=Roqd?r=ҪcH3Tc]M'W>eYɺ>.6՞9d{-%/_1^?lovh7T;x.ꏾ5#яOhMcP>^4izz#Jq~΋2~V7oe Y7C^x:yL7ox]U7 =GSqXO_=1FXn>D%=V-bǥtECD=uDEfεt2ydz"#)G QD/R*AŊ85Wi4j@co}(y3hg-]Wܴ >9^\~oT+sOtK^{Jz?^+i1*Y7ڏDzWԀ 'ҷ%ұZ2ӳ,Ib:O< }*ͫV$fN#W%WnM6} EHpPm+>.n~DOs&ͦ";ZczZh93 -+ցn~ Q~0"{6"?WI/fx,u#7y"7"݆i"n$$}&Kd^>S%(>Ii2k;Gܷ(ϩ}9r'?%dP&<*"FA,DmY+[ɾ-6$~_ɈeG1Y#k7kҖƣ\9;3ez OxF4#Qk.FB7$5tH9~2O~t h_Jy~D]|Z#p7fb7b}& {f/[>%X+}k7v\}s=Ly$ X|w wɇVgQ0=4?x 1epwr,UxGtv. ?s8}hЯ,yAIP97"WQ(}%/%Fk3}C?NH=zsLUkzƬ?kΧl3w#K1wwJ:HVB(YfnZ>yݛ^ס>#{kJT{s3?P9[A.瑲R0xE:˘GOET\U .E0ac5zJ=Eo'J KxjN5 Nb>Ӹ M^R^ y'n◦nEDn9~2;8)~B=E^71^Nz$k C;KeF"){w $Ϛ0=;$^7E>7q|1c:Z$zI:H\1^uOWxjᇸe$ꍥt^P9.29.I+29;>֗/?tw#%cVKosE͓o>_񧱡bPI?$M_gnye}2SxEOʒs: OMDzIo8Ip q4ٟ{z]YE\~]̕t<^yi,S &#Έ]~:t|ߢ>_^OD\x7dz5w'#SMs34 n*S꭯z rxZ\O䱜GPw7.Up3OzRzZe],L?$XvhgdoG%|7a2YtECOnAp'se;/7ޝo5: }zjeE=$?uj76CI/a:H yx9dI_M/rE=0EA9N7wD(D^fczϜŋiU9|>c>n'!uA`sp{~}s ZC˟br|:qZ;|.*8$㛤0i>|nc,朦2)6)x~S}ˑ~~bY|ezΔ1:"7+qCȺB5IdzJn)"ݣy<.? Cd:L"mˀu4jж2Ѳ-yVⰯVL1o~[ͯL7PL_lFVߥ81tL }㐇wZ011?77uھ}mY??h2UZ~(4q>f']Ϝz9CL8a25Oh-iY>MiH9L+;sqþsAaͮ#pM#(7-AY_y׶ΥN"KycuƓy#J\ZNzN1g{7꙾qc~^qO7T)$Tmru^1>#e^xmTILazLGߵ&|Q["v#q(;܋HSRe7b5?6}Q.9$'0˵&|oQ.Scka|EV~Z5wuqpNSn:To24G كe$I~FQd?#]SJ~ݜA9V4G[+LhyLz}ԧ/k Aw8]vx_vlXLRtBT 㒯K:HݸyJ>uSUYDc^u1[RҥգC1םMҠםRJoGޤ~nS>~D%&u7~"}Wh{E mҿݦȰ'olFLiLY7 SvDf&eNV+-Y%i}7-9>ʹ#1ϴsJ5>\(ӫ9z1 Su5 b=k 1T7Rҋ>t!$}&G$Ig:K7$])v ()ɹ ʺ=8{~I}*^L￸uṪqDͯ<}pc-ǔ1 ?̽\_`#c?z"'GV;]v"2ݧ:|~ScO 9y?>9\$2sy/n9ڐEtsMt}gI?7JSF ׈q8=^$$xL/y7zɷQ/M^t^iKI C; :A!zL#VѲgb?=(-;`Aa^%e|7:v(3=Frp؃Z+яE?CxIāyؾW:Z}7~!KiDCHNQڙ^>C>T;v$GDzEP(+Qt W^%ꥼz|zCyQ~2[S,|>Y/{5]|]1n&7/.9/_yn`MnJ巢v52]y,UsO'&qRr~¼$?ς>k-y3ϴO;3*7ޱ{ywkϼ3Gy%;,JQ79Ʊo|k)yNmj5 |H痽گ2+OB/Y^1#-)=wFY)dyeѯ։(3y+Fo|&O獖dK3\ǹ렬G#ug]hb h=hh=⼢ګ-/ A\uqQZә@,du MO *yW)),3#wS~/U敲|2wƑd0l~+~,oxѲs1Jy$y|myZ2^}ӡ,?ծD6LG5;!FMHW ;t@e:¼NEd}>4QaTyOgj'gP_ bkZ.za|h]ZkCŒ"3d,*寉y(/%{uUp?]7b Sٻ=[_ }/COiVXqt^XDZa;ɇnXZ}Y&7eykzVSuY62'Ct1r3(U;M:~p "ט /NoF8JüN/&rT s> ]?+9&Ϯ]ke鍲( z|^,s9U篆v}ܜop+?ż.&ϙs.ԌF9@>_q5qYD_.o,hϻ6nOs]>ahwwtWxoFWkvy-Ϯ[|>*.l&ˠ9(OgB|~z6>7 ?y"= >giNZZ~<59k&xW¸b^cN^|hd2׳|. s^)_2#]m.Ӈo\x\\ּe&hwQ,?]5yo[[泽?_aޛ._Vż>.a_+& LbUHտ彽ߥ`O;x?UYJ-c{OpLbx>YlBhv M9Ziu؏gXOdw֎;+G1 ߘc6=kMSF37BU J;$)o?ݐ`ӭ,Fy^qZ}seZ bt>nߞ6p6fYtmz=ĖVy}~탑ꭓ(#{}a{]¼"܍RXG>Go0] u=C) c=6|EOhLYƭ:7^(5ʎyT̈́C{x=WdꅡWQ aܨP Еt5CD:i_d+.{0C+,thW9h_ FgP6d^I'`@%``@Z9^our:AtTh2Nd?Kt%1lg:%u>Opn0OUyzK1C\`=﹉ >.] hq~{ ?~ȁ~rO%l/Z~vFle;uݧ_|b]!QOH$W7`zoutbJ:A1֤vz#n =y>¼vV$6 ٿyoQf:(74,gyWd}N?|~6Fdy}?Hyr=P^/Yij6EyaƃQ ê{gĮkM=+OYW7}Iy[}0sD(Ok-)KM|GlVp?O}9U G?A[櫶êb\L/TY^z秉ыK}%1GKWZ&c@9ZJynDzo~ͣD'EΌs#F=u'=Dyl7Ag?|Z/<\~AY;0)޾ ?'XʇS*>p; m _uxPʋ?~wC{fzQZ-򩨰f)_΋$=%k2dM@&5@6i4ֱCl;E]Q5Yƕh0tͲX̅9 f3_)9)k=&6EQg~ 硔߯| ,W{(2;+,?ĸo?Ө2N`߲| qw7qJ7˳Y^|ϓ̇zx'R~iek.U,̹53ُ,44t_-2ыD4*M.?CŤ|a]FMd>S s,f%oo#O3Mha|u+mwFz3گ?b<ai_WlUv ^L@a_ruZ~I~?ܲ4G[廨wsM~f[<t=Ӟ|#w'|kh慺#ɺky-,‹+g!Ȑf2g'~&m/d]LY+oX=Ydq^C47N_L!^N DUX'ٷEV'g@עM˹db~)xk+YU( O_1[uFpqbg^Vߺ8&'77G_2uC}\E+aD:ӯ>yHu2wH >8/5?3~?#EA棟ӱX_Gסbs q/~NR^:X3ʼR)}g'}3n,^Ɋ~}?Ad_K/CYez|Pm&cy U].%DTO-0._@ 9r|>(}'}r3G̓Z,< sEM5 ļA׌|sn(wbC:&Cm8)14~?y8%TR5OGD{X9u ey}X:o. ug7^DX3ۿ!#נ~?;r6iomffy4;3y-+^]6A@vDCpޟv1kĩ8EɈhBׁpZ9[Ԫ_R:Y~| ΧԮs+gC &Ww gBA)_s{eyC\l@=GC=8C8Z? q>,8q^Ẉ 縷cQO5'KW!]']}"y{UWyR"6ݵ %tx=0nĒ&_77Cߌ .aUѲkgw~{zxutwq3:/? WDP)/B7ʠ|y|IZ:EK',O}}A<+'EVC;?7 A~^ttvCϗdz߯{tnlާ! M#|>r((]sg9|NE2{W!uPG7АMe3c4٧Y]u r5kU+Z9A^66 ^+߽֭]wLu}'y7g_=y[ G]~Z_qekMii} ?aeN㎙~K_X2|._|bыS)7ޝ?yno{_qʢi_d_> GRa/G' +!2~Nޛ='Cz!18y|D) ^;};|Cg'b⽭Y0s7:_%mGdyB׏ȼ9nPmU(-l+,ߎvOgzO| :^іwNHۧhюg>Z֝:=ܛk&6%1}gs\}ǾgNc?ltܦXBۦcCWIϼI)_yZǬrF\BRTkO?up/˓sY|:3Oʋw;AGS@dyҡ2_IE4>y"dTZJu}L̟l-k$ñ ,?\ j $`W* ,?y{2_)B_Z#[Cʢ~DroDg?Ğh#g_:3sZ^F-P?jceDgP? {݃1F`1C0^m1qQu8`b *e'bR`#v+v+v`' v`L3>ϙ^k93s콯kKCfdﻀ~BޘZ=oGjy:VBv+C[{R~t/N*z蟮Oie\ `L:z]$yغl]vw~W Vͮڔz:ܩAϋON~܏v% &]%\4&,%\~)c6_[GqVwuSaK\/Gu> c|)OuPa;bg0=\q^Gh_@|w ȴ:er:' xMB~;N`&9wB]iЅrw˹AxEW1-|e~7yPaz(gΗ!W.h5glY{w Ngcq4v{;/?1Vк>[?uM;1aY= Zװx uI{vlЮ}Uk`3^:vi\~xOF?nvJ?A|]붏u>V$+p}jS+ݙM_7 }T^uHr`Vov69cYu_ZSmSLSt +uJ䣯@z>)ܑNq(֋/pC9Lnu{]YePNEݛ3󲿰o^W^}>GYüyXݹB5#Ǯ >uѢLyp K ^j:r_5"z@kZz^X{J q7BSۘΫ_y^gW?lam:00ETn =F,Rῠ!N? S}/ԋO!42/pv]yм2fJ"q 7ϛq~wζ4wte9;}6ڝZ;6:߱`xHՀbdMj}L GvXs-Ə7aʛ߿} O8n{^!;uէc^Ҿy?O1yX#6mRnںǴu1e}WnHӌ%Y3߇oJhf;6vfIg|~&Ļʡ&w]7OZr7kZvMg1?ڙBy;[|y]UWwܼF`e ̾=v5lp>l']K|̐^n;lv*6YA->v*t<CܪjToAg\lIeajLm~t}d3*|?lW^OR"}-|G;{8ߞ~<6;KDB>nǟ ;;X 6;36cqǮD[Gt.lt;Os{Oyyޖ͟|~t*h ]C~ y`w`xl$44;v lI]Ē`TRvG 4n͗\/=%7/bCCvaCo}&r62$iZ_Wre(,#K@\#/9\y>z_>8/W@6ruk1Xyڍ 8peƅ?zR_/G*>G܉"-Eé~Ikk>VRs?F-wpN!#qc^Us E4 吿`>g0kܿ5+܅S{^ίڶR<Ѳ'>/5ۺ0y>T9!i^ɗ{ccR-8ю1kՂO`/2TK}itelq_u(816yʿ>?&Cwn›pZ|C`/<|7Lܼ|>}_YW>.(q}{6w>Go}L=iwn<㷺uۑno;5;N/Nk0^7tC>qroeq͎dyrF?E#W\9 RZs\_O^اWm fΌcnyg`^7wyfM>Vy$|䏇8Ȏ{8sk&F!Oifůmn[!@: XvI~ c,q@q4 ʎ#d\}yj㫦d28{e>i`s՚Q/wIghR#\~8iLᏋ:0kxI Sc= >.qQoq ;{;;^TRxdtxm~?B<:Uy=E?3WǮScYv` X"@^o˫d7¹my'Bv'|MD} [^_纠Z{N.C%M@O{^O4x:;׌C{>)-}^D(򄳿۫vO_VtK&%;娶a>o&^-gerۆ'dl?jW#2ؗSA$_SO!%4n*/Ω Os¯vэL0Kveg,[n9vl qd(-ݐ+{1Oizz*cPvK.QЮ`#h5an댸vj:Cv6Ѳ۾۞Ty}Wm .>6ש[Uv-rX(/|TunvEmmfq 2?Fb~mͼ7>*y{5+sM c=mZ$\"ov8ki++Ȫ\-Xn)Ω*T'S8d~|輐G2y] O][h\^MC;e^3^k(}%+*7 k'[^׬N̼*{!ʷHi8tJ\Rx+faѝƾ+ȧہ}C@Ȑ>͸ӂpsߵE懶ߝÉhDFTn|ew0_xӓq;z,AI]z:sr 2nf7 =s~26G\AeQ\+}d?>vBk&-I47MsOs`5G5ѕknF+`?&bO5 ~Aꠟ}n8M Ԭ~c=hV}n~g^O+O,tM3M}i{o6a&OOs $lH٭uYML܃ڙSZO7kQ3EO'4Ṡ=yjO蜵At}qb:CuL?_]2ӏzw8Zw:nC܉GݣΟUw^[ipj/ghUEgDS{E|30h Q{L谐mԮZ0[b W'.Fn=:PywgfF^>~z ~]~g1M;.wF~guUь=F!z*eX ǾϩbxoU\V 0-OUk.1[R,<ʸaD9+yp>J>i,*;ld5a6QU mv/0)<@!Oɞ?q-o*nhwv5oV6Sh,* ?)Q^k4D!zgBWw#MqL( ř 8I&Q =x)N}FS(96`S ~OMJ8"L=~::Σ~|ɽq'!{=,x5EK )b&NBAj|%u0U5GŚ[`sb)_}GEdo ^}N'\ _D~n7zu>‡X;%lt1h1 w\&s"s~K֣k݀ppW_鞳8ESE=~;Nl{"X7`}&~}S*OH{mK-Av=5n޽6W@:%KgA}.(~fn!]9mJ?4dP4}2'x|xs?0S5_m]n%aT_&;g2zwFdMvy@ oc!֦ wˡ2HW~=osE){mᗼcϴe`?{C wþ D.]\{~dӄI6bӮ(#Vaw7hiŜ[j%KMYˍx{jOqJ?c8"Dv8ŀhާ2-d[ ,+S.'g{bZWu8O,k;Y>f!+%K}Ph."%Y EXfW d'kEEgָ?*ey>Bw<̋3B"_fL`̿27϶+[蟍߻){1Ѿ="=1NtcCߦk'~"g;#kh"ӎwCg)i&S njAǣWƟQY%ve|j@\?!_6%ڔՔ&e6 RO?6 O)M)$+?W*{ɗhw~!h|~3g=I;O(Oq[sPt<^eQ~v} Y >C{f_De9==jw@hpۛK8͂>۸s%k]8H`u19$,u\JA.We'·vRNcȎq;(t>G\M?VG]HB*ѼJf':xh5pmk^"FFCC8/aeON_SF\=*_CʞũޓΣW{BXd9Kp4[ w!F1hCr'4ij~Χ-ʅë/gn#g+5Cq"A UT;og,l>[vL%۷+5}Fb2#rq跷" 3oxhz뽢6r7򟽙pU*w\^˓_띃u{ ؽf=h:?4+F}Gp"Q_55BoX¾yj%^Dy/96wQGR2uim~ v"Dm9]qJޅS馒-d3 $Q/kG d>0JCRK˨"?*=e Bs*\Xۋ1*y7;T~8_F%]S%y*;*VT`~C,_WG~]egVYpn+S MUu&Y>QUI^U ̾^d81h[_X%O8u}pC壋x*OZ2tV N aR ~=RyZp]ux[}K[ކާly'ehmVp.hJ~m._av'q-m_tjW 3)[N"4e IP90)[9P6o|*GV6?_3 Gi#~ t5hW*4uY_~cG2Nq^dN/<^s00n3)bX#ϰbWR )b%"u*pb 轊}0<㠯('(:Ml? B<֗Ks/R2ב?4|Yo#/ayi'& dyma]_c 7q%P6 tH^ԭ2_d"2HE;HN%4KRߟd;K=G+[~Źs>1✟s Ję3>_fs P!~?6p_FbWv^r+b$hMk#tg{p:/jp]:P<x1b3E_%:/Wg\FZs|l&/[#Q[߁mgQPϢ_Qh_Oxy7$۝x&BkD FW tG7DhL&w|8c Cp^zEAgJ:q"s#ԑTD˱j06ϱGvz>i~@:{{yem[6kDc 巆x;&Estsu7aTnZ~\~Vzkְǘj Z}ʇDzB;uлLzb3w:QX*Nj ,r} ; ^#q>I9@Nۑ# H@lXa&x3{AyFУ3J1gew'3A+џ~Vg+7c&}+>BF5םh?DkCd/_^)OӒ>G<]Q>fiYM<ꇴ?woAuvZz'zn{ص~Gbur %!е8~2 x z3mþU[7Cpa wu⺢|KFMN5v1^)M,8Ti|^uiR{U?9Zm@9խQh%/qU W$RS&eq|lxb{C(OqިIi&Kb$|{vYhcِ yVy4OFO?W܎iTc}|^o+v׎~nufu:k`ީ<J(\ǐXoj~c{` l3o546o98C>)'ݎ2SS4n{+~x/`3:Ftˋo u3`-`;!_L bQd@Zigy7~Gbyܚߥ-J1Ra}L^?a|V)"BTx#gx(^Op#|H}=٣|A~s+`^|Ȃ0t哆b/!{`g cNK*TNJ{<\tTO,/}O=R?=oT:m^QV${롐(8cPk%C3Ghs, q[C۶HsqqROjL }sîIܧ 4tV_ ']_ ]i/_|= Zއ_C]Ccy<7]D7gk췒ɳ8^S$9:Ƿ|՘IU >I>w)R 8^:4[֜B;2˔s* 8{{?6+]g1/;=Y~iUmK}ڊv1Yd0t"Kdr4i:zPR \ S a96=ϭ$UN"^3<#W]_NaˆPBg_Zc\cF~52a~s}|߫sY>i^)2 }wЧ>: ԓX?WhS}r<]\F܎g~'OTl'ʛcv w߀s7/.8}_1} ߁=}zXH?2Vb?ݯU;Rxx凛!'_*Y&/.3~qߡ>MGN-]\p*FYtCׅMWq\$t~ݤ(g9o{y}? sDOs8r\<:{_B |xo^ Ggw:g7IB8RO~#:v޶m ;g|opmG.w&{=qS3~YK3>lJyEO\>3pf%/vr5z 7k뱨wGH[Xs#}\8^?$X߉4n<t,?_B%L<؅U74=?v.ˏ{RMOHI xƫ3s|c>>߸Qy<o/1x .ĢWN8 o[& \g ?Sz-s<͏)С}kQ}&d#~L9.q1>(&~s-SJ9"s] ƜS|r=K*G7¾0(uyN#Mè~aHB9ʬ)} ez.1-ڱ|na(n>,gfxo+M.b$J`^z Ieygתр]FygP1,ϼ}uAT8} p襊|g8#~8Q" ω"i)#O"W0>uՐˊ2hZPQ߅x ũ~ud BXi %~5~W0%}I!w+,I cm7ʥwmq|xæE=?/No#˓Nxޏ}`ܧE>xhΧ(/k\3gys3qp>t _M Z”cdvˊxa+xb~\ǀ'*G=&!{/e鮻h-<3#q UuBq΃s#ׇTޒ>Gix_g|^X\9fyan8~{TDܪ""ݘ(r{uuB[^ȇ!mވ{w^aڝEv-toC#Ε7y<4??(1x.T󩴵O0oO[{y,ӂ"mY50{Y/AK_g|)d;϶-Y?dʳ>^᯵y3&p+ x7oAm:Y!ORVX  @^vf*9 |WʟWcSB?6W4Gܣޱ: 9(R a!^mjLfŦ#Ic#1ONĹ˺[p898 y x_c|M؄||o$<9:հ>0[g2۶b+#z78u|kZQ,jwȰ}دatDR&)} !/v2~\F{O2;7 Fhhվf}|ڼJY8y!NY:vկ@fy` (Zc_\-=pC?'n~f]TYva8mr<g״$Q׬[|^SǔTh>3xkuD1׶{y9s)} gQ3~NN{oE}moÀ|o7%85=NSY*? &Ook=uR~πާޱ:ͤ_'A#⸔_$x P~/>U7E^leGrd E/=ԋ=[UחN_c Q~ނsΕ~Q}T~܎rcS?[;[r>%-Y^2}?>XM}92 ⳕ U%\ \?q<&|O~,45Aޭm*r̋u+ EC(k~rrE0*M"_,=)x/5Ok ;z]EtO'>V@>]^.xÁ?D?~'g(UL10+|a𵞀|ncI ;(& ,r$}Eq>_ O@vڱ˫JC 47Dq]7I@ ǛU}\(&zRkc3Nn X7S0oem7^[gc[%/-=~&a~)?6OB>A;'&+ߧ{>{'?m|#SߞcQ' o^,3=j==,Cu~cyA3=_|Uhz w߉huY>Ѿȭ1ߖ[׉F yĿߐ)[>ޗʷ %gQ4nM`>(/<?=t9轒c?%ɘS)[Z7aįK>ߕ!R):ɧU^\@OcKNm'S;;W*}Sx)0f D*}͒ԧ{%K,:EAr ɫȫ$9y;DxF!\;$9lCXR<+89 '__ko '~Y>\ ǃ)O|W3_-C|xnWa!2x+T?܅=ҡ=շ#l~m>V>teu_'L,߂C~o|PbnzPl7=~2!c_sn!hKhKXms7V5ID\q"Ei²1t nJJ@ \l+.&NA~]< nS}G _CA~݁.W6Y~՝= j^>[-*u z/9|amFvxܓ[Za<=Gl wGO`{,un}{pi5OqdG8WިNx6QK$Gf1gbqo;8۬CgY뎣\q?dչ)7ά:^xgqAvSm0ΪS]jAsU!Y5aUr}5|dhYr_N|O n({߅#qUUY;dViLgQo9_x׳zoϴlɿ !$"2YB^LىTe2-J`Yu,[ˬr+/S ](~d ڝ<u<RX$QTKT;Ŀ^lL[ C^PtG"nAtj?{c?UڵCX5~9BJq量(?nD݃m EES v~B-Wq/` KYQ?{?q"u8.k<$Xun'Cfjun\Bֹ:@ys zzt-Yaq+aSu]F&Z n-#dC@^Č)5!OkƾGPmd/zO?^doN,cDm>ﱌ+FS~2֞G>l\ )3ў og9!cpkhoMꄸ'mRڤϡuUR[{[uSyI@3_jo[{c.ڛ79ެڋ)pbaa?MJ@6O8I]@gt_5z z{GıqɕOb"^"Kf.&Դ*ZpIt(i<}'?VGY|AC=1_OQc|2A~}ջ*]~ * tՔ?bi8叡8C<ֿo[ԡWֳʯwq <˛מԮZ ~5;^c r8'Qnu b}j@nFezU=g-;u-aYqr5'LGn)OoFUobCǼߙ6ϧ^jc?|8O=]Xnﶳ"u,]ȺMф"ܣ3ٍ6mH>-Lo\d]^NyXʺ?1(B!keWOL]Huۢf?ZmwMvP KsTaz17|Al[}&?KʿQ[ 0r/kki)Go_3I}|ҏG̓v`!HqԷ#c:ŭJQKoF$;sO{Fإ8a'o/Yύ"P׿i =VXi {CIo<O,тvCx3+BF!ەLX]3R'mBKBx/_xV`P||[_˾a߿xNhI}^̴W08_k އio|`ҲҖt{"m`-|@iO o]8w*5-aƙ VFyׯ~޿0.]{`>^]2M:?x-z0y ցps?y1Y2^A<B^{>.kqGβlTr c9>Y9.1~g?x.9L yYdޭkVG*, ;0gcYV;U Rn_оv)dY%}qvVqOYf2Fy ,To+MD9? sAxmyy!o'wx7๏<L~|0pZt>{G/0 Ggl/ ⑭Cמێx)uQ~I|?Fyf!~ybc3;Mx,<23~/iV GF5xy)؇U ⭅xOKʯ,O' ǴA#/|k6k#ߓ):֩%hʆ:ϕ[l [Om--ym_8}k[Pm8>S8u^ͨL;~yA9>c\_3!4>戛xEbhO6yBL?O = ϔZy/rGE`Z95aOVv{En!kJ@؊x/O EWa80ʣ~Ԅz~Ga[Cj gyKo!:Wȓo /ϡj]!au9[<`_x72_w2b5'lT G3G7y16OuB|RRl-l.1} yg٤OZ %E?,Oew5G3\)>vV?9tK㘇*V-~{gN.+VX=L~V|I<y^+W'mߊȻX)ꗷF.E`8+UG'ϗo#c<1 8 h/h\(Ѥ6h,&>=NG*7>qL82G`P45lߟ觑v\ĝ+%BRu; @?u~VFQ|>/\us+/#Amvj ӟ_,mۃ71)_|B<0u|qPG(| _DC1!#<Ì|Y?xX,Ux^SP>y_iؓ@/IM8vɾ@X6Kr!~EՕ1^q貥KOv4Xa>Oӫ /?Qȓ BTw@>?,w y\86[~,j1`&<| -ta,~QnKn3{CAބg)odRrUp+Ǻs$u݋շ4w"umA~*u#Twz't.I["SyJ[|ByL7ܐ/QrI,|&\ыp#p+"Hng=,A81m~T;}// Dvyo$I;6%5%#yX;|lE$is|x%(qzuiſ;5!3&: d%=]a%̿$DT zIZBd뷲l|qȳPhīO|nd0~́ßo;>FY/[W,%dʑ/7_*"i &:dzUY>UG} G]x127ʧv=yuVi[3Wυ/7g> E>*>2o`>?::La޷f> WMOǧgqB/S;Np%50fHEuvx_fq0~טٯ(?[jiY~V}_q|MqpMўg+|(5 o}k vR;8ztݒvyG x^8N5 qM<˯j!N[x~YW]o~!ϯ9߯\_/5g `W+ץ9~϶!%šuxi FTL`O]Mw5gVoj8ʩ"4kTSg9 iNV<~ ƾoMxV_>cb㑝66#WdMz֘"_Z}%*9- \<(g hqE?jܷ ?C6nM8Dciz?BG>վ րWKu+pГirôSe 1_ N9L|_̖ķf6s2$,EXϪJ5*5ePcpJ?pJw, '1h0_$ ߫{,6Wb~Zr'g7}\1{^xwrdA]~=uu5<^G7¯fw^+|uG!Rիaep.Y{G~4Ul vExOruKsc>|]K)諾&# +%H/'}wKT^|6H /'?Ffx+/{ByU׋Dy}EžϿ<2jR>(nTdwH~-6RyEl?"|BLo䓡hy!>22<22r/c2rl{jqP~X7)_>NgK*Ú[~qÂ{/PBCjO |J` "c4}J&S:]"oK9BHS\}}sq W_Z`BHmA}@?>0m&1yx_z~|}ʨgyzyMmn\ MΝTlNo6($5l@@MulZ:Sy@Y//W|~_Qf98wӀgy~3B~I~dGH7`wP;0%٭fZQ>f a| vA~YX6b?|@ PX݀ V]о;rAcp_nP+ a2~E q|@Z%#\cyS |.𻜾7G8~}7Qy&CRym%x+P..1Gcw%ro.SBNaL`u 8}GH3?iSg%X=BH8j|"k"/֣YZ,S޲< >~ic tSPy?>7;zIW Dt/-V:~_SX_Hw.+]&ǺZ,9/R GQek'S"T>d}JJucG@Vǰ@ i;ñN45^? vD ρn[ \ QaL)̍`¦S-.qK\:AU^R\ɍ|చyCoYa[)K}W-aizxb^$wLFx|Q)֭CT{w>xUO"+{" k ]`"%r;g+x҄ÚwN; 7G6ppFi'{zm;7Pyɑ(?q-0KNW90Piڂ'O}iqk6^@}ܤd@=_yL2>L2+?,yy_hs[2Y`#;ɳJNW('yލ+KOVWqjVN_i<ysfSh]SB!+^̑,!6E9?!'c h:up.D-'[2eCjWW1(?VxJMp }im~eR*pό<=j$9 y9zaVn׶G>$8K"o\P]"yY+`7y:kW5٨" Ps}q<~сkbG w'3nOMeZدelOy{2࿢xFN\1gwx+f%żB1\LM)fUރTD3EX)f>GmT̼VO,@>b>Bcw~f$Wy"`x}c.';K: 3\Wϱ\~Q‡; ]hvFn?@8tk~@a݈V$^&܋C1;ø(v1 bȯ+cuV9R;ocVӐ2ݴ!xLAG8Ϸ.7/>|a,7O+v?K[ɾ~OmK J~5X*oOuRzPOt,8{j##]jYӇ6ju5ޘ>`H5:?!t~ڕA&դNz6 J[~~id﫵gtR"OV?QuV⩼.PG->TGDzӏD4|$mH5 %Qu#W$bٕ/"b7r0oɷ!^Tۀ}KzW{WdߣkW?(^u0VqC\yu/`Auˣ|p A _ֆ\HsX=u1U Əb/~l1aYA2V'3_eXj6lVz<Y{D\sxMqSP^;]ߪ,~_q՚b2 W*b ЕĖ'PyLڡ

67tG9Ds~AJ]|E9ɱzI4' hNt7?:d`#jQ8]α -1g`(4{لT&WcȦ(*/Idq\d6[+Bڿ&іVG9Vؑ0<ںL_mmWsj;nn,gtsÑ?X+Y _"뷾׵}>7-+ohf=9(g}v!&kf5b}[s#ܚp1 `[rM\CvzVV;[-|nR?sdG2a~t3K)P^P.:.ir>'ïr:]) t3emޘOP+h~).'L||d~vy:_ &7m[)nWP+.2o&?!q:tmn0ĘZ+wл$MG놺^iz=p1o|t?GP?3= ݸ(w7nޫq37n\eƊԍ=>cGRucwiTgm~zSc\,c\1Ns:`au0heV :$?H݀|24Gjs}aߺl31%kNܙK>!y;vKw=%agvo Qj!+2r3`zfwJ3cRMhd]kk^z˨^MYHnI>s&ßIY}Ekmz'o 隧,i?oZ*PG-CuT7OQVQFU绨#P~(së\~#G?Rd 9ΩVG\Ϫ龜h<6:9ڳzjBճ#ӀE'j<'VyUdЩ+X;ǃ3+ SA33د4V9 n][_.ioQdݳ._TU.U׫|&s?n)4a9~|/f/s^Nz7C:^8Xu+ʽL!{n;ܟW[:G۫NuZ3t)ϏքPy+<0>s(={U't:K5O'uk&Gyׯf^cxWVF1?>p׽8@:Wкa#J!!lV[ߺ}75ԓ^оVWڙSՙ\#APWr\+t_KѱGGnØ֑ۖ '}E^HW/#ϑN>WX]%,ܧrVW)Q"!OžsxNgauGOEpGu!d]42-#b2xO\n`ed;~bY7.k:YT,Zrt=]U G/!?{{6y]dmkY&UI:pw l=Ef I/o tE@?W+('UߍW,.{ƴ-'g3?+c+|]M׃"$ d*=q6{lE`ƿ_u.K}&zAKQ0 C2cDG: [a8zc x J/,__+ycw׈/?W\>})5ww;Jʽ7zfc9BW߹!cNV t|ru3!#D5A{qdK+ۿ[0' a!(g~?V_xq$g>û=&‚p3oD?́0xՏFߐ/rz,Q]hDtc:p1qBq0+,kX4"x н *u ֕7o<6_pzv}3yz!] 1 vg6vy: ij Y ֚[0? ts.} | ހ Q^/>YznL;|u[ xk>_r߀NlgTG>vfyk}Z!N6ӻ1o_Ub{0Fyhs}`<~@Sjc} Ъ};Z>.a59^<ĺ7^`|}\oɀߎm峗(_>/rt87TfxMɿݲ8OMyuJc[D?9>}9t!>{j P|| =ҙ,>S޺~hm`\̰9 -ЏMOK\Ǧm, TdXqH2_"LM;77!Egɞ7t^u̇3$m&\yIF{#Q_vA}՘*] ,Ok 5wLPyvn?/{ߞ?1~={|~AtGzy~UF1^=/?~]< t Ni$1q|+ў<{l]"ȷ{tAGfc4M ?1 /:#yY>|tp(㛶`?zm_;,on/'L||e> ͛s`y}pB?|>ϣCoeP?RKp~/Ўg|٧"}A'ݔB|Ք om&OjJbdWR?&g![5c}|jr[;sRM@+'%D9`&;V}[=DGc^*@2 ]\e:qJHw  R>=c< ~|x/(L3)px|N෠.Yǽ7Y>~Ph?JA?' 4ocRX~/}xyɢ-FydB,/q/O7A$w?lsy{|羄}+yDI8<G ǟu|\ B| {E{>Zy_ps)T .^Q!I>bg$7kN^d7!A=@ q]/cɷx :_솢JHD5ǿxǞ'r>~kا/, ۶փQCkCqVw;C;#E'{{p;q(C g)d wXz¸Q 9}wK>u'~r%|?#[{5%~>Wt_7#W)_j߀mS@~a EE]k8yU̗8@H`u=O>^Vxy<.m3ehf!Ooshr!~?6y|ҿy*_Y5_O[cR*7ϩ0Uo _ZmYm5}ZMIOW\{=a*Ojb1柄_V҅8'Y[vB)z sfצ ׎Qa:c \xDŽ⽢yUύ첃*5/E8wBu{yn |Ӽ@>8˪ɮv/"Hb'V/ۘI.?o?f5o@gc ? b1}nu1{9*'CU'܏A4t-u7v*v`,8|~P{جP95uu-_= gTWlXP}0= :W O~5UqO[.MeK%!oEdċ*Cv-B/;( :x1̇$/( aN(D>+t N#_z GLޅ<=IűDߎ^G^anQcJ.auX`[}{qwTG!4\륫_`fus.z!zY#Qw>ηX;`+G^Q SNoW9:%+KҮcInun#{:dC*{oN@Rg=+Jv$Eg% Eox?ԉv`5E8IP0{ ,y"RXݣM-3Cj ^us`΅_[i"Q$ûʻ9-Py 3jW&2z[mcf} x+կQ Tޢ/;F?=sse mG]ݚ0 ,NiZc1̌*w.ÿB)w^ :l<|}u"3wX]g/S;c:F tg382qZE~'1DQ݄GCBÞQXb3@VX.s@L,y.ϱ2CYiN|a+9"_unLKj0w!\}5xb)!?{'"nB}}p2G)B(X)Ձ>O!DĜx= ~'6%|,/W̃:>*dZ˯>_/q&g*fO(wy򧺊4Ks+OwWuk1?S 8}eA(&f}%y6X Dn|ʼ})Sq>"\S~8yUo,Uvj,m%n?2ՃKL5sa|R|rʟ4 x8cr<¨ioKsMBtyM5G'mJ9i m*'yrwBzP%MŔ_QisD.Te6 eJv :=u$b޷Q㩁t5ؗc^EA ._#l^WP2OAu0̫U:WCx_OɬN;stV]`.O7],zܟ s+tO6(O<^~L7+#F%^&?{y~O8R {_rA~lO~Kju!Vbu<)ɣ,?Gj6ȟqMt]qP@'3 ^!F|a#-䀿7!Ey)>sy☿?#_A{7z5w]X=JHo|ݩ՟|D^2o]H@|݃ioT?!,=SX=Dz(u"8/@:aK2;"'}׊@,8gOկ9H+zvNc^ab}ϮA~EdI"tOM&*[sJ/ +(%ՇJ|X{K/gr+`O$΂9v癦[84Yqx=v;Oiţኒv&A}0J{h|]꿮;?`C fӣҥƾxfO:Uv+{.i9 c')ua X|խF̻v|ի:.@Y ; u_~~ܿQ)vjd:??:ux/O<ҨKy }-<]ns-_P9N{5L|=gk:?VuM9zV ;tZ߉eƬ51KE9]Xo-ȨBt:Y~u?AX;>=ӀKg{ /3i\se Va]=w|cVa/&ٳUgud/N ?zX)-j_}YX糨"|x;"A#C:_vO`kd}IXwCA}-vͨ{S줕7jR*쮤I= 7Ik_z= ۟P35ˇ O[te{M|ry>-=cqי 9]ѹϰ ϰzuY w PIǍB )8@վѿGĹ3wΨL3B~ j:'X=eSFuV2νUFQ u Ē12 .nyAqP@WeCvėk)6ş:ިbo:`o1 _Oa2qeZW7ɟ&PJԳ:JY@TO[PO(cI]1l".*.Q2èr:qz˘݀=r(l^d"*{#agā$k*T?I_V~pj߮o"|OkDò Oח{d|օ{P  $ynVK5C$ٕC׽4O0!Jef1j'2{~c]LHҿ.ʱ~1tVhSV/B 6/hXiث].gy;x^5˭YnQx{QښET?1zQ~ aYoٷR[b'k̀ߒ5s ufi< ?x4h|7@3i|G9>v:j_՛#G^vd9:Ch`yNwȋ酽MpQݰzan[' ; ~к`cW܍yMȟu\H'_tAczX +Ez~_Uէ=vVXxUygU=|&)oOgHkg|A--Wuuãu?\A6!'qSuomFvi*^އY['9ӣ \n]6AuX=Ԙ**n`~#O{;}Xo_+_Y7枃_0KFy@)K=-Ȏ`tK]3OA毿S7-.i/C׼4P#s#%՛K~Sȇs)]~cQf"?"=c'8Fu{/H"rT<"mo7SPyeCQHүX/+:ңp](THtx;9iauӂ!ОM7-^{c3Գ: _G\\9=+cuTR7cr:jSYv-Y)lὩmW%}o.ژ),ӹK#(,ar3DT2׵lNzeu{\߲RX٠V?-[2릿拁~w{N/=;/`1:WHRt6sNG%J.ڋ65 {i\iz쏊з uY2y5\_Z: _7 ;`ZBgh_UAuԕRoBXk;HZ>0v&A ܈y7tP䆄7RyK:Ȯ}Mk^1Ezn>lv>)AߘqBm( :/]-߃cD8xM̓ݰ:so@|QV2qzl3--mWZD57pFT}9Oyb=HII}urW@!}x@V'^=ydW[}q;[OH(+-t8Ή)d87{`thcF*b03C>S//)vA/ԛ'u^3.ʢC 'eLwffc:U`x?0_wtE5qVd0 _]8=V_n[| JJ!Qb^~ ͑T|!t !>!,y`ԟIKay\״ܓ:ܣ{ef߁'DtͣzTӡ~ѡ;G+΁:I񩔡diO9%^B~'I=ާ/~L ?Ӆ0_S@nԭgwڃ6gž N.ס[GT>04X=: N hku聢-CaDa~Da ]``*s|]ۯS(pX& m#'OrzvI-4۔7@#v&~׭w7QҫB:=~z1O'.<[io̫M@e{)+o*x˓qlYy/*ʫ(%,xro"_eVYTS=]rLo1#+>gOӳg'(kqY[z@kR 8O s=,2ЧG܆`O!}ZHS=3{U/>mLuicztUؗdKuΧjeoܮB1]u]-xXYgbsXo~z ;?=2b\θ ZWOG[/݊tۊa{ \XP ::%./,)Ow)^Lf>ןѰ_ ϡ B1;έR̡9+\"\V#W㒀Ӷ 9ERyd79@h;ڛ"bI#J1{x+f#D1+ۜ>="k_ʇ&abȇe(q㈫P G %x"Šk?\*|Y1(b&\gPK-ͱ_@10c+zN{ zu;@^%yo t {_zVgur =+,>,<ڏlIdF~s*,kSŷ|@/\Qr]ڗl%SnT˴0߻\o󴶏NHG7 7wv_!]+ӯΦ}Bz~",~8_#ߧU? q5eg~BznmLnTeyn})zYnݽQ_>6qf2a<!kuQ:Qط+kؚ lQ,оA]jנO}8FX[C,2;_w ң+`!S+བྷzw'|;py9t!˦قr~>rRPP7ˍ:BһYӹ!票kCձ۱>Wm گ2ԷOWOENճY{*lVfup~glյ{8{}ZFu&pW(MÕ~~α RHBw8WfdO!q1ޤFQ?RyUޔ˨^rpHIzQ[˽PO׾#^??ӡ~:`~[:4?zko|=y5ՓփQnLW ʊkzȓc'D[nFyX6Qo}9_?qԨ8}~aANI\ؒ'K<@VFo&rϘ~eiT&ukyi,4&CR;bݓYp5Y*gs`h=i8Jź 1{R`= _g`'8(/oLwޖtwVou0s=Ak_Vtw6[O!e?_Ms$xp 3?9cZכ (r',vƼU`Q"o.(]фIOxE_ȇU@e v h.dʹ8\}x~9DʌSɘ/|cmV{ :KF}3nXE[wJUŠ%f}84W{փt! .SZZGK?ս%}G׿E{F2NόjDX?+Iߙߡ}|*B(6t;72khE۠@6Rا}e(T*3wާcݗG-AޓB^OfcaU >BzZUN|?9>h;(Ƿ7*/2C>)$>yd>RVΫ c? " ax/ti+5w )XEVkLXW>C?i{Lp^h6? f~~?i./f\? ["n ^`^xM>g}?[#wdN=Ъ{]G\ ^s lAݫ, 왛v=u8w0o^<_0n| Cyd)D-dV[5SPrq ] bU6CչGYw9]Iw}4<.nB;cO<?";l<኎󠇪<:_~|PD 26 !!F70Cty6@d[( % q\9ߏCU8Hk~$E=nw D|.aݭ؀Zs>_3嫆H;a~_?_g ݀ߥ<}ʍEOkTwmKq]/G Ǿ'5B^{Ngwl|=nh9:;_Wo<ׅJa["*0~: j3HX z%=EvwKr}ݝoq>\dIW1/3' ZP?ydQ =/7$ N8d `쫑  oƺ 7#lJfKzq#߶wmj׎tj_Cߐ ][V2GTb.z/$׿f?I= b~/{5:ߎ~Dt 9OɞlLT|Y7o]!H׽KqR|͛x>6`H.ӾuKokk𽧯iGkM%)aїEJN|s&ّ>'=xOBT֗XExӃ"\h 5aBBwoyb\܃xWSs+zI0OzZDs}w]B&yqGN;Y BFs"(aF\?Ρ*qC+iV< >8aي.zz`\A`ʹ8wne;8,Dwv5V¸-xly 7zwT^:ye?O [veǨ|e %㸁5gst@A^%;h2jD^ku7?ꚏP*;aw3nj'q 8W86@(Px!?Tt!_6-c 9{gux{"ퟰtQ:|x~%[WJ-odݳzzh.d 3RCxGuY/zS _a{bN=ĬNUi_NW9`??Ќ#EMN :OG7 T'3՝ ҟk&4BObÙ{ [B?zTFu獞8'ӝzR74 !@wϝf޸Q?7 Bcm؏}v:|;҆pLƷ.!Gi|sL@|:u޼yʅtՙ7oTof?{&${*Ww!=!{AyS K9~'Տߕf98e3YdԳ:ramOWz*h#٫yUlU+4axGv1%P8 kU`_U˾bZvcղ^do[~Dj,{VTq~K?%;> .]UNBjI0\qK z_Ņ#@~ *1,N-_֨NKa: tkmQ CtuiV?֣ C{> ?!=Mx#e[VtX}ZH.+}iʣקY]Z6 И>&Nd.8:iYtC8fCmGq-(bGct*9|zCgnD( 2+,ži\Ԉ0|\|rq?7*wA|\\tYqi|rd䋒R=Og/w ?$\͒>E31o"yϓn[I{0<-tc|ܨӽYk7]h}f)ϼvwNC=^HS]DG1ow?[&4o||űKXV *[Ɖ<}^U!{+a'_;j LNn7q:6{I1& (kq=f(guy¬^{:#9Đk>?V=NSæ1&隬T:)N ]ʨjW5f iGls*͘uV#NBe/}xI?)isA~rMu}-B1{tʏ׏t׏~, E݉kvm?zAz3&%c?kciN[RwBKB@@QwiHBB\ޓlg{7!]fw>M#k7·+^͵i=wkVx>}{3VK?Gdˑ|@sP%*MaTN 1y~FRļ}[~CY(CF:w4 )y,M.uMUvTnbZdWkk2oCȗi.قb~T${q;v]춖 SPnj_ 6##ȳqJ?/{|'imOn u).zc՚._3 G5R}{T.YVb~ju4ʼ|swB.I׳OV5m7݇?m<;i#>?WTSW.J5 [5u`J]#NDw|<-6,|{L I<;˯ PcXWѭ͟Kk$s@絷^tE8llW^p 1b6t1lH1v(Pq8Kȟƴh(~y7I~;by;|9O~8ǩ^F?v1q^a0s,"_Əm/.`r1v o9V܇p$]lyl>9kAQGjaQ|&qmq&i--xTX߷3f?㰾PlKRJOhy&?߭[Ͽ2uB^ |wtbw,;4;ӡ )&Ap_) w5@.wd X߳)`paZ>?x!݁ހ91፱3 iL+GYJ˫le>7\CNHMA1ya{w\p9 'wz'C? ߿Rc*9c am׹o~sCF}FPv]k"W~+P}aEn]4_\.1_LxoPv3s O x>b{hZ0$Ʒ$~Au6-xu+10==繅VOm%~-9 o<1zv\RqT>"y 'z1\ԳP yU9LYqɁ(6Z )+ˁgl2|m3EA F@{N(V]Ԯo/|3R㼒y$8"`y?YQvPp*wAљPL#)&E}z9bɰ\Px$n7p;tNֲv77r|^F; 6B(J\+EdkiR W?}݉W~[(3/,$K: Eh7=u>5yF5C;dns]"(fB2:W3114ḭ>KPL-x^sXPw~LZX^g'^B`@ UsPfZπTm#\lc=?)%'eB9##Xƣ>(~䇸`GEx.(u>  `\X>6~_q`- rzC/->'q#=xbp#/K_y11䘈 Igz{}F8Նx+u>a9ryq][=7oim^.bSϷU?g+|qۣ}wO+t' jS,qy?:\B?R [p'?e:scMO!2W`';Fc=@s磂'`Ӿ2u=0+?M,s{{¾ffbr/>d3|\'p[]eX.q#g(&2,3=iװ+Ⱥ \tmq]uwz8|ZWþ8Io 0gOKbL |M')nxi@xSjO)KP,o2/<硝3L91Lڏsg]˺q^qN%,;R| r ]2%~Gp?,v%²Y#2>U_=7_>~^Ol@~Q/Ks;c?_Ck ɿv:'8˯_ٹ)CuQ^].^k]uk¸T·]lAm_xn,T?5c].4}U//FI,uSy|N3dqʒ DzxZB}ᣑ_teY^i^~׮X<}PTvX޾v;w=ˋnP[t _߇ryovҔ~z<<˧gN!9Cף3vRm@[-iNRTV?ف<4o° t8 _2/!Vn~~BD_,{KI~MX.׳<=ϳ$/ʿgn<&"a|>^7`P]*ӳOȫq{<=7/:<=Ϗ]YX#xlgԮ9eՕOq1g(cOx&xT΀Xh8k12VJx]sYǯEPq;ť8>ט֒C0N\cpj{Q }5 ??$=\܄ voP|(gZ0uo ewl&nW3Yhu gXVmÚG)‘11_Wx8Yfłޮ[U1j̪%OY5<-o+*fev9YO3G#{\.B7~oJ\4-/QPE~z~rtXۭ2nWbn">xjdnѮ^<#v|_#y>F㊠ܰ*"Y~|7;7Qf" <\+Ď"/y{O!vOk0żo'wPLpGA֞bh&+.*d)x#[QUe_Q_ycl೴|`$՗|KF{}Po} >g݆vD,W4<(n/~К~;>6ȫU| A% Jq3x~/Bylϥ"b<T-v#z9{q]>>W<Qnw|ۣ^}d< ȳg2<ûP߁ a2+Ie_Ծx\/-<}܅I|Hx݅oFZDt #y!bb!z9瑫alOW>z<..ۋ}.ucGXΜpy0g;GU"A8aQ0("ˈ<|2xqo܏d{/e.C]B. 9oQg'vNn3'"3\CxEVD0uDW0,}SbbQ"cQw8׫n^탸rUyX^F+k~hT5ߞ[Z'~,~oAYڂֳsC}P#օ"OO0UOTb1~z' b"v}oapG%TOṏ'Qz[i;e y\HW\ .:di9%6cq-BhRd}|#[^q~|iF?I^;gB^ߒn[A )1cDH|/"DU@{ǥ#F8γrQ~D^/±=ˈp,bB~Ҽ8/XQ<:}[71N!?)Sޣ<5K7ފIx Џ8?]f+c~|!^CX|_W(:B{8o[es4=߁YrBdydמ?yyk;qb㣦+^b+/ʴ|se$凯YGkOڂ?aRPyb(-5]c~p\׾p. q`:wW(h/{p 6! 8$/8ˇmb|w*Xyn[t1 )vu17y_碽ok޶wB>{Dy/klwFvkm ?,ڽjBl aCJ6?l0fC筕ޯ/q֟1|!źzf<~qVlo?UCv@Qcyv^^S<7޲ayu|zs/?H6˧˹rX+9/ ͇O5ӱv?6 )CsNB]jl KV[pHixHEy=csksw#Sh/<ˎo?8\,'7rY~9{:ܿߝK=&[KN(g4Y;@LO5%yi^>fܟG_1$28?P_bΓz‘T_z\2̟ԃۗb>N!}WdzyoeX4XOgw_]5ȣNp~Cs|w9.,]}KNyhyhgߎY:PG8|\!/!_yyƁw~SBq^ON<2߽!!,;y]-0nmu>Y.<I>y!"+:eWv͇d lGTgf<;{~.c?s^.dכEBc_ec]h'Oj^[S_\e},\yb@UGO{_6/4}ySm>ry8R߰Ւ|*e!?lAY2^_9E6/h'oF=?p⼺8ni/^Hx+ۑys/'Jr_8/O |8O.g?0}(/sA>_0>h,rye}Yx2 m q{=呫ȸy&-#GD/!lLv8sB~9$8,+//U/w+埻7,C;ZR ~Wb[Gr yQLd~},c@ckҌi#0["t (Gס p^p^X~Uw|w{89@y;+"VbÞ|M䣵G`o ;z o3q<KG>wa=-zūG-ﲎ`A<7I \ |`/3x"'ཱ3s@y⛼c&n=Q}S`bC#:D/i&f}*Ol'BGpM^]v2UԨ@l+D"~xD89sq\3Wp=\h\C 1Kɾ޾շ}A&}gC6x^Cg\G1 _=, ,.5xRxԴ<ꋁQ{ 99 cgr\1b!/OG=sMKQ/7 Q< A?8ޠbv>5_R_=/~X_(7.TydKWD>d_(~=~@zsDA;w9]9C]Mu$DM21?) סEv~{@z~uXOGaDN7I/v:JQ[Q&a9s'zy΄Ka39 boQȺ)dIokyxe)2O=s(tGRtY8HkGGxnDEb2KеTpH/c{=LAoI<Ɂ|ށn&1n:؋nT}"EAym(u$GGJQuX\1yL8w=9Bq#j"/'Di,y}Gjs~{>(N,/, Pfyp_|;=a,U5c!bYO ygSTQ}MzjQ?(jbj2Sl^bt*wrE{ w?+LD8FQ È(X#+X.gOS?h8Q`W(|vD\B72f?{Dhv rv@Y?{ $@ȳ Kό?QS~tG~6~/n@~m բ#a-*[~۠[|-j@~giy yX20?bXkv 5;f<ٔT5}zŠ?9P)w,v !n\s~_r+ȗJ_?{?xv=tF;ksfۡ(ysr!ơa.[{m|svBv"?X_u8.L^76;@m@Is(Ӕ{ϱ(3WcȟJ~"oy;x¼?=Ś ;ʺ M-{ ]90mռx+<œNGU\LNW &v,\/y6~p_9O1`#o?P%up'%BLp}C%>|(iqҟ{I\JlF/Tj ;W<|I}T sn߽l{?Jǖem9>^q=/8ni{vVAwq}w] }Uw/A'Nߵ|K\pny}NBs#*h}##ߩ'qv& |L/$bKF7%D0<2=CQ܃~:p_ϟ͐ẇO\QfA{g~/w/IB}S)a;z!#MYLqy]RtBZݷ8/}"qFgX|sJD To:?Y3!o߻:Kdj¸:bYGfMi3߁;PgSRgNx"zn YZ2sy=nVKw<4n 3 6z`'Pv<* `!xO*O<3@*Oqܪiy^̟fRxd ϡy (5 BICa.E"b*ד8Y?"*u(̗@)}_CԷŶiX6hG!8:ܣ '̛Ayʵ֙gp~'̝^_('3ns(c&_k]%ruԣ,o:̡ _IdT$\rjpbTv~{\5R=I?c\#")QӐe6'@2_w'<.QBxVƺaX|F 5/#|8sDю7?˷ _}.Y8 0nHj_!v87߫wk\zXgѼ3\oE)|_ME~œds q=EtqmBSs b/Ƈ,vSX'E]<Q(zߌ+0.hts\r9Beg\~jX!˭C?M<ؔƦ1bl#ax^Zo|b¼ ؞.!g!w9kr#w'|g%C7)5y>E`R{ s !ק9> ߮ЮKƛB;a|6|TNNbN&b?:8ChI;FʭQ{WZBZ4Dh ̓tru2_➗ɐoт7i4י3}ԙ5g25J|Idt4bO"8+ñ>$gOOm p+~83^r0y[Y Oo>`b+#%(&-(4Dc.IȺm/ڧ4E$rs:3ʝw(<)S* Tۜ<'W_xD#ScZo-O˫*2iQAhWS Ջz^ysYOL}0>u(ߋzb؟IO,u&GRΛ ߇XNz;GR|siP#p5"ϛdjwb<;e$OROg$u$jPz%Izu̕=B^F֗ʹQL\ȓʍēl|ו0OɨC$v$VbESҏ07"EN8č@K?\Gr5ƕwE~?#\ϦT~&ۓG )I\\O_@M%dwp)lww[޵KcW5z~ǮwrP<@~cT^^ʳ:Q'ϛS SQSLs_.v9"<2u5'b+O&˹PӾd}nIW患 ^i2;YLv\9 PV8FJoY9B?{qDZs$=ä8*SN,O!8oQi7:M.48NOEqRŶE*\s *yUgRy؍$۰k0!vbecݶ.陇:v9"'X;'Ğ#F\MQm<-'k ~CېsݏAien2g]gDywz9 791&FW[7rF~9Ϛ%<\[6,W;Įc3u[<yE2}ߏȐ %PFPyKu4nQ,΋%#\.,k]w?qdΣWO8dyŦ_E}A 쟜1{7 3nXVż -`Hpz(^:?F;9QzF',/y"}V{|Dp>ʉG#_&>V̄8 Gnu⛣@J~A?"v <ǮP>-`&SbUQWv"s sgaqIRF#G'ڡsa9bGM(&~"$'b4O`n߭Og %NԠط XZԄ,D\ڋ=D_=!Z^}ATzYEAx_g=u]8̷BDor8&}PN!]1ess+9\Gt4=ssely!O, 6E^J{s ~sGu !kB,;G(2Ŏ}ȟM\m.g<:{yf_zHf|9p< 2nc?+v +$)|BZp ~VY v +}¾teNOXZW;|2P}X73Ys!bM͚SEf *Tڻk[S W 7Ҭ^b n"^$sGl::b]4DT! aލ8OLu<&E/9 'ĎDIՇ {7uQ4~%+u?I H½ !UXZǓ?GU㾲.a,|(KBWpX޲VϺ6\w;kQ7xzppDu.\L-Q?؎<!Oc-3~tb]Eyn{y۝ 1sƌ8 y=0Ny!cfƸŇ +V2P3CG;U!sX0w8ozy9<`'D4'Ev~:?q sbH*O}~N}]Q':0x;a'=ڀŨ?'QG:z QGȟDyڪ) bB ䷢Z~2u2#2q'#/j,u}Ob<1jI?D^ ZڔE?5x! `^CiGC=k| nC5NU0o6|o6q(s!7xnC5J|@Jȕ ֗qϰe<sW,x ð_,y1/EGԋ=/QV2=Kaǰð9Ƽa0aSQ~ΗC1W﵃ݓS(V@/?=_d]<3a낓S5;έomBؚ!Xn97Ddԁ|Gjk|" rdy7_K<Ȓr.dfGWR;?b<_?uād_E9(y!vRPx}߼HLO,n7܈R/"v"yKR'›Cp!߰}ȅAX~a#O5z~s" 1߉E;yjHNJ'|ffp\= WvJoG(S&C{4.#cuEhHuj(<],zĞgSlK]7nr_5Yq]YW^Hx0oc-<%%ױVpi՞ޯ14:yXyq#$5M2Etrh9MƩh'T 1p_kQ75Fp<4l4~X_A$ sD9l?q+@:{18R_\(qZ\ЌlzVݳn Nygzx^n|6wCg+/dzYq"B<'`>BHlzv|I慸nK,v^9h<y/gM'gH_kNP}Ǭh1ͪ!.WY5 cUwwe0կTa,fehgB+ac1'4#~ /$vB1BvBJ}9 \v,u@E4 MsƃNn.{'$v9Kyb{p)ݮY޿wY꺶5[vG{k955y1\s\3zzN_VNGcsvDYuڇ|.w]ϕ뻦?l|u\u^'`;{Wy:/'=Ptʅud Y6s4d6ESy*{`Ð{er'Zj*Blq_!&EކL)uf;W3KK ןr^cn~YswͦƔL/ Ah ~)`q| =ŢSP?j'{3Eqzrj؞LΝ)fg|Y`#̗̋ e9ov5f%Lߺ]"Ybݙ_lZWiYјڂޫZO# .l E0ި 1Zq׌y7\#NA_c$g)e^J=|Yخ󡾥E?bg\YVh'իпO&hAmQ%M\0g8>,Zx$sbV;)e^^l@V˹0c"/t^Ryc3EaϨ<W7c &v`USxBDK=X"P0˓f,5'w@2,Ͻ8R؀[~r7@?]i.w.Ƶu‘2sp~~_k[2j7<'HέOlz_K>x;6_[ۚMukb6%^-Z<nˎn9b9j:IjQ̎K;)mriߋMwN۷*~lʴu[%oW׆E~zZ,ge!z7.@XEZIZhZE򗩜 h\43h\#/qmiTQy QNeiyMR,bstωZJdZty~,_5MƼ=[;RZ5\Z&s,ukI*@][x5Sc>V.ɱEX|ڹw NdI(+jJfQNS'Wkyqȭ(6J¯; @}A\@Յh@-S'[s*_$8VNjߖSU؍xv̽صqjr;'Gz/Ճ(?x?qީ?/5/.7Bu>Uuor0Տj9Hݑ|vwK&sP-qARÛ^#ǫ5㹼ҍST%༉`ߜl)' }F:F_ݢȣK\_cnq5[Ru ~YR~(`W:3o/!}qNT_0%3zb{p}c4Ķ# .Rc.naGGpr y9k7gvr<Q,o#Gkl؄ڿzq=^oc1P.ԣ9nL{ 3\؃m.;W}quoݖgj8Kz3Վa=s 퇵?vJ{.*ITl/s[%a>~%G*,Zܒ-¸^X2ߺɊBa؏y߄(cMλ+ػ5Kq-ժG5c~'99֫9>~5k{v3P_feϷ'|gD}.O>ehz7{cmCG+7]7=q щo&iWjit*6y/%]i eܔ3Pa\xsauyJ=^_C;<\</< 嬂߇1gʓX/p\_Ⱥ0u b*<7T(ډgǰz>4>nθj?}^nh7t8rOg/gqQKg86?ͩY|bsg !)g̋hFF'kH|x]}_]_Ua߱z g:أ`x}8ޏrgu>khoĀ~$sLy,~.;f'vhbz$%ߺh-n˓OO[syS[뉽ڼ]䋬jZZ);%*(gXog뛆bT .c :qtߍ\a ]G8׵Wރ㌮yCb[k4՗]Dۨiy>5y2#%=]:Ar=wٓaVl:'iеz\]Q]Ӄ@30o~?N ?_p1w?DC>_5?9;#N:qcsl>\5e5ib͗dj4<G:6}u#j" 7_v`{<Zpru-K򜘿PcH NO=5+uzO;b'y8;K$ϣTF_<qG'r-{ 昗96"_`+S ,sɏ|WRWzFpt<7w'koNFmxzKb:K]ݸi3P\=] ]_M{:\rn2mxnN ;a`=[.r][<kb~Y|yjDgud 7ʋ؊Dy8\'6{]0Odz!VbG}yʼ?;);.G?/|?fr,I%2:!3;^b&ۑ=.ag}J|iLsTN%<\洈0S)r >'[a\Xm8&&\ 4l_ ogۭ-(o;+Py.m5Tr!/斉7$>GVζhy۲~nK3m c֟8/eα,.o݂s%P/|:J>}$I+qnbtWq>݉w8| AfoͬW&=0f7Zg2c]p20̲<Waf|2s1셼b'$5a@cZ-K^Z8h@Iۥ([bn.fwo5a>ƷCf*g}jpw}OW|IOIEZH(TsLT֯:e[|yo4\+{X/<_H jͥ0{yDZRҙEqF(;<7 <׷`9s@ b>yd\Tr/L'g2w >}_:=}.b Ԯ\ 2R̵#څSBpԟ o~N}>B(G`WXۑsKkr[v cYd[^)O?t$@lx%>[&'8Nbyߡ:!떬JrN)}R[ȇWuJKp8->b$VBS▆ĸ-%WbN]WJOZZIl䅸>(~BpBc|[8o'yOG--=ᴢVDKv  h ŧ!j5%ԁo%#\%U8h$撔z$?b(XGJ?X;;#2-jӆa$FU8Oܑs,EVT@{3 o>,oH:$|T[' ? H8a>S옜bϴ~Y̳>ηǝ)q{mMLc7+ ƞ$4v1.FN{sŜP<upƹ{O#_b5 ϛ c[RS .GZ^SzMpSJaj5@R?m4D)ڵ\?ংQ)>|-TzT})N|uy#Qn\~ʽ?b#wOU3|͝}R;~Y6Q<>>/WG͜CIY:oLmz\pX';Etki8zhmԓܧ8>O#v7/ Tyy;as7tp{\SB},u a>&]k%NF NKS%^Fp(sb}G:eQC_D?/졸[M_ic -HQg6ꕺc[y] ַد\I1lMl\q7I[^hsiK.{[j?N8_P^q2Xav.f^:ܟ;r,[uι|Xox9ݺ8 ;;#D3Ӊv6.bZT/ySx"7ve画OC)^Ȋv;w~wvNvNqManc $~e68_4<%a?L\%}Y 5a>{%'ƼY? |qh~I^Ӭ4Ũ\ ~K|JENSgX'w~ܾ8=8H\5W@օX@d>r}ԁj<o ć|)nF?·c,dȒ8Ŏdr~Ljs_9}zG;]nȿ}[\G>:}}vv5e~9}&vQd|Kݤv R9L~3Wغ13~o7< s0|Nvr<*zGfͨш<r5IV\U7:co7Tu};_TZ{S.>g ŕַ$k,4~"q-.`<.M|aS UNS 2򟽊Nj3-$^eu! ne3-+bw"&6%vq(8_exp~(x[9/G]h\ؓ4k:[J DG6@@p$b?"zvɲb=kNעgʋ0'ԇD|؅dvHGa.Dܛ\I18[B, ́\̈́98; A<|{Nd|'"6v"!gЃX}"gpj7ȑwNKT%ϱ!-~7Q>w7ļy7u&ԯMȏI܉7dcvz'OZ"ءXO,v'"o ||_][]ߵv܂.{PO,Ps)g:@rS$J6@KAFDN|oֳԋ܁0Cͺ[G.| eNPfDW&%S zbPz/7ډ=_`JnCҵoR̊IC4B!f(5 SRjcy b:u/Jɓ &db}w.;YzyDTvy&Ɋ?ŝz+S,O¼I`ާؾ0#1F~FQH Ŋɩ1_P!п>P>{ y˓y\`?J|Ŀ챻R#E/S̉ F`9s~ϧG yw ):޸I>̓xىzYW"$א6̜H(؇]H_vN(CE>uxčXE6Lވz"cv#o6_z7@9Sl#q~ڌ}X% 0o6z7h3ELMan]ET<ڥ-IiQL>1^jH6i}NGM޷tM˚cs?oIֵ,oS}sdJ8x^Lr%gb冹ƥ((cWKjbc@֩XRz\Rn8Vpx`s`S>:Ѽ&ca ]~+RAwSM^S U#_$YsY(eg ˺~Xޣu6s4K}Qh3E?w*Ep3EiaN&:ռ|N aEֳ7$ϲҦ9K=v+w*z5o/#O碝 ϫt88mT>dS9rû"|bgr̡b:OQX𜣕PNj"\kcq9$DWos#m[hMԮDs髣[,/u [/qtYsQr627yny 0+cۋ:xQ|ƿ_ PUG|DR9qFrˈ|?W,j@;Zǣ#\3㞧!u=z:pt=?r?So*W9F"3Aܻiܝ(f1ȇg|rؿg`{78;\*,7,EZ{CqvK3oa3+ޡE?(ZC]aϢkQFq.T`̄<.4  Ho$N8h{S;Uw{*E^.Jb~bjO'M^OT:(muSꠜ^`"+uQr`m*(]lO\$ =A)FK7BdhQ\wyn+jV`-<_d+*FCɕ.D%p~n,ubѾD3%% ,BYIH) W6Z ?x{*)~T|ZoI8/MUhM\G;'c:JI<ԇPXu/$sc/TI)Q3F<=e^JZ9iZQ=o5GXrEvz"dHwzlKCKz*Ҽ} E͇sI뇥z$GX$vHgd6?cDc;+]/k/{kAe-KQjԨ_x~`=|; hCQQ/<}(<Ӕd uxE 5 8ţ=PٙEvC1n_K} 6C&Q}?;KP}TzJ=c(3r㿊}'ljrG{kЏn _a(HVG{[bd=Bu#9ErlGRl参7a\6,&? n'ǡMXKtZ룐}$#yOU-QeOy"#174k=DbG&d#*޻*bm^h_ OE\d?!"q<)p1!/{Q7$~I}²9kʈ~.R9POP5M^끞!*@bs?UJϟr?Js>q{C=s*oͦ؎ySn ڽIߋb:o0?v=8G|v=QNόoP;}s95H)t{Rn֗:v>1*{chhno3:w3{}ҡױ^w夞w5-s;ϻQ^x&;WoU _4!N8<۸'8ǫS3{<)-/GqI@s|pq.qJ >{8y%A#ݟ<!>ΨlljT0vn(w+$?;$Fo3,Oθ:#hԋ}ۤ9)yeO7AQ>=1.(q?oѨ}g,vqVv>q~= %yV yp닲ǵ('5yAF}\xNTnʍ0TA91OypS D0t7SgJyc+SN1cdP\$%0糰 |s=i|n|ĎFϼm,3zW"Vx^EOԥO}]aVZw&\grğ&;rۜIpLxյx]|\0h<-E#;1ע_[sqܨG =F=Kcnƭ EYqP˙hSw!u4qLSCggs8c#ꕜԤzr,~r<.De$އADn^8z G/bk'2&%smEn' 6"3 nqᔈJӃR9GV~EW_~ߪ/EP\m!"F y;}?Y'CF v̇(u!bG8Xa}[9G{{~~ݫޮ̓?] Oo?r'a#A?v~;XWGn@Y{8T!QQ91k]`C:rlP7xn#Fb<|hk yc=4`kR}7s}m4/nx؆Ũ\)[]NC3,uiH|eLh4s_Ouaix( ;KЦ<6Sn6jKjSצ8Z$"4ŮCsSaB&^9I+$I4Oy$Nub߄h;'#/ l{Mq?DsWEXU_0+')o6rhEys9Ga4?8 X=FC3rʚU\u:MT1ܼ_:u@Yˣ^#SG>JΩ~ n(Ѹ^SQ};8b;{c|u$sxu=?9Qsf8.u Frې?C(:՗q]!գ󖆬:F#Q2I˺Q<7wB_T˂Oabzy.\*XS&fm\#~Pdn%/hu6Ɓ1/p0 E";E cNWz@}2hl 7.Mݵs4ƥry]yt˱ޔ(_q|՜Oބw0_f(;.a^Xm9_rͿو}p\ fgKmVoyG۳aYMsmC9mgklgOL[\~T3btU n9mGqC,gg쓈HqNWNS/{iK(H^pnx}KZ֡0^^էxz(/>t~`=osi,ggNF#޻ݨSbm `w '%4@O#TCSv8^g)Xr2s]Pמa;(q)?.(E=T1gܗibi5;9}sM7CbdsK-z[kN◴#vKg"/*Zלܐgcg}kԴ>FM|IԤϤȄ|t2zzS~T_a3?y|,'(ϱ|cw5a.|6[Up_U%Qˊ$砒?Y\ a!ոx=-Mލh9-N#oѢ|]*LN ohXDuR 9&0K% м_\/%vq?ɜG1O~ :IuQGZ 峎Ry,lyhLe1?CfxΗsTCc =U[G*wU"Oebn 9pOY7sRQbeA} <|X<j),x#sOJS=Po{NV:#c):%Ӛ`;iC a?acWQ{ bb7B?LR)؎q g߀cC>Ca<0Hr?Ð~Ghf'ˏ Q}VE146CB56{dh6u ۬H߬[ӬQ*ETK9qF1VE_mGY |WbYX&`Im.*WTVug6\Xn!Oϰ?-^Rs܊/)|FQ*wN2igt GZQpO1ϭiu;-w=TI{91ߔ%wQ:Wtw.@?/r2n*\;Sl2˕.m^CyOmLkq<+缡Pvzd>JZoxCw,LQ?"sM3΂<5u=eYT;wuN!):5$E)s,b&SRĽס5Z(Lȓj^_!=\s65ݏ3 h\OD 䤾78g}}oQl$zc,bo%vVSVnܟ=y-mx^rorQQ,dCK-iFxk߽wqcU8jOoG(~ nèuë6B~G;{'9 9zow@HxO1uDzr'bh 7"Dkߚ#qE}\1q<)BvB1Βx/J1 =O(1м%-7/i~?167T9|ɨbq3+Pz'մU\ 㵦ɤFyӓ]TM">@E}(viSK?N86ՙE3muo,^nLcӆIhYnrK}Vf"NBydϊqbN+>+.rj#b\Șl7]\ ^+]KSy$ia6y,O3ӴMN,eӓ#ͯoc_A{0dXy?%;*vQ:(> %vF=&F{ڵ\|#S>YϢG0htA01On]Д1-A,Xrk1ɑo e~d Xe0x y fs?$;ԨV~[j<=CSbݴhY ,y*w~|B=6N~x,h"/9iy?P} Æ1a<$=S3/1q# UB%9t +vKgrR@a\'cbnIWJSP,Wr+q,[h_-IRSʰ^WsJaqJOJ Nɭȹ$Gbx/ JQRĺ,oR}Ƃ/b'ST.za|J߾65'ȹ#o| gv<O)m<>_Kȃo/ӫ17-'07s~$mȟ<˦IQyy"Q\_,gzI;Bci)BlsŖڳiyuT΃~QIq]t"%G5~=0R4>ʂs-'=1fss-r`[4ع|DQƻ(u.#_.w~:*⓺4 s0fEGQT5sRw#_G_`v;11ő=-Ph]RtS#ToWx~[!Tqy1fqbO0'#1SN&p,_Gfs;:Uc8EIp3a3Y7sD3v3lȎG*pF[Ŭy:^:9O3yyg7<|ohfF=|FX/-~qF5bWྐྵ?yW=yv:r]RȓH|͡8Ng˾g?޾(.(vf~X_y\ׄKOeCgW9loV<шbI(VƸī-)u+6Jʃg)Bq:s] s,7wB=ϳ)?b)V7/ 畦񹙊<"zHg'g*@R}gX!~`\a _4.~:u&_ALP\/SJs~%%>r/blA~r˩qKx'e怽XofW<8Qմ b} SaXϧ5+Op4z/{]^aop ny!NsʂZۓsC8C0N&qDӏ@ &R_Yjt~ '|,u?K7C?*^b~ _s<$7r&W_?ߜ͉﷬n/j~yyG3/[ em+ORNOmو}͵xw'|u)g|Xi>zb} oOzaȶ x Ux`u\ s5 R/3;o/#7 1]G9k}Llя5Ze7y6G _{:Oa.QzMh+cOә)th68xr0]p= F1ü߳ı<عܯej~S+Mك(M^8o1N&.oVY׼ͼ73n;mhB^Sp4Uu [sĖˎy;7A`gg/Cϖ;i/#h~Y^s}L\@>Gq- ϽW\j^ c`>Qp0̿S -̧6 24'*'ۇ ϧ=ʏA^Fq/9kn^: ЭDf5˳,|=]Fx`d 4N>sqz} ) yL7Sy"3!"3Um3eNO1}g|xd?(V|PݐLzy?v5o\0}M.;+}RWslyFbzys{ֻx h]L߄ !vsl^&{Q]%zO%z'_w`Ssiz9?XB8n_9\=yW>BK|kZӃ0P@}$POb .n{ߜr8J ?dpm0R8.߆a_ֽܚX5^"';fIo\ 0ʌw}9꽽)vB$EF|v(#̍4FF8^xIcu8/7 x~ŻoX-Js9a):GW4}HG8{$ĴT}{OIy.Ɔ{Jʓ x~UN9S97j0ڋ>et/)}=StQԩxxbZ$nEƫ4u[)͊Jޑ(v,̯~6+4cyz6OiaV^Ƶ6η{*?e~A6s3?3G{~Z7ÜYY!幘ÈL"Wўy1{ؽKXss/_GY^F$n(j<È /b__y5N-.)rˑL2}l_^b6pW]˱ugJEz9Xi^zS2c+Ĥr4X., {z=1BB< Ϸ'rU7Ҭ@:2>@zx hk8Umj2_)-/jiR{y{㌪Vh˻Mt\`9nexN,3/{4-2Ks3Ln8\(6G-n ':C/{L ẞzcQ=I{x~q;5k@;x^\m~}yR s3'Cd.bs08G9)v>yܳ95˙ymZՈ=hQ0es_s5:% 3ƼgFgY?cy[9+Q \yKgs|yWˡ|P&wqt^+%;P, ۿXh" !\p(5닽$ռ2bW#;L%y ne>Ƌrm-܄Wk1د9lWVW94KxcӶ#ʹSs]8)X?׮/z|K7S}y~IreDؔ3~ 7gLS7R8c8 d0epXkB)Hd#62Άk>g<3s2WAy֎oA& 2oLj]qqi$8iq3YvE@W}.)y{]ȣRb3QK|6s>E֛/=z"z[Ru &=_؟L+JBRg&DQjl^y"08סD˷6}[[|Rcy7FjNX\K/_]&_.E^=WQ/h1@t.yOqIw,5"y l5\F _'581X0M1?u>7lYaSS F?uvca]hZj߰:}ڍXIUQCwbM'U_^)'V3?(D#0;z#I%9r1?"FlElDx>R"A"g4˺y0'0/J8ny Ә8Xas~kt?FbE8uw͗_p\q~DZto+q(qa=Gsg#XIDӰVyW&6yr?Gq$5[9 <$b1mΧGTUQÜssj=jno dA6xaQ +5, ۑsraNwn`:4s n0Oyz{kxnA?Ky3I^_ԾICEn};Q]4+)gܷi꼏bMG&eK_`>2eA~Ux^i0:$Bbjط*s.k2b^D{Ku0bkIG7kܧZTv]N,n6qb3g,aRҮ=-\@mQ߼ko#;>>}]~5[yx݈مSV |@\=2Z~fvtaw'Ns?SoC/:4;]hoa+q]d?t/wKĔ? #p__/tue{3ߐ_xV_Њ[Pf<1i":ǣ|B1 ={T}Bd/y_+b?[>яx?_j~ %O(RKLЃ1~ |l?P1 ${~|B9\78?=ՏL:e;,1{^~Q{q=@^= }y=E{p^_UØ-iYbsڲyگK~:3>.W[u :좘{(gsyTU@^\5UJǩzoάDz~~Y=2_5eclþ[E<|+̛+!D[wU8V\3/Y݇5ej*}XSE,c q.~߉95?~F3> SѯQho|[ 0{5|듩ys$~ʮ SK*U|g~+gwx?|KP{~ 3{ob"Ť>ƽD>gw ø=x0NqRߖȯղ`D޷O3VT8/*1GYb~(q/::EpP3bm5U] U"X7/=鎷o8O#랾kT>~*쯭r;N풠8CRD~#3zO+EZ}EK/bGgo%/z}]juhLǪqXQ:,|G|)^ lZuDgrinn`Kc_Է|J<n*ogM gv`WPn/y5{dR̷T"Esrd*Dhp#xV@x)TNnW+dD;@=}zq /Z~"[pQzHW?ʼYDj>m+xhxbiLa&Ņ)KB6oO|Q|HQ\diR Sy\ȷ{WDUJ#kG?gO%F~~$>$u>jwYHHH$|>#ï#?1<|za~]0ԋ|;גCWTwOglj󨷶_sa>CD},˾K~CoG-7nkX3 _0|>+c=R>(>S?{R{"c@v)k9 gGC ;D1cD=#cQq;ő1߷F~}:bsm<Ⱦg+D^6Btȋ??Z$uRhX?7A/|/)mHb'|̄ۻK]9Y;8W3ƾ "ﯩ=>/>)!0M/1/Ė L|6!_3߯xoF O?L*n6GWA;mz_QXЮiz'4Գzҭ`X=?GyX ~g>+;_[a>s7NCpog}Qpw3_N!1qoD[w6Y]j*@~%kޤrxPC2 h𾚋g{{[_W3og硾C{4?Pf|0j#2 TI\ BHͦ9R)l3޻(h<]#ǛJF)>Eq cz 1ɩCϗ&yzE쥛y2ޟbZjF`#qT}/ߵ /M?qGWc|1`>?f8x,0ӴR̠y˾>Oot8N۴Э~g #$ؗ'Q]5hq"K؇ԔCsX̛ L9{Δc 0mѹ#kk2/]h~ϭ߂f&v6i^Fa>T}6fRxDE)ˍkRKSH ǡ*45zlcRkQEªT:ޗc<tk1mǑLq>%O4Aĉ7 0u"͂p> `hཆ*Pc?0|Q̷4#i>4Z$/C GT>KgIo(>w1P/c'_%jWSKi[ok1~L/ [Ma_cUOh=P:~jQ꿚vV܏νPc)5ߖy쇣Zd-ou^j.=q< gU\[GbixVO[o𬘷M1'zi#csaK䧪)*"(';/hVn(g>3 ,/[jCٿ$+U*3ݷBH_)>%O073aݢOJmB҉Q6w%cЛd)m !ߐ_;E޷;3.ȷdODR-A]υ9~(>oߔ~x}PsMj3jf)EGiG~Hxt &\b bp#Lz1xU~~ޡޯ*G1?A_S_1Ձؗ:Rܟc ?:پ/ Y/KǚUZXJ@; L Ygy,nϪzh[eߖ.Xbm֠}[]c.1_c;oFmB͟q<-Yro1V. [FY"_֏,GJӲOKGu3#'x_5[53x>fXo~MK6I93H Ϧ?ۥD=E~"R_&dԖBе퓲z/RCdz ͣE1?:c:qvBޭEP'E=}eTO*`߬旲O/c];9\]vƶ8?7ע*tZ{Zu_՗?"gei<6W_˿ދm%%O,#okJ(m9pФ57kk}}[VkRߖOh] ~-8ːuqX$ɘ)g=gC0`8[y4nH!P{ťTߛ 'q>6@ 01w8^BǘoUg1y?X<+|csõ?|#c󎣿LO6~2{27&ZQk:/+c~UR>}c)jAa`Уd7sѾD}cy~N ?G絯FFc,1kוT7k{A6fn#;Ev_Ͻimڝ.摒|Bے3-,_~¯c7Oc>0UFyչ@gs^BU%2WLr?þb\#꾬rx̯FKS|@^D}ǿ=zA:ЇXg2 BOq) u<|[ub9t|xU'IRC-no_~! }BFR_}Bː/k8bGGߑpy)ރ-oOwN:9q]?τgfa^;su%i#׳.=7%G01}MѯT?:ۣCwrw9u_}6gԤ7I{^ʓ+bF4_?5w}Xy&5ns}ֆCjk4"w,ྠOp__e\};w ]oB}D s@} DWy㌿kyg'kM0X˧ ČsfΈfsrg?xG>A87pхw+kxgVrYģ՗s:`&~YX۟3_>ޙױԧӮk]=̿Sbg_dSm̧wLMǸĮB9>K57*X_[zWtiߎgS)}o8CR}TnMe{iGN~ ~c1mpJq?~~fc߆~Juoږb^߆*y?RK/]H ~ jm> jD> 1}b'Upx V_׬p| qCo泩Wo:O)Wd~1 2ˠp|y)3L31oؗB/FWO_gWr}>2`AD>h?&de K)ĤۧKߠr2+D~q#?i#~W׼/a~U6W3TAݜ̀#<+y9³"|*7|g_h[g;؇94xNFS_ԯԛ5?@<)f.Hi5:oׁ?ƾIK|;0Էts㍲\܊L)<뱖@Xc>w|;~W߱o'$|2j BOF2;ww`O[J/&~31/&W!= 2"yR |1OF\m 'cf9fCqA=YZ繧PZԻ^ir]b\\΢gQl[j_wvYYzi|0t|1Z0`T7h7#dNZ1sF K/]dKׇ(VKQc@1q]2~a|}e}&](ywoל5)K㊧rNe8Z =KG gCrWjwO~7q\v(K^0Sj_M9=2s-bu_1k~&~x~guMl?V1׿};^mG;&Bϗ|-~D7 )~ϱG?fv?'? l>A>s)Uƙ02_1^τKe~MVWqA!.3(DˈW< n(wQ, D9.*s\TPb1'+jo 0zERt@m)1:G3 7+ʩLS.=DŽނGM[ςQZ(NCANcYͯstFvש /NW ٿcou> OT9̗q*cÉ&=F_= v78x@T0BpwhqP|K =V>t_sT}9*~;|9ߒDr8OO, y?G>/5 k ދ|5|5/y8\_ͽYQiNHEu)VCw4g QCe͵TaknvMX#nm*¾#ߦLV]1M|6gpml>6W5AdK}6.GEVm ݡw)pxJ7 i{8\QZ~U#w\-:NG(.+cG<ѮRK#ܮf)U0ZW>05!{P3yƿYytcV?LLFB/ru/ {靳1;V(}/#7F 51.h?O*h%t/o|Iow[V_Gsa33ߙ淩\zAęr 1ygDN "NoEKq˱'slx~{837Ӷok(PJkaK<пu_S{TY`Qfr^]C[5 y7\/b6I )ͧhm <9 31sD3>|WnV1~czPC[쿮0͟hqc9V:gD.K 2L &oY e?6;`\ۼ1͑5f]w i QH؇0M}!m3mv|c^H9(^ikx=V\"O8ΟD>m4~K=;b?`G#ʁfzJ=c oϡFy:1O|>Bߏ9eK:>5٧sx_pFwa/'[}8Oa}6EˑX۟cJxt4UN@*%v_SoS0onSL| k:F=~1毹xhxV1 Q\LɴV yt>f>LwS1QDf9B2Lo]D_  &?]R8naѯ̤~7y3m&a?SCЍ,WǍog1R%S32 }_鿔_~Ke hx:7xka~5_enTx~S?l%s~+3)Wby?=T杨Do>o^ԯ;-jw2D|iLgiTؿV?73sgE>^=N%8 6"M]qg5ukj+)O%0?ɗ +q}KKJ~2r^X+ ekJ|$m_x5?I|}$IN&~(C'JO$c*o, f ? :@+6x_~/Ŀ4τ0_݅ /Sϣ JID.0ȱcdȡS5HBIfyD?Q8'C#>yq$ŕ(vgtϚ鞺nLyݣ<P3Sv@Y0?I]1ݤcT=L't/#2G|t{3B'DD_b-_IBc0{#RJG'}$jyC(|$R߈D| Z=<^kt.q}!D=HT=NO1Jcn#>sR߇}p7cZhֻ23G}KbcVԘWi}c1 ٦8@`])0{eA5t 1wPyN D˸>`>4Y0~#F>w+>e0V_cx@}jx?hh5Lke0|'` ~$kCQ) n:Q=_m壸tͿ ~Oxo! iW"S}1Zr󱉪h<}NҸ\l.Dc3~nC|M*Vk&RBW|Gn:)sQ܃⿉[;\'|?{-߻)Ŀqa3ɜ{OȻcRn lͯyn]o_T:Ǟl8g|ѭ`k#=](>룭랹8jז15cD}DH'#vͼ{E/DU^8;Wy>%qrkklv/(uqkS@-C0 +ATpjOK+yk)Pf]ZH!A~AqfVR$$G۱/fpX8Bp'I[s;ͤXetZu{S8.zxhC9Y,t<VcxYě5h!Z9V\y݅װ6y͌30wB< SpE,5"Ǘ'f ?[cQOkSQ'bߕGk&t8/ N ݩU! A?Zu:C,.{`E޿{+|o-3Jç"Ӻ4\Xxkոp|yC\x`2fܶk8.þ|;{ Ftڊ}="Ls-[ot~ .z,bBܿZor[5^[6%vln5Zk㳥8fߛBQ]w8*6hw'yAsSsy 27uHSKis̆~J5TZZN{K ʸhWl>Ztt%'yAc:-"?3(2zg}.p'}>쪼RN:nr(|tJw2'//uI2ZqQ}_ZEk<3v3N6iq:gP \ Y )NqΎ9FZ۩v^/s*'/{I̿Lon̳Q{*We<+WB42~x-㴢ЫXr[B/Yzx/s;cܝ]Ag7j=W߁n{W 2=WxX]quVq\֩~Dώzr!ZymO0Oqx/m[{hV9ۺ{.!Z2~a02^8hl-7 ly[0Ӫq٣_xY\WUvڏͼR.{ -泖rJR>+ⲙB.l:]s,cyAA/A.lb_6Ӏ7p1GQy/O {!q܏uܨZiEoy.}ku.;/ ̯NWDvpt/SZɖ{Ze^sZsl_pYW fG\ˎs1Wgc.<#;cu~*v- ꫝVˍ*;_^v7 8=[sǴ{YBs\o5ژ5ZYW*0/v63E탸*ec!yǸ:D-BVh';D>}sd^wyrO;'z6gE|(؁uoB)z?w2Mkqݐ yh}+'~!ɚd>YkʌSFʈ.R?{}|yi.\c'E 1y~)zI2SSpuü0NW.Z37:9◾8_-_CoWU1l8$o~*l~yscqKW2<>3W? ^rh/C_e[/sy2U}H2%(qKWqJ%y)"8n*6UgEhܟLnOz?y!ϸFƕ|nCy5pdX77y R?G2 40qlcJ`_H)x)I-mVy<P24w<e1J)Fq {>{p2~7Ew=CTnڳ@3z{[*FF[}8A?7zoq烃_{e%ڵovrVK\eo2 'Z@Gtfj.jGJwz^_7'nC|[CwLX׭gowyG3qVMo7U9鷏q~(+]j9l/śV9 %g <_F="鬳PSks}&cqPpTTZG>|O~ITU o3RQt&E͆zlpD;S 1z!'K"֧,4Ⳍ>8Z[O) 8Z|وc_mVb|P5(7YaC1s-k4+lcxP㚸5r75|>vxQN+ŁGEm bP~8`][p9VǸ_\8l IC5|i-~/rbUj,Д!K$/x̕V+FQ\^bowjo-QΎʉGl6kӡ/=V[)߃ʕ;P<q+>]+\~8]i,Ż, D<5)|>\JG4 оԵ G]p0Bx^X >,HIs_.`~^TI1f}(fD1=OW1x8_s3L*\Wy]REˣ>mobB&$PN4DSKe8} #"ϕœ8?N9 #:EZL~gy{#*&݂<;afl.Gfءxج#H27gxtt/R Ƈ9"6ZjrGT RĻ?.t>Uoַˢ?ϭz޳[Z2ϯS=B. GijE;owWgk،_ݼ ec_JavͿtj#\Doن/sm3y6ϱujƩsT'm.z[?uL3cwU+z.\aUՍqu1qj!C\Zģ/߀Zʥw}^3[?5|ZK i{Uo/-K?=<+qg^Frk:]K95VϏS=~3':7~~35@7/ğgJEqh )Y}Goķ?n[ml ~fӿJqZr4tmO梌Z?U'N3bw:(3~z NGRy*OmI\MM^A|Uނ5]`~5 y1W}υsexBaB^`pCGq9cy*O}4zTqR_l/zofؓbg\ :̍e~mzKB|Vxt >|yY?rq}̛EeKr\ r0gV"aԋ1*&x.ŗ϶D;̌/oeȅ~[xwf ϟTH1t3>2.T=ug̣8߭ǡlhg\asFRT[T#cخ%rU~̽Uđ5m3(qא7B9 GդNLix9 ڍQT9Ǎ 1nmOWב?,G/׎/vE{t( "PnsAߠ|->x&AjЁE&GZ|`ci;0w/G9|;GIĹCKFqυ= y|UȱEmt&ϻBW ܚ(m&pSӊ}(}ة27ܮOq s7 4pJTӑʝSFͨOoHGK']Cdsü8}xbۨO߹Ey_Υ;말[}˛˫s_E4&CLqqƿܻw߿8t8bj<^ \ެ™c3&.ztؔi[I1ƻ1Ck y@;~Qr?EϊwjkKe'E]+rē훎qD9Ow~kFzF(CU>$CﰏIdνP|9 9!sy؎|WɵALz'"e,?o7@w븶V]#!kjƌ ͫ3. 4tП32,>y2K[ps3n@1O26c?o ěw#yG v Qnmcak":Gf8@3+OPjxs﫵sfz T9p<1|uG~;"^HPw eysa04xO(6Xo #"nzM3T|"^Ò (X +8-N5,°x2~O=p]FS}+cXlߓګ,q_P/?S|baќOs݄y~-;q]<iw׺qS)s0{y4~+_+6:*X1 UGqwuɨ<Εq׵j\6vm UNX#y!">nIx,2/, enjㄿx mص<Аpi\C\U9m܏q ͥ9\oS><$saV"28_%\V7{EPfN1^p&E<."'YTD[UsyX衪ܭ:yxtlۥ/P/xr7ok-׋| |la'TaSGk^샲|͸ Y}z)!oz-R:/uBg.aT,nqM,k.bč!د#d;n!APِu{iWq>:<~7;/Ĺ~!-p߳ K7e{By Y>s9yh8PxWXpi1ѿz JEΡRLx`*eqAyG@w>Pϩ8Uyd_W4~h/4/|FY]\>P:nh0 ;mhAZfVzfچ]zA3vse9WЍߣ9Nn8~mvT4_<┾T߯ݩQjWUnة0cei\VƎo;O0v,2:悟17ΣcRDs.,c2Ҙ q/5n >އpmff{=֯1 .˞e sٹnḳ*7}Le>7mcGE_+kZk*xte{}`|٬1w% OrC1^t^a)Yn8 [@G$>*>*$ŗiu ~k-慾ˉ|y>:Z>oǁ.+\c1ܟ3@Oc O >kR}>'RpR3. J|Q9q^>ݻR}M;??l E|UqP?=zES?&":'<4woX=y9g.އ$䝓 r1w(^>/8蘝'GRi.y{Z;9OY;:wANsEE< gxWjܳ3_Y+x*ͨ>XOy|\gfp ekqM~`5g7EY+T双;^;4 FY;n_?Q;od|16cfX)*6wMp Fc VRAnjg7O-fH(65ѱ]'+)U?ݤ/ ϟ 5%kq< Hu]:9C8gϭEPp-b$NGwu]s_wAvbZN,]\C}q>]ݥ <:kt1!Dw;:eiW,ѥAw.v:) dtPuѥ^A{zjZ{{9R)$4\ط-M,%'8ϭ%]kYS"?A.r1o-G'ʇE}GWolXjs?~eIt$q$?6S\Ipv3'I_I:re ?qs̟؃x6-O?z{q9q8.w>y2Gr}kf+.@¼;([3nqy4݇SDzD,Κ/kxo(f}Ÿ97_Mqj&M7B}}MθN7NccMqMޢ 8-"r|ߕѯd3 ^mMR>6oo3}m->*hiAk>-SiPkf=~Sg^_[Zo;5|22woo|0y^k}e^F<[/sփ<_.xy.zm&QSË]FkC ^%}Iw:]ڦ>95ϧ\O3.x̡#;O$+Ό7kAÿ~Z:@^_vS{M\g Ŧ/n;X'یgwzQ+fغSn̸m(k'Bq"c!V'qZ&"'D=q@:(/2|.ɭy 9%㓃W@\HW־^旖r+JKd(k啹g[( }?e -2{Eh!"وl|]yr/5$ YU6Ѓ#~&sQ}G=ZC;cݹ:U < .Z: oaw7v1Ԟ$}.ny*qS͜ŠTW''6g'J9Wjk1 䙗±߹v_|J\Sg5E<zUYkZ\L1'C>c1ŞvA)g㗢:*'A71z~Ы]QoA~!r-m xc5~qx:K9]oK71Zl&lgA3g7_ ?olQSJ z4yQ65Z>xm\͜d译<.C/]|˻@Dso<}Y@wSp.Ƶw?pr%YZ9Vx?DlX'oUij,Xž"84^ȳ&,=zmc\VŚ=57L4S|A)SxSڝA)-i}ޔ2%e'ʠ}Q]5y~Q| _☇XO)s!gb~ie2'6r1="&Ud&WZ61xϑO{zOȑgSׅ?u>t*.Fϸ 8Ͷc?%nun}]O,3jx_rR=gL觕ìA2Y%=c)9S2 ">_.i'3ӻwgD\Wܟ^<*9d#cQ1;al+UF̰9$^B.B%sxϘ[ByXE]y)701cmA̧A6Qx7tIs9? Q ~Pf\q ߳x>3)bttf S?=|.x^z\.Q+[ԫj.;9Π7;DC38Z9Gl~VOO /ǣlw/f- cxe4pҌ>ӴC!mէWPFE\$O3\we>q$#|.shCcU7a>$8aD+PlQ` &_g4s=NuM # *8~ПADc_A BC=V B2$O0rX"~8HB>r%BN¸H~'sۑЇN DX*ի3)(j ]lL27k`~S7q?T[y9D`7!Bc+b6wp1۩!ܤGXz_?gb O`mBĄ )BiR x'0nC+'M\ $I8!( }YcP\ *xJ$x .{;གྷ|0~oԯt=?CxW,MtOD-\2zg8g)'F1x`WVx)_amʡ\tu`\";O".'x.&օiϋb>|#%%oH%0-Cץ8,)<糭 5lk} [oCͶ7@qױO]C#zWu];x~q^Pp+ڼkho;Z?j<95oߎqo -Na}whmgI)xLJ"#yq C=\G@oԼcJ?R1wC7 k2a^sz/Faܬ1(d@y_Vwxpy_yU׃,=gw w$G>zȏCozb߬N*߄[{qrd.Xsv?2y"d 7 dL!:6dg;yO!;Wqwc0;%R !.?qY.SM!;B_QfJ?ڋJȣOjI7=;]9xth q(y\ӌC;=;xlϔY#X́tśxc.5Γx x}e2 i+DQG/Ͼ ESާ1~oc\hCj|huY(͉|H gLe\xN^DCXE{ĐT~m)ģ~77}[37|ӛ!Ɨ#o"'Z3W`' ݼ魨sx=Q/ݜyǭ] ? i5 @8޷ekϩ bݑiuд4|ͦ7P3m IoӾƘ߷mh*e:V=~#ZuyWpzBw1'yq"ݝʪ:w|zHm /G`;'^nJ1Hlj]nb|u1~QL?h]|;8~W,v#tQI6Wg~*3sF=v{+㫷[Kgku#ؿSf]Pw_`'n1-2#V8:_X]Dk~tsKrKuuAy}Wy\4"]\^?3۽# [=CU_Iyw3EYUӷl~չEvTNr)~Ն! ]T]e.?qh>^T..ó7,Lz4(N/qo&r|k%ߤ*M1)tLɾ!3UE=ˢkٵLT߼n5Vnя+пW_Ήyf6[+4/]<Qa>wNe^/g:yh:zxլW'on&ˋH7ѻ5ܹ&|~b] j:符s'JQ^{s[[러_tl`ח8W/ {ezJrZ5ӫթiGn^gzt q.]T8}>siɤQӜ.B$;W(:5O{ !]hgh DwXw~>s#sɽ*1[M0{c^!ѸF/`r{\LnwsHg^Kz:\.ҡ]H~EoάЗGFKjx׬33}ʏҦAY_ΐU8l?#+!ϜlP?w9bmWJ0=9W蟳.eV=oFO=UY]{⾪YO|Z2ӑJ?֪bkĥ*|F^xٺ}ܗdX3Xs҅C=)++tⷳu(W֏=?yQy :fyWO|eyAe fCKGyHՖ7>+JB\iw|Q.-xǼ{Ð8W'<=x]گT^ґ<<]{St tJo*{X> UD K7שG]֫tD;[{{3,իeգՕܰeLc* 8&gQKitLK-!x_. >pur5}\])Utg&|߀cu}|Z :^޵}y.{yw1^؉BOZ8\\B8I<*zzyq^$!^XMggGQ֪3= Ґ 1\}]~o^WQ׿,/u{!Tv>j:O؋PG˓2揑ƙr:;Gn#=bݤP^ +th?Jj:\m \!eub3*f:V}_G@H_f2'td0ӓtc5R}XoD!Mb=lig5}8uoz켞|*c2#'~ߎڗQ_=Z:tRth5H5(k՝-՛ V֝EHWn#Zc|뇸VXlƉg59J(u~j:ũQVӗ߫CXm.MG\:~ct\Pt&Sc_3U}uB^wy]U-Wꧼnҥ #j8 zq G)n;_CӶbŽWQhWoE)]v[^x"}6NJ=c5jzV_EzjxuוpW5ݵAhbnM]mzlB鰶E ,cCn-W^wm:7W?, #걖갳C;ǎ}_"פd+wZ+:@usOQź+Y-U{wvyE:뱓^OL7-8ڵ2BoQyREYrzH']*N:,+~ RNZgiKNZE(} tS^ Y7M("}}IoxcÜk}mw' sfPOoT?t5VN/n;ɍ%o z/뢍RأQk 7jTL0=4VazfL63eNԧp&׬k~ 5EzyHi, ׺B|uKkcߦ[kػ[[Ǵ~b%Oj&^kN?zE^ TG΢lQ/U%e=2#8]RMd:$/:b_vZæC.u>둼itŖܲ7*~-Uz\t-8- =gCI铼i|JKLd#b=qlE?G:mzQNO9t#]?ƍ\W鑪R^T8}1&3Rsub*9ؿTu%w^yy= WoXd:@LTu@~ugJ'W服h4N42- 5JV_PDS@Tۿ~jz;֬5ܑx/} Ykk xYwjk#r'pL .Spێ:㚫iۖv֣5eݭ37_盧vAS9lN<,Dۖdn] S-ށv5= ]؋2@:f}n0qLwk` s(O6J#f8C_nmu7z!%\1bhXs_1 DHW[9ƉtߥZjj]&*zj!omV]Z 3}f AIC>Yg+8#~vB@(߀K`柿ʭP*gϟ._ܯK{S}+sj`s`v;=cz`tݺ(F "O~!a>(_#$JRyL\{ژg?pU!/0(ylcɩ|4bg]{ākc~bLd%[}peަ{q^LԪ_~e:0M[:5p%JN듼.^%s>I*tI^Zy$6>&뒋6w[4~ o@?-8K)nN[;| wi\ _e9y}S5Vo*ɵkPu" ibEet~Qy34Ngz}}9ඝt|H)mEuoIzdDoݚu%Uy#:%O[ ߯PuINMT萖ZuG^gE+v51V]ZyUץ[M_L=|X&|<vYg wzoN JRܔ;-/C36:\G17z#PTu~ Ydf1^d&3O=CԪkWlr9\<85G"R5NBҹEYs&zg/z^ؗf)w]Hꝼy;Sڵ_oBNKu)?!N 70韃rAR=yHa<zgw.JN\enGV{nPuN5}Soh|a*[kzpk"g*;;pS=r^9>Ȓ?erZ L 2Y _hTYpg.'A1xN_~]S ^lq.}Pl+jwDFR89Q:RTԯ-U_y _ƸQPe3]5u]^Sj_w멼O`YG7 p~LWUSE:H?hX:P?T7eztR^e6tP^Z گNh♞ʻܝ7<+_iߑ})BqپQ}Ob^[닣|)]  vM(1RVM.0{Ʉ-C<s0_-AR, 11.o(?u /u_K> sڃoY\XyBY.A=6 ޺ך}E{D68zCcE~ht7qӽX }TN޽}P6~7wF5iC*'붮Ң޵P]#Ѿ=)߉Ͱ/np~(3t.~\Q?')^b't._Ruze/Mc:^閙V~I3=ZM?;#C;ӓ\ 6<zE}(֤ ^Qӈt^0_TbaQ.iy_5yոN<&Ť(&~[=}7ME xv>Gѝ4s|zkX(We(I_yR[wkչy};-LNX>MV2=!Tklc5ӫG4apOV:ͤg^tj߉.8W,W1?[[ܢ2]أSHiu[:kNa. mjpUu:9X}ubݸԏ6Xy}yEzqPK~ uG~xe/U~$ɼ^fkҗLi&\VNϓJ zuO\evoŨg}Qo62;,B5N?7G?^bB=Q2SE|sB4 曻@#[Su _|su>_JG'gKe[?=,/ŐQo;_])6ӓ"]:~k)*_TqvYOb;>qu&ߘNLdӛ.!_a 눖Lc:^&(,.(;mv.W{/=;έ!V]nBa.6˵jiʺ$BR{g OSu"rL}z\Jv/>0NwW:qp u[|K_Մzڕۯ^EZ'x=-|]d]*4o&U}R]M}V~ "_z_uL<}E𗙭c.ݒ+ tIsu=Rb>), B8ݏWxRwnwy6]@1-~uEP^/ ŵO1~.UĵO~q.N qЭKʵSbH%QN89y {lz֏(y]E>-_ %[ O/&{ꀃ&C׋4 UjAtp_}^`>Ax81d?z"Sb}#aK0OBЏ:mV=kVC4SWHT'ԮN+z.B_yֿ銖OG#>`d=FA ]$i6>l?l#)l'򾰍' Rtw66B1{ 7EyB!/(-W1b^u;鑼~)j_:cC 5Ru@^Xu͏},;T}AKe/֕0^#To~VUOzwk~ t-g{cx3>b>ѦvE^&P~*sï]ֹ.G;ӻ\*t/"!Xl5LqW}s?O_p=/5Ks ̰v#^#/~$Թ%ҳyu:OXUNu2~5:U`_wIB>Tjq: AZuEcVf@'(E1Ys,\,҃=oz  "= bg4>bU<0݇=LuqHa:ݝQ8"kNPf:M+tm5~ins(|i'md. fgKz mQ=!#"Vźk]( ӕɆyu+WfˎuY(=P>0͌ ylURlh H/i?`ߦغJ[GaIx߀B?aH/9(ts$Y5Dzvq5L8[GϹ?#mbWDFY`:y'R#DzVĠ}^CB%0=@ ]diZG7>i9Dk!"C{'bw,oTLS/hܨI_:tX]="ti̸NucQzZ'OK:vV'}V†{S._]շy=('"ݤ~pY(:ؘLuء$}cP6I`F*]XӀϚ>Qyj.L_gyg ;R~?Ck"V~qbKH: hMwľ^V:/^r*G n/#t=+ .'E~(qUP<y]'zAov-<&:z nw'0~WV:oMy;I"2]3e}:ZvUdžHȺNQVu+9k!2]gvsPlwړz+ص ]eԯo+b͈-LgTt,+ÆE: WɈׇPt|VX5kU2mPWyq4^* xPW{Jrsn_-icyhEn؀0.lmL_Dq, hS [Qx$ ,c,n~W̓e ̓ELO$3[͖G;ֲޢX?LV> ;1+<~ ן,C^bߥo|XFGk|oqsugQΡo~1a*KBŵfwLxlӞcRëy0a?mËb| /Fr98Jc0i5ȷLD#=@O2<Ճ Q~)x 3ó0eD $t߭t?WD:A]V0}Du?v"go rqUut{R%! I: OKAG;|QD L5eC`O"Gw\W-}.ѯb~ߟNS,;I`(w/).y::- /w`#o}Cq,onUk6_bsU&LD^yud=w8xs٫~u&#tFPo)?τt2"?ƺ}2lH ]SKcLjX=e]E&/_=ļ'#~}> Nhw0g>m%&2k|N#gN)su{Vv>(G~BT>o2<Ép]l!%? uta>s\?uZQo-}u9%;tؿ2d( ehS{ ͎dHo8'! ;!VGV.5ZUQ#RCHK/Gnw6򛐖W+ˣT޷L[?,=bn[oczfӏ.N#xw9#Q1g[5g5e+g=kg]K8Y̠r{\_@j7Uh|t/y-gރ,_Ne=+Nʘ JeU]TxS[wGHZyBҪS5z}{gU tUj(g'SkяӟLwYw2W1W^ ⛭KUI`M<:>pIk8L>vX[7 - 2N˄hȋIYaMS e:P|AgWa|Ծ %ӧB7PnP@RyA~߅P/:2|Eߧnt"~]ܿ"f g.2o_/tz㫯* }!JP_, Ň^I4paPj1+8/(XP<'@ckD=_^UG, ,e9M8c1C tmy?daB*2ORuq?:SQodf<LDjm:A_|b߃n% 9b sRD^7^yP?a ?2IjN2K2'R&w a.&z.Py=Qw|##=ksm1D5=fЎtzHh{ix~V#/#2]LpijWh)V`?~o3Za:E>+"y?ovzE7WN[ܸ_BuU ^P)j)zW)źE;7'J^QvXczlQfh[󚛗|㟗doCE~'yYwFf9 6;cݔqh/-w>Ͱ/qs"8M1~ӱߴY3nqc= aKg!2`2:KѼOH`yG|Z^6r4"4;`|"^eQwsvϏ_|>\<-W͇YބsETis3p^|(ۿZ[ a`D]+O.BkEt|uCrY1;/ʲ9 CiJUtOKZw)]c讳"<晪y升mCݢwAL]7DYk>)#߶('/O)8=0J'|>5ku9M94hn4>y_x8oODyߢ_oR~{h߻]ut{#Pw[\Cʫ>{c~>deTVj?ZKvm?ќo|ɯKߙ|X tS؇jyױRj>5<."G=ϯ'$|[d_n~O''z:IaW+|O~3ӽZHc|X^'w,q({u\Pύ{yܮSmnn>'X67Ϋzh}2S;ʥb>pUsyv1O ?</=Ex&6ױpW>>X7坊|Zyyx__v gj/2x|ylC_>|>UGT9 _b9c\Xrf);_E呯A>3>'jMhuxWVq?vz_gd}aSʭb\Dנ 0(TvOt?'k|V-e+.|lCi\X3GqaPl#> NSNjݴw oEy2Џo(os\~,mo P&Y=Կ:ü9Rt;yt*{q_r*UpWq]~U/=ߋ$(Uߞsx-R|^+R*yjzYjif /'KOu==S!9|$f<\E~OtpAؗ4ȯӠ'Gtc_90?hij_ك>si`ߙ(w\ڤqZfK{_Ozm͸lhIPHcƧI}HM=@>+7ษ/RN'p/)u#smJuj/Ƨrʷxfy)Q͇|H㭖?%/|^x|ܛCqVۻ|9ךu x?"oR Y~۾t\9[)P-YЮ6_CY(/,W{dx+zNϹAgߙ'3NBTˇWE#O Z1ЀyN(CǩAY7Z^),]\t]f`8];{8:7Q9~N1:yϦSٝN`=Ӗ7T#;WA NPߦ}Mn((a+Ke`N';qAN'D'c'?vbҸ !e]D N$vҨ4%}(yƝB`?ԏ̀cd~z[TĦ<I\)6 Gʑo)pǩ\ŦxSsXl*/[[ڢ=y̟uJ=&bդybcXU\ ģI}(~np=vl'}$##+S>b1Epvxoyz|hתDB>ێڛTI6[/QImO9ra(t 3uȬIzH阦 T触z6[\:^8 NgCxqÏj:J՘Sra݀BWI&bQIq< w ; zu B߷PyF^YNW#L j=x\cK~%;3F~k,%^;ƕQ;qy!hTUl}(S~m~^6 1oa_3Yx&;2y<,+Á /t<|8?sDkc?s9_^\F+*Gs8m4t7aAo=X?*ln{_ K/o^ži7wß~cZY=_ꗇ9 Ko<7QF*žuPtk]vhW[b0E:vngu?c>SS<EE!8<C ;Pc;7KL;o|D~ob4 v?s8t\xH\Y-?ޕPfygȳBR?&3{7-3+{L,d{|ҋ]1O#/邡TۉbTrՏT.?=̛4DɐW' 8$Ks¼gT|o>*|5[YOgVTW,O幥?+SGg`wy&+ F"OӜ_'+9m$qt>\/ ^d'"IJxX^x}V+τKz"O /ܹ/w~[q "ZP3ҸqSz^8%|ᅮ:QtF|`F?@Zpwe>#8"7 ^󪜟o!{tx9O@U[|eN)¼o~QJUcLi{y|^3#|3}u-x9y)*ϣ͟/!Z|H-ʳj-̇7(Qб.|hM 8+kr~46󣾾яϓ@k,vy,'ALm ΩqVϛk2˛T Ԑ,/ޓȟ7m7) |Lx_0/jvȋ| BgeWT2w,sNl5r;sX~p WOz5֠;c|5O![|Dׅ|>"C|>517}VEW`m=ǗXw}EJዎ]>7]Uݾ8 d1Kq8r0=sc?—; by<MsissHO[SGW[/w{vAo<_Q&=a9h]E|>G,:s i'Xq,=y Կ=@G~?1 GѾM}4l[xm<a[˯vtvh$sѾE[Ÿ-y¶[xosh4 as]0Gr. *緶]\/zW{j9}p=9p|y=4`}y=z.|^W{N?s;t\¢Qosj闗{y}=YO*E뽾S0w_)w]o[;-~^W{NgNMq>'X`n8h+9b~Ž_o-}~R}O;ֈ( )f>@_qܹ,% >Ν*^O-/#s|F:``ׯ-}b'}57?NG9_`cY~ ~''V/^u77AgVDZ<#yOD-kq^wt.Ot>nK+_uo`_ݦ{)}M)%s0={nc3uQ9(fT1i˿_˔T/|lCsa]_<;*}q^* ;:"ӓ qtTZ;b28J#VL4ESϑ4t~yϙBX|sz.R{ԑطK]!ڗA OQ,by+ا]Ηpt!`#RZ"}Nyýgp7wo|c8NS7FWԂ.NXWi8NCz Xo8U./~J2Cޣr=w2 'h8i0/|Ǽ'Nݧێnmċ?cؙ,ayJB#fcݼ erԯJ?WEIbOQ)GP,b`ǔgrI ,=6Hqd9} Sq>5Qt5{̡ronev7um@<]yT+%>?~;_ȓdgIS_2.Bּ0K)oI DQtl?gQm_:yZuc8r򄰅xo0_ |~Х9r~n31G|=umRQ.~Gm߸!rzMʭP9#&;^nݣvzoq>ۗ_BX2|Q[;$ƼƮ@ +a|E7?A6>x 5{vTn2{};-z,HȯD~y vo0=[5/o>EZժA\U,WE,1TVN}W527i|h5 YT9EMuG_a?E>tviް3.Q~gu(:gF:Ӱ3h3՟c^>Rˣ:|9byTԻQf(s&.7F7y(67I2AW͇{FA(y6 Q;;y|g6 8>Z˲bښhOyS3c SyƸTo1s͘OuzzTSP ~7z|H #c7)siLt=}6&*!dޠ7b`a,g8rnA|3.w67>XާQ^} 7/g`Ya~s~%{LX8ה >_IDyʽjYro~*-FƔطí*c=71nCۑk]j(NݐcOTߋ0Oo ѩ'9%'YHyշ)綏8ٶ2 '֣7LXr9y\ޮ+GG;߳rwnϏrn|[)v4Ͼd]~yo\yZVde IeS>(_G[^Z^|#붼Lx CK_|4Mot"T<ҸoSW\ >ƧΏV痽A^X߼]._7O7w~nΓ|~>do|=3cϦeYWʣY|:2y$G.X_.O>||hhwY̍Ҽ|[A|շc}Cga/sɱ}V-qU%\tu7.18iK{볜6b}*崟=3Kmϱ߲v^U\?j7:)k7$n{n_jG@cy̭SԩۤiNq3%yg弚xv,=W,e^^rѯ. ,e9'5GnX\vqt8\~ݐb [45Oy1u~\k2in'd[/]R<8z\"lFϭK.q;NZCz̘gݹxW7)/>/WǸy090w &ە})b0|d?Sr/{W.߭ok4~墆.Twr]1m]﬘M^|,M:>oW[1zتV ׮<0O[14IYEq=Ԙ/WߖgO%ײh)Dٲ?8kwYa>?94_oO{$?gO]ڙn$zxsV̉x]>Ge(E>ŋѧϪ zżt_cWPsoSw0yf_svo|lkn7xMku75]˱~k>ix~}Zy-iKOKsQGX* 5˥yGϧf~-}/4uk>ZYUNrZ#qKץV>n{qteI|Q1VŜ7iTPyn8>Kοmhd?s>,e9Ҝ\U6O|4qޭsђ-.;Y_Z ӜtDՇ~pSzڰ.͈';%О<63ͫWxXlQ:M8)T_>/uvַvv]-WOٚlNs~7qdVd%u2WߓfOՅߟ<.ˬN>>=uźE=%%7_vM]?cbmuк;¬>QY_յb=VV:?_4X:S\||xcE?\򾅉?j'0&'r<𻏧f''|ul~9-L8y^|]z. K_Lכ Vq ~1OK~mz:U>RJ*֡_uhpS+֣_Vmm|>c?eDP.d Y_K8欟熝/gq[[-Vgoz5sී#WY?kVp]o(No㗴|,0km[lwX~vs];1_pnjOɷ=}d~~ںڳtzM[q[8m;>[&y>U'ˎrav_'8}xܴ/eۿsozg<{,.}^[]?$I$I\ׁ[$I$Idn3#Yf$I$IG$I$I$ݩqH$I$IR6$I$I$I]asI$I$IW7$I$I$I~*$I$I$IKg/$I$I$w}HB$I$I$Y־mL$I$I$=Ԓ$I$I$IbQ$I$I$I9o$I$I$I$ $I$I$I$Iv)l$I$I$I$IvTB$I$I$I$%%I$I$I$II$I$I$I$?2\ I$I$I$I[7T$I$I$I$&w4$I$I$I$I!3e&I$I$I$IBcL#@$I$I$I$IvC'jI$I$I$I$!{XU,$I$I$I$IsI$I$I$I$I~$I$I$I$I$IdI$I$I$I$Ii?$I$I$I$Ix&WU7$I$I$I$I#b!I$I$I$I$71K-I$I$I$I$Q=>&V!I$I$I$I$:*$I$I$I$c2IMI$I$I$I$Ir=:&!I$I$I$I$H$I$I$I$IFdZi$I$I$I$IGdV$I$I$I$I#1u$I$I$I$IrcӛԒ$I$I$I$Idcc"$I$I$I$IUB$I$I$I$I]dz&$I$I$I$I]!1I$I$I$I$5,3I$I$I$I$<>qI$I$I$I $I$I$I$6O$I$I$I$\kI$I$I$I9>nX%I$I$I$I\U,$I$I$I$ܚ&$I$I$I$;aqc/I$I$I$dI$I$I$IĶ$I$I$I$ɏlkI$I$I$~H$I$I$ɮn!$I$I$IkPH$I$I$KZ,$I$I$I#ư$I$I$;Kv7$I$I$u$I$I{s}2”$I$I$74N%I$I$Ikwe&I$I$ɍi c&I$I$} $I$I͓b!I$I~ i I$I*i"I$IsuB$IY K$Ih-I$I2$I$IvBr$I$iL.$IJNM$I$qy$I$_.@D$I#I&4I$$߇A$;}yITM;@9[9*_UU[}lڪZG5"~W ??[s#@4jy h&,]"&~pzl\y\cjQdF*Fum+4lv<˖bMNQJaA@0&]n q4%]ɠ5|pob(XI̦fx7,e {@i+o .NLwWh%:! m(tkF%Hp=^aC;]eSZ}q*y:-/zaDFxSzE|J ߝQ®SvMn~< [tp:$tFa:MQN@e8V om%> ?xGoBk&,]a=xEiwvϷjЀ"3Iƺr[nwyeѧB64l{/ڝG[}]"kJiV: W[1| FW!_#]B #$_ @GeFA-߈ݢϝxCLGĜ([*X(8N>QicG$蜵0ZZȬ!󇆎{*وDkodFJ)YQ@RNnjVqGoJU˞1pN.nÿ+}Bem^uu9h8HQTܺf"*2ŌÉP4+h2acWy'p HSd ?\ a2ݨפPo^36*2lkTէBJ`f<\֡&w1}YjX=dl0)M8? w9 Z2+GsA]1ZrW݋÷󷒀} ̛NVF[Ha`ׇ̠ _ӧ`iN&D'5#O%j=pNOMS&o]`]"GWPp7? v3fv$ZpAEgt5r8\? \C'hFJֲO.-@+/~kg|!%rD¦BL>E}B7{ sRq8M3(@dyһϕ:y#n}4՚@ꩊ@%y;®!׮u Awi+Mr4 -;3nHay83r-Q$bC.w/tG~[pc*t?6hͺ9U d0Rǿy;wA߮A}Ň#w '(q7?zS 9C7N^,)ǓJ‹ޅs` 8ȱli4E8+(: 8]RC^|Z*-"*I%}e]Qm?vTw˘DT(s ۋHw}),Clw^'# ΏlrT" }QbD jė3RQqT2hPLăعyF% ?BKoW?MzE#F!}eh^b>V<,q'#nb6G<6T=pgo\qWޏ)/ N0x; @ٚ$.bS綛"S*:^n\܃~/^Ȕo܂Ӯmq"ω*ǎVQ ^l(I|CNճ/}ѠN_\3c_Mg"wtԿ_'fp/4P_QmKJҠq, =^u#=={ bV#}֨x3@ⳬffo.!Ax13Ҷo_ΎN# F*Xɻ @VqbX$.OziUUpx&2_4PW>=so9)t<Ac): ƅ3\=3I32ftJ/v[Ξяʎ68yBs-G@%0' )=h?m&y?/=F1ž_ !k,ߕ2%&*K}PzqIx<,<}N˶TkՐ%J`(b ȶ0@Dܲ?Dvcq>wo/䵬(4Jh;=Y-/-d^j$?E~>/u:& `vRGWzRm)\촛ԑm-W4)֡ёv;cCgkm˼7nq-+vPdART?u'm܂9fwȡtMUR!z's}S\ d@'>;5#z2k! dT(ٓd/ITv Xz=3MC MP*M fB|<ęùw(νs*p$'C6|3~ÈƔ"*3"!1e[UT\͝ Ixڬc4X&  fvp1.^L#UdךOդi K( X#Y+'Tؒ Sf|{5mfU{AO#P-5HGIH&fi{y'3㜀zu<׭!WXFZ(f. dU7>YMʃp4 XJx$dqj*5F';e i-y[-3y"/uGzk.hk/ wL>fcx؄I C(ZMsGeraNc-tT_x'Fb{)D >y^"76î*O_ k۴Ř܄$)[B1) )xLZw,58a,q2`-6TUhHƅ<ɱ`xRn k29%ctڀBrB|bUbv`#}9!XZhx@JtzvvD1Ђ)7(}|h=տ_<􌸓;6ca:Dzz kj& [$-6Κ/tC!\lTM2eR&a^(cQ͚s)\j#JPݦ5,`ieIcp#NT= 8|P\ݵMYK`Q+:dMZEPj)Ce6GUFfK7?kֶRJgqx& l yϡC,ρU>J Q2jp;]V!-iu ۚ`VL2p0{c]]] {tm㷭rFҦiҧ@×E5ŬB)+O;\@tRņCWsX}&AD4 gÁ ch;0:fBƘbxQFÊՇFׅ늯8@ql}j Z)sl6f-!_5EĶrR#=-uyRecG5Yhh6zFAŽGc.Iꮫe,WIF~& G_zwk kV[4& oP-zILaAjN(~-0YKGWn-̦$$QA[xBI ]uʒ%@PKc&пnxżA\au0lm9SV*nr5n2 aQ ]c,zhQ̿g3wcmTd!uJ^jP&cޘL; [ 'ŮJ,ea+]7&DV.>ycHQ΍9`DD)AV3ftx=J*%I*l1juOC&şhl hmUTk! lia']\]9U_D)D;zSɬ3aܿ|u:'p)hyn$bOr]f 8UF3. T~7sPihb ͷd ɶh5t!="";ͽCX!ZBj֘Ԇf˚+FE9- *jF 5P<)G:oV%>}`cC@U”cddʠM3fçUsv[u1o Xo^-jR̮e-.1$M`W(u{aw!Sgјbİ;Q!r'qhT4EaVe{[c;~)\=e2<ІϠ{|l5bߦNlgʜu(L\]jr"l?^%|$ݯPFytx]/ K Py>(,[M@ٴ=4HJѼ}*T5vWCgHذHg_)XCƀ=^te[6z%bBm~Kaqjts|J +ۨ%}vբ8G7Z7ͥr,'7|eMiƘE@*i\)#wIM*hOW`hwD!Q6fPy31Kab~3G%&,su-¤<#%d( JC u (ӋlokOʦ>n 3h/D>);dp%.B$z| 0{Qֵ ]Pbr pȚrU7H%CI׶3x^*ǍyWqr*N[i=qU)ǝ2xXE6N.^>b?40Tc^W`stp.kf;\;% wUpc*DTWɣ1VS)Az>_|I|qK=buyw.b!s&Ӊq|n] J(HUA8\qU] +A=c:^LZ`Gߺk@[%{eRHL]ޮ,R66z |H#Tv VD-G킨#k(j85<&D"iHbJmQdI*S6vWKc{m m#MOFG =LOyM9]_gtw(g5Q~ W?^Ήu͋5*>U-5;(63{ڔZjQ+So2_-?SݦWp_|^m[8*8=0':[RE73˰ΥcHݚf'|nGNgB\i Y ">ԳmzNPOHYg[$Bg/ nWgD/UfA q_-?w"ll<{0akN˭:o(f>X-ebϋ3sZ7ߨ/8xTrw_8:>Vm rN@BX]f 36E_@9[j uݔ?7W-{b谔MLuzwm%5LO.sPa_ Ma&[#zyVgу-h6r(tiË (H-`~I0:l„ؗTlf$*;3fT %DKp(01׍daɯI&\FݏOg i Lr>_OIyj-ܟf Gvi h: aTڞ pX4X2CJ}Rzu+VH6zK=FbBۮJN c[lmm>\1a[΃3Nv m/`4e;׭ƂW6Ã{T= ̼Ovfژ9Ag~>Qz%E4`G/dc֪bzϿǡ*.#0Ɠȵ4zӵK9 a֮7_RWޖFݷH<Kr<v}s =GHz8{}| VME-7&_(" ;G?d|\ݣ_|M8)GeAHshDRe3j\*VɧW5VP,Kz (qO6'KEY5s Y'$ZM/ze7:,srZfէeCqө Yx~j'27 |M+9g)J;CpଈqziGu#dV`2S\h@&j˾/,L[5IX{= ~؂e݂E& q6V]\A ( 9 _N9ጝ˨95_%ydg. d{zW=N`H4 =tEdB FZPF9Z?\HѰᱳ4Z/ݣoB~10F}v o#uO#hZpe맨"E~ܽ"j&k]P&IwfJ, ` !C@[#ltQ, L%JۊxSxOHeUB-]拡y%xx|  `n!.(&$/Bg$ZMq |my$b7un*cY2ǧꏳaeY5 eEc&$8Kv=^87卑~sk*'{Qr{JD8^;IН kue<[UiYt+lmB1[oWs/|z|pݚ'v:_w@Q2|˴7\T TÇ(V+*{,N8S9Yv\ #ݠtiC^Zor\KYpy3SիYPdomjɒ}q.ek.\tO e4ш p Qit]k`d7BVӌr eof)UnP-{~o2EE򆟮4lRk!ZYfK":c ġt|q[yxG ?9ǮLOA.}7/G\qrJD?F5?t+#ǰ[ ":! ɷ)-+k sBydqK gւsm*;T%_α^!yDC"~: G<y]/hcdeA0x8{ ku %.fuv7Q`c_|$J:<%{%l7}}%~@8oG^"Ccfm,U ;+UFvSӧ'ur.ؒἩ:kp&$FB tYw,m{.}1 %PQp*HnX{ÙD>t& uhnI݂8; ަ$"i!Lr-eQ]_o%Xx="~VgWA/3:zYÊuU/@RܬSQ=#Awb3|^M'@UAx)-Ʈ6̫= ;?6YXjpvUH3Nc 7B$oW&iIE<Q_ d(Xcq+^҂BP}-q# ,묧2וh^%Dh ij1⥛ JK'"FOkuᜇ5<-1سwM`,Kg9)9{gJ |p2$xUl5.x?ZӁ9R@\Z]ˌoEARd8~$49 3ʭmgKXBX axn/P) 5B"ʼtO%S5c1Nkp9ryioy_}ˉ.7a1'~Bm׿j}>aWhffxu{5Wߦa[UTSYY5N-ܽb+)B! uR:zņ`1w2 FGIjx_/`-[26Qz6R V*5 n,,$ GDGfVVa[.<ñZt:.gYY-bТVΤlowVpUrte+.}J-x@v~|\1N:`lvT|_/ܨ*<)B }G0IpYno_ῴc*|p 5>2[\%K~🍻+$KHW:f[ <.RȾQ/U)֬j4~ B&=b5h7?!?>H^нp8!"t!lqxDXyQ9xjÅ5'Y"˺a5O΢\bֱ`QZbB }7ęs_xPz0G ^Ä̟RB?\!F.t?`!ZA+!\&jZ-S<2`?)@YK^+SJzb3{RDZsRDJ\Ոdz)A%x1Mnp|2]E:q dF8kຕZV5jú &(%DI.5UMY]?R-{l mG+f=XEQNigD6zü:̷0 K@v߹BW A%M>xeP9Zs'[OD maD.K˯bI_{z&?:n(A|"_ոgLJy0Wpۆ-YBsD䉌#̩Z?`BC4b=O7'G%L,2kʾ5C, b9cRt&\|D$sy/3,󄴰]u.#IAr~B5QVkM5tyWŕ-lsnn&^',gRˉHi5ycuP?u{D'%?f{$7Y:b(xM/_GN5$ tQ_Ҧ(%||HVnBg%NDtcǀ|H3[g}+}լl #$Gukϊm^"rbܱ7P R+/XFIFASI1KbX; Us+d2uP4(s`TyځtVD}KO | n /chn0h\qzslXxv;/l}"yzR?{~xUA3fCF9؅;5hVwI?O?%$[y.DHxj:reNؑL6)+N }Y . =YbA3J۞Lk%/$|ac u!e\'8g{rpQḟp*-/e@-ULj{Il_̛t^{P^ 4-=+Gy@+ &f(`mT r `JmY GpZvi8A]ux8X QHAcZ$v#md^hWMji>{#?M4q%:cY,9|ˎ䔎^2u{@mA@}u;IQKꆢ$"+ݻ"o2I.͔ܕ37g69_E^5>^ &_=)եw$Tʪfq 2c2%hWBy1a{EHy'W2w'Y̸̓sXcZ)L+מʸԙdm-no fX\w60kP&m>Zʔ-($~͟=urHQ!q6j Åp`)v;QL*,ߺ̚N:IAqe_t26-)_DA7SU+TFgr q2Y@ְD 0żz|+WtH=)\лd܁8mU4]5Ņd0.;jGZNCTIʴ uZapr"CSG圭A'$7D+?/ ~ WVy4=(OhI8@E,@oP>kAr&amC~28gt+9q09%3PP; Ճ!cVm=QnS!o#JL QS#L+1'3;_ SƼJ4)xf%*ݾwzDbP -6-*/j0ZM@nnr_ %f$~އeMjKH:THh4GOBR:Die'8t7Jqo5ݾz_5%k.-T귂R5 &yfB@XX |sLHaiٕ28\i2`Fjonʔ2,M RSJkQtk mT/6SpX ЕsIRp.}J_q6lVX@-Wx9,ٔ&g0َoaYgr;[ n@ȈqO,)H ,{/`EU cZn]bO*$<]R8CryeAR5z# uO-B m񉓤}cx\Q;ۗaqAsݴ Yͼ7ePDx<ǡ[ebE'^k #V2"#ɃKhgmCS6WFfm9XG s{fN QXƮ~ i wir[P5ǐz,_!~[q$PyrJ4MRuw DQ>Y] }vo#V㙩9eeH=Q)Ù%W<wrVSiU/,BQϦ (CQĽq==y{<nT(0?6n8ܫil'ϚSv]&v^)lOWf][YM4ݬu˱1lBn\WЬ$Es54g"\F #e]6b wx[FvK$ 4~@ǚgG@o|+ˆL #F8I~pnEεgN5 6(Z0H_YȋI*{l֒?vV5;E:Zɦ뢉F/ ^_/ |MwҹGN:ך8/b\yL eל;C 2s0hu;,:_ lmW Ihf];VB Z %EvAg8T8k^,ڲ|LCsJ^XɲԯlH&bwի>A[3 :h+-:AP/Pa"_Xx! I+9Ky'NI`tO ɻT,S{.!(PD.!զ4#uX|UXmFڟCivު)2TV1W|Q>t,׷D #CrJPĭ&iTT;㖅P U - v7bCaN]@^yF(!1uf)w i!75iS[ 6M=%-[dtE(+,5]웪`i0fZc%S5VQ ܤo@lYC@_c NWawL ~fgm_ڒzw *>v|/Rؕy:Փ@pۭEߗVN8TYR+ zɑ1rd^w ֦\jGn>:jTqԀ;P1 x `; eنs}#&^Gq3So7GɎ`t~xl 0u1w_+>&loh dU!Ofʙg- Aw׫B]Z.㌻(\gl3ݪ Z}@?C 94E)>݈SU^tٳZ'R[Zc ɤk TTexg> "}Ul^ь  . ROR,S`_ Ok@q79jE@T*RczoAmg \ s9"z k(?[Vq׶[v\`{F3{jmhCE* w0ji,o  XͷbHX\iwO9ʜYOU EycAl*8՞^wX _G820 ݪͳ7]oc%D8=4sOkA?QI >o9=mTߨ+ O @)[AgrrGcD4;/,{oaxYmHhf<L]Ə>RG%=S;GD(X Kr _4{oF #fzeT.`-LiuٛONIDqf*ٸ5=d^{4QGA湟s( {:(W>ܾ(}IMNn̂J$=AKBc`GձsI^bph| c^ϖFkHk};޶? S=}륦cMmOY#1n~kouX )$Uf¤'T{MDŽ2:ܙlY3~hcֆ12]/$S_?6%1uYR ;],AtJלʋGKtQL Zs=uvmfO)D@t=Cqg+YeٝsVRLJYPHnoϠ.Lfzq~no:§('HphbԸGXE 0>CzM?O Jw1?a|f,DZKZ=Ϟ0D_a#I!ٛ"*>+!@wuz{K-_j3 DwC59aY vK&C` D2W#6s HH]v Cw@fDž#i=O=¶9@">q0oZ v{|m]|ʃk}DUOo?hmլ>_ ʐvL[$WׯyӘ.Ӽ+Aş;43S\Í҄F^\?Nu'z&?X9z vMN0k::1n;Vrc~ˆl W]Kހfn8#bg&8!,/^"meP֯zF{hB. {B& YXMQvY~"Z@nme +lɉ2NM5osTZz _</#R_ :C݋FXz73(fBT?oן eRq¸{IRdY]}sڋ ڱrW0Ռw=S@SMJ! WEy $ BJKa34+"F!宾he_9\T͠X%T EQ?I.? )`[e,nX&0B@2;wXۄv8L] YHrm~ ؜x$?CbM H)1cOYm5kyk1o::5q8Z٫c'װ7򀁡n]N hG_pR>/8nFm$z`#qY6𧞭n(#HkDrv~i}60KA}q-Ua"DR }edǹaMOX[SWLxP?,y tU?v~4g"&֢^WfǤuC$kxjG@v'Jyych+# +D#m4L-H-0&#˻Ҙ{y۝lJ]*qMcoWPAf|wOCF} BmAt+u8H/KF{߄YV~+34|9>x?H5 }%693:LSO$f2'cVoIߦ~nӕ~uۇ>*Cj\L"|u  ām] .g?jH df8THɗ|[y@# Ac > t;ɝtC&{m/&hxNޝ:h)@4.A޺n۬ZPd-\֭'e BĮ&Ϝ`u(ʍklg?:lنHOBݎN<r UkWf {9o" G\\WdPdgYk|/lRp+0e_3*G4 K݉"튉O_/#M 5ʛ:>cي%~Y:X0)!A2{ 3%W}MȀ/`2 75*PX`ǦLǹhX牱 AE6Y]30xbS<(dcDg9ZE1yP#0;RC휯s[B,b>xB+hO{$3dPzMYY g~\  /VΞK z_1hvS[| /ņfXgC?,EE7TDnSʭc5tJ 7**eQҼ2]QNshOS6*|;KE1WO}ևy|kDi+}*nt1%8pO'#ٓX[3|̪k7 ]s;:Cnl۽0l(. %f"N2c@h+1d3f4pNp0.c$ܐf% (u7qԇH14_''3y y7 2,q\3zI% uA>[V@^o,XI.= ~TI7.'>pG?<;0Fp3f5fʟL 8U9U5$=n,;Bx`*q V qU!T.0FǵE'P[4!M|`DL# !9K#Ij89\6^/߲qҼ PXbdw [Ә;o8-Ň)EdP~eMflO;w9E8\]Zoۍ: ;M62R\W[oWC} `4B72n" tF 6KEѻZd #{ ǜC0+GkfbTooٕZ jto  #]{$+ߢp S>gxҜPԬ#wz8TRI1q}vr0["z+%a_GSҠ(Ufʜncҟ$>c 6݅^o&^ =4YWntTMeu&fSk~Ț}IEr.6FU`(c"!ř~̞o^8]zz* vKŧ әԹr'Q,QbrfdF5:i|2c2y^ulS <<*j'3l6_ `Z2SjئDĨN۶_V̝p$:46#=#Wz %rV~._iT(g|:ʵZ=R`V!v 5+X8F4\%z5dtO2iw%$==k~K`u~%$NgX4Ss.3ONE׫5&KH I1i_-De$HHx'BCu m* tαv wW rE$PO u @d;r u kRgVX Q,aM brțDc7Ey!h 9I-/͡"ʥE*{MRM~:m̗S!W38g2#-̕ >眕$8߱t!Ke得0<Ӥ1^a?w "; <ܝ큅JT~:-ƾL? b$IƳx'K_2Goqں2= Gn8Ky7\+ڛF/֠0 ؃@T]-ߝLj}]r'Ll vcy#%y|ԂMՁd\H I&X]{ +M,8<+K-xÇwᮛС3sb'f#*ߕaf!ƣ,sCEa) ojEnIh^\[E14,; $@ڇ*:5iyfvQaw_uz%*j{]`z˯q4?#ݶK÷rj Gp)TAI#і9*k̉1MUWt:d#^Q乆 g:Dx {`V`:$Iua3b\$9w6yYvsM+cN7AE%)al5NPAG̯+ *e;m:K86K kv#ߛyG@4VIbRUנIT,w/. PHPpG=YD}#h盿}㼾Wn V%&MnV 7^:t!0R̲:ѬXI!5j͗-48_=)zsE:.yd npF Z2ʧ7v} !H3`2jGHۂ~)ߥ;D c\'h~᭶@2y٪|XijsZAH,N)+X7U/gYl sͨ4ːPѦN9ybIڊF.<8<x彯p 'с܎,)ժ k6v8Sq]i,_,FqN޴?1b/?6Ss(ìfc_"q0Dp }=l-]fCB=p yazY᭔΄\CIv^o>F;]bBJOOB%l{P0.h?7I^ڱb(DWΐ&jT"2K?79f'W1?^+y='\FX #\.9Xdɔ͑/?T +mS7HxV\4b/K&2^rDfGHjpEJ^GK cS9BTUOQ{!.U=FNu[ xt2w6UO;);Wlf<C唉}9y72i=,.dZmQd} 6CR)W{wE+$*0q ZWsMw($IQNG&;砄PAbb^2j{$hD4d_:dmfޭ/"C+\MІFM # ~ئmpVFWFc-!dɫ"I Nc &%>A%69XA,JȧJ6pV,L@I0#NDIn UՅb)?qw|_4;; CuӭJ#:JfɇvFp} PjL׳kKH#E2kI6 %6ƒ)O} Uj0ȤM/$R.Ͷ M@2JM įOM~ldSee^ɒ$_Y ,58952zE>ˬ;ٕ%X@Z7"n2HWa=C#ٸ/N˽Y+hd+" @X❹XΥGa'Iatª/릲/LFZ' Zc&a{6?"Bc@'!J@4:FXNQ GH|*00Z }*mw?.!L16gڲ'ծO^qR{&OLnĹ9gdV<\$cG~.[NTr@lv|Nr@:bp8YYύ%}|QNQצJ}+ƴgQ &S9|Ҽ;|E{tW",;=rw=n/M4V#HGsxV.xE-/nV:&?#VCiSY Tn~ XGnt7Kʌ}?MC~LnV@ Q0iIbxm:&%I 00lK5٠ C5>;/ɩܑ䙉ptr%*=WtOGs ͍٘iY(E[wlc?t;i!ni؅T,&5O`uԄe GeL={x6~ .(ُ!"bwp¡ "^>K7B,O[VR_%'ks$[͚ >6Z ܃XG _´m?nEi劵kgk*F($LMNJra %X/Q*au^pƼ  &!W#/6S}P4hB>Q|tgx|jȘI ]p`W~}B, mM4[; meQۣWaT$侬WJRl嶅QڀtcZćSCɷ6X(͏);=6Zi4c0#]*ڛ)B)H|zF)li])­JgZR7;RP=}!*QշyX*U mJBk<4~]5WҠ[s\K@ pBe/'n}-rGX N2]ێR="3h- Q2z17&䱂 0" =@gn-oiq<\9:=x["?# i 0匂?lL>/xJ* 5bwE&-lBT}]pel.7;Xi\sŝ27*DYCPp~/Vpc= M`_#36}ogܕGb/GU[i(o$G5e '8:%TT^P։*%:PO|b,͘. Awa2:in]9S {sDBƪެaPqYnbT\M0æFϟGĻ9"\U*~fJ+_8tJ,(̑po١.eцdãgF0RaMa"Pk8WM? L$1sKfTe ;nvWPf[p| >%t3-%=ԈҀ|wlxq7q#?XfUɌz?CJ]eՋm<>z<9xoy@zM#EUg# 6qGu5>[gOe&RFE{QroZi/@<=Ʊ/͎Ԗ-]l:~OPNd6؉OZ:ި[äw~wdK6&y ~T@/! 'LqS9I.7.* m]N$o=TBܺLy /.xx+ 3N`ngboO k2恵KiPf=7ނ\tdsXBE9Yc}0mꣽEj9#uoiicnVyb/'1wGw5wQBnt=pa?a+ ВTwLoT L#X:96<^0x}?%0"0=Ӣ%:~#j>(M{A@ ]'؛sФZc0x!%c)%S5*vٵ nB C>ݸ, ݒ{ R`W|ƨ`DaZWG uqYmcghq|#[^6H"{㫌rseOȒBOAkOGСЎk0td_2k˰fM,l.錁V)oo,-.).=kGl" G")A(Cؐv{C/=T2ph0 d0)~P rT>ӜjqZ;MǸ1;ﭲ*Fƥ4>bLWڙQF ^7A4t6K< >v{Sз Y2ضW^o+i58'&*/vSз{*`׳{&~ZjTLqI3 XN"Rt 5rNrv. Se`vG m'{ . ,Iwvo<7 Ő]i&b=9/2pBq(+tl J:w0Ki,.mkf<.p_ Dx6/?Gż׸ %rH=:P΅ Ay-}y8#Mx9 Hw⠇y$фg36;Pϖ1/Ӎ*r̴# Z?^%k yQN8]s`[ DIo! mDyZt}O\v/ZJ %1WhpG剼FluV"_8ޥ]ryZY:+?ZlhҊ"[]偛u^˰[אWkF;WS;aA9(QRqn/=17ME~N\kFmc\IKU@ԍUE՞م1;q/h::秘"#K=ȡ<%h#@rpgv8,nR">@HŴ̆yNw(<-:LVlҶ q3rkDl&,*:IaYLz(Z38Cau߹KKytf%G: 6ҳ)4 Ulư1 &,>I MCNB8k'OZ|U͜,1BwqiǺb"zQ<Wt~ ֈՠדdՠ1"ܐN΂,R<pn;nm_X2"X\lm=1zXC0{_ KLz䙃pFjAUd{29mfYh(]VA.=ؽ CVK=E_IQ5?[7޴-[R轠4Ҏ:;?i!݌/#b?7OI6 AƝ,ZqAh)~{a!镥QɫS9U-fPwAeF!ƭl/#u{pB>H_ڬ232{I꾛)7>Z쯼 aGޢ*݇5UuxʆW 􂐴Q#7yJGVevm!ߧ5 ~9*+2H nxOWpK+0lBeZ;s$jr{8c qQvcs"x-ߴ"̶LW~|ʔ @-iƺI,Ƥ#|m & toYꄅeg6X  &zfy;~ƚ-+w g[H ez~gjlc[×p+n(2vʇӓ1{#hy}]{Byƶπsps!w?WY$/3h!F5okIuI0$6wcd?K!J/;0ÛImˋ#4D k lތ+۾0<*ʳD3?jFVBgW]YBeGoZ_c[}'H&>zXD5C$ z^Wt?Ooǃٽߴh^8Q+:L2ڢ9a+uXR˶uHE3 3\;lqV- ^ ?!Pn?XczI-E1̮Ww6DA̒´}1 UsVV맸Ђ 8_ܕf닲G?i7z&^Ju;<|mq0yՀ5: hv.֬ZN2+<.vɦ!؎]^ѱѯ+E a,>RTcfR>l~m*Z ;gq3OP![n"ׂ,}sZ ?]Xs8eԬ2&+66=P4Xۃe/,A Hv^ 74soj2#[HϞ*'FSIy rikК7T־@T4Efh.8Gs}+0`ڱ]a}%aF<- iRkŦT @]+/%?<4.FcfJz@Vd _&4'CQʝC.!0H}y<bɭi] xXsnMaĀs/D/o5ewD-ލy?K%EjFLn2.1>K~H* (^9MD~Z*۪ăYz;i,LzCC8^;im禁y&OK{f'W%([(ʊbfӵOH \ζA(Y3 bO B /lZ*ݖeJnݶ"f g#z r@55zGC\%B a5&'dk_*F$;хi B|h$eTr 6@hSϪt ]F2hD \dGo`k<_#29d$̓ב9{˻,%wdUPoỜr}}pMN7TQNѓ.M¹)XnC5dxp 4RJ%N!`+#J%ij@g+2{Љ ؙM˃V(]@M1g|H׷tQRؑ JyO=]+ H8%$: Ό=pOKFfX]|jlm4mlIns*)P>_+1Iey񮀘Ʃf)y*0渭Â"`Zh|<,wK*=GEA=-J"Qhk|A< 2}sx!/i&"GRMݸޖ{$.3mMCoJ4=D$;f hܔ}m; [R4OD1 /b嫈IXE 2ݵ7v:^LkynNVCHx"nE2lK/WyiXLTwȱIgp6|́BݐRD9Qkhvk 1?u .k"48$ΜbL<_[Pߕ}?EF K@o)]C7+Vs,9q`,Bu| `{JF'plӦ(߽'V{ҏ&uhܝk{ͬ+*<,Q&M^R<rAo.' %FBOV^da*1]luAua1G^.0P;FTܒ!pudjlK\.U9[WvU / C82#ZGkiC'nzD.cF.uI=}OEn*̏fV/X$v#>` b3vE8+)r";2b2%Q#h9 =\\vHS7y0[tԤkNG70[}?Yf۰ymH:ᣲs[X ;sW5ނI0kJ d ${q V/g¹B礢#a?$R.1[9[p*9 ʘjaYB:g K9TA8Ϳٳm22^zӚV+aĎh=jL얏|('`)N@.8voFo2+XNBta"lZ4FPMhl~O5y f0@AF64U Eg6a [0 ic?cWp[k6lh`m:\:H(p ])oI T;lc?#_/ oDdj Ɵ޸t]6/Kb`R?AiQzYXMfOMJ[~t3*Dg"q 9aJ2$ G@6:َ+LF!  !&7Q jxt*\M y}%4-e=#A;kZzR2LNhȷ= )ǀjUPcDF_ %p{y123B4 ZKGꉗ,VLdqڊ bY$1-.81 )NV7#Y5_io5]mzœ7n MTnᚮ61֤Z={@[1oo330 kh.u% ]z/|nZn_5Lz7LD{ Ts7~ 6k44.|T 芀wGuI)O|s!!aRctb* Ģ(2n ,ekF>BVC.tb;:([k_ִb(['XyZh;uYQWiЌ!nݰ<B`"LdvIi˕O (}ԱlU0hL3RKo ~JB {H{CJMa$$`DBbR{cr2Rh0_Ȑף0.l >%34|GݩdN ܽUÎijVy]ލk|/ERSA\e ,Dkm+I9'jpYAJA#A[nX<=ej_d3.~+Z+`eU8m5zMAEcXFs(r;I ] X}utmnIx$̺(NNߟE,+#B5R{}D>6괻;ãQ4=\#kso#̀9Q7Գ8"!<+J7pn=57ݍNs@U#@hrtx16{㞐-3}Y2KT*O%K)h"R|}\&-}i]AVD!5m·QqȪ%`&%;k2c3ULlC'9X٫"tfy[T7 ڴx.x 2ѲK^A\J#-)wJKS {WnZ*x)ixU3As PE&W*88 :yOqra-_m cn1HW|4WO;tV$]КJLO6;>.= bp H1G]2Bck !-Y]OO 1 -˽> J Eټ6=i_$5P#!t u)ىBcȒB8)zo$GgƏFzdux&F_G8qPQYǮ|,o $=Zyml5c7q}j-0ZF\1>pJDY|ۚ,6w\uTWh{ABq'% _[7 [ eګ嘆d^!vꑭFb"fw4DVZ}F,֕.pK_1x56Ğ.ZKW?m]q,1s'1R*V9 逫ž6lDx:nR|˾DBi%p]m'^@<Jo#;͐!0±BH-)7e\ru"3WB711ش C]wQoBR&NLn2-nJCXm9*A%}Gp6pPß!1Af{)VϳIK0VLrj%}Z)Hÿ/nL@Nez55*iH)h Q PPdU-5:KMJdpb1hn3^<ѥh$(R%J yj)td]`Y,W1GDgl޴Lm^q2Ɗ֭l>j2~ańb? ,> 'zS' 6Dt:~~ kh9hfu՗ȷnW]};%>23GnL}Ӏ5) $: JN5Ϙ%˺:] Q9ߚ5d&e0i F5 #5׻\m[[n'-J *"~Ff +T;>2w刔}ӭKJ4W'C 6.5bAmIEB#TelI3Ѿ-´ϴpc},>|DNJѡbLJ\z)?Fz{f-? R:}-au]-XjK9JcV;hSS8B&2E ̓4&#b#ÆUz:rmBIWwPYh( D?Ot^Vu{8/=tXg[3O:{Da\c}fRAQlP98h?u[/_}]Tdf /v"(z-P lxM;,AT9bv>iLs-sG:dXhFlg~8 ؊nGu4ZUU \DD{>4H)jpL=0+ó\z؝ Aoj dGLv),QZzFϐ M&`Rf.2.H !ܸ|"zsRemPGSj-htzas$p^b>dkrl=u yie *u}"&YB֑)ʑ5J,#Op馡~+&S }h}\s=iF4…}*'/P񅯫оuo84 nSu8RFdX^+T<M! /:x539/ ЬH37SLaA2+\\ &锓68STV~ٻXnɞ1O N#8C1O@}J>ܦŵo"KgLKnYEx$Jh5%OΝz BIAUMơ}Cy5/.X 4j"[2َmq@ MsXw@& $DծxZ56Qm1% Tbڞ+^jj5gbyɂf?DD9Y(0N&r;nk[S7e0V0936>K؀xJoR>m?n9,g(+z#䵿_Ħ6bE@yF5ZVL$< Tx@:cֳ\~~XV؆'zo.w$Cz $[fW1 fip7O5:tjhmכ.n:seC/.Ƌ)Mxh{dBǵ%L#I`5Ps+MhBʯDB7Qn4A^RUT`@7UܴF0svď @3E2K)62 3jBT8j QY< ~@(Ǝ<~h١9q\QudEw1V_ eLur?u?=&o2`^^i bCcBP>4&kϜ]OO9[YsJRሬuXdx [SD` ͏da5Z _k׽5,h6|䴎С/pQL;#eF6F}( !*ƹV(2e%XYR.GN _KRPo.D 8tezI8r2:ϴ}?A ֌ IW$/~e YE* zAM; >?˟ QvQ'S^7}! yn4>cBdlVH3UMD?9 gZZ9ӮtEU)'t>6n?H!m̲JwiiwM=E#ټK}1Xs}2Q9`6` !Zgp1MUr_:SUɘvϊp?v^Kn_ZՎ'ѡ_qi |"* 5f$:5}6P)wN:Uf CxU&vN!lFX|p௜MvxKm!R ,8iRN)v (x^rmky4<|.Ғf'luҭyM&҄2~qG6JKHQU,jJ@cxEӛ+m~Mcu/|o[d‚^ȑk>UGcPM)rC*'1kѷʨUf9X@e&DRO(vx)Rٍ*67V~Pvs23o{:<U;zoHeNU% &6\'^`djEIG%%:PY4 *hhE^xVYeI ͧ+1\5l Xm.P+rW*HOA3ƈt$DR8fWH5&dH!zXD5{K2]{SS6 '#_ >|nXh`L@+݁0.N;9Sv򕫲ru3'uj!7ГkH.CwNCx+ױ3vS^AX\pʳU?Be7k-|ɯCjڵhՇKBgRg$!LZn 8L" ZJEE=!sRm㜺؊p;%/(][%!TӼ[NQ0{%$.,ݰ%K2=GH.CHȕfx|Z/j+ʂDܻ5f.0Ɂ9B*͑#E:pCmZo0k^a(3KVA g1.CBJ(gxHtXR3Fz9, 8[ z&锌SQkzFI+ۥMr'pj NSw-cǢQqCU1J=$G|j~sg*" pjRx*~KVPX]tP=WDnYQIh^eR:?߂Xv "eYH ۸+Fxkđ@`rvӸ{TRJ+d)4yPFF_0rYo/rb$cϞZGm:.҆'i`P #X'Ax:ևל{ X'g8C֊5Uj^oK+5) *'C4 "_ :I@Ӥx#$<9Nzb(0?C='w< S"mvrJZ2wWgFHZiqSYE闟ve&{IZxI?F^^,qB7J(q[ $5=4q ~|K`AGp:'3) O Xv~/ZK69Hy"I7 $jW# ;:9Jy@^Y6Og< 6.Z `7-X򻟨H} tGG[-8_t4d4? &`'q:ܯߊ< w,+n2(Ͷ T"+!6 K0x0T:8mv5҈}ss& oGE1R̳ۍJaMYZR_޺QL8hChcƊة`l#%vb N3rQSyڠ鈐Bmgf1| Ң(+5RqnƝ vbɧR2/V+O'qg}}Zw^ŪS5S a7lWɢ 46b@ @٠CWRSPZ3J h<PKj9#4a§O)5mZ)FQitP|˽ƈa^rƢys=yhԝBy-ܖ6, sD,^UKυT&:FL͓hqOb.XUs_(>NPpD<6|SO?O["zCєT5!i{)L/ 'k20uYi@yh5$JzȁB̒VB/2Ar $מ#v<7j Se8etl>c/}x(5^v*ö>S\Rs߅DgFfuзNۆUI/ideo;6M&_V;Rp9x5;mTe[,7JBfkʝu-I苠qh$.űc%7Ƞ]_/37W/v׽أP1?1^W=v`Of#,%eMm) t-Nckj*M+D?9­ %DU !jku"$;(RQWlpp(t¥"GlMS)θT˙ ~G7[ `HKb5gn 0_OSȷ$|A:ir)+wc|P8vub5Ƹ+8[Fì&˂3D}`99֡5xz>l=GGu E!&-MC1 Zg`4$s Ud'Dߗ3EUSln<{SD+{核ʆ#" vOPooS feY>j{Gz 2_LL%deŬ()Z!Be"HGF(ľԡ@8=M tҖ}菽0ޮٵ-756I<3*%1]VAqw7DST/3 ?&&!4z#+jnBj>@-,@%d +N=9M1Yo%bK pVb%ҡ uc36{ǒdC/g#ILvm3d' aAxiKo>"aӱ n^yŐGR {auc݅M,GoBY?2"31MHض墬=}X[^/5k_[7I?mBArtG&iZ/r֨kYP<&lFy 6ؔsmuV[e A䗂r*8"`SO#A8g9^2]ሩK"&uP>IL ljR]}uX Ȏ)-Pzlehr(.Dt+<ȸ&ZּWkEVr-(W0cYB!#{N,G0ǓO`J[vJY r($''uK GZSKJUkƊ:ۮNɏiX?jiʲ>3 +sfmpUFa)3,eIW%_ dkͤ %S^Ā:d'^ 8#o ĩw?I&A$GS;Ra;ihikOM4V[Ys(+ b- x @> Z %TBr lO${1I,>õ5k{+iF*y59&!O?ΛdQ#[\F鐐>ZT-rHP֮?4/*$bjFW׀0g%:V}Y7+Jth]t^o+E esf6Lf)]Br4 `;vk7=3|*n;B VȆWyɿݑ OZrٷ@JdrzzwU?Lg#0f!5dez9ap.凩e"`|RL.W2Nt5~J'd*1~\0$MJyS;O=$|&-ɁQ[_*tLZ^;{޳(h3#>-F7XHZBϸ(xvڼp&%̸Dr {@:;-(g4edֹ'QJn8}|T!|IJrΘ~R}pC7vjĮ=("rbi&b ~HAJJn@Պ,W|kxIbKׇ犓7H>~6J S̲V}e>ij6"tbH )HP%(4ihK34VS鴴h+WYep¨R)y+|] d=a?JֿE%bCOOӋ34nqIMH"Sns0l@8'k^lk'?tt4 *l⭇Z@c'_mgi׵ HwtAIc*/HuU2v<\[fr )yW=Lʳ*Unώ~F!|&`x $տh' )9q;[%%jq1\`U{0(OkQ&C $14ÁNDrW_2YIY” 27Zl~D@䷽]xZ}QptLes$Hgj{iF`Zqx1 O%@BcE)X5c}IP,[j!+~ MCM/>Fq0(a{ F>*QI^{ Y JR,m=&Txq0*O+(>5$s&8ζ^~N Z* 0jf2Tć)N ĹtTl[5hJ!uc+=űuڡCs='^mǦK-im8./\:LÁk.=t{oi{vn%:GK.$FQP)S8a^@kHKh\Q~b#/7lOo5I6gMURFylDA⌄7= ܯOl;ҋ AîiD`êMvqgPdH UtMb&a?KV4#Pv tz~瘷5͑I?\>]@]fOs]}Bz)u@v+uEWQūQfο6>h(y- U!K9_F;Qfu#@y-uVbݴ>WxP%_j4-}"%S!$BTPݪj,Vs{n}/nޯ,C':ug:*,, oO$9HUp+@M0],E$фj鶳 y+UjG%&mqc&B- SJnu$}ʩͤ()I9qd y#!]JrBNΎu'Ų 7AX5\BGC6S09*7j6y,׷XOEy,FA`OonNC%f(8S ߁>dNW*+ѡu[bjf4l}azoT ^85_s[]q'ͩB쉝r>l:]k$Vڠ9~pu'kY=_ىr|b;9~ թI@
Jo*E1z~rT^–./|KBzӀ|KwińĪ-4G|Gʳf^+6`mƌ: ik@p;z VtacM)k7&S+wlq)]r392lwkǫu1: 6&WxUO\Ux՜ eٖ?vb^(S佇f4t~W8Ae޻%ⱘ4A:Ƨ*kv++K~_ ZpTr&z>cXam>G2]NR45Nbs[ V@)+ Ja FQ[@r jBwm(Ū'Cm%EZ!(ͭ5`3@Eg='*m ȳeqTӊiGhEDwF'o*>Cd{bTX׾)%|uY%`ƿDuΕPef" G)ҕƔmXѿ&kڜ"6[ge\| p* b~wW|` œ*-;j6 /< og [WKiH2 7!]%33K D}a څQ^a/~ȍ rdNK( 9$YcI~BD{4NNweƢ ՞O 1}doa"G1Y|H*" \oghݸf`ԧ+rԣ_Uvx=BQo0hMCyȿX.5#@d6Z_ݭBXE]Ep2ôdlu-`<7w:Dfb]e VJBKSe&_J/NUݥ]nnȳ`LKQF(Z[ΓZs1*f4'AW]=To6%"yk)HX}VMRJch7݄+= FY/[Tɛ\dmK5<.xꪅ/PP[( LEsyn [~& Ko=9fHI|+/w%rIn]afgzv##Ԗ݊n n $[T4tqGuHmڒ?# r(=BfmIOI6.'RsH x%S' _G&*>-IݮQTGGYS#&XKs!pFV<]DS`̠M.ZȁYglB8Hs˘S'{`{$WZ̲cfɎ}?HY,5לCrЦ'K006IT*_Ѧ/cye ^-‹"xB1 [.}@Mzq)%lܲ+5DT["Rx@]"H <:Ƹi޹f7o1UlK5Ϻ܆4vlpg՚h,xB'FNrX/%%L'OHvzV<Ʈcl6{ &r x0S!8fY'wQPsS3 ِeg#Aʆמ`=nsOuMV̮/ns '˸ &}-poUdHK%DzFJ[`#Ψ=}bDt%o Cn.K.w+F>.݅ׯ+x.kXC7! u"I"}z0l K +={sOT㝙M~〸LM1|,KJ- R!3qtJi4X{+lZEiZ s.0ǫ9MfZlN+avoYQ08 /rS1e"(TMU]xtwy-ieTUJrYb$hJWh)h%F !UŌ$vǗZrgb'#>eYQHx|i4. <5zRFugEh+k` yRYřW;'0qzYo9P^!tוڛ9zUj*ݱE"@x"j+k]Hti4ljξB1np0(}zc$`pjcȨrBR"dknnFbTe>e-E0U^{m&^d\\Baocwh# GnP^ߵp?KIQ13gn'x&qFqg#\+1!+>%BSkbV|e| 9ާdk=IeY.][߽4 X`򺁦ȇSa8q0οĮ-[r]-1{`kk`8(k\;1vGWW6} Sګ!MČ =?+Awx8UKh9&b2cԻߜt9ف* T wfy|=^}q{ۼ3>6fAlO]&E5om.:&gp\fS;`b7CI/YrU{M}Bd*;@Vאj|Q!!Σ<><Ʉ#3.7a4^s3ٷ芴K @R7̿FsRbCjjͧs.= +r*4XIyL Ê'l\a n6IZx&m\IpGaT]6i O0bRIf *g%Ϋ¡4)4)0A?$]8wN`:aҸ9l@rP AH)l3/h|ߛY[Ц᜘vr`\ QuOp2 X9߸Y 8_TQ+c6-TAsAǓI΂Hv ]]IONo^ݪuq#a78Z [Za4amۉ߆t+f)*p+\:mB~V}"xXGٓ 0˨ 58:OnHQE5ViA¾rXw-EGTt JfrDc*+xrsy%)jm4H,EG}VnTFY>s!sTeVY9 (-<ЂYE]$K??9BFV,ܯKiNJp*t4puc C`u #?l$J|=O^lO4/E{F|A 7=;QB{gU?VV^# &֥*&>%1Q"x;PO*0^`K6}$HDRSL4N%T釼Y5`@2a7LT e3T'm ]Il&t|: D֍謶D|Y Ѣoߘ[`ۛ(܀z ZpXȖkp/`wJ Ne[Tu,RrcԔ1s.A9MLO1JƧ8Tޯڬ#:- / R*Κ rɵSr2QV[ryMJc8[1- cȀC|0~1 8)hذWɾJV&[/6*к,~^r27ŒR<ig D!9rcS19zWH3C:}Q !kQa!5޿`hs5BsW_ص!-W3q@ZJAJ Bd5@j:]צjAk*QSZ!1 X7Ԣ$'<+)tv+/(e${L^؟û0kɫ8WqxmYCSwLp /qYA#dn?0ㅃ;6[^xf6y{c*jX_&~@u)Uhpf?5& D g7. 9˜nAi=d j.6 $GE<;?DO7>Rty+h1q O}X)WyNyYp9v0#QF'1葨uSoYƫ0<_%IJ͚òjO(238\tmE(m!-Z:Bb=,޸uPܛi,21Cl"b҇f'ґ^bjx6Z ~.c'r$Iw"t˔8s^(}а:LHLPpϪ.q^}"XaaS @%;4]O٘g %eTk~v6Q`u% pQr7:zգ͎KYX pjNzգNP2Dq?QF:xj20OmrLS&av@Qu7s6ĝr3* !@0hnԭ#ƱU6dR3UIlB00 S @~]F.C"l'#y*0P P Rս5ȃg}ɱe5PECeB3%RmT!nB^SfMER ̉}$ܥpO<$jCL\޴& B5d(!O0;Sv4W )~ަe%tl:ZZ^c;|Hti7#Ѵ 7Zw "wS%v R?%&B$"6d-S̃ZDM*?t&qi#l q7fafѬnZǒeMFDZ< RnG-gґL;+)K$Uj$z?%ogETy1 o,j֯$XKB!rol(-4۴m!uao>e'aaE«U B{HBUD7FYk?x.X6J9W;N@2XrmEZ 5J F?rjl 05" nRL&c0Gj,J@7;7t1N~M}'CAu>4I,2?";J^R%UdK^A5bJ5\}+eƜ΃2.z#?K2< lA? fU WPG3 /- >-Wco-rAy'}/qemJWC2&׿.@M S1!9%&a\lKpTЍNv5e5ˡop7IԱ{$:!4u !zVj}Va׾[V'\.$Jh8ZXb~!wr+,4~n, ƅMב}K~Hd[ _ " oS!*0ZX2I}0i錍]>S7OXvsth b:+a~/B3Rw-V]\oJHѣp{)g0N!1bxȄxl$ыux YӕÔ_.|Sgbw(:B-?}N:||m4r]<42!/ C2.+oW;a*K ]vJC9%ڌzbt̾h-V1 Zc!HKvZzeE,0ZG۫=Iu™Z)5#J%'fB)\&Sْ-`~'u AF ٸJ>?A4O*0e͑X^#eMLсN8]fPk NP7rȧ+ pa!:bU*wS.QtJQ dq;2  HKA5IJ}A~-jMq#ʱGzF ڤ^M`ỈYfǷʳez/GbSJ4Kw1x1Z뮀яD *%' Vgf>˫<=~*|f%g2WZRZE贆yHChh4:v9"̀TQ}.7_ӧnuۤ76_5tM)Kkm/_З׫b@MY}QY9ɴL.sM(qێXlkja5ݾ]7y7[KE "9Kִf2Xws}ɼ~LYreЌB"]fU]z&|ȌaYcIJ]gely-qxBj^@g!qO"=0ibR_7Jnw &W=^.A!HGtֹ[X燤JsشbX}Aa^n!: -s]xg7pZ*sϏN i*[9%%7 $j? w{VbrW<-5_ZG^&VOzkh|#۷ɝRj#)A޵J~'G3 LW c|;7Y$odCHÛomsi`gV3$v WZS;7{ L&IޤafQמN,XopK! @O#|O yo󚛲4c: 1L&&n? |LYяƬ%0hP׹8(篶 ,wLX+4Sͱa43u36Wz[Uz,|4U^X)(KM5҅w: WU)VwdT`tx:j8T큮Wonglu5ZP3LnŇjҌB׍UcEf1$/X(6\hTN(݊Of?G:)H:ͱ(~[]:nO;Z&q7Q΄/W7a*&iv/MS^rW\ n甐N^q> N!7d^x/Ic(P6-Bg}kxE_h]J1f&`x9.E (ֱF~1QKe5PiS%no|xOP2OX5Ia1Z^<514ƭlRJcf㡛PuH2}tɲkGWO/d bgU-0q]rxY9hԧ{v_4,'` ˔=+t}Zx]rz# c^+Z$7]1a39rZ'kuP`I,V ^AyQOxb_{'>k0N*Pb۹V0~L41Og*6Er{ F1V ]%ULd+;*%i 9[M'wi)$5ictל釗wSOC:t*@61S8^^TGDDZJ4՜ecоSȶOJc0+̆T9RF1TQ]q8z"-(8F)ξJ9^^Chgq?I%lp!).61VTYee|0)8mr/u !_ kg7K2U(B"Yuh9?M{TD?ڗŻV*8ѓIZ`+*o< m NO ՘ˊ~!CT9teNtcqB8BZZjZG=9H%jab:#'Ft\m럮|fMUS.bckb/b . V.yY&Wʹv=wMX#r5:K'SK̘ #qtb>Y۽̣i<=Ǿ8Ӭ@X3Ob@_]/p06]QR pީ! $uё򳜅FD\翪ĞO2;:`ˋbRPX?ҋXX @ rIv` YYkXpgc̯'QG?[m)MsaE{N{jl~K}2@Uޗg CD$$5y#=&* ggqz%M2Nv3r:sR7cnGM%~)4xa9,]'blgoKe 흤)ZLAd[~*KS^|eW,nv$Vj&HH6{-z5ٍx;9GtU Pjq:ͥ\dΆg r+\g N'. \\9]`wd[Xr?zVF3mA#9DCj&ZHI{~oJu:&DNk<SP2uSLeDBLӝh8=!1BGS=E,UM q6.ߢ&nuR, |\>c|!lǜئOyzse6V1sRu+grg ;GHX \,~?jba/q{D7?}U O<]s?b | gt ^/l:^. B:*V 6+U2jꒈ9HFyavhqP ts<d-L{CXͪﵯ}Mkc"5sovu<#:B\;43c^ uea Xᦀ魖oG6U)-8 p O .$= cI^9:cpsǑ5V̘H&UO f4᳖q_?/ zjjbCGi 2gB!~%.eڕV;Z{`ZɃKoܷ>7R(iػgDԿP޶nbLtghҭuGA2^Jy@a~v8#xqCu%dT (y!qD{Z:;>iqejqt ~Ѡa$*X&k٢V-Ɩ5#ߤX`;7Tp7M۱ IE}$ `IJi>iAGv" N ׁ,rmKƲI&:#mk &Y{ڿ^clGHQŞjgW`Ho&X%AZ7簵O^ڜ+pu!*eYVb= Xı ZGf``'Pf1i7> u&pgҠ2Reac_h,(GD^;k"ǁ8Y)"q-#UJ7}Ѫ%\3ͺj C#n%ܞ9GO͚< +S@DX'ޚ͢R_Qg)]B[iSch5qP0zkԉ^t;ju4Nr*\6I J=>||̧noQJ y4wŎM'8Fb >/hgki{_%}va:54L0P$%|v7tޤsl bߕNa!ukt„yww.Roo{7 g2+qrD|s_F5ARv5xKױLnW.!:Ѥoы AGFbm~(Q~ !;7\o#--$V ن+\[Vp^s-}tWK}3ͮ_ _uvn(R&R5™0R)ײpX Y2rzj.V|.^D9aS\\޻:EgH@@O|鯯OKkJT/ `S2.LҮP|/*uܵf?"iO^~YoZҲLnS=2-zcѫ)J*2(ێ1dى,E&<0eet-CDxZ@v.5o">Co\s=얯Ȅ| ? EkHf={qѲ ^/Q-Zjl$ws[ F#Bn3ٺNbC?!bq P ql.;s^r6(G*}ȮfQKv}uRy{8)93[u:Xjl%6& Ss~Z:ҏ*%j\Bo߉Il47uо@Ye|`Ӥi|C%"#G{ rfÀX?9b(u,>u%02a$io ~]wg-լ9QuQS )Mp]}Lܿ1.u?zټz}x$Khhu)MPbG cA9*e] i{P7q,"3ʞL:|20D&O/|vօ~%4p5%AOrϭ4&d37xN}3édw E K]t {D\e@۱_a>% zY1S,o0{ivzI}/l[@LK }+pm[S]}zGw2h02Elf#\lV+HҐLc5aE$&a pf4 ge2&^CK?GebIZ~ 9Ң"tQ8<:6%ջTi!KLEw$\ O1O+99Z:@{b&ROe|5R-Q ~cd4hƍ8~2gk[ VQ;*+F݁v"؀]Diߢ/]h@oּQadx 6ovX޼q|_!/!zXnϖ|E׷uh3V cQE"٩Z;zW㖮#ͻ ´`GI79&>Axޑvo:rz}Nj,!0qYȽYN15>sl乄2]gO$:"7eJgp^GC4qq=r{~tLs `GR{Q=!17j*j:B镻ΐb"r!h5IIFA)#,J+]H.~▂.u.qy5[:+r2.zpVb_OMOrLl23}}J@ 1W O6-@aՍ08Lv$L=MS/|=d-dq$ݼeuu:J1*vEBѿb}UIQ[Onmæ.Ps*pydœ 4Z1^eQQmI9Ny[$ŋir`ɍ9l`8w?i%7+z <4̿gGm%*:=vQh!Jm%)+cX 4|\)XXact"U4( 9vh0$c-HWIW8ڙ vP1;ViljJ} [/U̴4ю̝>1 $ h);I8"X':|zS>+'y~'eQ%A|qh 306UnZ4Ɩh*Hѱ~Qe\ޓ>5&xHEkS_+ˆ0LYwOrHīc2y&s?k`΍qZqYtvm2!#*>%־ S؝f?DvPR|'r 4SPO^ A ۉҋOt$Yr:1tZ`f?%It^/ (;(5&Hi!$È,Ȫp:rt"{)ܑw7`xT&Ts<.Yll0ivurՌM$S=̪ɉRzМՈќX+5h\ (xPAEd޿w_ VNg^p?SL0pg{_ճ}.A>?xdj9D J2NRn1d9o;0eum,&[;*9 dČE'vtpPҧȞ\D/k>y̻!mȰ/ D|k$y5)Y7""A;ssp;L;w^~==0" \߄I /AF7')s~Y>ďl78-SXJVM~(Y ^%+b Cc-bUb[T^K )llWK"_e4=7B`-̦nX,%A f*>w)_+nIp^3&>tg$ ]:I(*[Bҡ؎w6C~< XjGA 8J- Oko#'#tde ~Ud:6R 2i D#a!K k@GqW _CҬxo~d"Wp3y0pv% 3:?+%Voȍݿ{[`ncv֯fQ.9:u](,O"CUސKp qC; :ܡ')[nHR91:-Bomn{y~}^tb˙ aq)d?p9-k^#FCn;IѭϰJh>0CeaWf ִuܐpl@a&[NQNթ Q`"l&Q| ,>4Üa'?r+]=pPIj'•g@  Z?΃LdDWՌ r5) ӂݯ8Iûݰj+b:y( dahȵ[5uZ T1Jܣ<"„XuT,^~nAJ(A1utW|-b`C:wHVO&nT#;'4 mFuipco-bP)̅W.%/l4`]rh&8of A>u!}+;Hj[K{vS[wG}(ykTJAͬ,Q!8DLW䝶7f ݹ;ۈ^ܤe H4 g@&grbyZ6|'q07RTr*H=LJpVu%grN8?&*ɀnBjJiO͚ggϗ9vb-jٍ}(ВSdթ%'W}]b^sFh2kJWIڎAv;z5wۑ.H?Zs@ԦE@^jb`{Ӛ;W=T7k+fu"I%RAzZDșsϯܽ~@Ai;A=#jȭ`P@5꼨F# ;s\~ngί$zؖ"ðVc/&vv\F Byei|7JfЕ߂!]?yMzJ<:M Qۂ#T4iTCI%;xIkXw<V^sYpSJtSD1RTT$@~aʵދkH_GX;5ڈIAqssRi=T+kg XVO^ЧRa?XkJN^H*g+5_ CW[D̳UM6y;B@R8աlY\>Vqw5d Qw-F\9!J-3)F }dV2J/A}hS|8^sOqo{xRRܤgJ,=L8c^2 =oP9Ipԓ7}Z!9{B^K8SD}d$(aO ï\|HEdq ;`Wm&@NZ)>&͎ϣ͢bY}.-G7D^`K0|yY3卋ױʴVfË."5qbSMx'xSDj`\=*+e8nw8lJB{nB g 1k"Vw1O-bS*ە0P̑zSɜA\%KG)kW zQRHmk]Q\3/McEʫGf-JdfjM/S LFLCU>4o&H=jUԬwTjz"JW?Drϯ[s #$u9QL!T A%?)bo@XcXV;wSw -)XM{D{_3 T+mJW>(~S%Qzuz`&]Õ8 $Iҟ5pAOCd{khx9ΐ]ZN|D_/m=M@Ѕ%OZn \џB^9XmyR2W::@y::.98m=4;Jm50t9ph1} IkS07)#-,˜tҰy[ :I Jl"p돩?Cac1䠼LLYiI6zYQt[T.-;2=v=QKzzD, =eM`C39kYaG!d5H*>9S*)ӜIsC#YU'4뺦0Y lJdJ~7z4%b6NPo;n6yeHA{ vZ OH%&YB-6 ZJL:Q,c6yɓKCOZl'fQy<5 ?Wy9į%::WwcG$dIհ™ju_ 4!-JD #r >/ť&& PRjd2nX*&,eј}A *UX"Ⱦh^uEFR❭brED@yxDl?HolLb9CksghN[GLR)P :*`GEpY&_Y &] [:wZTf(~#'<9>gnܖw`@v,1.DNwg%lt˜M%Ei.up1kMeQ;"{2uj,mb@ц>@~Ei~=m`GFswI 0f#/+E8 N~?y (Yk[S02I$4敠l.e{&2F׎&0Ҩ{yd{k v㕇TXT;ån8`]\nS.0nCr~jr狒$Љ~!oR6gZ̒p&I`D@/pE,J~=@U~{ "{C%8A$FB!Mȍ=PBPO{f^YO6,6;ÒXGX|RT/P \W"U-tBJFT*Exr/iroBPCbOW*u,p ÊF >j0V68;!؉h`% H["P(5zM>"YI 'kɂ%6L1(GT S)1zY5lOGcR0.]`pцcc&am_ae͎ ZᙅML\+%xp+ qnG GP`S}WP"eCo[l 0wIrUO"¢;y6K/!6&.o#ʄI9S^9=o܋n["u)5Sǥqa J!V ҃E2@\MhANj|!ϒٿ;a$ѮǺϼuexy^;Nscй "j#lɘaSo~8~ssv}Ïd9U Z))U|I:_]W^bPwK6LAq(*9gy8؆V*8[xP}Fי@Me9qpn;!0ւqt_ωt1KA>k}|X|'^/~#.O'># pbW)6ќfjtA*RԬ%"4E5*h'Nka65EC燝!7 HCL1Uxxt,uTېZ,8TcK |* x6{ ~{?:6/[-g \U#4i\ly/37ks~KHL^ hNPppEYBIMʹ2=6>!tx.'z4l Ɯ@a!PӒ0f7,aUWks)PWgwDv|Jt,/ u7Q;%)PZA~<}hd~vFGtx.TnA{F]|A&󦸧yXBiP<ΤWgM}KרZ?&n8ʆ:Jc3UEG!{` :5KTMru+R0ux<6v+wїgY' }EfAeO6oǼ)ﱲbb*#4u$G@SYSx`V."*!c{Oà?_L8uEIlzҸvnapHuF rt6rM=.[ tŹ3QǑk?HѰbĈByGL@g቟ ./,Tuݔ Tt0,-^]$kU3. xhTLUcW3[uC|w4N)Y?_L:tv۞:,|I+Nڳe,ΐ awr tr ~Y'G.]݆{6%tG8IR삻_-|[tQ IRM!٫8=2^5.3PΌ9GPkDwIc-5N*Kl'},LFP%KfU=M(ϵ n*p:ɄLg*HsТз z{ϛPnk]PvNtRus534/$S^8o::8(.!zgG~6@nt7q/9hiRk3 _iu=.͐ Co kL)?HwN;:]b;h#ߔ5U'5%#y 0 ywڮ8rUϹ/M*$3}Gy:]'>^,qސf[.~Y?^˨=t7hqoZH]YAr=q6rځP20{.Эx,51aUؔ;8\5T@ F#D7:tO(n740Ucg)"AyI) FCd5z#DR[  $ۿ}McAP?sɛ s;Tv}^(F dm. Š]w n e}V^|k׵g}͋p&{OG"?6 J4Pwe#JbsHqIhRmW[g 8krior$xB ݚ^%\ NM!tMuœU4hO[ͤmtAIsGMʭSAŨqSJǠ 9>s*$:TKNJf51ƪ i~U5ekN߫|FI}ٗVMO-- Pl<_Ǣ[nꀤ^!41F|Scז^Q%k2皘%#ڠnj{W 9e|p=@*|%ZT&ȱcͯVDݗҋ-/OvЬFBّ{. cuO%썻*cWmV23;i!L0 @57_7'?QC+C3DIBj(HYJО1+@#;eG Y8/w7@R 'enBJu=xY}3&ȣv?8z/S?XJJ*F[W*J,yd]XKջY)m1MB<@iQz$J)>-Ms tT5Zx[][~]>qat ݼgspŋ?lWhK$ Ov2rm REu93MBI \jHYil8@!t[\|M|ͼrOlpZIXR뱝 FWptl}i@6|PH $]G.wLZGY %L}W̶b5ަr;肩 Rm3LvUT' l TP $=W|Pe)PbC3iw=2(u|+ՉB{$"i':rrocYB0r)1S\mםڷWຊ wj2E);RF::?CWZJhemVJә_;_/#AX ŝXXNpr5!H{-0{yJaMKÛK ʣC܅sV6(?4 !kysYg6q}.aK3pJv`X-7 OeN$y*9Ƿ6/kIb}P2)=N]6=O!vt:rEdy-h @y[Mt`a@꟭ 7-`kI^ObI'dfQʠW}SՋ3Y PߗZs#@\Te\G,K/Ju,qRܢK{VpZޞ.ˀ 8mK? +T~HMPIe=1bKQѻM;0mF2ՆwO$a sxv\>pn־lXm b"+:GRMǰs@T(qDQlU#㐩,,2z!ӘDGTr"a kjOG#"95GZNu(z1͘P#̡>JYP  vz(لz"< hc޵q,faWjqg >e?32-zSKPn>݈ IjY-,Timŏ4ھ|q[Y6("L/ܦJ  ϶bj8)êX1aZ~&Jܤ'ϞrL?N8yndx<$?j9|@^܅lisLI\kկ&1aSPx-BT| RL]ݱ e D.C]tNɧTS;4oQZ-qb"S2H*u=Zٗ)o>OFcNn[  UR^[=kkb)p5Xu{Abzm&ҶR0⎀.K7JIXqy2NSbVTK-W]dbJ$d4yk#@ctB.Yk\vl5 O דA!j6N-|4-(}KS4 8LZ;d՛;Oc`j[oH:5zvKX+mAfG `yB02d gմh>CRF\!0P ~2}?_2]étt{ezK䐯b`\ gMJCyF5?/j>")M޹M miitLՐ@A#ˆ[0n-Me$vdhbnp} α*{V{,}Y8̭/W@'"kc y? x5oGn!dloŒckoKx_/C}33!+:4ۀc w"nU@\J1[!V?X?q`X)&[,@smǹ͝pwQIZKf=no9Z7 oUF6m͒L`W}{e0vWB$=6m FgٛdcF';2lm1Jd(ڹ%@h*Wx4BIU6! Z̋TBZM%h'(Ϥ֤l!ܳ 9,ovxqJ 3қLc'rTeӱA}8v/CUfQ^90?2LR7.GxDpD|nT 7qng 8 `%;*im59զ veX53g 0Ae쭰Q*:5;.[}CzBcm8]Ђ NӁR"%)5 I5gmМ7Lqf2Y%딉U@}wn+dyioQ=ND.HvdR88RuIWk"["K-Mw[Cr*곟_XA #Ts~ɺ`}jS=m*";JO7YFƲt!<R;*"U[+c'LA{]—v@ DaU'2%L/K'Ookc?4m`pKw^?-lN"EU~3EmeƓ^>L™cSZ"kqJh(b5 B"*ݕ;Ѩ8ә?¡+haĘ)^T䝶H1HtIm~edYnp)o"oO.Rb[7C:rIUOe"{xob8A+T έڰFG&R6߼+|.01c )%m9X3 K-d?x?&=L+Z^L1uFw{)5qEM!Mb-r4ZX>aW=O MZ* F$ A6еze(ߤ]'۷y󀥫a I*sQTys4#?>AQpzr9_-J)TvqFh=|w9).M'󚌴 R씠XRhFc-bIKښ"ҿ&lغI#ȣV^w0w^}:]=Ew(Q# 4B[;I+cJ>(ͮ =X AuFc9.Nɀጱ^"pz]ft.1W@Ӗ`AyŊ]9$@mnB/zglA [5$^fW qݻ$x1{ĵ*mV%}QnQG :T(@4^(OKPlڑsvT$>Ham\QbLVS9{(ލpm!V R(נh¾]}wȵlI푛3?Lo&^ *00L[*ݠ!0״MY|a:$vS*֞PznCM𯋜Hg!5H)!OH~gOzDnXv)>UmJ=8InA®}\Mw/[xul; o,ywQX V{cRB􃩌[UU~EŃ5 ^I0 ^ &4ۈQ=ϙgXR&&N:he~Êtiu?dA{OdU=WL HalT2SÍpWߨA 7̎yŐx< ĂN)ٷ;R]v]iVD8~JG-: cO> 'Ml."-;wYmal}b= z9l'`Z" x2[zok@EeLKq$QMQ_d;fC.0}lR1:ŜHXu6ToFXH+~]PNkh.Ysӵby~ ;PY(@iU$XQ_7-.#>g5^kF]lzl{`yWZy&=2AUTfD7]Gjx}/pm?j@ȕ HK t=c^cZ]2btkƲy`Iti̍TzeJZ0𫩞hyQ( PDۚV++Ӣ2M)0I,0|Y8b2BF$<6/X~}E[C*n=,IpSH/@ܗX* YH@cINrW{}td!Z$b-+\bO?",$wҟ3# 1vnRM息:$"^T1@RiګYeZ݋^6FV&J 7pyzDI}0uoíL%L)b>fNkGxg m kF ;񧲃eo<_Dї{. XtRC;}lL'SUk1]beߺg NJvoB:i:@qs*=FIi~łC﹜ a,FX| wygᔃ ,((S1! ߉wS@`?Ƴws i}b-OGCF`bp9ʠC[aiȳ؅;o7MrwwR;;]~FtVCtƉ;9Elf[ђ aCZ6ajH'F^uІ;KM͓.؉/j Cd=e@EW'7|_r50 ]2\~djso6NޣWOs ?hCt=`S9{ӸƖg}"j~ue/Jt[44슱\Γsҟ.z5nil VX%VFsYa-7͊"0=-54,txMb /ٴ=)ilAG6J"3a^vƛ4j&UI`]uN]uԸ!q@Jٖ~Y [ùc4| SS+4!47=.nF'IAׄjJyofS=׉TJ*U%T<>H~]P:y(MaS<\yyÌ ZEjK7kOS8 Z9E_ɬP )]> Z:<`ѲXWwi|Va^xʓW/U&+oMUl+e{wpp+r598G&l04.Qaз C4[jA(*8=M~f-xz#܈Hc  afKSbU%oi})I1b#֨΋d9ʻvZ87!kbO²ڵoCPH)նсas8DuMirun#tܒP? m5#䤄baO?>\¡ŸRv & ᭓@E;8vS-~ "co諎ud14`:hMZg^%ُLwnfn=Pɜa ^\7 Md;ٳly)nLk6`>NÒ i}~NZvnɓib8 ,02!S$X~M-uq8qMEUqTkޛgP<`U+^&Cp9.M]'S2&%f? փKG})ɽfɶ8N\žR*lXвX@%W-ۯlU~|=$CX'g[FmFvnXNĔw??Bު@\Xdv*e ?yj^A!Y`\tgWA=4v8go¶yl;M*d"!%B/p#R X'P!Fy \q\OLm)tMO'fA d@3noatLbA_jD;Y5;Xg]LATN칛#M3ABkĝ$uY+cPMb#1R+hKS/Y^ҕf Cb |e0%;pHg'M)ڿ\8,D_X҅[׍v\F_ Zu"ƃFp tvoI;̞JO(8̉&ɷNc IOk` 3np3s5Z Gs"7jY9\ JCGvխKlzUjLQiD3>!ـAު4rzS }nOQn99k*&fىO\4Xd3?}Z4~X4N߫"6ncAe0 w}*7 ȏwE;ۀf)yț9j?oB1]h>+1(*"Wi.ZY&n巎$X"i+HOړ!lB8mIy-^ u*Crunq+`V**gnRIf$ t|I^ƠI/ҤD Ypw@QV)Ӣ06ޓưk~ARMH7ݤQzۮof) * Un=\ٙq@%Lkxb13Wh r+e1@ZcVE}St|-'B˛9LI]@VmhFnRϨSqUV*r,Qڒc%G}sx} WI[)ӴľnC-b۶GTl~\\.'tr uD&r_Q̃gm[2@nu .=d$yoߎRJ 4BWfh%*:Wz*O3/ xJx'uYsP; kL0g-hn`\)"\&K2ڐxD×z9iho__aRBp!qM;S2c((%QItnD {ɇ)L&4>п$g 9$Z o^H_IG(98\MjK$<ȝLآ@ yYooH;ii_CɓѢ"9zZ<,7 ln#@$wz D1L7;^Je=7mi%CE&T" @a0CI Q;"WH~)gOugr0ڿ?rJggIi-1|C@X5=%x%QX .1>7K"r?+o<'lbVhsĹ2B<$UYQ\!@2:˗-A,W>z\#g+ HVx8 :JX6@*ei1.oڜ=eԱ?*շ *)6@t iE 7 uh xal/m6i _PgbEaIq 26F}[`SZa#/^"^C$#[Yq2GH?u{$?HUjFۛS )nKTINNZ"Q׍vlwQ)XsәZ&b1'6]p.HvKeCR[e~_vmqWx'j1UO<"Mqĵ-_nB''ƈkb`QPg^]8K Ι|i]gþV;';k މ)/1f,~`G?Olq\vzQZQ&=ѭag4]VθQhbhKN~i5TʤeLXB-ɉ| Ey[ CHxE+K>w$GI%5˾wZU\0 ngFF.d^NF5O9Xտ.r6DjPx,\JFR\r+Y$AUdS5pn6(״~E&PF'I1F4bלZ@L8 Բ+ze&BE>< YJEG^G}]ki1ZDVQ҂i سsgխDB=Iۡ~ڲ:-LSUI[Y"ܵM4#_A+Z:6B$ns6iӝp$YY'CO ƾDia[ӭw.]Z1K ZEK*L,V0Y9ɠuUg.yjI=?:tR[ )k$wP94־KB-fե:s^}*akm2FmO;ySUd&3"ZA]:"JO\  m=á+0 V4q..lwгFomV_ZNg(^Q_Bqf X'n7aԒCjUEO~8Q~6wyZtd[R *}3 |zĎhzHq>mz]).אMj${t+ P*% D0I8J2AhfL`VSṣE -\nRBTVETzeXkކݜc5dXI!I7Ce]PB^TrERd 0n}@L[ZUfe?Tm+=Rv8L9H|(կxv>c%M*X%njZ9ad45z=y+lg'X9k4 Lx^)dQHhM{׫%^ZC=?^[(LkMPIKRO%r%'@Vm[L]0-Jf35hVŒ"ږՅ@fC-ݑ$dAۼT@.5^/{<~QpJڏTxL^`4zBhG"k; Eg7 /au}/0\]I gk#\4g4EKx}#V ʴ6aCz%K0i1:h!>F1JQס$!k.% Q~|B$33@%Ye08. id9|SLtɡEUX6h-곐9qyyiY'OLO}aŹfCb_]a $+b] *މd xSf]RkV{ T#ξIvN^Џ)2G=o}JȻM L`0X&&Joٸ"p(_O?Bz=ZRPфݡWAٌ_ ,1[pu*5&[OOP*΀`$h'9v\ j5 9? ﴐ$ Hq+FeK=tx,PdG*?g~uY˴l:)l ؙ /*7w ˹$φ)Zj3f?0ɼ]ʐ,(zv}+B/,wLe,cF%qt?_XyRw#Xh1o#JSINlwoB =jsQx_,3ԍGXKKYtTԝ_k>'Pe 3X*0u0kG֥Ҕ+.62p'fN~ T8YjT̴fe[Ǝ]D>qh7s]:Bᐅ~1.-`L)BSDE @ư|,yk5>31+m2ʺ*h6Nqۍɺɂ (h~ 7.$JUWN?Lcmr"ޕN -q[5腻u@~{W>,+Q:,a#L&,Q+1ay [$,冁}yOA ~ dqʑ>n]ԝVL,|]B1ɠ g.-#QͬäSR YeaOڷ:PCWcbQ ؎4Wv=)WxhD,S:~+4XtU CG;>*pHon.&C s\5!'AG笖2R4To|;ֲ:Ҭ^R'W6MIߣI8*{\ԃ I ~研h6+He-Xop?#)f*̐_..@#i}> .17g` Qtdb ^m4`VV, >"Zc~δ{hi;2)9+K+|Q`)#At#Yq* B*,atƏ4A)ᰌ2+(Z=;$g5ݧ"'6&0ފT|fƮyyN|刹TfT~YT*֡U[Zo;dS46[,'הt(ə0eg/z9Q:jA]Adoq h99^²żHlu[ou ]VN'C(!2@+'X2,L.'܈VLSkHQ)S] JQyN޿ӡςʨt*" oР씇FdNf$V2wfpsM=9Zqp/ⶪ3X'y;^ 9~Of%Rˏ!&vI B9  &$3bwVg٧jF(U7+:ڱ^4b'nbjڭ|l$@x'Y =OnD/ItX:N ҔAQ"ٻ/ux*Dž;'$j%tJ*r{ZDPG7OvD~SU\ N/խk B:hx}*:'Fp-Hb6خRl%꡻2zu/j2'*w X1KgzU6cU7,R JbɮbwJ7>Hn ?-',Q*tf=Ee3H/>IeU";e=l3\5_5?ws e8VmoWEc%Eg{vDQ`zwa ?C]$jO䊌.C "j$Dý=<;e]]]((YT%_&P'G7& ?G ?(;@+ EҌi:GHD+N]G4@LL{Znhc2tP` 9I^Sco6,6 U@eJErZ;b.i qPq-kwZ0R-X(QY$57؏d)W&=ѦlI-nUQjE⢬F$fу! /ӻ+{-y |1[ܒM+6xKɣIԭL+sjӼ0Hh&ls-jo%hOXxxYz^S$}ɀJ8NG`U_q [HhϮրA-\2WR/(wvo醚mcd6mlCZo96DՌ&oOp&h50 0 yS` f~N>)M>[`/E%<3Ok A==\ O4F9M-B*kkI$ NOt'F}`R&'@a=$D3Jm}Qժ6X,48=Lp"x\imb/;i` l}Ш̲bkz{7 U5tK}V~ӄu򽽙EHcbLY;FSJJUbDǜ݁/3LWNWh6ꇀ ܃a\נ{y[ֈr6+W;Q8xS0[R遢CʹkEJ7pح _D)aGQ_ޮꖲ*#ыOϋ2EʋR#aŗ3n]Vf C^;2>:8O~NXի' fu eNY!$T/e7wX=jZVHV,yH_d(_uJj"ոX]/$Z);X 9B[뻇:GYJ A[f QiѮӸnNڈD`FC_yK]Lue:KJ!}6Zce91  .CZ}hm*GvQcm$}V^αҊͲn/|KWR:/y>ZKڧHqcNc)"$j.Sl@/&R492BE%*Gu2RLkXBcؠ6afcT-{Z֍ bqg}gtφEQ)vbx";S!"Z;ΌA_v0+9(&0PkT/8o璋MԜxPD!]on 5r^a̪茕ݢ^ՇVmMD?%-4ſ ؅L-D[ϧ /y-$Oԋ$w,Z3M:l_i;eHl1՞5wR͹;5Qp=|;EfQY>)ڊ$*9UlDYx@cxOK| BxpU~(8%'[P.r9d{֌Hfwdz[Вr'nuBi-v41Q{>0Tp n9ۼj4(!/X 6Z+ϕ9;ʼ}?'ƴjTΞ)1:u~&+F+~+ؾx?bT+/J0E`x<8/soOT  싲LBFd¢ǣlSH֯ -; ,W V?HQSlhlpMAD |DSp(R$$+73&#H+>:\LXO^9R(bDݒfVy #ڳa1B|VV6,e}GgGۓ*D2_oּw鰥sy=FˎJ撂EI*[(qXTѷ5e"2:~ 5 s[ RܮdC/$uώyl-3UªZ'uwVڼ qw׽$c$`I-Mgxk5J.BX̼}!-g ڤ&}*9d֪, Ю`rsw`1d"A3,/^Tl޳E-P3i붡d\ FDgآoU"Ee-fYH#R2ާX kP( gq'O١W!kțcȋtn/'O]Ēݘz4[SK:ۡhtup,lklʖ^d8a鴫M36LzT@F.buuLcJBȒǙ(q.,C͠ksKq{cfeIqi_jtWj;*SnQc#FNT|$[bSc&ҠquE%GOuXd:ji)ˤ}pbR7,6i@ ۛ%5e6Cs@D0ke;x?fPF2<ePcZa] ڜܲbr3眛2{ߏ "jc0#3 NЕس S|W%5#jb˵&*ȏ7mS7Ju#cȵ ]"ldϐߞCѮ٧UQg[wkrس2bF2W`=;/U}xpՙvF&lH̪ n\v]+Mlϵ1yUGSi+`$2B$?=JayF9Wbb~@JsnO wZv!m$/[ "DVDžw9ܓ/IMݪe2vw]aݴ谣4q+0Ym8&B}}t׀ͮ{#^.L`_?][\=|(E(33Uӷm6n u0lcY|խŢU[Q\M*RpCVtb347-!:WC(~>/Aڊ߲[HaRO!?"i^/@QXrg<]z;i֏iC7>qm>oPEV`VjC#$<|!TUZF=JQnn*;k)Jw>YcIXU:TNB}!B -:Zby?lȁU1B%)1k\iE-⌖^"43wO ƬڈNrƘX[1*ϓ1(J$Yk9\YV>4}# v[$"4U&K^ QU{)/Vk2l W]sotIQK'^][U8i,Pj}~QN 2?]2\U?voFabZ>tG,Bҿ]t wC^!ռz.OܞLMU(N bk> ~Ֆ Lk&+JO7񳕸.mDeS@V̴zp^O%s-9 {WB2B;).ܫ=Joy:WBa~؍:J-MnB3<{g0ZzrQ!lcoSN-2A(VlNCZjgǵ&\3925h*++j!*K<a9lx2yb}Fu-&IVI&ě̇գ ji;a1RFAn/VM}UG '0s\yESP! 4.`% #Jg.04d!˕hQ89  Kt^ఌV|rWr`GrmJ5!ėK~hYleY5al⨪GInGM%R'Mj67x_럲cP )!fi`8]?7LXϛi¶'FI 钷AM}b h ®Grfȁ͙Tc&~w h-Ι=\ՔiBGB13BRE+vIAj~S㦾Ewua .Xl2RhPdʹ]87ApTFADmqY%+d5"T9]|0AXO0PՈeمJ#PffA! 1 z;Ōp 2x.6ēeOxbpɡBSԅBYx}V,q48hk03R~{1Kz-ԓʕmҹ0`Z/z"L rQ_iP9cWh>AjL?Ԥ<˺KbYYZ+Gs8"UA/<XN&xF>AH-Dq O>^וYWڊcњ+cBݹ#.r9&aqR i5Z޲qR{}[p[ ld.ߧz(؁ TydؖWX%>{:`*2OLQDCsꄨ3gmsN(ePNlX5=?'K9䬑OpUu'^ntڝIVe3nTI`SF:*(ȱ^hBv@&{a-˭0bph^̧oQ0mVX7? 0J!*`8P:8_S®&wdo%YCŅtUTt{b:p.G~VlTHm.άUBk{Bƺg]Ʀ[zJ"rSiq>"d9 ƞ_ a2"%6p1$dHEk;bkc "G >Ou^=ߘ^O.Z a=+?ۉ@mL+iYȠwCcTԺʓmlT%$.&S?r9dM ֖qBK1oKw5bիc 5湒J(g ؈XO32e9<()6p9!gS.ݳ} 53l>0ϯc?20@b3N9G R֍ա#Ra+BƐ@ ;lMmW./UQE'ټL9m8XRr~ف-aFsȓ3 /KA9396P<ajj9ޢ l!H839ŌnI,g:o?+^*2"֑*N*Ay7&ԇa>|m~ a~7V} 83D J̝(eߊ '5/Gz~@%JJ\lq piCE5"p@"uv`?/vYx,C,)`T(|{B@ik+)+WckH&>ƙWhI$i/x—΍;NmpY?3FV'\)~?!ݦ}dW;{h܏}͘7 QެJ#T3=- )'.o7a$ޝIQ'{I3Жh,JR!Z E>"vOS! +@ Lo2 GR[/\I\Ɨ ? m hWMv{66Ri,c_fQPY8s}z4hXt 0{\"@lU/tO^-284q>U"IE}+Y4@,Ze@a!zv!F0-0،\oE[3p^Vo4[jD5VC0a5٣[Mr^##PU2&Z-N/Lb.%B']#y|rMYȜ* (q1XdsfmgmnXmev:Խ$!ԍjOi|q]`X@FOS>x1y-dK,S&KZD4iӃ?m9c1;J?@흜L8R*()f:r;pciF޼ a{;`U?Gr艮0PASwf.&nC5Μ%I9è(ga8I\m`%-6nW/jxU4vn- $&9)<qIǔcBw=UZy!@\;9 ,J?d5Ө"[+yC!L{.UccXqUCrFzVapZ3tD%)D6?8HgAQkMZ2Y*<ɕsi{rʎtcД݌UQE6j| CCy/j5"W؃@iED`a\4%zDqBd"i؎G< #RZ|CĊĵIT;4O)9;@e$'dvӭ7NgbHGFQ}oiȻM z(^ *(]7b#jVB>e} P'"NԀ-TxNmڶBYPJYD3:OT\ qh|nsݬ-mAu:Yʷ/&~k֪Q=cqpU-flbΟRf{zVVTxT傏#hǦKWEo0pT̙_n`Szq h-dgc/9Bq׼m&&;F$CSg&"G>;\%8'0{FEv<2kϷ0AoCi,G{jMݰo~&6Uf$Ԏ@5(aO=TE/e;cTY%e].xLg|Y4v\«*KZ4zH4,(˥:Jej YAkTQqzC'- bu2j'T9p8>V* ږz$`Z7^/7{`Pk`lc i y82jbQ_S\$vloܺzŬr?CyUx LK\1MgIOZc,8?a͟5Yt;#XNDKsvʩso7 /zsN`'!$K"С/T2ެz-5:#V`|E2E%@kQexia/m PI?p  X>-yTl>;FhJkZ[TO $ ].YuMmzv8vт: >zژ}[q]~]f1~x }PFIvYmŜAZ&ecj.MϺ!=W7E|,k;kWpn1̷UY ͽ8A[<^Ή Ji<,[NnI+ADX)wF1m1uѷW2=(5׷ u%k$ ǖ7LɳV݌j {3_% ` ;3;$ e*~𮥲? z]pBTyh1hPXA3>w{qGGBBh+3o$,amGI91"NZQ[~3 mqU܂`H:Ë́`R*~hR"/=y(.5@^?P#A32ZG.2N}\CpML^hMv9POS5/\v*V옘fCNY_=%8_0-bߝ"e-bNlTPό81L2VlױRCSR]J 4ŕv[Q;. 3|&ަ1뀮G)]9 &kG^+ |Ұ3ko]=>oeh1D<|BO_чtR#ziαיR^\pCIb~4kD{}N ?D"Y\e[D(&,ڢ^~` 砓 Q|n'O@"\i L<3\>$iKW%+[Z#\A:,-N=EoE~NtTa/WwYQl2-ܻxXH_l:05 >=-3j1p%5qgLKmPŦ(6ZbmM"}Kƺ$ξe=KULZTsI?g %*hd3-ƛ(T+%KFAEzD4(*T#hE?ni"^Zi3*a*$Am)pSLtH~KnƯ@QG$nw)q`DL+F  O`\BL/ C  b_ 4V,.ݹޗUB#W PϧOfG7pb*sͼ{+:@BnzQ/dVYZZ79َKhDy# Գf}' T<}|ޔ"9:Cݕo7;SS-njtw85] 0f`mNpT>sRѽ|x'/g"Ќ֫w9QY[>"7P6߉1i mDay BUAEv|sTY("?K%:R%  7U7ݢdXV1~j-gt7I ( uu9*7㢇T3o:vCN'}#dSp{ԓ2m7CЪl L!M(G ɤp;m A3y]RbfKX؃h:Bɧ-~~k[3x_ixw,3Y喷w=mW2Mj*g8GPӚTVF?zɱמȩs\E2ZɗsXXђD/4 1zZudt\~g29O9ndSR0@om˖!3[d~$}b4>Wmw_d١_;fգzOCvTZ([Q0݊XXd86rJYkwR@g}Tp|`V48fAum9KZH{ُk ky:w?\1Sf{Wd̑&u}֬1Śȍ N 8Ayܢ*`ԆqŭbI_1j{gQAS/9O/mvUSAK{2f0ς8\P_By"`4cl_$@d?AXzCLtMRj9 p@Lib',nmomvYnBjnl#o1Eqg#OQq?xik*vvlQ:wɮ'jGaP$R[%m;GGYd[Ə 3`'s'\ox@H-'1cD .+A1!Ӡ'3?YL#I`ÙN!(x87d,'ׂ/_dr-F{ Xyy$zP $凶G®W@@6P4;_O֡a ʔӿef)4kS"F#$ѥB2i :_|\ *ę˒D(E+TPƆU֝9@5z@.mP5"$sh7BD^R35/ !]_#x~ Z0S_.87OycyVOB|~r7qq%ZfABuϞonz!@)^ns@K?so',]d v (2W~-ja@h^ nd#DŽ*)v韱j Ez97G|ZM8KA d.ŒFm5by'wwiV޸,t=:S}9 /GchNCRF)mC>:zaüRF|8妘+:-BurɊYzQz! F0I)`I7 ~NkFI ˆe K ӷmGO/./cL O8őⰓZ7gȱٽy^31 "=P冯eYamíi]WrQx@kWF}:]bEفpG9ʃߨW5c1cb"!'UO?b; ; 4G#e~VMĒTQ`/oCl9(A%g _IkkSzQ1n {:[Ǎ 4TRlkJ X7]!*z i>F0,%؅!F@ C^E,kO3ѪRcbv̟h ou; kb4>Y Ntv-6$>Mm]k2⬱\$Lp6o"_(.8-4K~lm!(︈hz*t 鹸ˑ5,&ZjJ-r>2}^=8wéf'읏SIb Q*hL-E>j1̭&W\JmZTpʀw&'YaθbsP s-P$B#p(.vc !km)*(>\t5w)QnBUV_7vblۣré'3Lwp K#"P7'-.ViT!9#݂Cyj5BK;6UyE$xm%Ȗ_j~SIxY؈wm'εM4R Px%MT7IuOS(WFP4k320ctV1"Eiߖ b1}zB}xuNi=qmj1o ) l-Gh}PN#̄|Y/+W"&˿RxaV;vXJGm*R⸘.FI 4342 sX2mo܊p[d j)l׼Y:5 h) 6&az+7z ÔmGh+%bƚBAtq.4fO)/8bLA[r9l 4 ؉ ?IgkXU.@6mz7udD;z!İ'֔N@ Gv NBEKn$z`pcͤנrpe|MQĺKIPBvvŔ;8~u@Gi섌o%` kc·brV nsYq*'d ]q¦2n5zRI;Ŷ ˍXr,|y` n(xd x們C%Msg9(y[p5g&3 uϾ@~Kl&8p?*JLˁO oi'"Dc`(!e'o: GiŰ|I]AHb5t&:#Ly/ؐZ!;HE)ӕ'5cA.>i6*8P rT6,RBza51s\ڠh?H* ^CFpֲVNH#t{жG0mhk4LrvYx=ďWq,#(I{켓;( bJFdNVyW[|ބz:)2ǂ L5 鑲a>l f'KGk@u{'bMkHUNLB5w>j XvVAaݴȐg"qE| 6Hs˛u20sY%ǣ 0M;<ٞZb:OᘸT c/~El;'Yp)g2\j/##m#UXѭ7C"#R<xkNFRES1e`UBLy$r&;dd"tmFɌ':7;-k_nmPR/o-=?vF,fR.ѰQւGqЖ-H(cl#VW=dᄴ`H8C}{snL NsuDYlh DfGG7wiS>F8 y0- 3,ZܣY\r$fYu3%ѷ9s}\YK7c"ÄF[DPM])LSTk,1TCThXg NsdFMQ4K2=2tk9,kdqqS*^}.t) B~HdlCc⵽~}T^?Z&ۣcϨ4`#psP-̠=#}!p8 2%[bYآA+5M$Q DNΤ"qݻU?PTue1=yMQ] Z f[jI̡~6] J61AK[=R$C*-y>d?{}jҍv#Vׇ˂4T\*-4Dw" si jE*S#8Gh[kUl~".=T+Ə`M8%F`TL)1^-sD6%e ymmȃ@E]]%n8A'uor2g|61 WH\ vg#rF 'tHUҥ$54-nxja):("!Ϛ!:_ uK;iUsx'&$' 8#\1r8$onHպuA]cвlNt My)+øO˫ sB7@mK*cV2 Ep`Qlb2$M/tG#|ZĜ??|K5=5O#ZL-Y>N^*{Dg&]Q.գxih&)K8nHbjtRĒdaɬwKx+G*PD10. ?%Yt(h d"t>!\{ ]AL-:*}B>l/qx[$1W6+ hrPj)Y߿٤7}5_hl҇4/ fA/]u J@DW  tq I6GD͙M\]:WlE`E͆PMyqNVzE=RG_6MJ2kQ@)"06\0-Uf2X֛,GDvsz#ҀM }GƋ0%wkEƹJ)q 7Lpb{jn̍ <0!3X_rRb*{HJdCN?d PQØ@1@k*rFGY]`'b|5z{^8U Np#T|dXb-$N9^4ܬX(rQ DZ:>dm\ĿYj@ywW <_w5[1dxs5КWzMZ!dʎOh-!` -Tq[` Zgd%<&$u tmɆ{BGtP( w4I)b<;>ԳY>}s)[)x ,{yVݨaz栫 UJƝrnu 5ݤ_RD.!2 P.1B`MU {L'ԁEc!nwbI,~M򃃮NMS55@8DߒNǫͱ>纋 gm(H\ SߙSKV\۟iI`PYwŶ4KdJdnu1/d)@A KHK"DRxAYgb=zX TpinS[a$Nv0l[qu+QԵGgO!6cݼ|b/ `e Z%d5GK1|>B Y'ERE{f> 5̪'.Aq*ld$] }jrѶ/&j $h48, Ietkt;;0Z*5QD-lNcָg~גw۱ɦ4Dx)+j܇tj!27u"ྮ &σYn?G{?%JܛN-) 狵vRbBxUIEѤXwWwU}a b j327.i50!x|q VX*Ox*>~u)NPè j&ncC5SFr/I|YP&vdžnOM@.NطW,vmZxM`QN "p_9}\!;1%IYa"NlꖀÉw==`GR77 |fbaك|SǨ_VLs^7!tx]"o1帙F+K 'Yb}OAH$u wVGPɽF>GM6,;XW}eJUϟ"+lTByqzas M0A"7!*#QX?i  \ЦiCx?/AWyt6hV5n2Fla"H*-ƙ$@Ks$i(qTl7]q}+Azw.^Fe(;N?b [Xܘ4G#i{r6k.e\X>>$;9>>YQ3$e;ƅjuH!"i|)A=YfcylF $~F߫^'v+X&ڇ]CUVT73`|RnWSH0/h?W(kh6"蘜941Qd)_)Պ߇],a,ա'x9?6.Xj7 9m,/)Coك/c*Bh]PYArw`ʳ^!D} 2:yD1e7*d˒N^OYy޾s Ws9k)`{ ;M>jE-$M-M1z]QܯDlNPw5ȖqЪcݏMn,#**ϐm&(5ҠF^|.-0qy :$ `d/]ʧ: :}KEm/5i ZPs殮ţ# z;2Ƣ#ӵWCV7Gsֶ%b{3&yb edmՏ9u>%&3ir&0 N3sIs?v:Yu<zdʄhmZ;~r'q%y, \y;ٜ[V vZZp!YvVfPDgۘJâJǓ;N~1X)H~U/XԤY|jްWLGڛAo=(Է]ItJc6Vx:<`,SK;Q4o`d ERx4*\ % >JVB^"ǸR-fr|bbqB m?ՒF>QkRNK'@}޿8%k&,V0~.^.dXmj乲QzpF|ʿaPh5Ai]֢m\o VCԑM0sBme8uK.A[՟n/M'j/k' DWg@"#;%/Az9?8{ҧ&bGҔ䙱>qF/v!ifX8,gI:ǔ,*>->Wj.R\rƆt-{l$撽d3VO{8vT/8,: ZKel3ڀU@[诬Osfm\1${]j{quI`5xPD^0Yҁ(Q0?8]hDBޫ_B&9ND}nG>Uy]j|ps=9 Cu@ǤXͯ"n>[}^ڭ+6ͫI S)d3Q7q/R 㤼{c g&MU>!wXHL79eu}fyL?OkM9]oCXtp5P7!, [T!gQpI ,w~|ڹ%<<\{#};UZZL \qFEU8ᡐd412m 6u<`iJRl.YOCBU!Fvam#i(]@`1.VM`}^IScV:=u6܀Ge&{j$cJO(! k xn̳vugN k-!m̅MgD!5PW'w092sO3DTA 抜EqYcܣG3&\LLd f/B#oNkՍ"c2ZRo'JFQ})Bik7ʛ.q>iao]¡8Zw]k8?)jZOsBD0U(* `IUۢLԜQ]3:dua=*n<45ja{֤Mwïĸ !6Uwp[<;z P^ʣM{m*2v#M܄+]G~4"XD ř_YO4wf1,*g= Nrq=+8`=&Q9 )'MʆGmi Y_ i9vRM5;IkAm6$١E&mAV-t=m1} ԯ][cתP IX^a:QVVJDh9Di8< (9tH 4]h*ҩoX&69Y_MAXn)يOqS$566M! (R2(٨ɚz[LJRV;I^Bq>C[|/Sɼµ`cfem(ZnGi6kCZJBEhcWʦUHCRQ=i(L/\ZjmT qF:` ݻH$N n@xr}h0mVar|F<0uڑ|\7ڳSէM;dž̅xl( '99J21$ahJ)f)z!ڙa*2;MAA(t·P@.#?W//߲qu {N;W{O:J[ueŰ(D5Ks+OTUf5o"Zn^g1: h 7kC t/id?bIWB,aEW)?MLw`,Cjmj_%нvxSkL܍Ox^vE`6CcK ~qBWHx BH@M%A.W`&/^8Qy}u&+;^$zJӟAtcQxtgvz VPtoHPФ#(`g+IUg\w%/%zs;,WGE{#|̩X ζ4ir fGC%'%"'<8B,5%FLfږYz sg;-kء o_6دF%}z𧢙y[o{U`Nrٍ~nJ[dD,!Ʒ ^J戌Mk9M^iI$tGAۖĥ0551&pYb+z ×YlYˇ?xO"嬾 ʬ7`#.F2օANeE;V.1 ZBtkHܷ1{׈f5ojѣ<~"cspESkg2EӋe(Gf;GG8=PD:/KSm`Z '3v9ŃyI#[ĶZ@2 طhcuH2́hP"DOs!Sy 0Zzpˌ ~cױ׮"EN&+!҆GJW`<u~)ch2xw<[t*>u?h3[vXz^Ьxn!_н%l~;qvٕ53t2l| [ 2HMBi,!7/R#4s;\֨h&q# 3^al*P"6scܕ}r;8Y%G$[px Y}/}/(gw洦kG nčD͎QWl_{-uS&, ԭ&\uIfp)f(O3rqȓ>*'gzStnjF%9CFcJs5&?ּLn;hIJPz9DN hRsΟ@t_c3$CB(+wffj'gg3?N#vJy{z| &t V؜*lSgN\'_3mhz}"= XlsVlq\rbŭ/u }bTA53F)@O1uz=ҩhem,aS2ҒJzy(tp.\;M` 'f#ЬqXiL[U4 >ǟ-ĺ.z9b: ;:0cF(TwvF[ua#Rܚ5X !@eL(Pz*|ϳԪ)skz{0Q)b,L*f#.Pߒ}#dFZ[$n;`ZJgJqs$\Yܼ\,C`c8S<]>gZt'`Z'6ʡ-87,fR/r?k9zzT 0Y f;3[j- y!v?CSvW t=xb&v{ygS8 %1ΡLx%QNh"3A/&.r }D)wۖr:0zI]"j?7O=ɚ>;g`dv <cֶFog201Gkfzfy+7έeȶL1:MVכKb#:kan I9k&e]SqßAD~'S#]u;15K\' ?B8$@+'~CJݯ򖑯,3̃iROUsA!l)F MO1'4h69/ФȘ18`?vkU6R]kzi1S|5抂sjݐW4|UL5$~kUD~1RډD<8<9N B ch~!AΈ/&7$dF(x%0>MZcVyŚ<ֺE/*:ĉ$`D@Ox#ϙ^H,C۞RqhKB .nJkH~moGܜD.Q(]KcmzMvљ$,(}7bdL&{H}H/WQp*sLu8ֈk0ҩ~_ʪ0XNZ'AՋZ^܂ LǶZqoޒƢƊaG_/l6 !Dpյy9dgRCXyM J?}(R0N K:ylYH km  ۼb7og%va@|`glYDFaIA<ٖ(e0>YxPhÅce}9 ҿ hM5KI(``F&{fpO}ۯMGzԅOX-U'`Z.T}82ϵ$ƳͻhSGӋkO&2 .oZ!D(L*Fvoec;m;@'A`␌ ?b[X 9L'mNsz_1Q>*R$(ak~Z2D !DȝtPEv,HP {IƗ;MöOuDC8[_ȠQ+F3M3i.okf;`Hoѓ1sKx${^ϘGwwbu sDuFrfmE,^J̹KE(a${>a.YEe1c;mThMtJK\m} R>xv* dYO Nkcg%9Nm% Iٟn8xMi Ka5)cIˀEWvwHB~(}gs$]y;$XiVX(H2qʸ?7|nP*=lw9 Uw^߭ўhI Nzf;<ҀͪÀgh$aMI@7.BYo<KC%Mx^$WX|bg=u*!& |E:f^3OH{k&Z DԱ{-"mr6`Yʂ0iDF.K$J@&|Xϖfy VqQC\Aʺ:(v %&[~]G^͌wRJ"uj]_3mkvX \ #|Dq,!HoϬ0DδoPS.v F'<:O2֢i訣p$E_Y81}d28W T{T[.ZI(i~ID=^?aWQ7iJDX :yWw f8^3O<֝x6ozyv (M"$E.Y#a}'#$K`dY r%ǬvHnLJXN@iCo }Xz~h:؎]9B+w*_1ǝ+m/8Jn\%fω}Z"ܐIK"7JQ$y %Wq0@!-GOt,՟JV9tIz 7މZ .t^%Õqߴ ru٥G(,``~k;BOۂ׮xPg+Kh~{qo;.rMM"q((m)_m+ g4YBDP|#6έMqf31Ż#9V *'i Q.3WTIg`zzxҜ}_s/JhB@ksdbœUBuruI$i͓WZc7msT-ǹ 36fn X"ovs$9CRJ/&hlo"I A`3 idrGs85xc B겗ٚ4o٧ '@nN~̎L#m2O8.3N{fه-y>vyU1Y% [jebI"gjgZqaF3NHkp-h.&6 L^IԈH0k|M-4Km#DCAW60*.rJC;yT 2 x&Q)f<nDǓ4Nvڧ F*X C-~y˧Y5f?WWwCQ0̈.RJ LNFF8bDH> .'ap^> 4VNYJ(pZҭye!=g[/ ^p^jHQ$KP o)c-Vy])lLVE qx4NF$x7k!1ۆAW&VA܍uZn6CXXS>w$8gb28w~7@9PZqAw0ӅyËQDTpgF֍s5sg0W Dշ"cIVGUe/::~DLN:oJ͔:DAn`Gh?;e|5`Ů3XeO%OƠ^@9/:cm-&7Up6O@2ӣ3j<'X6cA)IDnj$is>@B/ x35<Tu_nP\9bW{5\Qz%HDf#-sꜱa=jC=u]6mwf[[ļie-9Cm~k85SzcēxW@o'~7u(7Z~S6yK~>ɠ4 |t.̛- w B t"Uj5zڭh(A'oѪjup2{SijA3Ekg}{ѸE %/]Sujz"߁WihrL͌{k0݇n(PeS'**3X7}&b^L߇/=j*7ޗǽfLf m-#k,>b=`P+[6ܝOMK/KopKR2ΐw[yJ2%(G@bnҍxV!X!.]`haqXݻc $y9S'#=ʐm?bR[@ĦTa dCK>1qkS2h^C @#᧷}c(˦ƴ*B藘acR4jƍΣ CYM2L,},% MyHV;2Z&hūU bMߛ޹=KX2 d%sʔ==Ƞ }tL]f⻶b~w%z0)e4Q \blL&Ԫ;Jy!4r9g o"})nQ(hU`%)dMx4##@KZ1#Lt2׎- 8޸y 6sI]>T.a`IAɿr}^6 VXB3WxW*%ƦwrB,9v!{5#~(Y"QEe)t(lUxZ;{ҠݬHI1죔BşcgܬffO"Ah)QGA؆z[e:$[ziX(Eq9r0}A,ıtYY!'P ;G7eWr #%є҄iG {-ADث3Uhw#ݥT|h4^*x ,C}T[d`GK_>7k-xݝ o_S#̞4M\d3;x+M@Ħ%pMhS^6OgTcz #Sࢻ(NkZ5N/x/$%g KF˺ ,|kGO;qnS*p0Is_[ ƯM i(9C%]?]uƋ:6Mp&\oc2f7=5̧/<9/wr.-8Jؗ * vw{T]79v|N,x>!9V&CPY174~`gvBQr>! [aQ ,r7ayYAda 2}I8<9s즯"@z©<ҟ+ıAB#:T Ptw/fط7= 2l_*'bPEڨ楽dnV|Bid6~wRJݪ> .o54%W@ytw*W)<7!-ejepgdEddr;g7Y1an-My>Lށ<pG@v메fFEBWf΅s՝];Gp Ψ yFhKκ'T;J _;.>&~xYwܲ8?dje`}L&^|yoU\^_v`#@r|KX`>[0Iwl$yQTr>\nJqtn5_}-FѪ ^f `):k_MACr o?\t|0.3*&]:sZ`i3%[-+˔./,jۺFd+gg ^ ͟JZYZ/:Efĝ|vB()yVLKNvv[a gBnL_6l#~`e]+'_j6RTh6;,C|/{1&Ј`\,=d/# [cXX-VN_]:nԆH-S%4 ss##3үp[k ()MVwU9䶜1F=?! SUw7[ti#|T?Ks~bNi9e6eBR^8ȯxe'7JFT<9I~ W;)+2B{/k2EbX¯CMpqѽ۳>'z%wӉl-``ACy҇bC)+\Y 6eὝ}1؎0XycTÇIn\e< KZ+cF,3ވn 2D⹺ `=(lP@#ԆjaQ%I1T^ҼmYHh$̶j:4c*aXւ? fTz.9uO+U,N>Ktƶ>~kv5`6o,=7iXqoiz6}F;=iZmOW풡\eaMBj_{:W|A-tHz![bV&78&Av$`xF9rޡn P k~SF %I[PBxkQVGx==DCاϠ{;v$-: g9 6 ongF[]<2ְ7Y+UG#dmͫե7>7r\%Vf82 Q:DǎKRflmPtHl3&oKsQD+pSEW*=KQY[ za}& (@;dFt>D3Gƶ2)!YA}߈ }`pxwvyKmsn)SW$u$t$Sq9FӤ8~hqщKU.#bΪ:J.؀ɓu q0Ѕb)d+ߋ~ޙ4b=p3Ό F'taS*suDTY/jn5*eÝ0d8cÖ?9ycʫQg9d/'/-HN 0zS5׍F<RKL<"@-%hӭ9z5薍ECqGÒBvibE7i K)Sua syI x_nbf>o!R'y>msכ?1ޛ<|~2Ne|rHXcED3-H7r7/B!loQ!(jLI?37+W毉U=SI"*t7+k%"OΠj2=ݞC}`yj41NJeO7,;˟<ѩ3U ;.D$Uؑ[1i&adW>yHvebœmKa{'WM[:ĝ&T B#eHcw*g^2f xz$lfCe z3I:nWomb :FGtPblOu@73%&6 (j˛G};qTT"ru}O(RZ K#g1 jwVD-~mn?&Eȉ?+J'i9 o KCv9%~{m1V"Bp)m(p;"HjoU%S! ܰ/TTAU ݹbI$cX̐䵗L}A6u=˧qrݵyG_t_?UC3E(210YV/lz3TbnX;%58z%w-7Gk0lEqB⎽+wIE~D|ѽ4|>ZFwwV5mv(g# K0!mFy,;w6xP ÌRb>"5N=j`~yDۊ| TW$aƴ3i3q8~  G3JOG>XBSMZ^Ljq#ֹ"6 "G6-x א6K'MGw z9aمlt:mߣ 61A sbbcdʬ/Ke+J}97 MDtV@"/fxdk;CH̉^ƼŽpDl#6Tot\WT OMiUV=  DD5L]_ئ%:;AY:pN&cgOPNCRܧWC+êy}4 ^oJG]EҽKQB>rAhV9HA=i%؂_k}pVm;sOBfL_ھ"ck$p b!*`b-=ګC-L|% {wq=Jx(>!>ÎQ#.`pI=!l 6c{%Qn𷺝` GJ$===_|$+^22tlt9i^$Àz%Gsgʢ~?O:G4:/U d$n%qJP%']++jSf/S&\)m2dG>t}7k*akZ?:srrN0+MgFC˂u |kL1[=Xܐ}@KE#N6WP s'ش=#H6`%'s6y6\.,z-GHGd8^"9FO0^3BQDhl D2 rk?ecȻ.ʯG.>x46,/P6-_؍&eBH ܘ\ ,ms2zjW٩\}.{g 8yYL :5{_>M'ԪVmbRBhbج뜅q7;s_~@bfu ct7ipRKa  =z`YOl f; (;`G7{+;*ȭJ Kɘb 6ck+N_=RZC[ hӵp/f>hxĮ0)FRTK,Q``^5%/qCvKF22vHS-F|3z+/S_~1U+5уRP~LI:}1c,X\̰UVY51B7V JG AUwaڞ o I[AЫ $$ IF-=ظJg%"¶ [.ԎI0{h ŘIc!27cA>4l IkL;oO8KֱSeVV̮+ &U%CU:,B)F;*AWDC+ݻ1C,>)~}36Bq%Rq,G[L,oQZO`m> [f)x΄V{/ֻ9p#mi6.?( ~DFZY~~T?]9NCAb̪nds7–|AJ'컒$Bpq}_Q7+`sx,6Z7x-X DCшНt;2uJtuiW0?%jqMñFs=qIz`:; ĥ$,ͲAC ?0e|tê WY^Y9l_9\B gn>;'@]V$ F?&8e3us]?r'_X+d4|`Si"$Fq+p1B[H<}BCO̯J-4PQpD5_ŋXM}K(u`>:"ebNO[]zY9,S6f9/A< .R17ɭL`[3zM=&W]1ENFK>(oE{4an}g2ˀ iܪ\Fc=.b~iczG%$L}^bHFҧ泧@N'ִqu[NN9"އrF3-JWWw\u~ 04wuXKF3y YpRs_[Rvi9W!t{_p62{47Zm4N@\AXHAXDYLy]f+t ^n/DmF)tk.DI12 0 C[rdAcewCIP/=`+$& ,, B=xc}NWm*nH<{J4 \jla>C._z|*\ԏmKM僋m\#A!T0O*,'xGkX|,l83N+RmDN'=Ǫa9Mi,umZi`rjok>AHYA|.+`ar*fg WUA:-C={;j~ƜeuiS6 %g /-  "lkL;G^ ;{VM]V ^8w<*&SP`qokDCwɒ.KsTJ(9`ʇ}d봸=u5 M? oލ1;>Q+vEfw6㆏)dJpnK?, J7 LY 뮉ym7WY#BW%B@(_%Bpĭw0$Qf7Q.u`or@iv5,[B.K lqW- AljP-Aml [ʐ.WSLuMyҚ >9exk,c{>43@*jT+X`EMXaxgCCl[F˦GuyGǜ;Ťn"0,FLxt㿋BMC؆SFC{l_Q +g+ŷɪ~203 N˸fˢewQٟ{w1zH47DYER2I/u w'SULo"pf'8vE } ҧ՝# }7=5̋1hru RȾ7U.7-FQO*h.At yp-S;';vQxs$0 .3CLħ 'ܑI 9V 7])X<&v6$#FH-K 3z(պ8Ĵxt:>QEw:OZ+UU/ uqI @K{/|Dr |SQ,HСiMM8̷L{LX0jrRX!SҙrkiHW-%Ue0htl݌3YO;@ |"6;$pw7GϥW!-ODMN~#$Ufnam3lkl4(nhUѯ&X b_TMSa;EA\#[B @叹=ʌ>BmU!kC:c=3%bmM1y-~AvyvyȴytEc"b[juRBۗO |v~.VȒ_WsN2;5)Y*P;h2U TkEZJ4CM3`ٲ>kwOn}M]KeGhnz' {&2IpV]_O72*aBӈ|x.E}"@(PB]ر+R6aZjIt{ehL[6S`}4 sWi.N(n:Lj8H36Ol<—m}(s$.NYW;ʼls5-Բm_oyT/Z][Tc]reOtRmwSK)}DZAcm燹fdPWMGٸ1Qxov#%0ڀs<.-Ce1je1Z̗K5w։%MraZ[jk8w FadҞ{bOUI5+] ⿎ւ#~z|#?~!^KyvbmĿvhԣnlGYEL1r!qFݖ<IJsN\}x1MFۘt [A Q+pP֯k AM$dn$-L*y#uj3i^:!^Vv/,ۨBu8676D)D=cW$]e"K3:Q31egBJզ< y<WlҋG1$ʀ}Q"ǽ р$KTcm^ӭ/x+_>y-wYlF<]*\zә/xH}n~KZ-PnkxV^ȇ>un#G*Kzs~kxW}\?p?䂃uME#& Cn3>DA>asa#OI1U3(J6x(nOWp37sheXCT@ `>M-;3>&Vzȿk/n&P%ם>|34)M<[`޶owzbK2#ҨVt]" D|nRcA6gNu«"k7( $XHk^xz6d`7fﭙam{mԶ,syR`Wm.`/*}&2x64"}ݿfD=餭 '\ nTCy˟c9L )N7|sEEGJRzǠ޺OU;'qP%p`N!"x079=$SEb-aVC%lDL+iS 3];EsoY2N$ɀ ^4f_ W/V]zg^2[ |G3K-_UqvA _C_D5AaO#x~HuGM- ri"oU8S>,.)B铧`u9kc?Y V| ;\}ۋ;cQ;f!lDDo7ϵ# FO"8]Ž%.M pPA&kh06&aO6`&|6[ /pvc'}SfY'eUv:eܤ0CAhqqxe^oBqfUwr􁂚{|$@z -?|eIػ^kMlxhb9jqv2y]eP7ع| ʹ>,q2j=du,)b@i:dh^+ iaݰT.-Qo^V/@xTR#&tB>044-}NO<=qޘJ?'m$$q *ƙ/xe'-<%_Vk<fL_:BڈZH1[?|Y/ѫ_]b{l^ "鵐[('t/%IsG kxq|ǚİd5&L7+I%IwW0s V/J[}js ?.3۷ьfkl2kIuR3 r6q@qfI~ל{_,"\bZ* vQB{1D.YB#t• LؖlzƝ=0IĹ06y4g} L'Qйs2F$0@€[!i*i YV.]@+q"/دtSm]0> iM(]ٓQ?'O2-Bk 4 Z%ޛ,ZĦYYjiu_&?ngY%r##Po᯹= O^qҘ"q*/2Ħ.sA781aJSԗjWlN'tAnTٹy#я\yTL JչǁKLƃV&<*3bTkbw.bh7PP._@dj1fەl)ʲH C5g)Q0]`ƶ" QOȌDp&̊7KԐr;mO2I/j #XŏN P}/4DoH񵚳VSˁ&c^N0, lӕ <dDk5@7fiXPL tv_0k+4PQ󀹩k*ȦDij ȳ-e0dOcX&mTmJwMIEnf.U삒jh;0(v+rieaXpvT"!g(qz^zrg|U3J%PW >ڭKZOieX{J.qR'"f~T(dڑ S:Uꦸ켰x 㔡bBR5>٨]`*,?]/nn# ?2 &V&I#x!KDN]~=tN˰mbhRb/ٺYw'u2gA:kZCp7y?LZg>@3 p]ewmoHޅ ?tخNH@CgPqYӒ{R4*0 d޽[䎞ǩZ~4L=fA yr"=gަJ-o%VcbBDWlZW=&fGE~* Ƿčvk]w*O98TM4aV[R9煙@ КL:Hv%6мQV>c-~EqJn[ipp/x)r6z;FԔﶬ?}tExiک YpR@~['u[J)ImuC7LiK'!6A_W{.[}3 5W&@L<V_ ޸S du,:(baGe.&,7?q៤Zץ宅`9څSE:v,XyW S ~X\Ⱦ+ڒ7 {2Ydce\Kԋah5N+1!+#$|f7Ԁ 6% 嗽: 0lhf{kb~;By-C"ca7ʵZd$#CEW 6 rq1(cʷGĠvpws0-sԞVQ2X~7@.O  MawO6$^:0T>ҾL8v]> ;0!~xȽ*ѽ=sז48\^$l7B7#mT /O[O?‹'ʞI}Ӌf8.SA&pct.&p ѯMp}!XQ!b'g`Ѳ#qBvh/2t?pNЙ|HySל6vD?K>?{=ru*sR2]ZlZh_eFU1LG 7rXۅCmї;4ɷ+*c`d2;^`?A}μINqa L `J@eԶKє춫[?D0!P֓Wg} -%_pxRԶ|$+s>KI C8d't790M[W[ΔivT" MmVӶ#`tMao0uS>m9sLwGΥ\}+ŝSߝ,3q?c!T}jBO 2c넒B7hkv5bבfL];鿅aIv )Gx`zaa]z U[˚'%-7A 5~re[n>904@[Mz0n-b1Š'~,φx"_]PUۮyӡC8L((CLZ8{M۵0{F[SI {ce0@7qe)Éq1J(`0nFt؃P4ҲK5'ؽ̦Oq5g࡜ƸB! NYBSC'pͤJ<;ESl$v1yx }h͖( SF/wmzqF}I=F?X)qz&0a6m*6JW.}s&ɊJeTwC)/ e&ȝ)(mċ0[c.Š{q5h%$Չ #R䙸Y$s *Um ؄N.ߔ.v7yxFE-q9M*|˛kWSPw1O&J]%<8\U|uE;}β-{{ODQ ?N)-4 PF Jjl^)?&LBZJ/RhMU!Y|aWANvV:D7V*av9,.v@6N5%ct4ӝD-x-rc4S[y{Z8ֲ3 ;R~L xP@cl:eKE9dXm 0HKP4,Ä Wm;ຬvR7Īdnu6e$5|4fd%psN{'+|Rk7vLN[NsO+71vK_z@=QUk#ѹ#в|em8G}Z2c`MG_MΦu~{E 9s$8uFN7 L{Ç_N~z[KJ1"Zien/qqra#~@榽O`^fEAw8)~=)dYΞ0^"C*~b5\,![$?CۋuJ){'Dc 4]-!$JˆDg>k|rC5DeISte4Ӽ/%!~5q66t:E# gH1-򃂷S39(( >ˢ@<#1')dcs\fOݠ 6`~E:zK\ sz:#XcB47;N2P9 S9mEmyIjPWanYD+Mq_*Ȁ5" ; ,ޜH%jh[#[4X; ^9:?2U0ȍ~vVqWV, Dk-k:te8i3 [JZomqmf"tX(ӭA:eAφV(_Ki:rOI|gSGQo)wIβ-Pka*Ku?E_jl-e?v񲧒RՔ^Q"8I_f=N;[Tu ]J(MxU6{Pir#M.c6eݵl@+ЫN5^~s=2VV[S-M:9@ ܑo2).TuxOz4EbϺtbVt/ U"g`1>ٴGvji܂AbqgPY0p%yE%AS ʅ@|٨\ dZ'9b2i@`+/;6~5خ#8FѐR?Q|/y$=@Q{ѦjwCfZ8|Ckt[(9`q(ev㧣 iA 5OSbdP<-L q`.nwG:KT} ]C{=p&oA+ hBV4 G=W'tNqJn5Uyt;9+iem& <_/bMA?;0P u$`獒 Ԗx:KlĬpS;xCq wK|Wu?'}G]E- [E:[0H*̏YhlՅ+{TpƌlXm [!HlficqlJۉZ~+LomЄnIm B (.I.Ow/S@G> Xoʟh bD8"p0ꥉ$:yF2ۘC`n&笧{{?{C4*8}|>[0YmGwVճ,j{LnS"E/<7,cd">-e_ {N ɎA.)Lsn0<@tٜCۓÇX2X` 'ǡi׺vuBk'|Lc :IPޤX5xkܙ$ hթ!·]1R,ƨd ߺ>gasN/gץE wO 7z'쥼;ԑ"Y6ߺ@"D`NG6) \)وڑثnbFEc9tr~avf3HCyIAکEt`A߫ "eRfWJX""tjeT+zYjN7j}͸AV?͞qtU:ѵ fLw #h/5;/ WG{@Kbe%3w|IIթjݻvsīX¾o{/Q/haoGpr~3^ٯp86_5iBK%<F S͜t02CSEG ;:,5!(&nZ:e˵ˋsCöpoրEZ1^o(q$tbQBҀZ \mLf"~}-ޤ?ۧ-vҨ K8>w:1 0zRy ?0Ua1 ER@h[8j0kVf4 |WUZ牄D0w-w`HjĴS$@`rŪE<OS$+.ֳj( \qUst/7ۚċ.[/]K#sJwiA蕜 6Z7 25}8as_; Z ,l@љnǭ7Sʼnwd\jԤɑd[l"NV/ڡHa[<2Pcwbj%77.* =4 b<] s?U6T'MӠS̭Ba s7.'{/͊>1p*҆M  axt/Rpa-mó]ށRŢ \БN2ugyC"%cU\5j$_4x0[kIM]hWk᫥~@Yaunm ?y*ߣ,50iNV~gC/!v'0@e2{1;u,XyC;Z{g |.{$_}dIMƮ2z3~X|`Ir-%vGUǛbfG۩Ui$gȴ1J]*Q|^lȂk\A \$G%HܘqU^ 6:4 Qa,3k~f8,WCrh* pRUܰQTf]Dm.8Q\˘Ґ2\VHx{Hpژà @. З'ꯢЊTS)N/<ܷ`8`3klܚ^>"En1s9X1?4;lȷzx`B4=,5LO SrX 2s]0 fkbo05;q|U 1SN!6z @h(^ P~#fR狧j^J[qbąri7*%8Vmoܽ#VuDŮ< 폠LsɮezNg*N {Q(*ֶiWo>K4D/]{E hU7W[d؏'M3<[1JsnBޡ6-ϚeKdU!u=^3΃s!c-،&1Jl*֚W7zKNʏM)h23b ^GɗsbP4܇;'{G9UyX jrߒaӃoBRjQ!8UwUyo$ȱ~6Ⱦ/i3/)Q !Ă}Вk2L( i)66"jDӬ+oC1Fr N.1RzB{DZL^|kN&x" ȢE@H!{ro"2_7Y:ďf;#dl&?Ary_|vWa?>93&)mm- u'b/Va6N@m#`ȓIG,{q) >v"t99?M[d- kcTCߝlV_N>Jϵ}Psh^[7՚eͬ}i\c oHīw@v6{wMYD>e'MЉқ!E?#W@G3Fq*I'm{[ub!ʾȆDe( vLj6d2Bb4DPUvV`GM82[)rLU1_8UFT6.$$_ut,١ۿ!drP li==ыL"$Ui8q{_xI| 87 %q-y8jVDiKۜo ׌Mf#yW9 ak'msu%š%,C,a'0wf%OP9̽%'|Z!cL!s"r!`n&[Ī.֍B3|~&|-CuU:/Nzُ\ rt#=Zk 2 Ͱ{ x־X*a+gJhC:''.sB]VfyIC,w-;')-E1ūž ŏ.Rͤ Qp+6OoU)MfK~'UZ:`ٺ`c3 f3D]h1ອ]uLm{aTV(}1nh4MuBlq */*gB (8:͟L"5K W:Mu^WA?fٸG/QnQ|ݮ#GYLV$SC Kx&pԗAǗ9Y%F6Fh_Z.,xucxYiM|-CKļ:gMa㖐-y >\sI ciF֚@,FW}y.Pr .d5-!?z/)Cn˭>Pp9ae.}`=cԇ ܲk+B@QD)rbBzYdL(ZqM>T{!qd*|v;v5 'l2ؖK׏% 2Ω!&"T8!* |'m"ޏHXtn(Մ8D,gi3s83;nGF{ݴp*(:g~AB@ B㨃Ԗo ~tRoWhL7&O]Lh ,S}ΒO-Bp]`6يܑ&6S};o[k`C7B'WaC8[0a%N+U/pz;rܰj/7En"K%c:Tg +Hݷ?H@c!".e@G=|֌B'0ނH4{ VnDC[qvxOb:*J޶6۲ (0j qlpzwbU]p>gr DC_*d);Gro{X,1Kx8\ dhUwp4iмo%2'l H'kF#fLݣDQ{gDKji<@0$/HAj& oG6Nsf]UWɚjм a,OsƏ5!Ri©ܙ/M 2fT׳1%FQT7>pfC##o zIuQcWmz.K=PlZ[ztxQ^&K}G;_1di(,3؊ț-=tUAʚ}3l[{k:p,tpezrJuX>,[0dD{6BP6`|I@C~#bc33B/_i4#ѮʴpҲJvz}򎄗ٽޛWAeͧj[ Œjy|)3b $? 0ˬ'k+6 /ewI['Wi`ݧz;neDQ>HARp.8?OU FmdStJ>=Ԭ.!"5k xAKJIfcj'fa8k%Q#D\Qz<=˰4c@K?䪾0c|/3Rutqtn#i)ƙrUVPp?KÀc>4.)Yw{;8T#;;5TV'Fq4-#ba׀g#C" .k >Pwj7XѰ2몱*u E^aT̙buZ6Gx4d .o٪fI#6o'kMaUbsGUʼnXto&O)!D̏*bkxٴ D&YvQζyůU\d`B~7f)VJH̡CbډM|y7G>ewζحv]6}^ÝUre X ux [̷<{x[8n"% jL8HqK5# ֗/bE&5<"Ԧ\ۂj}O tigS&=g$E$24kh|)}rdT0quSSYՒf/f s/`Lc'Ś&x9tު&m%sn銣4л]!MVGAH梚?Ֆ-%ȧ.h_l; :Ƈ:48=7gGǯzj:~80˪MAŇ(LipI˭p̽H봝B1 ݤGgOqH {\=үMj5,Q ,O\<LJf|j\+4 n'R@,\"6OYw=:\-xO)ĺ02ޘ z5 oĜ8>XWH\MhPZ8>ՃUgc"A.0 YZeaf/tests/testthat/test-eaf.R0000644000175000017500000000157513706402720016005 0ustar nileshnileshlibrary(eaf) context("eaf") source("helper-common.R") test_that("eaf", { #skip_on_cran() test.eaf.dataset <- function(name, percentiles = NULL) { dataset <- get(name) x <- eaf:::compute.eaf(dataset, percentiles) # FIXME: work-around for change in the computation x[,3] <- floor(x[,3]) #saveRDS(x, paste0(name, "-eaf.rds")) return(x) } test.eaf.file <- function(file, percentiles = NULL) { dataset <- read_datasets(file) x <- eaf:::compute.eaf(dataset, percentiles) #saveRDS(x, paste0(basename(file), "-eaf.rds")) return(x) } expect_equal(test.eaf.file(extdata.path("ALG_1_dat.xz")), readRDS("ALG_1_dat-eaf.rds")) expect_equal(test.eaf.dataset("SPEA2relativeRichmond"), readRDS("SPEA2relativeRichmond-eaf.rds")) for(i in seq_len(399)) expect_equal(anyDuplicated(eafs(cbind(0:i, 0:i), 0:i)[,1]), 0L) }) eaf/tests/testthat/test-whv.R0000644000175000017500000000426113706402717016057 0ustar nileshnileshcontext("whv") source("helper-common.R") withr::with_output_sink("test-whv.Rout", { test_that("whv_rect", { rectangles <- as.matrix(read.table(header=FALSE, text= '1.0 3.0 2.0 Inf 1 1.0 2.0 3.0 3.0 1 2.5 1.0 Inf 2.0 1 2.0 3.5 2.5 Inf 2 2.0 3.0 3.0 3.5 2 3.0 2.5 4.0 3.0 2 3.0 2.0 Inf 2.5 2 4.0 2.5 Inf 3.0 1')) x <- matrix(c(2,2), ncol=2) expect_equal(whv_rect (x, rectangles, reference = 6), 9.5) }) test_that("whv2", { A <- read_datasets(text=' 3 2 2 3 2.5 1 1 2 ') B <- read_datasets(text=' 4 2.5 3 3 2.5 3.5 3 3 2.5 3.5 ') rectangles <- eafdiff(A,B, rectangles=TRUE) attach("test-whv.rdat") ## whv2=list(rectangles=rectangles) ## save(whv2, file="test-whv.RData", version=2) expect_equal(rectangles, whv2$rectangles) ref <- c(5,5) ideal <- c(1,1) whv <- whv_rect(matrix(1,nrow=1,ncol=2), rectangles=rectangles, ref=ref) expect_equal(whv, 12.5) whv <- total_whv_rect(matrix(1,nrow=1,ncol=2), rectangles=rectangles, ref=ref, ideal = ideal) expect_equal(whv, 36) whv <- whv_rect(matrix(3,nrow=1,ncol=2), rectangles=rectangles, ref=ref) expect_equal(whv, 0) whv <- total_whv_rect(matrix(3,nrow=1,ncol=2), rectangles=rectangles, ref=ref, ideal = ideal) expect_equal(whv, 4) whv <- total_whv_rect(A[,1:2], rectangles=rectangles, ref=ref, ideal = ideal) expect_equal(whv, 27.3) whv <- total_whv_rect(B[,1:2], rectangles=rectangles, ref=ref, ideal = ideal) expect_equal(whv, 6.05) }) test_that("whv3", { A <- read_datasets(text=' 1 2 ') B <- read_datasets(text=' 2 1 ') rectangles <- eafdiff(A,B, rectangles=TRUE) ref <- c(3,3) ideal <- c(1,1) rects_A <- choose_eafdiff(rectangles, left=TRUE) rects_B <- choose_eafdiff(rectangles, left=FALSE) whv <- whv_rect(matrix(1.5,nrow=1,ncol=2), rectangles=rects_A, ref=ref) expect_equal(whv, 0.5) whv <- whv_rect(matrix(c(1,2),nrow=1,ncol=2), rectangles=rects_A, ref=ref) expect_equal(whv, 1) whv <- whv_rect(matrix(c(1,2),nrow=1,ncol=2), rectangles=rects_B, ref=ref) expect_equal(whv, 0) whv <- whv_rect(matrix(c(2,1),nrow=1,ncol=2), rectangles=rects_A, ref=ref) expect_equal(whv, 0) whv <- whv_rect(matrix(c(2,1),nrow=1,ncol=2), rectangles=rects_B, ref=ref) expect_equal(whv, 1) }) }) # withr::with_output_sink() eaf/tests/testthat/test-eafplot.R0000644000175000017500000000543513706402720016703 0ustar nileshnileshcontext("eafplot") source("helper-common.R") test_that("eafplot", { skip_on_cran() pdf(file = "eafplot.pdf", title = "eafplot.pdf", width = 9, height = 6) ## FIXME: Add main=invokation ## FIXME: We need smaller data! eaftest <- function(a, b, maximise = c(FALSE, FALSE)) { A1 <- read_datasets(file.path(system.file(package="eaf"), "extdata", a)) A2 <- read_datasets(file.path(system.file(package="eaf"), "extdata", b)) if (!any(maximise)) { # FIXME: Colors are wrong eafplot(A1, type = "area", legend.pos = "bottomleft") eafplot(A1, type = "point") eafplot(A1, type = "point", pch = 20) # FIXME: This doesn't plot anything useful. eafplot(list(A1 = A1, A2 = A2), type = "area", legend.pos = "bottomleft") eafplot(list(A1 = A1, A2 = A2), type = "point") eafplot(list(A1 = A1, A2 = A2), type = "point", pch = 20) } else { A1m <- A1; A1m[, which(maximise)] <- -A1m[, which(maximise)] A2m <- A2; A2m[, which(maximise)] <- -A2m[, which(maximise)] # FIXME: Colors are wrong eafplot(A1m, type = "area", maximise = maximise, legend.pos = "bottomleft") eafplot(A1m, type = "point", maximise = maximise) eafplot(A1m, type = "point", pch = 20, maximise = maximise) eafplot(list(A1m = A1m, A2m = A2m), type = "area", maximise = maximise, legend.pos = "bottomleft") eafplot(list(A1m = A1m, A2m = A2m), type = "point", maximise = maximise) eafplot(list(A1m = A1m, A2m = A2m), type = "point", pch = 20, maximise = maximise) } return(TRUE) } eaftest2 <- function() { data(HybridGA) data(SPEA2relativeVanzyl) eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400), extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA") data(SPEA2relativeRichmond) eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), xlab = expression(C[E]), ylab = "Total switches", xlim = c(90, 140), ylim = c(0, 25), extra.points = HybridGA$richmond, extra.lty = "dashed", extra.legend = "Hybrid GA") data(SPEA2minstoptimeRichmond) SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60 eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]), ylab = "Minimum idle time (minutes)", las = 1, log = "y", maximise = c(FALSE, TRUE), main = "SPEA2 (Richmond)") return(TRUE) } expect_true(eaftest("wrots_l10w100_dat", "wrots_l100w10_dat")) expect_true(eaftest("tpls", "rest")) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz")) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(TRUE, FALSE))) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(FALSE, TRUE))) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(TRUE, TRUE))) expect_true(eaftest2()) dev.off() }) eaf/tests/testthat/test-whv.rdat0000644000175000017500000000031513706402717016604 0ustar nileshnilesh}QA0KI!|'D@IljO~XMڙݝlMy @ " *=HLMp;\3*6 \Z:Èab>3V}yt>u|Oxޯ=?zqP6` 1 $".Tu&:]G7ZUjoUM]Bo ] ?ڊ^W=eaf/tests/testthat/test-whv_hype.R0000644000175000017500000000246613706402717017111 0ustar nileshnileshcontext("whv hype") source("helper-common.R") withr::with_output_sink("test-whv_hype.Rout", { find_minmax <- function(...) { args <- list(...) lower <- list() upper <- list() for (x in args) { stopifnot(is.numeric(x)) minmax <- apply(x[,1:2], 2, range) lower <- c(lower, list(minmax[1, , drop = FALSE])) upper <- c(upper, list(minmax[2, , drop = FALSE])) } lower <- apply(do.call("rbind", lower), 2, min) upper <- apply(do.call("rbind", upper), 2, min) return(list(lower = lower, upper = upper)) } test_that("whv_hype", { x <- read_extdata("wrots_l10w100_dat") y <- read_extdata("wrots_l100w10_dat") r <- find_minmax(x, y) ideal <- r$lower ref <- 1.1 * r$upper goal <- colMeans(x[,1:2]) x_list <- split.data.frame(x[,1:2], x[,3]) y_list <- split.data.frame(y[,1:2], y[,3]) set.seed(12345) whv_x <- whv_hype(x_list[[1]], reference = ref, ideal = ideal) expect_equal(whv_x, 2480979524388, tolerance=10) whv_x <- whv_hype(x_list[[1]], reference = ref, ideal = ideal, dist = list(type = "point", mu = goal)) expect_equal(whv_x, 1496335657875, tolerance=10) whv_x <- whv_hype(x_list[[1]], reference = ref, ideal = ideal, dist = list(type="exponential", mu=0.2)) expect_equal(whv_x, 1903385037871, tolerance=10) }) }) eaf/tests/testthat/test-hv.R0000644000175000017500000000253013706402717015665 0ustar nileshnileshlibrary(eaf) context("hypervolume") source("helper-common.R") test_that("hypervolume", { #skip_on_cran() test.hv.rda <- function(dataset, reference, maximise = FALSE) { nobj <- length(reference) load(paste0(dataset, ".rda")) return(hypervolume(get(dataset)[,1:nobj], reference = reference, maximise)) } test.hv.file <- function(file, reference, maximise = FALSE) { nobj <- length(reference) dataset <- read_datasets(file) return(hypervolume(dataset[,1:nobj], reference = reference, maximise)) } expect_equal(test.hv.rda("DTLZDiscontinuousShape.3d.front.1000pts.10", reference = c(10,10,10)), 719.223555475191) expect_equal(test.hv.file("duplicated3.inp", reference = c(-14324, -14906, -14500, -14654, -14232, -14093)), 1.52890128312393e+20) }) test_that("hv_contributions", { hv_contributions_slow <- function(dataset, reference, maximise) { return(hypervolume(dataset, reference, maximise) - sapply(1:nrow(dataset), function(x) hypervolume(dataset[-x,], reference, maximise))) } reference = c(250,0) maximise = c(FALSE,TRUE) expect_equal(hv_contributions(SPEA2minstoptimeRichmond[,1:2], reference = reference, maximise = maximise), hv_contributions_slow(SPEA2minstoptimeRichmond[,1:2], reference = reference, maximise = maximise)) }) eaf/tests/testthat/helper-common.R0000644000175000017500000000164113706402717017042 0ustar nileshnileshlibrary(eaf) # This file is loaded automatically by testthat (supposedly) extdata.path <- function(file) return(file.path(system.file(package = "eaf"), "extdata", file)) read_extdata <- function(file) read_datasets(extdata.path(file)) ## help_plot <- function(A, B) ## { ## library(ggplot2) ## x <- rbind(cbind(as.data.frame(A), algo="A"),cbind(as.data.frame(B), algo="B")) ## DIFF <- eafdiff(A,B, rectangles=FALSE) ## rectangles <- eafdiff(A,B, rectangles=TRUE) ## colnames(DIFF) <- c("x","y", "color") ## p <- ggplot(data=x) + geom_point(aes(x=V1,y=V2, color=algo, shape=as.factor(set))) + scale_shape_manual(values=c(0, 9, 1:8)) ## p <- p + geom_rect(data=as.data.frame(rectangles), aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, fill=as.factor(diff)), color="black", alpha=0.5) ## p <- p + geom_text(data=as.data.frame(DIFF), aes(x=x,y=y,label=color), nudge_x = 0.05, nudge_y = 0.05) ## print(p) ## } eaf/tests/testthat/test-eafdiffplot.R0000644000175000017500000000222613706402720017527 0ustar nileshnileshcontext("eafdiffplot") source("helper-common.R") test_that("eafdiffplot", { skip_on_cran() pdf(file = "eafdiffplot.pdf", title = "eafdiffplot.pdf", width = 9, height = 6) ## FIXME: Add main=invokation ## FIXME: We need smaller data! eaftest <- function(a, b, maximise = c(FALSE, FALSE)) { A1 <- read_datasets(file.path(system.file(package="eaf"), "extdata", a)) A2 <- read_datasets(file.path(system.file(package="eaf"), "extdata", b)) A1m <- A1; A1m[, which(maximise)] <- -A1m[, which(maximise)] A2m <- A2; A2m[, which(maximise)] <- -A2m[, which(maximise)] eafdiffplot(A1m, A2m, type = "area", maximise = maximise) eafdiffplot(A1m, A2m, type = "point", maximise = maximise) eafdiffplot(A1m, A2m, full.eaf = TRUE, maximise = maximise) return(TRUE) } expect_true(eaftest("wrots_l10w100_dat", "wrots_l100w10_dat")) expect_true(eaftest("tpls", "rest")) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz")) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(TRUE, FALSE))) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(FALSE, TRUE))) expect_true(eaftest("ALG_1_dat.xz", "ALG_2_dat.xz", maximise = c(TRUE, TRUE))) dev.off() }) eaf/tests/testthat/test-eafplot-list.R0000644000175000017500000000106714033373072017652 0ustar nileshnileshcontext("eafplot") source("helper-common.R") test_that("eafplot", { skip_on_cran() pdf(file = "eafplot.pdf", title = "eafplot.pdf", width = 9, height = 6) a <- "wrots_l10w100_dat" b <- "wrots_l100w10_dat" A1 <- read_datasets(file.path(system.file(package="eaf"), "extdata", a)) A2 <- read_datasets(file.path(system.file(package="eaf"), "extdata", b)) n <- min(nrow(A1), nrow(A2)) A1 <- A1[1:n, ] A2 <- A2[1:n, ] eafplot(list(A1 = A1, A2 = A2), type = "area", legend.pos = "bottomleft") eafplot(list(A1 = A1, A2 = A2), type = "point") expect_true(TRUE) dev.off() }) eaf/tests/testthat/SPEA2relativeRichmond-eaf.rds0000644000175000017500000000143113627006324021440 0ustar nileshnileshb```b`fbf" 1!1B Cؤ.:}WvbC{}fn;_;_y;1!Mvm&I>ryp}'^8!PCDCu"Q1_;Į cPeUH}!̀')Tj#]}}Q@ ILq5"9 dC?WticC|Ot_ᇃ7b^r(ڠpdC_ᇃ)pĞtHxF9gb tHZwr;vs0QۀZ Oqx8e[CD)("O3xs:up3b!Cs]"A(Q 埒Ya b^0b#"@i:% nQ ;D C S0}p{eVv :!-$167H bT@ʲσ 1"c *&ǖf_$>#O@i%, \Cd 0u%9D%;s>H>c-("PO~5(<Rj@'WG~(Mi> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 7 0 obj << /Type /Page /Parent 3 0 R /Contents 8 0 R /Resources 4 0 R >> endobj 8 0 obj << /Length 1369 /Filter /FlateDecode >> stream xKoE+qMH@!%HXvߧ15U8d/]鯫wV[ţ}~7ݢd2Q׻$^މJhq R%jV:'SZFIܑF6CIxG`4n4.P̀((+q ,] QUFz;:륟$ü͎(`3cQ@ѡ~m/*2U]Sh|Ww5]Ks|_uw}Csͩˎo q2fF+u#NקΗSTO&ɬ6@vel{ \M>ʵdcK볭ՃӁPk g9IX+V}ިeH%ݫ><>_7xAt[ܾ:V{W /w,hhCsx-2 466g@gSxXQ +v3`5]Lx]jDOC?; m$yxZq˵rҫS.f)]rwesٻu}1}Mr1#0kB/m3JΗ}]:#KOA$>ޢ`a?~a˗[|Z w \*S4 p6t}/f"".Ia%E,E o'%rСu0u\ s2{|8tF~VHfS/CH(?)!IjpI2N!!$c(飞֖5Hz?{W=6FP$\)(d8z& )0MŤmr8di8NYysOWވ.q#Ж<áQ`"po -YKq*AqULE<y8pVՌLQW:3DrC,prZ"8 Prt)'$MRWޕp\y@hn*` R)2!RáHp*u'8 R0MV_6}PDJ8ԏ\nZ z%Eq1zO#8aYƟ_S; RPK! uQ\&b t`kQ*xu`FMd#NBd$DK$f" I1|KKVM;({ NT~ߝ>j݄JDHTK 8եZ0:9wl}Cp 8wpYpwk ]s\䋮O?\OS?_~ > +`fAendstream endobj 9 0 obj << /Type /Page /Parent 3 0 R /Contents 10 0 R /Resources 4 0 R >> endobj 10 0 obj << /Length 5258 /Filter /FlateDecode >> stream x՝ˮ$uE+jHc*A6@l6iAʐiؿx8qvԽUjŌ쪌+^YԷonoo|KIrf%{ysozk-~÷oJ&ʿo0W0ۿ7?iu)uǷ/mgtsJ_QM,FsЎk.VqDg^"oXάQ~Kp9Jt%B9YάUvKXyvyv0+19+QQ7g4iguNp98^+q'8^/q/q8J w?BM1ܴƁG6?tJ}}?sνgk]t+?ݔ/~OO9{jW|tkV;OOeiL1 zw ~|}37oݽj޾N|;km1|^UMo.ɫխYS:Yά [:>^ Ze>e7߱{֍M g[Ƕm5G?Yzv8wu!4CCO6<ݘln;cX?r xKRԁXVǽ<PաRpFJⸯR,U}Jμe{9X².c܍|倲ejyW!5ãf{D~d@9ׁD$ 83IVIj_C e{+pf@rg$ֶP3>%0Qʸ4j@BH)VY :  "Ka&68SȗA\!z-32La=3PJ)iR0,:YRpP'k)5$*U)`IÇݕ~*/fq%g2dĕ\Dd%8+_#Rp ~I3Ռ/Y~gӶH,qga@A˼c)_@\yi ʈ+/$?aof;YB'dWB'D~w|]@ (VZK./< %YB3΀>с%yr%YrG\ H"q$m Rp1OY{FFoF;=%?}ZcuّJ6DklVfSen;i ض tB{A:-S.y_:9Խ T#+Po~>b /T]ry^TϬC;*;~L?ŎsZ1ǔcH9#v;~Lh2tl|vKSۮi~Su}~js[-g?+lԖԶj?~fs͟:/۹bq߶v}fug;Z; T,+Й(2@Z:@gV_*.R&|ѻu߯qn w+h[?w vƶqֺ]Q;[Ow 3)oS?|.=[đa{Yo݁B́C;MKI:뫒ڕ H8\>mGD{XQ.V>J z0]FݧNr˭Џ-Xf*]Bc33)-,uDo"RMKboތu,Q o51| ;*Shw`ɖrp`f& `R$LL!-d5:p6yU+d)+y}S?0ٖ[}QmBf6L:E!N j H:$NF"^fcֆccId:,q8;{a>2.k.+9d$3?C80m?0i[L~K2(yY,:ُLMoO~JUFo: H*D8ץ$pۙ p \gp8. vu|sW:8n߱"Oe >2mz,k-2__{DndB 5m LyJ}$du&?gKf~ֵiKXD4է~u$Am\zH$A}a.q j8C]q_}w1.-k{`2734w*ۦꂗ0EfZs`2)yfhd2w)Mffu`2קe1"}$̵ԁ\Z`fnm9su˭,q[|0ԍ1ġruAmEghljdh>u L>wLv$/ʾ6iެ@&Ca^23pαdf`5L27>fZs`P m< c_`2=L;['@RցDRuIQ;.EsRI$Eĩh]րSє['k^q>rNȹm}Gns0k52n42:/m3S>0d{ꭍ`n%mz42,yd{j+ d{*yٜH\2ٜٝ-ҹmH:?v{6+K$=$s :]ġX+h 'ffw`2Ԋ42h׈9adfhP&C>L'Opihh6^s 6L6np!q(<I.@R2 )j N[=a^}֛YT8"93uf 7}B&]ےLg ^0Mb,2#Zdo24ثO< v7|2ܟ3MF[`2mA&Mqs52x*yLDր\dDn0:".Fd"{D&rF|눸D N>7L>a.JZ&g/i fr :Ib&;ISdcWeԚf/^,~\zȤL6 !>XB` I6 2-"Kd$>x#iZOAlIյHAXДުIo`~5ױz4\47/>nEd'ćLs4Ls@湱@(izރۉTfY`4ࢫ.ĩjOT~&*?:Gx?e:PUN'k[jñf }kCC<֧+diQԻWEqvFL,8 F?n*K[-H}<lG`aZ-=Y0lBV%\j@Ec 9R\yPdH;!?s^O0_+zz^嫭,(T~vkL _d/t aS?oװȆu~훷~;;0V'>3 $')֫~Bʃ_=6-VC- -ғڷq&*ix!o6Ì `eW=nT\I0dR/'lv =nPw7 ՘5Bnӫt9=dWrv܀;us=V!SPH@80( 8q|8|)VyK=9^q/5/@809Q no~Eak_9ho~Y,͏sX'8M;̊EQU!3e,`A4 *3ȩbAm0MN/3'SsQAT~*m"mh]ZTꮼp|{=Iy#HlӐmJL Cz-1666JՍ4k,d:5gM#6Ţz*i3cSbHڊ%Hʪ8[XK ) $!f6I4%O]I>K/*^pH^Cd/LY␼5@&yxYLY> endobj 14 0 obj << /Length 13524 /Filter /FlateDecode >> stream xM-q&g)V~,-6 lB–hȁOE6+Sk G]SQ[}{KjY_ZV^f_z7}/}Oey{ϯ~O[/~wQ^F-)~{O9tOkmݭON,/{s/ߍ奧8nl:|u@2_:?`|}@Ľ>uSx3@ʿ#x)"_dwʯNy;MW)2~ /+ib?y֦~ѿyO_ϭߟ?/%?饼Korz8O;CIeپ%g/_J[o_VP x5/nea\Kߟn~u<%/W1WWh~uno-EOJ%?L&q*&8Bw:ʕUfmǿ2f%sru1sy Npy^T'C*9z j.'˘)rMҫPcYTJM~AUSOvvKwZ6ZcBdu.dZe ;%CA)M/fgvIPG6AiX6X %q1'c<;8l/J-H>3IP?pꩶ'mie\C9)('^+ SdB,EJžY_(8h=3V;xJ=="5/QfPkVU#`:͗,zF-F-(kbB`;[d<8P[9rd ;J˒K@XZN @G%G33S,zF/dUBP ,'}[|B gAtP^3eR&i+,s/'VGqT(K:fvVK7vF 3r J{b1d԰vO$݉C2R2C ;`d%{T6KQ(Qv\DvSJД_H”@4lJE92Y4KjF"a7w`^`͑LAX`,9t藱vdr7F-rJ-ĬAXb^]!މZzI]:KTΜڅBCD\D$>~9e˴ݛZ+il,@pGxp,σanO#e:s1JWN{poqyVWtwF\P f[Jy^;7V9iEk64/Fw5KyjHyČs]A{/;⒉':ԅ~=>[y٥&wigԂL'Ĺqgp/₎eyW$Ο'c N!+m/o3^VkOsnAg.ݩއIu׵[%c1WHy fk6sNݕQ'?~+g7F{})(ϳsFM4R1{zF\1ԓͪ"vkpI-=%+;PA{D\>82G'ayQD}9)͹Sa:⥢3ʛZ'6 Y}~|p1K}@ybiO LF}Al׳4?=_҃יXWhb،yR?^kbkZ0[z6-t<sv3M ~I=HXfMOW{(Ofn7x,jc;SnhvvxJ>c=j:Cc{{i@ݞ7*u'OoX.^QǟݥDmᕩQv :߁Ǣ~q|5zYz9]sY 1^c.q">fF}޵=<xXxp=quO^ ;\_Ĩoe<˝r{~ɍC==?T6u܃F[f޹qz>Jﷶk)S+1[y(}]X?5/=DbwKWVcNni/7E3g?{\[n`*iaBo6j|O$b·暨/mb_w]p\*uuol9K)qj6q҅,b"QXxqzƣܸ1^tbS Cl\pK'bF}<·^߽m{/bb3K?6wg/"F{ԧĈe ͝-Qcն>f|O\m1cL-ż5l7#߁N'V'jOI&s:7q|~k}!]}*Xχ:׌n^H7/̗df}UwjK{Ꞌ$y'w{w.Oدw'iՃC[FlK5KE>#=6C=O^5w.AaGѨ/~m {ڇ̨oa3ƛEȇw5Kǜ̳Ḍwy7w5 Sgs_k_C!BxD\=wqY VgVwSA7n^_y=f}=?-u+uvԷ<*w2Nl5F==@ȯg'ߗmġ%~k{juŒߙ5=KDE]sPxz/.ŬtaL臃Ѷ,$e(ϋNbn|OD\Ykbߦݼ3h32pшNJ.\y,jwsi}MYcR0IPֳ)Ϸiܬ>]2uwkz'ԨNׄ5Zǃԝ=Q^z:ؾ.Xoye1#M'4x|`K{xy-.%fjh6Nx>!FQC{4[K/ÉG5Nf#x^|Id(0:F<l(qF~х54Ĉ'6 yz+{x_; F50`FyuaXfċq1P?K+q|aJf[>"獍-mXz/olᕎ(Ϻ~PGtZq&Fy>\|GĨ/M]͒x^O%Fy<Jı?$sK@ez{aUxD}yĸdAx`"2/=>uQ,,s~b}13srh[lf9^Oć(ω-tf>2kYXb7_k,}XZ2]YGsOdb`afWFy]VFz)\&w2K{uUO=\y`=6bē 1O^Ԉזg@]ҟMxtiÅ =tZf=BwFys1kzD[~x1c/X7.fl3gLĶϓ=O< N^ svOjwnΕsXZwFF71Y8rwwnVm=.[8֫{l70W{(oDzycy{7kt{Rk!^,Z^פ#oVGJq< $.80g~yejT kz ,1f bb~3#?ch^ky/YߧnRh:|e<ҍO|z{ϯ~Ot8/~[nuܡ~?9=Y% @ܚu^qI|= NW݁ eC6eDZ=6,D{Psu YQTȗԋQø~DY.姳-Niɾ['np fb`xqtê@!6~L:UIJu~16Ϗ^)O[_@ߺ!a`z"} glNOŋ؊ʜt :xm[ uik02ciklFȡX uh!3.{$q~rzbܯƠ]k n?_Nݮ]]5Qg޶Fb祡qt޲5Ӗ63fI4&3I:KSuvKyۍxҫ4;z`(1c띤MfK?%c1^h-HmQnn4KMK[ƕ[%Mh_:N>'wi9gj,tJ{Sw?ߑ0ѾtU9X0=ݖE Q cO|񒟉ul֡h_:9dY.Hh,=uhŅn #ol>}Dz~#xq=Xt1q5ƢeF榮O\܅^<=}aO<:57z3맱̨/M3nlJƏ!N܍ؗ9i֡Kflmu Mf72`_Z0_f+/Q_7_5Q`K [[xѾp553c뜢]HS+y.j,W /uj037̥JxhGkEaf~}*mϻ#,_eq}&F}WtiLf,ot|GÑ:{S}.:u/+~z===T|,1[3ExhcE{|^>k"3ڣ.o牳O䞋؆6č牞JbģX >pgo_=Zvqo1/?ߘó{{#3kUFgEX\s6곪[ӽv[gZ]9sZ6ܸނ,T5Θ{&b4Q֐"bsUQ .>&Ž5bk0j+3ׇ0^Q~=Cb{UcxhKUG-j[`if'VOԈWeiMm 㡭ub+,^G 37X[bg[B~:۷i>;xtC@OR?i[ڦ[SJ3~O6a\u@oLy$bHςߋxXoM uE߸?%Nf .{2\'?qOt77[;qgw'tKky=zgNmSӥŘ,=ophO/ΌX܈Z:J3׶kG={pxbh{x͝Ͳt11ꋁ^XKb+.FlkL3>th>6PghN^k0W7b<џ2ur-MԈgN eF}1Do<I}A ljI/K3|10bxȯgW/XZ5t 淉-?<&Fy94T0kb;>"FyrnhM~ L]֍,K7gUqaMtoOl\ZF,K>F=si~#=r/i@\7d^6^2gtkyJ\`.Mک?m끌Ә0 1ڋSfn~={]X\~FP_{ K=4.fMh8}&2#ZXڂY*f [{{,]Fxt\?f51KGZq/j-c:}?X=aī[+Nb_,N|{?v= 1ʻ׉>m̌xS63O bgll Y[h`F}uցufW̨6ף fxdF_IЖ IJ49qOҟl[SksF5ssWĶv2A=Qmds1O>0#^nˏؚ=Q^;A7;{WqXڏ߅ZKJ"ڶn׆mmm[ҿڶ׉XZ$Ifl t hNt!Y' :8Ѿu\Ҏ+j?^+z;}' 83[KoIei@ҟŜ̚gwȯ:[Kb bfl} i4f[#a efލvv3#dzZmn>ڷ:4ڗΗ77׎[foHo[f 5fun~ao,51\N={Pk{@&~gO􇋥NP&^oZ!dfz>KEܘ}kH[ZxܽY#q"b;7==exFoXt%קFzjKo]Ay=F}Vt+z 1nfy`9}oC}":'>#Öei|$Ŷ֓ qɰG23㊭cmqltǠ[Wjl#>/ĶumN̺˶ά:ߏٶnbn̶ށ}xά%p^Ė^u2:zFѶ|r,!Ķƌx4̶;d.Nww[ݽ~?ٯWKn^==Ğ/0{zĕzz~}띝{=[>敹{~^^0b+o1_<9R Lm1ݼx2K{|>5|کџ%ߓ.[kÓٶvGN޶f!|TĈ'%"bl 0A|zf{um ϬUx1lqqWn?],; =lkhK2p=-xoMOͺ󆭿{Qc͆ bu]~do-/d vF{33:&~Ļö& ['wuhۚG,qߓ&qm[\o4'Z~{y$F{c<7Xy%ߓ8[sf]cF߱5 q_ݨpOn}_ƃ^ #GAzF}Cl[^ܶxo-2:148oe`/sWwӱ5quk)S[z7lNR{y6o~6ڛQjfݨ1e_0lkhccb_O?ob.foBvF<0om6-,c=}6ƕr풹{r'OgFwOš_m-N\>FӾgr.ӽYn&fb.FPߏ͏xխ{dnO5[me5F|hbijx51ʃRĈgFb߃#oǘyMn\Vш<#֑b<܅z=_Oys6⽉{s{zh[u:zb=iQ_D{!zxcN3cA/J=ܴ?[G}B݋;ѥPjn:[ykC_^6ߧboaĖ߰^cc=EMy=|2z^\j|%?3f$Lbm~1v`lX1E8gf􋜃/(t%"weEvґ85tMoC%ZKe/Q%Of*DO#'7x2kyC8%3$ib-~^r0vdlŘ6=Zbl=1Vg c9X/ggLƑg:\2ηt33<6#Y~䜄g'D%qNSLm 田'# -{kqemD\ݘc3(u/δ"̖q Q*aq6>O cu6\IwhU췰 csL'.geX.? B4.9{H .f/*~Tk=.Jٖ2Zm3s0ᬄhL᫜?*>ЂJ3ROUtHyE'jF*E|a,a,gTO5'Wf؜튛/ڇH<Тk""aa$2aȂL L2m> 0C6g%__`aoc,RD"ܪ,V$2aA3m˻Zu˽Ht˂;]Rc˜a$DX{\+Җ`UDE_u ؍B\26gc+Jw|XUW䋴M.K^ ̈LFh6tQuPm:mP/ll̕0mgdgRqTˇ*j5oA.xTOHN-IUX#LkU$Bl\LX ٧]Zȴ%OH3u]u9Mile{沆X(jw[F"Uˑht:E1{12tٺHj] _o ]J+؍bkk۸"(d~iH'͘Nτ::Å]\i<Ba6ʋ!s^r3EPgh6{4Y%(C>PlH؍R>~JX2fgdL+*f6K,Cl`ΌY/>8>]J+Οӹ.c. M9[?n¯>ϟ~_/~$?~o_-t,{QLݺ~o嗷w_ܺJ-I( 7}oWU|˧tgP-)~{OY/ujQԮ3U,lM?4zY,M|Xt+nnjm5ʅRn}=7v$tyOV;~NO#bO:mt||OEcendstream endobj 15 0 obj << /Type /Page /Parent 3 0 R /Contents 16 0 R /Resources 4 0 R >> endobj 16 0 obj << /Length 13492 /Filter /FlateDecode >> stream xˎ,q&y\rHHH hAp1CR6ן0T]Gf&?Vtd%W|__o}v[mm[ۿO?A_/~q寿U?8ߺn77m_W%neͷ5v1ӟ:\[wFyP|~w4qx,Tzw$f' H1JHw4DwNi / w|͛j[}Y_w7ٯR[#??UN#3/dXxLw ?:DxE b&܋sic= ץ;u< vKd,:w!^l"ֆtI#w7u9h/œZԛy#X~ΈC/gOjYNjW-X/= ս%j7%lif߈-Wppndf#n>3#)I\ĈgJF{呛>5u7kzEw?OϧY3fOՈ+zrYUx_ĝڮW{-Q^.؞wEzG#*hr8cGD#;,31ӢT~>h/s=E\9w2sRg?y[Tb`FySC؆rA?+ӏ.f#O, uxި/z'bBz:u'Gg{2RL󣢭6פjxS=|Xx:3QTQ3O?^K}M-ˠ OQǻ=HTȏhT}4>V}ig~̸_gd 󳣇IĈE7qx84y'FyWusIܬ<, 1[ŋ}UP1g?'?~/b+.=j{S Vf_U۵Q^;urkz=,a.F}/pOno}Fps=Y1ynqM >f7 E͏Rޟ, ^hYfgM;QHJ.{:FF{;O?N8bNpA=̥O˯MM 3dn[~wjgMfK&0=tNtxiϼ9G6 ˌi3I jy70ɇ-S=ǢF{N:3uʍpog3L=݃3 |? |R;qցEbMO~]J^iy,ۛ)Xaџӵ?%}U:=/a lVj]s?1׎k7W.ŝOMVǼ+ܸ=?ݓCܞJ{mSWO=l#]â{XdN杩v:_WsIVޣgy푨^1O\q6LmsꇜĜD(diO\&bw:bH"]˘?5K~Ìў48N暨Q<6ʋI]V"NnZkx!G>n%$n~1-] 9j:[zψ>`b$kD=ݨoJP&&׳'Qe<@'-ib2qvRg>khÖٞW9 5Ox7v㞟p'\{q۟wu0q0[׳=&u>2uujw[Kbnv?]{':1xx[FЯwC7ējw:^]y.4k}@>E}afdzk^~|+UWwr{<(+ċ⽍{ jóI gn潩1cfij,9hOW=ԉ!>D>hoLYQpͥ'OWjīkF{f6?_>u-eiRqd#3v0c>}TԎ+Kdph{0Cx+ўXo;x1Ӈ>%F<(kmdnAΝ<,6{\^uO!C~?Q?IVz+s71͚Q|AdFLxl_hlW`=Fdp񌭁GlC_dDĨeb,2pF$XbF-HmSWcnݹ{Pk|ثQ4ꋬFDža23[|̬zQz*ģĨ/d=]1'=|8.x]>D}‡uxP#Wt?~r'n]s8̝^u=toaܞ2_ʻRwoG}Ḳr'Ķ^,k4sˉzv}ip6|Xb+ﷶϮ6_W,Yӳ$O^='x\:O(/~8m[aA_F.Dĵ&m;{_v1*x̥ǢFyW==ke<-Ĩe=B|{Qx,&c)Sw'q2NZz|Mx_u 1]h4c<tRO]h7 |爗[O/ҫaRn8oĈwb5G;!Dbb5̗dNfH 3[zMfF~D|ΌK7^`Fy{'%qE2ߎY߇/3ە?x4Nf!F aF{zeoUj,œer''_W ^͍z՟c#F<4Exm~,ĈG6\߻13KeF+ww7fnkEaFs5kfO'17ۉџh{#F'C5%wZ}kzf<˕{{=652^JuM1¬f~~O|>_c@㱞svK{WJ0߽f<c ,Y7c>)136ΉjAb}*&u1k~Fza/nǛYs/ݸx=]{<0n H~m'uE~Zk}Z3sA</77<{:1"|e'%F}Wc =6қwFyZQ|Ws4WE}̌Ӊ(o1&g6c.Mҟ\c^ߋyU|oA)b/ n0}4FwxkKtbGՆbbm/֦ Oj#:Z}'en߶QWdk{x> lY75qwz?ivwzg|:dnɮEKESo~{KAҭN;'gG5[3޽~+>N:2ж/S[?p!i;plx(ЦHGچhjwְ.3@"+ z1j}]r/Y_NX~<{Q u6k+vʈG7 mnR 1iȄ.SO,[j"  'b:0طp6_IǠ׶^lͬK#$]K#$]c3ڗFeUC-̀=u ^90X:(i{/=q{}qR7wO7|9qwvIԖt 8Dz"._Gf ^^hٞkzְgO[zpX%ҘXZ'kf,M%^- o7eKi[cٞ~Čw6--t{y u:G]ݏo,5m/m-{Wjl 4}8nǜ%Z朩Wҩ+Ӗ>M|GDUI3cäKDw[mFAF\>bS7qbK~&ֱY}S+g h֡}f^:5t Ke[=ڗ8s%bcՖfYOՓ`֭b֌Ɍ'1G:usϷ-}uh(k>qq{z=y>xuj<3A nfOcQ_dfFyٔK;g]C/(s5ӬC(hod7`֩V^nj3<3<<*^Oѭ> <}ikQkz:g9EFEVR\XZ䇳=^+`f,o K3K{nф׊~|-sT:'ڞwG~=Yf=}&F}WtiLf,ot|GÑ:轩>z麉E?=S*KK{-ƍ`FMh{ -y:"M4qy(Fn­ϻ&پ+{q/]ܛ;7&qxޞ:ȌZ9/|{:zcOܝ-}Ƽ;?6hwڌُO㙓rti1f=/g>>*wvOj41ړC3<7EVNfxA=-=t>8ZQ|,^`F}7Gt{sg,]Lb`뇳--K[zh]",Ml,11ڳSWbF{i--cblbLmKS'5٩CQ_L,-[3O,@<|R_4BpqbkR >bbdb7L18+K&"x >l`n~,ìmb&b(Q^N, >̠vDy}eQ\85{_bSx`Fy3u#s1 ynܯ~XZs>џ)^x퉫Y%rOB]xG*kPPkIIV^DڰbumkYwP:1K'w07ԇXz!F} ^,6=0g {HR#uO\qg{Rw,ؘܛz=y!N5HfFy\u m=tkJu?ضn׉Yv?{֙U1 C\̍;ϙ$K{S׫Nf<[W](ږ/^:e<ض=ޘU]ٶv֚N}kr]ÞzݛW#z>tO^u'O< xc'l_=>_WnOy'n{unÈ|)blOgckK)3Lt , b=L׬jF|Oo Of:1{ۚ!طvn3 [S#s'+5h|b 陑^%֭5pxdkEiG{Ŏbt|Ol":ΙQt~4}wn=}&Fzطi`m^^xqzv༭]ݍڶND͏׭[ǧLmݰ5:q2KyhuhoGYқ9wx'F{S?u 1e qەXو8ݏmzxt,Wӽ_o]_Oo뉛{pO'~ǜ~*Y*WZ׻˵Knɝ>m~}Cp~=偋~ڈ&g^qUnOZnL={>xb]8=15\}|lbīs7?^{z= ߻#xl7Y etO^+j<qƝmQ'w;mQm'w^2_y/I[ %:?q.O9}(VA{ŝA|'f䷆ۣ<ѣ<q<;/_1Kxr\fW\=>X;.u1ш3/-7w2W.OڨϖmNOo&jW=n^m=3^'/Z{ݩߵ|f' ROsݩ_0Ϸ|:JGzVb/E&ě='5!_u^O<;pͽ>9qw~Iwq΍+⵳3S^&^۽Y1Wrݸw|M{~]sciO|cW_r(fo qv/Kuۏ(دއ`mO,!-az;u12k{4:d> 3·`J~[gIhUu#k~1v`lX1E8gf􋜃/(t%"weEvґ85tMoC%ZKe/Q%f*DO#'ΗxW!vŒsjr]FZ/9s26b}V _Fkt_r1E}Ş3l۳3&H3?Y.Ykl?`̌:q͈l߁09'ai Q`G1B#Sw@[9% DHyuByiYE>e8c7،32"D@˿3mtż>BH)%F܂nJXdSX19;!BĬ4Dҝ?$d`Z0-؜+# Y3V6>en͇`F?xR/8"˸ j5F?ZEeViLL8+!S*'rʨҌSf>a^I0Jc :e'EXC$SB$#Sq6Fi% DY?v)Wd)Xkl?5kz"uM$­bE"V;ӶU܋D,%U@>f/Y NBUgո"m Zu HTU`ތ(!+cs6ຢy̗,91YuEH*ڍд"HX̌md FkCQ.,P զӆ 2&\ vKva,KU|@;&]FDj:[GtI"4]5ʹK_E"ńչ }EL[d q*ى9SYU#єVg.kux=&{I.>Em$B^FM@x#Q#.CDuP>еpkbKݸ!A +⁞Bt܌8zL#1\%ƣ!ZOf8":p9%7^/5qm#G[8X?+(#78+cvKKN\J?bf{r Op|3+̸ߌ٥T99=Д&uHF-No_/~q寿t{_d)onkWno:/Y-N: u6eq8_Y~]B/;no-߾[X[traLw~?_~_;NRuN"Ij)}<` YjOyendstream endobj 17 0 obj << /Type /Page /Parent 3 0 R /Contents 18 0 R /Resources 4 0 R >> endobj 18 0 obj << /Length 9983 /Filter /FlateDecode >> stream xˎ$q.}=E.g jЂB! 8_oUWfMV`;:2.~w|%_7?_~N2sk,s/|w˟䠧_˯yJϫ?տo]>`<__PRznzu=r9S}9|u@{_g|}r}J.;]OznWO%o$o,'dzyX2ڔwחO?'=qCտ?ߗ7O {9w9 u&yePJ:xXr~w߯/_ӯloeJ pzO^ǵuOߎ #倒/_0s_W_xd?I㍴瀿1߿o?^%ݑC!}Tnr[}=NPڐLfnq='X#H7Nsgp?rUgy}/{,vbH8O(i,l$'Xwd}.&- VtAA;;籹Yy#ihn@l|(ӒPp*L]=u=svo2u25膆(Œ#=^oAkz 跜gwݹ-E=3wcp:)ן>v5/\*2nq7O_W͍F2L{{=+v`JpBzg9 <,;qQ`> RpG['j.C7ss3hm>W1SOww8w<j;?fOr{z'5[FzR߸=uQ#?-K~8zX{lGwt嚤vՌY;ŭ7oUҌgW.&_t𑰙Hg'+d|Oqy;ý?U}Nl%/Wg/2K|ͷ R_#,y=_pbf/҉ۈ<$آzt@MLfڞ$˝{pM]mgw.szp/cPWnO/ep'N^Z V(:y|:$)U}|BbNdF~t4̤=\-?=p>7tEp{2eOfýyĝ{׃g-^y;.]s7:G1}~:Y*17+'51gA9DmbHtEP奫JXʨ_Қ]y݋1;wXU#m$MfgJ eIITk[K0$ X;!N%Lί&U{ Lۂ)h֨ |O291/!c6̨y&@g]Z4*ESAD R L5zni%O,ZZB&P7hWlx;3+ܭ#;ښl0;Ȅ+\A0p6G58=h34Δ'!:A8"+2 Z{:r`7.J{8'avڃ%h맥Qzؑƨ=X۴UAicD1ֻ07/T}~3l2v18ɨ+tfN7i1VdCϺތHHZ#2e2&;xlJ&XVQnABK:vmmMұ?~č:;q I^1w?xh]9_(.'Ì1I} vs6NluatYHgg[[~,f[!!1q<$؅[Z%uI5(3 cw%ĞFV_([1K};%f= ^LRcEbA{ln O3bTŪ{P[l=f|Oem s|[-O7M;|3^h$i+xgk5 $HM,v92`*އW`F{am qغ6bŦl:bvoZ:5;bMF/l:ےzz}"η5G1x_oAh d(Kl-vεbF{apE W&O ؏lp{$u-x4=!z4C=~9s'ݬ8;s ~/eK~͵pgsg.VWbصa^{h07yۍqS<?חĞF8;-=u }MV׌پWm2wg,MўVGK46wDb][piÏ21{}xu6Klb} Kf80w?WjKMl :[]C]cSA-=bgw=hy,-MY;]m';t&[sj?^Cb/l\|R~N̢nfAL0tkzF~8PcΝcP7=O!~?qˤ.F7g_f(x\7c~>Mo73u㵼N~? .g23z5=F1P%x@} wvW^7j{_{});^Wf-/tL݋: =Cms}fl9Klnb=ola#/;f'{1s>?̌ŦanJp1a`|KymڟgYnYCwo'~]հ+q6|F{j“hzth;aoruvp569s3K}xMls2gF}}鋏̥1b<؛7򛉽ҢٽQ[ΌF}pa"8[ւsc1ƣv޼l{~dU1xݸ{>f;N=Qߖ(u;5c[%0{aT2ҁ#flcF/ޖg/[ ]b N3Ƌeb44{%FֿxĶFҡFz5^`ސo91w.r*w2ިш/q-5bcaT#?%{+%jL_lbN,7=6K~L\xɏ+#enYyru![kx h7wwܝz;푸{Qwߕ^ҟ@lϫcoh2wjԶNXw=@l@y@kym{+bof=xq_osK_ʙ;})WjK/p=1wmeFz[<9'jlow6rLm7&4=h3x:uoh{6b[|36%(o3;!^Mb}_{-F,|ݹydjW'h|aohM>&ƭ P3@{^]}&ݓz=;7wze=F}2.t}ݸ}q7w3O{fnըmJwgf}oJE?wIl^y#:&s7'l{$;l*^OlO9Z.ԶwbA~}SP/jO68^_,M(+o| bgEsP0L\VjۛsjeZ^"F~Z63l~ӺwtO LmI .9k.f<+[OA~-)fNF=x;9_]oljۻFN~l|oLbW`o̒__џΜ̺7q4ڣ%Q^U}g~O/Ex&qߓjދ\׉z11kmoĜ̵Q>cu>,e{˶^Do[c[(O+ֳޱ {}Ǒ=E(ow wa^ UwfmXO/h:q{p+6WG{hI4-#?FL>E|[|㖺ݸwɍ{>1O(a 1ʣbg^+:~\:&nfo>4u7K~F3m7z4ʫ6~F~ݴ0O,bK{wG/ab|}#?F~o퉑 gvjۛ=x s6K}8$V_E{Ĩ =G<5b|oCS'q . M^֓07n F}{h1=6[w4;޲S ϋXg&|ѶcN뙈w?QvԶ=#=L:;y}g"&| <Щz4CS?t3롈wxNb0h<ŏګ[ިYSoD`_jt="1򓭁ўXoz˵QhgmX]܃ۯggj'm[r_BdOoj^hl>"^o7-]fy_Uod bOjBGMhOmk7ky}wWǟx>b^fg`O <*%U )[YMjb:jY3t (ɬj5L _&p"'nA{R4B>UGbKv3sVQRUڲTyt@sEx "6̊[6adzoRF$5&$P'ƽ Zs9[۵Jc$n e<B\#Oc !CHdC25QS.?=˳pVk`m:lѫw>h[;-}8^=lbIe{/;,A'giIc1#vEE V&a{lkO9_FޗbT ׽slo铋0(}ombKz޳'؝/wu׹̶нӃHD`]#v6_=p;7}mFl䓇 @]K2es۲&ܾ^EZد~N>wcgj}C;scV*~GyYbkN ;;ؒ'JNNyo[2֖VjiVO 08xZcX:0w?xo%ٟh闟~//F \d*U.0sk|w˟!ͯIC鷿z44҇qΞױ$h{Ov2|?Yy}{XKk|:7~}wO,o=ٺPM^OW?z?z^$9Nьul]|o aendstream endobj 19 0 obj << /Type /Page /Parent 3 0 R /Contents 20 0 R /Resources 4 0 R >> endobj 20 0 obj << /Length 1149 /Filter /FlateDecode >> stream xXMo6WR`P11Z=9" ~IZii#!i-.c(l1J q/~Խy;qv) gf `2yǘgCv5oftнv ʣ`j|QlV]eVZbj\61W5N<+sFԉ~: 5b<4<,ix?ŵQj>QKk'xA CPS*(>4<߄)(?u ׅLWfOĔjRKcK^t绿nҽ~᫖xow)SuiӴmĄTe cdEդg.a'3Ȋưn#1Տ1lnF#OF S1#a(}xЅ1ؑ|nNm3=c|-P2T0BFr2mǥurJ~F1T'|zMGs]E3>Gv |ȭ=^#a*WQs5i["͊M$q{w~}l8u=]]mVln;ֱw_?byw zo/bendstream endobj 21 0 obj << /Type /Page /Parent 3 0 R /Contents 22 0 R /Resources 4 0 R >> endobj 22 0 obj << /Length 1142 /Filter /FlateDecode >> stream xXKo7ी|(CKMaE !UD ѠCw9ݕAYpoF[ţ) 5Za,(K<%wz(5A|k>HJ*%~kZ-[S| -p/'bB}kAཌC\! L(+x(+D#CuQ S0य. H+pb{B KQl]";bt=*&O'Tab(1d|:FL>"&P۔?NxԼ7 C;mAf>ol#ujdBscx.Ǚ[/0 ^`zop95,0;v vn66&^⻍Dv&O<}Sah!H~,o:˹z-aC]n`3XשSVaV19- f ѥWWp*}PpU0'z*3\w;I(YH>O({K,~f9i):B)&s6>5d獱sa˥@[ykN-묵qg%.ɨ ՔX}yۋܦ%/Tٔ:Z{ъ)/{%x9 @ hFV;ƺ>㴪c @<uchidh[Cwg/XG*-+'79݅dgu+o&%ܪ1y&BGc󌉋)<> endobj 24 0 obj << /Length 1359 /Filter /FlateDecode >> stream xŘMo6<ڇ2tl m@IE WЃ~I;/u@=/6NE)tVGlko׭zlԽz|kuulTo_L[^VQu߁6F.0pn'˙0ZY:z' 0d 1œAڀp4X$!+Q{7~njAOA 8VF՟9ss`C C=j}6| V1CXFp\)z8ǻcKKe!dW.rlTz#~TUv`WnwOwXmek;RcmD ^5$Ku욨YuJ}5]1C:dsI'sK }v.L ݩϗi_qHdc W< seӷIAR' Wj h&igG•+]=Qx. rrbbr br_GQ$\~Mkd ,@Y4W;;q*ڱ9EΓnּƱ_+Osy'u|~.A _wKʡvzaw,>~67|͏8gMD.O0;Pat<}!K+b6Ʉ^l?q4Frt1ev2i|$>e/;6CNc(g # Gal)!Uw/SơYYu ff8Pʛl2ǹt'au>b_lizc߇iBSIs5i^<нmp'4^%n"_i|gQN[Işǧ5/?dq?_I/i*9t{|>px9&q0Xkendstream endobj 25 0 obj << /Type /Page /Parent 3 0 R /Contents 26 0 R /Resources 4 0 R >> endobj 26 0 obj << /Length 13524 /Filter /FlateDecode >> stream xM-q&g)V~,-6 lB–hȁOE6+Sk G]SQ[}{KjY_ZV^f_z7}/}Oey{ϯ~O[/~wQ^F-)~{O9tOkmݭON,/{s/ߍ奧8nl:|u@2_:?`|}@Ľ>uSx3@ʿ#x)"_dwʯNy;MW)2~ /+ib?y֦~ѿyO_ϭߟ?/%?饼Korz8O;CIeپ%g/_J[o_VP x5/nea\Kߟn~u<%/W1WWh~uno-EOJ%?L&q*&8Bw:ʕUfmǿ2f%sru1sy Npy^T'C*9z j.'˘)rMҫPcYTJM~AUSOvvKwZ6ZcBdu.dZe ;%CA)M/fgvIPG6AiX6X %q1'c<;8l/J-H>3IP?pꩶ'mie\C9)('^+ SdB,EJžY_(8h=3V;xJ=="5/QfPkVU#`:͗,zF-F-(kbB`;[d<8P[9rd ;J˒K@XZN @G%G33S,zF/dUBP ,'}[|B gAtP^3eR&i+,s/'VGqT(K:fvVK7vF 3r J{b1d԰vO$݉C2R2C ;`d%{T6KQ(Qv\DvSJД_H”@4lJE92Y4KjF"a7w`^`͑LAX`,9t藱vdr7F-rJ-ĬAXb^]!މZzI]:KTΜڅBCD\D$>~9e˴ݛZ+il,@pGxp,σanO#e:s1JWN{poqyVWtwF\P f[Jy^;7V9iEk64/Fw5KyjHyČs]A{/;⒉':ԅ~=>[y٥&wigԂL'Ĺqgp/₎eyW$Ο'c N!+m/o3^VkOsnAg.ݩއIu׵[%c1WHy fk6sNݕQ'?~+g7F{})(ϳsFM4R1{zF\1ԓͪ"vkpI-=%+;PA{D\>82G'ayQD}9)͹Sa:⥢3ʛZ'6 Y}~|p1K}@ybiO LF}Al׳4?=_҃יXWhb،yR?^kbkZ0[z6-t<sv3M ~I=HXfMOW{(Ofn7x,jc;SnhvvxJ>c=j:Cc{{i@ݞ7*u'OoX.^QǟݥDmᕩQv :߁Ǣ~q|5zYz9]sY 1^c.q">fF}޵=<xXxp=quO^ ;\_Ĩoe<˝r{~ɍC==?T6u܃F[f޹qz>Jﷶk)S+1[y(}]X?5/=DbwKWVcNni/7E3g?{\[n`*iaBo6j|O$b·暨/mb_w]p\*uuol9K)qj6q҅,b"QXxqzƣܸ1^tbS Cl\pK'bF}<·^߽m{/bb3K?6wg/"F{ԧĈe ͝-Qcն>f|O\m1cL-ż5l7#߁N'V'jOI&s:7q|~k}!]}*Xχ:׌n^H7/̗df}UwjK{Ꞌ$y'w{w.Oدw'iՃC[FlK5KE>#=6C=O^5w.AaGѨ/~m {ڇ̨oa3ƛEȇw5Kǜ̳Ḍwy7w5 Sgs_k_C!BxD\=wqY VgVwSA7n^_y=f}=?-u+uvԷ<*w2Nl5F==@ȯg'ߗmġ%~k{juŒߙ5=KDE]sPxz/.ŬtaL臃Ѷ,$e(ϋNbn|OD\Ykbߦݼ3h32pшNJ.\y,jwsi}MYcR0IPֳ)Ϸiܬ>]2uwkz'ԨNׄ5Zǃԝ=Q^z:ؾ.Xoye1#M'4x|`K{xy-.%fjh6Nx>!FQC{4[K/ÉG5Nf#x^|Id(0:F<l(qF~х54Ĉ'6 yz+{x_; F50`FyuaXfċq1P?K+q|aJf[>"獍-mXz/olᕎ(Ϻ~PGtZq&Fy>\|GĨ/M]͒x^O%Fy<Jı?$sK@ez{aUxD}yĸdAx`"2/=>uQ,,s~b}13srh[lf9^Oć(ω-tf>2kYXb7_k,}XZ2]YGsOdb`afWFy]VFz)\&w2K{uUO=\y`=6bē 1O^Ԉזg@]ҟMxtiÅ =tZf=BwFys1kzD[~x1c/X7.fl3gLĶϓ=O< N^ svOjwnΕsXZwFF71Y8rwwnVm=.[8֫{l70W{(oDzycy{7kt{Rk!^,Z^פ#oVGJq< $.80g~yejT kz ,1f bb~3#?ch^ky/YߧnRh:|e<ҍO|z{ϯ~Ot8/~[nuܡ~?9=Y% @ܚu^qI|= NW݁ eC6eDZ=6,D{Psu YQTȗԋQø~DY.姳-Niɾ['np fb`xqtê@!6~L:UIJu~16Ϗ^)O[_@ߺ!a`z"} glNOŋ؊ʜt :xm[ uik02ciklFȡX uh!3.{$q~rzbܯƠ]k n?_Nݮ]]5Qg޶Fb祡qt޲5Ӗ63fI4&3I:KSuvKyۍxҫ4;z`(1c띤MfK?%c1^h-HmQnn4KMK[ƕ[%Mh_:N>'wi9gj,tJ{Sw?ߑ0ѾtU9X0=ݖE Q cO|񒟉ul֡h_:9dY.Hh,=uhŅn #ol>}Dz~#xq=Xt1q5ƢeF榮O\܅^<=}aO<:57z3맱̨/M3nlJƏ!N܍ؗ9i֡Kflmu Mf72`_Z0_f+/Q_7_5Q`K [[xѾp553c뜢]HS+y.j,W /uj037̥JxhGkEaf~}*mϻ#,_eq}&F}WtiLf,ot|GÑ:{S}.:u/+~z===T|,1[3ExhcE{|^>k"3ڣ.o牳O䞋؆6č牞JbģX >pgo_=Zvqo1/?ߘó{{#3kUFgEX\s6곪[ӽv[gZ]9sZ6ܸނ,T5Θ{&b4Q֐"bsUQ .>&Ž5bk0j+3ׇ0^Q~=Cb{UcxhKUG-j[`if'VOԈWeiMm 㡭ub+,^G 37X[bg[B~:۷i>;xtC@OR?i[ڦ[SJ3~O6a\u@oLy$bHςߋxXoM uE߸?%Nf .{2\'?qOt77[;qgw'tKky=zgNmSӥŘ,=ophO/ΌX܈Z:J3׶kG={pxbh{x͝Ͳt11ꋁ^XKb+.FlkL3>th>6PghN^k0W7b<џ2ur-MԈgN eF}1Do<I}A ljI/K3|10bxȯgW/XZ5t 淉-?<&Fy94T0kb;>"FyrnhM~ L]֍,K7gUqaMtoOl\ZF,K>F=si~#=r/i@\7d^6^2gtkyJ\`.Mک?m끌Ә0 1ڋSfn~={]X\~FP_{ K=4.fMh8}&2#ZXڂY*f [{{,]Fxt\?f51KGZq/j-c:}?X=aī[+Nb_,N|{?v= 1ʻ׉>m̌xS63O bgll Y[h`F}uցufW̨6ף fxdF_IЖ IJ49qOҟl[SksF5ssWĶv2A=Qmds1O>0#^nˏؚ=Q^;A7;{WqXڏ߅ZKJ"ڶn׆mmm[ҿڶ׉XZ$Ifl t hNt!Y' :8Ѿu\Ҏ+j?^+z;}' 83[KoIei@ҟŜ̚gwȯ:[Kb bfl} i4f[#a efލvv3#dzZmn>ڷ:4ڗΗ77׎[foHo[f 5fun~ao,51\N={Pk{@&~gO􇋥NP&^oZ!dfz>KEܘ}kH[ZxܽY#q"b;7==exFoXt%קFzjKo]Ay=F}Vt+z 1nfy`9}oC}":'>#Öei|$Ŷ֓ qɰG23㊭cmqltǠ[Wjl#>/ĶumN̺˶ά:ߏٶnbn̶ށ}xά%p^Ė^u2:zFѶ|r,!Ķƌx4̶;d.Nww[ݽ~?ٯWKn^==Ğ/0{zĕzz~}띝{=[>敹{~^^0b+o1_<9R Lm1ݼx2K{|>5|کџ%ߓ.[kÓٶvGN޶f!|TĈ'%"bl 0A|zf{um ϬUx1lqqWn?],; =lkhK2p=-xoMOͺ󆭿{Qc͆ bu]~do-/d vF{33:&~Ļö& ['wuhۚG,qߓ&qm[\o4'Z~{y$F{c<7Xy%ߓ8[sf]cF߱5 q_ݨpOn}_ƃ^ #GAzF}Cl[^ܶxo-2:148oe`/sWwӱ5quk)S[z7lNR{y6o~6ڛQjfݨ1e_0lkhccb_O?ob.foBvF<0om6-,c=}6ƕr풹{r'OgFwOš_m-N\>FӾgr.ӽYn&fb.FPߏ͏xխ{dnO5[me5F|hbijx51ʃRĈgFb߃#oǘyMn\Vш<#֑b<܅z=_Oys6⽉{s{zh[u:zb=iQ_D{!zxcN3cA/J=ܴ?[G}B݋;ѥPjn:[ykC_^6ߧboaĖ߰^cc=EMy=|2z^\j|%?3f$Lbm~1v`lX1E8gf􋜃/(t%"weEvґ85tMoC%ZKe/Q%Of*DO#'7x2kyC8%3$ib-~^r0vdlŘ6=Zbl=1Vg c9X/ggLƑg:\2ηt33<6#Y~䜄g'D%qNSLm 田'# -{kqemD\ݘc3(u/δ"̖q Q*aq6>O cu6\IwhU췰 csL'.geX.? B4.9{H .f/*~Tk=.Jٖ2Zm3s0ᬄhL᫜?*>ЂJ3ROUtHyE'jF*E|a,a,gTO5'Wf؜튛/ڇH<Тk""aa$2aȂL L2m> 0C6g%__`aoc,RD"ܪ,V$2aA3m˻Zu˽Ht˂;]Rc˜a$DX{\+Җ`UDE_u ؍B\26gc+Jw|XUW䋴M.K^ ̈LFh6tQuPm:mP/ll̕0mgdgRqTˇ*j5oA.xTOHN-IUX#LkU$Bl\LX ٧]Zȴ%OH3u]u9Mile{沆X(jw[F"Uˑht:E1{12tٺHj] _o ]J+؍bkk۸"(d~iH'͘Nτ::Å]\i<Ba6ʋ!s^r3EPgh6{4Y%(C>PlH؍R>~JX2fgdL+*f6K,Cl`ΌY/>8>]J+Οӹ.c. M9[?n¯>ϟ~_/~$?~o_-t,{QLݺ~o嗷w_ܺJ-I( 7}oWU|˧tgP-)~{OY/ujQԮ3U,lM?4zY,M|Xt+nnjm5ʅRn}=7v$tyOV;~NO#bO:mt||OEcendstream endobj 3 0 obj << /Type /Pages /Kids [ 7 0 R 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R 21 0 R 23 0 R 25 0 R ] /Count 10 /MediaBox [0 0 432 432] >> endobj 4 0 obj << /ProcSet [/PDF /Text] /Font <> /ExtGState << >> /ColorSpace << /sRGB 5 0 R >> >> endobj 5 0 obj [/ICCBased 6 0 R] endobj 6 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~endstream endobj 27 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space] >> endobj 28 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 27 0 R >> endobj 29 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 27 0 R >> endobj xref 0 30 0000000000 65535 f 0000000021 00000 n 0000000157 00000 n 0000065529 00000 n 0000065675 00000 n 0000065798 00000 n 0000065831 00000 n 0000000206 00000 n 0000000286 00000 n 0000001727 00000 n 0000001808 00000 n 0000007139 00000 n 0000007221 00000 n 0000010268 00000 n 0000010350 00000 n 0000023948 00000 n 0000024030 00000 n 0000037596 00000 n 0000037678 00000 n 0000047734 00000 n 0000047816 00000 n 0000049038 00000 n 0000049120 00000 n 0000050335 00000 n 0000050417 00000 n 0000051849 00000 n 0000051931 00000 n 0000068526 00000 n 0000068784 00000 n 0000068882 00000 n trailer << /Size 30 /Info 1 0 R /Root 2 0 R >> startxref 68985 %%EOF eaf/tests/ran.100pts.3d.100000644000175000017500000015311113534247654014575 0ustar nileshnilesh 7.567852079267114 2.0559109694571025 0.6562393901651342 8.722946970740553 1.9480814044359325 8.179005234089914 6.403252071247728 8.776084418694044 5.251559214480584 4.62087998308029 0.8187018723387034 9.279752899922839 6.519503769853502 8.415981572951651 7.308809643322325 9.488433078429297 1.0715090264383487 0.775007383670892 3.4481421661093226 9.557551610704408 9.052493848093434 3.3341476086257367 1.9452893688099664 9.948231962974702 5.032571427845995 9.220469851668568 4.28921192640886 2.7445054620724414 5.487450472809712 9.927167188789968 7.117340620250287 7.581813654241109 7.457103506407492 9.300358743954067 0.12088802614502736 7.718225900937856 3.529084668443325 0.6130626996427448 9.434997708509908 5.911792987646021 7.155838867068718 8.13602282015747 5.300123917881894 3.3129146299704244 8.820941381359226 6.775504789693631 9.8429047267169 1.3988746025480499 4.101981442550192 1.2048547391907434 8.917744187095142 6.54575350279821 6.405523360603378 7.525955416629081 7.11753219535284 9.123514416505003 0.8028415043961346 5.475424626498815 3.6766630038681116 8.182193583909466 5.397391038305916 9.484249859776872 2.0640523996004023 0.5169419111374163 9.451666314457931 9.758962250293457 7.12619266604916 5.439803920148361 3.322404180693534 4.089104897398293 7.946871343650127 7.639647163192194 0.6006522002515036 9.600911163341 8.01727117157245 8.210245722965395 4.705227129407047 0.16741090757246369 0.7087987820521917 9.581488056767613 8.977790520789053 5.973406082606736 0.34295335782062075 8.782483855083697 6.7876815020892955 8.805450257415755 1.4497590031008603 9.428710888647174 0.607424725419242 1.4342267483203264 3.502881181182545 9.35144265349988 4.182229671844334 7.521630528935145 7.143132663144062 2.671679689251277 6.924320579221082 9.834027788970626 0.14197588744386458 7.237610868943765 3.72614255030084 7.616242958550863 9.44650947237306 0.45469258362536547 4.170695851212529 6.007187138278313 4.013759883857276 7.737958376223212 6.143296776896644 9.17021848429465 4.684921433994295 6.090424406631017 1.3755765603681969 8.401316071499911 3.646586650911855 4.70996206923387 8.744653262895218 5.8335973493949504 7.92797396911261 8.052674922207993 3.833216749942679 8.071225794107008 7.526666463324024 9.35722616228909 0.9702084147651231 2.050759080867459 0.9583135744576134 9.597909483534263 6.1259757202528355 5.33014485807627 9.983595006897485 0.4027835563879414 1.1140165548455006 8.280750865100593 9.672301639598398 5.908339011543044 0.1703584792605497 9.932682489669574 2.2802963716979825 8.683751864646037 9.097898521192349 3.711449791947717 1.2793874648002408 9.315668474083225 6.8527979398385614 9.27900467781094 0.6824158256716126 7.392976859524608 3.7420649671675785 4.700630557828264 1.6742536173491396 6.352426928235783 9.796813797449417 0.21113908415686744 6.424183018080467 9.95067478525468 9.522098103834338 0.11635704631133859 6.114454611824931 7.2562965386096145 4.862703779179767 3.721661829196769 1.0240616070511885 9.745482545065574 3.956269996265478 7.980827032502468 9.364437340319725 0.4432633972245412 5.606959784882367 8.957716805233554 6.413106126841881 6.970471162493451 8.48896175006846 5.092020829637074 3.7516229471195537 8.314161959910804 7.766812603482235 5.343177928145318 4.900039439054681 8.585557119835997 7.1094265092069815 8.167104534412992 2.447879154420895 4.9493608562739935 5.469253117735324 8.367576324152196 8.801530505239855 0.23798694300651224 5.1943366173990855 8.597968614997335 1.4466474013395247 8.269918873375262 0.6842868454135687 9.739608633259685 7.461511123695297 7.643357971914429 2.7886317669038267 0.5473530987038631 0.1888888272314535 9.881420387986912 9.442233921399396 7.468022579610819 8.989236344848582 0.7898529812087887 3.7324318549787696 9.052339194855266 6.573012421075956 6.3727446720057035 8.912420645719958 7.3921272509596605 9.467762951906249 0.390813957257385 1.419755841551757 7.2841207638695185 3.8455478781591044 7.534213130591487 6.398165601526426 4.300774866400932 7.642061949472889 7.46090350570411 2.3675805788062463 4.284002612771932 3.1797311608981644 9.899420112662348 3.566996468910248 9.268892049304883 1.127749743493681 1.0118954908479685 8.131919650356732 0.5957616759570685 8.677538999153194 6.1398438541893485 3.8038043681890246 7.8944491029587684 9.039897533853049 0.14925047205743613 8.411318282471345 7.269464159807997 6.209189735529756 2.800571870955306 9.055981290830761 1.263379040596396 3.6635843196915423 4.271454485045153 1.8221683801552668 8.83362755924082 7.30882733437671 4.7057751118335345 7.230142016960341 5.4274159846309145 9.211636946783782 6.10110831443479 8.297151936205838 0.33373319056903306 9.037954910865043 2.831188818738141 7.0771490479417025 9.52269403074698 2.7246437141612736 9.66319989061756 5.605757383270133 7.227328175813269 7.379124715535232 0.9371601398538703 2.586223160530492 7.641301531482325 9.744634582287315 6.863257204674477 8.736985293772767 3.616281964645321 5.606607498940222 1.1318653880809117 8.488177807009354 3.1725033521238952 6.763022355132974 9.62548006171721 6.445746110658102 8.615733845035018 3.756896040753204 5.095972547877108 9.845110629474537 1.3127334911056634 6.353045868501776 8.94449270404747 5.250920951203657 5.382815432765711 0.49061744702994226 9.682052121272323 4.833093879973305 9.994847119097795 1.5768103332088348 5.941523764583171 4.578765661695218 8.095252140691795 2.0426172611752094 9.915071018520992 3.1884694099981497 7.197060044912403 7.736947035693318 2.156432607701614 9.356416578149986 6.47283629661492 0.33140812732312064 0.2148895369760897 0.42970507917453116 7.79811094844437 0.10121481762063045 0.48229069761752363 6.342148676885326 9.969020802811492 4.266168441790195 6.001241800713176 0.9722229222120298 6.37036629356918 4.396108966564319 0.8831282829011622 9.524691990431094 3.1423671169654384 0.10111959019003347 1.7593855227132758 9.404338103964538 7.22411843768184 6.117192214323951 5.605868978671699 7.026348089234984 7.279683960375769 4.130699784071347 9.159371643608756 4.489564396613176 5.006257078181081 5.351889828523129 9.242695129055692 1.8510340726005454 5.942948165301454 9.251330615603674 1.1328156846768254 7.932507634298529 4.524689527548544 2.7844319866584684 9.333112420743124 7.436026492548647 0.19437099570510163 8.423179208969973 6.947771022631268 2.353822406009729 3.1409090168054465 7.68387501352324 2.6796050349785023 2.2296530996401915 4.891050454122259 5.716082184497751 2.1715807764375534 8.380176056742243 3.4680759298657238 2.3298099287505747 0.4011976403769095 8.211050971355533 5.55545118630525 7.97759569169199 1.9789268537957514 8.37955740460417 3.2269774900462886 6.1685822724640795 7.449306202423598 6.067086194808848 2.4642050564089333 9.055610301928969 4.77472261828946 1.4629479503754865 4.460482193322498 0.19483242450394478 8.290800395896845 0.730249730632698 6.5229096516438085 5.350130482553535 0.7016964541402864 7.2433667912132496 5.324056300188893 1.942883127250914 6.201531422150212 5.447848235046921 0.47613274930653393 5.2327002162772 5.690502123078448 8.67657968761087 5.665972576061257 2.628789554624536 3.233994128714314 9.194006062728354 1.9129458916752933 8.210432033394564 7.039146703851676 1.8177798553760578 8.003020779474877 7.55422780066827 0.8709215153057404 2.9702742356155705 7.823373997694201 2.3698373949201397 9.370069215451384 0.4163723491519624 6.558504083032837 4.202023426176054 4.38236183021971 5.633299955419101 6.673143629851552 7.745979899050663 2.223363087320086 2.1740109625794015 8.048925170115876 2.565656836124988 7.3309119845928885 5.546914735086475 3.1495000094872663 5.615527801091207 7.9566999863615955 2.17595961550855 3.0146680430194053 6.869655329505832 4.333307392332541 9.7953489689262 0.36287826337220075 6.9772252566943 7.719376554775373 1.3505008288427485 6.260701533479313 8.860339029857503 8.69803022128717 0.7230478211010443 0.2774734201905016 7.789958036979651 4.834024134390993 7.07289965437327 7.161782337564924 3.4670805009121723 6.434749443452979 0.19238570212442063 7.626282580051637 0.26520142043363304 9.525563554343666 2.436383205323103 5.998332211200225 2.442754093998287 6.200030895730022 9.996439180301138 5.041970241324037 0.5755821390835525 4.908794660041759 4.48194436736683 5.627595107857509 9.336195320353422 0.15851646778371986 8.431296302676502 7.468699226136948 8.145861208507759 1.4552607481380129 7.761800991699984 5.499122322851122 3.767572743053914 7.468180088772947 0.17662621583478177 7.501946041931386 7.181677376928664 8.39756281116222 1.7296612620772 9.984165165953844 3.803365397232902 4.388831221763704 1.7820303374044664 8.5200536732725 1.9941664720289793 3.3831194321702043 9.660338072714008 0.8942551216912111 3.1248230124299465 6.523527075204422 4.149571344652113 8.296453034679045 8.9560828294852 0.817425857500039 5.469234417080701 8.559566950963244 1.315379028666154 3.9267294575173244 0.6391120569056623 6.2755528497801984 3.82504552276224 3.53088343492264 6.0847249781793735 7.2800706672319375 8.496929482870486 0.9172402592532425 9.869811006383927 4.38338234704765 3.936371013006747 6.218097629739925 7.644985873926195 3.652206065087161 7.297834793163425 6.345144796975689 3.1315156132172595 7.333824695107486 5.395005961471472 5.088764735180597 8.789338360712708 9.600335935538247 0.7118135290364291 3.29458191700852 4.2876917888498145 6.1411514801185465 6.514647982261295 5.390187065778344 5.619924384232127 9.614199307296472 5.167028235624784 0.7228833692085184 9.985189416919646 3.1135332154025166 1.5791179543428857 1.725445000914727 8.819609859252724 3.2929839318951086 1.7596571328373756 8.985888874655563 2.9894924901517785 7.279815544940023 5.712038991405172 4.880584288046365 1.9063599788947867 0.11439664928810522 9.51628891938978 2.649601841159072 7.08871459491521 4.318963139683232 1.3835714232953196 7.821080476388121 3.579203012918402 7.2358584564844755 6.8598765306197755 3.707110262745318 0.765118937128018 9.406443648309551 4.3215052001344745 1.993782263818146 8.500124814605835 1.9945416537682852 0.6099408912379154 6.024830049945701 5.654739431898282 0.2949081029614682 9.14073528761294 4.59057902403655 6.402420540981092 7.818991982300997 2.0544805779830737 0.41447388119168416 0.4689214767699408 6.722885195206126 8.913563268856045 6.567382781816969 1.6170927833689124 0.9009136081326083 9.340243642123006 4.534739344167695 8.91789652839487 5.087190915932225 1.37096572299976 7.359992691923397 5.206378704904667 4.256328227861395 8.677484489960475 7.055788555393412 1.4640560811418233 7.487134630195129 5.380635625177677 3.9693532835737226 9.988140160319894 1.6629658418272073 0.6957014940319812 6.508644705628661 5.604280151416147 5.62025492227875 5.8692000742580746 0.36508885454737694 7.214923798564105 7.683184283304303 7.5289971093365455 1.9622683438501012 2.8809083549843417 9.932251708461497 0.25829752276379025 1.031775512984435 9.989653919879267 1.4655494204991375 0.7639028390669029 0.2859754919856723 8.551706482423867 5.999276576971001 6.166287557155892 4.531711970265421 8.333242134326893 1.1622393587399826 8.058362251591953 0.9609129239597616 4.21726080162154 4.648571814712736 7.945633274106223 3.938711176460774 7.6391135110960136 2.3182605422959335 5.034013521923686 0.6084466413963687 0.29215011253071665 8.971719674701271 9.030594830629553 3.1300038498081273 3.5778846294451236 9.692446760167938 0.6053488282848489 4.354565000162591 5.261685103786104 1.2221914861286503 9.759762024253085 0.6269383502604757 6.4461066070935 2.9961630088151807 8.921176544383908 9.084729998729827 1.5190550106505523 7.4548506111383555 9.717135215496443 3.115734316796468 4.66203088076134 3.79263079966014 4.008112016473457 0.31300999318785205 0.3671171783043805 6.438166714363771 8.919423774645995 3.4041826435490936 4.206913676172707 7.940609305093672 1.315971126934972 5.171130700088369 0.7230611418311153 6.295334786257086 6.377120060456711 0.18253724312701625 4.194267416685881 0.5358250636807229 9.743934062634114 3.1001669933903417 3.849231098056592 9.583865123645836 0.20484293586454339 6.800266664626605 9.301436577493194 1.1787630640037268 5.617981703618537 1.5993845796094703 7.620988870288942 1.5727103374252813 9.732332720952652 5.99693458563344 6.950639047962762 0.12714949075066162 1.7203553433461005 5.180178942561657 0.28754446146486856 8.043284422949256 2.2539184079980283 5.238977691575181 7.41079881388247 3.166678103971453 8.639104128952395 3.9766084898557996 2.363541470215083 9.37725676699245 0.552982555866004 9.31870435813179 2.8533353957122505 7.006334567059841 1.8364657071387542 8.989112140969166 0.592410563827122 5.747062685176978 8.091845539734198 8.093245696216647 2.077637412126091 7.572736011194703 9.785546492840059 1.4862017153613736 5.380108493992618 0.18750481974275335 9.39691678156306 5.368756629600831 0.40208451194969985 8.968230293439289 8.834817048112122 4.807203866671119 4.638359911155039 0.2515002208998185 3.812236247412449 1.8422599619469273 9.88219725923431 3.9829463175807485 1.2059562337947902 9.785278204254638 0.837281994984318 8.829732696707298 3.667931667533221 8.016907588710755 3.4094755626887725 5.617606342087408 8.761210095954876 3.674000727227889 0.4114313356255712 7.739874682759371 3.969202415183932 4.656431501849189 8.099593232700041 3.812232038439771 2.9905479280838154 9.424068647640308 0.5930860947219383 8.784562006530948 7.946154704968481 3.2646204717724165 8.337681069967262 9.79980336435833 3.0131718408230626 0.17547207449690205 1.2238187588690352 7.133318611230543 0.41254494082241866 8.566548288198316 3.9937705920878264 1.9090077961233924 9.81175729394 0.8218085920605356 4.8604242286203485 8.84365443165732 3.662026654046966 1.4897272117295595 8.219251506908156 2.0676133841084345 5.2073978525487234 7.292443110687296 6.55681619509282 0.1474212861846711 0.4920475895614471 6.935552787544568 4.958882103373502 0.5604696751596565 6.110880025373977 7.887447871066967 9.902951355453801 0.9505742971321034 0.7667597611008112 3.637444061526899 9.429187731137311 0.20841862411667034 4.835877910253098 2.2279977678502902 9.643111570433973 2.0040523899612137 4.864939635716132 2.015617598096285 3.9093838131891987 1.5905645897706417 9.988253111075203 3.6239733966006833 3.9677617571358015 6.175824294012465 0.9112388058940963 4.78939902019673 2.5391443189906755 2.4735109013792846 3.4788576375061777 9.940126781628962 4.76111669228671 3.10662480449691 9.227161562716859 0.8667572762157665 8.677881958970772 3.125634797866371 7.569185456917431 1.7560645833392772 9.255954918918654 0.4631569636783457 6.453635336669077 5.061965334837317 0.81335030418433 9.448087071859764 2.5165453304691576 9.023869261092942 3.5000198358087844 2.431100283069792 4.3056759453973905 3.548750915797136 9.009894727277544 6.019992518138604 3.9969990055186204 6.077591954271214 3.3849726732668866 4.710436998554607 1.751783389668395 9.065304478796968 3.4134876587110305 2.9981251622662235 0.10629441606725809 8.762148978075047 9.370891117635392 8.390971315615106 0.8937980355564026 8.98406890887629 3.35941507430035 4.906934674446688 1.3767797041979568 8.31551445311995 1.9340879302434826 6.008065704851893 0.9031424481778263 7.334431522475656 1.1314373360205057 0.4252776686510247 9.485383479491663 2.9109497107707307 5.71335713515602 0.26238373450757546 9.80774918099813 3.964290322785799 3.9542941625007177 8.506052733109346 9.736499152119855 0.5710877238356238 7.162097342059039 1.5617524268831477 4.5457773035615165 3.0384310314637677 2.3986717782329467 4.709106068839111 1.804483574688081 0.5618304295725718 6.916482623844986 4.518170110082293 9.076375356229576 0.7821741853915558 8.913194425931014 9.613755728598626 7.120379000639165 0.1103778041574115 8.206222765673004 2.0529229008133805 6.028755539324776 0.7581574738044656 6.087224905108386 5.084700566375325 8.329930304405263 3.460365384656555 2.85935031501794 0.4612292795468189 6.612928047511477 7.090501983799157 0.36514677286966357 9.116132341736492 7.336799373870436 8.963956637194837 1.5928512789874452 6.86190146599242 6.88046829326322 3.521724306994985 7.905379122718093 5.810757624232386 8.99751280095603 0.19906250428153704 7.508706228309009 2.8998361881007058 8.88693404838837 9.18835345621648 1.0758184197651728 8.426084591815268 4.230061493064291 3.6790948450167416 8.209587525846342 0.5570699408666853 8.632821121598319 4.919374470684997 9.999729780957505 0.4295149539316805 9.658896716243795 9.633548431839689 0.832673278237384 6.129505437118818 1.1853134748142473 3.5383238890181117 9.896658800692917 1.1208818664240838 3.8848922183818395 8.603333932616128 5.006241643744577 2.503688836715577 3.2631134820666894 1.9014912970018316 2.117994429792276 3.7865309287180495 4.486194560778372 0.20137675927285414 7.281881011843653 8.44439517424777 9.852801206266228 1.7614063874146448 1.3940464752363146 9.857779012575694 5.610777781801479 5.6495610401499 0.6930789075892134 1.9723672390269034 9.374936159356714 7.205632357684809 1.312481761808153 4.3225009564013455 1.411085650571874 4.478697216401039 0.4395787597376799 3.196152619935142 7.409529368360417 7.682653445641662 1.221512006728796 1.9244945889279461 2.3968271648387485 0.726494298962991 7.875807274837468 2.7989583246291048 7.8974618998932336 3.4756948480908045 1.703234646248918 9.471067115320142 3.8257859538951386 4.401487482746943 7.659454526381905 2.312472112281823 5.521414653368158 1.0607624058636747 3.1089871722410867 1.971135840220641 2.0177660343162165 7.851182530354984 2.6503438627580977 0.9227743737336187 7.678793658648802 4.233450787906407 0.48824465136002804 9.599883404129624 9.438733397654428 5.994009690765294 0.593394264821753 1.0774315972876338 2.418817101644542 7.979397692119097 8.880298510759673 5.615567401392751 1.4750346562184937 1.1064719021684652 1.2647075730875845 9.872025912562858 0.7632150039573231 2.470710885762402 8.125454085151539 4.01830480908237 8.019055586976245 2.368768092272516 8.188006696113852 0.8570572745537044 1.826577901392378 4.415194066815356 1.1060204702559902 4.918655151261169 6.560120909407297 0.5579618627456853 2.4718727443185333 3.3311654846372933 9.99803492262681 1.5844860840901926 0.6222225605678329 4.710623055431205 5.806923204021743 9.116399754413031 0.19558376070241934 5.435120128790177 1.7677446807543147 5.391149830245681 4.408922291840176 4.653156284918812 6.7360684721232555 3.1543966605338256 4.662097090252698 0.5025421235599881 6.283063113813536 1.4977955956821782 4.153197628167271 5.406877809170838 2.593721118044043 2.0972612032544005 4.811969926618498 2.8746658422808777 0.37850754580658563 9.985212992698703 3.447072261850599 0.8313449347581114 7.308627212247492 6.865189360551347 0.1599924480100139 8.084094013514484 9.785559760554591 9.958315714147947 0.33669427660915385 4.751072078105311 7.620187644164588 1.9178040119511546 0.2274253213027082 8.974138474027658 8.41493212577536 2.7538666621790884 0.709945918424042 9.911237536454863 0.19351790885988507 9.769293632432653 5.817397735027456 4.129190307245401 1.3765975889113258 6.5710095908774555 3.8241111746230416 1.9656878944290073 3.358165131581054 0.14015062241585685 3.2379195051472442 9.46228985830962 4.869712698324516 1.2654355017737098 4.729807140300936 8.313710182244822 0.27166467600540756 3.250463384715948 7.960453956646485 1.079937655578818 1.8120307997712 1.6431344579889284 9.078874893609639 4.885822815549519 3.799148071149631 4.007021095011621 3.1755455427164083 0.37225386756990364 3.4651692216319887 8.652621071832865 0.49553172920027944 7.114462383665252 6.954254892027064 0.7180443068659033 1.3238690682393188 9.41068407303204 1.8017809901041395 2.210908861635464 7.637444877016229 5.563567136720188 2.3334787122866785 2.2163485554434237 9.903057469509788 2.32135055520836 1.2197118457103402 0.29516711613283597 9.44050523454568 5.6860940355658744 3.115031418359147 1.6168854234663033 5.845945592409918 3.202953125781601 1.722297964029083 5.771734412950868 0.40216616048760834 7.837809123584956 8.4595425431406 4.710665419455772 6.5491359471108614 2.050228178664163 9.73989314920965 0.12506163976505835 7.650525813200634 5.440312270002978 0.8360488604954552 4.636688149158537 7.989818476894828 0.5188862905532314 5.2818217810550285 0.8513064556059673 2.4701555134309814 7.444510324693869 0.1240486096530331 3.9451473480079198 9.357055507578668 0.774153916496819 3.6783516017553284 7.355016812613471 6.707683144243826 3.024861531745377 1.8119597981362507 9.262131461853192 0.47160953740161116 1.9579615805549455 9.098930224298716 7.853718431783775 1.2823323350009348 2.040881931244135 5.685477513269399 3.654932045658336 5.368877772409207 0.9030607327942404 5.88702261870192 9.66459327494134 3.829797065672417 1.6170612806144775 4.540254391494732 1.3968072086448795 3.379930178781489 1.52080555604091 2.4567766437555605 7.160467819615842 0.9743206778830658 3.982692336275403 5.6911906819653675 8.278809166426958 0.11982312839706921 9.252980295476267 1.6935686413765807 9.811637269067958 2.2157924431995 3.87862499582782 3.9851475319208456 3.266221642428129 3.427256888704667 1.618730230482465 4.3280639597396515 3.4620217813672545 9.680295979285216 2.536438023319104 1.4581228679996268 0.9310641920615597 9.563852871538572 1.7764920093413652 2.764321738787536 6.308960323398691 5.265886534428198 3.432558672964237 3.112136387373818 0.7412520336199666 9.402631967154479 5.684486401624625 3.3591401933480842 9.888196329199289 1.5592442571905538 4.306448635332391 9.91399924949836 0.6394115278472681 4.576081120834239 6.839506384448499 1.91948494794068 4.237675427828839 0.6719311940534807 6.517370401571358 4.127491979854528 6.763613157978657 2.3238785273567486 1.4319543571635038 2.912461647056616 6.565782510120371 5.413569679265741 5.1833602620599235 2.0036766757615085 1.7921684732991658 8.927343288664087 3.2177520650363878 8.787708856709699 9.53712329726832 0.7917712331846749 8.390563529320193 3.307354210563319 1.7828754995793274 7.873047122294793 0.4211178644260194 6.681072170341171 8.717036450553461 0.2074222201382323 2.936990246709201 0.3001386666088681 5.985093994051007 8.876858816581512 9.917827784984333 0.14900404892372965 3.321309064089159 6.801719064463796 1.9968915651661554 5.037362944471501 0.23577277674008368 5.158460793366763 4.237189607272667 9.979155476561086 5.8758880788287815 3.0081345395553236 8.93595201850076 8.371493732119326 3.5391053933624885 6.662210938570139 1.4918622603737424 7.049177245865384 0.2866096915063929 9.936558123698124 4.077881355962688 0.9451196252822687 6.81153685743025 3.658521575575816 3.3159290842166933 2.795375684426486 9.457960803133426 0.4385623158860392 9.338192984994546 1.207069336496542 0.5564635837232839 2.826169561193364 6.752962396410983 3.373184896684993 3.7478332028719206 5.764209027964204 7.967966839186374 8.457716844768198 1.7382746572811794 3.4936067375455995 8.962144845028442 1.9425467828504148 7.536545369375158 1.9149327019613542 6.467326797479141 9.414954661290384 7.99606574486151 2.4904395462340765 7.384896553991105 3.8122061530272955 4.168871519718987 1.2433616782523131 9.370961877242886 0.5150821537396588 6.964427356634854 8.379881211982546 1.8919705708376058 8.357930935408904 0.6730497250852752 9.558901268734807 6.59068031689168 1.5172158624667706 8.465589705113226 6.02343429375287 2.2306713829004834 6.951987975300753 9.860884323928246 8.496223113067966 0.9850065219064721 3.6645266524317037 3.948848869790986 5.120427324546135 3.904603773275065 1.0844550173344216 9.930250058434961 0.555822549808263 4.903946407570957 6.726363240363161 9.66672206083702 2.620891396647992 4.189830576311757 3.7381344159571763 3.7560011269538665 5.136226724620496 1.3002969726105906 8.542693532163439 2.8796653480803744 8.745952231156629 0.49398716069850757 7.070136701227197 7.400757083285311 0.9547299269597813 8.605454934447877 6.229053458845954 1.9556652724756076 9.443158085945331 7.09857114223963 0.8561219283393866 8.698138158616642 7.043534617799692 1.2161909317286193 7.354916417320473 4.485484120304576 5.859151062092081 4.108313805064725 9.78081848652354 1.4952706684696646 5.58483111563484 9.795958873500572 2.487109621878971 3.8355481427827725 2.466877431356552 6.3989080541648224 4.0609559473607115 0.9342305266028799 6.212497785213054 4.10823387376923 9.467151551371709 7.9926654665830235 1.8875102353602435 7.203080948058767 9.085742588582388 1.107196382539625 2.95977957945079 1.8405300695659892 9.503313382704118 5.207982316580131 2.253276592680084 4.310293130800196 7.341623626437881 0.7869738571897553 9.771672543329576 6.621378993888241 5.569153542960796 3.73976645087585 5.079158755421908 5.089961035395963 4.479290172138551 1.9585489604409196 8.876997300080722 2.2414953323992655 6.950582853797959 8.430659484649231 2.449983064504336 0.7896483527588769 7.356684390992552 3.9733330631682957 0.3916529442746306 3.700876628991886 9.350350231467829 4.573901267145737 5.243472897446126 3.8695035158469118 2.701812160306566 4.634906794825779 6.703336517874463 9.433156958334884 4.415773830904107 4.020831847696293 0.23401107273157873 0.2640231063156433 9.990310648698433 9.058216218442706 8.314901190126525 1.3216647259825054 2.6246920736214823 3.572508667228396 6.712037176653286 0.3202027633018325 4.250558392470833 7.3576142143708685 9.282264149126657 0.259287071602718 8.330261775986353 9.995357324496227 0.1346182828034781 3.08933016111593 4.333681746568456 2.6346476470550164 8.61020879851659 0.3021264242595354 3.9731443785650526 8.36290794187526 1.90459020269443 5.026109866466399 5.3825650150265 8.045942762609558 1.2202784642507964 5.801235146250398 9.375626928761049 6.726137216686303 2.799897026957454 9.227768394695076 7.887970357629929 2.796657390367858 2.2725807554373936 8.491011519762923 2.2709213068757483 4.424229862162431 2.1005087552942583 8.219749555613323 8.424443869263502 1.9643103363957044 5.177853203943896 7.0592602709562655 1.105396936078415 7.337297215123497 1.6552752788656564 4.8834232677783405 5.45132019263723 6.8589075172340745 4.0638372381017165 4.058087163676528 5.885175349920796 2.130346814934245 7.870321934651658 5.671549024600896 9.577208863857019 0.47387128626552144 9.891105088903826 6.458599596356182 1.746642834878676 5.100382048369008 2.423835893574598 5.877248761785973 0.18605954934285407 6.544818663689033 6.0106691734308075 8.93174678226508 1.948717420315071 5.340228848971945 0.6323159375186806 8.94670994060503 3.694357361352154 0.8298689983272611 8.981678618078977 3.268850701376528 8.223679809475708 0.6418157732560799 9.93382125650156 4.559302030505916 2.7565972666271485 5.961006587397076 6.955968331151169 1.3971071106258561 7.040779411837175 4.6782214479120965 1.6499331105965962 9.892412120136994 8.809329240643264 6.510917041464922 3.678880775191095 0.13100007839524164 9.982511544491285 3.6810654417683986 3.530575403124228 8.944471212009542 1.6326128561009212 6.956328899042292 2.0620775961810898 4.882420508850464 9.21791551235782 8.14875645847031 1.9478064428078485 8.488210231773138 2.1361165996142932 4.317558043535696 2.719183646251723 8.903587519552929 2.2128879039927587 1.485010765105255 9.161538997155507 2.5498653653310295 3.077924840927106 4.931236487459679 5.43253993633728 2.021125421480072 9.895339128711573 0.3459224077164942 0.2374530373577617 4.462863425377957 9.43547417297621 9.51824554078473 2.6998354736831582 3.577301285655075 2.6867812481095967 2.337481371543249 9.737002901147818 7.88421949682157 1.6412863524843204 6.278844623693462 1.4482075587143668 8.317415002516334 3.552053597080999 5.157130744170195 3.7565136419857184 5.0980662213517505 6.12877813539905 6.664013780330777 3.8037634263638784 7.453618032160126 9.334786819686364 0.6339869849579376 0.39924309811304326 8.767923916787357 8.66032737118898 6.7762089628088775 7.98844065608886 4.617661850053738 9.60088519264266 0.5704684378161247 1.6314286987486826 7.8202610013937255 4.57773662319587 1.585735259236706 8.819582272733 5.08543431755049 0.3968143964062474 6.700013204326391 9.284038219585558 5.884210499407307 1.9322345946408421 9.697986249962819 5.314333605571727 9.272123323269682 2.857536529006328 0.877733424102825 6.780751006754755 3.4206204728620637 7.226170369488226 6.197211400360617 1.470512253376774 9.298559587925803 8.091203242666367 2.216409574022146 2.7400040165032267 1.0868255102859865 4.316013334427497 6.16095695779914 3.9919624395533377 1.7877907567745517 8.54771767174772 7.440731563882607 3.845258438679217 6.345810596061826 9.164217065510856 9.23069837213976 0.20668769447521473 8.020619377067923 3.3372056877443574 1.455713297986824 5.241533381629626 7.653851014562848 6.08502582982998 8.590654079718668 8.404622408550843 0.9572200183540627 0.5398253695084305 3.830936014601247 8.686730715501293 7.00331221119345 5.366818678895202 4.493610065300858 6.609921762268041 9.523685525025634 1.1664015878495761 2.632716074349059 3.74602259548754 9.3882236141102 0.14917419652900943 3.989673788761644 9.58544804773653 5.104856527469786 3.4082353702183426 7.314617481633233 9.63016721379947 0.18993304200468852 8.488375280666718 3.7310166651338843 3.4315167263340007 7.300143198005422 9.42851982525981 0.3349347485427119 3.4794764625210024 2.8571216132741237 9.536831649576042 2.7554487610714156 8.200777401507548 2.207383413672769 4.872587843873209 9.587271411120255 9.156498849183903 0.27005033675116685 8.201690684038143 8.657624295635062 0.2817765876491958 7.36185806435809 1.7066795774401813 8.680876205077134 7.336489606389424 2.107839414211418 7.363457997216251 6.682666165459125 9.490545793702022 1.2829210010899508 4.831206024340634 9.999978677381291 0.9832364183927966 7.8206019281806896 8.999443689070047 0.2830105588615428 4.472473588754068 2.7517564824320737 7.986323402225115 2.141333469117836 9.961720155298645 3.1888396128869703 4.9463357366845795 9.312220267453748 1.8794782315915164 6.91399855086673 0.6556602115523207 8.956069107681063 6.2069216040561255 9.880860848173235 1.119246805009722 3.5905273415009784 9.533608669085337 1.3593268002172292 8.136406442892367 3.898125205433025 1.4077430531982662 8.510344386976293 7.014077652283962 1.1792302807162582 2.3220115552358354 9.72012209244308 3.465778395513952 6.890226907059603 4.0399902453855585 7.1534772231018815 0.3948624265484648 8.22395229550869 8.695117990217431 8.202945633268204 2.678132194194042 1.50733854457674 8.716114549540475 1.5613090809926642 8.009569738120671 8.775868449529137 1.5342591753192845 8.2503147417913 8.737004144253909 9.593133205418273 0.18422813451248832 0.4888518290917503 7.831976409461809 8.315704765069695 6.814799339106493 9.474369455460545 1.4526115755556641 0.45427915463323654 5.116518954575648 9.508647762299201 7.788987387027356 2.505871790660515 1.834315712723023 3.8413933132522255 1.612333557815834 9.003706555500093 0.11975881363492391 9.291863266830767 6.8830378365081355 2.4955699012953714 3.2725211353093666 9.94435500586274 9.664363129882691 0.16534635576311096 6.000523663766338 3.6231788619591803 9.309861550866593 4.96685973394589 7.190096354936272 9.371603332977184 1.8251227539673263 8.949443972622847 1.512361529344311 2.4504756249488504 0.13679387450376357 9.7009740581389 5.963348083154612 8.856964367303757 0.4344613473826229 7.621171720878028 9.418562919522767 1.1366473135041644 4.967839631651956 7.053411179642056 2.70548154545377 6.42396252415468 2.689626068770798 2.8100809083460083 7.816540652179751 7.698975701082725 7.360144848821253 3.4091134458219425 7.626871273800933 2.337626687131735 3.577809863707006 7.729286956665872 0.22325406341656429 9.049846637085976 6.902845847409416 7.436702472923022 5.045933263398691 5.291076795649965 7.15017598476265 5.986836050040283 0.7033003839089762 0.7663005750897103 9.991819138974375 8.956945131813862 1.7450756448775238 2.1580413388339896 3.3776687987213183 1.7716867478614873 9.900169701653105 8.902047033247548 0.43870280014553575 5.604596571194612 7.54656142431697 2.1161122329919855 7.097049015445413 0.7388543759679544 5.819173969903303 7.308040062863855 6.425452332216187 9.015695592892751 5.901940891321734 7.3345256319699175 4.44148420220974 5.01972422564163 6.7152124316350585 8.236248666277678 2.8563125869506765 7.520867559283708 6.545655762892136 4.101395590894715 5.18015259153446 2.027332028834459 7.661148886827554 2.666350606599904 3.471887917588904 9.752774521080493 1.986253933011613 4.0747398188628114 7.167145310974947 7.749904895154737 4.956557461946867 3.242888628433665 0.5695545052689388 9.71121861235267 5.881978944044555 4.817616901958272 0.950825795927277 9.494401258776058 8.81766798309229 2.3466077243435675 0.9681134527824149 3.562627241786715 9.665168530404374 1.509942013155655 5.971296054991264 2.019416288139628 7.524562557850629 9.592141847135998 4.882288587752797 0.5770863166607647 4.620731226091909 1.1520725345243865 9.594152560514434 6.940996021868427 5.726486022741647 6.02435291010755 0.9280266253459324 6.428880123253651 6.30108285531194 4.097195176767929 8.588335060244038 6.051536673098229 7.4136827968907735 8.957440707228947 2.0348572962649296 0.6369976543558282 6.638861459793723 7.4289830349336805 3.1743539101733713 2.310749759632337 9.904563350499274 7.072546407236379 4.824459310824624 5.556210410293707 6.99855269751245 2.3084540923494967 4.522421462920592 7.200772079907072 4.229869650579027 4.101630809309806 3.903824013833381 4.3764459416331825 5.424395156995019 4.455021267944253 8.06085283165119 1.115456846394915 8.097996400098316 2.4532173787949643 3.125114268268252 3.9301768112881517 9.686051493565564 3.7231643540722232 8.796051480818086 6.661417729317074 2.3370303891103315 0.35187680171846303 6.641723247731972 8.260804541271833 6.060479154184106 2.4923334248928195 9.063105553345082 3.7164078903073463 8.696887655776667 6.067262542927001 3.3294366548721293 3.729796445690979 6.703771731642488 7.373230531048781 5.66892462179971 2.5501340135000956 9.563628159420013 0.285458797946446 2.700747850339568 5.989067054502449 7.55712016704658 5.172948653582239 8.575636052602352 5.157143530134843 2.86878058514995 5.0788897338390555 2.9655849122012925 6.107632376523137 7.049501629499602 0.9802462037723148 6.242929450607144 4.746190725498877 7.6232698130824765 1.4252449873311543 2.328660051705935 7.069737927573672 7.080903631362808 2.116925267751078 5.522236451826113 9.36584827970151 9.912926738258202 8.906797739434243 1.0872454555791906 6.560478734320607 7.272540427866052 2.0814085340898965 9.116348732720677 5.38083560670047 1.3536775636495268 8.520398576224782 7.077292259043849 1.4887918124997035 6.243603623843194 5.70508225107451 5.065041897938364 7.205712348910913 1.1807593202755688 6.138856755590266 3.5208698878462585 8.785452059035993 5.332732276777442 2.72127834776679 9.719055283830748 0.5324774113908584 3.083077955789183 7.455379796099239 6.070189814274244 3.580165507698004 2.8731156287768655 7.424815481220096 1.8719404755444122 5.557150977385964 7.634450086924352 9.306599958929372 2.3572891772974485 1.7550433312088813 8.194646309023874 2.1986471192326036 3.1173185547504847 3.0334618989572535 4.5080808383780715 7.109276424525137 7.434749488854955 0.39199887987738435 9.65173853761557 8.416843686268395 0.6247970964933733 4.426776564930746 5.706368290459823 8.121671242143883 1.0909306163063572 7.795843176554387 9.573165474837452 0.7187238024009206 0.882320019540451 6.594864496738851 9.066730843395165 8.81025256385567 1.6585836351170626 1.7852743051329796 1.7518310506366728 5.9127438927681055 8.645962373329318 4.957926205570792 9.718343697760334 0.8577035362617345 0.942168480807954 4.869318239674745 9.692200046601286 0.8796629476430038 9.764436210578875 5.78713784689017 9.520489925907572 0.3449097740684888 1.3318113305330765 0.890831606472104 8.694433573457513 6.670193057023034 6.38893596984887 6.963138917720211 4.6844200291751 7.323027011350036 5.739995117017532 3.2551183609769487 2.317791456209447 4.386763433701536 8.879661971640228 3.1287995211963535 0.7308446963505917 9.86899516641139 2.3333789047746403 5.419369452299869 7.9628518125305074 1.5915016393972325 9.159059202300632 6.327466556215069 6.448928889236163 1.9356628420729334 7.588898314148862 8.40531177880599 0.6627675436699683 4.653544358653841 0.8970722083111919 7.502057167108184 7.440869611732399 1.5186679511258068 2.1049573766428407 9.374821060319622 6.453297825926751 1.6539226911505498 8.58339494337174 3.4441596827223337 6.839988016777204 6.161810120710127 9.92141596646314 0.25117454414748863 9.030260830437825 7.620441731501008 5.927093995566734 2.388865323676463 3.799800282122986 3.084915200023659 6.378200809850404 8.895567497295692 3.4455568933849117 1.4264779120628899 4.2602196582151155 0.716560268277898 9.878196766699709 9.962279925614661 6.6019977350141845 1.2866792748534768 1.9834599173705696 9.824395465099812 1.4908877241520413 8.51089757645058 1.1997157541219412 4.315454290193844 3.814325527512544 7.59589499822955 4.5186354205404955 4.532455598465739 8.0519586338899 2.1534722684890664 3.1777123269223866 5.951359502156581 6.2131934182167035 7.435562283891617 1.4325847810559402 4.012707977221046 9.249930279329403 0.48355627761537967 8.6535946745201 3.256645796239992 4.365701211177674 7.59587940244141 0.10780604117498793 8.961292279118506 8.042552453557159 2.8638841507755877 9.646996834850171 4.993702519439092 3.6482763137198697 9.776542271703143 0.17511487885497345 0.45059528702418117 9.825594427617172 7.447937000100021 7.0186144638267844 6.434620039440835 2.4246441984257294 7.355825412507594 2.284250530957768 5.100550829095428 4.173512121854236 1.9062994259307855 9.29374415437778 8.07451240707294 1.0636998515840848 6.121961717976248 7.40716105365594 5.214827609030722 2.866178285217885 4.6033791253933165 0.42563302027425554 9.182970157110358 1.363583632096085 6.458111429286215 8.824195147742097 9.498972306831035 0.8039400462652413 2.2631131139614413 8.355381028658101 1.7264531443772024 3.4534169470200817 6.862367663884621 1.2917463270578868 7.048615182051113 6.820990482059072 4.043551029356557 5.812411128138753 6.726591359306265 1.374647829570958 8.188121274215664 0.11521954263216294 9.62775090620335 7.758348958731711 2.3617083358372812 4.376355686138001 8.162871863789128 6.2117664012968925 2.7155276440702205 7.797718698006989 1.6742729449701197 8.839378283682601 6.272476007771323 1.500950554933154 4.16489891335715 9.866234589744414 3.2576701808971515 1.938009072348477 9.51590946874719 6.705982905988577 2.2049273075430946 7.137597656619642 7.463856574872941 0.6663271912644442 6.399927987821849 6.749225490214123 4.2787303328115325 3.3401704341615943 5.648480380652119 0.2490198797544041 9.93513913747974 4.088237252025454 2.744258716235463 7.92861439450146 2.546581504563005 7.308632032051364 6.657783995966376 1.0756594054227828 2.6476990628050867 4.875649262970697 1.5592511653456023 5.153091287520502 0.6943962607170437 7.618073080263118 4.922023477305664 2.2524943461181812 8.46717380476584 1.8945348701543483 6.821583400916211 9.66378192284931 3.4202447356121253 3.1002349270391822 1.0127207952464738 0.9623900198173683 7.954493696360032 8.019164250388082 8.486189178059853 0.5164646629631662 9.58522418156155 1.6575151899381337 5.403722813039487 4.797309569978926 4.520701572036068 2.9871160225796314 0.341119375194217 7.413895645054033 4.024470004386844 5.0840375102670015 2.055683217012715 4.616660504105189 2.007897874284046 2.150723122432996 3.688871666192745 9.997711149823786 4.147192325419092 2.1592336536639443 0.322511642978645 9.510007189018655 5.976239320525489 9.718462849028516 0.45243965378087925 9.207615637583103 0.3198394201625687 7.283101496364246 9.410900526251854 8.663177942883497 8.292634390048365 0.3331341864501898 8.497513465152009 0.7831783342485261 9.46578866250715 2.329413294158739 9.848895931942131 0.2103129430348778 0.18252739145712127 9.734558052752298 8.842460401889976 0.886649263728561 0.24563003631672498 9.737123103506658 7.672125843777817 2.459140509764929 3.2915093738682355 0.805052031030657 2.339319083697469 5.007368120191937 9.563675202642028 0.8221410455815814 8.327565606282457 0.7534866966082445 5.463387202055516 7.533925841698405 5.161595834910775 1.5041936006523184 6.8613518147290105 8.755869467441428 1.938384309408344 4.142763190738103 0.3378866006592016 7.9187637157665485 6.861426836324722 0.39215155771052235 5.691852265163756 5.428013873118445 1.264333110515571 6.70872225339029 1.6746678185240986 8.225233699492001 4.840486101454703 1.0848219055996324 8.738036974516707 4.254697338539338 1.0012684064803796 1.111178962737596 9.178523778549518 2.314433703307163 4.466643251110018 0.9085238594698071 8.79147390724194 0.7761481697033501 4.01976352929365 9.229935540789723 0.6050665320723931 9.263548597137804 1.148530684015371 4.947834209328944 5.0100702276360405 1.5154064191191932 9.489631563806821 6.767990046999881 0.4062052967390519 9.952458525286628 5.84645262609619 0.25312255397511674 8.673781156429039 5.485846508465672 0.6300833564205286 7.411303429599224 4.169087959108662 2.657344292501766 3.538110358567934 4.581435939071568 2.748853556741693 0.11130830521260027 9.739999201030006 5.584530886340544 1.3165191347167169 6.5175837614498064 0.6685311163120273 8.936808106486408 1.1137174941980548 7.4638719655140005 1.401713563839838 6.0341284404704645 2.804598085245722 1.5701311799278783 1.700038417859477 6.990880083767902 3.285884602818611 4.513274284234101 3.259060552555383 8.368313413001204 4.74286343117544 2.296340761181512 4.82468836099717 2.3413205885075308 3.545868412613838 0.7524365463998253 5.878843054251941 3.40206843923127 8.417571442077769 8.826527015417007 0.34025302754953746 6.534980376759773 4.343403878759919 2.5676039031980564 4.43575455490168 3.5407513390972163 3.1942983392729185 0.19164322643579013 8.166264590811046 7.223400047182432 9.687689380938581 1.1245003774004285 7.103759733716435 1.2759540402856544 6.29871692400163 2.4105399171497064 9.543258619469885 2.3825524847098976 3.4832318803605693 9.435175550283207 0.7633662987764378 8.614683487374496 0.30735155727186925 3.2338436314332863 9.6677844461095 4.050511026685244 0.7860809441507044 9.553484618245504 9.714945189739797 1.025925520406087 4.0403547295113915 4.670651234830881 2.829264421569943 3.469617038527414 2.2544807415000347 1.6982125604404628 6.825130433117768 4.617930760995469 1.0121325694169219 7.774575269879907 8.424999780970392 4.347809453797017 1.2343428271320511 0.6208363610019054 6.566072779408673 4.474611463356905 1.1644678299814615 3.103319827409768 3.814480452743471 3.7503833723953885 1.391399192773131 7.171465643942698 3.3778164078080595 2.0681585313561737 6.308011031792967 0.4179252595333205 7.818356109333307 3.689440054991152 0.4029504954006864 6.8493797123430715 4.774681791715483 0.8196350887114257 3.1770272647559237 4.468269654856591 9.967911136899588 0.36951886283222546 4.158041524143899 3.670730539858511 0.8512280133555707 9.097671469475067 4.34929813239707 1.9474360025016204 6.178604590154394 5.402917776711499 4.5866794546453 2.4418709565633603 9.954135187762821 1.7787241962805211 4.037556742315077 0.4131927837764824 5.266723483804782 9.365381044548792 3.733036227497047 5.102037264907741 1.5989680572759748 7.107762927738429 4.235886455393835 3.0951411250385314 2.9903482830944346 9.406605412544824 0.30592971051948314 1.4444905448692125 5.850164190866091 1.8580204232614532 4.735994650536681 3.16938339234781 3.4414331305053625 5.317407803718794 2.1315568600039825 4.206260612340705 2.0873697740112824 4.984899817275559 1.7754625882081365 3.3135341003917933 4.312655258821941 3.4136013655140065 9.346222646859527 3.568487192066034 2.4638174252383913 0.91256099957101 1.693547114763303 7.654888284300661 9.479792725976974 4.546107140881034 0.959018120986646 6.957414110961234 1.22895104092987 7.739810782901433 1.0390788665947222 4.371403428707598 3.7976660817274044 3.0224926868855233 5.631996962586882 0.6145475449889304 2.7025858990272007 9.14631232393354 0.3311382321364098 6.942857554134181 2.005711444363862 4.289647965375252 9.617889209456717 4.184273086589359 1.4816638365927295 0.6115231007713637 4.571839605835694 8.407956539573604 9.453099395894235 3.468952850652615 3.154309230997299 5.345935955456443 0.8263291624086735 7.895254141591781 9.919576818279358 0.7857123847435483 4.14105099632662 1.7222643406531453 0.17610713609636441 9.013086396330754 4.1792291191940265 0.22987481893037298 4.70186916213759 0.778932626412467 8.38758348446283 4.8235979282002885 0.2879603360867957 3.4462132119099174 9.809110735254155 8.945670522585434 7.5835872544752405 1.6408414760583172 0.3822742282953744 2.4870395399483476 6.2261685376931375 3.0096707200770427 7.103263851733241 3.557608749509698 9.616593371417046 5.556830009796384 2.8349511055473586 6.790750377937394 8.388658916167604 2.5572481615718563 1.467906890068647 0.5231469165005596 6.099286253389271 8.416460217970066 7.812252753195877 3.33666354855212 3.5145058658357025 0.1672554637112782 9.531579416403915 1.6816752370986325 0.4417075894288036 3.9542810238674937 0.7794639273848061 9.097058054350097 1.328098186822165 4.283897213273192 8.251746294997108 2.7781002810755973 2.271458524843086 8.972061740169782 2.8131581375988097 6.948743062512657 0.1182421174757744 6.046491523225906 5.939352266604396 4.313320965707144 3.941662535302262 0.7532522780362632 9.33546767288015 3.176017385610849 9.876045868714817 3.0086833149098515 0.6003307578271091 9.182794134000503 1.2552457448805785 3.231263966830741 4.379941806925912 0.21603295995528615 4.113916671477239 0.34763887333628674 8.836360298140525 3.3012503381006537 0.3203919803654749 6.571933743898276 5.051866225293341 8.783659656726211 7.483842003423218 3.265552355841629 2.4846022612495817 9.000255156413246 2.7364430158600306 2.106510217873498 9.254644904985243 1.30584982923601 1.283175913624739 8.513243253520514 4.130501503655804 1.365375193072337 7.730563835888301 3.5411849716192076 5.437894242859421 9.62116751972846 0.40024729537550474 5.9897232669963785 7.129624417116778 3.549598233168851 1.2053448978009036 5.101889393048335 5.059352228955681 6.199181443906664 7.857653180441739 3.3453688219877353 5.038114614898365 9.884442354304355 0.31784087269749417 4.088735487437512 8.522207351115581 3.0510108509568985 4.2949972077610425 8.593388107126437 2.727599819045886 4.156887952146793 0.1592674951090629 7.174691796145563 1.542522856987203 1.503772272345091 6.0096850690570855 6.767219966351338 5.146520795346359 3.509826546222862 8.636356626377989 8.318660113906642 0.22377895642392698 0.3148692550055836 4.084837162758884 8.346462012710157 2.5150188679259777 4.844034571990845 3.826943608088638 0.9054509867111804 9.575886073179051 1.03447065695293 0.7031014281215846 5.222167271369176 5.189607693683264 8.073890225944083 8.066036513428212 3.005605039176439 9.81416766840596 0.397818987827705 2.8005618763739615 3.274347801791585 8.950538503751284 2.0468491734463834 7.86866499856549 8.976385791140233 2.008727297759318 9.036785401936339 7.2610606761675 1.4329258277041195 9.802439057163998 4.517018723247344 0.2235082636991299 1.3019469083407764 4.717794653905508 5.438626880708297 7.305247199734497 8.180451119931053 2.4024777728953577 6.073725028620968 1.0085025379337607 3.619324678478139 1.3491621796039772 0.5170522295560342 7.712805009205548 0.3890681164197307 6.458293788905324 4.956221940439711 8.807111485455444 6.274970653891789 2.3043649947164493 0.17622547830134216 8.700666135375076 3.3444085031501967 0.9103120551119348 0.5913454540170129 8.328365112859375 1.6261842888258822 5.452687500231594 4.153295492544606 1.6008344877163956 3.8880613996270252 4.403066986182953 2.5082375029936053 4.875208724598681 3.6416164212142155 2.9126673957478872 0.3017676174062691 6.064288740072932 0.16292045465971317 7.161012284576663 4.933482331662318 3.30923528712225 0.19657537714731266 8.560163905916308 8.59376332805114 1.1688735571501012 3.391163226133483 8.068145298636086 1.5330079948024373 3.544669023667152 1.9141477377768945 8.309385806266075 3.140023170968057 9.777425542829425 2.532483439935018 1.487572203887992 0.22782816101746306 5.769736808240352 5.789132120841912 3.6517044366806983 0.2679836136097977 7.429340684665213 1.1405956226146299 1.3886441228069928 7.645974076631473 0.17198297444777122 3.897762911079396 9.874461817467694 9.666318474294691 7.152526882710523 1.9236270956866504 0.15837231623203696 8.324159268097524 9.294759966653018 8.492564485464843 8.589527981295142 0.8335244449981305 4.666983096701322 0.10949587455473253 8.436159948093389 1.080326870300417 0.9355370115455086 7.96923863122222 1.1751132116245833 3.6918775918525357 5.539114812596029 0.47036565689378484 7.48354865462369 4.85133960596317 8.000685691682316 8.68389656248826 2.112706111479249 3.3187319972479554 9.176440574491034 0.8946728726021647 9.86928999964597 4.40022698993567 0.9075112765323157 1.304552513676358 5.765772041263006 3.8980562206935265 5.680454240373907 8.263506120865584 2.6644712357582687 1.2250744341814594 4.777170052921206 4.590525270891498 0.6851665437536232 2.340228747341369 7.96093522017145 5.562978915500683 5.801423547335766 3.560380178226712 4.020170239142647 0.24207430034691324 7.604529781745404 3.1552309660486015 0.21396373355853449 8.931295820577372 9.907766231186168 2.194021285382104 0.6379487807601567 0.34799002059688533 6.589476714362268 5.002325925359578 5.499595528014376 9.273767551761999 0.4734496098997649 0.12262798456303425 9.439052839318535 4.361194902009143 1.4658617603862334 8.429239242193113 3.534384329776369 2.845262344087302 0.3847571948624111 6.622504990890739 0.6199109263880898 9.495994497846345 2.6819776692967805 8.29885270231144 6.6154765551130925 3.424833336420085 0.9775118744064848 4.475683462881875 5.97974989417236 8.9934377386103 7.298643877112457 0.6201769422204642 6.198606040922135 8.44995038199703 2.326485114632287 4.217583470318369 7.145615855603389 7.084357077310411 6.53098209704761 2.3154390277260535 2.139686310940814 4.587817875723777 2.513395760362827 0.7730139717978917 1.7474734085606114 9.111832364430146 5.605047311600075 9.326984470006309 0.979487809592273 0.7703141578520443 7.343841819580142 3.8866287884154884 0.7678091114661205 4.938191353806339 2.1218980145342408 5.360364558131053 8.95186125293883 0.2986084560976847 6.76948388885229 7.139310369661382 0.7392987337636985 4.360309909030401 9.876284203521507 9.365208186236025 0.41658429835610633 2.64281348509081 8.851513155294004 7.484317875498514 2.0908522517282635 2.876085773558841 9.018568666225432 0.1759541977955852 1.5101543311635388 9.898477793752328 2.1133816884745333 5.07170152536633 8.107296201297384 3.9478280233447034 7.699420296295877 6.181505007979345 9.428189840418796 7.357887553262499 0.6650040894083213 3.260434180523835 1.9392834390954303 8.305087557727258 2.688239949880689 2.7822340224013273 8.461940265333267 3.433693193943168 8.404028341792065 1.1704123469582783 3.8022070330922038 1.3676782894455073 7.739088826530867 1.2564903860461172 0.4752342189255243 9.602009387116881 9.412257894585434 0.5885924516568402 3.881847229490952 1.6295191136606775 9.985567650509898 7.813595424700434 6.611681910385769 1.4721782182394936 1.8913743281367639 9.861113194308968 0.5200411003478891 5.975881806790335 4.54084474025081 4.266232655131312 1.2582006050525694 8.795208785018234 2.0333539876815285 1.3828876450268752 0.8215821811397515 5.4327428567648735 8.599928661657016 1.9287557104552988 9.772564628865236 5.129009878537387 5.944389782239308 8.398558784101288 0.5251835590869147 6.114029618530541 1.2911043526933303 2.6739268934177063 2.2518907734430136 9.726130426296994 3.6327938451391626 7.7975810927216855 2.2689767730233665 1.427869788901384 2.7230006819760892 8.100541759038006 7.309611127609296 7.2679905929411746 0.3292939552756238 6.607214784309551 1.5397982571250286 1.3985529987720193 9.459001113197068 2.0631997829799538 6.589574401252804 7.491906648627927 1.64357320305276 9.94499844391714 6.468056558658848 2.9492660566697046 2.0857335992706316 8.420052693707415 6.10866512841514 1.7956699882041822 4.378036317864441 2.657909723955185 9.684755196826242 0.31435445569556997 6.141235710282632 1.269855692964013 2.7338901840345673 8.00458363142204 0.6585099741836329 3.0082566942689604 4.43633348457197 1.7583527016705718 7.675247018301219 8.26685679504109 0.9500469700200584 2.919704643629888 5.42024152101256 0.913001270560315 9.541333920343625 1.9612314290858874 9.018853500268621 6.385422611733764 6.325427827582561 1.2176276942872502 8.965780468498306 7.910450049666792 1.5708264902282565 1.604606043024595 3.047078697755252 8.380063797493946 3.1636780976116836 5.230238658767249 1.248055690084131 7.800976080971532 3.3884187984602567 5.794899010412604 7.541426671271079 9.78929695948942 0.5210786443834836 4.803353147640208 3.8455681462296205 8.325863895117273 6.398817616572794 2.8138758342861836 8.69581018412621 4.871990128262432 4.319936740065444 5.638649340716341 2.079507486808464 1.8403148287884687 8.875345492671556 8.468944318573676 4.298754534159962 2.526887221209911 7.331623416226735 0.6783387902258751 7.959615582765457 9.563555694095221 6.805021100341115 1.0063373626340963 6.032747187484695 4.328560775257312 4.870615327037083 6.803165083996292 6.311951146545343 0.46745269743666285 9.107396522131143 2.603944336961476 4.883876559844677 8.538286156903087 8.627884005866452 1.6054743361090011 1.4706253470435326 2.234630848324073 2.889712426331758 8.818778077738541 1.2421386466808935 8.986953530376068 8.598213544475897 3.637877348295384 0.953518270678706 9.18137110707615 2.7280415813853125 2.7038340046428684 7.55446525956608 0.59567473739052 8.492034786483746 9.687809498011557 4.2740201950362 7.40709980457488 6.469434978770892 7.555750300876273 0.8651832011098 3.5166075861469395 4.992402919601277 1.257772610617748 7.723301202820917 0.4117662785718599 9.322066815586776 9.710817648926941 5.930116893113618 1.4564322993174268 6.4826085146592485 4.406465171500217 4.715409620866508 1.0002179082134308 3.876456895453496 8.167275622467807 4.009997995817102 7.151655671466528 1.2893230052756426 1.7583113841266163 0.603793792671941 9.049478939757561 8.784690795101852 2.8488250850231442 2.5951350908365876 9.136353599533056 2.0375440199830437 3.2539697263399066 9.024161185388024 8.245990358897483 0.29070279757508555 7.417736572345657 8.966117066451375 0.11366594535383978 8.555173212221165 2.694534876510625 8.523028997441994 6.460754599587702 9.756529971190385 0.7336873410697295 2.3054033777805514 9.911109287259428 6.066922950748569 0.6031195456751428 2.477979101596395 2.8116401506265714 9.095720689009344 4.350733196153476 3.9385739722495368 3.880735615834299 4.1220259188842086 6.131681734156255 7.359521522095781 4.163506543243654 7.565960678508496 0.5297305772732308 2.0088816029389576 9.9225594747282 0.28912642666584 9.70362319153585 0.5219288499494841 5.1368249265912045 7.924974158679827 0.6781183493156258 4.037950827551063 5.26957630520211 2.0556731164002957 2.4200370583147826 0.718525757097761 7.025671272137126 9.778319776646867 9.112769310330686 1.5938001649090552 1.2516205355063126 6.023051251883863 2.281377768803243 2.282519811073439 3.4196557998353745 8.349740551179215 1.7688816335329038 9.244905224650843 1.53780687597762 1.0242581402590165 7.59094799164239 9.890880356040057 0.16114298198631527 9.57188229368112 1.8185064840290006 0.7363344967566272 eaf/tests/sph.S.txt0000644000175000017500000007312713534247654014064 0ustar nileshnilesh0.7641811430260288 0.24209035698886677 0.23157133691759244 0.06895962299385265 0.13134621000391106 0.8210959675333451 0.4834434796874284 0.07404740092300743 0.6760216185519694 0.22675562913932604 0.0768646967342993 0.7992994103807025 0.5686669411566786 0.28743046871861666 0.5387090866813636 0.21576293565587995 0.32025972754428156 0.7396525582297306 0.8236990343252205 0.015464354647156281 0.13223690472939864 0.6734563141367387 0.4197640159319462 0.257799550549277 0.1491126378317024 0.8004817830859797 0.18220916709026497 0.29253463164102544 0.7567883848596709 0.19468095494296844 0.5005703351391693 0.6658966148819011 0.04708377908421231 0.07714435306755163 0.8307298739102617 0.01193607004820182 0.15178977939470892 0.2558018921588066 0.779571099531432 0.08697328988005434 0.7458924018486802 0.3637114462004364 0.01128956675303185 0.08208613353952224 0.8302651725493648 0.07743475491874484 0.7848174052215654 0.27252769323011783 0.017277496364067876 0.21746193874987638 0.805368013829641 0.004313099048646232 0.8276398837541797 0.10582752185197558 0.717485946581303 0.4205861235537188 0.06728353080623467 0.700847623448641 0.45051841064769593 0.04529475421317383 0.8056198569509109 0.18954151001148853 0.10609668446433498 0.03344725611838663 0.16840603954555836 0.8165332395488238 0.1793734657797073 0.7689611876467869 0.2696844379128783 0.1055882301187226 0.08283807087658263 0.8235258490534514 0.17501013431543 0.8150750341695949 0.03507115546563455 0.21947186140103678 0.021483411286387363 0.8047213241104215 0.508002191117019 0.6579023657267112 0.07282922062517459 0.7946760080242034 0.08488506994566555 0.2397715820450827 0.48408213968626346 0.2650487340254139 0.6257950902760906 0.12473881804387231 0.7403941608523132 0.36395406060955365 0.15185152980545388 0.81268590522533 0.1126435827253174 0.0569031433465543 0.23494765848085944 0.7986034525576564 0.1299687463190539 0.8136085246055179 0.13173890106893937 0.3783457361812695 0.6670051237306619 0.32888373814444466 0.36184380970037083 0.10169579801995741 0.7449381628242521 0.8272136855969086 0.02484786038373321 0.10632942481221035 0.6450607818174418 0.4987178052552284 0.17715242834306535 0.833907433216238 0.010149210855621675 0.026480761527565223 0.49320240613796773 0.6692706301636573 0.07095107162986433 0.4233068062699459 0.019258614926741142 0.7187811196059675 0.15974906002260938 0.027031109948500772 0.8185080337432314 0.08875497729920805 0.03450498448268615 0.828937756671653 0.1296997995132116 0.14089153672556548 0.8121166057104776 0.11174149737486233 0.7450530855029251 0.3586301464355174 0.31520615057870643 0.7575091041857125 0.15175929658007592 0.04276956563289687 0.8320324187906376 0.04581116373047641 0.015866215103493713 0.05770778695316104 0.8322403011922844 0.162530036732115 0.1700276413109734 0.8005500813412303 0.06755559486525364 0.8019937654818572 0.22010925949627752 0.34863737188586885 0.2577408527751079 0.7129007505401018 0.11939270372427555 0.11790575313312887 0.817342926843368 0.282194322387405 0.6950214562497333 0.36540030671878104 0.8259151783857177 0.07508618194039957 0.09182607352526556 0.17939906714863185 0.734711027748999 0.3524507409491095 0.020776877649404567 0.15127108134778494 0.8202994731732914 0.12083806627023622 0.6941035616861794 0.4470170598310496 0.08011538722533451 0.251919479500562 0.7914063083923875 0.09124284038705309 0.21911822015741284 0.7999173670189418 0.16024185582568184 0.8115702593761649 0.10900507384067844 0.27911261613493615 0.7836503103719672 0.06476251194632096 0.769701269016777 0.2814616863258297 0.15666882264812368 0.09718034807818203 0.20894029485352594 0.8019387617014725 0.07447893046153843 0.011230675940347136 0.8309829151195555 0.021919888178780902 0.24321406186763503 0.7978548006983739 0.10368985941337235 0.6515558494591394 0.5108123260805092 0.2777307928741072 0.006611703521203511 0.7867831571986232 0.13620700565371233 0.8006490000981608 0.191349613634392 0.04714788076001179 0.2329287631257303 0.7998294274618327 0.026393990689773168 0.8309210940981295 0.07126946768148103 0.08190778338685899 0.8218525456397947 0.11855527247409414 0.15011830779351018 0.07238712530664114 0.8175759549671331 0.7235279849884947 0.41477312370498776 0.02600682940809348 0.02639175818952309 0.16351528576209545 0.8177848560637279 0.7218407047580973 0.18247498883544444 0.3766360574735297 0.18966144634239862 0.2566949270034421 0.7709358563508205 0.20463505656626385 0.08858529425236653 0.804041655420731 0.6092338995544185 0.31175635414915115 0.47733413419397497 0.10023134007454955 0.8273707748566266 0.040213477409587875 0.32815767420036385 0.7542616090409893 0.14002789142050126 0.3916038447453792 0.07796643084119002 0.7326482845321409 0.7567608804917515 0.13087087940935155 0.3261772939144261 0.13995924735975032 0.782210817161776 0.2544867206338376 0.025756565933338915 0.10391157998837998 0.8274930980020354 0.7871619938459147 0.2299269757547405 0.15399813521653177 0.2120245554003273 0.5194847248541605 0.6175654240125954 0.7847850575507246 0.22027180780932556 0.1783215873496069 0.17394154955624783 0.19563063754862933 0.7922618477344812 0.024855511592913604 0.2986593546617861 0.7787108820363473 0.6948103544324253 0.46167419147852146 0.017359627919598834 0.11391296120420977 0.10462087060721965 0.8199293598161013 0.0958208674475214 0.0395508532082637 0.8279250785895237 0.7756347540198069 0.271322782453624 0.14484654108270256 0.8317172946969406 0.059445385809089035 0.030305646229324263 0.2120794224002742 0.8069787673288521 0.0036649775085997776 0.2690916444378854 0.759533004807964 0.216575958699173 0.10181399461171926 0.09951808085846335 0.8221532135002692 0.1488618270947545 0.0666444744851818 0.8182936605155703 0.48030723578624795 0.061046829334782886 0.6795469728171184 0.23637470408322667 0.7998374006737355 0.024351101379925782 0.8038589596526411 0.13007768822516508 0.18192419409615734 0.6818770205854667 0.04854767075681036 0.19698838105870412 0.5960134793264424 0.21091576166157727 0.3261901956749453 0.11608432162382731 0.18387012704225103 0.6773727012990384 0.08475747592156407 0.6998870161412071 0.09535147991991164 0.08452022879669273 0.01074631457551862 0.7062990991483372 0.18290801985178276 0.6775208465013888 0.11673786292585449 0.1437023106126694 0.10284770897621043 0.6891223146100253 0.16470985521948936 0.5122848045448387 0.4653520306569912 0.05163990323140528 0.009907636051872813 0.7094735576134383 0.2039865679799887 0.07907526641269151 0.6769447186706322 0.034520197697253514 0.018980660085018256 0.7103278540957222 0.04322193731878651 0.7045716906127067 0.08847692768240328 0.3371547707331115 0.6239230989747265 0.05625119508268827 0.6860493985062086 0.15628386694644616 0.10501973886888594 0.04087353606396756 0.7083191663740851 0.05225784541389762 0.08230471234224086 0.002176934944482602 0.7066390628114628 0.6164964863071721 0.09411921012493209 0.34233204125077704 0.7067575225475693 0.06367669492177871 0.050563352903212365 0.036970394363883725 0.6710444089113777 0.23334558281637266 0.6653349308022503 0.05323639838308884 0.24619684309941092 0.10922910452148794 0.6710727797790702 0.20939889392157604 0.1723896259412159 0.4858026744626887 0.4903010790966103 0.6885343256007278 0.03413620507469366 0.17570649328696858 0.04250118759414379 0.09791920142963857 0.7033655158273139 0.6961433366228368 0.01135609153524374 0.14619529360147362 0.27603910047485763 0.628370909303849 0.1872698191386951 0.07399056921466088 0.690558723687468 0.15418046120368112 0.05356595597875483 0.6947055828165604 0.14363986693860198 0.5642283219183083 0.050872713458955776 0.43032073803283855 0.6766137440221719 0.09433117673301263 0.1985271777541251 0.15582738516713482 0.6627523277662682 0.20638495071811902 0.015879710472574915 0.16418986123408189 0.6920311366360579 0.14508856191146904 0.10609216040306796 0.6883395473994107 0.09165672001228939 0.6932008175069202 0.13110774994210075 0.6421268211097879 0.3034538467539377 0.04130954262915746 0.10922102345493913 0.6746324128520972 0.19763462595245615 0.513576486158988 0.4790606567340219 0.1133915774857573 0.22357763763922495 0.17504913924478396 0.652294725264491 0.6508166028771218 0.08575582671224972 0.2742284766666936 0.6952093621251987 0.12281973726372994 0.08784545954400205 0.6292781401877473 0.10528099021675716 0.3147101923856026 0.18759928505388143 0.6793248086410801 0.09716934919297462 0.02581521099248953 0.710923873468214 0.0061960329984686235 0.6674285965977921 0.23072705834638546 0.08614907312838267 0.7081293522412062 0.06515907356334427 0.020607897451468488 0.07616685659569522 0.06220968086328616 0.704589338106796 0.6500224643723889 0.12921690999989158 0.2586336323680281 0.7091247754941103 0.05457870500806413 0.016756716582445524 0.11162288050624988 0.16428396016669752 0.683131526713552 0.005615087951786342 0.6831319487886487 0.19853659899895218 0.35125360597567873 0.6183405109520187 0.019836497050465387 0.6774381559307115 0.10880359378202643 0.18803428591580484 0.13285345911530455 0.6790900118788852 0.16524007981717903 0.25202178295142547 0.6649295664896551 0.021708577484902014 0.458301482368927 0.1444573936873686 0.5246040244584964 0.7022166884173995 0.09692021361922862 0.060131227416859286 0.06684202568461764 0.31153014282055186 0.6360807209208101 0.1249031702940846 0.16506869511335542 0.6806387395341342 0.06321615345907411 0.6813889396560261 0.19450038731794128 0.23111585420536557 0.05961405437403983 0.6701859415614202 0.042899827925860876 0.016220050031762055 0.7099394935848073 0.040067470842479226 0.2021784315412644 0.6809082532987505 0.2683846065635019 0.6563263092925777 0.05764588884466928 0.7010162766794252 0.033396982185223724 0.11652635419504667 0.07940435117145457 0.02649048063739246 0.7064777231174344 0.11290178783050982 0.004435849038012223 0.7023895495795339 0.1911255433783054 0.06820520147633509 0.6818626305719313 0.5842295431531036 0.2791721598999506 0.2947139559886269 0.19271907602825689 0.6567075959034185 0.19419593463335272 0.2367338838504905 0.6655192851190697 0.08460921452311745 0.567833132273654 0.3820361173183869 0.19424600064644026 0.6647272855595806 0.246950953847848 0.057187691304893644 0.542936946809747 0.1087911033788142 0.44665594972538336 0.11151949533041157 0.6837411685232484 0.1617992164327972 0.18293948881180466 0.3586086493586104 0.5865582237502283 0.6875343067074284 0.14680837447506093 0.10891027543294564 0.2714550760568037 0.6395434796202403 0.15301584613622302 0.0334719283705817 0.046372231931919035 0.70911692683743 0.02607466316588785 0.14570985225827443 0.695849352019682 0.3099917468568933 0.009869818016753185 0.6402540694001734 0.7106755093788982 0.008053290186326762 0.03151245304276507 0.037008003559156906 0.046034282386421405 0.708963202379564 0.6889222311541344 0.07043770582835132 0.16291795122024438 0.6826719778268124 0.03314680280708969 0.19742803743199683 0.13815015059718058 0.0887805812794687 0.6922066989622464 0.08370874838156539 0.7064144943628253 0.009432783738628367 0.06108774995510099 0.251661606795901 0.662610211422132 0.6782163166885357 0.19322695905767173 0.09382718093023447 0.077378440900956 0.6907592469760052 0.15159752442382954 0.28306131151214486 0.048954325161059235 0.6508435586095969 0.07328097111811578 0.7070192591865858 0.029516710890462403 0.13184083022205859 0.1229458918957951 0.6882004598682421 0.1427384004818654 0.6621514043604281 0.21748295689995006 0.20580720160115307 0.6671596331696268 0.13659791158222487 0.15166098624202856 0.029025873695718473 0.6944595119363327 0.13350347222755907 0.6664848666579036 0.2099817021307712 0.18327925163926279 0.6870658594007141 0.021605336726467583 0.03633256823452333 0.0901625012653616 0.7047469316439848 0.5923256718085416 0.37409734573694925 0.12377012660445737 0.2058710527750858 0.6786236441661354 0.05660944283868467 0.697575508596538 0.08868571718385405 0.17089348785371214 0.6685562384183755 0.08318954152689173 0.2641843808202102 0.019952700547490584 0.05636403036875723 0.7211839686504353 0.3468117592569775 0.6150345015204439 0.15854178123611296 0.07172514538444942 0.13590999825638908 0.7071529584965816 0.12573627569499096 0.06033415535126622 0.7100926062770564 0.71321155505327 0.1218505256924447 0.01276941439187318 0.6890992485496249 0.21710118238444837 0.04111730867356172 0.11553658103086849 0.7110807536561702 0.06853313826471609 0.02155527829909929 0.21083205664024135 0.6919295807285843 0.4911238614864249 0.5227233132366204 0.09611982779080076 0.002297944334543826 0.41518238338797364 0.5927053557992007 0.6610439846874966 0.052551279097189124 0.28972494575142493 0.29261429728354954 0.1584084975741566 0.64262349143063 0.06969786068031611 0.16689573556285567 0.7006920525341077 0.06971071557120001 0.208364778087762 0.6894968210252526 0.12804124027276004 0.07450655075976931 0.708332934078485 0.1800471988745491 0.6925487741779252 0.10789129890321063 0.7184238624708749 0.06686679092545278 0.05547356956877087 0.7181178102303696 0.07504259157612131 0.04854637881880082 0.7088402492853874 0.12844422481579387 0.06876709184951575 0.09400257328449489 0.18000461188016864 0.6945813031853817 0.05331221985889061 0.1786917231705299 0.6992198553395091 0.7161186209883862 0.034536821092904346 0.09829882745704056 0.0134788220472282 0.47857950804446087 0.542642890539516 0.24623381380368103 0.2517069296810913 0.6322134618205725 0.15841755814628178 0.6922014578421655 0.13943582699252893 0.6998372720596227 0.039549554663421076 0.17984703550242598 0.16564990719479394 0.6527932158796486 0.26476868463774705 0.19370483764459398 0.6813985077275619 0.1478372089721443 0.17208011559311123 0.05661840753098914 0.7006169570907176 0.0016269655490944953 0.4734715405317876 0.5472690235217941 0.5553013380213413 0.25838470322291457 0.38543365181189687 0.10954786657020764 0.71097490872664 0.07871006865707834 0.013127432844617695 0.477149605426613 0.5439092344914523 0.03775106285670835 0.5038361775477656 0.5180784634243982 0.17004862613575958 0.6633162882538076 0.23404336628811429 0.01117941012581851 0.7225920969733073 0.037643233095702354 0.06907210810126364 0.24412879570305257 0.6777252435965218 0.07166420912417938 0.18451995887535394 0.6960588744669403 0.17454845604492844 0.22207119900301103 0.6662571199489254 0.158537908656757 0.658570041925631 0.2546223914225819 0.16957890510037837 0.7026215784848246 0.03531633063315463 0.23668933219474134 0.6780713956822884 0.08876189046894584 0.7005962109449246 0.04304484223362164 0.17604948617828295 0.20770105696238336 0.6880048568538625 0.08479928477968003 0.7101729492229598 0.013278873306784584 0.1384174285724378 0.03968069154642423 0.0400254524192494 0.7214601421381309 0.24509165845838127 0.6739952746176214 0.096652881820344 0.6416981505328815 0.33291183493350157 0.03277994174534901 0.016704385600176553 0.7031154044770529 0.17038492393909482 0.22056656173350628 0.04276639327231386 0.6878973457344325 0.10682723776592137 0.6521430993951072 0.29492143021419587 0.042082429268589606 0.06805849526586306 0.7192207179899233 0.0700278790095095 0.18341470692102194 0.6965173883424916 0.6736185960745419 0.05855871905687173 0.2578569259529823 0.05043513098692771 0.7205340688886327 0.044365346274572774 0.26150180721656124 0.11320371742832952 0.665193997266827 0.05959058987933435 0.7056411744551281 0.14899941385240656 0.6526082677486513 0.2567882889421536 0.1784476235347666 0.5673491632497777 0.07019679450728748 0.44369884811391935 0.13547324185800122 0.12422166612214687 0.6999266456017098 0.1795433173796501 0.6997398893943687 0.042539572066571094 0.08456686524398749 0.15822780962339916 0.7010661426581137 0.15260719386436625 0.2778319919993804 0.6505395909700193 0.08460961282927436 0.6542807387469697 0.2973873890038716 0.13887822605119832 0.7099335208620322 0.01971205474452237 0.7039021984822255 0.1541792775285792 0.06657158680394629 0.1973968222028873 0.6901174589010326 0.09194410433042141 0.056863759957296485 0.04446717742593212 0.7200489662184301 0.26592194511125455 0.6729391868732062 0.010940781307337616 0.16153726188889167 0.055988112609884844 0.7031730761944478 0.3136132155863164 0.6521486646703804 0.005495543211604372 0.712204997411916 0.04235371784453729 0.12104352549053617 0.13462621337023054 0.708971806884913 0.054000838260853265 0.02366557070513194 0.22490764689464932 0.6874138651121697 0.6908975480915858 0.03940581686476815 0.2116343319388315 0.12522984043654634 0.015702718650147305 0.7125673599795121 0.12401522432074795 0.4437595175209974 0.5580134815245473 0.7233298043816512 0.00930624903859424 0.019715948847926566 0.4195252457143995 0.5870127698723009 0.055640875550821436 0.7226690522677043 0.026816161792472957 0.026677053400968008 0.41494798198312394 0.15343047344113434 0.5726766914103476 0.07108737300253672 0.680044202792326 0.23699746510266345 0.21632992071632767 0.6639170497368968 0.1899917032095414 0.23379921781808263 0.4483102159299072 0.5177230986323411 0.10303944135379434 0.5293905058581827 0.48250377889676216 0.056966472316741075 0.684335060269698 0.22830172389711553 0.4573132844688238 0.010441887857141546 0.56074669650677 0.2201564157247254 0.6503030875565798 0.22873210912891348 0.2580759276178549 0.6708269875550273 0.08407912445411876 0.49286999751629484 0.5232425314592756 0.08353292546844467 0.6543757397684432 0.1721259978663639 0.2566054615123211 0.6904849090163191 0.09793212777065388 0.1931870067783493 0.10708075053059021 0.6721225084413172 0.24589912022879876 0.6678303922578656 0.18108680076107186 0.2118760689265437 0.23077539649624093 0.6783256143008594 0.10148107297572605 0.25739051532637414 0.4129591431807062 0.5356269219339341 0.6172581972693575 0.16038133248611267 0.34198169089982305 0.061747579971014176 0.17406637767103947 0.6996924062394464 0.6448567878776864 0.4406415717220478 0.21074034676958595 0.04966333985030228 0.08248386373023046 0.8032102652837646 0.35311029585708076 0.30774768589747026 0.6595614043761553 0.7933340439589708 0.0578938007154314 0.1472622419108073 0.5469370653648619 0.450212751176816 0.3906214159080945 0.696076151132998 0.23099373098502518 0.3413746525851895 0.06566385711147038 0.7950658127402498 0.1340722813973861 0.758485990661922 0.27679976075884855 0.04997659223692947 0.21526533704482748 0.06341944612255473 0.7772101220896795 0.03658382689129396 0.4194105569320593 0.6907772243654948 0.09400114459184739 0.05896141324587872 0.8013139846038135 0.2211077460179352 0.15726392893524835 0.7620998534738652 0.4309293418360336 0.6773591658799697 0.09950491496063861 0.06851053398426228 0.1813261290404342 0.7853941093607543 0.07649683805613598 0.15520306966845374 0.7902385755523909 0.3349009169619205 0.3804750606613317 0.6304735279065968 0.21350248984052414 0.7794218440096915 0.036538216576597685 0.7924629930189262 0.08364489247283068 0.13936535443525117 0.4021968899955515 0.1939479911936936 0.6745654925565097 0.6074443879175724 0.23549741876147356 0.4795508802017763 0.803650745498673 0.07800974353110121 0.04976670103400777 0.3089829206499129 0.12745683282082115 0.7366824796831429 0.13887706759314836 0.10502392022950417 0.7899999377433673 0.74659605496813 0.29263383015842614 0.1066608527577197 0.36902607087510536 0.6714855793619315 0.2595065337937029 0.7435606218313301 0.28535474758098356 0.14179927733584713 0.45920534979281097 0.5405441674798458 0.3890491165435952 0.6739354499164126 0.4474391071892501 0.005100986357436471 0.801439439681168 0.10891928010672294 0.015753739325567537 0.020325532293920118 0.28624182210952204 0.7563526012188753 0.2714221612112606 0.7506367296950563 0.13149629574360103 0.7747165339898535 0.11239025452241613 0.20395952541939286 0.7734899119301872 0.22939780271426208 0.059217983841640946 0.7856632304824595 0.0909712150070151 0.16992437043044414 0.24681842595397227 0.5625151214713653 0.5263783506982673 0.22479090239697366 0.7651831123716253 0.1355751455798457 0.0051662367706862685 0.4574411421230442 0.6671863883870559 0.7738795123912802 0.2178227647624512 0.08989165039337982 0.39896686370367396 0.04278557611490973 0.7024326312901037 0.11776824068765106 0.18460241558927953 0.7787614236735843 0.7157209158049153 0.35871824378710926 0.11611010986057564 0.8055088292300185 0.06424045749959041 0.03801914005994253 0.5347915107253637 0.17080368162822337 0.5824439095367872 0.15618959905555108 0.22009893612199885 0.7626126361548173 0.14324186325874227 0.795114127820263 0.041134629072783535 0.2273107491845744 0.29228890372073973 0.7192452887750083 0.7874142159069817 0.18445384598149142 0.019297581413199205 0.10622125114197555 0.773095070912422 0.21320840155800597 0.5679699673087109 0.570213779954119 0.08175039292839373 0.08950679669324012 0.7946271679200213 0.12236405806972345 0.4277835204916376 0.13220461375629294 0.6737506697996667 0.047585933940025575 0.8061214342903904 0.048172372028256194 0.4791813931198689 0.019313210417122167 0.6514821238907903 0.1148065294780897 0.22753416939031282 0.7677658678967347 0.1850456068057296 0.7586963142153601 0.2110800595890012 0.1527263787284062 0.7890627538150595 0.09204014961130529 0.7128527580976809 0.19319471414557615 0.3300507734529761 0.6709325766070378 0.44691518844958494 0.06732798332552946 0.38098080176152804 0.5791320139771444 0.4169850170378899 0.13988717610814683 0.7534729032316962 0.25908864779116925 0.12831075834002195 0.7725396889937394 0.2028189921625545 0.09698853580107045 0.7735569043715972 0.21591596740483468 0.002056918168369816 0.7866185767415178 0.1887955221157719 0.7377327768753881 0.09700110643820965 0.3174238501304859 0.1855774057086075 0.25459133849124166 0.7450912979050758 0.08602699164484903 0.7882483494059785 0.16025186964730492 0.7780394786763002 0.21217827991933672 0.06365306363209909 0.06988019084148565 0.16671880968038216 0.7885038762015589 0.03266601340474674 0.8004087242443272 0.11267462482732664 0.3116329624022235 0.6756226132196181 0.31754644795506376 0.6061265046457006 0.5283944216655164 0.08846898256970757 0.016927419031734454 0.7950537956417797 0.1483903294648697 0.029712843975361995 0.28043137923176964 0.7582164293941622 0.025357980401040627 0.05467814723523358 0.8067118682671478 0.2339543290978323 0.7692711115144856 0.08890497311073475 0.6934325075720866 0.3610425321002838 0.20788557625548013 0.18741103785112287 0.7582474232434454 0.21060558728203235 0.8026002583520525 0.06040405289067306 0.08124617557626139 0.039850043656256544 0.1091515952129916 0.800571463793972 0.7924788778722527 0.15565125866615162 0.046547601013878184 0.05259164172536811 0.01499036696511115 0.8071097654452282 0.36102440274760494 0.7004622466314955 0.1828408789709305 0.3698040910790185 0.7151515437997384 0.07886677995354678 0.7839503035288803 0.11278735029473543 0.16467452920424128 0.002611594598213675 0.035708226109206306 0.808167598657579 0.023427344636469283 0.7805205132958878 0.211318842524223 0.1263642306071972 0.68279503837134 0.41501780944521005 0.7658631224352478 0.05974739869242073 0.2535758099689146 0.8074637616416322 0.007082645628300531 0.04867109126184123 0.11126895451519957 0.7227259970951113 0.3459813842421889 0.20204094823332722 0.07053552965309855 0.7801416279443779 0.7382779971847803 0.219725563372766 0.24714983518408332 0.15548701646999497 0.6851065252313455 0.4010855297226023 0.17519992466993556 0.12708313055691775 0.7794688125137988 0.10720453400281671 0.8014567657929598 0.02431061110085907 0.24165124013689795 0.21535523902885603 0.7413795010123311 0.475969558626297 0.6514677312092727 0.058817852836534186 0.023259535635487872 0.45846408465342137 0.6660979225632604 0.7294775226642256 0.17382119386047856 0.3034229751530881 0.7741122229212255 0.20300145396170224 0.11814161574806417 0.3332740018266564 0.7179325807783788 0.08393366313372223 0.07086495595117322 0.2533112313641384 0.7512357743921179 0.7848640698332889 0.07513908556858064 0.1090234853063618 0.19529245896887718 0.7680913989611051 0.0737568231119316 0.7648075760240725 0.008324497745454119 0.22032631489944957 0.30508148220535813 0.17717094459161375 0.7134979721425982 0.5010296859470734 0.5234593072292848 0.32939826672057165 0.13479732141817113 0.1040025623095534 0.7775324815178055 0.03637629981264753 0.20873559489585802 0.7672351835513772 0.7228747197695969 0.22878717368889273 0.24218212014345297 0.04124085168318381 0.1782869725125676 0.7746331765606553 0.17206653788906237 0.7335956157222823 0.2564647924679335 0.7207089797633847 0.09749283571520291 0.32344601422236197 0.3349340625219266 0.17092544519977723 0.7015320923446902 0.7633730960211115 0.06667633200700224 0.21531231656581507 0.1800272482078773 0.62612884136182 0.45727067975249297 0.20989616028671845 0.7668835106833378 0.037106516713293326 0.09631670168788714 0.08328412685863633 0.7857037977718219 0.22514182561991947 0.11454185014041326 0.7548078785801349 0.20542992763275084 0.166637897863574 0.7507156362246058 0.6896006827146139 0.3933804406501847 0.056976643961431324 0.7921117433353858 0.07463096222298896 0.023082811604079816 0.13445722037010696 0.10761026773561226 0.7771003132234069 0.14669407653774214 0.16954463405428336 0.7637270949860565 0.05315038714744597 0.32482334374586314 0.7247126619202512 0.24915008911043 0.2821035427105803 0.7013454462175593 0.7855678086518828 0.1279795799819541 0.006932226281955484 0.4058311754741637 0.6393749437800457 0.2450394844167458 0.004210869926599038 0.7846061256176715 0.1338622682513286 0.07246505561629615 0.22329694534256303 0.7605464486531446 0.3095505987136276 0.24894951841819093 0.6897435572436239 0.36054169347746556 0.10790693578376963 0.7013625247458417 0.12348871285143831 0.7860520421923558 0.020404298743759926 0.23059020800641214 0.018425163092697438 0.7615985031368364 0.2746248335227317 0.7428422656880168 0.07943663993277063 0.2330630153085876 0.7466233867517071 0.14757628499993697 0.5549040733716498 0.5695362194768754 0.03540585690590978 0.7688983341867808 0.12301141597491184 0.1649459119479583 0.7164606333357316 0.3008064215823714 0.17246236765936418 0.3257007172783789 0.7261412576565798 0.013473208117328233 0.6958251669122623 0.3634706646444764 0.13137740931426412 0.39914697889962997 0.04095746447565363 0.6874211125523616 0.0012486902905176898 0.761266837606629 0.23241095795306935 0.7755876213616686 0.03838626379431299 0.17473965487594723 0.3774394586578035 0.23714271351603705 0.6594288431044383 0.7076940599496584 0.35169457335905263 0.0949929219756195 0.07380356466172824 0.48627130699048315 0.6258089648484529 0.5241734838116402 0.277291856644117 0.5309378454690619 0.015193155552728268 0.7957416860362061 0.010389791735609423 0.27865537685829256 0.7342609317381626 0.12944371639701557 0.09842304848443974 0.7898456103655892 6.526537690230337E-4 0.06412907960519908 0.7909900698656005 0.06136596097760787 0.1246478702017272 0.023217184040227965 0.7857909909531404 0.7842891216441393 0.004846305253680983 0.13568602595608473 0.12914853254008615 0.06200386183626771 0.782955802267174 0.2513062495499177 0.01776203406459254 0.7550319792742196 0.710560228558415 0.04819376740029735 0.35542247117828896 0.2918266627107211 0.6426147918388629 0.36800412889629464 0.7223385380479845 0.18691514192193362 0.2771883417727133 0.7854296644415574 0.04435408808811702 0.1211468849322876 0.43728442031404674 0.6574171188546521 0.10064133460541515 0.7152930012373423 0.019704629516899493 0.3485846534203422 0.11573254177219308 0.7867090606293826 0.035191523727809315 0.7658632450840226 0.19307465570787752 0.09858639762339262 0.7364533435992341 0.24064375958419598 0.1824024789261238 0.08098198010506269 0.19154039353829508 0.7683084062960401 0.009555739935997986 0.10476469198447039 0.7889718992406367 0.6232330216163591 0.054526295479118 0.4920885027228025 0.08444602941277289 0.7913785197559886 0.011511612786233874 0.205083744700405 0.7518604274806617 0.16183376005011582 0.14924919034891213 0.7799340882091012 0.05450786982936416 0.0659199264140784 0.36478482863317374 0.7043651061376701 0.5038097847255669 0.5062944675521127 0.35126232872968804 0.25031308669156477 0.7487870399253371 0.10101949373509761 0.07190977539719721 0.6612860216167877 0.4371194258555307 0.20741559395218276 0.3162173432649428 0.7003777365448072 0.784783215856367 0.13267185372812187 0.007556055994071511 0.039375895653449636 0.7621461627089903 0.22611142419867403 0.1101106645490236 0.3031876977376172 0.7276650823949424 0.3441308099536526 0.7164335617945906 0.0429016062480463 0.7843481303509362 0.03739715320292636 0.1301655637678814 0.03667570872379333 0.28860980859395774 0.740879802273398 0.13177909985655495 0.7177269087207094 0.3178772781796668 0.7623446282417303 0.20808185975450655 0.0952691874416213 0.025956223622622957 0.15666493166069265 0.779952552586826 0.09875763906636575 0.7146145419590538 0.3363281073451815 0.028792031908308247 0.794244740187191 0.04347323575805027 0.7641134361543284 0.1805269840057856 0.13070682988238436 0.32969933303537796 0.02631688020348481 0.7239816173467978 0.13594492699209507 0.298303940662526 0.7253118959827041 0.2231642921041665 0.4962631488662087 0.5809166863249361 0.008138640006605295 0.7645489084206415 0.22122915679302102 0.7624598919085918 0.1627842029629408 0.16031165628288355 0.7145994675200836 0.10913794904698432 0.333136788334062 0.21680145495357403 0.7544206516654923 0.13187198381130932 0.27686008438854437 0.7376617250573025 0.11290386929399436 0.033389887974082634 0.7503252314797674 0.2635161722354334 0.7625356478461435 0.06892463748639911 0.2175600853900677 0.255198609620459 0.7537446501417584 0.016919889898151186 0.20990661171539146 0.13525914417426643 0.7557696665777952 eaf/tests/eafplot.Rout.saved0000644000175000017500000000472113534247654015730 0ustar nileshnilesh R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(eaf) > pdf(file = "eafplot.pdf", title = "eafplot.pdf", width = 6, height = 6) > data(gcp2x2) > tabucol <- subset(gcp2x2, alg != "TSinN1") > tabucol$alg <- tabucol$alg[drop = TRUE] > eafplot(time + best ~ run, data = tabucol, subset = tabucol$inst == "DSJC500.5") > > eafplot(time + best ~ run | inst, groups = alg, data = gcp2x2) > > eafplot(time + best ~ run | inst, groups = alg, data = gcp2x2, percentiles = c(0, + 50, 100), include.extremes = TRUE, cex = 1.4, lty = c(2, 1, 2), lwd = c(2, 2, + 2), col = c("black", "blue", "grey50")) > > A1 <- read.data.sets(file.path(system.file(package = "eaf"), "extdata", "ALG_1_dat")) > A2 <- read.data.sets(file.path(system.file(package = "eaf"), "extdata", "ALG_2_dat")) > eafplot(A1, A2, percentiles = c(50)) > > eafplot(list(A1 = A1, A2 = A2), percentiles = c(50)) > > eafplot(A1, type="area", legend.pos="bottomleft") > > ## Using extra.points > data(HybridGA) > data(SPEA2relativeVanzyl) > eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), xlab = expression(C[E]), + ylab = "Total switches", xlim = c(320, 400), extra.points = HybridGA$vanzyl, + extra.legend = "Hybrid GA") > > data(SPEA2relativeRichmond) > eafplot(SPEA2relativeRichmond, percentiles = c(25, 50, 75), xlab = expression(C[E]), + ylab = "Total switches", xlim = c(90, 140), ylim = c(0, 25), extra.points = HybridGA$richmond, + extra.lty = "dashed", extra.legend = "Hybrid GA") > > data(SPEA2minstoptimeRichmond) > SPEA2minstoptimeRichmond[, 2] <- SPEA2minstoptimeRichmond[, 2] / 60 > eafplot(SPEA2minstoptimeRichmond, xlab = expression(C[E]), ylab = "Minimum idle time (minutes)", + las = 1, log = "y", maximise = c(FALSE, TRUE), main = "SPEA2 (Richmond)") > > eafplot(A1, A2, percentiles = c(50)) > > dev.off() null device 1 > > proc.time() user system elapsed 8.100 0.308 8.321 eaf/configure0000755000175000017500000032602214160346554013063 0ustar nileshnilesh#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for eaf 2.3. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='eaf' PACKAGE_TARNAME='eaf' PACKAGE_VERSION='2.3' PACKAGE_STRING='eaf 2.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS GSL_LIBS GSL_CFLAGS GSL_CONFIG OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures eaf 2.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/eaf] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of eaf 2.3:";; esac cat <<\_ACEOF Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF eaf configure 2.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by eaf $as_me 2.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Checks for common programs using default macros ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ## Use gsl-config to find arguments for compiler and linker flags ## ## Check for non-standard programs: gsl-config(1) # Extract the first word of "gsl-config", so it can be a program name with args. set dummy gsl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GSL_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $GSL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GSL_CONFIG="$GSL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GSL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GSL_CONFIG=$ac_cv_path_GSL_CONFIG if test -n "$GSL_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GSL_CONFIG" >&5 $as_echo "$GSL_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ## If gsl-config was found, let's use it if test "${GSL_CONFIG}" != ""; then # Use gsl-config for header and linker arguments GSL_CFLAGS=`${GSL_CONFIG} --cflags` GSL_LIBS=`${GSL_CONFIG} --libs` else as_fn_error $? "gsl-config not found, is GSL installed?" "$LINENO" 5 fi # Now substitute these variables in src/Makevars.in to create src/Makevars ac_config_files="$ac_config_files src/Makevars" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by eaf $as_me 2.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ eaf config.status 2.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eaf/R/0000755000175000017500000000000014160346554011350 5ustar nileshnilesheaf/R/whv.R0000644000175000017500000001652213771405731012305 0ustar nileshnilesh#' Compute (total) weighted hypervolume given a set of rectangles #' #' The function `whv_rect()` calculates the hypervolume weighted by a set of rectangles (with zero weight outside the rectangles). The function `total_whv_rect()` calculates the total weighted hypervolume as `hypervolume() + scalefactor * abs(prod(reference - ideal)) * whv_rect()`. The details of the computation are given by \citet{DiaLop2020ejor}. #' #' @template arg_data #' #' @param rectangles (`matrix()`) weighted rectangles that will bias the #' computation of the hypervolume. Maybe generated by [eafdiff()] with #' `rectangles=TRUE` or by [choose_eafdiff()]. #' #' @template arg_refpoint #' #' @template arg_maximise #' #' @details #' TODO #' #' @return A single numerical value. #' #' @seealso [read_datasets()], [eafdiff()], [choose_eafdiff()], [whv_hype()] #' #' @examples #' #' #' rectangles <- as.matrix(read.table(header=FALSE, text=' #' 1.0 3.0 2.0 Inf 1 #' 2.0 3.5 2.5 Inf 2 #' 2.0 3.0 3.0 3.5 3 #' ')) #' whv_rect (matrix(2, ncol=2), rectangles, reference = 6) #' whv_rect (matrix(c(2, 1), ncol=2), rectangles, reference = 6) #' whv_rect (matrix(c(1, 2), ncol=2), rectangles, reference = 6) #' #' @references #' \insertAllCited{} #' #'@export #'@md whv_rect <- function(data, rectangles, reference, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) stop("reference cannot be NULL") if (length(reference) == 1) reference <- rep_len(reference, nobjs) # FIXME: This is wrong for maximisation stopifnot(maximise == FALSE) # FIXME: Do this in C code! rectangles_a <- rectangles[,c(1,3), drop=FALSE] rectangles_a[rectangles_a > reference[1]] <- reference[1] rectangles_b <- rectangles[,c(2,4), drop=FALSE] rectangles_b[rectangles_b > reference[2]] <- reference[2] rectangles[,c(1,3)] <- rectangles_a rectangles[,c(2,4)] <- rectangles_b # Remove empty rectangles maybe created above. rectangles <- rectangles[ (rectangles[,1] != rectangles[,3]) & (rectangles[,2] != rectangles[,4]), , drop = FALSE] rectangles_nrows <- nrow(rectangles) if (nobjs != 2) stop("sorry: only 2 objectives supported") if (ncol(rectangles) != 5) stop("rectangles: invalid number of columns") if (any(maximise)) { if (length(maximise) == 1) { data <- -data reference <- -reference rectangles[,1:4] <- -rectangles[,1:4, drop = FALSE] } else if (length(maximise) != nobjs) { stop("length of maximise must be either 1 or ncol(data)") } data[,maximise] <- -data[,maximise] reference[maximise] <- -reference[maximise] pos <- as.vector(matrix(1:4, nrow=2)[,maximise]) rectangles[,pos] <- -rectangles[,pos] } return(.Call(rect_weighted_hv2d_C, as.double(t(data)), as.integer(npoints), as.double(t(rectangles)), as.integer(rectangles_nrows))) } #' @template arg_ideal #' #' @param scalefactor (`numeric(1)`) real value within \eqn{(0,1]} that scales #' the overall weight of the differences. This is parameter psi (\eqn{\psi}) in \citet{DiaLop2020ejor}. #' #' @examples #' total_whv_rect (matrix(2, ncol=2), rectangles, reference = 6, ideal = c(1,1)) #' total_whv_rect (matrix(c(2, 1), ncol=2), rectangles, reference = 6, ideal = c(1,1)) #' total_whv_rect (matrix(c(1, 2), ncol=2), rectangles, reference = 6, ideal = c(1,1)) #' #'@rdname whv_rect #' #' @export #'@md total_whv_rect <- function(data, rectangles, reference, maximise = FALSE, ideal = NULL, scalefactor = 0.1) { nobjs <- ncol(data) maximise <- as.logical(rep_len(maximise, nobjs)) if (nobjs != 2) stop("sorry: only 2 objectives supported") if (ncol(rectangles) != 5) stop("rectangles: invalid number of columns") if (scalefactor <= 0 || scalefactor > 1) stop("scalefactor must be within (0,1]") hv <- hypervolume(data, reference, maximise = maximise) whv <- whv_rect(data, rectangles, reference, maximise = maximise) if (is.null(ideal)) { # FIXME: Should we include the range of the rectangles here? minmax <- apply(data, 2, range) lower <- minmax[1,] upper <- minmax[2,] ideal <- ifelse(maximise, upper, lower) } if (length(ideal) != nobjs) { stop("ideal should have same length as nobjs") } beta <- scalefactor * abs(prod(reference - ideal)) #cat("beta: ", beta, "\n") return (hv + beta * whv) } #' Approximation of the (weighted) hypervolume by Monte-Carlo sampling #' #' Return an estimation of the hypervolume of the space dominated by the input #' data following the procedure described by \citet{AugBadBroZit2009gecco}. A #' weight distribution describing user preferences may be specified. #' #' @template arg_data #' #' @template arg_refpoint #' #' @template arg_maximise #' #' @template arg_ideal #' #' @param nsamples (`integer(1)`) number of samples for Monte-Carlo sampling. #' #' @param dist (`list()`) weight distribution. See Details. #' #' @details #' A weight distribution \citep{AugBadBroZit2009gecco} can be provided via the `dist` argument. The ones currently supported are: #' * `type="point"` describes a goal in the objective space, where `mu` gives the coordinates of the goal. The resulting weight distribution is a multivariate normal distribution centred at the goal. #' * `type="exponential"` describes an exponential distribution with rate parameter `1/mu`, i.e., \eqn{\lambda = \frac{1}{\mu}}. #' #' @return A single numerical value. #' #' @references #' \insertAllCited{} #' #' @seealso [read_datasets()], [eafdiff()], [whv_rect()] #' #' @examples #' #' whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1) #' #' whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1) #' #' whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1, #' dist = list(type="exponential", mu=0.2)) #' #' whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1, #' dist = list(type="exponential", mu=0.2)) #' #' whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1, #' dist = list(type="point", mu=c(1,1))) #' #' whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1, #' dist = list(type="point", mu=c(1,1))) #' #'@export #'@md whv_hype <- function(data, reference, ideal, maximise = FALSE, dist = list(type = "uniform"), nsamples = 1e5L) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) stop("reference cannot be NULL") if (length(reference) == 1) reference <- rep_len(reference, nobjs) if (is.null(ideal)) stop("ideal cannot be NULL") if (length(ideal) == 1) ideal <- rep_len(ideal, nobjs) if (nobjs != 2) { stop("sorry: only 2 objectives supported") } if (any(maximise)) { if (length(maximise) == 1) { data <- -data reference <- -reference ideal <- -ideal } else if (length(maximise) != nobjs) { stop("length of maximise must be either 1 or ncol(data)") } data[,maximise] <- -data[,maximise] reference[maximise] <- -reference[maximise] ideal[maximise] <- -ideal[maximise] } seed <- get_seed() return(.Call(whv_hype_C, as.double(t(data)), as.integer(npoints), as.double(ideal), as.double(reference), dist, as.integer(seed), as.integer(nsamples))) } get_seed <- function() sample.int(.Machine$integer.max, 1) eaf/R/nondominated.R0000644000175000017500000000646513706402720014156 0ustar nileshnileshcheck_dataset <- function(x) { name <- deparse(substitute(x)) if (length(dim(x)) != 2L) stop("'", name, "' must be a data.frame or a matrix") if (nrow(x) < 1L) stop("not enough points (rows) in '", name, "'") if (ncol(x) < 2) stop("'", name, "' must have at least 2 columns") x <- as.matrix(x) if (!is.numeric(x)) stop("'", name, "' must be numeric") return(x) } #' Identify, remove and rank dominated points according to Pareto optimality #' #' Identify nondominated points with `is_nondominated` and remove dominated #' ones with `filter_dominated`. #' #' @rdname nondominated #' #' @template arg_data #' #' @template arg_maximise #' #' @param keep_weakly If `FALSE`, return `FALSE` for any duplicates #' of nondominated points. #' #' @return `is_nondominated` returns a logical vector of the same length #' as the number of rows of `data`, where `TRUE` means that the #' point is not dominated by any other point. #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @examples #' path_A1 <- file.path(system.file(package="eaf"),"extdata","ALG_1_dat.xz") #' set <- read_datasets(path_A1)[,1:2] #' #' is_nondom <- is_nondominated(set) #' cat("There are ", sum(is_nondom), " nondominated points\n") #' #' plot(set, col = "blue", type = "p", pch = 20) #' ndset <- filter_dominated(set) #' points(ndset[order(ndset[,1]),], col = "red", pch = 21) #' #' @export #' @md is_nondominated <- function(data, maximise = FALSE, keep_weakly = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) maximise <- as.logical(rep_len(maximise, nobjs)) return(.Call(is_nondominated_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), maximise, as.logical(keep_weakly))) } #' @rdname nondominated #' @export #' @return `filter_dominated` returns a matrix or data.frame with only mutually nondominated points. #' @md #' filter_dominated <- function(data, maximise = FALSE, keep_weakly = FALSE) { return(data[is_nondominated(data, maximise = maximise, keep_weakly = keep_weakly), , drop = FALSE]) } #' @description `pareto_rank()` ranks points according to Pareto-optimality, which is also called #' nondominated sorting \citep{Deb02nsga2}. #' #' @rdname nondominated #' @export #' @return `pareto_rank()` returns an integer vector of the same length as #' the number of rows of `data`, where each value gives the rank of each #' point. #' #' @details `pareto_rank()` is meant to be used like `rank()`, but it #' assigns ranks according to Pareto dominance. Duplicated points are kept on #' the same front. When `ncol(data) == 2`, the code uses the \eqn{O(n #' \log n)} algorithm by \citet{Jen03}. #' #' @references #' #' \insertAllCited{} #' #' @examples #' ranks <- pareto_rank(set) #' colors <- colorRampPalette(c("red","yellow","springgreen","royalblue"))(max(ranks)) #' plot(set, col = colors[ranks], type = "p", pch = 20) #' #' @md pareto_rank <- function(data, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) maximise <- as.logical(rep_len(maximise, nobjs)) data <- matrix.maximise(data, maximise) return(.Call(pareto_ranking_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints))) } eaf/R/vorob.R0000644000175000017500000001752114033167573012631 0ustar nileshnilesh##' Compute Vorob'ev threshold, expectation and deviation. Also, displaying the ##' symmetric deviation function is possible. The symmetric deviation ##' function is the probability for a given target in the objective space to ##' belong to the symmetric difference between the Vorob'ev expectation and a ##' realization of the (random) attained set. ##' ##' @title Vorob'ev computations ##' @param x Either a matrix of data values, or a data frame, or a list of data ##' frames of exactly three columns. The third column gives the set (run, ##' sample, ...) identifier. ##' @template arg_refpoint ##' @return `vorobT` returns a list with elements `threshold`, ##' `VE`, and `avg_hyp` (average hypervolume) ##' @rdname Vorob ##' @author Mickael Binois ##' @examples ##' data(CPFs) ##' res <- vorobT(CPFs, reference = c(2, 200)) ##' print(res$threshold) ##' ##' ## Display Vorob'ev expectation and attainment function ##' # First style ##' eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 25, 50, 75, 100, res$threshold), ##' main = substitute(paste("Empirical attainment function, ",beta,"* = ", a, "%"), ##' list(a = formatC(res$threshold, digits = 2, format = "f")))) ##' ##' # Second style ##' eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 20, 40, 60, 80, 100), ##' col = gray(seq(0.8, 0.1, length.out = 6)^0.5), type = "area", ##' legend.pos = "bottomleft", extra.points = res$VE, extra.col = "cyan", ##' extra.legend = "VE", extra.lty = "solid", extra.pch = NA, extra.lwd = 2, ##' main = substitute(paste("Empirical attainment function, ",beta,"* = ", a, "%"), ##' list(a = formatC(res$threshold, digits = 2, format = "f")))) ##' @md ##' @export vorobT <- function(x, reference) { x <- check.eaf.data(x) setcol <- ncol(x) nobjs <- setcol - 1L # First step: compute average hypervolume over conditional Pareto fronts avg_hyp <- mean(sapply(split.data.frame(x[,1:nobjs], x[, setcol]), hypervolume, reference = reference)) prev_hyp <- diff <- Inf # hypervolume of quantile at previous step a <- 0 b <- 100 while (diff != 0) { c <- (a + b) / 2 eaf_res <- eafs(x[,1:nobjs], x[,setcol], percentiles = c)[,1:nobjs] tmp <- hypervolume(eaf_res, reference = reference) if (tmp > avg_hyp) a <- c else b <- c diff <- prev_hyp - tmp prev_hyp <- tmp } return(list(threshold = c, VE = eaf_res, avg_hyp = avg_hyp)) } ##' @export ##' @rdname Vorob ##' @return `vorobDev` returns the Vorob'ev deviation. ##' @examples ##' ##' # Now print Vorob'ev deviation ##' VD <- vorobDev(CPFs, res$VE, reference = c(2, 200)) ##' print(VD) ##' @md vorobDev <- function(x, VE, reference) { if (is.data.frame(x)) x <- as.matrix(x) if (is.null(VE)) VE <- vorobT(x, reference)$VE setcol <- ncol(x) nobjs <- setcol - 1L # Hypervolume of the symmetric difference between A and B: # 2 * H(AUB) - H(A) - H(B) H2 <- hypervolume(VE, reference = reference) x.split <- split.data.frame(x[,1:nobjs, drop=FALSE], x[,setcol]) H1 <- mean(sapply(x.split, hypervolume, reference = reference)) hv.union.VE <- function(y) return(hypervolume(rbind(y[, 1:nobjs, drop=FALSE], VE), reference = reference)) VD <- 2 * sum(sapply(x.split, hv.union.VE)) nruns <- length(x.split) return((VD / nruns) - H1 - H2) } ##' @rdname Vorob ##' @references ##' ##' \insertRef{BinGinRou2015gaupar}{eaf} ##' ##' C. Chevalier (2013), Fast uncertainty reduction strategies relying on ##' Gaussian process models, University of Bern, PhD thesis. ##' ##' I. Molchanov (2005), Theory of random sets, Springer. ##' ##' @param VE,threshold Vorob'ev expectation and threshold, e.g., as returned ##' by [vorobT()]. ##' @param nlevels number of levels in which is divided the range of the ##' symmetric deviation. ##' @param ve.col plotting parameters for the Vorob'ev expectation. ##' @param xlim,ylim,main Graphical parameters, see ##' [`plot.default()`][graphics::plot.default()]. ##' @param legend.pos the position of the legend, see ##' [`legend()`][graphics::legend()]. A value of `"none"` hides the legend. ##' @param col.fun function that creates a vector of `n` colors, see ##' [`heat.colors()`][grDevices::heat.colors()]. ##' @examples ##' # Now display the symmetric deviation function. ##' symDifPlot(CPFs, res$VE, res$threshold, nlevels = 11) ##' # Levels are adjusted automatically if too large. ##' symDifPlot(CPFs, res$VE, res$threshold, nlevels = 200, legend.pos = "none") ##' ##' # Use a different palette. ##' symDifPlot(CPFs, res$VE, res$threshold, nlevels = 11, col.fun = heat.colors) ##' @md ##' @export # FIXME: Implement "add=TRUE" option that just plots the lines,points or # surfaces and does not create the plot nor the legend (but returns the info # needed to create a legend), so that one can use the function to add stuff to # another plot. symDifPlot <- function(x, VE, threshold, nlevels = 11, ve.col = "blue", xlim = NULL, ylim = NULL, legend.pos = "topright", main = "Symmetric deviation function", col.fun = function(n) gray(seq(0, 0.9, length.out = n)^2)) { # FIXME: These maybe should be parameters of the function in the future. maximise <- c(FALSE, FALSE) xaxis.side <- "below" yaxis.side <- "left" log <- "" xlab <- colnames(x)[1] ylab <- colnames(x)[2] las <- par("las") sci.notation <- FALSE nlevels <- min(length(unique.default(x[, 3])) - 1, nlevels) threshold <- round(threshold, 4) seq.levs <- round(seq(0, 100, length.out = nlevels), 4) levs <- sort.int(unique.default(c(threshold, seq.levs))) attsurfs <- compute.eaf.as.list(x, percentiles = levs) # Denote p_n the attainment probability, the value of the symmetric # difference function is p_n if p_n < alpha (Vorob'ev threshold) and 1 - p_n # otherwise. Therefore, there is a sharp transition at alpha. For example, # for threshold = 44.5 and 5 levels, we color the following intervals: # # [0, 25) [25, 44.9) [44.9, 50) [50, 75) [75, 100] # # with the following colors: # # [0, 25) [25, 50) [50, 75) [25, 50) [0, 25) max.interval <- max(which(seq.levs < max(100 - threshold, threshold))) colscale <- seq.levs[1:max.interval] # Reversed so that darker colors are associated to higher values names(colscale) <- rev(col.fun(max.interval)) cols <- c(names(colscale[colscale < threshold]), rev(names(colscale[1:max(which(colscale < 100 - threshold))])), "#FFFFFF") # To have white after worst case names(levs) <- cols # FIXME: We should take the range from the attsurfs to not make x mandatory. xlim <- get.xylim(xlim, maximise[1], data = x[,1]) ylim <- get.xylim(ylim, maximise[2], data = x[,2]) extreme <- get.extremes(xlim, ylim, maximise, log = log) plot(xlim, ylim, type = "n", xlab = "", ylab = "", xlim = xlim, ylim = ylim, log = log, axes = FALSE, las = las, main = main, panel.first = { plot.eaf.full.area(attsurfs, extreme = extreme, maximise = maximise, col = cols) # We place the axis after so that we get grid lines. plot.eaf.axis (xaxis.side, xlab, las = las, sci.notation = sci.notation) plot.eaf.axis (yaxis.side, ylab, las = las, sci.notation = sci.notation, line = 2.2) plot.eaf.full.lines(list(VE), extreme, maximise, col = ve.col, lty = 1, lwd = 2) }) # Use first.open to print "(0,X)", because the color for 0 is white. intervals <- seq.intervals.labels(seq.levs, first.open = TRUE) intervals <- intervals[1:max.interval] names(intervals) <- names(colscale) #names(intervals) <- names(colscale[1:max.interval]) if (is.na(pmatch(legend.pos, "none"))) legend(legend.pos, legend = c("VE", intervals), fill = c(ve.col, names(intervals)), bg="white", bty="n", xjust=0, yjust=0, cex=0.9) box() } eaf/R/common.R0000644000175000017500000000666513645077246013006 0ustar nileshnilesh### Copyright (C) 2001-2006 Deepayan Sarkar ### Copyright (C) 2001-2005 Saikat DebRoy ### ### This file is part of the lattice package for R. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ### MA 02110-1301, USA .cupdate <- function(index, maxim) { ## This unexported function is used to handle arbitrary number of ## conditioning variables : every time it is called, it increments ## the "current" level of the conditioning variables suitably, ## i.e., it tries to increment the level of the 1st conditining ## variable (the one which varies fastest along panel order) and ## if it happens to be at its maximum (last) value, it sets it to ## the first value AND increments the "current" level of the 2nd ## (next) conditioning variable recursively. if(length(index)!=length(maxim)||length(maxim)<=0) stop("Inappropriate arguments") index[1] <- index[1] + 1 if (index[1] > maxim[1] && length(maxim) > 1) c(1, .cupdate(index[-1], maxim[-1])) else index } .check.layout <- function(layout, cond.max.level, skip = FALSE) { if (all(skip)) stop("skip cannot be all TRUE") number.of.cond <- length(cond.max.level) nplots <- prod(cond.max.level) if (!is.numeric(layout)) { layout <- c(0,1,1) if (number.of.cond == 1) layout[2] <- nplots else { layout[1] <- cond.max.level[1] layout[2] <- cond.max.level[2] } skip <- rep(skip, length.out = max(layout[1] * layout[2], layout[2])) plots.per.page <- length(skip) - length(skip[skip]) layout[3] <- ceiling(nplots/plots.per.page) # + 1 } else if (length(layout) == 1) stop("layout must have at least 2 elements") else if (length(layout) == 2) { if (all(is.na(layout))) stop("inadmissible value of layout") else if (all(layout < 1)) stop("at least one element of layout must be positive") else if (isTRUE(layout[2] == 0)) stop("inadmissible value of layout") if (is.na(layout[1])) layout[1] <- ceiling(nplots / layout[2]) if (is.na(layout[2])) layout[2] <- ceiling(nplots / layout[1]) skip <- rep(skip, length.out = max(layout[1] * layout[2], layout[2])) plots.per.page <- length(skip) - length(skip[skip]) layout[3] <- ceiling(nplots / plots.per.page) # + 1 } else if (length(layout)==3) { if(layout[1] < 0 || layout[2] < 1 || layout[3] < 1) stop("invalid value for layout") } layout } .compute.packet <- function(cond, levels) { id <- !(do.call("pmax", lapply(cond, is.na))) stopifnot(any(id)) for (i in seq_along(cond)) { var <- cond[[i]] id <- id & (as.numeric(var) == levels[i]) ## MARCO: Removed the possibility of numerical conditioning variables } id } eaf/R/eaf.R0000644000175000017500000015543714160136432012235 0ustar nileshnilesh############################################################################### # # Copyright (c) 2011-2019 # Manuel Lopez-Ibanez # Marco Chiarandini # # This program is free software (software libre); you can redistribute # it and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you can obtain a copy of the GNU # General Public License at http://www.gnu.org/copyleft/gpl.html # # IMPORTANT NOTE: Please be aware that the fact that this program is # released as Free Software does not excuse you from scientific # propriety, which obligates you to give appropriate credit! If you # write a scientific paper describing research that made substantive use # of this program, it is your obligation as a scientist to (a) mention # the fashion in which this software was used in the Methods section; # (b) mention the algorithm in the References section. The appropriate # citation is: # # Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stuetzle. # Exploratory Analysis of Stochastic Local Search Algorithms in # Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, # L. Paquete, and M. Preuss, editors, Experimental Methods for the # Analysis of Optimization Algorithms, pages 209-222. Springer, # Berlin, Germany, 2010. doi: 10.1007/978-3-642-02538-9_9 # # Moreover, as a personal note, I would appreciate it if you would email # manuel.lopez-ibanez@manchester.ac.uk with citations of papers referencing # this work so I can mention them to my funding agent and tenure committee. # ################################################################################ # # TODO: # # * Follow this style for coding: # http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html # ################################################################################ #dyn.load("../src/eaf.so") check.eaf.data <- function(x) { name <- deparse(substitute(x)) if (length(dim(x)) != 2L) stop("'", name, "' must be a data.frame or a matrix") if (nrow(x) < 1L) stop("not enough points (rows) in '", name, "'") if (ncol(x) < 3) stop("'", name, "' must have at least 3 columns: 2D points and set index") # Re-encode the sets so that they are consecutive and numeric setcol <- ncol(x) x[, setcol] <- as.numeric(as.factor(x[, setcol])) x <- as.matrix(x) if (!is.numeric(x)) stop("The two first columns of '", name, "' must be numeric") return(x) } compute.eaf <- function(data, percentiles = NULL) { data <- check.eaf.data(data) setcol <- ncol(data) nobjs <- setcol - 1L # The C code expects points within a set to be contiguous. data <- data[order(data[, setcol]), , drop=FALSE] sets <- data[, setcol] nsets <- length(unique(sets)) npoints <- tabulate(sets) if (is.null(percentiles)) { # FIXME: We should compute this in the C code. percentiles <- 1L:nsets * 100.0 / nsets } # FIXME: We should handle only integral levels inside the C code. percentiles <- unique.default(sort.int(percentiles)) return(.Call(compute_eaf_C, as.double(t(as.matrix(data[, 1L:nobjs]))), as.integer(nobjs), as.integer(cumsum(npoints)), as.integer(nsets), as.numeric(percentiles))) } compute.eaf.as.list <- function(data, percentiles = NULL) { eaf <- compute.eaf (data, percentiles = percentiles) setcol <- ncol(eaf) nobjs <- setcol - 1L eaf_sets <- eaf[, setcol] uniq_eaf_sets <- unique.default(eaf[, setcol]) return(split.data.frame(eaf[,1:nobjs, drop=FALSE], factor(eaf_sets, levels = uniq_eaf_sets, labels = uniq_eaf_sets))) } compute.eafdiff.helper <- function(data, intervals) { # Last column is the set number. setcol <- ncol(data) nobjs <- setcol - 1L # the C code expects points within a set to be contiguous. data <- data[order(data[, setcol]), ] sets <- data[, setcol] nsets <- length(unique(sets)) npoints <- tabulate(sets) # FIXME: Ideally this would be computed by the C code, but it is hard-coded. ## division <- nsets %/% 2 ## nsets1 <- division ## nsets2 <- nsets - division return(.Call(compute_eafdiff_C, as.double(t(as.matrix(data[, 1L:nobjs]))), nobjs, as.integer(cumsum(npoints)), as.integer(nsets), as.integer(intervals))) } #' Compute empirical attainment function differences #' #' Calculate the differences between the empirical attainment functions of two #' data sets. #' #' @param x,y Data frames corresponding to the input data of #' left and right sides, respectively. Each data frame has at least three #' columns, the third one being the set of each point. See also #' [read_datasets()]. #' #' @param intervals (`integer(1)`) \cr The absolute range of the differences #' \eqn{[0, 1]} is partitioned into the number of intervals provided. #' #' @template arg_maximise #' #' @param rectangles If TRUE, the output is in the form of rectangles of the same color. #' #' @details #' This function calculates the differences between the EAFs of two #' data sets. #' #' @return With `rectangle=FALSE`, a `data.frame` containing points where there #' is a transition in the value of the EAF differences. With #' `rectangle=TRUE`, a `matrix` where the first 4 columns give the #' coordinates of two corners of each rectangle and the last column. In both #' cases, the last column gives the difference in terms of sets in `x` minus #' sets in `y` that attain each point (i.e., negative values are differences #' in favour `y`). #' #' @seealso [read_datasets()], [eafdiffplot()] #' #' @examples #' #' A1 <- read_datasets(text=' #' 3 2 #' 2 3 #' #' 2.5 1 #' 1 2 #' #' 1 2 #' ') #' A2 <- read_datasets(text=' #' 4 2.5 #' 3 3 #' 2.5 3.5 #' #' 3 3 #' 2.5 3.5 #' #' 2 1 #' ') #' d <- eafdiff(A1, A2) #' str(d) #' print(d) #' #' d <- eafdiff(A1, A2, rectangles = TRUE) #' str(d) #' print(d) #' #'@export #'@md eafdiff <- function(x, y, intervals = NULL, maximise = c(FALSE, FALSE), rectangles = FALSE) { maximise <- as.logical(maximise) nsets <- (length(unique(x[,ncol(x)])) + length(unique(y[,ncol(y)]))) if (is.null(intervals)) { # Default is nsets / 2 intervals <- nsets / 2.0 } else { stopifnot(length(intervals) == 1L) intervals <- min(intervals, nsets / 2.0) } data <- rbind_datasets(x, y) data <- check.eaf.data(data) # FIXME: Is it faster to subset or to multiply the third column by 1? data[,1:2] <- matrix.maximise(data[,1:2, drop=FALSE], maximise = maximise) DIFF <- if (rectangles) compute.eafdiff.rectangles(data, intervals = intervals) else compute.eafdiff.helper(data, intervals = intervals) # FIXME: We should remove duplicated rows in C code. # FIXME: Check that we do not generate duplicated nor overlapping rectangles # with different colors. That would be a bug. DIFF <- DIFF[!duplicated(DIFF),] return(DIFF) } compute.eafdiff <- function(data, intervals) { DIFF <- compute.eafdiff.helper(data, intervals) #print(DIFF) # FIXME: Do this computation in C code. See compute_eafdiff_area_C setcol <- ncol(data) eafval <- DIFF[, setcol] eafdiff <- list(left = unique(DIFF[ eafval >= 1L, , drop=FALSE]), right = unique(DIFF[ eafval <= -1L, , drop=FALSE])) eafdiff$right[, setcol] <- -eafdiff$right[, setcol] return(eafdiff) } # FIXME: The default intervals should be nsets / 2 compute.eafdiff.rectangles <- function(data, intervals = 1L) { # Last column is the set number. nobjs <- ncol(data) - 1L # the C code expects points within a set to be contiguous. data <- data[order(data[, nobjs + 1L]), ] sets <- data[ , nobjs + 1L] nsets <- length(unique(sets)) npoints <- tabulate (sets) return(.Call(compute_eafdiff_rectangles_C, as.double(t(as.matrix(data[, 1L:nobjs]))), nobjs, as.integer(cumsum(npoints)), as.integer(nsets), as.integer(intervals))) } # FIXME: The default intervals should be nsets / 2 compute.eafdiff.polygon <- function(data, intervals = 1L) { # Last column is the set number. nobjs <- ncol(data) - 1L # the C code expects points within a set to be contiguous. data <- data[order(data[, nobjs + 1L]), ] sets <- data[ , nobjs + 1L] nsets <- length(unique(sets)) npoints <- tabulate(sets) # FIXME: Ideally this would be computed by the C code, but it is hard-coded. ## division <- nsets %/% 2 ## nsets1 <- division ## nsets2 <- nsets - division # FIMXE: This function may require a lot of memory for 900 sets. Is there a # way to save memory? return(.Call(compute_eafdiff_area_C, as.double(t(as.matrix(data[, 1L:nobjs]))), nobjs, as.integer(cumsum(npoints)), as.integer(nsets), as.integer(intervals))) } rm.inf <- function(x, xmax) { x[is.infinite(x)] <- xmax return(x) } # FIXME: Accept ... max.finite <- function (x) { x <- as.vector(x) x <- x[is.finite(x)] if (length(x)) return(max(x)) return(NULL) } # FIXME: Accept ... min.finite <- function (x) { x <- as.vector(x) x <- x[is.finite(x)] if (length(x)) return(min(x)) return(NULL) } # FIXME: Accept ... range.finite <- function(x) { x <- as.vector(x) x <- x[is.finite(x)] if (length(x)) return(range(x)) return(NULL) } matrix.maximise <- function(z, maximise) { stopifnot(ncol(z) == length(maximise)) if (is.data.frame(z)) { # R bug?: If z is data.frame with rownames != NULL, and # maximise == (FALSE, FALSE), then -z[, which(FALSE)] # gives error: Error in # data.frame(value, row.names = rn, check.names = FALSE, check.rows = FALSE) : # row names supplied are of the wrong length row_names <- rownames(z) rownames(z) <- NULL x <- which(maximise) z[, x] <- -z[, x] rownames(z) <- row_names } else { x <- ifelse(maximise, -1L, 1L) z <- t(t(z) * x) } return(z) } rbind_datasets <- function(x,y) { stopifnot(min(x[,3]) == 1) stopifnot(min(y[,3]) == 1) # We have to make all sets unique. y[,3] <- y[,3] + max(x[,3]) return(rbind(x, y)) } ## Calculate the intermediate points in order to plot a staircase-like ## polygon. ## Example: given ((1,2), (2,1)), it returns ((1,2), (2,2), (2,1)). ## Input should be already in the correct order. points.steps <- function(x) { n <- nrow(x) if (n == 1L) return(x) x <- rbind(x, cbind(x=x[-1L, 1L, drop=FALSE], y=x[-n, 2L, drop=FALSE])) idx <- c(as.vector(outer(c(0L, n), 1L:(n - 1L), "+")), n) stopifnot(length(idx) == nrow(x)) stopifnot(!anyDuplicated(idx)) return(x[idx, ]) } #' Exact computation of the EAF #' #' This function computes the EAF given a set of points and a vector `set` #' that indicates to which set each point belongs. #' #' @param points Either a matrix or a data frame of numerical values, where #' each row gives the coordinates of a point. #' #' @param sets A vector indicating which set each point belongs to. #' #' @param groups Indicates that the EAF must be computed separately for data #' belonging to different groups. #' #' @param percentiles (`numeric()`) Vector indicating which percentiles are computed. #' `NULL` computes all. #' #' @return A data frame (`data.frame`) containing the exact representation #' of EAF. The last column gives the percentile that corresponds to each #' point. If groups is not `NULL`, then an additional column #' indicates to which group the point belongs. #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #'@note There are several examples of data sets in `system.file(package="eaf","extdata")`. #' #'@seealso [read_datasets()] #' #'@examples #' extdata_path <- system.file(package="eaf", "extdata") #' #' x <- read_datasets(file.path(extdata_path, "example1_dat")) #' # Compute full EAF #' str(eafs(x[,1:2], x[,3])) #' #' # Compute only best, median and worst #' str(eafs(x[,1:2], x[,3], percentiles = c(0, 50, 100))) #' #' x <- read_datasets(file.path(extdata_path, "spherical-250-10-3d.txt")) #' y <- read_datasets(file.path(extdata_path, "uniform-250-10-3d.txt")) #' x <- data.frame(x, groups = "spherical") #' x <- rbind(x, data.frame(y, groups = "uniform")) #' # Compute only median separately for each group #' z <- eafs(x[,1:3], sets = x[,4], groups = x[,5], percentiles = 50) #' str(z) #' # library(plotly) #' # plot_ly(z, x = ~X1, y = ~X2, z = ~X3, color = ~groups, #' # colors = c('#BF382A', '#0C4B8E')) %>% add_markers() #'@export #'@md eafs <- function (points, sets, groups = NULL, percentiles = NULL) { points <- cbind(points, sets) if (is.null(groups)) { attsurfs <- compute.eaf (points, percentiles) } else { attsurfs <- data.frame() groups <- factor(groups) for (g in levels(groups)) { tmp <- compute.eaf(points[groups == g,], percentiles) attsurfs <- rbind(attsurfs, data.frame(tmp, groups = g)) } } return (attsurfs) } # Get correct xlim or ylim when maximising / minimising. get.xylim <- function(lim, maximise, data) { # FIXME: This seems too complicated. if (!is.null(lim) && maximise) lim <- -lim if (is.null(lim)) lim <- range(data) if (maximise) lim <- range(-lim) return(lim) } get.extremes <- function(xlim, ylim, maximise, log) { if (length(log) && log != "") log <- strsplit(log, NULL)[[1L]] if ("x" %in% log) xlim <- log(xlim) if ("y" %in% log) ylim <- log(ylim) extreme1 <- ifelse(maximise[1], xlim[1] - 0.05 * diff(xlim), xlim[2] + 0.05 * diff(xlim)) extreme2 <- ifelse(maximise[2], ylim[1] - 0.05 * diff(ylim), ylim[2] + 0.05 * diff(ylim)) if ("x" %in% log) extreme1 <- exp(extreme1) if ("y" %in% log) extreme2 <- exp(extreme2) return(c(extreme1, extreme2)) } #' Plot the Empirical Attainment Function for two objectives #' #' Computes and plots the Empirical Attainment Function, either as #' attainment surfaces for certain percentiles or as points. #' #' This function can be used to plot random sets of points like those obtained #' by different runs of biobjective stochastic optimization algorithms. An EAF #' curve represents the boundary separating points that are known to be #' attainable (that is, dominated in Pareto sense) in at least a fraction #' (quantile) of the runs from those that are not. The median EAF represents #' the curve where the fraction of attainable points is 50%. In single #' objective optimization the function can be used to plot the profile of #' solution quality over time of a collection of runs of a stochastic optimizer. #' #' @param x Either a matrix of data values, or a data frame, or a list of #' data frames of exactly three columns. #' #' @keywords graphs #' @export eafplot <- function(x, ...) UseMethod("eafplot") #' @describeIn eafplot Main function #' #' @param groups This may be used to plot profiles of different algorithms on the same plot. #' #' @param subset (`integer()` | `NULL`)\cr A vector indicating which rows of the data should be used. If left to default `NULL` all data in the data frame are used. #' #' @param sets ([numeric])\cr Vector indicating which set each point belongs to. #' #' @param percentiles (`numeric()`) Vector indicating which percentile should be plot. The #' default is to plot only the median attainment curve. #' #' @param attsurfs TODO #' #' @param type (`character(1)`)\cr string giving the type of plot desired. The following values #' are possible, \samp{points} and \samp{area}. #' #' @param xlab,ylab,xlim,ylim,log,col,lty,lwd,pch,cex.pch,las Graphical #' parameters, see [plot.default()]. #' #'@param legend.pos the position of the legend, see [legend()]. A value of `"none"` hides the legend. #' #'@param legend.txt a character or expression vector to appear in the #' legend. If `NULL`, appropriate labels will be generated. #' #' @param extra.points A list of matrices or data.frames with #' two-columns. Each element of the list defines a set of points, or #' lines if one of the columns is `NA`. #' #' @param extra.pch,extra.lwd,extra.lty,extra.col Control the graphical aspect #' of the points. See [points()] and [lines()]. #' #' @param extra.legend A character vector providing labels for the #' groups of points. #' #' @template arg_maximise #' #' @param xaxis.side On which side that xaxis is drawn. Valid values are #' "below" and "above". See [axis()]. #' #' @param yaxis.side On which side that yaxis is drawn. Valid values are "left" #' and "right". See [axis()]. #' #' @param axes A logical value indicating whether both axes should be drawn #' on the plot. #' #' @param sci.notation Generate prettier labels #' #' @param ... Other graphical parameters to [plot.default()]. #' #' @return Return (invisibly) the attainment surfaces computed. #' #' @seealso [read_datasets()] [eafdiffplot()] #' #'@examples #' data(gcp2x2) #' tabucol <- subset(gcp2x2, alg != "TSinN1") #' tabucol$alg <- tabucol$alg[drop=TRUE] #' eafplot(time + best ~ run, data = tabucol, subset = tabucol$inst=="DSJC500.5") #' #' \dontrun{# These take time #' eafplot(time + best ~ run | inst, groups=alg, data=gcp2x2) #' eafplot(time + best ~ run | inst, groups=alg, data=gcp2x2, #' percentiles=c(0,50,100), cex.axis = 0.8, lty = c(2,1,2), lwd = c(2,2,2), #' col = c("black","blue","grey50")) #' #' extdata_path <- system.file(package = "eaf", "extdata") #' A1 <- read_datasets(file.path(extdata_path, "ALG_1_dat.xz")) #' A2 <- read_datasets(file.path(extdata_path, "ALG_2_dat.xz")) #' eafplot(A1, percentiles = 50, sci.notation = TRUE, cex.axis=0.6) #' # The attainment surfaces are returned invisibly. #' attsurfs <- eafplot(list(A1 = A1, A2 = A2), percentiles = 50) #' str(attsurfs) #' #' ## Save as a PDF file. #' # dev.copy2pdf(file = "eaf.pdf", onefile = TRUE, width = 5, height = 4) #' } #' #' ## Using extra.points #' \dontrun{ #' data(HybridGA) #' data(SPEA2relativeVanzyl) #' eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), #' xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400), #' extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA") #' #' data(SPEA2relativeRichmond) #' eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), #' xlab = expression(C[E]), ylab = "Total switches", #' xlim = c(90, 140), ylim = c(0, 25), #' extra.points = HybridGA$richmond, extra.lty = "dashed", #' extra.legend = "Hybrid GA") #' #' eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), #' xlab = expression(C[E]), ylab = "Total switches", #' xlim = c(90, 140), ylim = c(0, 25), type = "area", #' extra.points = HybridGA$richmond, extra.lty = "dashed", #' extra.legend = "Hybrid GA", legend.pos = "bottomright") #' #' data(SPEA2minstoptimeRichmond) #' SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60 #' eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]), #' ylab = "Minimum idle time (minutes)", maximise = c(FALSE, TRUE), #' las = 1, log = "y", main = "SPEA2 (Richmond)", #' legend.pos = "bottomright") #' } #' @export #'@md eafplot.default <- function (x, sets = NULL, groups = NULL, percentiles = c(0,50,100), attsurfs = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, log = "", type = "point", col = NULL, lty = c("dashed", "solid", "solid", "solid", "dashed"), lwd = 1.75, pch = NA, # FIXME: this allows partial matching if cex is passed, so passing cex has not effect. cex.pch = par("cex"), las = par("las"), legend.pos = "topright", legend.txt = NULL, # FIXME: Can we get rid of the extra. stuff? Replace it with calling points after eafplot.default in examples and eafplot.pl. extra.points = NULL, extra.legend = NULL, extra.pch = 4:25, extra.lwd = 0.5, extra.lty = NA, extra.col = "black", maximise = c(FALSE, FALSE), xaxis.side = "below", yaxis.side = "left", axes = TRUE, sci.notation = FALSE, ... ) { type <- match.arg (type, c("point", "area")) maximise <- as.logical(maximise) xaxis.side <- match.arg(xaxis.side, c("below", "above")) yaxis.side <- match.arg(yaxis.side, c("left", "right")) if (is.null(col)) { if (type == "point") { col <- c("black", "darkgrey", "black", "grey40", "darkgrey") } else { col <- c("grey", "black") } } if (is.null(xlab)) xlab <- if(!is.null(colnames(x)[1])) colnames(x)[1] else "objective 1" if (is.null(ylab)) ylab <- if(!is.null(colnames(x)[2])) colnames(x)[2] else "objective 2" if (!is.null (attsurfs)) { # Don't we need to apply maximise? attsurfs <- lapply(attsurfs, function(x) { as.matrix(x[, 1:2, drop=FALSE]) }) } else { # FIXME: This is a bit of wasted effort. We should decide what is more # efficient, one large matrix or separate points and sets, then be # consistent everywhere. if (!is.null(sets)) x <- cbind(x, sets) x <- check.eaf.data(x) sets <- x[, 3L] x <- as.matrix(x[,1:2, drop=FALSE]) x <- matrix.maximise(x, maximise) # Transform EAF matrix into attsurfs list. if (is.null(groups)) { attsurfs <- compute.eaf.as.list(cbind(x, sets), percentiles) } else { # FIXME: Is this equivalent to compute.eaf.as.list for each g? EAF <- eafs(x, sets, groups, percentiles) attsurfs <- list() groups <- factor(EAF$groups) for (g in levels(groups)) { tmp <- lapply(split.data.frame(EAF[groups == g,], as.factor(EAF[groups == g, 3])), function(x) { as.matrix(x[, 1:2, drop=FALSE]) }) attsurfs <- c(attsurfs, tmp) } } # FIXME: rm(EAF) to save memory ? attsurfs <- lapply(attsurfs, matrix.maximise, maximise = maximise) } # FIXME: We should take the range from the attsurfs to not make x mandatory. xlim <- get.xylim(xlim, maximise[1], data = x[,1]) ylim <- get.xylim(ylim, maximise[2], data = x[,2]) extreme <- get.extremes(xlim, ylim, maximise, log) # FIXME: Find a better way to handle different x-y scale. yscale <- 1 ## if (ymaximise) { ## #yscale <- 60 ## yreverse <- -1 ## attsurfs <- lapply (attsurfs, function (x) ## { x[,2] <- yreverse * x[,2] / yscale; x }) ## ylim <- yreverse * ylim / yscale ## extreme[2] <- yreverse * extreme[2] ## if (log == "y") extreme[2] <- 1 ## } ## lab' A numerical vector of the form 'c(x, y, len)' which modifies ## the default way that axes are annotated. The values of 'x' ## and 'y' give the (approximate) number of tickmarks on the x ## and y axes and 'len' specifies the label length. The default ## is 'c(5, 5, 7)'. Note that this only affects the way the ## parameters 'xaxp' and 'yaxp' are set when the user coordinate ## system is set up, and is not consulted when axes are drawn. ## 'len' _is unimplemented_ in R. args <- list(...) args <- args[names(args) %in% c("cex", "cex.lab", "cex.axis", "lab")] par_default <- list(cex = 1.0, cex.lab = 1.1, cex.axis = 1.0, lab = c(10,5,7)) par_default <- modifyList(par_default, args) op <- par(par_default) on.exit(par(op)) plot(xlim, ylim, type = "n", xlab = "", ylab = "", xlim = xlim, ylim = ylim, log = log, axes = FALSE, las = las, panel.first = ({ if (axes) { plot.eaf.axis(xaxis.side, xlab, las = las, sci.notation = sci.notation) plot.eaf.axis(yaxis.side, ylab, las = las, sci.notation = sci.notation, # FIXME: eafplot uses 2.2, why the difference? line = 2.75) } # FIXME: Perhaps have a function plot.eaf.lines that computes # several percentiles for a single algorithm and then calls # points() or polygon() as appropriate to add attainment # surfaces to an existing plot. This way we can factor out # the code below and use it in plot.eaf and plot.eafdiff if (type == "area") { # FIXME (Proposition): allow the user to provide the palette colors? if (length(col) == 2) { colfunc <- colorRampPalette(col) col <- colfunc(length(attsurfs)) } else if (length(col) != length(attsurfs)) { stop ("length(col) != 2, but with 'type=area', eafplot.default needs just two colors") } plot.eaf.full.area(attsurfs, extreme, maximise, col = col) } else { ## Recycle values lwd <- rep(lwd, length=length(attsurfs)) lty <- rep(lty, length=length(attsurfs)) col <- rep(col, length=length(attsurfs)) if (!is.null(pch)) pch <- rep(pch, length=length(attsurfs)) plot.eaf.full.lines(attsurfs, extreme, maximise, col = col, lty = lty, lwd = lwd, pch = pch, cex = cex.pch) } }), ...) if (!is.null (extra.points)) { if (!is.list (extra.points[[1]])) { extra.name <- deparse(substitute(extra.points)) extra.points <- list(extra.points) names(extra.points) <- extra.name } ## Recycle values extra.length <- length(extra.points) extra.lwd <- rep(extra.lwd, length=extra.length) extra.lty <- rep(extra.lty, length=extra.length) extra.col <- rep(extra.col, length=extra.length) extra.pch <- rep(extra.pch, length=extra.length) if (is.null(extra.legend)) { extra.legend <- names(extra.points) if (is.null(extra.legend)) extra.legend <- paste0("extra.points ", 1:length(extra.points)) } for (i in 1:length(extra.points)) { if (any(is.na(extra.points[[i]][,1]))) { if (is.na(extra.lty[i])) extra.lty <- "dashed" ## Extra points are given in the correct order so no reverse extra.points[[i]][,2] <- extra.points[[i]][,2] / yscale abline(h=extra.points[[i]][,2], lwd = extra.lwd[i], col = extra.col[i], lty = extra.lty[i]) extra.pch[i] <- NA } else if (any(is.na(extra.points[[i]][,2]))) { if (is.na(extra.lty[i])) extra.lty <- "dashed" abline(v=extra.points[[i]][,1], lwd = extra.lwd[i], col = extra.col[i], lty = extra.lty[i]) extra.pch[i] <- NA } else { ## Extra points are given in the correct order so no reverse extra.points[[i]][,2] <- extra.points[[i]][,2] / yscale if (!is.na(extra.pch[i])) points (extra.points[[i]], type = "p", pch = extra.pch[i], col = extra.col[i], cex = cex.pch) if (!is.na(extra.lty[i])) points (extra.points[[i]], type = "s", lty = extra.lty[i], col = extra.col[i], lwd = extra.lwd[i]) } lwd <- c(lwd, extra.lwd[i]) lty <- c(lty, extra.lty[i]) col <- c(col, extra.col[i]) pch <- c(pch, extra.pch[i]) if (is.null(extra.legend[i])) extra.legend[i] } } # Setup legend. if (is.null(legend.txt) && !is.null(percentiles)) { legend.txt <- paste0(percentiles, "%") legend.txt <- sub("^0%$", "best", legend.txt) legend.txt <- sub("^50%$", "median", legend.txt) legend.txt <- sub("^100%$", "worst", legend.txt) if (!is.null(groups)) { groups <- factor(groups) legend.txt <- as.vector(t(outer(levels(groups), legend.txt, paste))) } } legend.txt <- c(legend.txt, extra.legend) if (!is.null(legend.txt) && is.na(pmatch(legend.pos,"none"))) { if (type == "area") { legend(x = legend.pos, y = NULL, legend = legend.txt, fill = c(col, "#FFFFFF"), bg="white",bty="n", xjust=0, yjust=0, cex=0.9) } else { legend(legend.pos, legend = legend.txt, xjust=1, yjust=1, bty="n", lty = lty, lwd = lwd, pch = pch, col = col, merge=T) } } box() invisible(attsurfs) } prettySciNotation <- function(x, digits = 1L) { if (length(x) > 1L) { return(append(prettySciNotation(x[1]), prettySciNotation(x[-1]))) } if (!x) return(0) exponent <- floor(log10(x)) base <- round(x / 10^exponent, digits) as.expression(substitute(base %*% 10^exponent, list(base = base, exponent = exponent))) } axis.side <- function(side) { if (!is.character(side)) return(side) return(switch(side, below = 1, left = 2, above = 3, right = 4)) } plot.eaf.axis <- function(side, lab, las, col = 'lightgray', lty = 'dotted', lwd = par("lwd"), line = 2.1, sci.notation = FALSE) { side <- axis.side(side) ## FIXME: Do we still need lwd=0.5, lty="26" to work-around for R bug? at <- axTicks(if (side %% 2 == 0) 2 else 1) labels <- if (sci.notation) prettySciNotation(at) else formatC(at, format = "g") ## if (log == "y") { ## ## Custom log axis (like gnuplot but in R is hard) ## max.pow <- 6 ## at <- c(1, 5, 10, 50, 100, 500, 1000, 1500, 10^c(4:max.pow)) ## labels <- c(1, 5, 10, 50, 100, 500, 1000, 1500, ## parse(text = paste("10^", 4:max.pow, sep = ""))) ## #at <- c(60, 120, 180, 240, 300, 480, 600, 900, 1200, 1440) ## #labels <- formatC(at,format="g") ## ## Now do the minor ticks, at 1/10 of each power of 10 interval ## ##at.minor <- 2:9 * rep(c(10^c(1:max.pow)) / 10, each = length(2:9)) ## at.minor <- 1:10 * rep(c(10^c(1:max.pow)) / 10, each = length(1:10)) ## axis (yaxis.side, at = at.minor, tcl = -0.25, labels = FALSE, las=las) ## axis (yaxis.side, at = at.minor, labels = FALSE, tck=1, ## col='lightgray', lty='dotted', lwd=par("lwd")) ## } ## tck=1 draws the horizontal grid lines (grid() is seriously broken). axis(side, at=at, labels=FALSE, tck = 1, col='lightgray', lty = 'dotted', lwd = par("lwd")) axis(side, at=at, labels=labels, las = las) mtext(lab, side, line = line, cex = par("cex") * par("cex.axis"), las = 0) } add.extremes <- function(x, extremes, maximise) { best1 <- if (maximise[1]) max else min best2 <- if (maximise[2]) max else min return(rbind(c(best1(x[,1]), extremes[2]), x, c(extremes[1], best2(x[,2])))) } plot.eaf.full.lines <- function(attsurfs, extreme, maximise, col, lty, lwd, pch = NULL, cex = par("cex")) { ## Recycle values lwd <- rep(lwd, length = length(attsurfs)) lty <- rep(lty, length = length(attsurfs)) col <- rep(col, length = length(attsurfs)) if (!is.null(pch)) pch <- rep(pch, length = length(attsurfs)) attsurfs = lapply(attsurfs, add.extremes, extreme, maximise) for (k in seq_along(attsurfs)) { # FIXME: Is there a way to plot points and steps in one call? if (!is.null(pch)) points(attsurfs[[k]], type = "p", col = col[k], pch = pch[k], cex = cex) points(attsurfs[[k]], type = "s", col = col[k], lty = lty[k], lwd = lwd[k]) } } plot.eaf.full.area <- function(attsurfs, extreme, maximise, col) { stopifnot(length(attsurfs) == length(col)) for (i in seq_along(attsurfs)) { poli <- add.extremes(points.steps(attsurfs[[i]]), extreme, maximise) poli <- rbind(poli, extreme) polygon(poli[,1], poli[,2], border = NA, col = col[i]) } } plot.eafdiff.side <- function (eafdiff, attsurfs = list(), col, side = stop("Argument 'side' is required"), type = "point", xlim = NULL, ylim = NULL, log = "", las = par("las"), full.eaf = FALSE, title = "", maximise = c(FALSE, FALSE), xlab = "objective 1", ylab = "objective 2", sci.notation = FALSE, ...) { type <- match.arg (type, c("point", "area")) maximise <- as.logical(maximise) side <- match.arg (side, c("left", "right")) xaxis.side <- if (side == "left") "below" else "above" yaxis.side <- if (side == "left") "left" else "right" # For !full.eaf && type == "area", str(eafdiff) is a polygon: ## $ num [, 1:2] ## - attr(*, "col")= num [] # Colors are correct for !full.eaf && type == "area" if (full.eaf || type == "point") { # FIXME: This is wrong, we should color (0.0, 1] with col[1], then (1, 2] # with col[1], etc, so that we never color the value 0.0 but we always # color the maximum value color without having to force it. # Why flooring and not ceiling? If a point has value 2.05, it should # be painted with color 2 rather than 3. # +1 because col[1] is white ([0,1)). eafdiff[,3] <- floor(eafdiff[,3]) + 1 if (length(unique(eafdiff[,3])) > length(col)) { stop ("Too few colors: length(unique(eafdiff[,3])) > length(col)") } } # We do not paint with the same color as the background since this # will override the grid lines. col[col %in% c("white", "#FFFFFF")] <- "transparent" extreme <- get.extremes(xlim, ylim, maximise, log) yscale <- 1 ## FIXME log == "y" and yscaling # yscale <- 60 ## if (yscale != 1) { ## # This doesn't work with polygons. ## stopifnot (full.eaf || type == "point") ## eafdiff[,2] <- eafdiff[,2] / yscale ## attsurfs <- lapply (attsurfs, function (x) ## { x[,2] <- x[,2] / yscale; x }) ## ylim <- ylim / yscale ## if (log == "y") extreme[2] <- 1 ## } plot(xlim, ylim, type = "n", xlab = "", ylab = "", xlim = xlim, ylim = ylim, log = log, axes = FALSE, las = las, panel.first = ({ plot.eaf.axis (xaxis.side, xlab, las = las, sci.notation = sci.notation) plot.eaf.axis (yaxis.side, ylab, las = las, sci.notation = sci.notation, line = 2.2) if (nrow(eafdiff)) { if (type == "area") { if (full.eaf) { plot.eaf.full.area(split.data.frame(eafdiff[,1:2], eafdiff[,3]), extreme, maximise, col) } else { eafdiff[,1] <- rm.inf(eafdiff[,1], extreme[1]) eafdiff[,2] <- rm.inf(eafdiff[,2], extreme[2]) polycol <- attr(eafdiff, "col") #print(unique(polycol)) #print(length(col)) ## The maximum value should also be painted. # FIXME: How can this happen??? polycol[polycol > length(col)] <- length(col) ### For debugging: ## poly_id <- head(1 + cumsum(is.na(eafdiff[,1])),n=-1) ## for(i in which(polycol == 10)) { ## c_eafdiff <- eafdiff[i == poly_id, ] ## polygon(c_eafdiff[,1], c_eafdiff[,2], border = FALSE, col = col[polycol[i]]) ## } #print(eafdiff) #print(col[polycol]) # FIXME: This reduces the number of artifacts but increases the memory consumption of embedFonts(filename) until it crashes. #polygon(eafdiff[,1], eafdiff[,2], border = col[polycol], lwd=0.1, col = col[polycol]) polygon(eafdiff[,1], eafdiff[,2], border = col[polycol], col = col[polycol]) } } else { ## The maximum value should also be painted. eafdiff[eafdiff[,3] > length(col), 3] <- length(col) eafdiff <- eafdiff[order(eafdiff[,3], decreasing = FALSE), , drop=FALSE] points(eafdiff[,1], eafdiff[,2], col = col[eafdiff[,3]], type = "p", pch=20) } } }), ...) lty <- c("solid", "dashed") lwd <- c(1) if (type == "area" && full.eaf) { col <- c("black", "black", "white") } else { col <- c("black") } plot.eaf.full.lines(attsurfs, extreme, maximise, col = col, lty = lty, lwd = lwd) mtext(title, 1, line = 3.5, cex = par("cex.lab"), las = 0, font = 2) box() } #' Plot empirical attainment function differences #' #' Plot the differences between the empirical attainment functions of two #' data sets as a two-panel plot, where the left side shows the values of #' the left EAF minus the right EAF and the right side shows the #' differences in the other direction. #' #' @param data.left,data.right Data frames corresponding to the input data of #' left and right sides, respectively. Each data frame has at least three #' columns, the third one being the set of each point. See also #' [read_datasets()]. #' #' @param col A character vector of three colors for the magnitude of the #' differences of 0, 0.5, and 1. Intermediate colors are computed #' automatically given the value of `intervals`. Alternatively, a function #' such as [viridisLite::viridis()] that generates a colormap given an integer #' argument. #' #' @param intervals (`integer(1)`|`character()`) \cr The #' absolute range of the differences \eqn{[0, 1]} is partitioned into the number #' of intervals provided. If an integer is provided, then labels for each #' interval are computed automatically. If a character vector is #' provided, its length is taken as the number of intervals. #' #' @param percentiles The percentiles of the EAF of each side that will be #' plotted as attainment surfaces. `NA` does not plot any. See #' [eafplot()]. #' #' @param full.eaf Whether to plot the EAF of each side instead of the #' differences between the EAFs. #' #' @param type Whether the EAF differences are plotted as points #' (\samp{points}) or whether to color the areas that have at least a #' certain value (\samp{area}). #' #'@param legend.pos The position of the legend. See [legend()]. A value of #' `"none"` hides the legend. #' #'@param title.left,title.right Title for left and right panels, respectively. #' #' @param xlim,ylim,cex,cex.lab,cex.axis Graphical parameters, see #' [plot.default()]. #' #' @template arg_maximise #' #' @param grand.lines Whether to plot the grand-best and grand-worst #' attainment surfaces. #' #' @param sci.notation Generate prettier labels #' #' @param left.panel.last,right.panel.last An expression to be evaluated after #' plotting has taken place on each panel (left or right). This can be useful #' for adding points or text to either panel. Note that this works by lazy #' evaluation: passing this argument from other `plot` methods may well #' not work since it may be evaluated too early. #' #' @param ... Other graphical parameters are passed down to #' [plot.default()]. #' #' @details #' This function calculates the differences between the EAFs of two #' data sets, and plots on the left the differences in favour #' of the left data set, and on the right the differences in favour of #' the right data set. By default, it also plots the grand best and worst #' attainment surfaces, that is, the 0%- and 100%-attainment surfaces #' over all data. These two surfaces delimit the area where differences #' may exist. In addition, it also plots the 50%-attainment surface of #' each data set. #' #' With `type = "point"`, only the points where there is a change in #' the value of the EAF difference are plotted. This means that for areas #' where the EAF differences stays constant, the region will appear in #' white even if the value of the differences in that region is #' large. This explains "white holes" surrounded by black #' points. #' #' With `type = "area"`, the area where the EAF differences has a #' certain value is plotted. The idea for the algorithm to compute the #' areas was provided by Carlos M. Fonseca. The implementation uses R #' polygons, which some PDF viewers may have trouble rendering correctly #' (See #' \url{https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-are-there-unwanted-borders}). Plots (should) look correct when printed. #' #' Large differences that appear when using `type = "point"` may #' seem to disappear when using `type = "area"`. The explanation is #' the points size is independent of the axes range, therefore, the #' plotted points may seem to cover a much larger area than the actual #' number of points. On the other hand, the areas size is plotted with #' respect to the objective space, without any extra borders. If the #' range of an area becomes smaller than one-pixel, it won't be #' visible. As a consequence, zooming in or out certain regions of the plots #' does not change the apparent size of the points, whereas it affects #' considerably the apparent size of the areas. #' #' #' @return No return value. #' #' @seealso [read_datasets()], [eafplot()] #' #' @examples #' ## NOTE: The plots in the website look squashed because of how pkgdown #' ## generates them. They should look fine when you generate them yourself. #' extdata_dir <- system.file(package="eaf", "extdata") #' A1 <- read_datasets(file.path(extdata_dir, "ALG_1_dat.xz")) #' A2 <- read_datasets(file.path(extdata_dir, "ALG_2_dat.xz")) #' \donttest{# These take time #' eafdiffplot(A1, A2, full.eaf = TRUE) #' if (requireNamespace("viridisLite", quietly=TRUE)) { #' viridis_r <- function(n) viridisLite::viridis(n, direction=-1) #' eafdiffplot(A1, A2, type = "area", col = viridis_r) #' } else { #' eafdiffplot(A1, A2, type = "area") #' } #' A1 <- read_datasets(file.path(extdata_dir, "wrots_l100w10_dat")) #' A2 <- read_datasets(file.path(extdata_dir, "wrots_l10w100_dat")) #' eafdiffplot(A1, A2, type = "point", sci.notation = TRUE, cex.axis=0.6) #' } #' # A more complex example #' DIFF <- eafdiffplot(A1, A2, col = c("white", "blue", "red"), intervals = 5, #' type = "point", #' title.left=expression("W-RoTS," ~ lambda==100 * "," ~ omega==10), #' title.right=expression("W-RoTS," ~ lambda==10 * "," ~ omega==100), #' right.panel.last={ #' abline(a = 0, b = 1, col = "red", lty = "dashed")}) #' DIFF$right[,3] <- -DIFF$right[,3] #' #' ## Save the values to a file. #' # write.table(rbind(DIFF$left,DIFF$right), #' # file = "wrots_l100w10_dat-wrots_l10w100_dat-diff.txt", #' # quote = FALSE, row.names = FALSE, col.names = FALSE) #' #'@keywords graphs #'@export #'@md eafdiffplot <- function(data.left, data.right, col = c("#FFFFFF", "#808080","#000000"), intervals = 5, percentiles = c(50), full.eaf = FALSE, type = "area", legend.pos = if (full.eaf) "bottomleft" else "topright", title.left = deparse(substitute(data.left)), title.right = deparse(substitute(data.right)), xlim = NULL, ylim = NULL, cex = par("cex"), cex.lab = par("cex.lab"), cex.axis = par("cex.axis"), maximise = c(FALSE, FALSE), grand.lines = TRUE, sci.notation = FALSE, left.panel.last = NULL, right.panel.last = NULL, ...) { type <- match.arg (type, c("point", "area")) # FIXME: check that it is either an integer or a character vector. if (length(intervals) == 1) { intervals <- seq.intervals.labels( round(seq(0,1 , length.out = 1 + intervals), 4), digits = 1) } if (is.function(col)) { # It is a color-map, like viridis() col <- col(length(intervals)) } else { if (length(col) != 3) { stop ("'col' is either three colors (minimum, medium maximum) or a function that produces a colormap") } col <- colorRampPalette(col)(length(intervals)) } # FIXME: The lowest color must be white (it should be the background). col[1] <- "white" title.left <- title.left title.right <- title.right maximise <- as.logical(maximise) if (length(maximise) == 1) { maximise <- rep_len(maximise, 2) } else if (length(maximise) != 2) { stop("length of maximise must be either 1 or 2") } data.left <- check.eaf.data(data.left) data.left[,1:2] <- matrix.maximise(data.left[,1:2, drop=FALSE], maximise) data.right <- check.eaf.data(data.right) data.right[,1:2] <- matrix.maximise(data.right[,1:2, drop=FALSE], maximise) attsurfs.left <- attsurfs.right <- list() if (!any(is.na(percentiles))) { attsurfs.left <- compute.eaf.as.list (data.left, percentiles) attsurfs.left <- lapply(attsurfs.left, matrix.maximise, maximise = maximise) attsurfs.right <- compute.eaf.as.list (data.right, percentiles) attsurfs.right <- lapply(attsurfs.right, matrix.maximise, maximise = maximise) } # FIXME: We do not need this for the full EAF. # Merge the data data.combined <- rbind_datasets(data.left, data.right) def.par <- par(no.readonly = TRUE) # save default, for resetting... on.exit(par(def.par)) if (full.eaf) { if (type == "area") { lower.boundaries <- 0:(length(intervals)-1) * 100 / length(intervals) diff_left <- compute.eaf (data.left, percentiles = lower.boundaries) diff_right <- compute.eaf (data.right, percentiles = lower.boundaries) } else if (type == "point") { diff_left <- compute.eaf (data.left) diff_right <- compute.eaf (data.right) # Since plot.eafdiff.side uses floor to calculate the color, and # we want color[100] == color[99]. diff_left[diff_left[,3] == 100, 3] <- 99 diff_right[diff_right[,3] == 100, 3] <- 99 } # Convert percentile into color index diff_left[,3] <- diff_left[,3] * length(intervals) / 100 diff_right[,3] <- diff_right[,3] * length(intervals) / 100 #remove(data.left,data.right,data.combined) # Free memory? } else { if (type == "area") { DIFF <- compute.eafdiff.polygon (data.combined, intervals = length(intervals)) } else if (type == "point") { #remove(data.left,data.right) # Free memory? DIFF <- compute.eafdiff (data.combined, intervals = length(intervals)) #remove(data.combined) # Free memory? } diff_left <- DIFF$left diff_right <- DIFF$right } # FIXME: This can be avoided and just taken from the full EAF. grand.attsurf <- compute.eaf.as.list (data.combined, c(0, 100)) grand.best <- grand.attsurf[["0"]] grand.worst <- grand.attsurf[["100"]] xlim <- get.xylim(xlim, maximise[1], data = c(grand.best[,1], grand.worst[,1], range.finite(diff_left[,1]), range.finite(diff_right[,1]))) ylim <- get.xylim(ylim, maximise[2], data = c(grand.best[,2], grand.worst[,2], range.finite(diff_left[,2]), range.finite(diff_right[,2]))) grand.best <- matrix.maximise(grand.best, maximise) grand.worst <- matrix.maximise(grand.worst, maximise) diff_left[,1:2] <- matrix.maximise(diff_left[,1:2, drop=FALSE], maximise) diff_right[,1:2] <- matrix.maximise(diff_right[,1:2, drop=FALSE], maximise) # FIXME: This does not generate empty space between the two plots, but the # plots are not squared. layout(matrix(1:2, ncol=2, byrow=TRUE), respect=TRUE) bottommar <- 5 topmar <- 4 leftmar <- 4 rightmar <- 4 # FIXME: This generates empty spaces between the two plots. How to ensure # that the side-by-side plots are kept together? ## layout(matrix(1:2, ncol = 2)) ## par (pty = 's') # Force it to be square ## bottommar <- 5 ## topmar <- 4 ## leftmar <- 4 ## rightmar <- 4 # cex.axis is multiplied by cex, but cex.lab is not. par(cex = cex, cex.lab = cex.lab, cex.axis = cex.axis , mar = c(bottommar, leftmar, topmar, 0) , lab = c(10,5,7) , las = 0 ) if (grand.lines) { attsurfs <- c(list(grand.best), attsurfs.left, list(grand.worst)) } else { attsurfs <- attsurfs.left } plot.eafdiff.side (diff_left, attsurfs = attsurfs, col = col, type = type, full.eaf = full.eaf, title = title.left, xlim = xlim, ylim = ylim, side = "left", maximise = maximise, sci.notation = sci.notation, ...) if (is.na(pmatch(legend.pos,"none"))){ #nchar(legend.pos) > 0 && !(legend.pos %in% c("no", "none"))) { legend(x = legend.pos, y = NULL, rev(intervals), rev(col), bg = "white", bty = "n", xjust=0, yjust=0, cex=0.85) } left.panel.last par(mar = c(bottommar, 0, topmar, rightmar)) if (grand.lines) { attsurfs <- c(list(grand.best), attsurfs.right, list(grand.worst)) } else { attsurfs <- attsurfs.right } plot.eafdiff.side (diff_right, attsurfs = attsurfs, col = col, type = type, full.eaf = full.eaf, title = title.right, xlim = xlim, ylim = ylim, side = "right", maximise = maximise, sci.notation = sci.notation, ...) right.panel.last invisible(list(left=diff_left, right=diff_right)) } # Create labels: # eaf:::seq.intervals.labels(seq(0,1, length.out=5), digits = 1) # "[0.0, 0.2)" "[0.2, 0.4)" "[0.4, 0.6)" "[0.6, 0.8)" "[0.8, 1.0]" # FIXME: Add examples and tests seq.intervals.labels <- function(s, first.open = FALSE, last.open = FALSE, digits = NULL) { # FIXME: This should use: # levels(cut(0, s, dig.lab=digits, include.lowest=TRUE, right=FALSE)) s <- formatC(s, digits = digits, format = if (is.null(digits)) "g" else "f") if (length(s) < 2) stop ("sequence must have at least 2 values") intervals <- paste0("[", s[-length(s)], ", ", s[-1], ")") if (first.open) substr(intervals[1], 0, 1) <- "(" if (!last.open) { len <- nchar(intervals[length(intervals)]) substr(intervals[length(intervals)], len, len+1) <- "]" } return(intervals) } #' @describeIn eafplot Formula interface #' #'@param formula A formula of the type: \code{time + cost ~ run | instance} #' will draw \code{time} on the x-axis and \code{cost} on the y-axis. If \code{instance} is #' present the plot is conditional to the instances. #' #'@param data Dataframe containing the fields mentioned in the formula and in groups. #'@export eafplot.formula <- function(formula, data, groups = NULL, subset = NULL, ...) { ## formula of type time+cost~run|inst, groups=alg if (missing(formula)) stop("formula missing") if ((length(formula) != 3L) || (length(formula[[2L]]) != 3L)) stop("incorrect specification for 'formula'") mf <- modeltools::ModelEnvFormula(formula = formula, data = data, subset = subset, designMatrix = FALSE, responseMatrix = FALSE, ...) ### extract data from the ModelEnv object points <- mf@get("response") sets <- mf@get("input") cond <- NULL if (length(mf@formula) == 3L) cond <- as.list(mf@get("blocks")) groups <- eval(substitute(groups), data, environment(formula)) if (!is.null(groups) && !is.factor(groups)) stop("groups must be a factor") if (length(cond) == 0) { strip <- FALSE cond <- list(gl(1, length(points))) } condlevels <- lapply(cond, levels) cond.max.level <- unlist(lapply(cond, nlevels)) npackets <- prod(cond.max.level) panel.args <- vector(mode = "list", length = npackets) packet.sizes <- numeric(npackets) if (npackets > 1) { dim(packet.sizes) <- sapply(condlevels, length) dimnames(packet.sizes) <- lapply(condlevels, as.character) } cond.current.level <- rep(1, length(cond)) for (packet.number in seq_len(npackets)) { id <- .compute.packet(cond, cond.current.level) packet.sizes[packet.number] <- sum(id) panel.args[[packet.number]] <- list(points = as.matrix(points[id,]), sets = as.numeric(sets[id,]), groups=groups[id]) ## MARCO: I do not think we need to care about subscripts... or do we? #if (subscripts) # panel.args[[packet.number]]$subscripts <- # subscr[id] cond.current.level <- .cupdate(cond.current.level, cond.max.level) } # save default, for resetting... ## FIXME: I don't think this is doing the right thing. op <- par(mfrow = .check.layout(NULL,cond.max.level)[2:3], mar = c(4,4,1,1)+0.1) on.exit(par(op)) for (i in seq_len(length(panel.args))) { eafplot.default(panel.args[[i]]$points, panel.args[[i]]$sets, panel.args[[i]]$groups, ...) } invisible() } #' Convert a list of attainment surfaces to a data.frame #' #' Convert a list of attainment surfaces to a single data.frame. #' #' @param x (`list()`) List of data.frames or matrices. The names of the list #' give the percentiles of the attainment surfaces. This is the format #' returned by [eafplot()] (and the internal function `compute.eaf.as.list`). #' #' @return A data.frame with as many columns as objectives and an additional column `percentiles`. #' #' @examples #' #' data(SPEA2relativeRichmond) #' attsurfs <- eafplot (SPEA2relativeRichmond, percentiles = c(0,50,100), #' xlab = expression(C[E]), ylab = "Total switches", #' lty=0, pch=21, xlim = c(90, 140), ylim = c(0, 25)) #' attsurfs <- attsurf2df(attsurfs) #' text(attsurfs[,1:2], labels = attsurfs[,3], adj = c(1.5,1.5)) #' #' @md #' @export attsurf2df <- function(x) { if (!is.list(x) || is.data.frame(x)) stop("'x' must be a list of data.frames or matrices") percentiles <- as.numeric(names(x)) percentiles <- rep.int(percentiles, sapply(x, nrow)) x <- do.call("rbind", x) # Remove duplicated points (keep only the higher values) uniq <- !duplicated(x, fromLast = TRUE) x <- cbind(x[uniq, , drop = FALSE], percentiles = percentiles[uniq]) return(x) } #' @describeIn eafplot List interface for lists of data.frames or matrices #' #'@export eafplot.list <- function(x, ...) { if (!is.list(x)) stop("'x' must be a list of data.frames or matrices with exactly three columns") groups <- if (!is.null(names(x))) names(x) else 1:length(x) check.elem <- function(elem) { elem <- check.eaf.data(elem) if (ncol(elem) != 3L) stop("Each element of the list have exactly three columns. If you have grouping and conditioning variables, please consider using this format: 'eafplot(formula, data, ...)'") return(elem) } x <- lapply(x, check.elem) groups <- rep(groups, sapply(x, nrow)) x <- do.call(rbind, x) eafplot(as.matrix(x[,c(1L,2L)]), sets = as.numeric(as.factor(x[, 3L])), groups = groups, ...) } ### Local Variables: ### ess-indent-level: 2 ### ess-continued-statement-offset: 2 ### ess-brace-offset: 0 ### ess-expression-offset: 4 ### ess-else-offset: 0 ### ess-brace-imaginary-offset: 0 ### ess-continued-brace-offset: 0 ### ess-arg-function-offset: 2 ### ess-close-brace-offset: 0 ### indent-tabs-mode: nil ### ess-fancy-comments: nil ### End: eaf/R/zzz.R0000644000175000017500000000016413645042056012326 0ustar nileshnilesh.onLoad <- function(lib, pkg){ Rdpack::Rdpack_bibstyles(package = pkg, authors = "LongNames") invisible(NULL) } eaf/R/interactive.R0000644000175000017500000001542013714022400013773 0ustar nileshnilesh#' Interactively choose according to empirical attainment function differences #' #' The function `choose_eafdiffplot()` creates the same plot as `eafdiffplot()` #' but waits for the user to click in one of the sides. Then it returns the #' rectangles the give the differences in favour of the chosen side. These #' rectangles may be used for interactive decision-making as shown in #' \citet{DiaLop2020ejor}. The function `choose_eafdiff()` may be used in a #' non-interactive context. #' #' @param data.left,data.right Data frames corresponding to the input data of #' left and right sides, respectively. Each data frame has at least three #' columns, the third one being the set of each point. See also #' [read_datasets()]. #' #' @param intervals (`integer(1)`|`character()`) \cr The absolute range of the #' differences \eqn{[0, 1]} is partitioned into the number of intervals #' provided. If an integer is provided, then labels for each interval are #' computed automatically. If a character vector is provided, its length is #' taken as the number of intervals. #' #' @template arg_maximise #' #' @param title.left,title.right Title for left and right panels, respectively. #' #' @param ... Other graphical parameters are passed down to #' [eafdiffplot()]. #' #' #' @return `matrix` where the first 4 columns give the coordinates of two #' corners of each rectangle and the last column. In both cases, the last #' column gives the positive differences in favor of the chosen side. #' #' @seealso [read_datasets()], [eafdiffplot()], [whv_rect()] #' #' @examples #' #' \donttest{ #' extdata_dir <- system.file(package="eaf", "extdata") #' A1 <- read_datasets(file.path(extdata_dir, "wrots_l100w10_dat")) #' A2 <- read_datasets(file.path(extdata_dir, "wrots_l10w100_dat")) #' if (interactive()) { #' rectangles <- choose_eafdiffplot(A1, A2, intervals = 5) #' } else { # Choose A1 #' rectangles <- eafdiff(A1, A2, intervals = 5, rectangles = TRUE) #' rectangles <- choose_eafdiff(rectangles, left = TRUE) #' } #' reference <- c(max(A1[, 1], A2[, 1]), max(A1[, 2], A2[, 2])) #' x <- split.data.frame(A1[,1:2], A1[,3]) #' hv_A1 <- sapply(split.data.frame(A1[, 1:2], A1[, 3]), #' hypervolume, reference=reference) #' hv_A2 <- sapply(split.data.frame(A2[, 1:2], A2[, 3]), #' hypervolume, reference=reference) #' boxplot(list(A1=hv_A1, A2=hv_A2), main = "Hypervolume") #' #' whv_A1 <- sapply(split.data.frame(A1[, 1:2], A1[, 3]), #' whv_rect, rectangles=rectangles, reference=reference) #' whv_A2 <- sapply(split.data.frame(A2[, 1:2], A2[, 3]), #' whv_rect, rectangles=rectangles, reference=reference) #' boxplot(list(A1=whv_A1, A2=whv_A2), main = "Weighted hypervolume") #' } #'@keywords graphs #' #'@references #' \insertAllCited{} #' @export #'@md choose_eafdiffplot <- function(data.left, data.right, intervals = 5, maximise = c(FALSE, FALSE), title.left = deparse(substitute(data.left)), title.right = deparse(substitute(data.right)), ...) { op <- options(locatorBell = FALSE) on.exit(options(op)) eafdiffplot(data.left, data.right, title.left= title.left, title.right = title.right, intervals = intervals, maximise = maximise, ...) # FIXME: Avoid calculating eafdiff twice. DIFF <- eafdiff(data.left, data.right, intervals = intervals, maximise = maximise, rectangles = TRUE) coord <- grid::grid.locator("npc") if (coord$x[[1]] < 0.5) { cat("LEFT!\n") return (choose_eafdiff(DIFF, left=TRUE)) } else { cat("RIGHT!\n") return (choose_eafdiff(DIFF, left=FALSE)) } } #' Identify largest EAF differences #' #' Given a list of datasets, return the indexes of the pair with the largest #' EAF differences according to the method proposed by \citet{DiaLop2020ejor}. #' #' #' @param data (`list(1)`) A list of matrices with at least 3 columns #' #' @template arg_maximise #' #' @param intervals (`integer(1)`) \cr The absolute range of the differences #' \eqn{[0, 1]} is partitioned into the number of intervals provided. #' #' @template arg_refpoint #' #' @template arg_ideal #' #' @return (`list()`) A list with two components `best_pair` and `best_value`. #' #'@examples #' # FIXME: This example is too large, we need a smaller one. #' files <- c("wrots_l100w10_dat","wrots_l10w100_dat") #' data <- lapply(files, function(x) #' read_datasets(file.path(system.file(package="eaf"), #' "extdata", x))) #' nadir <- apply(do.call(rbind, data)[,1:2], 2, max) #' x <- largest_eafdiff(data, reference = nadir) #' str(x) #' #'@references #' \insertAllCited{} #' #'@export #'@md largest_eafdiff <- function(data, maximise = FALSE, intervals = 5, reference, ideal = NULL) { nobjs <- 2 maximise <- as.logical(rep_len(maximise, nobjs)) if (nobjs != 2) { stop("sorry: only 2 objectives supported") } n <- length(data) stopifnot(n > 1) best_pair <- NULL best_value <- 0 if (is.null(ideal)) { # or do.call(rbind,), but that consumes lots of memory minmax <- apply(sapply(data, function(x) apply(x[,1:2], 2, range)), 2, range) lower <- minmax[1,] upper <- minmax[2,] ideal <- ifelse(maximise, upper, lower) } # Convert to a 1-row matrix if (is.null(dim(ideal))) dim(ideal) <- c(1,nobjs) for (a in 1:(n-1)) { for (b in (a+1):n) { DIFF <- eafdiff(data[[a]], data[[b]], intervals = intervals, maximise = maximise, rectangles = TRUE) # Set color to 1 a_rectangles <- DIFF[ DIFF[, 5] >= 1L, , drop = FALSE] a_rectangles[, ncol(a_rectangles)] <- 1 a_value <- whv_rect(ideal, a_rectangles, reference, maximise) b_rectangles <- DIFF[ DIFF[, 5] <= -1L, , drop = FALSE] b_rectangles[, ncol(b_rectangles)] <- 1 b_value <- whv_rect(ideal, b_rectangles, reference, maximise) value <- min(a_value, b_value) if (value > best_value) { best_value <- value best_pair <- c(a, b) } } } return(list(pair=best_pair, value = best_value)) } #' @param x (`matrix()`) Matrix of rectangles representing EAF differences #' (returned by [eafdiff()] with `rectangles=TRUE`). #' #' @param left (`logical(1)`) With `left=TRUE` return the rectangles with #' positive differences, otherwise return those with negative differences but #' differences are converted to positive. #' #' @rdname choose_eafdiffplot #'@export #'@md choose_eafdiff <- function(x, left = stop("'left' must be either TRUE or FALSE")) { if (left) return (x[ x[, ncol(x)] > 0L, , drop = FALSE]) x <- x[ x[, ncol(x)] < 0L, , drop = FALSE] # We always return positive colors. x[, ncol(x)] <- abs(x[, ncol(x)]) return(x) } eaf/R/igd.R0000644000175000017500000001662614011174156012241 0ustar nileshnilesh#' Inverted Generational Distance (IGD and IGD+) and Averaged Hausdorff Distance #' #' Functions to compute the inverted generational distance (IGD and IGD+) and #' the averaged Hausdorff distance between nondominated sets of points. #' #' @rdname igd #' @export #' @template arg_data #' #' @template arg_refset #' #' @template arg_maximise #' #' @return (`numeric(1)`) A single numerical value. #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @details #' #' The generational distance (GD) of a set \eqn{A} is defined as the distance #' between each point \eqn{a \in A} and the closest point \eqn{r} in a #' reference set \eqn{R}, averaged over the size of \eqn{A}. Formally, #' #' \deqn{GD_p(A,R) = \left(\frac{1}{|A|}\sum_{a\in A}\min_{r\in R} d(a,r)^p\right)^{\frac{1}{p}} }{GD(A,R) = (1/|A|) * ( sum_{a in A} min_{r in R} d(a,r)^p )^(1/p)} #' where the distance in our implementation is the Euclidean distance: #' \deqn{d(a,r) = \sqrt{\sum_{k=1}^M (a_k - r_k)^2} }{d(a,r) = sqrt( sum_{k=1}^M (a_k - r_k)^2)} #' #' The inverted generational distance (IGD) is calculated as \eqn{IGD_p(A,R) = GD_p(R,A)}. #' #' The modified inverted generational distanced (IGD+) was proposed by #' \citet{IshMasTanNoj2015igd} to ensure that IGD+ is weakly Pareto compliant, #' similarly to [epsilon_additive()] or [epsilon_mult()]. It modifies the #' distance measure as: #' #' \deqn{d^+(r,a) = \sqrt{\sum_{k=1}^M (\max\{r_k - a_k, 0\})^2}}{d^+(r,a) = sqrt(sum_{k=1}^M (max {r_k - a_k, 0 })^2)} #' #' The average Hausdorff distance (\eqn{\Delta_p}) was proposed by #' \citet{SchEsqLarCoe2012tec} and it is calculated as: #' #' \deqn{\Delta_p(A,R) = \max\{ IGD_p(A,R), IGD_p(R,A) \}} #' #' IGDX \citep{ZhoZhaJin2009igdx} is the application of IGD to decision vectors #' instead of objective vectors to measure closeness and diversity in decision #' space. One can use the functions `igd()` or `igd_plus()` (recommended) #' directly, just passing the decision vectors as `data`. #' #' #' There are different formulations of the GD and IGD metrics in the literature #' that differ on the value of \eqn{p}, on the distance metric used and on #' whether the term \eqn{|A|^{-1}} is inside (as above) or outside the exponent #' \eqn{1/p}. GD was first proposed by \citet{VelLam1998gp} with \eqn{p=2} and #' the term \eqn{|A|^{-1}} outside the exponent. IGD seems to have been #' mentioned first by \citet{CoeSie2004igd}, however, some people also used the #' name D-metric for the same concept with \eqn{p=1} and later papers have #' often used IGD/GD with \eqn{p=1}. \citet{SchEsqLarCoe2012tec} proposed to #' place the term \eqn{|A|^{-1}} inside the exponent, as in the formulation #' shown above. This has a significant effect for GD and less so for IGD given #' a constant reference set. IGD+ also follows this formulation. We refer to #' \citet{IshMasTanNoj2015igd} and \citet{BezLopStu2017emo} for a more detailed #' historical perspective and a comparison of the various variants. #' #' Following \citet{IshMasTanNoj2015igd}, we always use \eqn{p=1} in our #' implementation of IGD and IGD+ because (1) it is the setting most used in #' recent works; (2) it makes irrelevant whether the term \eqn{|A|^{-1}} is #' inside or outside the exponent \eqn{1/p}; and (3) the meaning of IGD becomes #' the average Euclidean distance from each reference point to its nearest #' objective vector). It is also slightly faster to compute. #' #' GD should never be used directly to compare the quality of approximations to #' a Pareto front, as it often contradicts Pareto optimality. We #' recommend IGD+ instead of IGD, since the latter contradicts Pareto #' optimality in some cases (see examples below), but we implement IGD here #' because it is still popular due to historical reasons. We are not aware of #' any proof of whether \eqn{\Delta_p(A,R)} contradicts or not Pareto #' optimality, thus it must be used with care. #' #' @references #' #' \insertAllCited{} #' #' @examples #' # Example 4 from Ishibuchi et al. (2015) #' ref <- matrix(c(10,0,6,1,2,2,1,6,0,10), ncol=2, byrow=TRUE) #' A <- matrix(c(4,2,3,3,2,4), ncol=2, byrow=TRUE) #' B <- matrix(c(8,2,4,4,2,8), ncol=2, byrow=TRUE) #' plot(ref, xlab=expression(f[1]), ylab=expression(f[2]), #' panel.first=grid(nx=NULL), pch=23, bg="gray", cex=1.5) #' points(A, pch=1, cex=1.5) #' points(B, pch=19, cex=1.5) #' legend("topright", legend=c("Reference", "A", "B"), pch=c(23,1,19), #' pt.bg="gray", bg="white", bty = "n", pt.cex=1.5, cex=1.2) #' cat("A is better than B in terms of Pareto optimality,\n however, IGD(A)=", #' igd(A, ref), "> IGD(B)=", igd(B, ref), #' ", which contradicts it.\nBy contrast, IGD+(A)=", #' igd_plus(A, ref), "< IGD+(B)=", igd_plus(B, ref), ", which is correct.\n") #' #' # A less trivial example. #' extdata_path <- system.file(package="eaf","extdata") #' path.A1 <- file.path(extdata_path, "ALG_1_dat.xz") #' path.A2 <- file.path(extdata_path, "ALG_2_dat.xz") #' A1 <- read_datasets(path.A1)[,1:2] #' A2 <- read_datasets(path.A2)[,1:2] #' ref <- filter_dominated(rbind(A1, A2)) #' igd(A1, ref) #' igd(A2, ref) #' #' @aliases IGDX #' @md igd <- function(data, reference, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) { stop("reference cannot be NULL") } reference <- check_dataset(reference) if (ncol(reference) != nobjs) stop("data and reference must have the same number of columns") reference_size <- nrow(reference) maximise <- as.logical(rep_len(maximise, nobjs)) return(.Call(igd_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(t(reference)), as.integer(reference_size), maximise)) } #' @rdname igd #' @export #' @examples #' # IGD+ (Pareto compliant) #' igd_plus(A1, ref) #' igd_plus(A2, ref) #' igd_plus <- function(data, reference, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) { stop("reference cannot be NULL") } reference <- check_dataset(reference) if (ncol(reference) != nobjs) stop("data and reference must have the same number of columns") reference_size <- nrow(reference) maximise <- as.logical(rep_len(maximise, nobjs)) return(.Call(igd_plus_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(t(reference)), as.integer(reference_size), maximise)) } #' @rdname igd #' @param p (`integer(1)`) Hausdorff distance parameter (default: `1L`). #' @export #' @examples #' # Average Haussdorff distance #' avg_hausdorff_dist(A1, ref) #' avg_hausdorff_dist(A2, ref) #' @md avg_hausdorff_dist <- function(data, reference, maximise = FALSE, p = 1L) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) { stop("reference cannot be NULL") } reference <- check_dataset(reference) if (ncol(reference) != nobjs) stop("data and reference must have the same number of columns") reference_size <- nrow(reference) maximise <- as.logical(rep_len(maximise, nobjs)) return(.Call(avg_hausdorff_dist_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(t(reference)), as.integer(reference_size), maximise, as.integer(p))) } eaf/R/eaf-package.R0000644000175000017500000002110714160032547013612 0ustar nileshnilesh#' Computation and visualization of the empirical attainment function (EAF) for #' the analysis of random sets in multi-criterion optimization. #' #' The empirical attainment function (EAF) describes the probabilistic #' distribution of the outcomes obtained by a stochastic algorithm in the #' objective space. This package implements plots of summary #' attainment surfaces and differences between the first-order #' EAFs. These plots may be used for exploring the performance of #' stochastic local search algorithms for biobjective optimization #' problems and help in identifying certain algorithmic behaviors in a #' graphical way. #' #' @section Functions: #' #'\tabular{rl}{ #'[eafdiffplot()] \tab Empirical attainment function differences\cr #'[eafplot()] \tab Plot the Empirical Attainment Function for two objectives\cr #'[read_datasets()] \tab Read several data.frame sets #'} #' #' @section Data: #' #'\describe{ #'\item{[`gcp2x2`]}{ Metaheuristics for solving the Graph Vertex Coloring Problem} #'\item{[`HybridGA`]}{ Results of Hybrid GA on vanzyl and Richmond #'water networks} #'\item{[`SPEA2minstoptimeRichmond`]}{ Results of SPEA2 when minimising electrical cost and maximising the #'minimum idle time of pumps on Richmond water network} #'} #' #' Extras are available at `system.file(package="eaf")`: #' #'\tabular{rl}{ #' `extdata` \tab External data sets (see [`read_datasets`]) \cr #' `scripts/eaf` \tab EAF command-line program \cr #' `scripts/eafplot`\tab Perl script to generate plots of attainment surfaces\cr #' `scripts/eafdiff`\tab Perl script to generate plots of EAF differences #'} #' #' @import graphics grDevices stats #' @importFrom Rdpack reprompt #' @importFrom utils modifyList write.table tail #' #' @useDynLib eaf, .registration = TRUE #' #' @aliases eaf #' #' @author #' Maintainer: Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' \email{manuel.lopez-ibanez@manchester.ac.uk} #' #' Contributors: Carlos Fonseca, Luis Paquete, Thomas \enc{Stützle}{Stuetzle}, #' Manuel \enc{López-Ibáñez}{Lopez-Ibanez}, Marco Chiarandini and #' \enc{Mickaël}{Mickael} Binois. #' #' @references #' #' \insertRef{Grunert01}{eaf} #' #' \insertRef{GruFon2009:emaa}{eaf} #' #' \insertRef{LopPaqStu09emaa}{eaf} #' #'@keywords package graphs #'@concept multivariate #'@concept optimize #'@concept time-quality algorithm profile #'@concept empirical attainment function #' #'@examples #' data(gcp2x2) #' tabucol<-subset(gcp2x2, alg!="TSinN1") #' tabucol$alg<-tabucol$alg[drop=TRUE] #' eafplot(time+best~run,data=tabucol,subset=tabucol$inst=="DSJC500.5") #' #' eafplot(time+best~run|inst,groups=alg,data=gcp2x2) #' eafplot(time+best~run|inst,groups=alg,data=gcp2x2, #' percentiles = c(0,50,100), cex = 1.4, lty = c(2,1,2),lwd = c(2,2,2), #' col = c("black","blue","grey50")) #' #' extdata_path <- system.file(package="eaf","extdata") #' A1 <- read_datasets(file.path(extdata_path, "wrots_l100w10_dat")) #' A2 <- read_datasets(file.path(extdata_path, "wrots_l10w100_dat")) #' eafplot(A1, percentiles=c(50)) #' eafplot(list(A1=A1, A2=A2), percentiles=c(50)) #' eafdiffplot(A1, A2) #' ## Save to a PDF file #' # dev.copy2pdf(file="eaf.pdf", onefile=TRUE, width=5, height=4) #'@md "_PACKAGE" #> [1] "_PACKAGE" #' Results of Hybrid GA on vanzyl and Richmond water networks #' #' The data has the only goal of providing an example of use of eafplot. #' #'@format #' A list with two data frames, each of them with three columns, as #' produced by [read_datasets()]. #' \describe{ #' \item{`$vanzyl`}{data frame of results on vanzyl network} #' \item{`$richmond`}{data frame of results on Richmond #' network. The second column is filled with `NA`} #' } #' #'@source \insertRef{LopezIbanezPhD}{eaf}. #' #' @examples #'data(HybridGA) #'print(HybridGA$vanzyl) #'print(HybridGA$richmond) #'@md "HybridGA" #'Results of SPEA2 when minimising electrical cost and maximising the #'minimum idle time of pumps on Richmond water network. #' #'The data has the only goal of providing an example of use of eafplot. #' #'@format #' A data frame as produced by [read_datasets()]. The second #' column measures time in seconds and corresponds to a maximisation problem. #' #' @source \insertRef{LopezIbanezPhD}{eaf} #' #'@examples #' data(HybridGA) #' data(SPEA2minstoptimeRichmond) #' SPEA2minstoptimeRichmond[,2] <- SPEA2minstoptimeRichmond[,2] / 60 #' eafplot (SPEA2minstoptimeRichmond, xlab = expression(C[E]), #' ylab = "Minimum idle time (minutes)", maximise = c(FALSE, TRUE), #' las = 1, log = "y", legend.pos = "bottomright") #'@md "SPEA2minstoptimeRichmond" #' Results of SPEA2 with relative time-controlled triggers on Richmond water #' network. #' #' The data has the only goal of providing an example of use of eafplot. #' #'@format #' A data frame as produced by [read_datasets()]. #' #' @source \insertRef{LopezIbanezPhD}{eaf} #' #'@examples #'data(HybridGA) #'data(SPEA2relativeRichmond) #'eafplot (SPEA2relativeRichmond, percentiles = c(25, 50, 75), #' xlab = expression(C[E]), ylab = "Total switches", #' xlim = c(90, 140), ylim = c(0, 25), #' extra.points = HybridGA$richmond, extra.lty = "dashed", #' extra.legend = "Hybrid GA") #'@md "SPEA2relativeRichmond" #'Results of SPEA2 with relative time-controlled triggers on Vanzyl's #'water network. #' #'The data has the only goal of providing an example of use of eafplot. #' #'@format #' A data frame as produced by [read_datasets()]. #' #'@source \insertRef{LopezIbanezPhD}{eaf} #' #'@examples #'data(HybridGA) #'data(SPEA2relativeVanzyl) #'eafplot(SPEA2relativeVanzyl, percentiles = c(25, 50, 75), #' xlab = expression(C[E]), ylab = "Total switches", xlim = c(320, 400), #' extra.points = HybridGA$vanzyl, extra.legend = "Hybrid GA") #'@md "SPEA2relativeVanzyl" #' Metaheuristics for solving the Graph Vertex Coloring Problem #' #' Two metaheuristic algorithms, TabuCol (Hertz et al., 1987) and #' simulated annealing \citep{JohAraMcGSch1991}, to find a good #' approximation of the chromatic number of two random graphs. The data #' here has the only goal of providing an example of use of eafplot for #' comparing algorithm performance with respect to both time and quality #' when modelled as two objectives in trade off. #' #' @format #' A data frame with 3133 observations on the following 6 variables. #' \describe{ #' \item{`alg`}{a factor with levels `SAKempeFI` and `TSinN1`} #' \item{`inst`}{a factor with levels `DSJC500.5` and #' `DSJC500.9`. Instances are taken from the DIMACS repository.} #' \item{`run`}{a numeric vector indicating the run to #' which the observation belong. } #' \item{`best`}{a numeric vector indicating the best solution in #' number of colors found in the corresponding run up to that time.} #' \item{`time`}{a numeric vector indicating the time since the #' beginning of the run for each observation. A rescaling is applied.} #' \item{`titer`}{a numeric vector indicating iteration number #' corresponding to the observations.} #' } #' #'@details #' Each algorithm was run 10 times per graph registering the time and #' iteration number at which a new best solution was found. A time limit #' corresponding to 500*10^5 total iterations of TabuCol was imposed. The #' time was then normalized on a scale from 0 to 1 to make it instance #' independent. #' #'@source \insertRef{ChiarandiniPhD}{eaf} (page 138) #' #'@references #' A. Hertz and D. de Werra. Using Tabu Search Techniques for Graph #' Coloring. Computing, 1987, 39(4), 345-351. #' #' \insertAllCited{} #' #'@examples #' data(gcp2x2) #'@md "gcp2x2" #' Conditional Pareto fronts obtained from Gaussian processes simulations. #' #' The data has the only goal of providing an example of use of [vorobT()] and #' [vorobDev()]. It has been obtained by fitting two Gaussian processes on 20 #' observations of a bi-objective problem, before generating conditional #' simulation of both GPs at different locations and extracting non-dominated #' values of coupled simulations. #' #' @format #' A data frame with 2967 observations on the following 3 variables. #' \describe{ #' \item{`f1`}{first objective values.} #' \item{`f2`}{second objective values.} #' \item{`set`}{indices of corresponding conditional Pareto fronts.} #' } #' #'@source #' #' \insertRef{BinGinRou2015gaupar}{eaf} #' #'@examples #' data(CPFs) #' #' res <- vorobT(CPFs, reference = c(2, 200)) #' eafplot(CPFs[,1:2], sets = CPFs[,3], percentiles = c(0, 20, 40, 60, 80, 100), #' col = gray(seq(0.8, 0.1, length.out = 6)^2), type = "area", #' legend.pos = "bottomleft", extra.points = res$VE, extra.col = "cyan") #'@md "CPFs" eaf/R/epsilon.R0000644000175000017500000001100114033605644013132 0ustar nileshnilesh#' Epsilon metric #' #' Computes the epsilon metric, either additive or multiplicative. #' #' @template arg_data #' #' @template arg_refset #' #' @template arg_maximise #' #' @return A single numerical value. #' #' @name epsilon #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @details #' #' The epsilon metric of a set \eqn{A} with respect to a reference set \eqn{R} #' is defined as #' #' \deqn{epsilon(A,R) = \max_{r \in R} \min_{a \in A} \max_{1 \leq i \leq n} epsilon(a_i, r_i)} #' #' where \eqn{a} and \eqn{b} are objective vectors and, in the case of #' minimization of objective \eqn{i}, \eqn{epsilon(a_i,b_i)} is computed as #' \eqn{a_i/b_i} for the multiplicative variant (respectively, \eqn{a_i - b_i} #' for the additive variant), whereas in the case of maximization of objective #' \eqn{i}, \eqn{epsilon(a_i,b_i) = b_i/a_i} for the multiplicative variant #' (respectively, \eqn{b_i - a_i} for the additive variant). This allows #' computing a single value for problems where some objectives are to be #' maximized while others are to be minimized. Moreover, a lower value #' corresponds to a better approximation set, independently of the type of #' problem (minimization, maximization or mixed). However, the meaning of the #' value is different for each objective type. For example, imagine that #' objective 1 is to be minimized and objective 2 is to be maximized, and the #' multiplicative epsilon computed here for \eqn{epsilon(A,R) = 3}. This means #' that \eqn{A} needs to be multiplied by 1/3 for all \eqn{a_1} values and by 3 #' for all \eqn{a_2} values in order to weakly dominate \eqn{R}. The #' computation of the multiplicative version for negative values doesn't make #' sense. #' #' Computation of the epsilon indicator requires \eqn{O(n \cdot |A| \cdot #' |R|)}, where \eqn{n} is the number of objectives (dimension of vectors). #' @references #' #' \insertRef{ZitThiLauFon2003:tec}{eaf} #' #' @md NULL #> NULL #' @rdname epsilon #' @export #' @examples #' # Fig 6 from Zitzler et al. (2003). #' A1 <- matrix(c(9,2,8,4,7,5,5,6,4,7), ncol=2, byrow=TRUE) #' A2 <- matrix(c(8,4,7,5,5,6,4,7), ncol=2, byrow=TRUE) #' A3 <- matrix(c(10,4,9,5,8,6,7,7,6,8), ncol=2, byrow=TRUE) #' #' plot(A1, xlab=expression(f[1]), ylab=expression(f[2]), #' panel.first=grid(nx=NULL), pch=4, cex=1.5, xlim = c(0,10), ylim=c(0,8)) #' points(A2, pch=0, cex=1.5) #' points(A3, pch=1, cex=1.5) #' legend("bottomleft", legend=c("A1", "A2", "A3"), pch=c(4,0,1), #' pt.bg="gray", bg="white", bty = "n", pt.cex=1.5, cex=1.2) #' epsilon_mult(A1, A3) # A1 epsilon-dominates A3 => e = 9/10 < 1 #' epsilon_mult(A1, A2) # A1 weakly dominates A2 => e = 1 #' epsilon_mult(A2, A1) # A2 is epsilon-dominated by A1 => e = 2 > 1 #' #' # A more realistic example #' extdata_path <- system.file(package="eaf","extdata") #' path.A1 <- file.path(extdata_path, "ALG_1_dat.xz") #' path.A2 <- file.path(extdata_path, "ALG_2_dat.xz") #' A1 <- read_datasets(path.A1)[,1:2] #' A2 <- read_datasets(path.A2)[,1:2] #' ref <- filter_dominated(rbind(A1, A2)) #' epsilon_additive(A1, ref) #' epsilon_additive(A2, ref) epsilon_additive <- function(data, reference, maximise = FALSE) epsilon_common(data = data, reference = reference, maximise = maximise, mul = FALSE) #' @rdname epsilon #' @export #' @examples #' # Multiplicative version of epsilon metric #' ref <- filter_dominated(rbind(A1, A2)) #' epsilon_mult(A1, ref) #' epsilon_mult(A2, ref) #' epsilon_mult <- function(data, reference, maximise = FALSE) epsilon_common(data = data, reference = reference, maximise = maximise, mul = TRUE) epsilon_common <- function(data, reference, maximise, mul) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) stop("reference cannot be NULL") reference <- check_dataset(reference) if (ncol(reference) != nobjs) stop("data and reference must have the same number of columns") reference_size <- nrow(reference) maximise <- as.logical(rep_len(maximise, nobjs)) if (mul) return(.Call(epsilon_mul_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(t(reference)), as.integer(reference_size), maximise)) else return(.Call(epsilon_add_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(t(reference)), as.integer(reference_size), maximise)) } eaf/R/pdf_crop.R0000644000175000017500000000235414157733570013277 0ustar nileshnilesh#' Remove whitespace margins from a PDF file #' #' Remove whitespace margins using #' #' @param filename Filename of a PDF file to crop. The file will be overwritten. #' @param mustWork If `TRUE`, then give an error if the file cannot be cropped. #' @param pdfcrop Path to the `pdfcrop` utility. #' @return Nothing #' #' @examples #' \dontrun{ #' extdata_path <- system.file(package = "eaf", "extdata") #' A1 <- read_datasets(file.path(extdata_path, "wrots_l100w10_dat")) #' A2 <- read_datasets(file.path(extdata_path, "wrots_l10w100_dat")) #' pdf(file = "eaf.pdf", onefile = TRUE, width = 5, height = 4) #' eafplot(list(A1 = A1, A2 = A2), percentiles = 50, sci.notation=TRUE) #' dev.off() #' pdf_crop("eaf.pdf") #' } #' @export #' @md pdf_crop <- function(filename, mustWork = FALSE, pdfcrop = Sys.which("pdfcrop")) { if (!file.exists(filename)) { stop("PDF file", shQuote(filename), "not found") } else if (is.null(pdfcrop) || pdfcrop == "") { if (mustWork) { stop("pdfcrop not found!") } else { warning("pdfcrop not found, not cropping") } } else { system2(pdfcrop, c("--pdfversion 1.5", filename, filename), timeout = 60, stdout = FALSE, stderr = FALSE) } } eaf/R/hv.R0000644000175000017500000000754113706402720012110 0ustar nileshnilesh#' Hypervolume metric #' #' Computes the hypervolume metric with respect to a given reference point #' assuming minimization of all objectives. #' #' @template arg_data #' #' @template arg_refpoint #' #' @template arg_maximise #' #' @return A single numerical value. #' #' @details The algorithm has \eqn{O(n^{d-2} \log n)} time and linear space #' complexity in the worst-case, but experimental results show that the #' pruning techniques used may reduce the time complexity even further. #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @references #' #' \insertRef{FonPaqLop06:hypervolume}{eaf} #' #' \insertRef{BeuFonLopPaqVah09:tec}{eaf} #' #' @examples #' #' data(SPEA2minstoptimeRichmond) #' # The second objective must be maximized #' # We calculate the hypervolume of the union of all sets. #' hypervolume(SPEA2minstoptimeRichmond[, 1:2], reference = c(250, 0), #' maximise = c(FALSE, TRUE)) #' #' @export hypervolume <- function(data, reference, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) stop("reference cannot be NULL") if (length(reference) == 1) reference <- rep_len(reference, nobjs) if (any(maximise)) { if (length(maximise) == 1) { data <- -data reference <- -reference } else if (length(maximise) != nobjs) { stop("length of maximise must be either 1 or ncol(data)") } data[,maximise] <- -data[,maximise] reference[maximise] <- -reference[maximise] } return(.Call(hypervolume_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(reference))) } #' Hypervolume contribution of a set of points #' #' Computes the hypervolume contribution of each point given a set of points #' with respect to a given reference point assuming minimization of all #' objectives. Dominated points have zero contribution. Duplicated points have #' zero contribution even if not dominated, because removing one of them does #' not change the hypervolume dominated by the remaining set. #' #' @template arg_data #' #' @template arg_refpoint #' #' @template arg_maximise #' #' @return ([numeric]) A numerical vector #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #'@seealso \code{\link{hypervolume}} #' #' @references #' #' \insertRef{FonPaqLop06:hypervolume}{eaf} #' #' \insertRef{BeuFonLopPaqVah09:tec}{eaf} #' #' @examples #' #' data(SPEA2minstoptimeRichmond) #' # The second objective must be maximized #' # We calculate the hypervolume contribution of each point of the union of all sets. #' hv_contributions(SPEA2minstoptimeRichmond[, 1:2], reference = c(250, 0), #' maximise = c(FALSE, TRUE)) #' #' # Duplicated points show zero contribution above, even if not #' # dominated. However, filter_dominated removes all duplicates except #' # one. Hence, there are more points below with nonzero contribution. #' hv_contributions(filter_dominated(SPEA2minstoptimeRichmond[, 1:2], maximise = c(FALSE, TRUE)), #' reference = c(250, 0), maximise = c(FALSE, TRUE)) #' #' @export hv_contributions <- function(data, reference, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) if (is.null(reference)) stop("reference cannot be NULL") if (length(reference) == 1) reference <- rep_len(reference, nobjs) if (any(maximise)) { if (length(maximise) == 1) { data <- -data reference <- -reference } else if (length(maximise) != nobjs) { stop("length of maximise must be either 1 or ncol(data)") } data[,maximise] <- -data[,maximise] reference[maximise] <- -reference[maximise] } return(.Call(hv_contributions_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(reference) )) } eaf/R/normalise.R0000644000175000017500000000347513706402720013466 0ustar nileshnilesh#' Normalise points #' #' Normalise points per coordinate to a range, e.g., \code{c(1,2)}, where the #' minimum value will correspond to 1 and the maximum to 2. If bounds are #' given, they are used for the normalisation. #' #' @template arg_data #' #' @param to.range Normalise values to this range. If the objective is #' maximised, it is normalised to \code{c(to.range[1], to.range[0])} #' instead. #' #' @param lower,upper Bounds on the values. If NA, the maximum and minimum #' values of each coordinate are used. #' #' @template arg_maximise #' #' @return A numerical matrix #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @examples #' #' data(SPEA2minstoptimeRichmond) #' # The second objective must be maximized #' head(SPEA2minstoptimeRichmond[, 1:2]) #' #' head(normalise(SPEA2minstoptimeRichmond[, 1:2], maximise = c(FALSE, TRUE))) #' #' head(normalise(SPEA2minstoptimeRichmond[, 1:2], to.range = c(0,1), maximise = c(FALSE, TRUE))) #' #' @export normalise <- function(data, to.range = c(1, 2), lower = NA, upper = NA, maximise = FALSE) { data <- check_dataset(data) nobjs <- ncol(data) npoints <- nrow(data) lower <- as.double(rep_len(lower, nobjs)) upper <- as.double(rep_len(upper, nobjs)) # Handle NA minmax <- apply(data, 2, range) no.lower <- is.na(lower) no.upper <- is.na(upper) lower[no.lower] <- minmax[1, no.lower] upper[no.upper] <- minmax[2, no.upper] maximise <- as.logical(rep_len(maximise, nobjs)) if (length(to.range) != 2L) stop("to.range must be a vector of length 2") z <- t(.Call(normalise_C, as.double(t(data)), as.integer(nobjs), as.integer(npoints), as.double(to.range), lower, upper, maximise)) colnames(z) <- colnames(data) rownames(z) <- rownames(data) return(z) } eaf/R/read_datasets.R0000644000175000017500000001010714154006031014257 0ustar nileshnilesh#' Read several data sets #' #' Reads a text file in table format and creates a matrix from it. The file #' may contain several sets, separated by empty lines. Lines starting by #' `'#'` are considered comments and treated as empty lines. The function #' adds an additional column `set` to indicate to which set each row #' belongs. #' #' @param file (`character()`) \cr Filename that contains the data. Each row #' of the table appears as one line of the file. If it does not contain an #' \emph{absolute} path, the file name is \emph{relative} to the current #' working directory, \code{\link[base]{getwd}()}. Tilde-expansion is #' performed where supported. Files compressed with `xz` are supported. #' #' @param col_names,col.names Vector of optional names for the variables. The #' default is to use \samp{"V"} followed by the column number. #' #' @param text (`character()`) \cr If `file` is not supplied and this is, #' then data are read from the value of `text` via a text connection. #' Notice that a literal string can be used to include (small) data sets #' within R code. #' #' @return (`matrix()`) containing a representation of the #' data in the file. An extra column `set` is added to indicate to #' which set each row belongs. #' #' @author Manuel \enc{López-Ibáñez}{Lopez-Ibanez} #' #' @note There are several examples of data sets in #' `system.file(package="eaf","extdata")`. #' #' `read.data.sets()` is a deprecated alias. It will be removed in the next #' major release. #' #' @section Warning: #' A known limitation is that the input file must use newline characters #' native to the host system, otherwise they will be, possibly silently, #' misinterpreted. In GNU/Linux the program `dos2unix` may be used #' to fix newline characters. #' #'@seealso \code{\link[utils]{read.table}}, [eafplot()], [eafdiffplot()] #' #'@examples #' extdata_path <- system.file(package="eaf","extdata") #' A1 <- read_datasets(file.path(extdata_path,"ALG_1_dat.xz")) #' str(A1) #' #' read_datasets(text="1 2\n3 4\n\n5 6\n7 8\n", col_names=c("obj1", "obj2")) #' #' @keywords file #' @md #' @export read_datasets <- function(file, col_names, text) { if (missing(file) && !missing(text)) { file <- tempfile() writeLines(text, file) on.exit(unlink(file)) } else { if (!file.exists(file)) stop("error: ", file, ": No such file or directory"); file <- normalizePath(file) if (grepl("\\.xz$", file)) { unc_file <- tempfile() writeLines(readLines(zz <- xzfile(file, "r")), unc_file) close(zz) file <- unc_file on.exit(unlink(file)) } } out <- .Call(read_data_sets, as.character(file)) if (missing(col_names)) col_names <- paste0("V", 1L:(ncol(out)-1)) colnames(out) <- c(col_names, "set") return(out) } #' @rdname read_datasets #' @export read.data.sets <- function(file, col.names) { .Deprecated("read_datasets") return(read_datasets(file=file, col_names=col.names)) } #' Write data sets #' #' Write data sets to a file in the same format as [read_datasets()]. #' #' @param x The data set to write. The last column must be the set number. #' #' @param file either a character string naming a file or a connection open for #' writing. ‘""’ indicates output to the console. #' #'@seealso \code{\link[utils]{write.table}}, [read_datasets()] #' #'@examples #' x <- read_datasets(text="1 2\n3 4\n\n5 6\n7 8\n", col_names=c("obj1", "obj2")) #' write_datasets(x) #' #' @keywords file #' @md #' @export write_datasets <- function(x, file = "") { setcol <- ncol(x) sets <- x[, setcol] nobjs <- setcol - 1L x <- x[, 1L:nobjs, drop=FALSE] col_names <- colnames(x) x <- split.data.frame(x[, 1L:nobjs, drop=FALSE], sets) append <- FALSE if (!is.null(col_names)) { cat(paste("#", paste0(col_names, collapse="\t"), "\n"), file = file, append = append) append <- TRUE } write.table(x[[1]], file = file, row.names=FALSE, col.names=FALSE, append = append) x <- tail(x, n=-1) for (xi in x) { cat("\n", file = file, append = TRUE) write.table(xi, file = file, row.names=FALSE, col.names=FALSE, append = TRUE) } } eaf/inst/0000755000175000017500000000000014160346554012124 5ustar nileshnilesheaf/inst/CITATION0000644000175000017500000000262213534247654013270 0ustar nileshnileshcitHeader("To cite package 'eaf' in publications use:") ## R >= 2.8.0 passes package metadata to citation(). if(!exists("meta") || is.null(meta)) meta <- packageDescription("eaf") year <- sub(".*(2[[:digit:]]{3})-.*", "\\1", meta$Date) vers <- paste("R package version", meta$Version) citEntry(entry="incollection", title = "Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization", author = personList(as.person("Manuel López-Ibáñez"), as.person("Luis Paquete"), as.person("Thomas Stützle")), year = 2010, doi = "10.1007/978-3-642-02538-9_9", booktitle = "Experimental Methods for the Analysis of Optimization Algorithms", publisher = "Springer, Berlin, Germany", editor = "Thomas Bartz-Beielstein and Marco Chiarandini and Luís Paquete and Mike Preuss", pages = "209--222", textVersion= paste("Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. ", "Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization. ", "In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuss, editors, ", "Experimental Methods for the Analysis of Optimization Algorithms, pages 209–222. Springer, Berlin, Germany, 2010.", "\ndoi: 10.1007/978-3-642-02538-9_9", sep="")) eaf/inst/extdata/0000755000175000017500000000000014127067160013552 5ustar nileshnilesheaf/inst/extdata/r50_dat0000644000175000017500000002336113534247654014751 0ustar nileshnilesh# Report: # Metah: Weighted RoTS, version 2.1.88M (#DEBUG = 1) # bQAP (0.1.88Msvn) # Data File: /home/manu/personal/2005-JMMA/data/qapUni.50.p75.1 Size: 50 Averages: Distance=47.49 Flow1=49.90 Flow2=49.96 # Parameter settings: # number trials : 50 # time limit : 3.40282e+38 # seed : 1234567 # num weights: 100 # Taboo Search Length : 1 # Initialization time: 0.004 s # start_trial(0) : # end_trial(0) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.9041 s # Pareto: 0 Size: 7 5261548 5340738 5283204 5340630 5287522 5336320 5291202 5331366 5292270 5318304 5298876 5290408 5312952 5277832 # start_trial(1) : # end_trial(1) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 1 Size: 4 5246946 5368942 5249068 5328154 5277710 5321710 5280132 5281080 # start_trial(2) : # end_trial(2) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 2 Size: 2 5255914 5312620 5285994 5294248 # start_trial(3) : # end_trial(3) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 3 Size: 6 5254586 5341368 5265448 5336434 5266332 5329290 5278158 5328006 5293084 5304026 5316378 5285680 # start_trial(4) : # end_trial(4) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 4 Size: 5 5257008 5385896 5260020 5354180 5261932 5351978 5265120 5343482 5272604 5280450 # start_trial(5) : # end_trial(5) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 5 Size: 3 5251436 5304740 5260634 5289432 5261388 5278662 # start_trial(6) : # end_trial(6) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 6 Size: 3 5260462 5303782 5309662 5298112 5338894 5292426 # start_trial(7) : # end_trial(7) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 7 Size: 4 5238158 5302220 5266616 5301604 5277362 5291346 5328374 5283152 # start_trial(8) : # end_trial(8) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 8 Size: 5 5259568 5344514 5260078 5323590 5275688 5304758 5295860 5299490 5321894 5280216 # start_trial(9) : # end_trial(9) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 9 Size: 5 5252950 5337456 5258962 5303668 5273430 5301298 5311040 5291910 5319530 5279154 # start_trial(10) : # end_trial(10) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 10 Size: 6 5255088 5362366 5260872 5337164 5276254 5307774 5278846 5302382 5287324 5301484 5290398 5284198 # start_trial(11) : # end_trial(11) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 11 Size: 3 5257462 5328600 5262892 5302082 5306682 5293358 # start_trial(12) : # end_trial(12) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 12 Size: 5 5255536 5369466 5265974 5314044 5276688 5311924 5301892 5288482 5319394 5278344 # start_trial(13) : # end_trial(13) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 13 Size: 4 5243484 5327056 5262810 5312496 5265234 5288336 5305096 5285540 # start_trial(14) : # end_trial(14) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 14 Size: 3 5254326 5373688 5258282 5328368 5277040 5290704 # start_trial(15) : # end_trial(15) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 15 Size: 5 5251220 5334532 5258622 5318388 5274694 5318056 5275588 5299916 5307866 5281706 # start_trial(16) : # end_trial(16) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 16 Size: 4 5252238 5320246 5297660 5319870 5302690 5316084 5305034 5293474 # start_trial(17) : # end_trial(17) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 17 Size: 3 5256636 5364154 5262016 5294988 5264892 5269504 # start_trial(18) : # end_trial(18) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 18 Size: 6 5228108 5347760 5281796 5327312 5286788 5320758 5292364 5312668 5305786 5297640 5319554 5296596 # start_trial(19) : # end_trial(19) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 19 Size: 3 5258012 5349460 5262532 5294728 5311364 5285878 # start_trial(20) : # end_trial(20) : Pareto Size = 9, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 20 Size: 9 5262846 5351252 5268224 5332648 5286336 5329542 5291024 5323824 5291052 5311388 5322204 5305956 5337348 5305340 5338120 5302878 5350520 5288884 # start_trial(21) : # end_trial(21) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 21 Size: 6 5257942 5373498 5259552 5357156 5267384 5330886 5279304 5315890 5286088 5309012 5287040 5284718 # start_trial(22) : # end_trial(22) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 22 Size: 3 5253764 5351678 5265558 5309298 5290820 5295606 # start_trial(23) : # end_trial(23) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 23 Size: 3 5243858 5338614 5261776 5332340 5286980 5290820 # start_trial(24) : # end_trial(24) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 24 Size: 4 5251984 5322490 5293588 5309414 5295572 5298376 5313146 5297746 # start_trial(25) : # end_trial(25) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 25 Size: 3 5238488 5294964 5265768 5287358 5274538 5282446 # start_trial(26) : # end_trial(26) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 26 Size: 3 5240112 5318798 5285086 5296794 5297420 5288042 # start_trial(27) : # end_trial(27) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 27 Size: 3 5253562 5315656 5258408 5295302 5297444 5294720 # start_trial(28) : # end_trial(28) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 28 Size: 3 5243092 5314062 5243248 5286716 5296000 5284678 # start_trial(29) : # end_trial(29) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 29 Size: 4 5254042 5338584 5260876 5330882 5276202 5313170 5286874 5286552 # start_trial(30) : # end_trial(30) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 30 Size: 4 5249126 5334774 5263022 5312306 5281242 5309470 5284318 5282482 # start_trial(31) : # end_trial(31) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 31 Size: 6 5257878 5347536 5275036 5339680 5281738 5334044 5282030 5309294 5292442 5286754 5305288 5276742 # start_trial(32) : # end_trial(32) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 32 Size: 4 5262822 5336322 5287408 5314374 5288480 5303274 5297530 5296626 # start_trial(33) : # end_trial(33) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 33 Size: 4 5262302 5350178 5268796 5320690 5287784 5307578 5303060 5291696 # start_trial(34) : # end_trial(34) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9001 s # Pareto: 34 Size: 4 5255158 5363060 5265740 5316854 5280842 5287822 5295982 5271860 # start_trial(35) : # end_trial(35) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 35 Size: 4 5236920 5323144 5275658 5316252 5295276 5291846 5320036 5287242 # start_trial(36) : # end_trial(36) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 36 Size: 7 5245320 5350028 5265846 5346862 5269172 5329214 5289792 5317436 5291128 5309678 5300432 5300306 5320356 5299120 # start_trial(37) : # end_trial(37) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 37 Size: 6 5256692 5369864 5258244 5351398 5260990 5318888 5276810 5304172 5307654 5301888 5349612 5294114 # start_trial(38) : # end_trial(38) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 38 Size: 4 5245000 5402680 5261294 5355072 5280504 5342928 5281916 5279952 # start_trial(39) : # end_trial(39) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 39 Size: 1 5256756 5291420 # start_trial(40) : # end_trial(40) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 40 Size: 3 5240372 5339244 5269234 5300968 5292588 5291350 # start_trial(41) : # end_trial(41) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 41 Size: 3 5238810 5321212 5254626 5315172 5260078 5296038 # start_trial(42) : # end_trial(42) : Pareto Size = 8, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 42 Size: 8 5262120 5384314 5262892 5343884 5264312 5331836 5279288 5323156 5287766 5316696 5288662 5313878 5299640 5305808 5304502 5281312 # start_trial(43) : # end_trial(43) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 43 Size: 6 5251856 5339406 5260988 5322928 5285486 5322566 5290320 5308872 5302434 5302166 5318698 5289714 # start_trial(44) : # end_trial(44) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 44 Size: 4 5235812 5381636 5236334 5354730 5270128 5301072 5305764 5283634 # start_trial(45) : # end_trial(45) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 45 Size: 2 5230660 5301340 5293106 5289332 # start_trial(46) : # end_trial(46) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 46 Size: 4 5228398 5320810 5238488 5307248 5282654 5305988 5299924 5287560 # start_trial(47) : # end_trial(47) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 47 Size: 2 5260116 5305420 5269468 5286560 # start_trial(48) : # end_trial(48) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 48 Size: 5 5249848 5325302 5296612 5310710 5309120 5306430 5317752 5305550 5342704 5304442 # start_trial(49) : # end_trial(49) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 49 Size: 4 5261944 5309926 5288296 5307688 5312776 5304054 5327484 5298724 # Average Number Scalarizations = 100, Average Trial Time = 0.8765 s eaf/inst/extdata/ALG_1_dat.xz0000644000175000017500000055775014127067155015637 0ustar nileshnilesh7zXZִF!t/⊻]K hio&wm;B8`+s|x)rs]feu>#p?yrkՕU$] )Yd 1|z_dIhjqAFd5Lú>†_*Ӌ(Ŝs⿏`veYG^dvЀWtUR,h:XS9g>RVWi/iٴ9W;[~qd+FBocBab@JZBI~m?0<2g _JXm\%BXyhఽ|[mOQuAYx:cc?\'=" q$`x%-BP fgԿ9nVߛ"U2H?i& m#ޞ0vJ1xehFG,e)eM*GW |I")X?ls1"V`7Ɔh%Vf }$}cA͛~+~*i7 ^1GWlBC R<s_3͂Wm-tA91vZ†N%Z.9ꋶ9x&0Q:±B 5R/b|D7Ю=AM %-1)uÅWKZz$Y.qjW3f^]P !3+ t9}b _ͩWt'᫆E *sAڒ>i AQ3p4~8ueuW鑭%|q'\}<瑇~-O7Wz1隵n Y"#׼Ϙ](&j:哅EQJ 멐a B >eo#C >6eR) rw$H? WfY6p~͇OxӤv]VMޛ$u\- M uE@J8/Ijp߹HJDdnEGµzժTsskxص+C.`-Ob)9 Y#;Bzm}Y! fz)k)P8'xW@mSa:7ߩ!)P&$J.(c'^%\`(rIRk&ygyccމG'AC>]L.X$dBńz~[q¿w"PC}n[B3љ1um!`jzSSt:x!cXI9Jo#_vcMv F2@ .-iA؉GՃZ1F;9k:Ν% n"TGzwDHY8;]v,+* D@u/2o+>GSC dSoFo+XC'۹lWtay- gM{4a!/=v|^br lvMFm5I{S i$BaOۥ20cu)4o @x1=|'JT q1,'9Jql%HG' {nymX)S7j^: ]OXOD$ [xJ7z]SٳuRD u(#7ץWB.}eb~i0kٜ,17-'ܩσ΄ׯȺw\&b$uI`tv8+<̝L {ӮDd`i, {E }XH_d(p~Sz\]]IA 9ts;DNf +<:9^2Kl.qXV ls1'ED!->nX`5/=*, 9 AGaƑ[V pcz1."qK a7#9~.%b!ODFw@=]1ĐS[VuIpza)ݲG n#TV{Ve ŖA/AgtMq~`y1zW]L᷶LRF+DHgpW#wVàfO(;EtD<#IL|H<;tQ~2tvđ.v93Cz- pAa=zy^] bjV!H`RW^kW9*J?ƱW>3iӄl@%1vI7-~ӪdJ*=QLD㺕6Y Og?)pBGkaN@DDZ$gBv UAX=D?Ieq | i-΢t7[S JAE; #Tt^f^L BG}6ݭMwh{ɮs̴ ia3"EKm:4Ekaqms S.mCPm<9USCp۾"͆DGK2Y^q ).+8 =H68~% bЀ"??ySkͧCy>aX"m),)d:3yTFʤ|Grzp<CmkdcUrnݤVG;GJ{~PKnvQܮYLXESIfn-G\ƔДtvu1C1Y8UB|,H+$aF6  6áiY!!-q X ̭᥷]_q0t3lNHw9IG|Izޚp,ԘF`2C}smaz@ m ZPf NM$՞?i V\ LoI=i/% pr|G0 DCx"W=HJ`SM1OtBmHwlFD09sULg|4(/5' ;5XF1Kr+FޓmO_%oiX`$KGin^[mӢȣb<,8#dP/jlЃʼn͍mQT_>89:гCŽL-JJDYj7!еtNHfhCῚ\4si<FxeImwѪ V);T\As#Y<,5IC I;s:"35w Spb>ZH^ JWR0GDֲ[LPҞ H)!׫Sbܼ!]<:d23k4yPzdƿ]y\"]eExN*PF:B!L}d @P՚°j`f]7>h67mYο].T9&S`t,̛>XTf?u;$h ILmFo8h)SH}xE\NrW aI.i`Z{ǻOgЩi,eaO P"bV|\a1/S҄[oZn~(I(9K%lg:Ϡ0sm!c䭎s樖=Rcg$=;i@[Bf)~@yc"=sV"1T8]'lPN"ӟfr!iWGhTfi93wxH-K#|,S@Yg]Ŵ3.l kTPlQZ@6Y|o:@UnmםƯ{I(Y 4&.JYMcB TC-$n}%&Uk߅LP /s雄F>Ya&Wlj5Mkn ܮܘyhV{8/:fӌ\xeXjr[ K.5EnJ9F-m=b|ᤆi/=E̼`p6J}ૌuq! 4^U:{-+y زEۆbX*>`.g> rup-ߕw8 GeiSStfYÙ}~x)BԜ7bN : @..x\|K^|>GVlVxYfjtڽ;1Sðl؞(a4ucݍhcb^AsUU UOw\Oy 5&]]`e,@J[+ni Kz$,MQĊ_>9&S}6d@v J΢&8t#ͺ#P'~btHB6dG]ORC7ro+`3o[)㫟l,A.@K.Gh„`FJz0v$&Qvs)fgQtg'aZ(X6|*w 2&b+9b_i"~:fz Mt2khbm(Q5\~b 8x\ זHMڎ¤"G1Ǯ<,]AEniOf>n:|͑b~֩0c pB*975:X=&`h(n78*:ϨESh/`KǿdCqcZCCI")#Ԛ_ދ2A}³~cˊ4ifX3c4vQ;6OnaXOJ~k,^`DzMBn 7.sk56z1我KիѿX?z`;iەks(Tu,wYb]|Lܒ* ]11l pG2U A?;(* GtJ}B0 gU 8/O;}\Y}Oilg5czvf>;Hh.&8%"BHt>,"siJW-*u1I*\aSE/iZKcm6tXe_}{/}|LC{'مT`XˌKk-a}`WHPp4" U:ů?ԥ,ÜNQaOyG ` Ekpom?KnQEvAOv2 l"{+uV'm#)ؖw""%A>厾ЄU2 ߃>*1ѮWd}{3_Ql \^~񒯌ɖ<rp/, muvIɹQ B1AfڀG{ J+ 1n![#96k,}rBSLoqR {>8Bh< 0?f3g#01"3zg 7R-ɝmޕ t‹?+LD"w2]U5^ wiN X:+dmݔՁ ɞMi£u[!]&:kG1,CF |?rH8 F `=F9 QQhWnsmvHwx&ׁhokDkuT7`r/-74=Q{4OOMnSC˘UQ&C&)ɋm+2]@cO8yXj{klOClfan>+^nI֦7uY+铪H LB$dK_6UkM;e@*\ިw]2).g fPZ5ĶR09>!U6cT3R k(Xm$$aϹwsM05hO>lG&p?qQ|]%&3߾;3+ź&ȷkb?dʅroN> cƗRqMmh⮴ƻx!If\EyMVkZSݬ-.[3mR nSpfvR)i*bqi<3^O|?t qlif؍rͤҘS!>|)YZڅC| |\a1ng?}4ܥ n&#o 8h *CfP{lF;HmWW$XbnP:8 3 {tW =6oq,|Yo% o8AC`^6_d?}С^MHݏB_`59'-|GT.r>WEZL {>68HQaZ;)MbfaASkJ)0/Wͱg!YY\tJ_.&Evv g]ҽlm+i 5EYwej8Aiu3X~ +{ʍaE7S =~ܻqq!')j{pXhjndܗf7c{\ VABjykؕ%1L7*ApRSBy# %HG K[hK`4="Ȃ:MK?-n I0ʖ@XkޙA*ʳ#AvEFl10tڦP;\8p[ A\cmgNv .3ēO`) iR^2̣gnL_'tל+[#(q&C8d3:&7Z͑8o+GQF.G1cDbR6gC*ԜOu~̖- 'NB[ /& ۫7+8{wCs]b;\YU1f4_֓X+njx[E|Z K.Lu"!ؖ;̿{j+d3*W%CUHoewt$ xb_gm[5]BGJ8/Z`lDQ!w|ø (3>c:9iNF (d6 #!1RY_] ooбgێ~#դ6dhOVw9ŶV0rn+$7 KkbKDVZE| XBKaU R{;I[=TY-?`-lHW?lkKFKKY9Ud~̩X\6p*ttRZT͒#&1*qË"#\]'%lFԉF{/f{}aJ|Yu0 ! 0閾@mJ@տ9sNK B$6aJ෕G{ HP1341sJ\a1?{;VuoMC%vtbꨙ|e-*0F'@6 ׶C(99nGN}c}@M5 SZ.u!fF@kHDklHČ:`kOIǔ0dMa죸~d 1Ȼ@|7${OQ; I],gTAQF~%@ibj"j`/v^K#7*(U@T~Gh䮅:i v}| 'f@'nlVߟїT%εB'ާϛ$;($h{mͯq1p2їk&Xa&g[ ujVZk+6SSVJ"S fFtV+FKe_ i ٤^:|!h 5/Ok;>Bj{0lkdhxgց="sf 5mBr4904D['-Ο;*Hf;kvӝs*\ڙ햑2XIgչ/@ZEKB&*{׷Ҵ BAX ߛ!!5BJ,1s{,,7TroEpN+7:ȇ-ج;X ~UԷL"WjG+< VPD_|dT1PEcoԆ0րœ 7Isϻ<_#!F{ԩMЉRzĶTTTړP ҩ}׫[#Hx᠜b\D%٥15wdJ{ fD%C ?/"O*ڇ9}m>s*NRYj>,ZwpC''(TQ`T>O CsP<0zAYWf`+ $.꡵\{x/TMDz.@?+,M0aU8$03ҧH5D/x F{hӀ 7Rq ]ni"КX#@/4vl Ii_E]#~$Y"~\2{VUd[fnp^*ܟHcuIr\i }`w\R] Z{](j|<Ä.$ԾfGI>:iWIŶ")#Y+'cZWUZ@T̑>8}/9 re:Mކ_D<2+h֩@0@~t4-ﶟJKg0s6iզ0xL>4 |S^$ZX|?\/V<as9 yBUZ9*M6[n媚SuΎ3i4h=|aI236Ѩ;u)ߕ3Ϗ pC5&MpA{sOvcqv>Q=$15#1AXnaJ$dy<4؈`M^☖18rItTG5P7l'`4ู]aʼn-,)% +ŐaTG O[ۋՙmT{'΄H))hEr'ani].'s@ @⡧ 5? Ӛ|_-֚tI m-Ɋ Q&GKMp%/pwBquW0N?w:sPV%0.0_15Ik[i(R[lBu3Xu`Į\׋˒Gl2oF {9-Ǫn,by"="Uu*!A%N@CNtKɈCjW-15H4m,M!\f#XӹeBoJ龎`翎Y@a5Ac,|67q <~=oF1?TGe=[|Ug0ӃQ(mq&رIpTaX-eO|+81f5+HѶtmq GZ(TG*uI|$ljB䗓c*!z`G8vI1ٕĹ V?d%) <=d_C˱߽~5pFkc:'2ֽxzO{4p0-:!{~svOW! if N!E*jې.<|Տi ֭lZٱꃼF38V"\hV N{t~-Tb #T)ηS11Qfcw/uV1mƏR`h)0Ҋ/r9qmJJG [ F0p%Pmz nm| ɼ亖lM`;6=5] ]-UhcvmK>)Yy]&P8W{f/,5T{jċHK(๬($Rt'%.9 OLTk<>U6&sm㻸lMUuیs\Jγ-709iCK$Hbs*Q%eZqb2i'}J]0aT  JHcj aPIY6og }} _|BSѾ ( R|_Zrgat@\ @+ {bZg/0i'6OS"wa(QfO c6ֺjTPIQrAk  ":ue/\_g 1m)VϿbC(yAhj>zO,A3, OUKKnwD 51(^| eD2h|8?ۄ0*>N,@沗KJ {9B4A1@66E(: za }%ՒݨLجXw޲]60.+Y.Cħ*0뀎]1HM6D1S-QAk+ 1Z[~&,Y5k;M19<`ӡ=fv5P,BJG8!V!]!l%q_ԫQ}yQ)E̷o/ *yu^5g-WXi]D(ZݧSU;x$qs8<DmՏ~zINGŰ>kVu:E 8;>Б` @FIXYȑ}saZ |ۘ  Αr[p o-d?75\"4ʫ0Kv(j ~6[ R<磄z S'FP`q3rA =~#o! %^S~ex3GT- qqVZꕚ-"аRt0XlvU~nE[l􍽢2rk-GhOIbrZe8c m˙0{_TrO) 8I?EEmcֆ0)z2ꏥ5ƵC 411029"T^G\I>ajP:JiJSwAxicQKi{jMBňh:\ S+p+r.xЈ:µkc\,¤lH,Ru۪{HHNjG_F:Hӭ!1pX aDPQ6=VfGK YMՄ'? dQ<fݣKj51C7TXK+ =uڝ2NfhQlG9݅WJO%DUñ_z5pɈ M4z5H"Ab 6b`PjʽORi>5b{b6-l@-2EJ@rnu@D Lݻ/" 0tZ䭷nxumۧqA]# #ܚk$/f m;Zu/Á=cn|lD66Kcol sE2G5+I?R+Pv{Cu.Ni Dpquȏ$J'-fkVj9uíblӞu5^(Jzgc5[y'dn5' 6wʹo<0.S~~. Y̦3DV/5 gŇFm]u=6:V/6,L0ot1 T?CG dPN{r.P%--qxA^789ra o^ f&m?btP/EE*jS<0#射:9So%%Ueڶ<-3>}T6 Ri+y)M>3J~T'[S]! >e+'KOQ+!)aD'Aii&NC#Ga`yH!$۵7. x5yyEG8fAk4>5If84<_2a֨eNm~aT<.{Kl*cUbnnvwfj)D#{\9LkZ ~vb~VAvA} GzHцnx$r&9}x{ |NHe p)b3?A 5wSqnF-3_-O `D1kL<А[|Ws3o!ܔ+)ӌYqD2.~A1E:ܣPye;0o4h>ⴎgVaHEm't+֊{-D/ADV(O#tR!1諄B`:EQ`1[l:ܠH904BviRz=>$sP,Q,9GE*g5Hw,ZՃ>ռL͒xʲ ^TUs{vuu1y,%EhMzѸyA>\?w,UX_+zY5oũC:|:(SsE7T{Z 0d&7L\̓ N)Kĵor<pB"̈37%gU莳l`P*7^QϓAZEnZ>.Z~1tD^Yۨ3:"حYnA)RVSZVn\[xf{0Vlž1CiX ڝ `'C\ oQ%93&wNX˱O?bXv-Mum\h:U{7tG7+B,g}z O:K6'ebi2j FEm|ezG @ !|=WV `O_|^$ ~]Bz*u(]28rUj.#i0F ]ZK1WZشwILՠ˾Tpn)EnX֙S~sKb{~.Yj5_*X|/rɍxg;T@Gm*8Rސ[? I$&PzgɭmS?5z]:gU v>ll&JŮH$2] "I-wgF¿^R;`j`GmoL@J 19Q.m!'s'^?pÐ4J<ıU9yBVFZ-Pe;=H |&0~ d~X8y#1AG~${H;k}V}J[,R9<=2x) wfC>bz˝Zh$y|C&fȓI4k$= E.38ZTB_Xa}J$rc,x % M0];S䞌IEk1NGn^071g/s!ZuM[ƹ·>ƏU ;3LN0jK4"iI}?c"<;};=xR?iNs :6i2Qd=Ҍfn׷M^3CXG52,38܍nS95fO|`(f1p%fR=f5?n%Or8Io,fuoC{ٵ{K칚Y5Y͖oiVg0uJ'I|T#D 2 Կ@x f㥵3'*ID2ڗt gڋ+̎#Nhtd3Ma*oLs/h_z/'}Q;ae.V挱O!_9EJHɌyxl\e$aOI"VpY汀QUb9i@+Bɥ#"I(Ͼ2;jZc#%P6kfHuBCj>/p#fIIjA"_`ά L;heMۖU[W^ޚVMzJucoos &xc-2'Zgb7PlV*#]oD'g>nʥnpѲf]x+D{”[ ;1==z{2LAצ4}QvcУOk*5)j,PD߉ickwf+9en{͉\XKTiZno84la XU[UٿiXLIG; ?ƆV؁DxWJ .7R4x:;l̶yyF'j,&X/ JP}|gyTO;KdcW `&N^HYdoo(3(˓2kɇ;5FI,VDLJ|Ǜ>TW>Md9٥a3- i@wk޷>f#)Sxyp("Dʗ6*᠎m~ ŵ*r=!FDeOQl_8:,kg+ N=lpEvF?<8EB.{_`E:@Q }*XMWBhml tJ-Ue5~±A"I|kZ.W$L8ǢhA8f^N$}.j}qNȰGuJ'Scvk?D/ۆ@{}oHk g'7iN9k3j"d4WYn 1jkFv&"ĸxt6a~}kbM=Ť$nJj"#n3bXk㕏#MW[leO«i vϜ"[=7y۬یaG_Ш`@_T]JyplD^QDgEjFP>SqABA ľԭ 1Iv"|ȁ)߱3GB+HH(zӶW̫;ZS,![x=rV^M`f)U Ps4*]=F9Bԧ˗I2{*i~.Ǘ_"h#Vs*1M<8,z-Ui@Y pYvlJ @]cL<{)6]Jd-^@H$P=jenV/cNܰd^+U {ID 1g,̐=fHqY :nޔ 5 4ƻX*8eejx,L0>UVYK3r_Sl&$I{xo9:- GگDotlW%,;*pDb+VaX+q, 4Rvt&.N4Yc= PKVCqҚ6nuYSuժ,ܖ24M &I>MWſGu="BIf L%떜pQl\ 8/U/'Иf˦xhaH3 "_ZyCE r;<[?F:h ĥՀ_G q? LA<3A9>fG\K۶ 2 B ٭Tfv%)dojik듹8H'KD~% '1>usj77m밙=J17L1VAbmr[VݔEѽ(±1u1s.,AցGSc7BlO%I˓iBYu՛oA#WMaS˛- `r& lE~ [嫮2FymxTXWL>21 w/.t' yUHZJv Y۠?.~ ?O XJpBR6p,]TFᕦQh7e!q =@JUMR֊W9̸kخ52}vXM f)04n/V?SڋsUn-AT 첕h{ѝ^ =N*Z5q|7~pbf9doy @/irsyK=l;e`Z$E"_Gn4'}$Ffnǹn )*IJA јj;)N v>`Q@BAA wHW?oZS U @gh#s7}Tv0&ZLK ¶whQKwǣq#S.행<ꇳ\zfZDH7ݙ35ORjy ?ڭwW5t4!-j6^`V;݌|π4;~7߹|] :&FQs~uh-A yB)u{DNrd.ti ATX.בdWԚYRli f~|4'm 0#cx[Bf{ڐz6Ht+Pg]G_š9H bhWSfF}QH% GqdKN |@diX@Z ν{kh{S?D3ͺikkZŷ5" _7&d\j]0SDJhظL'%D;kX_Ehto^ac]=.`WC`+:AJM y OtPHau 0j@r.5bUcH`F 26 ȰIY*Y4U&,f &5n!tu8ղMadl_!h ;(-OO JS)+sIGlKұ{h艻ld6*Ckߪ"\6Uƾ'>a/j5~hἂt>myY1?p9L,vI=:'" / K>8}ic-J5Ajb2P^.3 2ǙUW-ոչ(w{=o g~tOyuXoODŽ5#z^D4\]}.<(@Z.Ro^:oЙ HFU~c CM&̰ab mԕql9#t!<4"BT-9 7dpL:r吮22cTxT OZt}*@(\<$T-bX*fu A.ͩ!-[*<H)#M3c-rPӾ MT|r SU`'?HMYbr%*,.F?#+6o*_{ b \esyTz2bWsf,6 wPԨ1q:KexsgJX,2 q( _fpϠomMNpǟp`6=V7)ͣ5<}`p |E7rKz34k@_clDee㱌PrU sTyf5Ejq(u v6:LTgCI68usxbtd DF.RE34$)=j7<+Jm}΀Zd gc$cgL+}8ė$y`8d(NmZr,P{8w+H ny7().m/3Am1w#+R0I#a"߼]j.d֒Fa3[!Z&R#+/aSr"積 AzO3r!Co?Kp'F+aU.yN#^2F PIaHJfWNd,b9F(bs6Jf:.3%fhg]HH֔۴[iL_;mn'j(2gÝq($r2!0G?C3oWv^Oz~X`t_Ph(F?P}=ϳUAf2I @SAPTLz犄4ev5xl$؉6<0J6b{4X-(]:kg[*'?Т롰4RC<_Sּ RH/=V6ּl?Y™K;dP5t$,7ܝ|T[2ln8-XG\R8Ⱦ@'/Ś:.l"6XnEi"PdZ+y. 0Ǘ^89툨cHst2ष^=+ )[ߠ䡘 uyqJ٦FJ֋-hSf@ +ҥb%y<0yt`N,:~T LN Cb&:9*O~)j%7O` )t'M&)U [\ }CeC8B:-[94innm_L ì&Q] AM_NzpG/O[ ]$ Վ+n$pIGpՓd-1''rm `i~JimtV}L5!%)9;aCtDeU}-5q!c.-@ Zɷ)qkrUmƷmf{}H#u>dnShyܮ3J'rOY=]Ť@ꋮ^FBY K5oZ=iO_b->8\#ݕ]*W&Fzr7N09[|pAw4^O6ZʯYSNylkZX8#ꍷU]IHcƐ')J3zo7m&MI24{ӯ x~Z !N@c8[׮vP(-$MOP. 3qogiYº' œ~hqn0LVmڭ{柁32Re,l-/@K~B!)|4\#*aqnZպ#즵 Ø|=Crn'}3`k|^ h|x)U b@OͣrߙA}oX@ZZY'e|ndR\Dj~$)XT"vnWm<z4@.:%oiF?㢢{=Enn/Ef#G| 7nQF?w+ 0-nd~3ʄ lfa(V'gP[xך>A\)6Oֶa|ģn4vT=w;ۅRTZRp|]j̓$%*FӴV*H Ek"O@ymHqII!"UjjG9ö?M٪Ukw_c!շ9(<*-Gǰo(XpTE3;l= ?gBu613BZ׀bʓ<~yv)>Gc&3mb!9[i 'BGX߰:,@Mc@q,IVcF򔸝{Nm_?N:a+9,{$s o?L5,i=k| ]EQ̄ KI/r?Soy8YOS-\ݫ p)1"Hd+p^*HwĨ@SY1o,hwut +PI^UcZ$Kf*(g+j}G7!hs4E^'qdcݏ ~G! \'Ϸ4pTaqW|8>0K-b,f&3PY1fcS2N7Pb`q;5dg2(0>sydDJMjGPꆟmk&kR_KtW_ybސ'Q^?}jtۑ:ΫB@BП^B~Wz\Ɗb=4yEXM{ISLCOj۱|mI TCq8&zyQ #E <Bɕji״B&(ulwOrUNRG0o]~9^y{1$7hJ4on_E i+\9#Q #ɭT~ ǯ< #Mg֨\"ZG&(t.\f|"rF# k,r;DZD'Wx%8& }5l\233x@I<U.S$cX ."01ΙS)frnVE棯5`I4JރL0ZǠʭkVBOg)ֻ{g}ObyMΥbֆ7sO4tt{-&r}P l#?vCE rLI !q,cY9>ls$eFEPlY nX /1AqFxER+gѰ﯍ml \ Jɑ'O/T34rz\[ӊ* %j~kp|4MzG^ m ~M%u9a%]qC))Bb ALտxVM{ C颻1$@a~qW7Գz0mnII7髳f/< !ǰ~?v"+j*3@bL;(EçH)T,IiryT78Maauc|<>`,9iR Cc+.pO;<j6$:94 ~Y#)w 5@yVe|H0xJ3[?ks B|=^)m;K.Yĩm(U2>zۂr^,/yt^ עcQ>x6d%%Y6V }ox+PcxxOɩPS*j_vwկ*oP\Vi"C\1Td֫Lˁm[PH?ݚcYA1*xG=mhz{LLj r^gy[S : 3)q:+`qgԄt+0Hf cZfrכFqSHZh6m[&R;BJEQazrFp(䗈S(LwV3"ڒnuvZWtZ?}V?!$)nam/%]S )\1ZeE:ܐ aքF2(3Y\2t iB"A<|,+>e<]Qd\Z6sw9#~VGU 1&!)EІru6f{wWz o7MIg iF!_wo$; V\I2/ rVHc`GsaK_A"Vwb'z${rE\n,iN;DE R36m,U-?c_JJ5`~1mD %ͭ-Q(N-d hv C˥u|5+tnJޙ5?n7`@73Ė1&sxF3M1Xv}I2({L-\#;_pT_ij@s$rp=v 7n=\rSP7Uo7 . 39y0vuM7퓢)&]@I?Ʃ硎qebz# py6#$̗]ꬹbPs2 hTh2ĩ1ЂssPӒgɢ+ݖѳU,cVks[Gc>SX([[lB=:'M(CL#@K}&[%i>0bj \WVh­[-%;77y<[0{xˆ [ S{)3Q a]u L6&taĭ.,uFf_f䔕W*|^Yg$_pX2$C[g+;>RT?$Ģ)H,6\!n.˰m>ߠXg6տ=ZOCe[jJ 0oE19byeUbj*&6#fҀ8Q/u#%\-yC8j<4lIRHZ!Afki;"ùVI3Hte3ٔLGmqH!E6HCGH|f5vFwPD"!rыcwP/3EwK!*ܶGH2@9DEk%x೙gzӄKtnirxڱT"H+ jep^d {0s|@d#5HP,I뫪m`mdłĄ~E K5ܙx!4,l|%N GI]F4/-T wd&Y}:G,QhV#ĻzHcb8^I,P\Ҕ] &"bAd@LB$@؈Q"DqIɚeǥMzơnk2noO9sv3Uo鿜[-5WfM97T3h"(s9iฎS~Eu*b ҄aeO{o&7K*qDJ0^)i%Dd=8ˠ:+gS j?f;|9NM3XN}BeN7x*Fڹ.j| I+p#kuژ2%H;[^4DžiE}AV[fN..$\L?as*dPSk=Ȣ~[r;FAF[cÆ cOܱJ`K& *N^A-Aպ|dA_MH~5Ρ8HSleIV2U#ˊ#bb,h2uXfAH{`Q6ļ0~Qȅ H34%5kgSDBH&FL6M%:{˝aTyWdffaCD)TMacۿf0^y6W?0i]SpخG/Z$)`C'iݢsJ--|ǝxJE]ȧ8JFS x&]&:P?:@D PҵڗUԥƼC|mRC-9gN >Z?N@Ma*g!tyL6ַM}s^~2V?j2?%P4gsDck"Cͺ⼶7dI%$O).r*~#/"b]у0՚IHlmBTBWjI}lܚD">s~EGf{4cq/pbǁɕ;H4Sȁ#m%F?!چmIgCK_%T`m ဳ@q )/m%e UIrYľW3#[{|L( \u,8ۮgg&Vd.ϛAE">b6`klPp[MqԥBDQ- H|hD9YM0GQ1^*2@ҜnZ @F2Y$ ʧ(X8,xbC">#?Xd-^JU~ ySKrAŨ(*kIr>_ NAS('V4Tf-V+KF\.e (ؘg)W MTϤe )[;gAEY?s>p@/Ku=qϏSEkRx"EqC5Gg3,LJP)4qE9tw6u@g":'ipaVvLXL*)q +p+B, *6V > 04߻U0YQkfk(Hο e $hzQ`-$m懾 ?gŦ"<UOt>V+s3DxY@๪r)BT~?@nNXgqoAm=J7"%rz[@SG?$^*q|}cq~W6Vɤֶ#ʫ1x}^cF-IޕpB7=lɩcmdq9)*WK"Qq36/OJZf35Vxbd)N}nj|;q*=TcL2]VO`Q~Pvc-Gts篽b\Ő`]t_dyJpW=!y Ӻ̺P /$ʁ 0 o !Kz gǂ*3UGR(Qi8?=ful?nٷb)iO^_?J!S=;R1g<b yCʮb ټN 1W˺ H $GFP3%S^7|nv(*L5BmIgARv@̤ƀOm3՜ rN[1`&l 6ͬ6/ ]'W""?S^Ⱉvu((MHG]{)lgV "pnC~$۽<ȁO DYorN{v(ҁrKڸL}:p(X0~WYr#lb )nsWB ?1D*u.۸.$aToWVȢNF>4x1OC7Pe-*T~B0E tW7723q)#sܟq.G)UR)q^z=AȮ$`?oB,nj@_Fsn5s8( k9nlV׌.<ܖtQ2ϼ ]L z:g-gQX9}td{!NA/3m2»Qe0O078)a)]R]:Ċui4JNsլpNQXn҉l*T= w71r;B`@G1Kwvq|LfuGskxHdجgS,5 Փ$+)0஦+E}c' U`su*4w\]=w+@]lX|_J2aň-^.Fhp``$2yAww 1.$ s%<>%(\;7"2F qf )'Pz^GnncV5'T{1!gSGfkpYL P>S%"Oa䔯•>̓x\\ <)׷^Eiz#Ԙq4KUɒk{da ~_r26a ?nRf.^brt bQ&r8TmvS2 * >2M/Qg5`mMU;]իlg`Bwy&o# r7o"0/K)6F6[)jfӔ)&@c<ԻRy\_A4 0quK0/Ia"f}Dg8Mg](H%˾>A+ӊKF9lx:g`!toަ[Xa\cX݌wW<8rcEؒ/ݵ i oRU31}Q wyDa^#&#' PR{Z VY1>e(ء/BCGQgDg[Zkf!2GY+96-tɌz|.vDP3{o+/VS]C Nr-F?kIʴ1k8Rqv&u軚'.4y\q "|*d#x7MU^ږys/$" s'wWDCV(H_@:{P"/ Ao>x5xF k{ݽ#Ie<*fu[䞠=Lk !􅆇χױ Tסd|ivK>O{+vśpx*pA*QvPR2*lƄ_M*[,_iٔ.`{2JOQ̿Z}ρ]OY [o=o0Q3zb2)D9ĘluS{u:dlY!+9\M|3MշNn'./?F舜&(dBklqZ*Z/QSMmkH84uPj;q@ ""5UIE#tqIe+ܵW:[+;d N!p/dξbWQW[ 䭷G8RܐXIf/4|} i9136BTf-Kd]f  J9[V?XP[`]"`r^'͚5%+0j4toRDnqը (Ľv}&Ehd xT8¬62ރ*˒ n Ά[pK+4ކ $pi ØPƿ Sz{˧{@,02{}rܪqawpZO#l$ PS=G N| -CK8Ϣ߂ms;r qZ'w 8$Ji?s Ez _dwx aňr&X*orEhkq,94ڨ5}eu4[+ PyXf%Ė .{+$J/ E&wb̙BO1zbcYۆXw$҂XF8 5ޡd1eqG-E H,72ă'DyVZ۲!-ީ9r< zp95n-O] -TK@@U'O??3pu'KwP.7+^cvT@Hf*7+;nI@!r(2Xݡi.\HFӶB\bny}zz{R[9[k$(~.3xJb'~stWBo4&Ii 4U`å *L,d -D1zRp{=*E;ܨ(7w7Lط׍/IFdUq=|/Դ e)RyHZ݀в_5[i6I5W*chnn|!_ P\Yl2%G(lU|ܑ:+}~(˫Vh3wᮎ%hq㛔:[cά0Vl+-9N-/B@FTWϦ=P0Gk@p!5&2G9 b6RS?cqGG? a2b@*1'-U|o(GI܇e/žau{0n j{ڂBDnxFHip][u$D^k˚w"YV\?wѣB l.p:]_qN~G@&灲Rbm|2i 5sY2lmC6@qN6 6^_d,#obL\N_VG`dØWc(Ϝmި-t?ƶow^L0@ߵlЕ #!MNu\I39}#7ggRa샿30wҗ:wП n3M^YxKY oh2#$4پ'\ߍmpU6o!W΁&ߺ"4ǍtLpo9MI ҩjpޝzuExaCźԩJQ* &D镪=NʤG]2KyXr,qk!nkFvb08'/hcXGS\E}:sTu$OAaOLrr) _].v?PCF!3'G`0wk̺>-/bkCYpn"lj`cëZJ#طT Fbm:: A2sg7.F֖ F?'9#>Dj˚^6 #ѭ~9d U4Ǭ >9}f+=9Y!C _,<Athbh X;(1hwBtJKGU"rw֎ =c%!}Cw*D]F7Ȭ :)^buq@p8bD `e"!0&@; pgnNy-H Kbj*s:N+uq=pATCHS{*|K;/(X!ڛ`*X_cSA:n3w2Z۝5=CV3LlÂvთfUzLԄkQ?)DuVܥ45*rܣo%n T0m:~m%#VD¿]GwӇmFo,M?5D}7Xw﮿kl@u<i_HcQz eYGM\RwuW4#rh]%).hwH+v2PD^:f̍s_׀ooGx&$;{WK##C9O>!5s^RyS(RJPgjyQՌ< #H܉07<6ḋq4~И08ll3Fޜe8(CÁ"D$#hweV̺TL[L6Bnkj 8sgŽ S-_FIrD?6&d]Mp@2G)ݛ6xw}%#zxXa~ BMߘ2(8H.?ac3ОC%/.VYΒ#/axc GG~J喀Hav|H4(ȒLk^~MmFYGOAW঒S{x9iZr"ίVDOjh=t̚nڞJ5,X`f݌LrHf]pn+.7% bP :H͡*5Aάe6 =fWi*IЉ#2.<*k'߉Eԑ(yn~Dpom' U1WziR_g=r-T(1*yH4 MZmC$u?ARVoѯׄTǟ!t۵>ܹz0N`ao\g{Ey2nkm3Ka|@?Gl#}{ywT! LǻbB橑b1H\-R\mZy?)r:03TӠ-(+&''H+ `AM5Th;ssݓP4Cф%FFG|HÄ@a8/{WܤZolV2e2 9:~SStrtmF%$jŻۘ_S/\n{bNi/FA};I$1 yV!F۰Yd@}_Bp3,ѐ]0RRĒjI(%ƬÕ"?oT c<ԛ]s/O*?ޏX*҃յJ6:Qibt/~|TXuFp9-?>*"=LBF/=Jc,$ [^uBK^͑WH3nMjMrdf!$ʍa#V;a="O'mA59U*Nd.Ņ`w2nEyXzէ~2踑$ݓ$3OS u!p>ooS )e\ꉿ okkTVQG<& 'eʮvXM/5c<eow)l/Ӱxyޫ@&k,#]H5 t}tm~)k x=Q-Jlci*,SO|C_ܭ^J]Zpl19h>֖Di&spʁr]!p=YbB`Sp׸xnH%;` `kJ="$ ?lfj[ X6ck8ِݑbM?ڬq+S׿Đ.얀,x@*VMxW`8wVfݰJLL.ʬE/ ~|89pi{4>Nγ"XTFE=f2V{Ϩ ABTVFǽt=z_(BΠ7V=9nRjruSe(ʢYseF*Gr0 y]KZjv3*ԦtPht$ʁk+:9 0Xc\)D-;ы>!_}$G ChфXi:hTjt7b p{f8NejV5t1sـlSׅg;i[u m߫[ׇ a]uYI bk q}waG`dS^e+>טwx#(?!qb.ku4G#r@Y.`)6m]E1yzӧ,p2{ ?eޓd`Zi82< [UCZ-?3:+~Zf͐,થCHmiQ2>bц/ʬ;jHn?iZ{voZ9-0GB4'@83  02y$9|u0AEǑcLWx.$ZW<9v%N&"=\_Uiouf g6UB?{/ڢ1UkmYU2Q Wj~P**X4eSNv+)!?3N`q\<:܀8j,92wA$5=D5D!f)}&ϰ !S=ʇ(15ᗮeβȂ_{PŢjE#[P;ˤh|qx(FjU2f) $V?\)fix؅.K#Ń*ՌmqUgg|f9T&Lʤ lgֹ^ ƅ531[G iVuѣ-z)Ȉ:ɉF<5,R]0ϺUY1"*ҙ" p=7B5k0P&9tv}`hcse1߭W~AA#:wD}(H8yb1i%΍kkS&{T|ڃa4u"پ:k5p$Z,XU*ިAR횙ƀD;ƍY\2+Xo_b]=R ͭ;bqI=%V<àьicO9J L|vf40Ҥv'b>F!)]=%tt[ȗ$'1FR@%5woܘ72{Fh8 p~BҢLeDV3WgIz2syW:# 8S*g*#FRxS3o Oaj"=˭8ϣUifpN{UM,]V3"ج}¬9}\XeT*TZ{`J#`-pUM9"=^vP{IFMk>X' .gcD%9"ģ .?/g1UI%e4nc\ 5t7eq 98ʜg *OS =`39^j[QH-J@x[7s=?{qŸޮ4 NU](P7#oV5qS{ ]a:cf1t%† cɡl\4Dt8k7bڂMeϋ9IQJ$uei 0AI!?A@w6#R"W;1y ?p^~Β~J:o=Ĭ(=F ip%h9ljdе|:;hUi߽SY9L|S6s,<{ Sb{͔iA(sv| 6Wa-7[NoH־P)0#U$zaviQ 0P[mXDCZ[`TL)x*$q>UJh֌֋g'FEaR؀)F)3*jP-NZ?3) ӽ|6rCB(:Xٝe wѵXԟh&; gX)'*EEmqճ3]#捳~:wUwC ,+nZ,D Kx6^Y\N.:{0CE՞R$^R?< !zό }ɈuBUֲۖھDvX`3I>j=+E;*2ᘪ3s:Y2.{ ]u(ȩ)چb10RһpD$= TxN$iZK@,B-v?0qG4ZҪrT-Gu<'00Y K9Gp^HٖNk `<1F$$J_NGhϜ95}=oّHErsXs5I^orE $abǙj_M;UY!%Gm e{d\:B!.Ti.5v阻UYQ4-喾V9~5/d=/v@UHhEӹ+[`4 t+L T?$wES1l78nHpIy}_&=\6r̤xCqNiLf%Ecq*o&:l-3z?ރ?fŸ#lh!!ʒQ+'LÞm cY#sy bE3Gg fu>s26g'ULC\Gvs0S..z qII_ǧ/b j[7boʧl-T2t;ކB4m.q/)R l#5{CB5;F6iGySܦ'PN{&#h Mᜋd6c?|Q ^+{[CP[ܴ:5: _s:G}Ev3_W%o}AHZp&eJF&a$tmZltQrԕ~Gwv~2W:h |$-QzyC"W~x\]}W!rٝ*mVT'D26a'FZ~9H_-ohE~,-LoD.gj.w˛Qg{e׬-l,]z\q85LM⚐O}i̲kiCHŒ*zbdDE!Jqt`ˊ:, 7*:=zbl2ǡ١n(_yxJXtmQG4QunŻ6v,uM1M[Ȟ[PA}@ysϰtP`~{襙#G {b4|z_WQB8j^KZC~,414I*.ɆűTpKڏ.!rd@O9"mYktL tF[-xHDVQh:Uˉ)Sp./IXS3 ݖ3Dתpnae%oќ(I u/NI" 0 j(?MyV Q#zƖW1Tþ2ĀWӀl#͚;EЧ^UKx]!BqI]8ҿWL 9e!5zC{`eRRcZ|it&vOw4/͍ٛ." +̃5gW<&^ϣzd5(nPLrYH1A\#D؝W jg%I_"ws\CsTB]LJV&ڪ:o* A`_2dU5=B4o׌%H-O:?@a0㫇 )Ao-puwUc|[~+'ahI$'l0)Z؝pv͎>ѕJAХ=GcP"VO!:d(.g=I!>eXm]hJ"뗋U3,3̥]5d1͸6EqSvV1%P1bV zVys<AfIڊXso%حB~f_.Efk%ѐ ǟ0r3 Cn-Js(;kzOGK-Vt{Sm5+>"ݾWHbLfVj/Ai4}vGY6aIN޸;I n6a+{d ,/;c$hκre "|͊$jx(/:;{yiɽ4 71  B%h֎cmi I mfip[<}3[:x[ 7IֽzLYV. BdOT`̋X !wֿGQXPKPul+PKr>Ya&M#/F;M}7OB*ON'DRZЄrmx|z^O=ZAA> htO<-QӿV,<ڌOښA_JKz#0 s\oӨ'?CөFN 2ùB?zFڑ@KMjlA8chJVM`ÔoNU&vK((|>X9,cK "' 1kDpFYڃQjn$Gf`k#={my$ZMjˍŁK t­SAV髤.$p4m]olS\at79(ev%+ iF3TAXrpu= YB>\9Uݒ!OER$93Ӌ=Ec,} RJE7WC<ߒMmnH4y+ԎTvZ,V8&K"?&ĠA`@+M\YѦB2%5 yčJ%T -,fM ' KZGX%F O[`K'9awBo 0D4"@=Gsm#h8%2]弔Ҕ;#uEk.䘟Y]:/는 NU~NИ^Ñ2<4+éΐV&V 1♶pL0mJ6k*#džʅUe̱w,x)P`߳IQp ``w0,G}"tt?u6KzP6cֻ8;"Ƶ#bQV%50IzJu`~hbu|nߦG^3roމB -]$`Jg4 !yZ ҝj5_(a~r}[n h0! Ji7מC`;(eqo0[R7L ,ʊ I'!b.!ZC_N)+*Sл062,>2V,u;XCCFQ3=e OX,8zM6,A t QLz2ݙiT(ճY0Yq62iy@(Lmf3=? bcK~pɛt+0ĊG9AogCkTb()TQ}8ƴ'BF!꼳dwߙBYa[\⫘cXx&`׬kgn<bVeX1.IHK"Z .D >4ߙvfw#JtOX²K]Xb{(Ln(lMŜyP=h\gᙩOZB=̖kAw"lMRݒjF_A{'IyZ_`^7DPx7^U9V8arL~ /UW;WylKn?@;׀أiIz'֨ٗy2&w-[W1fylбmqFX#9ۜJs& 0VJKaraڶ^(ח70jTT=2KB8 t^m)x5|fFEH(\4Q[X7MH޿)2::(Z2fuRT !V󵋉VVf\2kJ1@r(@AKgjvnm(,Ou;i?!tm_^qt'#T3J3~ݙqMϛv8@!7t*YM8iŠ1;<Ίd R,AB+vPvQT_eLVօX[Nud0ɌO=M)"G(tPcpm~9udYǝ6JSrySQmObl%!.0žЖ߷$6PdYA:EXY4\VȫPe0O\L w~HD 2[>M!$32lRYsyA(!De3IJ\b u%#^I"u-+=/ЯRۃBۇl(4^~;#HRwrnm]".s,rh 400UV0'0R9B,q-wq X\KSlk9\h)Vz9l[S>z#ܻ[," n_$SB~&2L*itc%悺5S i*<|ߘ_}iAZpYo.w$Uk\.?-sKlzCbVbmRp:tcgp{N89)ztk[ EBQDjfzΒp+ 'xț`>xkS`ڴ'îFaq'X*QfJk-֌B,j]][.FJ͛5/zusVHe^҈*/Top9Y7O4Up]O1ŔYFPJ$Jo }}t_lP]XJs ;N@xsO D*\LS=,z֯;E݃-zL Ǣ+8ђb8ϣP >̣-4]߇VŰ3%_X""U؏CQ F=K`e IbYxoП>H)*1,)vzuv-z\ H=s3mϤx3YƵݗIh{''-'Cp lʮ9CzJݲǜ)9<:a`+N^.(tDwLB VRDuB#)CP!Wچ-ZvkU^s89&ncujtSV a*Оu/x:գ| MnmDN_QbXٳWn.2'6̇"{V{* ސjz *iH.Gl%[n, Q;% A7CRӸ?ZCb2fdSsQH}m ppEL'I*wӯV. LmdNEc:CD #h&r1Sdp%L+ҟvc"a&2GM },0hPCQ}zd%8(QoD qZo iEvL8ck=Cܡ9e߬mH2V0,cy.-TMqw)ViXGo$Ĩ1V2-x氼\r45#֮oW7(|tJ?&Ʊ'jhLJ'hhFۻg!׆Uwہ)3CIu+]ʐC A Ɍ ʍir;ʼH\j &;D^a!w RV9zf7s w0_J יRBRcoz4";Pd/mfC.XT])4vs-7RM+%]g Z]) 'J.UHN8%9zMx!SuL{˘s(pʚMV$x+靿~qٴڏr,v4bp א]_,unJ ֡ Ew!2EuZڕ"X]' ^Hlڸ=xK^sV60'%;bC}/ymc@c+ܚ2y;6D:R>B»Cй`PJ_*Bon0tp{KNUWO%5+bZMl#g:MB~L{Ƃ9;_Gp8(y9= 3&`bX>{#S (ꀝeYO G͹kM%pw˜~;y:9(`Jk]9mPF|wJ &pjK{m\LхOU7<ڶiy)τbFt'"<x\ `$%bUk)f O?A}0Ц_&8LT,ҋfXMykBEkv> !PD;O NX"zK;iEE?+1{1WQ5\]@rEמ<ׁdI{-i~4``;DiLjT%xeܽUg|]35؉+@Ag_T6 ]ƟzC$T˙]Jp}A0ɢWΧ%]O:E3Fjw* K^g 0sR@LA:cqfBJY{cߢ|K@r,>,HJS!=mP0\)4W 9Nh $r2+%I~kQi&ih_6}i+(1/}sZEV/4bk9?|.4* K//wS'-Rꠁ{alT]GG9:z9j/Vza!t'l-[~~Z3C7.mKnOtI.eo\}PyO +3cÒArfԕ-@K谏 9A8OGl34G-^gX6łt<*n* JZ%VeE4]imWF# Gy k%b'4O]`]"ލn2MR @~E@-⛧k4>B+c8XFߟsxy'p|[˕ved yd=&hqLl0eȬy[圏E3:X f޺E^#E䋅R7z+6 Xgvt5aދ Y݇XѢsv wO@lm3>L^;09 I%'_kbQXyX12_pU-8iWuٓzz&q,װ\]aВ^mGOo"iinhJ lݗc ()N]8W6̟/!mQ?vBӤ3ۖҕ:97xcNB*)Hbzл݄c{! ױr:?;s) {phDlU.JF/wdFF-E(OcX6S/Y8r ] :ƷܔҏqB>7ujA^̰>tl:/\ f\b̠J?F[ɥJT~:>U`wd ܖ!q N 4HʂZ/򂆁C//e<4GI+rÌ6wcM }d;W%T5T4K-81D@!x\hLI}m' p(A-BtToMAAxMϮD_Q6L)zaȕO Vh*RwZop48qr,ntC<} ۮ 'o &ηa~G&h:!l@{%mc">: .^Oy?N3tkּKkI Ô&x|>O1x~gqG42:(:bID.=P|&+93?4+ B<_ڎ]0jUwWoɽXګ+|!gӍ۹)N_2?a0^%HQKny=aXK ?WjrEЕx$93/+U][گh)bK)-Ѿ1{|ZVrYv:9LXc貴]UY:elL;)(}߬Զm*Jґn{eq.1 PU=zrdޟoTJwKIr`y))cn߉W},}CV`5WZ\Ȍ7L/'= ]kxG⛉E2W2U6 8[;k򃳗KR8$SQ?֏gCiBTV 3m_G>nE\3m& ߱K87`LVw=5`XK:8'4V{ <;.^R/Zʣ `aTt̸I(dQ}u(Z1 9Э}H쾚׎V\6 G$U6cA()`j0B3w4FN$1=Ѭ4yyjB"n;W*+.Ɠzy3Tez,J|ǏudNs[kvkE lモטbv&ZRkiJQ ;5hFwNKT񩕟/8e.Ȥ~3ؒdكХ-+in9ҏLNhWS\8{pr>'w! P70KjX6EP%k"y]e|=HշطDƮe}45z}X4ҭ , EgNN]lX#)G0t(bs;UJ/lD\7cuVbtRw6CiѦd_ zܞ<(m\ i{, <^B0%̾޳t,>ޞ5Wl݅=-<"QIR1aK3a*81()>%ǀdp,:&g4Q\%(/kbȮ yoLΛ)h!  hnlM.[ZX4s g[#~:7ڃ06ѡqnU~p0ZrA'.Q(M>5-LF6={탖 iDh>_Y&&(R?p.aK3~狞/ iI`͉Z(7~'C$<Et1( i~ԓ&(M}h!y=gBs"zIoQ|50۔"Pck}jHK ]sۯ:A (v}L 5C4%o(pK ^D NO ]ŋ^ec_BO](B͔[&;U8UFh?/b~jmZK CaDs$SX”\[=VKXe[es3Ti~Jalm6`~md H{S.@EwP]}o͖AǠ\z[%'>¢7g3כ{J]z!jAnS{;b3k4|Xj7TWgdg()&VHv𒌐*cv=姈KT:,NɨkFȋ\vJh!U67)il?9qMK~^QſgS!;.)✛M^GxpSPZ))AVnY8MwVޜYa7xZ:!gD`[א45ZAG}3YfV7vEc^҆"E5 i+INsjHZwk|mEXm8Ssvk2)^jQzNMY=V#ڪ_QPxi(y@EU7 7̘O딙$_,'mZDyK~㠌iM߉,>Ҁ;N邦.+wr腘Pk 5A|SysWڶgï N o k w~AhL]Bu|򷛖{ A6B)R理SѡI|Q}<^1#w],J=QFɑ(CDナ)ֿl>ڬ5]nOD`Mj ιKK]90v'-p\FvL-7'VrǃY9`>coA9<% ~OZ(Nþa:hKw0P}@1"նJK6i⺉X .Ҿl}+n:9Ad2 9d@;bF-rPwi bJG=IJY_=l'N3t$<:Wӻ!96ŝy凥nL.Zݔ>P ;T"> X*@< oWݻlq<'nI@E(X3 H[ zry9j[sID TP~: q=ZD!}l,>Vw ɄblLlMR̸ù"7=KG߬noZnrvWl9lM1E,xpvSozt[bKV̈(abuYmE y hdơ5~ƗE5#5 ޅEBG(U ʯNznݵغk7_wZ^6G&1}! [sNqYp|dXߠ,VF#[-$DbOOI@׶$B \gOk>H{ )nOYW_;ᘸ2%͋*a[?01j~&<{[~JW,cEwN a}9PR`1x'PҎԊސZprMJam|6Ē ?97q~Ë́Z٠e00z@ma(իfS9Qk#Ďm ?V?^T=RA.ݧ vyi+R:esW" rIS,w="R(+ z*YQ)cMrz1ϏsF-!$Υs@ajh{]>lөr9t~ l#ҋ{B}~+%ObX([T9] 7BO6{bSH2M5 3n9f':"b_*m˟OAB7qM1[Fߟ$-m~q 5^^-l)l]lQ%d!DxCJ mmyBMق<UEdϤ?~@7;{nEyP=T\IN|AХw-FX,Њpgx:|^ <N#G k7/ )31p90 m߇)|XqD+$KB2Q@)cn {Vp<,d )|-~bBE\̴,tc{ӗ M O+̈́F6^gw4GVI[.Pؽ϶K)ù@CiP򟚲{s:cCN5Tqgv3SkG LU:lg 5Nd0CpmuD5<,k"hBO/Vt[ԭn^>DBzMЫuVdř60eqaj.rgn×0 iJn·Zyz8Kާ7uR#ғAD4 <Ѩ 0ǘ1@7u~\uV鵏fJL$e+'4_]]c.E9z{"2 a,%^|ei<6, jEQ s"gCg@NnN7 IpWcAG]n@Iٿ\O̴evF^Ý F"0 **l#=i>wm䲚1QhvcgwMǿVʡn2PmTCj{H7JAJ v虄 `s`r_iL!+~7e!_OM!i9 3T !gF%N,ӵy|D,ᕗR=1gCXTuCܦG.:m9AM/F:V.%RZ @,?iV;ZۤQd!=:th-)pמ'BE.PsAػB4F]D?h-FphgAn9&Ա30.~]׵B[q'.flP&% `m7zQB @ pvlmi$0ziKm1lDޭlPO髅WY^tF㰜vU&3j4Xteo*&|p}44kaic^5|,&Vk,0gXЛ0kxnd]EdN\6UNbzd3irAfsWv@3|UmkfA⧧v8hubtB%i?JqZ챨)K3t}d7?{-*FY\䌾]s_`i{"ϼY. 0gV3p'Zj<r+ܗ}AˎD̀Ay$q,4!TpUp\(XKWr,z~D;?@FZ=pE(6-X7*֌ =eiu 1eudZvil }L}(+SV{~Y@R =s}ڼ:{otPO)R5'ϐNe$tUaŋ\;zgV5 "u(WbMۧXN^c8;G@^ .w&@β] E[d>Y3ȏ0}:'0ss. ާ@u,E0=p5攎ϲ^UW~[@A޵P@ggcp|˳ʃ9M 6^;%bوM!|O5_>5Fd<'Wi!q܎' *'I{D`yj!BA:2hs]'raӠ>T`s4;լ+9љ(#@!Ed; =\Hg!\2)lW1gmr{bE!Z.>mݼVG\UI: s=~AƵ~;r5?H-@!oXZ]ݨ̞^50"d)Fu&X歱BɊû3SF*Xvگ݆<nZ~فj@ !ƓTz?vx&nBk*/3` 48~AomvS76IRQSڿz}5)݊œykD볏Iǿ_s4-AaJ :Ԯ~3ŻǞi2(Mqѵ`FF(XvA̤*@vm;sʹ4ALvaF `Hd5VJժ*]?kfA:K\wpbi5yqTݪ6j?WƨMncvVI ]҈J>m+ථǩmƒI/ 剛^-s/̓XVi }h^cX>g_gaxrq0jU($9ݗ؈,}jBGϿMŪtn,9 S$SDV="9a]BhMݱq QL& bFHAv]szcX_ǹO8pzu0 ^sSz%/ 3K -{vT.yg#9:"Oq=#4-[G@T;R)1,YKS0>.nʿ|MXLMm`ZB~y1Ҧ9._EhWŕ5zbKmq_]k EB*-?0<+Y]l UH`HbFKg]Bf*-ma AT1؜R9:]fU-A~ 'BH/MZ)܇Wk7?G[~p~ P b|Ymo!!&"g"VHJ."s{2i3R6d`djg[Gr ?!\JrVBϏS U:o٣ee~ G: `mڞY%ʳ̂LlMV."5IP% t5RXpdf+q|R6jllp4"dOȸjHR.EsY#ph`%AaX*8";,-z5GDAI(wnX${x="yM^} ;A$kO%) _fS!-v90m?SfK 63S3a۔yaeh8:%U/K7#a([T9>0y!cy}cO,wn@di]sL5[5!p%oD9]7 dj\E,BʀȆ2f,Ƞ3<#e+,upQ)=j0y3F%=_]I,TD^EnpNOhݶAS˟VR |X[;~#kPx<9v.pP̳9]\j1$h&.mV&ܦR8{bKء. "RݠY3+3yS,4TFm\o6>fEX-*V­$T92ؤiC$TM_rnTp 81ϝ>8+13o! b㬷PE̖Q`GHtTFV*}  _ tb2|N]IDɢ@ ҫ'h4EݘF*X'凕^",mEgyVSK|E3Yr@$R%hE{XK|5X#A%:땾&_}2WD-ǭ4W 'm,>dBT@W)-]*L_{'CyN']_ƥs% %'Y,>?ű-v[$@hsu҉³z6npeJŦ߃Цf_hh\ 0M1z%nϏCc>C+?rl˛$!TS)oT{*ɷ$HP_$'zC3hhwe8R#n9/u4"!3cw}%r ٵՓ7I*w+!^allAH`{y`EnU,f4gyVK o263f'AlU:~Ucwf+g'SJLӾ>poRԼ&V¡U~tMv`+&GQWWiX '@ u'xT9v ߜz&r)0xGyN6¹?t4 /܈; 3-(Z9U*3(΋u7X/6Aƴ*(L МV [b#_r^ȹ%x]7\eI: _#ظuyOX*HP"5}ؒ.wh"RVLH_! Q!P&@MP'١ĴV2yfl gG&H_8rsL@W|Ć>ĠLGLu>*XpldSFX:QDY{ hgp{}̠G׳Q-MPrD2ܰP4(%`t𞆋y?Z\9 s+&¥7GfpLFk ^2R|_`+hGF+*A.U/g~Ù#m5 5l X"c"jfq1siE&nc?-vwsFaݎKvϯOF* ȋQVuXaSfa^99\StL3`7,E~_ā;.Mu4T`,O+<2FCR2ܮ? >{KN4R-nBG.pz~"ly-e0~Qg) zh%p]Ÿ#QABBbDn󣼝#gC>8*PY߫z+gcoo@fvUyْU]/^uX'[f*&Y"8oT?iz} O">$z/Rk4}LOjnOьduɎFsܱ\[O_0+=x1#].bRg|Fa^ w 逖a.PcA'*0̊]]\?5O pu9U }"\G Z9)ķ q2NpRϑe-:6BmΉլ\/PP}&dHRoaNk)8^7p:r@CV⫍zx?+mOՆbz$4rLhNEf3FCe! n:K 'r0ԋx[i PP$ Ү9b=*&nL y1yPθ$y& 5Mlfkt{7BB;̅6.\z=UK0nO3{`k03.qW0:0 女FnusM'_pjV23H)HH**|">hy < ѿ>8ay7%nl6ÅT=o"<^Rs^Pl͊|>8OPK9=eD'ksi:44RZdg[$(̐j{1#n綛ȽONs&PiQo:~?܋ 3VhIJHTƷ5yxx;xAQ]sNSg@OJ-﵍gffStT~%<7ơWJyWQ+x?y0l sOW*.1/qփDwl Lp}`lsc8 ~J?ѢI@,!S݃ 4,zɼXu!ڲ5 Nѯ@9KA.-@xV|ǬpjztGir-뱏& O zH#Z2uv,so`Ә;6`LjPG>blMQ-0>T&{{;6`W_߾9k' _[`WRFUw؂V Cl:|Wd%/0awB)Q)2<%6%,fq="N'@ʍ\ ת}5b"-}qq=rvo~|g׷F͘T{) E?q\L gQ(F(?;%ݘPLKj\o,(ñxؐnrB%U3On=)-ipmgL6!EͳV(edx_|DL AF :M{`Ca*@B{Bg\z]0{81Mڐ|BA8N X5w>M 4UwDJ*`O o,ᾜ;.Q03hg}-J|jrڙ@"M^9iQƼ#xC3y{u0$f "ii򱺣ॲr<&XFhq v]FK9MT4 `I?L9I\*?p9|'&\^{ ;b>rTՆ)Ū`rf0,>#11]ek}c%(֋ce7ƾI:Ļ[@8;vLg?X?wncϳhdzȽ7R_umF|z?DOi7IƈgooU8U8[9HaQ ԣ"H*x a)niK l2>'<[MtUZߙpšbdHTv+=|qpGT^yOM.rM y,Z25ғB W\UMgx ؄ 4oމ&7;B ڍ4YeH>FEFД oO^vGs߅qD e&:EU^QkF>bh]55rHxgM$Kʕ6[,DA!egU*ql+Lwد5Pi`c5i6OxBx=:!iNzةkktÕoc`aWRS6E9ၯd*1i7x LUUu&nn12 R.3"bWUYOݠ#K09"orVKcp صUa!"ȕu{! 32e f]M=[V>\Tˋr" vSW^i jCkhT<E,S8.[kEHeWQ4A0 !SG')6he[}z(5Xj:i p>˨DWH;ޕB$nB!y@CHf Qd-P*&]LMxi;_DxPjrɉ^E%x J`,0qa0\Y>ґF#W6fц3GߠYU#EwB:7eZ_y.q琵_ '>=c\Lg&SPT=ˢEO&ywK>6;&$LX9o+{`N zbT-)lu{&:`D \W`^!cW\GWjMB_\ߙh\[e ։lȬRFB\[:>fa<<@M"Un>sc^4-=Y쯪ֲ;qqXF$Lv1:(5(ˈ_r̪#nAڇ0( LaXM|! ;Hfqe zEQ)WD HA]}B5q.[il98 :׬'5]:}KGrA]Er1,FY:'j=q`ㅮLg|z̚2-oEA1Ŕ!8CF,G/Cݍ% U!9KA A24c"0P¸=ądؓ:/(zTq+Rac3 Q_*#+*\&ObRlL;9I4ER]=Њ_Cڭ{0K`+c/PA  ƯO@胮~k%7)nt"D:f2W'Iyh$(;Wq\0drx+Nw6B p=#vG%Hֻ>ڑ܈hQ[wQpoIO*QS.1Uރ^Lw.I7  VW53HEq#hByҘ}d 35Xt:A$2[nA۪^$^I5D˧{}UVձWR$6aDR9+O|ƸERBh"eƚjIOsG=ҠB+})5%|,% Q?q(}E* | [g>SZUh ~\4yt8hfiykeq4釀(xD1o-'Cd!0cNA8 خ뾹e'q8 T@ ߲5)U` 6 |Ld6B1NRQZVǼ!g&1Bi`g(c;'$¡9nN 1/ K1s@)iӚ`Msy'VǥqEK@`Co#w͖bp`d ZPmWd54l)0eqJ/iaDT0dXzNͫ9e 0_K!fiPW3HmV  4EI!v RypV0gl46GH 8)߈YshXus+ѐ [G%1Mƒfb|f}̳Ѧ;(: Z:hV|D!MPmB5q5&$=?Y bbaASJOBaxf׭ 4_%x~FBZ,^Z#|` @Rt,i5tYM1+VQଏHg7ƅ/?0/ *$0bJCE19#Ey]ԃ޼ \+YQS`XȂUpB c8[)lIRj8 ւ-](( (;l^L^Y,r匷C*F-7ۆ4 1SKO"y k\+*>%%Ne4sf@xZA6 %F&g@uDACM8*n{@7nU(#ҞjNp;k\! 1!b!t*a֏~>j>T ZmEk a:tz^IKtq ̰$a JYwc>MV(SL WTh"w+Dp>N4u^Zg|Tot:b0äα$ty!BhhLWRGܘ+)C"(TH6ەƁ)igUg-2 |[4Mg_rkn@!w MItպ;^,oV@AZ58.vMej+>ea,^f8h֛dw5!־+gb1"Qie^*{N0y<3t2=g߉. .݈+G9֒SA#9xYg&" I/1͓ GF4)C R+uy%be4(θмYK*|q9͑C[~Ab9 x5ꘕA`3&f$M oe?v-݈' q= QLuhݽ7YIzkO)@4cLtJM8D (*5uevpfēҙ7av$K>'.d PXYȲ:;0TrGT%ܲ:}O=>/^{ƄPp\t}2Ϟ~-uÍ$lMQ9F陣Hp-'N0TR971{ ;*IPFMYH" :69 +6p)e14xhރApNv ! v O?LB%ncZ) P@N\%EҮ͇?nT|Ahi8xEwsb R٬o\mCavJmrƐ=kh D2jwqn$Y=,3vN pVc}mџΨⲸGGFvn= ?dբ>)=ovy]/B7fu*`׶`h-Ep {^cŁTLi&@[/6*x l')Hv>_ߎ-b7:z֚h̉-&22jX5ɮ Sq@ V>5%*y/UB|H`R5~b\8!ȓ*&jTGKe'O k*-i#22OϓpRK?\5=Ey},i&&>MIt$]aj2Mdd qڵj(WD~/8Ajy rhX*#I~;T99>!QS6YRXT‰EE| ,W%JY:(TK(h$seUH fVXUaV\R*ThQJR9FS9ou& )3u^ /L8Oxv_U%}KuT?Ka,nOa{,1gOpΠ(@QgOsh)x+SiE='^uZ"ϔ~N^.<#N)C~[e܊][I RY 9&խ # j2^bK7T|UBdsQÆ ˖KZ/7:9M2O./:LaDjf3vK*Zl]R1A1E$#H%і8kPuyA#XeȮU1p̏zc wӐYr?_oqPK_3+B}@r%t}. ѕyXrs -ĊNjmJ11L<Թ"!r\.ר-J8=8F%J퉣<^݊17 .2j)]==9uktϽ.Ȳ <;E~Iᗐng JE&tn6 `HjCnGK,7*TA'!*i?拒ERת9)&Þ'pR҇la?L8uRBvõa g_O5E$\$;$u񰗚> 8cJrj?7y“"0#Z'ǐP˝#q μpb`EnQs߮ūY 'Ayƍvm:pTn7vڽ/0<+ιטdmxB }_q3 h544C$W JSNd['r R~U[FJ%+= -ΎOn*ֲ[iJԳ=axA!(e)#CQSQvѳ0^-uRO[ߙ@C#fV*O v]䈟˃;D~jz 2;uF J7CI.?iʂɆ^Xo_sLR4p t ]yA̯Cqmwcث! l xʞEM"E cJB_ Qv| ﶶ(>B|Xyt93/GAFQ4^/^8BM >gUwq6fD3zBC} %y޽f ܐKHMj45*#Ym!$XGM%4h~+@&_S}ӘuqXnÏYۦ.]r+XAllh4KL$Y.E`qN 0  :n9e[LΔo6{DǫO3]!{XyaϺqŰ{r,J4i 0q &Kuf9s,[? /9XWYR_azڛ*58P-Dh嵂5X/ yzնRKۂ; {sjcȅn 3hB[:4Y D۰CԵ';x@xji?RKgif΢n9Gf(%.BS nS"1?m/RN팳;e'se,2RLF).270$Udvj:vn\_gf\UQfz { .s?B]a`{2r(Mv؟.7~HC/'QC.rmkU5""alH^5Xem_cV̈́;`$-p'AMP)Cbl@XvU= rR-($ KÓW6 {P!`'KFQiM\e,Uwzt4{VoyD]{OmQi2 ͩ!MXS>ddNSEXzL%ŢQx[it% MNt'd!]4 0-M4|!6Cb(D`:b+)ד([$'y6p6ӛ=8c"'˼k6/hݹ1ן68XbTY%[zMYI \EгFzP-)ɝ GpHOwG:@FD0^OIQ&Gk5cD֬ DBжXr/Z2mow!K&]I-򬈵oϿ~@(qXU&n>cW\8nJˉ4̵o9]$Oye`dnL,\O1,UhJ}DkEeFqQݡ~Dz A]!ӈKykw.*R! 6r WR]GOy.XrH2G۽ا8 ˞$rYQYOPӴ63QE''ay e:pq؅Bj<ǖ*HZ?H˔W\{㉩q %3br+&qqN<8jЉ F}r *ϣJEX뫫eg5dRԧkט(aYc?w~;%PlAYх+_ҹҡO`ǓxR* ]@#}D' R@WR۬p6Ui 5JiNq 6nӏn;|13y ]P[ yJ+HfdnC4$5+7{3>;6fvGn/!x >Uמ*d0P.Sn~vsp5|#FLM^]LĠ{e/d|lGc\$EDELldAߜ9(qo'NP9W2n _Z5fjaLN g(T5(U=|@[gHU [ ">aș;DI1t쇝_u\ق1f Ҫ b'h&@HxTfdTw!-A|!"GLeǀzQ @2ׂ Ѹ,-/Y(V2ALx_@k 'Pn ="-fJ@z,+>ds$qa*.*"ϣ'~9155kP[GAV˃OIc *+| XԄ)H=VLЍȃM#ԑBqJItpȽyjAo9<m@Hw!jJe#&ӑ#Մ_1Sj7?od$z `a D=~(՗XZj (pT[~*C0.k"v[p2N{i6n |1Nꩱ@#K 2s*}:FjNBPO&GllUK#ۜ!6 | i2J1>W kP [òyHIRCSXeq9@0Y 6[ J_CQ{:h{]!MHS,  _C7wɘƞҲZz1 >^F* Ȋf 1܅AK!D5?¤'naRؾrjN0ZA;ntԹl}A+.=MF>"s O@z7LX6 2QhP3hZ {7e ev2"+H~&sԻBv8nK@AQHP2'++$ZJBu'UIթ%KբϢYb8g, 5<Ʈ ᴘY?w.f9OυdrБ\:{ܣ(!rV~$*LpisB%"t <.@hL H=Ho]׸ 孻Զ`hU@S(NJV1kusy ͭP.X iZttSV3KQ:ҟ<|U\Du '}Z8W9$\.\Ҧ[g+}74>3m[E5v rw .Ӕx Ce 8@GԊ~}R JopyJzC/Q0GYw-)O'{pkItYƶzO_MWa"|S'9*sg(kHi.) K~L/"00#0>rd4o| In|V#+X3Q+߹kOѼ୵Ľo{ѫ? YN; Z:̴Әlave 5'LՖxaWwgYQ44LzZ~4L2nͷ{ }>̮qDG6P Vz8(EWiK1bdtZnwxx 歱P VIFADǽLV\YL#eJ1Ka+4E}qpR^mI.1|F!!tIz*@b6/Iqhҡ sk k˯0j{E KY>lF3JsQ&PF |\\Y>Dj CMʩOA^VmvF!si6+A,&Dˠ uUI!0@<}ZwAMXB%RLbI3G(*$S?xړ:|MBHii>UL ~l陃v _"ad+&d3JLXKk>St;[N^ {@cs \0֒\㒡-[#$zd2C$@Ԓ;ӽC<] f+rVoLg MXkѪ q+ST"w~yPa4R7I@K@[L +*]$iQf[;NfUX{OVܲ"7:K{]KBc m銸!n D?>2"=ъ.7l\CX9PeaOH#W a;VItFHj%#vwx,ڌda ߓ!_WZ7%/V?*-SdOY_ra24G%7֍Qy-,_Iw|w4(H>?y]UDXcGNJҩ\m,J_h:~:r&bdƑ UPU xmTT7^&gw*0WyyAd+FG!6B^D4r`HUUAh\..7!qt! 5ЁJ6XeDh:?n=^$>!c@Ki&Lɨzq. /@(m .ME}<NrZr-::;LéB.(-VWoJ^wl *7E lƚ5aWHpӻz9} 7}R 0chʎ " fUhЉa&.8Di[Oɖj#DFZ01lԐV]"nq.kKY $uTP{R1ГyTFT;ktoPZ8iws ̂axqK9zs"Wd1D!,t8v"vjPRcr˽[|m@dmɳuN^f?z.ZJz$`si9t ped$8,jeԕ׊Z&a љK<@mƐhˡ+zL~{;4F i%>Ij,P[ &D#1s\HS\z<,Îϐ_Z`U]8JܢO,Q[uAIYUq*=0F[gi=x1 $| +ܱOa[v'gu oxm+fĽ$ZLo)dl8-(2 +$jGifm'4%\E;9A&/m9[$ROM"3؟؅A٧dudE&8JpNf"oZ1x@BϭGn042 (/,koq Ju}uuDz zqXTA" \[޳]>FuxyFF,5m2dF ^-GnG;oHIT\+Q2>}UdXoCgSCl6РsӪf% bMҊv[p:-*' ,=Ox \>jiOD՜ҐA%LSX~%EO2@LxL(VnJg@q9_Cv|"=&^Ia915R%D ]}/N*OBlحY JD6rv[wne=e hTrw<m'C}} :yq7'*wSPdP%= %D n:6ylo w l5A!LGQ.4CvM]hy=ͱiA,Sڷ{6*DZ[p#CH @]!zt,n1ie:p4#$AF>1O"JŻV߅pAq\rz@8?װ!?0 B%2?UW2ć/JǕZqlR@u+:sAV`G5 2 Q{Vp]@ړW pռnpE˘T $U3X5)wH% b@jE+M@ ߑg@8Q۞9|'Eo"W~8 1"iXPRzyfy7ff(\Ў}i#.Lyc$ӶzdPoz-k{cs#&:GjJf]=otzKq+DxqD Syeq9^~qxFEHϖJ%湭NNJ)k958z'GS~9Iye&٢{f 9 +E5 cTPLyTz)&/ Κaj!?pW_K}i Tm{:ܠ/=ف`(AZ; J\b{ {~Ӓv`ȣS0n jRNf<|ޯK&U`Ly4Jlׇ|&F{IV-*뉶( c" `&We8J~rAuUFGGbV FJRQ ~C1Gv"o_?X-}Ke5/CS3L? }xR tDV .{닂@VZܜҼ<K0H;+p 곉#TcV#h*`w7oh4iBYjipr[mGLDo#$2U2G>%Z-C`C1\EH*M\`_k.!4>qU+n[U;Y|,=R"jE޹7ꏣ^xݨW Ohkཻt叴ɏ:WقS-i$ķVAt`s)u{%xwZ' Fod^H3XXQە׫X,>.Hmz'p~$bH$a]DID?Ք= 8A68>Y/ҹ>*8K06 |dWs.`7rV)<8.3 (\6LM`f)VhL jrep} >nB`fXRB'{6))U}I[?ӦԱ:[O"=aCT2 (LQ1OYy `|̤m̩{r;aggY YٜQO" !by"a o}l l*JLaC";.P='h)Xp>T?`1}<&1,RnU$\ė09׽MDM d;i B4NЁOs 6ΆRX~?[NifѥpSqkĎ/ELX/^ӗd/[͑m?މuX{:#{?i#?JiC|w_7bʦnz&0e:Qwc!΢]1q DV9<7uݪ-?YDJ+Z*<4DcCC =a)9K6C_vU/ Q85a+6rg{c :]Ve~ q)Z/:h p,pԋa'n >J45Og^NB JOtu4IlF}K p_uT Nzq1BB'u _ՈFrLwg-? }23Ձ'vmLZDD'wxj`t]idEfv&&0#gtUiuo]TGQtTlcڣ^> 2]#UkfuTv~uG;%N=erat{_KIm(nZ|Vt \§?^/ipaYWTOXMM."2jL'IJc93⿟,dq:'ݹoo/E} #Cy._Hǂ`4mϺY´!Qefj0Ǫ6Z?"2ZaЖGtƟbM*ud+!IA(tψE=:۶ 遧#_a\*-_t%1$9coNd, .,i TG*ÁNώțcO>6̃z6I\K/GAq|#W}FB#@©`a&2;4wp b-%W>j8MKQEyWEU~q߭& BzQGwAl U헠O ҉p.@^QoiK ,$Mھ7+Zymz"Q[Te`~dqݯB%”-1}ge`Ƙ5~5x+tY>:dSГt W5H 7M-MyuniKqN/sV Q7#7:WeR2g /dY5mFcHGDpg*yB&$/.9֒ Zu{gB pC%o׏s,VJ2\KlGsmz#P$^h'X'fLړ2U{:KHow ia_lR禖qNiV1N}r6?4506f%U|o,ɬ όJЯOmS5?>BH-fc/YZԷI e0.s)>>s>W-حY뵭Kҝ$ErGQe<xQ:w o՚Em#g`$ Ev~CI8.k퀩V<@OxoX[>mVt*Έ3pR *Ѱҳsr4[qh39 RvxӋ)}fiʉx߀KfDZ(סO>,E>1T $ ;/t=͛QΛɨ-( =$u.xjaRv.M0 '**YJ~Le9e'Ky>zFIEP2EwQCɨzgAL.M +Ķ-#ݢ# >.J\^(c yB O"%ț}LXMCcm؟2է`-c2YD.1rOXቫ(;~ŠMD=S|]h7 t-t䵚hSu!MXӵsyW ;\;yMIin/6Q;GL07A zy0FLgo*A%G0.bWFsQD7i`z"o*A~[%:fgs+eaC[{ªgc)r ;()=0} 1$OOW=lc*zZf1p}UQK<[=ղOd[+O >B1҈2hƸ" RB/dwܝ eF֗燄D!?4kf!I(닥8\<9AOrD>]Ҫ+:êؐ]a!61Rp1m _.dH̭|0t@%ULle7eUeQS^G~ұn`5|#N>W 3_]A9Am}! N[~ ,- cڗKW2'1$avLN+|Jz[+H?r&Q&Ҏz\ yZѲ#c o> uB.h^ɐ#%Oë95+h,g͏VJRʾ#~yIܠ8H][m4#?^6-]C*HzQ%>+o\^u'LrC'B*m%JY5܊Fsv{ Y~ŎޭkVd7HVukAu@`!gp58wEh(}7h%DL㮯,Ն|j\tHn6O|.T0?"Dlq=yN-W86rٶՅؓ9U%'Uҿ)6OH\ zxWp\dR lhznXkL)3oUBu)Q4׵ύ4CkHJ9hDky%Bgup bE5F0H"Oǚ[wKLI!˜G H%Ed%Hb9;y=<`yJ~Stx+K^63,,.^'dlБ}@꣮s;B- .^nNhBtHX NreϦ 菙iSyU%SGJ F$<pes@&LAwo^<+ SЉ1[\"a_Lڸ&WV| g_ zvQHN)aRsWuaB]$(㑍pN{Q\w"ԄA€w߄QeЎb:H&FDU3:;[6/+lshN f{N 5qڨj ~5>܂鍋~⾈'CHʝ $N1L&zuB8%mIC_`@b4>29PWi3j]5قzkrpΠ-j0kEJ~uIч󬖺4<5X<z>uf 盒8PwmSCEx{ƺPh ӎihDmJV'E ӥt@{ N@.WLb^Y}a|c83-v]9A5%jgJULP+B)`;OW ^8P !w*tZAoYN_Pwu#I"wHcP$J>B/i֓wa, oDR$Mi0z-;բea(*Gb~vv]xTpzC{m9=w@:c(sN4n-)z33if׌ {4D܆)`|@ j 71s]I!7Et"7+S5+- ـ#d8b;#:% 1H+z冣ivyok^U)^!fRK3t)sJثMzڹo㠠˪xy/> f>~׷g!;oq)?lw5=71aϨ໊1 ZZ'F)ࠃ*+55 XVNwSS7I-v?aD0R3#7^-SeS (f^b-oT˵E)a 2;ՁiwOƇ; [\9 tniC7qG"WG"-@{p-LG j $%/C-dsflg.m(1dZށ}ˈ3{ˍP(u @e둢%M^, FTnXꄕq@WV}ND o9:RKo[섪 A?N}'%9r]]{G TALo/cST(8C_AcԺԅ} ub^N`kZ)IRU\DH&uS0)D6X?{wLe4MLQ `$tU \`ʩL8mzZ<]u@NR[ ؠe4eWI7U5} b|R^9BYD*Qccαhc xB&VHc9:s3um#*T5AeXv{LMt %=*R-pP)57{4:W p]b. .Q,wf+}`'nfz4~5BpȤ "KR~dӓ5 >;QS-N]z1#N~Q尟=0,4Ra⽼׭ e V[ĥw,x'R78>f9K_rF/~4,5upݛa zV_IXfe"n"W u8=ɩdNɊh(vsm&We(v#rc'J$ε]}?/0+j< %.JwI] &( ]XwP –z-P&Nxя௿5~vrS5埾0sd4Q ܀NHsI]R㾉UǁVODјD2Q0F("aCd<(ǧ_Q%2vOsjKNܵS5wrV H&Pory.gWR$Xpvm[c5 ̱bBf!E۶ԽRr?p 7 ; S?R1!67 7,l 4\XM0%/9H G_%p[;G=ܟ%0c_1K+|W62Bg yԯ|RCd4`OU;SJImU FL eiS(ixwYgO[]mVE,]Wc+{df@5vxd}.@iM[qx1/-9OP$5 q`ddDwٳ2>CO.bxe~.J :=U(#JZ1~Z-tEuCpE?{s+):U~3 κ^j~zHYU%In̷I*y? [](3 C$zt! nW_}b.tTR(|Z%nVhZ>-HLCU6)s 7%! jș Lɛ"ڕ~Wo+4Ɯs@ _{LABzOLb2o$n%E<*60&P懥kO:|(7e?`ۛRjqKտqtXlƼ~ArJobVt7L֜sHR㣺/g Es PONnU\C"yթG#q,XE)õpC&_| ?Vt\ZJZHlΉc êQXb |8O+RWDTM T<;Ɋ87ڤV\6IaճuXUѳYmFfm\qRyHҠȋg]z2S8DS;5betP<;/YEDJ*YZf,z 6Ȗ[~fVA#0awklūa,'ם9h&BKtO]t&I1XĦLKqTX>RUH0SKCq@4榖C3jSdק"@c7yM?_ӴxCIoY"ðo`;TY?\XUT!M.8ٸ+3Tp8ZQU,=4c/Mc^ss}e[ kdŪ2li!2Jѭ*'h(ݚ% 1g4S3K2> HxOZz<WEzs~?G=TJValKPnQO6wqƕ7+-㹓~(˘ ]HȤ b1$' n?Y2ˤ/J 3!ݺ 9. 7ccQF>< P<d,pP⃆J֤g \_s ͮU)l' bl~ݍp׼CHӿ85%,2N R"׈})RqUMo_ތNpcWsqcODx?u$| ţpMyx9ȸ}VS`2*O܂Be4'A|G靿ýN @:Ό䚹0:B.~ȁ{L&߾~u+y;}Qz JOb%Q(XE\Ȟt`U#qQI|`q4NixP'Re4eT ggS9vNXi{8Xd]ynMj bl ID\ (cBBhQHQ. U,OPW*{ Ed`nw8TxJdž:Y|} |!G?=Mg] o b7M~Xj6mIR2RnVvkf -*8}:t;ꤿȋ3;FJh+1}GŤNKO":#%@0%?ׅp! ~*Nw6 m3{u]Đ2榤޽ol{ʯP<28u|[GB`Ä|\ -Bmi|U[1C!fln 2{%GKv4w46.L?h|kF!Gr2UV4[* ?/XBO x4YVt)_ߺk^$;kڣW:oe2WCkܰ#5ﭰ>W>"ۛקc.:oNM>|S묘pkB1't%i}pk7R_D޹EKt;h9By]2;wu#YxGر* 9 6C ᠦewҘj"Vvڅ NV䓹s+{BsVV>j+ SNJQc/_4o=PQG$|CCnf|D̖kR֠B7]zlg@!'lTY۰w8̫;QF;F[:;OIS:sp_(N`fP$BvwQ|-NVr.0wUB $meacL.؉/kˠ3g5gŲBc0 ꛪ>`ض\4}NACe,"W}N.ǁS\qTebL=1 dMbdtr'Tϖ޺0^]56I~Lպ& ‡%RЩ^2e7_޺KhJ|GSRk:eQ0o(R*NwYddpOH*9!4U$>d$ PS=CwD& Vqv0-}$={>Z?p1WPyigZj?g,@sZg7 I)UXUqRɔ)}ܬmK71ngf $ʤ*f=j93-.'=\U{m쎎M bv:_/| Or*e0:o41qTOgĻ>%v_eA 72Ϣ\Jc@u 8Pc9gL|Fp^y R70{K&qPv,dW 8Ƙ.RbX]A,o [Ò! VWGbkGmmM<8K]+>D֍ tTÃ+maxgsj} tr {fbMj U *Bh"`gFS2똘\Cej6)2]_C$N$5$M"ZE rMzRk|lDzL]W2E⸑pWYDfG"W:¿-OLۊ?O$j0Qhn I^z?i*x;P`4Jmp晙.b %&B 1SO{lJx+Pw9L=\fJ+mR\ioL%̄! 5Χ>fպIjF@KO1/V}qTfK9ʜL |?_!< ZZ6f ԴcYn3ۉERI^dT2 o˰юGYx˚z^>,XLl/1LSi|"\SsB~K7BЮ3¬>w(vgyv,Ln k97ؾ{X/?M""hSmC醊!"]A6@ 0-Ϩ )D>3!+ٲHhUF3Ј ?J1EA dʚo&@ >:F{O 'ȧYbfV1x_{!0OQB?('. ES gDshirr)p8b N#e߂xgXs2i:܅.z >)#nXB'jЫ5QO*Pq*+x˓ؤ:(=|DUf\"5ɌDlpp ;}5@+ً(>% rM!|\?U^'z&_ l8pOIݞi*޹9P> | %a WEbr`3K&݉[x@t2ȼc_dX~tMO%6Ré 4"F<3{ܞU)6G{$ kF㣢h5Ux`MVLfZ:*4 v- 7ThA**a&{'6x[A)할ɶPW Q5B>LZt8iV^{/2MUΝ ]tky=phI_(9),{9'Uik0컠9H&6y&%uܱVb_qqg NJLN%f et!S1`i~޼Pmvt+^]^&}O$8j1 vuұܪX dMEq;YcRK]}MmoȵV7 5乃 H%R\WUh# Fyn<7P b+sZTđJsC$V9 4ܱh`>]Z XY 5"x}T'@ݲ:e cxZLvTK2iaq;?(+NZ4|a2 ̚ΰCcȭREOA2A#SN'5tHp2~lgXȋӟjbGk lҐ%V'AD( 1&YL&=&sp6mDUh,GMJv{ohR:@?Wj ѳRcvP8]1e-xxNg5SY`*esRe̾ Fljbq̕== Q̚ֆөQ\ݎև 1y,z&Б$qWgjݣEgp4[ àmM9,̨`Ztٌ-"FD|yYꔴP bp3Knt3ega +%bj:2b70ԺqFi-(mVR5h ZgL`]Q@1隀RvG9>p{ ʴwHE"z琖e>˳6Q"# JEz^(5$MkNy ,UI [Un&'ɯ%wrgicwL\;&pJf[tl,Ns04eLrL?kYcWց=9uSه @dul/܍#X0ޟ)8&@vÇ>3յ8a%,X&M#f~ 04hٙDѤ !iiڭ(QcZ2 vNӪ_Xe͗$I7 2B]$V j.3ݸLĔb腿Z@V t)Fnr}O3FX\ 8a9kv=uA>Dža2wZ m 9ξe0Go)L,P/|O4. V7C|n uu%?i0ܭ2Чgݯ_zх킛lMM-y.ՊlR#@I-L XF,Xi]g፩0%1RMKQˁSO`Jy02k$Py&.ytmuҒ$cV({Q3 1$,9,\G9pCIgs~i* nؙZ\6BӶġ%3BAu#V=?ZS? 19+^sa,dUE}64'l":X U'+aֱ. Gu07!޶. oF |m׬ L-X~\,QߖPm~ ᢫-i&ZZl`.#?⠍ʘ%/i!^SHCJۈL}* ςĈYJ`H*Uf~ŎQgazG'g€],LExY{n:ȉZ)QzmJ<ʔ?҃1~hmظsV6+\ˢn:pN)Sޟ 7șM H\t^XL9|?KCߑ@4qcuGYxJrsӪd1(:#yUD!! PltFQ"K;9‗kQ/? m?clk0SqN/nݫ HI)\kLYp59<=quCOb5 ʉ2):lY *u\:_Y;복Y ul0;K6!#S+!hxޮ7=3%ԐB *𫧸s3`)`V]haQ-ea(ʭ#rxJʜPc;Wtp]BSOi'ku#e#4ǩVw8]lX7RdZ.%?:AޛQmď>~̦YĶ6/UְFkG拯ȧZ Arھ|Ŷ9BeI ¶M:I!x X0yT'$ Q$Q t`grQP⮪+Z[[*q$(&XK]!aC{'d=׸.]h@-tD\g'KI*1ueW{;葅_̤J4Oֈ i8}`hLqC9>.sϴ2N^ܻAzkI`̇p̡.W* !^"*d^"Z: ϶!u` C¥-X!mU}*PfHs;@"isf;ätRG*턍(pb&SzKzV6p.P4WYֶbC(~>QrTT*p/:KޥF3E]ޮ|?W9Y,hW kCc[j, dN}tfY؍ knei䥩ƫirjέ{?v#7ėd$ mܝoF72Hd04#8OZ]ys'sRѴ _>./rcOom7-1Q{ bO᠑\fvWsBU"_5&厀v"߻J@B9=Zf3*B,ٳ2T;a[MlB ?_~V%YFt5`8'􄄱t'Y{OBDƍK[J/~!&PIeBъy^3+Unx* ~4"FM(O)y4S45rk$'z4}#$cD[5l1Z `~W`G9w:]l[Q!/ Rƻ;#P$<+{ \ȮC XW7 4o)bp*)Є@M'-4 .)MclV$}BAcCsSL^Yڶ]Z{,RT̝E+ԯ") 3: `]ڕZS9ڕPVbSDyv Oc' ENjt9I<ڣ8k!p%Yv"uoewKZ3U_&?9=XIQNe< sYy52+*j] w|riBXPVO1V];tT;6֑U NQ,j#*#iaJs$cR Ѧpᛲӵ\1jX! x~II7@-T"뺑eмD+ˁ3Q:A+)iŒGq+ #Q>yP?( ׊,RJoS1) E_ɜe@>C,G)v8|a1ZJx幑(vf{~ĩ/H8")KLP k.M║ãi.f獇EgxB̪{IH|s8O0ew ;n;.dvέ.Fj#uUc@F)8m7ɚ:=!}rjap7HwY0TmXyg J} ]v؜H^qMiXIj %ey87݋u$I119bC~BvGQ.n+&_X5dɐIJYwV3i3Y B3LU0pLOM@_Κ8 p>S^95HX˓?9žUH]ILp$B|0VXdBɼPmA?B0h7qp,'Qq@6҉#&DZsKPey@|{%&ib/KINZc1ZO*ϊhBJߍp!"ufZIxwF*:399e(}٨$ qz>}fR!'r,p8iAX/|D_ba&ҿL{$LL {; |ݗg73{7WU. ˴4&B>Csp!::GE^zBf/5w26 Ex(GO&0NYn˻b\*zKB@$sˡhjpʧ> +8Ү݂#;ir-/Ph$@Ɓyϟ=JTu l"IAHح\^YȞwk0cg W@=(~Ao ,0٩/JtmAƕ Y,W60F?dx;Ɵ規:zU"R3Soiw\*ZJ~]U vLUi5hXb9AJ5k$B%I|7eiǥöyBq&TN _7=I$2By_ֲSz'@5W9+Pl;aifpZPPked؍q- P]Soj1)Y\^͖JLyI uz^_Wpx|6g< j%_E~YsYtζLUȲl4 q7Be(`ZlvN2e%jF>\Ep=nY>I8h?~ٹJJ؃e#V/OpC| \BC9ت|y?N(wo!]ToR4sNK WhwZ]{wbަ}'[@Vn~E"6(֪^<*"vRqCnd?lXMOƄг)^BaR;pX.1+u0 {Ru<,:pR[Ƙ"x[qDmpvuf`H+(\vhE |y[i5|q"-|D&OM|gBW'{^rꡏ?M(݇z\"0ǷƐakrY/B[@4 [|璷9z֎:tY{H[|G/U'7.h4weoS#c Lb"_AKfEGI%6K'{/CBMq#'oj:aF` |% *?ҋN6R{rD/~կ-0U ,3XPo֪0-JO,nr) mA,EX}CH _Ҫ/}aH{8ݠ `wZu~W,gm稭W82Ak~ סL˺3|ٽT3Yp`*w0&z۞e7ƻ\YH^y/rMKX ʈ=V 14sQURCH,(oU>4Dˮ+vZ۹m-v;_Fx+F]:r l F7mCTk 2 S ϽGE#‡Pѝ/ŸjLC[Wz(\#Gz"(=z/lmE4)fO6}y.]PX44[Bis?ьM;>Hz+ # ^jn_gT'%y;gM)yj&K.`¶8J|mmM $Qnf^߃U Zr*rv( cg=-(1r̯E^pzRFYn_g!=hm2Cž"MugO=\хF} GRK /?9ifxlgFT'44, ̤)q|Mˆ|f"M3iDʙ9qX-{2w%%#=I?V8g[#hl `3fSa$hViT,ډ:)='h4 c|2kÿ|eJ?6G-VcKyzBCy? d烀-I znҮeQg6ȊJqw*Gd^F%`:Eٽy~,[s,+Ygfj(cjH(3_+|T1%6¶%p(Bhc6Y(?"(ī6TKJH (mihXBg ]/kJrɸZtNJ4L%rMYX)DȁceYn\ލq;y|k D,]yWR\ HDcLB|KdPGnN܎RDB+?ylj}s-ۀ.SONS$~W1t!VgBn{8ގb5ٰ;9[:?4ԇ Cݻ ! * @&;=>Y+`4nl#j;ͻ!7i>OP߭XrD!̏0H(PrSBLVGa΃W >ʹlt1=Yw|mu[)hOъ.eđu %sM0=\̝pm<{o-OSl XIL}πvI-ezr һ9 ԈB;͞"DL"^ P ȉΊt*=nW%?68 ڌu6 ,xT~w9(39.,E"(QV +tJNp,{HuDvb~۞䁃] D/o0.x>7^'7&ԪĬd7'ډN?3F-V+g-6I[[j@fw3`qL(G{^D N$guA=#jO@;(D]V2f)f'?){.[gS\ x."Q`_ =DɊ[n,.V=v 5_a }-3[=tXdr!G(vF+?DeLW,r -F!B@EDnf G ^IYU1Ʃ7*= o]Z2Y5!X1$q܌3k߆E3[ W6M.HnZ뀼N\OIʔyubA eÔXD]=ecV)=r^ZT"Z5%#H'_(FSR"XݨlQ{Fi8 j?u?\?,^2c2+^٭|pܙ|IƓi|Ù`U9hfrB]p64wgl<0PWF6_|Cv)`WaW[H[Dʽ-%G+pj9xG.p"4˧aJ3\Jַ`N #dk"YtO0p_"aؽ)}:x(zm6>/lFcZ'6yJ'}͉i{{ #q]I9#:NұdZU ";1Ӱ7ȫʐgi310aW?#`pte%dR2W5;=U H8FVlii,]> )-3H0;mыǚ˒!oYR*Wr@ڼB@}8۬lb$^?~ol*0%z|]sFikЎkH?3mQKWFNU@I`l ߔXHf۹{ڐsY͆UwSrܸq2)^{춮dፒURu5K<Ȋ fYJ?U H91!ZR6&/@2GH٥4YPK f7_v9+_CU4b7M'FH N}J^&-/?6 TihKC b3JA(:$vtҤi@gm# ?dk'3~wtI%d;z2j`sMugЭDlXo-\Ј醾4[]RŢVQ9 Έ||,%Ics,Ʃ8Z(|.۰>oAfĩ n ɘ2 bOyxW}sm諀N;c\ PFH'3%9c@//ğ?|3h 㦓C+JIf|$B]J"!35DiEm#4 ;ۘHaDO[~`Wo b!|>j)ˆK7Jۘ?2,ck$k+%f^!9nKQ&Pno?iPqUXY^2}eNB^Cb#Y (9γ<_X5 4\[4TG 9ŸRv$Uh 0W9j ?$|3kӢO(5/fSbr*fޫ~IKiMS`޴0u$ۑTxY)fH*6 s+gqؒ̔gIaُVH?"PR@GܧwȖiN,T&qҮjcx2ѐvl- 2V^LDR24/٭ԁHKN,&a?TQ/ YhAL6)vYdX7Y}?Sxs⛐}<-}Q_qJ Yg`Xr ĥ0<~r9Ĉ 7,݀4;rҦT|O[9<$s]T=a)=l@) U4J,J$/RN{Ol3Bj6e[TOgW߲;jspŖu5_1eaH fhU(䔓Gu뿸4,egxb*: ýdl=I{x ?+hEN:LT]aXfR{>Lk{Fu"%T R.Ɠ0_+,8wx. AW4l)S2yy O#=;MA2]gG+x֖O(X]~02?;uNYB_Jz)lƪ16~!Quy8eMx,iڽӆ\=J,}]*WhwP[́OF'7'!\Pq$xH rJ(E/ diȥEA@uoL3rt3q}\[7Nڿ]a]uȼj\K*͖!Yra19lV[{H8Jr^΂fS痚 pzpYнxD-T*hVvҜB»4r-Jf0J߰, nq.nÁjC*0~r%k'Z8GE-Z(1~qoц ̉dkm1|GAywʂ>%(0.Ѹ'^y+˩є~`H/Ck"w{Vf\E%nOr;y }פsmWF#ý?1 \ IJ?`i/ǭp<53`}>ns͓YN%K)06BFb\ ХӔHqazN`-ʀ3PJo+i F~4wgAOɟe aYH-)Ҝ lKb&7H՟H7q7_K0.HGer>McEBhbl4z j$d@7BMOٞ+ȭn8`85鳭4$׎n2􃸧L bգ򿅷5?_M Ĥz+s-0и b-h rP_B`mz!72?XQSjzȇ@ѪpEHPEInKMWjYFxq |UY^0lco{9rlj  Jp յ՘@kc&[<&+[iI"F0#171 Xנ0%} q"%jH?xcӽ\TQ-=wda I"?e펚#MZz ueHm0DIt-K*/UpzhzXgd#_uv>zS:P+/qң;M./ 96oYZTХ?E#Rq]Ӧ(|8eL^& x4shHj 6ήA#imw"_a~57ozi@-1-oWt=ӈѻĖy`3C^Z!Qmow"v2TP=wTޕȌ2a/MY(0^N2N95@.\ \8GS9h\uQ%lTߩ/J? 0PسV52D,bg>̯L u'w쐀-e(I C\"&;IQ)5:s(ȘdltO/S mqg  bvfSXa_HbQ޵v:!ÊkrFAhtIRBg6_`'h9\KXО6 lɼdpVPhQ/Ur hwsd 'V8: {aw o]Mԩ|Cŧ[IM#<^RA"}" cùDgɻe MniQyK|4\& &bgXSJGejA|] oL ozvjـAkx^-I2X.wjQ/4pxt?CBd :Wcx-$#4|Vcd߳9ݸ+ťک2 *+R 3B-ōN!L#v3V0*`|]R%ڣ 1>RU]rMqPn0hMQ<\ʂe8c0nkK2e%wJȭH9<+aD(+@vM!qNFAOkWy?z=i7"q~h+Nډ&JZї/ ح3*%^q0SJsc:>8)kq-\*bGvHT7o~(4{@892>D^v[$b\sW _ZzP' baO*10 BOW*퀿7?G wO4lyqӗfc7R5JF,BK/ #a㷆^~ kdIr<WSFte]"F$?9 KD \}Y9sUQZ9c %{̰2Ig֩KN/<΀|flҶI.(Ȣo]FILf;SN@]KM_{ G].&Q!3-fR\~y݉/=0%f7ex,#oxⅅC85tDr!5Rp)ȯ\1ARj؛HKe/=ƌm.IeXET &5 1C~AybM?)}=jX=FX{o1>Ŭl=TeL }W,Q28ʴ@a^d9Vjw햍JX5ʿv!6U, -4p%7aǹCܵxooIsz8CX)T.:b)xR!x^qÔ*(89~Ix#@anLG=! +H0tV 0ܢmRFj@?N-CNHWv؋[$ (Ɖ?U^z>n|tl .yTY;`;Q%/41RBƩrE\G^D-msxI( Chr&up[ tٺ"ӖyG̠;S[7Hyf+)~ߴGX2׍OW5;{3ۺ>.њDzYPrk'ٻkDuXq.<_J%1O%w݋pSCn_uy-ENǶ0ğ `&-@lJK@㖧/aA~4)J-癳U9 uMx ev'[kqQ}cC?L\%[$mᷠ.WKdL=YGwXOtT(!_EM]藆R0M -]Bǘ paFҏ6 9[%p1EPp?l4(/lH'}'̼g%C.7kJ?Lom{Y,cfgD+z|*v  Rq͟>'tyWD$Ϛra-i _>Xy?لf$D5\c:w(&*]k蘽K)4Q'ݺ+9JE Z}LEt:AeF+gxA?Ӵk^ܙZOPAoդ ʄxoPI @m.@hLw)HXΚcH~VCU2Vfz"Y\ +ukH+ET2*Ѿn.ܑSoefJ*eQy"?qBUaꘌѱ^V o$5`ܻU #zLi![c[g& skG@BܰMU~ [zOg3t<4u[ ӯ LL>$ 5}q=O'6 gf/c̟=PYD![X hBona0=YcDԲd- P[wL;`-Q [r&!xmR# oW -|WB?^Ʉ(MeZn=ȵ2&8B->bەx,j2$Oa*=΢.r@'"23 2nx@2YdOՖ˴wX^5/!Dll('yJa̴UJ閪 Ҝdqߕ-~D/wP$@JAXWɌް2$zLPfx*FUݯ![YKaB0 7mMrxp&ZU]ij<=e$J]MÌ^ \ : X0bI4mܺ׀cdUA($A)W;3c|9}k4 b'P~ӄ5Q% ܞP[~qe7;7Au=Ͱ+ΌÄ 2#TZ#=j&p.>+(N{į=xEx)6 qFx$kŮ)RyRh˵ u-:Ɔwuk7m(~N 7žLdE"NTuAst8QXtgG{ xc t/qF<4zW.o=y{JfuԿ([gr-Pⷿir!`W<˔ìdz5S enMMlÖOB y%FK6+y m n0I #26;o⋏=_c.%GPX`e+q5V$3od/q* ,z]U>א(ǧe:lDX&2[I< -2*bNg]7Bx6~A5Ĉ.q}T=FjRFweV,ic Z$w3-ҕkVF4?YS`U;?ui(i>OPACN.RZa9U 1Mptݞ,M̡Mk[O\O-4QDˑ@QM0Y|tC3})U胯Ȍ;.X7% $e0I%x:~V4Lrk%);Og `(>}R-W 2%z4+d#~WKhHM)>/wq[Gf3ysyt"+:y47-~2#*N.rsQ */.pȦY:n=dBJeZSgj)̓e{/)NSDK8fΥC.bE^ R9)w#_I. W>ȁH=7S\s9b %>rE䏵J4VO70\cp/quwyXɮ TSK/,)vٟ,aśDe*z? +G_x^aՁm S/WvL*N ޜx5ޙkj>)еX2=gt FeR|pL7}*~ $6HE*%07^*FI9-.s+G4U0t泴üp 䫿QmF`R|I3֒S0o]zMn-arR!^Df9(7YgBfvJ.02Pߋafi03U:]&KN{TYHϨ A (D|FjRh$`((3o T!wB&2 QgP:>Ǿʑ?6*]߷6WcX{S՛G'kFם;!mSb͈g/[Kb'9s,-vN>ajj2F#fK_'_^-MK-m}ؠ9Tv5jEi#Ty | 1|^#o6dJ!}1NF ⢭_r^x]Y7!4Vw:~>H{Caz8%:~ j!VޜvG/{&< 0paݴc5Ľ2V9z2Ps@ ,adnV @p(c^Tا#fqCfȡ-Fg7)]$E6^B]oO@`̯u`~NaS R=e0Gƅj_g.et$%B5rYpD%b&VnXa00*i?t 7* gv1]pl(W+0N}@ `i9Ku#n<; ԧ8;q>[dm1psBpM9m*zM xԇc3M*Y _ cc{'Es6 OC^J+d#hNA OR+YǢլHY-L*#@ݘhb >1mJ6-"k"€.&4ax5=Et!ı ڼ/+9^ܒk߉g^ΫuW ĆT쾵=SyIZc~cԽ a*fi*Jstv7Wb:8] qC(m1xwsɔͿ1E`$o!08>z7squ$Pl3/9K~nJT [HT 6g<-K'JMM49i:4p.-[I?#ĞM_'q[pPT*kRi*XuԮj~ F5E0b+#2Z[Plih׆`n{h )){+=݂ ԡtA)hBɃo}bH<'-niOūq^mymq_ n-;-\O\& {Āe\Ʊ(򑢇D~/ 6V !<\׌C={ (}(iǴ#%m#eK~,NV'B|h(LoدG@8 ڥ©, 9*T֊LDC(B  E]nVu=߫7^8:y"SE*5;F7I?3/+f0:2ex n/$-2{sC;r!NUEq\JY=cDė-rZ.^ōm8 H3m5ԧg3g]y 49h/g"ZIuS? أԖRdY%Q]|+Tc(Laϊ U:H դx~0;Ǡsh.O*SƆ5+Z&Cl3roHô74ՒxߘS#.ږosl&m]PZ襞k巚hnLkoLx="Zө\B]Bw,mvl!t,-{/'Z?nA_^iCw `ʲ96=-~ Vs+쨜yb!ޅ':s*/2گ$3~}TT߬Phe`o& 1Ļ{]"r5'D6YvHmV-ɫ_4v3 Dt-I5(H\ܚвd1E"=RPAR" $ K$M?p&2EH:y#a/68S QprVx AB:q>L Q3v<]#EuBoʰ]+5JXqj+!quv9## KvWP sB"i& sS`o3cQ` фxf7"-U0n+ijK,E.؍w,إlr6Z>J{VCX}*Ym8 lV_!R敟q]rMaVE~CK0vJ<|ob %pÃ'!X=JPܨ[O.eӮfQP \9N?Jؿ[>,W*b)gyZl hZU#LGxG:FiI>Y) 8G昬KZ3*2^~W1fӀ6[^9a]YjYgXu^,T>VID<"E6.mppߓ#C3ΡUC((`#<0<2[)_p:1ƋK.F;x!Q#U'ǑAG%]NiMmq'6^pwh#zJ_ 2٨:f٬-X 4sijз_?ž`P_H( nΉ{7cə%$OrhO6/a?_ JqQ/k0֦)2ִя&.`/yB@[RTkT|!/nN+)B0EhH17??NȻK8 X]p!: %[uU'tNm:`\ >_ԩ8|^qm?(׌3 1YC;U5-{ y'r?s3dzWn>^4Ca$#]Z/kh.R{˴{Ec3ǯf:ٷ4`D1)ֻ fxܘ=5$1D[&,s/fG/üWc(}!Jm4Nu@c6(W|Way1#;͕Lي;DGEuglZ-iDxi*ylF_+  AZ8vd]YJ9/׋&h.! O{=@c2x Mon69U&}̳Y2hP34Z-H$O =wz_^BwoHaUItRLspclvQ,65i /Fڅ{Ma`K"NMUx+G JcRP`ma,`,y<\:*,KDہBdм蓦v@ڦw7]B$>ldq[{깡ŕ$Džcv#s4Sxl{n`?5Jz\1}fF3 U2֥kRXplZi+㬆8tKE:w\wv4JrRQ;``{=C&Ƚ1,B{խKNk#\ ̐sxW5%aMѥW8PZ㋆ay~\|B\[Ԑ@6͎y.UaHf"4Crq QդiS+t `^miy6, K~"茠 p/q@-C͆8c Dzߦ JSJvGSa1^ 6BjyMyl*꽶XmA>KB<)v)BZG`mH~G32ڟGzX)q"҄nor ޾D;ZZ&=\ɑ:"Kt{WO֏.Ãkܦp™ = LߥhzXH070 x*D1F9az UT+[;꥛c^&6wZZ 'J::eJB, 喙?0# _k.ljɢ+>ꄳBF؏zi+bSɺ&iTt8fqRF(iΠR}RCBpGbdA&2y! 2mπEgc\ sBјfkE3is7|֎N̯ me.t {i7/_H[kq06AqY;Lq.:(Y1hR\p{ ԥt&[򙒽0&~2(_^5";dyz "#}c0TCVS2۬;^x;-O@dq9`?ҁ,j\D#׮q̡k@`FCϴ i(ᓴ$lI3Vý|w"㔋#,0jBL%\ b=`bئ+pG}9}.sa\0"'7607#SsѠ|`ęVbƃzM @/Rؐ8keo 5qq m2vtc-ehpR!~sWx͗O1l%b0 Cȁ!j MO:_C{aX\j|afIP^ҵ?dz/!2&><)#5䠄i@pآ%Ot[8k[ʨ<%Bzj^|D"Z~Z4S@-ϛμG=MjlwBmTUsRL0DIE:rZ)薯aX\0L-Mχ|K1n`TvQ ?؋} 2.CymHl;W + 0!Ly*& }G(2Ϥ6a/}an=ٛ|MNדG*e§z >qqhN2Qap[7 Am/bx{29S:'9'`2SsGb ̏].Wu!Q3de`1:*oFbu>L)(B4BŎ]z/IxpPy?ƊdFS3IRcU7\R 21\؟^no:șXBxcP'4RExbt\fi̼Wb']=cv|8CcՊHs>-wf ?$݀^[ 홽ڍ@ z&E] Tf>E7msy$RGǤRM˹f(Dpj_#Lo*弋S_Ƀd ,5Uro;."ņUw\^e%t'V1h>WG$ܰs{PGg=]?NŞrFbʝPK8/yok1jV n >~ILGt-y~G^3M35H>6^o;zª,<#vJz'Zn60  ffHix,s8q|:jNU0G\[O8J-MvYHz$s^EAd2=I U ]2;/QPg\=i[ &v!t.hB`TBB摸;(d$Wg!x99i}5)_!'?<$RẢPɖc3{kjwIS>Vغ+sI?Z}f70W0aaSKjp2,&h>zfvi}:XezQ%LrHElȺ%9Xc!: qln"X l΁l R8wFd\"2gh 'Ty [%0qQoeAdykJ`l_brG?\Qr?)LUCQq/ql6ĉi-C{t :}31zW1}Q>@e_}lA+(І쟇)=_C;f,=cEeqчVE B]uZ&d$DZ!p¦CMqݳ Fhfv&KgAmBL+Kq/-HmΠB l]1oIF'$rzrAS<X ]C^'i 4]z_ YBl!cH~Y`s2gFa<< CWoȿd~iV"#giE #p%״9=*(C<)B&*ֈqgxVG!*y|6$MvCqo939 -ƭbKoeBԅJݗ{xD!, phNNyٛ͗G˷Rx/,4],v纴 NE\Q\كz\;0OZA[_z(9_L; "^Dx.ޘvQ5]Q"l P 56vQƺ!VHF%zi [Y "/LiabxW2 IO°ZE@c+^&}4ލ6IF :/)^ `i;%_bU#=3;ͯUL܇[^PeO ?ߏ7n +`lZ/)m YH#F+FZe|3tLʘT$,3cmsb0gU_$%{u~3?k!TB2n;a[^ DsLo ?H @t!%rl(r kp8. \|Ox"!H\&>/櫸`*_nd̼mM&$vS18a'u4l:1F^n G+xj`ѕc6&A8z. Hx8'|fz#p ?z箏pT6\p"G;iVɽ;w|8 S"Rz`aA#QW=z,r xuO|?ԙ́FU ;:7Zd}˯,>MDLeG6 Ǧ{- sZI0FL1LR`rƄv8E$ɺkG.o : LlXlMZng4bo!H‘Fݿ WRʏaII^tYEJp\kD~d(AENV5yN'TB&QnKE=%TΫ\z8n=HXOtn,ѕ.Cc"鼴Gb߼ 5ج&/fIsS?,Az5uZ&:2Xe)MA`#^0]sNQ-5\~pLTE]Opf&p 6IeU`Tx_UXcwY]e[ .җH`S7D$Nf.?^atAȈì5D9h# 2Rs~; j-#0M)+SƠ "w>DN >_f&L4 q{M:v"ibs\62~?wu|%!B 4 W lEF>p4$w.+yQ]J<>/#t} qv Jaz_CeFdNӢ/ACH){hÂR0yvr\{ fg)!j~k&EBp'xB`[0%H/ٳ%wߌ,jvGqy_L󿷚[10 ^X8 RБ7^;0>+~rt8Gș(TGџ#N `5ۣ ^JfxLiB]G_߸@A SSlDyo*T@#:rϿP9aDlY|˴YIGj o -?ynNY۫9g8{ۙ T%Fm5fӞrnny "Ee ACDhΜEk6upFS:2 WrU3#TU,dFċÒ(ա(Uu"1f'H򥏵VE*<5kw赎%q5Gfw@~]vF-Ù U__w:^v]*:(aAs؊hZV< Vy3f&;NQ3OsUVOS ?L2J*kg#:\P5{Y?]0 $9'Z(༔!K>|_w*>X^)h9f6S~bkZ,/H/25K2"T4h'ey`0 E'G"ϰGbd-#* :!bpOmbҸvEFגygW&8@2TXlzzA`/5پHKo*C†46D+JLC%~i&]'|?U?64Ywf 6 ȅ`:^F}iZw !lp:f{=~ktX*D$:-)yd nq:9vslFeL/=3jdDB˗@q1{DƓ$;1@NX(Z7f+[,ɂKP8)E򫓫"2B?NO_|><=.[i rvhތ6ݿ꽽6W"Kopa!בb^ ~AƥBJR\C;Q hfv|\A)beTyƍS] fB;)f?b4r啿`Um͍bmkxZ/C0񝩑Gq|'%gb^0UwI|7{[a\—놊<9~h9ʚQ/6dEPTz8Ty+(;}QQ+ aLjst]kn^V^c^}*4&T'Fb-BϾ#RaCs/g(tp PGLg`%Dfz*{e1 %R' Xw1$ۂBf[&OK f7֮dBEc~˹ӫx6-/l|C*bk_UT (8sMGĈg*Jmzn Y: ޾k8FaΜC$i'Q1+~"a">S{ͮv! I vEmMŢ!'uօ[Ť΄BN3(4 p(:s453vDvѬEQ-8M|/krت5~4.գ]×y֩K2tBl0!%YPN%@̖0@O͚8D>QS6AxyGsa,TG=S#JEr&#q|-M7<7-QXByჺC8~y}8[OŌ=pi#9LC#n3KWQE/) ^M?90}M%!C̊`O~bݞu;֓^IR=WĿgNJ)GLJΘ O]"Qkn0# mػp>et%o$H{1F+ԳGG (]+T}Up[fى'KIP,$JuY4}xLrpy 2?F&}l|<!MB&w+O,xF?o[)sO ]k9%.[5@ ,IB~Jn]N+&  FI ol +C (F7#Y$;!R162j '*p/.𪎄ù>zkCU-W>r Zuf ›'6?كjs3"4Es1 rrԞ%1>ۏT]gjAy`G`ur+Yј&+D*4- NZLUE&}SΙG)ͤV71T!>64tخ/?)*|S.eSHidVhQoXIY믧nIey#b&wՖ'\Xt {m[2(睐Eb7G]TѦ%_S8&ڋOњ2t`EYE/*O"b5Մ>, .LsCpE3$2ɭU`{2D4`4rwS[37V%18ы'Dq|˔Dfcˆ96u"x!&izbi"j g_)QtaEc s >y"}!ks}Cq2HɔҢ#Pn;3 [>JdT6`[[7ѫ] "JCB7oh-=ZJLzOV$?aɹ#HWJ՞cdWr65֭=EaZ΅-WƵ;k!U̘o[~Ԟ|ƕN>y7q'EkDFOdok@CgYPYmAoy# L< s!mmbў)"FcAq`s׊]pr>¼7Ӊ|@oI+TOZaPH(1FrPH33G" ~S.JUra~YTC>hB=J rt zn=X)4gX8iѼ*b1'H^u/Q :sfھޅ&Ozu!݈7ףC"0&O4`QD>;tb}L8C?;+މ0E.*q?}MDE΍you؍)0z(~3:>Mi(_i \M/E8g>{_A5n=wR7D^skVOxp_&/NY1t@3OK: 5յ!Bx-4/ {Ԧ&Go_kfۿSi_l7+XL~)ﯴz(#kAyy>Ʈ|֝ kH[_UB3\ظb!fA6p ^B1Q6G2f8d*ug !{yͧvεB-5 LJ˟S0gչ̚9.dj xh,+FK  poxڅqO1! donB(ǥF.a$TV&3d#cN1riGχkt4"LLMHon0+ff#>a/l|CRDoE^^W(2qAa߲м3zsz^u̵ٲ|LCLͩJ>>l_anIz|ʫJFmb7p*tK.pX@ةv oO5ti&AnOjh7lM 1w`h)͂ʟ^V7D(^-pK_@`k8WY3x$tr~q,ޢ:s QO1W*enR$:8qfשЍ]8i>qJ,2timX.x_l@#S:D!>U5bF}/,bclH) |u$&$*ܩ8ۅ*5qiӰE.6v`;!o;*CoL?A) Jw"8GOXhS1!T/|GDžNqkz{ȨJ1ܦ8*JnNmtcRv:_&e,6~JaS֌ˊ&ȥc擬zo7Z:'=DQy=,}>m$q*ڛX(W."i|a ?ʺuMrW&'96ਬjcq- !2懅E&~|k-qĚF5jp7-6w+EnE9?$WՈn+Tyɏk7FoR˒0>H7jJ .ļQ|U͟b|$_?Ԡaf.ATZw@@)5&<>SՁ_H k|~cTS?eψwA<[#j$Mk`r nU (m1{}QX3TtWQzS"C7*l`& [εM ^iYQ=XNn'KGbUzL,e/ATplӵ.„u*k~ŵu 4j5yDhPV$ AVX)Cx?3g܈>vBvw ]ֲfv|ipaSZ4T[ȼ_zxlO}L6tH_`w9n\Oaz<JU|D)P9'LQOɅ sx &49/UJKòy250,DcP2)RO}mPs!-@T)\ +vz84Sn4]wfrR"8@ X)9fDZV)vO"@%*ӥX"6ԵoC^_YcHh%~F>N}¤ކ{wp%Ufk^gb-_cӚ'BIXV/qN[?.rr+|` S!FDtFD{I۳TilďAʀl%D3eʧWsm̾l*#?F/&*#, O#>)|Ƿ߸v[5Ԙai8;jv YrVEQ (zpjae*b0VPW۾-՝I8 ^SWvi/۰FF 54lB nĦNLdYga< yne}{iJ~._%SA?s|0?QFv!s'~InI~tCyk8596fRpcLWdLkRuܺ(} hd9:0?8}!?Fxu?&0TR!qT aMܹœԠž/xDnmd.RiK*㔇+a]Zb$9/$_Ǵ;_fnHDDO.+3sfW%ל<#>|7葎V#UeSiu6Pq:i_"ɍHnKf{hxB-?gz'7UU&?F[wn#m-hS1Up dl_E^AxLPKU9!#ߓ?뇯~_1lD " u+wmmfZ[-PU X=4IQaRbrȜj)&ej}[a_(+KDf4aySz]NծА m1o`=2oCx *rt͂Lb8H= LQF|~H6i>jE^9gU%M펶!|<Czیqg{9|OH:+bih$<< 2Gn*#Krk@|ǿYݮ{1)=<-WME4 tSUm\2;Hz'ͺt} $kp;wBELpJF@3g +dPj9@e$ `Ye30^]1l`IAbqP~\7@P%kKx&jKju%YKoH>9kwCxX眡y|Rb#zt i^!ut 4SdImfOWbi.N)Y@\9R1tM={hp2==$uͮLH01/jpTARx=9y"3K- %GB 1}N=" rxVD|"|E @LW_ZB?x91D2?\9Q۳+$B+o\l/LE; Lhu-8w*/]/xi:|uXPM{ez]mA$W*z~*_cYElٛo*/\S$)ꌤ5; }#_Ky՞i%Kcb(v%4PX2Yn3B^Q5.C GEWq ,F2Y\+qB-t6hZ6َz/s6 VnQU*Ϭ.mRCr2U{B'|kW>LKeo<aZw)plR IԆa8VBa{NA"]_sIrQmtfa& 𲅀fTR+EU4dٟ^o[!.\!])OP<0iUwߝ]9ֳ. ,1q1W}784{Mn-V"{-º AtC_m'M>\t(g?Nm#z &`bK7^@L{Rw &O>rXd'BvrMjCF|$ _K_Ȋ_mQzV֩> >bv%#4'nc{r[u0e|0q< eVk9翇,0.v$TÄXk3vQ#T BgU?kbBb9 Ui -˯.cI }8 ˠhD*Ҝ?3pJɭAP^?VQNdyD>=2@Վ8ڵ*"U JBnuRw`EG ծhh,>q{^Xm)R/TȽL;r 9*x; S]ڛjy(1yQ$owi@ e5wMYO3r.~O˨2iX1/FG~ȬsPaXfAzflHҋ0e;ȟ|^qܩjO\7avH/oRsf$zIgHo$hJl#$[*ʗkӥt#X4]D& p[B7rƻ4iՉu+ѦO-]8(:cS=: &+ hpMբGMAD?53) s~33V[a9,D i>a=x6{eyOԁ .<"nCDhw"j h›ߏE&VBE{ooV' naq ֢8e[ю(dO 39M| *L [N&O}]ɬSh|zRA;!l @A QR&[hk͈/mu{wjS!YcS1\Hx 8u@^jy Q#y($^/]Xf.2JX^J'{ Ų |&2T;qw.@k2#d@wǗ ӨG3*Xl~ ԓG^ ʶ!\K3YY-81eޞ5?.W@>H֬plQvxfr uV0"3$~2b ^Q1ΉJұHi#M2kͧA9E)?߿^,>&ecj<=|w(vm- hW7 fb1)惒n/J4`">;35CeZׯQH%qBkReQJ*/buz,dMW.miYN˸ٺ⣊ܔ( >ߓR5k [)& ONg %t9mcrp̓ꗹe.6Vu9OI.I)푥J#^dw.;et v 6A,@깺(2oe;TZw޿V&O: 16D ^fg0x tߵɓ+[(5KeNfHJ ~O s s[=:S׽sPgor. !y)OcG]P'1uuŗqA ]}Wc3TԉX]#JZc!$#Y.'c1(U˙Qc] ]^<[ c:傪uzpdl=h#2:#N\i$3|6q(rpJ8; ^wԂG?!_bEmc~έ[ \/jgNCzÝ|VoEř&j>SOGgIOG<w t^,&5sw{jB4Tkf84ڀBASv09л M}q!t XPGaRe@]9{hu  Xk=1ת DNC_R6/v&[~}Iў/VqOYw~jδ ׉TFZ}3X 1Fe6 yBU ln9%)VXA~ljq =eE &g0Nm8via= 6)C Ђ)Eƨ̾kXĊP|<45yrdD7c/7\==X2YTmK_2B{+ HQڻ`H7X;<ōgrfdm)G@>3IئT >ҁ''l\A᎜hPz5#h%:V D(RYH抦އI I-`gv:,ep2$W+v%DЬ7z ܜ[mg5'E*ߧ޵]cimcy)B`ܦ’rA1rǐt"w 8}?37 3RfЬw5?GP/xTZMcV1bwdszD$dv`ſfPBJL\ ѓ<95d k9y^7tƬ Z}@iZXk<u ޚ %CH}4_8*fXJzD=9O>Shyfg%B5` PV3 _WXdWd9N a+ۨt打>L ) BNʒpYmpk0g/m ™QhZUbF/>oM#VKC}- :@eĨL/N;1r'GЬ%WݱÒ1p"mPF. mD 2 JE! )Ag(?,HmPIQl%acA}7.땋uK DXЋ '̼2~`d(l+]KM>wyD^~$ow_9h䧿U9Pl`ª[FЂJ T?XvOOWYljǰt}BLJ೚2V9Ab "E_O$U!IфD"29#'6,m^eZsز¯xX_\2 =Ⅻg!}̷7m;̠t}!Po)w$p=ˉ5;hdɯareߪ8N 5j aK>AICU(; ~DqfSyD 19Pm \]s&w0F/uL}0u9X|Ʒ"wAIx 5[T}D?%܂ieֵ )~3hE+6E"|UGF kEզs2o0UO2r֨ëtr+vv2n~-cX{.K eN7gfA   䄛>UEKL?"D˜[H;:z W SP2g d4>{QS9v-X*B6C6"5e]\vxepY:*Ac[w^0~]ieTï?;k| );߿ztdҨXqd!kT^1l>q-z-k|sC׿} 3phv,T!edak({ٻ3]MR%߄'2j砥}̒+FVR YŊC){4ͼXf <,'ֻlw#q[yM&9Euӯ݈d!4k~)7e.dNxg^ÐUȭdY{μ }OH+(~~ 3)m/vJHCy\"#CXc#eOh%X|ꈅK2ُnW:">et0[@+# Di!`ZMeDPQxVBAa\e PJ7"ɐ$sO)~e}?Toy:`xsԚj\ X{2y06M'(α_,Mn9-MP\Vd!JXe"VǰX`s] յ-qݍ!l7 &` yk Ӽ n!,f6k3/N>`j!c;4a|xw/J k70}4WQC }LteO53lV^la$8f<N uޠUOmʑ!=YtܟQPם缞0B3uX+tn\lu3Qfbo?Zi+% ?g޴4HHL?Tlj94I9⻠Vq\Ctd 32ePY_+qкܺ z-++b`F/̔!zlL>l= cgFAɧ 4_d㝨~o*v2R'\P̾aGGϷ u &H ZXQp_h-%.UtͼtV:̹8V0L9Qϊ_Ͳvf?˼DGr?Ed=fi" rdP,n+?A >jxt&oŇ֙􋗤(&ښ?ĥ$TN{Y,}̷KO Č 9kUOlS,*W0.5'lH;=cὦS39^]tMx<}.Q̯T5,; qt`IF#Y_ml/)AM[G)Sqpk() ZD)"H]``eqxemx-UcUrxwk#H1ֱ@[Bwo_%JZW+ͯQ2!\ }\cPHn|JZA_;*:&Y* gn Lh_ u޿Jb^4Zd+b&D߃(-0=Q_Ewow3}kz(J)TD=".Z&kRҼG W2 \Ʀgo|V׸&}/:-uHrF;ߢ*Fv(pCu/MƘ;YL_cDSap%65z .ojg%T ;%F΀VP_y[AO"+pnԫڦY$X+M9m/c.dQ(2q ?mUBg/] n7VYilnREy ?XR_荷_;)rGAZ&høOPG-ES@!jA 2d匸uѵ7fXԒcI%cv6ʌ5AVA,96? HD_X;r߆=cA-u@o?\BpSU.Gzl bn-]dg ORبg [>-\E}\^NyeD`%bgdFgMVo_?ɨ_*Ѧ:2Z^ i>Xa҉7()hi0%,(*^m ۛ?L㺠cQ "xظ4M!-OoXe~x/ B$=1mi3/kJFjow2e4WV}Y? JxMGDR89 |Rjc,m NLLEnRC !F͌.;ƿ ,,jpAD_r!́v8qZI_#0  6l(uxOoC\01 nyQ#b%C8=`۔ka@̦Ƞg5$ZyFx'hYzGa2c'xULq{gƗm`G4:D48%?O͔[ZM[;[(c>pMj=GBDb@ͫD  -px m6jO~AvAG2<ۢj.8]`EN@(1 a)S5"JҴg3 尦 mgGn ?O| O 㚱&@蠲[heG l)Qʭ?kz<͢ .?HYSwL$aq`#pAhg"[A.5C\! $| ,_]zMuKPp@Fdp6bfnKn2.t~&V aQqRzAa_gg 9M@v1LydTgỲ;ʴ/3dVqɡT0A5H}Gn7G24_)3a}-.Q']J9bMChVZFs"R\AϣarEBs&b>*Se^?X+Ve FwzUv\2XPH5?G3In(hB<Xҡz}n ?kƉbz=l[Zm6DtЊͼ,;K{͂pB@:>"rVъ >:3hcmR6/ p8 ELG(+> t$bѢK DRO}ߣ"e'VhjC2un?0܆3nӞ櫋O;[4i uv@vإl@YW;K׽eO+ryWm8`RVEj IQq/ʨ^.]:rO ) nT`>76cK٢(8aZhQkȓ=2Y ՏDg. ªnNS )un#;M3妜hȮvHdY@<F]=Mm^&f*זL8I< ';MӞ<~.N@V[;I.+;=zۋdUFE r}DcUZ[\È[Ws2 pah=UzVE4+pJxAi -* 0IR,?s>uAjkM6gz͆^&/ͫ#Qe ^bl+V/WrcvjB-m5rJWȷ|(vQ HM"f\تS)ʤEJS]SrV“r|N;Ñ6'Fyj+//,/!,zGQTH7B߫f!#\za$%{C  -juLUl6Qɵ0IrPX@W/敎H@*M~Gt8Aء5 PCY< J=z +#{v,VeF_~qΊT[t'#KoK: i/!H?y`EfoYm )+/ro~Y.Yt,MX+gqA: ihe=g^):fJ@N<})bWlچ>i;\"m+ %xHu EY&w5< k5m-J9EG-xh#w%1 FFw0TE7=g_"Q#q^㾒!)?I'q"-ym3 Yh9zV0Tg mNwz:.f كzB38+S\ ֐'<0KT啷}g9!*k0ȦG|E.p=av~'3d˱ei9>{.< 4rZЍ1n$u@C)fV}Mu̮^R-Qod'JzEAy5^\^4G0Mz bmd Fi.r hncF [~cUЋ ) z A(l[DFMhZLqTiz)*4ۣ172I U&M}ۉ'NjIv}QIrgIfU o 9g6WI8DM g1r$(Ye]4HεJ|q7TW:_3Qܸ4Z݂Qt1.M%4c?nt|%m[xaAnF Л()!$1yYlԋ@,qAy>SJw#vB` ӜY@bfJsUMy9VW+ 0*ySy RВn9uyecƪ$O6PօJ%o4 ֢IQbB Toy)3.VR;IApw:fK <춫, cz!x4z05s2 ŬE\S7}L;q R`pMg3v;5I׈ FQ+a`Xgg54ZSȘ(LğTeH1,O)!ܭhK]u̪)ꗇ`N9t?g~`Uz ]{7PfnQ&1dE#"PdowAsKV Ţ-n`*!_/;^jlb=C;j:Θ+*HF.%irdZxVZ-_b>^d j m(}.(:oD"  #!K^bfPPybf07*g2\F1CKYzx@B ׮ū,ȶ v]» aQwĴxWZsӮ/4d)J/\2OX {^iH_^ \&O$]es gL_Nf7@3v,~;:ϰM8uihzbBv?~x3E>48ݰF{PƏ‘(%fb,$*R.ʩȗ5JtXZ?]uwQuF grk0mz)SD;Mf^aY%646VuE&R.LD]zlMЎ{K]C%;Y#=EM% 0)-jgC2MNu/*dMI{cAqwiƾT1tbɬ{[*{ CjZU/Xi8^PAUXTTa 4__cCp<02)'drf>]9iq'4 EaЅ~*&TpP(7?O,LX*=VN rWZjs}?C `RBayyzyпIi&b?$W]Cv'Ȓ0;Na\ U.$7xZ[eݭWV5hMFHl3.0|231zI3'B99]D2@}e |qH4(< l2,e| hL^>n`J1{f jY\zss% U*0i [9hVRͯ gE.]s;A-q0m#\4m~悬[L*U"* RLj+Ø*ME@w9e S5۫CJ(%xbyڊ;?qI1ls&Iy͉+Vš0׸TKMn,L\]w@x6@6 @4WɍMسQZ~7I5@ RD&5^h.cR5T⒬BgB UNAJHpDK AiT0Fv\A-HG3a=l- @{=IUL⏳fI9|.R#Or!EZB/Et,/θ'As 7|dr,Z uýK:xE#Qt2V OB Zp@QC%\1ÃXpe VN}yhOg{yn[ Iĸ"hhD{ Ѐf߮(;9ddFɤ'LA$jW'n_E(@p5IsM*ICә.0& Y/I` -w/pR,o]HT24OCbhsI#(vsX vM2SÍ()rŅ3Un!T=eE+x۝G,%H2}yn8c~:2 <\ Bu.-VYPԊ;*~}ɰfq W|O"E0^ZKki#LuKmtc e%OsHlcEG51;mPTmIX{ﮣ:߶|Kп'`4. @bo\]K,d屽]od8&`稍Vn4Mt*\O^wIY .+9t9/2!2=.50*قĦ(%%COH-eF}U\ecM@:nBTLo:9x;T76JADQߘlIUA-; fݺثZؘDVy_e7E~p(ѼD|b`QDٹhQ߂>cMwW_/~RH{#4ߨhAn,+}G%[LvpГ%Q`SG%ͺj 5Klo!`KW y0#OSZn~}oC0/D 'Xa2h}e)TzaySª,Zo"IRH)G|95_fsC<jP(MdUeUN/&"wG@/8 C"7h (tEscN-]hPS7d=`Lf81Wh3LsN`7X6Q5TaUԧ}[YTm#\K acK#AO@9j{x[;k"*SP}5LFfBJu"1X2f|"E~6э8% W<(%Vq.M@,o"/ 2ٷ.&!aNJEɢd4MdNlxiI@,~~sTnbM 2V47f tg^9/XOlWuF{Xy ]F]$aьݹ\Fqe}?!V1M7[(xi= B}B0"/Kց~J=k%(LcC+.bP^x˞pүO0j5%eƃh)/}^88Վr} `] p 2ģûr6c7{8 ^ T\v*KOc;Dѐ9ݻjWkۧ>a8ߪ{%MOI92(Z HLQnwoUF89#'Pޚq)*XX\]YBxwਸ+|<@5>mtɉY̭/SZs$S Ha7x+?l(Z7$cyR}O>k s%? |tpwS&~;bYlٞJ\?E9cߔ8' 1^-J_9y3ʷ~R)lgFGYJP[Vb"\Ēncݮ=r{ ^+PS4Cl3]jގ 5tjtxw]FY"_pj %\|pPԗ2K#ˏ dcP)ƏC؞w%%JXUJ1t پ2NVM;܉d!løجrò+=9CjXrٮ\vJ]\ =49}.gJ8 Stۃ72.6jr ྜV%[epg)O;K<8$.O ;2`p( DRN0gw=~hY3Qg%'.52GLR~[enœ5h ',J MK ?-rJ01^c*}a㰮Y-jجdGEZ.B﷧/(EaS›ko`@P庼i!Ӏh5g5IبgSu[/WVm"he~Bs(DCtK Xk]n*Bk;[Nx6-ħp,}퇈9{G?ڻ4g #w/%d)@+ls $,!dKa3s ~@*a\?z~# ̞Zۑtw6\PTv[<~3ƋUr ȉ]O Rx;2~.þ 5M@yƭv$sʭB?{i BQ;;}qѴub7:{{c=L]ۀ=I>-9~KiԜk{~.]}CtB~XfؠS Jv!,]_|-ܛf'-H!aǶncf< _(VrkiZack^竄81V'R$h /K +E/*:W,xL0ƘJkew!Dæ>C%P9sUjN4;+H=h4$N]##D_TrSYaQZK3ėAҘȏldL`{S. GSV.VgTM>uCi-Me_u.CZVgR;=2HLK=fvcvqicaE_5c/z2P r$wZkY'lM%eӔ+- Ѵ3Y$)cf_6(PDYT_' @kD_!4iOLʧM+QxKE?w,bnz5Ml tmB%ӱw HP{t&2J*M 3 ZTY0; hiN\W cN$r{ #|LN~ZovvկBu)Q{d0>mn93Mu\^D$|$p>E% PܣJ1pd`[an꼒 5^#ذnV@%:,udKkCIq)?Y23j0~vg%du9[b,KaZbx[Xj@MKu7רzd텖ܙ0@@fs))>&P%m$޾(?>k1>9Z]^F{!Cd/wT[ c=wm\LĺڧLlWŪ5:+~ ;Ll>pN2 D3X"hT2@C> ]ԙ1Ռ? <}rݚOP9w D\7>1&xT6.!|U(CxWf^s!l=K|%}4z3ƫ*< VK`F8.9aQ)gc<ۿ#t\pdUS.<:n`82m6%G:w=_#;X!&> @#V'NY%IZS? aXҫNlo®~xsƬKܞC7F)d'\/ܛxe GoIDNkrjCc]n=[E'IB:{߂>bYDfb'5cgKb_PUMvi_nMcgmNc6f97CйP GPLnrp?j{]HMvl%WHРA>C*-Vvľ+J,[.̑$ꑑ'ID,J)2~xȢ-ĎGK`: OkBm7spj s[r+s$!3&$]˷q](G'.6c|'CLjD{IБMBDDo@(u]wR}6꜑ EEe[0)rjGx%`5PVg7`Fg`lp"@% [f5νoGTwMz%=߇Sc/qD=5u=g}=[E;'Q]'3] fRr!ֹfZqIQ g^V%wg-SliVdV+#7TeIMt<(ʠD@`!ˎ˖{UoWlN}#ʝD 2 uU5z$u3Nú 3g65dzy &L&`P+ B" %̀?U9<<V"CnX?WPcOUG}0 [JErƈdXXg.܉\Ul wTX$gqu/הU|¶czr6o9&*J~;~{/ (ֈz)K9 ;l:|jDvx+@W`.bc<K#6̢ obIslc#+' Ic%p~h|_68dmL(^,Qf-hMDOzX4L@b~M!9;4&dm_2fE {5@jr/ja$_i1PYjT >ȳ-~F ok0R;勏nQЭ*"cdʦ/cgr9mp8b邺(H۽ TQuXV `H ;ii}4ɀri~aox,+9K{bPSɰeIvŞpf̕(zcVL-1llau^-$i4o 8Q`}LCHc*4+NY?ѵU+wcA_o; %?Z` - )w;2$RgM4p;GRIA&Pcԣ?[!v؄DIy,0O]X"c;Y.Vuʁ;'B~(o%?%z]׶)'fzތ-%:̈́뇿Ld84<}Qe`5Bl~ʶj#8 l]D󼠸(sKf2TX`ft駹8+eՠ&;$IHExYpU9DTqn6ʵ=bڶ e\xJ~/̻I'1h7IiՑiҍ! ͨn*nhğ72Vx*OM$awJ:gk(X\#5@NLٿέB;1q1w,[( 1kp-~+c Memr-f+q )Qh0MZ\i+^'ʮ^ܞn^4fҠX4,"}o B . oo{iaTsתY$P+R"2tBv tz@ݟT4uA8/YKgПn3^ZV({Jf66]ia<X<CDEt2,&$ZYdUPod X)ݕVb08ܗQ*{F@{-FM?FV?3S@+(h3G=\-je땎rxbZ71)RǶjꫤ~yu$"Xl01 f(M3ⱣFBm\&r~]D4,Vr4A&?!1jI;:݄ee]|$ҳ͉lƞ|a/ʀU, :OSi#6ܲw?oܙ\~LL4d'%Ԕ gGotiwճ;@SdږI Jܐ7RʟMLnx>. hiI(X?vz@5j"iM-#!;G]ޞa}WB^cr8e10~\>4o,7:|XnPޕm `v#jÖc5`aDNcX>i`:~1{{_QJĨOM֧1,lehhU$B}K0EH[Ou!XیM]^i$xb<9%nP7 O^%q?wfn{b?4j_2~٪MS$x=N298FKV|o6mRU DIN>Ur5 *8M9ck/nM 0:שd@ Ns7ݎYNaI@̑ Wi65/)KbQ4ZW\ $6 v4v$[yWeLzN q^߆rqj֏$#-7AV,O> X.U⟫8tX5uRCYcFu~v?8ƶUm){{<`-+X-Ey]a%~m5Yr;P*I^Ïf9]dE2`8޸K~n %UuҪ+;ܡ.+=kww+RԒdC-ừ oEIv\BLX_6 (!*)YJ&(icN_Ơ:O׸w Z]=%O=V")ZW:xs*]++C[+˙X; _΂ %ԋx)csՈ:/ٌdԺ%\1x=j tx]$]$ %0&BD}SX\Q(g/jO&ʿG94WJ\+!{(Az?\bcbjPꔰ.L5(]; Y-/Eoa"C/щ3{}h=,4Bu e׋c~/AvƆMpOLoUԞb?Ջ1ȑ &Z髼jF5uݹf/\bAa|4yCc&Kksf 29(u|[:1=Xn򒞍jc| lFy_%41pBYznprVAeȴ.j_# 2ơ[B؄&83"W0-)'@r1$@:.Ps|o /y@@訠MRT/K4PW2Ez 0}ڭj_FXQKx "5CefCӠv0Zr$m+34zԩ* T3;RGF{d+m.BS%j {ehZY4QvᲹ72CFqBi[-]%Դ7 p#`|*LC_u ?WS.9h€Wm+ӟ= R?1bDg-1cq{&Ksq1F%cy"hOV^KQHmU֭hbsҋfnjX U(<)+8^!>,,`Zg~ΒnB8̧*E.L_l^,Ig(b(L0h|arh¾.M?O7USYBoj]鷩VꚈ ѩ0 ޱ6T}k-M7]}_MYF0!>5%;xݷ5(a-0O|n3̛1l5*q|8ְYS-)?!uLdэW)Ι^ nyϪ0\ʄxYSËꉟgEW\0|!# S~|􄭪Q+?Ǯ*yJnfzg[.TmRUa"]vLTϠگ4Q^ZG:U?b3?++S_?29~yiU2fpN㛗rJa#*ɍ9W7/BCLRR6 VO4r-f#jR|(ݪE"HLZq-$1ڪxj\cg-`!B@vIKҩFE /Pk]׎n!f0E\ ; jerZt"N|`'@Xz"~ٛ2ftJIu4`" QJ b/Z* l=K:l&OiU:k _+\a 4 _ U LiޘlGlMhxcuƔ|]:c;o 3{r3LSfV_>hK֏2zȆ6;f]C8oz0)aeoR9֮͛. VGN*DcUW_alXP8ԦQԔu; SߤZlϱ kT)qK;=P[A$ 33Y0;h\?^[&{c$iݼh>$2pMչ; ɻ|#ĥMWقqa/v1QKIyҕV|AyeI)!ݗD?`Sjyun?-6\]9Yu|rm)ЂzZWH]M`jSc. Ըy'X)ɭK,^FX\y*Yx]&8x/@? 'ۼB2oU^ukoz" +bG&4bO/Љ#L7[Rwm]I*ǫV11e.mkZC h>q#өq -.Vʜ #q* !> Z"TW왍l٣HE%r}kZ~NyS5_r1 ]P{-.Wk}B&ECI˻:~67[E4īX 4Ge&^(M:UVl%DGaa. aLW.ҦͣڸlEx"G4r)sMn&5[u~DN$$欘^%d D`Ә%VImv>yN e|8C ݞ ku mAQR14d*+8>k K-CZ;Te${7aK_9t/Aݒ:Kw7ߘX37%goF!DcrLL>ۊWr| _${?F+}eRK#}03썄u:|%?Z ⒅3¹gCȏH\/XOTA}j.ՐbޭyhTu[}.c^X ,~0x'"d \+Ol˲a]5|56[h$mC9{+ 3*wOk^-}KqW&A9zPX < R;%F8[paH-~OyQf'[R9͜y =h|؉XyB[g$|V| TV0H5r'smE/}>b5!7nhWZ6lZ r'uoEYìMV8P:Ly>䑋vP]f;Gd,Fh$?GHa>ʒAՀ92=8bJqR~lif Pw' ?1u5A7r(m6& 7ceuΫrY53@*Jǀ~nCxKtZlq*ڜ>؆__tZ٧|A朳Lje/ʑvs!IE &aŐH i[woGȄNJOb)ۅ+|tKW뀚C_w@m]҆kͼE `j@ L5V,^@?_g'f(d/@o "CNJzUc3Ѧ+/D;%VgЃo >H&$@dIMȣ-SߨdRY<_1E |n^ZFFuw򽕐]<#]mTaO"Q;!~$c~Tl}y"L6ؙBLJ{}٘yV?e:WY8LovPA%D ?%5q@DpQ=qhbFew-7Ll H(-2$7XrФV.[TT4Şw.gYWx#6IwAG;,69 K2@9 u*5Ee ͪGk8LyprЪM7bt. W5 Uò>ۘ_.v/ r3D\cZ n)t^+q&}̨~xU",K(7G.e8 5}J`2A"I;=;ZD +22Suʢyh4\sY+eIٸ+y3]OWr6>3)EuT^3C6Actgdaت&8v^Qeǣ|a7T1K,KEe6 &9gSتZHO@{6i\c,D]HYpTcң鯢JZD:h59L0X)y+Hf͓蟟_TD!U<pYl5U"+IHhrt{ή}^+9} Ͱؔ J fRqEFv )JƛLyLOdhL F?5!I7.b3{LtN[9/fO9Z%X%9hj¼Fߴ iM5QڤK1*"cF A#9_~*<w6L.5x1bL]޹1Gt5&5enIc0I5J`r3ӝSt/98 n0-Z)rdN<5ٶ=raYGFPn@X:Q 5IM*}' S-GOE.M5F`Q1oQњ2]R[I9#rKb~V m +أhlBTbA2!Uс#N7,yk]d|eA3 "nێ:ODU&Vb]ZF3J״rmOH0@02Tq~pdY8sgʴgƲg`E C-j_f,4W-g^ë9đ2 OSdٞ@O0 Qp =CdմQ9WP^RQ1W$4Vm}ɴM@'Z3y%e$ʥZS̈́†IJVv^K- @BӻRQ^{0%!k7QlixL]>m~gr p ȲuB>CK3D4e/\_KN"(f'|/j~ ⯖6zE`E~%SBMDxx{>/kiޯ(;/>T/9 v-cDA|E`3fV2<,R?'(+FNH}1k8p^tĿ ֶ)gYZeaf/inst/extdata/r200_dat0000644000175000017500000011346213534247654015030 0ustar nileshnilesh# Report: # Metah: Weighted RoTS, version 2.1.88M (#DEBUG = 1) # bQAP (0.1.88Msvn) # Data File: /home/manu/personal/2005-JMMA/data/qapUni.50.p75.1 Size: 50 Averages: Distance=47.49 Flow1=49.90 Flow2=49.96 # Parameter settings: # number trials : 200 # time limit : 3.40282e+38 # seed : 1234567 # num weights: 100 # Taboo Search Length : 1 # Initialization time: 0.004 s # start_trial(0) : # end_trial(0) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.9121 s # Pareto: 0 Size: 7 5261548 5340738 5283204 5340630 5287522 5336320 5291202 5331366 5292270 5318304 5298876 5290408 5312952 5277832 # start_trial(1) : # end_trial(1) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 1 Size: 4 5246946 5368942 5249068 5328154 5277710 5321710 5280132 5281080 # start_trial(2) : # end_trial(2) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 2 Size: 2 5255914 5312620 5285994 5294248 # start_trial(3) : # end_trial(3) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 3 Size: 6 5254586 5341368 5265448 5336434 5266332 5329290 5278158 5328006 5293084 5304026 5316378 5285680 # start_trial(4) : # end_trial(4) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 4 Size: 5 5257008 5385896 5260020 5354180 5261932 5351978 5265120 5343482 5272604 5280450 # start_trial(5) : # end_trial(5) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 5 Size: 3 5251436 5304740 5260634 5289432 5261388 5278662 # start_trial(6) : # end_trial(6) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 6 Size: 3 5260462 5303782 5309662 5298112 5338894 5292426 # start_trial(7) : # end_trial(7) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 7 Size: 4 5238158 5302220 5266616 5301604 5277362 5291346 5328374 5283152 # start_trial(8) : # end_trial(8) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 8 Size: 5 5259568 5344514 5260078 5323590 5275688 5304758 5295860 5299490 5321894 5280216 # start_trial(9) : # end_trial(9) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 9 Size: 5 5252950 5337456 5258962 5303668 5273430 5301298 5311040 5291910 5319530 5279154 # start_trial(10) : # end_trial(10) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 10 Size: 6 5255088 5362366 5260872 5337164 5276254 5307774 5278846 5302382 5287324 5301484 5290398 5284198 # start_trial(11) : # end_trial(11) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 11 Size: 3 5257462 5328600 5262892 5302082 5306682 5293358 # start_trial(12) : # end_trial(12) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 12 Size: 5 5255536 5369466 5265974 5314044 5276688 5311924 5301892 5288482 5319394 5278344 # start_trial(13) : # end_trial(13) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 13 Size: 4 5243484 5327056 5262810 5312496 5265234 5288336 5305096 5285540 # start_trial(14) : # end_trial(14) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 14 Size: 3 5254326 5373688 5258282 5328368 5277040 5290704 # start_trial(15) : # end_trial(15) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 15 Size: 5 5251220 5334532 5258622 5318388 5274694 5318056 5275588 5299916 5307866 5281706 # start_trial(16) : # end_trial(16) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 16 Size: 4 5252238 5320246 5297660 5319870 5302690 5316084 5305034 5293474 # start_trial(17) : # end_trial(17) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 17 Size: 3 5256636 5364154 5262016 5294988 5264892 5269504 # start_trial(18) : # end_trial(18) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 18 Size: 6 5228108 5347760 5281796 5327312 5286788 5320758 5292364 5312668 5305786 5297640 5319554 5296596 # start_trial(19) : # end_trial(19) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 19 Size: 3 5258012 5349460 5262532 5294728 5311364 5285878 # start_trial(20) : # end_trial(20) : Pareto Size = 9, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 20 Size: 9 5262846 5351252 5268224 5332648 5286336 5329542 5291024 5323824 5291052 5311388 5322204 5305956 5337348 5305340 5338120 5302878 5350520 5288884 # start_trial(21) : # end_trial(21) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 21 Size: 6 5257942 5373498 5259552 5357156 5267384 5330886 5279304 5315890 5286088 5309012 5287040 5284718 # start_trial(22) : # end_trial(22) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 22 Size: 3 5253764 5351678 5265558 5309298 5290820 5295606 # start_trial(23) : # end_trial(23) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 23 Size: 3 5243858 5338614 5261776 5332340 5286980 5290820 # start_trial(24) : # end_trial(24) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 24 Size: 4 5251984 5322490 5293588 5309414 5295572 5298376 5313146 5297746 # start_trial(25) : # end_trial(25) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 25 Size: 3 5238488 5294964 5265768 5287358 5274538 5282446 # start_trial(26) : # end_trial(26) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 26 Size: 3 5240112 5318798 5285086 5296794 5297420 5288042 # start_trial(27) : # end_trial(27) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 27 Size: 3 5253562 5315656 5258408 5295302 5297444 5294720 # start_trial(28) : # end_trial(28) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 28 Size: 3 5243092 5314062 5243248 5286716 5296000 5284678 # start_trial(29) : # end_trial(29) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 29 Size: 4 5254042 5338584 5260876 5330882 5276202 5313170 5286874 5286552 # start_trial(30) : # end_trial(30) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 30 Size: 4 5249126 5334774 5263022 5312306 5281242 5309470 5284318 5282482 # start_trial(31) : # end_trial(31) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 31 Size: 6 5257878 5347536 5275036 5339680 5281738 5334044 5282030 5309294 5292442 5286754 5305288 5276742 # start_trial(32) : # end_trial(32) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 32 Size: 4 5262822 5336322 5287408 5314374 5288480 5303274 5297530 5296626 # start_trial(33) : # end_trial(33) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 33 Size: 4 5262302 5350178 5268796 5320690 5287784 5307578 5303060 5291696 # start_trial(34) : # end_trial(34) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 34 Size: 4 5255158 5363060 5265740 5316854 5280842 5287822 5295982 5271860 # start_trial(35) : # end_trial(35) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 35 Size: 4 5236920 5323144 5275658 5316252 5295276 5291846 5320036 5287242 # start_trial(36) : # end_trial(36) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 36 Size: 7 5245320 5350028 5265846 5346862 5269172 5329214 5289792 5317436 5291128 5309678 5300432 5300306 5320356 5299120 # start_trial(37) : # end_trial(37) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 37 Size: 6 5256692 5369864 5258244 5351398 5260990 5318888 5276810 5304172 5307654 5301888 5349612 5294114 # start_trial(38) : # end_trial(38) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 38 Size: 4 5245000 5402680 5261294 5355072 5280504 5342928 5281916 5279952 # start_trial(39) : # end_trial(39) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 39 Size: 1 5256756 5291420 # start_trial(40) : # end_trial(40) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 40 Size: 3 5240372 5339244 5269234 5300968 5292588 5291350 # start_trial(41) : # end_trial(41) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 41 Size: 3 5238810 5321212 5254626 5315172 5260078 5296038 # start_trial(42) : # end_trial(42) : Pareto Size = 8, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 42 Size: 8 5262120 5384314 5262892 5343884 5264312 5331836 5279288 5323156 5287766 5316696 5288662 5313878 5299640 5305808 5304502 5281312 # start_trial(43) : # end_trial(43) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 43 Size: 6 5251856 5339406 5260988 5322928 5285486 5322566 5290320 5308872 5302434 5302166 5318698 5289714 # start_trial(44) : # end_trial(44) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 44 Size: 4 5235812 5381636 5236334 5354730 5270128 5301072 5305764 5283634 # start_trial(45) : # end_trial(45) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 45 Size: 2 5230660 5301340 5293106 5289332 # start_trial(46) : # end_trial(46) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 46 Size: 4 5228398 5320810 5238488 5307248 5282654 5305988 5299924 5287560 # start_trial(47) : # end_trial(47) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 47 Size: 2 5260116 5305420 5269468 5286560 # start_trial(48) : # end_trial(48) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 48 Size: 5 5249848 5325302 5296612 5310710 5309120 5306430 5317752 5305550 5342704 5304442 # start_trial(49) : # end_trial(49) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 49 Size: 4 5261944 5309926 5288296 5307688 5312776 5304054 5327484 5298724 # start_trial(50) : # end_trial(50) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 50 Size: 5 5253764 5347418 5257354 5335486 5259120 5308196 5319244 5299520 5342200 5282958 # start_trial(51) : # end_trial(51) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 51 Size: 4 5261206 5322822 5288592 5320284 5316748 5302208 5335480 5286420 # start_trial(52) : # end_trial(52) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 52 Size: 6 5247862 5344898 5267480 5338488 5279426 5311808 5286042 5310946 5297888 5298750 5304450 5295776 # start_trial(53) : # end_trial(53) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 53 Size: 4 5242284 5315430 5299172 5300900 5342822 5296088 5358172 5295926 # start_trial(54) : # end_trial(54) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 54 Size: 6 5235754 5344592 5258078 5328266 5264712 5304666 5280648 5300618 5285308 5276622 5310290 5276322 # start_trial(55) : # end_trial(55) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 55 Size: 2 5242082 5306670 5328674 5299828 # start_trial(56) : # end_trial(56) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.9081 s # Pareto: 56 Size: 1 5256734 5284984 # start_trial(57) : # end_trial(57) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 57 Size: 7 5242010 5369404 5248032 5330344 5286322 5316662 5289386 5307442 5326316 5306350 5328532 5295078 5341172 5287608 # start_trial(58) : # end_trial(58) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.9401 s # Pareto: 58 Size: 6 5260496 5391364 5262604 5351568 5263442 5324760 5277952 5316794 5292546 5307408 5304486 5289422 # start_trial(59) : # end_trial(59) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 59 Size: 6 5259588 5363620 5260464 5334398 5271884 5333010 5276300 5315924 5299660 5308920 5326834 5306774 # start_trial(60) : # end_trial(60) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.9281 s # Pareto: 60 Size: 1 5234320 5262976 # start_trial(61) : # end_trial(61) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 61 Size: 3 5254722 5330798 5258722 5312162 5306164 5277030 # start_trial(62) : # end_trial(62) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 62 Size: 6 5252284 5385672 5270528 5327488 5281022 5314692 5296408 5305058 5318856 5301588 5330258 5288516 # start_trial(63) : # end_trial(63) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 63 Size: 4 5252048 5332752 5259582 5296404 5290924 5292414 5296594 5282124 # start_trial(64) : # end_trial(64) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 64 Size: 4 5254176 5344870 5264204 5335046 5268688 5308428 5275096 5304396 # start_trial(65) : # end_trial(65) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.9081 s # Pareto: 65 Size: 6 5253734 5350752 5266398 5327920 5274224 5324300 5281920 5313874 5313554 5307624 5316664 5301172 # start_trial(66) : # end_trial(66) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 66 Size: 5 5266576 5355532 5269280 5344320 5276966 5342668 5278770 5314612 5315252 5296102 # start_trial(67) : # end_trial(67) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 67 Size: 6 5269788 5328620 5273672 5324206 5287004 5315594 5302912 5314092 5308178 5283444 5347098 5281286 # start_trial(68) : # end_trial(68) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8961 s # Pareto: 68 Size: 2 5250266 5283778 5291518 5274832 # start_trial(69) : # end_trial(69) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.9521 s # Pareto: 69 Size: 6 5263826 5354972 5273308 5346828 5274692 5341542 5280736 5323828 5282256 5319488 5286150 5286728 # start_trial(70) : # end_trial(70) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.9401 s # Pareto: 70 Size: 2 5256726 5303656 5291596 5289432 # start_trial(71) : # end_trial(71) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9401 s # Pareto: 71 Size: 4 5258136 5343598 5269662 5334022 5289226 5315086 5292162 5293562 # start_trial(72) : # end_trial(72) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 72 Size: 1 5248776 5290344 # start_trial(73) : # end_trial(73) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 73 Size: 5 5218454 5334926 5260938 5322806 5291370 5297718 5304592 5287938 5314982 5285268 # start_trial(74) : # end_trial(74) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9081 s # Pareto: 74 Size: 4 5258702 5360220 5263454 5334720 5275412 5330956 5291384 5277334 # start_trial(75) : # end_trial(75) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 75 Size: 1 5245122 5270788 # start_trial(76) : # end_trial(76) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 76 Size: 3 5258602 5325318 5290268 5311812 5314862 5296934 # start_trial(77) : # end_trial(77) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 77 Size: 2 5241944 5296114 5282260 5280460 # start_trial(78) : # end_trial(78) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 78 Size: 4 5250786 5332162 5280702 5314016 5290956 5292046 5293478 5285544 # start_trial(79) : # end_trial(79) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8881 s # Pareto: 79 Size: 1 5244758 5281034 # start_trial(80) : # end_trial(80) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 80 Size: 6 5244094 5358484 5252686 5336058 5261452 5327250 5281694 5319124 5283896 5307338 5304106 5265076 # start_trial(81) : # end_trial(81) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 81 Size: 7 5263662 5380452 5269740 5337070 5285200 5324712 5289394 5324456 5292320 5297070 5320574 5292384 5350206 5284230 # start_trial(82) : # end_trial(82) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 82 Size: 7 5254466 5343314 5273292 5327148 5273646 5321210 5281792 5318952 5297958 5308136 5305154 5302466 5313004 5296520 # start_trial(83) : # end_trial(83) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 83 Size: 3 5274740 5318122 5278544 5301430 5362482 5295038 # start_trial(84) : # end_trial(84) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.9081 s # Pareto: 84 Size: 2 5249768 5339684 5258262 5293812 # start_trial(85) : # end_trial(85) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 85 Size: 2 5256640 5315028 5306908 5297420 # start_trial(86) : # end_trial(86) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 86 Size: 4 5245982 5344194 5258992 5333040 5287224 5324826 5288672 5284450 # start_trial(87) : # end_trial(87) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 87 Size: 7 5255464 5371998 5261372 5346970 5263790 5322536 5286590 5321710 5289168 5317450 5297930 5309896 5307946 5278906 # start_trial(88) : # end_trial(88) : Pareto Size = 10, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 88 Size: 10 5262622 5400986 5265912 5382320 5270982 5378326 5278382 5371032 5281176 5350530 5285532 5339452 5292918 5326392 5294868 5309878 5327076 5306252 5332918 5296722 # start_trial(89) : # end_trial(89) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 89 Size: 6 5249178 5355160 5258192 5321030 5264166 5315014 5284102 5310674 5292936 5307192 5304938 5274502 # start_trial(90) : # end_trial(90) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 90 Size: 5 5251208 5351068 5257866 5344442 5266680 5319614 5273044 5309560 5331924 5291808 # start_trial(91) : # end_trial(91) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 91 Size: 6 5235292 5347606 5262632 5312126 5275892 5306426 5298398 5301830 5325094 5297634 5334632 5281888 # start_trial(92) : # end_trial(92) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 92 Size: 4 5250116 5352672 5258824 5343600 5279978 5309544 5295378 5301240 # start_trial(93) : # end_trial(93) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 93 Size: 4 5246462 5310508 5291544 5302102 5319288 5299960 5325884 5285786 # start_trial(94) : # end_trial(94) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 94 Size: 3 5252000 5302482 5293538 5300674 5303910 5288250 # start_trial(95) : # end_trial(95) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8881 s # Pareto: 95 Size: 2 5245366 5308014 5256896 5298362 # start_trial(96) : # end_trial(96) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 96 Size: 2 5256672 5307198 5260802 5304284 # start_trial(97) : # end_trial(97) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 97 Size: 3 5259914 5376072 5261922 5352874 5266982 5285696 # start_trial(98) : # end_trial(98) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 98 Size: 3 5260882 5348806 5263884 5318024 5270396 5286306 # start_trial(99) : # end_trial(99) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 99 Size: 2 5250308 5316120 5252958 5293300 # start_trial(100) : # end_trial(100) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 100 Size: 4 5250390 5329390 5261540 5328954 5289164 5328796 5290310 5275050 # start_trial(101) : # end_trial(101) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 101 Size: 5 5253072 5361462 5254608 5337038 5270882 5335940 5275714 5298076 5300910 5293890 # start_trial(102) : # end_trial(102) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 102 Size: 5 5243478 5344086 5267936 5341394 5279958 5332910 5280782 5314720 5285232 5275010 # start_trial(103) : # end_trial(103) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 103 Size: 3 5235504 5320670 5263384 5310056 5302036 5304832 # start_trial(104) : # end_trial(104) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 104 Size: 3 5227330 5330544 5240298 5280132 5308070 5275390 # start_trial(105) : # end_trial(105) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 105 Size: 1 5248426 5277914 # start_trial(106) : # end_trial(106) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 106 Size: 2 5255756 5317174 5274796 5273690 # start_trial(107) : # end_trial(107) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 107 Size: 5 5244958 5357934 5261804 5337972 5265596 5314642 5295872 5301766 5302656 5296712 # start_trial(108) : # end_trial(108) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9201 s # Pareto: 108 Size: 4 5265300 5396848 5278934 5355400 5286066 5343848 5288282 5277112 # start_trial(109) : # end_trial(109) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.9241 s # Pareto: 109 Size: 3 5248312 5313382 5278584 5288376 5350914 5273140 # start_trial(110) : # end_trial(110) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.9201 s # Pareto: 110 Size: 5 5260570 5366182 5261138 5327354 5265384 5319300 5276072 5315454 5320900 5292374 # start_trial(111) : # end_trial(111) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.9241 s # Pareto: 111 Size: 6 5259020 5371016 5262886 5316222 5266652 5314362 5268656 5314344 5287836 5305634 5340968 5303026 # start_trial(112) : # end_trial(112) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9201 s # Pareto: 112 Size: 4 5246474 5346104 5263294 5310064 5270142 5303812 5272096 5300444 # start_trial(113) : # end_trial(113) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9201 s # Pareto: 113 Size: 4 5263220 5378332 5263998 5327640 5267114 5307732 5330296 5307354 # start_trial(114) : # end_trial(114) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 114 Size: 4 5262548 5402950 5270176 5345758 5275424 5318398 5276992 5236250 # start_trial(115) : # end_trial(115) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 115 Size: 6 5233790 5319090 5264518 5319008 5264536 5318920 5276542 5316952 5288210 5298584 5304666 5292444 # start_trial(116) : # end_trial(116) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 116 Size: 4 5254910 5338252 5260136 5318360 5290766 5300026 5334682 5290058 # start_trial(117) : # end_trial(117) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 117 Size: 3 5249998 5357374 5267810 5305306 5297790 5288126 # start_trial(118) : # end_trial(118) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 118 Size: 4 5246196 5351106 5255360 5314966 5265678 5297074 5295686 5284642 # start_trial(119) : # end_trial(119) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 119 Size: 3 5262708 5311982 5269482 5307826 5305344 5288686 # start_trial(120) : # end_trial(120) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 120 Size: 5 5271874 5369380 5277576 5340570 5280818 5291898 5282712 5289454 5300780 5280476 # start_trial(121) : # end_trial(121) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 121 Size: 4 5248424 5335144 5249960 5331024 5256802 5285296 5298484 5283738 # start_trial(122) : # end_trial(122) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 122 Size: 6 5256520 5336596 5260378 5322566 5273802 5311874 5288902 5307538 5311962 5293074 5323786 5288510 # start_trial(123) : # end_trial(123) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 123 Size: 4 5258636 5364368 5259878 5327640 5268400 5303050 5307924 5295254 # start_trial(124) : # end_trial(124) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 124 Size: 4 5237430 5357268 5265556 5342644 5286146 5304570 5325270 5280718 # start_trial(125) : # end_trial(125) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 125 Size: 2 5262556 5301992 5304798 5287750 # start_trial(126) : # end_trial(126) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 126 Size: 5 5244792 5329616 5302508 5327468 5305302 5316252 5320352 5313348 5339836 5298872 # start_trial(127) : # end_trial(127) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 127 Size: 2 5259772 5308780 5278412 5280542 # start_trial(128) : # end_trial(128) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 128 Size: 3 5258142 5333230 5284148 5329706 5305316 5292932 # start_trial(129) : # end_trial(129) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 129 Size: 2 5251582 5295028 5325122 5292932 # start_trial(130) : # end_trial(130) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 130 Size: 7 5253764 5377948 5261100 5376560 5262886 5348078 5268516 5331016 5284602 5308580 5304954 5307342 5350956 5306594 # start_trial(131) : # end_trial(131) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 131 Size: 3 5247364 5341168 5255072 5309098 5257812 5293934 # start_trial(132) : # end_trial(132) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 132 Size: 1 5248088 5300746 # start_trial(133) : # end_trial(133) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 133 Size: 5 5243774 5339600 5260430 5331044 5261064 5317618 5284230 5294324 5309232 5282052 # start_trial(134) : # end_trial(134) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 134 Size: 7 5210172 5342470 5268604 5332856 5272310 5329524 5287224 5313622 5297324 5306942 5297552 5295804 5319088 5290708 # start_trial(135) : # end_trial(135) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 135 Size: 4 5237578 5320140 5267828 5311316 5293642 5289788 5315048 5287112 # start_trial(136) : # end_trial(136) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 136 Size: 4 5256000 5378382 5265996 5347036 5272834 5320852 5296750 5294544 # start_trial(137) : # end_trial(137) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 137 Size: 7 5248054 5337248 5271552 5336002 5276270 5319376 5282786 5318792 5289352 5307728 5299360 5294498 5335696 5287664 # start_trial(138) : # end_trial(138) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 138 Size: 4 5249970 5351738 5262156 5329990 5273030 5300160 5284834 5268814 # start_trial(139) : # end_trial(139) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 139 Size: 4 5260472 5322856 5267366 5309662 5294148 5305270 5356184 5300892 # start_trial(140) : # end_trial(140) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 140 Size: 4 5247614 5319096 5255140 5297600 5292146 5295294 5292856 5274260 # start_trial(141) : # end_trial(141) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 141 Size: 4 5241520 5324764 5269646 5323274 5271470 5303358 5280230 5283868 # start_trial(142) : # end_trial(142) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 142 Size: 3 5251808 5307900 5319016 5306842 5325528 5302748 # start_trial(143) : # end_trial(143) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 143 Size: 4 5232352 5331690 5273332 5316496 5279668 5305118 5331000 5299232 # start_trial(144) : # end_trial(144) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 144 Size: 6 5256082 5351070 5270108 5341410 5271946 5331824 5289960 5321778 5298824 5298102 5316372 5297098 # start_trial(145) : # end_trial(145) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 145 Size: 7 5240608 5349646 5256128 5346218 5261404 5345828 5270440 5328984 5275350 5303866 5279460 5299088 5312672 5290524 # start_trial(146) : # end_trial(146) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 146 Size: 5 5229068 5331358 5247820 5319718 5279928 5314066 5293434 5301422 5293870 5284408 # start_trial(147) : # end_trial(147) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 147 Size: 4 5265888 5381896 5268672 5311472 5302546 5299700 5336824 5287200 # start_trial(148) : # end_trial(148) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 148 Size: 5 5246992 5371468 5266244 5308672 5276688 5302090 5315516 5294950 5319938 5284618 # start_trial(149) : # end_trial(149) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 149 Size: 4 5241468 5358336 5244606 5340366 5267342 5297432 5332938 5276904 # start_trial(150) : # end_trial(150) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 150 Size: 7 5244244 5376114 5250468 5354044 5278652 5340352 5281488 5333600 5284324 5310560 5331200 5296610 5333906 5293128 # start_trial(151) : # end_trial(151) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 151 Size: 7 5255280 5352872 5268406 5343326 5289330 5342400 5292076 5336504 5292286 5312784 5301596 5307448 5391774 5307228 # start_trial(152) : # end_trial(152) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 152 Size: 3 5255694 5351886 5271362 5307726 5283454 5285084 # start_trial(153) : # end_trial(153) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 153 Size: 3 5253714 5313704 5263676 5299808 5275022 5284336 # start_trial(154) : # end_trial(154) : Pareto Size = 8, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 154 Size: 8 5241616 5362236 5255426 5346276 5262784 5332708 5269108 5325460 5277288 5323876 5277498 5307024 5310020 5301512 5352002 5293254 # start_trial(155) : # end_trial(155) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 155 Size: 6 5252906 5366638 5257382 5334862 5258428 5308712 5303022 5298936 5327690 5289806 5339530 5283106 # start_trial(156) : # end_trial(156) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 156 Size: 6 5214054 5387936 5244092 5333448 5290884 5324472 5299138 5315958 5301466 5313770 5315072 5295644 # start_trial(157) : # end_trial(157) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 157 Size: 5 5251526 5385648 5266708 5365138 5267846 5303184 5293826 5297860 5319616 5295318 # start_trial(158) : # end_trial(158) : Pareto Size = 8, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 158 Size: 8 5246382 5364572 5255166 5321574 5287178 5321104 5288952 5315294 5289520 5313774 5289734 5312258 5295552 5298740 5320318 5292216 # start_trial(159) : # end_trial(159) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 159 Size: 7 5255790 5350878 5270496 5328194 5273050 5323448 5283064 5322406 5299868 5311574 5311458 5296820 5369294 5296484 # start_trial(160) : # end_trial(160) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 160 Size: 4 5263060 5345028 5263346 5329268 5263630 5309538 5270548 5274536 # start_trial(161) : # end_trial(161) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 161 Size: 4 5249782 5343552 5278364 5331734 5293258 5321236 5314122 5294300 # start_trial(162) : # end_trial(162) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 162 Size: 4 5248654 5311618 5273862 5309422 5282368 5301892 5323902 5294724 # start_trial(163) : # end_trial(163) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8961 s # Pareto: 163 Size: 4 5242876 5337732 5272238 5304110 5296404 5302756 5302736 5300562 # start_trial(164) : # end_trial(164) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.9201 s # Pareto: 164 Size: 2 5257106 5322472 5257872 5291056 # start_trial(165) : # end_trial(165) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.9281 s # Pareto: 165 Size: 3 5246412 5301200 5257102 5296406 5282938 5281232 # start_trial(166) : # end_trial(166) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.9041 s # Pareto: 166 Size: 1 5261344 5278434 # start_trial(167) : # end_trial(167) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 167 Size: 2 5207768 5285096 5251774 5262174 # start_trial(168) : # end_trial(168) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 168 Size: 5 5252476 5341930 5259994 5339162 5261246 5300000 5287272 5296960 5295622 5294608 # start_trial(169) : # end_trial(169) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 169 Size: 6 5226264 5328500 5277464 5326176 5283500 5325496 5292540 5307144 5297542 5293280 5302886 5289706 # start_trial(170) : # end_trial(170) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.9001 s # Pareto: 170 Size: 6 5258608 5349086 5262004 5348740 5271162 5328506 5278050 5304684 5298656 5286344 5351610 5279252 # start_trial(171) : # end_trial(171) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9081 s # Pareto: 171 Size: 4 5255400 5336540 5255508 5317544 5266526 5311184 5295340 5285696 # start_trial(172) : # end_trial(172) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8961 s # Pareto: 172 Size: 2 5250304 5297874 5283074 5265846 # start_trial(173) : # end_trial(173) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8881 s # Pareto: 173 Size: 4 5210334 5328068 5269816 5306036 5311530 5305230 5364628 5302930 # start_trial(174) : # end_trial(174) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 174 Size: 3 5240600 5302258 5303732 5299116 5315600 5295118 # start_trial(175) : # end_trial(175) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 175 Size: 2 5245444 5328246 5278910 5297264 # start_trial(176) : # end_trial(176) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 176 Size: 3 5262744 5333626 5286060 5321404 5303996 5286016 # start_trial(177) : # end_trial(177) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8881 s # Pareto: 177 Size: 4 5266860 5381622 5268472 5326842 5272178 5318748 5272624 5286186 # start_trial(178) : # end_trial(178) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 178 Size: 3 5252908 5329620 5266834 5322330 5271910 5286698 # start_trial(179) : # end_trial(179) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 179 Size: 3 5262210 5341652 5286860 5325636 5290370 5281614 # start_trial(180) : # end_trial(180) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 180 Size: 3 5266766 5332104 5274192 5325700 5290394 5286536 # start_trial(181) : # end_trial(181) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 181 Size: 2 5223996 5264934 5276944 5259324 # start_trial(182) : # end_trial(182) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 182 Size: 6 5254596 5376180 5269014 5329152 5274636 5306446 5297442 5301974 5299942 5300198 5311514 5299176 # start_trial(183) : # end_trial(183) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 183 Size: 6 5261394 5354636 5265378 5346184 5268934 5338140 5273124 5334504 5273154 5318460 5285648 5287704 # start_trial(184) : # end_trial(184) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 184 Size: 2 5244120 5337354 5256384 5285550 # start_trial(185) : # end_trial(185) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 185 Size: 2 5262862 5302662 5277674 5291722 # start_trial(186) : # end_trial(186) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 186 Size: 4 5255174 5330402 5276800 5312808 5293146 5279082 5346592 5266638 # start_trial(187) : # end_trial(187) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 187 Size: 7 5246804 5400388 5250178 5352570 5266038 5328910 5280858 5320198 5290784 5316988 5309158 5298146 5354416 5291594 # start_trial(188) : # end_trial(188) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 188 Size: 2 5259684 5349314 5262814 5286348 # start_trial(189) : # end_trial(189) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 189 Size: 5 5247922 5341922 5267178 5329290 5271752 5318494 5291980 5306488 5322930 5301076 # start_trial(190) : # end_trial(190) : Pareto Size = 1, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 190 Size: 1 5234970 5275712 # start_trial(191) : # end_trial(191) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 191 Size: 6 5254424 5378850 5255612 5369634 5260926 5349398 5267362 5338284 5273240 5303014 5280820 5289176 # start_trial(192) : # end_trial(192) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 192 Size: 4 5241760 5327686 5274282 5324544 5275572 5308086 5275822 5287264 # start_trial(193) : # end_trial(193) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 193 Size: 3 5255512 5333632 5267168 5322190 5282082 5279046 # start_trial(194) : # end_trial(194) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 194 Size: 6 5244070 5360390 5244866 5318190 5268138 5317572 5289852 5314910 5321016 5314668 5325172 5302966 # start_trial(195) : # end_trial(195) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 195 Size: 2 5223050 5316882 5339314 5304744 # start_trial(196) : # end_trial(196) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 196 Size: 5 5247650 5360362 5254704 5324760 5263442 5309510 5312364 5303634 5316266 5295334 # start_trial(197) : # end_trial(197) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 197 Size: 5 5264462 5341904 5267506 5312252 5268108 5297324 5294678 5290524 5304892 5288808 # start_trial(198) : # end_trial(198) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8721 s # Pareto: 198 Size: 3 5263722 5332598 5290170 5327584 5295962 5289366 # start_trial(199) : # end_trial(199) : Pareto Size = 9, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 199 Size: 9 5239548 5364766 5253792 5355244 5265338 5344000 5272150 5343382 5276076 5325734 5283462 5321062 5285448 5299064 5290246 5297754 5325178 5288796 # Average Number Scalarizations = 100, Average Trial Time = 0.8809 s eaf/inst/extdata/n75_dat0000644000175000017500000010173713534247654014760 0ustar nileshnilesh# Report: /tmp/32170/wrots//wrots_w1000l100_r10_qapUni.50.n75.1 # Metah: Weighted RoTS, version 2.1.22M (#DEBUG = 1) # bQAP (0.1.22svn) # Data File: /home/usuaris/manuel/bin//qapUni.50.n75.1 Size: 50 Averages: Distance=50.07 Flow1=49.36 Flow2=49.26 # Parameter settings: # number trials : 10 # time limit : 3.40282e+38 # seed : 1236855931 # num weights: 1000 # Taboo Search Length : 100 # Initialization time: 0.001999 s # start_trial(0) : # end_trial(0) : Pareto Size = 180, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 0 Size: 180 5402152 7084292 5408532 7046386 5413780 7038066 5418032 6993646 5434474 6975846 5436506 6974850 5437980 6956500 5442062 6954756 5446722 6940540 5448234 6938808 5453026 6931120 5462114 6930186 5464228 6919352 5464628 6909442 5466962 6897142 5469536 6893070 5472378 6874894 5482208 6872738 5488598 6871462 5492136 6860864 5495488 6848750 5500492 6839062 5509462 6833202 5512928 6824554 5515172 6818404 5524454 6814134 5529268 6803178 5530356 6779484 5547580 6763302 5550222 6763198 5552832 6752562 5560752 6743684 5564864 6735208 5569942 6729862 5573266 6701336 5597640 6684170 5597750 6679226 5608294 6667558 5614830 6665898 5622404 6657620 5625920 6649362 5627862 6640114 5628836 6636176 5651388 6626630 5652954 6624862 5659840 6594674 5669352 6587186 5678706 6583868 5679720 6576652 5692442 6564864 5694990 6562100 5698452 6551854 5713480 6511318 5733738 6502178 5744174 6496336 5744912 6491994 5753708 6487090 5754310 6480198 5755042 6478334 5768522 6474766 5775574 6465144 5783614 6460560 5788968 6443956 5800212 6438490 5803550 6421708 5806486 6420964 5826130 6408472 5838756 6388508 5842876 6371420 5856118 6366376 5867662 6345828 5886162 6327962 5894106 6325028 5904474 6307198 5910824 6299196 5921444 6296632 5935822 6283156 5940052 6282520 5940220 6279134 5944658 6276846 5954518 6263560 5967666 6248004 5976802 6238658 6002728 6205144 6025158 6175194 6042068 6167852 6050978 6158188 6068132 6153964 6071272 6137194 6081342 6131710 6098942 6115124 6108860 6110408 6112024 6098964 6124572 6090466 6127316 6086664 6141674 6069846 6149572 6062282 6157272 6049618 6178190 6042008 6183232 6035358 6183246 6034340 6188320 6030992 6202250 6015938 6204958 6007240 6205776 6004156 6225336 5993392 6230066 5982540 6239554 5980200 6247938 5969356 6255764 5967392 6263680 5962108 6270806 5950016 6274060 5947766 6286514 5932722 6319928 5907466 6342872 5890096 6373126 5867460 6392052 5854084 6410778 5824598 6422784 5821248 6423282 5817796 6427158 5816542 6436304 5811686 6450718 5805198 6459700 5799656 6474806 5780744 6481904 5775638 6489880 5775496 6491548 5772728 6502988 5753492 6516860 5745332 6523104 5743334 6529016 5730858 6534682 5726842 6539680 5724886 6547974 5724154 6561422 5717184 6562756 5706378 6587626 5692402 6618372 5671440 6622416 5669184 6631892 5662332 6636734 5658142 6640150 5657316 6662580 5647310 6664668 5642366 6673110 5636794 6675112 5629992 6692152 5625514 6696474 5611568 6725706 5603182 6735360 5592596 6744302 5590550 6755796 5571026 6776536 5567158 6778112 5561416 6784772 5559772 6789362 5555610 6802050 5549194 6834430 5537164 6837422 5532258 6843908 5530404 6844994 5513356 6866350 5500074 6891564 5494112 6905104 5493290 6916332 5492694 6923502 5486154 6930484 5477636 6949940 5476030 6953110 5474408 6957320 5465394 6963140 5464174 6982156 5460156 6983598 5454356 7006934 5447546 7007888 5441092 7044630 5439370 7054190 5423212 7112124 5408812 # start_trial(1) : # end_trial(1) : Pareto Size = 192, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 1 Size: 192 5392916 7037086 5421920 7018996 5422646 7015886 5424922 6978690 5429414 6949416 5453328 6948424 5454642 6927674 5456268 6924670 5458200 6908240 5465644 6892268 5472836 6880280 5475678 6863812 5481850 6861078 5497324 6853852 5501236 6849624 5502844 6817226 5516112 6795634 5531904 6791826 5535220 6784146 5538692 6778374 5544590 6768038 5553988 6756316 5555214 6751862 5565638 6737940 5569690 6730802 5569792 6729772 5571014 6725528 5574502 6723568 5576714 6720132 5582756 6715728 5588564 6707758 5590732 6697812 5598998 6696064 5604324 6677382 5612074 6675188 5618366 6659198 5620684 6658760 5628476 6645370 5631672 6624746 5647056 6617606 5648644 6616706 5652320 6616476 5657312 6614944 5670670 6600714 5675990 6583590 5678406 6580768 5685974 6580316 5686116 6574194 5688224 6568502 5698094 6565046 5702384 6554480 5703254 6551558 5714208 6548348 5715424 6536244 5716282 6532400 5740916 6505434 5741162 6494396 5751490 6484224 5760202 6479552 5774012 6464192 5775920 6456884 5785002 6446836 5794246 6441082 5800984 6434102 5804092 6433794 5806164 6422322 5817096 6410430 5817998 6403162 5827788 6401226 5849732 6384778 5851658 6376466 5859844 6361990 5865392 6354056 5874292 6344024 5884562 6335284 5896078 6325234 5903942 6308010 5920122 6296444 5924030 6285606 5930688 6284016 5944242 6267840 5946928 6264390 5951246 6262052 5954384 6261918 5958452 6260216 5971072 6243198 5983944 6226670 5996656 6212246 5997712 6206538 6045202 6166254 6061104 6146084 6072504 6144518 6110256 6103558 6112106 6093592 6121928 6089226 6128202 6082304 6135680 6075674 6147738 6067630 6161752 6058954 6165632 6054584 6180964 6044834 6181288 6034718 6198574 6017902 6209192 6009630 6212912 6000162 6225380 5995710 6241024 5984090 6252504 5975302 6260028 5959090 6267258 5956404 6281492 5944906 6295512 5942230 6299950 5934824 6300732 5928316 6304510 5921530 6309476 5920124 6315110 5913382 6324968 5909406 6329644 5905594 6334724 5894900 6353472 5878718 6357964 5874786 6361372 5868032 6377526 5867258 6385668 5851534 6394626 5844040 6421244 5826730 6427096 5818794 6430954 5816440 6442142 5807736 6448044 5801554 6456690 5795114 6463188 5785304 6470774 5780338 6478990 5774274 6489064 5771432 6502430 5764762 6504686 5752680 6522716 5746532 6525640 5741626 6529062 5741602 6535438 5736908 6551404 5720718 6558758 5710118 6577534 5708546 6580468 5706772 6581090 5700500 6597076 5696296 6601638 5693548 6605252 5692618 6605310 5681378 6612710 5677204 6615014 5675338 6626888 5665736 6629206 5660966 6640580 5646272 6667918 5644370 6674496 5641150 6677016 5638688 6683908 5636648 6698702 5615230 6699384 5613904 6712840 5595560 6743748 5588098 6746962 5578548 6761680 5577588 6766432 5567758 6773368 5556146 6800846 5548542 6819882 5544976 6825018 5535384 6837404 5532560 6838390 5527540 6848622 5523648 6855814 5521134 6862920 5511512 6867398 5510890 6870418 5510774 6875778 5506924 6879410 5494452 6898850 5481950 6928684 5474842 6943340 5474316 6950800 5464540 6960136 5450394 7023628 5440482 7044152 5439624 7059900 5438846 7073066 5435194 7074528 5430552 7082314 5418148 7120702 5411858 # start_trial(2) : # end_trial(2) : Pareto Size = 225, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 2 Size: 225 5410192 7055116 5412870 7051570 5415228 7032436 5418664 7008144 5426142 7001404 5427798 6994628 5429942 6982822 5430060 6977464 5435844 6966604 5441156 6965396 5444918 6956252 5445456 6940710 5453504 6920804 5455848 6911804 5465418 6903772 5471158 6903314 5475682 6888676 5480360 6878194 5483434 6876152 5488604 6867786 5493066 6865552 5493332 6854640 5497640 6852574 5503440 6851412 5503846 6843098 5505336 6839152 5511536 6830646 5514432 6824562 5516200 6810856 5522784 6788676 5531036 6785876 5538414 6784454 5538538 6764370 5550316 6756236 5557784 6746086 5566784 6720754 5579564 6717170 5585804 6702824 5587360 6701984 5601182 6692682 5603050 6683562 5616052 6678736 5624720 6667062 5631606 6656958 5632092 6644122 5636766 6638536 5637378 6623112 5656196 6606746 5661834 6596924 5664860 6594866 5672324 6587898 5684184 6581838 5692552 6564806 5694580 6549950 5706584 6549094 5708858 6543576 5712468 6539940 5714788 6537184 5720878 6533254 5726052 6522474 5730838 6508468 5737224 6502702 5744256 6501724 5747438 6497790 5748470 6487458 5757088 6480048 5757258 6473524 5777024 6461576 5790872 6445152 5793992 6444086 5798454 6440142 5802966 6421020 5813944 6409428 5815980 6406820 5822020 6406350 5825462 6390962 5849974 6379174 5850710 6378582 5855358 6368878 5855912 6364792 5857998 6356204 5869842 6351428 5879518 6342802 5895418 6328766 5897886 6324202 5904752 6322884 5912682 6313482 5926046 6300436 5928352 6296672 5935850 6284148 5938926 6280238 5951128 6254960 5964102 6252482 5966356 6246960 5980978 6237428 5999660 6207652 6009752 6205766 6011046 6202696 6013522 6197298 6047642 6169766 6050950 6165962 6057888 6156238 6058510 6154746 6072212 6140298 6072496 6136782 6073680 6126560 6086076 6115820 6104236 6108268 6118408 6096972 6122212 6092816 6123962 6091776 6135930 6077866 6142172 6070734 6152980 6064676 6162330 6058842 6168580 6032032 6187512 6024766 6195248 6022520 6204522 6011776 6212408 6008734 6224774 6001416 6226254 5997044 6226990 5993414 6231674 5981374 6252822 5972826 6271000 5949226 6288774 5931974 6304344 5925998 6318032 5915728 6318500 5910460 6328826 5902448 6330976 5902114 6334396 5887878 6341046 5885238 6352976 5883932 6354000 5877182 6360276 5875674 6377270 5863076 6386614 5857006 6397606 5850964 6401612 5842336 6410624 5833324 6417910 5832980 6426078 5823814 6430052 5816284 6455980 5794766 6462728 5792372 6477544 5782180 6481852 5778948 6482682 5768184 6498594 5763924 6503300 5763554 6504288 5760098 6505518 5749558 6526012 5742732 6527728 5739350 6540324 5738034 6542914 5731406 6548192 5728396 6550104 5718872 6564430 5709046 6574830 5699498 6588386 5696170 6597688 5695890 6603476 5688898 6610988 5683342 6622360 5675186 6624370 5664360 6629630 5663250 6632420 5660016 6649608 5652772 6656634 5648708 6658030 5643728 6672566 5629476 6673930 5624164 6698208 5619800 6709764 5613050 6710094 5608642 6728196 5597786 6731808 5593644 6740580 5593614 6745820 5588630 6748408 5587120 6759356 5586450 6759530 5584390 6761608 5573032 6761938 5571926 6777400 5564216 6795354 5561350 6800674 5560446 6809514 5548574 6817550 5547646 6820620 5545072 6824052 5540262 6832478 5535272 6838320 5525498 6859892 5518270 6864958 5506220 6870472 5503908 6879630 5502120 6896348 5495710 6908590 5489482 6925520 5485002 6926962 5484316 6935010 5478762 6941854 5478504 6944066 5478102 6947912 5474742 6964906 5474308 6966082 5471912 6980448 5470222 6983928 5469582 6987564 5464356 6987766 5463032 6993184 5458982 7007580 5454334 7013672 5452660 7014704 5452342 7017352 5442450 7030948 5439536 7047588 5438814 7075136 5432140 7075984 5424776 7082330 5423592 7101964 5415616 # start_trial(3) : # end_trial(3) : Pareto Size = 195, Scalarizations = 1000, Elapsed time = 807.1 s # Pareto: 3 Size: 195 5393870 7072980 5406652 7021820 5420256 7019174 5425360 6992832 5433628 6964142 5442362 6964042 5443580 6960062 5447026 6953794 5450158 6942234 5452296 6936686 5457392 6925228 5458774 6898852 5476214 6898162 5481694 6886208 5487232 6884340 5489024 6861280 5493280 6854798 5501042 6842664 5508710 6837152 5511284 6820876 5515034 6818938 5518278 6808938 5519796 6806970 5522006 6802812 5527200 6791492 5539320 6781824 5539550 6770722 5545644 6770424 5553348 6749660 5558210 6734962 5573822 6732852 5574116 6717018 5584272 6710072 5588552 6696502 5603034 6689312 5607642 6683574 5608396 6682786 5612406 6676950 5614054 6668108 5616776 6666814 5621670 6665880 5622572 6644538 5640670 6628552 5648388 6614538 5653728 6610600 5663322 6597126 5672176 6595084 5678720 6582208 5695788 6569094 5701940 6542264 5706822 6530034 5714374 6523054 5717154 6500172 5745378 6492516 5747776 6491912 5752894 6488856 5770706 6456716 5794366 6443954 5794390 6434094 5796378 6421292 5814480 6411652 5818196 6409730 5821518 6407580 5825894 6403726 5826422 6402530 5832254 6388066 5848570 6377266 5855172 6374848 5860464 6363878 5872406 6350196 5875314 6349818 5888920 6313130 5910824 6310130 5919754 6297892 5923916 6288868 5937204 6285664 5946296 6263178 5950622 6262834 5958140 6258678 5972134 6244738 5977122 6235830 5978276 6230992 5993482 6222970 6002392 6210572 6033678 6185250 6039430 6180636 6041358 6169386 6048904 6168216 6060346 6149732 6076642 6136146 6079192 6135804 6084348 6131600 6089278 6123332 6106480 6115010 6114226 6105036 6114406 6090804 6144960 6069882 6165330 6055508 6171650 6044146 6178052 6040150 6182436 6038040 6185298 6036514 6192422 6023026 6196614 6018378 6201708 6009330 6215644 6001890 6241728 5984418 6246170 5984318 6249018 5967146 6262422 5965090 6267618 5952968 6275710 5952780 6285374 5941330 6293248 5936858 6319922 5917050 6321916 5906220 6328610 5902062 6333446 5894622 6350704 5879578 6365478 5869170 6380146 5859940 6385940 5857848 6389438 5851050 6390632 5846200 6391374 5841492 6400594 5840616 6410202 5824642 6432888 5815338 6440646 5814812 6448372 5801130 6464294 5786062 6476026 5778576 6479606 5777254 6486452 5773310 6499788 5767884 6506046 5754888 6514742 5740406 6522806 5738590 6534588 5731508 6581720 5693500 6598934 5689812 6602958 5686574 6603140 5682572 6613994 5670774 6615646 5663562 6635202 5661132 6654756 5643014 6677048 5637412 6689188 5629296 6690816 5624356 6691796 5623424 6709118 5618226 6711700 5606784 6717978 5605318 6725030 5604776 6726380 5599790 6738818 5596494 6740640 5594004 6743248 5588536 6745504 5587532 6762188 5569476 6768044 5567904 6780186 5563946 6797090 5563470 6798600 5553606 6802202 5548344 6805986 5538636 6837588 5526592 6851334 5524746 6861202 5515858 6864504 5512196 6891308 5511476 6891812 5507034 6897098 5505394 6904762 5494824 6911994 5493030 6916608 5491714 6929052 5489422 6933618 5482452 6937332 5481416 6942270 5475936 6949362 5466994 6964464 5459994 6981652 5456288 6991424 5455394 6993356 5454618 6997592 5447246 7017272 5440158 7047080 5439162 7052820 5437276 7053862 5434618 7057310 5431600 7058572 5428834 7071372 5423072 7079090 5418390 # start_trial(4) : # end_trial(4) : Pareto Size = 198, Scalarizations = 1000, Elapsed time = 807.4 s # Pareto: 4 Size: 198 5401938 7047552 5410572 6984556 5428392 6958252 5436576 6957554 5446100 6954562 5447822 6953728 5451916 6947716 5452828 6945632 5455370 6943280 5455674 6907736 5462184 6903300 5468306 6885726 5477612 6873288 5481388 6871578 5481440 6861776 5495436 6854948 5500788 6833590 5511108 6830886 5517726 6812410 5519952 6807698 5520458 6806260 5525910 6802216 5527346 6800992 5527424 6799890 5533240 6793614 5534782 6789100 5540966 6765982 5552860 6756662 5559328 6734926 5570380 6725264 5575416 6724874 5579066 6713428 5589952 6704982 5592740 6692738 5603992 6686862 5604210 6675254 5614604 6664864 5617148 6662626 5626006 6656808 5629144 6649248 5634046 6648156 5637786 6620870 5649922 6610794 5660426 6608900 5662652 6605770 5662718 6603464 5665236 6584424 5688094 6557048 5702144 6542454 5711116 6536234 5723264 6534948 5724166 6525298 5725444 6525108 5727300 6515066 5730288 6504028 5748860 6489346 5760942 6485184 5765360 6475750 5770124 6474860 5774016 6468782 5776696 6467514 5780368 6458128 5785202 6444624 5786846 6444126 5788098 6442540 5804952 6433662 5807152 6424048 5811548 6411228 5837234 6395824 5840402 6394442 5843408 6376752 5850668 6365614 5866192 6351414 5880090 6346758 5890158 6339602 5903290 6308478 5913710 6299000 5923746 6279244 5942474 6269560 5952654 6260148 5957230 6241296 5973852 6240564 5976792 6239034 5986032 6222638 5990130 6219152 5992504 6217746 6000028 6215276 6015864 6199730 6022546 6193388 6026992 6187016 6035062 6176480 6043270 6170316 6050100 6169730 6053412 6158690 6058914 6154312 6063812 6151776 6068476 6148814 6086656 6124784 6119030 6099346 6122904 6093050 6129870 6082384 6136022 6079440 6136616 6079028 6141022 6075160 6152344 6068264 6162392 6047920 6177686 6033054 6189034 6030096 6197888 6014290 6214738 6006470 6228940 5990348 6235518 5987108 6265144 5967450 6272740 5946304 6285582 5942218 6286798 5940654 6300212 5925754 6315352 5912058 6318832 5909462 6335130 5900466 6339440 5894584 6355086 5880780 6377300 5860070 6383456 5856380 6394786 5846344 6420522 5834186 6424878 5816602 6427996 5810388 6444024 5807724 6453982 5790096 6470546 5783496 6472796 5773018 6502132 5764010 6506112 5761870 6516650 5755778 6525640 5743826 6536682 5740494 6545868 5737326 6549386 5731040 6549520 5724762 6571030 5713768 6571732 5703832 6586434 5689518 6599030 5689198 6614752 5676818 6625638 5674884 6634554 5669298 6635192 5658872 6642552 5656446 6654538 5645338 6663784 5644986 6669548 5642028 6671994 5635958 6689130 5635080 6691046 5629678 6695168 5619546 6702788 5610292 6708858 5600558 6726058 5591616 6734910 5591448 6740914 5585398 6751734 5578522 6765408 5572528 6779538 5569236 6780740 5564098 6786806 5559418 6792158 5557020 6797870 5548200 6804724 5542182 6815518 5540438 6826386 5531082 6833444 5530574 6840972 5528682 6850292 5524836 6858124 5518398 6871594 5517130 6883884 5516872 6889714 5513954 6889734 5497044 6914858 5493334 6915470 5489524 6922186 5485546 6930662 5483558 6941012 5479800 6943160 5467094 6955348 5464802 6970682 5455618 6985780 5450808 6988202 5450186 7009726 5447104 7018710 5445108 7023356 5442350 7029888 5439716 7056256 5438032 7063342 5427628 7071302 5424738 7086978 5422890 7093994 5415174 # start_trial(5) : # end_trial(5) : Pareto Size = 188, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 5 Size: 188 5399958 7071172 5407570 7063726 5407632 7063352 5408016 7039928 5415016 7036184 5417566 7001038 5423268 6993566 5427558 6967820 5433838 6956010 5443640 6952134 5445598 6941054 5453160 6920006 5467128 6876696 5472346 6861616 5482110 6861508 5490638 6857812 5500766 6845732 5503028 6837786 5505564 6826476 5509824 6825536 5514042 6822552 5516774 6817582 5517448 6811820 5521068 6791410 5533978 6788594 5538830 6767564 5545612 6762514 5565300 6757244 5567850 6740796 5571220 6721178 5583776 6720992 5588612 6718264 5590612 6705418 5599846 6701128 5603042 6694280 5606040 6670720 5614074 6670274 5615264 6669142 5615974 6662812 5621380 6651980 5627836 6628666 5633776 6628134 5640492 6619436 5655548 6611902 5661022 6598764 5669838 6586456 5679866 6575964 5684958 6565062 5700356 6551920 5710994 6525068 5717792 6525060 5724068 6512826 5730666 6511106 5745896 6494852 5752642 6488646 5756816 6483026 5761634 6476082 5764752 6473210 5768992 6454684 5793364 6428058 5794916 6425706 5805828 6418874 5816410 6417142 5819716 6408174 5819996 6395440 5841446 6374840 5846248 6373798 5856338 6361384 5866254 6356150 5879926 6348554 5882572 6343686 5897022 6314702 5914434 6305168 5920346 6301608 5930894 6277158 5947240 6268568 5967048 6234848 5980678 6229110 6014214 6197914 6015958 6195282 6018738 6191860 6052226 6163464 6054020 6144278 6070860 6138180 6087244 6132942 6091612 6113158 6096434 6111324 6102290 6108444 6112666 6107162 6116814 6094262 6129810 6079904 6147686 6076986 6151042 6068156 6155464 6061124 6158606 6056230 6170356 6047694 6175198 6024304 6199284 6016288 6210210 6006680 6229456 5989070 6250226 5980814 6254406 5962360 6255364 5955282 6267382 5949504 6291636 5938464 6293820 5937646 6315158 5924516 6315216 5910522 6319578 5910514 6343210 5895930 6358866 5882036 6364120 5872916 6369160 5867228 6378210 5857160 6387632 5856530 6391262 5848832 6403700 5832088 6418776 5821956 6430018 5813790 6433880 5812496 6436834 5809544 6452618 5800856 6465718 5788958 6467228 5785854 6472944 5778750 6477862 5769434 6485678 5762076 6519158 5744710 6528752 5737212 6537300 5736018 6539386 5730782 6554648 5717290 6559818 5715680 6562708 5711348 6569864 5693928 6598556 5689406 6599262 5682332 6616296 5673666 6628616 5662514 6629824 5655592 6636712 5655110 6646806 5649842 6650184 5648820 6663868 5639876 6664352 5637740 6669040 5636580 6683070 5630276 6699888 5621014 6703056 5619682 6716262 5616528 6722008 5600632 6731300 5598330 6738956 5587288 6752392 5585568 6756870 5582500 6763104 5572986 6772664 5565356 6779160 5563986 6779486 5548152 6807288 5542348 6822082 5536552 6822744 5530202 6825418 5528300 6841654 5527000 6846434 5525120 6861496 5519132 6869180 5505418 6902360 5499586 6912104 5495402 6915050 5489944 6928840 5487024 6938168 5484658 6938992 5484330 6940576 5483314 6944692 5478530 6953616 5478118 6956028 5471682 6956142 5469246 6968520 5458400 6981278 5456654 6992626 5450418 7014038 5448470 7016904 5441258 7035434 5440264 7051294 5439014 7057644 5437628 7058618 5437400 7069252 5421872 # start_trial(6) : # end_trial(6) : Pareto Size = 219, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 6 Size: 219 5408266 7067240 5412774 7061190 5416296 7020538 5422602 7016020 5423464 7007776 5424238 7003068 5425150 6995992 5426720 6985564 5431808 6973636 5438994 6961668 5445592 6960722 5447088 6944336 5449358 6938280 5454212 6935278 5456296 6924166 5463482 6924126 5465964 6922530 5468570 6915172 5477730 6897890 5480878 6870304 5490216 6847420 5503096 6840226 5506696 6838166 5508082 6835630 5508690 6829918 5513290 6827604 5513804 6820370 5518626 6812378 5526940 6809900 5526982 6809828 5528564 6792078 5532038 6782414 5536852 6780378 5537066 6776334 5547772 6764244 5548174 6753202 5560282 6743396 5567736 6738160 5573662 6724596 5576818 6719906 5581220 6717606 5588116 6711332 5588150 6707266 5592110 6703238 5592978 6702586 5594714 6700008 5596592 6691216 5604854 6686362 5608262 6667828 5612900 6664886 5613350 6664208 5614148 6655960 5618958 6647934 5630148 6645792 5634828 6638488 5637018 6631142 5639958 6629570 5647246 6620372 5652286 6604314 5670836 6602296 5674572 6592652 5677132 6584808 5691002 6569936 5696454 6564084 5697700 6563236 5701772 6546500 5718018 6526912 5735748 6514244 5739496 6513416 5741600 6504652 5745716 6494856 5755352 6487394 5760500 6484524 5760804 6478048 5763658 6473226 5769208 6466138 5775354 6456470 5780362 6456330 5789412 6450502 5793184 6441430 5802276 6439716 5807816 6414296 5820572 6406222 5824718 6402148 5830360 6397186 5849406 6379312 5851772 6379192 5863256 6354804 5870366 6344138 5887596 6327016 5891826 6324978 5894962 6324844 5898118 6313684 5920838 6308658 5935446 6284090 5941982 6275778 5947930 6270074 5954160 6262532 5975654 6244360 5979896 6234556 5981226 6230696 5993138 6223000 6006048 6210698 6006716 6203800 6015642 6198046 6019818 6189150 6039514 6179908 6041360 6178590 6050076 6164294 6062424 6150308 6070844 6143728 6094870 6118768 6106726 6110038 6114478 6105512 6131504 6080240 6135582 6078308 6144642 6070958 6147480 6066526 6150800 6063882 6156008 6047342 6180742 6038098 6187070 6031604 6194276 6017436 6196596 6015866 6204036 6011152 6219088 6003962 6230334 5993436 6243566 5976774 6261544 5966864 6272278 5963756 6277510 5955108 6282020 5946960 6283828 5939440 6292932 5934538 6313102 5920872 6318442 5914558 6331520 5897326 6331886 5896404 6342380 5873532 6378472 5866742 6385702 5856048 6386812 5850692 6417208 5832832 6419218 5831506 6425920 5824916 6432114 5814216 6449412 5811292 6451474 5805748 6459658 5795880 6461220 5786708 6475530 5778588 6492898 5768096 6493358 5756966 6515152 5755284 6526718 5743852 6532144 5727394 6553228 5712472 6564380 5710574 6573536 5706230 6580906 5701186 6583438 5701106 6587392 5698606 6594270 5694696 6600752 5685388 6611838 5684300 6614492 5678754 6617070 5678328 6618714 5677018 6645434 5659816 6645924 5656118 6657228 5644434 6668374 5641576 6678266 5633496 6678682 5630692 6689416 5630030 6704390 5614600 6704550 5607704 6721664 5599458 6730410 5597198 6731550 5596384 6738862 5595420 6743698 5583018 6761396 5579756 6767248 5578266 6770622 5575680 6780510 5562432 6795130 5556336 6799312 5552862 6802898 5542924 6820228 5538030 6820584 5525596 6860826 5523434 6862496 5516516 6872566 5512708 6873810 5511776 6876128 5510040 6885558 5506296 6893314 5503360 6897440 5501504 6904378 5495746 6905466 5492330 6909340 5491172 6910650 5490810 6919904 5487802 6925840 5487076 6928938 5486852 6931038 5480972 6948002 5471538 6963872 5469570 6963946 5468804 6970554 5468556 6972578 5464420 6982850 5454862 6995920 5449448 7001710 5436430 7054168 5429654 7076284 5426248 7086446 5424730 7089072 5415560 # start_trial(7) : # end_trial(7) : Pareto Size = 200, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 7 Size: 200 5391262 7075058 5402148 7058086 5409878 7052154 5417150 7009058 5426296 7002340 5428118 6995742 5430462 6982156 5434396 6967106 5443278 6964838 5446702 6960832 5447658 6951418 5452354 6928932 5455584 6925646 5466788 6911522 5467414 6908788 5470574 6903372 5472082 6872428 5482374 6867884 5485476 6865414 5494894 6861988 5496330 6850178 5497948 6841998 5503734 6831502 5510126 6826750 5512312 6805418 5516046 6804064 5524848 6792192 5528914 6788386 5531958 6777890 5542670 6760168 5558144 6759082 5561418 6746604 5567962 6733352 5572354 6725578 5582122 6715640 5583786 6714988 5584486 6702738 5592056 6698242 5595022 6687974 5607976 6679356 5611294 6678332 5616184 6662788 5618542 6652368 5622112 6641614 5629510 6640722 5639170 6632974 5639648 6631322 5651260 6610184 5662326 6597450 5671372 6596336 5671450 6587126 5676848 6575110 5682850 6574366 5688440 6569524 5697510 6563338 5702946 6546278 5707360 6542014 5718666 6530592 5733706 6494024 5745868 6489520 5757682 6481152 5762616 6479696 5766518 6475590 5773128 6463610 5774584 6447018 5799960 6427162 5802826 6418908 5817256 6414806 5817536 6404436 5823564 6402344 5833400 6395668 5844630 6370770 5855088 6363002 5867838 6351204 5889196 6315340 5904544 6303674 5917664 6303640 5918390 6302366 5921422 6297218 5927650 6288192 5939274 6282062 5942980 6263260 5952414 6253352 5967740 6252346 5978544 6235404 5991328 6218706 5999682 6217628 6003244 6212990 6003890 6211002 6003978 6210440 6006676 6206576 6019316 6199282 6044228 6173120 6046236 6169428 6046996 6164564 6070488 6140574 6091566 6112110 6109994 6101986 6116576 6087454 6144206 6072516 6146638 6064732 6156794 6060196 6163080 6055666 6169280 6052662 6186266 6036478 6188424 6028880 6190332 6027308 6194712 6025072 6219736 5995182 6232006 5994116 6233194 5984408 6241206 5979724 6258956 5965832 6265062 5961490 6270724 5958526 6278142 5956342 6285258 5948226 6290828 5939446 6291470 5930386 6302186 5926934 6327868 5900094 6333636 5898186 6339558 5892618 6343522 5892260 6352358 5886394 6358440 5882820 6364070 5876272 6367262 5873688 6391046 5855032 6393418 5830530 6415950 5827756 6420634 5820152 6432412 5818642 6435202 5811916 6448258 5805386 6456270 5793972 6465890 5789270 6476168 5783446 6489074 5766386 6494200 5761710 6510226 5761436 6515422 5740762 6542062 5733334 6549880 5729828 6569054 5711816 6592976 5687538 6596872 5681986 6607058 5675830 6617478 5674718 6621338 5673102 6635366 5664006 6638214 5656936 6649590 5651520 6657242 5646188 6662826 5641452 6666636 5639428 6679136 5630654 6692266 5620406 6699236 5609812 6713796 5604554 6721706 5597482 6747302 5584092 6755882 5578336 6756734 5574938 6771372 5567332 6790012 5566052 6791950 5560672 6800120 5560232 6805962 5553572 6809900 5552910 6810438 5551436 6814394 5550828 6817280 5550042 6817894 5548926 6820892 5546208 6823036 5538660 6840112 5527370 6859088 5524664 6864570 5516662 6870206 5513006 6873046 5510530 6889394 5508084 6889438 5506054 6892136 5504246 6893224 5501576 6900738 5500924 6904532 5490984 6923728 5490294 6931818 5485318 6933838 5481066 6938860 5477576 6952076 5465500 6965686 5464424 6995116 5458040 7002538 5455168 7002738 5450760 7016288 5448964 7022700 5445100 7030888 5430370 7073988 5417700 # start_trial(8) : # end_trial(8) : Pareto Size = 202, Scalarizations = 1000, Elapsed time = 807.2 s # Pareto: 8 Size: 202 5409892 7015612 5418030 7010436 5418312 6985308 5435214 6970346 5440888 6970234 5441826 6937244 5453374 6913044 5455240 6900254 5472910 6880036 5475106 6878732 5482244 6871178 5482970 6855054 5495614 6843866 5502050 6832252 5514762 6831702 5515500 6828112 5516646 6798526 5532416 6791144 5541752 6780812 5543844 6771312 5544736 6770308 5545490 6755826 5556020 6751532 5563882 6748894 5564096 6740478 5566020 6736436 5571042 6721626 5572230 6713304 5577048 6710126 5597690 6696850 5602304 6687832 5608826 6684670 5609008 6679674 5614454 6676274 5616004 6669008 5619324 6661834 5624008 6652702 5628890 6646814 5633476 6640614 5635432 6634344 5639420 6633352 5640758 6630638 5652392 6616732 5655634 6607378 5663008 6603284 5666500 6600646 5673430 6597090 5676942 6585650 5681472 6575476 5695328 6557572 5702396 6549850 5706650 6545732 5712996 6536532 5715696 6518082 5733626 6517264 5736914 6499202 5750796 6495124 5757564 6475638 5766112 6462736 5774804 6458676 5780658 6455530 5784800 6449154 5784998 6439954 5798608 6429258 5808414 6427184 5816294 6419068 5824058 6404736 5833548 6397010 5839498 6378628 5847206 6370750 5854244 6370688 5861792 6362910 5868238 6353538 5887634 6328772 5895244 6317784 5911570 6311376 5913320 6310894 5915628 6295446 5923594 6291076 5929734 6287294 5942558 6277230 5948824 6264344 5953522 6261520 5966290 6254272 5972990 6243768 5973774 6240638 5974848 6229338 5998402 6221228 6006356 6205028 6012532 6201502 6024638 6191412 6035522 6181462 6035856 6179140 6049698 6169242 6051174 6155910 6066464 6148680 6077978 6145482 6082422 6135116 6084726 6132866 6089970 6126166 6108094 6104044 6109728 6101966 6118866 6086946 6136826 6079656 6167272 6049996 6168338 6043082 6175956 6041262 6186882 6036052 6201046 6013534 6237574 5976560 6249384 5972158 6252712 5966978 6255320 5966336 6266184 5955234 6274234 5952056 6279376 5948304 6293696 5935180 6299154 5920778 6301554 5917034 6316720 5907882 6332662 5902816 6342492 5889992 6363164 5879752 6368902 5869018 6370808 5862656 6383936 5850398 6412628 5841436 6413468 5832960 6420188 5824338 6423764 5816126 6439554 5808654 6441740 5807968 6442542 5801560 6466248 5789702 6472626 5785950 6477744 5785650 6478616 5778244 6487976 5774724 6491846 5760618 6507236 5754778 6513518 5744620 6533358 5735074 6547016 5732786 6547138 5727206 6560352 5720114 6576284 5714254 6577870 5713514 6594608 5693158 6596660 5679450 6613308 5675142 6621100 5674058 6626746 5674054 6634974 5667602 6645380 5662372 6654564 5650446 6660900 5645248 6685560 5628630 6702488 5619074 6709098 5608324 6713518 5602802 6720910 5602600 6728542 5601922 6728578 5599888 6733922 5593570 6736802 5590554 6740974 5585048 6755646 5581894 6760126 5570772 6769904 5568784 6774876 5567164 6789910 5558460 6805438 5551212 6811418 5545364 6815936 5545284 6817260 5545194 6829390 5545106 6830522 5541498 6838656 5524146 6849890 5521772 6856690 5521262 6863468 5520932 6866976 5519244 6870184 5519004 6870980 5511484 6887306 5499402 6909912 5488670 6926464 5487510 6929286 5475996 6953958 5469232 6979216 5467376 6989234 5459542 6996020 5454102 7000078 5453832 7001786 5453482 7006244 5449614 7020138 5449398 7023512 5448398 7026564 5436698 7047206 5436362 7048488 5429256 7067334 5425018 7077316 5424230 # start_trial(9) : # end_trial(9) : Pareto Size = 201, Scalarizations = 1000, Elapsed time = 807.4 s # Pareto: 9 Size: 201 5396674 7041270 5406834 7038796 5411286 7034742 5414992 6982490 5433286 6966122 5439054 6964988 5439640 6964836 5440884 6962222 5441264 6918504 5458918 6915260 5461586 6912246 5463182 6909398 5470894 6903364 5472760 6903128 5476640 6902676 5478320 6887482 5479408 6880680 5488318 6872452 5494014 6863820 5499344 6856248 5499644 6840218 5507398 6816882 5522204 6808980 5525698 6786460 5525896 6786360 5536092 6778618 5541588 6776942 5541796 6763548 5551096 6762860 5551898 6760972 5551988 6747004 5563434 6736864 5573632 6720908 5584794 6711820 5589598 6707662 5592946 6706984 5594524 6703684 5596552 6689388 5597924 6688528 5600142 6686288 5603636 6683672 5607084 6675658 5612500 6659996 5615622 6657264 5625760 6647548 5636314 6644632 5642172 6628486 5646778 6619064 5652486 6610292 5656990 6604406 5660700 6600792 5664552 6599400 5680730 6576660 5682216 6574504 5700920 6554304 5707998 6543322 5709246 6535710 5716266 6530126 5720810 6525902 5727754 6510510 5735016 6501214 5745334 6497882 5749040 6489334 5760270 6470056 5767572 6465090 5773602 6464400 5778276 6449698 5784226 6441892 5804950 6427712 5805264 6422932 5822560 6404420 5845166 6381764 5856204 6374498 5858830 6365234 5869292 6356466 5869588 6351120 5874282 6339500 5911668 6309244 5913010 6301044 5915050 6297660 5924090 6297356 5933668 6269262 5943694 6268610 5949466 6265246 5954182 6264608 5954184 6262606 5965438 6242738 5967970 6237710 5983168 6234944 5983620 6230938 5992880 6212058 6010458 6194140 6025322 6182910 6042762 6173178 6048362 6169442 6071186 6147856 6074966 6142036 6075684 6138010 6094288 6128816 6096554 6123478 6110178 6107920 6124966 6089824 6126276 6083722 6127616 6079526 6135124 6076246 6174032 6041498 6174262 6041384 6178268 6035712 6200294 6017980 6209158 6011610 6214360 6006128 6227066 5990750 6230024 5990356 6235190 5989272 6260610 5967642 6261322 5959590 6281184 5939284 6285920 5939058 6295488 5930032 6296972 5926610 6297110 5924930 6305370 5924252 6314780 5910824 6329062 5910684 6334944 5903488 6338582 5900806 6354554 5867370 6376726 5861444 6379056 5857892 6384960 5853704 6402568 5845406 6402678 5828394 6417182 5826492 6432248 5826268 6438298 5812144 6445404 5811954 6455998 5797342 6460642 5793326 6481604 5775674 6494736 5762468 6504408 5748260 6524668 5746674 6537410 5741802 6537896 5736254 6548266 5730892 6554542 5716720 6555004 5714868 6564668 5709602 6582552 5693060 6582808 5689490 6600714 5673668 6617070 5670590 6617126 5664876 6621948 5661536 6652142 5656328 6661408 5643926 6673140 5630548 6685884 5625480 6688102 5614760 6698716 5612320 6705792 5606258 6728560 5604948 6732250 5599652 6734222 5596956 6736660 5596094 6737210 5587896 6759716 5581074 6760092 5579728 6764382 5576988 6764530 5565616 6778170 5559558 6779596 5555488 6792784 5551238 6813178 5550760 6815452 5547594 6821716 5537882 6829184 5534054 6837130 5530532 6839320 5530510 6848302 5529796 6856474 5527514 6862318 5524466 6864232 5509882 6881162 5496412 6914496 5490966 6915110 5487048 6916828 5482364 6917720 5480842 6930526 5480484 6944042 5480282 6949894 5479498 6952416 5463012 6968116 5461156 6990700 5457336 6995714 5456738 7000690 5451382 7014646 5450900 7019358 5444180 7024490 5440050 7035700 5430098 7115742 5404814 # Average Number Scalarizations = 1000, Average Trial Time = 807.2 s eaf/inst/extdata/ran.10pts.3d.100000644000175000017500000001256413534247654015770 0ustar nileshnilesh 8.075596533325871 2.4070255356042236 5.7900584474997725 8.660944458216182 3.640501439918415 4.449547646497271 0.20816431319298268 4.622754690859642 5.207141132875611 4.881432799420187 9.094731372977776 2.653138500755452 0.22997366985771173 1.1177220504888612 8.981893105113855 1.516436358882681 3.0793373131494355 5.521641101169316 6.081528410951497 4.587438533417284 3.28238204604303 2.3530968030921873 0.790551723688969 7.297223710722109 8.747545403381238 1.7157586196357748 1.033957674001333 0.587994749876203 0.7389118125403558 8.675789804506532 8.588487717331967 3.6978131307633157 2.909288653302772 1.5964887994915449 5.98825094023213 7.869613377381958 5.281236703887404 3.4780096885580587 8.007214670385517 2.1631595210668535 4.739443495657631 1.7922505090810006 9.579301384819974 5.792432363411047 0.805332100590535 2.858913413972806 4.49240941089634 7.243893099504964 0.9746867640001433 7.658936435498515 6.534055419285794 6.476482371060755 2.8124161966756023 2.9953242407751555 5.8451856377290525 6.091909643831176 1.2114682500160918 0.5317308719460216 9.732448290214514 2.1511984436077056 6.5282821401903135 4.629777696002223 4.283535257757999 8.440251145602728 6.678219699307396 0.8172385236404924 8.685017638265858 3.307870627999741 6.028213077429266 8.918113357333493 3.3898036403674174 0.9293221522074475 2.607641181852119 6.313098518029577 7.222042766439738 6.142351394610561 8.84959278039159 2.0837098947804673 3.2250970865541824 6.152283396875086 7.815278829369992 0.37731544764882763 9.022117521700476 7.7938934794496495 4.721204168412649 6.374719127366487 3.9894286449159093 4.610239315209966 2.2923199798311846 9.813639149596831 9.975144295633106 3.41528862187762 5.840388508371634 7.07633621832969 4.443854831157684 6.3946306361222245 1.5450725701160426 2.7181472478127446 8.006052032731485 3.0076613874076075 4.637098756802058 3.2817888067876426 3.4097651220298753 2.1136231027924506 6.487632603533015 4.082948779275862 7.695859178096489 2.7956119838975395 0.2901393023412995 8.322594122652102 5.876859309646966 6.323241427627681 1.2814098923074564 7.246005321502687 7.74140672115409 5.000663885951663 2.5672285232267407 1.5450625501794417 0.3830312233262294 9.946630068541651 8.113182843747358 6.455815967150455 6.538475290077849 4.434984522658629 4.1315064800161645 7.772226697700617 7.8685163591333005 3.173343470907617 7.357906691871562 8.686991427474887 5.31298269821866 5.19279715221906 8.758337308445093 8.988868850362223 3.572961454494614 9.78758588762432 1.4123827655944927 6.427305677038921 7.853441420989912 3.022190539811782 8.417418379305726 0.901706796640461 7.493769462486675 8.430161187001541 0.1747055597195173 8.890663430988944 8.922358124720017 6.163150300484419 7.938401212563832 5.474888116173653 4.104768524680931 9.678917821945836 3.93738426670604 8.579118682450876 0.35169752391560394 1.4493731767636193 4.9652583719732375 1.9435330516410834 4.284620594148203 8.17231096446568 9.769778530979478 1.1638275060136398 6.784984926701287 0.5638079644445808 8.061786891662466 2.718912135243628 6.943274809465109 9.397290557238108 3.41869650212319 9.384374667642259 4.761145502773846 6.454319548281916 4.060443879503394 2.256057566498885 1.1309630636314307 9.726454362756678 4.824054924439186 8.34008115019884 5.7069891876906595 1.2116034419419246 9.301370427932444 2.1432853237244496 9.958841791937324 9.695319492357159 7.2221252286508975 5.930624696677696 2.0113940991604218 9.387384421945871 9.488958888835963 4.0895251515646285 8.269917273689043 5.6896017947792075 5.193575918195671 9.430837249658266 4.328847902798756 9.306081015187335 7.694332464305761 4.014964357685522 3.3403539670375997 2.893774444550223 9.0098457086505 4.535908200774786 8.13026948412421 6.8425582492241075 0.9900878375955129 8.846919229882053 9.590345284259026 9.73980549839088 0.3668870724311297 2.793118580184671 9.730578754907608 6.1584756185786045 7.915767568015905 7.344009007535411 6.392053417149478 6.719702017859021 1.0685570659857606 6.7102429026645245 5.075854647328577 7.925112948747145 3.926695979357859 9.826811636699553 4.186464357058625 8.770482820044384 3.0469806674162343 1.4480632458110483 9.671189869200155 0.39467005160280255 4.936638226752783 6.209570742063124 8.981468056498903 2.1505417539739375 9.201280366129074 1.9133227860469653 2.6234983942176906 7.20701734250342 3.8381770196343252 5.939875435454276 8.401363142382205 1.322388443390929 4.3510208123598755 3.9462134812484058 2.844759593134457 0.792935737907638 6.4660541364494835 3.0049051695398297 1.5849888627033186 2.87955366508792 6.739667823745326 9.943327133705218 1.5018650337708794 0.7434825701623877 3.3093051385505365 9.88333405527131 2.14386622879977 7.046944669377279 1.8348435769055138 8.915052230973973 5.490272289337653 7.197279188094493 1.23306741620951 0.6510164008245374 9.423812130809253 7.921884118107121 1.3029144856969155 4.504176981643349 7.539297818529722 4.810156892044506 8.91432444750432 1.3582474223124437 0.6223027131455723 3.5694532411916766 4.206323126879596 1.3913956384270905 2.8479460274795874 1.3011355608587931 6.830412903586499 9.23146982658223 0.9287020455996275 0.8672396507619968 1.5859908886337628 9.520507331139061 6.431355372602436 1.0015356923806324 5.697775896323792 6.828978930106149 5.770930022029423 0.9644883471342007 4.925997256924397 2.704925186572346 2.465146637711475 1.2223439449845679 5.6895031075085285 3.1273859794431793 7.994669587594613 2.811225370890746 1.3907733489621363 2.127002885257127 2.43114173891515 6.997555157157489 eaf/inst/extdata/example1_dat0000644000175000017500000000203213534247654016047 0ustar nileshnilesh5136906 5252884 5142568 5219868 5167616 5217238 5169726 5210654 5188260 5201808 5207548 5195594 5208824 5191646 5231722 5183804 5135414 5268372 5147846 5210542 5174600 5209152 5181262 5179358 5146734 5264400 5149830 5258196 5151682 5217482 5162856 5203302 5186380 5201066 5208800 5190706 5220492 5185632 5248376 5183246 5134240 5232272 5160938 5205572 5172032 5205298 5175168 5192196 5193370 5186240 5208364 5184852 5153534 5295574 5155512 5219180 5162270 5211316 5177516 5207258 5193688 5206734 5196258 5198842 5196400 5194080 5200046 5187082 5128224 5266830 5147362 5262574 5155716 5198006 5169034 5186656 5128176 5238886 5153066 5238024 5155408 5204124 5185294 5200040 5191528 5192334 5223828 5189078 5137952 5233566 5158466 5229466 5158568 5215710 5162240 5209706 5168678 5202144 5175072 5196856 5221198 5186816 5135300 5276110 5145614 5247358 5146024 5226582 5154280 5223756 5165138 5217210 5165272 5215804 5168218 5206596 5199178 5202584 5210042 5194988 5226770 5191850 5143188 5235016 5144532 5209802 5164108 5188228 5213378 5185264 eaf/inst/extdata/r15_dat0000644000175000017500000000636013534247654014752 0ustar nileshnilesh# Report: # Metah: Weighted RoTS, version 2.1.88M (#DEBUG = 1) # bQAP (0.1.88Msvn) # Data File: /home/manu/personal/2005-JMMA/data/qapUni.50.p75.1 Size: 50 Averages: Distance=47.49 Flow1=49.90 Flow2=49.96 # Parameter settings: # number trials : 15 # time limit : 3.40282e+38 # seed : 1234567 # num weights: 100 # Taboo Search Length : 1 # Initialization time: 0.004 s # start_trial(0) : # end_trial(0) : Pareto Size = 7, Scalarizations = 100, Elapsed time = 0.8921 s # Pareto: 0 Size: 7 5261548 5340738 5283204 5340630 5287522 5336320 5291202 5331366 5292270 5318304 5298876 5290408 5312952 5277832 # start_trial(1) : # end_trial(1) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 1 Size: 4 5246946 5368942 5249068 5328154 5277710 5321710 5280132 5281080 # start_trial(2) : # end_trial(2) : Pareto Size = 2, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 2 Size: 2 5255914 5312620 5285994 5294248 # start_trial(3) : # end_trial(3) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 3 Size: 6 5254586 5341368 5265448 5336434 5266332 5329290 5278158 5328006 5293084 5304026 5316378 5285680 # start_trial(4) : # end_trial(4) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8641 s # Pareto: 4 Size: 5 5257008 5385896 5260020 5354180 5261932 5351978 5265120 5343482 5272604 5280450 # start_trial(5) : # end_trial(5) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.9121 s # Pareto: 5 Size: 3 5251436 5304740 5260634 5289432 5261388 5278662 # start_trial(6) : # end_trial(6) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 6 Size: 3 5260462 5303782 5309662 5298112 5338894 5292426 # start_trial(7) : # end_trial(7) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 7 Size: 4 5238158 5302220 5266616 5301604 5277362 5291346 5328374 5283152 # start_trial(8) : # end_trial(8) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 8 Size: 5 5259568 5344514 5260078 5323590 5275688 5304758 5295860 5299490 5321894 5280216 # start_trial(9) : # end_trial(9) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8801 s # Pareto: 9 Size: 5 5252950 5337456 5258962 5303668 5273430 5301298 5311040 5291910 5319530 5279154 # start_trial(10) : # end_trial(10) : Pareto Size = 6, Scalarizations = 100, Elapsed time = 0.8761 s # Pareto: 10 Size: 6 5255088 5362366 5260872 5337164 5276254 5307774 5278846 5302382 5287324 5301484 5290398 5284198 # start_trial(11) : # end_trial(11) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.8681 s # Pareto: 11 Size: 3 5257462 5328600 5262892 5302082 5306682 5293358 # start_trial(12) : # end_trial(12) : Pareto Size = 5, Scalarizations = 100, Elapsed time = 0.8841 s # Pareto: 12 Size: 5 5255536 5369466 5265974 5314044 5276688 5311924 5301892 5288482 5319394 5278344 # start_trial(13) : # end_trial(13) : Pareto Size = 4, Scalarizations = 100, Elapsed time = 0.9041 s # Pareto: 13 Size: 4 5243484 5327056 5262810 5312496 5265234 5288336 5305096 5285540 # start_trial(14) : # end_trial(14) : Pareto Size = 3, Scalarizations = 100, Elapsed time = 0.9161 s # Pareto: 14 Size: 3 5254326 5373688 5258282 5328368 5277040 5290704 # Average Number Scalarizations = 100, Average Trial Time = 0.8817 s eaf/inst/extdata/wrots_l100w10_dat0000644000175000017500000006421213534247654016605 0ustar nileshnilesh# Report: # Metah: Weighted RoTS, version 2.1.88M (#DEBUG = 1) # bQAP (0.1.88Msvn) # Data File: /home/manu/personal/2005-JMMA/data/qapUni.50.0.1 Size: 50 Averages: Distance=50.47 Flow1=49.26 Flow2=50.01 # Parameter settings: # number trials : 100 # time limit : 3.40282e+38 # seed : 1242308195 # num weights: 10 # Taboo Search Length : 100 # Initialization time: 0.004 s # start_trial(0) : # end_trial(0) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.62 s # Pareto: 0 Size: 10 5483732 6495986 5489290 6333342 5550664 6113120 5564752 6013642 5701096 5859466 5714072 5844970 5946800 5662604 6032716 5640020 6101174 5581470 6319808 5571692 # start_trial(1) : # end_trial(1) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 1 Size: 10 5455164 6388774 5463626 6297660 5532686 6184056 5542552 6107502 5672896 5875856 5760764 5805006 6021512 5629600 6078858 5618310 6219082 5581964 6335678 5565062 # start_trial(2) : # end_trial(2) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 2 Size: 9 5478352 6397474 5529200 6171792 5575344 6068938 5653272 5927792 5769920 5770828 5868198 5696476 5979042 5630184 6212000 5572156 6317518 5564596 # start_trial(3) : # end_trial(3) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.536 s # Pareto: 3 Size: 10 5471716 6392632 5492078 6301020 5500714 6239340 5572654 6053764 5698204 5897280 5815328 5768058 5936654 5682444 6160392 5602366 6215810 5562776 6265846 5545204 # start_trial(4) : # end_trial(4) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 4 Size: 9 5478210 6424634 5478674 6380886 5528970 6140914 5571594 5996432 5602642 5977438 5768846 5815082 5947186 5663010 6082796 5611272 6299756 5548752 # start_trial(5) : # end_trial(5) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 5 Size: 9 5458330 6318236 5494442 6177504 5544100 6101204 5649044 5913688 5756350 5790080 5968450 5662256 6133496 5585554 6213822 5578840 6397872 5551326 # start_trial(6) : # end_trial(6) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 6 Size: 8 5463690 6355522 5487006 6194804 5554816 6079102 5747770 5822426 5841612 5739612 5999684 5623434 6120108 5595424 6303630 5566884 # start_trial(7) : # end_trial(7) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.616 s # Pareto: 7 Size: 9 5461522 6475042 5483840 6292922 5504336 6239748 5548416 6107450 5657816 5895636 5762936 5807058 6023856 5635768 6198172 5577542 6207686 5554002 # start_trial(8) : # end_trial(8) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.584 s # Pareto: 8 Size: 10 5464696 6541220 5475242 6419030 5494634 6247778 5520602 6081342 5633586 5917418 5753004 5775584 5876118 5683728 6115644 5604348 6234372 5568458 6272170 5567454 # start_trial(9) : # end_trial(9) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.516 s # Pareto: 9 Size: 9 5460082 6406980 5463066 6390898 5538512 6142582 5543854 6070334 5718408 5863254 5803612 5792524 6016354 5612564 6278922 5577250 6292348 5540720 # start_trial(10) : # end_trial(10) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.68 s # Pareto: 10 Size: 9 5480328 6459184 5499914 6305664 5502664 6237608 5536274 6112978 5697978 5854530 5895030 5712484 5984512 5643296 6064318 5624762 6145168 5565438 # start_trial(11) : # end_trial(11) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.58 s # Pareto: 11 Size: 9 5464432 6451914 5472014 6358026 5490414 6265666 5545922 6111158 5696214 5892236 5802120 5770596 5968848 5678030 6010914 5622172 6297956 5547906 # start_trial(12) : # end_trial(12) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.516 s # Pareto: 12 Size: 7 5470220 6341102 5541572 6115918 5682178 5906024 5830276 5761904 5959590 5650296 6160382 5577054 6390504 5573850 # start_trial(13) : # end_trial(13) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.8 s # Pareto: 13 Size: 9 5452980 6363680 5510170 6208580 5527830 6147648 5646626 5937526 5837840 5750114 6013192 5651044 6168762 5578272 6190090 5572344 6460154 5570748 # start_trial(14) : # end_trial(14) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.472 s # Pareto: 14 Size: 9 5469704 6451054 5485356 6333344 5488602 6258016 5550618 6064326 5658036 5896492 5809490 5757468 5996294 5650558 6136992 5596978 6322362 5555942 # start_trial(15) : # end_trial(15) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.46 s # Pareto: 15 Size: 8 5447820 6320478 5499642 6277788 5516546 6136476 5676830 5885362 5786024 5795636 5859762 5676126 6097068 5621834 6218896 5541684 # start_trial(16) : # end_trial(16) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.86 s # Pareto: 16 Size: 10 5469434 6476710 5473962 6425064 5497026 6314716 5577342 6021616 5686994 5874058 5829428 5737658 6015552 5633454 6179072 5584654 6307428 5556654 6423986 5555156 # start_trial(17) : # end_trial(17) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.476 s # Pareto: 17 Size: 9 5459318 6426196 5466074 6393958 5520298 6175474 5600936 5999392 5608174 5995184 5821970 5755072 5960148 5654102 6100126 5572804 6289018 5543962 # start_trial(18) : # end_trial(18) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.448 s # Pareto: 18 Size: 10 5443458 6459368 5479938 6367804 5508974 6219704 5550310 6102938 5641320 5910240 5798272 5783608 5934850 5674098 6134356 5608536 6265978 5563454 6450914 5550750 # start_trial(19) : # end_trial(19) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.812 s # Pareto: 19 Size: 9 5473268 6432732 5482586 6323782 5495226 6243088 5565660 6049164 5665682 5907846 5810608 5747504 5905216 5693596 6028316 5639456 6233970 5519014 # start_trial(20) : # end_trial(20) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.464 s # Pareto: 20 Size: 10 5482922 6423942 5483396 6412340 5521774 6110198 5541424 6052266 5623754 5962400 5781186 5801784 5990926 5664376 6132686 5589146 6305940 5566656 6318900 5555336 # start_trial(21) : # end_trial(21) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.376 s # Pareto: 21 Size: 8 5459300 6379932 5511314 6168328 5531076 6111756 5663100 5884634 5867072 5728014 5872106 5722550 6225880 5575234 6268794 5550010 # start_trial(22) : # end_trial(22) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.644 s # Pareto: 22 Size: 10 5474142 6468914 5481416 6374308 5514618 6186424 5560286 6033066 5630588 5947706 5718918 5806872 5956328 5653546 6108538 5598786 6122548 5572740 6317426 5549366 # start_trial(23) : # end_trial(23) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.452 s # Pareto: 23 Size: 9 5468474 6297264 5483924 6206028 5587458 6002256 5645892 5916804 5824610 5734488 5970430 5668042 6109160 5631640 6256920 5573026 6441214 5555406 # start_trial(24) : # end_trial(24) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.448 s # Pareto: 24 Size: 10 5450162 6436434 5475776 6345054 5495304 6181888 5592382 6044648 5659438 5906950 5822866 5746334 5989240 5665112 6110894 5597300 6310310 5561476 6396424 5553704 # start_trial(25) : # end_trial(25) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.816 s # Pareto: 25 Size: 8 5457338 6422400 5473100 6245540 5547396 6088566 5574642 6039376 5606300 5994756 5845404 5732256 5989702 5635874 6133424 5550208 # start_trial(26) : # end_trial(26) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.572 s # Pareto: 26 Size: 8 5456106 6284744 5529272 6125656 5700908 5855088 5791066 5776956 5902316 5699578 6111290 5606332 6138312 5580812 6374754 5563452 # start_trial(27) : # end_trial(27) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 27 Size: 7 5462980 6336884 5541516 6103292 5629782 5929164 5852186 5735206 5975666 5661252 6174784 5594872 6197032 5566680 # start_trial(28) : # end_trial(28) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.908 s # Pareto: 28 Size: 9 5453646 6365758 5470040 6321066 5558458 6090166 5703324 5860660 5799618 5777754 5979786 5657754 6111732 5596934 6289904 5571774 6332896 5546120 # start_trial(29) : # end_trial(29) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.504 s # Pareto: 29 Size: 8 5464926 6379268 5483182 6199150 5602836 5976550 5626820 5969034 5776720 5777972 5950148 5656568 6131768 5598966 6273930 5558214 # start_trial(30) : # end_trial(30) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.48 s # Pareto: 30 Size: 7 5456866 6358694 5496874 6256374 5558322 6068010 5677982 5880326 5918744 5689838 5987806 5636976 6314554 5557512 # start_trial(31) : # end_trial(31) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.784 s # Pareto: 31 Size: 9 5466120 6424586 5472336 6417142 5473912 6213676 5583894 6017706 5623536 5919430 5771846 5806208 5928420 5676678 6184582 5583356 6361946 5531276 # start_trial(32) : # end_trial(32) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.576 s # Pareto: 32 Size: 9 5464364 6424356 5489300 6245940 5551000 6094160 5627598 5967092 5795344 5771036 5919084 5678558 6133650 5587244 6169884 5581002 6346504 5570752 # start_trial(33) : # end_trial(33) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.5 s # Pareto: 33 Size: 8 5460750 6433122 5466458 6391590 5503404 6233514 5519244 6102006 5647964 5957684 5790592 5787072 5934146 5680492 6187478 5553366 # start_trial(34) : # end_trial(34) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.764 s # Pareto: 34 Size: 9 5474864 6503948 5486566 6322748 5513724 6205906 5578960 6033890 5742728 5816594 5801244 5776214 6001986 5628534 6104554 5608010 6332184 5537058 # start_trial(35) : # end_trial(35) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.392 s # Pareto: 35 Size: 10 5479296 6430192 5495022 6369136 5510396 6248004 5550820 6092512 5685986 5871606 5806876 5737868 6027886 5627798 6193668 5588732 6236102 5566948 6331186 5531908 # start_trial(36) : # end_trial(36) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.536 s # Pareto: 36 Size: 7 5483966 6199576 5575572 6046984 5610512 5944608 5782966 5795920 5971140 5646644 6105930 5611402 6202634 5565176 # start_trial(37) : # end_trial(37) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 37 Size: 9 5464946 6499558 5485680 6305490 5494854 6261270 5552210 6094662 5647176 5882590 5915906 5671558 5982364 5616618 6085892 5596798 6318416 5572054 # start_trial(38) : # end_trial(38) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.576 s # Pareto: 38 Size: 9 5454310 6437978 5461550 6415528 5498290 6255278 5546774 6023252 5625700 5938602 5799232 5780092 6006738 5645848 6143226 5575104 6279376 5565148 # start_trial(39) : # end_trial(39) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.612 s # Pareto: 39 Size: 10 5467252 6363380 5473134 6337508 5483468 6230544 5526506 6095344 5675484 5907978 5832082 5736258 5970478 5654660 6106816 5607456 6277528 5563606 6301206 5558658 # start_trial(40) : # end_trial(40) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.652 s # Pareto: 40 Size: 9 5466174 6385356 5529690 6142526 5539262 6140734 5719820 5843134 5818802 5753756 5946768 5679776 6226612 5570494 6235454 5557220 6360876 5549518 # start_trial(41) : # end_trial(41) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.724 s # Pareto: 41 Size: 7 5455528 6334414 5502094 6256098 5555354 6083696 5655250 5948698 5741158 5807514 6005698 5638516 6233194 5563604 # start_trial(42) : # end_trial(42) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 42 Size: 10 5463378 6437412 5481822 6359986 5483864 6350828 5569450 6076518 5676774 5850722 5763862 5810086 5978130 5632102 6050626 5608058 6263776 5551620 6324434 5550076 # start_trial(43) : # end_trial(43) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 43 Size: 10 5469406 6434860 5484810 6305698 5495272 6181080 5587226 6047608 5688266 5903462 5746270 5760304 5968946 5632342 6184926 5590270 6285702 5572314 6339500 5557634 # start_trial(44) : # end_trial(44) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 44 Size: 9 5471664 6330898 5495172 6226150 5548168 6106378 5633140 5902586 5738738 5818824 5953524 5647994 6165036 5580810 6285146 5571246 6383930 5547810 # start_trial(45) : # end_trial(45) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 45 Size: 10 5470492 6458962 5489422 6398304 5508312 6242176 5558066 6095364 5685674 5897196 5757878 5778170 6086038 5603552 6170146 5562190 6313884 5557252 6393268 5555930 # start_trial(46) : # end_trial(46) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 46 Size: 8 5477084 6512012 5484474 6297218 5496548 6262188 5555660 6061186 5693346 5872916 5751296 5818486 5930916 5658800 6187520 5567152 # start_trial(47) : # end_trial(47) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.548 s # Pareto: 47 Size: 10 5465976 6456996 5491598 6278660 5531044 6218308 5543950 6105976 5637230 5933480 5871690 5733884 5956464 5648750 6089656 5598250 6272108 5564212 6332114 5553188 # start_trial(48) : # end_trial(48) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.548 s # Pareto: 48 Size: 10 5472908 6540230 5481178 6434846 5505916 6249932 5576938 6061496 5600984 5936078 5874574 5730972 5992638 5658312 6182806 5575516 6291204 5542740 6309370 5541624 # start_trial(49) : # end_trial(49) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 49 Size: 9 5479804 6406962 5499124 6304978 5500008 6218310 5572160 6035382 5645788 5930298 5827620 5751816 6002856 5652932 6131254 5606048 6217820 5542794 # start_trial(50) : # end_trial(50) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 50 Size: 9 5449602 6446264 5470546 6390498 5515868 6190614 5585380 6039228 5673028 5904506 5773280 5786788 5917014 5689732 6188006 5574970 6212160 5553864 # start_trial(51) : # end_trial(51) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 51 Size: 9 5474162 6465420 5475758 6324220 5519234 6182248 5587576 5944476 5673530 5920274 5787396 5786702 5849848 5712760 6131332 5565358 6299776 5561922 # start_trial(52) : # end_trial(52) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 52 Size: 10 5472490 6436546 5493492 6303968 5508536 6174908 5552312 6073712 5679886 5872698 5825846 5738288 5986804 5657114 6106192 5620990 6241884 5566658 6388158 5551352 # start_trial(53) : # end_trial(53) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 53 Size: 10 5458498 6487190 5481138 6341500 5541128 6153820 5555170 6101932 5617668 5924606 5759206 5790292 6012676 5636282 6130326 5585418 6300574 5574330 6343550 5553848 # start_trial(54) : # end_trial(54) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 54 Size: 8 5466954 6459456 5520228 6211528 5583042 6054646 5589228 6014920 5762860 5796350 6016864 5608092 6230692 5583562 6441990 5568290 # start_trial(55) : # end_trial(55) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 55 Size: 9 5470314 6480582 5486822 6359190 5522318 6195530 5588268 6030406 5708962 5848816 5811700 5739808 5954132 5683530 6167880 5572726 6315912 5532832 # start_trial(56) : # end_trial(56) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 56 Size: 9 5470596 6474606 5487874 6349446 5511938 6203716 5565862 6074052 5583774 5993526 5773112 5788750 5960584 5667316 6099064 5605386 6171402 5565010 # start_trial(57) : # end_trial(57) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 57 Size: 10 5477100 6528908 5492254 6333282 5501630 6274466 5519680 6164794 5621164 5936774 5812012 5768478 5966912 5645736 6103366 5598210 6165548 5585928 6372828 5572316 # start_trial(58) : # end_trial(58) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 58 Size: 8 5457492 6486828 5486566 6288570 5504814 6271680 5573526 6015678 5655400 5931026 5843502 5733974 6080386 5607698 6174176 5572188 # start_trial(59) : # end_trial(59) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 59 Size: 9 5472920 6463318 5475100 6340824 5517596 6200722 5565050 6056146 5633486 5956706 5787884 5779690 5956102 5662724 6111112 5614596 6319974 5552806 # start_trial(60) : # end_trial(60) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 60 Size: 9 5465348 6378218 5473920 6372968 5527628 6167508 5542070 6135966 5711744 5837182 5765912 5795032 5884738 5718638 6101078 5604102 6289648 5567552 # start_trial(61) : # end_trial(61) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 61 Size: 7 5465940 6316172 5565802 6058994 5643038 5934428 5741770 5834288 5985814 5636732 6053970 5611484 6228668 5562444 # start_trial(62) : # end_trial(62) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 62 Size: 9 5452174 6365710 5496572 6247790 5546452 6104310 5661866 5907994 5795958 5750526 5977772 5638566 6101066 5621908 6242124 5587084 6308032 5547688 # start_trial(63) : # end_trial(63) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.464 s # Pareto: 63 Size: 10 5450646 6414700 5470216 6357480 5486480 6234756 5582028 6030238 5650946 5898674 5728802 5837314 6024596 5646352 6059530 5618566 6209976 5570116 6444200 5566768 # start_trial(64) : # end_trial(64) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.624 s # Pareto: 64 Size: 9 5459930 6534674 5467896 6337118 5491252 6234486 5512280 6148118 5655036 5872586 5837600 5710264 6050656 5599640 6210750 5571176 6415458 5567600 # start_trial(65) : # end_trial(65) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.564 s # Pareto: 65 Size: 10 5474116 6366908 5480168 6262148 5501520 6205054 5555786 6106970 5707834 5864130 5804582 5779480 5920908 5697270 6039484 5614556 6147178 5581516 6351212 5574316 # start_trial(66) : # end_trial(66) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.492 s # Pareto: 66 Size: 9 5466874 6389726 5526846 6210960 5612222 5991440 5715654 5808282 5812574 5771790 6052270 5615154 6113928 5601678 6261288 5559220 6479972 5552642 # start_trial(67) : # end_trial(67) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.668 s # Pareto: 67 Size: 9 5457806 6349490 5508354 6188872 5578396 6063868 5643166 5949920 5791658 5786814 5960792 5633658 6158548 5577402 6226762 5567636 6303250 5556000 # start_trial(68) : # end_trial(68) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.6 s # Pareto: 68 Size: 10 5469348 6447340 5490944 6318908 5515312 6191752 5566176 6078888 5655048 5920422 5896516 5701290 5983364 5629296 6094102 5624962 6234210 5570696 6372890 5554268 # start_trial(69) : # end_trial(69) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.4 s # Pareto: 69 Size: 9 5467116 6259322 5509754 6183956 5560798 6055162 5575458 6021490 5846776 5734820 5899162 5708530 6055842 5614082 6272342 5562104 6446820 5551004 # start_trial(70) : # end_trial(70) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.768 s # Pareto: 70 Size: 9 5472500 6409244 5494584 6258546 5574936 6049120 5679958 5884950 5870454 5733232 5904838 5673706 6091942 5611026 6225848 5589946 6308358 5547258 # start_trial(71) : # end_trial(71) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.52 s # Pareto: 71 Size: 9 5482464 6275596 5501430 6213628 5583816 6057380 5632500 5946644 5847048 5737196 5889552 5687062 6008690 5615990 6202852 5588898 6415806 5563188 # start_trial(72) : # end_trial(72) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.44 s # Pareto: 72 Size: 8 5449782 6483298 5471210 6342944 5519230 6199686 5549896 6075720 5646298 5917374 5871992 5718768 5977120 5648240 6236852 5544006 # start_trial(73) : # end_trial(73) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.836 s # Pareto: 73 Size: 9 5456298 6419094 5474094 6264862 5552510 6102484 5672398 5868706 5875616 5690950 5928430 5674910 6111602 5581866 6197636 5577668 6285514 5571988 # start_trial(74) : # end_trial(74) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 74 Size: 10 5456466 6410824 5469346 6356418 5480544 6297076 5556026 6119542 5627160 5967772 5865616 5718566 5933242 5664250 6214844 5569144 6322918 5563714 6458830 5562594 # start_trial(75) : # end_trial(75) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.464 s # Pareto: 75 Size: 9 5427334 6395560 5500316 6240626 5545806 6090792 5658902 5894594 5819984 5759110 5940508 5665850 6156844 5608454 6217506 5584204 6320022 5558302 # start_trial(76) : # end_trial(76) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.892 s # Pareto: 76 Size: 7 5453456 6303654 5518814 6150732 5760482 5797044 5836492 5728654 5942422 5631794 6109768 5623176 6335516 5546426 # start_trial(77) : # end_trial(77) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.588 s # Pareto: 77 Size: 9 5481100 6355034 5505828 6178522 5533126 6165954 5655210 5905450 5768896 5801764 5943870 5665808 6249664 5566960 6272784 5554388 6309646 5544486 # start_trial(78) : # end_trial(78) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.612 s # Pareto: 78 Size: 7 5474842 6391098 5510476 6198248 5567404 6055036 5686520 5871306 5793776 5773138 6002474 5647216 6191466 5526768 # start_trial(79) : # end_trial(79) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.776 s # Pareto: 79 Size: 8 5462054 6302676 5466670 6262648 5494230 6201042 5683996 5904130 5788108 5771464 5929358 5650986 6057540 5621166 6175798 5577148 # start_trial(80) : # end_trial(80) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.56 s # Pareto: 80 Size: 7 5461970 6319240 5503840 6236246 5530942 6134874 5742922 5773648 5918548 5687640 6178900 5572652 6283980 5544396 # start_trial(81) : # end_trial(81) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.604 s # Pareto: 81 Size: 9 5475818 6426268 5482546 6316172 5511874 6183640 5552698 6091540 5684826 5902532 5748256 5829988 5991182 5654958 6183922 5569438 6343706 5558770 # start_trial(82) : # end_trial(82) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.792 s # Pareto: 82 Size: 10 5454380 6490644 5494020 6401882 5496952 6259430 5555082 6095164 5714598 5859320 5826914 5752076 5930814 5667166 6137982 5595728 6181432 5584188 6294372 5570056 # start_trial(83) : # end_trial(83) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.472 s # Pareto: 83 Size: 10 5476294 6453592 5481144 6314904 5503244 6229860 5573066 6061852 5683296 5901926 5887694 5706562 6018290 5640230 6110216 5602750 6226046 5578226 6309536 5569346 # start_trial(84) : # end_trial(84) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.42 s # Pareto: 84 Size: 8 5461520 6409454 5502736 6286354 5616868 5904096 5893356 5687982 6013554 5644338 6068540 5601686 6321966 5561408 6328150 5547548 # start_trial(85) : # end_trial(85) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.788 s # Pareto: 85 Size: 9 5440400 6378466 5479794 6297932 5525910 6125262 5581258 6035782 5662780 5888358 5786134 5770462 5930072 5673142 6074790 5594830 6298186 5559392 # start_trial(86) : # end_trial(86) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.484 s # Pareto: 86 Size: 8 5474360 6520712 5503740 6239402 5505762 6154052 5645772 5898168 5791092 5784764 5930828 5686390 6133224 5603120 6248228 5562056 # start_trial(87) : # end_trial(87) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.556 s # Pareto: 87 Size: 8 5475600 6374582 5503280 6178796 5522796 6145946 5658344 5886500 5850094 5730296 6016756 5619020 6090798 5597146 6244574 5574980 # start_trial(88) : # end_trial(88) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 88 Size: 8 5478278 6286976 5512044 6215628 5588082 6017112 5705176 5870614 5752378 5808252 5951500 5646556 6137224 5576298 6348750 5551522 # start_trial(89) : # end_trial(89) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 89 Size: 10 5451960 6407926 5494754 6303792 5500712 6248508 5580588 6023686 5676502 5882462 5767318 5773006 5959630 5653962 6157060 5579384 6202784 5570690 6337328 5551148 # start_trial(90) : # end_trial(90) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 90 Size: 8 5454256 6406538 5505964 6172394 5623062 5945814 5666012 5899346 5823416 5776752 5933776 5640712 6303492 5571864 6394170 5559036 # start_trial(91) : # end_trial(91) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 91 Size: 10 5473092 6434892 5483758 6346654 5503582 6273586 5584672 6042688 5606238 5970870 5835668 5737220 6044596 5628414 6046402 5574712 6311694 5554934 6315350 5548278 # start_trial(92) : # end_trial(92) : Pareto Size = 10, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 92 Size: 10 5470936 6517966 5475690 6320618 5500834 6239524 5544000 6070862 5677350 5855750 5832728 5743664 5926284 5679876 6108596 5609460 6311280 5578192 6452774 5560716 # start_trial(93) : # end_trial(93) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 93 Size: 9 5462638 6412128 5482590 6284282 5497544 6240212 5550588 6056364 5730798 5844904 5800418 5775816 6017668 5625184 6115646 5604498 6284432 5562496 # start_trial(94) : # end_trial(94) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.552 s # Pareto: 94 Size: 8 5459500 6477452 5485472 6355412 5510534 6191900 5542482 6136756 5667176 5888524 5806300 5744756 5984090 5661664 6242524 5552126 # start_trial(95) : # end_trial(95) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 95 Size: 8 5455376 6432280 5487974 6315414 5506744 6208822 5579864 6035980 5702816 5885406 5821640 5736174 6008106 5602344 6188000 5564444 # start_trial(96) : # end_trial(96) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.544 s # Pareto: 96 Size: 9 5478474 6439740 5481166 6303486 5512912 6191432 5553648 6101466 5691254 5892726 5806686 5759848 6025744 5632446 6116446 5598472 6368894 5568552 # start_trial(97) : # end_trial(97) : Pareto Size = 9, Scalarizations = 10, Elapsed time = 7.548 s # Pareto: 97 Size: 9 5454650 6387114 5520800 6182892 5538604 6127718 5611070 5949594 5853072 5732714 6032496 5647702 6083704 5620360 6271070 5592926 6377154 5572286 # start_trial(98) : # end_trial(98) : Pareto Size = 7, Scalarizations = 10, Elapsed time = 7.548 s # Pareto: 98 Size: 7 5475392 6416886 5492298 6410812 5527576 6115370 5653766 5887336 5798162 5776322 5977888 5650516 6174526 5576070 # start_trial(99) : # end_trial(99) : Pareto Size = 8, Scalarizations = 10, Elapsed time = 7.54 s # Pareto: 99 Size: 8 5465638 6331462 5493238 6240190 5567252 6055564 5709936 5879216 5828292 5760602 5938028 5679240 6230124 5568504 6449060 5559802 # Average Number Scalarizations = 10, Average Trial Time = 7.575 s eaf/inst/extdata/tpls0000644000175000017500000117316514045207032014466 0ustar nileshnilesh178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 146658.000000 22062.000000 141911.000000 22351.000000 129291.000000 23080.000000 117595.000000 23896.000000 116695.000000 23992.000000 112740.000000 24437.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 90532.000000 28339.000000 86632.000000 29471.000000 87329.000000 28966.000000 83628.000000 30199.000000 83135.000000 30355.000000 82683.000000 30448.000000 80264.000000 31439.000000 77445.000000 32503.000000 72795.000000 34631.000000 71596.000000 35157.000000 69539.000000 36359.000000 66965.000000 37824.000000 66385.000000 38049.000000 62475.000000 40670.000000 59870.000000 42531.000000 59436.000000 42532.000000 58807.000000 42967.000000 56523.000000 44775.000000 54649.000000 46258.000000 53270.000000 47689.000000 50755.000000 50391.000000 48553.000000 52631.000000 48136.000000 52800.000000 47775.000000 53263.000000 45867.000000 55743.000000 44330.000000 57930.000000 43637.000000 58732.000000 41652.000000 61391.000000 40828.000000 62705.000000 37837.000000 66813.000000 37794.000000 66920.000000 36386.000000 70543.000000 34131.000000 75190.000000 32057.000000 81378.000000 31600.000000 82770.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 28910.000000 94201.000000 28540.000000 96019.000000 27972.000000 99178.000000 27835.000000 100077.000000 27464.000000 102676.000000 27123.000000 105362.000000 25332.000000 119349.000000 25065.000000 122288.000000 24521.000000 125519.000000 23748.000000 136042.000000 23411.000000 139720.000000 22949.000000 149976.000000 22914.000000 151040.000000 22534.000000 161035.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22395.000000 162458.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 23962.000000 135291.000000 24853.000000 125477.000000 25302.000000 121670.000000 25838.000000 117501.000000 28570.000000 95788.000000 29909.000000 89597.000000 31182.000000 84364.000000 32347.000000 80529.000000 33067.000000 78517.000000 33468.000000 77451.000000 33871.000000 76431.000000 34520.000000 74770.000000 35675.000000 72095.000000 36681.000000 70112.000000 39218.000000 65076.000000 39276.000000 64852.000000 40356.000000 63206.000000 40970.000000 62224.000000 42455.000000 60228.000000 43924.000000 58323.000000 44522.000000 57639.000000 49706.000000 51721.000000 51898.000000 48778.000000 52732.000000 47968.000000 54887.000000 46163.000000 57349.000000 44207.000000 57672.000000 43999.000000 58301.000000 43564.000000 64044.000000 39697.000000 65810.000000 38378.000000 69860.000000 36158.000000 71059.000000 35566.000000 70332.000000 35906.000000 71747.000000 34989.000000 72474.000000 34649.000000 76092.000000 33132.000000 81369.000000 31166.000000 84935.000000 29827.000000 85428.000000 29671.000000 86649.000000 29260.000000 88925.000000 28461.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 100010.000000 26053.000000 101865.000000 25748.000000 107330.000000 25084.000000 120950.000000 23670.000000 120996.000000 23608.000000 127803.000000 23123.000000 136069.000000 22545.000000 150274.000000 21879.000000 152848.000000 21791.000000 158392.000000 21594.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 167892.000000 21370.000000 146658.000000 22062.000000 141465.000000 22277.000000 122314.000000 23568.000000 120402.000000 23662.000000 113358.000000 24469.000000 105112.000000 25392.000000 103263.000000 25656.000000 100243.000000 26102.000000 93980.000000 27097.000000 90720.000000 27913.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 71596.000000 35157.000000 67230.000000 37803.000000 62581.000000 40625.000000 63730.000000 39803.000000 61404.000000 41422.000000 61597.000000 41248.000000 60612.000000 41930.000000 59098.000000 43097.000000 56750.000000 44877.000000 54452.000000 46436.000000 53689.000000 47126.000000 51468.000000 48849.000000 48358.000000 52509.000000 48555.000000 51964.000000 47072.000000 53604.000000 45854.000000 55214.000000 44820.000000 56710.000000 42387.000000 60634.000000 41359.000000 62066.000000 40354.000000 63556.000000 37885.000000 67147.000000 35105.000000 72975.000000 34532.000000 74124.000000 34131.000000 75190.000000 33674.000000 76582.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29072.000000 93375.000000 27761.000000 100793.000000 27355.000000 103292.000000 26752.000000 107331.000000 25547.000000 116113.000000 24544.000000 125340.000000 23972.000000 133355.000000 23505.000000 138034.000000 22690.000000 153540.000000 22597.000000 155801.000000 22408.000000 163419.000000 22177.000000 173558.000000 22141.000000 176436.000000 22311.000000 168648.000000 22467.000000 159692.000000 22894.000000 148511.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 25127.000000 118612.000000 25384.000000 116450.000000 25764.000000 113505.000000 25862.000000 112617.000000 26635.000000 107491.000000 27396.000000 102887.000000 28253.000000 97828.000000 28839.000000 94961.000000 29843.000000 90333.000000 31213.000000 84428.000000 31146.000000 84556.000000 31600.000000 82770.000000 32057.000000 81378.000000 33159.000000 78214.000000 34644.000000 73874.000000 35687.000000 71449.000000 36856.000000 69047.000000 38634.000000 66488.000000 41572.000000 61875.000000 40528.000000 63019.000000 43885.000000 58282.000000 45757.000000 55779.000000 48913.000000 51940.000000 49543.000000 51112.000000 49105.000000 51488.000000 53210.000000 47512.000000 53795.000000 46982.000000 53919.000000 46880.000000 54480.000000 46282.000000 54833.000000 46005.000000 61469.000000 41277.000000 64448.000000 39478.000000 64049.000000 39523.000000 72337.000000 34771.000000 72474.000000 34649.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 84290.000000 29866.000000 86959.000000 29034.000000 87095.000000 28995.000000 88316.000000 28584.000000 97381.000000 26695.000000 98926.000000 26262.000000 105922.000000 25287.000000 110007.000000 24827.000000 119846.000000 23734.000000 117595.000000 23896.000000 120921.000000 23635.000000 131066.000000 22907.000000 136069.000000 22545.000000 155316.000000 21706.000000 162108.000000 21464.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 155632.000000 21714.000000 146658.000000 22062.000000 128138.000000 23106.000000 124776.000000 23321.000000 119218.000000 23827.000000 116695.000000 23992.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93289.000000 27534.000000 91985.000000 27910.000000 85195.000000 29863.000000 80631.000000 31225.000000 79864.000000 31512.000000 77445.000000 32503.000000 74953.000000 33638.000000 71118.000000 35424.000000 69649.000000 36227.000000 70278.000000 35792.000000 69008.000000 36546.000000 67158.000000 37650.000000 64552.000000 39194.000000 63911.000000 39567.000000 63243.000000 40084.000000 57553.000000 44130.000000 56210.000000 45084.000000 56403.000000 44910.000000 52517.000000 48330.000000 53334.000000 47252.000000 50082.000000 50713.000000 49552.000000 51298.000000 47568.000000 53238.000000 47303.000000 53457.000000 46373.000000 54607.000000 44677.000000 56711.000000 40944.000000 62531.000000 40140.000000 63570.000000 38939.000000 65353.000000 36404.000000 70194.000000 33003.000000 78974.000000 33889.000000 76133.000000 31890.000000 81921.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 30049.000000 89215.000000 29522.000000 91329.000000 27774.000000 101380.000000 27637.000000 102279.000000 27100.000000 105304.000000 26229.000000 112106.000000 24928.000000 122012.000000 24608.000000 124579.000000 24510.000000 125467.000000 24282.000000 128838.000000 23759.000000 136094.000000 22608.000000 158971.000000 22312.000000 168478.000000 22301.000000 169491.000000 22265.000000 171457.000000 22199.000000 177946.000000 22230.000000 174383.000000 22242.000000 173200.000000 22347.000000 166796.000000 22544.000000 160319.000000 22804.000000 151602.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 24019.000000 133584.000000 24161.000000 132205.000000 25384.000000 116450.000000 25976.000000 112432.000000 26890.000000 106800.000000 27651.000000 102196.000000 28944.000000 94465.000000 28128.000000 98005.000000 29922.000000 89743.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33588.000000 76835.000000 33989.000000 75769.000000 34532.000000 74124.000000 35917.000000 71173.000000 36490.000000 70024.000000 38750.000000 65578.000000 40528.000000 63019.000000 43285.000000 59221.000000 43824.000000 58474.000000 43885.000000 58282.000000 45757.000000 55779.000000 48536.000000 52661.000000 48886.000000 52209.000000 50190.000000 50311.000000 51630.000000 48824.000000 53593.000000 46991.000000 55213.000000 45731.000000 58350.000000 43644.000000 69299.000000 36417.000000 69447.000000 36284.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 82715.000000 30738.000000 86374.000000 29379.000000 86559.000000 29170.000000 87095.000000 28995.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105379.000000 25247.000000 108181.000000 24930.000000 117520.000000 23904.000000 125140.000000 23293.000000 134517.000000 22638.000000 138992.000000 22366.000000 146874.000000 22017.000000 152848.000000 21791.000000 161330.000000 21492.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 164244.000000 21408.000000 144313.000000 22143.000000 142666.000000 22196.000000 141189.000000 22281.000000 127785.000000 23115.000000 119218.000000 23827.000000 109334.000000 24802.000000 105379.000000 25247.000000 104569.000000 25352.000000 102645.000000 25624.000000 101528.000000 25714.000000 98199.000000 26319.000000 81152.000000 31137.000000 79137.000000 31852.000000 77445.000000 32503.000000 73522.000000 34291.000000 71596.000000 35157.000000 69296.000000 36452.000000 68026.000000 37206.000000 64301.000000 39533.000000 64607.000000 39306.000000 64398.000000 39377.000000 63956.000000 39694.000000 61534.000000 41268.000000 59663.000000 42716.000000 57789.000000 44199.000000 56888.000000 44765.000000 56210.000000 45084.000000 54452.000000 46436.000000 53689.000000 47126.000000 52891.000000 47945.000000 49470.000000 51532.000000 49979.000000 50907.000000 48152.000000 52971.000000 45533.000000 56138.000000 45902.000000 55389.000000 44206.000000 57493.000000 43554.000000 58396.000000 41709.000000 61301.000000 39528.000000 64842.000000 37837.000000 66813.000000 37794.000000 66920.000000 33627.000000 77414.000000 33170.000000 78806.000000 31146.000000 84556.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 28924.000000 94499.000000 28226.000000 98882.000000 27549.000000 103170.000000 26880.000000 107622.000000 24743.000000 122912.000000 24407.000000 125974.000000 23589.000000 137050.000000 22679.000000 153124.000000 22589.000000 156028.000000 22356.000000 165632.000000 22307.000000 170201.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22395.000000 162458.000000 22972.000000 146867.000000 23369.000000 141683.000000 23950.000000 135514.000000 25674.000000 117697.000000 26149.000000 111658.000000 26618.000000 108171.000000 26895.000000 105968.000000 27656.000000 101364.000000 28384.000000 97325.000000 29086.000000 93305.000000 29230.000000 92655.000000 30392.000000 87997.000000 31182.000000 84364.000000 31441.000000 83504.000000 32057.000000 81378.000000 33841.000000 76039.000000 34131.000000 75190.000000 34892.000000 73290.000000 35687.000000 71449.000000 36260.000000 70300.000000 36856.000000 69047.000000 39948.000000 63891.000000 40458.000000 63030.000000 41943.000000 61034.000000 42293.000000 60582.000000 43373.000000 59285.000000 46162.000000 55039.000000 48276.000000 52418.000000 51094.000000 49583.000000 52297.000000 48502.000000 53589.000000 47250.000000 53995.000000 46863.000000 54590.000000 46363.000000 58038.000000 43786.000000 63664.000000 40095.000000 68168.000000 37089.000000 72946.000000 34463.000000 72474.000000 34649.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 80631.000000 31225.000000 83797.000000 30022.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 146078.000000 22103.000000 151327.000000 21933.000000 168458.000000 21355.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 163476.000000 21481.000000 154813.000000 21746.000000 146382.000000 22066.000000 144905.000000 22151.000000 127445.000000 23152.000000 117595.000000 23896.000000 109259.000000 24810.000000 103377.000000 25450.000000 101528.000000 25714.000000 97348.000000 26473.000000 92485.000000 27782.000000 92349.000000 27821.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 75393.000000 33469.000000 73522.000000 34291.000000 71596.000000 35157.000000 70326.000000 35911.000000 66195.000000 38606.000000 63323.000000 40252.000000 58228.000000 43936.000000 56658.000000 44794.000000 58277.000000 43427.000000 54455.000000 46492.000000 53689.000000 47126.000000 51468.000000 48849.000000 44775.000000 57120.000000 43863.000000 58319.000000 42312.000000 60403.000000 41068.000000 62264.000000 40666.000000 62496.000000 39881.000000 63931.000000 38791.000000 65397.000000 37837.000000 66813.000000 34661.000000 74148.000000 34131.000000 75190.000000 31890.000000 81921.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28924.000000 94499.000000 28148.000000 98590.000000 27450.000000 103043.000000 27315.000000 103929.000000 26234.000000 112557.000000 25606.000000 117198.000000 25464.000000 118577.000000 24854.000000 124019.000000 24583.000000 127703.000000 22992.000000 146910.000000 22680.000000 153585.000000 22475.000000 159465.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23231.000000 143591.000000 23628.000000 138407.000000 24407.000000 129812.000000 24520.000000 128658.000000 24832.000000 125971.000000 26890.000000 107454.000000 26587.000000 108630.000000 26589.000000 108617.000000 27642.000000 102246.000000 28012.000000 100428.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 33588.000000 76835.000000 35004.000000 73040.000000 35687.000000 71449.000000 36856.000000 69047.000000 38383.000000 66488.000000 39854.000000 64163.000000 39272.000000 64693.000000 40471.000000 63056.000000 43307.000000 59226.000000 41962.000000 60781.000000 46999.000000 54369.000000 49192.000000 51801.000000 50122.000000 50651.000000 53082.000000 47684.000000 54830.000000 46031.000000 57739.000000 44142.000000 60965.000000 41943.000000 65622.000000 38729.000000 69901.000000 36223.000000 73044.000000 34558.000000 79864.000000 31512.000000 85722.000000 29424.000000 90134.000000 28095.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 131076.000000 22847.000000 139602.000000 22353.000000 144769.000000 22160.000000 155255.000000 21718.000000 168458.000000 21355.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 165022.000000 21380.000000 155632.000000 21714.000000 146658.000000 22062.000000 145106.000000 22155.000000 137133.000000 22598.000000 112791.000000 24416.000000 111891.000000 24512.000000 110813.000000 24632.000000 103377.000000 25450.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 89961.000000 28561.000000 86593.000000 29185.000000 84586.000000 29903.000000 80887.000000 31303.000000 77490.000000 32560.000000 76291.000000 33086.000000 75564.000000 33426.000000 74910.000000 33749.000000 70023.000000 36238.000000 68753.000000 36992.000000 66875.000000 38148.000000 65146.000000 38941.000000 61684.000000 41401.000000 62882.000000 40398.000000 58759.000000 43071.000000 56403.000000 44910.000000 53064.000000 47685.000000 51468.000000 48849.000000 50538.000000 49999.000000 46652.000000 54766.000000 46265.000000 55273.000000 44156.000000 57772.000000 42801.000000 59591.000000 41843.000000 60954.000000 40590.000000 62862.000000 38501.000000 65999.000000 35946.000000 71603.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29500.000000 91520.000000 28438.000000 97485.000000 27783.000000 101437.000000 27646.000000 102336.000000 27275.000000 104935.000000 25800.000000 114821.000000 25023.000000 121968.000000 24756.000000 124907.000000 24534.000000 127832.000000 22984.000000 147137.000000 22895.000000 148972.000000 22559.000000 158527.000000 22267.000000 170922.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22395.000000 162458.000000 22585.000000 156171.000000 22908.000000 148780.000000 23566.000000 139649.000000 23950.000000 135514.000000 24341.000000 130173.000000 25674.000000 116314.000000 25386.000000 117424.000000 25952.000000 113383.000000 27027.000000 105541.000000 27682.000000 101589.000000 27985.000000 98720.000000 28129.000000 98070.000000 29230.000000 92655.000000 31162.000000 84903.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34644.000000 73874.000000 35004.000000 73040.000000 36507.000000 70041.000000 37080.000000 68892.000000 38270.000000 66101.000000 38576.000000 65641.000000 39272.000000 64693.000000 40708.000000 62649.000000 44710.000000 57319.000000 45060.000000 56867.000000 46446.000000 55252.000000 48721.000000 52210.000000 49250.000000 51488.000000 52365.000000 48322.000000 52954.000000 47790.000000 53593.000000 46991.000000 57201.000000 44361.000000 59846.000000 42481.000000 64199.000000 39662.000000 65469.000000 38908.000000 67323.000000 37831.000000 67733.000000 37451.000000 69272.000000 36585.000000 71728.000000 35452.000000 78327.000000 32447.000000 79437.000000 31923.000000 83797.000000 30022.000000 85511.000000 29455.000000 86943.000000 29013.000000 88316.000000 28584.000000 93980.000000 27097.000000 95553.000000 26801.000000 105112.000000 25392.000000 105922.000000 25287.000000 111888.000000 24600.000000 119346.000000 23801.000000 121666.000000 23538.000000 129524.000000 22940.000000 131076.000000 22847.000000 139602.000000 22353.000000 144769.000000 22160.000000 151327.000000 21933.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 154577.000000 21805.000000 146658.000000 22062.000000 145181.000000 22147.000000 131332.000000 23084.000000 116057.000000 24255.000000 101408.000000 25822.000000 99559.000000 26086.000000 98708.000000 26240.000000 97135.000000 26536.000000 92272.000000 27845.000000 90968.000000 28221.000000 81600.000000 31021.000000 80309.000000 31496.000000 77490.000000 32560.000000 76763.000000 32900.000000 76674.000000 32930.000000 72795.000000 34631.000000 68026.000000 37206.000000 63572.000000 40109.000000 61991.000000 41069.000000 58788.000000 43037.000000 58346.000000 43354.000000 56472.000000 44837.000000 54622.000000 46321.000000 53788.000000 47131.000000 53258.000000 47716.000000 48503.000000 52926.000000 47555.000000 53687.000000 47168.000000 54194.000000 44013.000000 57797.000000 43361.000000 58700.000000 40526.000000 62902.000000 38501.000000 65999.000000 36395.000000 70115.000000 34538.000000 74944.000000 33801.000000 76697.000000 33595.000000 77325.000000 32025.000000 82002.000000 30013.000000 89633.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28932.000000 94679.000000 27752.000000 101571.000000 27047.000000 105996.000000 26960.000000 106294.000000 25968.000000 114124.000000 25572.000000 117082.000000 25121.000000 121080.000000 24756.000000 124907.000000 24534.000000 127832.000000 22840.000000 152073.000000 22672.000000 153812.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22585.000000 156171.000000 22900.000000 149007.000000 23097.000000 145579.000000 23502.000000 140168.000000 23940.000000 134828.000000 24082.000000 133449.000000 25462.000000 120719.000000 26269.000000 110579.000000 26642.000000 107967.000000 27757.000000 101339.000000 28184.000000 98686.000000 28192.000000 98646.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 34131.000000 75190.000000 34644.000000 73874.000000 35321.000000 72426.000000 35917.000000 71173.000000 36283.000000 70196.000000 36856.000000 69047.000000 38383.000000 66488.000000 39320.000000 64779.000000 38576.000000 65641.000000 45122.000000 57001.000000 52398.000000 48714.000000 54318.000000 46467.000000 54809.000000 46095.000000 57365.000000 44297.000000 60668.000000 42288.000000 64852.000000 39406.000000 65226.000000 39130.000000 68016.000000 37583.000000 71948.000000 35483.000000 76346.000000 33359.000000 80357.000000 31356.000000 81124.000000 31069.000000 80631.000000 31225.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 88316.000000 28584.000000 93257.000000 27364.000000 93980.000000 27097.000000 96861.000000 26573.000000 103047.000000 25703.000000 105922.000000 25287.000000 111888.000000 24600.000000 119324.000000 23782.000000 121666.000000 23538.000000 125998.000000 23217.000000 135639.000000 22598.000000 141003.000000 22339.000000 146495.000000 22130.000000 154241.000000 21849.000000 164504.000000 21665.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 155632.000000 21714.000000 142942.000000 22192.000000 141465.000000 22277.000000 137133.000000 22598.000000 119099.000000 23907.000000 115387.000000 24220.000000 105525.000000 25330.000000 102716.000000 25594.000000 100867.000000 25858.000000 99559.000000 26086.000000 98702.000000 26281.000000 98552.000000 26318.000000 93197.000000 27695.000000 81879.000000 30797.000000 85045.000000 29594.000000 82649.000000 30502.000000 79830.000000 31566.000000 76291.000000 33086.000000 75564.000000 33426.000000 74910.000000 33749.000000 70278.000000 35792.000000 69008.000000 36546.000000 64358.000000 39449.000000 62774.000000 40451.000000 62106.000000 40968.000000 54649.000000 46258.000000 54504.000000 46402.000000 53082.000000 47685.000000 50815.000000 49780.000000 48465.000000 52304.000000 43002.000000 60193.000000 42438.000000 60527.000000 40503.000000 63633.000000 39860.000000 64041.000000 39165.000000 64901.000000 38533.000000 65865.000000 37813.000000 67308.000000 36161.000000 70918.000000 35588.000000 72067.000000 34898.000000 73643.000000 33574.000000 77635.000000 30930.000000 85699.000000 31341.000000 83630.000000 29679.000000 91033.000000 27870.000000 100644.000000 27373.000000 103607.000000 27371.000000 103620.000000 26610.000000 108648.000000 26269.000000 111334.000000 25907.000000 114408.000000 25404.000000 118914.000000 24464.000000 127101.000000 24032.000000 130689.000000 23509.000000 137945.000000 22413.000000 171840.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22679.000000 153124.000000 22971.000000 146406.000000 23376.000000 140995.000000 24607.000000 126783.000000 24866.000000 123507.000000 27025.000000 107177.000000 27197.000000 104135.000000 28210.000000 98621.000000 28528.000000 96146.000000 29389.000000 91921.000000 30000.000000 89561.000000 30020.000000 89022.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 33898.000000 76180.000000 34532.000000 74124.000000 34644.000000 73874.000000 35321.000000 72426.000000 35917.000000 71173.000000 36283.000000 70196.000000 36856.000000 69047.000000 37778.000000 67551.000000 38576.000000 65641.000000 41080.000000 62174.000000 42549.000000 60269.000000 43629.000000 58972.000000 46353.000000 54859.000000 49576.000000 50993.000000 49311.000000 51212.000000 50445.000000 50221.000000 56959.000000 44585.000000 58860.000000 43227.000000 59489.000000 42792.000000 61298.000000 41539.000000 61527.000000 41365.000000 66096.000000 38634.000000 68048.000000 37250.000000 66849.000000 37776.000000 68318.000000 36973.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 90134.000000 28095.000000 93257.000000 27364.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 137262.000000 22452.000000 139602.000000 22353.000000 148485.000000 22030.000000 154241.000000 21849.000000 164112.000000 21697.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 145812.000000 22182.000000 137213.000000 22584.000000 127217.000000 23299.000000 125446.000000 23433.000000 113358.000000 24469.000000 105112.000000 25392.000000 103263.000000 25656.000000 100867.000000 25858.000000 97135.000000 26536.000000 90134.000000 28095.000000 89998.000000 28134.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 74953.000000 33638.000000 72712.000000 34840.000000 69608.000000 36551.000000 64656.000000 39441.000000 65199.000000 39000.000000 57218.000000 44773.000000 54363.000000 46809.000000 52398.000000 48471.000000 50536.000000 50498.000000 47724.000000 53561.000000 47242.000000 54174.000000 45445.000000 56498.000000 44326.000000 57951.000000 41026.000000 62739.000000 40469.000000 63263.000000 39525.000000 64628.000000 38375.000000 66311.000000 35664.000000 71829.000000 34338.000000 75162.000000 34132.000000 75790.000000 33010.000000 79177.000000 31114.000000 85758.000000 30049.000000 89506.000000 29500.000000 91520.000000 28932.000000 94679.000000 27752.000000 101571.000000 27182.000000 105110.000000 27099.000000 105607.000000 26103.000000 112679.000000 25536.000000 117007.000000 25394.000000 118386.000000 25127.000000 121325.000000 24534.000000 127832.000000 23962.000000 135847.000000 22679.000000 153124.000000 22503.000000 158742.000000 22443.000000 161331.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22593.000000 155944.000000 22908.000000 148780.000000 22972.000000 146867.000000 23369.000000 141683.000000 23753.000000 137548.000000 24621.000000 127628.000000 25099.000000 123596.000000 26319.000000 110526.000000 26247.000000 110770.000000 27275.000000 104206.000000 27410.000000 103320.000000 28353.000000 98282.000000 29170.000000 93138.000000 29314.000000 92488.000000 29954.000000 89758.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 35060.000000 73273.000000 35103.000000 73166.000000 34532.000000 74124.000000 34892.000000 73290.000000 35465.000000 72141.000000 37105.000000 68958.000000 38533.000000 65865.000000 39598.000000 64189.000000 43008.000000 59279.000000 44539.000000 57279.000000 45729.000000 55598.000000 46396.000000 54849.000000 50786.000000 50488.000000 51836.000000 49009.000000 52787.000000 48162.000000 53117.000000 47787.000000 56614.000000 44846.000000 58544.000000 43286.000000 62912.000000 40495.000000 64182.000000 39741.000000 64704.000000 39412.000000 68167.000000 37141.000000 73777.000000 34408.000000 75519.000000 33369.000000 77938.000000 32378.000000 79864.000000 31512.000000 80631.000000 31225.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 95553.000000 26801.000000 96861.000000 26573.000000 101788.000000 25819.000000 101859.000000 25789.000000 107106.000000 25100.000000 117595.000000 23896.000000 121560.000000 23583.000000 131104.000000 22910.000000 132806.000000 22761.000000 150550.000000 21875.000000 158392.000000 21594.000000 162108.000000 21464.000000 166322.000000 21411.000000 173801.000000 21305.000000 171511.000000 21317.000000 164244.000000 21408.000000 150866.000000 21883.000000 146658.000000 22062.000000 145106.000000 22155.000000 124753.000000 23297.000000 112966.000000 24480.000000 107803.000000 25060.000000 105112.000000 25392.000000 103263.000000 25656.000000 102040.000000 25855.000000 93980.000000 27097.000000 90828.000000 27926.000000 90692.000000 27965.000000 86312.000000 29277.000000 82649.000000 30502.000000 79830.000000 31566.000000 76246.000000 33029.000000 71596.000000 35157.000000 70278.000000 35792.000000 66708.000000 37841.000000 64359.000000 39368.000000 62475.000000 40670.000000 61126.000000 41594.000000 59756.000000 42604.000000 54981.000000 45986.000000 54504.000000 46402.000000 53434.000000 47351.000000 46961.000000 54093.000000 43715.000000 58386.000000 41126.000000 62158.000000 39946.000000 63829.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 36024.000000 71240.000000 32347.000000 80529.000000 31600.000000 82770.000000 31341.000000 83630.000000 31197.000000 84280.000000 29876.000000 89672.000000 29230.000000 92882.000000 28697.000000 95982.000000 27956.000000 100558.000000 25855.000000 114932.000000 25783.000000 115442.000000 25381.000000 119193.000000 24826.000000 122989.000000 24654.000000 125142.000000 24468.000000 126367.000000 24267.000000 128875.000000 22910.000000 151129.000000 22567.000000 161121.000000 22215.000000 173643.000000 22146.000000 177121.000000 22242.000000 173200.000000 22426.000000 163840.000000 22631.000000 157960.000000 23007.000000 149629.000000 23428.000000 141557.000000 23825.000000 136373.000000 24209.000000 132238.000000 26247.000000 110770.000000 27523.000000 102981.000000 28264.000000 97411.000000 28910.000000 94201.000000 31119.000000 85006.000000 31182.000000 84364.000000 32057.000000 81378.000000 33841.000000 76039.000000 34131.000000 75190.000000 34644.000000 73874.000000 35321.000000 72426.000000 36490.000000 70024.000000 36856.000000 69047.000000 39031.000000 65784.000000 42148.000000 61046.000000 42660.000000 60240.000000 44129.000000 58335.000000 47536.000000 53638.000000 48405.000000 52132.000000 49072.000000 51383.000000 51061.000000 49478.000000 51592.000000 48949.000000 53130.000000 47655.000000 54737.000000 46205.000000 60246.000000 42503.000000 61931.000000 41148.000000 66376.000000 38610.000000 65972.000000 38712.000000 73210.000000 34666.000000 74615.000000 33903.000000 76718.000000 32843.000000 79137.000000 31852.000000 79904.000000 31565.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 111085.000000 24707.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 135710.000000 22545.000000 137262.000000 22452.000000 139602.000000 22353.000000 144769.000000 22160.000000 150525.000000 21979.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 162108.000000 21464.000000 154266.000000 21745.000000 138542.000000 22456.000000 130947.000000 22993.000000 124776.000000 23321.000000 120482.000000 23671.000000 117385.000000 23998.000000 108191.000000 25030.000000 105184.000000 25366.000000 101528.000000 25714.000000 100220.000000 25942.000000 99772.000000 26023.000000 98921.000000 26177.000000 96948.000000 26609.000000 97348.000000 26473.000000 92867.000000 27700.000000 94060.000000 27341.000000 91391.000000 28173.000000 82786.000000 31299.000000 79103.000000 31906.000000 77401.000000 32590.000000 72795.000000 34631.000000 71596.000000 35157.000000 66897.000000 37895.000000 64544.000000 39333.000000 63312.000000 40109.000000 60530.000000 41827.000000 58084.000000 43601.000000 56210.000000 45084.000000 54289.000000 46638.000000 52900.000000 47756.000000 51468.000000 48849.000000 50975.000000 49328.000000 44006.000000 58063.000000 43190.000000 59198.000000 41032.000000 62235.000000 39756.000000 64069.000000 39323.000000 64781.000000 38567.000000 65938.000000 37135.000000 68992.000000 34403.000000 75154.000000 33067.000000 78517.000000 32347.000000 80529.000000 31890.000000 81921.000000 31631.000000 82781.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28264.000000 97411.000000 27972.000000 99178.000000 27970.000000 99191.000000 27464.000000 102676.000000 26603.000000 109214.000000 25451.000000 117802.000000 24790.000000 123665.000000 24291.000000 127413.000000 23719.000000 135428.000000 23022.000000 146640.000000 22725.000000 152476.000000 22280.000000 169103.000000 22269.000000 170116.000000 22220.000000 177300.000000 22199.000000 177946.000000 22230.000000 174383.000000 22241.000000 173370.000000 22426.000000 163840.000000 22631.000000 157960.000000 22923.000000 151242.000000 23598.000000 140076.000000 23863.000000 134733.000000 23973.000000 133552.000000 24989.000000 119902.000000 25862.000000 112617.000000 27079.000000 104523.000000 27852.000000 99397.000000 28128.000000 98005.000000 29088.000000 93815.000000 29465.000000 92268.000000 32194.000000 81690.000000 33159.000000 78214.000000 34131.000000 75190.000000 34532.000000 74124.000000 34644.000000 73874.000000 35321.000000 72426.000000 35917.000000 71173.000000 36856.000000 69047.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 41080.000000 62174.000000 42160.000000 60877.000000 45569.000000 56423.000000 47892.000000 53706.000000 50665.000000 50310.000000 51630.000000 48824.000000 53593.000000 46991.000000 55910.000000 45326.000000 59136.000000 43127.000000 68133.000000 37098.000000 67406.000000 37438.000000 70631.000000 35694.000000 71358.000000 35354.000000 74484.000000 34073.000000 75282.000000 33754.000000 80663.000000 31697.000000 80823.000000 31323.000000 83797.000000 30022.000000 85511.000000 29455.000000 87714.000000 28762.000000 88316.000000 28584.000000 94500.000000 27219.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 139602.000000 22353.000000 148485.000000 22030.000000 152941.000000 21882.000000 176171.000000 21292.000000 173801.000000 21305.000000 171511.000000 21317.000000 165022.000000 21380.000000 162108.000000 21464.000000 159032.000000 21576.000000 140019.000000 22371.000000 138542.000000 22456.000000 121227.000000 23574.000000 120402.000000 23662.000000 113358.000000 24469.000000 104494.000000 25360.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 91548.000000 27999.000000 80631.000000 31225.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 73911.000000 34314.000000 67676.000000 37437.000000 66406.000000 38191.000000 66083.000000 38399.000000 63525.000000 40204.000000 59463.000000 42952.000000 58454.000000 43748.000000 56441.000000 45282.000000 56026.000000 45583.000000 53859.000000 47571.000000 52780.000000 48639.000000 50355.000000 50393.000000 49688.000000 51142.000000 47211.000000 53746.000000 44556.000000 57041.000000 44206.000000 57493.000000 42069.000000 60392.000000 40816.000000 62300.000000 40224.000000 63297.000000 38619.000000 66018.000000 38791.000000 65397.000000 37837.000000 66813.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 30730.000000 86559.000000 30551.000000 87263.000000 29389.000000 91921.000000 29245.000000 92571.000000 29080.000000 93335.000000 29072.000000 93375.000000 28772.000000 94962.000000 27622.000000 101943.000000 27324.000000 103793.000000 26752.000000 107331.000000 26354.000000 110826.000000 24660.000000 123901.000000 23582.000000 139304.000000 23274.000000 143596.000000 22689.000000 153673.000000 22512.000000 158320.000000 22443.000000 161331.000000 22356.000000 165815.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23097.000000 145579.000000 23737.000000 136765.000000 24644.000000 127734.000000 25384.000000 116450.000000 25862.000000 112617.000000 26623.000000 108013.000000 27478.000000 102888.000000 28245.000000 98064.000000 29688.000000 91395.000000 29867.000000 90691.000000 30299.000000 89035.000000 30545.000000 87634.000000 31600.000000 82770.000000 32057.000000 81378.000000 33468.000000 77451.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 41687.000000 61052.000000 42316.000000 60125.000000 43801.000000 58129.000000 44151.000000 57677.000000 45979.000000 55412.000000 47507.000000 53578.000000 49684.000000 51152.000000 51455.000000 49274.000000 52876.000000 48062.000000 54893.000000 46250.000000 54418.000000 46586.000000 56777.000000 44830.000000 59489.000000 42792.000000 60011.000000 42463.000000 64731.000000 39348.000000 66363.000000 38327.000000 65707.000000 38637.000000 66273.000000 38368.000000 67536.000000 37803.000000 76291.000000 33086.000000 78257.000000 32273.000000 79055.000000 31954.000000 86312.000000 29277.000000 87714.000000 28762.000000 87850.000000 28723.000000 88316.000000 28584.000000 89999.000000 28203.000000 95715.000000 26841.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 111085.000000 24707.000000 111910.000000 24619.000000 125192.000000 23261.000000 129524.000000 22940.000000 134100.000000 22687.000000 139703.000000 22372.000000 142779.000000 22260.000000 150525.000000 21979.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 147150.000000 22013.000000 142942.000000 22192.000000 133732.000000 22760.000000 128455.000000 23045.000000 119324.000000 23782.000000 121227.000000 23574.000000 120402.000000 23662.000000 107000.000000 25167.000000 105112.000000 25392.000000 103263.000000 25656.000000 96861.000000 26573.000000 93980.000000 27097.000000 89499.000000 28324.000000 87814.000000 28774.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 71596.000000 35157.000000 70326.000000 35911.000000 62145.000000 40886.000000 61477.000000 41403.000000 55822.000000 45754.000000 55383.000000 45786.000000 55172.000000 45973.000000 54641.000000 46502.000000 53843.000000 47321.000000 50987.000000 50147.000000 49100.000000 52236.000000 46725.000000 54925.000000 43436.000000 59230.000000 44712.000000 57396.000000 42149.000000 60494.000000 42085.000000 60534.000000 40526.000000 62902.000000 39110.000000 65213.000000 38501.000000 65999.000000 34472.000000 74878.000000 33488.000000 77199.000000 34131.000000 75190.000000 32702.000000 79606.000000 32220.000000 81076.000000 31175.000000 84975.000000 31341.000000 83630.000000 30214.000000 88451.000000 30049.000000 89215.000000 29500.000000 91520.000000 28932.000000 94679.000000 27621.000000 102097.000000 27082.000000 105608.000000 26718.000000 108177.000000 26434.000000 110253.000000 25634.000000 117102.000000 24857.000000 124562.000000 23181.000000 143889.000000 22971.000000 146406.000000 22679.000000 153124.000000 22467.000000 159692.000000 22259.000000 168389.000000 22172.000000 172873.000000 22141.000000 176436.000000 22512.000000 158320.000000 23119.000000 143894.000000 23299.000000 141163.000000 23733.000000 135628.000000 24243.000000 129808.000000 24548.000000 126829.000000 25227.000000 118618.000000 26155.000000 111487.000000 26728.000000 107442.000000 28015.000000 99217.000000 28291.000000 97825.000000 30212.000000 88855.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 33468.000000 77451.000000 33871.000000 76431.000000 34644.000000 73874.000000 35004.000000 73040.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38375.000000 66311.000000 38750.000000 65578.000000 41132.000000 62046.000000 43782.000000 58443.000000 45793.000000 55890.000000 44999.000000 56508.000000 47435.000000 53849.000000 48251.000000 52689.000000 51910.000000 48909.000000 51846.000000 48949.000000 52978.000000 47900.000000 55884.000000 45310.000000 55922.000000 45185.000000 59110.000000 43099.000000 61640.000000 41306.000000 63955.000000 39750.000000 65347.000000 38732.000000 65839.000000 38419.000000 67308.000000 37616.000000 69310.000000 36406.000000 72809.000000 34585.000000 73536.000000 34245.000000 79864.000000 31512.000000 80631.000000 31225.000000 84290.000000 29866.000000 86466.000000 29190.000000 86602.000000 29151.000000 90720.000000 27913.000000 98926.000000 26262.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121666.000000 23538.000000 129524.000000 22940.000000 131076.000000 22847.000000 146718.000000 22085.000000 149794.000000 21973.000000 155509.000000 21752.000000 173801.000000 21305.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 162108.000000 21464.000000 154266.000000 21745.000000 143735.000000 22241.000000 138191.000000 22468.000000 124751.000000 23393.000000 117595.000000 23896.000000 109334.000000 24802.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 84290.000000 29866.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 71596.000000 35157.000000 70326.000000 35911.000000 67712.000000 37420.000000 63517.000000 39997.000000 63923.000000 39629.000000 59819.000000 42505.000000 57854.000000 44041.000000 56326.000000 44953.000000 55304.000000 45858.000000 53025.000000 47541.000000 51468.000000 48849.000000 48641.000000 52256.000000 48018.000000 52697.000000 45756.000000 55644.000000 42968.000000 59246.000000 43382.000000 58595.000000 41623.000000 61092.000000 40991.000000 62056.000000 40167.000000 63370.000000 39575.000000 64367.000000 38533.000000 65865.000000 37813.000000 67308.000000 37327.000000 68231.000000 36678.000000 69892.000000 33154.000000 79077.000000 32567.000000 80492.000000 32220.000000 81076.000000 31768.000000 82589.000000 31230.000000 84205.000000 30068.000000 88863.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28112.000000 97874.000000 27611.000000 101415.000000 26760.000000 106854.000000 25928.000000 113265.000000 25412.000000 117835.000000 25145.000000 120774.000000 24699.000000 124716.000000 23585.000000 137139.000000 23491.000000 138825.000000 23199.000000 145543.000000 22311.000000 166176.000000 22172.000000 172873.000000 22141.000000 176436.000000 22224.000000 170660.000000 22235.000000 169647.000000 22467.000000 159692.000000 22593.000000 155944.000000 22908.000000 148780.000000 22972.000000 146867.000000 23369.000000 141683.000000 25004.000000 122977.000000 25732.000000 115278.000000 26239.000000 111247.000000 27078.000000 105495.000000 27080.000000 105482.000000 28049.000000 99572.000000 29119.000000 93567.000000 29695.000000 90525.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 33468.000000 77451.000000 33871.000000 76431.000000 35105.000000 72975.000000 34532.000000 74124.000000 35240.000000 72621.000000 36527.000000 69946.000000 37100.000000 68797.000000 39272.000000 64693.000000 41514.000000 61744.000000 43899.000000 58533.000000 46786.000000 54999.000000 47827.000000 53730.000000 50906.000000 49837.000000 51836.000000 48687.000000 52231.000000 48159.000000 52536.000000 47908.000000 57260.000000 44267.000000 56631.000000 44702.000000 57061.000000 44370.000000 59200.000000 42912.000000 67349.000000 37522.000000 67978.000000 37087.000000 71477.000000 35266.000000 71747.000000 34989.000000 72474.000000 34649.000000 74893.000000 33658.000000 76890.000000 32813.000000 82221.000000 30751.000000 84935.000000 29827.000000 86249.000000 29396.000000 86785.000000 29221.000000 89536.000000 28380.000000 88316.000000 28584.000000 90828.000000 27926.000000 93257.000000 27364.000000 95553.000000 26801.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 111888.000000 24600.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 139602.000000 22353.000000 146078.000000 22103.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 152303.000000 21913.000000 145197.000000 22181.000000 128455.000000 23045.000000 124753.000000 23297.000000 121227.000000 23574.000000 112966.000000 24480.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 98926.000000 26262.000000 98596.000000 26317.000000 93980.000000 27097.000000 89117.000000 28406.000000 88180.000000 28623.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 73673.000000 34123.000000 72946.000000 34463.000000 70141.000000 35914.000000 68871.000000 36668.000000 64222.000000 39490.000000 60723.000000 41653.000000 60124.000000 42097.000000 58250.000000 43580.000000 56472.000000 44837.000000 55172.000000 45973.000000 54327.000000 46704.000000 51435.000000 49145.000000 50330.000000 50155.000000 50016.000000 50220.000000 48465.000000 52304.000000 45540.000000 56074.000000 45317.000000 56407.000000 43465.000000 59125.000000 40921.000000 62643.000000 39489.000000 64973.000000 40085.000000 63720.000000 39300.000000 65155.000000 37340.000000 69096.000000 36744.000000 70349.000000 35027.000000 73941.000000 34024.000000 76249.000000 34131.000000 75190.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27870.000000 100644.000000 27215.000000 104596.000000 27078.000000 105495.000000 25362.000000 117765.000000 25030.000000 120647.000000 24794.000000 122825.000000 24452.000000 125923.000000 23729.000000 135977.000000 23529.000000 137988.000000 22690.000000 153540.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22475.000000 159465.000000 22593.000000 155944.000000 22972.000000 146867.000000 23369.000000 141683.000000 26408.000000 113674.000000 27042.000000 109729.000000 29052.000000 94761.000000 29768.000000 91124.000000 31146.000000 84556.000000 31600.000000 82770.000000 32057.000000 81378.000000 33159.000000 78214.000000 34532.000000 74124.000000 35687.000000 71449.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 41962.000000 60781.000000 42312.000000 60329.000000 44566.000000 57297.000000 45533.000000 56143.000000 46245.000000 55024.000000 48187.000000 52729.000000 50555.000000 50096.000000 51803.000000 48582.000000 52966.000000 47576.000000 52536.000000 47908.000000 58573.000000 43350.000000 60889.000000 41572.000000 64706.000000 39051.000000 65976.000000 38297.000000 69029.000000 36628.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 88316.000000 28584.000000 90720.000000 27913.000000 95553.000000 26801.000000 96861.000000 26573.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 139602.000000 22353.000000 148485.000000 22030.000000 163189.000000 21499.000000 167403.000000 21446.000000 178446.000000 21282.000000 171511.000000 21317.000000 164244.000000 21408.000000 142708.000000 22236.000000 138233.000000 22508.000000 121614.000000 23570.000000 121250.000000 23598.000000 120350.000000 23694.000000 102716.000000 25594.000000 100867.000000 25858.000000 99559.000000 26086.000000 98708.000000 26240.000000 95340.000000 27084.000000 92080.000000 27900.000000 88789.000000 28500.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 79864.000000 31512.000000 77445.000000 32503.000000 76152.000000 33112.000000 74953.000000 33638.000000 71610.000000 35111.000000 68871.000000 36668.000000 66064.000000 38351.000000 60530.000000 41827.000000 59862.000000 42344.000000 58084.000000 43601.000000 56210.000000 45084.000000 55383.000000 45786.000000 54452.000000 46436.000000 53689.000000 47126.000000 51468.000000 48849.000000 48641.000000 52256.000000 43641.000000 58570.000000 43016.000000 59331.000000 43074.000000 59107.000000 42250.000000 60421.000000 41817.000000 61133.000000 40393.000000 63397.000000 40195.000000 63777.000000 38244.000000 66251.000000 37648.000000 67504.000000 35960.000000 71581.000000 33893.000000 77104.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28427.000000 97231.000000 27913.000000 100330.000000 27509.000000 102955.000000 27374.000000 103841.000000 26597.000000 109642.000000 25400.000000 119235.000000 25121.000000 121080.000000 24756.000000 124907.000000 24510.000000 125467.000000 24461.000000 126226.000000 23728.000000 135999.000000 23303.000000 145556.000000 22589.000000 156028.000000 22356.000000 165632.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 23940.000000 134828.000000 25643.000000 118984.000000 26855.000000 107911.000000 29183.000000 93399.000000 28910.000000 94201.000000 31047.000000 85250.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 35600.000000 71787.000000 36173.000000 70638.000000 37813.000000 67308.000000 38270.000000 66101.000000 38576.000000 65641.000000 40448.000000 63138.000000 48555.000000 52443.000000 50015.000000 50708.000000 50193.000000 50367.000000 51630.000000 48824.000000 54830.000000 46031.000000 57243.000000 44416.000000 63865.000000 40134.000000 65816.000000 38719.000000 65996.000000 38453.000000 68167.000000 37141.000000 71237.000000 35793.000000 77250.000000 33021.000000 81450.000000 31094.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 88316.000000 28584.000000 93257.000000 27364.000000 93980.000000 27097.000000 95553.000000 26801.000000 97618.000000 26490.000000 105112.000000 25392.000000 104453.000000 25409.000000 108408.000000 24964.000000 110159.000000 24714.000000 117595.000000 23896.000000 120996.000000 23608.000000 127803.000000 23123.000000 136069.000000 22545.000000 150274.000000 21879.000000 152848.000000 21791.000000 161330.000000 21492.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 155089.000000 21742.000000 141940.000000 22309.000000 141231.000000 22321.000000 131401.000000 22890.000000 116212.000000 24132.000000 116695.000000 23992.000000 113818.000000 24317.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 90828.000000 27926.000000 90692.000000 27965.000000 86312.000000 29277.000000 85045.000000 29594.000000 82649.000000 30502.000000 77445.000000 32503.000000 70376.000000 35887.000000 70868.000000 35574.000000 72337.000000 34771.000000 70037.000000 36066.000000 68040.000000 37160.000000 66079.000000 38276.000000 66385.000000 38049.000000 65756.000000 38484.000000 61846.000000 41105.000000 59756.000000 42604.000000 57984.000000 43966.000000 56329.000000 45009.000000 54452.000000 46436.000000 52086.000000 48548.000000 51468.000000 48849.000000 46739.000000 54168.000000 46361.000000 54657.000000 46119.000000 54995.000000 45344.000000 56075.000000 44310.000000 57571.000000 38420.000000 66202.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 35321.000000 72426.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29224.000000 92912.000000 28924.000000 94499.000000 26262.000000 111204.000000 25061.000000 119658.000000 24989.000000 119902.000000 24407.000000 125974.000000 23799.000000 134533.000000 23589.000000 137050.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 23760.000000 136860.000000 24943.000000 123377.000000 25853.000000 116664.000000 26326.000000 110054.000000 27717.000000 100283.000000 28112.000000 97874.000000 28120.000000 97834.000000 29230.000000 92655.000000 30551.000000 87263.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34644.000000 73874.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38576.000000 65641.000000 41077.000000 62359.000000 46348.000000 54936.000000 46671.000000 54493.000000 47601.000000 53343.000000 49609.000000 51098.000000 49782.000000 50941.000000 53593.000000 46991.000000 55600.000000 45753.000000 60535.000000 42430.000000 67450.000000 37925.000000 74299.000000 34554.000000 77385.000000 32938.000000 78072.000000 32469.000000 79864.000000 31512.000000 80631.000000 31225.000000 83797.000000 30022.000000 86943.000000 29013.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 151327.000000 21933.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 162108.000000 21464.000000 154266.000000 21745.000000 147996.000000 22023.000000 142258.000000 22326.000000 121121.000000 23619.000000 114992.000000 24241.000000 105304.000000 25255.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 93719.000000 27430.000000 92571.000000 27728.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76152.000000 33112.000000 70278.000000 35792.000000 71747.000000 34989.000000 67605.000000 37389.000000 60697.000000 41927.000000 59626.000000 42679.000000 58084.000000 43601.000000 56210.000000 45084.000000 53865.000000 47025.000000 53064.000000 47788.000000 52891.000000 47945.000000 50695.000000 50194.000000 51468.000000 48849.000000 50016.000000 50220.000000 48465.000000 52304.000000 45330.000000 56461.000000 43835.000000 58621.000000 42891.000000 59700.000000 39702.000000 64216.000000 39110.000000 65213.000000 37490.000000 68202.000000 37085.000000 68940.000000 34892.000000 73290.000000 34532.000000 74124.000000 34131.000000 75190.000000 33841.000000 76039.000000 33384.000000 77431.000000 32220.000000 81076.000000 31869.000000 82239.000000 31341.000000 83630.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28323.000000 97716.000000 27856.000000 100357.000000 27854.000000 100370.000000 27348.000000 103855.000000 26305.000000 111871.000000 25177.000000 122302.000000 24517.000000 125608.000000 23532.000000 139404.000000 23322.000000 141921.000000 22681.000000 153962.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23169.000000 144833.000000 23712.000000 137651.000000 24019.000000 133584.000000 25825.000000 114680.000000 25370.000000 117288.000000 25627.000000 115126.000000 26400.000000 110000.000000 27055.000000 106048.000000 27396.000000 102887.000000 28128.000000 98005.000000 28672.000000 95496.000000 29392.000000 92313.000000 29571.000000 91609.000000 31600.000000 82770.000000 32057.000000 81378.000000 33588.000000 76835.000000 34644.000000 73874.000000 35004.000000 73040.000000 35687.000000 71449.000000 36260.000000 70300.000000 36856.000000 69047.000000 38750.000000 65578.000000 40528.000000 63019.000000 44367.000000 57806.000000 44507.000000 57541.000000 47759.000000 53722.000000 48146.000000 52850.000000 52264.000000 48264.000000 53620.000000 47041.000000 53925.000000 46790.000000 54355.000000 46458.000000 59829.000000 42477.000000 62916.000000 40520.000000 66139.000000 38223.000000 69447.000000 36284.000000 71610.000000 35111.000000 72474.000000 34649.000000 73673.000000 34123.000000 76092.000000 33132.000000 80025.000000 31642.000000 86466.000000 29190.000000 89641.000000 28251.000000 90134.000000 28095.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 173801.000000 21305.000000 169236.000000 21327.000000 165022.000000 21380.000000 150967.000000 21902.000000 142942.000000 22192.000000 141465.000000 22277.000000 125192.000000 23261.000000 124753.000000 23297.000000 121227.000000 23574.000000 112966.000000 24480.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 90584.000000 27952.000000 87814.000000 28774.000000 86100.000000 29341.000000 79864.000000 31512.000000 77445.000000 32503.000000 76879.000000 32772.000000 73271.000000 34554.000000 72885.000000 34595.000000 72474.000000 34649.000000 70278.000000 35792.000000 69008.000000 36546.000000 66385.000000 38049.000000 63769.000000 39812.000000 58776.000000 43153.000000 54452.000000 46436.000000 51641.000000 48692.000000 51468.000000 48849.000000 49084.000000 51624.000000 48358.000000 52509.000000 45898.000000 55828.000000 44939.000000 57166.000000 41740.000000 61415.000000 39603.000000 64750.000000 36197.000000 71232.000000 35931.000000 71716.000000 35349.000000 72818.000000 33648.000000 77437.000000 32911.000000 79161.000000 30020.000000 89022.000000 30035.000000 88938.000000 29080.000000 93335.000000 29072.000000 93375.000000 27892.000000 100267.000000 27220.000000 104178.000000 25541.000000 115846.000000 25011.000000 120051.000000 24869.000000 121430.000000 24287.000000 127502.000000 24291.000000 127413.000000 23549.000000 138966.000000 23339.000000 141483.000000 22685.000000 153873.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23097.000000 145579.000000 22971.000000 146406.000000 23635.000000 137719.000000 24019.000000 133584.000000 26128.000000 115204.000000 26294.000000 113859.000000 26927.000000 109244.000000 27264.000000 103975.000000 27791.000000 100761.000000 27993.000000 98891.000000 28128.000000 98005.000000 28264.000000 97184.000000 31003.000000 85637.000000 31182.000000 84364.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34644.000000 73874.000000 35004.000000 73040.000000 35577.000000 71891.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 41080.000000 62174.000000 42199.000000 60721.000000 42949.000000 59706.000000 44199.000000 57763.000000 45690.000000 56066.000000 49686.000000 51405.000000 49404.000000 51489.000000 50004.000000 50946.000000 52833.000000 48346.000000 54576.000000 46334.000000 55187.000000 45853.000000 57061.000000 44370.000000 58945.000000 42910.000000 59574.000000 42475.000000 60844.000000 41721.000000 62622.000000 40464.000000 64091.000000 39661.000000 70624.000000 35753.000000 73673.000000 34123.000000 76092.000000 33132.000000 84829.000000 29716.000000 83797.000000 30022.000000 86466.000000 29190.000000 89117.000000 28406.000000 98926.000000 26262.000000 110007.000000 24827.000000 119324.000000 23782.000000 123289.000000 23469.000000 129524.000000 22940.000000 131076.000000 22847.000000 141039.000000 22398.000000 154241.000000 21849.000000 178446.000000 21282.000000 178446.000000 21282.000000 174381.000000 21307.000000 164244.000000 21408.000000 158756.000000 21580.000000 144046.000000 22197.000000 138308.000000 22500.000000 128478.000000 23069.000000 121121.000000 23619.000000 117595.000000 23896.000000 108181.000000 24930.000000 105304.000000 25255.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93983.000000 27365.000000 92272.000000 27845.000000 90869.000000 28201.000000 85263.000000 29894.000000 84318.000000 29934.000000 82649.000000 30502.000000 77445.000000 32503.000000 75519.000000 33369.000000 74953.000000 33638.000000 71121.000000 35493.000000 70278.000000 35792.000000 69008.000000 36546.000000 63956.000000 39694.000000 60913.000000 41871.000000 61126.000000 41594.000000 57491.000000 44352.000000 54649.000000 46258.000000 53190.000000 47627.000000 51956.000000 48914.000000 49362.000000 51826.000000 45814.000000 55717.000000 45369.000000 56321.000000 44034.000000 58173.000000 41549.000000 61564.000000 40991.000000 62056.000000 40366.000000 63118.000000 38533.000000 65865.000000 37813.000000 67308.000000 37327.000000 68231.000000 36678.000000 69892.000000 34131.000000 75190.000000 31890.000000 81921.000000 31341.000000 83630.000000 29294.000000 92901.000000 28932.000000 94679.000000 27219.000000 104709.000000 27835.000000 100077.000000 26677.000000 108455.000000 26336.000000 111141.000000 25237.000000 120345.000000 25023.000000 121968.000000 24756.000000 124907.000000 24534.000000 127832.000000 24485.000000 128591.000000 22672.000000 153812.000000 22467.000000 159692.000000 22307.000000 166881.000000 22296.000000 167894.000000 22141.000000 176436.000000 22231.000000 174213.000000 22383.000000 163410.000000 22679.000000 153124.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 24019.000000 133584.000000 24161.000000 132205.000000 27752.000000 101571.000000 28938.000000 94649.000000 29300.000000 92871.000000 30358.000000 87801.000000 30179.000000 88288.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 34532.000000 74124.000000 34644.000000 73874.000000 36283.000000 70196.000000 36856.000000 69047.000000 41234.000000 62019.000000 44049.000000 57802.000000 44796.000000 56765.000000 49633.000000 51045.000000 49681.000000 50936.000000 51121.000000 49449.000000 54737.000000 46205.000000 54830.000000 46031.000000 56302.000000 45045.000000 59363.000000 43018.000000 62841.000000 40717.000000 68500.000000 37499.000000 67810.000000 37740.000000 73078.000000 34700.000000 73785.000000 34410.000000 77441.000000 33029.000000 83797.000000 30022.000000 86959.000000 29034.000000 87095.000000 28995.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96138.000000 26840.000000 100700.000000 26059.000000 106028.000000 25220.000000 115617.000000 24112.000000 117520.000000 23904.000000 124522.000000 23331.000000 134517.000000 22638.000000 138992.000000 22366.000000 146874.000000 22017.000000 156305.000000 21679.000000 165022.000000 21380.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 174381.000000 21307.000000 165022.000000 21380.000000 162108.000000 21464.000000 150274.000000 21879.000000 144004.000000 22157.000000 138266.000000 22460.000000 124447.000000 23339.000000 121121.000000 23619.000000 117595.000000 23896.000000 116695.000000 23992.000000 105304.000000 25255.000000 103377.000000 25450.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 90712.000000 28347.000000 80357.000000 31356.000000 79864.000000 31512.000000 77445.000000 32503.000000 73522.000000 34291.000000 72795.000000 34631.000000 71596.000000 35157.000000 70326.000000 35911.000000 67263.000000 37686.000000 66094.000000 38394.000000 61846.000000 41105.000000 59756.000000 42604.000000 57752.000000 44162.000000 56026.000000 45583.000000 53864.000000 46909.000000 53101.000000 47599.000000 52267.000000 48409.000000 49336.000000 51812.000000 47584.000000 53652.000000 44527.000000 57477.000000 44648.000000 57091.000000 43916.000000 58049.000000 40707.000000 62967.000000 39116.000000 65254.000000 38533.000000 65865.000000 37682.000000 67460.000000 36678.000000 69892.000000 35385.000000 72792.000000 33747.000000 77103.000000 33322.000000 78342.000000 32531.000000 80885.000000 30870.000000 85948.000000 31065.000000 85022.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28119.000000 98810.000000 27358.000000 103414.000000 27857.000000 99886.000000 26055.000000 113610.000000 24794.000000 122825.000000 24291.000000 127413.000000 23719.000000 135428.000000 23411.000000 139720.000000 22902.000000 152371.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 22979.000000 146179.000000 23635.000000 137719.000000 24019.000000 133584.000000 26248.000000 111579.000000 26589.000000 108893.000000 27113.000000 105595.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32869.000000 79063.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 35004.000000 73040.000000 35687.000000 71449.000000 36856.000000 69047.000000 39658.000000 64603.000000 39749.000000 64014.000000 42205.000000 60497.000000 42962.000000 59393.000000 43993.000000 57997.000000 45136.000000 56623.000000 47762.000000 53369.000000 49072.000000 51845.000000 50122.000000 50651.000000 53996.000000 46841.000000 54830.000000 46031.000000 55432.000000 45653.000000 66760.000000 38203.000000 74666.000000 33809.000000 79137.000000 31852.000000 83070.000000 30362.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 138600.000000 22413.000000 139602.000000 22353.000000 154241.000000 21849.000000 178446.000000 21282.000000 165022.000000 21380.000000 150866.000000 21883.000000 142942.000000 22192.000000 141390.000000 22285.000000 124753.000000 23297.000000 121227.000000 23574.000000 120402.000000 23662.000000 113358.000000 24469.000000 105112.000000 25392.000000 98596.000000 26317.000000 96861.000000 26573.000000 93980.000000 27097.000000 90320.000000 28049.000000 88316.000000 28584.000000 88180.000000 28623.000000 85511.000000 29455.000000 84290.000000 29866.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76879.000000 32772.000000 74953.000000 33638.000000 72545.000000 34670.000000 70278.000000 35792.000000 69008.000000 36546.000000 66385.000000 38049.000000 61846.000000 41105.000000 61404.000000 41422.000000 59626.000000 42679.000000 59819.000000 42505.000000 57857.000000 44097.000000 54455.000000 46492.000000 51501.000000 48954.000000 51145.000000 49292.000000 49616.000000 51032.000000 50016.000000 50220.000000 48018.000000 52697.000000 45651.000000 55902.000000 42273.000000 60255.000000 41557.000000 61198.000000 40115.000000 63684.000000 39532.000000 64295.000000 37971.000000 67147.000000 37648.000000 67504.000000 34282.000000 76069.000000 33290.000000 78495.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29500.000000 91520.000000 28948.000000 94331.000000 28405.000000 96905.000000 27835.000000 100077.000000 25732.000000 115278.000000 25536.000000 117007.000000 25394.000000 118386.000000 25059.000000 121381.000000 24465.000000 128981.000000 23949.000000 133534.000000 23341.000000 142635.000000 22809.000000 153180.000000 22604.000000 159060.000000 22301.000000 169491.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 24299.000000 131039.000000 24441.000000 129660.000000 26587.000000 108630.000000 26753.000000 107285.000000 26755.000000 107272.000000 27516.000000 102668.000000 30375.000000 87904.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 34532.000000 74124.000000 34892.000000 73290.000000 35488.000000 72037.000000 37880.000000 67266.000000 39296.000000 64955.000000 41074.000000 62396.000000 45264.000000 56641.000000 45724.000000 55674.000000 47420.000000 53570.000000 51630.000000 48824.000000 53593.000000 46991.000000 63552.000000 40260.000000 63858.000000 39858.000000 66739.000000 37973.000000 68278.000000 37107.000000 72133.000000 35087.000000 79966.000000 31688.000000 81080.000000 31262.000000 84829.000000 29716.000000 90134.000000 28095.000000 93323.000000 27346.000000 98926.000000 26262.000000 105922.000000 25287.000000 111888.000000 24600.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 146718.000000 22085.000000 149794.000000 21973.000000 154241.000000 21849.000000 171511.000000 21317.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 153736.000000 21873.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 120933.000000 23728.000000 116287.000000 24124.000000 115387.000000 24220.000000 111432.000000 24665.000000 104494.000000 25360.000000 101528.000000 25714.000000 100220.000000 25942.000000 98921.000000 26177.000000 97348.000000 26473.000000 82272.000000 30800.000000 84290.000000 29866.000000 82683.000000 30448.000000 80264.000000 31439.000000 76246.000000 33029.000000 75680.000000 33298.000000 70141.000000 35914.000000 71610.000000 35111.000000 70340.000000 35865.000000 66002.000000 38434.000000 64359.000000 39368.000000 63730.000000 39803.000000 60301.000000 42149.000000 56413.000000 45137.000000 56776.000000 44808.000000 53689.000000 47126.000000 51468.000000 48849.000000 50874.000000 49548.000000 48267.000000 52595.000000 44776.000000 57046.000000 41361.000000 61556.000000 41055.000000 62016.000000 40399.000000 63053.000000 38533.000000 65865.000000 37813.000000 67308.000000 36161.000000 70918.000000 35588.000000 72067.000000 34898.000000 73643.000000 32877.000000 79217.000000 32587.000000 80066.000000 30017.000000 89172.000000 30068.000000 88863.000000 29924.000000 89513.000000 29870.000000 89702.000000 29500.000000 91520.000000 28010.000000 99340.000000 27355.000000 103292.000000 26789.000000 107333.000000 25854.000000 113094.000000 25489.000000 116218.000000 24452.000000 125923.000000 23719.000000 135428.000000 23509.000000 137945.000000 22729.000000 152387.000000 22512.000000 158320.000000 22376.000000 164380.000000 22356.000000 165815.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22972.000000 146867.000000 24192.000000 132240.000000 24824.000000 125702.000000 25136.000000 123015.000000 28949.000000 95242.000000 30035.000000 88938.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33588.000000 76835.000000 34131.000000 75190.000000 34644.000000 73874.000000 35321.000000 72426.000000 36490.000000 70024.000000 36856.000000 69047.000000 39272.000000 64693.000000 43519.000000 58641.000000 44845.000000 56867.000000 48519.000000 52277.000000 49186.000000 51528.000000 52857.000000 47668.000000 53334.000000 47252.000000 53458.000000 47150.000000 54480.000000 46282.000000 54833.000000 46005.000000 56967.000000 44569.000000 61990.000000 41364.000000 65520.000000 38790.000000 68982.000000 36666.000000 72474.000000 34649.000000 71747.000000 34989.000000 73673.000000 34123.000000 76092.000000 33132.000000 79771.000000 31741.000000 79055.000000 31954.000000 86100.000000 29341.000000 86593.000000 29185.000000 87814.000000 28774.000000 87950.000000 28735.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 105922.000000 25287.000000 111888.000000 24600.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 134339.000000 22631.000000 138741.000000 22433.000000 148485.000000 22030.000000 154241.000000 21849.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 146122.000000 22217.000000 138992.000000 22366.000000 134592.000000 22630.000000 128478.000000 23069.000000 121121.000000 23619.000000 116695.000000 23992.000000 106382.000000 25135.000000 103377.000000 25450.000000 101528.000000 25714.000000 97348.000000 26473.000000 90851.000000 28000.000000 89455.000000 28355.000000 88023.000000 28797.000000 86312.000000 29277.000000 83176.000000 30292.000000 79864.000000 31512.000000 77445.000000 32503.000000 76246.000000 33029.000000 74953.000000 33638.000000 71596.000000 35157.000000 70326.000000 35911.000000 63911.000000 39567.000000 60723.000000 41653.000000 58945.000000 42910.000000 58277.000000 43427.000000 56680.000000 44729.000000 55681.000000 45696.000000 50044.000000 50989.000000 49458.000000 51116.000000 47661.000000 53440.000000 44519.000000 57810.000000 43849.000000 58827.000000 41868.000000 60968.000000 41435.000000 61680.000000 40041.000000 64086.000000 39316.000000 65290.000000 35377.000000 73743.000000 33559.000000 78240.000000 32057.000000 81378.000000 31600.000000 82770.000000 31341.000000 83630.000000 31197.000000 84280.000000 29870.000000 89702.000000 29500.000000 91520.000000 28703.000000 95839.000000 27315.000000 103929.000000 26619.000000 108980.000000 25896.000000 115181.000000 25464.000000 118577.000000 25065.000000 122288.000000 24927.000000 123974.000000 22980.000000 147856.000000 22679.000000 153124.000000 22512.000000 158320.000000 22443.000000 161331.000000 22394.000000 165900.000000 22199.000000 177946.000000 22242.000000 172808.000000 22253.000000 171795.000000 22346.000000 166966.000000 22911.000000 151769.000000 23372.000000 143597.000000 23707.000000 137809.000000 24271.000000 131642.000000 24341.000000 130173.000000 27314.000000 104848.000000 28128.000000 98005.000000 28272.000000 97355.000000 28389.000000 96871.000000 29205.000000 93331.000000 30745.000000 87489.000000 30902.000000 86729.000000 34340.000000 75644.000000 34482.000000 74978.000000 34634.000000 74514.000000 36404.000000 70194.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 40398.000000 63068.000000 41517.000000 61615.000000 48221.000000 52718.000000 48558.000000 52267.000000 50521.000000 50434.000000 52380.000000 48651.000000 55216.000000 45787.000000 72474.000000 34649.000000 73673.000000 34123.000000 76092.000000 33132.000000 76859.000000 32845.000000 85169.000000 29794.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 105922.000000 25287.000000 120402.000000 23662.000000 121227.000000 23574.000000 121666.000000 23538.000000 132787.000000 22724.000000 134339.000000 22631.000000 139602.000000 22353.000000 150292.000000 21986.000000 154241.000000 21849.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 148526.000000 21982.000000 146658.000000 22062.000000 145181.000000 22147.000000 130633.000000 22944.000000 121121.000000 23619.000000 117595.000000 23896.000000 116695.000000 23992.000000 105304.000000 25255.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 91335.000000 28062.000000 85716.000000 29533.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 73218.000000 34497.000000 71596.000000 35157.000000 69296.000000 36452.000000 68026.000000 37206.000000 66708.000000 37841.000000 66385.000000 38049.000000 62581.000000 40625.000000 58752.000000 43084.000000 58346.000000 43354.000000 56472.000000 44837.000000 55172.000000 45973.000000 51468.000000 48849.000000 49192.000000 51651.000000 48569.000000 52092.000000 47018.000000 54176.000000 45634.000000 56124.000000 44619.000000 56935.000000 39984.000000 63952.000000 39551.000000 64664.000000 40167.000000 63559.000000 39218.000000 65265.000000 38835.000000 65452.000000 37243.000000 68529.000000 36395.000000 70115.000000 33044.000000 78674.000000 32587.000000 80066.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 29679.000000 91033.000000 29224.000000 92912.000000 27615.000000 102470.000000 26974.000000 106745.000000 26069.000000 113083.000000 25438.000000 117895.000000 25296.000000 119274.000000 25029.000000 122213.000000 24534.000000 127832.000000 23174.000000 144577.000000 22971.000000 146406.000000 22679.000000 153124.000000 22589.000000 156028.000000 22356.000000 165632.000000 22307.000000 170201.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23911.000000 136231.000000 25931.000000 116435.000000 25978.000000 113212.000000 26081.000000 112115.000000 26753.000000 107285.000000 26777.000000 107081.000000 27743.000000 101052.000000 27878.000000 100166.000000 28435.000000 96674.000000 28570.000000 95788.000000 30020.000000 89022.000000 31182.000000 84364.000000 31890.000000 81921.000000 32347.000000 80529.000000 33159.000000 78214.000000 34131.000000 75190.000000 34644.000000 73874.000000 35321.000000 72426.000000 35917.000000 71173.000000 36490.000000 70024.000000 36856.000000 69047.000000 37472.000000 68011.000000 38576.000000 65641.000000 43323.000000 59193.000000 43607.000000 58760.000000 46444.000000 55411.000000 48476.000000 52526.000000 48412.000000 52566.000000 49646.000000 51266.000000 50917.000000 49900.000000 53996.000000 46841.000000 54830.000000 46031.000000 56302.000000 45045.000000 60274.000000 42355.000000 72833.000000 34767.000000 74666.000000 33809.000000 75393.000000 33469.000000 80631.000000 31225.000000 86466.000000 29190.000000 88316.000000 28584.000000 93980.000000 27097.000000 95553.000000 26801.000000 96861.000000 26573.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 143002.000000 22215.000000 155268.000000 21770.000000 160275.000000 21583.000000 167542.000000 21492.000000 178446.000000 21282.000000 157342.000000 21633.000000 154266.000000 21745.000000 138411.000000 22515.000000 134210.000000 22777.000000 127720.000000 23247.000000 116287.000000 24124.000000 109334.000000 24802.000000 106382.000000 25135.000000 104494.000000 25360.000000 100867.000000 25858.000000 97135.000000 26536.000000 92571.000000 27728.000000 87814.000000 28774.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 72337.000000 34771.000000 71610.000000 35111.000000 70141.000000 35914.000000 68871.000000 36668.000000 68533.000000 36882.000000 66136.000000 38192.000000 65507.000000 38627.000000 62001.000000 41146.000000 58075.000000 43913.000000 54981.000000 45986.000000 53415.000000 47545.000000 47900.000000 53116.000000 47367.000000 53648.000000 45625.000000 56104.000000 43093.000000 59679.000000 41097.000000 62599.000000 40085.000000 63772.000000 39493.000000 64769.000000 38884.000000 65555.000000 37837.000000 66813.000000 37794.000000 66920.000000 34131.000000 75190.000000 33841.000000 76039.000000 33384.000000 77431.000000 31947.000000 82123.000000 31341.000000 83630.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28264.000000 97411.000000 27045.000000 105518.000000 26753.000000 107285.000000 25403.000000 117046.000000 24910.000000 121386.000000 24685.000000 124030.000000 24113.000000 132045.000000 22854.000000 152338.000000 22346.000000 166966.000000 22312.000000 168478.000000 22301.000000 169491.000000 22269.000000 173224.000000 22199.000000 177946.000000 22230.000000 174383.000000 22241.000000 173370.000000 22580.000000 157076.000000 23115.000000 143983.000000 23299.000000 141163.000000 23733.000000 135628.000000 24640.000000 124240.000000 25127.000000 118612.000000 25605.000000 114779.000000 25862.000000 112617.000000 27261.000000 103773.000000 27396.000000 102887.000000 29245.000000 92571.000000 29389.000000 91921.000000 30551.000000 87263.000000 31162.000000 84903.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34532.000000 74124.000000 35321.000000 72426.000000 37080.000000 68892.000000 38446.000000 66027.000000 38270.000000 66101.000000 38576.000000 65641.000000 41450.000000 61587.000000 41962.000000 60781.000000 42312.000000 60329.000000 45486.000000 56171.000000 47846.000000 53453.000000 50122.000000 50651.000000 49785.000000 50949.000000 50917.000000 49900.000000 51828.000000 48887.000000 53996.000000 46841.000000 54830.000000 46031.000000 55432.000000 45653.000000 63667.000000 40459.000000 64118.000000 39988.000000 67544.000000 37841.000000 68041.000000 37362.000000 69236.000000 36658.000000 74307.000000 34086.000000 74623.000000 33935.000000 76890.000000 32813.000000 80823.000000 31323.000000 82221.000000 30751.000000 84935.000000 29827.000000 88180.000000 28623.000000 88316.000000 28584.000000 93323.000000 27346.000000 95553.000000 26801.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 161306.000000 21510.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 165022.000000 21380.000000 154266.000000 21745.000000 146759.000000 22081.000000 141341.000000 22360.000000 130947.000000 22993.000000 116695.000000 23992.000000 113818.000000 24317.000000 104494.000000 25360.000000 101528.000000 25714.000000 98199.000000 26319.000000 90584.000000 27952.000000 87075.000000 29067.000000 78288.000000 32241.000000 77490.000000 32560.000000 76291.000000 33086.000000 75564.000000 33426.000000 71747.000000 34989.000000 70278.000000 35792.000000 69008.000000 36546.000000 66136.000000 38192.000000 65507.000000 38627.000000 60978.000000 41655.000000 56500.000000 44968.000000 55260.000000 45866.000000 54525.000000 46449.000000 53864.000000 46909.000000 53101.000000 47599.000000 52267.000000 48409.000000 51669.000000 49093.000000 49858.000000 51293.000000 49470.000000 51532.000000 47750.000000 53351.000000 45124.000000 56605.000000 42089.000000 61190.000000 41025.000000 62885.000000 40144.000000 63746.000000 39234.000000 64889.000000 38533.000000 65865.000000 37682.000000 67460.000000 38244.000000 66251.000000 37648.000000 67504.000000 35678.000000 72471.000000 31341.000000 83630.000000 30358.000000 87801.000000 29759.000000 90330.000000 29600.000000 91064.000000 29230.000000 92882.000000 28924.000000 94499.000000 28069.000000 99763.000000 27664.000000 102325.000000 25468.000000 117898.000000 25326.000000 119277.000000 25059.000000 122216.000000 24695.000000 126464.000000 24424.000000 130148.000000 23691.000000 139921.000000 22746.000000 154683.000000 22383.000000 163410.000000 22177.000000 173558.000000 22146.000000 177121.000000 22312.000000 168478.000000 22347.000000 166796.000000 22544.000000 160319.000000 22964.000000 147094.000000 23369.000000 141683.000000 24082.000000 133449.000000 24933.000000 124941.000000 26887.000000 108196.000000 27162.000000 106091.000000 26935.000000 107335.000000 28834.000000 95674.000000 27883.000000 100186.000000 29245.000000 92571.000000 29389.000000 91921.000000 30730.000000 86559.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34832.000000 73370.000000 35192.000000 72536.000000 35788.000000 71283.000000 36361.000000 70134.000000 37490.000000 68202.000000 41032.000000 62531.000000 43179.000000 59390.000000 44085.000000 57994.000000 44021.000000 58034.000000 43847.000000 58125.000000 45404.000000 56200.000000 46352.000000 55064.000000 47019.000000 54315.000000 50550.000000 50592.000000 50172.000000 50689.000000 51146.000000 49578.000000 53429.000000 47409.000000 54095.000000 46773.000000 57372.000000 44188.000000 59382.000000 42898.000000 61832.000000 41439.000000 68129.000000 37573.000000 69530.000000 36538.000000 72474.000000 34649.000000 76092.000000 33132.000000 77657.000000 32526.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 111888.000000 24600.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 132787.000000 22724.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 146311.000000 22096.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 146382.000000 22066.000000 141231.000000 22321.000000 122337.000000 23592.000000 119809.000000 23712.000000 116770.000000 23984.000000 113818.000000 24317.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 93980.000000 27097.000000 90720.000000 27913.000000 88316.000000 28584.000000 88180.000000 28623.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 79864.000000 31512.000000 77445.000000 32503.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 71118.000000 35424.000000 70278.000000 35792.000000 69008.000000 36546.000000 67207.000000 37661.000000 64869.000000 38977.000000 60933.000000 41592.000000 56705.000000 44641.000000 55922.000000 45185.000000 54622.000000 46321.000000 52833.000000 47743.000000 53593.000000 46991.000000 52153.000000 48478.000000 51623.000000 49063.000000 49660.000000 50896.000000 48350.000000 52420.000000 47841.000000 53045.000000 44948.000000 56928.000000 43120.000000 59135.000000 41342.000000 61694.000000 40909.000000 62406.000000 40085.000000 63720.000000 39300.000000 65155.000000 34131.000000 75190.000000 33841.000000 76039.000000 33384.000000 77431.000000 31947.000000 82123.000000 31213.000000 84428.000000 31408.000000 83502.000000 31230.000000 84205.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 28129.000000 98297.000000 28264.000000 97411.000000 27855.000000 100036.000000 27720.000000 100922.000000 25492.000000 117520.000000 24448.000000 126012.000000 24238.000000 128261.000000 23407.000000 139809.000000 22672.000000 158498.000000 22224.000000 170660.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22395.000000 162458.000000 22687.000000 152897.000000 22979.000000 146179.000000 23376.000000 140995.000000 23760.000000 136860.000000 25122.000000 123702.000000 25463.000000 121016.000000 26675.000000 112023.000000 26973.000000 109623.000000 27950.000000 100027.000000 28951.000000 94191.000000 29230.000000 92655.000000 29389.000000 91921.000000 30537.000000 87388.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33159.000000 78214.000000 33497.000000 77246.000000 34727.000000 73937.000000 35128.000000 72871.000000 36283.000000 70196.000000 36856.000000 69047.000000 37472.000000 68011.000000 38446.000000 66027.000000 39576.000000 64253.000000 38576.000000 65641.000000 41263.000000 61820.000000 44900.000000 57307.000000 47571.000000 53538.000000 48768.000000 52204.000000 51519.000000 49234.000000 59105.000000 43352.000000 62458.000000 41016.000000 65664.000000 38821.000000 67835.000000 37509.000000 68167.000000 37141.000000 90134.000000 28095.000000 96861.000000 26573.000000 101865.000000 25748.000000 105304.000000 25255.000000 108181.000000 24930.000000 115617.000000 24112.000000 117520.000000 23904.000000 124447.000000 23339.000000 131254.000000 22854.000000 136069.000000 22545.000000 146600.000000 22049.000000 152890.000000 21831.000000 161330.000000 21492.000000 171511.000000 21317.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 165022.000000 21380.000000 150967.000000 21902.000000 146759.000000 22081.000000 141465.000000 22277.000000 137133.000000 22598.000000 130475.000000 23081.000000 116748.000000 24191.000000 119657.000000 23759.000000 106382.000000 25135.000000 102716.000000 25594.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 79329.000000 32133.000000 78288.000000 32241.000000 77490.000000 32560.000000 76291.000000 33086.000000 72323.000000 34817.000000 71596.000000 35157.000000 70326.000000 35911.000000 68606.000000 36977.000000 65992.000000 38486.000000 65765.000000 38490.000000 63923.000000 39629.000000 60506.000000 42025.000000 56926.000000 44901.000000 54981.000000 45986.000000 54504.000000 46402.000000 54022.000000 46878.000000 46961.000000 54093.000000 44408.000000 57419.000000 44280.000000 57561.000000 43715.000000 58386.000000 42891.000000 59700.000000 41353.000000 61721.000000 39857.000000 64315.000000 39607.000000 64713.000000 38015.000000 67790.000000 37749.000000 68274.000000 32412.000000 80455.000000 32220.000000 81076.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29200.000000 93107.000000 28320.000000 98412.000000 27103.000000 105815.000000 27315.000000 103929.000000 26974.000000 106615.000000 26241.000000 112288.000000 25502.000000 117915.000000 25137.000000 121742.000000 23297.000000 143535.000000 23107.000000 146095.000000 22672.000000 153812.000000 22467.000000 159692.000000 22235.000000 169647.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23886.000000 136033.000000 24921.000000 125052.000000 25475.000000 120378.000000 25838.000000 117501.000000 28035.000000 100037.000000 29014.000000 94855.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33841.000000 76039.000000 34532.000000 74124.000000 34892.000000 73290.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38918.000000 65727.000000 40008.000000 64198.000000 45513.000000 56161.000000 45779.000000 55386.000000 47475.000000 53282.000000 48405.000000 52132.000000 49072.000000 51383.000000 51927.000000 48698.000000 54737.000000 46374.000000 60037.000000 42615.000000 61737.000000 41411.000000 61999.000000 41164.000000 63839.000000 39809.000000 64361.000000 39480.000000 67608.000000 37420.000000 69462.000000 36343.000000 71999.000000 34985.000000 82221.000000 30751.000000 86153.000000 29418.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 101863.000000 25811.000000 104494.000000 25360.000000 105304.000000 25255.000000 109259.000000 24810.000000 118966.000000 23793.000000 117520.000000 23904.000000 121485.000000 23591.000000 131029.000000 22918.000000 138767.000000 22430.000000 159744.000000 21612.000000 163967.000000 21471.000000 178446.000000 21282.000000 172106.000000 21317.000000 165022.000000 21380.000000 154266.000000 21745.000000 140019.000000 22371.000000 138542.000000 22456.000000 130947.000000 22993.000000 125892.000000 23386.000000 119919.000000 23802.000000 112966.000000 24480.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 77445.000000 32503.000000 73522.000000 34291.000000 72795.000000 34631.000000 71596.000000 35157.000000 70278.000000 35792.000000 69008.000000 36546.000000 66385.000000 38049.000000 64133.000000 39568.000000 64347.000000 39306.000000 58220.000000 43890.000000 56188.000000 45281.000000 55115.000000 46155.000000 53864.000000 46909.000000 52608.000000 48078.000000 51774.000000 48888.000000 50815.000000 49780.000000 50217.000000 50464.000000 48420.000000 52788.000000 46548.000000 55291.000000 44167.000000 58537.000000 37662.000000 67722.000000 37089.000000 68871.000000 35948.000000 71233.000000 34898.000000 73643.000000 32248.000000 81021.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28320.000000 98412.000000 27615.000000 102470.000000 26677.000000 108455.000000 25965.000000 113740.000000 25165.000000 120589.000000 24774.000000 123446.000000 24247.000000 128832.000000 23505.000000 138034.000000 22979.000000 146179.000000 22687.000000 152897.000000 22467.000000 159692.000000 22311.000000 166176.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22585.000000 156171.000000 22964.000000 147094.000000 22972.000000 146867.000000 24019.000000 133584.000000 25290.000000 119681.000000 25379.000000 117949.000000 25649.000000 115659.000000 26087.000000 112450.000000 26322.000000 109941.000000 27750.000000 100863.000000 28026.000000 99471.000000 29245.000000 92571.000000 31600.000000 82770.000000 32057.000000 81378.000000 33488.000000 77199.000000 34001.000000 75883.000000 36283.000000 70196.000000 36856.000000 69047.000000 37472.000000 68011.000000 38576.000000 65641.000000 38902.000000 65137.000000 39595.000000 64170.000000 42411.000000 60524.000000 43735.000000 58815.000000 46856.000000 54286.000000 48585.000000 52182.000000 48521.000000 52222.000000 54927.000000 46161.000000 56801.000000 44678.000000 58975.000000 42919.000000 59417.000000 42602.000000 59740.000000 42394.000000 64782.000000 39231.000000 66052.000000 38477.000000 69299.000000 36417.000000 72946.000000 34463.000000 71747.000000 34989.000000 73673.000000 34123.000000 78288.000000 32241.000000 79055.000000 31954.000000 84935.000000 29827.000000 85838.000000 29457.000000 86543.000000 29149.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 98926.000000 26262.000000 100775.000000 25998.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 178446.000000 21282.000000 169236.000000 21327.000000 165022.000000 21380.000000 151916.000000 21844.000000 142942.000000 22192.000000 141390.000000 22285.000000 127508.000000 23131.000000 119919.000000 23802.000000 119094.000000 23890.000000 113358.000000 24469.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 100243.000000 26102.000000 93980.000000 27097.000000 89117.000000 28406.000000 88981.000000 28445.000000 85045.000000 29594.000000 82649.000000 30502.000000 80619.000000 31354.000000 76246.000000 33029.000000 71596.000000 35157.000000 70326.000000 35911.000000 67904.000000 37317.000000 65765.000000 38490.000000 65311.000000 38733.000000 62812.000000 40555.000000 58556.000000 43520.000000 54981.000000 45986.000000 54504.000000 46402.000000 54022.000000 46878.000000 53224.000000 47697.000000 49063.000000 52232.000000 47947.000000 53454.000000 44331.000000 58039.000000 43123.000000 59039.000000 41215.000000 61837.000000 40563.000000 62740.000000 38446.000000 66027.000000 37837.000000 66813.000000 34643.000000 74561.000000 33334.000000 77825.000000 33044.000000 78674.000000 33384.000000 77431.000000 31869.000000 82239.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29506.000000 91490.000000 28632.000000 96266.000000 27774.000000 101380.000000 26932.000000 106490.000000 26426.000000 109975.000000 26085.000000 112661.000000 25701.000000 115926.000000 25023.000000 121968.000000 24506.000000 125556.000000 24510.000000 125467.000000 23729.000000 136854.000000 23425.000000 140357.000000 22604.000000 159060.000000 22490.000000 163698.000000 22199.000000 177946.000000 22230.000000 174383.000000 22312.000000 168478.000000 22426.000000 163840.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 24389.000000 130206.000000 27362.000000 104142.000000 28899.000000 95353.000000 29294.000000 92901.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 34071.000000 75944.000000 34584.000000 74628.000000 35217.000000 72725.000000 35004.000000 73040.000000 36283.000000 70196.000000 36856.000000 69047.000000 37472.000000 68011.000000 39270.000000 64713.000000 39576.000000 64253.000000 40228.000000 63350.000000 43469.000000 59015.000000 45360.000000 56328.000000 46470.000000 54861.000000 48242.000000 52930.000000 48712.000000 52355.000000 49785.000000 50949.000000 53558.000000 47172.000000 53596.000000 47047.000000 55216.000000 45787.000000 64092.000000 39992.000000 66147.000000 38285.000000 68318.000000 36973.000000 69517.000000 36447.000000 75365.000000 33472.000000 77657.000000 32526.000000 85780.000000 29534.000000 84543.000000 29924.000000 86477.000000 29152.000000 86613.000000 29113.000000 87850.000000 28723.000000 90720.000000 27913.000000 95553.000000 26801.000000 97618.000000 26490.000000 103804.000000 25620.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 131076.000000 22847.000000 149794.000000 21973.000000 151327.000000 21933.000000 171526.000000 21315.000000 178446.000000 21282.000000 167892.000000 21370.000000 153736.000000 21873.000000 144971.000000 22271.000000 138202.000000 22493.000000 133177.000000 22860.000000 129608.000000 23161.000000 111883.000000 24632.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 89701.000000 28538.000000 85045.000000 29594.000000 82649.000000 30502.000000 80619.000000 31354.000000 73522.000000 34291.000000 72795.000000 34631.000000 71596.000000 35157.000000 67703.000000 37414.000000 65756.000000 38484.000000 65507.000000 38627.000000 63923.000000 39629.000000 59756.000000 42604.000000 59949.000000 42430.000000 55362.000000 46209.000000 54808.000000 46415.000000 49284.000000 51146.000000 48555.000000 51964.000000 47514.000000 53295.000000 44280.000000 57561.000000 38956.000000 65360.000000 37837.000000 66813.000000 34704.000000 74041.000000 35062.000000 73082.000000 34131.000000 75190.000000 33841.000000 76039.000000 31600.000000 82770.000000 31341.000000 83630.000000 30214.000000 88451.000000 29600.000000 91064.000000 29224.000000 92912.000000 28924.000000 94499.000000 28709.000000 95604.000000 28637.000000 95848.000000 26819.000000 107138.000000 25452.000000 117404.000000 24510.000000 125467.000000 23275.000000 144521.000000 23322.000000 141921.000000 22897.000000 151478.000000 22690.000000 153540.000000 22280.000000 169103.000000 22269.000000 170116.000000 22220.000000 177300.000000 22199.000000 177946.000000 22231.000000 174213.000000 22383.000000 163410.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23814.000000 136204.000000 24198.000000 132069.000000 24340.000000 130690.000000 25208.000000 123360.000000 25701.000000 115776.000000 27035.000000 105458.000000 27079.000000 104523.000000 28120.000000 97834.000000 29436.000000 92085.000000 30551.000000 87263.000000 31162.000000 84903.000000 31278.000000 84272.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34532.000000 74124.000000 35321.000000 72426.000000 36283.000000 70196.000000 36856.000000 69047.000000 38750.000000 65578.000000 40528.000000 63019.000000 42400.000000 60516.000000 45724.000000 55674.000000 51468.000000 48849.000000 51641.000000 48692.000000 54355.000000 46458.000000 58553.000000 43379.000000 66941.000000 38213.000000 67213.000000 37666.000000 69053.000000 36648.000000 69296.000000 36452.000000 74194.000000 33995.000000 80379.000000 31471.000000 82345.000000 30658.000000 84290.000000 29866.000000 86959.000000 29034.000000 90134.000000 28095.000000 93980.000000 27097.000000 96861.000000 26573.000000 104494.000000 25360.000000 105304.000000 25255.000000 103452.000000 25442.000000 117520.000000 23904.000000 117595.000000 23896.000000 121560.000000 23583.000000 130000.000000 22974.000000 134740.000000 22673.000000 147423.000000 22046.000000 152088.000000 21877.000000 163623.000000 21540.000000 171511.000000 21317.000000 178446.000000 21282.000000 165022.000000 21380.000000 150866.000000 21883.000000 146658.000000 22062.000000 141465.000000 22277.000000 131401.000000 22890.000000 122567.000000 23508.000000 116695.000000 23992.000000 113818.000000 24317.000000 104494.000000 25360.000000 100677.000000 25868.000000 101528.000000 25714.000000 97348.000000 26473.000000 93952.000000 27328.000000 92157.000000 27876.000000 86331.000000 29301.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 71747.000000 34989.000000 70278.000000 35792.000000 69008.000000 36546.000000 66002.000000 38434.000000 63943.000000 39779.000000 57608.000000 43966.000000 55105.000000 45884.000000 54981.000000 45986.000000 54064.000000 46787.000000 53230.000000 47597.000000 53030.000000 47719.000000 52267.000000 48409.000000 51468.000000 48849.000000 50828.000000 49680.000000 48344.000000 52439.000000 45310.000000 56376.000000 41710.000000 61744.000000 40782.000000 62708.000000 39102.000000 64990.000000 39038.000000 65030.000000 38446.000000 66027.000000 37837.000000 66813.000000 35931.000000 71199.000000 34532.000000 74124.000000 34131.000000 75190.000000 33674.000000 76582.000000 32237.000000 81274.000000 31947.000000 82123.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28924.000000 94499.000000 28405.000000 97749.000000 26996.000000 106554.000000 26655.000000 109240.000000 25427.000000 118212.000000 25510.000000 116947.000000 25145.000000 120774.000000 22895.000000 148972.000000 22450.000000 165034.000000 22289.000000 170473.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22676.000000 154577.000000 22972.000000 146867.000000 23369.000000 141683.000000 24012.000000 134272.000000 24154.000000 132893.000000 26020.000000 114924.000000 26418.000000 109920.000000 26707.000000 108094.000000 27837.000000 100064.000000 28199.000000 98286.000000 29741.000000 90558.000000 31047.000000 85250.000000 31206.000000 84516.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38050.000000 66705.000000 38270.000000 66101.000000 38576.000000 65641.000000 40944.000000 62349.000000 41086.000000 62007.000000 43152.000000 59371.000000 44490.000000 57581.000000 45088.000000 56897.000000 49486.000000 51386.000000 50975.000000 49328.000000 51099.000000 49226.000000 58975.000000 42919.000000 59417.000000 42602.000000 59740.000000 42394.000000 62788.000000 40383.000000 72946.000000 34463.000000 74893.000000 33658.000000 79937.000000 31740.000000 82221.000000 30751.000000 88023.000000 28797.000000 87329.000000 28966.000000 89998.000000 28134.000000 90134.000000 28095.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 111658.000000 24708.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 143002.000000 22215.000000 149794.000000 21973.000000 154241.000000 21849.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 160799.000000 21521.000000 155632.000000 21714.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 124773.000000 23493.000000 109259.000000 24810.000000 105304.000000 25255.000000 103377.000000 25450.000000 101528.000000 25714.000000 97348.000000 26473.000000 93980.000000 27097.000000 90828.000000 27926.000000 88981.000000 28445.000000 86312.000000 29277.000000 85045.000000 29594.000000 82649.000000 30502.000000 77401.000000 32590.000000 76674.000000 32930.000000 72795.000000 34631.000000 70278.000000 35792.000000 69008.000000 36546.000000 64540.000000 39132.000000 61352.000000 41218.000000 60723.000000 41653.000000 60055.000000 42170.000000 56936.000000 44506.000000 54981.000000 45986.000000 53689.000000 47126.000000 51468.000000 48849.000000 49192.000000 51651.000000 48569.000000 52092.000000 46648.000000 54543.000000 44776.000000 57046.000000 43742.000000 58542.000000 41275.000000 62342.000000 37658.000000 67390.000000 37085.000000 68539.000000 36066.000000 71169.000000 35588.000000 72067.000000 34008.000000 76720.000000 31259.000000 84707.000000 29903.000000 89680.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28066.000000 99613.000000 27659.000000 102188.000000 26740.000000 107986.000000 26000.000000 113021.000000 25928.000000 113265.000000 25261.000000 118425.000000 24910.000000 121386.000000 24685.000000 124030.000000 23578.000000 139550.000000 23207.000000 143557.000000 22778.000000 153203.000000 22605.000000 157433.000000 22545.000000 160022.000000 22199.000000 177946.000000 22230.000000 174383.000000 22241.000000 173370.000000 22425.000000 164010.000000 22543.000000 160489.000000 22908.000000 148780.000000 23105.000000 145352.000000 23502.000000 140168.000000 24019.000000 133584.000000 24644.000000 127734.000000 26319.000000 110526.000000 28264.000000 97411.000000 28910.000000 94201.000000 29054.000000 93551.000000 30182.000000 88680.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33159.000000 78214.000000 34131.000000 75190.000000 34532.000000 74124.000000 35192.000000 72536.000000 35687.000000 71449.000000 36856.000000 69047.000000 38483.000000 65993.000000 38576.000000 65641.000000 40325.000000 63311.000000 41642.000000 61525.000000 42761.000000 60072.000000 43975.000000 58476.000000 50540.000000 50083.000000 49337.000000 51164.000000 52954.000000 47790.000000 56393.000000 45220.000000 54418.000000 46586.000000 56513.000000 44990.000000 67151.000000 37951.000000 69462.000000 36343.000000 69133.000000 36498.000000 71999.000000 34985.000000 73272.000000 34330.000000 76890.000000 32813.000000 77657.000000 32526.000000 82003.000000 30997.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 111085.000000 24707.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 139602.000000 22353.000000 154008.000000 21856.000000 154241.000000 21849.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 164244.000000 21408.000000 158756.000000 21580.000000 144004.000000 22157.000000 134592.000000 22630.000000 124776.000000 23321.000000 124008.000000 23394.000000 107951.000000 25038.000000 103996.000000 25483.000000 102069.000000 25678.000000 100220.000000 25942.000000 98921.000000 26177.000000 94196.000000 27302.000000 92485.000000 27782.000000 91082.000000 28138.000000 79771.000000 32078.000000 79864.000000 31512.000000 77445.000000 32503.000000 76246.000000 33029.000000 71596.000000 35157.000000 70326.000000 35911.000000 67454.000000 37557.000000 65870.000000 38559.000000 64150.000000 39625.000000 64552.000000 39194.000000 61898.000000 41089.000000 59012.000000 43146.000000 57138.000000 44629.000000 57014.000000 44731.000000 54981.000000 45986.000000 53862.000000 46969.000000 53689.000000 47126.000000 52543.000000 48285.000000 50762.000000 50146.000000 50049.000000 50325.000000 48445.000000 52219.000000 41845.000000 61126.000000 41021.000000 62440.000000 37665.000000 67434.000000 37837.000000 66813.000000 37794.000000 66920.000000 33611.000000 77613.000000 32733.000000 79708.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28162.000000 98877.000000 27507.000000 102829.000000 27505.000000 102842.000000 27037.000000 105995.000000 25898.000000 113933.000000 25536.000000 117007.000000 25394.000000 118386.000000 24521.000000 125519.000000 23729.000000 135977.000000 23119.000000 146388.000000 22729.000000 152387.000000 22584.000000 158869.000000 22356.000000 165815.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 24163.000000 133351.000000 25200.000000 123091.000000 26279.000000 111107.000000 26777.000000 107081.000000 27830.000000 100710.000000 28286.000000 97220.000000 28294.000000 97180.000000 28910.000000 94201.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34644.000000 73874.000000 34532.000000 74124.000000 35240.000000 72621.000000 35600.000000 71787.000000 36283.000000 70196.000000 36856.000000 69047.000000 39903.000000 64168.000000 40228.000000 63350.000000 39576.000000 64253.000000 40607.000000 62857.000000 44718.000000 57336.000000 47848.000000 53329.000000 49407.000000 51648.000000 49010.000000 51741.000000 50973.000000 49908.000000 54318.000000 46467.000000 54809.000000 46095.000000 57428.000000 44372.000000 63287.000000 40565.000000 65622.000000 39029.000000 65226.000000 39130.000000 73709.000000 34603.000000 84014.000000 30433.000000 87780.000000 28759.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 111085.000000 24707.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 139602.000000 22353.000000 148485.000000 22030.000000 150018.000000 21990.000000 173888.000000 21331.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 153736.000000 21873.000000 149528.000000 22052.000000 138219.000000 22577.000000 134210.000000 22777.000000 121914.000000 23768.000000 122850.000000 23505.000000 111883.000000 24632.000000 102526.000000 25604.000000 101528.000000 25714.000000 97348.000000 26473.000000 94196.000000 27302.000000 94060.000000 27341.000000 86312.000000 29277.000000 85045.000000 29594.000000 79830.000000 31566.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 71610.000000 35111.000000 70340.000000 35865.000000 65392.000000 38826.000000 63923.000000 39629.000000 60051.000000 42528.000000 57277.000000 44732.000000 56186.000000 45518.000000 55522.000000 45922.000000 54393.000000 46459.000000 53916.000000 46875.000000 53082.000000 47685.000000 51365.000000 49568.000000 47724.000000 53561.000000 47450.000000 53698.000000 44884.000000 57023.000000 43012.000000 59704.000000 40970.000000 62224.000000 40356.000000 63206.000000 38178.000000 67118.000000 37099.000000 68721.000000 36856.000000 69047.000000 35687.000000 71449.000000 34532.000000 74124.000000 34131.000000 75190.000000 33841.000000 76039.000000 33384.000000 77431.000000 31947.000000 82123.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28786.000000 95422.000000 28506.000000 97068.000000 27720.000000 100922.000000 27784.000000 100123.000000 27079.000000 104523.000000 24989.000000 119902.000000 24407.000000 125974.000000 24112.000000 129794.000000 23589.000000 137050.000000 22690.000000 153540.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22593.000000 155944.000000 22972.000000 146867.000000 23369.000000 141683.000000 24824.000000 125702.000000 25762.000000 117749.000000 25970.000000 113574.000000 25903.000000 113734.000000 26760.000000 106854.000000 27550.000000 102016.000000 28228.000000 97912.000000 28236.000000 97872.000000 29230.000000 92655.000000 29389.000000 91921.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 34832.000000 73370.000000 35192.000000 72536.000000 38383.000000 66488.000000 39159.000000 65030.000000 38576.000000 65641.000000 40448.000000 63138.000000 41080.000000 62174.000000 44497.000000 57775.000000 48694.000000 52144.000000 48901.000000 51686.000000 49383.000000 51210.000000 50994.000000 49803.000000 53550.000000 47457.000000 54840.000000 46288.000000 55193.000000 46011.000000 56724.000000 44927.000000 58858.000000 43562.000000 65295.000000 39537.000000 71118.000000 35424.000000 71747.000000 34989.000000 72474.000000 34649.000000 76092.000000 33132.000000 76890.000000 32813.000000 78768.000000 32098.000000 81124.000000 31069.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 89999.000000 28203.000000 92775.000000 27493.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 104447.000000 25450.000000 108181.000000 24930.000000 110159.000000 24714.000000 117595.000000 23896.000000 118034.000000 23860.000000 134252.000000 22667.000000 135729.000000 22582.000000 139937.000000 22403.000000 160021.000000 21549.000000 168458.000000 21355.000000 172761.000000 21319.000000 178446.000000 21282.000000 172106.000000 21317.000000 165022.000000 21380.000000 155632.000000 21714.000000 146658.000000 22062.000000 145106.000000 22155.000000 132323.000000 22902.000000 119174.000000 23899.000000 116152.000000 24218.000000 114508.000000 24323.000000 105184.000000 25366.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 85977.000000 29792.000000 84784.000000 29795.000000 83670.000000 30221.000000 79137.000000 31852.000000 77445.000000 32503.000000 72795.000000 34631.000000 71596.000000 35157.000000 69649.000000 36227.000000 65314.000000 38801.000000 66079.000000 38276.000000 65756.000000 38484.000000 63504.000000 40003.000000 63730.000000 39803.000000 61952.000000 41060.000000 61284.000000 41577.000000 57582.000000 44444.000000 54710.000000 46758.000000 54578.000000 46852.000000 53498.000000 47777.000000 52517.000000 48330.000000 50572.000000 50246.000000 49905.000000 50995.000000 48519.000000 52277.000000 45692.000000 55684.000000 45131.000000 56282.000000 44913.000000 56595.000000 41939.000000 60868.000000 41115.000000 62182.000000 39263.000000 64990.000000 39016.000000 65202.000000 37813.000000 67308.000000 36188.000000 70841.000000 34644.000000 73874.000000 32057.000000 81378.000000 31600.000000 82770.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 30049.000000 89215.000000 29679.000000 91033.000000 29224.000000 92912.000000 27375.000000 104051.000000 26299.000000 110666.000000 25928.000000 113265.000000 24768.000000 123931.000000 24297.000000 128051.000000 23725.000000 136066.000000 22589.000000 156028.000000 22280.000000 169103.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22679.000000 153124.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 25218.000000 119054.000000 25738.000000 115280.000000 26731.000000 107519.000000 27521.000000 102681.000000 27750.000000 100863.000000 28018.000000 99300.000000 28713.000000 95520.000000 29389.000000 91921.000000 30730.000000 86559.000000 32347.000000 80529.000000 33067.000000 78517.000000 35128.000000 72871.000000 34532.000000 74124.000000 36833.000000 69427.000000 38469.000000 65849.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 40228.000000 63350.000000 43993.000000 57997.000000 50122.000000 50651.000000 52795.000000 47868.000000 55264.000000 45992.000000 56553.000000 45001.000000 56876.000000 44793.000000 64077.000000 39486.000000 65976.000000 38297.000000 67830.000000 37220.000000 69447.000000 36284.000000 71747.000000 34989.000000 72474.000000 34649.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 86066.000000 29326.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96138.000000 26840.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 111888.000000 24600.000000 119324.000000 23782.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 143002.000000 22215.000000 154218.000000 21809.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 150866.000000 21883.000000 146658.000000 22062.000000 145181.000000 22147.000000 124194.000000 23524.000000 117460.000000 23990.000000 105304.000000 25255.000000 102716.000000 25594.000000 100867.000000 25858.000000 97135.000000 26536.000000 92136.000000 27884.000000 87218.000000 29216.000000 85045.000000 29594.000000 82649.000000 30502.000000 79830.000000 31566.000000 79103.000000 31906.000000 71596.000000 35157.000000 70326.000000 35911.000000 67513.000000 37625.000000 63956.000000 39880.000000 62145.000000 40886.000000 55736.000000 45486.000000 54452.000000 46436.000000 53689.000000 47126.000000 51323.000000 49238.000000 51468.000000 48849.000000 50874.000000 49548.000000 49915.000000 50440.000000 47187.000000 53917.000000 44168.000000 58025.000000 42920.000000 59675.000000 42535.000000 60120.000000 41282.000000 62028.000000 39952.000000 64165.000000 39400.000000 64611.000000 37658.000000 67390.000000 37085.000000 68539.000000 36395.000000 70115.000000 33334.000000 77825.000000 32877.000000 79217.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29072.000000 93375.000000 27892.000000 100267.000000 27355.000000 103292.000000 27220.000000 104178.000000 26752.000000 107331.000000 25546.000000 117535.000000 25306.000000 119802.000000 25029.000000 122213.000000 24807.000000 125138.000000 22887.000000 149199.000000 22467.000000 159692.000000 22259.000000 168389.000000 22210.000000 172958.000000 22179.000000 176521.000000 22512.000000 158320.000000 22679.000000 153124.000000 22979.000000 146179.000000 23376.000000 140995.000000 23940.000000 134828.000000 25302.000000 121670.000000 26264.000000 114741.000000 27597.000000 102719.000000 27870.000000 100644.000000 29438.000000 92756.000000 29876.000000 89672.000000 30020.000000 89022.000000 31182.000000 84364.000000 31441.000000 83504.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 42105.000000 61344.000000 46922.000000 55001.000000 47014.000000 54762.000000 49141.000000 52207.000000 49671.000000 51622.000000 49404.000000 51784.000000 53229.000000 47632.000000 53520.000000 47349.000000 53837.000000 47065.000000 55595.000000 45663.000000 58151.000000 43865.000000 59421.000000 43111.000000 69240.000000 36814.000000 69795.000000 36272.000000 70480.000000 35862.000000 71207.000000 35522.000000 73078.000000 34700.000000 86312.000000 29277.000000 88981.000000 28445.000000 87850.000000 28723.000000 93323.000000 27346.000000 93980.000000 27097.000000 96861.000000 26573.000000 100775.000000 25998.000000 120402.000000 23662.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 143002.000000 22215.000000 149794.000000 21973.000000 161645.000000 21673.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 164254.000000 21453.000000 150866.000000 21883.000000 146658.000000 22062.000000 138542.000000 22456.000000 134210.000000 22777.000000 133771.000000 22813.000000 115692.000000 24104.000000 116770.000000 23984.000000 106457.000000 25127.000000 104494.000000 25360.000000 102645.000000 25624.000000 101528.000000 25714.000000 97348.000000 26473.000000 91684.000000 27960.000000 91548.000000 27999.000000 84624.000000 30169.000000 81423.000000 31070.000000 80309.000000 31496.000000 77445.000000 32503.000000 73522.000000 34291.000000 72323.000000 34817.000000 70023.000000 36112.000000 68753.000000 36866.000000 68026.000000 37206.000000 62372.000000 40882.000000 62762.000000 40389.000000 59574.000000 42475.000000 58945.000000 42910.000000 58277.000000 43427.000000 55450.000000 45778.000000 53706.000000 47220.000000 52688.000000 48132.000000 51248.000000 49619.000000 49660.000000 50896.000000 48350.000000 52420.000000 47841.000000 53045.000000 46369.000000 55144.000000 46146.000000 55477.000000 41745.000000 61329.000000 41312.000000 62041.000000 39703.000000 64790.000000 38072.000000 66872.000000 38244.000000 66251.000000 37648.000000 67504.000000 34040.000000 76290.000000 33299.000000 78542.000000 32600.000000 80350.000000 31179.000000 84514.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 27774.000000 101480.000000 27487.000000 102829.000000 25962.000000 112623.000000 25525.000000 116293.000000 24873.000000 121341.000000 24291.000000 127413.000000 24242.000000 128172.000000 23529.000000 137988.000000 22914.000000 151040.000000 22694.000000 153451.000000 22625.000000 156462.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 23963.000000 135031.000000 25495.000000 120424.000000 25521.000000 119120.000000 25958.000000 114196.000000 26602.000000 108889.000000 27514.000000 102775.000000 27880.000000 100103.000000 28291.000000 97825.000000 29020.000000 94041.000000 29903.000000 89680.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34644.000000 73874.000000 35240.000000 72621.000000 36527.000000 69946.000000 37100.000000 68797.000000 38270.000000 66101.000000 38576.000000 65641.000000 41962.000000 60781.000000 43565.000000 58722.000000 46133.000000 55629.000000 46622.000000 54799.000000 48521.000000 52222.000000 51592.000000 48949.000000 53130.000000 47655.000000 55271.000000 46003.000000 56446.000000 45081.000000 60930.000000 41714.000000 66110.000000 38339.000000 66739.000000 37973.000000 68278.000000 37107.000000 69348.000000 36576.000000 72133.000000 35087.000000 72860.000000 34747.000000 77260.000000 32907.000000 82603.000000 30720.000000 83932.000000 30184.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 95553.000000 26801.000000 98926.000000 26262.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 143002.000000 22215.000000 150287.000000 21917.000000 160799.000000 21521.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 155089.000000 21742.000000 142275.000000 22284.000000 140697.000000 22331.000000 136365.000000 22652.000000 118038.000000 24029.000000 111085.000000 24707.000000 105922.000000 25287.000000 105112.000000 25392.000000 98926.000000 26262.000000 96861.000000 26573.000000 93980.000000 27097.000000 90134.000000 28095.000000 89998.000000 28134.000000 87329.000000 28966.000000 84290.000000 29866.000000 83176.000000 30292.000000 82683.000000 30448.000000 77202.000000 32699.000000 77445.000000 32503.000000 72317.000000 34898.000000 71118.000000 35424.000000 71747.000000 34989.000000 70278.000000 35792.000000 66136.000000 38192.000000 64552.000000 39194.000000 61898.000000 41089.000000 62226.000000 40813.000000 61241.000000 41495.000000 57984.000000 43966.000000 56523.000000 44775.000000 54981.000000 45986.000000 54022.000000 46878.000000 53224.000000 47697.000000 51378.000000 49644.000000 47754.000000 53141.000000 48445.000000 52219.000000 46967.000000 54085.000000 45769.000000 55731.000000 45551.000000 56044.000000 40322.000000 64151.000000 37837.000000 66813.000000 37794.000000 66920.000000 35257.000000 72895.000000 34131.000000 75190.000000 32702.000000 79606.000000 32510.000000 80227.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28924.000000 94499.000000 27857.000000 99886.000000 27486.000000 102485.000000 25647.000000 116436.000000 25539.000000 117398.000000 25441.000000 118286.000000 24756.000000 124907.000000 22964.000000 147094.000000 22672.000000 153812.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22343.000000 164671.000000 22589.000000 156936.000000 22900.000000 149007.000000 22908.000000 148780.000000 23502.000000 140168.000000 24066.000000 134001.000000 24621.000000 127628.000000 25302.000000 121670.000000 26784.000000 110981.000000 28473.000000 97882.000000 29778.000000 90393.000000 31146.000000 84556.000000 31890.000000 81921.000000 32347.000000 80529.000000 34644.000000 73874.000000 35917.000000 71173.000000 36490.000000 70024.000000 36856.000000 69047.000000 39598.000000 64189.000000 42380.000000 60085.000000 43801.000000 58129.000000 44633.000000 57064.000000 47507.000000 53578.000000 49684.000000 51152.000000 51455.000000 49274.000000 56060.000000 45229.000000 60438.000000 42198.000000 63053.000000 40374.000000 63846.000000 39796.000000 66739.000000 37973.000000 68278.000000 37107.000000 68844.000000 36838.000000 72816.000000 34834.000000 74797.000000 33985.000000 76849.000000 33208.000000 83797.000000 30022.000000 86959.000000 29034.000000 88316.000000 28584.000000 96138.000000 26840.000000 101138.000000 25986.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 143002.000000 22215.000000 149794.000000 21973.000000 151327.000000 21933.000000 164504.000000 21665.000000 178446.000000 21282.000000 167892.000000 21370.000000 155089.000000 21742.000000 140019.000000 22371.000000 138542.000000 22456.000000 120539.000000 23822.000000 117595.000000 23896.000000 109259.000000 24810.000000 106382.000000 25135.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 91471.000000 28023.000000 85014.000000 29826.000000 84290.000000 29866.000000 82683.000000 30448.000000 77445.000000 32503.000000 71845.000000 35084.000000 71118.000000 35424.000000 71610.000000 35111.000000 70141.000000 35914.000000 68871.000000 36668.000000 69008.000000 36546.000000 65990.000000 38490.000000 64842.000000 39267.000000 62033.000000 40768.000000 58807.000000 42967.000000 56979.000000 44401.000000 54517.000000 46357.000000 54393.000000 46459.000000 53916.000000 46875.000000 53434.000000 47351.000000 50761.000000 50127.000000 48718.000000 52189.000000 47738.000000 53281.000000 47454.000000 53462.000000 47075.000000 53955.000000 44449.000000 57209.000000 43797.000000 58112.000000 42544.000000 60020.000000 40719.000000 62924.000000 37733.000000 67876.000000 36733.000000 69698.000000 35944.000000 71396.000000 35103.000000 73166.000000 34532.000000 74124.000000 34131.000000 75190.000000 32702.000000 79606.000000 32510.000000 80227.000000 31179.000000 84514.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 28148.000000 98590.000000 27450.000000 103043.000000 26610.000000 108648.000000 25362.000000 117765.000000 25489.000000 116218.000000 24448.000000 126012.000000 24287.000000 127502.000000 24242.000000 128172.000000 23411.000000 139720.000000 22690.000000 153540.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22475.000000 159465.000000 22593.000000 155944.000000 22908.000000 148780.000000 23104.000000 145992.000000 23376.000000 140995.000000 23940.000000 134828.000000 25302.000000 121670.000000 26294.000000 113859.000000 26690.000000 107927.000000 26620.000000 108158.000000 27381.000000 103554.000000 29561.000000 91768.000000 29759.000000 90330.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 34644.000000 73874.000000 35240.000000 72621.000000 36001.000000 70968.000000 36361.000000 70134.000000 36856.000000 69047.000000 38576.000000 65641.000000 41263.000000 61820.000000 43135.000000 59317.000000 45754.000000 56026.000000 45424.000000 56288.000000 45360.000000 56328.000000 48663.000000 52510.000000 49743.000000 51213.000000 51455.000000 49274.000000 53077.000000 47817.000000 52690.000000 47999.000000 58151.000000 43865.000000 61339.000000 41779.000000 67128.000000 37743.000000 71596.000000 35157.000000 72323.000000 34817.000000 74194.000000 33995.000000 78665.000000 32038.000000 79864.000000 31512.000000 80631.000000 31225.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96138.000000 26840.000000 100775.000000 25998.000000 105922.000000 25287.000000 111085.000000 24707.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 138741.000000 22433.000000 146078.000000 22103.000000 166236.000000 21468.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 162108.000000 21464.000000 159032.000000 21576.000000 143735.000000 22241.000000 142258.000000 22326.000000 128478.000000 23069.000000 124776.000000 23321.000000 121175.000000 23606.000000 112581.000000 24518.000000 110813.000000 24632.000000 103377.000000 25450.000000 101528.000000 25714.000000 97348.000000 26473.000000 93952.000000 27328.000000 87165.000000 29398.000000 83091.000000 30392.000000 83797.000000 30022.000000 82683.000000 30448.000000 78234.000000 32291.000000 77445.000000 32503.000000 76879.000000 32772.000000 75680.000000 33298.000000 72337.000000 34771.000000 69666.000000 36250.000000 65999.000000 38314.000000 63923.000000 39629.000000 63255.000000 40146.000000 53813.000000 47024.000000 54452.000000 46436.000000 53864.000000 46909.000000 53101.000000 47599.000000 52267.000000 48409.000000 51468.000000 48849.000000 50538.000000 49999.000000 43661.000000 58574.000000 42178.000000 60665.000000 40425.000000 63331.000000 39710.000000 64479.000000 39118.000000 65476.000000 38294.000000 66790.000000 38096.000000 67170.000000 37195.000000 68665.000000 34502.000000 75187.000000 34296.000000 75815.000000 31058.000000 85734.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29224.000000 92912.000000 27373.000000 103607.000000 27236.000000 104506.000000 27334.000000 103618.000000 26277.000000 110857.000000 26023.000000 112969.000000 25783.000000 115236.000000 25073.000000 123054.000000 24663.000000 127259.000000 23972.000000 133355.000000 23670.000000 136455.000000 22679.000000 153124.000000 22589.000000 156028.000000 22443.000000 161331.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22989.000000 146728.000000 23502.000000 140168.000000 23886.000000 136033.000000 24238.000000 132137.000000 24923.000000 125306.000000 26635.000000 110575.000000 27859.000000 99873.000000 27994.000000 98987.000000 28749.000000 95483.000000 30513.000000 87780.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 34532.000000 74124.000000 34892.000000 73290.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 39276.000000 64852.000000 43128.000000 59202.000000 44613.000000 57206.000000 45699.000000 55574.000000 46966.000000 53907.000000 47475.000000 53282.000000 48142.000000 52533.000000 50330.000000 50230.000000 53201.000000 47481.000000 55388.000000 45590.000000 60906.000000 41804.000000 62516.000000 40596.000000 63786.000000 39842.000000 64308.000000 39513.000000 64951.000000 39162.000000 68167.000000 37141.000000 75144.000000 33631.000000 75393.000000 33469.000000 79816.000000 31801.000000 84290.000000 29866.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 111888.000000 24600.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137363.000000 22471.000000 139703.000000 22372.000000 148992.000000 22019.000000 154241.000000 21849.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 157342.000000 21633.000000 154266.000000 21745.000000 143735.000000 22241.000000 138542.000000 22456.000000 130947.000000 22993.000000 127720.000000 23247.000000 107563.000000 25164.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 92707.000000 27689.000000 85014.000000 29826.000000 88180.000000 28623.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 77445.000000 32503.000000 72323.000000 34817.000000 71596.000000 35157.000000 66750.000000 38092.000000 65834.000000 38542.000000 64250.000000 39544.000000 60897.000000 41797.000000 59097.000000 43291.000000 58222.000000 43807.000000 55773.000000 45960.000000 52983.000000 48546.000000 50059.000000 51261.000000 48282.000000 52960.000000 47302.000000 54052.000000 43191.000000 59302.000000 42116.000000 60743.000000 41683.000000 61455.000000 39270.000000 64713.000000 37837.000000 66813.000000 37794.000000 66920.000000 34113.000000 76565.000000 34131.000000 75190.000000 33674.000000 76582.000000 31698.000000 82653.000000 31408.000000 83502.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29200.000000 93107.000000 28042.000000 99817.000000 27637.000000 102379.000000 26173.000000 112870.000000 25977.000000 114599.000000 25332.000000 119349.000000 25065.000000 122288.000000 24893.000000 124441.000000 22759.000000 154280.000000 22467.000000 159692.000000 22235.000000 169647.000000 22172.000000 172873.000000 22141.000000 176436.000000 22183.000000 171860.000000 22585.000000 156171.000000 22900.000000 149007.000000 23062.000000 146206.000000 23158.000000 144664.000000 23555.000000 139480.000000 23939.000000 135345.000000 24261.000000 131934.000000 24739.000000 127902.000000 25920.000000 115770.000000 26729.000000 107903.000000 27102.000000 105291.000000 27757.000000 101339.000000 29739.000000 90924.000000 31600.000000 82770.000000 32057.000000 81378.000000 34532.000000 74124.000000 34892.000000 73290.000000 35687.000000 71449.000000 36260.000000 70300.000000 38050.000000 66705.000000 38270.000000 66101.000000 38576.000000 65641.000000 45125.000000 56994.000000 45893.000000 55707.000000 48001.000000 53361.000000 50405.000000 50211.000000 50229.000000 50312.000000 51167.000000 49450.000000 51898.000000 48778.000000 53553.000000 47299.000000 55919.000000 45556.000000 56513.000000 44990.000000 62352.000000 41258.000000 64935.000000 39481.000000 71118.000000 35424.000000 72337.000000 34771.000000 73536.000000 34245.000000 76890.000000 32813.000000 80823.000000 31323.000000 85511.000000 29455.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96861.000000 26573.000000 105922.000000 25287.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 132548.000000 22780.000000 134100.000000 22687.000000 139602.000000 22353.000000 148992.000000 22019.000000 169236.000000 21327.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 150866.000000 21883.000000 146658.000000 22062.000000 145106.000000 22155.000000 113786.000000 24424.000000 105525.000000 25330.000000 104447.000000 25450.000000 101859.000000 25789.000000 100867.000000 25858.000000 97135.000000 26536.000000 93980.000000 27097.000000 90692.000000 27965.000000 88023.000000 28797.000000 85124.000000 29744.000000 81600.000000 31021.000000 80309.000000 31496.000000 77490.000000 32560.000000 75564.000000 33426.000000 74910.000000 33749.000000 69192.000000 36730.000000 66453.000000 38287.000000 65673.000000 38644.000000 65350.000000 38852.000000 64398.000000 39377.000000 61195.000000 41345.000000 60566.000000 41780.000000 60124.000000 42097.000000 56472.000000 44837.000000 55172.000000 45973.000000 50267.000000 50959.000000 47310.000000 54142.000000 43099.000000 59290.000000 41980.000000 60743.000000 41086.000000 62007.000000 39833.000000 63915.000000 38835.000000 65452.000000 38569.000000 65936.000000 36404.000000 70162.000000 37085.000000 68539.000000 33646.000000 76965.000000 34131.000000 75190.000000 33384.000000 77431.000000 32220.000000 81076.000000 30068.000000 88863.000000 29695.000000 90525.000000 29536.000000 91259.000000 29528.000000 91299.000000 28654.000000 96075.000000 27774.000000 101380.000000 27641.000000 101919.000000 26426.000000 109975.000000 26085.000000 112661.000000 25928.000000 113265.000000 24910.000000 121386.000000 24685.000000 124030.000000 23957.000000 133928.000000 23499.000000 139890.000000 22725.000000 152476.000000 22656.000000 155487.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22964.000000 147094.000000 22972.000000 146867.000000 23376.000000 140995.000000 24019.000000 133584.000000 25582.000000 118630.000000 26326.000000 110054.000000 26840.000000 106955.000000 28358.000000 97693.000000 28728.000000 95875.000000 28894.000000 94530.000000 29038.000000 93880.000000 30182.000000 88680.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 33889.000000 76133.000000 35545.000000 72459.000000 36235.000000 70883.000000 36808.000000 69734.000000 37593.000000 68299.000000 39288.000000 65243.000000 39502.000000 64533.000000 43192.000000 58707.000000 45027.000000 56259.000000 48096.000000 52833.000000 49311.000000 51212.000000 51061.000000 49478.000000 53593.000000 46991.000000 55213.000000 45731.000000 64092.000000 39992.000000 68318.000000 36973.000000 69462.000000 36343.000000 70189.000000 36003.000000 83056.000000 30497.000000 87867.000000 28851.000000 88981.000000 28445.000000 89117.000000 28406.000000 90720.000000 27913.000000 96861.000000 26573.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137363.000000 22471.000000 139602.000000 22353.000000 154241.000000 21849.000000 164504.000000 21665.000000 170748.000000 21343.000000 173801.000000 21305.000000 171511.000000 21317.000000 162108.000000 21464.000000 150550.000000 21875.000000 140019.000000 22371.000000 141189.000000 22281.000000 125215.000000 23285.000000 121175.000000 23606.000000 118966.000000 23793.000000 116695.000000 23992.000000 112740.000000 24437.000000 104494.000000 25360.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 89801.000000 28550.000000 88019.000000 28852.000000 86100.000000 29341.000000 83797.000000 30022.000000 82683.000000 30448.000000 79864.000000 31512.000000 77445.000000 32503.000000 76246.000000 33029.000000 75680.000000 33298.000000 72545.000000 34670.000000 71747.000000 34989.000000 69008.000000 36546.000000 65896.000000 38678.000000 63954.000000 39744.000000 59219.000000 43033.000000 55613.000000 45724.000000 55736.000000 45486.000000 53862.000000 46969.000000 53689.000000 47126.000000 51501.000000 48954.000000 50049.000000 50325.000000 47833.000000 53115.000000 39888.000000 64552.000000 40174.000000 63931.000000 40669.000000 62844.000000 38724.000000 66344.000000 37471.000000 68900.000000 34097.000000 75973.000000 33405.000000 77741.000000 33159.000000 78214.000000 32702.000000 79606.000000 32510.000000 80227.000000 32220.000000 81076.000000 31341.000000 83630.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27870.000000 100644.000000 27215.000000 104596.000000 27213.000000 104609.000000 27078.000000 105495.000000 25800.000000 114821.000000 25150.000000 120401.000000 24549.000000 125877.000000 23509.000000 137945.000000 23411.000000 139720.000000 22945.000000 150065.000000 22910.000000 151129.000000 22850.000000 153718.000000 22193.000000 174223.000000 22224.000000 170660.000000 22235.000000 169647.000000 22467.000000 159692.000000 22672.000000 153812.000000 22972.000000 146867.000000 23369.000000 141683.000000 24425.000000 129968.000000 24824.000000 125702.000000 25643.000000 118984.000000 26707.000000 109899.000000 28103.000000 100469.000000 28611.000000 96971.000000 29778.000000 90393.000000 31182.000000 84364.000000 31631.000000 82781.000000 31890.000000 81921.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 38750.000000 65578.000000 40528.000000 63019.000000 43430.000000 58832.000000 43791.000000 58369.000000 43852.000000 58177.000000 45409.000000 56252.000000 48355.000000 52570.000000 49275.000000 51522.000000 50509.000000 50235.000000 53450.000000 47515.000000 59213.000000 43124.000000 61756.000000 41564.000000 65362.000000 38850.000000 67350.000000 37544.000000 68819.000000 36741.000000 71676.000000 35223.000000 71272.000000 35325.000000 73673.000000 34123.000000 76092.000000 33132.000000 80535.000000 31391.000000 86943.000000 29013.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 137262.000000 22452.000000 146874.000000 22017.000000 165022.000000 21380.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 165022.000000 21380.000000 154266.000000 21745.000000 144280.000000 22153.000000 138467.000000 22464.000000 128478.000000 23069.000000 115692.000000 24104.000000 108256.000000 24922.000000 105379.000000 25247.000000 104494.000000 25360.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 87654.000000 29148.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 76246.000000 33029.000000 75519.000000 33369.000000 71118.000000 35424.000000 71747.000000 34989.000000 70278.000000 35792.000000 66708.000000 37841.000000 66385.000000 38049.000000 60834.000000 41767.000000 60205.000000 42202.000000 57960.000000 43848.000000 56979.000000 44401.000000 56523.000000 44775.000000 54649.000000 46258.000000 54504.000000 46402.000000 53270.000000 47689.000000 50346.000000 50793.000000 49721.000000 51352.000000 46594.000000 54906.000000 45679.000000 55706.000000 42829.000000 59504.000000 42765.000000 59544.000000 40268.000000 63352.000000 39048.000000 65344.000000 38835.000000 65452.000000 37243.000000 68529.000000 37200.000000 68636.000000 33294.000000 78158.000000 31890.000000 81921.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 27752.000000 101571.000000 27082.000000 105608.000000 26610.000000 108648.000000 26269.000000 111334.000000 25536.000000 117007.000000 25394.000000 118386.000000 24821.000000 122411.000000 24128.000000 129926.000000 23585.000000 137139.000000 22690.000000 153540.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23305.000000 143596.000000 26222.000000 114897.000000 26856.000000 106904.000000 27670.000000 101838.000000 28538.000000 96919.000000 28283.000000 97654.000000 29389.000000 91921.000000 30551.000000 87263.000000 31539.000000 83601.000000 31768.000000 82589.000000 32415.000000 80478.000000 33159.000000 78214.000000 34131.000000 75190.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 39270.000000 64713.000000 39576.000000 64253.000000 40820.000000 62353.000000 44073.000000 57806.000000 44585.000000 57000.000000 47591.000000 53372.000000 48521.000000 52222.000000 51828.000000 48887.000000 57860.000000 44380.000000 58652.000000 43829.000000 59254.000000 43451.000000 62826.000000 41088.000000 70038.000000 36171.000000 71596.000000 35157.000000 72323.000000 34817.000000 75393.000000 33469.000000 80357.000000 31356.000000 81124.000000 31069.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 90320.000000 28049.000000 93980.000000 27097.000000 96861.000000 26573.000000 102716.000000 25594.000000 109334.000000 24802.000000 110159.000000 24714.000000 118607.000000 23898.000000 122008.000000 23610.000000 131385.000000 22955.000000 136612.000000 22621.000000 150274.000000 21879.000000 156564.000000 21661.000000 159478.000000 21577.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 172106.000000 21317.000000 165022.000000 21380.000000 155089.000000 21742.000000 147165.000000 22051.000000 134592.000000 22630.000000 124447.000000 23339.000000 120557.000000 23644.000000 117595.000000 23896.000000 109334.000000 24802.000000 105304.000000 25255.000000 102716.000000 25594.000000 100867.000000 25858.000000 97135.000000 26536.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 76970.000000 32839.000000 71596.000000 35157.000000 70326.000000 35911.000000 66529.000000 38085.000000 63923.000000 39629.000000 62145.000000 40886.000000 61477.000000 41403.000000 56906.000000 44924.000000 54452.000000 46436.000000 53199.000000 47661.000000 52237.000000 48497.000000 49659.000000 51319.000000 47671.000000 53417.000000 50016.000000 50220.000000 48465.000000 52304.000000 44776.000000 57046.000000 42220.000000 60393.000000 41950.000000 60844.000000 39270.000000 64713.000000 37837.000000 66813.000000 36504.000000 70050.000000 34131.000000 75190.000000 33384.000000 77431.000000 32220.000000 81076.000000 31162.000000 84903.000000 31065.000000 85022.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27870.000000 100644.000000 27215.000000 104596.000000 26707.000000 108094.000000 26069.000000 113083.000000 25536.000000 117007.000000 25296.000000 119274.000000 25029.000000 122213.000000 24807.000000 125138.000000 23962.000000 135847.000000 22900.000000 149007.000000 22672.000000 153812.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22254.000000 171625.000000 22408.000000 165593.000000 22687.000000 152897.000000 22979.000000 146179.000000 23376.000000 140995.000000 24199.000000 131552.000000 24341.000000 130173.000000 27052.000000 105364.000000 27813.000000 100760.000000 29086.000000 93305.000000 29230.000000 92655.000000 30551.000000 87263.000000 30730.000000 86559.000000 31361.000000 84237.000000 31958.000000 81870.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34532.000000 74124.000000 35004.000000 73040.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38750.000000 65578.000000 40528.000000 63019.000000 43070.000000 59557.000000 42312.000000 60329.000000 45030.000000 56987.000000 47595.000000 53726.000000 50760.000000 50090.000000 51329.000000 49436.000000 51524.000000 49246.000000 52281.000000 48462.000000 53450.000000 47247.000000 53593.000000 46991.000000 55302.000000 45867.000000 56482.000000 45162.000000 68361.000000 37361.000000 70480.000000 35862.000000 71207.000000 35522.000000 73078.000000 34700.000000 79621.000000 31708.000000 80631.000000 31225.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 93323.000000 27346.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 112966.000000 24480.000000 113791.000000 24392.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 139602.000000 22353.000000 144769.000000 22160.000000 154241.000000 21849.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 149744.000000 22007.000000 142666.000000 22196.000000 141189.000000 22281.000000 124787.000000 23458.000000 121121.000000 23619.000000 109334.000000 24802.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 86100.000000 29341.000000 85700.000000 29477.000000 81993.000000 30889.000000 78814.000000 32078.000000 78609.000000 32149.000000 77490.000000 32560.000000 76763.000000 32900.000000 74011.000000 34086.000000 73357.000000 34409.000000 72158.000000 34935.000000 71610.000000 35111.000000 68738.000000 36757.000000 66136.000000 38192.000000 65507.000000 38627.000000 63923.000000 39629.000000 59788.000000 42414.000000 57960.000000 43848.000000 54981.000000 45986.000000 54649.000000 46258.000000 51580.000000 49506.000000 49002.000000 52328.000000 44292.000000 57954.000000 43693.000000 58505.000000 41519.000000 61334.000000 41455.000000 61374.000000 40863.000000 62371.000000 40039.000000 63685.000000 37837.000000 66813.000000 37794.000000 66920.000000 33403.000000 77711.000000 33207.000000 78095.000000 32741.000000 79440.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 30049.000000 89215.000000 29224.000000 92912.000000 28554.000000 96481.000000 27744.000000 101263.000000 26632.000000 109133.000000 25920.000000 115590.000000 24540.000000 126581.000000 24442.000000 127469.000000 24006.000000 133327.000000 23265.000000 143718.000000 22844.000000 152116.000000 22639.000000 157996.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 25301.000000 119853.000000 26322.000000 109941.000000 26977.000000 105989.000000 29721.000000 91097.000000 30000.000000 89561.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 35488.000000 72037.000000 36856.000000 69047.000000 38483.000000 65993.000000 38789.000000 65533.000000 40228.000000 63350.000000 40607.000000 62857.000000 45302.000000 56322.000000 46998.000000 54218.000000 47727.000000 53400.000000 52474.000000 48115.000000 53458.000000 47150.000000 53811.000000 46873.000000 60422.000000 42265.000000 60754.000000 41897.000000 67689.000000 37408.000000 68181.000000 37095.000000 69380.000000 36569.000000 73334.000000 34884.000000 76613.000000 33617.000000 81958.000000 30947.000000 85124.000000 29744.000000 86646.000000 29262.000000 90134.000000 28095.000000 96861.000000 26573.000000 98926.000000 26262.000000 111085.000000 24707.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 149794.000000 21973.000000 158990.000000 21751.000000 168458.000000 21355.000000 170748.000000 21343.000000 178446.000000 21282.000000 168458.000000 21355.000000 164244.000000 21408.000000 150590.000000 21887.000000 146382.000000 22066.000000 137215.000000 22523.000000 127838.000000 23178.000000 117595.000000 23896.000000 109259.000000 24810.000000 106382.000000 25135.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 93739.000000 27391.000000 84711.000000 29859.000000 80631.000000 31225.000000 79864.000000 31512.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 72317.000000 34898.000000 69649.000000 36227.000000 67349.000000 37522.000000 66708.000000 37841.000000 66385.000000 38049.000000 64347.000000 39306.000000 61159.000000 41392.000000 58084.000000 43601.000000 56472.000000 44837.000000 55172.000000 45973.000000 51803.000000 48582.000000 50491.000000 49884.000000 50016.000000 50220.000000 48219.000000 52544.000000 46734.000000 54540.000000 41868.000000 60968.000000 41435.000000 61680.000000 38926.000000 66091.000000 38370.000000 66657.000000 38268.000000 66704.000000 37099.000000 68721.000000 36056.000000 71146.000000 36013.000000 71253.000000 32347.000000 80529.000000 31890.000000 81921.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28924.000000 94499.000000 26205.000000 112026.000000 26097.000000 112988.000000 24999.000000 120399.000000 24407.000000 125974.000000 23799.000000 134533.000000 23491.000000 138825.000000 23199.000000 145543.000000 22597.000000 155801.000000 22408.000000 163419.000000 22307.000000 170201.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22964.000000 147094.000000 22972.000000 146867.000000 23396.000000 141038.000000 24019.000000 133584.000000 24943.000000 123377.000000 25510.000000 118432.000000 26247.000000 110770.000000 26618.000000 108171.000000 26755.000000 107272.000000 27410.000000 103320.000000 27991.000000 100060.000000 28497.000000 97220.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 34131.000000 75190.000000 34644.000000 73874.000000 34532.000000 74124.000000 34832.000000 73370.000000 35192.000000 72536.000000 36361.000000 70134.000000 36856.000000 69047.000000 38612.000000 66187.000000 41234.000000 62019.000000 44820.000000 57197.000000 46912.000000 54419.000000 47442.000000 53834.000000 48980.000000 52222.000000 53555.000000 47116.000000 53593.000000 46991.000000 56819.000000 44792.000000 59375.000000 42994.000000 63131.000000 40712.000000 69636.000000 36677.000000 68609.000000 36998.000000 69175.000000 36729.000000 72079.000000 35405.000000 78781.000000 32085.000000 82221.000000 30751.000000 86312.000000 29277.000000 88981.000000 28445.000000 89117.000000 28406.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 111888.000000 24600.000000 119324.000000 23782.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 141039.000000 22398.000000 143150.000000 22322.000000 157111.000000 21839.000000 173801.000000 21305.000000 169236.000000 21327.000000 165022.000000 21380.000000 155632.000000 21714.000000 142942.000000 22192.000000 141390.000000 22285.000000 134210.000000 22777.000000 120411.000000 23776.000000 118016.000000 24010.000000 119324.000000 23782.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 96861.000000 26573.000000 93980.000000 27097.000000 90828.000000 27926.000000 89117.000000 28406.000000 87714.000000 28762.000000 85045.000000 29594.000000 82649.000000 30502.000000 77490.000000 32560.000000 76763.000000 32900.000000 71492.000000 35435.000000 72158.000000 34935.000000 69447.000000 36284.000000 68177.000000 37038.000000 64607.000000 39306.000000 62581.000000 40625.000000 59927.000000 42520.000000 59098.000000 43097.000000 57224.000000 44580.000000 56026.000000 45583.000000 53569.000000 47595.000000 53795.000000 46982.000000 52558.000000 48150.000000 48951.000000 51769.000000 47303.000000 53457.000000 46474.000000 54387.000000 43312.000000 58807.000000 39926.000000 63676.000000 37837.000000 66813.000000 35894.000000 71277.000000 34832.000000 73370.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30214.000000 88451.000000 30049.000000 89215.000000 29679.000000 91033.000000 27870.000000 100644.000000 27215.000000 104596.000000 27213.000000 104609.000000 26269.000000 111334.000000 24521.000000 125519.000000 23621.000000 137203.000000 23431.000000 139763.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22676.000000 154577.000000 22964.000000 147094.000000 22979.000000 146179.000000 23727.000000 136831.000000 24306.000000 129737.000000 25400.000000 117835.000000 26004.000000 113026.000000 25898.000000 113649.000000 27501.000000 102316.000000 28275.000000 97694.000000 28283.000000 97654.000000 29245.000000 92571.000000 29389.000000 91921.000000 30551.000000 87263.000000 31699.000000 82730.000000 31958.000000 81870.000000 32347.000000 80529.000000 33067.000000 78517.000000 34532.000000 74124.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 39749.000000 64014.000000 39224.000000 64685.000000 39863.000000 63759.000000 40477.000000 62777.000000 41962.000000 60781.000000 43081.000000 59328.000000 46033.000000 55585.000000 48273.000000 52911.000000 48782.000000 52286.000000 49365.000000 51675.000000 51061.000000 49478.000000 53024.000000 47645.000000 53593.000000 46991.000000 56819.000000 44792.000000 59375.000000 42994.000000 63603.000000 40322.000000 67274.000000 38041.000000 70687.000000 36005.000000 74070.000000 34325.000000 74797.000000 33985.000000 77305.000000 32831.000000 78969.000000 32030.000000 79736.000000 31743.000000 82947.000000 30448.000000 84055.000000 30079.000000 89998.000000 28134.000000 90134.000000 28095.000000 93257.000000 27364.000000 98926.000000 26262.000000 100775.000000 25998.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 134339.000000 22631.000000 146078.000000 22103.000000 150525.000000 21979.000000 164112.000000 21697.000000 178446.000000 21282.000000 174381.000000 21307.000000 169127.000000 21374.000000 153736.000000 21873.000000 145044.000000 22255.000000 138144.000000 22585.000000 125502.000000 23458.000000 115910.000000 24389.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 93739.000000 27391.000000 85716.000000 29533.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 74953.000000 33638.000000 71345.000000 35420.000000 70278.000000 35792.000000 67406.000000 37438.000000 66708.000000 37841.000000 66385.000000 38049.000000 64359.000000 39368.000000 62581.000000 40625.000000 59724.000000 42773.000000 57985.000000 43966.000000 54425.000000 46795.000000 54837.000000 46406.000000 55252.000000 45930.000000 53450.000000 47247.000000 53593.000000 46991.000000 51875.000000 48754.000000 50021.000000 50806.000000 49151.000000 51521.000000 48350.000000 52420.000000 47841.000000 53045.000000 46911.000000 54195.000000 43743.000000 58398.000000 43520.000000 58731.000000 42117.000000 60744.000000 41745.000000 61329.000000 41312.000000 62041.000000 39528.000000 65094.000000 38543.000000 66690.000000 36121.000000 71055.000000 35321.000000 72426.000000 34532.000000 74124.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31768.000000 82589.000000 30358.000000 87801.000000 29876.000000 89672.000000 29230.000000 92882.000000 28148.000000 98590.000000 27856.000000 100357.000000 27719.000000 101256.000000 26944.000000 106528.000000 26603.000000 109214.000000 26029.000000 114174.000000 25430.000000 118461.000000 24764.000000 122546.000000 23664.000000 138877.000000 23438.000000 140771.000000 22589.000000 156028.000000 22332.000000 166890.000000 22321.000000 167903.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22687.000000 152897.000000 22979.000000 146179.000000 23376.000000 140995.000000 23940.000000 134828.000000 25402.000000 120794.000000 25657.000000 118051.000000 26247.000000 110770.000000 26618.000000 108171.000000 26755.000000 107272.000000 27516.000000 102668.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33159.000000 78214.000000 35687.000000 71449.000000 36856.000000 69047.000000 40753.000000 62679.000000 41409.000000 61642.000000 41345.000000 61682.000000 45859.000000 56004.000000 47421.000000 53861.000000 48746.000000 52059.000000 51630.000000 48824.000000 53168.000000 47530.000000 59375.000000 42994.000000 64356.000000 39966.000000 65226.000000 39350.000000 68447.000000 37373.000000 73245.000000 34914.000000 77401.000000 32590.000000 79830.000000 31566.000000 81879.000000 30797.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 93980.000000 27097.000000 96861.000000 26573.000000 104494.000000 25360.000000 105304.000000 25255.000000 108181.000000 24930.000000 117595.000000 23896.000000 121560.000000 23583.000000 131329.000000 22846.000000 132806.000000 22761.000000 146600.000000 22049.000000 160799.000000 21521.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 159855.000000 21573.000000 134961.000000 22655.000000 133409.000000 22748.000000 127445.000000 23152.000000 118682.000000 23890.000000 116287.000000 24124.000000 116695.000000 23992.000000 107828.000000 25024.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 99559.000000 26086.000000 96735.000000 26672.000000 97135.000000 26536.000000 92080.000000 27900.000000 90175.000000 28463.000000 88789.000000 28500.000000 87075.000000 29067.000000 84468.000000 29901.000000 83354.000000 30327.000000 79864.000000 31512.000000 77445.000000 32503.000000 76152.000000 33112.000000 74953.000000 33638.000000 71596.000000 35157.000000 66123.000000 38453.000000 63517.000000 39997.000000 62033.000000 40768.000000 58807.000000 42967.000000 54507.000000 46458.000000 53882.000000 47017.000000 53397.000000 47437.000000 52563.000000 48247.000000 50815.000000 49780.000000 50217.000000 50464.000000 46894.000000 54612.000000 47187.000000 53917.000000 41953.000000 61122.000000 41342.000000 61694.000000 40909.000000 62406.000000 39300.000000 65155.000000 38543.000000 66690.000000 37317.000000 69200.000000 36966.000000 69714.000000 33442.000000 78760.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 27720.000000 100922.000000 26587.000000 109194.000000 25337.000000 117980.000000 24995.000000 120488.000000 24564.000000 124573.000000 24407.000000 125974.000000 23799.000000 134533.000000 23589.000000 137050.000000 22800.000000 154665.000000 22630.000000 156129.000000 22336.000000 169047.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22585.000000 156171.000000 22900.000000 149007.000000 23105.000000 145352.000000 23761.000000 136892.000000 24019.000000 133584.000000 26117.000000 116097.000000 26269.000000 110579.000000 27030.000000 105975.000000 27384.000000 103951.000000 27892.000000 100453.000000 29810.000000 90408.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34644.000000 73874.000000 35687.000000 71449.000000 36283.000000 70196.000000 38750.000000 65578.000000 40528.000000 63019.000000 41647.000000 61566.000000 43204.000000 59641.000000 48540.000000 52876.000000 49070.000000 52291.000000 49883.000000 51424.000000 54702.000000 46385.000000 54431.000000 46599.000000 55655.000000 45626.000000 56513.000000 44990.000000 55213.000000 45731.000000 60894.000000 41917.000000 66906.000000 38301.000000 68893.000000 36973.000000 71204.000000 35626.000000 74703.000000 33805.000000 75430.000000 33465.000000 73673.000000 34123.000000 76092.000000 33132.000000 82003.000000 30997.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 112966.000000 24480.000000 119346.000000 23801.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 143002.000000 22215.000000 146078.000000 22103.000000 149225.000000 22012.000000 169236.000000 21327.000000 173801.000000 21305.000000 178446.000000 21282.000000 167114.000000 21398.000000 162449.000000 21567.000000 142666.000000 22196.000000 141189.000000 22281.000000 127445.000000 23152.000000 126838.000000 23201.000000 119041.000000 23785.000000 109334.000000 24802.000000 106382.000000 25135.000000 102716.000000 25594.000000 100867.000000 25858.000000 97135.000000 26536.000000 93980.000000 27097.000000 90692.000000 27965.000000 86312.000000 29277.000000 85045.000000 29594.000000 82649.000000 30502.000000 79830.000000 31566.000000 77490.000000 32560.000000 75637.000000 33409.000000 70023.000000 36238.000000 66453.000000 38287.000000 66130.000000 38495.000000 62850.000000 40934.000000 58206.000000 44017.000000 55466.000000 46087.000000 52231.000000 48159.000000 51803.000000 48582.000000 51468.000000 48849.000000 48820.000000 52218.000000 45147.000000 56875.000000 45082.000000 56963.000000 45463.000000 56232.000000 43637.000000 58732.000000 42055.000000 61026.000000 38750.000000 65578.000000 38177.000000 66727.000000 37206.000000 68713.000000 35687.000000 71449.000000 35192.000000 72536.000000 34832.000000 73370.000000 34131.000000 75190.000000 33384.000000 77431.000000 31341.000000 83630.000000 30358.000000 87801.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28710.000000 96011.000000 27474.000000 103343.000000 26810.000000 107506.000000 26460.000000 109860.000000 26112.000000 112740.000000 24888.000000 122026.000000 24936.000000 121270.000000 23715.000000 135517.000000 23525.000000 138077.000000 22905.000000 148927.000000 22589.000000 156028.000000 22235.000000 169647.000000 22172.000000 172873.000000 22141.000000 176436.000000 22183.000000 171860.000000 22475.000000 159465.000000 22593.000000 155944.000000 22908.000000 148780.000000 22972.000000 146867.000000 23369.000000 141683.000000 24019.000000 133584.000000 24341.000000 130173.000000 27100.000000 105304.000000 27102.000000 105291.000000 27757.000000 101339.000000 28954.000000 94488.000000 29419.000000 91917.000000 29563.000000 91267.000000 30018.000000 89388.000000 30425.000000 87673.000000 30997.000000 85571.000000 31408.000000 83502.000000 31600.000000 82770.000000 32057.000000 81378.000000 33841.000000 76039.000000 34532.000000 74124.000000 36260.000000 70300.000000 36856.000000 69047.000000 40228.000000 63350.000000 40607.000000 62857.000000 41403.000000 61742.000000 46244.000000 55565.000000 48000.000000 53230.000000 48930.000000 52080.000000 49743.000000 51213.000000 50977.000000 49926.000000 53996.000000 46841.000000 56920.000000 44778.000000 56293.000000 45042.000000 60265.000000 42352.000000 62865.000000 40856.000000 67764.000000 37662.000000 69517.000000 36447.000000 68318.000000 36973.000000 75365.000000 33472.000000 86466.000000 29190.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 149794.000000 21973.000000 150027.000000 21966.000000 171511.000000 21317.000000 173801.000000 21305.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 162108.000000 21464.000000 150550.000000 21875.000000 121227.000000 23574.000000 120402.000000 23662.000000 115239.000000 24242.000000 105112.000000 25392.000000 98926.000000 26262.000000 96861.000000 26573.000000 93980.000000 27097.000000 90828.000000 27926.000000 89117.000000 28406.000000 89998.000000 28134.000000 84290.000000 29866.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 74953.000000 33638.000000 71596.000000 35157.000000 70326.000000 35911.000000 66136.000000 38192.000000 64552.000000 39194.000000 63911.000000 39567.000000 60055.000000 42170.000000 58181.000000 43653.000000 56403.000000 44910.000000 55172.000000 45973.000000 54584.000000 46446.000000 53750.000000 47256.000000 53788.000000 47131.000000 49849.000000 50909.000000 48805.000000 52041.000000 47495.000000 53565.000000 44420.000000 57562.000000 44676.000000 57123.000000 42704.000000 59957.000000 41039.000000 62142.000000 39822.000000 64201.000000 38239.000000 66599.000000 38533.000000 65865.000000 37682.000000 67460.000000 37327.000000 68231.000000 36678.000000 69892.000000 35906.000000 71703.000000 33193.000000 78509.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 28924.000000 94499.000000 26910.000000 106681.000000 26434.000000 110253.000000 25474.000000 117970.000000 25332.000000 119349.000000 24756.000000 124907.000000 23555.000000 139712.000000 23174.000000 144577.000000 22972.000000 146867.000000 22680.000000 153585.000000 22467.000000 159692.000000 22235.000000 169647.000000 22224.000000 170660.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22585.000000 156171.000000 22908.000000 148780.000000 23369.000000 141683.000000 23933.000000 135516.000000 26294.000000 113859.000000 27717.000000 100283.000000 27852.000000 99397.000000 28120.000000 97834.000000 29230.000000 92655.000000 29568.000000 91217.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34131.000000 75190.000000 34532.000000 74124.000000 36196.000000 70717.000000 36769.000000 69568.000000 36967.000000 69188.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 40823.000000 62409.000000 41199.000000 61860.000000 43855.000000 58116.000000 48174.000000 53153.000000 48657.000000 52250.000000 51455.000000 49274.000000 53593.000000 47508.000000 55817.000000 45516.000000 57823.000000 43827.000000 59417.000000 42602.000000 59740.000000 42394.000000 61518.000000 41137.000000 62788.000000 40383.000000 67445.000000 37494.000000 69299.000000 36417.000000 72946.000000 34463.000000 71747.000000 34989.000000 72474.000000 34649.000000 74893.000000 33658.000000 76890.000000 32813.000000 80823.000000 31323.000000 84935.000000 29827.000000 87314.000000 28898.000000 87714.000000 28762.000000 87850.000000 28723.000000 105922.000000 25287.000000 111085.000000 24707.000000 119346.000000 23801.000000 125192.000000 23261.000000 129524.000000 22940.000000 137262.000000 22452.000000 139602.000000 22353.000000 144769.000000 22160.000000 161590.000000 21749.000000 178446.000000 21282.000000 174381.000000 21307.000000 169127.000000 21374.000000 165022.000000 21380.000000 150866.000000 21883.000000 146658.000000 22062.000000 141465.000000 22277.000000 137133.000000 22598.000000 130475.000000 23081.000000 115447.000000 24474.000000 111582.000000 24874.000000 103637.000000 25555.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 90692.000000 27965.000000 88023.000000 28797.000000 86312.000000 29277.000000 85045.000000 29594.000000 82649.000000 30502.000000 77445.000000 32503.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 72795.000000 34631.000000 71596.000000 35157.000000 70326.000000 35911.000000 67261.000000 37731.000000 65391.000000 38929.000000 61039.000000 41867.000000 60063.000000 42513.000000 60289.000000 42313.000000 57801.000000 44385.000000 54452.000000 46436.000000 51468.000000 48849.000000 48163.000000 52819.000000 46967.000000 54085.000000 45551.000000 56044.000000 44275.000000 57878.000000 43451.000000 59192.000000 39974.000000 63855.000000 39365.000000 64641.000000 37773.000000 67718.000000 37243.000000 68529.000000 33427.000000 77604.000000 33497.000000 77246.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 29294.000000 92901.000000 28932.000000 94679.000000 28632.000000 96266.000000 26745.000000 107762.000000 26492.000000 108854.000000 25489.000000 116218.000000 24407.000000 125974.000000 23589.000000 137050.000000 23491.000000 138825.000000 22945.000000 150065.000000 22597.000000 155801.000000 22412.000000 163897.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22475.000000 159465.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 24923.000000 125958.000000 25746.000000 116158.000000 25862.000000 112617.000000 26517.000000 108665.000000 27415.000000 102902.000000 27985.000000 98720.000000 28120.000000 97834.000000 30551.000000 87263.000000 31699.000000 82730.000000 31958.000000 81870.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 33468.000000 77451.000000 34520.000000 74770.000000 35463.000000 72332.000000 35465.000000 72141.000000 36061.000000 70888.000000 37110.000000 68797.000000 38270.000000 66101.000000 38576.000000 65641.000000 41292.000000 61977.000000 45161.000000 56958.000000 47540.000000 53836.000000 48187.000000 52729.000000 48382.000000 52539.000000 53773.000000 47130.000000 53916.000000 46874.000000 54830.000000 46031.000000 55432.000000 45653.000000 61711.000000 41452.000000 68982.000000 36666.000000 72323.000000 34817.000000 74194.000000 33995.000000 75393.000000 33469.000000 79816.000000 31801.000000 84290.000000 29866.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 100775.000000 25998.000000 105922.000000 25287.000000 111888.000000 24600.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 138741.000000 22433.000000 144769.000000 22160.000000 154408.000000 21854.000000 173888.000000 21331.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 143318.000000 22223.000000 140978.000000 22322.000000 132447.000000 22761.000000 125192.000000 23261.000000 124753.000000 23297.000000 121227.000000 23574.000000 120402.000000 23662.000000 107000.000000 25167.000000 105112.000000 25392.000000 98926.000000 26262.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 90584.000000 27952.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 71747.000000 34989.000000 70278.000000 35792.000000 69008.000000 36546.000000 66201.000000 38229.000000 64347.000000 39306.000000 63718.000000 39741.000000 61940.000000 40998.000000 61272.000000 41515.000000 59331.000000 42873.000000 57553.000000 44130.000000 54881.000000 46432.000000 51644.000000 48748.000000 51468.000000 48849.000000 47285.000000 54168.000000 44297.000000 57859.000000 42891.000000 59666.000000 42212.000000 60591.000000 41427.000000 62026.000000 39410.000000 65263.000000 38614.000000 66378.000000 36404.000000 70194.000000 34938.000000 74120.000000 34428.000000 75014.000000 32554.000000 80501.000000 32348.000000 81129.000000 30188.000000 89082.000000 30044.000000 89732.000000 29254.000000 93365.000000 29246.000000 93405.000000 28980.000000 94066.000000 27873.000000 100555.000000 27996.000000 99053.000000 26792.000000 106887.000000 26246.000000 111624.000000 25065.000000 120809.000000 24568.000000 124484.000000 24407.000000 125974.000000 23799.000000 134533.000000 23589.000000 137050.000000 22580.000000 157076.000000 22435.000000 163558.000000 22393.000000 165137.000000 22199.000000 177946.000000 22230.000000 174383.000000 22242.000000 173200.000000 22442.000000 163042.000000 22687.000000 152897.000000 22979.000000 146179.000000 24019.000000 133584.000000 24341.000000 130173.000000 27226.000000 105863.000000 28719.000000 95532.000000 28540.000000 96019.000000 28910.000000 94201.000000 29922.000000 89743.000000 31146.000000 84556.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34532.000000 74124.000000 35321.000000 72426.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 42733.000000 59830.000000 43325.000000 58833.000000 44810.000000 56837.000000 46470.000000 54861.000000 48746.000000 52059.000000 50190.000000 50311.000000 51630.000000 48824.000000 53593.000000 46991.000000 57963.000000 44006.000000 61640.000000 41306.000000 66739.000000 37973.000000 69892.000000 36289.000000 73862.000000 34294.000000 78262.000000 32454.000000 80351.000000 31633.000000 85169.000000 29794.000000 87780.000000 28759.000000 88316.000000 28584.000000 102716.000000 25594.000000 105379.000000 25247.000000 108181.000000 24930.000000 110159.000000 24714.000000 120996.000000 23608.000000 127110.000000 23169.000000 133999.000000 22668.000000 148485.000000 22030.000000 154241.000000 21849.000000 164112.000000 21697.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 165022.000000 21380.000000 155632.000000 21714.000000 146658.000000 22062.000000 141390.000000 22285.000000 137058.000000 22606.000000 121175.000000 23606.000000 109259.000000 24810.000000 106382.000000 25135.000000 104494.000000 25360.000000 102645.000000 25624.000000 101528.000000 25714.000000 100220.000000 25942.000000 97348.000000 26473.000000 94088.000000 27289.000000 87814.000000 28774.000000 85700.000000 29477.000000 84586.000000 29903.000000 81256.000000 31282.000000 78437.000000 32346.000000 74011.000000 34086.000000 71610.000000 35111.000000 70141.000000 35914.000000 69008.000000 36546.000000 66385.000000 38049.000000 64540.000000 39132.000000 63034.000000 40118.000000 60577.000000 42006.000000 60931.000000 41646.000000 55962.000000 45373.000000 54649.000000 46258.000000 54022.000000 46878.000000 50188.000000 50636.000000 49359.000000 51566.000000 47477.000000 54069.000000 44740.000000 57451.000000 43257.000000 59212.000000 43849.000000 58215.000000 39485.000000 64526.000000 37837.000000 66813.000000 37794.000000 66920.000000 34131.000000 75190.000000 33674.000000 76582.000000 31408.000000 83502.000000 31230.000000 84205.000000 31341.000000 83630.000000 30035.000000 88938.000000 29876.000000 89672.000000 29500.000000 91520.000000 28932.000000 94679.000000 27752.000000 101571.000000 27753.000000 101235.000000 27345.000000 104146.000000 27004.000000 106832.000000 26400.000000 111575.000000 25385.000000 119104.000000 24470.000000 125898.000000 23799.000000 134533.000000 23431.000000 139763.000000 22679.000000 153124.000000 22589.000000 156028.000000 22356.000000 165632.000000 22307.000000 170201.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 24824.000000 125702.000000 25302.000000 121670.000000 26732.000000 108414.000000 27103.000000 105815.000000 27733.000000 101859.000000 27878.000000 100166.000000 27994.000000 98987.000000 29054.000000 93551.000000 30624.000000 87205.000000 31149.000000 85038.000000 31182.000000 84364.000000 31631.000000 82781.000000 31890.000000 81921.000000 32057.000000 81378.000000 33588.000000 76835.000000 33989.000000 75769.000000 34532.000000 74124.000000 34644.000000 73874.000000 35004.000000 73040.000000 35600.000000 71787.000000 36173.000000 70638.000000 36856.000000 69047.000000 38270.000000 66101.000000 38576.000000 65641.000000 40709.000000 62875.000000 43939.000000 58006.000000 45854.000000 55448.000000 48187.000000 52729.000000 51846.000000 48949.000000 52978.000000 47900.000000 57878.000000 43726.000000 58507.000000 43291.000000 61695.000000 41205.000000 65839.000000 38756.000000 67809.000000 37442.000000 72946.000000 34463.000000 72474.000000 34649.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 82221.000000 30751.000000 86153.000000 29418.000000 86943.000000 29013.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 111085.000000 24707.000000 119346.000000 23801.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 134100.000000 22687.000000 139602.000000 22353.000000 148485.000000 22030.000000 160021.000000 21549.000000 168458.000000 21355.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 150020.000000 22003.000000 145812.000000 22182.000000 138144.000000 22585.000000 123755.000000 23492.000000 106993.000000 25165.000000 103263.000000 25656.000000 100305.000000 26111.000000 98935.000000 26330.000000 95553.000000 26801.000000 93980.000000 27097.000000 90720.000000 27913.000000 90584.000000 27952.000000 87814.000000 28774.000000 86100.000000 29341.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 76246.000000 33029.000000 75519.000000 33369.000000 71596.000000 35157.000000 70326.000000 35911.000000 63833.000000 40213.000000 58539.000000 43278.000000 58945.000000 42910.000000 58277.000000 43427.000000 56403.000000 44910.000000 54951.000000 46219.000000 53654.000000 47255.000000 51685.000000 49143.000000 49785.000000 50949.000000 48805.000000 52041.000000 46666.000000 54495.000000 46382.000000 54676.000000 46003.000000 55169.000000 44206.000000 57493.000000 41709.000000 61301.000000 41477.000000 61618.000000 40885.000000 62615.000000 39400.000000 64611.000000 38791.000000 65397.000000 37085.000000 68539.000000 36404.000000 70194.000000 33159.000000 78214.000000 32869.000000 79063.000000 32412.000000 80455.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 27752.000000 101571.000000 27345.000000 104146.000000 26974.000000 106745.000000 25934.000000 114008.000000 25438.000000 117895.000000 24869.000000 121430.000000 24291.000000 127413.000000 23719.000000 135428.000000 23411.000000 139720.000000 22729.000000 152387.000000 22694.000000 153451.000000 22435.000000 163558.000000 22356.000000 165815.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22589.000000 156936.000000 22908.000000 148780.000000 22972.000000 146867.000000 23628.000000 138407.000000 24019.000000 133584.000000 24650.000000 127403.000000 27156.000000 106300.000000 28735.000000 95697.000000 28309.000000 97660.000000 29438.000000 91980.000000 29811.000000 90318.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33157.000000 78227.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 37472.000000 68011.000000 38902.000000 65137.000000 39595.000000 64170.000000 41080.000000 62174.000000 43431.000000 58876.000000 45950.000000 55790.000000 47944.000000 53628.000000 50357.000000 50645.000000 51262.000000 49504.000000 52396.000000 48513.000000 56481.000000 44763.000000 57679.000000 43760.000000 59388.000000 42636.000000 60658.000000 41882.000000 64300.000000 39716.000000 68278.000000 37107.000000 69892.000000 36289.000000 75131.000000 33924.000000 77260.000000 32907.000000 78989.000000 32114.000000 79437.000000 31923.000000 82603.000000 30720.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 152941.000000 21882.000000 170471.000000 21331.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 154786.000000 21834.000000 138992.000000 22366.000000 137515.000000 22451.000000 124952.000000 23346.000000 117595.000000 23896.000000 116695.000000 23992.000000 113818.000000 24317.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 90969.000000 28213.000000 89501.000000 28700.000000 86100.000000 29341.000000 84986.000000 29767.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 72323.000000 34817.000000 71596.000000 35157.000000 65834.000000 38542.000000 64250.000000 39544.000000 62372.000000 40882.000000 56952.000000 44662.000000 56631.000000 44702.000000 56326.000000 44953.000000 54452.000000 46436.000000 53689.000000 47126.000000 51468.000000 48849.000000 47568.000000 53238.000000 45292.000000 56040.000000 43192.000000 58707.000000 42368.000000 60021.000000 41583.000000 61456.000000 38095.000000 67367.000000 37465.000000 68624.000000 36347.000000 70560.000000 35588.000000 72067.000000 33343.000000 77872.000000 33053.000000 78721.000000 32587.000000 80066.000000 31341.000000 83630.000000 31197.000000 84280.000000 31032.000000 85044.000000 29076.000000 94534.000000 28776.000000 96121.000000 27539.000000 102732.000000 27970.000000 99191.000000 26647.000000 108650.000000 26066.000000 113254.000000 25820.000000 115277.000000 24654.000000 125142.000000 24238.000000 128261.000000 23525.000000 138077.000000 22690.000000 153540.000000 22453.000000 167300.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 24221.000000 132015.000000 24962.000000 124716.000000 25303.000000 122030.000000 26981.000000 106853.000000 28254.000000 98150.000000 28414.000000 96839.000000 28558.000000 96189.000000 29756.000000 91088.000000 29922.000000 89743.000000 30182.000000 88680.000000 31631.000000 82781.000000 31890.000000 81921.000000 32057.000000 81378.000000 33159.000000 78214.000000 33588.000000 76835.000000 34131.000000 75190.000000 34532.000000 74124.000000 34832.000000 73370.000000 35192.000000 72536.000000 36856.000000 69047.000000 38270.000000 66101.000000 38576.000000 65641.000000 40448.000000 63138.000000 44107.000000 58420.000000 44975.000000 57320.000000 50782.000000 50304.000000 51447.000000 49373.000000 50244.000000 50454.000000 52207.000000 48621.000000 53012.000000 47891.000000 55691.000000 45411.000000 57166.000000 44254.000000 60392.000000 42055.000000 62101.000000 40931.000000 63408.000000 39842.000000 64678.000000 39088.000000 68318.000000 36973.000000 71747.000000 34989.000000 76163.000000 33153.000000 82210.000000 30878.000000 84208.000000 30167.000000 84935.000000 29827.000000 86649.000000 29260.000000 86785.000000 29221.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 112966.000000 24480.000000 119346.000000 23801.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137262.000000 22452.000000 139602.000000 22353.000000 148485.000000 22030.000000 152941.000000 21882.000000 164112.000000 21697.000000 178446.000000 21282.000000 174381.000000 21307.000000 169127.000000 21374.000000 160256.000000 21549.000000 150866.000000 21883.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 120482.000000 23671.000000 112146.000000 24585.000000 107072.000000 25141.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 86593.000000 29185.000000 84586.000000 29903.000000 78437.000000 32346.000000 73536.000000 34245.000000 72809.000000 34585.000000 71610.000000 35111.000000 68871.000000 36668.000000 68379.000000 36981.000000 64103.000000 39611.000000 64881.000000 39039.000000 61404.000000 41422.000000 61597.000000 41248.000000 57987.000000 44022.000000 56855.000000 44503.000000 54981.000000 45986.000000 54024.000000 46859.000000 51716.000000 49008.000000 51774.000000 48888.000000 51176.000000 49572.000000 50636.000000 50168.000000 50217.000000 50464.000000 48219.000000 52941.000000 45615.000000 56313.000000 43638.000000 59123.000000 39922.000000 63810.000000 38483.000000 65993.000000 37837.000000 66813.000000 36067.000000 71133.000000 34131.000000 75190.000000 33131.000000 78227.000000 32220.000000 81076.000000 31408.000000 83502.000000 31230.000000 84205.000000 30068.000000 88863.000000 29924.000000 89513.000000 29530.000000 91289.000000 29522.000000 91329.000000 29246.000000 92721.000000 28066.000000 99613.000000 27910.000000 100158.000000 27876.000000 100179.000000 25620.000000 116800.000000 25011.000000 120051.000000 24869.000000 121430.000000 24287.000000 127502.000000 24291.000000 127413.000000 24242.000000 128172.000000 24052.000000 130732.000000 22876.000000 152781.000000 22690.000000 153540.000000 22443.000000 161331.000000 22394.000000 165900.000000 22345.000000 173084.000000 22199.000000 177946.000000 22231.000000 174213.000000 22242.000000 173200.000000 22426.000000 163840.000000 22544.000000 160319.000000 22859.000000 153155.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 23753.000000 137548.000000 26297.000000 114424.000000 26757.000000 108944.000000 28119.000000 99527.000000 29073.000000 94021.000000 30179.000000 88288.000000 31146.000000 84556.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34532.000000 74124.000000 34644.000000 73874.000000 35004.000000 73040.000000 36856.000000 69047.000000 39159.000000 65030.000000 40232.000000 63216.000000 42756.000000 59810.000000 43135.000000 59317.000000 43979.000000 58156.000000 46166.000000 55240.000000 47448.000000 53628.000000 48378.000000 52478.000000 49642.000000 51205.000000 50917.000000 49900.000000 53569.000000 47356.000000 53229.000000 47632.000000 54643.000000 46295.000000 56327.000000 45112.000000 57349.000000 44207.000000 58301.000000 43564.000000 60751.000000 42105.000000 66927.000000 38004.000000 72323.000000 34817.000000 76246.000000 33029.000000 77445.000000 32503.000000 79864.000000 31512.000000 80631.000000 31225.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 89999.000000 28203.000000 93257.000000 27364.000000 95553.000000 26801.000000 105922.000000 25287.000000 111085.000000 24707.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 137262.000000 22452.000000 139602.000000 22353.000000 148485.000000 22030.000000 148718.000000 22023.000000 170748.000000 21343.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 150866.000000 21883.000000 146658.000000 22062.000000 145181.000000 22147.000000 127149.000000 23197.000000 121121.000000 23619.000000 111966.000000 24504.000000 103377.000000 25450.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 93952.000000 27328.000000 82027.000000 31302.000000 75733.000000 33648.000000 75837.000000 33444.000000 74403.000000 34074.000000 69268.000000 36528.000000 68504.000000 36933.000000 67664.000000 37301.000000 67406.000000 37438.000000 66136.000000 38192.000000 64552.000000 39194.000000 63923.000000 39629.000000 56631.000000 44702.000000 54757.000000 46185.000000 54452.000000 46436.000000 53827.000000 46995.000000 52230.000000 48495.000000 52267.000000 48409.000000 48713.000000 52253.000000 47594.000000 53706.000000 46023.000000 55618.000000 42765.000000 59544.000000 40860.000000 62355.000000 40100.000000 63629.000000 38835.000000 65452.000000 37243.000000 68529.000000 37200.000000 68636.000000 35164.000000 73440.000000 33044.000000 78674.000000 32587.000000 80066.000000 32558.000000 80108.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27972.000000 99178.000000 27970.000000 99191.000000 26382.000000 111268.000000 26250.000000 111912.000000 25910.000000 114799.000000 24608.000000 124579.000000 24470.000000 125898.000000 23898.000000 133913.000000 23539.000000 138537.000000 23115.000000 146527.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23305.000000 143596.000000 24182.000000 132936.000000 25297.000000 122361.000000 27750.000000 101584.000000 27752.000000 101571.000000 28266.000000 98472.000000 28932.000000 94679.000000 29294.000000 92901.000000 31600.000000 82770.000000 32057.000000 81378.000000 33841.000000 76039.000000 34131.000000 75190.000000 34532.000000 74124.000000 34644.000000 73874.000000 35321.000000 72426.000000 35917.000000 71173.000000 36001.000000 70968.000000 36856.000000 69047.000000 38634.000000 66488.000000 40528.000000 63019.000000 42400.000000 60516.000000 44482.000000 57819.000000 47899.000000 53557.000000 49595.000000 51453.000000 50813.000000 49658.000000 53025.000000 47541.000000 53925.000000 46790.000000 57260.000000 44267.000000 57061.000000 44370.000000 59211.000000 42865.000000 58807.000000 42967.000000 61257.000000 41508.000000 61886.000000 41073.000000 66849.000000 37776.000000 68318.000000 36973.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 80823.000000 31323.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 143318.000000 22223.000000 160256.000000 21549.000000 169236.000000 21327.000000 176171.000000 21292.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 161330.000000 21492.000000 158756.000000 21580.000000 140330.000000 22327.000000 134592.000000 22630.000000 124522.000000 23331.000000 121121.000000 23619.000000 117595.000000 23896.000000 108181.000000 24930.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 91471.000000 28023.000000 88180.000000 28623.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 78234.000000 32291.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 72946.000000 34463.000000 71747.000000 34989.000000 70278.000000 35792.000000 69008.000000 36546.000000 63354.000000 40236.000000 61137.000000 41670.000000 58890.000000 43400.000000 55736.000000 45486.000000 53689.000000 47126.000000 49463.000000 51440.000000 47751.000000 53146.000000 46966.000000 53907.000000 45620.000000 55559.000000 45270.000000 56011.000000 45047.000000 56344.000000 43562.000000 58340.000000 43192.000000 58707.000000 38050.000000 66705.000000 37837.000000 66813.000000 37794.000000 66920.000000 34037.000000 75655.000000 31600.000000 82770.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27752.000000 101571.000000 27182.000000 105110.000000 25695.000000 116473.000000 25296.000000 119274.000000 25052.000000 121289.000000 25131.000000 119805.000000 24095.000000 131592.000000 23240.000000 143796.000000 22690.000000 153540.000000 22443.000000 161331.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22676.000000 154577.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 23760.000000 136860.000000 24644.000000 127734.000000 26013.000000 113090.000000 26247.000000 110770.000000 27410.000000 103320.000000 28673.000000 96526.000000 29035.000000 94748.000000 32057.000000 81378.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 35465.000000 72141.000000 38446.000000 66027.000000 38270.000000 66101.000000 38576.000000 65641.000000 39695.000000 64188.000000 42686.000000 60402.000000 48048.000000 53014.000000 49544.000000 51335.000000 50524.000000 50243.000000 51167.000000 49450.000000 52857.000000 47668.000000 53002.000000 47524.000000 53814.000000 46929.000000 56584.000000 45013.000000 59899.000000 42614.000000 67457.000000 37588.000000 65510.000000 38658.000000 68575.000000 36915.000000 72812.000000 34612.000000 73539.000000 34272.000000 79864.000000 31512.000000 80631.000000 31225.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 96138.000000 26840.000000 107803.000000 25060.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 155274.000000 21881.000000 178446.000000 21282.000000 172106.000000 21317.000000 165022.000000 21380.000000 159032.000000 21576.000000 140019.000000 22371.000000 138542.000000 22456.000000 134210.000000 22777.000000 124172.000000 23491.000000 124753.000000 23297.000000 116492.000000 24203.000000 105692.000000 25395.000000 103637.000000 25555.000000 101794.000000 25778.000000 100016.000000 26012.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 92571.000000 27728.000000 89539.000000 28666.000000 85678.000000 29831.000000 80631.000000 31225.000000 79864.000000 31512.000000 77445.000000 32503.000000 73522.000000 34291.000000 72795.000000 34631.000000 70023.000000 36112.000000 69296.000000 36452.000000 68026.000000 37206.000000 63730.000000 39803.000000 61898.000000 41089.000000 59819.000000 42505.000000 58287.000000 43654.000000 55322.000000 46218.000000 53796.000000 47340.000000 52534.000000 48247.000000 51936.000000 48931.000000 48217.000000 53265.000000 45867.000000 55986.000000 46822.000000 54474.000000 45165.000000 56765.000000 44280.000000 57561.000000 42111.000000 60642.000000 39038.000000 65030.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 36024.000000 71240.000000 32999.000000 79040.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 27954.000000 100608.000000 26630.000000 108607.000000 25129.000000 119586.000000 25021.000000 120548.000000 24883.000000 121838.000000 24783.000000 122773.000000 24193.000000 129188.000000 23719.000000 135428.000000 23411.000000 139720.000000 23119.000000 146438.000000 22447.000000 168444.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23305.000000 143596.000000 27292.000000 106565.000000 27632.000000 102885.000000 28321.000000 98642.000000 28427.000000 97231.000000 28910.000000 94201.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34532.000000 74124.000000 35687.000000 71449.000000 37472.000000 68011.000000 38270.000000 66101.000000 38576.000000 65641.000000 39965.000000 63583.000000 43429.000000 59140.000000 43574.000000 58751.000000 46477.000000 54699.000000 49911.000000 50773.000000 49429.000000 51249.000000 49616.000000 51032.000000 53130.000000 47515.000000 53254.000000 47413.000000 53811.000000 46873.000000 54252.000000 46532.000000 54605.000000 46255.000000 58071.000000 43863.000000 59776.000000 42638.000000 66127.000000 38572.000000 67492.000000 37823.000000 67947.000000 37528.000000 71118.000000 35424.000000 75564.000000 33426.000000 78288.000000 32241.000000 82221.000000 30751.000000 82714.000000 30595.000000 87814.000000 28774.000000 87950.000000 28735.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 146718.000000 22085.000000 149794.000000 21973.000000 154241.000000 21849.000000 178446.000000 21282.000000 167892.000000 21370.000000 154786.000000 21834.000000 145812.000000 22182.000000 141390.000000 22285.000000 131326.000000 22898.000000 127456.000000 23163.000000 115387.000000 24220.000000 112740.000000 24437.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 90720.000000 27913.000000 90584.000000 27952.000000 83135.000000 30355.000000 82021.000000 30781.000000 77445.000000 32503.000000 76246.000000 33029.000000 75680.000000 33298.000000 72323.000000 34817.000000 71596.000000 35157.000000 68668.000000 36909.000000 66315.000000 38347.000000 67213.000000 37666.000000 65314.000000 38801.000000 56771.000000 44722.000000 56418.000000 44999.000000 55962.000000 45373.000000 54649.000000 46258.000000 53306.000000 47556.000000 50415.000000 50592.000000 47775.000000 53654.000000 48713.000000 52253.000000 47451.000000 53825.000000 47233.000000 54138.000000 44565.000000 57580.000000 42477.000000 60371.000000 41653.000000 61685.000000 40488.000000 63355.000000 39235.000000 65539.000000 37504.000000 68212.000000 36237.000000 70680.000000 35664.000000 71829.000000 35040.000000 73326.000000 34338.000000 75162.000000 33193.000000 78509.000000 31206.000000 84516.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29500.000000 91520.000000 28789.000000 95385.000000 28924.000000 94499.000000 28922.000000 94512.000000 26944.000000 106528.000000 26006.000000 113462.000000 25536.000000 117007.000000 25296.000000 119274.000000 25029.000000 122213.000000 23199.000000 144211.000000 22979.000000 146179.000000 22687.000000 152897.000000 22467.000000 159692.000000 22311.000000 166176.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22593.000000 155944.000000 22908.000000 148780.000000 22972.000000 146867.000000 23628.000000 138407.000000 24389.000000 130206.000000 24531.000000 128827.000000 25711.000000 116050.000000 25732.000000 114376.000000 26370.000000 110136.000000 27160.000000 105298.000000 27966.000000 99212.000000 28120.000000 97834.000000 29132.000000 93376.000000 31162.000000 84903.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 34532.000000 74124.000000 37100.000000 68797.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 41567.000000 61763.000000 44208.000000 58278.000000 45076.000000 57178.000000 48467.000000 52715.000000 49105.000000 51488.000000 53024.000000 47645.000000 53593.000000 46991.000000 56149.000000 45193.000000 58182.000000 43938.000000 61711.000000 41452.000000 62554.000000 40968.000000 89863.000000 28242.000000 89999.000000 28203.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 104782.000000 25447.000000 105922.000000 25287.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137262.000000 22452.000000 139602.000000 22353.000000 148992.000000 22019.000000 150525.000000 21979.000000 171526.000000 21315.000000 178446.000000 21282.000000 167114.000000 21398.000000 164244.000000 21408.000000 150590.000000 21887.000000 146382.000000 22066.000000 144905.000000 22151.000000 127370.000000 23179.000000 118682.000000 23890.000000 116287.000000 24124.000000 116695.000000 23992.000000 105304.000000 25255.000000 104494.000000 25360.000000 100867.000000 25858.000000 98199.000000 26319.000000 93980.000000 27097.000000 90720.000000 27913.000000 88180.000000 28623.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 75519.000000 33369.000000 74953.000000 33638.000000 71118.000000 35424.000000 71747.000000 34989.000000 70477.000000 35743.000000 66394.000000 38055.000000 61159.000000 41392.000000 61352.000000 41218.000000 59574.000000 42475.000000 58277.000000 43427.000000 56403.000000 44910.000000 54510.000000 46578.000000 53378.000000 47627.000000 52172.000000 48798.000000 49785.000000 50949.000000 47646.000000 53403.000000 46003.000000 55169.000000 45351.000000 56072.000000 39317.000000 64843.000000 37837.000000 66813.000000 34131.000000 75190.000000 33674.000000 76582.000000 32237.000000 81274.000000 31947.000000 82123.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28438.000000 97485.000000 27510.000000 102983.000000 27220.000000 104178.000000 26752.000000 107331.000000 26644.000000 108293.000000 25801.000000 116309.000000 25152.000000 119565.000000 24096.000000 131887.000000 23729.000000 135977.000000 23031.000000 146218.000000 22725.000000 152476.000000 22690.000000 153540.000000 22408.000000 163419.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22585.000000 156171.000000 22900.000000 149007.000000 23105.000000 145352.000000 23502.000000 140168.000000 24684.000000 127676.000000 25780.000000 117837.000000 26121.000000 115151.000000 26294.000000 113859.000000 26728.000000 107442.000000 28148.000000 98540.000000 29389.000000 91921.000000 30730.000000 86559.000000 31958.000000 81870.000000 33198.000000 78048.000000 33889.000000 76133.000000 35004.000000 73040.000000 35600.000000 71787.000000 36283.000000 70196.000000 36856.000000 69047.000000 38383.000000 66488.000000 38576.000000 65641.000000 38902.000000 65137.000000 39595.000000 64170.000000 41080.000000 62174.000000 42199.000000 60721.000000 44106.000000 58146.000000 48014.000000 52686.000000 48508.000000 52094.000000 48243.000000 52313.000000 49072.000000 51383.000000 51392.000000 49201.000000 54499.000000 46582.000000 55708.000000 45494.000000 57780.000000 43916.000000 63461.000000 40102.000000 64731.000000 39348.000000 65360.000000 38982.000000 65882.000000 38653.000000 67496.000000 37835.000000 77401.000000 32590.000000 81879.000000 30797.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 90134.000000 28095.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 110007.000000 24827.000000 119346.000000 23801.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 143002.000000 22215.000000 149794.000000 21973.000000 152941.000000 21882.000000 171286.000000 21381.000000 173801.000000 21305.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 143735.000000 22241.000000 142258.000000 22326.000000 121121.000000 23619.000000 115387.000000 24220.000000 112740.000000 24437.000000 104494.000000 25360.000000 102645.000000 25624.000000 101752.000000 25768.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 93739.000000 27391.000000 88140.000000 28772.000000 86426.000000 29339.000000 83597.000000 30285.000000 82683.000000 30448.000000 80264.000000 31439.000000 76246.000000 33029.000000 71596.000000 35157.000000 65870.000000 38559.000000 63923.000000 39629.000000 62133.000000 40824.000000 55736.000000 45486.000000 54714.000000 46391.000000 53689.000000 47126.000000 53101.000000 47599.000000 52267.000000 48409.000000 51669.000000 49093.000000 43164.000000 58956.000000 42785.000000 59449.000000 42721.000000 59489.000000 42069.000000 60392.000000 40816.000000 62300.000000 39992.000000 63614.000000 37658.000000 67390.000000 37085.000000 68539.000000 35315.000000 72859.000000 33744.000000 76806.000000 33198.000000 78048.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31179.000000 84514.000000 31001.000000 85217.000000 30068.000000 88863.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28162.000000 98877.000000 27507.000000 102829.000000 27505.000000 102842.000000 27213.000000 104609.000000 25996.000000 114028.000000 25375.000000 117638.000000 25291.000000 118187.000000 24291.000000 127413.000000 23719.000000 135428.000000 23411.000000 139720.000000 22914.000000 151040.000000 22854.000000 153629.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23555.000000 139480.000000 25908.000000 115503.000000 25362.000000 117765.000000 26840.000000 107719.000000 28020.000000 100400.000000 28801.000000 96100.000000 28834.000000 95279.000000 29073.000000 94021.000000 29589.000000 91745.000000 29782.000000 90992.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33298.000000 77684.000000 34532.000000 74124.000000 34892.000000 73290.000000 35600.000000 71787.000000 36856.000000 69047.000000 38383.000000 66488.000000 39159.000000 65030.000000 38576.000000 65641.000000 43591.000000 58889.000000 45734.000000 56294.000000 46202.000000 55227.000000 47452.000000 53668.000000 49785.000000 50949.000000 52833.000000 47743.000000 54392.000000 46400.000000 60066.000000 42924.000000 65236.000000 39362.000000 69509.000000 36779.000000 73536.000000 34245.000000 71610.000000 35111.000000 72337.000000 34771.000000 78665.000000 32038.000000 80631.000000 31225.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 146718.000000 22085.000000 149794.000000 21973.000000 158432.000000 21692.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 154266.000000 21745.000000 147720.000000 22027.000000 134001.000000 22805.000000 129400.000000 23081.000000 125435.000000 23394.000000 121227.000000 23574.000000 120402.000000 23662.000000 103263.000000 25656.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 86593.000000 29185.000000 84986.000000 29767.000000 78665.000000 32038.000000 76246.000000 33029.000000 75519.000000 33369.000000 71118.000000 35424.000000 71610.000000 35111.000000 67269.000000 37560.000000 66136.000000 38192.000000 64552.000000 39194.000000 63923.000000 39629.000000 62774.000000 40451.000000 57893.000000 43817.000000 58346.000000 43354.000000 56472.000000 44837.000000 55383.000000 45786.000000 54181.000000 46908.000000 52237.000000 48497.000000 50815.000000 49780.000000 48445.000000 52219.000000 45394.000000 55967.000000 44360.000000 57463.000000 43004.000000 59443.000000 39078.000000 65063.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 34371.000000 74997.000000 34131.000000 75190.000000 33674.000000 76582.000000 31698.000000 82653.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29528.000000 91299.000000 28654.000000 96075.000000 27772.000000 101393.000000 27502.000000 103069.000000 26591.000000 109176.000000 26010.000000 113549.000000 25520.000000 117475.000000 25148.000000 121317.000000 24926.000000 124242.000000 23145.000000 146406.000000 22689.000000 153673.000000 22512.000000 158320.000000 22443.000000 161331.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23564.000000 140320.000000 24019.000000 133584.000000 24341.000000 130173.000000 26373.000000 110348.000000 26247.000000 110770.000000 27275.000000 104206.000000 28097.000000 99001.000000 29170.000000 93138.000000 29314.000000 92488.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34644.000000 73874.000000 34532.000000 74124.000000 34892.000000 73290.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 39307.000000 65054.000000 41074.000000 62396.000000 41677.000000 61498.000000 43549.000000 58995.000000 45119.000000 56635.000000 44585.000000 57000.000000 46281.000000 54896.000000 47211.000000 53746.000000 51828.000000 48887.000000 54395.000000 46456.000000 54830.000000 46031.000000 62089.000000 41457.000000 67258.000000 37663.000000 69468.000000 36498.000000 71596.000000 35157.000000 74194.000000 33995.000000 75393.000000 33469.000000 82024.000000 30863.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 101528.000000 25714.000000 103377.000000 25450.000000 104455.000000 25330.000000 112716.000000 24424.000000 117520.000000 23904.000000 134367.000000 22694.000000 135844.000000 22609.000000 145832.000000 22122.000000 162541.000000 21514.000000 170471.000000 21331.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 163277.000000 21469.000000 158947.000000 21603.000000 136069.000000 22545.000000 134592.000000 22630.000000 128478.000000 23069.000000 124083.000000 23367.000000 121121.000000 23619.000000 109334.000000 24802.000000 105379.000000 25247.000000 104494.000000 25360.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 93739.000000 27391.000000 83027.000000 30524.000000 78288.000000 32241.000000 77490.000000 32560.000000 75564.000000 33426.000000 74910.000000 33749.000000 70278.000000 35792.000000 69008.000000 36546.000000 64552.000000 39194.000000 59408.000000 42774.000000 58776.000000 43153.000000 53862.000000 46969.000000 53689.000000 47126.000000 49897.000000 50848.000000 47900.000000 53116.000000 46015.000000 55653.000000 45628.000000 56160.000000 42721.000000 60277.000000 40009.000000 63928.000000 37837.000000 66813.000000 37794.000000 66920.000000 34131.000000 75190.000000 32702.000000 79606.000000 32220.000000 81076.000000 31408.000000 83502.000000 31230.000000 84205.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28632.000000 96266.000000 26960.000000 106294.000000 26589.000000 108893.000000 26248.000000 111579.000000 25263.000000 119701.000000 25296.000000 119274.000000 25047.000000 120752.000000 24291.000000 127413.000000 23715.000000 135517.000000 23505.000000 138034.000000 22571.000000 157498.000000 22511.000000 160087.000000 22336.000000 169047.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 24199.000000 131552.000000 27440.000000 104386.000000 28194.000000 99655.000000 29058.000000 94257.000000 29600.000000 91064.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34532.000000 74124.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 37472.000000 68011.000000 40228.000000 63350.000000 40820.000000 62353.000000 43588.000000 58625.000000 43967.000000 58132.000000 46792.000000 54326.000000 48251.000000 52863.000000 51758.000000 49330.000000 54412.000000 46939.000000 55501.000000 45985.000000 59326.000000 42946.000000 59552.000000 42746.000000 60654.000000 41868.000000 61283.000000 41433.000000 61607.000000 41220.000000 63640.000000 39965.000000 66849.000000 37776.000000 68318.000000 36973.000000 71272.000000 35325.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 80366.000000 31523.000000 83532.000000 30320.000000 84935.000000 29827.000000 86312.000000 29277.000000 87714.000000 28762.000000 87850.000000 28723.000000 90828.000000 27926.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 119024.000000 23943.000000 119346.000000 23801.000000 119785.000000 23765.000000 127643.000000 23167.000000 131076.000000 22847.000000 148485.000000 22030.000000 154241.000000 21849.000000 176171.000000 21292.000000 172106.000000 21317.000000 167892.000000 21370.000000 145463.000000 22222.000000 141255.000000 22401.000000 138144.000000 22585.000000 117074.000000 24294.000000 116121.000000 24295.000000 109089.000000 24950.000000 104953.000000 25489.000000 101337.000000 25852.000000 99559.000000 26086.000000 98708.000000 26240.000000 96735.000000 26672.000000 97135.000000 26536.000000 86530.000000 29577.000000 85045.000000 29594.000000 82649.000000 30502.000000 77490.000000 32560.000000 75564.000000 33426.000000 74910.000000 33749.000000 71610.000000 35111.000000 70141.000000 35914.000000 68871.000000 36668.000000 65566.000000 38695.000000 66136.000000 38192.000000 62774.000000 40451.000000 59819.000000 42505.000000 56403.000000 44910.000000 54510.000000 46578.000000 53378.000000 47627.000000 51468.000000 48849.000000 47810.000000 53476.000000 46898.000000 54675.000000 47196.000000 54105.000000 41062.000000 62841.000000 40010.000000 64381.000000 40681.000000 62999.000000 39165.000000 64901.000000 38533.000000 65865.000000 37794.000000 66920.000000 35873.000000 71859.000000 32237.000000 81274.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29246.000000 92721.000000 27174.000000 105047.000000 27100.000000 105304.000000 26669.000000 108459.000000 26088.000000 113063.000000 24982.000000 121142.000000 24640.000000 124240.000000 24564.000000 124573.000000 24144.000000 129339.000000 23585.000000 137139.000000 23335.000000 141572.000000 22725.000000 152476.000000 22443.000000 161331.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22343.000000 164671.000000 22585.000000 156171.000000 22900.000000 149007.000000 22964.000000 147094.000000 22972.000000 146867.000000 24019.000000 133584.000000 25816.000000 117692.000000 28287.000000 100396.000000 28683.000000 96006.000000 29086.000000 93305.000000 29389.000000 91921.000000 30000.000000 89561.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 37110.000000 68797.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 43079.000000 59612.000000 44529.000000 57957.000000 48926.000000 51878.000000 49435.000000 51253.000000 51398.000000 49420.000000 53024.000000 48021.000000 58360.000000 43598.000000 58810.000000 43023.000000 63675.000000 39799.000000 64304.000000 39364.000000 70661.000000 35751.000000 77290.000000 32740.000000 76890.000000 32813.000000 78288.000000 32241.000000 87714.000000 28762.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 139739.000000 22431.000000 146078.000000 22103.000000 153380.000000 21911.000000 178446.000000 21282.000000 174381.000000 21307.000000 170167.000000 21360.000000 167892.000000 21370.000000 147150.000000 22013.000000 142942.000000 22192.000000 141465.000000 22277.000000 128478.000000 23069.000000 124776.000000 23321.000000 121121.000000 23619.000000 115462.000000 24212.000000 104761.000000 25481.000000 103876.000000 25594.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 83637.000000 30396.000000 80631.000000 31225.000000 79864.000000 31512.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 74953.000000 33638.000000 71596.000000 35157.000000 67454.000000 37557.000000 64358.000000 39449.000000 66136.000000 38192.000000 61597.000000 41248.000000 57984.000000 43966.000000 54575.000000 46354.000000 54356.000000 46545.000000 53916.000000 46875.000000 53864.000000 46909.000000 53030.000000 47719.000000 51774.000000 48888.000000 49404.000000 51327.000000 48445.000000 52219.000000 46086.000000 55355.000000 41736.000000 61375.000000 41845.000000 61126.000000 39926.000000 63676.000000 38420.000000 66202.000000 37837.000000 66813.000000 36274.000000 70793.000000 34532.000000 74124.000000 32748.000000 79463.000000 31890.000000 81921.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 27849.000000 100905.000000 27487.000000 102829.000000 25148.000000 121166.000000 24861.000000 122506.000000 24448.000000 126012.000000 23876.000000 134027.000000 23017.000000 145758.000000 22725.000000 152476.000000 22690.000000 153540.000000 22199.000000 177946.000000 22231.000000 174213.000000 22383.000000 163410.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22908.000000 148780.000000 23814.000000 136204.000000 24198.000000 132069.000000 25971.000000 116535.000000 26815.000000 107611.000000 26247.000000 110770.000000 27587.000000 102620.000000 28584.000000 96418.000000 28199.000000 98286.000000 28954.000000 94782.000000 29098.000000 94132.000000 30884.000000 86142.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 33468.000000 77451.000000 33889.000000 76133.000000 34249.000000 75299.000000 34892.000000 73290.000000 36856.000000 69047.000000 37472.000000 68011.000000 39922.000000 63810.000000 40228.000000 63350.000000 40884.000000 62313.000000 44700.000000 57438.000000 45396.000000 56532.000000 50016.000000 50220.000000 52231.000000 48159.000000 52536.000000 47908.000000 53925.000000 46790.000000 56340.000000 44994.000000 56932.000000 44393.000000 56410.000000 44722.000000 58219.000000 43469.000000 69348.000000 36576.000000 68278.000000 37107.000000 68844.000000 36838.000000 69571.000000 36498.000000 74315.000000 34310.000000 78574.000000 32424.000000 82982.000000 30598.000000 86466.000000 29190.000000 84290.000000 29866.000000 85511.000000 29455.000000 86477.000000 29152.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 110763.000000 24849.000000 113791.000000 24392.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 139602.000000 22353.000000 144769.000000 22160.000000 158423.000000 21668.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 150866.000000 21883.000000 146658.000000 22062.000000 145181.000000 22147.000000 130947.000000 22993.000000 130508.000000 23029.000000 120402.000000 23662.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 100243.000000 26102.000000 93980.000000 27097.000000 88316.000000 28584.000000 88180.000000 28623.000000 85511.000000 29455.000000 84290.000000 29866.000000 83797.000000 30022.000000 82683.000000 30448.000000 79864.000000 31512.000000 77445.000000 32503.000000 75519.000000 33369.000000 71118.000000 35424.000000 69649.000000 36227.000000 68379.000000 36981.000000 66394.000000 38055.000000 60723.000000 41653.000000 58084.000000 43601.000000 56210.000000 45084.000000 54951.000000 46219.000000 53383.000000 47727.000000 52267.000000 48409.000000 51669.000000 49093.000000 46268.000000 55351.000000 45390.000000 56181.000000 44615.000000 57261.000000 44570.000000 57310.000000 43085.000000 59306.000000 41647.000000 61602.000000 41181.000000 62209.000000 40396.000000 63644.000000 38925.000000 65888.000000 38352.000000 67037.000000 35724.000000 72336.000000 35875.000000 71717.000000 35034.000000 73912.000000 31146.000000 84556.000000 29778.000000 90393.000000 29132.000000 93603.000000 27972.000000 99178.000000 27970.000000 99191.000000 26618.000000 108171.000000 26277.000000 110857.000000 26023.000000 112969.000000 25412.000000 117835.000000 25145.000000 120774.000000 24923.000000 123699.000000 23314.000000 143396.000000 22999.000000 146222.000000 22902.000000 148284.000000 22589.000000 156028.000000 22332.000000 166890.000000 22321.000000 167903.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 23305.000000 143596.000000 23933.000000 135516.000000 24906.000000 123865.000000 25934.000000 114008.000000 26239.000000 111247.000000 27078.000000 105495.000000 27215.000000 104596.000000 27870.000000 100644.000000 28232.000000 98866.000000 28808.000000 95667.000000 30179.000000 88288.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34131.000000 75190.000000 34532.000000 74124.000000 35321.000000 72426.000000 36490.000000 70024.000000 36856.000000 69047.000000 37778.000000 67551.000000 38706.000000 65944.000000 40400.000000 63316.000000 42545.000000 60170.000000 44649.000000 56960.000000 47211.000000 53746.000000 48521.000000 52222.000000 50405.000000 50515.000000 49785.000000 50949.000000 53057.000000 47978.000000 56130.000000 45315.000000 55619.000000 45577.000000 60554.000000 42254.000000 68964.000000 36820.000000 69447.000000 36284.000000 72946.000000 34463.000000 71747.000000 34989.000000 72474.000000 34649.000000 74893.000000 33658.000000 76890.000000 32813.000000 80823.000000 31323.000000 86153.000000 29418.000000 86646.000000 29262.000000 87916.000000 28720.000000 90720.000000 27913.000000 93257.000000 27364.000000 96138.000000 26840.000000 98596.000000 26317.000000 100445.000000 26053.000000 100775.000000 25998.000000 111888.000000 24600.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 132787.000000 22724.000000 137262.000000 22452.000000 139602.000000 22353.000000 144769.000000 22160.000000 154241.000000 21849.000000 173801.000000 21305.000000 178446.000000 21282.000000 167892.000000 21370.000000 165022.000000 21380.000000 150590.000000 21887.000000 146382.000000 22066.000000 144905.000000 22151.000000 127546.000000 23171.000000 124145.000000 23459.000000 118276.000000 24004.000000 110705.000000 24699.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 98274.000000 26311.000000 98199.000000 26319.000000 97348.000000 26473.000000 91684.000000 27960.000000 91548.000000 27999.000000 88879.000000 28831.000000 81152.000000 31137.000000 81879.000000 30797.000000 79830.000000 31566.000000 76291.000000 33086.000000 75564.000000 33426.000000 74910.000000 33749.000000 71747.000000 34989.000000 70278.000000 35792.000000 66136.000000 38192.000000 64552.000000 39194.000000 63923.000000 39629.000000 63255.000000 40146.000000 59098.000000 43097.000000 56026.000000 45583.000000 52517.000000 48330.000000 53002.000000 47524.000000 49616.000000 51032.000000 49915.000000 50440.000000 50016.000000 50220.000000 48445.000000 52219.000000 42417.000000 60182.000000 42111.000000 60642.000000 42220.000000 60393.000000 37837.000000 66813.000000 35062.000000 73082.000000 34131.000000 75190.000000 32347.000000 80529.000000 31890.000000 81921.000000 31631.000000 82781.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 28924.000000 94499.000000 27345.000000 104146.000000 26760.000000 108485.000000 25634.000000 117102.000000 25023.000000 121968.000000 24756.000000 124907.000000 24510.000000 125467.000000 23938.000000 133482.000000 23630.000000 137774.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22908.000000 148780.000000 23105.000000 145352.000000 23376.000000 140995.000000 23760.000000 136860.000000 24959.000000 123968.000000 25474.000000 118561.000000 26326.000000 110054.000000 27478.000000 102715.000000 27880.000000 100103.000000 29086.000000 93305.000000 29230.000000 92655.000000 29389.000000 91921.000000 30730.000000 86559.000000 32220.000000 81076.000000 32412.000000 80455.000000 34644.000000 73874.000000 34532.000000 74124.000000 34892.000000 73290.000000 36173.000000 70638.000000 37110.000000 68797.000000 38446.000000 66027.000000 38270.000000 66101.000000 38576.000000 65641.000000 40448.000000 63138.000000 43894.000000 58625.000000 44255.000000 57990.000000 43312.000000 58941.000000 45486.000000 56171.000000 46796.000000 54647.000000 50922.000000 49795.000000 52857.000000 47668.000000 53458.000000 47150.000000 53811.000000 46873.000000 59927.000000 42712.000000 62250.000000 40938.000000 67373.000000 37934.000000 69404.000000 36751.000000 68167.000000 37141.000000 70038.000000 36319.000000 78772.000000 32192.000000 85010.000000 29783.000000 83135.000000 30355.000000 87329.000000 28966.000000 89998.000000 28134.000000 90134.000000 28095.000000 93580.000000 27233.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 132787.000000 22724.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 171511.000000 21317.000000 173801.000000 21305.000000 178446.000000 21282.000000 169236.000000 21327.000000 165022.000000 21380.000000 151916.000000 21844.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 117281.000000 24112.000000 120402.000000 23662.000000 113358.000000 24469.000000 105112.000000 25392.000000 96861.000000 26573.000000 93980.000000 27097.000000 87095.000000 28995.000000 86959.000000 29034.000000 84290.000000 29866.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 77445.000000 32503.000000 75519.000000 33369.000000 74953.000000 33638.000000 70141.000000 35914.000000 68871.000000 36668.000000 66257.000000 38177.000000 65572.000000 38664.000000 58945.000000 42910.000000 58277.000000 43427.000000 56403.000000 44910.000000 54452.000000 46436.000000 53689.000000 47126.000000 51501.000000 48954.000000 47609.000000 53167.000000 45812.000000 55491.000000 39747.000000 64723.000000 38939.000000 65353.000000 37687.000000 67653.000000 36404.000000 70194.000000 34483.000000 75133.000000 34131.000000 75190.000000 33674.000000 76582.000000 31947.000000 82123.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 29300.000000 92871.000000 28932.000000 94679.000000 27482.000000 103247.000000 27345.000000 104146.000000 26564.000000 109743.000000 25732.000000 115278.000000 25536.000000 117007.000000 25394.000000 118386.000000 24768.000000 123931.000000 24301.000000 127962.000000 23539.000000 138537.000000 23299.000000 142889.000000 23084.000000 147502.000000 22399.000000 167334.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 23169.000000 144833.000000 23950.000000 135514.000000 24190.000000 133247.000000 26081.000000 112115.000000 26247.000000 110770.000000 27516.000000 102668.000000 27808.000000 100901.000000 28454.000000 97691.000000 29867.000000 90615.000000 31044.000000 85863.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34532.000000 74124.000000 34644.000000 73874.000000 34832.000000 73370.000000 36260.000000 70300.000000 36856.000000 69047.000000 38270.000000 66101.000000 38576.000000 65641.000000 41450.000000 61587.000000 44137.000000 57766.000000 45959.000000 55436.000000 48591.000000 52419.000000 49785.000000 50949.000000 50917.000000 49900.000000 54830.000000 46031.000000 58056.000000 43832.000000 62519.000000 40974.000000 61215.000000 41726.000000 68167.000000 37141.000000 75393.000000 33469.000000 78781.000000 32085.000000 79055.000000 31954.000000 81958.000000 30947.000000 86604.000000 29416.000000 87867.000000 28851.000000 88003.000000 28812.000000 90720.000000 27913.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137363.000000 22471.000000 139703.000000 22372.000000 144769.000000 22160.000000 150525.000000 21979.000000 168458.000000 21355.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 142942.000000 22192.000000 136655.000000 22581.000000 128115.000000 23082.000000 122314.000000 23568.000000 124753.000000 23297.000000 119094.000000 23890.000000 104494.000000 25360.000000 102645.000000 25624.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 94088.000000 27289.000000 91182.000000 28150.000000 80631.000000 31225.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 76152.000000 33112.000000 72523.000000 34857.000000 71610.000000 35111.000000 67841.000000 37209.000000 66571.000000 37963.000000 66708.000000 37841.000000 66385.000000 38049.000000 65756.000000 38484.000000 63730.000000 39803.000000 61705.000000 41263.000000 58810.000000 43023.000000 56936.000000 44506.000000 54981.000000 45986.000000 53101.000000 47599.000000 52267.000000 48409.000000 51669.000000 49093.000000 44163.000000 58185.000000 40817.000000 62928.000000 40384.000000 63640.000000 37902.000000 67954.000000 36733.000000 69698.000000 35543.000000 72462.000000 34644.000000 73874.000000 33841.000000 76039.000000 33384.000000 77431.000000 31408.000000 83502.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29224.000000 92912.000000 28554.000000 96481.000000 27994.000000 98987.000000 27992.000000 99000.000000 26632.000000 108457.000000 26291.000000 111143.000000 25546.000000 117535.000000 24510.000000 125467.000000 23949.000000 133534.000000 23637.000000 137915.000000 22844.000000 152116.000000 22604.000000 159060.000000 22490.000000 163698.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22348.000000 165356.000000 22681.000000 155262.000000 22972.000000 146867.000000 23369.000000 141683.000000 24340.000000 130690.000000 25171.000000 123334.000000 26807.000000 108088.000000 27926.000000 100255.000000 28427.000000 96714.000000 28435.000000 96674.000000 28570.000000 95788.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34131.000000 75190.000000 34532.000000 74124.000000 35004.000000 73040.000000 35600.000000 71787.000000 36512.000000 70089.000000 39626.000000 64453.000000 39769.000000 64197.000000 39002.000000 65224.000000 41769.000000 61085.000000 43385.000000 58975.000000 44956.000000 56663.000000 46188.000000 54941.000000 47211.000000 53746.000000 48521.000000 52222.000000 51061.000000 49478.000000 53555.000000 47116.000000 54318.000000 46467.000000 58297.000000 43636.000000 58405.000000 43522.000000 68167.000000 37141.000000 71596.000000 35157.000000 74194.000000 33995.000000 75393.000000 33469.000000 81578.000000 30945.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 93323.000000 27346.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105304.000000 25255.000000 109259.000000 24810.000000 117595.000000 23896.000000 121560.000000 23583.000000 130636.000000 22892.000000 132113.000000 22807.000000 150274.000000 21879.000000 156564.000000 21661.000000 161330.000000 21492.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 167892.000000 21370.000000 150866.000000 21883.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 124414.000000 23598.000000 113861.000000 24416.000000 116770.000000 23984.000000 105304.000000 25255.000000 104494.000000 25360.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 94196.000000 27302.000000 94060.000000 27341.000000 86312.000000 29277.000000 85045.000000 29594.000000 80357.000000 31356.000000 79864.000000 31512.000000 77445.000000 32503.000000 76152.000000 33112.000000 72317.000000 34898.000000 71118.000000 35424.000000 69649.000000 36227.000000 70278.000000 35792.000000 69008.000000 36546.000000 66136.000000 38192.000000 58032.000000 44074.000000 56853.000000 45039.000000 55191.000000 46472.000000 55336.000000 46085.000000 54532.000000 46844.000000 50124.000000 50702.000000 50815.000000 49780.000000 50217.000000 50464.000000 46914.000000 54447.000000 43897.000000 58523.000000 42436.000000 60590.000000 39429.000000 64690.000000 38996.000000 65402.000000 37837.000000 66813.000000 36188.000000 70841.000000 35851.000000 71384.000000 34131.000000 75190.000000 32702.000000 79606.000000 32510.000000 80227.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 28924.000000 94499.000000 28554.000000 96481.000000 27102.000000 104977.000000 26657.000000 107773.000000 25354.000000 118325.000000 24519.000000 125763.000000 24452.000000 125923.000000 23719.000000 135428.000000 23509.000000 137945.000000 22910.000000 151129.000000 22394.000000 165900.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 24209.000000 132238.000000 24934.000000 125334.000000 27237.000000 104405.000000 27892.000000 100453.000000 30358.000000 87801.000000 31600.000000 82770.000000 32057.000000 81378.000000 33298.000000 77684.000000 33588.000000 76835.000000 34532.000000 74124.000000 34644.000000 73874.000000 36061.000000 70888.000000 37110.000000 68797.000000 38270.000000 66101.000000 38576.000000 65641.000000 41080.000000 62174.000000 43648.000000 59011.000000 47413.000000 54068.000000 49528.000000 51200.000000 52052.000000 48465.000000 52966.000000 47576.000000 51468.000000 48849.000000 51641.000000 48692.000000 57710.000000 44115.000000 59417.000000 42602.000000 61518.000000 41137.000000 65976.000000 38297.000000 69299.000000 36417.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 81934.000000 30895.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 100052.000000 26265.000000 104447.000000 25450.000000 117520.000000 23904.000000 118034.000000 23860.000000 130148.000000 23017.000000 135844.000000 22609.000000 150049.000000 21943.000000 156339.000000 21725.000000 164244.000000 21408.000000 168458.000000 21355.000000 173801.000000 21305.000000 176171.000000 21292.000000 172106.000000 21317.000000 167892.000000 21370.000000 154786.000000 21834.000000 142942.000000 22192.000000 141390.000000 22285.000000 131378.000000 22866.000000 121227.000000 23574.000000 120402.000000 23662.000000 114436.000000 24349.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 86100.000000 29341.000000 83797.000000 30022.000000 82683.000000 30448.000000 78234.000000 32291.000000 77445.000000 32503.000000 71575.000000 35361.000000 71005.000000 35452.000000 70278.000000 35792.000000 66708.000000 37841.000000 66385.000000 38049.000000 63504.000000 40003.000000 63923.000000 39629.000000 61597.000000 41248.000000 59949.000000 42430.000000 56979.000000 44401.000000 54981.000000 45986.000000 54504.000000 46402.000000 53916.000000 46875.000000 53434.000000 47351.000000 49311.000000 51569.000000 48713.000000 52253.000000 46035.000000 55515.000000 46138.000000 55267.000000 44290.000000 57685.000000 43382.000000 58595.000000 41828.000000 60892.000000 41236.000000 61889.000000 39370.000000 64701.000000 38586.000000 66129.000000 36398.000000 70459.000000 35960.000000 71581.000000 35537.000000 72784.000000 32707.000000 79695.000000 32501.000000 80323.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29080.000000 93335.000000 29072.000000 93375.000000 27892.000000 100267.000000 26917.000000 106250.000000 26724.000000 107613.000000 26492.000000 108854.000000 25021.000000 120548.000000 24873.000000 121341.000000 24291.000000 127413.000000 23719.000000 135428.000000 23509.000000 137945.000000 22593.000000 156793.000000 22280.000000 169103.000000 22269.000000 170116.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 24019.000000 133584.000000 25393.000000 120104.000000 25722.000000 115786.000000 26063.000000 113100.000000 27879.000000 101031.000000 28640.000000 96427.000000 27972.000000 99178.000000 28334.000000 97400.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 35154.000000 72892.000000 34131.000000 75190.000000 34832.000000 73370.000000 36001.000000 70968.000000 36856.000000 69047.000000 39576.000000 64253.000000 40228.000000 63350.000000 43257.000000 59212.000000 46539.000000 54921.000000 49660.000000 50896.000000 50190.000000 50311.000000 51630.000000 48824.000000 53593.000000 46991.000000 56922.000000 44607.000000 58102.000000 43902.000000 60520.000000 42193.000000 71118.000000 35424.000000 72317.000000 34898.000000 78288.000000 32241.000000 82221.000000 30751.000000 86312.000000 29277.000000 87744.000000 28835.000000 89117.000000 28406.000000 105922.000000 25287.000000 112966.000000 24480.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 138741.000000 22433.000000 149794.000000 21973.000000 157117.000000 21697.000000 167557.000000 21415.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 159478.000000 21577.000000 154813.000000 21746.000000 142942.000000 22192.000000 141390.000000 22285.000000 128455.000000 23045.000000 124753.000000 23297.000000 123928.000000 23385.000000 104614.000000 25515.000000 105112.000000 25392.000000 103263.000000 25656.000000 101198.000000 25967.000000 100243.000000 26102.000000 93980.000000 27097.000000 90828.000000 27926.000000 90692.000000 27965.000000 88023.000000 28797.000000 85045.000000 29594.000000 82649.000000 30502.000000 79830.000000 31566.000000 76291.000000 33086.000000 75564.000000 33426.000000 74910.000000 33749.000000 72150.000000 35235.000000 70278.000000 35792.000000 69008.000000 36546.000000 64358.000000 39449.000000 62145.000000 40886.000000 59976.000000 42505.000000 58277.000000 43427.000000 56403.000000 44910.000000 55110.000000 46035.000000 54510.000000 46578.000000 53378.000000 47627.000000 52235.000000 48850.000000 46332.000000 55194.000000 46151.000000 55422.000000 41100.000000 62077.000000 39234.000000 64889.000000 38533.000000 65865.000000 37327.000000 68231.000000 35763.000000 72101.000000 32412.000000 80455.000000 32220.000000 81076.000000 31408.000000 83502.000000 31341.000000 83630.000000 29741.000000 90558.000000 29876.000000 89672.000000 29230.000000 92882.000000 28323.000000 97716.000000 28170.000000 98399.000000 27274.000000 104336.000000 27102.000000 104977.000000 26096.000000 111702.000000 24291.000000 127413.000000 23719.000000 135428.000000 23411.000000 139720.000000 22621.000000 156551.000000 22210.000000 172958.000000 22157.000000 179665.000000 22346.000000 169694.000000 22426.000000 163840.000000 22503.000000 158742.000000 22971.000000 146406.000000 22979.000000 146179.000000 23635.000000 137719.000000 24019.000000 133584.000000 25136.000000 123015.000000 25921.000000 112934.000000 27664.000000 101972.000000 28026.000000 99471.000000 29212.000000 93245.000000 29389.000000 91921.000000 30730.000000 86559.000000 31600.000000 82770.000000 32057.000000 81378.000000 34371.000000 74997.000000 34644.000000 73874.000000 34532.000000 74124.000000 34892.000000 73290.000000 36283.000000 70196.000000 36856.000000 69047.000000 38997.000000 65571.000000 39276.000000 64852.000000 40458.000000 63030.000000 40970.000000 62224.000000 42455.000000 60228.000000 43574.000000 58775.000000 47455.000000 54185.000000 47740.000000 53676.000000 49216.000000 51550.000000 49337.000000 51164.000000 52365.000000 48322.000000 53991.000000 46923.000000 60107.000000 42361.000000 61138.000000 41564.000000 61740.000000 41186.000000 64678.000000 39088.000000 66147.000000 38285.000000 68318.000000 36973.000000 69517.000000 36447.000000 78718.000000 32384.000000 79137.000000 31852.000000 83070.000000 30362.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 93257.000000 27364.000000 96204.000000 26822.000000 102092.000000 25838.000000 112713.000000 24612.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 149794.000000 21973.000000 154241.000000 21849.000000 172746.000000 21396.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 165022.000000 21380.000000 159855.000000 21573.000000 142942.000000 22192.000000 141465.000000 22277.000000 133870.000000 22814.000000 128069.000000 23300.000000 118983.000000 24065.000000 120402.000000 23662.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 96861.000000 26573.000000 93980.000000 27097.000000 88981.000000 28445.000000 84724.000000 29799.000000 85045.000000 29594.000000 82649.000000 30502.000000 79830.000000 31566.000000 77401.000000 32590.000000 75475.000000 33456.000000 72658.000000 34867.000000 71388.000000 35621.000000 60219.000000 42604.000000 58656.000000 43475.000000 57757.000000 44119.000000 58288.000000 43650.000000 56637.000000 44773.000000 54622.000000 46321.000000 53593.000000 46991.000000 50163.000000 50460.000000 47012.000000 53975.000000 47521.000000 53350.000000 46074.000000 55222.000000 45565.000000 55847.000000 43743.000000 58398.000000 43520.000000 58731.000000 40085.000000 63720.000000 39300.000000 65155.000000 38329.000000 67141.000000 37756.000000 68290.000000 33685.000000 77727.000000 30551.000000 87263.000000 29389.000000 91921.000000 29245.000000 92571.000000 29086.000000 93305.000000 29072.000000 93375.000000 28010.000000 99340.000000 27351.000000 102938.000000 25862.000000 112617.000000 25605.000000 114779.000000 24403.000000 126063.000000 24407.000000 125974.000000 23799.000000 134533.000000 23241.000000 143258.000000 22716.000000 152898.000000 22589.000000 156028.000000 22264.000000 169074.000000 22210.000000 172958.000000 22179.000000 176521.000000 22347.000000 166796.000000 22544.000000 160319.000000 22923.000000 151242.000000 24153.000000 131520.000000 24724.000000 125908.000000 25146.000000 119298.000000 25541.000000 115846.000000 26322.000000 109941.000000 28012.000000 99184.000000 28112.000000 97874.000000 28120.000000 97834.000000 28264.000000 97184.000000 29841.000000 90295.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 34131.000000 75190.000000 34532.000000 74124.000000 34892.000000 73290.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 37950.000000 67204.000000 38576.000000 65641.000000 40270.000000 63366.000000 42427.000000 60321.000000 42777.000000 59869.000000 50122.000000 51176.000000 51689.000000 49443.000000 51207.000000 49919.000000 51834.000000 49299.000000 53961.000000 46958.000000 54761.000000 46244.000000 54318.000000 46467.000000 54809.000000 46095.000000 57166.000000 44254.000000 58875.000000 43130.000000 64481.000000 39379.000000 64678.000000 39088.000000 67978.000000 37087.000000 69447.000000 36284.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 80823.000000 31323.000000 84535.000000 29963.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 95553.000000 26801.000000 98926.000000 26262.000000 100775.000000 25998.000000 112966.000000 24480.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 131076.000000 22847.000000 146718.000000 22085.000000 149794.000000 21973.000000 154241.000000 21849.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 153736.000000 21873.000000 146658.000000 22062.000000 145181.000000 22147.000000 129044.000000 23201.000000 119809.000000 23712.000000 116695.000000 23992.000000 113818.000000 24317.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 85045.000000 29594.000000 82649.000000 30502.000000 76718.000000 32843.000000 75519.000000 33369.000000 71596.000000 35157.000000 70326.000000 35911.000000 67207.000000 37661.000000 64881.000000 39039.000000 61159.000000 41392.000000 58752.000000 43084.000000 58346.000000 43354.000000 56472.000000 44837.000000 54927.000000 46161.000000 54327.000000 46704.000000 52397.000000 48572.000000 50828.000000 49680.000000 50382.000000 50189.000000 45966.000000 55349.000000 44270.000000 57453.000000 42785.000000 59449.000000 42133.000000 60352.000000 40880.000000 62260.000000 38791.000000 65397.000000 38195.000000 66650.000000 36968.000000 68966.000000 36395.000000 70115.000000 33646.000000 76965.000000 33189.000000 78357.000000 31146.000000 84556.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27787.000000 101550.000000 27288.000000 104729.000000 26767.000000 107571.000000 25920.000000 113742.000000 25536.000000 117007.000000 25121.000000 121080.000000 24756.000000 124907.000000 23445.000000 140893.000000 22964.000000 147094.000000 22672.000000 153812.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 24192.000000 132240.000000 24467.000000 129346.000000 26191.000000 113379.000000 26503.000000 109016.000000 26895.000000 105968.000000 27550.000000 102016.000000 28010.000000 99340.000000 29037.000000 93973.000000 29202.000000 93209.000000 29389.000000 91921.000000 30730.000000 86559.000000 31699.000000 82730.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 33497.000000 77246.000000 33989.000000 75769.000000 34532.000000 74124.000000 35687.000000 71449.000000 36260.000000 70300.000000 36856.000000 69047.000000 39705.000000 64622.000000 45779.000000 55386.000000 46129.000000 54934.000000 46796.000000 54185.000000 48142.000000 52533.000000 49072.000000 51383.000000 53593.000000 46991.000000 56743.000000 44516.000000 66739.000000 37973.000000 68278.000000 37107.000000 72133.000000 35087.000000 72860.000000 34747.000000 79437.000000 31923.000000 83777.000000 30216.000000 80631.000000 31225.000000 84495.000000 29944.000000 86959.000000 29034.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 105112.000000 25392.000000 105922.000000 25287.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 132787.000000 22724.000000 134339.000000 22631.000000 139703.000000 22372.000000 146495.000000 22130.000000 152941.000000 21882.000000 178446.000000 21282.000000 174381.000000 21307.000000 165022.000000 21380.000000 155632.000000 21714.000000 142942.000000 22192.000000 141465.000000 22277.000000 122527.000000 23541.000000 112966.000000 24480.000000 107000.000000 25167.000000 105112.000000 25392.000000 103263.000000 25656.000000 100010.000000 26053.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 87552.000000 28890.000000 84932.000000 29711.000000 82220.000000 30712.000000 79576.000000 31732.000000 76541.000000 33037.000000 76152.000000 33112.000000 71596.000000 35157.000000 70326.000000 35911.000000 67261.000000 37731.000000 62167.000000 40994.000000 60530.000000 41827.000000 60124.000000 42097.000000 58250.000000 43580.000000 56705.000000 44904.000000 54327.000000 46704.000000 53195.000000 47753.000000 50122.000000 50651.000000 46739.000000 54564.000000 45596.000000 55938.000000 44013.000000 57797.000000 42737.000000 59631.000000 42085.000000 60534.000000 40526.000000 62902.000000 38855.000000 65598.000000 37837.000000 66813.000000 36254.000000 70630.000000 35128.000000 72871.000000 34532.000000 74124.000000 34131.000000 75190.000000 33841.000000 76039.000000 33384.000000 77431.000000 31947.000000 82123.000000 31064.000000 85550.000000 30358.000000 87801.000000 30214.000000 88451.000000 29870.000000 89702.000000 29500.000000 91520.000000 29224.000000 92912.000000 27628.000000 102245.000000 27239.000000 104531.000000 26627.000000 107968.000000 25926.000000 112850.000000 25746.000000 114056.000000 24869.000000 121430.000000 24287.000000 127502.000000 24291.000000 127413.000000 23719.000000 135428.000000 23529.000000 137988.000000 22685.000000 153873.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22593.000000 155944.000000 22908.000000 148780.000000 22979.000000 146179.000000 23376.000000 140995.000000 23940.000000 134828.000000 24590.000000 126261.000000 25422.000000 117620.000000 25514.000000 116539.000000 28508.000000 98003.000000 27946.000000 100561.000000 28222.000000 99169.000000 29743.000000 91016.000000 31503.000000 84651.000000 33159.000000 78214.000000 35321.000000 72426.000000 35917.000000 71173.000000 36490.000000 70024.000000 36856.000000 69047.000000 37472.000000 68011.000000 38270.000000 66101.000000 38576.000000 65641.000000 39695.000000 64188.000000 45329.000000 56968.000000 46724.000000 55134.000000 52952.000000 48072.000000 52189.000000 48762.000000 52194.000000 48542.000000 51605.000000 49074.000000 52365.000000 48322.000000 53991.000000 46923.000000 55523.000000 45716.000000 56038.000000 45326.000000 56543.000000 44989.000000 63577.000000 40219.000000 65593.000000 38974.000000 69447.000000 36284.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 77657.000000 32526.000000 84290.000000 29866.000000 88180.000000 28623.000000 88316.000000 28584.000000 89999.000000 28203.000000 93257.000000 27364.000000 96138.000000 26840.000000 96204.000000 26822.000000 98926.000000 26262.000000 104447.000000 25450.000000 108181.000000 24930.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 139703.000000 22372.000000 146078.000000 22103.000000 154200.000000 21809.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 153460.000000 21877.000000 137943.000000 22581.000000 132487.000000 22869.000000 118413.000000 24027.000000 114701.000000 24340.000000 107346.000000 25175.000000 104953.000000 25489.000000 102844.000000 25772.000000 102443.000000 25831.000000 97135.000000 26536.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 78234.000000 32291.000000 77445.000000 32503.000000 75519.000000 33369.000000 71118.000000 35424.000000 71747.000000 34989.000000 70278.000000 35792.000000 66708.000000 37841.000000 66385.000000 38049.000000 65756.000000 38484.000000 63492.000000 39941.000000 63911.000000 39567.000000 58277.000000 43427.000000 56403.000000 44910.000000 56472.000000 44837.000000 51131.000000 49612.000000 50355.000000 50393.000000 48519.000000 52277.000000 45131.000000 56282.000000 42968.000000 59246.000000 41297.000000 61596.000000 40991.000000 62056.000000 39575.000000 64367.000000 38533.000000 65865.000000 37813.000000 67308.000000 37105.000000 68958.000000 36745.000000 69792.000000 36702.000000 69899.000000 34898.000000 73643.000000 34031.000000 76243.000000 33574.000000 77635.000000 32825.000000 79667.000000 31699.000000 82730.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29200.000000 93107.000000 28107.000000 99573.000000 27835.000000 100077.000000 25906.000000 113456.000000 25652.000000 115568.000000 25145.000000 120774.000000 24923.000000 123699.000000 22971.000000 146406.000000 22679.000000 153124.000000 22589.000000 156028.000000 22235.000000 169647.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22585.000000 156171.000000 22979.000000 146179.000000 23376.000000 140995.000000 23760.000000 136860.000000 25366.000000 117638.000000 25384.000000 116450.000000 25976.000000 112432.000000 26681.000000 108032.000000 27823.000000 101214.000000 27550.000000 102016.000000 27558.000000 101976.000000 28120.000000 97834.000000 29230.000000 92655.000000 30469.000000 87832.000000 30901.000000 86176.000000 32042.000000 82043.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 35321.000000 72426.000000 35917.000000 71173.000000 36856.000000 69047.000000 37778.000000 67551.000000 44110.000000 58321.000000 43334.000000 59142.000000 44882.000000 56648.000000 46329.000000 54776.000000 47336.000000 53562.000000 49997.000000 50636.000000 51927.000000 48698.000000 55075.000000 45911.000000 54553.000000 46240.000000 58900.000000 43019.000000 58820.000000 43031.000000 59143.000000 42823.000000 65976.000000 38297.000000 69447.000000 36284.000000 72474.000000 34649.000000 74893.000000 33658.000000 76890.000000 32813.000000 80823.000000 31323.000000 85169.000000 29794.000000 88180.000000 28623.000000 88316.000000 28584.000000 95553.000000 26801.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 125237.000000 23381.000000 132787.000000 22724.000000 134339.000000 22631.000000 139602.000000 22353.000000 148485.000000 22030.000000 154241.000000 21849.000000 178446.000000 21282.000000 169236.000000 21327.000000 165022.000000 21380.000000 150550.000000 21875.000000 140019.000000 22371.000000 138542.000000 22456.000000 122567.000000 23508.000000 120221.000000 23715.000000 108830.000000 24978.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 90692.000000 27965.000000 86312.000000 29277.000000 84724.000000 29799.000000 80357.000000 31356.000000 79864.000000 31512.000000 77445.000000 32503.000000 73522.000000 34291.000000 72323.000000 34817.000000 71596.000000 35157.000000 70326.000000 35911.000000 67712.000000 37420.000000 66789.000000 38041.000000 57843.000000 43788.000000 57175.000000 44305.000000 55997.000000 45278.000000 55815.000000 45383.000000 53225.000000 47734.000000 52029.000000 48823.000000 49785.000000 50949.000000 46666.000000 54495.000000 44157.000000 57933.000000 39527.000000 64553.000000 34898.000000 73643.000000 32587.000000 80066.000000 31992.000000 81911.000000 31230.000000 84205.000000 30857.000000 85867.000000 29086.000000 93305.000000 29072.000000 93375.000000 28772.000000 94962.000000 27212.000000 105059.000000 26662.000000 107742.000000 26760.000000 106854.000000 25475.000000 116802.000000 25261.000000 118425.000000 25152.000000 119261.000000 24020.000000 133970.000000 23785.000000 137331.000000 23087.000000 146052.000000 22680.000000 153585.000000 22467.000000 159692.000000 22259.000000 168389.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22475.000000 159465.000000 22972.000000 146867.000000 23369.000000 141683.000000 24012.000000 134272.000000 25828.000000 113738.000000 25854.000000 113094.000000 27253.000000 104597.000000 28010.000000 99340.000000 28018.000000 99300.000000 29389.000000 91921.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 33159.000000 78214.000000 34071.000000 75944.000000 34584.000000 74628.000000 34814.000000 73688.000000 35321.000000 72426.000000 35894.000000 71277.000000 37950.000000 67204.000000 38270.000000 66101.000000 38576.000000 65641.000000 39695.000000 64188.000000 41017.000000 62627.000000 49158.000000 52634.000000 52313.000000 48616.000000 51455.000000 49274.000000 53597.000000 47409.000000 54434.000000 46655.000000 55252.000000 45930.000000 55523.000000 45716.000000 60933.000000 42057.000000 63674.000000 40362.000000 63728.000000 40262.000000 67672.000000 37783.000000 75844.000000 33522.000000 78068.000000 32367.000000 82799.000000 30558.000000 85045.000000 29594.000000 86477.000000 29152.000000 87850.000000 28723.000000 88316.000000 28584.000000 89999.000000 28203.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 111085.000000 24707.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 143002.000000 22215.000000 149794.000000 21973.000000 173801.000000 21305.000000 169236.000000 21327.000000 165022.000000 21380.000000 150866.000000 21883.000000 142942.000000 22192.000000 137515.000000 22451.000000 124952.000000 23346.000000 120858.000000 23680.000000 117595.000000 23896.000000 109259.000000 24810.000000 106382.000000 25135.000000 102716.000000 25594.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 85124.000000 29744.000000 76246.000000 33029.000000 72323.000000 34817.000000 71596.000000 35157.000000 70278.000000 35792.000000 69008.000000 36546.000000 68379.000000 36981.000000 67904.000000 37317.000000 59756.000000 42604.000000 57882.000000 44087.000000 54981.000000 45986.000000 54504.000000 46402.000000 52563.000000 48247.000000 49311.000000 51569.000000 50217.000000 50464.000000 46982.000000 54228.000000 44308.000000 57812.000000 44085.000000 58145.000000 42503.000000 60439.000000 41614.000000 61841.000000 40822.000000 62808.000000 40037.000000 64243.000000 33065.000000 79891.000000 31341.000000 83630.000000 31197.000000 84280.000000 29870.000000 89702.000000 29500.000000 91520.000000 27465.000000 103682.000000 27199.000000 105094.000000 26325.000000 110746.000000 25030.000000 120647.000000 24888.000000 122026.000000 24790.000000 122914.000000 23789.000000 138094.000000 23234.000000 143623.000000 22844.000000 152116.000000 22301.000000 169491.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22593.000000 155944.000000 22908.000000 148780.000000 22972.000000 146867.000000 23369.000000 141683.000000 24423.000000 130357.000000 25984.000000 116271.000000 26150.000000 114926.000000 27870.000000 100644.000000 28232.000000 98866.000000 29089.000000 93714.000000 30199.000000 88535.000000 31600.000000 82770.000000 32057.000000 81378.000000 33841.000000 76039.000000 34131.000000 75190.000000 34644.000000 73874.000000 35917.000000 71173.000000 37312.000000 68429.000000 36856.000000 69047.000000 38612.000000 66187.000000 38918.000000 65727.000000 41015.000000 62806.000000 47719.000000 53983.000000 48697.000000 52684.000000 49192.000000 51801.000000 49788.000000 51158.000000 50122.000000 50651.000000 51828.000000 48887.000000 53996.000000 46841.000000 54826.000000 46242.000000 56858.000000 44429.000000 60046.000000 42343.000000 66110.000000 38339.000000 68278.000000 37107.000000 70207.000000 36043.000000 72133.000000 35087.000000 72860.000000 34747.000000 77260.000000 32907.000000 79621.000000 31708.000000 79904.000000 31565.000000 83070.000000 30362.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93054.000000 27556.000000 93257.000000 27364.000000 95553.000000 26801.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 113791.000000 24392.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 149794.000000 21973.000000 154241.000000 21849.000000 178446.000000 21282.000000 169236.000000 21327.000000 165022.000000 21380.000000 162108.000000 21464.000000 154266.000000 21745.000000 143735.000000 22241.000000 142258.000000 22326.000000 134210.000000 22777.000000 121227.000000 23574.000000 120402.000000 23662.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 100243.000000 26102.000000 96861.000000 26573.000000 93980.000000 27097.000000 90828.000000 27926.000000 87850.000000 28723.000000 87714.000000 28762.000000 85045.000000 29594.000000 82649.000000 30502.000000 82683.000000 30448.000000 80264.000000 31439.000000 76246.000000 33029.000000 71596.000000 35157.000000 70326.000000 35911.000000 68606.000000 36977.000000 68379.000000 36981.000000 64398.000000 39377.000000 63754.000000 39694.000000 60566.000000 41780.000000 58346.000000 43354.000000 56472.000000 44837.000000 55172.000000 45973.000000 54289.000000 46638.000000 53423.000000 47487.000000 51994.000000 48636.000000 51498.000000 49059.000000 50491.000000 49884.000000 47083.000000 54219.000000 46921.000000 54281.000000 42187.000000 60446.000000 39878.000000 63756.000000 38853.000000 65465.000000 38244.000000 66251.000000 37648.000000 67504.000000 33990.000000 77084.000000 33559.000000 78126.000000 31600.000000 82770.000000 31341.000000 83630.000000 29870.000000 89702.000000 29500.000000 91520.000000 27622.000000 101943.000000 27761.000000 100793.000000 26895.000000 105968.000000 24706.000000 123194.000000 24564.000000 124573.000000 24403.000000 126063.000000 24407.000000 125974.000000 23799.000000 134533.000000 23589.000000 137050.000000 22854.000000 153629.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22900.000000 149007.000000 22972.000000 146867.000000 23369.000000 141683.000000 26157.000000 111324.000000 26500.000000 108377.000000 26635.000000 107491.000000 27396.000000 102887.000000 28120.000000 97834.000000 29132.000000 93376.000000 30551.000000 87263.000000 30730.000000 86559.000000 32057.000000 81378.000000 33159.000000 78214.000000 34071.000000 75944.000000 34131.000000 75190.000000 34892.000000 73290.000000 35004.000000 73040.000000 35577.000000 71891.000000 37080.000000 68892.000000 38446.000000 66027.000000 38270.000000 66101.000000 38576.000000 65641.000000 42569.000000 60134.000000 43081.000000 59328.000000 43679.000000 58644.000000 44585.000000 57000.000000 48521.000000 52222.000000 49457.000000 51309.000000 52755.000000 48150.000000 53467.000000 47418.000000 53593.000000 46991.000000 56109.000000 45190.000000 59192.000000 43150.000000 60039.000000 42476.000000 69378.000000 36749.000000 70007.000000 36314.000000 68278.000000 37107.000000 68844.000000 36838.000000 73010.000000 34875.000000 78989.000000 32114.000000 83495.000000 30290.000000 86981.000000 29149.000000 88316.000000 28584.000000 89999.000000 28203.000000 96138.000000 26840.000000 98203.000000 26529.000000 100052.000000 26265.000000 105899.000000 25298.000000 108776.000000 24973.000000 125215.000000 23285.000000 134592.000000 22630.000000 136069.000000 22545.000000 146975.000000 22036.000000 161306.000000 21510.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 150005.000000 21963.000000 140019.000000 22371.000000 138467.000000 22464.000000 134135.000000 22785.000000 117729.000000 24125.000000 120402.000000 23662.000000 105922.000000 25287.000000 105112.000000 25392.000000 98926.000000 26262.000000 98596.000000 26317.000000 93980.000000 27097.000000 90720.000000 27913.000000 87814.000000 28774.000000 84586.000000 29903.000000 81685.000000 30984.000000 74738.000000 33746.000000 73536.000000 34245.000000 71610.000000 35111.000000 67841.000000 37209.000000 66571.000000 37963.000000 66079.000000 38276.000000 65756.000000 38484.000000 63536.000000 40058.000000 57061.000000 44370.000000 54757.000000 46185.000000 54452.000000 46436.000000 52267.000000 48409.000000 49979.000000 50907.000000 47786.000000 53475.000000 46109.000000 55157.000000 44077.000000 57757.000000 44013.000000 57797.000000 43361.000000 58700.000000 41779.000000 60994.000000 40526.000000 62902.000000 39934.000000 63899.000000 38501.000000 65999.000000 37658.000000 67390.000000 37085.000000 68539.000000 36404.000000 70194.000000 33488.000000 77199.000000 34131.000000 75190.000000 32347.000000 80529.000000 31600.000000 82770.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28932.000000 94679.000000 26960.000000 106294.000000 26619.000000 108980.000000 25582.000000 117610.000000 25440.000000 118989.000000 25032.000000 122756.000000 24807.000000 125138.000000 23181.000000 145103.000000 22800.000000 151558.000000 22343.000000 164671.000000 22259.000000 168389.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22589.000000 156936.000000 22900.000000 149007.000000 24154.000000 132960.000000 24325.000000 130725.000000 24341.000000 130173.000000 25425.000000 120094.000000 26302.000000 113478.000000 27442.000000 104880.000000 27737.000000 101415.000000 28010.000000 99340.000000 28018.000000 99300.000000 29245.000000 92571.000000 29903.000000 89680.000000 32057.000000 81378.000000 33841.000000 76039.000000 34532.000000 74124.000000 34892.000000 73290.000000 36856.000000 69047.000000 38383.000000 66488.000000 38576.000000 65641.000000 42041.000000 60796.000000 43658.000000 58677.000000 47376.000000 54166.000000 49655.000000 51358.000000 51094.000000 49583.000000 51663.000000 48929.000000 53593.000000 46991.000000 55213.000000 45731.000000 58955.000000 43352.000000 62433.000000 41051.000000 67839.000000 37789.000000 73673.000000 34123.000000 76092.000000 33132.000000 77657.000000 32526.000000 86281.000000 29399.000000 83797.000000 30022.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 96861.000000 26573.000000 111888.000000 24600.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 137363.000000 22471.000000 139703.000000 22372.000000 152708.000000 21889.000000 160290.000000 21718.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 165022.000000 21380.000000 159855.000000 21573.000000 146658.000000 22062.000000 140388.000000 22402.000000 128403.000000 23077.000000 120783.000000 23688.000000 109259.000000 24810.000000 106382.000000 25135.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 92571.000000 27728.000000 85838.000000 29457.000000 86100.000000 29341.000000 81107.000000 31177.000000 80309.000000 31496.000000 78279.000000 32348.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 69243.000000 36595.000000 69876.000000 36223.000000 68871.000000 36668.000000 68379.000000 36981.000000 65756.000000 38484.000000 61846.000000 41105.000000 61404.000000 41422.000000 59756.000000 42604.000000 58075.000000 43913.000000 55962.000000 45433.000000 54981.000000 45986.000000 54504.000000 46402.000000 54022.000000 46878.000000 49751.000000 51023.000000 49406.000000 51323.000000 49326.000000 51403.000000 46472.000000 54951.000000 45531.000000 55978.000000 43550.000000 58702.000000 43327.000000 59035.000000 43021.000000 59495.000000 41813.000000 61266.000000 41380.000000 61978.000000 39705.000000 64653.000000 39318.000000 65297.000000 38662.000000 66334.000000 36521.000000 70084.000000 35948.000000 71233.000000 34031.000000 76243.000000 33290.000000 78495.000000 30571.000000 87832.000000 30055.000000 89185.000000 29149.000000 93653.000000 28402.000000 97299.000000 27994.000000 98987.000000 27857.000000 99886.000000 27486.000000 102485.000000 26625.000000 109023.000000 26162.000000 112350.000000 24951.000000 122076.000000 23987.000000 132723.000000 23938.000000 133482.000000 23509.000000 137945.000000 23119.000000 146438.000000 22836.000000 152554.000000 22656.000000 155487.000000 22417.000000 170216.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 24467.000000 129346.000000 25615.000000 118996.000000 26393.000000 110815.000000 26755.000000 107272.000000 28232.000000 98115.000000 28334.000000 97400.000000 29089.000000 93896.000000 29233.000000 93246.000000 30621.000000 87604.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34644.000000 73874.000000 34892.000000 73290.000000 35488.000000 72037.000000 36283.000000 70196.000000 38750.000000 65578.000000 40528.000000 63019.000000 43285.000000 59221.000000 43953.000000 58301.000000 45860.000000 55924.000000 46458.000000 55240.000000 52040.000000 48886.000000 51101.000000 49595.000000 50928.000000 49752.000000 52654.000000 48217.000000 52336.000000 48402.000000 53170.000000 47592.000000 57289.000000 44350.000000 58752.000000 43084.000000 59381.000000 42649.000000 63091.000000 40234.000000 66139.000000 38223.000000 67993.000000 37146.000000 69462.000000 36343.000000 71358.000000 35354.000000 73777.000000 34363.000000 75849.000000 33328.000000 79055.000000 31954.000000 82221.000000 30751.000000 84935.000000 29827.000000 85229.000000 29580.000000 87780.000000 28759.000000 88316.000000 28584.000000 90828.000000 27926.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 134339.000000 22631.000000 143825.000000 22212.000000 148992.000000 22019.000000 152941.000000 21882.000000 172761.000000 21319.000000 178446.000000 21282.000000 167892.000000 21370.000000 153736.000000 21873.000000 142666.000000 22196.000000 141189.000000 22281.000000 125140.000000 23293.000000 121175.000000 23606.000000 120482.000000 23671.000000 118141.000000 23881.000000 115264.000000 24206.000000 105940.000000 25249.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 80631.000000 31225.000000 83797.000000 30022.000000 79864.000000 31512.000000 77445.000000 32503.000000 76246.000000 33029.000000 74953.000000 33638.000000 71345.000000 35420.000000 71747.000000 34989.000000 70278.000000 35792.000000 66136.000000 38192.000000 64552.000000 39194.000000 63923.000000 39629.000000 61898.000000 41089.000000 57991.000000 44071.000000 59221.000000 42838.000000 58023.000000 43841.000000 57009.000000 44612.000000 53848.000000 47113.000000 52598.000000 48207.000000 52534.000000 48247.000000 51669.000000 49093.000000 50510.000000 50408.000000 48702.000000 52289.000000 47013.000000 54306.000000 45668.000000 55948.000000 41557.000000 61198.000000 42069.000000 60392.000000 39878.000000 63756.000000 38244.000000 66251.000000 37648.000000 67504.000000 35948.000000 71233.000000 35258.000000 72809.000000 34031.000000 76243.000000 33574.000000 77635.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 28924.000000 94499.000000 28632.000000 96266.000000 28630.000000 96279.000000 27480.000000 103260.000000 26350.000000 112116.000000 25920.000000 114233.000000 25712.000000 114964.000000 24359.000000 127258.000000 23768.000000 134669.000000 23719.000000 135428.000000 23529.000000 137988.000000 22694.000000 153451.000000 22625.000000 156462.000000 22391.000000 166861.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23635.000000 137719.000000 24019.000000 133584.000000 25127.000000 118612.000000 25384.000000 116450.000000 25976.000000 112432.000000 27680.000000 101962.000000 28988.000000 94026.000000 29132.000000 93376.000000 29230.000000 92655.000000 30020.000000 89022.000000 31182.000000 84364.000000 31631.000000 82781.000000 31890.000000 81921.000000 32057.000000 81378.000000 32777.000000 79366.000000 33067.000000 78517.000000 34131.000000 75190.000000 34491.000000 74356.000000 34892.000000 73290.000000 35577.000000 71891.000000 37080.000000 68892.000000 38270.000000 66101.000000 38576.000000 65641.000000 40448.000000 63138.000000 41292.000000 61977.000000 45857.000000 55911.000000 46043.000000 55372.000000 46577.000000 54728.000000 48916.000000 52047.000000 50709.000000 50088.000000 51455.000000 49274.000000 54109.000000 46883.000000 55104.000000 46086.000000 55655.000000 45626.000000 58400.000000 43507.000000 59061.000000 43047.000000 60884.000000 41936.000000 62336.000000 41052.000000 66792.000000 38037.000000 68682.000000 36981.000000 72873.000000 34772.000000 75519.000000 33369.000000 84290.000000 29866.000000 86959.000000 29034.000000 88316.000000 28584.000000 92491.000000 27651.000000 93980.000000 27097.000000 96861.000000 26573.000000 105112.000000 25392.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 146078.000000 22103.000000 160251.000000 21601.000000 169236.000000 21327.000000 171526.000000 21315.000000 178446.000000 21282.000000 167892.000000 21370.000000 150866.000000 21883.000000 146658.000000 22062.000000 145181.000000 22147.000000 131401.000000 22890.000000 117520.000000 23904.000000 117595.000000 23896.000000 116770.000000 23984.000000 105379.000000 25247.000000 102716.000000 25594.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 92571.000000 27728.000000 81423.000000 31070.000000 81107.000000 31177.000000 78288.000000 32241.000000 75564.000000 33426.000000 74910.000000 33749.000000 69876.000000 36223.000000 70278.000000 35792.000000 69008.000000 36546.000000 66385.000000 38049.000000 61846.000000 41105.000000 61597.000000 41248.000000 58075.000000 43913.000000 56659.000000 44866.000000 54761.000000 46244.000000 54318.000000 46467.000000 53558.000000 47219.000000 51542.000000 49167.000000 47281.000000 54078.000000 47840.000000 53182.000000 47331.000000 53807.000000 43715.000000 58386.000000 42891.000000 59700.000000 37837.000000 66813.000000 37794.000000 66920.000000 36018.000000 70995.000000 34131.000000 75190.000000 32702.000000 79606.000000 32510.000000 80227.000000 32220.000000 81076.000000 31162.000000 84903.000000 30551.000000 87263.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28924.000000 94499.000000 28042.000000 99817.000000 27637.000000 102379.000000 27004.000000 106832.000000 25849.000000 115988.000000 25502.000000 117915.000000 25145.000000 120774.000000 24768.000000 123931.000000 24015.000000 132487.000000 23427.000000 139852.000000 22725.000000 152476.000000 22589.000000 156028.000000 22408.000000 163419.000000 22321.000000 167903.000000 22199.000000 177946.000000 22231.000000 174213.000000 22312.000000 168478.000000 22467.000000 159692.000000 22679.000000 153124.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 24199.000000 131552.000000 25136.000000 123015.000000 25477.000000 120329.000000 26996.000000 107853.000000 27347.000000 104133.000000 27996.000000 100148.000000 29300.000000 92871.000000 30199.000000 88535.000000 31182.000000 84364.000000 31631.000000 82781.000000 31890.000000 81921.000000 32347.000000 80529.000000 33159.000000 78214.000000 34532.000000 74124.000000 34892.000000 73290.000000 35004.000000 73040.000000 36506.000000 70087.000000 37079.000000 68938.000000 38373.000000 66529.000000 39407.000000 65033.000000 41574.000000 61954.000000 44309.000000 58246.000000 50093.000000 51335.000000 52710.000000 48320.000000 52445.000000 48539.000000 52178.000000 48701.000000 55511.000000 45733.000000 59436.000000 42532.000000 58807.000000 42967.000000 63408.000000 39842.000000 64678.000000 39088.000000 71747.000000 34989.000000 72474.000000 34649.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 85700.000000 29477.000000 86193.000000 29321.000000 87414.000000 28910.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 93257.000000 27364.000000 96138.000000 26840.000000 96204.000000 26822.000000 97618.000000 26490.000000 105112.000000 25392.000000 111888.000000 24600.000000 119324.000000 23782.000000 121227.000000 23574.000000 121666.000000 23538.000000 125998.000000 23217.000000 134339.000000 22631.000000 143002.000000 22215.000000 149794.000000 21973.000000 161590.000000 21749.000000 171526.000000 21315.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 153736.000000 21873.000000 138992.000000 22366.000000 134592.000000 22630.000000 127785.000000 23115.000000 117595.000000 23896.000000 116695.000000 23992.000000 112740.000000 24437.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 97348.000000 26473.000000 80403.000000 31867.000000 77984.000000 32711.000000 76246.000000 33029.000000 72323.000000 34817.000000 71596.000000 35157.000000 70326.000000 35911.000000 65983.000000 38480.000000 66385.000000 38049.000000 58779.000000 43209.000000 58346.000000 43354.000000 55616.000000 45590.000000 52601.000000 48263.000000 52270.000000 48465.000000 51176.000000 49572.000000 50217.000000 50464.000000 49098.000000 51917.000000 47626.000000 54016.000000 43774.000000 58853.000000 37813.000000 67308.000000 38533.000000 65865.000000 37105.000000 68958.000000 36172.000000 70941.000000 32538.000000 81107.000000 31341.000000 83630.000000 30020.000000 89022.000000 29876.000000 89672.000000 29230.000000 92882.000000 28554.000000 96481.000000 28262.000000 98248.000000 27315.000000 103929.000000 26269.000000 111334.000000 25907.000000 114408.000000 25023.000000 121968.000000 24707.000000 125666.000000 22900.000000 149007.000000 22672.000000 153812.000000 22467.000000 159692.000000 22183.000000 171860.000000 22172.000000 172873.000000 22141.000000 176436.000000 22253.000000 171795.000000 22643.000000 157907.000000 23238.000000 143534.000000 23299.000000 141163.000000 24133.000000 130989.000000 24423.000000 127776.000000 24728.000000 124797.000000 27994.000000 98987.000000 28749.000000 95483.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 34131.000000 75190.000000 34644.000000 73874.000000 35004.000000 73040.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38576.000000 65641.000000 40029.000000 63604.000000 40879.000000 62327.000000 43380.000000 59045.000000 44360.000000 57888.000000 44296.000000 57928.000000 44032.000000 57961.000000 49955.000000 51003.000000 49623.000000 51275.000000 51936.000000 48945.000000 53070.000000 47954.000000 53458.000000 47150.000000 54252.000000 46532.000000 54605.000000 46255.000000 57970.000000 43945.000000 56182.000000 44972.000000 65326.000000 39180.000000 68540.000000 37459.000000 75361.000000 34365.000000 79312.000000 32130.000000 85070.000000 29852.000000 83797.000000 30022.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 100775.000000 25998.000000 113791.000000 24392.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 131076.000000 22847.000000 138741.000000 22433.000000 146078.000000 22103.000000 149225.000000 22012.000000 167255.000000 21656.000000 173801.000000 21305.000000 171511.000000 21317.000000 166257.000000 21384.000000 164244.000000 21408.000000 153990.000000 21749.000000 136069.000000 22545.000000 134592.000000 22630.000000 128478.000000 23069.000000 124776.000000 23321.000000 116695.000000 23992.000000 105304.000000 25255.000000 104494.000000 25360.000000 100867.000000 25858.000000 97135.000000 26536.000000 93980.000000 27097.000000 90828.000000 27926.000000 89117.000000 28406.000000 88981.000000 28445.000000 86312.000000 29277.000000 85045.000000 29594.000000 82649.000000 30502.000000 79202.000000 31845.000000 77445.000000 32503.000000 71596.000000 35157.000000 68706.000000 36896.000000 65893.000000 38610.000000 62372.000000 40882.000000 59087.000000 43184.000000 58728.000000 43282.000000 56854.000000 44765.000000 53196.000000 47605.000000 51439.000000 49316.000000 48436.000000 52580.000000 46446.000000 54636.000000 46067.000000 55129.000000 45415.000000 56032.000000 42172.000000 60568.000000 40590.000000 62862.000000 39766.000000 64176.000000 38501.000000 65999.000000 33343.000000 77872.000000 32347.000000 80529.000000 31600.000000 82770.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27615.000000 102470.000000 27345.000000 104146.000000 26279.000000 111751.000000 25603.000000 116814.000000 25332.000000 119349.000000 24854.000000 124019.000000 24632.000000 126944.000000 24485.000000 128591.000000 23752.000000 138364.000000 22631.000000 157960.000000 22426.000000 163840.000000 22312.000000 168478.000000 22301.000000 169491.000000 22224.000000 170660.000000 22183.000000 171860.000000 22343.000000 164671.000000 22672.000000 153812.000000 22964.000000 147094.000000 23369.000000 141683.000000 24130.000000 133482.000000 26008.000000 113754.000000 27078.000000 105495.000000 27080.000000 105482.000000 27721.000000 101243.000000 27856.000000 100357.000000 28334.000000 97400.000000 29876.000000 89672.000000 32057.000000 81378.000000 34131.000000 75190.000000 35321.000000 72426.000000 35917.000000 71173.000000 37312.000000 68429.000000 36856.000000 69047.000000 38281.000000 66899.000000 39455.000000 65213.000000 42740.000000 60431.000000 45283.000000 56973.000000 46444.000000 54728.000000 49072.000000 51383.000000 53687.000000 47096.000000 53879.000000 46800.000000 54480.000000 46282.000000 54833.000000 46005.000000 65253.000000 39019.000000 65882.000000 38653.000000 66448.000000 38384.000000 74481.000000 34213.000000 75208.000000 33873.000000 79089.000000 32141.000000 96861.000000 26573.000000 98926.000000 26262.000000 110007.000000 24827.000000 121227.000000 23574.000000 121666.000000 23538.000000 132548.000000 22780.000000 137262.000000 22452.000000 139602.000000 22353.000000 148992.000000 22019.000000 152941.000000 21882.000000 169236.000000 21327.000000 176171.000000 21292.000000 178446.000000 21282.000000 165022.000000 21380.000000 151916.000000 21844.000000 138992.000000 22366.000000 137515.000000 22451.000000 124776.000000 23321.000000 121046.000000 23627.000000 112785.000000 24533.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 92571.000000 27728.000000 83797.000000 30022.000000 82683.000000 30448.000000 79864.000000 31512.000000 77445.000000 32503.000000 72795.000000 34631.000000 71596.000000 35157.000000 69649.000000 36227.000000 70278.000000 35792.000000 67158.000000 37650.000000 66195.000000 38260.000000 63923.000000 39629.000000 62106.000000 40968.000000 58860.000000 43188.000000 56326.000000 44953.000000 54452.000000 46436.000000 52230.000000 48495.000000 52267.000000 48409.000000 50217.000000 50464.000000 48420.000000 52788.000000 46523.000000 55017.000000 43921.000000 58251.000000 38193.000000 66821.000000 37085.000000 68539.000000 36395.000000 70115.000000 33841.000000 76039.000000 31600.000000 82770.000000 31341.000000 83630.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 29224.000000 92912.000000 27774.000000 101380.000000 27637.000000 102279.000000 27367.000000 103955.000000 26270.000000 111388.000000 25539.000000 117398.000000 25253.000000 118396.000000 24794.000000 122825.000000 24521.000000 125519.000000 24472.000000 126278.000000 23509.000000 137945.000000 23084.000000 147502.000000 22914.000000 151040.000000 22470.000000 164604.000000 22199.000000 177946.000000 22231.000000 174213.000000 22391.000000 165522.000000 22512.000000 158320.000000 22804.000000 151602.000000 23312.000000 144330.000000 23376.000000 140995.000000 23940.000000 134828.000000 24341.000000 130173.000000 26181.000000 113666.000000 26319.000000 110526.000000 27008.000000 106166.000000 27949.000000 100395.000000 28678.000000 96505.000000 30179.000000 88288.000000 32057.000000 81378.000000 34131.000000 75190.000000 34532.000000 74124.000000 35321.000000 72426.000000 35917.000000 71173.000000 36490.000000 70024.000000 38270.000000 66101.000000 38576.000000 65641.000000 41422.000000 62101.000000 45876.000000 55773.000000 47670.000000 53387.000000 49451.000000 51456.000000 49785.000000 50949.000000 53996.000000 46841.000000 54830.000000 46031.000000 56355.000000 44854.000000 63525.000000 40239.000000 68167.000000 37141.000000 84290.000000 29866.000000 85511.000000 29455.000000 88180.000000 28623.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 104447.000000 25450.000000 109259.000000 24810.000000 110084.000000 24722.000000 117520.000000 23904.000000 124447.000000 23339.000000 131254.000000 22854.000000 136069.000000 22545.000000 146013.000000 22097.000000 156564.000000 21661.000000 163277.000000 21469.000000 168458.000000 21355.000000 173801.000000 21305.000000 173801.000000 21305.000000 169236.000000 21327.000000 165022.000000 21380.000000 154266.000000 21745.000000 138992.000000 22366.000000 137515.000000 22451.000000 130633.000000 22944.000000 121121.000000 23619.000000 107951.000000 25038.000000 105304.000000 25255.000000 104494.000000 25360.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 81879.000000 30797.000000 85045.000000 29594.000000 82649.000000 30502.000000 80309.000000 31496.000000 77401.000000 32590.000000 76202.000000 33116.000000 75475.000000 33456.000000 71596.000000 35157.000000 69649.000000 36227.000000 64540.000000 39132.000000 61352.000000 41218.000000 60723.000000 41653.000000 60055.000000 42170.000000 58181.000000 43653.000000 54452.000000 46436.000000 51468.000000 48849.000000 46588.000000 54895.000000 44526.000000 57209.000000 44139.000000 57716.000000 43916.000000 58049.000000 42641.000000 59819.000000 41000.000000 62554.000000 39315.000000 65651.000000 38685.000000 66908.000000 35059.000000 73682.000000 34192.000000 76282.000000 31564.000000 83616.000000 31699.000000 82730.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29224.000000 92912.000000 27507.000000 102829.000000 27213.000000 104609.000000 26575.000000 109598.000000 25845.000000 115371.000000 25404.000000 119105.000000 25029.000000 122213.000000 23941.000000 134919.000000 23635.000000 137840.000000 23327.000000 142132.000000 22757.000000 154475.000000 22490.000000 163698.000000 22369.000000 168247.000000 22199.000000 177946.000000 22230.000000 174383.000000 22253.000000 171795.000000 22425.000000 164010.000000 22593.000000 155944.000000 22908.000000 148780.000000 23364.000000 142076.000000 23761.000000 136892.000000 24019.000000 133584.000000 24644.000000 127734.000000 25331.000000 121445.000000 26131.000000 111824.000000 27516.000000 102668.000000 28529.000000 97494.000000 28989.000000 94475.000000 31116.000000 85100.000000 31600.000000 82770.000000 32057.000000 81378.000000 32777.000000 79366.000000 33468.000000 77451.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 37778.000000 67551.000000 40181.000000 63531.000000 43012.000000 59441.000000 44810.000000 56837.000000 49327.000000 51651.000000 49785.000000 50949.000000 52857.000000 47856.000000 51148.000000 49348.000000 51595.000000 48803.000000 52539.000000 47964.000000 53461.000000 47206.000000 53814.000000 46929.000000 56899.000000 44652.000000 62926.000000 40835.000000 65362.000000 38850.000000 67136.000000 37799.000000 68818.000000 36719.000000 72151.000000 34887.000000 71747.000000 34989.000000 72946.000000 34463.000000 75365.000000 33472.000000 76163.000000 33153.000000 80096.000000 31663.000000 83797.000000 30022.000000 84290.000000 29866.000000 86959.000000 29034.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 129261.000000 23001.000000 134339.000000 22631.000000 139602.000000 22353.000000 144769.000000 22160.000000 154241.000000 21849.000000 178446.000000 21282.000000 174381.000000 21307.000000 167114.000000 21398.000000 155356.000000 21718.000000 138992.000000 22366.000000 128403.000000 23077.000000 122798.000000 23537.000000 120407.000000 23679.000000 109259.000000 24810.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 93875.000000 27352.000000 90969.000000 28213.000000 86433.000000 29559.000000 84290.000000 29866.000000 82683.000000 30448.000000 77445.000000 32503.000000 76246.000000 33029.000000 75680.000000 33298.000000 71747.000000 34989.000000 70477.000000 35743.000000 67605.000000 37389.000000 66976.000000 37824.000000 65392.000000 38826.000000 61597.000000 41248.000000 56608.000000 44833.000000 55187.000000 45853.000000 54452.000000 46436.000000 53689.000000 47126.000000 51468.000000 48849.000000 50975.000000 49328.000000 50016.000000 50220.000000 48569.000000 52092.000000 48219.000000 52544.000000 40866.000000 62840.000000 39817.000000 64208.000000 38349.000000 66720.000000 37362.000000 68342.000000 37804.000000 67277.000000 37648.000000 67504.000000 36524.000000 70439.000000 35498.000000 73079.000000 35228.000000 73710.000000 32702.000000 79606.000000 31341.000000 83630.000000 29903.000000 89680.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 27774.000000 101380.000000 27772.000000 101393.000000 26699.000000 108264.000000 25920.000000 113742.000000 25812.000000 114704.000000 25714.000000 115592.000000 24452.000000 125923.000000 23670.000000 136455.000000 23572.000000 138230.000000 22850.000000 153718.000000 22193.000000 174223.000000 22224.000000 170660.000000 22235.000000 169647.000000 22467.000000 159692.000000 22585.000000 156171.000000 22971.000000 146406.000000 22979.000000 146179.000000 23635.000000 137719.000000 24019.000000 133584.000000 24341.000000 130173.000000 26341.000000 111846.000000 26929.000000 106753.000000 27095.000000 105408.000000 27621.000000 102097.000000 28135.000000 98998.000000 29073.000000 94021.000000 30179.000000 88288.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33067.000000 78517.000000 33468.000000 77451.000000 34415.000000 75080.000000 36117.000000 71190.000000 39607.000000 64636.000000 39155.000000 65273.000000 40170.000000 63501.000000 41446.000000 61667.000000 42565.000000 60214.000000 44770.000000 56825.000000 49072.000000 51383.000000 52703.000000 48006.000000 53512.000000 47355.000000 53811.000000 46873.000000 58810.000000 43500.000000 65174.000000 39685.000000 71999.000000 34985.000000 72946.000000 34463.000000 76092.000000 33132.000000 76859.000000 32845.000000 83393.000000 30373.000000 86959.000000 29034.000000 87095.000000 28995.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 111888.000000 24600.000000 121227.000000 23574.000000 121666.000000 23538.000000 132447.000000 22761.000000 137262.000000 22452.000000 139602.000000 22353.000000 148485.000000 22030.000000 163967.000000 21471.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 147411.000000 22111.000000 142942.000000 22192.000000 141465.000000 22277.000000 127785.000000 23115.000000 124083.000000 23367.000000 121121.000000 23619.000000 116770.000000 23984.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 98095.000000 26438.000000 97135.000000 26536.000000 93875.000000 27352.000000 90720.000000 27913.000000 87814.000000 28774.000000 87414.000000 28910.000000 86300.000000 29336.000000 80309.000000 31496.000000 77445.000000 32503.000000 72795.000000 34631.000000 71596.000000 35157.000000 70326.000000 35911.000000 67703.000000 37414.000000 61846.000000 41105.000000 61404.000000 41422.000000 60419.000000 42104.000000 57882.000000 44087.000000 56113.000000 45505.000000 54984.000000 46042.000000 52600.000000 48161.000000 49300.000000 51997.000000 45689.000000 56043.000000 45968.000000 55324.000000 44692.000000 57158.000000 44469.000000 57491.000000 43986.000000 58154.000000 40904.000000 63067.000000 40119.000000 64502.000000 34131.000000 75190.000000 33841.000000 76039.000000 32412.000000 80455.000000 32220.000000 81076.000000 31179.000000 84514.000000 31408.000000 83502.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28924.000000 94499.000000 28405.000000 97749.000000 26618.000000 108171.000000 25740.000000 114801.000000 24997.000000 120446.000000 24568.000000 124484.000000 23799.000000 134533.000000 23491.000000 138825.000000 23195.000000 145632.000000 22690.000000 153540.000000 22424.000000 164571.000000 22199.000000 177946.000000 22230.000000 174383.000000 22312.000000 168478.000000 22475.000000 159465.000000 22593.000000 155944.000000 22908.000000 148780.000000 24243.000000 132389.000000 26351.000000 110603.000000 26620.000000 108158.000000 27381.000000 103554.000000 27516.000000 102668.000000 28362.000000 98106.000000 31600.000000 82770.000000 32057.000000 81378.000000 33067.000000 78517.000000 34532.000000 74124.000000 34644.000000 73874.000000 35600.000000 71787.000000 36283.000000 70196.000000 36856.000000 69047.000000 37472.000000 68011.000000 38270.000000 66101.000000 38576.000000 65641.000000 40944.000000 62349.000000 41962.000000 60781.000000 43658.000000 58677.000000 48815.000000 52391.000000 50223.000000 50416.000000 51663.000000 48929.000000 53024.000000 47645.000000 53555.000000 47116.000000 53593.000000 46991.000000 56149.000000 45193.000000 59378.000000 43050.000000 65119.000000 39478.000000 66590.000000 38537.000000 68167.000000 37141.000000 78322.000000 32428.000000 79089.000000 32141.000000 85585.000000 29617.000000 86312.000000 29277.000000 88981.000000 28445.000000 89117.000000 28406.000000 90134.000000 28095.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 111888.000000 24600.000000 113791.000000 24392.000000 121227.000000 23574.000000 121666.000000 23538.000000 129524.000000 22940.000000 137262.000000 22452.000000 139602.000000 22353.000000 152708.000000 21889.000000 152941.000000 21882.000000 167255.000000 21656.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 163967.000000 21471.000000 158800.000000 21664.000000 140978.000000 22322.000000 135579.000000 22604.000000 125192.000000 23261.000000 124753.000000 23297.000000 120221.000000 23715.000000 113636.000000 24447.000000 104162.000000 25483.000000 100867.000000 25858.000000 97986.000000 26382.000000 97135.000000 26536.000000 93980.000000 27097.000000 90828.000000 27926.000000 90692.000000 27965.000000 87329.000000 28966.000000 83797.000000 30022.000000 82683.000000 30448.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 71935.000000 35182.000000 69649.000000 36227.000000 70278.000000 35792.000000 69008.000000 36546.000000 66201.000000 38229.000000 63718.000000 39741.000000 60530.000000 41827.000000 58945.000000 42910.000000 58277.000000 43427.000000 55815.000000 45383.000000 51644.000000 48748.000000 51468.000000 48849.000000 50016.000000 50220.000000 46199.000000 55516.000000 45976.000000 55849.000000 42484.000000 60646.000000 39786.000000 64298.000000 40356.000000 63206.000000 39728.000000 64361.000000 39155.000000 65510.000000 37581.000000 67980.000000 37206.000000 68713.000000 34335.000000 75072.000000 34532.000000 74124.000000 34131.000000 75190.000000 33674.000000 76582.000000 32220.000000 81076.000000 31408.000000 83502.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29876.000000 89672.000000 29230.000000 92882.000000 28148.000000 98590.000000 27505.000000 102842.000000 26752.000000 107331.000000 25854.000000 113094.000000 24873.000000 121341.000000 24452.000000 125923.000000 24291.000000 127413.000000 23719.000000 135428.000000 23135.000000 144026.000000 22690.000000 153540.000000 22361.000000 166317.000000 22312.000000 170886.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22585.000000 156171.000000 22972.000000 146867.000000 23628.000000 138407.000000 24198.000000 132069.000000 25643.000000 118984.000000 27061.000000 106283.000000 28947.000000 95507.000000 31206.000000 84516.000000 31600.000000 82770.000000 32057.000000 81378.000000 32869.000000 79063.000000 35128.000000 72871.000000 35750.000000 71639.000000 36323.000000 70490.000000 37837.000000 66813.000000 38270.000000 66101.000000 38576.000000 65641.000000 41080.000000 62174.000000 42199.000000 60721.000000 46363.000000 55344.000000 44906.000000 57006.000000 47568.000000 53238.000000 49936.000000 50738.000000 53130.000000 47515.000000 52536.000000 47908.000000 57260.000000 44267.000000 56631.000000 44702.000000 59417.000000 42602.000000 63103.000000 40296.000000 65629.000000 38614.000000 67978.000000 37087.000000 69447.000000 36284.000000 72946.000000 34463.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 80823.000000 31323.000000 83532.000000 30320.000000 86466.000000 29190.000000 86602.000000 29151.000000 87095.000000 28995.000000 88316.000000 28584.000000 89999.000000 28203.000000 93257.000000 27364.000000 96138.000000 26840.000000 100775.000000 25998.000000 104447.000000 25450.000000 113861.000000 24416.000000 121128.000000 23689.000000 122502.000000 23573.000000 131879.000000 22918.000000 146375.000000 22113.000000 153715.000000 21856.000000 166322.000000 21411.000000 178446.000000 21282.000000 169236.000000 21327.000000 165022.000000 21380.000000 159032.000000 21576.000000 143735.000000 22241.000000 135204.000000 22680.000000 130947.000000 22993.000000 124776.000000 23321.000000 118210.000000 23910.000000 109259.000000 24810.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 98913.000000 26302.000000 97899.000000 26486.000000 87756.000000 29094.000000 88180.000000 28623.000000 85511.000000 29455.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 72795.000000 34631.000000 71596.000000 35157.000000 69649.000000 36227.000000 68379.000000 36981.000000 64469.000000 39602.000000 62513.000000 40798.000000 57650.000000 44329.000000 54710.000000 46758.000000 54578.000000 46852.000000 53446.000000 47901.000000 52367.000000 48969.000000 49072.000000 51383.000000 48405.000000 52132.000000 45779.000000 55386.000000 41727.000000 61840.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 36274.000000 70793.000000 34131.000000 75190.000000 33841.000000 76039.000000 31600.000000 82770.000000 31341.000000 83630.000000 30179.000000 88288.000000 30035.000000 88938.000000 29870.000000 89702.000000 29500.000000 91520.000000 28632.000000 96266.000000 27318.000000 104993.000000 26767.000000 107571.000000 26186.000000 112175.000000 25359.000000 118241.000000 25047.000000 120752.000000 24790.000000 122914.000000 23764.000000 137109.000000 23284.000000 142901.000000 22604.000000 159060.000000 22259.000000 168389.000000 22172.000000 172873.000000 22141.000000 176436.000000 22183.000000 171860.000000 22471.000000 160457.000000 22672.000000 153812.000000 22964.000000 147094.000000 23627.000000 137946.000000 24199.000000 131552.000000 26121.000000 115151.000000 26610.000000 108648.000000 26777.000000 107554.000000 27673.000000 102064.000000 28232.000000 98115.000000 29170.000000 93138.000000 28910.000000 94201.000000 30020.000000 89022.000000 31182.000000 84364.000000 32057.000000 81378.000000 32869.000000 79063.000000 33488.000000 77199.000000 34532.000000 74124.000000 35004.000000 73040.000000 36283.000000 70196.000000 36856.000000 69047.000000 40184.000000 63978.000000 40528.000000 63019.000000 43519.000000 59063.000000 47420.000000 53570.000000 47950.000000 52985.000000 50700.000000 49974.000000 53593.000000 46991.000000 56149.000000 45193.000000 61236.000000 41562.000000 62506.000000 40808.000000 66416.000000 38187.000000 67070.000000 37864.000000 69175.000000 36729.000000 76354.000000 33357.000000 80703.000000 31547.000000 79437.000000 31923.000000 84290.000000 29866.000000 88316.000000 28584.000000 89999.000000 28203.000000 94500.000000 27219.000000 97381.000000 26695.000000 110084.000000 24722.000000 121485.000000 23591.000000 131329.000000 22846.000000 136069.000000 22545.000000 150274.000000 21879.000000 153626.000000 21763.000000 156540.000000 21679.000000 171526.000000 21315.000000 167892.000000 21370.000000 150020.000000 22003.000000 142942.000000 22192.000000 141390.000000 22285.000000 137058.000000 22606.000000 126688.000000 23236.000000 109259.000000 24810.000000 106382.000000 25135.000000 103377.000000 25450.000000 101528.000000 25714.000000 97348.000000 26473.000000 94196.000000 27302.000000 92485.000000 27782.000000 92349.000000 27821.000000 78463.000000 32444.000000 78784.000000 32239.000000 78969.000000 32030.000000 74759.000000 33901.000000 73560.000000 34427.000000 72323.000000 34817.000000 71596.000000 35157.000000 70326.000000 35911.000000 64978.000000 39322.000000 61277.000000 41702.000000 60497.000000 42029.000000 59012.000000 43146.000000 55105.000000 45884.000000 54981.000000 45986.000000 54183.000000 46805.000000 50357.000000 50645.000000 50005.000000 50946.000000 46667.000000 54683.000000 46306.000000 55146.000000 45605.000000 56022.000000 44162.000000 57790.000000 44376.000000 57080.000000 38501.000000 65999.000000 37422.000000 68628.000000 37379.000000 68735.000000 36360.000000 71365.000000 34131.000000 75190.000000 32702.000000 79606.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 29294.000000 92901.000000 28932.000000 94679.000000 28632.000000 96266.000000 27752.000000 101571.000000 27750.000000 101584.000000 26579.000000 109113.000000 26404.000000 110454.000000 26023.000000 112969.000000 25776.000000 115380.000000 25404.000000 119222.000000 23199.000000 144211.000000 22687.000000 152897.000000 22512.000000 158320.000000 22376.000000 164380.000000 22356.000000 165815.000000 22234.000000 178992.000000 22277.000000 173854.000000 22288.000000 172841.000000 22683.000000 153889.000000 22971.000000 146406.000000 22979.000000 146179.000000 23376.000000 140995.000000 24199.000000 131552.000000 24341.000000 130173.000000 25099.000000 123596.000000 26673.000000 108873.000000 26930.000000 106711.000000 28010.000000 99340.000000 28018.000000 99300.000000 29212.000000 93245.000000 29164.000000 93391.000000 29389.000000 91921.000000 30000.000000 89561.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 33159.000000 78214.000000 34644.000000 73874.000000 35321.000000 72426.000000 36856.000000 69047.000000 40153.000000 63752.000000 42400.000000 60516.000000 45757.000000 55779.000000 47453.000000 53675.000000 49293.000000 51566.000000 51491.000000 49141.000000 51630.000000 48824.000000 53593.000000 46991.000000 56446.000000 45081.000000 59478.000000 42641.000000 63307.000000 40236.000000 67349.000000 37522.000000 69447.000000 36284.000000 73673.000000 34123.000000 76092.000000 33132.000000 76890.000000 32813.000000 77657.000000 32526.000000 84425.000000 30028.000000 83932.000000 30184.000000 85646.000000 29617.000000 86883.000000 29227.000000 88316.000000 28584.000000 93257.000000 27364.000000 96138.000000 26840.000000 111751.000000 24792.000000 119324.000000 23782.000000 121227.000000 23574.000000 121666.000000 23538.000000 132447.000000 22761.000000 137262.000000 22452.000000 139602.000000 22353.000000 152708.000000 21889.000000 154241.000000 21849.000000 173801.000000 21305.000000 178446.000000 21282.000000 174381.000000 21307.000000 167892.000000 21370.000000 162108.000000 21464.000000 150550.000000 21875.000000 144280.000000 22153.000000 138191.000000 22468.000000 128403.000000 23077.000000 117520.000000 23904.000000 117595.000000 23896.000000 116695.000000 23992.000000 104455.000000 25330.000000 103377.000000 25450.000000 101528.000000 25714.000000 98199.000000 26319.000000 97348.000000 26473.000000 93952.000000 27328.000000 91182.000000 28150.000000 81313.000000 31325.000000 82906.000000 30514.000000 73673.000000 34123.000000 72474.000000 34649.000000 71747.000000 34989.000000 70278.000000 35792.000000 67978.000000 37087.000000 66708.000000 37841.000000 66385.000000 38049.000000 63769.000000 39812.000000 60566.000000 41780.000000 60124.000000 42097.000000 58250.000000 43580.000000 55159.000000 46170.000000 53000.000000 47996.000000 51510.000000 49470.000000 49680.000000 51221.000000 48136.000000 52800.000000 47307.000000 53730.000000 46946.000000 54193.000000 46642.000000 54523.000000 44086.000000 58193.000000 43546.000000 58416.000000 42722.000000 59730.000000 38911.000000 66250.000000 36400.000000 70874.000000 35297.000000 73043.000000 35357.000000 72893.000000 35185.000000 73293.000000 33747.000000 77103.000000 33290.000000 78495.000000 32951.000000 79478.000000 32220.000000 81076.000000 29389.000000 91921.000000 29245.000000 92571.000000 29080.000000 93335.000000 29072.000000 93375.000000 27892.000000 100267.000000 26887.000000 106445.000000 26495.000000 109493.000000 26387.000000 110455.000000 25118.000000 120900.000000 25007.000000 121211.000000 24515.000000 126320.000000 22694.000000 153451.000000 22307.000000 166881.000000 22172.000000 172873.000000 22141.000000 176436.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 23435.000000 140579.000000 23694.000000 137112.000000 24063.000000 132655.000000 25101.000000 120991.000000 25929.000000 112457.000000 26645.000000 107904.000000 27146.000000 104363.000000 28581.000000 97212.000000 28534.000000 97403.000000 28954.000000 95361.000000 31537.000000 83246.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 32347.000000 80529.000000 34131.000000 75190.000000 34532.000000 74124.000000 35687.000000 71449.000000 36856.000000 69047.000000 37472.000000 68011.000000 39270.000000 64713.000000 39576.000000 64253.000000 40228.000000 63350.000000 43461.000000 58938.000000 45486.000000 56171.000000 47275.000000 53959.000000 47950.000000 52985.000000 49260.000000 51461.000000 50190.000000 50311.000000 51630.000000 48824.000000 53593.000000 46991.000000 56743.000000 44516.000000 61640.000000 41306.000000 65177.000000 39151.000000 70208.000000 36164.000000 74403.000000 34074.000000 75130.000000 33734.000000 77549.000000 32743.000000 79511.000000 31943.000000 79969.000000 31558.000000 83135.000000 30355.000000 83628.000000 30199.000000 86959.000000 29034.000000 87095.000000 28995.000000 88316.000000 28584.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 105922.000000 25287.000000 112966.000000 24480.000000 121227.000000 23574.000000 125192.000000 23261.000000 132787.000000 22724.000000 137363.000000 22471.000000 139602.000000 22353.000000 157059.000000 21757.000000 176171.000000 21292.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 163967.000000 21471.000000 150627.000000 21979.000000 138767.000000 22430.000000 137440.000000 22459.000000 128063.000000 23114.000000 120482.000000 23652.000000 117520.000000 23904.000000 109259.000000 24810.000000 105304.000000 25255.000000 104494.000000 25360.000000 102645.000000 25624.000000 101752.000000 25768.000000 97986.000000 26382.000000 97135.000000 26536.000000 93875.000000 27352.000000 93739.000000 27391.000000 87619.000000 28988.000000 86100.000000 29341.000000 83797.000000 30022.000000 82683.000000 30448.000000 77445.000000 32503.000000 76718.000000 32843.000000 75680.000000 33298.000000 74084.000000 34069.000000 70141.000000 35914.000000 68871.000000 36668.000000 68379.000000 36981.000000 65566.000000 38695.000000 63923.000000 39629.000000 60120.000000 42346.000000 59420.000000 42804.000000 57035.000000 44786.000000 55837.000000 45789.000000 55427.000000 46169.000000 51512.000000 50040.000000 52656.000000 48495.000000 51828.000000 48887.000000 48585.000000 52182.000000 47303.000000 53457.000000 46373.000000 54607.000000 46474.000000 54387.000000 45027.000000 56259.000000 44677.000000 56711.000000 40719.000000 62924.000000 38446.000000 66027.000000 37837.000000 66813.000000 37794.000000 66920.000000 34371.000000 74997.000000 32412.000000 80455.000000 32220.000000 81076.000000 31341.000000 83630.000000 30358.000000 87801.000000 30214.000000 88451.000000 30055.000000 89185.000000 28960.000000 94458.000000 28654.000000 96075.000000 27261.000000 105201.000000 26271.000000 111473.000000 25707.000000 115736.000000 25830.000000 114153.000000 25323.000000 119798.000000 24923.000000 123699.000000 23528.000000 139493.000000 23318.000000 142010.000000 22725.000000 152476.000000 22665.000000 155065.000000 22307.000000 170201.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22471.000000 160457.000000 22680.000000 153585.000000 22972.000000 146867.000000 23369.000000 141683.000000 24012.000000 134272.000000 26765.000000 108482.000000 26322.000000 111325.000000 27371.000000 104367.000000 27652.000000 102256.000000 28246.000000 98882.000000 29086.000000 93305.000000 29245.000000 92571.000000 29389.000000 91921.000000 30478.000000 87762.000000 31182.000000 84364.000000 31600.000000 82770.000000 32057.000000 81378.000000 33841.000000 76039.000000 34131.000000 75190.000000 34644.000000 73874.000000 35687.000000 71449.000000 36856.000000 69047.000000 40753.000000 62679.000000 41345.000000 61682.000000 48412.000000 52566.000000 48187.000000 52729.000000 48521.000000 52222.000000 50214.000000 50575.000000 52736.000000 48443.000000 57135.000000 44745.000000 58526.000000 43284.000000 58752.000000 43084.000000 59574.000000 42475.000000 60844.000000 41721.000000 67279.000000 37575.000000 69897.000000 36093.000000 72474.000000 34649.000000 79864.000000 31512.000000 88180.000000 28623.000000 88316.000000 28584.000000 90720.000000 27913.000000 93980.000000 27097.000000 96861.000000 26573.000000 98926.000000 26262.000000 100775.000000 25998.000000 111085.000000 24707.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134100.000000 22687.000000 139703.000000 22372.000000 144769.000000 22160.000000 152941.000000 21882.000000 168458.000000 21355.000000 178446.000000 21282.000000 172106.000000 21317.000000 167892.000000 21370.000000 151859.000000 21978.000000 140978.000000 22322.000000 139426.000000 22415.000000 128455.000000 23045.000000 124753.000000 23297.000000 120402.000000 23662.000000 105922.000000 25287.000000 105112.000000 25392.000000 103263.000000 25656.000000 100243.000000 26102.000000 96861.000000 26573.000000 93980.000000 27097.000000 90720.000000 27913.000000 88316.000000 28584.000000 88180.000000 28623.000000 83797.000000 30022.000000 82683.000000 30448.000000 80264.000000 31439.000000 77445.000000 32503.000000 73522.000000 34291.000000 72323.000000 34817.000000 71596.000000 35157.000000 67454.000000 37557.000000 64358.000000 39449.000000 59505.000000 42690.000000 58876.000000 43125.000000 55765.000000 45551.000000 54452.000000 46436.000000 53689.000000 47126.000000 51323.000000 49238.000000 51468.000000 48849.000000 50975.000000 49328.000000 49425.000000 51011.000000 42417.000000 60182.000000 42111.000000 60642.000000 41287.000000 61956.000000 40502.000000 63391.000000 37490.000000 68252.000000 33747.000000 77103.000000 34907.000000 73690.000000 33240.000000 78290.000000 33037.000000 78692.000000 32682.000000 79810.000000 31182.000000 84364.000000 30020.000000 89022.000000 29876.000000 89672.000000 29506.000000 91490.000000 28632.000000 96266.000000 27856.000000 100357.000000 27854.000000 100370.000000 26589.000000 108893.000000 25800.000000 114821.000000 25438.000000 117895.000000 25296.000000 119274.000000 24517.000000 125608.000000 23494.000000 140384.000000 23115.000000 143983.000000 22690.000000 153540.000000 22545.000000 160022.000000 22307.000000 170201.000000 22141.000000 176436.000000 22230.000000 174383.000000 22311.000000 168648.000000 22425.000000 164010.000000 22619.000000 158487.000000 22804.000000 151602.000000 23119.000000 143894.000000 23299.000000 141163.000000 23733.000000 135628.000000 24243.000000 129808.000000 24728.000000 124797.000000 24866.000000 123507.000000 25029.000000 120387.000000 25850.000000 114115.000000 26843.000000 106825.000000 27415.000000 102902.000000 28010.000000 99340.000000 29080.000000 93335.000000 29245.000000 92571.000000 29389.000000 91921.000000 31162.000000 84903.000000 31600.000000 82770.000000 32057.000000 81378.000000 34131.000000 75190.000000 34644.000000 73874.000000 35004.000000 73040.000000 35687.000000 71449.000000 36283.000000 70196.000000 36856.000000 69047.000000 38918.000000 65727.000000 41566.000000 61879.000000 45680.000000 56034.000000 45403.000000 56117.000000 45948.000000 55354.000000 47723.000000 53300.000000 49017.000000 51854.000000 50618.000000 50283.000000 52195.000000 48651.000000 54830.000000 46031.000000 59404.000000 42963.000000 60274.000000 42355.000000 64093.000000 40102.000000 68749.000000 37361.000000 71013.000000 35904.000000 69769.000000 36388.000000 74339.000000 34242.000000 76937.000000 33080.000000 77385.000000 32889.000000 80889.000000 31282.000000 83135.000000 30355.000000 85511.000000 29455.000000 110007.000000 24827.000000 111888.000000 24600.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 137262.000000 22452.000000 139602.000000 22353.000000 152708.000000 21889.000000 154241.000000 21849.000000 165897.000000 21481.000000 170748.000000 21343.000000 173801.000000 21305.000000 169236.000000 21327.000000 165022.000000 21380.000000 162108.000000 21464.000000 159032.000000 21576.000000 147996.000000 22023.000000 117595.000000 23896.000000 116695.000000 23992.000000 112740.000000 24437.000000 104494.000000 25360.000000 102645.000000 25624.000000 100867.000000 25858.000000 97135.000000 26536.000000 92080.000000 27900.000000 88789.000000 28500.000000 87552.000000 28890.000000 85838.000000 29457.000000 82683.000000 30448.000000 76246.000000 33029.000000 75519.000000 33369.000000 74953.000000 33638.000000 71596.000000 35157.000000 70278.000000 35792.000000 67978.000000 37087.000000 66708.000000 37841.000000 66385.000000 38049.000000 65756.000000 38484.000000 61846.000000 41105.000000 59756.000000 42604.000000 54981.000000 45986.000000 54649.000000 46258.000000 53190.000000 47627.000000 52563.000000 48247.000000 50121.000000 50875.000000 48887.000000 52162.000000 44681.000000 57646.000000 45331.000000 56432.000000 45043.000000 56853.000000 44350.000000 57655.000000 40518.000000 63008.000000 40085.000000 63720.000000 39300.000000 65155.000000 36124.000000 71301.000000 33840.000000 77075.000000 34131.000000 75190.000000 32702.000000 79606.000000 32220.000000 81076.000000 30556.000000 87793.000000 29869.000000 90283.000000 29876.000000 89672.000000 29506.000000 91490.000000 28632.000000 96266.000000 27799.000000 101439.000000 25268.000000 119182.000000 25021.000000 120548.000000 24879.000000 121927.000000 24842.000000 122292.000000 23944.000000 133013.000000 24042.000000 131238.000000 23012.000000 146091.000000 22725.000000 152476.000000 22690.000000 153540.000000 22621.000000 156551.000000 22424.000000 164571.000000 22141.000000 176436.000000 22172.000000 172873.000000 22183.000000 171860.000000 22467.000000 159692.000000 22672.000000 153812.000000 22964.000000 147094.000000 22972.000000 146867.000000 23369.000000 141683.000000 26853.000000 107291.000000 27972.000000 99178.000000 28334.000000 97400.000000 28634.000000 95593.000000 31182.000000 84364.000000 31341.000000 83630.000000 31600.000000 82770.000000 32057.000000 81378.000000 34532.000000 74124.000000 35687.000000 71449.000000 36260.000000 70300.000000 36856.000000 69047.000000 38270.000000 66101.000000 38576.000000 65641.000000 39695.000000 64188.000000 44846.000000 57064.000000 46245.000000 55024.000000 48521.000000 52222.000000 50917.000000 49900.000000 54830.000000 46031.000000 62417.000000 41099.000000 64720.000000 39408.000000 69311.000000 36511.000000 72946.000000 34463.000000 77490.000000 32560.000000 79509.000000 31771.000000 81879.000000 30797.000000 85045.000000 29594.000000 87714.000000 28762.000000 87850.000000 28723.000000 88316.000000 28584.000000 89999.000000 28203.000000 93257.000000 27364.000000 96138.000000 26840.000000 98203.000000 26529.000000 105922.000000 25287.000000 121227.000000 23574.000000 125192.000000 23261.000000 129524.000000 22940.000000 134339.000000 22631.000000 143002.000000 22215.000000 146078.000000 22103.000000 151729.000000 21938.000000 176171.000000 21292.000000 eaf/inst/extdata/run.sh0000755000175000017500000000304013534247654014723 0ustar nileshnilesh#!/bin/sh # Reproduce the examples described in # # Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Exploratory # analysis of stochastic local search algorithms in biobjective # optimization. In EMAA, pages X-Y, publisher, 2009. # # The directory containing the programs eaf, eafplot.pl and eafdiff.pl # must be in your PATH. For example, to link the programs to ~/bin # ## mkdir -p ~/bin ## ln -s eaftools/eaf/eaf ~/bin/eaf ## ln -s eaftools/eafplot/eafplot.pl ~/bin/eafplot.pl ## ln -s eaftools/eafplot/eafdiff.pl ~/bin/eafdiff.pl # # and uncomment the following line: # #PATH=$PATH:~/bin/ # # You may add the above line to your startup scripts (~/.profile, # ~/.bashrc, ~/.shrc or similar) to make its effect permanent. # error () { echo "$0: example \`$@\' FAILED!" exit 1 } verbose () { echo "==== EXAMPLE: $@" eval $@ || error $@ echo "=====================================================================" } verbose 'eafplot.pl example1_dat' verbose 'eafplot.pl --best --median --worst --percentiles=25,75 r15_dat r50_dat r200_dat' verbose 'eafdiff.pl --full --left="Algorithm 1" ALG_1_dat --right="Algorithm 2" ALG_2_dat' verbose 'eafdiff.pl --left="Algorithm 1" ALG_1_dat --right="Algorithm 2" ALG_2_dat' verbose eafplot.pl n75_dat verbose eafplot.pl p75_dat verbose 'eafdiff.pl --left="WRoTS, l=100, w=10" --right="WRoTS, l=10, w=100" wrots_l100w10_dat wrots_l10w100_dat' verbose 'eafdiff.pl --left="TPLS" --right="Restart" tpls rest' # Cleanup rm -f Rplots.ps *.R *.med *.eaf *.best *.diff *.worst att_*.p?? eaf/inst/extdata/rest0000644000175000017500000065521114045207023014455 0ustar nileshnilesh21432.000000 170033.000000 21575.000000 163444.000000 21911.000000 152237.000000 22456.000000 144380.000000 23092.000000 131413.000000 23743.000000 123919.000000 24128.000000 118498.000000 23297.000000 124753.000000 25450.000000 104447.000000 25162.000000 108135.000000 25407.000000 106212.000000 25864.000000 101557.000000 26326.000000 99368.000000 27500.000000 92857.000000 26473.000000 97348.000000 27097.000000 93980.000000 28917.000000 87654.000000 29034.000000 86959.000000 29617.000000 85585.000000 29185.000000 86593.000000 29659.000000 85404.000000 30258.000000 84289.000000 32984.000000 76695.000000 34962.000000 72899.000000 33086.000000 76291.000000 34183.000000 75290.000000 35647.000000 71902.000000 34870.000000 73626.000000 38459.000000 67024.000000 36337.000000 70255.000000 38365.000000 67229.000000 39092.000000 65234.000000 42173.000000 60504.000000 42879.000000 59936.000000 44805.000000 58096.000000 43929.000000 58715.000000 44468.000000 58632.000000 48333.000000 53195.000000 49693.000000 52101.000000 50028.000000 50673.000000 51643.000000 50189.000000 52704.000000 48895.000000 51798.000000 49894.000000 55670.000000 46203.000000 56802.000000 45006.000000 61895.000000 41433.000000 60434.000000 42638.000000 61085.000000 42587.000000 61861.000000 42170.000000 67037.000000 38706.000000 65195.000000 39693.000000 64092.000000 39853.000000 63212.000000 40957.000000 67505.000000 37965.000000 69680.000000 37253.000000 68823.000000 37441.000000 70786.000000 36430.000000 70631.000000 36780.000000 75267.000000 34449.000000 76283.000000 34252.000000 79226.000000 33263.000000 79013.000000 33307.000000 84556.000000 31146.000000 89377.000000 30605.000000 86767.000000 31128.000000 94707.000000 29412.000000 87021.000000 30862.000000 95927.000000 29006.000000 97813.000000 28604.000000 104174.000000 27341.000000 102971.000000 27539.000000 116787.000000 25461.000000 113574.000000 25970.000000 123291.000000 24956.000000 118770.000000 25242.000000 135191.000000 23865.000000 140501.000000 23596.000000 143796.000000 23240.000000 147329.000000 23133.000000 147888.000000 22966.000000 161142.000000 22476.000000 169074.000000 22264.000000 21282.000000 178446.000000 21718.000000 160290.000000 21380.000000 165022.000000 22412.000000 138299.000000 22940.000000 129524.000000 23583.000000 121560.000000 23110.000000 128594.000000 24278.000000 116194.000000 24675.000000 113958.000000 25255.000000 105304.000000 25608.000000 104167.000000 26817.000000 97678.000000 26330.000000 99855.000000 26463.000000 99362.000000 27637.000000 92932.000000 28001.000000 92928.000000 28203.000000 89999.000000 28051.000000 92632.000000 28653.000000 88642.000000 29292.000000 88277.000000 29659.000000 85404.000000 30965.000000 81787.000000 31813.000000 79979.000000 33465.000000 75430.000000 34612.000000 72812.000000 35817.000000 71061.000000 37294.000000 68166.000000 38929.000000 66679.000000 41487.000000 62621.000000 39936.000000 65103.000000 43107.000000 59445.000000 41823.000000 62355.000000 43267.000000 59355.000000 43695.000000 58182.000000 47523.000000 53627.000000 47564.000000 53596.000000 47838.000000 53594.000000 52081.000000 49312.000000 51376.000000 49744.000000 53569.000000 47890.000000 55413.000000 46664.000000 61342.000000 42032.000000 55647.000000 46636.000000 52931.000000 48063.000000 62115.000000 42021.000000 57576.000000 44747.000000 63827.000000 40905.000000 64621.000000 39562.000000 66027.000000 38446.000000 62616.000000 41708.000000 65577.000000 39552.000000 69376.000000 37026.000000 72109.000000 35793.000000 70678.000000 36594.000000 75014.000000 34428.000000 78787.000000 33197.000000 80529.000000 32347.000000 79667.000000 32825.000000 86211.000000 31210.000000 85344.000000 31338.000000 86565.000000 31105.000000 89743.000000 29922.000000 94503.000000 29155.000000 90772.000000 29715.000000 97439.000000 28672.000000 99891.000000 28071.000000 101054.000000 27990.000000 112604.000000 26060.000000 110608.000000 26530.000000 116711.000000 25680.000000 118726.000000 25248.000000 121132.000000 25073.000000 134116.000000 24048.000000 142903.000000 23238.000000 139533.000000 23717.000000 146910.000000 22992.000000 153860.000000 22801.000000 158794.000000 22517.000000 164380.000000 22376.000000 169491.000000 22301.000000 21394.000000 173086.000000 21552.000000 165258.000000 21846.000000 156878.000000 22223.000000 143318.000000 22487.000000 142974.000000 22545.000000 135710.000000 23747.000000 123861.000000 23879.000000 120249.000000 24191.000000 115678.000000 23814.000000 120535.000000 25222.000000 106670.000000 25410.000000 104743.000000 25854.000000 103682.000000 26144.000000 100303.000000 26473.000000 97348.000000 26577.000000 97129.000000 26713.000000 96729.000000 28860.000000 89133.000000 29256.000000 86815.000000 29671.000000 85428.000000 28911.000000 87568.000000 30415.000000 84793.000000 33005.000000 76766.000000 32689.000000 77166.000000 34784.000000 74676.000000 32959.000000 77015.000000 37234.000000 69567.000000 36311.000000 70297.000000 35684.000000 71910.000000 37423.000000 67527.000000 37933.000000 66961.000000 42362.000000 60068.000000 42277.000000 60664.000000 41107.000000 62913.000000 43204.000000 59135.000000 45681.000000 57042.000000 45835.000000 56875.000000 44413.000000 58222.000000 44737.000000 57902.000000 46556.000000 56004.000000 48113.000000 52925.000000 49092.000000 52303.000000 51660.000000 49854.000000 47735.000000 53288.000000 49936.000000 51743.000000 52207.000000 48823.000000 53483.000000 47744.000000 57022.000000 44996.000000 56033.000000 45844.000000 64184.000000 39947.000000 55101.000000 46273.000000 59887.000000 43183.000000 64610.000000 39806.000000 64753.000000 39286.000000 61910.000000 41269.000000 63267.000000 40557.000000 66027.000000 38446.000000 68913.000000 37343.000000 67876.000000 37733.000000 71538.000000 36756.000000 74736.000000 35347.000000 72839.000000 35435.000000 77509.000000 34076.000000 78211.000000 33259.000000 80862.000000 32686.000000 82781.000000 31631.000000 89803.000000 30444.000000 88467.000000 30502.000000 90255.000000 29792.000000 91259.000000 29536.000000 90802.000000 29709.000000 97027.000000 28604.000000 99359.000000 28069.000000 103274.000000 27563.000000 108713.000000 26643.000000 112010.000000 26215.000000 117912.000000 25987.000000 113155.000000 26153.000000 120684.000000 25311.000000 145504.000000 23167.000000 141970.000000 23397.000000 150546.000000 22881.000000 153124.000000 22679.000000 156028.000000 22589.000000 169103.000000 22280.000000 173371.000000 22242.000000 21282.000000 178446.000000 21345.000000 171328.000000 21462.000000 166889.000000 21666.000000 163384.000000 22452.000000 137262.000000 22907.000000 130824.000000 23045.000000 128455.000000 24595.000000 114626.000000 24138.000000 117255.000000 24729.000000 112882.000000 25287.000000 105922.000000 25450.000000 103377.000000 26181.000000 101220.000000 25819.000000 101788.000000 27097.000000 93980.000000 27671.000000 93066.000000 29007.000000 87936.000000 29231.000000 87907.000000 28134.000000 89998.000000 30947.000000 81958.000000 30614.000000 82598.000000 31177.000000 81107.000000 33927.000000 76336.000000 32900.000000 76763.000000 35522.000000 71207.000000 34348.000000 74290.000000 36091.000000 70631.000000 39030.000000 66844.000000 36756.000000 69429.000000 37435.000000 68746.000000 40821.000000 63503.000000 41196.000000 63167.000000 43721.000000 59823.000000 41865.000000 61270.000000 44331.000000 57979.000000 43748.000000 59079.000000 44702.000000 57705.000000 46523.000000 55713.000000 47124.000000 54800.000000 45728.000000 56344.000000 47510.000000 53432.000000 50160.000000 51319.000000 51714.000000 49936.000000 50041.000000 51357.000000 49983.000000 52094.000000 54481.000000 47813.000000 52132.000000 48405.000000 55500.000000 46088.000000 57745.000000 44716.000000 58723.000000 43671.000000 61008.000000 42066.000000 63408.000000 40262.000000 64050.000000 40046.000000 65651.000000 39370.000000 67308.000000 37813.000000 66581.000000 38496.000000 73392.000000 35441.000000 72679.000000 35821.000000 65823.000000 38715.000000 72873.000000 35679.000000 76759.000000 33735.000000 78705.000000 33339.000000 77973.000000 33364.000000 81912.000000 32200.000000 80800.000000 32548.000000 88737.000000 30432.000000 84034.000000 31527.000000 93328.000000 29267.000000 89475.000000 30074.000000 100201.000000 28192.000000 102496.000000 27627.000000 109781.000000 26389.000000 108650.000000 26647.000000 110367.000000 26374.000000 116450.000000 25384.000000 115747.000000 25597.000000 130047.000000 24516.000000 139242.000000 23687.000000 140666.000000 23453.000000 143357.000000 23429.000000 146179.000000 22979.000000 153889.000000 22683.000000 159692.000000 22467.000000 167581.000000 22415.000000 177206.000000 22184.000000 21356.000000 175946.000000 21385.000000 173116.000000 21725.000000 157132.000000 21879.000000 155578.000000 21953.000000 151069.000000 22211.000000 143043.000000 22938.000000 131710.000000 23381.000000 125237.000000 23802.000000 119919.000000 24158.000000 118227.000000 24242.000000 115239.000000 25360.000000 104494.000000 26210.000000 101003.000000 26216.000000 100342.000000 26963.000000 96235.000000 27500.000000 92857.000000 27148.000000 95047.000000 27913.000000 90720.000000 27346.000000 93323.000000 28203.000000 89999.000000 28708.000000 88996.000000 28966.000000 87329.000000 31225.000000 80631.000000 30079.000000 84055.000000 29457.000000 85838.000000 30611.000000 83343.000000 33530.000000 76097.000000 32900.000000 76763.000000 34134.000000 74291.000000 35100.000000 73419.000000 37247.000000 68532.000000 36452.000000 69296.000000 38295.000000 66863.000000 36299.000000 70001.000000 40310.000000 63667.000000 41752.000000 61665.000000 40193.000000 63956.000000 43761.000000 58870.000000 44247.000000 58431.000000 46347.000000 55173.000000 42650.000000 60391.000000 47277.000000 54035.000000 50316.000000 50960.000000 51791.000000 49471.000000 49024.000000 53217.000000 49983.000000 51025.000000 49241.000000 51576.000000 55952.000000 45896.000000 55614.000000 46171.000000 59904.000000 43877.000000 56320.000000 45596.000000 61331.000000 42027.000000 60956.000000 42579.000000 58185.000000 44151.000000 63238.000000 40458.000000 63759.000000 39863.000000 65849.000000 38469.000000 67648.000000 37838.000000 67619.000000 38289.000000 69136.000000 37712.000000 71233.000000 35948.000000 70826.000000 36294.000000 69767.000000 36921.000000 74870.000000 34980.000000 78736.000000 33190.000000 76994.000000 34806.000000 80913.000000 32975.000000 79051.000000 33090.000000 82046.000000 32365.000000 83178.000000 31706.000000 90920.000000 29864.000000 84079.000000 31594.000000 88938.000000 30035.000000 100232.000000 28285.000000 96520.000000 28916.000000 98461.000000 28610.000000 102786.000000 27604.000000 104172.000000 27483.000000 109263.000000 26558.000000 116516.000000 25481.000000 123410.000000 24863.000000 122186.000000 25104.000000 127433.000000 24425.000000 140581.000000 23606.000000 144577.000000 23174.000000 146955.000000 22981.000000 153124.000000 22679.000000 162143.000000 22561.000000 174270.000000 22304.000000 21415.000000 176559.000000 21436.000000 170273.000000 21767.000000 157608.000000 21906.000000 150691.000000 22560.000000 141509.000000 22848.000000 136696.000000 23010.000000 132820.000000 23819.000000 122421.000000 23904.000000 117520.000000 25219.000000 106971.000000 25184.000000 109331.000000 25424.000000 105042.000000 25892.000000 103614.000000 26233.000000 100825.000000 26846.000000 96828.000000 26941.000000 96083.000000 27097.000000 93980.000000 27500.000000 92857.000000 28203.000000 89999.000000 28974.000000 87079.000000 28759.000000 87780.000000 30238.000000 84474.000000 29744.000000 85124.000000 31361.000000 80873.000000 32321.000000 79644.000000 34023.000000 75284.000000 35262.000000 71725.000000 34917.000000 72960.000000 36104.000000 69946.000000 38658.000000 65510.000000 40176.000000 63534.000000 41100.000000 62570.000000 44070.000000 57962.000000 43434.000000 58986.000000 43063.000000 59814.000000 46283.000000 55939.000000 49517.000000 51845.000000 45191.000000 57036.000000 51637.000000 50367.000000 48804.000000 53262.000000 49260.000000 52196.000000 50247.000000 51237.000000 51693.000000 50334.000000 52053.000000 49434.000000 54327.000000 47558.000000 56450.000000 45654.000000 56849.000000 45417.000000 58267.000000 44227.000000 59005.000000 43882.000000 60816.000000 42616.000000 58194.000000 44318.000000 64685.000000 39224.000000 62864.000000 41291.000000 64342.000000 40021.000000 69096.000000 37340.000000 68017.000000 37689.000000 65938.000000 38567.000000 74322.000000 34949.000000 73095.000000 35381.000000 76855.000000 34510.000000 83506.000000 32224.000000 78511.000000 33501.000000 86400.000000 31083.000000 83997.000000 31711.000000 84591.000000 31334.000000 87188.000000 30919.000000 89854.000000 30139.000000 89988.000000 29947.000000 94246.000000 29128.000000 98305.000000 28312.000000 102355.000000 27824.000000 109069.000000 26735.000000 107617.000000 26823.000000 115359.000000 25691.000000 121053.000000 25013.000000 120969.000000 25017.000000 125570.000000 24546.000000 130989.000000 24133.000000 141415.000000 23454.000000 145364.000000 23094.000000 153124.000000 22679.000000 156028.000000 22589.000000 172355.000000 22342.000000 177728.000000 22270.000000 21396.000000 172746.000000 21527.000000 168694.000000 21552.000000 165258.000000 21598.000000 161266.000000 22052.000000 153157.000000 22778.000000 135986.000000 22949.000000 134452.000000 23045.000000 128455.000000 24294.000000 119515.000000 24993.000000 110962.000000 25054.000000 109344.000000 25493.000000 106511.000000 25150.000000 109141.000000 25858.000000 100867.000000 27365.000000 94585.000000 27778.000000 93690.000000 29218.000000 87481.000000 28872.000000 87704.000000 29715.000000 85451.000000 28851.000000 87867.000000 29674.000000 85539.000000 30924.000000 83490.000000 29326.000000 86066.000000 31656.000000 80285.000000 33263.000000 76175.000000 33774.000000 75156.000000 36094.000000 71738.000000 33927.000000 74870.000000 35842.000000 73684.000000 36222.000000 70279.000000 36719.000000 68818.000000 40198.000000 64151.000000 38391.000000 66021.000000 39553.000000 64584.000000 39136.000000 65061.000000 44932.000000 57212.000000 42741.000000 60465.000000 45255.000000 56551.000000 46223.000000 55311.000000 46601.000000 54492.000000 48314.000000 53159.000000 51548.000000 49594.000000 47275.000000 54055.000000 50908.000000 50262.000000 50517.000000 51218.000000 51103.000000 49835.000000 54932.000000 46999.000000 55419.000000 46332.000000 60502.000000 42190.000000 56937.000000 45118.000000 62280.000000 41029.000000 64441.000000 39755.000000 61443.000000 41595.000000 67979.000000 37907.000000 66344.000000 38945.000000 68994.000000 37514.000000 70355.000000 36601.000000 73935.000000 35380.000000 73352.000000 35562.000000 76269.000000 34403.000000 70708.000000 36396.000000 76331.000000 34350.000000 80452.000000 32786.000000 81636.000000 32485.000000 81940.000000 32430.000000 84193.000000 31479.000000 84364.000000 31182.000000 94277.000000 29029.000000 86333.000000 30978.000000 93392.000000 29499.000000 95196.000000 28934.000000 93917.000000 29383.000000 96709.000000 28788.000000 99019.000000 28171.000000 107928.000000 27066.000000 104609.000000 27213.000000 109567.000000 26772.000000 121787.000000 25219.000000 129976.000000 24247.000000 129699.000000 24609.000000 133248.000000 23958.000000 142933.000000 23357.000000 143983.000000 23115.000000 159272.000000 22521.000000 167974.000000 22448.000000 172715.000000 22402.000000 178760.000000 22357.000000 21355.000000 168458.000000 21849.000000 154241.000000 21552.000000 165258.000000 22058.000000 148969.000000 22543.000000 142610.000000 22802.000000 133114.000000 23787.000000 121009.000000 23484.000000 127889.000000 24420.000000 114974.000000 25456.000000 105137.000000 26473.000000 98641.000000 25900.000000 102314.000000 26801.000000 95553.000000 26453.000000 100351.000000 27346.000000 93323.000000 28443.000000 92822.000000 27851.000000 92969.000000 29290.000000 89254.000000 28704.000000 89406.000000 29938.000000 85970.000000 30028.000000 84425.000000 31326.000000 81117.000000 32633.000000 78955.000000 30923.000000 81942.000000 33241.000000 77320.000000 33804.000000 74471.000000 34843.000000 72712.000000 35493.000000 72152.000000 36251.000000 70327.000000 34575.000000 73677.000000 39519.000000 64276.000000 37711.000000 67676.000000 38297.000000 65976.000000 43777.000000 58290.000000 40180.000000 63922.000000 41392.000000 61159.000000 44707.000000 57748.000000 43481.000000 59520.000000 43206.000000 60288.000000 44797.000000 57322.000000 47341.000000 54318.000000 49025.000000 52144.000000 48438.000000 52577.000000 47668.000000 52857.000000 53957.000000 47901.000000 51284.000000 50427.000000 55314.000000 46851.000000 57448.000000 44719.000000 56229.000000 45465.000000 58399.000000 44145.000000 62143.000000 41502.000000 57341.000000 44736.000000 61001.000000 42027.000000 64759.000000 39753.000000 63807.000000 40464.000000 69006.000000 37626.000000 67308.000000 37813.000000 65614.000000 39492.000000 71049.000000 36673.000000 75279.000000 34970.000000 76245.000000 34583.000000 72856.000000 35267.000000 81508.000000 32705.000000 76996.000000 34517.000000 77872.000000 33343.000000 81724.000000 32445.000000 82518.000000 31946.000000 78227.000000 33131.000000 86181.000000 31243.000000 91129.000000 29944.000000 88680.000000 30182.000000 93135.000000 29640.000000 99300.000000 28018.000000 97348.000000 28656.000000 99884.000000 28000.000000 109781.000000 26389.000000 114882.000000 25699.000000 124788.000000 24775.000000 129086.000000 24505.000000 133669.000000 24147.000000 135886.000000 23848.000000 146179.000000 22979.000000 146406.000000 22971.000000 155909.000000 22732.000000 159465.000000 22475.000000 163183.000000 22391.000000 167988.000000 22359.000000 173623.000000 22351.000000 21388.000000 170358.000000 21879.000000 155578.000000 22212.000000 143825.000000 22198.000000 145612.000000 22835.000000 135237.000000 23158.000000 129477.000000 23896.000000 117595.000000 24728.000000 112066.000000 25194.000000 108753.000000 25659.000000 104389.000000 25864.000000 101557.000000 26823.000000 98924.000000 26491.000000 99844.000000 27097.000000 93980.000000 27442.000000 93462.000000 27913.000000 90720.000000 28851.000000 87688.000000 30006.000000 85095.000000 29761.000000 85275.000000 28911.000000 87568.000000 31645.000000 80678.000000 35887.000000 71186.000000 33595.000000 76481.000000 34628.000000 75679.000000 35266.000000 71477.000000 37703.000000 67484.000000 36666.000000 69436.000000 38326.000000 66737.000000 37620.000000 68274.000000 40197.000000 63386.000000 45711.000000 55999.000000 41396.000000 62369.000000 45303.000000 56398.000000 46434.000000 55901.000000 47149.000000 54630.000000 48219.000000 54313.000000 51204.000000 51531.000000 47484.000000 54370.000000 48517.000000 53705.000000 52238.000000 49799.000000 57698.000000 45163.000000 52383.000000 48592.000000 54456.000000 46807.000000 59896.000000 43099.000000 60320.000000 42746.000000 64530.000000 40115.000000 58003.000000 44336.000000 65857.000000 39345.000000 64325.000000 40197.000000 64891.000000 39645.000000 66486.000000 38361.000000 70243.000000 36585.000000 70320.000000 36408.000000 68713.000000 37206.000000 77948.000000 33625.000000 73428.000000 35018.000000 77962.000000 33550.000000 77728.000000 33708.000000 81318.000000 32824.000000 83294.000000 32008.000000 79522.000000 33412.000000 86383.000000 30983.000000 88384.000000 30529.000000 93551.000000 29054.000000 91204.000000 29856.000000 98281.000000 28288.000000 101207.000000 27956.000000 103260.000000 27480.000000 114448.000000 26163.000000 118843.000000 25239.000000 125050.000000 24646.000000 144143.000000 23437.000000 145570.000000 23238.000000 149221.000000 23101.000000 156012.000000 22615.000000 161007.000000 22465.000000 172356.000000 22264.000000 176521.000000 22179.000000 21317.000000 172106.000000 22089.000000 150800.000000 21501.000000 165944.000000 21906.000000 156256.000000 22442.000000 140132.000000 22400.000000 141109.000000 23436.000000 126061.000000 23169.000000 127725.000000 24746.000000 112029.000000 24700.000000 112066.000000 25360.000000 107848.000000 25505.000000 106753.000000 26221.000000 100132.000000 26134.000000 101533.000000 27404.000000 95152.000000 26740.000000 96625.000000 27636.000000 93590.000000 28095.000000 90134.000000 28562.000000 89086.000000 29666.000000 86265.000000 28809.000000 88149.000000 31473.000000 80759.000000 31204.000000 81375.000000 32756.000000 77247.000000 33377.000000 75814.000000 35762.000000 70757.000000 33607.000000 75730.000000 33344.000000 77081.000000 35096.000000 72906.000000 35698.000000 71408.000000 37087.000000 67978.000000 41087.000000 62518.000000 41990.000000 60598.000000 38741.000000 66124.000000 41422.000000 61561.000000 43872.000000 58915.000000 43006.000000 59484.000000 47466.000000 54667.000000 45023.000000 58100.000000 41662.000000 60753.000000 47746.000000 54218.000000 49249.000000 52304.000000 50504.000000 50168.000000 48923.000000 52352.000000 51391.000000 49606.000000 52863.000000 48317.000000 53882.000000 47368.000000 57443.000000 44867.000000 60598.000000 42239.000000 61650.000000 42020.000000 60410.000000 42677.000000 60071.000000 43087.000000 64301.000000 40310.000000 67460.000000 37682.000000 65030.000000 39038.000000 70241.000000 37258.000000 69336.000000 37479.000000 72345.000000 35840.000000 80026.000000 32908.000000 73690.000000 34907.000000 81153.000000 32593.000000 80180.000000 32857.000000 82659.000000 32035.000000 94821.000000 29173.000000 89908.000000 29885.000000 91785.000000 29502.000000 98050.000000 28392.000000 105417.000000 27294.000000 108217.000000 26567.000000 111324.000000 26157.000000 113745.000000 26045.000000 123914.000000 24727.000000 119658.000000 25061.000000 135580.000000 23810.000000 143452.000000 23248.000000 142907.000000 23387.000000 146955.000000 22981.000000 158103.000000 22555.000000 159692.000000 22467.000000 162996.000000 22456.000000 165137.000000 22393.000000 178070.000000 22263.000000 21282.000000 178446.000000 21371.000000 174156.000000 21398.000000 167114.000000 21987.000000 152655.000000 22206.000000 149971.000000 22488.000000 138207.000000 22883.000000 132369.000000 23352.000000 125577.000000 24295.000000 116014.000000 23890.000000 119094.000000 25533.000000 105616.000000 25699.000000 102720.000000 25712.000000 102293.000000 26086.000000 99559.000000 27346.000000 93323.000000 27233.000000 93580.000000 28094.000000 91927.000000 27364.000000 93257.000000 28584.000000 88316.000000 31562.000000 81081.000000 30458.000000 83091.000000 29984.000000 84687.000000 32118.000000 79021.000000 32659.000000 78189.000000 34065.000000 74991.000000 34631.000000 72795.000000 36227.000000 69649.000000 35792.000000 70278.000000 37741.000000 67183.000000 39194.000000 64552.000000 41349.000000 61692.000000 42895.000000 60520.000000 43509.000000 59090.000000 46570.000000 55994.000000 43748.000000 58726.000000 48021.000000 53534.000000 47312.000000 54234.000000 48454.000000 52535.000000 48549.000000 52497.000000 49384.000000 51870.000000 50322.000000 50413.000000 51675.000000 49483.000000 54145.000000 47076.000000 53400.000000 48284.000000 54684.000000 46528.000000 57071.000000 44657.000000 57016.000000 45512.000000 58773.000000 43880.000000 60750.000000 42780.000000 61242.000000 41988.000000 63578.000000 40181.000000 60904.000000 42433.000000 63485.000000 41040.000000 64959.000000 39856.000000 69914.000000 37005.000000 65625.000000 38785.000000 71449.000000 35687.000000 75530.000000 34681.000000 75593.000000 34612.000000 76714.000000 33930.000000 80238.000000 32760.000000 79783.000000 32828.000000 79695.000000 32971.000000 87247.000000 30606.000000 83616.000000 31564.000000 91503.000000 29663.000000 94653.000000 29294.000000 90393.000000 29778.000000 97874.000000 28112.000000 100330.000000 27913.000000 111795.000000 26320.000000 112045.000000 26226.000000 119156.000000 25297.000000 128800.000000 24619.000000 137557.000000 23695.000000 138914.000000 23487.000000 147725.000000 23105.000000 153124.000000 22679.000000 151188.000000 22812.000000 162377.000000 22478.000000 170426.000000 22465.000000 179222.000000 22209.000000 21356.000000 175946.000000 21408.000000 170527.000000 21578.000000 164695.000000 22057.000000 152704.000000 22081.000000 146649.000000 22430.000000 138767.000000 22705.000000 136890.000000 23372.000000 127016.000000 24183.000000 120373.000000 24664.000000 112043.000000 24612.000000 112713.000000 25789.000000 101859.000000 25515.000000 106175.000000 26796.000000 98334.000000 26921.000000 96876.000000 26731.000000 99094.000000 27097.000000 93980.000000 28000.000000 90851.000000 28458.000000 89741.000000 29205.000000 87847.000000 28134.000000 89998.000000 30442.000000 83991.000000 29326.000000 86066.000000 31195.000000 81725.000000 29799.000000 84724.000000 31692.000000 79882.000000 35533.000000 72437.000000 34838.000000 73363.000000 34542.000000 74026.000000 36141.000000 70122.000000 35778.000000 71294.000000 36410.000000 69788.000000 37544.000000 67926.000000 38626.000000 66298.000000 42277.000000 60664.000000 40977.000000 62035.000000 43965.000000 58313.000000 42817.000000 59771.000000 43586.000000 58900.000000 48195.000000 53113.000000 47685.000000 53319.000000 49059.000000 52025.000000 52898.000000 47802.000000 51048.000000 50191.000000 53989.000000 47598.000000 52304.000000 48705.000000 55629.000000 46239.000000 57923.000000 44151.000000 56199.000000 45777.000000 62781.000000 40859.000000 60673.000000 42757.000000 61545.000000 41463.000000 62622.000000 40870.000000 66715.000000 38453.000000 65575.000000 39287.000000 67680.000000 38035.000000 72245.000000 36446.000000 70217.000000 36718.000000 67929.000000 37641.000000 72539.000000 35858.000000 73687.000000 35086.000000 76425.000000 34354.000000 78619.000000 33726.000000 77484.000000 33878.000000 81896.000000 32792.000000 85124.000000 31370.000000 82239.000000 31869.000000 84542.000000 31618.000000 89448.000000 30607.000000 85361.000000 31190.000000 90673.000000 29925.000000 96290.000000 28576.000000 99108.000000 28262.000000 101409.000000 27671.000000 108983.000000 26776.000000 113505.000000 25764.000000 115678.000000 25655.000000 128710.000000 24347.000000 134465.000000 24100.000000 142903.000000 23238.000000 138646.000000 23509.000000 147669.000000 23105.000000 153673.000000 22689.000000 155801.000000 22597.000000 169647.000000 22235.000000 165900.000000 22394.000000 176521.000000 22179.000000 21305.000000 173801.000000 21481.000000 165897.000000 21485.000000 165819.000000 22107.000000 150060.000000 22209.000000 144719.000000 22679.000000 135381.000000 23045.000000 128455.000000 23755.000000 122839.000000 24304.000000 117007.000000 24138.000000 118406.000000 25779.000000 104211.000000 25072.000000 109824.000000 26683.000000 98111.000000 25980.000000 101387.000000 25869.000000 102833.000000 26803.000000 96412.000000 27233.000000 93580.000000 27913.000000 90720.000000 29740.000000 85621.000000 29190.000000 86466.000000 31742.000000 79735.000000 30328.000000 83648.000000 30672.000000 83193.000000 32581.000000 77561.000000 32577.000000 77813.000000 35084.000000 71845.000000 35966.000000 71188.000000 36371.000000 70352.000000 36417.000000 69299.000000 42833.000000 60119.000000 44841.000000 56789.000000 39389.000000 64705.000000 41282.000000 62014.000000 43763.000000 59780.000000 44375.000000 57935.000000 46059.000000 56013.000000 44923.000000 56345.000000 50155.000000 51275.000000 47014.000000 54013.000000 49729.000000 51348.000000 49390.000000 51660.000000 50545.000000 49948.000000 54652.000000 46962.000000 54924.000000 46523.000000 59069.000000 43825.000000 55861.000000 46451.000000 60016.000000 42723.000000 59268.000000 43272.000000 62696.000000 40999.000000 65372.000000 39939.000000 67118.000000 38178.000000 64032.000000 40128.000000 66621.000000 38670.000000 68170.000000 37920.000000 70425.000000 36767.000000 70960.000000 36740.000000 69153.000000 37263.000000 73514.000000 35456.000000 72847.000000 35474.000000 74703.000000 34657.000000 76715.000000 34057.000000 80080.000000 33133.000000 83429.000000 32357.000000 85623.000000 31177.000000 83630.000000 31341.000000 87833.000000 30728.000000 88923.000000 30317.000000 93071.000000 29629.000000 89475.000000 30074.000000 94458.000000 28960.000000 95565.000000 28797.000000 101906.000000 27643.000000 107567.000000 26775.000000 106895.000000 26917.000000 116422.000000 25557.000000 120382.000000 25132.000000 134643.000000 23960.000000 144890.000000 23368.000000 146873.000000 23172.000000 153180.000000 22809.000000 158742.000000 22503.000000 165574.000000 22413.000000 175659.000000 22240.000000 176436.000000 22141.000000 21370.000000 167892.000000 22226.000000 145187.000000 22554.000000 139877.000000 23013.000000 130313.000000 23615.000000 129367.000000 23842.000000 120670.000000 24174.000000 117409.000000 25100.000000 107106.000000 26095.000000 101897.000000 25603.000000 102974.000000 26286.000000 99437.000000 26801.000000 95553.000000 27108.000000 94992.000000 27437.000000 93505.000000 29743.000000 85752.000000 28568.000000 89995.000000 30470.000000 83296.000000 30614.000000 82598.000000 30382.000000 83430.000000 30461.000000 83411.000000 32453.000000 78256.000000 33397.000000 76377.000000 35824.000000 71144.000000 33717.000000 75664.000000 38329.000000 67238.000000 36253.000000 70422.000000 35111.000000 71610.000000 36880.000000 68557.000000 40071.000000 63799.000000 39816.000000 64793.000000 43186.000000 59837.000000 43701.000000 58147.000000 46615.000000 54819.000000 45310.000000 56844.000000 49921.000000 51240.000000 49451.000000 51748.000000 49764.000000 51438.000000 50135.000000 51078.000000 49473.000000 51729.000000 53949.000000 47853.000000 56069.000000 45642.000000 52758.000000 48582.000000 54948.000000 47431.000000 60034.000000 43139.000000 60532.000000 42160.000000 60406.000000 42251.000000 62941.000000 41186.000000 63866.000000 40472.000000 65562.000000 39483.000000 63495.000000 40719.000000 67190.000000 38017.000000 69565.000000 36927.000000 71133.000000 36067.000000 73966.000000 35617.000000 75537.000000 34241.000000 78079.000000 33831.000000 81057.000000 32499.000000 83569.000000 31823.000000 81908.000000 31998.000000 86780.000000 31080.000000 89383.000000 30206.000000 95351.000000 28809.000000 97135.000000 28573.000000 97874.000000 28112.000000 98987.000000 27994.000000 105179.000000 27539.000000 113548.000000 26180.000000 117512.000000 25601.000000 122572.000000 25091.000000 137286.000000 23936.000000 143452.000000 23248.000000 152922.000000 23114.000000 138583.000000 23515.000000 153673.000000 22689.000000 162458.000000 22395.000000 168478.000000 22312.000000 165900.000000 22394.000000 178070.000000 22263.000000 21320.000000 175393.000000 21603.000000 171529.000000 21990.000000 150018.000000 21630.000000 161836.000000 22598.000000 137569.000000 22589.000000 138685.000000 23684.000000 122015.000000 23262.000000 127943.000000 24240.000000 117802.000000 24935.000000 109777.000000 25611.000000 103973.000000 25591.000000 105147.000000 26018.000000 100706.000000 26593.000000 98708.000000 27233.000000 95896.000000 27592.000000 93918.000000 26672.000000 97671.000000 29385.000000 85858.000000 27689.000000 92781.000000 28871.000000 88386.000000 28632.000000 88626.000000 30434.000000 84887.000000 31049.000000 83189.000000 30626.000000 84121.000000 30680.000000 83194.000000 32414.000000 78594.000000 32621.000000 77878.000000 34631.000000 72795.000000 34101.000000 75477.000000 34992.000000 72668.000000 35692.000000 71888.000000 37209.000000 67841.000000 36608.000000 69736.000000 39456.000000 64204.000000 43070.000000 59613.000000 42151.000000 61035.000000 46036.000000 55423.000000 47885.000000 53259.000000 47341.000000 54191.000000 46841.000000 54308.000000 53270.000000 48006.000000 50989.000000 50684.000000 55306.000000 46534.000000 52194.000000 48976.000000 54132.000000 47436.000000 56272.000000 45320.000000 58435.000000 44108.000000 60446.000000 42187.000000 57648.000000 44547.000000 64453.000000 39623.000000 66628.000000 38645.000000 65807.000000 39390.000000 68713.000000 37206.000000 70212.000000 36734.000000 70712.000000 36715.000000 74655.000000 34669.000000 75190.000000 34131.000000 74044.000000 35276.000000 76039.000000 33841.000000 79608.000000 33616.000000 84418.000000 31533.000000 82706.000000 32026.000000 85829.000000 30967.000000 89022.000000 30020.000000 97026.000000 28617.000000 96042.000000 29004.000000 103620.000000 27481.000000 101380.000000 27774.000000 108086.000000 26948.000000 111363.000000 26257.000000 115640.000000 25880.000000 121211.000000 25007.000000 136892.000000 23761.000000 136267.000000 23908.000000 146955.000000 22981.000000 153124.000000 22679.000000 155090.000000 22673.000000 167974.000000 22448.000000 173643.000000 22215.000000 21408.000000 170527.000000 21459.000000 166147.000000 21888.000000 151581.000000 22108.000000 145819.000000 22426.000000 140598.000000 22401.000000 140827.000000 23661.000000 122640.000000 23479.000000 124544.000000 23984.000000 116770.000000 25483.000000 103996.000000 25698.000000 102629.000000 25836.000000 102048.000000 26026.000000 101586.000000 26302.000000 99353.000000 27982.000000 91856.000000 27097.000000 93980.000000 27991.000000 90925.000000 28612.000000 89838.000000 28898.000000 87314.000000 29651.000000 86152.000000 30947.000000 81958.000000 30609.000000 83121.000000 32116.000000 78674.000000 34500.000000 73754.000000 32462.000000 78139.000000 35159.000000 72397.000000 36982.000000 69231.000000 37253.000000 68388.000000 38448.000000 66467.000000 40819.000000 62927.000000 42294.000000 60761.000000 40523.000000 63947.000000 47608.000000 53982.000000 47474.000000 53983.000000 44643.000000 57054.000000 48427.000000 53412.000000 48969.000000 52355.000000 51727.000000 49698.000000 49251.000000 51680.000000 54387.000000 46474.000000 54244.000000 47286.000000 57853.000000 44760.000000 54250.000000 47140.000000 58577.000000 43702.000000 60031.000000 42623.000000 60243.000000 42376.000000 61941.000000 41533.000000 63582.000000 40661.000000 66811.000000 38735.000000 65258.000000 39562.000000 67147.000000 38430.000000 66411.000000 39004.000000 67671.000000 37849.000000 69294.000000 36987.000000 75640.000000 34722.000000 72426.000000 35321.000000 74473.000000 35061.000000 78237.000000 33977.000000 78262.000000 33592.000000 81921.000000 31890.000000 86844.000000 30975.000000 83828.000000 31723.000000 89597.000000 29909.000000 90558.000000 29741.000000 97834.000000 28120.000000 94649.000000 28938.000000 100686.000000 27950.000000 108973.000000 26704.000000 103869.000000 27375.000000 114027.000000 26344.000000 116166.000000 25634.000000 123091.000000 25200.000000 131552.000000 24199.000000 133679.000000 24051.000000 129964.000000 24500.000000 146449.000000 22991.000000 152820.000000 22984.000000 158665.000000 22638.000000 165073.000000 22582.000000 165815.000000 22356.000000 177300.000000 22220.000000 21408.000000 171051.000000 21980.000000 152888.000000 22452.000000 137262.000000 22845.000000 132464.000000 23096.000000 130037.000000 23890.000000 119094.000000 25400.000000 104914.000000 25828.000000 102098.000000 26012.000000 101176.000000 26102.000000 100243.000000 26840.000000 96138.000000 26536.000000 97135.000000 27097.000000 93980.000000 27799.000000 92972.000000 28095.000000 90134.000000 28797.000000 88023.000000 30036.000000 86201.000000 30525.000000 83677.000000 32241.000000 78288.000000 34413.000000 73757.000000 33567.000000 76134.000000 36472.000000 71176.000000 34858.000000 73042.000000 37979.000000 66721.000000 40891.000000 62981.000000 39635.000000 65562.000000 43864.000000 59569.000000 42568.000000 60258.000000 42452.000000 60301.000000 46497.000000 54796.000000 45520.000000 56841.000000 48946.000000 52877.000000 51249.000000 50072.000000 52306.000000 49368.000000 50917.000000 50198.000000 49476.000000 52002.000000 56444.000000 45979.000000 54069.000000 47474.000000 53073.000000 48239.000000 53603.000000 47591.000000 55116.000000 46219.000000 57852.000000 44422.000000 57150.000000 45080.000000 62679.000000 40753.000000 60183.000000 42650.000000 64355.000000 39707.000000 63442.000000 40359.000000 69194.000000 37474.000000 63118.000000 40366.000000 68401.000000 38179.000000 65713.000000 38766.000000 69206.000000 37312.000000 69715.000000 37076.000000 71966.000000 35907.000000 71105.000000 36005.000000 76551.000000 34080.000000 78186.000000 33366.000000 77128.000000 33701.000000 81915.000000 32302.000000 89077.000000 30315.000000 89908.000000 29885.000000 89572.000000 30219.000000 85756.000000 30906.000000 88412.000000 30334.000000 91289.000000 29530.000000 96497.000000 28791.000000 94182.000000 29040.000000 101910.000000 27812.000000 103266.000000 27694.000000 113026.000000 26072.000000 111485.000000 26367.000000 117934.000000 25555.000000 121374.000000 25124.000000 133268.000000 23925.000000 122359.000000 24938.000000 136008.000000 23877.000000 146406.000000 22971.000000 154577.000000 22676.000000 156028.000000 22589.000000 163410.000000 22383.000000 21317.000000 172106.000000 21602.000000 160303.000000 21933.000000 155583.000000 22468.000000 138191.000000 23178.000000 128293.000000 23606.000000 121175.000000 24057.000000 119208.000000 24969.000000 111422.000000 25289.000000 106501.000000 25968.000000 101470.000000 25864.000000 101557.000000 26453.000000 98771.000000 27097.000000 93980.000000 26803.000000 96412.000000 28281.000000 90204.000000 28461.000000 88925.000000 27958.000000 91074.000000 29371.000000 86906.000000 29609.000000 86063.000000 30114.000000 84402.000000 32425.000000 78251.000000 32581.000000 77758.000000 34148.000000 75104.000000 34531.000000 74257.000000 35031.000000 72886.000000 33324.000000 75968.000000 36374.000000 70546.000000 37639.000000 67713.000000 35111.000000 71610.000000 39910.000000 64911.000000 38423.000000 67579.000000 40166.000000 64616.000000 40469.000000 64155.000000 45451.000000 56215.000000 43148.000000 59918.000000 43452.000000 59192.000000 46256.000000 55678.000000 44906.000000 57692.000000 47832.000000 53932.000000 48448.000000 53056.000000 51041.000000 50483.000000 53934.000000 47912.000000 51756.000000 49690.000000 52371.000000 49488.000000 54928.000000 47437.000000 58489.000000 44197.000000 56074.000000 45707.000000 61198.000000 41557.000000 59744.000000 42997.000000 63336.000000 40786.000000 63741.000000 40401.000000 65571.000000 38997.000000 65524.000000 39175.000000 69531.000000 37285.000000 67648.000000 37838.000000 66674.000000 38291.000000 72936.000000 35943.000000 77505.000000 33953.000000 75548.000000 34392.000000 74030.000000 34865.000000 82136.000000 32210.000000 82490.000000 32049.000000 85515.000000 31122.000000 89899.000000 30048.000000 89511.000000 30142.000000 91751.000000 29635.000000 89247.000000 30204.000000 93768.000000 29095.000000 102220.000000 27776.000000 104476.000000 27332.000000 107639.000000 26794.000000 116729.000000 25862.000000 114667.000000 26133.000000 122073.000000 24975.000000 134506.000000 23925.000000 125758.000000 24681.000000 148803.000000 22951.000000 142469.000000 23502.000000 153124.000000 22679.000000 159692.000000 22467.000000 166654.000000 22315.000000 172958.000000 22210.000000 21343.000000 170748.000000 21408.000000 170527.000000 21578.000000 160570.000000 21719.000000 158093.000000 22190.000000 144618.000000 22457.000000 140587.000000 22562.000000 139202.000000 23720.000000 121008.000000 24266.000000 116141.000000 24857.000000 112753.000000 25380.000000 106887.000000 25784.000000 102484.000000 25589.000000 104296.000000 26181.000000 101220.000000 27088.000000 95469.000000 27488.000000 93475.000000 26728.000000 96547.000000 27233.000000 93580.000000 27219.000000 94500.000000 28844.000000 89449.000000 29881.000000 85864.000000 30489.000000 83430.000000 30788.000000 81956.000000 34219.000000 74432.000000 33612.000000 77538.000000 31540.000000 80939.000000 34560.000000 73485.000000 35974.000000 71309.000000 37522.000000 67349.000000 37475.000000 67471.000000 39286.000000 65397.000000 40110.000000 64110.000000 44620.000000 57943.000000 44832.000000 57726.000000 42604.000000 60219.000000 44231.000000 58857.000000 46290.000000 56983.000000 48193.000000 53023.000000 46842.000000 56346.000000 50379.000000 50881.000000 53115.000000 48503.000000 50898.000000 50339.000000 52489.000000 48782.000000 54954.000000 46687.000000 53677.000000 47184.000000 56083.000000 45772.000000 58808.000000 43847.000000 58046.000000 44353.000000 61138.000000 41735.000000 60090.000000 42577.000000 63915.000000 40243.000000 63760.000000 40586.000000 62993.000000 40889.000000 65781.000000 39426.000000 71357.000000 35998.000000 67460.000000 37802.000000 67266.000000 38153.000000 73706.000000 35317.000000 72881.000000 35493.000000 76267.000000 34092.000000 80180.000000 32857.000000 78591.000000 33031.000000 81040.000000 32395.000000 84418.000000 31533.000000 87035.000000 30743.000000 84913.000000 31324.000000 88834.000000 30524.000000 89185.000000 30055.000000 96707.000000 28821.000000 91728.000000 29566.000000 104029.000000 27348.000000 103745.000000 27397.000000 105495.000000 27078.000000 111945.000000 26447.000000 110625.000000 26643.000000 120051.000000 25011.000000 119277.000000 25326.000000 126136.000000 24683.000000 132501.000000 24348.000000 141466.000000 23325.000000 150542.000000 23063.000000 154574.000000 22688.000000 155801.000000 22597.000000 164802.000000 22367.000000 172958.000000 22210.000000 21353.000000 178946.000000 21408.000000 172046.000000 21615.000000 162103.000000 21846.000000 156878.000000 22310.000000 150357.000000 22652.000000 136510.000000 23145.000000 128797.000000 24255.000000 121048.000000 23633.000000 121736.000000 23944.000000 121341.000000 24441.000000 114936.000000 25090.000000 107772.000000 25624.000000 102645.000000 25954.000000 100855.000000 26092.000000 100249.000000 27097.000000 93980.000000 27346.000000 93323.000000 27689.000000 92781.000000 28662.000000 88521.000000 28300.000000 92034.000000 29984.000000 85216.000000 31100.000000 81334.000000 29670.000000 86264.000000 30022.000000 83797.000000 32006.000000 81314.000000 34339.000000 75141.000000 35231.000000 72401.000000 33116.000000 76202.000000 37096.000000 69505.000000 35257.000000 72096.000000 34575.000000 73677.000000 35706.000000 71036.000000 37070.000000 69568.000000 39675.000000 64662.000000 40512.000000 63341.000000 40272.000000 64301.000000 43333.000000 59946.000000 41243.000000 62925.000000 44595.000000 57682.000000 44972.000000 56738.000000 48621.000000 52443.000000 46695.000000 54599.000000 47626.000000 53990.000000 49825.000000 51715.000000 48643.000000 52427.000000 48512.000000 52610.000000 55122.000000 46319.000000 50700.000000 50243.000000 57828.000000 44438.000000 61216.000000 42174.000000 63123.000000 41051.000000 60406.000000 42251.000000 62564.000000 41103.000000 63622.000000 40040.000000 65626.000000 39181.000000 69862.000000 36637.000000 71899.000000 35945.000000 69524.000000 37162.000000 68231.000000 37327.000000 71326.000000 36327.000000 72870.000000 35564.000000 77536.000000 34269.000000 79667.000000 32825.000000 88707.000000 30422.000000 85625.000000 31492.000000 87184.000000 30994.000000 87749.000000 30845.000000 85637.000000 31003.000000 92207.000000 29805.000000 90341.000000 29960.000000 96715.000000 28732.000000 97156.000000 28546.000000 101621.000000 27864.000000 111934.000000 26364.000000 114765.000000 26270.000000 111994.000000 26300.000000 131838.000000 24106.000000 116556.000000 25615.000000 137719.000000 23635.000000 135088.000000 24011.000000 141180.000000 23534.000000 147856.000000 22980.000000 157037.000000 22597.000000 161955.000000 22487.000000 165713.000000 22459.000000 176280.000000 22376.000000 21307.000000 174381.000000 21839.000000 157111.000000 21669.000000 159515.000000 21987.000000 152272.000000 22452.000000 137262.000000 23082.000000 128115.000000 23912.000000 120959.000000 23974.000000 120936.000000 25068.000000 109959.000000 25616.000000 102720.000000 26840.000000 96138.000000 26841.000000 95715.000000 27097.000000 93980.000000 28720.000000 87916.000000 29701.000000 87310.000000 28762.000000 87714.000000 29866.000000 84290.000000 30917.000000 82142.000000 30186.000000 83846.000000 34232.000000 76819.000000 32235.000000 78844.000000 32441.000000 78738.000000 35424.000000 71118.000000 34319.000000 75015.000000 34791.000000 73237.000000 36148.000000 70687.000000 38338.000000 67442.000000 36839.000000 69135.000000 41278.000000 61854.000000 37709.000000 68566.000000 40251.000000 63757.000000 41563.000000 61751.000000 42218.000000 60233.000000 41973.000000 61228.000000 44188.000000 58639.000000 47049.000000 54241.000000 46525.000000 55946.000000 48486.000000 53226.000000 46007.000000 56065.000000 51777.000000 50375.000000 49444.000000 52206.000000 52424.000000 48574.000000 56213.000000 45911.000000 56907.000000 45332.000000 52605.000000 48547.000000 61355.000000 42148.000000 60283.000000 42614.000000 61413.000000 41975.000000 58248.000000 44331.000000 67299.000000 38159.000000 65353.000000 38939.000000 64876.000000 39731.000000 67648.000000 37838.000000 71084.000000 36295.000000 72606.000000 35776.000000 70459.000000 36398.000000 72071.000000 35799.000000 77913.000000 33696.000000 79011.000000 33336.000000 80284.000000 32681.000000 78319.000000 33457.000000 81059.000000 32288.000000 83630.000000 31341.000000 88884.000000 30464.000000 89154.000000 30202.000000 89732.000000 30044.000000 93176.000000 29282.000000 99019.000000 28247.000000 96855.000000 28564.000000 99846.000000 28057.000000 107292.000000 26824.000000 114172.000000 25931.000000 116298.000000 25818.000000 118957.000000 25225.000000 125987.000000 24466.000000 138079.000000 23751.000000 144616.000000 23265.000000 147094.000000 22964.000000 146955.000000 22981.000000 151077.000000 22913.000000 159465.000000 22475.000000 161331.000000 22443.000000 173558.000000 22177.000000 21282.000000 178446.000000 21560.000000 164010.000000 21513.000000 167724.000000 22020.000000 151355.000000 22223.000000 143318.000000 22823.000000 134190.000000 23400.000000 128898.000000 23465.000000 126808.000000 24636.000000 114357.000000 25029.000000 109590.000000 25756.000000 103289.000000 25933.000000 103108.000000 26184.000000 102153.000000 26382.000000 97986.000000 26906.000000 96217.000000 27297.000000 94705.000000 27303.000000 94163.000000 28339.000000 89599.000000 29418.000000 86153.000000 31490.000000 80873.000000 31204.000000 81375.000000 34620.000000 73635.000000 33724.000000 75789.000000 33302.000000 76552.000000 35659.000000 72150.000000 37374.000000 68241.000000 36977.000000 68916.000000 41438.000000 61625.000000 36820.000000 68937.000000 43498.000000 59862.000000 40588.000000 62972.000000 44760.000000 57183.000000 45484.000000 56480.000000 46362.000000 55430.000000 40167.000000 63753.000000 47432.000000 53885.000000 46785.000000 54531.000000 47945.000000 52891.000000 48252.000000 52440.000000 51886.000000 49402.000000 52375.000000 49235.000000 55557.000000 46005.000000 54620.000000 48137.000000 55863.000000 45691.000000 60129.000000 42934.000000 62678.000000 40910.000000 64189.000000 39598.000000 66101.000000 38270.000000 63305.000000 40272.000000 66027.000000 38446.000000 69359.000000 37194.000000 67390.000000 37658.000000 71643.000000 35834.000000 75699.000000 34359.000000 79488.000000 33319.000000 75706.000000 34338.000000 80492.000000 32567.000000 85475.000000 31172.000000 87449.000000 30993.000000 87801.000000 30358.000000 91738.000000 29612.000000 97338.000000 28674.000000 93476.000000 29183.000000 102713.000000 27702.000000 105587.000000 27401.000000 114779.000000 25605.000000 115902.000000 25589.000000 126059.000000 24942.000000 133584.000000 24019.000000 148892.000000 23326.000000 151415.000000 22929.000000 154577.000000 22676.000000 152651.000000 22804.000000 166317.000000 22361.000000 181548.000000 22332.000000 21320.000000 175393.000000 21370.000000 167892.000000 22030.000000 148485.000000 22218.000000 146618.000000 22439.000000 138224.000000 23312.000000 128814.000000 24418.000000 113803.000000 24026.000000 118264.000000 24218.000000 116152.000000 25448.000000 105212.000000 25588.000000 103186.000000 26351.000000 99586.000000 26027.000000 101104.000000 26699.000000 97649.000000 27961.000000 93333.000000 28203.000000 89999.000000 28007.000000 92061.000000 26810.000000 96556.000000 27544.000000 94243.000000 29130.000000 88072.000000 28623.000000 88180.000000 30542.000000 84075.000000 30285.000000 84316.000000 30842.000000 82938.000000 32898.000000 77713.000000 32318.000000 79027.000000 31923.000000 79437.000000 31327.000000 81023.000000 33456.000000 75475.000000 34989.000000 71747.000000 37257.000000 68161.000000 36396.000000 70216.000000 36479.000000 69830.000000 36431.000000 69908.000000 38428.000000 66714.000000 37944.000000 67261.000000 37617.000000 67272.000000 40731.000000 62474.000000 42197.000000 61546.000000 42845.000000 59969.000000 44439.000000 58099.000000 44668.000000 57436.000000 44519.000000 58047.000000 48746.000000 53345.000000 45867.000000 55528.000000 51315.000000 49416.000000 54590.000000 47053.000000 53022.000000 49157.000000 56225.000000 45778.000000 55987.000000 45860.000000 56780.000000 45010.000000 56660.000000 45455.000000 60423.000000 42684.000000 61889.000000 41236.000000 64228.000000 40472.000000 60607.000000 42571.000000 65471.000000 38950.000000 61313.000000 42336.000000 66147.000000 38657.000000 64616.000000 39605.000000 69827.000000 37140.000000 70718.000000 36504.000000 70420.000000 36584.000000 70941.000000 36172.000000 77436.000000 33854.000000 79234.000000 33235.000000 78176.000000 33274.000000 83288.000000 31931.000000 87875.000000 30573.000000 84999.000000 31674.000000 94277.000000 29029.000000 93525.000000 29406.000000 91148.000000 29668.000000 100749.000000 28188.000000 101441.000000 27738.000000 108600.000000 26666.000000 116258.000000 25795.000000 118134.000000 25393.000000 133604.000000 23984.000000 124534.000000 24681.000000 147928.000000 23083.000000 147045.000000 23165.000000 153812.000000 22672.000000 152651.000000 22804.000000 162377.000000 22478.000000 170660.000000 22224.000000 21292.000000 176171.000000 21436.000000 170273.000000 21577.000000 159478.000000 22213.000000 146188.000000 22519.000000 141735.000000 23145.000000 128797.000000 22864.000000 132565.000000 23620.000000 125192.000000 24424.000000 113786.000000 25415.000000 105121.000000 25620.000000 103804.000000 25784.000000 103599.000000 26086.000000 99559.000000 26389.000000 99104.000000 27428.000000 94315.000000 28584.000000 88316.000000 27950.000000 91951.000000 28720.000000 87916.000000 28445.000000 88981.000000 29342.000000 86504.000000 29594.000000 85045.000000 31143.000000 81715.000000 32560.000000 77490.000000 32113.000000 78682.000000 35424.000000 71118.000000 34459.000000 73198.000000 34085.000000 74435.000000 37494.000000 67445.000000 35914.000000 70141.000000 35792.000000 70278.000000 39291.000000 64584.000000 40129.000000 63327.000000 43656.000000 58642.000000 42688.000000 60646.000000 43473.000000 59091.000000 44447.000000 58050.000000 45814.000000 56890.000000 46351.000000 56650.000000 48659.000000 52918.000000 48939.000000 52126.000000 51212.000000 50069.000000 52171.000000 49857.000000 54231.000000 47121.000000 54963.000000 46732.000000 54100.000000 47381.000000 57445.000000 44816.000000 60613.000000 42560.000000 56217.000000 46091.000000 59021.000000 43252.000000 61596.000000 41297.000000 64422.000000 40362.000000 61350.000000 41591.000000 64901.000000 39289.000000 66251.000000 38244.000000 67390.000000 37658.000000 67504.000000 37648.000000 69293.000000 37109.000000 71495.000000 36215.000000 71722.000000 35701.000000 76439.000000 34612.000000 73090.000000 35426.000000 74033.000000 35295.000000 81475.000000 32586.000000 78564.000000 33547.000000 80691.000000 32870.000000 91300.000000 29800.000000 90545.000000 30382.000000 84516.000000 31206.000000 93854.000000 29397.000000 95362.000000 28987.000000 95975.000000 28695.000000 96075.000000 28654.000000 106985.000000 27028.000000 119342.000000 25201.000000 115002.000000 25671.000000 127528.000000 24855.000000 132101.000000 24209.000000 138735.000000 23505.000000 144172.000000 23259.000000 158310.000000 22636.000000 155090.000000 22673.000000 168389.000000 22259.000000 163869.000000 22491.000000 174223.000000 22193.000000 21282.000000 178446.000000 21500.000000 169524.000000 21680.000000 158903.000000 21585.000000 160574.000000 22232.000000 146289.000000 22740.000000 137660.000000 22841.000000 134946.000000 23617.000000 127765.000000 23896.000000 117595.000000 25415.000000 105121.000000 25609.000000 103837.000000 25968.000000 101470.000000 25883.000000 102532.000000 26541.000000 99584.000000 26688.000000 96994.000000 27365.000000 93983.000000 28695.000000 89172.000000 27175.000000 94185.000000 27962.000000 92475.000000 29302.000000 87377.000000 28809.000000 88149.000000 29991.000000 84513.000000 29971.000000 85000.000000 29775.000000 86887.000000 31283.000000 82138.000000 31957.000000 79175.000000 32871.000000 77113.000000 33658.000000 74893.000000 36357.000000 70547.000000 37234.000000 68643.000000 37307.000000 68260.000000 40210.000000 64124.000000 41029.000000 62513.000000 42783.000000 59966.000000 39883.000000 65283.000000 44425.000000 58082.000000 44094.000000 58910.000000 45815.000000 56219.000000 46053.000000 56031.000000 50063.000000 51290.000000 47996.000000 54458.000000 51456.000000 49471.000000 56790.000000 45536.000000 58452.000000 44592.000000 52963.000000 48558.000000 60827.000000 42612.000000 59892.000000 43312.000000 62560.000000 41143.000000 61926.000000 41548.000000 69048.000000 37281.000000 64901.000000 39165.000000 67605.000000 38057.000000 73046.000000 35294.000000 71423.000000 35975.000000 68914.000000 37960.000000 69492.000000 36880.000000 74100.000000 35069.000000 72943.000000 35408.000000 79332.000000 33301.000000 81076.000000 32220.000000 84608.000000 31602.000000 82743.000000 32198.000000 87358.000000 30682.000000 84939.000000 31071.000000 89672.000000 29876.000000 90897.000000 29792.000000 99044.000000 28295.000000 101376.000000 28178.000000 107999.000000 26795.000000 111977.000000 26483.000000 119960.000000 25551.000000 114193.000000 25886.000000 112288.000000 26241.000000 132453.000000 24091.000000 131468.000000 24484.000000 136184.000000 23774.000000 144577.000000 23174.000000 146406.000000 22971.000000 155801.000000 22597.000000 175744.000000 22278.000000 21282.000000 178446.000000 21317.000000 172106.000000 21692.000000 158432.000000 21654.000000 161053.000000 22220.000000 147665.000000 22452.000000 137262.000000 23122.000000 128988.000000 24146.000000 120796.000000 24488.000000 114883.000000 24427.000000 116378.000000 25548.000000 107396.000000 25714.000000 101528.000000 25942.000000 101456.000000 26150.000000 100093.000000 27233.000000 93580.000000 27926.000000 90828.000000 29221.000000 86785.000000 29882.000000 85764.000000 27097.000000 93980.000000 29106.000000 87957.000000 30084.000000 84397.000000 30781.000000 82021.000000 31391.000000 80535.000000 33640.000000 75723.000000 33778.000000 75488.000000 34373.000000 74471.000000 35419.000000 72098.000000 38073.000000 66952.000000 36514.000000 69373.000000 42392.000000 60205.000000 41112.000000 62799.000000 43620.000000 59575.000000 43810.000000 58779.000000 43981.000000 57972.000000 46532.000000 56087.000000 48278.000000 53158.000000 48177.000000 53270.000000 49095.000000 52221.000000 48360.000000 53036.000000 51814.000000 49270.000000 51357.000000 50091.000000 54170.000000 48549.000000 58041.000000 44403.000000 56935.000000 45333.000000 58242.000000 43664.000000 60087.000000 42626.000000 57718.000000 44753.000000 60001.000000 42925.000000 64187.000000 39814.000000 66339.000000 39124.000000 65142.000000 39623.000000 66050.000000 39216.000000 66390.000000 38937.000000 70109.000000 36681.000000 73192.000000 35321.000000 71340.000000 36224.000000 72971.000000 35970.000000 69729.000000 36962.000000 78787.000000 33197.000000 80516.000000 32535.000000 85948.000000 30870.000000 85057.000000 31458.000000 82612.000000 31819.000000 92655.000000 29230.000000 90745.000000 29887.000000 95483.000000 28749.000000 101989.000000 27704.000000 106111.000000 27452.000000 109334.000000 26608.000000 109928.000000 26605.000000 111889.000000 26590.000000 120051.000000 25011.000000 123092.000000 24844.000000 128051.000000 24297.000000 141192.000000 23680.000000 146206.000000 23062.000000 147467.000000 23004.000000 159692.000000 22467.000000 163183.000000 22391.000000 170116.000000 22269.000000 21305.000000 173801.000000 21470.000000 170136.000000 21849.000000 154241.000000 21682.000000 161542.000000 22044.000000 151609.000000 22527.000000 139802.000000 23572.000000 123441.000000 23151.000000 132205.000000 23358.000000 124490.000000 24194.000000 119181.000000 24707.000000 111085.000000 25718.000000 103170.000000 25716.000000 103236.000000 26190.000000 101339.000000 26822.000000 96204.000000 27364.000000 93257.000000 26382.000000 97986.000000 27036.000000 94886.000000 28564.000000 89525.000000 27219.000000 94500.000000 28203.000000 89999.000000 30240.000000 85489.000000 28911.000000 87568.000000 29747.000000 86033.000000 31692.000000 80391.000000 33409.000000 76366.000000 31040.000000 81484.000000 33559.000000 75881.000000 34356.000000 74711.000000 35164.000000 72804.000000 36327.000000 70688.000000 37016.000000 68721.000000 37631.000000 68330.000000 38888.000000 65439.000000 38645.000000 66270.000000 38287.000000 67354.000000 42253.000000 61938.000000 42466.000000 60393.000000 45511.000000 56708.000000 43746.000000 58840.000000 46006.000000 56054.000000 46351.000000 55621.000000 51561.000000 49390.000000 49129.000000 52686.000000 49413.000000 52241.000000 47589.000000 53648.000000 50468.000000 50740.000000 56381.000000 45410.000000 53058.000000 48294.000000 56326.000000 46079.000000 59027.000000 43723.000000 59233.000000 43165.000000 62114.000000 41421.000000 59109.000000 43205.000000 62370.000000 41253.000000 60075.000000 42646.000000 63212.000000 40844.000000 65843.000000 39310.000000 66027.000000 38446.000000 65321.000000 39647.000000 66813.000000 37837.000000 70612.000000 36622.000000 71281.000000 36157.000000 73709.000000 35301.000000 70856.000000 36524.000000 77771.000000 33735.000000 79989.000000 32674.000000 79213.000000 32860.000000 79932.000000 32814.000000 89804.000000 30377.000000 82730.000000 31699.000000 84556.000000 31146.000000 85765.000000 31074.000000 92187.000000 29918.000000 90071.000000 29920.000000 95723.000000 28672.000000 106203.000000 26979.000000 101726.000000 27592.000000 111700.000000 26235.000000 115132.000000 25727.000000 118130.000000 25392.000000 133584.000000 24019.000000 131078.000000 24286.000000 137044.000000 23699.000000 143054.000000 23292.000000 146179.000000 22979.000000 156171.000000 22585.000000 160892.000000 22540.000000 165632.000000 22356.000000 21296.000000 177406.000000 21461.000000 166837.000000 21626.000000 161831.000000 21951.000000 150365.000000 22748.000000 137371.000000 22407.000000 144147.000000 23367.000000 124823.000000 23455.000000 123745.000000 24455.000000 113823.000000 25038.000000 107951.000000 24469.000000 113358.000000 25998.000000 100775.000000 26317.000000 98596.000000 26490.000000 97618.000000 27505.000000 94329.000000 27871.000000 92676.000000 28203.000000 89999.000000 28421.000000 89230.000000 30173.000000 84564.000000 29674.000000 85539.000000 30409.000000 83774.000000 31264.000000 81329.000000 33324.000000 75968.000000 32900.000000 76763.000000 31836.000000 79582.000000 33263.000000 76175.000000 34319.000000 74428.000000 36585.000000 69648.000000 36660.000000 69393.000000 38166.000000 67004.000000 38844.000000 65841.000000 41630.000000 61615.000000 42539.000000 60244.000000 44141.000000 58215.000000 42150.000000 61214.000000 45961.000000 56602.000000 43954.000000 59420.000000 48475.000000 52987.000000 46993.000000 54245.000000 51470.000000 50613.000000 51637.000000 49751.000000 48721.000000 52290.000000 53599.000000 47685.000000 53038.000000 48389.000000 57027.000000 44975.000000 54476.000000 46854.000000 59237.000000 43360.000000 60615.000000 42192.000000 64105.000000 40370.000000 60981.000000 41883.000000 62408.000000 41470.000000 64866.000000 39514.000000 64405.000000 39635.000000 67460.000000 37682.000000 66872.000000 38072.000000 69398.000000 37520.000000 70826.000000 36148.000000 75190.000000 34131.000000 81741.000000 32631.000000 80183.000000 33271.000000 83507.000000 32101.000000 85637.000000 31003.000000 89355.000000 30874.000000 90197.000000 29957.000000 102735.000000 27861.000000 96287.000000 28631.000000 106419.000000 27073.000000 111247.000000 26239.000000 114197.000000 25897.000000 118627.000000 25654.000000 119107.000000 25532.000000 124683.000000 24979.000000 138176.000000 23817.000000 139743.000000 23492.000000 144559.000000 23272.000000 156209.000000 22989.000000 158320.000000 22512.000000 166176.000000 22311.000000 172958.000000 22210.000000 21730.000000 162812.000000 21539.000000 163126.000000 21434.000000 167667.000000 21965.000000 154995.000000 22203.000000 143755.000000 23076.000000 132087.000000 23411.000000 126068.000000 23251.000000 127553.000000 24773.000000 113510.000000 24284.000000 116372.000000 25255.000000 105304.000000 25176.000000 108541.000000 25975.000000 102015.000000 26424.000000 98408.000000 26251.000000 101847.000000 27219.000000 94500.000000 26649.000000 97263.000000 28238.000000 90921.000000 28003.000000 92680.000000 28452.000000 89191.000000 29919.000000 85396.000000 31113.000000 82683.000000 32767.000000 77089.000000 34245.000000 74800.000000 34989.000000 71747.000000 34952.000000 73456.000000 36346.000000 70085.000000 37049.000000 69465.000000 38054.000000 67184.000000 40204.000000 64057.000000 43222.000000 59702.000000 44276.000000 57973.000000 41948.000000 61171.000000 44082.000000 59102.000000 45325.000000 56538.000000 47041.000000 53620.000000 49263.000000 51931.000000 49997.000000 51564.000000 52302.000000 49574.000000 55171.000000 46664.000000 54299.000000 47589.000000 53641.000000 47644.000000 57605.000000 44875.000000 60438.000000 43084.000000 57044.000000 45187.000000 58233.000000 44276.000000 58980.000000 43769.000000 65787.000000 38932.000000 63841.000000 40431.000000 67290.000000 38024.000000 64299.000000 39892.000000 69731.000000 36951.000000 68231.000000 37327.000000 70115.000000 36395.000000 75190.000000 34131.000000 78021.000000 33399.000000 79367.000000 33236.000000 82138.000000 32319.000000 86457.000000 30862.000000 84079.000000 31594.000000 85763.000000 31197.000000 89563.000000 30085.000000 96481.000000 28906.000000 91064.000000 29600.000000 102359.000000 27701.000000 95182.000000 28974.000000 99052.000000 28033.000000 115410.000000 26055.000000 116232.000000 25695.000000 115434.000000 25727.000000 118826.000000 25482.000000 124196.000000 24771.000000 140757.000000 23554.000000 135814.000000 23811.000000 144059.000000 23322.000000 148664.000000 22968.000000 153124.000000 22679.000000 158310.000000 22636.000000 169074.000000 22264.000000 166550.000000 22381.000000 176436.000000 22141.000000 21320.000000 175393.000000 21404.000000 170811.000000 21973.000000 149794.000000 22213.000000 146398.000000 22265.000000 142174.000000 22761.000000 132447.000000 23361.000000 125534.000000 24091.000000 118967.000000 24183.000000 117299.000000 24828.000000 110580.000000 24518.000000 112581.000000 25775.000000 102404.000000 25711.000000 102933.000000 26695.000000 97381.000000 26382.000000 97986.000000 27592.000000 93918.000000 27097.000000 93980.000000 28584.000000 88316.000000 30251.000000 85114.000000 30360.000000 84664.000000 28445.000000 88981.000000 30673.000000 83196.000000 33243.000000 77906.000000 33864.000000 75403.000000 33793.000000 75675.000000 34435.000000 73599.000000 33988.000000 74887.000000 37427.000000 69433.000000 39268.000000 66352.000000 36591.000000 69600.000000 36195.000000 70937.000000 39491.000000 64834.000000 41282.000000 63543.000000 44181.000000 58092.000000 44333.000000 57767.000000 42638.000000 60105.000000 45658.000000 56633.000000 45926.000000 55179.000000 47476.000000 54331.000000 50279.000000 50935.000000 50190.000000 52127.000000 50423.000000 50454.000000 54121.000000 48237.000000 51097.000000 49683.000000 52833.000000 49124.000000 54355.000000 47891.000000 56789.000000 45717.000000 57564.000000 44858.000000 59030.000000 43454.000000 61691.000000 41956.000000 66496.000000 38850.000000 60272.000000 42793.000000 62690.000000 40948.000000 63237.000000 40501.000000 66705.000000 38050.000000 65195.000000 40311.000000 69290.000000 37380.000000 72218.000000 36129.000000 68920.000000 37510.000000 71342.000000 36181.000000 72584.000000 35958.000000 74950.000000 34590.000000 74761.000000 35098.000000 82488.000000 32162.000000 84556.000000 31146.000000 83630.000000 31341.000000 89421.000000 30064.000000 87863.000000 30608.000000 92784.000000 29379.000000 93645.000000 29170.000000 95212.000000 29098.000000 100644.000000 27870.000000 98402.000000 28398.000000 109993.000000 26877.000000 112434.000000 26168.000000 125602.000000 24912.000000 116109.000000 26002.000000 121433.000000 25070.000000 125877.000000 24549.000000 140409.000000 23436.000000 138300.000000 23624.000000 146867.000000 22972.000000 153812.000000 22672.000000 153370.000000 22815.000000 165522.000000 22391.000000 172902.000000 22337.000000 21409.000000 171103.000000 21754.000000 155808.000000 21942.000000 155549.000000 22895.000000 135357.000000 22882.000000 136714.000000 23877.000000 121962.000000 24248.000000 117881.000000 24871.000000 112154.000000 25476.000000 107056.000000 26096.000000 102244.000000 26125.000000 100144.000000 26379.000000 100088.000000 26931.000000 96432.000000 26810.000000 96848.000000 27631.000000 93388.000000 27973.000000 92235.000000 28798.000000 88121.000000 29328.000000 86433.000000 28788.000000 90636.000000 28971.000000 87344.000000 30791.000000 82445.000000 32417.000000 81409.000000 31124.000000 81964.000000 33751.000000 75229.000000 32984.000000 76695.000000 32790.000000 77977.000000 35789.000000 70729.000000 37104.000000 70158.000000 33644.000000 75733.000000 34843.000000 72536.000000 38011.000000 67675.000000 38340.000000 67598.000000 40651.000000 63430.000000 37583.000000 68409.000000 40038.000000 64875.000000 41913.000000 61362.000000 40927.000000 62719.000000 45164.000000 56487.000000 44861.000000 56791.000000 46177.000000 55122.000000 48405.000000 52721.000000 47639.000000 54098.000000 51164.000000 50657.000000 51212.000000 49311.000000 54439.000000 47610.000000 52736.000000 48797.000000 55566.000000 46421.000000 58215.000000 44297.000000 60602.000000 42508.000000 58977.000000 43816.000000 60590.000000 42738.000000 63809.000000 40145.000000 69040.000000 37728.000000 67794.000000 37859.000000 66804.000000 38769.000000 72541.000000 35480.000000 72183.000000 35571.000000 73293.000000 35185.000000 75096.000000 34370.000000 80104.000000 33080.000000 78691.000000 34109.000000 83833.000000 32255.000000 81656.000000 32344.000000 84130.000000 31375.000000 84516.000000 31206.000000 94010.000000 29141.000000 93388.000000 29602.000000 105474.000000 27256.000000 99804.000000 28044.000000 102672.000000 27724.000000 112572.000000 26192.000000 119240.000000 25480.000000 127776.000000 24423.000000 124045.000000 24877.000000 134733.000000 23917.000000 143038.000000 23506.000000 145968.000000 23245.000000 147888.000000 22966.000000 155801.000000 22597.000000 160653.000000 22480.000000 175164.000000 22272.000000 179307.000000 22247.000000 21621.000000 174190.000000 21711.000000 171735.000000 21976.000000 156109.000000 22181.000000 145201.000000 22598.000000 136287.000000 23423.000000 127391.000000 23671.000000 120482.000000 24409.000000 113944.000000 25164.000000 109429.000000 25600.000000 103406.000000 25220.000000 106663.000000 26419.000000 99593.000000 25944.000000 103006.000000 27770.000000 93085.000000 26574.000000 97398.000000 27295.000000 95544.000000 26577.000000 97129.000000 27374.000000 94290.000000 28908.000000 88290.000000 28910.000000 87414.000000 30650.000000 83060.000000 30206.000000 83563.000000 31177.000000 81107.000000 32858.000000 77863.000000 33914.000000 76098.000000 36119.000000 70664.000000 35293.000000 71914.000000 34935.000000 72158.000000 35325.000000 71272.000000 39586.000000 64919.000000 36187.000000 70108.000000 40850.000000 62192.000000 39919.000000 64543.000000 41883.000000 61326.000000 43846.000000 58347.000000 42829.000000 59917.000000 45488.000000 56723.000000 46289.000000 55857.000000 48118.000000 52879.000000 46766.000000 54662.000000 50299.000000 50728.000000 48732.000000 52544.000000 54638.000000 47165.000000 57234.000000 45894.000000 55191.000000 46576.000000 59890.000000 42987.000000 63932.000000 40376.000000 65076.000000 39218.000000 61495.000000 41732.000000 58825.000000 43828.000000 64189.000000 39891.000000 67277.000000 37804.000000 66927.000000 38625.000000 68405.000000 37414.000000 72112.000000 35834.000000 71814.000000 36086.000000 74124.000000 34532.000000 78455.000000 33901.000000 77826.000000 34327.000000 75187.000000 34502.000000 79989.000000 32674.000000 79421.000000 33700.000000 81527.000000 32188.000000 84685.000000 31368.000000 90492.000000 29795.000000 90333.000000 29861.000000 93662.000000 29374.000000 98818.000000 28359.000000 100864.000000 27832.000000 94499.000000 28924.000000 104405.000000 27237.000000 107982.000000 26808.000000 117940.000000 25479.000000 114779.000000 25605.000000 130486.000000 24493.000000 133863.000000 24243.000000 124476.000000 24687.000000 145199.000000 23404.000000 148284.000000 22902.000000 159692.000000 22467.000000 168916.000000 22345.000000 165987.000000 22435.000000 177206.000000 22184.000000 21282.000000 178446.000000 21345.000000 171328.000000 21743.000000 156080.000000 21899.000000 154534.000000 22247.000000 150114.000000 22292.000000 142002.000000 23261.000000 125192.000000 24359.000000 117883.000000 24519.000000 114531.000000 24680.000000 112594.000000 25600.000000 103406.000000 26193.000000 100809.000000 26287.000000 99392.000000 26745.000000 96950.000000 27840.000000 93256.000000 27074.000000 96443.000000 28203.000000 89999.000000 28723.000000 87850.000000 29609.000000 85798.000000 30775.000000 84044.000000 31561.000000 80839.000000 33116.000000 76913.000000 31014.000000 81633.000000 36364.000000 69884.000000 34397.000000 73635.000000 35926.000000 70981.000000 36620.000000 68996.000000 39232.000000 66203.000000 40990.000000 63310.000000 39428.000000 64210.000000 42671.000000 60211.000000 42022.000000 62428.000000 44188.000000 58177.000000 44921.000000 57213.000000 45219.000000 56664.000000 46658.000000 54877.000000 47642.000000 54030.000000 50575.000000 51077.000000 48877.000000 51779.000000 48357.000000 53222.000000 52182.000000 49195.000000 56767.000000 45444.000000 53768.000000 48526.000000 59012.000000 43348.000000 57180.000000 45161.000000 60205.000000 42987.000000 63778.000000 40318.000000 60510.000000 42500.000000 62178.000000 41129.000000 66569.000000 38582.000000 65290.000000 39091.000000 66486.000000 38872.000000 67296.000000 38092.000000 71445.000000 36428.000000 70147.000000 37001.000000 70419.000000 36593.000000 67999.000000 37505.000000 73685.000000 35234.000000 74996.000000 34743.000000 80940.000000 32529.000000 80056.000000 32946.000000 78591.000000 33031.000000 83089.000000 32104.000000 87836.000000 30544.000000 86422.000000 31406.000000 88697.000000 30417.000000 90558.000000 29741.000000 89732.000000 30044.000000 90842.000000 29701.000000 98759.000000 28441.000000 102323.000000 27648.000000 106854.000000 26760.000000 115277.000000 25831.000000 115755.000000 25749.000000 120994.000000 25088.000000 137719.000000 23635.000000 143254.000000 23201.000000 147137.000000 22984.000000 153889.000000 22683.000000 159272.000000 22521.000000 169647.000000 22235.000000 21552.000000 165258.000000 22631.000000 134339.000000 23339.000000 124447.000000 23131.000000 127508.000000 23473.000000 124391.000000 24066.000000 119314.000000 25807.000000 103679.000000 26384.000000 99446.000000 26053.000000 100010.000000 26545.000000 97288.000000 27355.000000 94100.000000 27840.000000 92955.000000 28444.000000 90128.000000 28160.000000 91407.000000 28173.000000 90339.000000 28748.000000 89055.000000 29822.000000 85329.000000 31214.000000 82140.000000 30084.000000 84397.000000 31512.000000 79864.000000 32185.000000 78475.000000 34616.000000 73912.000000 33107.000000 76362.000000 33638.000000 74953.000000 36227.000000 69649.000000 37130.000000 69466.000000 35548.000000 72232.000000 39124.000000 65914.000000 38847.000000 65957.000000 43537.000000 58954.000000 40045.000000 64214.000000 40321.000000 63532.000000 40593.000000 62715.000000 47720.000000 54913.000000 45474.000000 56284.000000 42837.000000 60190.000000 47398.000000 55088.000000 45731.000000 55654.000000 48771.000000 52697.000000 48827.000000 52058.000000 51583.000000 49837.000000 53636.000000 48407.000000 56598.000000 45656.000000 60048.000000 43029.000000 57684.000000 45170.000000 63440.000000 40502.000000 59777.000000 43872.000000 61283.000000 42459.000000 62089.000000 41031.000000 65970.000000 38977.000000 65941.000000 39318.000000 64480.000000 39696.000000 67701.000000 38553.000000 67768.000000 37799.000000 69096.000000 37340.000000 70646.000000 36522.000000 68935.000000 37544.000000 72139.000000 35837.000000 76246.000000 34600.000000 77699.000000 34021.000000 76690.000000 34280.000000 79740.000000 32862.000000 91976.000000 29853.000000 88589.000000 31150.000000 91580.000000 29993.000000 90965.000000 30070.000000 84280.000000 31197.000000 95914.000000 28893.000000 99311.000000 28093.000000 98835.000000 28214.000000 103204.000000 27567.000000 104259.000000 27277.000000 103035.000000 27657.000000 114363.000000 25945.000000 115299.000000 25839.000000 124525.000000 24799.000000 125974.000000 24407.000000 143983.000000 23115.000000 146955.000000 22981.000000 154724.000000 22785.000000 158674.000000 22672.000000 166788.000000 22377.000000 169722.000000 22308.000000 178070.000000 22263.000000 21327.000000 169236.000000 21705.000000 159728.000000 22025.000000 153938.000000 22327.000000 144934.000000 22666.000000 138581.000000 22848.000000 132421.000000 23136.000000 131548.000000 23887.000000 118504.000000 23782.000000 119324.000000 24957.000000 109955.000000 25748.000000 101865.000000 25513.000000 104091.000000 26279.000000 99293.000000 27767.000000 91990.000000 26319.000000 98199.000000 28417.000000 89804.000000 27332.000000 94754.000000 27617.000000 92293.000000 28967.000000 87494.000000 28762.000000 87714.000000 30875.000000 82621.000000 28911.000000 87568.000000 31577.000000 80999.000000 30171.000000 83847.000000 31119.000000 81851.000000 34558.000000 73044.000000 34309.000000 74041.000000 35313.000000 71747.000000 33513.000000 75852.000000 37337.000000 68837.000000 39800.000000 64858.000000 39111.000000 65553.000000 38674.000000 66222.000000 40807.000000 62805.000000 42840.000000 59583.000000 44787.000000 57364.000000 45305.000000 57152.000000 45563.000000 56654.000000 43824.000000 58325.000000 48252.000000 52948.000000 47185.000000 54568.000000 48804.000000 52087.000000 51768.000000 49493.000000 54370.000000 47106.000000 56492.000000 44942.000000 52756.000000 48624.000000 60181.000000 42319.000000 58266.000000 44414.000000 61491.000000 42084.000000 61165.000000 42160.000000 65260.000000 39207.000000 66995.000000 38877.000000 62912.000000 40759.000000 68790.000000 37644.000000 67887.000000 37797.000000 72067.000000 35588.000000 70714.000000 36700.000000 74932.000000 35075.000000 77199.000000 33488.000000 76673.000000 33899.000000 80747.000000 32759.000000 83537.000000 31801.000000 84985.000000 31487.000000 88347.000000 30392.000000 91667.000000 29641.000000 92799.000000 29297.000000 104288.000000 27481.000000 102528.000000 27695.000000 110367.000000 26374.000000 118618.000000 25227.000000 125608.000000 24517.000000 134952.000000 24073.000000 140647.000000 23634.000000 138622.000000 23831.000000 146179.000000 22979.000000 155518.000000 22953.000000 162458.000000 22395.000000 164175.000000 22387.000000 173643.000000 22215.000000 21376.000000 172779.000000 21409.000000 171103.000000 21718.000000 160290.000000 21763.000000 156016.000000 22432.000000 141631.000000 22109.000000 151668.000000 23024.000000 133625.000000 23103.000000 130074.000000 23665.000000 121469.000000 24714.000000 110159.000000 25820.000000 104771.000000 26022.000000 103249.000000 26175.000000 100530.000000 27108.000000 94992.000000 27226.000000 94658.000000 26980.000000 96006.000000 27506.000000 94462.000000 26382.000000 97986.000000 27856.000000 92763.000000 28546.000000 89459.000000 28883.000000 88946.000000 29170.000000 86559.000000 29277.000000 86312.000000 29964.000000 85051.000000 30292.000000 83176.000000 31171.000000 81440.000000 32711.000000 77984.000000 33916.000000 75503.000000 34898.000000 72317.000000 36539.000000 69317.000000 36822.000000 68790.000000 40097.000000 63570.000000 38565.000000 65828.000000 41634.000000 62587.000000 44923.000000 56345.000000 44082.000000 57992.000000 42945.000000 59586.000000 43817.000000 58042.000000 42845.000000 60035.000000 47454.000000 53429.000000 49267.000000 51952.000000 46482.000000 54397.000000 51660.000000 50688.000000 53409.000000 48060.000000 54518.000000 47262.000000 56849.000000 44960.000000 59632.000000 42888.000000 61035.000000 42794.000000 59491.000000 43861.000000 58265.000000 44479.000000 66007.000000 38616.000000 65890.000000 39378.000000 61092.000000 42283.000000 62967.000000 40707.000000 67308.000000 37813.000000 70481.000000 36596.000000 70015.000000 36761.000000 71993.000000 36186.000000 72426.000000 35618.000000 69676.000000 37095.000000 77451.000000 33468.000000 75196.000000 34584.000000 76392.000000 33945.000000 79816.000000 33267.000000 83529.000000 31993.000000 87634.000000 30753.000000 83630.000000 31341.000000 96683.000000 28565.000000 85206.000000 31002.000000 90897.000000 29792.000000 98594.000000 28380.000000 101339.000000 27757.000000 105054.000000 27357.000000 109957.000000 27012.000000 110317.000000 26470.000000 114557.000000 25812.000000 114408.000000 25907.000000 125348.000000 24865.000000 144833.000000 23169.000000 147094.000000 22964.000000 155175.000000 22753.000000 161383.000000 22535.000000 169491.000000 22301.000000 21292.000000 176171.000000 21489.000000 171747.000000 21726.000000 164086.000000 22030.000000 148485.000000 22394.000000 142142.000000 22520.000000 138317.000000 23474.000000 127355.000000 24140.000000 118719.000000 24507.000000 114719.000000 24620.000000 113355.000000 25611.000000 103973.000000 26003.000000 101898.000000 25738.000000 103240.000000 26874.000000 96769.000000 26177.000000 98921.000000 28281.000000 90204.000000 27233.000000 93580.000000 27913.000000 90720.000000 28793.000000 88131.000000 29599.000000 85798.000000 29277.000000 86312.000000 29948.000000 85034.000000 30608.000000 83137.000000 29744.000000 85124.000000 32250.000000 79918.000000 34457.000000 74674.000000 32291.000000 78851.000000 34817.000000 72323.000000 33136.000000 77430.000000 36844.000000 70739.000000 35918.000000 71618.000000 37813.000000 67760.000000 35084.000000 71845.000000 39233.000000 66761.000000 40601.000000 63459.000000 40081.000000 64334.000000 43323.000000 59781.000000 42785.000000 59946.000000 43773.000000 59173.000000 41642.000000 62518.000000 46234.000000 55445.000000 48043.000000 54298.000000 48581.000000 52623.000000 49980.000000 52313.000000 52275.000000 48739.000000 52174.000000 49078.000000 55973.000000 46690.000000 53706.000000 47516.000000 57670.000000 44965.000000 58794.000000 43421.000000 62363.000000 41021.000000 63203.000000 40535.000000 58345.000000 44372.000000 63654.000000 40425.000000 67086.000000 38620.000000 68648.000000 37755.000000 66306.000000 38823.000000 71084.000000 36295.000000 74356.000000 34491.000000 72071.000000 35894.000000 73203.000000 35486.000000 73153.000000 35610.000000 77984.000000 33730.000000 76039.000000 33841.000000 84861.000000 31656.000000 81393.000000 32796.000000 86853.000000 31037.000000 91135.000000 29646.000000 94602.000000 29117.000000 94626.000000 29099.000000 96725.000000 28568.000000 100336.000000 27890.000000 111699.000000 26204.000000 119812.000000 25689.000000 121594.000000 24955.000000 125467.000000 24510.000000 136737.000000 23933.000000 148437.000000 22976.000000 142439.000000 23316.000000 148511.000000 22894.000000 162458.000000 22395.000000 166861.000000 22391.000000 180856.000000 22331.000000 21320.000000 175393.000000 21331.000000 170471.000000 21872.000000 155811.000000 22030.000000 148485.000000 21902.000000 150967.000000 22222.000000 143856.000000 22797.000000 138613.000000 23116.000000 129295.000000 24446.000000 114989.000000 24928.000000 112117.000000 25216.000000 108931.000000 25594.000000 102716.000000 26053.000000 100010.000000 27573.000000 93072.000000 27364.000000 93257.000000 28143.000000 92643.000000 28212.000000 90203.000000 28738.000000 88701.000000 29533.000000 86887.000000 29885.000000 84727.000000 31585.000000 80622.000000 31776.000000 80188.000000 34325.000000 74256.000000 35084.000000 71845.000000 33112.000000 76152.000000 35967.000000 70832.000000 36922.000000 69105.000000 39273.000000 64874.000000 39231.000000 65441.000000 40693.000000 64148.000000 38764.000000 66179.000000 45981.000000 55952.000000 40724.000000 62800.000000 46708.000000 54446.000000 44892.000000 58026.000000 45767.000000 56365.000000 48329.000000 52668.000000 51486.000000 50825.000000 49470.000000 51930.000000 48580.000000 51991.000000 57215.000000 44953.000000 55546.000000 46249.000000 54872.000000 46781.000000 55658.000000 45956.000000 60243.000000 42376.000000 59289.000000 43922.000000 63541.000000 40418.000000 62705.000000 40838.000000 63835.000000 39946.000000 64877.000000 39743.000000 70463.000000 36467.000000 66251.000000 38244.000000 68746.000000 37479.000000 78064.000000 34060.000000 71343.000000 36174.000000 75061.000000 34524.000000 75190.000000 34131.000000 82213.000000 32237.000000 86551.000000 31182.000000 82219.000000 32054.000000 86673.000000 31043.000000 87263.000000 30551.000000 94199.000000 29290.000000 95301.000000 28749.000000 94672.000000 29199.000000 99340.000000 28010.000000 109328.000000 26633.000000 109038.000000 26730.000000 115037.000000 25851.000000 115689.000000 25642.000000 135020.000000 24006.000000 124573.000000 24564.000000 144464.000000 23203.000000 140437.000000 23591.000000 150284.000000 23097.000000 157512.000000 22768.000000 158794.000000 22517.000000 166176.000000 22311.000000 173054.000000 22270.000000 21317.000000 172106.000000 21980.000000 152888.000000 22191.000000 145533.000000 22296.000000 141566.000000 23788.000000 120671.000000 24504.000000 114846.000000 24732.000000 112976.000000 26023.000000 101241.000000 25524.000000 106200.000000 26695.000000 97381.000000 25616.000000 104404.000000 26919.000000 97044.000000 27364.000000 93257.000000 28490.000000 90019.000000 27703.000000 92411.000000 28762.000000 87714.000000 30029.000000 85305.000000 30533.000000 83320.000000 29894.000000 85895.000000 31618.000000 80189.000000 32718.000000 77339.000000 34569.000000 75192.000000 36722.000000 69964.000000 32432.000000 77904.000000 35075.000000 72638.000000 34890.000000 72796.000000 37555.000000 68419.000000 37378.000000 68740.000000 39871.000000 64899.000000 40750.000000 63246.000000 40205.000000 64389.000000 43158.000000 58980.000000 44408.000000 58312.000000 48628.000000 52809.000000 48853.000000 52729.000000 47545.000000 54338.000000 52898.000000 47802.000000 49346.000000 51803.000000 51165.000000 49706.000000 54060.000000 47347.000000 56732.000000 45773.000000 58045.000000 45267.000000 60657.000000 42681.000000 59524.000000 43465.000000 58497.000000 43661.000000 63944.000000 40307.000000 63487.000000 40411.000000 66013.000000 39235.000000 67700.000000 38110.000000 72430.000000 35868.000000 68340.000000 37561.000000 70686.000000 36468.000000 78157.000000 33332.000000 74331.000000 35548.000000 81385.000000 32878.000000 76671.000000 34271.000000 85006.000000 31119.000000 82589.000000 31768.000000 87798.000000 30843.000000 89732.000000 30044.000000 92287.000000 29704.000000 97589.000000 28756.000000 104363.000000 27146.000000 100898.000000 27665.000000 105390.000000 27129.000000 110825.000000 26365.000000 112160.000000 26306.000000 114833.000000 25961.000000 129667.000000 24298.000000 141476.000000 23666.000000 145505.000000 23227.000000 146406.000000 22971.000000 159366.000000 22547.000000 158939.000000 22769.000000 164279.000000 22416.000000 172958.000000 22210.000000 21384.000000 175168.000000 21408.000000 170527.000000 21979.000000 150525.000000 21889.000000 152708.000000 21814.000000 155569.000000 22865.000000 132067.000000 23291.000000 127292.000000 23687.000000 126617.000000 23930.000000 119158.000000 25201.000000 109768.000000 25835.000000 103263.000000 26197.000000 100853.000000 25880.000000 102819.000000 27908.000000 92106.000000 28203.000000 89999.000000 27370.000000 93947.000000 28122.000000 90535.000000 29122.000000 86836.000000 29659.000000 85876.000000 30685.000000 83531.000000 31293.000000 81436.000000 31852.000000 79137.000000 33207.000000 76638.000000 35296.000000 73663.000000 34345.000000 74706.000000 35747.000000 72411.000000 37038.000000 69308.000000 36177.000000 70882.000000 37073.000000 68620.000000 38550.000000 67135.000000 42215.000000 61525.000000 40113.000000 63751.000000 39629.000000 63923.000000 39326.000000 65027.000000 43625.000000 59200.000000 47857.000000 53929.000000 45691.000000 57232.000000 47514.000000 53932.000000 47342.000000 54253.000000 48632.000000 52527.000000 49675.000000 51208.000000 54114.000000 47424.000000 54169.000000 47194.000000 56098.000000 45733.000000 57361.000000 45405.000000 59645.000000 43416.000000 60186.000000 42906.000000 58480.000000 44345.000000 63122.000000 40651.000000 61837.000000 41972.000000 63330.000000 40231.000000 62511.000000 41066.000000 65757.000000 39453.000000 66258.000000 38833.000000 66793.000000 38487.000000 68599.000000 37590.000000 70420.000000 36584.000000 70748.000000 36574.000000 71425.000000 36288.000000 75669.000000 34744.000000 73474.000000 35115.000000 79006.000000 33227.000000 73734.000000 35095.000000 78140.000000 34116.000000 80219.000000 32901.000000 82644.000000 32017.000000 87644.000000 30682.000000 92213.000000 29560.000000 86743.000000 30998.000000 89146.000000 30192.000000 93256.000000 29517.000000 91568.000000 29679.000000 100644.000000 27870.000000 95258.000000 29116.000000 98408.000000 28490.000000 108702.000000 26611.000000 116283.000000 25824.000000 120722.000000 25066.000000 131028.000000 24337.000000 138699.000000 23807.000000 145992.000000 23104.000000 153812.000000 22672.000000 161142.000000 22476.000000 166176.000000 22311.000000 174036.000000 22258.000000 21282.000000 178446.000000 21719.000000 162559.000000 21533.000000 163052.000000 21471.000000 163967.000000 21749.000000 153990.000000 22265.000000 142174.000000 23222.000000 128467.000000 23892.000000 123512.000000 23035.000000 130816.000000 24130.000000 116977.000000 24175.000000 116751.000000 25252.000000 107666.000000 25980.000000 103275.000000 26281.000000 98702.000000 26234.000000 100475.000000 26047.000000 103150.000000 26844.000000 96406.000000 27588.000000 92629.000000 28552.000000 89715.000000 28908.000000 88290.000000 28457.000000 90632.000000 29455.000000 85511.000000 30362.000000 83070.000000 30448.000000 82683.000000 32503.000000 77445.000000 32917.000000 77086.000000 35101.000000 73510.000000 34061.000000 75424.000000 35262.000000 71725.000000 35852.000000 71055.000000 36257.000000 70367.000000 36822.000000 68790.000000 39625.000000 64150.000000 39585.000000 65925.000000 40452.000000 63241.000000 42972.000000 59632.000000 44152.000000 59234.000000 44549.000000 57937.000000 46234.000000 55058.000000 48913.000000 52642.000000 47525.000000 54072.000000 49793.000000 51744.000000 48296.000000 53040.000000 47039.000000 54867.000000 50930.000000 50064.000000 52576.000000 48497.000000 50855.000000 50131.000000 56211.000000 46110.000000 53351.000000 47750.000000 59907.000000 43272.000000 57955.000000 44272.000000 56554.000000 45229.000000 59943.000000 42755.000000 62443.000000 41211.000000 63318.000000 40891.000000 65993.000000 38483.000000 64613.000000 40166.000000 62574.000000 41021.000000 67308.000000 37813.000000 67004.000000 38225.000000 69070.000000 37414.000000 70040.000000 36757.000000 69600.000000 36960.000000 71601.000000 36296.000000 76066.000000 34245.000000 80529.000000 32347.000000 84402.000000 31431.000000 83793.000000 32340.000000 94532.000000 28965.000000 90775.000000 29930.000000 89363.000000 30235.000000 93099.000000 29343.000000 99212.000000 27966.000000 97874.000000 28112.000000 105654.000000 27031.000000 114426.000000 26220.000000 117235.000000 25516.000000 122485.000000 25350.000000 124573.000000 24564.000000 137042.000000 23999.000000 143681.000000 23303.000000 146910.000000 22992.000000 153812.000000 22672.000000 160653.000000 22480.000000 170886.000000 22312.000000 177300.000000 22220.000000 21282.000000 178446.000000 21317.000000 172106.000000 21575.000000 163444.000000 21819.000000 157333.000000 22418.000000 143032.000000 22062.000000 146658.000000 22943.000000 132840.000000 23234.000000 128440.000000 23814.000000 122318.000000 24410.000000 115476.000000 24431.000000 115368.000000 25288.000000 106495.000000 25287.000000 107513.000000 25962.000000 100780.000000 25766.000000 102517.000000 26383.000000 98414.000000 27219.000000 94500.000000 27045.000000 96005.000000 28122.000000 90535.000000 27637.000000 93453.000000 28503.000000 90217.000000 29944.000000 84495.000000 29744.000000 85124.000000 30022.000000 83797.000000 31553.000000 81940.000000 31848.000000 79389.000000 35263.000000 72488.000000 32271.000000 78845.000000 35489.000000 72383.000000 34792.000000 73894.000000 36207.000000 70534.000000 37094.000000 68613.000000 38451.000000 67008.000000 41195.000000 62294.000000 44368.000000 58450.000000 44654.000000 58373.000000 44952.000000 57092.000000 46368.000000 55262.000000 46104.000000 56209.000000 45635.000000 56395.000000 49244.000000 52931.000000 49709.000000 51468.000000 49454.000000 52295.000000 54314.000000 47126.000000 53758.000000 47228.000000 53505.000000 47965.000000 57995.000000 44304.000000 60736.000000 42245.000000 54832.000000 46989.000000 57061.000000 45083.000000 59439.000000 43023.000000 63541.000000 40693.000000 66027.000000 38446.000000 66554.000000 38426.000000 68958.000000 37105.000000 68122.000000 38263.000000 72349.000000 35965.000000 74150.000000 35025.000000 74299.000000 34915.000000 74715.000000 34887.000000 77103.000000 33747.000000 81269.000000 32512.000000 81240.000000 32704.000000 86534.000000 30959.000000 87801.000000 30358.000000 88288.000000 30179.000000 94191.000000 28951.000000 92379.000000 29569.000000 100048.000000 28046.000000 95674.000000 28727.000000 104405.000000 27237.000000 109613.000000 26598.000000 117933.000000 25435.000000 128314.000000 24722.000000 120446.000000 24997.000000 116297.000000 25599.000000 132944.000000 24433.000000 143689.000000 23272.000000 146406.000000 22971.000000 148880.000000 22962.000000 155801.000000 22597.000000 172573.000000 22321.000000 178234.000000 22278.000000 21508.000000 176497.000000 21728.000000 158658.000000 21657.000000 162315.000000 22450.000000 141437.000000 22207.000000 143479.000000 22845.000000 132464.000000 23051.000000 131616.000000 23908.000000 123172.000000 24707.000000 111085.000000 25838.000000 104047.000000 25598.000000 105448.000000 25842.000000 102738.000000 26801.000000 95553.000000 26658.000000 97655.000000 27704.000000 92424.000000 27097.000000 93980.000000 28584.000000 88316.000000 27926.000000 90828.000000 28500.000000 88789.000000 29044.000000 87534.000000 28911.000000 87568.000000 30485.000000 84825.000000 31175.000000 81426.000000 34140.000000 74162.000000 32410.000000 79013.000000 32930.000000 76674.000000 33086.000000 76291.000000 34898.000000 72317.000000 33545.000000 76030.000000 36493.000000 69788.000000 38246.000000 66469.000000 35887.000000 70376.000000 37612.000000 68787.000000 41202.000000 62376.000000 38664.000000 65572.000000 42435.000000 60330.000000 42768.000000 60158.000000 43071.000000 58759.000000 45405.000000 57114.000000 46042.000000 54984.000000 47546.000000 53763.000000 47384.000000 54355.000000 51018.000000 50330.000000 52333.000000 50010.000000 54011.000000 48250.000000 56219.000000 45376.000000 58681.000000 43644.000000 56105.000000 46178.000000 59592.000000 42790.000000 61510.000000 41778.000000 62305.000000 41467.000000 64520.000000 40734.000000 71805.000000 36280.000000 66840.000000 39524.000000 69799.000000 37189.000000 72575.000000 36240.000000 68841.000000 37611.000000 74389.000000 35105.000000 69899.000000 36702.000000 78755.000000 33240.000000 82098.000000 32327.000000 82903.000000 31783.000000 87148.000000 30893.000000 91921.000000 29389.000000 94761.000000 29109.000000 92901.000000 29294.000000 95255.000000 28994.000000 100358.000000 28001.000000 106865.000000 26865.000000 112781.000000 26368.000000 107659.000000 26801.000000 125702.000000 24824.000000 117591.000000 25638.000000 138424.000000 23799.000000 147134.000000 23338.000000 135200.000000 23822.000000 152710.000000 22752.000000 161007.000000 22465.000000 171860.000000 22183.000000 21292.000000 176171.000000 21474.000000 170620.000000 21839.000000 157111.000000 21613.000000 159796.000000 22790.000000 137479.000000 22256.000000 142717.000000 22950.000000 136014.000000 23045.000000 128455.000000 23335.000000 126036.000000 24556.000000 117865.000000 25421.000000 105811.000000 25795.000000 102549.000000 25575.000000 105377.000000 26457.000000 100674.000000 25858.000000 100867.000000 27446.000000 95550.000000 26622.000000 98115.000000 26801.000000 95553.000000 27926.000000 90828.000000 28832.000000 88894.000000 27965.000000 90692.000000 30240.000000 84130.000000 28850.000000 88310.000000 29671.000000 85428.000000 31000.000000 81945.000000 34433.000000 73537.000000 33037.000000 76541.000000 37710.000000 67538.000000 32987.000000 77051.000000 36585.000000 69148.000000 35476.000000 71221.000000 39448.000000 65708.000000 38741.000000 65804.000000 45099.000000 56662.000000 42309.000000 60879.000000 41029.000000 62988.000000 44788.000000 56974.000000 43977.000000 58951.000000 45816.000000 56378.000000 46790.000000 54302.000000 48329.000000 52668.000000 47631.000000 53378.000000 50520.000000 50832.000000 51701.000000 49828.000000 51294.000000 50113.000000 53001.000000 48878.000000 54709.000000 46854.000000 53873.000000 48014.000000 57077.000000 44991.000000 53628.000000 48223.000000 61915.000000 42138.000000 58983.000000 43532.000000 64148.000000 40127.000000 62146.000000 41367.000000 63118.000000 40366.000000 66868.000000 38882.000000 64405.000000 39635.000000 68967.000000 37742.000000 67210.000000 38541.000000 70373.000000 36705.000000 72707.000000 35527.000000 72994.000000 35408.000000 71807.000000 36238.000000 74016.000000 35101.000000 76092.000000 34518.000000 80650.000000 32601.000000 81449.000000 32398.000000 83424.000000 32095.000000 87016.000000 30942.000000 89421.000000 30064.000000 93635.000000 29251.000000 89190.000000 30150.000000 92871.000000 29300.000000 99340.000000 28010.000000 102785.000000 27688.000000 104592.000000 27316.000000 105608.000000 27082.000000 115548.000000 25725.000000 120399.000000 24999.000000 129562.000000 24603.000000 136431.000000 23971.000000 137026.000000 23932.000000 144438.000000 23191.000000 146955.000000 22981.000000 151415.000000 22804.000000 165208.000000 22520.000000 172593.000000 22414.000000 177776.000000 22200.000000 21446.000000 178062.000000 21451.000000 170981.000000 21553.000000 161491.000000 22030.000000 148485.000000 22312.000000 144457.000000 22319.000000 142028.000000 23595.000000 125116.000000 23387.000000 126139.000000 24579.000000 115197.000000 23966.000000 119415.000000 25144.000000 106750.000000 25764.000000 104888.000000 25716.000000 105195.000000 26425.000000 99467.000000 25967.000000 101198.000000 27500.000000 92857.000000 27175.000000 94185.000000 27068.000000 96072.000000 27617.000000 92293.000000 29217.000000 86951.000000 28143.000000 91555.000000 28995.000000 88393.000000 28732.000000 89766.000000 29866.000000 84290.000000 30586.000000 83580.000000 31084.000000 81600.000000 29833.000000 85234.000000 32422.000000 78585.000000 32718.000000 77339.000000 32843.000000 76718.000000 34184.000000 76038.000000 34649.000000 72474.000000 37480.000000 68327.000000 36391.000000 69972.000000 38882.000000 65938.000000 41332.000000 61886.000000 43880.000000 58811.000000 43007.000000 59271.000000 41842.000000 61772.000000 44307.000000 58059.000000 44098.000000 58650.000000 46550.000000 56125.000000 44319.000000 57467.000000 49297.000000 52838.000000 47210.000000 53558.000000 50208.000000 51581.000000 51005.000000 50128.000000 51593.000000 49681.000000 52067.000000 48980.000000 55181.000000 46760.000000 59991.000000 42630.000000 56110.000000 45680.000000 57048.000000 45109.000000 61893.000000 41810.000000 62637.000000 41618.000000 60462.000000 42620.000000 63422.000000 41356.000000 65865.000000 39166.000000 66363.000000 38485.000000 68290.000000 37756.000000 68884.000000 37348.000000 73951.000000 35697.000000 74357.000000 35627.000000 68546.000000 37669.000000 78780.000000 33346.000000 75592.000000 35079.000000 76556.000000 34628.000000 78532.000000 34038.000000 80385.000000 32801.000000 82781.000000 31631.000000 83246.000000 31537.000000 87832.000000 30469.000000 91955.000000 29722.000000 96759.000000 28481.000000 87192.000000 30793.000000 104224.000000 27545.000000 94604.000000 29195.000000 101702.000000 27690.000000 109330.000000 26758.000000 114302.000000 26251.000000 106131.000000 27124.000000 121979.000000 24892.000000 115897.000000 25611.000000 135514.000000 23950.000000 124893.000000 24725.000000 141603.000000 23637.000000 142280.000000 23486.000000 146406.000000 22971.000000 149568.000000 22955.000000 156028.000000 22589.000000 168478.000000 22312.000000 21431.000000 174768.000000 21504.000000 173100.000000 21583.000000 162347.000000 22009.000000 151862.000000 22236.000000 142708.000000 22624.000000 137739.000000 23239.000000 130477.000000 23914.000000 120368.000000 24138.000000 117255.000000 25201.000000 107396.000000 25622.000000 103410.000000 25858.000000 100867.000000 26102.000000 100243.000000 27460.000000 95545.000000 27040.000000 96410.000000 27064.000000 96383.000000 28584.000000 88316.000000 29034.000000 86959.000000 30167.000000 84208.000000 31050.000000 81828.000000 34290.000000 75680.000000 32462.000000 78139.000000 33223.000000 76308.000000 34736.000000 72924.000000 37800.000000 67898.000000 35792.000000 70278.000000 36782.000000 69008.000000 38205.000000 66465.000000 42059.000000 61668.000000 40616.000000 62886.000000 41287.000000 62600.000000 44503.000000 57966.000000 44628.000000 57306.000000 44150.000000 58615.000000 48164.000000 53649.000000 48347.000000 52821.000000 49103.000000 51834.000000 48840.000000 52051.000000 46916.000000 54988.000000 53097.000000 48232.000000 50245.000000 51553.000000 51856.000000 48936.000000 55700.000000 46394.000000 51609.000000 49427.000000 59320.000000 42989.000000 58140.000000 43913.000000 60915.000000 42036.000000 65450.000000 38795.000000 62743.000000 41077.000000 62491.000000 41370.000000 65235.000000 39891.000000 68924.000000 37800.000000 67211.000000 38680.000000 68430.000000 38105.000000 70107.000000 36532.000000 72264.000000 35875.000000 71558.000000 36518.000000 74703.000000 34657.000000 79608.000000 32934.000000 85699.000000 30930.000000 88930.000000 30116.000000 92890.000000 29687.000000 91819.000000 29771.000000 94826.000000 29105.000000 98100.000000 28501.000000 96635.000000 28868.000000 104279.000000 27331.000000 108219.000000 26654.000000 113010.000000 26189.000000 115683.000000 26058.000000 116229.000000 25767.000000 130250.000000 24405.000000 127115.000000 24446.000000 139558.000000 23639.000000 148405.000000 22990.000000 152897.000000 22687.000000 162529.000000 22661.000000 168389.000000 22259.000000 176436.000000 22141.000000 21367.000000 177906.000000 21462.000000 172577.000000 21980.000000 152888.000000 21690.000000 156033.000000 22273.000000 147328.000000 22301.000000 142116.000000 22878.000000 132494.000000 23883.000000 121534.000000 23989.000000 120444.000000 24662.000000 112887.000000 25135.000000 106382.000000 25876.000000 104877.000000 26086.000000 99559.000000 26069.000000 101389.000000 26177.000000 98921.000000 26819.000000 98782.000000 27405.000000 94569.000000 27926.000000 90828.000000 28584.000000 88316.000000 29905.000000 86599.000000 29223.000000 87665.000000 28797.000000 88023.000000 30565.000000 84072.000000 30823.000000 82948.000000 32160.000000 80238.000000 35303.000000 73732.000000 33954.000000 74589.000000 33947.000000 76155.000000 34729.000000 74204.000000 36869.000000 68568.000000 37162.000000 68063.000000 40424.000000 63267.000000 43363.000000 58761.000000 42193.000000 61983.000000 42256.000000 61288.000000 45612.000000 56521.000000 44737.000000 57778.000000 46396.000000 55774.000000 48198.000000 53061.000000 47456.000000 54113.000000 50269.000000 51417.000000 48604.000000 52541.000000 52969.000000 48091.000000 55794.000000 46276.000000 55084.000000 46913.000000 56839.000000 45275.000000 57096.000000 44655.000000 61857.000000 41769.000000 58050.000000 44026.000000 60673.000000 42937.000000 61324.000000 41899.000000 59625.000000 42954.000000 64333.000000 39968.000000 64325.000000 40197.000000 65604.000000 39153.000000 67169.000000 38017.000000 68852.000000 37155.000000 72387.000000 35562.000000 75190.000000 34131.000000 78995.000000 33428.000000 80529.000000 32347.000000 79027.000000 33030.000000 83612.000000 31955.000000 87700.000000 30543.000000 82977.000000 32206.000000 91208.000000 29762.000000 93138.000000 29278.000000 98337.000000 28487.000000 102898.000000 27536.000000 106668.000000 26912.000000 105458.000000 27309.000000 111511.000000 26238.000000 117705.000000 25451.000000 126883.000000 24790.000000 122825.000000 24794.000000 133991.000000 24098.000000 148803.000000 22951.000000 149175.000000 22922.000000 152424.000000 22812.000000 160336.000000 22649.000000 162377.000000 22478.000000 169780.000000 22372.000000 177113.000000 22285.000000 21307.000000 174381.000000 21485.000000 165819.000000 21889.000000 152708.000000 21874.000000 156050.000000 22034.000000 148809.000000 23116.000000 129295.000000 23453.000000 127729.000000 23492.000000 123755.000000 24151.000000 116582.000000 23662.000000 120402.000000 24967.000000 110634.000000 25711.000000 105419.000000 26125.000000 100144.000000 25975.000000 101540.000000 26545.000000 97288.000000 27947.000000 91734.000000 27097.000000 93980.000000 28095.000000 90134.000000 28378.000000 89463.000000 29620.000000 86114.000000 28623.000000 88180.000000 30538.000000 82937.000000 31021.000000 81600.000000 31762.000000 79587.000000 35101.000000 72143.000000 33670.000000 75598.000000 36065.000000 71599.000000 34595.000000 72885.000000 38368.000000 66457.000000 36399.000000 70749.000000 39119.000000 65400.000000 36848.000000 69636.000000 40870.000000 62504.000000 40132.000000 63274.000000 43778.000000 58184.000000 41226.000000 61966.000000 43096.000000 59974.000000 48209.000000 52771.000000 46322.000000 55959.000000 49107.000000 52445.000000 46987.000000 54773.000000 50723.000000 50939.000000 54324.000000 47954.000000 51082.000000 49844.000000 54531.000000 47080.000000 57939.000000 44309.000000 61031.000000 42248.000000 63740.000000 40739.000000 62406.000000 40799.000000 60373.000000 42576.000000 67674.000000 37937.000000 65734.000000 39204.000000 67640.000000 38664.000000 65298.000000 39425.000000 70810.000000 36639.000000 74869.000000 35291.000000 71518.000000 36127.000000 72057.000000 35746.000000 75958.000000 34370.000000 78214.000000 33159.000000 79774.000000 32912.000000 80113.000000 32596.000000 84369.000000 31549.000000 84516.000000 31206.000000 91537.000000 29585.000000 89499.000000 30227.000000 97083.000000 28765.000000 100842.000000 27919.000000 98072.000000 28412.000000 107865.000000 26985.000000 104193.000000 27772.000000 117424.000000 25386.000000 119891.000000 25078.000000 131727.000000 24510.000000 136104.000000 23867.000000 142076.000000 23364.000000 143894.000000 23119.000000 153124.000000 22679.000000 152180.000000 22808.000000 169868.000000 22395.000000 180016.000000 22340.000000 21373.000000 177391.000000 21499.000000 170467.000000 21872.000000 155811.000000 21560.000000 162222.000000 21782.000000 158087.000000 22972.000000 133773.000000 22854.000000 135774.000000 23139.000000 129499.000000 24041.000000 119143.000000 23794.000000 120144.000000 24245.000000 116452.000000 24697.000000 112050.000000 25507.000000 108058.000000 25804.000000 103584.000000 25994.000000 102251.000000 26229.000000 100057.000000 27206.000000 95145.000000 26473.000000 97348.000000 27160.000000 96357.000000 29052.000000 87284.000000 28234.000000 92138.000000 28843.000000 88170.000000 31399.000000 81541.000000 29804.000000 85403.000000 30870.000000 83094.000000 30752.000000 83192.000000 30931.000000 82320.000000 32768.000000 77708.000000 32241.000000 78288.000000 34302.000000 74359.000000 35342.000000 72755.000000 35724.000000 70865.000000 37940.000000 68530.000000 36478.000000 69715.000000 38164.000000 67503.000000 39388.000000 65721.000000 41137.000000 61518.000000 38531.000000 66785.000000 43911.000000 58884.000000 41881.000000 61337.000000 40285.000000 64714.000000 43671.000000 60212.000000 45076.000000 57490.000000 46991.000000 53593.000000 48132.000000 53047.000000 46978.000000 55029.000000 46236.000000 55177.000000 50051.000000 51061.000000 56747.000000 45508.000000 54553.000000 46994.000000 58233.000000 44347.000000 57463.000000 44548.000000 55129.000000 46659.000000 65641.000000 38576.000000 61893.000000 41818.000000 62057.000000 41471.000000 63587.000000 40276.000000 64844.000000 39579.000000 68741.000000 37573.000000 73035.000000 35511.000000 69826.000000 37086.000000 70347.000000 36803.000000 70463.000000 36467.000000 74949.000000 34851.000000 77146.000000 33653.000000 77618.000000 33605.000000 80450.000000 32677.000000 85209.000000 31330.000000 83630.000000 31341.000000 87746.000000 30849.000000 88170.000000 30596.000000 90775.000000 29881.000000 92406.000000 29365.000000 100145.000000 27912.000000 113649.000000 25898.000000 117568.000000 25603.000000 119274.000000 25296.000000 126012.000000 24448.000000 141557.000000 23428.000000 140891.000000 23652.000000 151265.000000 22892.000000 155123.000000 22698.000000 162458.000000 22395.000000 176521.000000 22179.000000 21282.000000 178446.000000 22056.000000 152100.000000 21511.000000 163669.000000 22353.000000 139602.000000 22661.000000 135575.000000 22650.000000 137451.000000 23049.000000 129415.000000 23227.000000 129316.000000 24324.000000 116352.000000 24654.000000 114497.000000 25226.000000 107738.000000 25655.000000 104696.000000 25926.000000 101993.000000 26059.000000 100700.000000 26536.000000 97135.000000 27097.000000 93980.000000 27631.000000 93388.000000 26614.000000 96979.000000 28095.000000 90134.000000 28900.000000 88490.000000 29992.000000 86574.000000 29137.000000 87296.000000 30948.000000 81795.000000 30644.000000 82765.000000 30781.000000 82021.000000 32454.000000 78037.000000 35424.000000 71118.000000 36193.000000 70438.000000 38071.000000 67769.000000 39385.000000 65244.000000 38445.000000 66178.000000 41827.000000 60530.000000 42564.000000 60082.000000 41392.000000 61159.000000 43961.000000 58856.000000 46008.000000 56474.000000 47226.000000 55105.000000 47532.000000 53440.000000 50153.000000 51424.000000 50447.000000 50962.000000 50818.000000 50757.000000 50428.000000 51415.000000 51522.000000 49275.000000 51328.000000 49983.000000 53488.000000 48571.000000 59966.000000 43230.000000 57783.000000 44772.000000 57524.000000 44955.000000 59530.000000 43563.000000 60505.000000 42478.000000 62153.000000 41641.000000 63287.000000 40387.000000 63500.000000 40322.000000 64244.000000 39886.000000 66430.000000 39331.000000 67964.000000 37843.000000 70927.000000 36332.000000 66766.000000 39187.000000 70107.000000 36532.000000 72881.000000 35493.000000 67758.000000 38064.000000 73976.000000 35171.000000 76381.000000 33940.000000 71266.000000 36055.000000 84506.000000 31690.000000 78743.000000 33167.000000 88501.000000 30339.000000 89363.000000 30294.000000 87903.000000 30938.000000 91299.000000 29850.000000 90738.000000 29933.000000 98224.000000 28335.000000 99217.000000 28119.000000 100123.000000 27784.000000 113828.000000 26075.000000 109107.000000 26579.000000 127411.000000 24640.000000 121430.000000 24869.000000 118713.000000 25532.000000 126507.000000 24834.000000 141875.000000 23506.000000 147433.000000 23104.000000 153889.000000 22683.000000 157264.000000 22589.000000 168389.000000 22259.000000 172873.000000 22172.000000 21407.000000 170523.000000 21494.000000 166811.000000 21959.000000 154516.000000 21461.000000 167832.000000 22223.000000 143318.000000 22607.000000 142385.000000 22712.000000 137512.000000 23456.000000 124194.000000 23627.000000 121046.000000 24702.000000 112491.000000 25594.000000 102716.000000 26175.000000 100530.000000 25858.000000 100867.000000 26059.000000 100700.000000 27097.000000 93980.000000 26510.000000 99196.000000 27651.000000 92491.000000 28593.000000 88762.000000 28720.000000 87916.000000 28316.000000 89591.000000 29445.000000 86697.000000 28911.000000 87568.000000 29701.000000 85517.000000 33200.000000 77205.000000 33762.000000 75089.000000 32525.000000 78670.000000 34427.000000 73560.000000 36661.000000 69761.000000 36589.000000 70280.000000 37911.000000 67757.000000 34123.000000 73673.000000 39018.000000 65455.000000 39528.000000 64723.000000 40388.000000 63879.000000 43464.000000 59431.000000 44813.000000 57151.000000 45166.000000 56759.000000 44574.000000 57321.000000 46640.000000 55939.000000 49274.000000 51818.000000 47927.000000 54011.000000 48564.000000 52645.000000 49594.000000 51304.000000 54739.000000 46893.000000 51228.000000 49776.000000 56964.000000 45276.000000 52405.000000 48889.000000 55323.000000 46141.000000 58951.000000 43521.000000 60020.000000 43008.000000 62142.000000 42018.000000 60668.000000 42207.000000 60634.000000 42532.000000 63075.000000 40588.000000 64317.000000 40407.000000 67709.000000 37842.000000 65909.000000 38650.000000 69788.000000 37337.000000 71430.000000 36679.000000 71449.000000 35687.000000 68650.000000 37781.000000 78689.000000 33357.000000 77727.000000 33685.000000 77269.000000 34127.000000 82589.000000 31768.000000 78627.000000 33577.000000 87022.000000 31068.000000 86413.000000 31667.000000 87511.000000 30752.000000 89022.000000 30020.000000 88451.000000 30214.000000 95420.000000 28941.000000 97097.000000 28913.000000 107085.000000 26976.000000 104668.000000 27216.000000 103420.000000 27442.000000 116322.000000 25672.000000 119491.000000 25212.000000 128324.000000 24333.000000 137835.000000 23849.000000 146090.000000 23322.000000 146406.000000 22971.000000 159455.000000 22574.000000 156506.000000 22721.000000 170116.000000 22269.000000 180435.000000 22200.000000 21331.000000 170471.000000 21839.000000 157111.000000 21461.000000 166313.000000 22215.000000 143002.000000 22680.000000 135676.000000 22545.000000 135710.000000 23170.000000 127913.000000 23904.000000 117520.000000 25164.000000 107563.000000 25838.000000 102092.000000 25858.000000 100867.000000 26135.000000 100712.000000 26807.000000 96243.000000 27219.000000 94500.000000 27782.000000 92485.000000 28917.000000 87654.000000 28333.000000 91489.000000 28767.000000 89018.000000 30913.000000 83123.000000 29966.000000 86438.000000 32241.000000 78288.000000 33333.000000 76308.000000 37526.000000 68214.000000 34093.000000 75342.000000 35703.000000 71944.000000 36471.000000 70394.000000 36488.000000 70289.000000 35327.000000 72215.000000 40246.000000 63718.000000 40573.000000 62637.000000 39884.000000 63866.000000 43202.000000 59015.000000 46220.000000 56203.000000 44704.000000 57730.000000 43889.000000 58318.000000 48754.000000 52748.000000 47048.000000 54352.000000 48764.000000 52630.000000 51331.000000 49672.000000 48534.000000 53079.000000 53570.000000 48108.000000 55417.000000 46632.000000 52088.000000 49236.000000 54001.000000 48006.000000 56479.000000 46266.000000 61262.000000 41990.000000 63114.000000 41203.000000 61529.000000 41568.000000 57698.000000 44839.000000 64691.000000 40201.000000 65709.000000 39149.000000 65899.000000 38867.000000 67325.000000 38622.000000 65932.000000 38774.000000 67943.000000 37947.000000 70651.000000 36224.000000 72405.000000 35680.000000 74124.000000 34532.000000 78740.000000 33188.000000 79345.000000 32952.000000 82317.000000 32572.000000 88288.000000 30179.000000 86029.000000 31195.000000 92565.000000 29568.000000 90361.000000 29939.000000 95087.000000 28775.000000 92912.000000 29224.000000 101746.000000 27754.000000 100926.000000 27842.000000 107100.000000 26875.000000 110053.000000 26343.000000 114869.000000 25756.000000 119778.000000 25291.000000 125924.000000 24782.000000 118385.000000 25526.000000 142903.000000 23238.000000 147888.000000 22966.000000 147137.000000 22984.000000 148284.000000 22902.000000 159505.000000 22532.000000 166176.000000 22311.000000 176436.000000 22141.000000 21292.000000 176171.000000 21355.000000 168458.000000 21980.000000 152888.000000 21987.000000 152655.000000 22285.000000 145611.000000 22614.000000 141439.000000 22751.000000 139178.000000 23488.000000 126867.000000 23782.000000 119324.000000 24051.000000 118216.000000 24708.000000 111658.000000 25450.000000 104447.000000 26077.000000 101490.000000 26181.000000 101220.000000 25687.000000 103104.000000 27767.000000 92988.000000 27175.000000 94185.000000 28203.000000 89999.000000 27913.000000 90720.000000 29109.000000 88115.000000 28623.000000 88180.000000 29792.000000 86005.000000 30285.000000 84316.000000 30379.000000 84003.000000 32092.000000 79455.000000 32900.000000 76763.000000 33029.000000 76246.000000 35210.000000 73233.000000 35367.000000 72549.000000 36226.000000 71152.000000 36578.000000 69598.000000 36672.000000 68940.000000 37519.000000 68407.000000 40499.000000 62856.000000 42166.000000 61450.000000 41839.000000 61771.000000 45445.000000 56529.000000 44442.000000 58031.000000 47372.000000 54397.000000 45685.000000 55396.000000 48863.000000 53433.000000 48932.000000 51915.000000 48985.000000 51666.000000 51304.000000 50179.000000 53955.000000 47871.000000 57055.000000 45106.000000 56192.000000 45568.000000 57400.000000 44895.000000 58457.000000 43759.000000 59276.000000 43333.000000 61984.000000 41348.000000 64023.000000 39892.000000 66411.000000 38771.000000 67616.000000 38449.000000 70509.000000 37235.000000 69498.000000 37453.000000 73148.000000 35507.000000 77270.000000 33834.000000 73643.000000 34898.000000 74655.000000 34759.000000 75655.000000 34037.000000 81274.000000 32885.000000 78826.000000 33481.000000 83379.000000 31957.000000 83042.000000 32231.000000 84556.000000 31146.000000 88129.000000 30633.000000 89672.000000 29876.000000 93991.000000 29345.000000 97412.000000 28538.000000 97874.000000 28112.000000 107776.000000 26861.000000 107929.000000 26796.000000 112363.000000 25936.000000 117729.000000 25335.000000 122967.000000 25121.000000 134236.000000 24009.000000 142903.000000 23238.000000 148664.000000 22968.000000 146179.000000 22979.000000 153812.000000 22672.000000 165356.000000 22348.000000 171860.000000 22183.000000 167979.000000 22334.000000 21282.000000 178446.000000 21538.000000 169686.000000 21548.000000 165542.000000 21883.000000 150866.000000 22256.000000 142717.000000 22558.000000 141440.000000 23072.000000 131712.000000 23442.000000 126722.000000 23914.000000 118338.000000 24589.000000 112998.000000 24792.000000 110652.000000 25569.000000 105302.000000 26371.000000 99790.000000 26053.000000 100010.000000 27088.000000 95469.000000 27364.000000 93257.000000 28584.000000 88316.000000 28007.000000 91721.000000 28101.000000 90292.000000 29838.000000 85578.000000 31225.000000 80631.000000 32048.000000 78866.000000 31762.000000 79587.000000 33620.000000 77039.000000 34174.000000 74735.000000 35237.000000 72676.000000 36448.000000 69965.000000 36712.000000 69247.000000 37754.000000 67417.000000 38198.000000 66966.000000 39410.000000 65522.000000 40666.000000 63332.000000 41354.000000 63146.000000 43509.000000 59090.000000 43619.000000 59065.000000 41511.000000 61726.000000 46734.000000 54382.000000 49135.000000 52290.000000 49824.000000 51131.000000 48344.000000 52831.000000 48151.000000 53886.000000 51468.000000 50174.000000 50892.000000 50185.000000 54699.000000 46875.000000 60672.000000 42439.000000 54195.000000 47072.000000 62100.000000 41264.000000 62679.000000 40753.000000 61478.000000 41501.000000 59899.000000 42925.000000 63101.000000 40744.000000 71279.000000 36432.000000 66982.000000 39439.000000 67460.000000 37682.000000 71816.000000 36301.000000 74009.000000 35346.000000 69685.000000 36899.000000 72067.000000 35588.000000 77825.000000 33334.000000 76325.000000 34619.000000 77693.000000 34141.000000 81835.000000 32230.000000 85350.000000 31254.000000 88443.000000 30295.000000 88687.000000 30223.000000 94414.000000 29426.000000 95083.000000 28788.000000 99774.000000 28258.000000 100284.000000 28060.000000 102983.000000 27486.000000 106451.000000 26887.000000 110293.000000 26582.000000 108101.000000 26843.000000 122121.000000 25030.000000 120456.000000 25108.000000 137514.000000 23928.000000 146179.000000 22979.000000 140964.000000 23403.000000 144207.000000 23182.000000 153446.000000 22697.000000 159465.000000 22475.000000 165632.000000 22356.000000 172873.000000 22172.000000 21417.000000 174551.000000 21436.000000 170273.000000 21667.000000 157624.000000 22291.000000 146917.000000 22628.000000 137728.000000 23137.000000 127777.000000 24010.000000 118016.000000 24655.000000 111558.000000 24437.000000 112740.000000 25714.000000 101528.000000 26419.000000 99593.000000 27405.000000 94569.000000 26441.000000 98719.000000 28049.000000 90320.000000 28761.000000 89226.000000 28771.000000 89082.000000 27965.000000 90692.000000 28134.000000 89998.000000 31128.000000 82734.000000 29493.000000 85578.000000 30759.000000 83352.000000 31997.000000 79477.000000 32896.000000 77015.000000 32647.000000 77778.000000 33297.000000 76030.000000 35308.000000 72448.000000 34708.000000 73507.000000 36134.000000 70592.000000 38019.000000 67371.000000 39052.000000 65408.000000 37162.000000 68063.000000 39039.000000 65446.000000 42238.000000 60808.000000 41201.000000 62744.000000 42777.000000 60605.000000 45510.000000 57280.000000 43681.000000 58779.000000 46699.000000 54919.000000 50953.000000 51435.000000 49163.000000 53030.000000 47276.000000 53397.000000 51473.000000 49974.000000 50956.000000 50705.000000 52977.000000 48207.000000 51334.000000 50219.000000 51857.000000 49055.000000 56583.000000 45452.000000 58779.000000 44281.000000 59043.000000 43862.000000 60886.000000 42382.000000 61985.000000 41344.000000 62709.000000 40777.000000 65247.000000 39594.000000 67257.000000 38173.000000 65823.000000 38715.000000 68958.000000 37105.000000 75138.000000 34428.000000 78906.000000 34217.000000 82304.000000 31862.000000 82211.000000 32475.000000 83475.000000 31633.000000 85122.000000 31114.000000 92643.000000 29430.000000 92715.000000 29398.000000 95127.000000 28900.000000 93460.000000 29289.000000 91003.000000 29685.000000 106429.000000 27554.000000 103796.000000 27609.000000 109780.000000 26775.000000 112617.000000 25862.000000 130255.000000 24592.000000 136831.000000 23727.000000 142903.000000 23238.000000 147094.000000 22964.000000 152643.000000 22832.000000 159692.000000 22467.000000 169647.000000 22235.000000 21292.000000 176171.000000 21398.000000 167114.000000 21767.000000 161195.000000 22190.000000 144618.000000 22661.000000 135575.000000 23012.000000 132404.000000 23477.000000 124960.000000 23896.000000 123976.000000 24117.000000 117804.000000 24600.000000 111888.000000 25127.000000 106457.000000 25920.000000 101870.000000 26448.000000 100281.000000 25867.000000 103367.000000 27112.000000 96061.000000 26713.000000 96729.000000 28437.000000 91838.000000 28584.000000 88316.000000 29096.000000 87630.000000 29717.000000 86659.000000 30205.000000 83949.000000 31354.000000 82775.000000 30558.000000 82799.000000 31565.000000 80625.000000 33658.000000 75436.000000 32462.000000 78139.000000 36161.000000 70595.000000 32978.000000 76999.000000 34639.000000 73857.000000 37419.000000 68547.000000 37616.000000 67308.000000 40757.000000 63224.000000 38495.000000 66130.000000 41386.000000 62552.000000 45711.000000 56143.000000 45241.000000 57059.000000 44864.000000 57850.000000 47583.000000 54075.000000 49529.000000 51732.000000 48531.000000 52885.000000 51133.000000 49717.000000 55504.000000 46255.000000 55037.000000 46838.000000 54648.000000 47253.000000 56288.000000 45424.000000 57401.000000 45372.000000 61198.000000 41557.000000 58878.000000 43587.000000 63324.000000 40504.000000 64878.000000 40070.000000 66173.000000 38731.000000 67308.000000 37813.000000 67246.000000 38535.000000 66118.000000 39064.000000 68712.000000 37549.000000 71091.000000 37060.000000 70620.000000 37497.000000 73871.000000 35027.000000 73379.000000 35504.000000 79866.000000 32897.000000 78867.000000 33335.000000 76888.000000 34432.000000 78156.000000 33725.000000 81591.000000 32748.000000 83630.000000 31341.000000 90215.000000 30110.000000 95617.000000 28986.000000 95795.000000 28868.000000 99102.000000 28166.000000 100690.000000 27897.000000 111193.000000 26373.000000 111790.000000 26365.000000 114161.000000 26241.000000 115563.000000 26174.000000 125212.000000 24705.000000 131929.000000 24447.000000 144044.000000 23372.000000 137127.000000 23924.000000 144532.000000 23125.000000 155284.000000 22854.000000 158901.000000 22664.000000 165632.000000 22356.000000 170116.000000 22269.000000 21346.000000 178221.000000 21511.000000 172118.000000 21891.000000 160129.000000 22054.000000 149690.000000 22322.000000 140978.000000 22649.000000 135330.000000 23141.000000 131510.000000 24037.000000 120064.000000 24868.000000 109308.000000 24164.000000 117007.000000 25538.000000 107394.000000 25635.000000 104677.000000 25858.000000 100867.000000 26086.000000 99559.000000 26504.000000 98506.000000 28122.000000 90535.000000 27806.000000 92535.000000 29229.000000 86807.000000 28858.000000 89678.000000 29638.000000 85662.000000 30022.000000 83797.000000 31677.000000 80764.000000 32241.000000 78288.000000 33443.000000 76208.000000 33616.000000 75728.000000 34759.000000 73947.000000 33739.000000 75626.000000 34361.000000 74489.000000 35111.000000 71610.000000 38583.000000 66298.000000 36973.000000 68901.000000 39540.000000 65456.000000 41880.000000 61453.000000 40045.000000 64674.000000 42733.000000 60897.000000 45493.000000 56674.000000 43557.000000 59764.000000 45205.000000 57088.000000 44785.000000 57736.000000 48094.000000 52855.000000 51146.000000 49284.000000 46823.000000 54365.000000 48715.000000 52183.000000 50808.000000 50213.000000 53287.000000 47873.000000 52643.000000 48713.000000 54597.000000 46978.000000 55659.000000 46098.000000 57978.000000 44125.000000 57701.000000 44554.000000 60177.000000 42670.000000 63935.000000 40134.000000 61959.000000 41587.000000 63138.000000 40851.000000 66121.000000 39050.000000 65960.000000 39054.000000 69318.000000 37474.000000 69344.000000 37101.000000 70407.000000 36869.000000 71315.000000 36080.000000 73408.000000 35591.000000 74281.000000 34844.000000 74356.000000 34491.000000 82260.000000 32023.000000 81034.000000 32363.000000 83464.000000 31540.000000 86149.000000 30878.000000 91526.000000 29974.000000 93182.000000 29381.000000 96470.000000 28624.000000 98527.000000 28297.000000 101348.000000 28092.000000 109954.000000 26628.000000 99687.000000 28152.000000 106127.000000 27051.000000 120592.000000 25220.000000 125340.000000 24544.000000 139646.000000 23806.000000 148803.000000 22951.000000 142745.000000 23464.000000 158103.000000 22555.000000 159465.000000 22475.000000 161331.000000 22443.000000 172873.000000 22172.000000 21282.000000 178446.000000 21398.000000 172802.000000 21747.000000 159929.000000 21879.000000 152303.000000 22405.000000 146915.000000 22953.000000 133672.000000 23112.000000 129598.000000 23598.000000 121250.000000 24672.000000 111968.000000 24284.000000 116372.000000 25333.000000 107104.000000 25795.000000 102549.000000 26448.000000 100269.000000 25962.000000 100780.000000 26473.000000 97348.000000 28720.000000 87916.000000 27097.000000 93980.000000 28095.000000 90134.000000 29353.000000 86551.000000 28597.000000 89324.000000 29260.000000 86649.000000 29648.000000 85815.000000 30954.000000 81871.000000 33599.000000 76830.000000 32392.000000 78782.000000 32943.000000 77197.000000 35336.000000 72887.000000 35548.000000 71380.000000 36632.000000 69684.000000 38533.000000 66826.000000 37445.000000 69073.000000 39187.000000 66165.000000 40758.000000 64197.000000 43434.000000 59196.000000 43287.000000 60191.000000 44163.000000 58472.000000 42569.000000 61597.000000 45421.000000 56377.000000 46540.000000 55039.000000 47846.000000 53534.000000 50101.000000 51219.000000 47660.000000 53625.000000 53385.000000 48084.000000 47056.000000 54326.000000 51915.000000 49293.000000 49779.000000 51892.000000 50220.000000 50016.000000 54341.000000 47529.000000 59993.000000 43194.000000 58245.000000 44613.000000 58610.000000 44058.000000 62206.000000 41366.000000 60304.000000 42301.000000 65471.000000 38950.000000 66582.000000 38543.000000 63406.000000 40478.000000 68002.000000 37884.000000 64092.000000 39853.000000 72246.000000 36081.000000 68714.000000 37680.000000 71760.000000 36339.000000 71444.000000 36703.000000 78386.000000 33840.000000 76614.000000 33931.000000 76570.000000 34430.000000 80369.000000 32876.000000 82941.000000 31981.000000 89174.000000 30044.000000 94024.000000 29143.000000 95828.000000 28562.000000 107549.000000 26887.000000 116222.000000 26142.000000 116836.000000 25406.000000 121294.000000 25034.000000 124329.000000 24636.000000 130804.000000 24479.000000 139766.000000 23875.000000 145692.000000 23102.000000 154574.000000 22688.000000 156028.000000 22589.000000 164802.000000 22367.000000 170537.000000 22336.000000 21446.000000 172978.000000 21545.000000 165995.000000 21525.000000 167607.000000 21887.000000 156155.000000 22766.000000 140255.000000 22844.000000 137096.000000 23110.000000 128594.000000 24314.000000 115695.000000 24989.000000 110926.000000 25641.000000 104256.000000 25656.000000 103263.000000 25798.000000 102894.000000 26131.000000 100834.000000 26826.000000 97893.000000 27097.000000 93980.000000 29008.000000 88109.000000 28548.000000 89056.000000 28232.000000 91328.000000 29418.000000 86153.000000 30039.000000 84662.000000 31272.000000 81591.000000 32085.000000 78781.000000 32348.000000 78279.000000 34086.000000 74011.000000 33074.000000 76640.000000 36863.000000 68682.000000 37639.000000 68113.000000 37828.000000 67142.000000 39637.000000 64320.000000 39723.000000 64074.000000 43133.000000 59624.000000 45314.000000 57302.000000 47370.000000 54613.000000 45540.000000 56586.000000 47481.000000 53968.000000 48406.000000 52901.000000 49738.000000 51616.000000 49950.000000 50946.000000 52204.000000 49263.000000 50994.000000 50358.000000 56914.000000 45289.000000 57232.000000 44572.000000 54879.000000 46581.000000 59226.000000 43110.000000 61182.000000 41864.000000 62119.000000 41257.000000 63365.000000 40814.000000 64691.000000 39738.000000 66946.000000 38401.000000 68202.000000 37490.000000 66038.000000 39494.000000 72008.000000 35986.000000 68150.000000 38367.000000 72732.000000 35478.000000 73350.000000 35186.000000 70474.000000 36437.000000 75068.000000 34482.000000 81902.000000 32498.000000 84556.000000 31146.000000 82920.000000 31769.000000 85971.000000 31016.000000 90225.000000 30150.000000 87618.000000 30873.000000 92600.000000 29486.000000 96772.000000 28518.000000 93423.000000 29295.000000 93556.000000 29242.000000 106530.000000 27148.000000 112582.000000 26167.000000 109796.000000 26635.000000 118214.000000 25482.000000 116113.000000 25547.000000 121035.000000 25194.000000 126012.000000 24448.000000 139978.000000 23460.000000 136295.000000 23859.000000 147925.000000 23014.000000 153124.000000 22679.000000 155841.000000 22654.000000 168389.000000 22259.000000 179307.000000 22247.000000 21383.000000 175116.000000 21688.000000 166074.000000 21386.000000 170254.000000 22020.000000 151355.000000 22182.000000 144302.000000 22322.000000 140978.000000 22545.000000 135710.000000 23004.000000 131760.000000 23574.000000 121227.000000 23794.000000 120144.000000 24782.000000 113857.000000 25115.000000 107473.000000 25615.000000 105080.000000 25756.000000 103733.000000 25868.000000 100677.000000 26107.000000 100210.000000 27346.000000 93323.000000 26333.000000 99178.000000 28190.000000 91030.000000 27364.000000 93257.000000 26473.000000 97348.000000 30280.000000 84927.000000 28797.000000 88023.000000 29498.000000 86011.000000 29744.000000 85124.000000 31336.000000 81274.000000 31512.000000 79864.000000 32589.000000 78196.000000 33276.000000 76455.000000 37003.000000 69061.000000 34140.000000 74409.000000 36772.000000 69488.000000 36638.000000 70666.000000 37821.000000 67846.000000 41438.000000 61918.000000 37343.000000 68188.000000 38964.000000 65629.000000 41890.000000 61493.000000 42584.000000 60139.000000 44040.000000 58271.000000 43437.000000 59417.000000 46664.000000 55527.000000 51293.000000 50000.000000 46959.000000 54191.000000 47824.000000 53406.000000 50562.000000 51119.000000 54553.000000 47086.000000 56585.000000 45729.000000 52328.000000 48556.000000 58280.000000 44308.000000 56809.000000 45365.000000 60186.000000 43173.000000 61282.000000 41924.000000 62625.000000 40975.000000 64454.000000 40191.000000 68706.000000 37250.000000 66202.000000 38420.000000 64071.000000 40486.000000 69761.000000 36904.000000 67080.000000 38050.000000 72551.000000 35604.000000 74540.000000 34714.000000 76923.000000 34147.000000 78286.000000 33489.000000 79058.000000 33134.000000 82770.000000 31600.000000 86777.000000 31023.000000 88286.000000 30855.000000 97773.000000 28348.000000 93717.000000 29143.000000 97178.000000 28537.000000 99224.000000 28185.000000 104222.000000 27253.000000 106565.000000 26996.000000 108944.000000 26619.000000 115846.000000 25541.000000 118471.000000 25289.000000 135625.000000 24007.000000 133787.000000 24222.000000 139493.000000 23528.000000 146179.000000 22979.000000 153124.000000 22679.000000 158901.000000 22664.000000 168756.000000 22430.000000 170622.000000 22324.000000 177385.000000 22258.000000 21355.000000 179938.000000 21546.000000 164768.000000 21889.000000 152708.000000 22571.000000 141039.000000 22988.000000 132810.000000 23376.000000 127652.000000 23574.000000 121227.000000 24579.000000 113529.000000 24638.000000 111503.000000 25578.000000 105248.000000 26018.000000 100706.000000 25864.000000 101557.000000 26801.000000 95553.000000 27726.000000 92192.000000 27306.000000 93795.000000 28972.000000 88337.000000 28861.000000 88626.000000 28328.000000 90499.000000 29396.000000 87213.000000 30084.000000 84397.000000 31885.000000 79836.000000 31361.000000 80873.000000 34025.000000 74982.000000 34314.000000 74737.000000 33469.000000 77119.000000 34627.000000 73047.000000 34989.000000 71747.000000 38759.000000 66163.000000 35262.000000 71721.000000 36016.000000 70451.000000 42853.000000 59701.000000 42302.000000 60399.000000 46222.000000 55401.000000 43329.000000 59043.000000 47454.000000 53891.000000 46975.000000 54611.000000 49427.000000 51777.000000 50316.000000 51339.000000 48874.000000 52771.000000 52178.000000 48690.000000 54137.000000 48327.000000 54615.000000 47255.000000 55278.000000 46329.000000 57590.000000 45422.000000 58112.000000 44783.000000 58181.000000 44528.000000 62543.000000 41026.000000 60751.000000 42824.000000 65251.000000 39438.000000 63429.000000 40280.000000 68993.000000 37102.000000 73665.000000 35233.000000 66314.000000 38582.000000 69841.000000 36838.000000 77166.000000 34456.000000 70923.000000 36378.000000 80529.000000 32347.000000 79583.000000 33103.000000 84857.000000 31549.000000 86566.000000 30836.000000 90295.000000 29841.000000 91377.000000 29759.000000 87904.000000 30375.000000 92962.000000 29564.000000 95212.000000 29098.000000 100294.000000 27962.000000 107767.000000 26760.000000 111976.000000 26260.000000 113335.000000 25978.000000 113200.000000 26095.000000 127253.000000 24358.000000 121475.000000 24906.000000 137719.000000 23635.000000 143591.000000 23231.000000 141349.000000 23525.000000 147094.000000 22964.000000 148576.000000 22959.000000 158794.000000 22517.000000 168389.000000 22259.000000 176187.000000 22226.000000 21320.000000 175393.000000 21617.000000 170489.000000 21882.000000 152941.000000 22186.000000 146643.000000 22349.000000 141165.000000 22778.000000 134046.000000 24230.000000 120133.000000 24523.000000 114535.000000 25927.000000 103637.000000 25514.000000 105632.000000 25757.000000 104569.000000 26086.000000 99559.000000 26190.000000 99472.000000 26029.000000 100462.000000 27463.000000 93577.000000 28034.000000 91040.000000 28294.000000 89974.000000 28461.000000 88925.000000 28989.000000 87773.000000 29627.000000 86533.000000 30077.000000 84774.000000 30227.000000 84483.000000 31769.000000 79908.000000 34074.000000 74403.000000 35353.000000 72090.000000 36602.000000 69714.000000 39523.000000 65620.000000 36803.000000 68724.000000 38005.000000 67226.000000 40741.000000 63227.000000 42376.000000 60434.000000 43676.000000 58841.000000 41977.000000 61191.000000 42594.000000 60267.000000 43927.000000 58667.000000 46910.000000 54688.000000 47379.000000 53707.000000 47973.000000 53493.000000 48422.000000 52942.000000 52715.000000 49048.000000 50031.000000 52059.000000 52557.000000 49303.000000 50916.000000 50561.000000 56288.000000 45424.000000 54654.000000 47688.000000 56893.000000 45273.000000 57913.000000 45018.000000 61824.000000 41840.000000 59784.000000 42978.000000 60676.000000 42257.000000 66128.000000 39369.000000 69374.000000 37561.000000 69776.000000 36971.000000 65887.000000 39465.000000 70857.000000 36323.000000 67504.000000 37648.000000 70166.000000 36560.000000 71946.000000 35954.000000 73372.000000 35715.000000 70416.000000 36433.000000 77275.000000 34079.000000 80529.000000 32347.000000 84398.000000 31410.000000 84003.000000 31438.000000 84707.000000 31259.000000 91514.000000 29832.000000 88700.000000 30337.000000 93305.000000 29086.000000 98186.000000 28382.000000 94880.000000 29011.000000 97999.000000 28561.000000 104463.000000 27397.000000 108025.000000 27164.000000 112373.000000 25934.000000 118124.000000 25763.000000 125175.000000 24720.000000 143662.000000 23189.000000 147888.000000 22966.000000 152897.000000 22687.000000 157478.000000 22598.000000 166317.000000 22361.000000 170801.000000 22274.000000 21372.000000 178308.000000 21461.000000 168111.000000 21489.000000 166059.000000 21686.000000 157389.000000 21873.000000 153736.000000 22444.000000 139251.000000 22943.000000 131455.000000 23874.000000 120618.000000 25056.000000 109720.000000 24435.000000 113505.000000 25392.000000 105112.000000 26288.000000 99642.000000 26012.000000 100016.000000 27767.000000 91990.000000 26977.000000 95315.000000 27631.000000 93388.000000 26536.000000 97135.000000 28670.000000 89233.000000 28356.000000 91576.000000 28955.000000 88478.000000 30439.000000 83957.000000 29277.000000 86312.000000 29593.000000 85876.000000 30628.000000 83229.000000 32382.000000 78642.000000 33086.000000 76291.000000 33979.000000 75173.000000 32447.000000 78327.000000 33677.000000 75958.000000 35186.000000 73277.000000 35722.000000 71219.000000 37438.000000 67406.000000 38516.000000 66814.000000 39360.000000 64456.000000 38644.000000 66405.000000 41633.000000 62482.000000 43663.000000 58724.000000 47479.000000 53600.000000 44064.000000 58600.000000 48488.000000 53358.000000 46712.000000 54486.000000 46517.000000 54928.000000 50933.000000 49917.000000 49789.000000 51675.000000 55328.000000 47175.000000 53444.000000 47847.000000 55912.000000 46548.000000 51057.000000 49696.000000 57876.000000 44707.000000 58308.000000 43964.000000 63716.000000 40133.000000 61386.000000 41737.000000 62735.000000 41163.000000 66194.000000 38749.000000 67894.000000 38112.000000 66363.000000 38485.000000 69670.000000 37097.000000 70550.000000 36469.000000 69392.000000 37129.000000 74960.000000 34826.000000 75502.000000 34675.000000 72323.000000 35956.000000 77073.000000 33852.000000 76428.000000 33949.000000 81501.000000 32756.000000 79743.000000 32801.000000 84104.000000 31628.000000 82107.000000 32081.000000 91291.000000 29898.000000 89022.000000 30020.000000 94679.000000 28932.000000 96502.000000 28682.000000 107053.000000 27080.000000 104178.000000 27220.000000 115833.000000 25590.000000 122749.000000 25447.000000 132357.000000 24149.000000 137719.000000 23635.000000 146955.000000 22981.000000 153812.000000 22672.000000 164671.000000 22343.000000 168389.000000 22259.000000 172958.000000 22210.000000 21317.000000 171511.000000 21944.000000 155234.000000 22177.000000 149537.000000 22223.000000 143318.000000 22545.000000 135710.000000 23082.000000 128115.000000 24170.000000 117728.000000 23819.000000 121733.000000 24928.000000 108946.000000 25588.000000 106228.000000 25763.000000 104707.000000 26796.000000 98334.000000 26059.000000 100700.000000 26117.000000 100020.000000 27097.000000 93980.000000 28203.000000 89999.000000 28584.000000 88316.000000 30308.000000 84158.000000 29879.000000 85290.000000 29277.000000 86312.000000 33381.000000 76620.000000 32636.000000 78629.000000 32934.000000 77092.000000 34627.000000 73432.000000 34843.000000 72712.000000 35036.000000 72646.000000 34110.000000 74572.000000 35928.000000 72137.000000 38900.000000 66541.000000 38236.000000 67815.000000 39750.000000 63893.000000 41911.000000 61893.000000 37935.000000 67918.000000 39631.000000 64852.000000 44029.000000 58017.000000 43626.000000 58410.000000 46076.000000 56048.000000 49513.000000 51351.000000 46991.000000 53593.000000 48038.000000 52852.000000 52975.000000 48974.000000 50781.000000 50562.000000 53515.000000 48272.000000 53721.000000 47354.000000 56816.000000 44710.000000 55530.000000 46329.000000 60344.000000 42405.000000 62027.000000 41969.000000 63942.000000 40110.000000 62161.000000 41208.000000 66287.000000 38845.000000 65307.000000 39613.000000 66554.000000 38636.000000 68119.000000 38416.000000 68721.000000 37099.000000 71971.000000 36043.000000 73293.000000 35185.000000 74532.000000 34971.000000 79964.000000 32989.000000 83490.000000 32326.000000 80216.000000 32708.000000 81076.000000 32449.000000 83513.000000 31710.000000 86124.000000 31113.000000 90338.000000 30416.000000 88976.000000 30713.000000 94191.000000 28951.000000 91919.000000 29544.000000 99156.000000 28385.000000 103117.000000 27650.000000 116198.000000 25966.000000 112900.000000 26060.000000 116356.000000 25548.000000 119986.000000 25415.000000 132613.000000 24024.000000 128184.000000 24582.000000 143983.000000 23115.000000 146998.000000 23001.000000 156595.000000 22603.000000 157264.000000 22589.000000 163183.000000 22391.000000 176436.000000 22141.000000 21373.000000 177391.000000 21494.000000 166811.000000 21669.000000 159175.000000 21813.000000 153765.000000 22157.000000 146629.000000 23213.000000 130578.000000 23116.000000 131612.000000 24710.000000 112389.000000 25705.000000 104038.000000 24469.000000 113358.000000 25500.000000 106648.000000 26350.000000 100652.000000 25864.000000 101557.000000 26559.000000 99404.000000 26831.000000 97463.000000 26600.000000 97669.000000 28203.000000 89999.000000 27289.000000 94088.000000 28627.000000 89675.000000 28674.000000 88856.000000 28669.000000 88909.000000 29866.000000 84290.000000 30410.000000 84235.000000 30715.000000 82632.000000 32560.000000 77490.000000 34282.000000 73768.000000 34558.000000 73044.000000 38119.000000 67557.000000 36576.000000 69750.000000 35558.000000 71458.000000 39350.000000 65226.000000 39932.000000 64389.000000 39256.000000 66360.000000 43117.000000 60252.000000 42944.000000 60499.000000 44828.000000 56859.000000 46490.000000 55825.000000 46788.000000 54371.000000 45858.000000 56463.000000 48549.000000 52603.000000 49846.000000 51876.000000 47409.000000 53429.000000 50851.000000 51460.000000 49409.000000 52008.000000 53462.000000 48173.000000 54387.000000 46474.000000 57202.000000 45322.000000 61487.000000 41688.000000 62057.000000 41471.000000 60942.000000 42253.000000 63686.000000 40143.000000 62671.000000 40954.000000 64617.000000 39548.000000 66563.000000 38634.000000 65698.000000 39231.000000 67438.000000 38088.000000 70321.000000 36704.000000 69894.000000 37368.000000 73999.000000 35258.000000 76720.000000 33908.000000 79505.000000 33033.000000 81092.000000 32640.000000 82155.000000 32238.000000 88501.000000 30339.000000 84339.000000 31680.000000 90839.000000 30003.000000 89501.000000 30173.000000 94233.000000 29087.000000 98987.000000 27994.000000 104336.000000 27274.000000 112450.000000 26087.000000 121129.000000 25638.000000 123736.000000 24836.000000 137174.000000 23755.000000 145603.000000 23106.000000 147094.000000 22964.000000 153585.000000 22680.000000 156028.000000 22589.000000 171860.000000 22183.000000 21282.000000 178446.000000 21527.000000 168694.000000 21839.000000 157111.000000 21771.000000 157848.000000 22264.000000 145858.000000 22679.000000 135381.000000 23022.000000 131100.000000 23267.000000 129432.000000 23568.000000 122314.000000 23574.000000 121227.000000 24480.000000 112966.000000 25904.000000 103251.000000 25519.000000 107370.000000 26102.000000 100059.000000 25926.000000 101993.000000 26473.000000 97348.000000 27097.000000 93980.000000 28090.000000 91550.000000 27723.000000 92390.000000 28095.000000 90134.000000 28774.000000 88761.000000 29254.000000 87050.000000 29924.000000 84543.000000 30733.000000 83390.000000 29744.000000 85124.000000 32641.000000 78204.000000 32256.000000 78615.000000 33918.000000 74772.000000 35786.000000 72089.000000 34469.000000 74479.000000 37311.000000 68363.000000 34794.000000 73810.000000 40014.000000 63303.000000 38695.000000 65566.000000 41227.000000 61966.000000 37492.000000 68257.000000 42777.000000 59822.000000 44065.000000 58690.000000 45753.000000 56919.000000 45124.000000 57351.000000 48951.000000 52535.000000 47576.000000 53857.000000 51581.000000 49393.000000 46610.000000 55484.000000 49049.000000 52235.000000 53274.000000 47927.000000 55202.000000 46748.000000 55681.000000 46086.000000 60419.000000 43197.000000 57333.000000 45056.000000 60859.000000 42740.000000 56371.000000 45675.000000 62581.000000 40971.000000 65845.000000 39223.000000 65516.000000 39549.000000 67929.000000 37641.000000 67460.000000 37682.000000 68710.000000 37298.000000 74992.000000 34478.000000 72818.000000 35889.000000 74090.000000 35100.000000 73305.000000 35133.000000 80519.000000 32906.000000 80907.000000 32780.000000 83630.000000 31341.000000 89540.000000 30380.000000 89127.000000 30517.000000 93785.000000 29460.000000 94679.000000 28932.000000 98313.000000 28249.000000 101931.000000 28096.000000 104124.000000 27529.000000 115628.000000 25801.000000 113971.000000 25961.000000 118970.000000 25176.000000 130014.000000 24946.000000 135717.000000 23729.000000 138138.000000 23723.000000 146697.000000 23219.000000 151946.000000 23046.000000 159692.000000 22467.000000 169647.000000 22235.000000 21372.000000 178308.000000 21493.000000 171082.000000 21739.000000 163104.000000 21970.000000 153999.000000 22096.000000 148903.000000 22419.000000 138562.000000 22914.000000 135686.000000 24025.000000 121636.000000 23541.000000 122527.000000 25415.000000 105121.000000 25287.000000 105922.000000 25737.000000 103415.000000 26529.000000 98203.000000 26047.000000 100480.000000 26699.000000 97649.000000 27053.000000 95322.000000 28203.000000 89999.000000 28722.000000 89769.000000 28987.000000 87726.000000 28169.000000 92429.000000 29602.000000 85919.000000 29859.000000 84711.000000 30720.000000 82603.000000 33096.000000 76520.000000 35105.000000 72912.000000 34334.000000 74740.000000 36527.000000 70212.000000 34602.000000 73132.000000 38511.000000 66663.000000 37136.000000 69281.000000 37090.000000 69563.000000 41682.000000 61520.000000 41231.000000 62381.000000 42795.000000 60289.000000 45434.000000 55741.000000 44706.000000 58371.000000 46060.000000 55263.000000 50383.000000 51103.000000 47844.000000 53731.000000 50462.000000 50987.000000 50852.000000 50495.000000 52704.000000 48717.000000 54511.000000 46953.000000 54881.000000 46800.000000 56989.000000 45322.000000 58441.000000 44369.000000 62353.000000 40820.000000 59858.000000 43332.000000 61479.000000 41771.000000 60797.000000 42040.000000 64497.000000 39781.000000 64449.000000 39837.000000 66500.000000 38634.000000 70084.000000 36521.000000 70699.000000 36450.000000 71153.000000 36228.000000 69907.000000 37293.000000 71396.000000 35944.000000 73682.000000 35059.000000 71169.000000 36066.000000 77872.000000 33343.000000 77816.000000 33980.000000 84010.000000 31954.000000 89781.000000 30064.000000 84894.000000 31132.000000 85908.000000 30930.000000 87762.000000 30478.000000 93365.000000 29254.000000 92483.000000 29770.000000 97599.000000 28498.000000 106815.000000 27014.000000 100267.000000 27892.000000 118865.000000 25209.000000 113698.000000 26148.000000 115469.000000 25854.000000 122251.000000 24888.000000 133836.000000 23953.000000 143176.000000 23456.000000 132499.000000 23996.000000 146874.000000 23058.000000 153689.000000 22774.000000 164886.000000 22461.000000 170187.000000 22396.000000 170537.000000 22336.000000 176436.000000 22141.000000 21292.000000 176171.000000 21408.000000 164244.000000 22242.000000 143419.000000 22628.000000 136875.000000 22878.000000 132494.000000 23242.000000 129181.000000 23925.000000 121309.000000 24353.000000 113989.000000 25559.000000 104460.000000 25659.000000 104389.000000 25891.000000 102564.000000 25894.000000 102100.000000 25941.000000 101664.000000 26385.000000 100828.000000 27346.000000 93323.000000 27913.000000 90720.000000 26821.000000 96192.000000 29217.000000 86951.000000 29455.000000 85511.000000 30356.000000 84750.000000 29594.000000 85045.000000 32648.000000 79124.000000 32711.000000 77276.000000 31867.000000 79527.000000 34723.000000 73234.000000 33694.000000 75762.000000 36225.000000 70342.000000 37291.000000 69187.000000 39088.000000 66209.000000 37964.000000 67924.000000 41234.000000 62617.000000 38115.000000 66896.000000 41760.000000 61511.000000 44961.000000 57858.000000 43152.000000 59103.000000 45310.000000 55884.000000 46659.000000 55331.000000 46999.000000 54906.000000 51660.000000 50520.000000 50612.000000 50564.000000 47913.000000 53310.000000 53270.000000 48438.000000 52098.000000 49385.000000 54026.000000 48098.000000 54659.000000 47182.000000 55728.000000 46423.000000 58837.000000 43783.000000 60170.000000 42732.000000 57255.000000 44568.000000 62116.000000 41516.000000 66194.000000 38606.000000 64884.000000 40087.000000 65629.000000 39556.000000 69146.000000 37204.000000 68683.000000 37375.000000 73643.000000 34898.000000 73099.000000 35196.000000 77872.000000 33343.000000 85214.000000 31529.000000 83154.000000 31728.000000 90170.000000 30052.000000 86311.000000 31125.000000 89241.000000 30735.000000 89338.000000 30091.000000 92000.000000 29744.000000 101582.000000 28062.000000 97847.000000 28792.000000 114314.000000 25920.000000 107594.000000 27149.000000 113390.000000 26065.000000 118173.000000 25673.000000 124005.000000 24761.000000 136373.000000 23825.000000 138265.000000 23664.000000 141425.000000 23404.000000 146206.000000 23062.000000 152204.000000 22879.000000 153311.000000 22791.000000 168110.000000 22602.000000 172958.000000 22210.000000 21346.000000 178221.000000 21444.000000 164797.000000 22304.000000 145343.000000 23046.000000 132120.000000 23719.000000 120801.000000 23801.000000 119346.000000 23698.000000 121347.000000 24940.000000 108881.000000 25714.000000 101528.000000 26879.000000 95758.000000 26029.000000 100462.000000 27926.000000 90828.000000 27097.000000 93980.000000 30523.000000 85294.000000 28819.000000 90303.000000 28851.000000 87867.000000 29575.000000 86498.000000 29389.000000 86824.000000 33479.000000 76579.000000 31640.000000 80022.000000 33767.000000 74809.000000 34569.000000 74339.000000 34612.000000 72812.000000 38287.000000 66734.000000 36119.000000 71698.000000 36747.000000 68705.000000 37178.000000 68303.000000 42692.000000 60846.000000 41561.000000 61410.000000 44201.000000 58475.000000 43217.000000 60072.000000 46637.000000 54796.000000 49615.000000 51411.000000 47041.000000 53620.000000 48094.000000 53209.000000 47454.000000 53321.000000 45792.000000 55484.000000 51331.000000 50010.000000 54649.000000 47366.000000 51652.000000 49336.000000 55779.000000 45710.000000 56390.000000 45427.000000 60324.000000 42908.000000 58079.000000 44217.000000 60553.000000 42803.000000 62935.000000 40957.000000 59858.000000 43007.000000 63052.000000 40816.000000 64916.000000 39974.000000 63482.000000 40295.000000 65910.000000 39429.000000 69067.000000 37281.000000 70182.000000 36958.000000 67813.000000 37777.000000 71331.000000 36658.000000 72607.000000 35421.000000 73643.000000 34898.000000 75190.000000 34131.000000 75153.000000 34668.000000 78890.000000 33102.000000 81546.000000 32915.000000 81697.000000 32443.000000 84272.000000 31278.000000 91305.000000 30040.000000 98445.000000 28799.000000 91009.000000 30124.000000 91622.000000 29593.000000 95485.000000 28996.000000 99884.000000 28000.000000 98856.000000 28411.000000 110301.000000 26415.000000 112020.000000 26259.000000 115726.000000 25856.000000 127364.000000 24639.000000 132742.000000 24072.000000 142903.000000 23238.000000 137483.000000 23875.000000 146179.000000 22979.000000 153585.000000 22680.000000 162458.000000 22395.000000 171860.000000 22183.000000 21411.000000 174338.000000 21979.000000 151994.000000 21685.000000 157337.000000 22103.000000 147327.000000 22610.000000 141715.000000 22777.000000 136970.000000 23101.000000 128216.000000 23791.000000 120527.000000 23928.000000 118953.000000 24749.000000 113490.000000 25360.000000 104494.000000 26230.000000 102039.000000 26047.000000 102237.000000 26926.000000 99072.000000 27033.000000 96821.000000 27369.000000 95908.000000 28207.000000 91379.000000 27828.000000 92458.000000 28558.000000 89460.000000 30025.000000 85426.000000 29195.000000 87721.000000 29547.000000 87555.000000 30355.000000 83135.000000 31948.000000 80856.000000 32943.000000 77197.000000 32456.000000 78737.000000 33369.000000 75519.000000 36005.000000 70687.000000 34771.000000 72337.000000 37691.000000 68959.000000 39305.000000 65160.000000 41271.000000 61772.000000 42349.000000 61217.000000 43235.000000 60760.000000 45394.000000 56175.000000 44189.000000 58902.000000 44332.000000 58249.000000 49589.000000 52021.000000 48211.000000 53605.000000 47048.000000 53825.000000 49004.000000 52805.000000 52419.000000 49456.000000 53439.000000 47880.000000 52236.000000 49464.000000 56272.000000 45895.000000 56488.000000 45424.000000 58392.000000 44584.000000 53675.000000 47453.000000 54955.000000 46744.000000 64736.000000 39656.000000 63450.000000 41088.000000 63483.000000 40721.000000 63494.000000 40521.000000 70491.000000 36960.000000 66336.000000 39261.000000 69123.000000 37401.000000 67968.000000 38607.000000 71709.000000 35774.000000 72237.000000 35634.000000 78229.000000 33765.000000 78859.000000 33023.000000 81881.000000 31989.000000 85093.000000 31382.000000 84682.000000 31837.000000 86819.000000 30971.000000 89022.000000 30020.000000 93714.000000 29089.000000 99212.000000 27966.000000 95242.000000 28949.000000 106827.000000 26914.000000 109760.000000 26571.000000 117288.000000 25370.000000 118920.000000 25187.000000 128199.000000 24564.000000 129321.000000 24459.000000 138626.000000 23752.000000 136588.000000 23790.000000 143481.000000 23193.000000 146222.000000 22999.000000 152937.000000 22744.000000 156028.000000 22589.000000 166890.000000 22332.000000 177385.000000 22258.000000 21353.000000 178946.000000 21408.000000 171051.000000 22012.000000 149225.000000 21840.000000 153071.000000 22545.000000 135710.000000 23012.000000 129755.000000 23671.000000 120482.000000 23802.000000 119919.000000 24827.000000 110007.000000 25287.000000 105922.000000 25649.000000 105368.000000 26102.000000 100243.000000 25256.000000 107115.000000 26545.000000 97288.000000 26801.000000 95553.000000 27261.000000 95380.000000 28095.000000 90134.000000 29736.000000 85847.000000 29703.000000 87650.000000 29866.000000 84290.000000 31604.000000 81745.000000 32503.000000 77445.000000 34123.000000 73673.000000 35812.000000 71462.000000 35235.000000 72150.000000 36194.000000 70427.000000 38732.000000 65347.000000 41218.000000 63601.000000 40301.000000 63622.000000 42845.000000 59982.000000 43853.000000 59265.000000 43711.000000 59731.000000 41479.000000 61504.000000 48470.000000 52759.000000 44233.000000 57752.000000 49210.000000 51509.000000 51283.000000 50675.000000 49555.000000 51225.000000 56313.000000 46043.000000 57873.000000 44317.000000 56975.000000 44728.000000 56598.000000 45440.000000 58677.000000 43820.000000 59263.000000 43247.000000 60342.000000 42849.000000 61479.000000 42170.000000 65432.000000 39365.000000 65779.000000 39335.000000 64429.000000 40019.000000 71624.000000 36058.000000 65865.000000 38533.000000 70736.000000 36389.000000 72093.000000 36038.000000 73643.000000 34898.000000 78599.000000 33376.000000 76904.000000 33928.000000 74124.000000 34532.000000 80755.000000 32474.000000 83118.000000 31604.000000 89908.000000 29885.000000 91077.000000 29878.000000 95351.000000 28809.000000 95565.000000 28797.000000 96705.000000 28558.000000 107736.000000 26746.000000 104616.000000 27284.000000 107622.000000 26940.000000 114833.000000 25787.000000 119108.000000 25207.000000 120016.000000 25110.000000 138268.000000 23645.000000 133449.000000 24007.000000 146867.000000 22972.000000 159366.000000 22547.000000 157732.000000 22676.000000 165263.000000 22447.000000 170707.000000 22335.000000 179907.000000 22214.000000 21419.000000 168233.000000 22216.000000 153074.000000 21605.000000 160778.000000 22264.000000 145858.000000 22452.000000 137262.000000 22323.000000 140772.000000 23329.000000 124701.000000 24414.000000 114284.000000 24828.000000 110580.000000 25453.000000 105418.000000 25864.000000 101557.000000 26012.000000 100016.000000 26317.000000 98596.000000 26801.000000 95553.000000 28584.000000 88316.000000 27233.000000 93580.000000 27744.000000 92186.000000 28445.000000 88981.000000 28797.000000 88023.000000 30544.000000 82934.000000 29503.000000 86253.000000 31353.000000 81534.000000 33254.000000 76369.000000 33893.000000 76294.000000 33959.000000 75147.000000 34867.000000 72569.000000 35106.000000 72430.000000 37398.000000 68369.000000 38621.000000 65987.000000 40450.000000 63998.000000 37049.000000 69090.000000 42310.000000 60753.000000 41589.000000 61674.000000 43644.000000 58945.000000 44724.000000 57786.000000 43325.000000 59411.000000 47765.000000 53364.000000 45904.000000 55733.000000 47679.000000 54975.000000 48391.000000 53252.000000 49726.000000 51368.000000 51414.000000 49471.000000 50691.000000 50553.000000 50232.000000 50685.000000 53025.000000 48432.000000 55614.000000 46476.000000 58089.000000 43865.000000 57933.000000 44157.000000 61443.000000 41595.000000 63710.000000 40512.000000 63753.000000 40383.000000 66813.000000 37837.000000 70560.000000 36347.000000 67308.000000 37813.000000 68431.000000 37298.000000 69498.000000 36892.000000 74729.000000 34775.000000 77262.000000 33723.000000 76341.000000 34761.000000 81378.000000 32057.000000 82002.000000 32025.000000 88288.000000 30179.000000 84304.000000 31308.000000 92273.000000 29901.000000 94269.000000 29327.000000 95514.000000 29216.000000 98756.000000 28098.000000 107305.000000 26859.000000 110630.000000 26398.000000 112738.000000 26338.000000 115231.000000 25859.000000 118393.000000 25499.000000 133224.000000 24188.000000 125923.000000 24883.000000 141573.000000 23518.000000 146406.000000 22971.000000 152710.000000 22752.000000 154683.000000 22746.000000 171860.000000 22183.000000 21292.000000 176171.000000 21370.000000 167892.000000 21472.000000 164019.000000 22022.000000 149463.000000 22247.000000 143521.000000 23046.000000 132120.000000 23547.000000 126750.000000 23655.000000 122441.000000 23662.000000 120402.000000 25334.000000 108066.000000 25843.000000 102059.000000 25718.000000 104772.000000 25735.000000 103542.000000 26486.000000 97899.000000 27219.000000 94500.000000 26801.000000 95553.000000 28842.000000 88467.000000 27975.000000 94410.000000 28203.000000 89999.000000 30035.000000 84829.000000 29744.000000 85124.000000 30469.000000 84155.000000 29523.000000 86708.000000 32685.000000 78668.000000 31512.000000 79864.000000 33711.000000 75783.000000 33338.000000 76687.000000 35954.000000 70458.000000 37533.000000 67504.000000 35292.000000 72235.000000 38610.000000 66046.000000 39093.000000 65876.000000 38131.000000 66865.000000 40820.000000 62548.000000 42045.000000 60601.000000 42892.000000 60301.000000 44631.000000 57410.000000 43808.000000 59013.000000 45869.000000 56062.000000 46940.000000 54184.000000 46554.000000 54761.000000 51232.000000 49840.000000 47041.000000 53620.000000 50354.000000 51080.000000 52924.000000 48629.000000 53866.000000 48552.000000 56698.000000 45422.000000 54828.000000 47047.000000 58749.000000 43996.000000 60647.000000 42284.000000 61817.000000 41740.000000 62597.000000 41295.000000 64254.000000 39766.000000 64187.000000 39814.000000 65232.000000 39386.000000 66469.000000 38860.000000 68531.000000 38238.000000 69681.000000 37487.000000 70927.000000 36332.000000 73028.000000 35664.000000 72130.000000 36007.000000 75208.000000 34810.000000 76816.000000 34102.000000 81404.000000 32220.000000 78857.000000 33023.000000 83395.000000 31881.000000 88288.000000 30179.000000 92734.000000 29480.000000 93955.000000 29214.000000 92458.000000 29896.000000 99485.000000 28245.000000 104957.000000 27148.000000 102364.000000 27549.000000 109779.000000 26724.000000 116793.000000 25655.000000 118031.000000 25362.000000 134850.000000 24151.000000 121103.000000 25287.000000 137719.000000 23889.000000 144691.000000 23532.000000 147137.000000 22984.000000 153124.000000 22679.000000 159692.000000 22467.000000 166550.000000 22381.000000 174130.000000 22380.000000 21370.000000 167892.000000 22107.000000 150060.000000 22452.000000 137262.000000 22338.000000 141907.000000 23274.000000 130042.000000 24446.000000 114989.000000 24646.000000 114846.000000 23890.000000 119094.000000 24930.000000 109301.000000 25771.000000 102878.000000 25698.000000 103362.000000 26135.000000 100712.000000 26807.000000 96243.000000 27364.000000 93257.000000 28281.000000 90204.000000 27097.000000 93980.000000 29428.000000 86912.000000 28719.000000 88609.000000 27952.000000 90584.000000 29822.000000 85329.000000 30043.000000 84477.000000 32110.000000 79070.000000 32503.000000 78569.000000 33127.000000 76760.000000 34898.000000 72317.000000 35361.000000 71575.000000 36726.000000 70015.000000 36970.000000 68903.000000 40696.000000 63088.000000 38993.000000 65068.000000 42204.000000 60648.000000 45152.000000 56968.000000 43504.000000 59274.000000 44694.000000 57815.000000 42656.000000 60202.000000 42771.000000 60136.000000 44660.000000 57884.000000 45653.000000 56243.000000 47780.000000 54180.000000 48571.000000 53212.000000 47045.000000 54393.000000 48869.000000 52668.000000 49523.000000 51495.000000 51128.000000 49892.000000 55463.000000 46492.000000 58440.000000 44892.000000 56605.000000 45124.000000 59603.000000 43380.000000 57078.000000 44908.000000 59028.000000 43717.000000 61329.000000 41883.000000 62433.000000 41653.000000 63788.000000 40745.000000 66821.000000 38460.000000 67167.000000 38393.000000 66721.000000 38559.000000 68713.000000 37206.000000 71994.000000 36038.000000 70916.000000 36828.000000 74724.000000 34817.000000 73666.000000 35271.000000 73912.000000 35034.000000 76889.000000 34117.000000 80282.000000 33162.000000 83476.000000 32091.000000 83993.000000 32003.000000 87485.000000 30535.000000 86886.000000 31239.000000 90657.000000 29975.000000 92635.000000 29449.000000 96013.000000 28765.000000 98985.000000 28455.000000 99763.000000 28027.000000 103823.000000 27710.000000 104133.000000 27425.000000 107160.000000 26937.000000 122894.000000 25280.000000 117351.000000 25607.000000 121481.000000 25305.000000 136067.000000 23897.000000 143452.000000 23248.000000 147551.000000 23095.000000 153124.000000 22679.000000 159692.000000 22467.000000 170801.000000 22274.000000 21446.000000 178062.000000 21512.000000 172584.000000 21748.000000 161111.000000 21918.000000 156296.000000 22490.000000 138545.000000 23008.000000 135822.000000 23704.000000 122187.000000 24371.000000 117119.000000 24895.000000 109925.000000 24480.000000 112966.000000 25109.000000 108494.000000 25447.000000 104782.000000 25965.000000 103022.000000 26463.000000 100696.000000 28085.000000 93789.000000 26766.000000 98048.000000 27097.000000 93980.000000 26879.000000 95758.000000 28873.000000 89005.000000 28134.000000 89998.000000 29185.000000 86593.000000 30206.000000 83563.000000 30531.000000 83272.000000 31906.000000 79103.000000 33213.000000 78322.000000 37360.000000 67956.000000 34585.000000 72809.000000 34245.000000 73536.000000 35507.000000 71800.000000 41110.000000 63059.000000 38861.000000 66309.000000 41346.000000 61778.000000 43620.000000 59849.000000 40471.000000 63173.000000 42274.000000 60721.000000 45752.000000 56317.000000 44796.000000 56804.000000 45850.000000 55973.000000 47632.000000 53229.000000 47485.000000 53650.000000 49044.000000 51959.000000 50390.000000 51223.000000 53615.000000 47953.000000 54349.000000 47395.000000 52203.000000 48769.000000 58282.000000 43600.000000 55973.000000 45938.000000 56275.000000 45370.000000 62811.000000 40706.000000 59196.000000 43167.000000 67863.000000 38115.000000 65498.000000 39221.000000 66050.000000 38860.000000 66273.000000 38812.000000 68900.000000 37123.000000 68311.000000 37723.000000 71354.000000 36346.000000 71979.000000 35892.000000 74124.000000 35215.000000 78171.000000 34001.000000 78504.000000 33384.000000 82064.000000 32443.000000 84514.000000 31653.000000 87662.000000 30800.000000 83118.000000 31832.000000 86626.000000 31174.000000 89174.000000 30044.000000 94779.000000 29031.000000 100096.000000 27982.000000 102632.000000 27677.000000 98451.000000 28368.000000 110215.000000 26376.000000 100258.000000 27932.000000 118264.000000 25639.000000 120246.000000 25185.000000 117579.000000 25648.000000 124606.000000 24884.000000 142903.000000 23238.000000 146406.000000 22971.000000 153673.000000 22689.000000 159465.000000 22475.000000 169074.000000 22264.000000 167979.000000 22334.000000 179222.000000 22209.000000 21346.000000 178221.000000 21867.000000 166278.000000 21398.000000 167114.000000 22052.000000 148018.000000 22468.000000 142939.000000 22906.000000 132251.000000 23719.000000 123278.000000 23755.000000 122839.000000 24776.000000 111446.000000 24765.000000 112059.000000 25315.000000 109712.000000 25796.000000 104411.000000 26108.000000 102629.000000 26287.000000 99392.000000 26187.000000 101474.000000 26710.000000 98506.000000 26794.000000 97255.000000 27365.000000 93983.000000 26844.000000 96406.000000 27767.000000 92988.000000 28316.000000 89591.000000 28847.000000 89196.000000 29464.000000 86607.000000 30199.000000 83628.000000 29830.000000 85046.000000 30355.000000 83135.000000 32741.000000 78567.000000 34449.000000 74546.000000 33194.000000 76818.000000 36503.000000 69622.000000 35103.000000 72656.000000 34812.000000 73119.000000 37209.000000 67841.000000 41438.000000 62850.000000 38938.000000 65298.000000 40239.000000 64406.000000 45348.000000 56371.000000 43253.000000 59275.000000 49118.000000 52248.000000 50433.000000 50928.000000 48593.000000 53733.000000 46880.000000 54295.000000 49196.000000 52050.000000 50838.000000 50414.000000 54099.000000 47648.000000 54954.000000 47229.000000 56161.000000 45908.000000 52790.000000 48448.000000 58285.000000 44212.000000 56860.000000 45176.000000 55289.000000 46202.000000 62679.000000 40753.000000 61947.000000 41382.000000 65154.000000 39497.000000 67322.000000 38004.000000 64354.000000 40170.000000 70364.000000 37077.000000 67190.000000 38017.000000 68081.000000 37510.000000 74771.000000 34826.000000 75228.000000 34462.000000 79650.000000 33082.000000 78607.000000 33743.000000 79199.000000 33289.000000 84236.000000 31249.000000 83630.000000 31341.000000 86468.000000 30899.000000 91191.000000 29935.000000 88452.000000 30226.000000 89475.000000 30074.000000 94310.000000 29196.000000 98890.000000 28199.000000 101281.000000 27702.000000 108577.000000 27109.000000 105080.000000 27399.000000 116484.000000 26106.000000 119069.000000 25235.000000 129288.000000 24189.000000 143591.000000 23231.000000 145992.000000 23104.000000 155544.000000 22708.000000 159692.000000 22467.000000 164279.000000 22416.000000 170201.000000 22307.000000 180614.000000 22274.000000 21380.000000 165022.000000 21577.000000 159478.000000 22014.000000 152890.000000 22490.000000 138545.000000 22940.000000 129524.000000 23325.000000 129101.000000 23568.000000 122314.000000 24443.000000 113430.000000 25591.000000 103889.000000 25858.000000 100867.000000 25849.000000 103007.000000 25564.000000 104672.000000 26319.000000 98199.000000 27126.000000 96750.000000 27175.000000 94185.000000 27834.000000 92566.000000 28662.000000 88521.000000 28890.000000 88440.000000 28281.000000 90204.000000 29392.000000 86415.000000 30392.000000 83091.000000 31489.000000 81179.000000 29744.000000 85124.000000 31021.000000 81600.000000 33894.000000 76322.000000 32029.000000 79077.000000 34670.000000 73654.000000 36112.000000 70023.000000 34069.000000 74084.000000 36825.000000 69288.000000 40843.000000 62873.000000 43960.000000 58899.000000 42544.000000 60193.000000 38229.000000 66201.000000 40685.000000 64004.000000 44763.000000 57720.000000 44803.000000 56914.000000 46640.000000 55161.000000 48040.000000 53844.000000 50992.000000 50548.000000 53659.000000 47754.000000 49760.000000 51653.000000 48833.000000 52778.000000 49416.000000 51684.000000 53209.000000 48394.000000 52717.000000 49200.000000 57628.000000 45050.000000 57108.000000 45252.000000 60962.000000 42458.000000 56563.000000 45300.000000 59939.000000 42735.000000 62593.000000 40705.000000 61694.000000 41342.000000 65030.000000 39038.000000 66610.000000 38549.000000 64784.000000 39948.000000 66937.000000 38395.000000 67308.000000 37813.000000 70977.000000 36352.000000 70898.000000 36716.000000 69498.000000 37265.000000 74549.000000 35027.000000 74130.000000 35028.000000 76762.000000 34300.000000 81806.000000 32981.000000 78692.000000 33037.000000 84679.000000 31576.000000 83178.000000 31706.000000 90609.000000 29680.000000 92683.000000 29547.000000 95252.000000 29002.000000 95022.000000 29375.000000 99311.000000 28093.000000 99376.000000 28021.000000 108177.000000 26718.000000 112135.000000 26141.000000 114250.000000 26105.000000 121558.000000 25054.000000 121502.000000 25160.000000 130829.000000 24200.000000 142903.000000 23238.000000 142132.000000 23327.000000 145758.000000 23017.000000 156171.000000 22585.000000 159788.000000 22538.000000 165632.000000 22356.000000 171935.000000 22256.000000 21365.000000 177663.000000 21451.000000 170981.000000 21990.000000 150018.000000 21819.000000 157603.000000 22415.000000 141895.000000 22452.000000 137262.000000 22919.000000 130561.000000 24438.000000 115064.000000 23896.000000 117595.000000 24408.000000 115573.000000 25163.000000 109316.000000 25360.000000 104494.000000 26053.000000 100010.000000 27312.000000 95436.000000 27592.000000 93918.000000 27642.000000 93154.000000 28387.000000 90171.000000 29107.000000 88764.000000 28726.000000 88799.000000 29866.000000 84290.000000 31225.000000 80631.000000 32425.000000 78054.000000 33978.000000 76243.000000 35029.000000 73200.000000 34134.000000 74831.000000 36169.000000 70812.000000 35388.000000 71340.000000 35030.000000 72608.000000 38406.000000 66211.000000 39060.000000 64965.000000 42970.000000 59700.000000 42477.000000 61726.000000 40981.000000 62113.000000 44985.000000 57599.000000 43705.000000 58528.000000 45241.000000 56877.000000 45217.000000 57027.000000 49075.000000 52517.000000 47425.000000 54659.000000 47846.000000 53383.000000 50359.000000 50276.000000 52498.000000 49185.000000 52637.000000 48404.000000 53984.000000 47785.000000 54395.000000 47571.000000 55827.000000 46075.000000 56189.000000 45620.000000 58975.000000 43341.000000 62843.000000 41005.000000 57801.000000 44421.000000 65186.000000 39403.000000 64405.000000 39635.000000 66311.000000 39276.000000 71997.000000 35741.000000 66178.000000 39343.000000 70797.000000 37223.000000 73685.000000 35320.000000 74766.000000 34896.000000 71067.000000 36384.000000 76806.000000 33744.000000 74217.000000 35010.000000 82304.000000 31862.000000 79606.000000 32702.000000 81879.000000 32541.000000 87997.000000 30392.000000 89022.000000 30020.000000 91837.000000 29746.000000 102097.000000 28119.000000 94066.000000 28980.000000 102950.000000 27538.000000 104655.000000 27162.000000 107567.000000 26775.000000 107475.000000 26808.000000 114821.000000 25800.000000 135524.000000 23922.000000 121119.000000 25063.000000 142993.000000 23310.000000 146206.000000 23062.000000 146406.000000 22971.000000 149199.000000 22887.000000 155643.000000 22840.000000 169788.000000 22285.000000 178115.000000 22251.000000 21385.000000 173116.000000 21839.000000 157111.000000 21889.000000 152708.000000 22057.000000 146916.000000 22468.000000 142806.000000 23422.000000 127109.000000 23145.000000 128797.000000 23776.000000 120411.000000 24172.000000 117744.000000 25044.000000 108641.000000 25397.000000 106423.000000 25580.000000 105302.000000 25947.000000 102998.000000 26348.000000 101294.000000 26446.000000 101008.000000 26499.000000 98771.000000 27075.000000 96566.000000 28203.000000 89999.000000 27923.000000 92305.000000 28720.000000 87916.000000 29028.000000 87211.000000 29745.000000 85663.000000 30728.000000 82700.000000 31634.000000 81575.000000 31708.000000 79621.000000 33373.000000 76066.000000 32503.000000 77445.000000 33378.000000 75871.000000 34560.000000 73485.000000 37120.000000 68676.000000 37597.000000 67334.000000 39933.000000 64596.000000 37876.000000 67216.000000 38572.000000 65999.000000 41955.000000 60973.000000 41919.000000 61412.000000 45333.000000 56337.000000 46464.000000 54724.000000 45809.000000 55976.000000 50442.000000 50464.000000 49752.000000 52329.000000 48663.000000 53074.000000 47212.000000 54595.000000 50394.000000 50886.000000 52367.000000 49569.000000 52538.000000 48161.000000 57153.000000 44856.000000 58640.000000 43694.000000 57845.000000 44638.000000 60229.000000 43093.000000 61029.000000 42055.000000 64377.000000 40013.000000 63775.000000 40365.000000 63275.000000 40555.000000 63234.000000 40587.000000 67308.000000 37813.000000 69205.000000 37779.000000 67104.000000 38457.000000 65865.000000 38533.000000 73227.000000 35270.000000 71449.000000 35687.000000 75248.000000 34635.000000 70474.000000 36437.000000 78214.000000 33159.000000 82067.000000 32095.000000 81613.000000 32434.000000 87075.000000 30683.000000 84840.000000 31462.000000 89027.000000 30115.000000 91517.000000 29761.000000 95593.000000 28634.000000 94066.000000 28980.000000 98760.000000 27977.000000 103370.000000 27500.000000 107762.000000 26745.000000 111445.000000 26288.000000 116418.000000 25606.000000 127870.000000 24617.000000 120609.000000 25030.000000 139195.000000 23692.000000 148115.000000 22958.000000 146406.000000 22971.000000 159692.000000 22467.000000 166176.000000 22311.000000 172873.000000 22172.000000 21282.000000 178446.000000 21355.000000 168458.000000 21658.000000 161293.000000 22453.000000 144843.000000 22631.000000 140086.000000 22754.000000 134023.000000 23549.000000 125655.000000 24612.000000 114490.000000 24185.000000 117670.000000 26053.000000 100010.000000 25624.000000 102645.000000 26822.000000 96204.000000 26424.000000 98408.000000 26700.000000 97766.000000 27756.000000 92904.000000 28062.000000 90428.000000 30680.000000 83922.000000 29185.000000 86593.000000 29972.000000 84858.000000 31176.000000 81067.000000 31420.000000 80836.000000 34998.000000 73288.000000 35298.000000 72006.000000 36616.000000 69663.000000 38720.000000 65518.000000 35913.000000 70918.000000 37901.000000 68004.000000 40502.000000 63559.000000 39312.000000 64616.000000 45289.000000 56099.000000 43961.000000 58053.000000 43398.000000 60062.000000 44041.000000 57895.000000 47484.000000 53951.000000 46080.000000 55452.000000 47559.000000 53597.000000 48388.000000 52744.000000 51338.000000 50210.000000 50700.000000 50376.000000 51015.000000 50296.000000 54047.000000 47481.000000 53263.000000 47858.000000 55627.000000 46123.000000 59273.000000 43917.000000 59945.000000 43128.000000 61787.000000 41469.000000 63303.000000 40845.000000 63657.000000 40158.000000 66941.000000 38325.000000 61589.000000 41948.000000 66175.000000 38426.000000 67504.000000 37648.000000 72842.000000 35497.000000 73757.000000 35311.000000 72488.000000 35779.000000 75190.000000 34131.000000 78270.000000 33657.000000 81564.000000 32221.000000 84364.000000 31182.000000 87521.000000 30990.000000 89022.000000 30020.000000 85325.000000 31175.000000 101365.000000 28074.000000 96072.000000 29207.000000 106142.000000 27164.000000 103377.000000 27695.000000 111134.000000 26235.000000 106688.000000 26969.000000 115753.000000 25677.000000 127632.000000 24414.000000 146179.000000 22979.000000 141662.000000 23404.000000 152897.000000 22687.000000 155801.000000 22597.000000 165632.000000 22356.000000 172020.000000 22294.000000 21373.000000 177391.000000 21444.000000 164797.000000 21620.000000 163027.000000 22562.000000 137915.000000 22526.000000 140721.000000 22961.000000 134030.000000 23082.000000 128115.000000 24031.000000 120698.000000 24350.000000 116301.000000 24710.000000 112389.000000 25450.000000 104447.000000 26066.000000 100784.000000 25992.000000 102331.000000 26234.000000 100775.000000 26577.000000 97129.000000 26382.000000 97986.000000 28361.000000 91426.000000 27703.000000 94538.000000 28965.000000 88490.000000 29186.000000 86919.000000 30388.000000 83427.000000 29306.000000 86602.000000 31282.000000 80889.000000 33292.000000 77080.000000 32421.000000 78387.000000 32560.000000 77490.000000 35894.000000 71365.000000 34503.000000 73439.000000 37408.000000 67689.000000 34219.000000 74204.000000 38914.000000 65808.000000 40473.000000 63086.000000 41909.000000 61999.000000 42496.000000 61079.000000 44837.000000 57081.000000 43697.000000 58877.000000 46257.000000 55277.000000 45988.000000 55522.000000 46524.000000 54997.000000 50937.000000 51729.000000 48370.000000 52941.000000 48906.000000 52027.000000 51266.000000 49485.000000 51859.000000 49409.000000 52590.000000 48493.000000 54679.000000 47292.000000 56828.000000 45950.000000 60853.000000 42407.000000 64042.000000 40073.000000 63246.000000 40436.000000 60090.000000 42577.000000 62839.000000 41250.000000 63243.000000 40638.000000 65719.000000 39639.000000 67308.000000 37813.000000 69268.000000 37493.000000 73300.000000 35257.000000 71130.000000 36203.000000 72257.000000 35992.000000 70276.000000 36851.000000 76099.000000 34307.000000 75232.000000 34491.000000 79133.000000 33472.000000 79632.000000 32972.000000 83092.000000 31939.000000 83515.000000 31573.000000 90286.000000 29972.000000 89330.000000 30038.000000 93503.000000 29275.000000 95374.000000 28819.000000 101499.000000 27759.000000 102482.000000 27641.000000 113169.000000 26018.000000 106259.000000 27036.000000 117634.000000 25577.000000 118721.000000 25489.000000 129804.000000 24399.000000 125608.000000 24587.000000 141142.000000 23563.000000 142776.000000 23454.000000 149142.000000 23091.000000 153124.000000 22679.000000 171860.000000 22183.000000 21282.000000 178446.000000 21327.000000 169236.000000 21576.000000 164764.000000 21640.000000 158966.000000 22299.000000 146851.000000 22683.000000 138683.000000 23218.000000 128962.000000 23404.000000 124483.000000 23568.000000 122314.000000 23473.000000 124020.000000 23879.000000 118579.000000 25357.000000 105880.000000 26084.000000 101300.000000 26269.000000 99500.000000 27617.000000 92293.000000 27097.000000 93980.000000 28598.000000 89618.000000 29188.000000 87019.000000 28898.000000 87314.000000 29095.000000 87231.000000 30396.000000 83637.000000 29859.000000 84711.000000 32593.000000 78418.000000 31605.000000 82085.000000 34239.000000 73842.000000 32802.000000 77412.000000 35061.000000 73299.000000 36333.000000 70370.000000 35470.000000 72044.000000 37087.000000 67978.000000 40136.000000 64005.000000 41232.000000 62059.000000 44826.000000 57718.000000 43406.000000 60244.000000 44680.000000 57779.000000 46081.000000 55311.000000 45848.000000 55354.000000 52118.000000 49414.000000 49054.000000 51625.000000 49639.000000 51097.000000 51954.000000 50213.000000 55226.000000 46635.000000 55351.000000 46278.000000 56043.000000 45871.000000 58992.000000 43566.000000 60578.000000 42156.000000 60200.000000 42834.000000 61833.000000 41926.000000 62663.000000 41592.000000 64583.000000 39955.000000 64990.000000 39102.000000 63353.000000 40703.000000 72136.000000 35657.000000 67333.000000 38346.000000 70815.000000 36232.000000 71959.000000 35813.000000 70254.000000 37320.000000 69592.000000 37993.000000 76288.000000 34479.000000 78568.000000 33436.000000 77387.000000 33826.000000 82018.000000 32980.000000 82060.000000 32667.000000 85253.000000 31315.000000 84300.000000 31737.000000 89602.000000 30404.000000 94007.000000 29191.000000 94458.000000 28960.000000 98622.000000 28481.000000 103543.000000 27503.000000 105291.000000 27102.000000 102745.000000 27537.000000 107903.000000 26729.000000 112166.000000 26262.000000 113552.000000 25924.000000 120925.000000 25334.000000 133784.000000 23942.000000 151103.000000 22895.000000 141483.000000 23339.000000 152924.000000 22770.000000 158320.000000 22512.000000 171795.000000 22253.000000 177206.000000 22184.000000 21408.000000 172046.000000 21591.000000 164116.000000 22058.000000 148969.000000 22661.000000 135575.000000 23574.000000 121227.000000 23897.000000 120458.000000 24458.000000 114034.000000 25789.000000 101859.000000 25852.000000 101337.000000 26600.000000 97669.000000 27355.000000 94100.000000 28590.000000 89006.000000 28316.000000 89591.000000 29490.000000 88058.000000 29679.000000 86614.000000 30494.000000 83657.000000 28790.000000 88767.000000 31676.000000 80401.000000 32960.000000 78217.000000 34146.000000 74220.000000 35075.000000 72683.000000 33426.000000 75564.000000 37152.000000 69332.000000 36557.000000 71326.000000 34878.000000 73185.000000 36698.000000 70279.000000 38899.000000 65732.000000 38274.000000 67002.000000 44001.000000 58451.000000 37172.000000 69150.000000 41415.000000 63073.000000 44839.000000 56870.000000 41967.000000 60968.000000 44757.000000 57570.000000 48911.000000 53126.000000 47791.000000 53259.000000 46300.000000 54915.000000 50092.000000 51244.000000 50987.000000 50873.000000 49211.000000 51744.000000 51315.000000 50079.000000 51637.000000 48902.000000 53231.000000 48881.000000 56498.000000 45988.000000 59006.000000 43972.000000 61378.000000 42086.000000 60459.000000 43124.000000 64577.000000 39437.000000 62685.000000 41361.000000 64445.000000 40848.000000 66813.000000 37837.000000 68239.000000 37476.000000 70115.000000 36395.000000 75125.000000 34772.000000 78262.000000 33430.000000 75643.000000 34344.000000 78353.000000 33299.000000 83349.000000 31874.000000 87388.000000 30537.000000 84205.000000 31230.000000 90084.000000 30001.000000 92436.000000 29527.000000 95209.000000 29091.000000 98529.000000 28799.000000 99127.000000 28396.000000 100092.000000 28025.000000 109851.000000 26580.000000 109920.000000 26418.000000 122378.000000 25347.000000 126338.000000 24826.000000 133230.000000 23884.000000 141927.000000 23416.000000 146309.000000 23210.000000 143824.000000 23364.000000 150541.000000 23026.000000 153384.000000 22939.000000 164944.000000 22453.000000 169780.000000 22372.000000 176436.000000 22141.000000 21315.000000 171526.000000 21809.000000 154200.000000 21901.000000 154132.000000 22130.000000 146148.000000 22810.000000 133240.000000 23316.000000 126016.000000 24320.000000 117106.000000 24193.000000 118242.000000 24881.000000 110180.000000 25584.000000 105911.000000 25659.000000 104389.000000 25984.000000 101808.000000 26053.000000 100010.000000 26629.000000 99900.000000 26807.000000 98594.000000 27097.000000 93980.000000 28203.000000 89999.000000 29509.000000 86377.000000 29165.000000 87333.000000 29744.000000 85124.000000 30159.000000 84903.000000 29061.000000 89209.000000 29674.000000 85539.000000 31906.000000 79103.000000 31825.000000 80204.000000 33014.000000 76606.000000 36706.000000 69379.000000 35112.000000 72146.000000 35740.000000 71649.000000 41263.000000 62107.000000 40228.000000 64003.000000 40275.000000 63316.000000 43952.000000 59163.000000 42526.000000 59997.000000 48414.000000 52414.000000 47992.000000 53215.000000 45834.000000 55355.000000 49534.000000 51329.000000 46641.000000 54829.000000 51867.000000 49332.000000 54904.000000 46674.000000 57364.000000 44891.000000 57257.000000 45145.000000 56600.000000 45634.000000 57419.000000 44757.000000 61322.000000 41893.000000 65972.000000 38895.000000 61684.000000 41385.000000 63122.000000 40946.000000 67434.000000 37665.000000 70024.000000 36490.000000 71190.000000 36245.000000 73331.000000 35440.000000 77552.000000 34247.000000 78775.000000 33445.000000 75025.000000 34491.000000 82264.000000 31922.000000 81898.000000 32483.000000 84516.000000 31206.000000 93522.000000 29912.000000 88451.000000 30214.000000 97633.000000 28597.000000 94686.000000 29003.000000 100592.000000 27957.000000 99804.000000 28044.000000 110340.000000 26495.000000 110884.000000 26324.000000 112946.000000 26169.000000 119120.000000 25300.000000 120211.000000 25288.000000 121974.000000 24877.000000 138469.000000 23810.000000 143983.000000 23115.000000 146179.000000 22979.000000 158103.000000 22555.000000 151296.000000 22947.000000 160909.000000 22452.000000 168744.000000 22338.000000 176021.000000 22330.000000 21327.000000 169236.000000 21839.000000 157111.000000 21986.000000 150292.000000 22353.000000 139602.000000 22139.000000 145614.000000 23081.000000 131038.000000 23818.000000 122548.000000 24418.000000 115892.000000 24441.000000 113927.000000 25357.000000 107573.000000 26668.000000 97471.000000 25987.000000 102199.000000 26006.000000 100486.000000 27097.000000 93980.000000 27002.000000 95968.000000 28750.000000 88378.000000 28287.000000 90560.000000 28995.000000 87095.000000 29868.000000 85219.000000 30022.000000 83797.000000 31600.000000 80350.000000 32592.000000 78771.000000 32558.000000 79164.000000 35106.000000 74192.000000 33380.000000 76915.000000 34236.000000 74326.000000 36698.000000 70014.000000 37419.000000 68419.000000 36723.000000 69927.000000 41325.000000 61831.000000 38173.000000 66918.000000 43958.000000 57700.000000 42834.000000 60316.000000 43254.000000 59443.000000 45812.000000 55893.000000 47616.000000 53929.000000 50974.000000 50470.000000 49942.000000 52450.000000 50306.000000 51400.000000 52529.000000 48607.000000 51522.000000 50318.000000 53971.000000 47913.000000 54603.000000 47207.000000 64928.000000 39260.000000 56697.000000 45082.000000 58355.000000 44244.000000 63932.000000 40500.000000 61691.000000 42457.000000 65548.000000 38936.000000 69918.000000 37110.000000 67308.000000 37813.000000 71595.000000 36015.000000 66202.000000 38420.000000 72541.000000 35480.000000 74332.000000 34844.000000 77994.000000 33657.000000 78974.000000 33003.000000 80716.000000 32472.000000 82730.000000 31699.000000 89421.000000 30064.000000 98936.000000 28232.000000 91978.000000 29676.000000 98587.000000 28940.000000 100294.000000 27962.000000 104472.000000 27567.000000 105495.000000 27078.000000 114406.000000 26200.000000 117956.000000 25432.000000 116088.000000 25701.000000 124798.000000 24807.000000 121161.000000 25144.000000 142903.000000 23238.000000 140436.000000 23505.000000 152311.000000 22927.000000 155944.000000 22593.000000 159692.000000 22467.000000 166703.000000 22397.000000 174270.000000 22304.000000 21292.000000 176171.000000 21781.000000 165498.000000 21824.000000 160546.000000 21881.000000 152988.000000 22654.000000 141554.000000 22307.000000 142379.000000 23347.000000 125444.000000 23985.000000 120864.000000 24295.000000 115673.000000 25795.000000 102549.000000 25526.000000 106350.000000 25611.000000 105339.000000 25990.000000 101955.000000 26303.000000 100496.000000 26382.000000 97986.000000 27309.000000 94709.000000 27182.000000 95886.000000 28380.000000 89536.000000 28584.000000 88316.000000 28298.000000 89663.000000 29256.000000 86815.000000 29711.000000 86736.000000 31367.000000 80859.000000 31178.000000 81952.000000 30502.000000 82649.000000 32560.000000 77490.000000 34857.000000 74191.000000 35028.000000 73291.000000 35112.000000 72146.000000 34887.000000 73297.000000 38317.000000 67686.000000 36755.000000 69814.000000 36353.000000 70568.000000 40582.000000 64206.000000 44058.000000 58981.000000 42101.000000 60280.000000 42838.000000 59221.000000 44286.000000 57784.000000 47213.000000 54638.000000 48754.000000 51930.000000 47351.000000 53357.000000 50665.000000 50837.000000 50200.000000 51396.000000 51338.000000 50175.000000 56197.000000 45680.000000 54888.000000 46969.000000 57325.000000 44965.000000 58423.000000 44185.000000 58121.000000 44438.000000 61118.000000 42153.000000 60187.000000 43254.000000 64201.000000 39822.000000 67277.000000 37804.000000 70630.000000 36939.000000 71796.000000 36178.000000 70742.000000 36520.000000 70826.000000 36294.000000 77526.000000 34361.000000 78462.000000 33503.000000 84428.000000 31213.000000 83856.000000 31787.000000 90350.000000 29942.000000 87836.000000 30544.000000 92117.000000 29710.000000 91831.000000 29779.000000 97660.000000 28309.000000 92211.000000 29408.000000 101381.000000 28125.000000 105457.000000 27503.000000 109928.000000 26569.000000 112016.000000 26338.000000 112313.000000 26191.000000 118612.000000 25127.000000 120239.000000 25066.000000 134539.000000 23960.000000 141467.000000 23436.000000 152433.000000 22909.000000 159029.000000 22635.000000 160457.000000 22471.000000 169647.000000 22235.000000 172873.000000 22172.000000 21526.000000 171544.000000 21980.000000 152888.000000 21566.000000 164960.000000 22452.000000 137262.000000 22761.000000 132447.000000 23492.000000 123755.000000 23574.000000 121227.000000 24303.000000 117682.000000 25287.000000 105922.000000 25392.000000 105112.000000 25705.000000 103740.000000 26091.000000 102278.000000 26688.000000 96994.000000 26595.000000 97868.000000 27383.000000 94352.000000 27973.000000 92235.000000 28584.000000 88316.000000 29217.000000 86951.000000 29256.000000 86815.000000 30558.000000 85678.000000 30593.000000 84156.000000 32453.000000 78785.000000 31320.000000 81113.000000 35693.000000 71527.000000 34255.000000 75074.000000 34036.000000 75694.000000 36648.000000 69752.000000 37317.000000 68524.000000 37845.000000 68060.000000 38252.000000 66555.000000 40033.000000 64282.000000 39480.000000 65321.000000 40824.000000 62133.000000 43551.000000 59504.000000 44989.000000 57475.000000 45294.000000 56295.000000 47415.000000 54207.000000 45653.000000 55718.000000 48614.000000 52551.000000 50395.000000 51239.000000 51383.000000 49663.000000 51307.000000 50496.000000 53884.000000 47748.000000 53456.000000 48812.000000 60799.000000 42248.000000 53980.000000 47258.000000 60022.000000 43120.000000 59349.000000 43139.000000 58173.000000 44687.000000 59048.000000 43761.000000 60292.000000 42884.000000 66076.000000 39334.000000 61775.000000 41541.000000 64966.000000 39982.000000 67100.000000 38758.000000 67774.000000 38160.000000 66185.000000 39100.000000 68539.000000 37085.000000 74886.000000 34567.000000 76394.000000 33860.000000 79621.000000 33052.000000 82964.000000 31663.000000 83630.000000 31341.000000 86559.000000 30730.000000 90892.000000 30120.000000 93058.000000 29379.000000 93088.000000 29207.000000 91033.000000 29679.000000 91006.000000 29814.000000 101426.000000 27801.000000 102620.000000 27587.000000 112690.000000 25993.000000 121276.000000 25101.000000 136946.000000 23923.000000 123652.000000 24963.000000 139545.000000 23720.000000 145696.000000 23214.000000 152082.000000 22802.000000 159692.000000 22467.000000 172545.000000 22188.000000 170801.000000 22274.000000 176436.000000 22141.000000 21849.000000 154241.000000 21370.000000 167892.000000 21641.000000 159354.000000 22751.000000 134708.000000 23376.000000 127652.000000 23169.000000 127814.000000 25075.000000 109327.000000 24887.000000 110000.000000 25194.000000 109267.000000 25727.000000 103222.000000 25852.000000 101337.000000 25603.000000 103751.000000 26624.000000 98688.000000 26287.000000 99392.000000 27834.000000 92566.000000 28203.000000 89999.000000 29725.000000 86083.000000 31193.000000 83035.000000 28890.000000 87552.000000 30008.000000 85198.000000 31434.000000 80723.000000 31512.000000 79864.000000 32560.000000 77490.000000 32113.000000 78682.000000 34660.000000 73092.000000 37779.000000 67741.000000 39028.000000 65949.000000 37681.000000 68546.000000 35417.000000 72583.000000 41929.000000 61763.000000 42442.000000 60548.000000 37998.000000 66783.000000 41960.000000 61702.000000 43913.000000 58513.000000 45932.000000 55577.000000 45107.000000 56775.000000 44706.000000 57907.000000 47851.000000 53575.000000 46392.000000 55253.000000 50295.000000 50924.000000 51344.000000 50523.000000 51903.000000 49506.000000 54315.000000 47019.000000 52189.000000 49155.000000 55323.000000 45984.000000 57732.000000 45103.000000 59988.000000 42599.000000 58675.000000 43504.000000 59856.000000 42996.000000 62175.000000 41079.000000 64746.000000 40094.000000 66440.000000 38821.000000 66109.000000 39013.000000 67079.000000 38373.000000 70646.000000 36522.000000 69078.000000 37278.000000 71133.000000 36067.000000 75085.000000 34525.000000 78179.000000 33750.000000 76102.000000 34375.000000 78859.000000 33023.000000 82000.000000 32284.000000 83229.000000 31739.000000 84912.000000 31311.000000 83630.000000 31341.000000 89276.000000 30265.000000 91603.000000 30059.000000 94517.000000 29309.000000 95959.000000 29143.000000 97019.000000 28561.000000 92211.000000 29408.000000 99817.000000 27982.000000 112186.000000 26159.000000 118822.000000 25631.000000 126527.000000 24863.000000 122851.000000 25043.000000 137133.000000 23695.000000 146955.000000 22981.000000 147094.000000 22964.000000 152897.000000 22687.000000 159465.000000 22475.000000 167536.000000 22467.000000 170201.000000 22307.000000 178919.000000 22283.000000 21282.000000 178446.000000 21461.000000 168111.000000 21946.000000 151844.000000 21732.000000 161093.000000 22501.000000 142348.000000 22780.000000 132548.000000 23376.000000 127652.000000 24095.000000 118729.000000 24114.000000 118562.000000 24269.000000 116630.000000 25803.000000 103836.000000 25822.000000 101408.000000 26175.000000 100530.000000 26229.000000 99265.000000 26626.000000 97362.000000 28203.000000 89999.000000 28127.000000 90525.000000 29587.000000 86660.000000 30446.000000 84828.000000 28966.000000 87329.000000 29846.000000 86237.000000 29707.000000 86510.000000 31517.000000 80380.000000 33369.000000 75519.000000 34379.000000 74969.000000 34536.000000 73818.000000 35095.000000 72317.000000 34197.000000 75100.000000 38404.000000 66966.000000 35898.000000 70750.000000 39059.000000 66157.000000 37701.000000 67510.000000 41357.000000 62775.000000 42912.000000 60246.000000 41957.000000 61567.000000 43487.000000 59100.000000 45323.000000 57523.000000 42686.000000 60937.000000 46396.000000 55167.000000 51146.000000 50212.000000 50311.000000 51295.000000 51212.000000 49311.000000 53836.000000 47955.000000 55166.000000 47033.000000 55357.000000 46733.000000 56198.000000 45923.000000 60164.000000 42755.000000 58082.000000 44343.000000 59002.000000 43800.000000 61197.000000 42322.000000 64805.000000 39431.000000 65137.000000 38902.000000 65578.000000 38750.000000 63135.000000 40721.000000 70981.000000 37126.000000 65837.000000 38538.000000 71516.000000 36794.000000 71715.000000 36131.000000 74064.000000 35282.000000 72748.000000 35554.000000 72999.000000 35285.000000 77977.000000 33256.000000 80529.000000 32347.000000 82512.000000 31967.000000 81989.000000 32089.000000 83246.000000 31537.000000 90813.000000 29916.000000 95546.000000 28744.000000 93768.000000 29095.000000 97184.000000 28537.000000 105847.000000 27391.000000 114526.000000 25961.000000 113156.000000 26423.000000 109152.000000 26649.000000 114779.000000 25605.000000 122825.000000 24794.000000 138268.000000 23645.000000 146655.000000 23313.000000 136296.000000 24005.000000 147094.000000 22964.000000 153124.000000 22679.000000 168389.000000 22259.000000 21292.000000 176171.000000 21634.000000 164843.000000 21760.000000 158120.000000 21956.000000 150098.000000 22545.000000 135710.000000 23522.000000 125677.000000 23776.000000 120411.000000 25137.000000 108381.000000 24895.000000 109925.000000 25247.000000 105379.000000 25864.000000 101557.000000 25603.000000 103751.000000 27219.000000 94500.000000 26771.000000 97860.000000 28142.000000 90905.000000 27165.000000 97343.000000 29172.000000 90389.000000 29612.000000 86474.000000 29363.000000 86483.000000 29866.000000 84290.000000 31967.000000 80658.000000 32629.000000 79213.000000 34435.000000 74841.000000 35362.000000 73022.000000 36849.000000 69390.000000 35704.000000 72545.000000 36382.000000 70589.000000 35884.000000 71637.000000 37453.000000 67977.000000 36903.000000 68797.000000 43436.000000 59575.000000 41308.000000 62252.000000 43531.000000 58919.000000 44129.000000 58710.000000 47814.000000 53363.000000 48676.000000 52484.000000 48159.000000 53145.000000 48454.000000 52954.000000 51849.000000 50715.000000 48776.000000 51983.000000 53036.000000 48492.000000 53812.000000 47674.000000 55589.000000 47164.000000 53788.000000 48095.000000 56082.000000 45743.000000 59041.000000 43511.000000 62320.000000 41347.000000 61930.000000 41352.000000 60610.000000 42238.000000 67431.000000 38145.000000 66035.000000 38860.000000 65363.000000 39414.000000 66679.000000 38715.000000 67671.000000 37849.000000 70194.000000 36404.000000 72248.000000 35422.000000 71173.000000 35917.000000 76793.000000 34018.000000 79845.000000 32680.000000 84364.000000 31182.000000 83630.000000 31341.000000 89704.000000 30440.000000 92458.000000 29428.000000 92249.000000 29712.000000 93714.000000 29089.000000 100253.000000 28223.000000 100523.000000 27806.000000 103945.000000 27522.000000 106370.000000 27126.000000 114278.000000 25856.000000 112230.000000 26213.000000 126423.000000 24522.000000 135442.000000 23949.000000 144616.000000 23265.000000 142408.000000 23554.000000 146699.000000 23229.000000 156955.000000 22767.000000 151874.000000 22944.000000 168389.000000 22259.000000 167752.000000 22342.000000 176521.000000 22179.000000 21282.000000 178446.000000 21409.000000 171103.000000 21509.000000 166489.000000 21756.000000 158115.000000 22529.000000 139215.000000 22724.000000 132787.000000 23660.000000 121992.000000 23573.000000 123921.000000 24392.000000 113791.000000 24943.000000 111027.000000 25489.000000 104686.000000 25610.000000 103216.000000 25369.000000 105529.000000 25930.000000 102716.000000 26102.000000 100243.000000 27488.000000 94005.000000 28037.000000 92451.000000 28361.000000 90612.000000 29787.000000 86399.000000 28456.000000 89341.000000 30038.000000 85660.000000 30128.000000 84791.000000 32113.000000 80002.000000 30418.000000 83733.000000 32538.000000 79035.000000 32767.000000 77089.000000 33793.000000 75258.000000 35721.000000 71302.000000 34585.000000 72809.000000 38982.000000 67216.000000 39490.000000 65007.000000 39740.000000 64969.000000 40256.000000 64642.000000 40306.000000 63936.000000 45013.000000 57569.000000 44607.000000 58090.000000 47187.000000 53637.000000 45854.000000 55767.000000 48176.000000 52885.000000 49090.000000 52286.000000 51790.000000 50340.000000 54021.000000 47518.000000 55900.000000 45987.000000 58173.000000 43977.000000 54179.000000 47379.000000 57883.000000 44493.000000 59297.000000 43568.000000 56874.000000 45177.000000 60851.000000 42318.000000 61938.000000 41343.000000 63547.000000 40530.000000 67353.000000 38353.000000 66340.000000 38950.000000 69249.000000 36982.000000 68153.000000 37992.000000 68876.000000 37586.000000 70686.000000 36317.000000 74006.000000 34736.000000 79860.000000 33114.000000 77404.000000 33658.000000 82440.000000 32175.000000 83630.000000 31341.000000 87695.000000 30907.000000 88183.000000 30704.000000 88288.000000 30179.000000 93130.000000 29336.000000 94952.000000 28845.000000 106823.000000 26902.000000 99939.000000 27861.000000 109037.000000 26750.000000 113674.000000 26034.000000 115257.000000 25886.000000 118430.000000 25385.000000 126190.000000 24531.000000 134063.000000 24152.000000 127721.000000 24365.000000 147094.000000 22964.000000 153540.000000 22690.000000 164515.000000 22626.000000 172958.000000 22210.000000 21282.000000 178446.000000 21458.000000 167288.000000 22067.000000 151593.000000 21461.000000 166837.000000 22130.000000 146157.000000 22512.000000 138303.000000 23974.000000 119887.000000 24427.000000 116378.000000 24708.000000 111658.000000 25981.000000 100805.000000 25603.000000 102974.000000 26229.000000 99265.000000 26388.000000 98676.000000 27364.000000 93257.000000 27952.000000 91759.000000 27219.000000 94500.000000 29531.000000 88839.000000 28461.000000 88925.000000 29779.000000 85661.000000 29694.000000 86512.000000 30113.000000 84371.000000 30935.000000 81987.000000 32238.000000 79142.000000 32232.000000 79749.000000 32286.000000 79038.000000 33086.000000 76291.000000 34863.000000 73035.000000 33468.000000 75681.000000 37096.000000 69515.000000 37413.000000 68129.000000 35889.000000 71204.000000 36066.000000 70037.000000 37977.000000 66999.000000 39914.000000 65442.000000 40081.000000 64145.000000 42029.000000 60852.000000 43821.000000 58232.000000 46501.000000 55819.000000 44664.000000 57259.000000 46953.000000 55516.000000 48953.000000 52004.000000 47780.000000 53264.000000 50682.000000 50874.000000 52580.000000 48436.000000 49124.000000 51598.000000 58138.000000 44431.000000 55891.000000 45646.000000 57486.000000 44937.000000 58674.000000 43559.000000 63430.000000 41037.000000 63480.000000 41014.000000 64092.000000 39853.000000 65670.000000 39482.000000 70174.000000 36779.000000 65573.000000 39580.000000 68892.000000 37354.000000 72214.000000 35732.000000 74740.000000 34625.000000 72601.000000 35428.000000 73937.000000 34727.000000 73476.000000 35325.000000 78639.000000 33394.000000 84658.000000 31407.000000 80145.000000 32713.000000 87524.000000 30966.000000 85709.000000 31016.000000 89743.000000 29922.000000 98068.000000 28566.000000 94893.000000 28973.000000 98984.000000 28205.000000 99852.000000 28190.000000 112604.000000 26185.000000 103979.000000 27454.000000 109922.000000 26476.000000 121090.000000 24980.000000 125484.000000 24761.000000 126669.000000 24653.000000 133402.000000 24167.000000 150396.000000 23050.000000 145653.000000 23194.000000 153395.000000 23018.000000 159366.000000 22547.000000 166654.000000 22315.000000 21472.000000 170302.000000 21849.000000 154241.000000 21997.000000 149785.000000 22318.000000 144311.000000 22541.000000 138401.000000 22405.000000 140136.000000 23242.000000 128577.000000 23696.000000 121553.000000 25271.000000 108728.000000 24999.000000 109899.000000 25704.000000 103217.000000 25352.000000 104569.000000 25980.000000 101387.000000 26317.000000 98596.000000 27097.000000 93980.000000 26932.000000 97076.000000 26518.000000 97586.000000 27780.000000 93679.000000 28369.000000 90096.000000 28623.000000 88180.000000 30270.000000 84722.000000 28514.000000 89780.000000 29975.000000 85118.000000 31742.000000 79735.000000 30292.000000 83176.000000 32560.000000 77490.000000 33658.000000 75418.000000 32590.000000 77401.000000 34898.000000 72317.000000 33037.000000 76541.000000 36730.000000 69192.000000 36412.000000 71602.000000 35453.000000 72297.000000 37087.000000 67978.000000 41690.000000 62197.000000 39528.000000 64211.000000 40469.000000 63213.000000 44274.000000 57711.000000 43520.000000 59186.000000 41313.000000 62423.000000 46484.000000 55589.000000 44979.000000 56671.000000 45574.000000 56063.000000 48584.000000 52892.000000 50651.000000 50122.000000 48636.000000 51994.000000 52042.000000 49537.000000 52821.000000 48477.000000 54477.000000 47111.000000 53462.000000 48108.000000 55358.000000 47078.000000 56606.000000 45468.000000 57655.000000 44833.000000 62241.000000 41347.000000 63341.000000 40479.000000 64628.000000 39525.000000 66150.000000 38320.000000 66998.000000 37896.000000 70203.000000 37133.000000 74777.000000 34663.000000 73293.000000 35185.000000 77024.000000 34112.000000 77621.000000 33710.000000 74655.000000 34759.000000 83155.000000 32121.000000 83420.000000 32029.000000 87293.000000 30571.000000 83630.000000 31341.000000 89873.000000 30350.000000 91193.000000 29798.000000 94261.000000 28937.000000 102452.000000 27739.000000 98987.000000 27994.000000 111668.000000 26200.000000 112934.000000 25921.000000 116936.000000 25797.000000 124958.000000 24874.000000 128362.000000 24374.000000 130447.000000 24369.000000 143662.000000 23189.000000 146406.000000 22971.000000 155890.000000 22607.000000 159465.000000 22475.000000 168007.000000 22359.000000 173643.000000 22215.000000 179907.000000 22214.000000 21305.000000 173801.000000 21317.000000 172106.000000 21849.000000 154241.000000 21718.000000 160828.000000 22256.000000 142717.000000 22940.000000 129524.000000 22683.000000 137135.000000 24462.000000 116096.000000 24488.000000 114883.000000 24828.000000 110580.000000 25754.000000 102555.000000 25498.000000 106272.000000 25836.000000 102048.000000 25967.000000 101198.000000 25864.000000 101557.000000 27097.000000 93980.000000 26644.000000 97980.000000 27592.000000 93918.000000 27974.000000 92331.000000 28278.000000 90505.000000 28286.000000 90452.000000 29128.000000 88726.000000 29242.000000 87658.000000 29919.000000 85396.000000 31750.000000 80446.000000 32240.000000 79371.000000 33886.000000 75485.000000 32684.000000 78093.000000 33580.000000 76601.000000 35424.000000 71118.000000 34631.000000 72795.000000 35190.000000 71982.000000 36148.000000 70896.000000 37592.000000 67738.000000 38235.000000 67454.000000 42795.000000 60645.000000 39153.000000 65583.000000 38484.000000 65756.000000 41670.000000 61496.000000 43707.000000 58953.000000 46196.000000 55951.000000 47700.000000 53742.000000 48840.000000 52051.000000 48147.000000 53545.000000 51443.000000 50314.000000 53994.000000 47730.000000 50563.000000 50940.000000 54521.000000 47322.000000 53396.000000 48042.000000 56130.000000 46204.000000 56529.000000 45481.000000 61401.000000 41928.000000 62593.000000 40705.000000 63902.000000 40394.000000 61767.000000 41662.000000 64141.000000 39989.000000 65063.000000 39078.000000 68901.000000 37695.000000 72685.000000 35469.000000 71660.000000 35831.000000 73643.000000 34898.000000 77247.000000 34226.000000 78186.000000 33366.000000 84556.000000 31146.000000 85829.000000 30967.000000 88763.000000 30490.000000 92655.000000 29230.000000 95496.000000 28672.000000 90361.000000 29939.000000 98286.000000 28199.000000 101979.000000 27752.000000 101455.000000 27968.000000 106170.000000 27129.000000 109167.000000 26783.000000 115151.000000 25655.000000 117737.000000 25608.000000 126802.000000 24935.000000 132133.000000 24297.000000 137519.000000 23737.000000 143863.000000 23210.000000 145913.000000 23104.000000 153446.000000 22697.000000 162458.000000 22395.000000 180421.000000 22300.000000 21343.000000 170748.000000 21773.000000 157642.000000 21879.000000 155578.000000 22353.000000 139602.000000 22953.000000 133672.000000 22564.000000 135811.000000 23785.000000 122393.000000 24544.000000 114032.000000 24138.000000 117255.000000 25287.000000 105922.000000 25732.000000 103736.000000 26059.000000 100700.000000 26454.000000 99249.000000 27783.000000 92054.000000 27926.000000 90828.000000 27097.000000 93980.000000 27642.000000 93154.000000 28796.000000 88735.000000 29191.000000 87140.000000 29807.000000 85028.000000 30341.000000 83549.000000 31533.000000 80544.000000 33814.000000 77066.000000 34573.000000 74292.000000 34735.000000 74098.000000 36251.000000 70327.000000 35965.000000 71152.000000 35111.000000 71610.000000 38181.000000 67156.000000 39601.000000 64922.000000 45422.000000 56631.000000 39158.000000 66294.000000 44438.000000 58189.000000 40277.000000 62779.000000 44580.000000 57437.000000 44031.000000 59521.000000 48907.000000 52442.000000 46372.000000 55063.000000 48406.000000 53650.000000 48546.000000 52490.000000 48465.000000 53450.000000 50870.000000 51267.000000 53864.000000 48251.000000 54286.000000 46856.000000 54238.000000 47480.000000 59102.000000 43970.000000 54704.000000 46738.000000 63691.000000 40520.000000 61776.000000 41516.000000 61687.000000 41885.000000 64364.000000 39933.000000 62728.000000 41200.000000 65865.000000 38533.000000 67041.000000 38510.000000 70646.000000 36719.000000 65781.000000 39687.000000 69134.000000 37937.000000 70689.000000 36380.000000 75587.000000 34329.000000 77604.000000 33427.000000 79609.000000 33001.000000 83455.000000 31816.000000 83380.000000 32318.000000 85299.000000 31575.000000 86566.000000 31034.000000 89035.000000 30299.000000 93263.000000 29687.000000 93786.000000 29315.000000 101859.000000 27733.000000 105584.000000 27163.000000 107290.000000 26925.000000 113864.000000 26417.000000 110253.000000 26434.000000 117102.000000 25634.000000 122638.000000 24884.000000 136294.000000 23886.000000 141420.000000 23498.000000 146867.000000 22972.000000 153702.000000 22748.000000 159788.000000 22538.000000 163591.000000 22513.000000 172958.000000 22210.000000 21307.000000 174381.000000 21760.000000 158355.000000 21879.000000 155578.000000 23185.000000 133183.000000 22830.000000 135186.000000 23508.000000 127211.000000 24539.000000 117743.000000 23574.000000 121227.000000 25806.000000 102399.000000 25450.000000 104447.000000 26378.000000 99478.000000 26384.000000 99446.000000 26171.000000 101945.000000 26699.000000 97649.000000 27383.000000 95694.000000 28523.000000 89222.000000 28812.000000 88003.000000 28134.000000 89998.000000 28378.000000 89463.000000 30090.000000 85022.000000 31500.000000 80654.000000 32383.000000 78845.000000 33549.000000 77285.000000 36761.000000 70443.000000 33550.000000 76367.000000 35035.000000 72610.000000 35498.000000 71545.000000 39668.000000 66447.000000 37209.000000 67841.000000 41372.000000 62292.000000 41817.000000 61558.000000 40256.000000 63643.000000 42596.000000 60294.000000 43151.000000 59284.000000 46226.000000 55162.000000 49249.000000 52204.000000 48757.000000 54067.000000 51337.000000 49987.000000 51517.000000 49608.000000 50395.000000 51027.000000 56766.000000 45952.000000 58110.000000 44351.000000 54234.000000 47622.000000 61329.000000 41762.000000 55674.000000 46002.000000 59263.000000 43533.000000 61311.000000 42131.000000 63767.000000 40422.000000 63939.000000 40111.000000 65494.000000 39121.000000 62764.000000 41180.000000 65628.000000 38919.000000 70867.000000 36670.000000 65865.000000 38533.000000 72213.000000 35738.000000 73057.000000 35295.000000 73912.000000 35034.000000 76673.000000 33899.000000 77883.000000 33844.000000 80267.000000 32929.000000 79348.000000 33248.000000 81715.000000 32032.000000 84158.000000 31862.000000 93265.000000 29384.000000 91355.000000 29748.000000 95394.000000 28992.000000 93211.000000 29539.000000 94419.000000 29146.000000 99178.000000 27972.000000 104324.000000 27449.000000 110860.000000 26241.000000 108994.000000 26917.000000 115667.000000 25507.000000 125918.000000 24780.000000 134795.000000 23970.000000 144172.000000 23259.000000 148119.000000 22998.000000 155283.000000 22683.000000 161007.000000 22465.000000 166890.000000 22332.000000 179750.000000 22195.000000 21282.000000 178446.000000 21345.000000 171328.000000 21839.000000 157111.000000 21810.000000 162369.000000 22343.000000 142472.000000 22256.000000 142717.000000 22631.000000 137451.000000 23142.000000 132035.000000 23466.000000 123670.000000 24080.000000 118574.000000 24164.000000 117450.000000 25105.000000 107342.000000 25578.000000 104587.000000 26330.000000 98935.000000 25864.000000 101557.000000 27258.000000 97209.000000 26473.000000 97348.000000 28720.000000 87916.000000 28170.000000 90640.000000 27926.000000 90828.000000 28316.000000 89591.000000 28851.000000 87867.000000 30186.000000 83846.000000 29730.000000 85521.000000 28966.000000 87329.000000 29288.000000 86672.000000 32098.000000 79015.000000 31630.000000 80101.000000 32480.000000 78438.000000 34286.000000 74322.000000 35472.000000 71717.000000 35313.000000 71857.000000 37866.000000 67485.000000 36563.000000 70400.000000 37342.000000 68634.000000 42449.000000 60713.000000 41058.000000 62657.000000 43628.000000 58977.000000 41488.000000 62515.000000 45684.000000 56342.000000 42775.000000 60355.000000 43809.000000 58374.000000 49056.000000 52086.000000 46265.000000 55333.000000 48344.000000 52954.000000 47449.000000 54054.000000 48295.000000 53546.000000 50040.000000 51095.000000 50908.000000 50488.000000 52442.000000 48916.000000 56420.000000 45540.000000 53230.000000 48408.000000 54025.000000 48323.000000 58251.000000 44105.000000 55302.000000 46324.000000 64055.000000 40065.000000 58014.000000 44816.000000 61038.000000 41919.000000 62420.000000 41809.000000 60814.000000 42619.000000 65976.000000 39252.000000 67772.000000 37764.000000 65515.000000 39511.000000 71717.000000 35875.000000 72976.000000 35527.000000 73643.000000 34898.000000 72641.000000 35696.000000 73568.000000 34993.000000 77997.000000 33876.000000 74746.000000 34848.000000 78529.000000 33742.000000 83776.000000 32096.000000 79885.000000 33127.000000 85739.000000 31213.000000 88535.000000 30199.000000 90393.000000 29778.000000 95531.000000 28848.000000 98679.000000 28505.000000 99548.000000 28498.000000 105357.000000 27170.000000 105800.000000 27067.000000 106340.000000 26963.000000 115743.000000 25654.000000 119647.000000 25150.000000 123606.000000 25028.000000 135580.000000 23810.000000 124720.000000 24615.000000 140365.000000 23538.000000 147171.000000 22975.000000 147888.000000 22966.000000 159465.000000 22475.000000 163897.000000 22412.000000 168848.000000 22367.000000 179574.000000 22337.000000 21396.000000 172746.000000 21447.000000 170780.000000 21839.000000 157111.000000 21694.000000 157268.000000 22123.000000 146196.000000 22439.000000 139518.000000 22813.000000 133892.000000 23598.000000 121250.000000 24489.000000 113046.000000 25456.000000 104067.000000 25220.000000 107048.000000 26292.000000 101654.000000 26759.000000 97527.000000 26369.000000 99520.000000 27966.000000 94014.000000 26330.000000 99855.000000 28584.000000 88316.000000 26801.000000 95553.000000 28281.000000 90204.000000 27939.000000 94439.000000 29696.000000 86610.000000 28910.000000 87414.000000 29840.000000 84755.000000 30310.000000 84159.000000 31225.000000 80631.000000 32241.000000 78288.000000 33486.000000 76129.000000 32648.000000 78255.000000 36290.000000 71299.000000 34480.000000 73682.000000 36583.000000 69667.000000 39171.000000 66845.000000 39937.000000 64018.000000 37352.000000 68692.000000 41082.000000 63090.000000 42400.000000 60612.000000 43749.000000 58597.000000 43917.000000 58496.000000 45354.000000 56488.000000 48842.000000 52004.000000 46753.000000 55021.000000 50030.000000 51696.000000 50792.000000 51264.000000 49570.000000 51879.000000 51463.000000 49918.000000 52327.000000 49550.000000 54671.000000 47981.000000 56338.000000 45682.000000 59103.000000 43494.000000 57365.000000 44633.000000 61611.000000 42033.000000 59139.000000 43281.000000 61648.000000 41612.000000 65096.000000 39678.000000 65328.000000 39249.000000 62993.000000 41339.000000 67769.000000 38333.000000 68179.000000 38207.000000 69450.000000 37484.000000 73789.000000 35148.000000 71425.000000 36567.000000 72095.000000 36326.000000 73240.000000 36118.000000 76523.000000 34296.000000 73600.000000 35291.000000 79456.000000 33228.000000 82109.000000 32632.000000 88404.000000 30415.000000 89174.000000 30044.000000 85765.000000 31074.000000 91197.000000 29792.000000 91378.000000 29660.000000 94120.000000 29183.000000 94703.000000 29158.000000 104363.000000 27146.000000 99423.000000 28312.000000 113685.000000 26060.000000 115256.000000 25597.000000 118008.000000 25284.000000 111014.000000 26564.000000 123092.000000 24844.000000 138268.000000 23645.000000 137044.000000 23699.000000 144438.000000 23191.000000 146406.000000 22971.000000 148803.000000 22951.000000 156028.000000 22589.000000 172705.000000 22299.000000 178070.000000 22263.000000 21317.000000 172106.000000 21839.000000 157111.000000 22100.000000 150283.000000 21656.000000 158527.000000 22877.000000 132312.000000 22845.000000 132464.000000 23045.000000 128455.000000 24248.000000 116697.000000 24193.000000 118242.000000 24443.000000 113430.000000 25514.000000 103643.000000 25826.000000 102455.000000 26125.000000 100144.000000 25941.000000 102308.000000 26587.000000 97943.000000 27364.000000 93257.000000 26740.000000 96625.000000 27112.000000 96061.000000 27219.000000 94500.000000 28300.000000 90814.000000 28694.000000 89060.000000 28934.000000 87962.000000 30854.000000 82102.000000 29817.000000 86009.000000 30389.000000 83440.000000 31355.000000 81152.000000 34575.000000 74549.000000 33734.000000 75130.000000 34766.000000 72875.000000 34898.000000 72317.000000 37042.000000 68903.000000 37978.000000 67580.000000 36641.000000 69106.000000 41100.000000 62918.000000 42922.000000 60212.000000 41340.000000 62207.000000 43153.000000 59942.000000 43814.000000 59198.000000 45051.000000 57325.000000 48148.000000 53791.000000 47412.000000 54652.000000 49764.000000 51365.000000 49452.000000 52286.000000 50153.000000 51205.000000 50683.000000 50281.000000 55181.000000 46470.000000 52631.000000 48553.000000 53306.000000 47871.000000 56995.000000 45678.000000 59336.000000 43233.000000 63891.000000 39948.000000 63053.000000 40937.000000 61042.000000 41974.000000 65849.000000 38469.000000 68088.000000 37979.000000 68992.000000 37318.000000 74095.000000 34901.000000 72136.000000 36159.000000 73160.000000 35666.000000 73264.000000 35554.000000 77167.000000 34206.000000 78252.000000 33540.000000 79826.000000 33285.000000 87641.000000 30598.000000 83630.000000 31341.000000 90093.000000 30480.000000 92149.000000 29458.000000 93853.000000 29331.000000 91111.000000 29825.000000 94661.000000 29059.000000 103979.000000 27407.000000 100416.000000 28100.000000 108785.000000 26776.000000 110740.000000 26204.000000 123174.000000 25129.000000 124186.000000 25036.000000 129763.000000 24217.000000 142076.000000 23364.000000 146728.000000 22989.000000 153447.000000 22726.000000 163410.000000 22383.000000 172987.000000 22375.000000 174920.000000 22297.000000 21345.000000 171328.000000 21630.000000 161836.000000 21640.000000 161580.000000 21877.000000 153460.000000 22430.000000 138767.000000 22534.000000 137391.000000 23423.000000 127391.000000 23837.000000 120985.000000 24565.000000 113632.000000 25440.000000 107117.000000 25998.000000 100775.000000 25858.000000 100867.000000 26286.000000 99437.000000 26794.000000 97255.000000 27266.000000 96355.000000 27913.000000 90720.000000 27433.000000 94305.000000 28062.000000 90428.000000 28500.000000 88789.000000 29485.000000 86787.000000 29560.000000 85322.000000 30419.000000 83736.000000 31605.000000 80126.000000 31769.000000 79908.000000 32927.000000 76650.000000 34694.000000 74437.000000 33734.000000 75130.000000 34771.000000 72337.000000 38792.000000 66012.000000 36548.000000 69670.000000 37493.000000 68566.000000 38481.000000 66091.000000 43559.000000 58861.000000 40877.000000 63660.000000 41674.000000 61877.000000 43376.000000 60071.000000 44602.000000 57589.000000 42209.000000 60408.000000 45833.000000 56121.000000 46095.000000 55264.000000 48623.000000 53151.000000 51920.000000 49179.000000 51003.000000 50594.000000 56160.000000 45858.000000 55374.000000 46679.000000 55984.000000 45892.000000 60792.000000 42533.000000 62340.000000 41288.000000 60900.000000 42153.000000 58923.000000 43645.000000 64227.000000 39875.000000 62458.000000 41095.000000 62668.000000 40949.000000 66333.000000 39430.000000 68244.000000 37921.000000 67232.000000 38348.000000 70215.000000 36506.000000 70107.000000 36532.000000 75753.000000 34257.000000 72223.000000 35763.000000 72987.000000 35753.000000 73340.000000 35194.000000 77491.000000 33517.000000 78229.000000 33229.000000 83560.000000 31857.000000 88530.000000 30547.000000 88825.000000 30218.000000 83630.000000 31341.000000 89026.000000 30103.000000 95099.000000 29171.000000 100862.000000 27866.000000 92211.000000 29408.000000 104178.000000 27220.000000 116295.000000 25586.000000 118070.000000 25355.000000 118810.000000 25243.000000 125923.000000 24452.000000 135468.000000 23994.000000 141461.000000 23491.000000 146728.000000 22989.000000 158320.000000 22512.000000 172545.000000 22188.000000 170745.000000 22262.000000 21282.000000 178446.000000 21500.000000 169524.000000 21669.000000 159175.000000 22553.000000 138850.000000 23003.000000 133764.000000 22778.000000 138784.000000 23772.000000 123093.000000 23113.000000 130984.000000 23782.000000 119324.000000 24164.000000 117450.000000 26017.000000 100551.000000 25450.000000 103377.000000 25974.000000 101419.000000 27090.000000 95646.000000 27991.000000 90925.000000 27608.000000 94982.000000 29110.000000 86679.000000 28727.000000 89469.000000 29277.000000 86312.000000 31271.000000 81049.000000 31425.000000 80701.000000 33565.000000 76284.000000 36549.000000 69567.000000 33746.000000 74738.000000 37547.000000 68067.000000 35764.000000 71181.000000 35111.000000 71610.000000 38371.000000 67449.000000 40850.000000 62192.000000 39617.000000 65468.000000 42221.000000 61899.000000 46689.000000 54549.000000 49130.000000 52063.000000 44802.000000 57165.000000 45898.000000 56039.000000 50117.000000 50675.000000 51601.000000 49921.000000 49685.000000 51844.000000 53117.000000 48427.000000 54613.000000 46744.000000 55964.000000 46054.000000 55614.000000 46171.000000 60900.000000 42341.000000 61339.000000 41675.000000 60412.000000 42562.000000 65757.000000 39528.000000 63008.000000 40659.000000 63655.000000 40216.000000 70164.000000 36865.000000 69938.000000 37186.000000 70256.000000 36720.000000 66935.000000 38208.000000 73682.000000 35059.000000 71043.000000 36505.000000 76015.000000 34093.000000 77567.000000 33856.000000 79831.000000 33118.000000 78758.000000 33382.000000 82651.000000 32124.000000 86598.000000 31131.000000 84913.000000 31324.000000 89918.000000 29979.000000 96839.000000 28414.000000 93386.000000 29366.000000 106907.000000 26999.000000 98248.000000 28262.000000 106067.000000 27051.000000 109522.000000 26552.000000 117570.000000 25644.000000 126843.000000 24898.000000 143591.000000 23231.000000 144246.000000 23197.000000 156171.000000 22585.000000 155801.000000 22597.000000 166176.000000 22311.000000 eaf/inst/extdata/README0000644000175000017500000000104413534247654014442 0ustar nileshnileshThis directory contains the files needed to reproduce the examples described in Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuß, editors, Experimental Methods for the Analysis of Optimization Algorithms, pages 209-233, Springer, 2010. The script run.sh contains the commands necessary to reproduce all examples. Please, read the comments within run.sh. eaf/inst/extdata/uniform-250-10-3d.txt0000644000175000017500000041402313534247654017035 0ustar nileshnilesh 5.4952587487048605 2.7306949214499197 3.9730413624604792 3.595707923021565 4.362395109239126 2.638454540676543 1.9095004095834445 1.964463493673704 6.940545205397193 6.76573067692009 1.3300975525705367 7.855225087261113 7.180421856052806 2.3795767341110796 2.775429570354854 0.6393838813969355 5.566696143713011 7.033094161954498 7.540136826292178 9.677708472993157 2.4026917182497423 2.1034724437057672 2.2937227893955354 6.594643133819253 7.941451798051468 1.2963971611918872 3.188156724357548 2.1315842137163465 8.499492620455449 2.865240053114304 7.998637424863092 1.8744517086130683 1.148555223294197 1.5938653509700353 6.276274824590952 4.04977277149441 5.1236764048164884 2.7444965831224097 4.62701808514004 1.5777975447540626 6.727870458266202 6.579110650841406 7.764622863548487 1.3055169538956868 4.799295135552365 1.7985008265936044 5.174787361506556 3.2840425687455665 9.139484070215719 1.5109700604949539 0.5864834589968622 7.874724711390381 3.805575319951301 2.145578854250623 0.6082143411408669 6.045410856813055 8.769705312610535 1.5438834869288565 8.633841654561422 2.905138274318338 2.5518134373942885 0.4232776574961088 9.098429229773682 1.701725535921688 8.585970977562473 2.5115843923207333 1.2250176107452755 8.355484853825878 6.078975800408277 0.37470682273262756 6.371098613324831 9.648091163136552 8.012736517531504 3.3880236874888703 0.35711005071809243 5.846789051172507 1.6633942258109786 6.996521868195041 3.4280168641307425 4.853192277719079 3.478971544846187 0.940071787752693 9.450994718238011 5.777055819874409 4.409371605436171 2.7063993527452457 4.801429527264887 7.535659896951556 2.3596569664565976 4.528022010479593 0.5314824411369585 3.4311747853367525 9.591780707599078 1.87088860117851 2.563477473406465 9.36158756846832 4.130385134550832 3.288228113166575 3.4720253384723385 5.032247673483157 3.931954867132463 2.412667382266993 1.6902744610189164 9.748242545476707 1.401076616731257 2.3989426276993333 5.0302134626964605 3.4213342487046807 1.559543555255407 4.196338784449347 6.874695659574283 4.709271258339116 0.5023820212465662 7.916771742228132 5.850211595976774 3.724930303933781 3.407099212672817 9.816233054633773 1.4523522627312575 3.16513452662973 1.9515239545380516 0.989649558146402 9.924968332488781 8.681324522903033 0.4410647990859724 8.419739533231999 8.517011618676365 2.7776080387243085 0.8828253313742636 7.8945406769273205 5.47612582613391 0.5262982614748868 6.131797038340428 3.892834881749664 2.49672028314013 9.37889480880203 0.38920152195245006 3.4737316596842676 7.760688036519729 3.7972057708648976 2.696072068937605 8.23436933462144 0.6316524872513609 6.694510493484445 7.546159679488316 7.721436319051179 2.0306965654205285 0.7237047481522207 3.712078971127532 7.090385723030284 4.8721683111791885 2.5835531436217836 5.576305982080825 1.2487589043096539 3.615238611950827 7.288088227724211 7.792047185693413 5.579053646006867 0.5832788702876481 5.989191352887822 1.9924903696734666 6.161118984807078 1.9582546458365986 3.207452778042632 5.7767884901787125 1.8700243441900293 4.033781890823455 3.654537506332746 7.396694746973621 0.7045895950064498 7.190611474644535 5.089063957179678 2.1772334129147306 5.349538587126773 1.0737983157215165 1.9694093316140138 9.976636729116233 2.73728025566956 2.922241543133799 5.740352033751633 2.806513366046481 7.745612884009167 2.5822055578073964 4.006948542095941 9.714967078241745 1.5595773906934949 0.9809235187552217 9.03346296660217 4.384959192791711 1.1894305439059223 1.5163942645458488 9.570960609340332 4.50103283295199 3.1805720126793187 3.8663066328308324 3.3477308877738494 0.6182498343447804 8.937002844081029 1.1972512162167694 9.353110153508165 3.60967846453648 2.5922316488209716 2.415048752623854 6.570845874287385 1.5673041909274885 3.6129524229240957 9.549948101560574 3.4884322113214132 1.8037293387702031 6.220689345004663 3.1488458023636703 7.300145947898306 3.1968484189004744 0.2515595498964087 4.969105907766871 9.65284199609953 3.8292144203044503 1.610837641442389 8.471502398937359 1.5867176993835521 5.881003430492944 4.235228322815436 2.480136024912385 1.888413652390803 7.1730295930809875 8.601295031106867 2.4974389294971333 0.6942586162463424 8.552625529817917 1.0362370309387883 6.4423383664089116 4.539016188259473 2.8158399308719297 3.5668036629252144 2.1098172787017693 1.7757703802841176 8.98981114622201 4.616583514019517 2.2159211741448193 5.70953113058571 8.687202825778444 2.7776239894860475 0.41019935364839544 6.2443571982193635 0.7704873019877088 7.873235585615792 3.943561346711023 2.8550931120303207 4.599090532597408 1.6080455458858154 4.410253862352169 6.538318255750537 6.107607516846063 1.4776858433912703 4.900854582910159 0.8840734992255621 8.580030167063239 6.421046247768925 4.139311867717027 2.6896603513834205 5.4367597564558405 4.383294763074558 2.767394450194527 4.940442854536334 3.201772983780078 9.890680865487242 0.6447562316420381 6.0599180331243945 1.9563053244506716 6.004925555376086 3.5630775119674105 0.9812515235811583 8.911230594422955 3.255274683052039 7.263622008919162 3.1888852892301243 8.891805238146755 7.187034285822193 0.2920819322443755 3.8755724164949665 2.7868401736572475 6.070482766609751 7.660644208875169 0.23008856144270062 9.218242074239125 2.396527398854151 9.781625747199083 1.3355267654372205 2.3052046962909407 1.2126617634582009 8.539366336956007 8.827287449542734 1.0056428567868752 6.334286129214867 8.655081953970967 8.08376752078388 0.1493329504037577 0.9016160432602316 8.382003728214652 6.440361822696953 0.6568498571652102 9.210517203309694 6.522608207602195 1.3927727469808353 8.676992199203696 3.593940122226239 7.93385489510462 1.6282022307576147 4.53337379300114 1.6864842511565619 3.8574846260965527 4.151161732408489 2.7932735330758782 0.2099986208276814 9.69445629567943 1.153393713991016 7.732570229652936 6.639481642467315 4.832934169513856 0.48416013841846883 8.513320997348828 1.4987453828679267 6.235344388565362 7.022112949931089 8.067120208641775 3.236848489867255 0.5589989941820956 2.138515909968064 3.1827296090621333 6.452413907088902 7.930770204491161 2.2879434849689577 2.073893187480022 9.043041553463098 0.5473711770021747 3.9073825688467783 0.40821152223698043 7.1301749627292565 8.423669070232117 7.357880555211539 0.9766909126720131 6.810619054748821 7.931661047619222 8.283505704564393 0.277307771990845 7.746396236982289 5.14625317060767 1.2151659639005468 6.0320023030466405 2.729222977319551 3.1358767911991743 3.153848147951962 3.365746063020952 5.063934513999599 0.7222711227303993 5.169407711252432 7.321015707885618 8.644432566197224 1.2832348922577763 6.159753747123702 7.766736586116426 2.1491112149784133 4.407972640650806 8.329252569908103 0.4206278533373551 9.120382154819179 9.931058192714364 4.346219019940174 0.12926441193075444 0.5859006038717691 8.305894083100346 7.749226137227199 7.261738263143165 9.957190938807836 0.4974125107162193 9.30641922896179 0.9847995123674158 3.5299999586492774 3.9539743358977075 6.940484636298028 2.575986761489414 9.229818648444446 5.888127059125837 0.14918198520298542 1.3339747079145101 6.739257022479841 4.857683143231013 1.8243649590933608 3.5972601050155375 4.596563503203579 9.150647796294802 0.3374792845890573 3.9808298589500666 1.9145874647806833 3.4462957017813562 5.4843893441451685 1.6442812601323888 6.751023449935257 3.877285316243601 9.578506375343657 8.425433033163527 0.1359739154544597 9.837136140649006 1.345053452391888 1.8144296399002027 3.872347700321662 1.02141460119081 8.776921713824134 2.0435695493113175 5.085142902665572 3.481598347176704 4.606444497605889 0.20171681706600708 9.67060291113346 1.6001989443670488 4.900816503924042 4.486391333708631 4.183237084614401 7.731020032284087 2.5197545499703273 0.24872410146024126 7.2180535477744545 8.39159939529877 3.316508000056843 4.758166656528638 3.5987335174457944 9.952915454679847 0.7616877600112195 2.764940499261706 3.4736800686511398 2.137986563655544 6.353913094360361 0.1028957466950855 7.578922647826588 8.597930690447784 0.6029223601457012 9.711538724778578 7.592851399267756 1.4801162231550817 7.430441653723932 2.9099370402423514 3.384545349593867 3.1932969449188784 5.358917310021099 3.9402497265465204 4.204171249259769 3.2728794465826074 0.5994771546566566 9.89390136116275 0.9720151520152607 4.104069565528554 4.42843222633899 2.5274674278631495 7.991035729772653 4.010405544694607 0.7332835516853446 3.601765872503576 1.0752474977460795 8.590029688072399 9.783829386423768 0.14478431870108022 8.15680004267646 4.664484698002805 1.7852453355992313 7.073013524832906 9.31115728287519 4.64501006263192 0.3056138393365808 7.088844291665322 0.9060847989879743 7.818582351987386 8.474089190672172 9.630721433619206 0.14865519977143293 1.0167384094946872 9.92839701557029 0.6182782990784093 1.2190095212238394 9.148571982141252 3.9186727070176675 4.363895561898568 9.316368892315396 2.5097298304456586 1.1237758924192223 8.434527196312446 6.21442149087424 1.03998260402353 8.343833253414797 6.77890696270133 1.9994864452279835 7.303565477732002 2.972157826955001 5.523584095266085 1.4646820540341268 7.179276413873135 2.7961292841579133 3.415788954860947 5.322224620280839 9.346180451101667 0.3038527669044795 3.839506414204255 1.747883771871655 3.934425377353193 3.9173557987593473 9.635402802397824 0.22943738081479292 9.263919279471487 0.24556706538320672 7.377473424451303 8.123576327826264 1.242583004476638 7.645409548747216 6.578007176222282 7.5823960368364105 4.284615004466524 1.9759944099760598 5.685653522549116 9.865099252787209 0.5457860032086685 4.340783131725803 1.333198558139428 7.269621436162764 0.17489195312952877 5.6078133673076085 9.831286989404187 0.15039199800239622 9.843822527093305 2.3752108838467882 0.8434915712088094 8.030328495097423 6.929281508149412 1.6507083591075395 9.824803643248696 2.133664232232529 3.8986240678114403 1.4638027521580925 8.411337275863936 2.4116023162523286 5.929945712857867 3.2110902524462643 1.6811099623868029 3.9549536757881176 6.380035405613024 9.436170797139912 0.24757755747939836 7.593918578988854 9.317718513465422 0.7786560950634662 3.8098182041337285 9.774470055691076 0.1813462029749866 7.434379336676649 8.501039401779659 2.899602152162604 0.9371754890045088 7.657609823091796 6.280242629589104 1.5617355103166153 7.666887083467303 2.153259842145084 3.110903130718717 1.4577876415354631 4.883007194924403 7.061378361543495 7.303202948265989 0.7632847355243939 7.037571531554584 8.142619741729606 8.219968108709429 0.2741857031183743 3.4084283767404098 1.751494312077177 7.726593610615607 6.147968531422775 0.2974019400187302 9.200990979664724 1.6188144998319478 3.4716209152065263 7.437430583705993 4.468095328243937 2.7681931684534513 4.646535206701731 4.079069180607113 2.8144518388818134 5.072789341961683 0.8744720465327775 9.955567633012674 0.6430834462151589 0.7220188425323038 4.006735730813056 9.387956724673966 3.2523055109899266 1.8880192421465223 8.173991741408592 7.7500348892528645 4.597795540501316 0.6852520485956335 1.781712767419338 3.226322243357152 9.451317246328415 4.33688517354589 2.61409330185598 5.839479644570844 9.520692394550586 4.7118028539842465 0.20928980770038574 0.46814603463703364 9.757507520077635 5.048938601277522 0.4107869824768944 3.8091162622811074 9.814797502212413 4.762302163502271 2.1712543044521597 5.935797994324425 8.122195360663392 3.0020315430015394 0.6920769024039792 2.358797211178764 9.68181079915534 1.9966224582974381 3.4465930198311323 4.164823248659918 3.5630790770782808 1.5146354948320968 6.142270250872771 6.901706347579999 3.054883181886953 3.995212582439466 3.6657541004279053 7.618632414929716 2.7506143940614103 2.763131788911561 1.2272157617093096 6.587525641158578 6.940898828252894 7.4646225571899265 2.267820868342607 4.870445598946056 5.602964077576288 2.0920315639213727 4.9009554806982525 3.156422610116755 1.0887604921215117 8.945105406920216 7.876793626608977 7.392865851904002 0.5218051854455386 6.350736048375428 3.311179297734326 2.863446122574025 3.506658782567051 3.5448710589657697 4.414876095756161 0.6260156309641927 4.068026253887924 7.700032427522827 4.162413422789521 2.854515765911088 4.873708225838772 0.33954875531828677 7.5902776147798345 7.998911653493743 1.2730599912402822 0.9046363591809374 9.93668595798935 9.999127273203136 1.5393380223282929 0.4266739780494646 4.439435953830703 3.1021035034563633 4.338390259302312 3.677063128265334 4.303376507096313 3.0563763575876073 0.10360769465416819 9.748144526662806 8.4096453426079 2.448724500997626 0.6827081118553657 9.258034573241146 7.561955386915233 8.842472475602403 1.3431475507312327 1.323298803151887 9.117176985244075 3.5557401638724233 1.6074423120490837 6.89478039775155 3.8023905336978823 8.284908594804563 1.5413933056386635 1.0717028328035263 3.4760645807548576 4.4902082541818285 2.6811602642133736 0.9058819892015029 3.669055027588982 7.427219097357527 2.5884015966296197 9.97533891336651 0.44790950375560357 5.312256247052517 3.8244990362959213 2.7496236904057727 1.7879456197698471 3.3985880821357917 6.209751578061784 3.342732022770851 1.85726687424054 7.200507719081479 7.913910127166638 1.6991966694242309 3.2872085413982175 8.735568179233365 1.0785196997058852 5.083325859655934 7.844939174012966 1.0378908437182872 6.244978521879524 0.6460646458892301 5.445973158463829 7.654345529667182 0.22263361566528506 6.387000713715563 9.558565823293423 5.183517423163521 3.908423003381682 3.411196626830193 5.615059406511732 2.3790166756671423 3.8310634547334774 9.0661479122043 1.5472942991641565 0.377106601006143 7.495961841672184 2.367233836445313 4.845130131159706 8.830521000870625 0.7942648743149503 5.5154289709789275 2.035558867008788 3.835989377271847 3.8943782424191893 3.9050969514658433 9.70219778121733 1.7151548556436675 1.6476544543862466 4.005906934304141 6.7928082497890125 9.225056341075119 5.123019749758071 9.18620208800682 6.640280471367361 8.021471163879957 5.091517633814718 8.66971521967084 5.528586811963139 8.948150953626762 2.0316059870369743 6.952209753124558 6.333657948110173 7.242471914294286 8.087113564167431 0.23871967536134608 9.36642807606059 1.9399740932485954 2.4184315657402458 8.587046423097384 6.430147819262963 7.0604431052250884 4.182339374821712 8.195944689504323 1.4759034817632992 9.273639687505467 0.22236282151945908 5.757774043504096 5.781783844631115 6.643333126765986 8.552776656370325 1.4292329981641916 8.690493002310511 9.086929571893283 4.845278323417361 6.8706006818266125 5.771160966931181 8.126794451632723 6.686513205672734 7.985745016540341 9.582046075265865 2.9431908748329594 0.12263206906445046 1.5554453896604112 8.517880879870589 6.09941287984825 5.276344842679413 7.072492965269483 5.768333588381841 9.281394703530566 4.645411966507186 1.1455835226214446 1.6325236839667245 3.9028689642792727 9.469750140216144 7.976243613387049 7.265910201011204 3.5438833103500964 7.321534250553588 7.320606914295491 3.888293218132642 4.53651335008594 6.698377688822425 8.23044538038793 7.4341115436712535 2.572269210573814 9.65539895391683 9.374406388919894 0.6913818433511487 2.5226275887276572 7.42333796123819 1.4662167985262848 9.928759736353243 2.1298233233810917 8.067233267733183 3.9320112295639724 6.793360316716917 6.205358060601949 8.924012552940756 0.7665114247977058 7.424136135511597 9.281839545381217 1.332613568562691 8.957126055403409 4.122559245972093 0.10227873112360886 9.989332986865037 6.7422242537122745 4.808246467927994 1.2359639177997508 9.930390985258946 5.744831961927663 6.378544850723944 8.840951123296039 0.39918153554880487 9.686426253485592 9.332508718986649 9.518920859617396 3.8870978883321157 0.21569389562720698 8.385609089032656 6.87961477998868 1.8159541178182588 7.718635452880672 7.9209256064079065 1.7844606364924598 1.9686112956420074 9.251891934895397 3.0223153038118764 1.342710815647782 9.696407878293286 2.256715256512797 7.572561122156344 1.8729818528338753 9.5947173949668 5.724186821857977 7.824525015725411 5.7468298455460065 1.8683861433338338 9.063412702319543 3.245539015763332 1.6127020526823355 5.239308529274843 9.45770050606404 4.155807371019806 7.847608861303332 6.307944942162825 8.819977911554737 7.213088467499029 0.5072717180376101 1.2062079515671837 5.937532941621619 9.706772231486806 1.7541025589695436 9.50447156474797 1.5028129746329064 8.682013646520677 5.381479192276364 6.987357438713628 9.392071454166917 1.3347493386791895 0.4419898211006048 2.170795874488725 9.056623458817281 2.1879391631199834 9.063782813007428 6.846622865203913 0.4157575925033905 1.8286086085435485 3.1633026162193394 9.336925454946917 3.7802805627999545 9.295941203540643 1.0754613047990622 7.548510932409789 6.94889858704966 5.547650012187113 8.763660995036751 2.766546581922226 9.34467727620962 8.730064472621322 6.818475072288065 5.108952127573768 8.122714592533352 6.347370550594611 8.583678189253826 0.2399678132473415 9.925753974350112 6.767985812671945 2.058411613248384 8.66077524414537 4.98274221167265 6.122306729264629 2.6006357986132227 9.899578396312329 1.2500073095783604 3.33126326833881 9.500076355400978 9.259017626524209 3.830715163396838 3.686903584221588 5.248281957604522 9.600284199288648 0.28087012568276126 9.776338097342833 0.2870469060347052 3.0179953258177252 1.0710281893427078 5.266762676117188 9.929856457253884 9.938365006164734 1.0306333208877199 1.9964331213725806 9.064988257250512 5.85282891774616 0.6206709087292355 0.5159305959627796 9.689450303544163 4.709033937742708 2.993606479732228 8.65524849421467 3.182107109840053 9.231727272337704 4.653095164919061 3.321782402943769 8.366260978699723 7.053134597582542 3.9693428556479846 9.058872407886403 0.9313577437031446 9.683852238495334 7.2082696755319535 6.853849844169768 8.183363132023569 3.6675235977204337 4.706061199809438 9.247365332301094 5.735099982676353 9.51019213717901 0.7023403900797334 0.6364739622656419 9.335415708433235 6.670142175937104 8.293127404582483 5.54225793785701 8.397956532204514 4.161839483494833 8.926378749328753 1.0419407029384606 1.6927902603388736 7.89078352110013 7.506628328109306 8.623458709049379 6.863695147590175 6.553557124851168 7.652093309769894 1.0281497342693964 9.949101507686802 1.1898583954292947 8.915064615864555 6.3905665018923035 3.9675753591157434 6.670711002689952 8.80969298255157 8.884398965242877 5.615655510911172 2.6866378157252067 6.756006327296143 9.521824787992944 0.21501165711437586 9.320782638660349 1.9933323877964475 0.8377173654939316 0.7343063988919143 6.155914170575774 9.312801059582924 0.9288620280518334 0.27540074086873734 9.99837343374928 1.5564665034894052 8.563375063942134 5.60320751109468 1.5334837954220086 2.9472530313528265 9.76082807451273 3.3572534233814224 6.901150408212829 8.931461821445605 5.1283824511753355 9.211091094198892 1.027803206275637 4.732733321372124 5.402690473746669 9.027402684436506 5.881674323680735 7.32908157244769 5.141195158704928 1.9516385464700026 6.9612101110423 7.292577742492449 0.4735754941412189 4.84645520150579 9.99465761390623 3.161956752257411 8.059529038288055 5.786667536836273 9.993751488473208 0.1541164685981613 0.5346740110741628 2.829486277764543 9.833646833147771 0.9668741731012407 6.845112842087428 7.097407914499614 4.7761790657476935 8.239170910368946 6.088430245625421 7.419401762720524 9.088979295487277 5.62092594454785 2.1855089608429714 7.453909601481611 7.688220224608253 3.0356297365589135 6.870144042866338 7.301838607236705 3.9584173468194006 0.5507088301006489 7.122100705577084 9.788694931179911 8.901917963463795 5.515740644714269 2.8826561274315825 9.041144277199903 6.07385231201161 1.7178091269377171 5.828111589694887 8.89641166600548 1.1683832325782584 8.161338368619639 7.828971541807747 1.0290716721627557 2.6510053353153644 9.119452714074741 1.1707767826786206 8.529027832294588 1.3506825315301958 9.697047526889259 2.326070420182326 9.515187431700804 1.261416131097687 6.684841639603219 7.269971914966584 4.0413165719693795 3.48440928629935 8.525242774159471 2.6015670995115223 8.094616645747939 3.589791508889708 9.330875400169957 1.1544883718957393 9.530921528157993 6.3847950391552395 7.093709022748216 2.0136203068689484 9.684261624476468 0.6997522545162935 9.238539326351262 7.073198502958565 8.226677420916193 7.210950809568388 0.7143907641443397 9.267223274618672 0.6973232900368336 8.09473530374112 2.4122664926020114 7.9388386184090844 5.91129941760127 1.8007666000283242 8.82561505135978 3.9659715814785965 3.285287528004331 6.729172761896432 9.014199962342204 1.7687128044009932 2.6123467326309404 9.936928102999676 5.472217661310504 8.91379401322077 1.0807961062134228 6.812565510990695 4.2026832783018895 9.213077369719528 3.988378137428867 2.7732449867583915 9.403498665162711 4.502073308977315 2.6957174387866902 9.544669521971297 3.029893128080268 8.747378337592208 2.632942907089121 6.840465013703906 8.369038276006243 0.7599844906502362 5.9904299018765865 6.89733709510121 5.770916466186968 8.082339865372596 7.078557212075348 3.0486349596405944 8.664153792968522 6.259732211220482 6.8086472847402675 8.30513916489555 7.138728265973909 1.9285224397849574 0.9356540560223285 8.757415299096008 6.977877875656793 1.2412175731712987 5.876892939937974 9.544592684017168 0.36656841677999275 9.698958315199464 2.802220236964575 3.3044410736193974 8.734775935785095 3.094025765718898 4.068744808043992 8.411503797667452 1.2114544314009725 1.9965281390460503 4.9240369013915855 9.20873583053675 7.605540435378333 7.344360223946711 1.9065183570507256 9.578079505760241 0.11052841438458483 9.401047369616816 2.7646112197578443 8.906099418773339 2.6318580132634044 4.211234205067445 3.688257061675716 9.230925642834261 8.466045922254223 2.509413763335769 9.5847929001634 0.7549431694217352 9.238108443722155 7.633093894152691 2.090636683637424 9.854028038821191 0.3273697332892027 2.7797174969990075 8.947977332351257 1.439218523071431 1.1953236934368783 9.154622608564008 4.472374039404647 7.278398909845482 6.35670688180409 8.458860887798682 0.3944128617049216 7.271628201036162 9.985857795326938 0.5180780709879649 9.02893519075097 9.449574279854907 4.775557589955991 9.761780252007718 0.14505573520321668 5.401119796245154 8.036438837760695 1.2444837382748912 2.065434025999958 8.551843815716413 3.9379181216442767 8.02825854953338 3.5948051951929934 9.282525234514038 2.031105345180515 8.035091180490584 6.866329408976326 5.974070639285276 9.392388865105433 0.9099619727721349 9.102585936047273 5.764473676917719 1.647458873153072 9.695468247040516 1.3355280631653792 0.3786159141754295 9.268599470383162 3.2100733867753464 7.9712047746687205 4.547460975613785 9.628769883275677 0.8886232281193651 1.6154578971363267 8.914792079121058 4.058598440910829 8.857983086213466 1.3483753667907727 9.861692066353674 1.168725646105298 9.292207250078722 3.361449315052351 2.151186706428692 8.29430182782102 3.85403230039031 6.399047692480741 3.699875465140183 9.224391874292492 8.995037401780728 1.2783961918038305 9.703771867848413 3.98707545346978 6.164061107419911 8.932279401710787 0.5859634480290028 7.766517535135271 9.09178749854718 9.24419759400054 0.12092899332543094 9.340748276279948 4.9524757703539155 9.606123577234364 0.8359415455222923 9.285604559033086 1.69030180090114 3.8580359646370717 2.2786957311976455 9.59032638998244 1.4410075277767622 1.8391399629854455 8.187670637536252 6.4369512640142235 4.04065688119518 9.081280777890068 1.4084885991780287 9.81277589068347 1.152417174704004 1.798728740389628 8.20557414362104 7.542642121620625 0.7006395479083611 9.282837668907092 2.2991650233392518 4.023580101708318 4.791851182431413 7.782280538890577 5.929584425799452 9.644685929057815 1.187135245426822 0.7946662157645132 7.595535474514016 5.681660039590592 8.734700773582958 4.143367793758718 6.5029701921746526 8.615860621320516 3.2703442136105947 9.849592099711204 0.9189565266410247 3.7029960242223448 8.903584675154086 1.631544000627832 5.323993914731311 7.843173613700358 5.400710525515189 7.17052312219062 5.282552111575509 9.086236824778895 9.138422576987283 5.128235298483221 6.382893228911072 8.249825590476354 6.000796518603059 7.277408616484005 8.494683099292377 9.290656969729032 0.1499292668653478 3.0486589249686005 5.3958008879669475 9.083120013664738 4.6456520531316405 9.851742935460468 0.3049431881762441 8.655616166187826 7.958376690328208 0.4342975040162669 7.2813128719877716 7.74149592325359 1.8685294235866814 7.554593490321327 5.276724424708338 9.101997558086179 8.571124112261721 5.226340151991774 9.126350669394329 4.919122794403025 2.730129241053976 9.540314071972462 1.7949887546815413 7.425771941448509 8.881012397243412 9.802208840649623 0.1859955872492849 6.760090782612117 7.460798103900347 7.043041925968845 4.147422864636737 8.29374206211505 6.620540852814573 6.7183796789656345 3.530844265660467 8.481596928399894 3.2160499182217865 2.0660524545507624 8.265147952133592 5.665253058405419 8.513316431097527 1.758154329054093 9.809465812579605 9.111261020591776 5.537883418399813 0.20856074263773827 2.985136722059719 4.4601753993216375 9.325519964186363 6.457132806258074 2.93033933687963 9.384756227381239 9.016522563823155 5.314802023201436 4.344860586685794 8.738537883755876 5.7250340516388025 4.426141448010723 3.807142581408178 8.847756538842283 1.6555918876560383 6.704840644741161 0.6273883069579922 9.956473991253059 8.800609076756661 5.941118675165605 4.104424951727135 4.005758868822771 8.06990432881748 1.7446282882463713 3.421945066068308 1.6053398426052503 9.997352183923905 0.12580744851748538 9.98274333533662 4.405323064689367 1.634745751853274 9.735908187922535 1.016974492293543 8.99015824816659 6.478113516240407 0.8879561981507473 5.080179922266439 9.390787196564672 1.0145776298745943 1.5018004493209998 8.516405800908434 7.38050629583432 9.313706030199235 5.23089338913115 0.7475588219001787 1.6548582655621824 9.676333680987902 1.2855542044703738 3.532471923339756 8.401513222454003 1.827480078320363 8.95263373081168 6.811663889573343 2.1929574318097336 0.832173493849619 8.906063063944705 8.581957738248622 9.711814451674421 0.38471042593817906 3.4903886552295615 2.8668021098284053 8.258006812238136 3.4057875160723428 2.1651641053881407 8.735453541200947 3.4704679332954034 0.42065728848582484 9.695206550821943 5.993220489947875 1.86032856763581 8.573846886545384 5.413250309057359 1.3516430624298845 8.827384235169129 5.34317980904439 7.516074438361934 3.627633427963041 9.252066538110856 4.000819957477697 6.749550874228484 8.692268633270233 3.173682636656724 2.7169373571795727 9.903906411922982 1.3340022091483696 9.31557287323884 2.738992586077422 7.557642471512697 6.857381660912042 7.821503358281102 2.1349806034204035 8.836277994975978 2.7137374914632497 9.315885284581661 3.510514450483144 1.8094249224428607 6.886392373902814 8.218089028300739 0.1603230160219411 4.602016453200955 7.872210195968442 5.685954397249956 0.261722517807903 9.873926731646975 5.309434559605884 0.16462951423940897 9.245595166551787 9.937105294756384 6.285182064174484 9.04993152879177 0.5280592670613098 9.978534948133987 0.45123052150039644 1.9902173400251697 8.020563295849264 6.786183096290609 7.182392985264862 6.739487649288375 7.880502215593705 3.3354560482281856 8.335670591701211 2.8499153841286695 9.360764631328816 8.763726582171797 6.439804007040757 3.5559459771043493 4.309494822835432 6.743395569779304 8.331066588727074 0.6404789334606562 9.630650215312059 6.5829892790953135 1.6500733090331945 8.078160150355696 7.4827287647250875 9.133378429800128 5.237360134508312 6.188625958175079 1.91320870352518 2.8508155349411104 9.640719640765042 9.008026084014686 9.429041530419848 2.931123203872964 0.69061114956639 0.45994078761663726 4.150537488283715 1.6263276958550152 3.0705230351585246 3.3123174952255368 0.22984499192792995 1.2746623535930786 9.714292909615741 0.1489861089268194 9.677482513856955 4.852230884740648 9.649580906657405 7.021959108061147 0.5359781587230916 7.621440860017072 9.840498270790675 1.4856754877454774 0.5719583380785664 7.509204505211489 8.80944190327065 9.698341025330205 5.536634676597695 0.6053824631859035 1.2610581794080922 0.1518556855390436 6.74465316056615 7.784959865788688 9.666228891866336 0.8472808014362299 9.247718724654456 4.031317495829732 2.1610970045931395 2.7587835720760707 9.231599896746129 3.240303657667316 0.18465968098832697 7.356691481244446 9.798069256089644 7.364241612962038 0.3431171458664153 4.039264534131918 7.970547677045816 1.3320831481092799 3.132752380422957 9.880150269398035 3.5361976778335396 1.9702158362418913 8.147016115113399 7.566388709823691 3.0416596385165255 6.593663542681295 1.8928271428781622 3.0739469698918858 4.290573764182761 9.381704860490679 3.151342967874683 1.030154602108559 8.589827853310814 3.9222058284031704 9.53963442891595 2.494919345328798 2.585573003332962 4.398826775827637 2.563716614971337 3.290020121317361 0.5855086761376604 5.580464092113651 7.9947260721923605 5.089547389731637 0.2870509052502568 6.15711142737584 1.9697426472138009 3.6517944270981926 3.2457042605838975 9.846572717324964 3.5967191045048454 1.9853635209229221 9.651382969320142 2.548589797666899 2.5505021764432314 0.5253730158729875 1.0686989747497013 8.945495004275696 2.206139812072771 0.32211203490665863 4.474953851528688 2.691675153873319 0.30911606879884257 6.176206427702263 5.662680456394488 0.21343831500584187 5.593383828793509 0.1950419810938273 6.880181905634278 9.963479568113918 0.62597485510073 3.213441330185961 7.215109157018622 4.155083148811265 1.0279878202076036 3.411052288571617 3.316349621900904 3.6453099468712016 3.2284519328219936 0.9723897736338873 9.597931574878267 1.8300683544902285 9.553279501130636 5.174862373882174 1.1834341500730794 1.778183924157215 9.465236717745483 2.219742109968732 4.692129954332982 0.14732365230967304 7.136908076607368 0.2155112870655742 8.634069840350204 9.083619970929256 9.724120395205478 0.11519153890320766 3.3436636671176325 1.37859185133795 4.6343148763487845 3.52617815152653 5.419457368196327 6.865698876747791 3.1140024029100317 6.026076569705288 1.2703878859803979 3.2564116496607687 9.344733590235638 0.46234423087731535 2.9048024347179573 2.5077031225100397 1.80214921067286 3.431924351277278 5.113562409431571 7.823640693508471 3.025509259448272 5.9546411708473785 0.30393252993326847 5.401821585966233 0.9712255409036814 0.8527782268595825 3.969687813920827 9.482676490008057 8.714393457738774 1.915173934182425 7.991106268097904 0.28848852988762896 4.117298034733929 3.153998354800045 9.970513342325695 1.3716212140213742 8.40144687235622 5.53011974009688 2.9809366029759254 6.258007885470988 0.22750464407203275 4.777711005026407 1.9159895344325313 0.11325023438857151 8.722353846736334 0.35424298427632106 9.95125070686947 3.5401321498886986 9.592131806454187 7.684250995105657 1.0693699624434503 6.154205546645495 9.57034326184549 1.8185736431899882 0.507292069088968 8.655817811937496 9.017752263827191 1.4389901851511069 0.18834509757308826 6.651240984280882 9.478835530446105 3.524672063084941 2.744920476920651 6.271878900686716 0.10901868861611419 6.918932842944966 3.147607322525607 9.459875161924836 2.8440388146308337 0.5752651960647812 5.599846750136894 8.247371455141662 0.4574348146113181 8.907997729992028 3.51981783138351 9.952916475805202 1.2907952559741198 0.20258237178264693 0.2562563946019516 9.379098623578692 7.552670817310613 0.5052390608366668 8.17148036773351 9.380501836522134 5.4972272317500845 9.778177835612599 1.6410067831145145 9.496825138373957 8.718588556481663 1.9121142968680038 4.565000140484189 1.7026659831527304 3.2020910631753714 9.522091059682912 0.18894864719802218 5.903441938677207 5.144994708521988 5.503307761241055 3.1772108206821628 0.39949851544795045 5.80126199977269 9.422509294718623 4.325673521420843 0.8065586749828784 3.291436449843793 9.745068196369118 5.692985290182518 0.20219634260334907 3.4725233111117317 5.396573596342135 3.19371306156826 9.844702036421445 3.80873064339597 2.450736037269406 0.5484601806845655 8.025429684243964 4.099697948095784 0.6547031220525277 0.47161508328784585 7.229652100377635 1.4783932758095655 4.98930723402633 3.4230912712107155 8.418869661206582 9.653211134067554 1.7118034138953782 9.620490944658055 1.010257340702288 2.6423301262995995 7.410060081551797 9.978548197408335 0.47865591548119024 8.627838578465823 0.29822074194630144 3.6664116659705552 8.672564767934979 0.21952637039812384 5.5441246956107495 4.749733391986166 8.859108986404983 3.1757658960357693 7.910925131119072 0.2922350318967908 3.7869349255545375 0.5222712842217341 8.834827144114493 4.283344830557086 4.5301335801557014 9.884176375352354 1.4707213120816087 9.888618445824509 1.498279357852479 2.488791035008335 2.60368486739548 0.4075164908444311 4.172898317180318 2.843743603372421 3.4955359429925528 3.2855926762185037 8.274380928400062 0.28418833360406204 3.709811395164535 0.6264934346490749 0.4934294833437134 5.790075152004155 3.418495547880534 2.5870486055354234 3.3366854624093243 1.8303471147968309 2.6385614084751716 3.923612100112627 0.33145125892047034 9.12415399134023 6.072786653605938 5.635727910298325 0.23378993339924747 6.266639637881108 1.2060033346423884 5.714961023434289 3.878245535965134 9.531108765206557 7.030922687025956 2.1276313544897434 3.3143065874847366 0.7323951426619644 3.7604940393265553 4.547791361528866 3.356498525921837 3.2167120407956444 0.8494744437745476 2.155853807112633 3.9936224436256156 6.683128832055519 0.22225315081240904 5.503501846514061 1.2601400102279472 9.44494103304924 3.1552954237221957 7.644501459434279 5.786288081583634 3.0720176653289277 6.360003037566785 3.230533279031639 3.1053480981512336 3.289518686532862 0.8714932763533412 3.8036632938435444 2.3402687648521425 2.6099518963275363 3.9501113495324063 8.300328479695676 0.139272606742864 6.183068456927563 0.23853741485824198 1.535008851900931 9.535964737200636 9.775096123089337 3.8267663356561132 1.354266891280251 9.295101522711363 9.401380198856671 1.802509972185946 5.800036541011659 5.360517014681948 3.091200676057767 2.1887830621420363 0.36209727074301234 5.690199143891269 1.2090592539541092 0.2948359050193883 8.60502863881528 3.213466736153575 0.31099779767938784 4.24494094217544 9.054238471878747 1.8356860698633093 2.9680573056261186 1.8080257893907894 9.627935391054008 1.763641213605562 9.114701991752884 2.3920772861554465 2.957141904325024 4.2438636341816425 9.965255955121307 0.7511896140410537 1.891631624065719 1.4858533963644533 3.96094380917748 9.44653958289338 9.289234470655032 0.4281786074112581 3.669461470055268 1.2524098746251333 3.7062454940416485 1.2163258355265305 3.91721390613057 3.7364798079446144 9.161177802298027 8.22421850035298 2.4970811529893147 0.5322556865825909 0.13060311188004015 9.547107487567027 8.57039041871214 0.2694949252343486 4.115640259619252 0.8312051212604166 8.90544655547837 3.319416626070024 3.855264118710827 9.933128348035535 1.150595037592713 9.211509561972113 5.2959665247113366 2.8823810113669324 0.3521078457362261 8.668250683885592 6.228743426287254 9.517944165893818 3.8252997968055538 2.6661557629742085 4.993720906610536 5.954352812423453 3.126477770269028 0.5180737836444917 8.895099748122762 4.091369080366885 9.594800733086839 3.9519154613609224 0.9421047745719795 9.309837465677372 8.961711408433437 1.314115359532673 8.528119003069149 0.3148944489110477 3.4873797399544575 0.33006029948127846 5.545871188770018 9.518533306817648 2.9364396573012783 0.3854780056363616 4.378887749702876 5.4536861354726565 0.6487495440288322 3.578561815346722 4.34127607710922 0.15160596391689118 6.465016573973703 5.904130276281882 9.724958941963258 1.6141968004089304 9.868720476776064 0.9922123914682794 2.72754170940666 8.472720631450116 8.703124832351023 2.951712903520491 1.27193555704363 7.353425106383726 3.576183254813352 0.16729398295685893 9.203083094943567 7.7368099628684135 7.947160451206649 0.44222486894396695 3.4953228458867693 3.9820308498879964 8.478198491835082 3.1867368414850756 6.758493184742632 0.28850703231024166 4.521970275340594 2.893756170324924 1.6916966535248084 3.5761849997160455 0.6169965101561958 7.70057835617349 7.252569693839776 5.409652068456554 3.9639364970880413 3.1906374389167493 4.731753043337202 9.895029739254394 1.092626329800725 0.42828354821034775 9.34660533836498 5.5751934003143555 7.44461275762753 9.637986115852367 1.7348250791627966 9.020431837362803 0.6146626463310465 3.416379070809665 1.1315387593539286 7.908603419377144 3.5993436663526444 9.641473464083735 7.988858729703086 0.858602824995434 5.79246943510195 0.1261559980167437 7.1614760575842755 0.6243913386190281 7.678071534011529 7.5287317181655045 9.390473448308295 9.220425581389673 0.48995533137115466 0.728709968104658 0.2825118624448102 9.208153701494018 0.6150907099165694 1.6548596370510893 7.685413399952328 6.4822462963713905 0.16341601163461217 6.214664235190643 8.088938870685858 0.2786143698796195 4.422454517025606 0.5245844696822068 8.670032409327112 5.773982776544052 1.1303142963629944 8.07754332610116 3.5979391141906234 0.43972072151715835 9.633868509690247 2.2782436884539767 4.8246918461925095 0.2615451877497934 6.191822698279708 8.788138116602353 6.720167192320844 2.939689104070349 6.370517413206519 9.450710412045176 2.338586943733642 1.7780817724364066 6.179034198105576 3.274180420214352 0.859591714597677 0.3739576302058891 5.575880915025687 3.793491504607603 9.45754192967609 2.2255047375512085 3.944794852308648 2.4364918111093554 3.3736335187739765 5.92904737609882 1.3965850136118436 3.2907897916717426 1.0661340369414845 8.725835932599342 3.2405139933550995 0.43950062405539203 9.266016544172544 5.563642144485759 3.763604573862069 1.2877380965598246 3.679781327077602 9.959152294720791 0.4847077543462408 0.42869214587348736 1.8049273124325382 2.867280305367261 3.2942293106681264 0.6782665392682574 8.08693572700418 3.9754903645081185 8.853940909636194 0.6643897015634899 3.3662911088476632 7.15031549399726 0.436633645204509 4.0208450923605925 7.306308388699849 9.951548734866442 0.49046668236620405 1.1307013927681138 0.19269604125122886 9.039043617199418 4.51796523499488 0.4423942697216736 3.7255893285562256 9.614021419422706 8.856794079092051 0.8140432357005869 0.572788960165993 7.183306242440199 8.557202706930042 1.345270214484834 0.17841215946907418 6.73804948988558 9.200782605551831 8.438819979640847 2.108162721399721 5.985981439574617 6.510942737865481 3.0576506736240465 9.531741609373537 1.6935830293324732 2.850602080556704 0.5870647559261561 2.4148855223937153 8.25847515149705 6.3426406218886004 0.5010748471019495 3.677724172088253 9.017957890352225 6.5970307046889864 2.6224906057288146 1.8726167417416848 9.46510934445893 2.703297402116772 4.593911225754747 0.1278780487081681 8.633187774751146 1.534142409750293 4.023303314501723 3.372440364915514 1.0292535684721669 0.405261901383116 4.401408614067223 2.2280326935644332 9.571161863236028 1.9187936022805032 1.087476349770435 0.3280425050710418 8.411104694395583 4.38268552465194 4.024494794913217 3.185965981738634 9.049912770511563 6.172843440091899 2.9041423474797377 9.343924333409856 1.468528006276704 3.083653531650466 1.7305203004927652 0.8326107590884453 3.988486275295374 5.90584001353845 2.379873664916929 3.1360812905677777 0.8606830647938608 3.108309124260747 3.940151348148973 5.38872631945152 9.464090800730999 2.095806615950029 1.3691826099341688 9.670316926883608 1.649122885660995 5.405256561761549 7.920716865796297 3.0157474186191675 9.237269200847315 4.779004798510345 2.3576261809346324 5.62277690828144 9.467330700093258 1.9361363353641088 9.220191457860683 0.4007022378385763 3.2001613713684867 3.346146354776841 9.44715180401624 2.732182060294361 1.3846029327797242 3.6142986994852073 3.756400124194659 0.6092604437282443 9.63088347215226 3.0456878305169957 9.885893859792477 2.0064939859687567 1.7472495308605134 3.836718919474333 0.49718377863689867 4.112467104513772 1.4720785467238344 8.511403909409745 3.416842664025454 1.0090078059721286 4.1780557124707975 3.9266281632652102 0.2739115528585181 9.204840993358484 6.508932925751184 9.33411328494179 8.8201630971325 1.1682095974726154 0.12064592493014459 9.747748071862791 4.372697473439084 8.411110339397823 9.927414250415147 0.4636428672153601 3.7958907803860233 0.5161086728484614 3.8407647564287215 0.4559130404856777 5.7322672034572495 9.422488272905465 9.726875414461102 7.862776505181747 0.32717255467483053 6.037132088767162 0.5763927627881964 3.6103803326283535 0.6285867969455632 1.7882981984499602 5.366872102421912 7.220243545870819 0.7014707393365605 3.5128165418661235 2.048231092583907 0.377038743423074 4.91926594326954 9.557923553885875 4.167544229635396 2.103547299339796 9.793294031369335 2.6976286051207286 2.542004866826349 6.463220354545214 0.30394826632783456 4.643942816065145 0.12031550213469 9.850970591278973 4.407696485020615 9.212281712531643 6.107279726387299 2.6628573160182816 8.506607969444387 1.848516461532217 3.0258725956724657 8.43002328897827 4.771215239404984 3.0519449271033388 4.038995134525233 4.658564284655396 3.2197193079790374 2.5025941834209005 2.606421564020314 3.6907623938845378 1.7392413402882498 2.979909611337331 3.7254616602266815 8.21730554163626 0.1000500109396052 9.09103873475479 0.609271318828517 7.941499786333065 4.188039450984923 9.534250800191483 6.4807997743438 2.0968697296098964 1.6797596658649292 7.68529861209339 3.2661073247939596 8.90752623746114 0.10310592794630313 8.435591513194515 8.606424897503206 1.4584827950942518 9.543141980677177 0.15042679694025374 2.027827802481555 5.72748953080212 7.014196713656233 5.554333079397756 5.078146382241544 8.717039820497632 0.5815385592010651 4.310089585711269 0.8943006482078459 1.471006183005172 7.218275775077817 0.17395865838601132 1.709270379915663 6.560194458093074 0.42407274073317414 6.748440751921954 1.161139171084188 7.37971898052602 3.7741016088109696 4.91801983841416 5.097069775882892 5.894073650623689 5.5881187981316165 5.641637188077819 9.524536157020957 0.19798039953410118 9.601413773687419 4.13884547389784 3.4504280393478526 9.045809264177413 6.469268973292612 0.983822394519537 8.336873394387512 5.575350695109309 2.4507460963914043 5.361461645530412 6.606355148892932 0.6635407453201569 6.270061880727313 2.098178298293654 5.276953209803196 5.820531252951019 4.180362245633817 5.373335440974528 7.908389746015517 9.054394621077087 0.5367955776366387 0.40976790628856197 6.701809728017964 3.931874239719909 9.843024952125974 2.5894106644064676 3.2820971774244905 0.3513191635490669 9.219061085923823 2.555198735325876 2.67716542129106 6.590462393066954 1.315064591207789 6.310977447047126 5.829829062609893 4.760935277727184 9.135169619667616 5.222757899033082 0.6115444314576548 4.760377738673793 6.381048140682058 4.2105699134665935 1.2470493814202603 0.415850176072178 9.547541505027922 6.036789403247365 5.62980614620722 4.942341006708411 0.8914444983567673 9.333891901276981 0.44531286496094236 9.400067531841358 0.5577610744647119 8.035148059247328 3.5587454902261366 7.337216384868887 1.027211684262662 0.8416728916325775 8.829270493420601 0.645036695360913 6.326129202399433 6.137153557685007 3.3689924418039134 9.443775938240293 0.21346677051937757 9.911425481145603 9.479056148843155 0.8343490901599511 4.206477971434705 9.189502374371397 0.21659961076606926 9.452094981959577 2.1203759684158427 6.424900735513051 2.392966340585371 9.213353578365258 5.001636806351979 0.7041504511735743 6.10446256600657 6.2924421063955975 3.427234679804471 9.958388409975075 2.439338782357363 2.995764232856632 7.349023150233324 5.958348111740395 1.7512870305453627 2.884351190909359 7.42240198575249 1.0912119766793236 9.347549035678979 9.179506875628025 0.5172709947142913 1.2571310903427957 1.565462947477461 5.731575956913078 9.852873991989268 0.5199412398203132 7.929473137874034 7.924156338692214 3.1313498705116447 3.8163338090913212 0.26366807739568543 8.972774308180151 3.7740532747758673 5.82284160784279 6.532955519757921 1.291283932454251 9.051349360193441 3.597734446555314 3.5290107348186455 8.883726336372487 2.0442471270668894 4.04711244490396 0.3455549293653002 9.693439499159213 1.0779527699872737 5.499984911002681 1.4678089081351198 9.35241495384891 9.766328459586093 0.38366733601634984 8.54649930093356 0.676605378074246 6.529107386963235 2.4402475401270776 1.5398860439401783 6.145485571770809 4.590629282766168 7.403832072055394 3.3433331475111965 3.8895723055674627 6.422775294206286 9.283771724308323 0.23389978850816817 8.531132765808406 0.22492005132951753 9.661218552456987 2.1169811622628427 6.466576231158473 2.6125085959822187 7.691507837954328 4.800181633711369 2.9640114663667068 2.4353265872191 8.536327774470283 0.7389945859296692 7.52940931897131 1.9480904700928576 4.423368557908891 4.948142017540089 6.140052647816495 4.829360807030313 3.675601771107316 6.524587994482039 2.1606883354742745 1.255094629853287 8.085826201698703 1.125831210304943 9.812093818132322 3.376584674773408 0.364417820753161 7.386818182826232 5.861759991271366 2.658146366874721 2.942534272790079 7.3846315892493894 0.8838739533521869 3.636738770475317 3.1403214202472753 5.664092195619385 4.403101720580156 9.987370114246701 0.17410283990299824 3.987412062947967 7.253104994027667 1.075993449409956 7.162326604293735 6.408143791849293 2.47639437958747 0.21189326705920752 8.222805389639177 5.2771279513200575 9.762679981000879 4.211593691902606 1.0559715231195952 7.577438445581924 5.770565441092608 1.4288175107861907 0.12931096187776614 2.5712223404136534 6.40353025068844 9.740877659267484 3.4978918428411454 3.0456839419425656 0.41346687410573146 1.6839888812587565 8.282953681431932 8.969608141905537 5.394756456521516 2.9365024991534887 1.0562065847930975 8.389195673130265 0.7481901701069873 6.8290526470586315 0.31825128902407585 9.916712010760492 0.6315080683169665 1.4824150967254335 7.885704807782477 0.14486977513760024 1.718575731611013 8.111293282397392 6.028387795895894 3.168118277964675 5.360941567716873 9.940739890185823 5.104500788602628 0.3157775425505305 0.22640878755515637 9.54917043508011 5.203261783149387 6.121087530947078 6.485854734395597 0.8317395893348705 7.26422597805835 5.585543393212264 3.821718394400486 2.9672133005729906 5.96158066729819 5.359478693853476 8.34097645585215 2.2685856497424153 4.104263185186838 8.666402935659606 0.95331305905788 9.123802807199258 6.326975570101518 5.713959580674758 3.46990324405951 7.739759556061998 2.7413827685386365 3.918364161199043 9.972238850552179 1.2806782087382573 2.4823507328593055 7.864136823945245 8.65473907713423 0.5682148810052805 9.902524061746085 0.5185326008518532 4.393974044696422 4.679262905877377 6.875451681885275 0.980946080323994 0.11158520767036428 5.460143271207377 8.178018506599594 0.8519152445490272 1.905949998217623 5.884642790405695 8.633151313891437 2.2769176960985447 3.8789696475325544 4.409038727790825 9.21469149691162 0.5412369612118306 2.3580560239981985 8.875843101117258 0.6323514809790884 5.561892829977882 1.9637302242484242 5.660247481174359 6.0089153502972135 5.8871340734970605 5.1200411317101775 4.270514551834323 8.166355738350273 0.5684794907733979 0.47069623873585265 6.1512516200079705 5.630934185460427 9.89699466334353 2.71126487675618 1.0589033952934903 0.527753747738374 6.6477578358021 2.364030377197552 8.336930305414583 4.197319984493618 3.478775947477849 5.530143414991941 6.365673786917625 3.94283942030576 5.226222379127569 5.819515832529756 5.479649294081528 7.661548317412741 2.7521002282626226 3.817002307359828 9.437747373196238 4.645653466110968 0.5469742865527447 6.053697372042503 6.32498616435914 4.0067666988020685 3.316600885583693 4.56070659188803 5.712814537264131 0.13745611693883664 2.3854673158459985 5.9537505536116075 0.10132092706656959 6.723864650347704 6.038557724977974 9.932389996033718 0.15508925991716982 8.259342013161941 6.90118887905292 1.4702383728046522 8.789431555112692 9.740098395405827 7.202024334564811 0.5119032637360279 9.958645346320385 0.491751783607004 4.781887599041659 8.678693785897618 0.7873642889636949 7.88457444506571 8.546741798612462 5.743037561162616 1.5860366525678047 7.498732387565247 5.136100211107661 3.6824250782449788 3.524234906182213 6.4904306299147265 2.2406028619247027 9.854670264433295 0.2771803549088485 5.5372981153398975 6.747580911358256 6.1165331090256885 2.6328889487969893 8.929706958746468 2.076138229534527 3.9728306395287696 4.814016088951383 1.5529709770351112 5.886654893713224 8.234851374939282 3.624838335876082 3.616474390301498 7.236307161554301 5.198763633763595 4.135254118401849 4.476929805154663 1.559917704344242 6.14577738542477 6.92178231283831 5.718894126305565 2.7567637630754063 9.208035924019766 7.241718607300827 0.6075728462211716 3.97544009194836 7.932558312542401 0.8756726271765469 5.040385383318734 7.188771482822199 0.6961940636965895 2.053548106132901 6.631057713269502 2.3355124528486075 8.652671295987133 0.6134075611046059 9.343572112008363 8.71575948143512 0.8976609735162135 4.437681197162643 0.38732220643137616 8.941945756946678 1.2359859192478435 9.656859886950548 3.810926818954974 2.7647159369696666 9.305126942963136 0.4608895329318212 9.143556864418452 9.351704732352333 8.301940861985074 0.46905148008816155 1.7992429565287291 5.301169716206186 5.613616671637542 0.3620041823741049 1.6702240769099963 9.918842126654656 7.962642391937003 1.5178799811908692 4.4345742284982865 6.3289770818266495 5.924376442161011 2.901224844821548 1.960099819351476 6.461116179384085 2.9248378661402588 2.517716554335252 8.110075932708586 0.9710454217672915 3.9657092859539453 7.336565732091332 0.9136918832230592 0.3674315627472078 7.3957673277346805 1.6785865057792013 8.367423609438685 2.3000606770510923 3.6098291346942606 7.261377190451924 4.30498927201959 4.975044307211657 0.33938871754551947 8.613576008929773 5.128460390930637 7.244282733740817 2.9393416148818425 5.243513740155267 0.5303513431177356 8.744136303778305 1.1548565048735715 2.1797486705541953 8.36665256298535 1.0773502138274136 9.369535713181723 4.6958020686278585 0.7204676632234976 0.3387597527328783 8.617431075234766 3.6579071047501417 9.476328640041483 1.0643508570302158 3.7506609456149533 5.306225865650044 6.790976558355842 0.984879556609056 0.6513974488483267 0.7846313403068645 9.761805132430002 0.30252159516152943 1.7077821323549793 7.480487237831225 8.756944528037437 4.571483767852532 3.4618993293056026 1.4287006806765445 5.919899464414897 5.503108969110322 6.893272578237409 5.759299362755683 2.719463632830759 8.596135692681683 5.548911542258903 1.3093212405357786 7.423837330721747 3.1785535797776077 4.52981897443063 6.285694869639281 3.356289552502867 5.11411669379196 8.050864324043706 2.2463891805374034 4.160724638195411 3.053747692798205 8.201825534820516 0.6111927125512597 9.967239153435742 4.157110541338825 0.3529922785942885 9.464859982420425 1.2198096363269277 3.639011260748145 8.32260038770563 3.9783910842911316 3.5416847099065043 7.188496332182199 5.159904464080442 4.284599470914015 8.258539261112116 2.418267844540129 3.747167290839638 0.5712539897815443 6.5836414877636456 4.893358328808881 0.3960478862389101 7.1995251037528565 1.1705848687376323 9.644684596754304 2.9417450143470765 3.520231808971202 5.256094698329944 2.733039764101393 5.395651752954733 6.280123254733654 5.683471283161424 4.898934350919196 7.3688239095310735 5.464741112854038 4.123120632109493 8.584763537169145 1.49972727441921 5.426672301110036 9.402716621442865 1.1497050357981826 4.17037138459747 6.060214180222297 1.4742841175581054 7.170799835636467 3.8629347063398303 9.488337874048934 0.40536387561712495 8.26734257180182 4.742065001044438 3.0804123207299066 0.6980898716598958 6.663617028182749 2.184403607629799 6.695975923618762 5.831689211861623 3.149193826317599 0.10567952803235414 6.226695369225157 6.614491180671493 7.468674541641649 1.5069314106034417 4.887450307267124 9.904668021610629 5.278131245013356 0.31912460936445797 1.442683796093958 6.088339727357575 5.016077706326283 2.170702451891429 6.396456650282828 3.533803537647194 0.23726889134553897 5.745374310877028 5.721605193375518 8.327467914781876 1.8945375647266713 4.281703895943171 5.365309031497526 5.903476039192983 5.104010556231721 3.114709390458816 8.701689948386441 0.601730446389813 4.194025200219831 3.330711505673991 5.613931480204671 0.5767666721546005 5.044676977255073 5.724357988283587 0.293094049567145 9.052335730405137 3.69781983838133 2.593048270196432 7.851976993540762 0.9687797036531327 9.982240372321623 2.4889602098937518 2.197675307548529 7.182835635038288 4.742683558676551 4.896523469348094 7.478888842423654 6.150856043421863 1.3691113455265551 0.3510306253333173 9.939829228466802 0.5557789687313548 4.325045808235892 8.781532938436497 0.5656820660027861 4.496529935218051 7.459518949619849 0.6716539758075148 8.47908542333848 5.620782691955283 2.130848620827507 5.279665786663458 1.4839379081115909 6.8433998616629745 6.151071383315388 2.5843468991653866 5.503161200939948 8.963665498912722 0.46718809458361577 8.83003018993885 0.521513348741343 6.35717357758134 5.2163845140175855 1.11380501824054 1.601888757001582 7.151135240984414 7.832143800259136 4.6665487035216175 3.482588656673345 9.786005024224522 0.5483936254397017 5.326390920061709 9.063274509253278 5.119707834550577 2.7283322701878685 7.786583349070648 3.988843786725505 3.695533985888011 9.079434601690023 9.48561593418373 0.20810548438646403 6.154253972881532 4.577032456995694 5.326195474824914 7.707388446307133 2.2547388925926612 4.17482167247795 6.173044977505469 1.6414476257496156 5.6070780141412 8.15041334154094 5.621220397453573 1.888325287014787 5.913447323665825 4.664947857874201 5.23251271645597 9.975242277566633 3.712709807619152 0.31438738295444857 0.5439481688882095 6.131532583008877 5.504987883557329 0.42549927359807693 9.528295251372805 0.27042632063860594 0.5903435571678779 9.009785821838255 0.7984831915582715 9.810946554984188 4.778855834069861 0.5337953546046732 4.025015686400005 1.5156982028078514 6.350532966596198 0.4015391895201841 7.080233535713105 5.658415331041537 9.78976888305968 0.34471451323356295 8.791238940074397 0.8246000560407056 8.455743249181133 0.8272105042303934 7.682118832350737 1.9072113830729411 4.579086836736902 6.392856588713558 2.7583709913325425 5.271073076739226 8.162440935059553 1.4961068110880684 5.985722998049045 8.989573777220112 5.349562633130597 1.7591267653995017 7.228674913379056 3.522450177295238 5.112705798205618 4.829439470562953 6.673277570149693 1.011161845703879 8.707259359689722 0.6962896968112995 7.211669022580997 9.728085418040418 0.3317365055628434 9.218006662202068 9.992791015199105 3.107476764185698 0.25117427906980083 9.520537517725149 1.0070488449784571 3.9798302509891403 6.4616851421333115 1.996564892643728 5.315348362146259 9.073646556614815 4.826484098675773 1.5483948694538308 8.34590138723047 1.4665679918873509 6.294438816757044 5.1100540209468575 6.434068804626369 1.5567823400969574 2.3227214425040223 6.221983647898767 4.553025548673007 9.690120659661508 0.5982172588464376 3.7597490142820744 6.225629879086192 4.40647664821159 5.281544240105791 8.234385769438088 8.646877539064008 0.5336664115972036 5.316087809034178 1.5349774113821275 5.949503670213629 0.21852143322315953 6.76965251975219 7.4516592002477635 4.595222085631737 3.057604577766639 1.7340114819780013 9.598530530591619 2.261634708850559 4.365875719887176 9.876891595620403 6.3100581184402245 1.2496857173274467 0.7591791385340452 7.505338801223631 1.6946061185664973 4.874976523459185 9.173491283255512 0.6193214858112199 0.613495292599195 5.154670226225785 5.548733096569482 1.4694131006764741 4.441151280768949 2.7318146303486577 2.4245318262312865 2.6559717202340183 6.35074221431295 4.113009681660451 7.054015794187787 2.4475078773911823 1.355075454294 2.795794942822725 5.148912367736667 0.13154548150057543 9.968880380787626 8.952500811638894 3.344427740875265 9.013830540856308 0.6628229725670121 0.6135170520198336 1.9197952086966934 9.51750560753688 8.589304559989671 2.569759259098153 3.156645519707036 2.617816105919847 2.968006588196849 3.2306126617315716 7.282880527603645 1.9027089740039567 9.099671263957784 6.979114871059804 8.511892281626793 0.22064879461439446 7.546257695997194 0.34966927852939556 7.401331946894371 2.083832031053917 3.8100302017433636 3.949980763043272 5.774219246586836 2.814540476250588 4.011716190204424 3.415133039715032 7.130401396700274 1.5485583947269612 1.0634783780233645 2.4590746852124745 9.371380492537604 8.725999847421424 6.754628474219849 1.5845203344324879 0.6762445036150151 9.497793981187929 3.2799448756803624 0.9821282622712024 6.832253690641898 5.027282784524672 7.238527383117129 2.2837920226235386 8.691797703165047 0.5177081400919024 6.996574851462285 6.363912403307369 9.166096874306932 2.8854429052992354 1.9678053326946228 3.8241964397426216 2.4209087766639206 7.3476256053423565 0.5708560044460125 8.550425816048037 3.890845139473873 0.7933768133500996 5.160466274342142 5.276377670822288 9.634848232214537 4.14162870894457 1.3187808075148562 7.316463874505475 7.535330504501548 0.21576228797569907 1.0223121334966994 3.4154199667194436 9.183984747723208 7.1403775240272225 2.833705357970601 2.168395425453408 8.449780600890467 1.9596062423916543 6.054560275982264 6.879344723450333 2.8592602162643472 2.697356658463216 7.319036776169445 2.314147527740371 3.2806705085632086 0.5408494061070606 3.4199299547052777 5.803510658408866 4.508249725135567 2.823657779529145 4.4383189994348955 0.5365450123759317 9.69542960793372 3.002783407050367 1.4013514723282654 1.1529561882845485 9.170304115912948 5.8348223402362365 2.168585110436795 8.891791099133387 5.997049253631162 2.910967046851517 3.5115281144765964 1.5008276142065475 9.876329895999826 0.49235853029935495 0.15502512494684773 8.43280098274881 9.524846277170546 5.123088503995232 3.2649965501658142 1.7176182940526905 4.3837073415130625 0.7298501064255483 9.6769931251246 0.8071172236365065 7.775945435703253 1.6842408133983238 7.16586470913977 6.913118870966862 0.8833277642338828 6.721182144822363 2.2993056251549406 5.615386574614185 7.757995460347272 6.982422473568567 0.6227309150324967 8.676058480335879 2.2746541032159358 5.264778535048193 5.342779956639926 0.6806829874708038 9.492426487627073 6.248045659740001 4.599243196600406 1.6525228735065371 4.3001001261291325 6.737892354137239 2.63570036966952 6.2430393472064845 9.159233807821114 0.3003736522165994 0.5231882132993046 4.457343341574851 8.018021604201762 1.1887183262591057 3.0272603810944734 9.354251082452073 7.138532258311411 2.689240539781572 4.833837959958203 2.030720567628909 0.10937996645443526 9.986313507667816 5.043854484985083 2.2954970811366793 7.231175561780384 0.28694977004475586 5.6737116297995 7.88898051337781 3.080965311972183 9.548336973203892 0.11216509392535379 0.5350269631680629 4.370475025223678 9.859446222151035 4.993566573770615 6.80210800258259 1.3518658198886233 1.7787792632888948 3.1360596095179343 4.9517867850376724 9.87632393981943 1.6764067028012137 6.577214218216765 0.5139265118315643 7.0577215502987904 4.597666657424454 1.3982664705366514 4.375713541201715 2.793134955070711 9.911203293027636 1.6542006631391586 5.874658913590167 7.089424247071013 2.808326428280753 2.1815644780713046 1.0142819437813664 7.196651108410826 1.2230157325214273 7.720631812878565 8.664602239875729 0.21539367324798153 7.905815484387757 9.258100402403645 0.16706679985324513 3.8929973835924168 2.1093467658058147 9.047435826970599 6.06182964202292 2.369398825038084 5.457355511399767 7.539766616488286 5.207105252881791 1.645465887709396 5.649716145172649 2.4398339935787563 5.542217620693198 3.4321053947280404 7.448616744577563 0.9033081401729275 1.2096582857332323 4.189966846988528 3.4222184072649613 3.2130682022224804 0.2343158913274097 9.762860273014024 2.367065115649501 3.2421447167154733 4.6162994152787835 1.9503591178917228 3.829702727980842 4.221067748258604 0.292345297299871 4.5610226313376385 7.46313177871358 9.939915731383934 3.758633265413491 0.3696686547761008 0.45546627394050887 7.56211476775634 6.940689290103197 7.523483571799817 0.9674930234713228 6.948639790550489 5.551692214119642 8.208146425233721 0.6757151596075186 8.678941200191375 1.8743232704057173 5.302934868529657 3.1615900437840234 2.2604771975685085 8.830169835169839 3.784844903236917 5.565794886489351 2.6757073510963716 1.5675134824396837 4.014138684483277 3.721707576995647 8.423600276809559 2.150028406828648 5.406504750358058 8.836117699040592 6.046695128245441 1.4930034198199866 0.42869594916205234 9.988629947821291 0.5895755671755349 1.6596208864146886 7.990526785222005 1.0888821950505676 1.0524921110837 3.26531610016602 6.779729789199711 7.075099819927733 0.8763589640209348 9.171331227412757 0.9929986533808979 6.494596500961249 2.91209367543042 4.213432671819681 2.5399919821158963 5.417005487174495 2.6182727402700743 9.913283654992302 0.12731281087671142 0.6779022372392705 9.509441902781706 1.9690871492771165 7.558688428883601 2.2970680997816535 5.240371896487281 0.8662182395849882 8.624793684080894 0.9772519553609307 9.14935719757326 2.1269006275052433 5.182093972114868 2.0616484515396056 7.502042756102058 0.985663697900172 5.647790021541945 9.057511833265309 0.6037056877635658 5.27097754274052 5.44047100543754 1.6907487426280854 0.19729140269274126 8.350348425027995 9.157052847721394 0.22195424460152946 5.759469192267737 8.66554239897885 4.809340042471732 8.058899063875177 0.8922837942471453 0.6583557151044612 1.0526481058454715 9.919963734892654 8.14674616691115 1.376270400063663 6.826534966839602 1.9062560292557476 9.396882563491092 0.7312722459159025 6.713229205660342 2.061760424965005 8.95737816041973 5.723949900030612 7.193501107265125 0.7803782033804749 7.912653089585401 7.276419122965638 0.36506199641503834 8.045122858880815 6.809329933547259 0.9944997491418608 3.652264153981177 3.074923280981584 3.1123648151900536 7.595038458459321 0.6322517333976574 7.034335426260795 4.268310937964896 2.42754478682241 6.953760054219458 6.514014601023871 8.024430896871358 0.387686651371812 1.1021862298371699 5.291360799884741 3.306145755959708 9.295115368986762 0.3892102948714067 6.637703722619382 9.956728223805952 0.7996996054075884 5.077245588327582 2.2411476956892633 2.72312404221695 4.698743910027841 6.563229874221895 0.1638881518770674 9.187616627835114 2.5897273146872704 3.4978342679673418 3.2900885113608296 1.2366203607960182 2.6319372968473322 7.637362887334861 6.498658731241864 8.742912772016812 0.2355155845371808 7.463955536441402 8.750290250568717 0.1682694020025126 1.1629946388334487 3.0511858529414013 9.159144667957245 0.32259045172775824 9.987677357727122 7.154489107617291 0.4948309006739473 9.666726030087268 3.701902196126036 2.590268624071094 2.4280613287300943 8.149821028904947 2.2815174186442784 3.9473982793971425 3.9137956140944254 9.549902893137165 0.3461982867438804 6.9988774130700335 3.4310769693649084 4.3729996873585035 3.013103314783215 5.405494898873264 6.245139910395988 1.6398991963336935 9.654475732125452 2.15666083728584 3.2915810209097294 1.235169558340024 2.6906031036378355 7.808685582005113 9.6672125467605 6.63077191342152 0.678735044488854 6.476408006396705 1.446193862635687 9.13907379910561 0.7069967977602492 8.066315644843577 3.5898521102592005 0.9084016148602592 7.040438305258387 3.0921051810593587 8.819334489635503 8.375142710894613 0.1719955852306434 0.7358460899642303 9.187841978445146 2.5600421265023856 8.704568394728604 2.2985300654658416 3.042871520689891 8.326015906798657 1.9582010448230895 6.440887978857124 8.210618638866725 2.1070505222671314 6.550322515517548 0.5116067501394088 4.783313827643477 7.288697207984211 4.448090357705506 5.810353247067042 2.287558294818168 4.533022682620916 7.0770421478727465 1.5427236360480827 0.27261790228602845 5.082558625711258 7.969577052448778 2.1023932041023836 9.997854231844622 0.33414290616850817 4.778233171191121 2.9462877797652705 1.756029113639618 9.945333084905364 1.7670558913650583 2.9365193696195533 9.274193206598095 2.442506188734552 1.868568272450605 7.56713750588641 6.881524443447479 0.7912020745084618 2.7963128769645262 0.750816225609932 9.376581496565272 7.9900142286997315 2.18701778995735 5.837488747478344 3.9741171952393177 0.16556997530059103 9.902152415912635 0.38713191983688855 8.559932509229968 5.5860564637547485 5.957897523466474 6.617354425384512 1.6051361891802247 9.765791550491887 1.8671690886880197 5.7686044309331574 5.730363085884685 3.169916408257539 1.6910258041324617 2.018285522043771 6.425834724068603 2.7034357841949523 4.510705796689891 3.8481634135353757 2.0657849888586868 8.568360446863426 0.14737610311651927 9.693522440815233 5.869702359596198 2.5169422462738447 5.325876556401112 3.3439169154255453 2.6910865845952845 5.935233826023814 5.346074784709158 7.448210292891183 0.9189536753271126 3.4779817332345946 8.420021854799712 0.6599530548113286 9.982169875486793 0.30834151179491087 3.2660386973330837 1.3458491672053579 2.8252638967650157 6.220041575811347 0.47423408080922247 8.485866553158468 6.44366298266539 0.507073575923469 4.5175184223492435 7.765874415174098 8.573534774855602 2.9378245706641635 1.645068188196762 7.242596074378257 2.053841067688502 8.426653568394634 1.9514202653666537 4.031146506890922 3.109874550919019 1.3074267372157018 2.475702125748084 6.705600184517819 6.213829408740585 4.449164634593568 1.6692728905750602 2.314520298425229 2.6934054865137216 6.296203300623736 1.2321002445374845 8.656728858595418 0.8956008012512697 3.2660660487404245 2.6926283478836126 6.17705528482959 9.896472838322277 2.312026353031868 2.407021128399535 8.515867672456864 0.7365475638971075 6.668084831935839 6.86401973406645 2.869026169255149 3.321895574981322 9.252461957955376 5.915260047061662 1.5089934199720134 2.551757303160093 0.8011976377924892 9.530973716192175 7.4062918385621845 0.26727199065901086 8.02588408272152 8.017647952997976 2.304740960163702 3.865541434221794 0.5326035284396733 8.391775250141922 4.311094004255974 4.492436029306249 4.8850549799937415 2.2292898994123767 5.424712964397555 4.157256297186775 1.7159465827667026 8.875388813280825 0.24883706604569067 8.358389095684604 4.528228591284302 9.2928673626722 0.36108658714478015 1.7502402664162773 8.806848722011049 0.8912875954157871 5.557804605948693 6.830145472469773 1.1908766902147034 0.22895518375536295 5.729079374572979 7.593701102338661 0.6480568868103562 9.12134013866804 3.2916140472846136 1.2242200081176633 1.8752768562699842 9.104017348646657 4.9682015433717055 7.058789610538815 1.610081010605227 9.07151340039482 0.18072457274671727 8.579735522840576 8.010812662043797 2.135961764279278 5.8387557750308785 1.503326135071303 2.7544625199410273 5.818892833117603 1.5120687660207195 7.072190636098895 2.4186624391862797 4.1099507519882055 4.8010109719007765 2.6546980196388197 8.551089181029491 0.2663151823720691 8.046317506394423 6.857039224334769 7.424083456507438 0.23020698893354385 1.1016624801213992 3.1284902654305307 5.536026141207206 6.613011122858853 7.131622863160825 0.4652739201940763 3.195088164751671 2.23773396990442 8.857272590419107 8.837409226686557 9.413862082516744 0.12196068951672867 0.7568856886836892 8.790320176198222 3.0193054019867684 1.4670089428585507 4.022922443964733 3.458877561220172 8.015085569155655 2.785111982383558 2.84628526505462 2.676206741325139 9.694239349184613 0.4461989620458793 6.340632384105267 0.4638092852928226 9.62198001280706 1.7286977323421033 9.116768226229299 0.8126990267454408 5.603992650460915 6.873494412778759 1.1754129729991338 8.830854132068541 2.2810181690219364 4.8636607395982505 2.3409720136530163 2.4726082957169524 8.86409006123759 1.989178811744595 8.771007685391467 0.7224079005123132 3.887264617587734 3.719218608147748 2.7869942045391056 0.6635899391289772 4.71444194900441 5.497629472158763 8.206004791137763 1.6243902799148087 6.77320924457703 1.2149200225167252 2.409113978980834 9.020129662628781 0.47582535830461925 8.396216463145384 5.6273987613565755 1.1450527448894108 3.521107899949678 5.5081115452009515 0.648754582809925 9.768993239481699 1.0338122362466091 0.9144221399827908 7.9621369533269055 1.2464912822461893 9.977536121575985 0.4177540447022192 1.184211048980758 1.2586284796261755 3.044960770824682 7.531409675879733 2.9867438074054062 7.027751650236954 2.6504396226490936 9.673027673555312 1.6946972200052568 6.523009445325706 7.509758436903301 2.1148329450201317 7.860212512433113 2.742994839649879 7.135746835797501 1.82291335218421 8.304444695928703 0.16596096028014085 8.802584802185322 3.050312788458614 2.8551276689407246 4.539025574314646 7.071984062209256 2.590542389392047 5.262096264635235 4.818244078072776 2.6922304731892024 4.12182481251001 0.3799779594014341 2.1776024932571687 9.869444201099558 4.672853744594113 7.341685677667075 1.0618159974719896 5.496580204774295 2.4483196098120694 5.585524747878202 0.7478490289528494 8.012856938867564 4.257487919695556 0.5939639836186457 9.916526375703171 2.339941101169665 2.9708208603832915 2.4498650127323027 7.054701670027502 9.254037058796742 0.19795221140327612 5.674284063913926 7.591623370405665 5.1773880617524 5.6942083862945925 4.130388340838344 8.7361114916825 1.659232766579192 4.696922157855453 1.6295417881755951 6.16848709804902 3.389473399668809 0.494033784406267 7.0451011439541125 2.752237953409142 5.973030601214392 9.481099983102432 9.580891207845625 1.3516682056248341 0.2017230452391603 0.5404637295963388 9.563725631943374 6.400081523123681 3.474474358960165 9.722048626367945 2.5427258781373325 9.175036312761957 4.603909750993808 2.0437020028693835 1.8624901839793866 8.258590529441971 9.692654212271481 4.633693308356146 5.584514730431724 4.2983921614355385 7.938578563367152 4.681947642665344 5.233862740985086 6.64366660371741 6.106252822339593 3.2741172049483556 4.112860355331297 8.976504059584464 3.687091171633706 5.453636854072948 5.452994218166683 5.803485932423148 1.8347130388218704 9.829166819685877 3.391478133816616 2.802530156577129 8.31637883918974 6.544651782301872 5.345500133162248 7.905117786083165 3.968137434455132 7.288231860645634 7.217294549678288 2.37880325816311 4.314095896124861 5.9208995426005915 4.45934040229985 8.117562378935414 7.836388878823814 0.2721286564651244 2.2368655454336817 9.22139038349767 6.555305014854601 2.9945914162193867 1.715591157382724 9.075928006513493 9.187895385836693 5.970649947719799 1.3218916601435957 3.4562939296724027 8.897162817802085 5.359929395073543 3.540337589706838 7.220430195138424 5.725951974181447 9.249820359679829 0.8564872561037742 6.279631079228043 9.350182939786507 8.617408444515291 0.16303944918630542 9.55199830459943 4.112183065703647 2.6787190300945 2.782607991698339 8.207874215803546 7.142939566726083 6.740882292154916 8.503579694277974 2.418024899686692 7.9593822245042265 0.2135256131560359 9.212946024877706 5.740922114437195 1.8020413056137135 6.046446941768854 1.9363888598946826 8.024660202901499 9.579543350038477 3.7411737690659175 9.753512073239198 1.1420370897259646 3.150963413506039 0.41267773321892065 9.902943536814522 5.711052392996161 2.9537973315463857 6.106081363176014 6.929028796911945 7.0005689014565595 2.9621450267061924 1.938550054418982 9.66611455118193 5.702374689945107 9.020229246553553 1.862302506671357 4.430997791113564 1.530203293073038 0.4173980361473273 9.705230892322778 3.3312094322129173 2.6741375218434578 8.637262083354234 0.16179654600839033 9.979535591050409 5.240143475586116 9.022040061390037 1.142248305932676 6.251076984452334 9.349193928018025 4.56497050018864 1.2863154176940008 8.33093008985299 5.357007379179589 3.41948637370241 8.04581296674344 4.241003738667584 3.7576691110170604 6.0727285209164785 7.001207252324374 4.271760656689703 8.45366331364579 3.792403655741923 3.052997315489453 7.994370132788171 2.7144659987102413 5.996749925601005 4.125979365891772 7.839885251221686 5.585579978543236 8.07868290430137 5.358098429722734 3.4306776425057732 8.875489397585739 1.1925616692152246 5.087513637644591 9.076220576215121 6.516300354401185 0.1737155014704248 0.8744298738251501 8.820679406232824 8.053999964893796 6.077169224509776 6.119963221221688 3.2984204125004863 8.227305864793554 9.832200640738524 0.17580850879331233 8.433853864409926 1.6939618138233108 5.028423517541593 6.021705293415977 7.760048722152144 3.2950378391065254 1.009590504355633 9.238461589438018 6.036511977549296 9.679813542503354 1.053430887172797 3.190105107598962 8.202409899735919 7.350841728388527 1.274903477478051 0.5877682398394137 9.895012396258538 2.3193924470733362 7.029040623917021 7.399158358259396 2.1573307600587905 8.996229686645378 2.4796393569162203 4.733890212602888 7.942617335424902 8.508018657578626 1.830505161029404 3.628497274657361 8.788831612849336 5.5050746031466575 3.135928080274241 5.793393341485269 6.297601682238188 8.293614481376395 6.673067275952331 0.9323412764310692 6.391980285672932 0.9858700989130575 6.906235801488216 1.9645552197737977 9.229088772013572 7.934780262872758 0.22516974298636594 0.6861005576644326 9.94841514779218 6.255046174769533 3.846070293266342 5.902730723715557 7.064823735299246 9.484188449344176 0.7003322283621713 8.208016055416785 3.7096931428554685 3.72480595944794 3.849593247193748 4.5338850264399975 5.990284489477119 1.4902036761958621 3.9100962636433763 9.83828906262952 3.285463500403674 4.478624197870638 8.267693354868724 4.503604374652171 1.8814117197718958 6.179880448251469 5.472689163061485 0.11404718699959204 9.911744770678165 6.142031657903463 5.793773767152748 4.283241309652394 7.416980248076603 8.78882344154148 0.6311995593787163 7.089374993331585 2.392781332494407 6.0233296341666325 3.9825733417488105 8.981264843333342 2.9115682061672135 5.357081762283826 9.097869715315259 0.9457694828267602 8.651208793232499 5.71033038591508 2.0746805212285087 0.7788830384446497 9.83720159639772 1.68646775871433 9.792171491901897 0.966143542927723 0.7896752339414492 5.627342325164317 0.33118849778109816 8.260607364962485 8.886205372874674 6.33845120733335 0.30560122163863834 4.385430028390938 3.222425368538225 6.849899179325416 2.349813755997413 7.579707379203687 8.666525721949647 6.8356722062653095 8.91677553329309 0.9433111777047882 3.891365740527717 9.124113904678754 0.9627071518480559 8.037534632041941 8.806117965061246 0.5093396858916011 4.57857174468892 1.8077968636895054 6.472046667063154 9.389180959467586 4.053521792894117 2.973326833388611 6.283476100241177 0.19176114451646775 9.57003047478386 1.2080572948693429 8.427044594864604 8.505164374796479 3.073663788550455 0.8643895377671313 9.244471435387263 2.510052973977302 9.985401509035238 0.49340653453101524 7.155725194841094 0.7770267408869751 6.859988467164801 6.190062116817586 4.3903829335329085 6.004736988329034 7.036386712660637 5.72552053834673 3.3287225839865213 9.464872713064512 4.425974317681038 1.9498937313677493 4.331585784205605 8.154086495401359 4.106658125216295 0.3536088469912313 9.765130792491867 5.751484962413433 2.427858092514299 6.360404074753263 9.16797844644589 7.5937264668158555 6.003273026494606 2.85054076693499 3.2193309230658524 3.203952219722315 8.318849529202295 3.13133594586545 7.683643176577437 7.559557865259601 9.745976686756121 1.0336165628124991 3.2807226320567358 9.736259450434302 0.17245732290261806 4.279917240056656 1.553397980309882 9.830587317999589 4.4516585730718585 2.552146089147344 1.6021485584909438 9.551269744336901 2.719565791466638 7.310746259419421 7.749041956639626 4.004457777634835 9.199882302607847 0.753078281041951 1.4724804667342637 9.782323650650756 4.881939747820594 1.0636469028921902 3.731090068603188 9.888257158766095 7.313439381882418 7.01627931840864 1.907755854948832 8.294991294887147 5.801165649795711 2.4677321709035267 2.988001552628819 4.177250899730075 8.94646827734459 6.586915132668082 1.704679490219494 6.024033129605007 9.724809345946369 1.1310311885972109 0.14366676499919606 8.286936522097545 0.22481046821335493 7.703993096168617 7.029323567841044 5.2324911875376685 3.511238430664231 8.38515730906165 6.3341220184658 1.1885933501968604 4.6022972949436625 8.043202617669758 2.81050560198736 2.075411504070603 7.899161170038665 8.603286686552057 3.5178344671073916 9.671851392467937 1.6312711365710175 8.088122567403625 8.379169748078372 0.3311745270344364 9.408964202892726 1.158032610408969 3.6613868948098705 3.596074347977078 4.533296381096192 5.999357255094069 0.3557848351555366 4.854552520416806 9.719343098269157 5.886748228719632 1.553811609839045 6.135941103865845 3.131713202125791 6.014011010146702 7.409108653189406 7.838183261148674 5.7789857421836315 2.560432205607749 2.296515362091948 9.035858780235484 6.956413924439441 2.6214664469639457 8.382212835324978 6.335094959611328 2.310904643372843 8.082104467165681 7.346378039102158 7.5753833443684 9.716093840512002 0.2229040064320209 9.186924385520845 3.463879150760797 3.991056687534101 3.8859124839622323 8.485199004559592 4.401025528402772 4.14102485505655 3.4038438074183284 6.990263662892455 4.838990570020161 0.26474642495502376 9.324271236214384 4.295531046564116 7.3399967662966805 5.413604556574394 2.9693350423172427 9.302431508561696 4.72917803488187 8.090297873281012 6.084925545178104 1.9260975436717493 2.1593691268026287 4.776351871044922 9.523049993201404 6.6600605223351295 7.681552133134462 2.943240905365264 2.5829485336860984 6.1015168337271355 9.037643442276782 7.242717652836051 6.748778795124679 2.8163665295965887 9.223723097116157 5.279989324354099 0.5757096460614601 3.2197547500184163 0.6126935847249557 8.964354532634456 2.072788341371991 7.650921585713728 9.63286727438282 9.407678760508468 6.023325199301663 0.34818618269594914 0.8116680013159447 9.926973184192779 0.582809530648591 3.2043511017119393 0.16864218651751095 9.608438148013885 9.565089567288545 2.0608647482029308 3.2787407268604123 0.44950280275649845 9.883942233383177 5.400359048636248 2.6786889195741823 6.2913435368662105 7.92728186279472 8.96730093337067 9.06717960378555 0.2704720085068768 0.6632836845035852 8.490666374783187 8.942542167914226 2.641680690574385 9.490724389217963 4.191018156623705 3.135216300581865 5.207249157795974 8.546987209840907 6.634507835373401 7.7035852937385405 2.6040083221052788 0.5117736130863824 9.640987671187844 9.01833970133875 1.2484510638281816 8.793973211814643 8.234795487342588 8.719878728773882 2.4924348297860552 4.253146435833337 5.775188047910386 7.822190001693599 2.7327713602648047 8.996975742035307 3.5206248338964357 3.5672483042388334 9.161214959274794 5.7082886008215805 2.8185011863867984 3.198470051248667 9.167404580911949 3.117480088483421 6.108797086393181 8.924399833747746 0.9808980298067667 0.3258610055958524 9.246449647936142 9.892234693267902 3.274487714405285 5.795307068700275 5.72658010688065 7.051574299601273 7.406671676448703 1.9089436565430233 9.5156504832361 3.252973739570699 3.1901251105917905 3.2901657250337686 4.56931907199773 7.557616044419728 3.492824703045847 5.114397701496351 6.064229966586975 3.896271713088795 0.49212402413648615 8.39600914012315 7.97444327949184 4.235823438359849 5.277811519831375 9.39939673546455 4.503252913908393 0.5989293750722258 3.729946984462427 8.471649630000268 4.999972305179101 6.321903923985526 5.275436202465891 4.593099092259793 8.291823411370121 7.285412298430552 0.7223027407360032 4.475500303419656 3.1368484738019404 6.272103562094761 7.5722613515617 6.080087716022993 3.1835948664307576 4.268751379525929 8.495283504865432 4.391922958833613 7.99397145825065 4.826805490389654 4.537902417100943 6.943999568744097 9.774511691328257 0.2592708119678475 7.855490077358086 4.385005526066526 5.372601413196558 2.130853982311872 8.032318495535831 8.1645267783698 5.528771808528987 8.919507264897579 1.0310103189854436 8.53974815946765 6.656027826318989 0.4648592165240215 3.170898795388848 1.7679619637825432 8.717657200262803 8.555191728473918 3.58202306379844 3.4943669711342933 7.6728477356077285 3.5011553963532567 5.56228958212591 8.112402330563032 4.195499437848455 4.307757439128532 4.276028531935538 4.117713044972092 6.579108394223523 4.2201404719311135 8.605870315794803 3.9779905542097964 6.846754309161742 0.8763613750753834 6.977488167660192 6.442371307497931 5.2522695143479545 5.180243658397869 8.809754561250973 6.031567347441234 1.6202621259657342 2.371409584516987 7.753064907016946 7.979911714636234 7.308188220546159 9.263120028752162 0.6835513723859448 2.831103021158162 5.896543390966612 7.778159613494799 8.230530410395128 5.781678092463798 2.5462885937179176 3.246064485026538 6.489745374126301 5.86322388165007 3.4865026393757437 9.81386989626658 0.527389072295601 2.6461019144151594 6.338756468493667 8.100731379480738 1.0520798553484672 9.758698532569385 5.468740434436765 6.410424423464672 8.731165280328403 1.0412353058558033 2.0311381180028283 8.145858889654246 9.01123496467742 6.833929046169838 7.002985455690181 3.2004109408590966 6.016925889688293 0.9441156216417701 6.9368536712804 9.895125072716066 0.4074437350866944 1.2796046441024176 8.628358582518613 3.998501050949213 2.978718451324086 8.097314735536305 2.6199121466534936 4.841118858030792 7.7574706641508895 0.8989334178736739 6.4752633456199575 6.6814462664144685 7.545520157668628 3.1371795489190095 3.3241272893906864 0.4848015480522996 9.403108131967743 9.576086840714815 0.19600814777566278 5.193364464571552 2.5978126036813043 7.021868552912927 8.91598866976937 7.419253593513103 1.0131298147288916 6.815671177316846 0.34639188335193083 5.494970268114695 9.805995249528436 6.960286114763069 7.509763265927267 2.890871728616969 4.137102475154005 0.43064258289072654 8.845127562874726 9.85626097489294 0.8573555445781338 1.5267122867695777 3.3727072359115597 0.8695044330366661 8.198786036495303 2.9029721032485765 9.710331484922285 3.7157601925697548 8.735900568213756 1.4009260779598085 5.4651142315974255 1.9311771951339152 1.232063640766326 9.666323939505109 3.167846312866976 1.7594004938400811 8.762551626472863 3.6930511115219096 9.800623830512777 1.628684190399638 2.7622234229958202 2.096577669318434 9.499378048570216 3.8496470648794543 7.842910255559932 5.174181352421684 7.1258086722055 0.12290383132009364 9.250814979570176 0.10754985165725195 9.217524792455958 9.925768986967338 3.272377479337709 5.36232889443923 6.8492757258236585 9.123907577426618 0.3177813408588479 6.598224722931214 8.423398031753813 6.764571383854973 0.5886607010938834 4.537335828525791 8.660614205992458 3.0059770676437707 2.934524878995615 9.12706436686615 6.139446325248444 8.123938834242043 2.1720379916536707 5.585649689365097 0.7415418672588512 8.30876965277334 8.607360796923135 2.2450403039099274 8.065106625509241 7.495873501651426 8.41336951585565 4.2135785152585195 2.974741511518308 9.365263022742063 0.5639059302429441 3.7369176632694243 1.871313649793461 4.722750350430783 3.9318705701226997 5.099915862001924 6.67669172236386 1.4529916208942861 6.33664187923694 1.841498225482995 5.428230434674358 5.843478452133359 7.385438361259977 0.68195164928491 0.7106904663286846 9.407474392526195 1.5312782384178778 4.602160738443993 4.438407344065701 2.979608856497707 1.7593482112999417 3.185292218796744 6.978484212054983 2.633929837421497 9.24536108681824 0.923359006031732 1.314782145168814 7.861250754890789 3.4373443740157743 3.054990503775186 8.81455801098248 2.187221971232728 1.625765194086303 0.18200521146226745 8.224490576091803 9.33369616560724 3.162840652655074 3.461509812625942 0.5081933355327211 7.075443519657814 6.812827513777378 9.641827407337686 5.623264427639838 0.23704400865525077 1.7811885728340564 9.410099579035329 0.6820376082165254 4.7059258257867596 3.5893490412131297 4.022785500221137 4.162603796974896 2.6999240096309043 4.9786327998686195 3.8222923659655015 4.923589039960315 3.680646851828938 2.8707901414066526 1.0688621865396528 6.82590383530499 8.859985291750633 6.557778563096137 1.3410314171088462 0.8328205023852222 9.845370659161212 0.29148702876211274 1.7537520478953956 8.045163660099535 3.1433966372146727 0.567590855857727 4.214343965115106 8.61661151956455 3.8864189897981514 5.392235173550954 2.7327386151027717 8.75007410161199 4.788171256412326 2.6462142612543453 0.40401315266592697 9.189645804450766 8.685505360466312 0.6104823297030482 1.5250501966511476 9.55827415946598 7.0893355359414905 6.639709422571983 1.457488998097248 5.90579589769612 3.1955003144558285 4.048806849145052 2.362919501148378 1.113009476303823 7.759753430217913 3.5124660838075132 8.033443943942768 1.882372407413174 0.23045374168559274 9.823474698158325 2.6140846257480055 7.614610351986394 0.9508966638708705 5.518129206744053 9.348671222477842 1.7218398682940372 2.9801905729412543 8.181310326613325 5.580603954016837 1.5766895292388945 7.667357681649122 9.09663064308619 0.5704894872895645 6.806222370186872 1.0234623770400555 7.276406415371785 1.2922451295056945 9.650027532596148 1.4132336442273186 0.55730496335479 6.9502023059642415 4.010641671288908 3.4174099971231557 8.441210065291079 1.768257327172499 3.422507095307229 3.247692843432932 4.02382413683781 2.142266925212989 9.380504667090836 3.117598343097511 9.230092310039348 0.7493919032624436 5.3477745204693115 7.910709141208955 3.4221536545483753 2.81406527954714 5.681993412815964 6.670146214338054 2.72400699755503 1.471048844377754 1.505571354612608 9.589773781374046 5.990502192019601 2.093822892090264 4.1971502932829665 5.955635338953146 3.7302242557239307 3.571702303206944 8.136400913141296 2.2148861448897246 3.8728575115610977 1.7127940092149174 4.911731651672565 7.447695996076264 4.218780356009672 5.177163617016553 3.585505181931775 8.310549335964152 5.415203749520053 2.096051895792142 1.4530059581396646 9.797710433101214 1.3014720159004138 7.984102710437519 3.0931857183909006 3.9332513690188646 0.3628600237222521 3.9241066843676626 9.911157194865206 6.943141122719538 1.4515832907989576 5.911953214430705 9.175454026792536 0.15483219449055152 5.380237840379178 6.543671637958305 0.142205795085105 7.293545485810271 9.133570274590415 3.3478303725826155 0.2401559561700921 7.7142736202721185 9.859993374769108 0.17454394992081035 0.5559378125020151 9.081670296874751 5.08682247408126 0.4206990785595721 8.684712704418859 6.719078059557145 2.9996118401059904 2.721135240390695 4.449184388643872 0.4153631845641321 6.671709282957416 7.071682514441591 0.5079149209796245 4.502134343691202 9.00911057907136 4.905636236340654 0.9485995605584696 7.594998980324016 3.7752875779115795 1.0120965119363028 7.920927222229291 8.104936604191302 0.5028234654927672 6.826901444810653 5.384444254481803 1.064347314209292 6.432819583379389 0.8973228496376704 4.144012833804361 7.707748553193582 5.3305818997278305 3.1652212784893856 4.245225849979376 6.242619611670407 3.5703569002496907 3.441200675813295 6.775947298860631 1.7676144953392474 4.85225477861293 7.743996659245807 7.00075256110885 0.599671297555247 8.976838993310658 0.7460080321403231 6.44042020663396 5.839562355724527 1.9791488275465432 5.347429188782682 0.1257051285299715 4.173390896065019 9.66545679893239 8.7736784837031 4.091525934902375 1.4213805672413153 0.5534106471118072 4.817504437562894 8.31612295393509 3.2753491569602273 7.572705935249735 3.7294931046151305 6.854955547746494 1.3831880195376431 6.208878631135187 7.897162062452911 5.59895491354376 2.7143672146285804 7.932334690699897 2.1516982072502597 4.122272627840813 8.582763318562126 1.7097709457063508 3.6487625699254593 3.9587073233697345 2.394882342858445 5.619546641611854 9.618881047183853 3.1325509490404624 1.444139830953008 9.048223455762077 0.13427310555341432 7.490784551724975 2.1204079344799758 1.4077070095477873 7.644856930918726 3.1661182944700395 1.8899058692017348 6.528485712939521 4.908237114073298 1.8269116872169335 6.619268171039705 7.726687948307182 1.706880852081086 4.480733372627462 9.066426617190341 5.8912218964521825 0.11601037540612946 1.0781500477176502 2.7077947355242897 7.604579109245581 3.924545459396798 7.893965707287185 0.8527981053811491 6.979084105912849 4.575530503766036 2.8742288928302533 0.5621224253233805 4.195517700548637 8.628398558538965 3.245984717387702 7.704348807375494 2.6524252089677436 2.651130765467214 2.9729880064779395 5.5368754731693475 3.8342224293351688 6.9671817443140736 2.480246691389532 1.1559358458979831 5.728246866976434 7.23475491962972 1.4586645554072835 5.834964350421206 5.791043312531207 3.0700339161139056 7.614734011880293 3.502519405459174 3.352239548066221 8.562831387299306 2.481812585967549 2.85623747315403 3.7097863326454035 4.1725923368527065 3.8352915890713435 7.428393273958562 1.0126879809337401 0.6784357325938606 4.728063376289342 7.690379358441657 9.672639129595513 1.3280064169266272 1.1858469309834403 9.341833181630781 3.274269179749365 3.0328358131188047 1.5103401229624493 5.805765351596234 4.3940199261866555 9.383279735439755 0.24943176438087367 5.286039229304539 5.459497417488484 0.58754830833933 7.399557675898437 4.372829378401588 2.538380431939936 4.540858457444901 3.936110736682571 9.715086107343687 0.5915230583729034 8.701629907137628 8.554364582361739 0.16718815011372445 1.178779381264182 6.7890986558140956 3.9992345923672508 0.5159750621686623 1.6150563021341933 8.785256217335178 9.96819669011007 0.6647742877981564 1.4516071431808184 7.1825718020630465 6.597201963315532 2.0120763030979023 3.235579242577212 2.412706076694351 5.778772617417568 2.1670206749385734 8.854989418667971 1.7785538458331844 5.514906463670755 1.6660832061469746 6.193951050830993 6.53433597981565 6.744444984685267 0.8544962160998244 6.5324678413529105 4.3522066546842 2.936523585507302 1.040792132842073 3.031074265851889 8.557618938830593 2.641711849880337 8.838760694160303 2.2728419952613397 2.551720017102016 8.150204275921034 2.6124149659328193 7.7389253173929 8.672866557730098 0.373668266791773 5.59069603554455 7.71336030777622 0.80867959613881 4.014340427043926 4.192816789411664 3.684820170405977 2.3052260546375125 5.109243097589175 3.841158143242625 8.74801754131867 0.8934508137506079 5.094514477682419 0.11921557725155996 7.643273114783986 9.097311858168643 5.137101623901888 6.9290790210662125 1.393819458094383 3.4967015449066414 8.725095390825322 1.5582425009478444 0.4556385536924088 8.96625870322256 5.532962294920106 3.9446645101519913 4.074228537018464 4.022880345017854 9.548907694685951 3.2411823348820166 1.9711324979367504 8.532033285424587 4.602655013825896 2.6657305138222243 0.9751618961629367 5.773496656334841 6.54973804457107 2.4890596808723777 4.474564240343069 5.2585414091843505 5.639571197933883 4.202770101617269 3.4047270969847974 0.48444087413010184 5.4009135565839035 9.063501593240886 6.63643466664628 1.7688051044519066 5.415213963078617 3.709887516256395 7.295908671837744 1.6377968075656786 3.5121937937015186 8.316523758314206 2.1572598114393786 5.970881565688384 7.698215119435503 0.6785000773213099 9.094643583857604 3.415783438940016 1.0852067799622205 3.492278025262588 8.427017764392545 1.6648761414724573 9.1635048340339 1.5298004625783763 3.724217758973645 3.291273203478491 6.336854950987467 3.524593238200665 3.802473318612313 0.2870527769292357 7.9636481727505215 7.893872888606012 1.6589166718090222 4.232358501870734 9.75416381629281 1.808838787269508 1.0958415838530846 8.917554283134535 8.087845462103804 0.48898818044433945 5.837914741152877 4.117757923777159 3.9482656458621532 9.737005003329134 1.0287144649957103 4.776415270712789 1.6648256614605952 5.554399436410609 5.336088130340466 7.67916735825808 0.8494884928920046 5.414424139904888 4.086439402945442 9.119559379031314 0.43168062020132325 1.920167419260872 3.7670857792061483 5.3743963095416305 5.1047475275245375 1.6611944129250928 6.468443074198078 3.0876062502706434 7.058421804874302 3.7460177295832002 9.002300652594375 0.4220833165506086 5.934311973416319 8.929587489385062 0.8128060443705891 4.993662935272712 0.6228307663399795 6.505218009477299 5.4013947048577 6.560386344373782 3.372568655601369 3.018104429489026 6.928159607173447 1.7837621245146171 4.80499763429514 6.939491180444484 2.3088892323567736 4.059500078463344 0.9568255112988 6.452378831548239 5.692300463128439 8.179208788398935 8.587123652905488 0.2625077447650268 0.40181982842083475 7.799735097878085 8.891430810150093 2.877079169481778 3.2648584124201108 4.559981851049229 1.4078539271275168 5.97119649642175 4.864106328276476 8.379621786211995 5.3008593102337 1.5150001126492856 1.2775991492968979 7.487229486516963 3.7511452978712376 2.718906879790338 2.058716033075171 6.9904876558437214 7.326986769511594 0.8621313985698222 7.114359630333343 4.6416223075454175 1.5499560802243542 6.6379023464834095 0.38022428802918196 8.253096960322722 8.798823543416528 1.1324938296532472 8.443499338439084 3.905917028071339 9.058996436584042 1.0701302720979156 4.585125829706696 8.776257021149215 0.1432331831877196 7.1535534871051905 4.924272304208547 6.928644358198774 1.8351296602713707 9.415375576998429 0.13710642414798624 6.006859502256116 2.5194648269725644 4.085542126497147 4.491528951898573 8.398689100902688 5.291837298926394 1.77934814305728 1.331708478085163 5.043740460088881 6.8724587058467925 0.6565074390281236 6.472300865040697 8.074015877378176 1.306544401928909 6.227949527832202 5.889900855286955 7.745662564177919 6.165855505879935 2.324122922069887 8.61957853642981 1.475382302148589 4.448380004637498 9.075135643204007 1.2620999047560844 4.418618845187272 2.9859668554821903 2.581930612314476 5.906290138502673 7.947166266780618 5.655483299821029 1.3781450778777113 3.6638976899240854 7.519000015516998 1.1780597806275024 8.245442369555924 5.485964776909902 1.878206925915602 9.92139383823876 2.146955750742218 0.7273153459833264 9.924532736086878 1.3200397213851192 0.1724378777254456 3.239671617953496 1.9352642320760673 6.007780068660569 1.5330974481494852 6.928054117778794 3.907387402480791 1.1188242596501534 8.767324530034635 3.220084857025669 1.4547934323094767 8.13767152270015 3.11791499107329 7.9806922623959125 8.334339362332676 0.5167524174709692 3.335310389191217 5.043266759345602 3.925042302574739 2.1605444443902333 1.8590218314456335 7.539810872937043 8.761217190816817 1.5543362124134634 3.6995372375355884 7.803872829199273 0.848905746103009 5.940396794860809 0.7109450676853166 3.7126156105340025 8.73229153549352 0.8755398762704658 5.943917745722905 6.80549495552096 0.9511821202703707 3.0334556707841003 8.376341242372604 7.657538736170982 0.19813872467450278 7.037666597633545 0.27908543598118296 4.774573098338342 9.231622301573312 0.19266596300123773 9.473070448013738 5.949172461405204 0.7215130028481385 6.278104957828322 6.512877576789557 2.290663315737774 2.881603450917546 6.899642784625675 3.333434279957654 6.77290368145865 2.904738938239109 0.6048370208951726 9.114599763966305 3.7873064100363534 4.709953642068419 1.0284059837177404 7.324261568038319 1.2886088191388656 0.9395904689071672 9.835526764110085 9.86878794942023 5.832468867577256 0.18774536967690647 0.4304666704219917 9.204073215428291 6.274926533439412 0.2695548466219453 9.222506586455857 7.080560164440088 9.120364825653464 4.961700254914281 0.9282361865458624 3.796206898206427 7.220529308838428 1.476557170256636 7.5964316145857875 2.068933302727279 4.564361552198967 9.355312356703289 2.5183872147156823 2.7943435571958175 9.843625507525548 2.715057599094011 0.23193193012427749 6.272289983165052 9.818820113751297 0.3212265232976579 5.031214972301669 7.953860981274364 0.6808988413845416 6.355888414104909 8.405376653688815 0.5935854941707994 4.294739589128815 7.297806886245452 1.4168853867256277 0.12292072483639238 9.662808578324693 3.599839785753246 8.715037253071795 3.3196723638031798 2.952889611037189 7.446922314981213 1.5058731328826096 5.382582551644319 9.324506507645014 0.4264653757392578 4.830770158250996 0.8387126284858004 6.16253634598398 6.235730101956458 0.8410419698550928 3.481927345467714 8.70503975817818 8.702012199874039 7.10658653370491 0.5185873336318378 0.15584258535081563 9.98773439553048 2.5800737269758414 1.4856178690762296 1.0800429997569978 9.30433235761112 9.836815246820173 3.2818773796157625 0.7008476753837538 5.533365378967338 2.4643491272847977 4.9320302937137965 6.324650177237263 3.4672526193124362 3.8424117440340133 2.7701783513930107 3.1588450882604446 4.806006704377012 4.507841277298946 8.843656561498916 0.5950633760413764 2.640572025042626 3.0374317093257397 6.193441919573453 1.338042935865941 6.24860584957027 4.012741247928408 6.1505105457735505 4.437406145638648 3.190889857416248 1.914487597338037 4.40505258402672 5.8830577526085674 7.436199214865034 9.687881126612863 0.23034678168602873 7.355687901728248 9.561655757835055 5.691080716215326 8.648198573314165 1.2796376266818577 2.0682097259252816 3.0986695787517045 2.0252340196108523 9.120657432235465 2.818993928928159 7.926956218312717 7.082389271942057 3.2582414117893763 1.2466666207641048 9.411732505998046 6.242722369612363 2.506472021051792 6.893393331496835 0.4874365539610004 7.1291180150069104 9.938474734497367 4.2378437798209125 9.723044912790192 4.781398353220754 8.175531695253571 6.376596437517227 0.9210239021040083 1.6334846989213214 5.28517021013777 7.6082503522416225 9.197976115124295 2.743544018383497 1.0639963513505633 3.2664947415973278 4.233510730039214 7.1436339181367385 7.900956716400328 8.15869179379863 0.46539527736962594 9.260271125894569 3.4247046146948597 0.3874179271369744 0.38851608176215446 8.794503351055203 6.018507483780502 9.299015240336074 1.3518252929676846 1.8288051463614226 9.297928039181961 0.17657835663449362 4.727617649309714 8.323531485761873 4.6444510137882205 5.484816273659192 3.801004124374828 0.47033993052792233 7.235566267111704 7.692902492345986 5.558222969995864 2.336630834053883 4.208832024959575 8.469787673610213 6.549222477688273 9.942217011398686 8.80724192211806 0.3863834003769746 5.696989934064213 5.753581869835868 5.857590512863265 7.583265590768602 9.061746795082406 3.482323466039338 6.652613625699331 3.988119585262173 6.544152629490512 9.980765443185987 0.15506554122666483 5.838250009107462 3.8232291966148715 6.685136219285227 6.96441697941963 9.693006634210004 0.2465369454576951 1.9177386115230006 3.075910427986157 3.2329051711323915 8.583563979955754 2.1679853479652627 7.318532337939491 7.383837852145973 2.8515689318304807 3.4359260032386345 9.671844984502961 5.149036011495403 5.427482878714214 6.98425523222756 4.385237093324595 9.633731499100973 0.7274345802323499 4.099443828489036 5.243439257935025 7.032580842469488 1.7377512855892419 5.013267016146161 8.965915655814092 9.379583379214067 0.4554797283619356 4.495416592793869 6.922913941012908 0.31074382789915944 7.930142371444996 8.708253424069438 5.2695139197445275 0.8117713539539295 8.129478775821505 4.767333718346742 5.421633964886803 1.5823307212750262 9.920609669287366 1.8636286626834484 3.5943170626983783 7.220603403814743 7.0891097704272505 0.6503436820582351 6.175560723809888 7.9731946183655396 7.691083420915781 9.242447917603993 0.8448753989056854 8.636272396213904 2.147641193237537 4.5970392508076126 8.519362624960337 5.036574640308174 2.9607462371026037 8.47352097475052 0.6709702413345147 4.912065875451561 7.836459347998365 2.0476891769789365 5.541164974144466 8.739060580075964 5.07892314976289 1.8425952483416985 3.0374221642239534 3.339014467245204 7.624949631135666 5.997173775603803 0.3934109533306698 6.995433774996883 5.524145721125916 7.239743485788289 6.012805070323592 3.5388707258479832 1.7467810302499633 7.977995687007903 4.376853444410221 2.84861195334201 7.142819760831264 4.851772514707822 8.705996455824002 6.502047595044609 1.0243128269385338 0.4592140391024788 9.82414454256048 9.725379318295833 0.6793683081700852 0.9553830922128119 7.741294079271912 6.082334224072363 1.9579910318385787 5.973627187363716 4.649483734974517 6.551415188797147 0.9967241681522507 1.9779115578457502 9.726860116020976 0.28919428424890903 9.757083741530563 5.217471120475668 1.380521591550326 8.357192431275545 7.251311517576992 0.7703154717153664 8.107978861629492 7.705255018094381 0.24329649519484864 6.837778737160326 9.964663156125383 5.869980882485392 0.3576817794953655 9.475951658078923 8.97295178114971 3.372500419994467 1.613640738875521 0.6197827809187073 9.792859239420588 4.962994484047637 3.3295631960452443 3.3285693967432177 7.939176246707602 2.8866509588287794 3.7529191378278 8.013050447884726 9.68450306184462 0.6900225572381213 4.112731354698243 5.784562607932501 3.923691881581603 7.132366263163827 3.580807548908239 7.345911092077362 6.7021906630956085 9.684550593731586 9.482740009537139 0.25730721326714967 9.87241206160337 0.48496613363618124 0.5518159489617247 1.755447918131353 9.880277545873607 1.0365820698874488 2.2854536655674345 4.428552917362785 8.870393110769893 2.8961336221420515 5.5333184556065405 7.347314978087628 3.381995825476943 0.9275633248681112 9.443028917045572 2.9745221378338806 9.70960607793173 5.624234395305215 3.753728618240852 8.914088733509203 5.786325229340308 6.732933389088822 1.185973859400482 6.7288611941921666 7.443822441178798 8.045145978265243 4.095656126492111 8.72982219391964 1.0613764525650473 1.9202038755105346 2.391981374132908 3.766132119581134 7.401685403788389 6.941587566931636 4.9995502162141605 6.210101826363267 5.687296469448436 0.43555295343640044 8.410594680314091 0.12936006348565154 8.57293308538453 9.924497738917008 2.783683725361173 5.682731829358435 7.141841363695413 7.978921135451859 5.2002423961531 1.6279841432762292 2.5235458570238074 5.934182848312004 7.106568927936388 8.55089860400206 5.174491557857136 2.113850131459499 7.371175611932104 9.047015999233587 5.326218047918802 8.21158688928969 1.9769386074801294 6.003027437779361 0.8136359426806763 8.006564079843592 7.733286216012967 9.33600351244351 0.9397065360540768 2.8748251654963997 7.168002712823917 3.8975725507241608 6.000568959780636 8.869818959413054 4.091721850363938 0.9607635330899527 3.5345684665684978 0.44012962113836007 8.381352307864315 3.084723140866198 2.134470750690547 9.12708991344019 2.098746267577807 9.755372902472823 4.9760850736699265 2.5551885655627555 8.229111516377682 6.8612641316399126 1.0757891229181054 5.924604842316966 7.936774449233612 8.90717248552413 3.697083016915033 0.7795052287935986 8.598994297382653 4.247230369760009 1.9358517733136775 2.2896110702631085 3.974164344492406 7.3580795893697255 9.951241424540347 3.9085101217400537 0.29621544076274464 7.818568614048084 5.394436943401685 4.771019231742485 8.668191391769376 9.649262661300428 0.1691179617818248 8.755026847707347 2.1105130661419853 1.7005047240877764 4.4407692438901325 1.1662771834331274 7.195471461989328 5.651095339772547 6.065615580676965 6.941271050342189 2.2770099915394115 5.044489982233962 8.913125012457167 3.619904361891072 9.465059191760389 5.9928063095181265 3.7409379605648425 1.0661997715980274 8.214427109124237 6.083360876872521 9.210194543832959 5.772185614361005 0.36402878351836154 8.950508026732251 9.868895741533231 7.311468446292325 9.56324613176129 5.143883629630758 0.8017911674808218 8.659651900224773 7.513196884063817 3.019332760309179 4.28480330874091 7.096293730741901 6.286515308133446 5.610766657758683 6.466973737049143 8.452188472101042 3.167898772893915 3.852103463747097 4.176785335719302 6.229582784413263 6.728849238035933 9.967436060057356 6.731588947326315 0.2834590795294982 6.264104301183043 0.2839320472753446 8.094462098540845 2.2851097768254363 9.732063812315944 1.9000858066952984 1.131565765007763 8.41067971262631 7.54886687872905 7.807693105786502 3.333967906698577 6.403430521547196 7.626293372171068 7.423070454055693 1.4565086601317176 9.119041894369069 0.733804613743863 4.714599296814901 7.516074452192074 4.981491072646223 5.861219645387311 6.542228442079441 6.95040225060666 5.733922636668179 9.05608857583862 6.318712282592596 0.7694077489011466 8.560137195305465 9.68036762632671 0.4107810654818964 8.904827783479082 0.13408146591020742 7.969322948977194 0.8546528309128831 4.083781789367502 9.255284157117195 3.1113276583983858 1.8555926965795435 8.138021540499297 5.296411979698206 6.090749424146662 6.461526770892442 8.349488974013248 0.24887082311298414 8.288276561265409 7.945099472183525 5.084648717179579 4.712679701010389 0.8385781119318159 5.542442648599959 7.974833473848373 6.762763579379014 5.618551758948842 6.367192654408792 0.8441338867168247 3.171003282098333 9.730994876167038 2.4961220535091404 5.951755954651571 7.311081250771201 7.465585967063808 6.796783612958803 5.407204834361841 9.555170141231542 2.0087429765282994 1.408263038810869 5.504671205616247 9.759563794548056 0.5433952721518915 1.3981709457580394 9.922249771787843 4.138139028029548 3.385885098328787 9.788914493876256 1.7249675683386076 7.453384040017468 2.010465771742273 6.552576798410755 0.7693667033499487 5.697985284646969 8.26652720896912 8.367107120509518 6.014755233043049 1.0160751920347275 0.9106676026621523 3.152710139472668 9.738441088210894 5.134813009990569 6.4940731845898725 6.513255609842775 1.4947784629987497 4.938964029911198 9.133969421657728 1.5851334268541848 9.865423106266052 2.6919477298022123 0.8659803289025971 3.8578509795963414 9.367018595388396 1.7241289339899382 9.913675949225127 1.282910211275543 7.582432207263175 3.401243328454728 5.911715981425186 4.067816874784841 9.822707339742387 0.4413206612903897 0.8007654643502935 1.0145893278682108 9.932962937253286 7.629601255892683 3.527952387947112 5.900502012751648 7.639085991421967 5.334333947623226 5.130280988286315 4.993730073688488 6.539354121729115 6.036475502859446 3.750906903133939 0.2926815587195284 9.600555021094753 8.1601583533944 9.005094903347803 0.43916390163105934 2.985248932902526 3.6222349548880555 8.879866484838972 7.138585458250853 4.636549200044607 6.048038106318106 9.346353685133241 0.9667521405538428 1.6055495605467698 5.873624255443835 5.700353168312077 6.015846495648344 0.15298208131058644 9.680382281665313 9.850594916264665 8.030611929991425 7.732051428822347 1.1215400612381141 3.015421294692303 0.18275604977569415 9.921388006529629 8.723185287107057 0.30545361024687345 5.463737694689478 1.059104474007409 6.450869527599045 7.888432655422584 5.794557433609049 6.062494154906015 5.815823613821022 0.7746044148748279 4.572559441584758 9.355852197787225 8.416866658131328 5.086914739556823 3.368940968326977 9.040371944543526 0.28065374622369443 5.332117056819172 8.829430946097578 0.16613723694256866 7.286342064183285 9.365594750180747 0.7506430192386357 2.682860299626565 2.8689565414141294 3.6730855730183154 8.078024183942011 3.1694327866936645 7.362242569916939 6.954070421006547 7.51590403489906 9.147246457705565 4.033980936506758 0.8481081319502799 9.961971923781553 0.8690085210881673 8.603098979278723 3.8591007356087443 2.681379494986352 7.674830189399614 6.918933393845552 3.9094223024694763 8.217380955085947 5.00111877770422 4.475521279132348 8.780508680555622 3.2813653578589124 1.6433007539001525 7.429241554830046 7.2347032963262645 4.929614451732396 0.5818816135246028 9.641700803928938 5.904885448039249 2.409892058060479 6.036483333023843 7.205335793377676 3.6263063637717403 2.7155807241484475 7.889132197745873 5.7108923413932535 4.031137330592875 7.004551013734785 6.811381254522452 5.447426830673923 5.762709310607218 0.6398330359463182 8.715069954438384 7.376090640930014 9.63613935648141 1.7254936438229613 1.0875163672812085 6.153052774491499 4.252025747299665 6.698871772887388 2.2697580699156403 9.969115140503067 0.720189188739794 0.6261929218369051 8.744359559122092 7.2088493151494415 7.577020779956836 0.3199485791544303 7.8055283753563485 0.3020535117602092 9.205847744586842 7.156014196366541 1.8388740508791228 5.376768369909089 7.503541768121892 0.9407378150361438 8.781707092172399 6.357745755838171 4.229707577470622 7.153322546813479 6.519031177826466 3.110447379192441 2.5004701112980183 8.273854145273532 8.617349500457605 2.207662160149231 2.1722495213435606 0.8144294884671517 5.364390986788643 8.182586016443695 9.125590767729001 5.686096432790182 0.5694299602460644 7.1852950235212445 9.756434716099509 0.5350647194509071 2.4989872090865357 8.463283121239693 6.631734931441428 3.726478106383345 1.0826295264141232 8.142845249081228 6.9503337430070005 4.829634215072644 5.976861301117311 2.29337122723073 6.747446337178686 7.111435141149311 0.13951719738298873 2.3843812625935255 9.975073448434722 7.552186287567528 9.539737283668885 2.993524005995952 0.5903083318006956 5.103930982214848 8.913681583400741 7.616689743536219 8.785563723588261 1.0610498192280176 9.035247522612393 0.7162682563919258 4.883724329186073 8.175406350387588 7.608188181151214 0.6859318599188535 7.562333772637028 5.4922400831808895 5.581431657944673 7.537655565442437 5.8613427105851805 5.087954450314388 3.2745213262561057 1.161027806184959 9.238621007159498 1.8667737241640623 0.7143203180200226 9.774190184363208 7.4797341820853145 1.4786743526646569 6.602595978475314 3.0732524686547116 1.333534199507798 9.297603685513046 7.9186232568623085 1.0659966183630738 6.522629526763369 0.4831065007096864 7.34185729126722 8.715692833989321 1.601434602856504 9.527965328767422 5.844439379497068 4.381600605470966 9.951823901641607 0.21681376587758106 8.602506327804296 2.703113371355718 3.0889951812892673 8.117813301474744 0.24182404165431404 9.08584567153264 0.5571538990380134 7.917966555703424 8.251605573320203 9.59642735350561 2.4025245441246135 1.3590565454468724 8.001177936338628 5.066411176327711 4.269990645376963 9.300726081698837 3.3070842093455335 0.9863983318992879 4.583401268844819 5.5678350834217465 7.011968767960083 3.391531121693908 1.4454767214589461 8.761938439545208 5.66672202444559 9.92966319948427 0.18819570900830307 1.0013659504594665 0.9977880770451826 9.858124491783819 5.954529508600134 0.4322406579000502 8.58062210398042 5.8990288308237275 3.1653978617199225 7.09899752315809 7.811489721308809 9.384410319438764 0.5206919513574544 2.3871044748316295 5.557350650035625 7.317467550832655 7.355703087222228 4.592377142804297 5.954438745999811 7.174480911862217 3.778242265206818 6.3545741773686775 1.6486259940775634 8.246005968515762 6.992636108198817 3.161747652062156 9.671809332706456 5.8142277769893935 2.7569268319539084 3.618792976431733 9.256471428556011 0.9709953451345195 8.750892910454631 6.566056067989221 6.889002517829416 7.029072472424962 5.711849154290242 9.571599398162588 9.19783600888863 0.2953759120650066 4.136577646687296 9.485556245603496 6.912230178425608 6.626051193283883 2.5312354311303316 1.6192201747254513 1.9616682264049694 9.583845613928009 6.134950063676794 7.021925652951916 1.4696983081334496 5.870896500004664 5.053518357710801 7.954060840630918 3.488361403308427 6.958498207248863 2.4794082990683166 4.938444680485047 6.235422217679541 6.262542481886349 8.278586946038665 5.719489108158622 6.802852490556624 8.802399955445994 6.082278613078473 7.588647373169346 2.3246310759975177 5.57124040970142 9.659219769879527 2.5127617844293733 6.191199108781572 5.484808418139537 9.595600073702075 6.329041772307605 2.1804997785553564 9.038408882913275 0.38973796082188716 6.851187327807114 9.913306311067032 7.159878164671799 0.5801523734652791 9.482697348164557 8.991474142214626 2.335685640779716 2.782815529087748 1.3919898826726684 9.791496816170751 2.707800062433304 6.562819918899988 6.151178536936915 5.556126933872264 2.281805288403249 9.776691860804961 3.272810738445914 7.673384050005904 5.81720359443389 0.42639575481330816 9.876126397011365 0.5120162882520853 4.488000454389955 6.600251765095222 9.023350787575671 0.41158710449505254 5.298504830279505 7.3930531972886655 3.3845021442357686 2.4475734184257623 7.5251858776610305 7.383335682059018 5.877487149608202 9.457312386228544 3.108223838395957 9.44944414284533 0.5816534669212183 7.763552980034974 3.042329176350573 9.85306509456203 2.3956311458362336 0.937387415158419 9.214197910731706 9.280367029605053 3.942781785501349 7.4401887354883804 8.21077281727008 7.727423732512962 9.900195381918502 0.13686330180774942 5.676760567195425 2.656109652832641 9.866025747711777 5.232289083088349 3.3568581787186806 9.980538333843121 4.455728748768039 7.432094987058568 6.205191660964673 2.676841745299017 9.751174878655275 3.135215226440973 4.459996264430227 9.850262262206586 1.8589545685585942 0.8935464837456921 9.479613042490001 9.343696887533575 7.637897445305226 2.1119158249958216 3.2175796492881092 6.732933884668847 6.727380458702655 0.6587665601653896 8.441333019847827 0.8937058046561903 2.9136245497883353 5.155266017142046 7.947636740491175 3.8892748676564715 2.825469940499279 6.811323172543506 9.050529922079418 2.0506190414774736 7.249066954967349 8.605371469551551 7.08613326608579 1.1358757645557342 7.151434234786182 6.5209949586240095 4.277841663320512 6.632558656898922 9.662032479260125 0.9334950743204669 0.545107208400756 5.084734072195071 7.224977277865396 5.135372586684621 1.3320541762705083 6.377589736629182 9.884284162855309 4.579398141668504 9.644184187705207 5.716497946173535 8.32365070157071 5.796949990244338 0.987743197786096 1.2917765389992333 7.465029947020819 8.008236687783672 8.433233257612034 3.246292834471979 0.2902295094309908 1.0013899618879396 7.8628425510164455 7.559025321879663 6.247499825595296 3.6972035535022623 7.285076043925964 6.393914954025279 8.951221800269844 1.6466975077979025 2.481651646930643 4.573310899949472 9.746708955801257 4.800080224208086 8.641329525292695 3.3487616803959854 1.5003848745372106 5.06603100190778 9.702247106412482 1.1774081827903649 7.141767688233351 9.038371845797723 8.329904001783557 6.504243998800927 0.2776220365724571 5.25612180770983 7.0166854473917475 7.68145465369603 6.282826461673906 2.618226261778787 8.695656114058956 6.8497536032692885 0.6919686077958822 7.28461863969793 8.339508340365605 2.8149567173712318 1.4372977908903954 7.016425401569909 2.69435564250321 1.6063435097123362 6.240594978255824 4.836021540869498 8.002958698280379 8.781355483907126 0.7023244785033915 3.347353267319815 2.9726763673179493 5.787228786977294 9.183587725887445 4.593427359858394 5.687621837327634 9.208657102463455 8.132811950259565 1.561241942576887 3.511690109214207 9.458297638503904 0.43422296878048705 9.16515603061187 2.7412731877274976 9.70886753230795 4.233675357113516 6.914304842372496 2.3450734662113413 6.735587800989297 7.789077416630247 0.7542297808230449 5.181579057553685 0.9232646360698302 3.2611923856919613 9.985181635160739 9.767754005900994 0.19062274879324725 7.531589686680023 2.735273924140556 9.692893476002592 5.984483757553269 7.731055898447767 1.1933428669914932 3.805311037496503 9.520427508179663 0.6426201803126883 2.44360832644012 9.424607287807067 3.2023984288220286 1.3275459631526711 7.583902872105572 6.384865522159931 0.6207404120989928 3.987433331398627 4.689722396605584 9.64163842769145 1.4127714455506695 9.911720102318032 2.695354086427333 6.581004317437998 4.772001556638163 4.053570145369407 6.120454384822039 6.742999336261535 6.9998572808107955 5.594099015310429 3.261981459733094 9.847728078020207 3.681451590808912 9.487599010331929 6.556142955391236 4.217465743554632 7.817308828878987 6.3339684278434065 6.583903241607803 2.805003744004062 7.654216028844057 4.430042647053497 6.900347358814987 7.870299917068403 7.294827682721621 0.8943825687385116 4.20978901303834 5.8808420304513636 9.603529137432 0.8929276656459377 6.082847472101648 0.20990380599626857 9.827174412803068 6.661338556374269 8.099458250531335 0.5741932633854896 8.848968172073125 8.107672005393 0.10739989144667028 6.621637181861241 5.071041654800307 1.8671012264949036 5.391581379026543 9.909479776341346 1.310734703918158 6.695927974522562 8.45188513563524 0.21319262717459164 6.271081600017166 3.126723324408923 9.23209770342384 2.2964698355753135 7.22313747736 8.509313444527638 2.400066780683134 7.4865354255392536 7.656253024098988 4.60468452697496 9.932134723915285 0.9484065563414257 4.747308304556019 9.001016229030448 5.889860598053751 4.2668205766977785 6.400448475929547 8.9086369544637 2.0877633198717986 7.373345826012861 8.282640972741097 8.732474595839733 0.5135714160659282 9.01737436446533 6.484294104490964 4.952835333254848 6.319581668258081 5.400017785315871 2.9627996740892524 9.865385854783325 0.8720602452573498 7.836838445972381 9.607718406770779 7.696301293104492 0.23904814119195716 9.563750888084469 5.11760843078783 9.517738613129533 2.98323935359559 4.161507601619583 7.946722233993169 6.471304882881535 8.177537694859211 2.9951292104425673 1.3736569507335439 5.29731934984385 7.0675355330616085 5.988368793772153 6.7778080773837415 1.1409865223083142 7.672912663506091 3.1293605085647105 4.271660821517385 9.979807533097874 1.1991395351591376 7.720745100167288 7.665380847504219 7.08892982877766 7.370725701335055 0.49453102865827514 8.199546956980962 1.4888056357248693 3.3114702446994997 3.9342487641573527 6.970852145976585 8.353523149854393 6.483265162802596 6.695926757470222 2.7496773974503568 6.591508578635172 3.0637527205082007 3.3170024921109436 0.12736136388903496 9.213463191446724 9.928200964112348 6.759493553361272 3.9660984983705214 1.1423548441129627 8.551898772083664 6.150534119247583 0.1396020913938063 6.785998510018922 8.075570276804633 0.31191744437951474 3.443519319569114 9.870796120357884 2.0897528224251585 5.6388938253253915 9.492423933661176 2.1013996191675304 6.675574784103216 1.3148107274586356 9.656724628179038 7.352183600049974 6.611935193269033 0.7439415948218526 7.857508247487132 2.2310927872734823 2.9842331759478506 7.400580725947064 0.5958299830196951 7.295224699947337 1.1329268928344653 7.851495167590095 9.454311962659544 8.577896314726187 3.2755333813432443 0.14008162154119486 5.631139127393518 7.606423144078912 3.324256555101428 7.012053597430246 1.258895774746522 6.264718516151122 6.466780216506864 6.7816728363120165 5.808073253943136 6.631155510801159 7.804289983109173 0.9317164376102651 3.1460965203112212 6.432505459404203 9.156236959343365 6.66448675268667 5.103033016564565 1.1314538538179946 4.654432786117408 7.134979481991609 7.464828188325006 9.509048552848178 0.8850387369829784 1.8877534452913682 7.719337682861215 0.8414234927136963 6.796277934626275 4.87628245289118 8.457527867426986 3.7793362869250906 2.7231132662326822 8.461404967450399 7.124122789635817 4.92508695939907 5.563931530950109 9.528987726494435 5.900174531166017 6.641177079358878 8.141712509885362 4.828366247070573 7.70816034792414 4.607321775671402 0.1988916559491516 9.097683598508054 9.37585785522262 7.064268614215373 1.364789465888121 4.5622223360725265 6.333525932506547 1.9108050090169542 8.324401171080396 8.041309027138936 7.503328309127439 0.18636316241146123 0.915601117947511 5.754918550584679 9.975625902606552 7.274645460495876 1.639378111224942 3.6585377291796117 0.8071885963802199 9.999106062378061 6.472610501135376 6.155083085178649 9.908442693310427 0.5569103018629615 7.100226895848808 1.212532126638696 6.707424465300846 2.3104423248349786 9.304128978483874 7.191044625416641 6.312092292346547 6.317530794457423 6.130011297548192 0.3952291811223203 9.809087708070662 7.027411811421023 6.4665304948847115 6.9647997907863 4.320865401711982 8.377894924936792 0.9492677522588675 3.2306312148646987 3.812424519416509 7.0053490082163705 8.681042510208451 6.304823433411034 6.682076462109591 6.891759574725702 4.8116909634698395 9.703902993713019 1.7807155405475559 3.145013825477802 9.744708183988628 3.050136880599925 1.3336128745655556 6.829824424204376 8.901412425737691 8.377172807214588 0.7139458116525654 6.13849567367893 6.9490425242341685 7.982900290385098 0.6442717111190479 8.474112346936975 0.659434189440085 3.7246050974062186 3.656722631609701 7.324577344715264 8.437180142218056 5.755931002135838 6.455610144698436 8.794258834175826 5.760788382499197 7.157692470054071 5.547003969456303 8.256747826912148 2.0142263851045223 3.175581904460113 7.922866415342518 5.068900566994888 1.1024394366546622 1.0065368116964901 9.72227423744562 6.632542480244894 5.825850790500606 6.375705011218252 8.922036530164078 4.071503280224628 9.693441838757938 3.2781747744717107 9.955300838082401 1.8575713125075142 0.3456446985005499 5.889032347835375 9.417555912436814 1.8823550920775984 6.015241786596654 6.815095529999839 5.056097586663928 5.21666203883166 4.063811590106648 9.608227480402736 5.944586193280896 1.1643967499757175 9.823190836835 9.175676627509686 1.4635838325632693 2.3730208880554464 6.064878007773048 5.699940624448923 9.032991476376306 5.885149704230751 7.34469250228598 4.008187948553401 0.39941005095592885 9.805022974534666 6.922026758261962 7.047355996188092 1.2706801237586602 5.9112757611463955 8.393543258389352 0.6829830550432625 5.397539032331561 5.804642524000872 9.975241102004713 0.6070942657434131 9.429024570057873 0.8341425185753364 1.9575988989573898 4.7695739590375625 8.757768269630095 4.209206210928784 0.7138434340394664 8.220642872031462 9.656383037545343 3.9937842977568003 9.661860192593155 3.3575959268043736 1.6684065775057313 5.151592621254174 9.628324700281565 1.5974738835001996 7.41741669964218 8.472606429067117 5.498079032392259 3.611623346447391 9.819812802032057 9.31997386358445 7.002763578750371 0.11046802738226624 9.31256122651104 5.491941755530877 0.1282220803616152 5.114603872006899 7.152314615413154 6.837002898563399 8.635195851182843 2.1661304357266356 2.9104735229072327 8.735560740922942 1.6977563709597465 2.912157540713008 6.6427420772828025 3.260320605107192 1.2488673833196202 9.496060820283848 1.6476470045507061 1.2997800273238163 7.9549079597706225 0.5910457479630233 9.304691365001418 9.018522118583444 2.4431935743645745 1.83077714456729 6.4422941883309495 7.304542235996235 4.159502717645257 2.7764518113402765 1.5665130054849459 9.991279772725253 1.5616998423849462 5.897353680442868 9.454064315558426 8.436582392031928 0.6753234554606768 6.86069165834009 7.903579519515294 1.1021967499638428 3.7077668371279175 4.588140689637079 9.660974717864528 4.315480007339613 8.644885362683535 0.5462880073339411 9.234668943165957 1.881634205237877 7.32416615390083 8.530896374136418 8.392707938664293 1.9223492391343107 3.0643392360104103 7.319283346824647 1.851398570556519 3.635758563896119 6.609472225084778 6.5889209040764065 2.4393929112212245 5.366325486874284 8.633473682935227 3.1835645784236406 1.9017306621539705 4.827609413391354 9.64340492614857 8.9620165359024 1.1974698499886944 2.784743867845913 9.014778705305602 2.00605357667805 2.2075303612178026 6.999516904924418 2.857135593240879 1.5994993421131505 6.186639170939252 8.174298754386673 2.244364577088124 8.116027422381105 0.6989281395098486 6.774602276232233 2.69321707620826 7.698953393066525 7.19489359954486 6.621162805746114 1.8485395509513416 7.6725213327730355 1.3860741761829871 9.840915316364477 4.726555501454639 2.0322704100241578 8.955271848501933 7.540349137384991 7.04534943415675 1.884547846981917 5.347050282125606 5.792680358570693 7.248680284991553 4.561925753325206 1.283455305507745 9.868123153019258 3.0121629021275234 4.141495642250286 9.748253837786208 2.9703001256380928 4.137038054360784 7.948969915299436 6.756857959671612 1.980706792844158 6.108711514705492 9.419219226522655 6.022618324699025 5.9341397835603305 8.899971456511405 6.62644047485116 2.46275233386847 7.3608529796616295 9.437837338258475 1.0791049658854268 1.3207763054340087 8.550380702130585 2.759698774691135 1.590065884133816 9.473685790138246 0.4818060434031777 7.117229105524539 6.421493085769818 8.063309723793834 2.2615369366741587 7.132645468339939 1.0777953046205906 6.212609064826418 6.428277179849864 8.16367955319902 1.8447308709367012 2.2235061624258536 2.3286691703783973 9.982456465957792 6.650269465334776 6.7185879654876395 1.0473686595674057 4.166692966063668 9.254010380456226 5.866147566380945 5.68323885843466 6.90002051572083 8.489986953008916 8.276435660809845 0.855790606584816 4.713067205404645 4.8966293713419295 9.843005665995415 1.5299852724373304 6.330257695186943 3.6425805617805054 7.046154913049227 7.204022905080119 1.2712302360267445 4.2725245690957 1.1839336232826887 9.321079364319118 7.014498819239554 1.569307892424824 6.886500504854252 8.873930959758333 6.181540362427835 7.961047308848018 4.27330448297395 7.607528633288464 3.6892524929342914 7.520282811734425 5.117969404363066 4.241245454943563 4.913050403949583 6.571771686925034 3.948577750636865 0.5173612363793323 4.791269627339502 9.00426484368608 1.8633771085677147 2.446673790853627 9.70217939635091 7.325778082100623 8.203135062393997 2.0886189122774215 1.6937008021966786 9.245490566896155 3.8769217057216263 0.20094262886581493 5.104003161716741 7.127933394344973 8.58086727779146 4.738578736174055 7.051056111906901 9.704513405392532 6.788735464806374 3.7335425535411435 1.6298753112274857 5.095013312400554 8.131250714133785 9.698524263163218 2.927334469225568 8.922230440255309 7.427010172344048 7.805963937182902 0.12260968728750221 5.930856771040907 5.531224666880728 8.439199296592083 2.522704085538327 8.61830041249476 0.2638262365744035 4.63266948612469 3.181454518537841 9.371836917130704 2.0815178982288383 6.425035779917388 1.2467382101800144 8.881395814831228 0.5330929563574243 6.96981355546038 9.972034586295958 0.42206542726421326 9.282927604004026 8.759740092654187 5.829332521390015 8.940326837610996 1.2135005614635297 5.258605110810279 9.927587468311561 0.21173858385573485 9.489820216139737 0.5916525868563101 1.7390737443438433 4.130239632255453 3.3814830453674034 9.796057657582233 9.909706138856642 6.526312967943101 0.19735624069519186 5.109284000228923 6.504601535586314 7.799499524489394 3.4599793716124205 8.443525221546535 7.953085456160616 8.14698318785452 2.9769570538836896 1.1601094963983885 4.996500882354216 9.529095908156386 1.6713319748689726 7.776384219952483 2.285260698230765 3.6328769250965856 5.515762719923109 9.832491910406969 1.2804352154793297 0.3239958060379129 9.804643754394409 8.295038815248999 6.759978444993025 2.82928823707143 7.8313685609682855 5.676726706402079 4.115022928259574 6.147473038988531 1.020630185601913 8.536997814799426 9.098008304845543 9.389883509846378 0.7533258036718058 2.0569343491240715 1.3602292099525748 6.819473714444198 9.832747433772951 3.216150225923897 2.970102626625472 9.876144484529771 3.9465980375177683 9.343103463876318 7.009644163413822 4.148178220795974 8.15484180085008 5.456239903137609 8.566177098759491 1.607064361976707 3.6764516147846473 6.4564863186577535 5.926546902879268 4.179816992355002 6.4415046740303525 6.15146118812297 2.7248451294086045 6.048033680673231 3.9699483622377616 4.914154862813687 6.942314529812968 0.2774273450783049 8.16699105580733 8.258766381980099 2.0181918551139977 1.1052188799379432 8.30287509256808 0.4095155154493435 5.856446753350657 1.946413770736291 9.828369198618077 5.623431622510178 5.338469811875482 8.636518863143055 3.798954903275928 3.825629097054626 9.36095486029772 2.3291272937737233 9.051383513724755 1.994879777646828 1.3183296545102094 6.487359110204819 3.5082682812722092 8.872129630093028 6.161371716789755 1.823441347753033 9.006149914850516 8.892668900439206 9.78104652709585 0.3073476548672991 1.491561560854679 9.929255954869848 8.2764268394854 6.441531068852994 7.215641273969235 2.6181562997093786 9.179029747314992 1.8169072818632483 1.1529363489483795 1.8160829893700035 5.452911188919775 9.876561785961167 5.384541996692899 6.14822227992076 4.873974550544278 4.663901262011821 8.316716485928445 5.329254761775782 9.240301099510468 1.0076244922954638 3.06716170716499 8.278903960513162 1.8162354228706645 2.073356813151239 6.702377817163332 2.7852217337664262 8.639542597413422 6.879471442110248 7.384354852753308 0.4716512467995404 9.958744593711742 2.397759763465207 0.33082309395094 3.0095856370543093 5.329619070719839 9.914262971832478 8.351033040019924 5.804142430739976 0.48928391263803483 4.864117125005954 8.16083483626387 4.438745122190738 9.867792647242965 3.6392424430673107 0.2024806050007415 6.435232069246758 7.458730592440984 1.5006110641757515 9.275002004724229 1.1293651614988605 1.5436434417948224 8.60304814198824 1.8355247643276869 2.0053334781563215 5.808793937940801 1.5418805783595606 9.669604580155482 6.114039804428825 2.2534262394074873 9.081865843532576 7.669236796633163 3.606386752858848 1.6413669245763134 5.47538337810556 8.819681312672254 2.1617792615461577 2.4509892602220615 9.775492199865518 1.282721379150804 5.94879098003702 3.753566337680343 9.119851628334693 4.298401731892582 9.948251926782135 1.1953243918589602 9.386634973561538 3.79756512861875 0.5661848284807478 6.295156054744766 4.749954487523053 4.458756180295897 0.6717696948958949 8.932911911649377 8.702321437199675 7.789167962558373 2.1377166177583193 4.914213064653849 9.48047796102019 1.7379975704215456 0.40286324796100637 7.623309341928295 3.231642705221111 7.224774788477173 6.001664189331155 9.766054632029508 1.1549681509856522 0.2579101474508425 8.366668557542532 9.808392296349256 7.247912154392784 3.7165509953784177 1.626443949708818 1.995950758351467 0.8657062938939095 9.916603589376109 7.662509947808578 2.9722024683426604 4.32305827878254 2.3318098776698597 8.923229829239014 7.568159435693677 0.4965271835090883 9.984258252017726 8.003093721939505 6.012184069366703 0.15297386390226198 9.667379133104667 6.4148419016424665 8.528596871294686 0.4051555429946525 0.8398065833583948 8.468536928742783 9.402351411234669 9.51174117973115 9.180571466807875 0.1400197247485675 9.859436003982424 1.1165084026675918 1.0348283066844628 0.19158538417927495 9.762853208117386 9.473874656838337 7.7639270968534815 3.312822405985282 3.5005017193850363 0.9884379064753732 1.3960683679781076 9.997783541387829 6.538165999736675 4.962692645847027 0.7244143472924858 3.1476311749074677 3.6013799193900495 9.87802465060447 4.722825169184437 8.990347942370072 3.2856851307059833 2.596218839065688 9.142564604872039 7.451122669177391 6.477554697899044 5.337116288320887 1.562119144576629 1.975379858474568 9.248493652767152 8.16024905836914 9.61852524147102 0.4375954023766315 2.6083298997856508 2.657803738980508 9.65393982802144 4.4188649617528695 6.066072141266445 6.956369495113932 4.3811130976376855 2.3268489464365056 9.799595193087494 1.808865691502314 1.1294212934280323 1.1371982855459666 9.95236264092437 7.825546602084196 3.042941609535585 3.087149920183501 2.744172084237023 8.131907539763933 8.213990118183194 9.137424925991201 2.0480295874406647 0.8221724307798244 5.86189162424111 7.763189083690101 4.363661862493879 8.111285150274934 8.192316695661823 0.38023311626870004 7.709687962979006 3.4865271394691724 2.2254743043276184 3.009338384112189 9.497903326886684 6.267742091374878 4.008967366851626 9.09371943544683 5.708926672781567 6.093731529694919 8.686082918647696 0.7071540833351087 4.57744200893851 8.841203574065865 3.734637303646802 4.562582233201848 9.312201276366181 3.956117276941919 5.052384784096476 8.904102588550678 1.7335422898604396 9.835732386025072 1.685591700006181 0.8950391454261348 6.105332421896824 8.237830663748976 0.5281916676038385 9.611679243683275 1.0012907467669079 1.6698698639683118 9.902259866882176 0.6205009178655452 1.561027759805095 6.432370378119492 6.0180075265159845 3.352027366054716 6.577382678544936 3.8383030490922514 8.294015262705278 6.5641676061354035 4.344097806046274 4.567162950829873 5.428592097451583 7.723159602930108 4.8275452207954475 3.237748271875956 2.680869379483831 9.885866476114808 6.936593282010079 0.9547162028506202 9.566550334360578 1.5961332934317487 9.580311469112129 8.59673966873594 5.316744215150071 1.291418024883935 9.90374855931237 8.138649797669764 2.9741721062045943 3.054244877119605 8.986960786589645 2.5724818120995723 0.6482565640700644 6.7281053931634185 1.584695009103672 8.716262386824532 6.782531185525594 2.50313135528777 7.628431834554866 8.20543560480127 1.7355233675533723 2.6475634098745795 5.107108954819178 4.647765446081237 8.718326032759698 9.781858909533327 0.11730483965186966 2.0410831828348064 7.665884995301227 2.6298164056567046 3.5719623190634793 3.158480689420476 9.64886999595884 1.6546598745055165 3.682980469016586 6.651116722775884 9.786202271989595 1.3964654289992673 9.964179705133237 5.225563748664121 2.2062352700057053 8.252025108319248 9.494106718279447 7.6677637714468325 2.0533697180690633 6.444714481312483 9.915183533626884 3.2757028674068165 0.21742762356703782 9.934999630550156 0.11452388657827939 4.578612799460211 4.395466406723825 5.816867653412481 9.774383697990418 0.9669916002119399 8.154755012110051 9.4954435511598 0.2064738297966473 9.717491576719912 9.799633855244526 2.1197589920297633 8.469630560912107 9.202394333214592 5.907541959816017 8.086067830383794 2.5738044299007865 6.063798261064523 2.605922282127645 9.063833684873263 5.2636964372158275 8.948668691841576 1.4748046033607802 9.627680575330203 0.6886001111796585 1.6167958041575723 7.709934830982223 1.6987526112815252 5.065612872972994 9.235521458365376 0.2920958315353124 3.582609934274249 8.403244343412398 5.878867406823874 0.4271818645943837 3.5525814128579993 0.6650223060080362 9.985103732285813 9.47784674917996 3.8043739532945615 0.38704978263402534 6.274231340695226 5.573160508001028 4.906192074286796 8.153695630283025 1.839261806520927 2.001109635771976 4.657072353667363 2.850790894241256 9.73418250220925 2.3288805709869784 8.654278966808757 8.871477808668622 4.5722826359379765 2.738600819694949 9.815095368857751 6.253206521785633 6.53319931285996 3.934663089803574 6.355154384021916 6.616068005670344 3.6267353885520097 8.912000628971029 1.1018120115976338 3.2531821436488957 5.657945039427826 6.018513788019426 4.701846980897674 2.3557393233770827 8.152883787221015 8.862336009906683 9.03719259353522 4.761728330238659 0.31528535782482514 8.766926291146532 4.546147287473117 0.42551475183002463 7.779126840487384 3.2497353200334436 1.0957439246228295 5.1053192378616234 7.774948360963014 6.863863912181431 0.554289402697302 7.080868334539902 9.836758485619622 9.429003548244713 3.1816686275488855 0.640586564222021 5.466152552425896 6.3004014051171024 4.764654995364755 5.200698385096783 3.5390977683451714 9.42166955165371 4.021579952251999 2.88174163015367 9.81059779342278 3.9699668669653976 8.568612224566428 6.796827625075082 7.917586189966553 1.909964115745379 4.90211844336058 7.47126644361328 4.7818376607102895 0.510174138927872 8.705696127413702 4.0278203051485635 0.4744877739866462 7.8418394362069295 0.5802178522642274 5.08804513684894 9.693947885894204 1.370626379763853 1.127045823931006 9.629877274129512 0.17831391015283593 2.7570732009380756 9.432790263691636 0.7498081190278301 3.548475177376176 0.7170330585369449 7.120720044982321 9.835342023401834 5.684038581683775 8.065965327391392 2.7532886406880075 6.565500045641209 4.736305833302044 2.1247739092155293 4.714888107023408 9.28798701736098 2.1851957150816905 2.7184827739299466 8.585056376558509 7.591974895690097 6.76454288224097 3.02417680150228 7.56041814377774 5.324145248735823 8.625576700520604 4.40410095743232 4.243719263652739 9.318761716333395 2.902197677630977 5.650497741717961 8.331360184164103 2.9839934258568084 6.3244952312611264 4.582661466983301 4.42217801564191 6.466498005580273 4.973918563761729 1.8706267712685802 4.076038252358799 8.299820839788257 7.410710598332972 6.496959871390592 3.5431377805054973 8.401013479556658 2.4911021113724217 8.14356076521649 7.957890611609418 6.187508895443172 7.118747560416523 3.932088521607706 3.0431645145158197 8.798854209447478 7.224198002478619 7.9761158712967575 9.034992128327719 0.3918271648562106 7.646677380752907 1.744923946679319 6.827478747134441 6.106249934145308 3.5884423994548715 8.394820842948933 6.356654781360797 1.1787380314498992 9.53331150777715 8.466687244297166 0.8358221314814456 4.888157580638807 5.197517303015924 3.935597412587515 6.733452060838102 8.531861987612643 0.3520547103374385 5.2178035232862 3.1169638669739856 9.59456995875681 2.9979030456039824 6.774020737275486 1.4453210447904001 7.829721861490915 2.8117678166510927 9.949687843397188 0.39811518563612225 8.12577307964111 3.1386883296278976 1.924171433871186 5.243228366736608 3.9081798095857208 8.454443612462944 7.778072375275212 3.279897332268277 2.4427447817038614 4.404196438415487 6.212392524015716 9.708764262650806 3.3682662003948973 8.489422120861574 7.620460976141146 1.5759462905875279 3.763719373246124 9.916872594823799 8.790658348482255 1.0126122816611574 3.753803598346143 9.84421162195369 1.215983587961174 0.545323152210405 6.387100931521761 8.403748668696206 0.42533860655392886 9.950699492800211 2.2722224902646198 0.35321706447359524 6.00351019495947 3.1999756717705106 8.957480644063903 4.137192700683882 9.259121576163249 4.01751592174813 5.990396310770977 4.214164408404418 5.644561988440008 7.534969715328181 2.4981597080007565 7.64442733449266 7.792921133000153 0.675384596205638 5.211075927634043 8.250469390419422 2.328850962961756 1.3829651767930398 9.06275193048938 9.787246461407573 0.2685688867044096 6.405884138251627 7.891516405586506 2.116991758455287 6.458776778892795 4.85057103740996 3.8608859347204874 6.325320597895263 8.011152805122816 1.6326575505041183 8.949652337515646 0.9533712793382279 3.8556513349771615 6.495179141719168 7.404905894853851 0.4182970044827776 8.681924317644892 1.1799389509321045 4.05363879127047 1.5056537038776212 9.891318584778652 3.8756336632710027 1.7486273977669482 5.568185774287718 9.844975253146835 1.5827216486289912 2.987324408217641 9.924179133976386 6.541758221921455 3.327755587496272 8.850228817015939 9.262043778764095 1.6247270991501224 2.524858717661085 5.8331555501751495 3.7143733360721667 9.304015831801578 8.52832857809922 0.36344502943415247 5.1725212722836345 4.903677729436587 8.712095372486417 2.732186352247881 6.4582972579655 6.7993865121969455 1.5692890857391264 5.565273640028963 2.18759945338536 9.685034183025135 0.8058601468698718 6.096036108198119 9.914478443112337 eaf/inst/extdata/p75_dat0000644000175000017500000000171213534247654014752 0ustar nileshnilesh5135812 5243284 5140074 5229348 5144684 5222706 5145894 5216534 5173608 5214510 5176788 5208510 5195842 5196702 5207490 5192790 5208892 5190844 5218064 5188896 5147518 5265236 5149316 5218898 5171074 5217750 5174754 5211460 5179308 5201654 5199856 5197832 5208262 5186322 5127934 5234548 5161846 5234456 5162030 5215038 5171866 5191222 5186730 5181428 5125664 5184942 5154394 5208210 5177510 5198250 5183752 5194550 5197658 5189582 5201380 5183990 5222100 5181752 5132068 5216458 5152244 5209084 5163024 5205342 5186208 5203138 5205994 5197212 5215552 5193370 5220304 5176884 5145886 5214274 5158668 5207026 5186406 5191022 5197744 5179936 5147460 5265768 5150028 5225772 5156512 5219102 5164804 5216732 5165238 5213334 5166634 5206474 5180040 5192158 5199806 5191918 5218488 5186842 5142982 5284726 5152140 5213308 5166352 5183080 5178724 5180070 5139080 5273722 5151008 5256874 5151474 5227392 5165650 5216376 5172008 5201778 5193266 5188896 5206156 5170988 eaf/inst/extdata/spherical-250-10-3d.txt0000644000175000017500000040715413534247654017337 0ustar nileshnilesh0.200897970681039 0.533717508490099 0.821453362344669 0.325411118221601 0.681332641671527 0.655662592749247 0.42409375671175 0.697866994204278 0.577170810002032 0.331580119668859 0.830590136955722 0.447408815997473 0.141737902036608 0.532149238637842 0.834702075559553 0.488587335158785 0.700227340011911 0.520542109941435 0.162675135651363 0.308437420656658 0.937231645741584 0.391873448921350 0.775852784673734 0.494456930929782 0.486277228037722 0.0873817463953948 0.869424457839115 0.0443489858478172 0.60616777804509 0.794099359220336 0.8420679857018 0.452921150202819 0.292888953624183 0.62773442511918 0.747307166622193 0.217902478727073 0.712603195032561 0.68084870401703 0.169238673676308 0.612653883160296 0.727437620454528 0.309014122324636 0.669356633205443 0.624437035382817 0.402542030633066 0.914393723526912 0.376485161850365 0.148805380551559 0.681279167360861 0.463769924959909 0.566371038121453 0.41964521689069 0.602517538705276 0.678874441626212 0.576959926628599 0.551091556354238 0.602839397833109 0.487660955831212 0.639816125398936 0.593988314562906 0.399321039152592 0.247286718633966 0.882831799652312 0.0530813591161116 0.41105840323432 0.910062282728407 0.809995145779486 0.534252971945132 0.241829745443905 0.793452621395896 0.350118301005013 0.497845470905726 0.211166553476532 0.759565260930595 0.615198586702115 0.702236626404823 0.471515882190988 0.533419622227405 0.597571701283069 0.551366108588229 0.582154168692394 0.37731120440407 0.876499288409879 0.298973665141473 0.098010924114975 0.171728585613653 0.98025667640535 0.70400535445933 0.495602335133732 0.508679453391412 0.000311427671784549 0.860997830785681 0.508608531579206 0.096789912674876 0.839959981599524 0.53394657234195 0.297261475085424 0.848462988614203 0.437888310396489 0.605275053790095 0.213040726048009 0.76697832974885 0.529329868749314 0.846742121423664 0.0532697837126098 0.713175930292946 0.411016167880254 0.567843114065691 0.614816048854187 0.773420967060821 0.154341289945465 0.839709696926672 0.30655561557869 0.448231278967105 0.940659171787033 0.225733437859083 0.253386537853244 0.946874778936557 0.171450243019661 0.272089998313692 0.673949995503768 0.724856344596792 0.142739914733919 0.581036301893263 0.513300893255816 0.6316003553395 0.516669532390456 0.815284030286028 0.261466143620926 0.474845503069144 0.101782787946171 0.874163607280077 0.922498622882837 0.256412233498290 0.288529127284729 0.438774306683153 0.227433473967105 0.86933947495439 0.223067943462596 0.453705643185123 0.862781479832143 0.51128249515644 0.56970697134257 0.64344710501352 0.710823186454735 0.449941050016996 0.540632452880827 0.601282780368933 0.639884906748111 0.47854605227477 0.545946004287873 0.419478379185117 0.72524537213162 0.788711010171032 0.591236890306354 0.168445486659225 0.681386050272043 0.726461869120006 0.0892535893358453 0.57350465807771 0.711289386134463 0.406398592930176 0.129929737792646 0.619372131704931 0.774271545198727 0.463015722951893 0.64960991602055 0.603011937947425 0.812150873915476 0.0851077270337807 0.577206750478086 0.545683476808063 0.47197158953705 0.692439428259638 0.292843168971695 0.802783546778382 0.519404905067844 0.795324733275086 0.450211212736709 0.405916780346729 0.0807131950959698 0.37259880338443 0.924475803822842 0.542583862367426 0.61475065230925 0.57243723479854 0.783047420733109 0.616316656319789 0.08360930585779 0.433528429451346 0.00174069522413323 0.90113820851054 0.628901656242124 0.077818611331443 0.773580616682165 0.826754796870546 0.0869372749296569 0.55580429656431 0.668618056524039 0.344992313164098 0.658733784125045 0.892290831053718 0.186019468545329 0.411356086790482 0.512552848940181 0.74996040407255 0.418149458168537 0.743681572938499 0.532293448648245 0.404476702169454 0.966992745253826 0.181822486504648 0.178509422798173 0.0063655857796767 0.542764430396987 0.839860853006923 0.0628389158503143 0.323727934800761 0.944061171155975 0.646418551573175 0.724707240464608 0.238626217755324 0.0270668372482496 0.996283589870068 0.081770378970552 0.694444353351536 0.45369771841549 0.558484933013188 0.56122874795469 0.824677275767888 0.0702117034493957 0.0347445070728519 0.832879836401879 0.552362197605379 0.346883843816588 0.715699416877199 0.60617319602624 0.894116911528098 0.401644096221325 0.198083236267004 0.917777258060346 0.295664432388902 0.265080078480791 0.216782880844206 0.394929263946854 0.892768760122845 0.0466862748789865 0.362345126160452 0.930873998608668 0.655546979455973 0.66563024978965 0.356643418965103 0.572863820656006 0.523789767371247 0.630453267562773 0.124395121997914 0.97517252471045 0.183205896938315 0.0620019150197081 0.998048326797427 0.00743639097577826 0.564730753136397 0.753945594153629 0.335626604306526 0.365597126936859 0.41444268661719 0.833412263099746 0.163251680855214 0.659901436703142 0.73340233333081 0.394015695520933 0.798703881117849 0.454778783553543 0.276161924390527 0.570345789391306 0.773589214015118 0.105747734069586 0.867493033696212 0.486079472131554 0.968596265021476 0.24114493281861 0.0605837995041196 0.940272970272013 0.313049690116482 0.133740917051666 0.864914511145276 0.46977672063321 0.176727816603483 0.471155458199544 0.47386674644631 0.743950832260551 0.160365187788901 0.573142978540009 0.803610684781951 0.265384532364265 0.900075887832276 0.345592890732347 0.372607403100798 0.0703620259804494 0.925317733783594 0.0941821377511016 0.522125854472771 0.84765223825559 0.543142733378683 0.620360876289369 0.565816537711137 0.66323758383149 0.55128358574992 0.506164316675997 0.441605872250744 0.0957523393193591 0.89208505374125 0.74591155392233 0.403050934798017 0.530250787537011 0.814172146144183 0.0558428930819674 0.577931905794456 0.810081503282812 0.352377207970222 0.468613125448029 0.529603340023033 0.482922649426434 0.697356448960933 0.83821755088664 0.386083742788589 0.385137223519041 0.623242229784926 0.44519426934246 0.642939488254802 0.444113322826151 0.505294523983316 0.739892424965136 0.253754238491820 0.489372798015808 0.834339889379392 0.178316899779999 0.788505419358996 0.588610471274802 0.968422131936095 0.172177736195861 0.180314729112228 0.687280443252169 0.587141709102049 0.427680027305259 0.730015211702859 0.672834498504385 0.119881309238692 0.617285435285415 0.353271347282155 0.702963759075777 0.766880743799191 0.148181209623076 0.62444876003131 0.359775430917954 0.470995504133467 0.80543458728432 0.826398689587657 0.446797192582998 0.342691515138257 0.425285825302008 0.890324791625962 0.162646033500289 0.808465725845964 0.543015425598286 0.226974486880508 0.737059860362267 0.507516264515901 0.446284666434531 0.861849944360291 0.156403466102163 0.482444431201556 0.920508079437269 0.148264429344728 0.361500393750536 0.526491367160657 0.749576365232992 0.401175912773185 0.94807660657556 0.0972688241135744 0.302802780568038 0.64333997213486 0.740930275049898 0.192707051682078 0.59060682685854 0.338468489067751 0.732545328274149 0.246795318946069 0.679025964416266 0.691386874473957 0.391619434574623 0.826681545894936 0.404019603658302 0.235237700562339 0.724559926027965 0.64782415656449 0.494629358717387 0.236258523494139 0.836375338930552 0.358251563866297 0.779044659130107 0.514533998942935 0.534175892898432 0.834915959552989 0.132557368448058 0.420340016316543 0.349544985922432 0.837336595103484 0.897034423669789 0.421158146190203 0.133996487450385 0.417506420563683 0.650409186785849 0.634552029807385 0.929596999712377 0.00629161999328074 0.368523857631508 0.971238048750386 0.151470108573492 0.183721144314632 0.69754667618404 0.653506707703811 0.293866666246318 0.135565813919791 0.609797601385106 0.780876940011188 0.857652629699265 0.376063004849385 0.350725794822091 0.75681530894513 0.130231414061543 0.640523510058623 0.738655331172459 0.545477827411151 0.396033131863126 0.635203762255027 0.771865790812362 0.0271915683745120 0.721426933144382 0.383406260141231 0.576665258029653 0.085286790386103 0.357273449131351 0.93009776149146 0.705556608753134 0.267767294896535 0.656117784874461 0.502370320282535 0.814288872344034 0.290788056281382 0.512338263626286 0.74238445180285 0.431711511713301 0.195838909047364 0.703949214471496 0.682717090124528 0.400859854470462 0.812455736199402 0.423352162850987 0.062911918590628 0.714892661343804 0.696398286367808 0.71816774917585 0.695064427754858 0.0334742485129252 0.476573975052628 0.87700553744929 0.061143549012306 0.440060869625917 0.886757039984598 0.141450991731541 0.796866599865604 0.603737334746732 0.0224689263549223 0.313396824455878 0.743343832381391 0.590950401710261 0.367814743480443 0.896238506536737 0.247929130759607 0.572575220670407 0.463441003011369 0.676298790034443 0.619605727066003 0.664665363519333 0.417502931157043 0.57067544179262 0.515917311119768 0.638873123727824 0.651041369507061 0.7529682155002 0.095833196945604 0.264328514258260 0.748553827742069 0.608109861392428 0.14760154449367 0.460155100328339 0.87548333376764 0.636334557153554 0.74109961619059 0.214125407773926 0.624825582459082 0.75220424860051 0.209240913523171 0.0184242319291793 0.99964817732432 0.0190805987848143 0.800259436009075 0.433762493434851 0.414047019513023 0.2797895084815 0.541841565426762 0.792543720509826 0.723737725583926 0.0836420136888757 0.684987385367553 0.801066135952662 0.586135595684081 0.121400614915819 0.643776605819357 0.756916616735797 0.112378454825391 0.812062557243107 0.304075530847303 0.498088822062608 0.947120437274717 0.269842277887119 0.173631858716193 0.0651143467611723 0.781911118930462 0.619979938335732 0.944802988033565 0.324754529889114 0.0433798238740990 0.0381970424732695 0.816204516322747 0.576499066331113 0.319695792776346 0.712330018403316 0.624804405364299 0.161922672234829 0.658951094178063 0.734550545366257 0.69867304323612 0.114225109604219 0.706263833840502 0.486753463621114 0.589465412500739 0.644671694056892 0.219883906722332 0.349699039270811 0.910692950174534 0.140552252415749 0.629397546737388 0.764266833312697 0.711507618897961 0.615710894839369 0.338610398874957 0.703320004345303 0.526991600112605 0.477096242804823 0.930008790685911 0.358570582535605 0.0806894453259213 0.949287526496754 0.0125159665611430 0.314160058916972 0.453774383420772 0.644127118004083 0.6157832937023 0.733570746441784 0.0300656869073608 0.678947725849076 0.442007161131559 0.480757618884538 0.757299003956092 0.943665217476757 0.291767420080405 0.156101665283139 0.644060855059018 0.734885313230635 0.212436323114851 0.81989039709805 0.543657754739917 0.179488112301492 0.664745769365747 0.558171993987893 0.496545151258092 0.602805312611716 0.7392016631859 0.300344229560501 0.487705095955048 0.647755166834946 0.585283677559958 0.352233610170106 0.17231223630221 0.919913026914537 0.240961308154575 0.926681558544403 0.288442259431853 0.496566381224743 0.636710470248573 0.589933560761891 0.00727581918376095 0.244222119419213 0.969692022676062 0.417969203129765 0.860521880949149 0.291210984756427 0.585755594088813 0.371930035675424 0.720110014203483 0.4578352925209 0.887979422271456 0.0433519381891251 0.0895911450887981 0.86471443477831 0.49420883542052 0.0237492914392181 0.823712353034717 0.566510309362632 0.858763074640278 0.299971913911688 0.415382754214153 0.81984711587271 0.527264305267101 0.223255591164924 0.391068325691723 0.888889633553991 0.238622681237396 0.877317195037804 0.0735240901317895 0.474245450649021 0.594488705976441 0.750692787271647 0.288172721826307 0.0280283989143974 0.860041402372999 0.509453820339568 0.260083014264607 0.875128487431357 0.408052638978283 0.99081030094877 0.133960602814813 0.0186950375045992 0.173981724499376 0.422186614285679 0.88965657545944 0.578130472339421 0.497295630910361 0.646886552982873 0.676846228127909 0.352892248110532 0.646023408780609 0.446878523899894 0.695602149205242 0.562527541457394 0.452675991156154 0.773567431137424 0.443483795097679 0.526885911518975 0.667417927418072 0.526255210334096 0.647109211720469 0.719993162892138 0.250717995953798 0.666159211210545 0.415088390251779 0.61962370322441 0.622203597076398 0.342285175699197 0.704062172170726 0.698475265583259 0.536018047920769 0.474148664103996 0.904757829765562 0.201223421316170 0.37539632948622 0.506716610242462 0.472334594500245 0.72120614788192 0.232917727454582 0.00857207670401497 0.972458663254317 0.659056621401397 0.447876381811464 0.604194601434379 0.424933569039195 0.724719098489461 0.542414684709249 0.928990780700435 0.348280039216626 0.125208400903701 0.271688613306364 0.939721764789431 0.207625389056112 0.425819510952862 0.383342164549979 0.819589244054607 0.893774179759615 0.179371011243835 0.411088501323488 0.711087359167599 0.131670865844517 0.690664571785614 0.665131455951518 0.723188999165489 0.186004886467621 0.430571649853668 0.434795098143573 0.79092431810674 0.428503433791135 0.633751943521277 0.644005653167898 0.0467994556291281 0.673172459684962 0.738003150721266 0.462872844845556 0.882285773415298 0.085560174927077 0.612735353372492 0.76533398446324 0.197026086986239 0.577844906872069 0.260915165436135 0.77331658461942 0.53503597423931 0.314474624929441 0.784118751558257 0.623977415949637 0.55721779648889 0.547869064340085 0.673442931365189 0.389975621539059 0.628007669379512 0.427072463665575 0.64281467890239 0.635923265312909 0.625656214397075 0.694668742233267 0.354950193619291 0.353300943358313 0.913042946876174 0.203791610675704 0.442897832358498 0.739754662512106 0.506561496151992 0.493836592495811 0.596504388438435 0.632698928785101 0.515507348496634 0.378826690014129 0.768597757334035 0.708330461158652 0.203947412843013 0.675776154203012 0.539623631956366 0.840920232937733 0.040736932508109 0.132362598760386 0.279759626906574 0.95090204206453 0.355828300866218 0.17222128020186 0.918545617238628 0.981393465081885 0.00617937691826588 0.191908003990121 0.108070903581173 0.801569065153803 0.588054175724998 0.154830871425705 0.435610833260866 0.886719010284166 0.569914080738749 0.568893239084047 0.5929236233278 0.231620978544584 0.49050283922396 0.840094451244194 0.461859802598473 0.869537935429504 0.174897974810159 0.975130077101034 0.221090125605323 0.0155077107515481 0.180347321366822 0.504494058345232 0.844369935970111 0.700362341786721 0.244089647703473 0.670755420470841 0.625743406129083 0.719847796927423 0.300440241886318 0.133986370573121 0.806902771969734 0.575287379566249 0.906339916731115 0.0539046109811607 0.419096943743097 0.661948868041145 0.093224962461465 0.743728984558963 0.643668339563257 0.404845337976227 0.649454633490896 0.100982894056328 0.541784094075587 0.834429416136981 0.995705661505235 0.0641350514294629 0.0667602488353841 0.833644485131852 0.505019122248265 0.223590157593846 0.123578170235917 0.506903018595387 0.853098918988899 0.970745495611463 0.235574452362456 0.0464527732668736 0.294724976170104 0.92455864499728 0.24151294040346 0.122305279631315 0.716883985882542 0.686380921471063 0.154894475335743 0.81563618157083 0.557445352319867 0.447813003016508 0.129580840804520 0.884687696323245 0.557766905185153 0.427202196110717 0.711613914365337 0.0150493667211999 0.313170392142083 0.949577707218775 0.137070350418273 0.185866799741686 0.972967240861683 0.428296383777016 0.822870570944089 0.373425000659678 0.243679945201103 0.102381377714446 0.96443669455495 0.0738759757109174 0.559852391605575 0.825292457148542 0.742764432366632 0.64821754460846 0.167675319808416 0.0252949253142089 0.967575624030577 0.251311715873311 0.529336462757577 0.666284087933633 0.525231780609041 0.819693575308785 0.105328788054306 0.563034891462786 0.92622821118828 0.117856510451165 0.358065837162989 0.939773359229342 0.339508978509192 0.0394928701722624 0.70073863904605 0.570133880361504 0.428850461363659 0.611582354014128 0.625487256859887 0.484492224668707 0.000555215835050871 0.419544720007402 0.907734498435136 0.938665918540662 0.31071428233094 0.149542395747109 0.168442540034082 0.982961114817595 0.0735836766098169 0.562269935921179 0.407369977113693 0.719654237051087 0.666313990150303 0.626239754376043 0.40478319699441 0.391339176993472 0.801603294498003 0.451979874330728 0.0681067416392062 0.686284415758182 0.724137536957408 0.023782893165707 0.928922207194885 0.369510361117047 0.572869079579822 0.65404304238461 0.494012870651819 0.443967220725985 0.210398927965089 0.870991043600326 0.731746828145356 0.0590361894519657 0.679014954057864 0.0426083393869787 0.711795051817923 0.701093669649216 0.381829543944659 0.191235764047875 0.904231763388148 0.213655790382274 0.927873702128784 0.305616747142479 0.468548935561042 0.722176372551446 0.508844948793883 0.667486526222177 0.258323828749093 0.698377073515633 0.0299423707836251 0.619979209371868 0.784046704207402 0.195023691065542 0.598166066457325 0.777279304280092 0.434318070385672 0.757099768415745 0.488024337919014 0.651972364023125 0.593287916952718 0.472166796956333 0.902818752040656 0.149193216930730 0.403310903628471 0.131985430945607 0.360035784291497 0.923555131027763 0.205895162723518 0.628093207518147 0.750403960968105 0.103660425886201 0.828590547958742 0.550174717647515 0.561040421794436 0.173601112569087 0.809380194239701 0.636959504670105 0.548376638988108 0.541816990525879 0.0157238022555257 0.617982957721464 0.786034239717622 0.432985757123117 0.310314943750982 0.846302528540088 0.684218144811057 0.595883646289555 0.420438117201544 0.554359384995422 0.404853952563636 0.727171884330726 0.988760732263507 0.129591051493510 0.074554501584683 0.393087962434594 0.657926899684496 0.642350409403284 0.856087250060362 0.323999505075974 0.402664799795824 0.895467174394433 0.433476550196357 0.101176183027015 0.588784249924662 0.806511890628786 0.0535880333193312 0.293935691598072 0.954863711630173 0.0428614210755131 0.633513574609543 0.649933737907041 0.419817444987248 0.844507548119747 0.0177440158729611 0.535249615664947 0.756985245661955 0.408582533861231 0.509934947688081 0.894768990285438 0.389362231306197 0.218598963528737 0.698983500433602 0.511940373560938 0.499338682699304 0.596649432173537 0.73037204755929 0.332514852647287 0.150216762232703 0.891433149243584 0.42752995775032 0.761150929262468 0.50220077642435 0.410418862921358 0.43782479736586 0.862881303347795 0.252478322127573 0.799190918046408 0.0241478830807672 0.600592004820957 0.415853377803624 0.619045782112814 0.666219399160404 0.813626100056815 0.176138469079234 0.55406480579149 0.433860151030871 0.542315428089854 0.719485472961886 0.159875108530937 0.19706926002501 0.967266073231878 0.0616598246212327 0.74541065543983 0.66374770868489 0.162221082311234 0.684975313602307 0.710276805343659 0.00303962374331952 0.716056099207724 0.698036119033189 0.653317673459408 0.665415241983755 0.361107426233922 0.306577103285653 0.738800048261296 0.600154120564113 0.882629742095236 0.441332977533152 0.16183306618432 0.513897292729508 0.722676642142902 0.462220773469068 0.501906821995274 0.744572853727734 0.440114539099019 0.58208424098082 0.674230652137973 0.454522787238865 0.705308127484993 0.292204432313807 0.645876934903066 0.688304703468848 0.592973696267973 0.417874180486136 0.477411093996446 0.459540367136604 0.748933440501271 0.271206832298968 0.788344057243504 0.552232289460884 0.577266174138221 0.19098606317291 0.793906850877062 0.0442970621088747 0.380697079044507 0.92363818906296 0.440240279276549 0.137497502966062 0.887289655738533 0.584787000490875 0.401340164610573 0.704946974124468 0.856026100918596 0.303095942982693 0.418750718081221 0.148900926131581 0.401588167865388 0.903634581912223 0.264944961520986 0.0643787836741674 0.962112020285205 0.532566705062958 0.53467108945997 0.656124630504047 0.537765594222475 0.704679998085138 0.462854476017331 0.778970331054306 0.555762977131554 0.290400992744543 0.479777419445509 0.557829714908798 0.677229382820162 0.607187749041628 0.730556539556666 0.312426279183987 0.063489284377282 0.996780626127295 0.0489642129165601 0.97934061563294 0.124139820773317 0.159628517095359 0.00362363489809612 0.945864927841317 0.324540301888481 0.424329483955014 0.0330528764276440 0.904904412856038 0.835018732250228 0.443895373142156 0.325116309179052 0.396951585198791 0.165608392989809 0.902775331508067 0.0350238753973264 0.201001861792302 0.978964544663483 0.578025639089368 0.643598904517685 0.501664041624435 0.514623477509568 0.165368217037996 0.841318030942897 0.780940608695457 0.479385891428653 0.400400965020722 0.815055606964298 0.370501217887959 0.445435971941645 0.438330761450927 0.452009815896585 0.776886909336865 0.374596010379043 0.748238329886142 0.547555687302488 0.593045352345074 0.710288972067478 0.379192281331295 0.962667871126845 0.180030858489060 0.202137230345625 0.484950420843242 0.581917509853669 0.65283619771706 0.0777118617479423 0.934783326301945 0.346613616887076 0.311910353277532 0.886835450363841 0.340932274060771 0.899005321843271 0.306759474002064 0.312550886108890 0.826847807741492 0.0446308704560355 0.56065210981091 0.477229516660969 0.631370225690253 0.6112475983915 0.937884614966606 0.248222489191183 0.242400587599690 0.135316011607048 0.99063536246995 0.0181976819071321 0.757792317110425 0.171263178998396 0.629618716087583 0.771629976710739 0.634127295387048 0.0496966023636636 0.0938932442033133 0.616422651012609 0.78179739959376 0.72808187454221 0.64375072176789 0.235545732685655 0.391539570249193 0.487453264091805 0.780439671118352 0.487445423512921 0.705938357102045 0.513856006161624 0.226060399724878 0.63838503568648 0.735772547658446 0.0557657743697168 0.808044452327263 0.58647620708097 0.678415291161659 0.389949062034231 0.622649517575228 0.87712188362909 0.232166084951752 0.420423727038727 0.312900808867949 0.70532807995447 0.636085987455725 0.0536932757014576 0.669903404929323 0.740504193241704 0.681103069169748 0.457427409283569 0.571715641209572 0.537699686767666 0.120840251028601 0.834431950839191 0.650374432101614 0.517446515062019 0.556113479533336 0.505142310666888 0.77058516828805 0.388625455147491 0.784268699662527 0.0897277959297651 0.613898631182083 0.83474328132152 0.410996394380606 0.366450021278103 0.892228571285709 0.135661183114826 0.430725225610654 0.227822929198414 0.352553965875781 0.90763561745709 0.67462646158393 0.687658730443471 0.268336743245534 0.665103522595706 0.660555195859479 0.348287435107598 0.112989260247437 0.993076021863633 0.0321471906741125 0.353401973225754 0.684854131886711 0.637245528315297 0.393363054588373 0.170147152162719 0.903501773045201 0.685022366884879 0.620131059032644 0.382337320295168 0.202412636693933 0.618793645021289 0.759028029382234 0.766376913852775 0.631337459457525 0.118656808482342 0.505494043135374 0.457939299507695 0.731277902251295 0.931052893945964 0.300068004672263 0.207604675397382 0.275612088203150 0.782193561775024 0.558758631927956 0.261886845387512 0.744271209172957 0.614390468195269 0.60672499120451 0.66268850669701 0.439008801893054 0.766738861975142 0.489934919316134 0.41481959014945 0.669723097902441 0.198258325318752 0.715656767296838 0.733085636295916 0.442659636615586 0.516369921633676 0.292706851177192 0.320784122810932 0.900788679894654 0.220278019573589 0.927620150755035 0.301659493478894 0.956537163636704 0.0843233254710428 0.279152702590094 0.0725916598259616 0.735734835952108 0.673368177218256 0.187338901846193 0.169321821209207 0.967591988762546 0.101694458623116 0.897654243776143 0.428806594767421 0.0142281035947872 0.923886335314942 0.382402406486182 0.70849404334589 0.527694243371531 0.468588279896051 0.102368295374337 0.732099108465813 0.673462417277842 0.966051622923606 0.235565264505944 0.106081421582254 0.828902824171021 0.0939545307052896 0.551445966746746 0.222522659831502 0.906458894455167 0.3589093736929 0.424805999265622 0.158169925400207 0.89135971284708 0.560275648399684 0.0446752095536745 0.827100552207317 0.626902473693254 0.755130454963548 0.191758401286159 0.566221712990837 0.823008996634876 0.0452676837907191 0.741629943541166 0.584374815915756 0.329379873954911 0.566389856049685 0.794354524218826 0.21955277456024 0.510855894134604 0.127661537683438 0.850134570067724 0.0396777505527903 0.927600498161689 0.371460619610286 0.692176763873916 0.498684427304765 0.521732852633176 0.552286650074219 0.5615165815871 0.61618064295508 0.658733092376759 0.243833292327476 0.711769652739211 0.156465604326509 0.280519292059488 0.947009736721426 0.137040671844540 0.545143940305823 0.827065861106743 0.500394515284576 0.547115198471812 0.671021824290584 0.714108073062764 0.459488542772182 0.528128714469951 0.894123811409923 0.073939428794406 0.441673602040408 0.778853174312688 0.415179568507916 0.470120898021595 0.423067931032476 0.904968041169123 0.0452368234342406 0.583190934614376 0.208328714924892 0.785167167118795 0.646932404285883 0.753413603323245 0.117670755127906 0.456461536291057 0.889727765483752 0.00523155943267368 0.921415480415788 0.250672212507877 0.296912368092925 0.915466606458166 0.395755400523389 0.072791176776729 0.26594474125509 0.740431918915257 0.61727948941321 0.888650278945314 0.112631220115564 0.444538963405567 0.754345222617347 0.656400923041993 0.0100555131149163 0.518014549321363 0.679083836838895 0.520101979649712 0.944983942318151 0.292381185315089 0.146692164871165 0.827838353745399 0.0999269882169677 0.551994798067875 0.705859839524075 0.577456837757712 0.410250517944720 0.291022507049256 0.100662099558341 0.951405824085218 0.169277864022051 0.933908836113102 0.314895682063130 0.94487659526115 0.154825432229484 0.288508761154059 0.527552211061023 0.651701692290572 0.544952813434549 0.54950307562125 0.517509093142050 0.655919742345113 0.545668842393915 0.169460673770803 0.820687878846538 0.152790930118376 0.714649684269292 0.682591210350209 0.916953456292655 0.158172272397941 0.366303004679766 0.344287488581807 0.862535607815192 0.370807834945418 0.153549891737231 0.867903445157155 0.472404530706286 0.598009694433855 0.796418040654414 0.090015053648329 0.67061806776164 0.684236915340136 0.286515707907017 0.257107781048548 0.621465153871969 0.740051789706087 0.435941248101463 0.408256878681385 0.802048345932508 0.424629753987626 0.836538539683613 0.346255460104844 0.671067139669879 0.735868882189378 0.0903652714301427 0.70246971300344 0.373525872721124 0.605817402127727 0.728406202308965 0.369939946719707 0.576687818718976 0.795101714979125 0.540993432936025 0.274115611298132 0.807283874607754 0.234258177539416 0.541678735095078 0.493023063011794 0.76581413155043 0.412864354547748 0.724758377797228 0.664547765022043 0.181938346197105 0.74553406384578 0.0592204181146753 0.663831229849815 0.363330026395182 0.930360676306694 0.0491965842496029 0.0436290455261499 0.987484380136432 0.151562216178848 0.649118274987487 0.182373609428638 0.738502086429849 0.527875257475536 0.618348492998831 0.582230928198778 0.696145129744322 0.0462872757605414 0.716407318803995 0.61806209585189 0.492971864556417 0.612354461424867 0.352773390998254 0.648876554926437 0.674173680197018 0.919164985923189 0.113667704922175 0.377114546935742 0.184504771049343 0.822940700834273 0.537332850633967 0.844973795235746 0.474985516061686 0.245780481113765 0.63561020905709 0.596249404009121 0.490394035813212 0.959211842618854 0.0822322721568418 0.270463480706112 0.335973361627976 0.903919422249007 0.264672587090953 0.645463581919648 0.342944784182904 0.682470248008805 0.579409483995377 0.586324896705913 0.566134052463735 0.194332041964976 0.902871857165721 0.383480725726659 0.0407406317353626 0.441351821113285 0.896408819080776 0.0615539289034315 0.853270048566269 0.517823655365674 0.758559062735658 0.185967599394401 0.624503162775885 0.474804043714621 0.593598431602866 0.649770745779511 0.90879772675173 0.199336979214001 0.366539848541363 0.969630284799729 0.216878282575771 0.113052737013221 0.740240096143226 0.471726851354299 0.479080763309514 0.354368732735159 0.804534182612238 0.476599989790322 0.230055836907854 0.87958916322218 0.416409913242628 0.473702582787963 0.819608077724516 0.322255274570855 0.35553622779368 0.692591515736973 0.627623281161082 0.680341511587451 0.66612098194073 0.305644016838577 0.339475133598383 0.894404441840642 0.291199807836627 0.343776319699129 0.698080240349608 0.628093798765403 0.707850381211648 0.622099413107452 0.334574592624557 0.605374929814965 0.362974954130978 0.708357520624395 0.0720326795759252 0.223069718840756 0.97213743555601 0.868055504795603 0.491261263049696 0.0717078239864306 0.0928233437377372 0.432359131965796 0.896911036760686 0.716713583139262 0.648750198265216 0.255821852066086 0.518446367093319 0.091414847999671 0.850209791764913 0.078465779261953 0.938677127370055 0.335750460963371 0.219075009214808 0.66675133302309 0.712354406352248 0.254084891982254 0.234723622399229 0.938267386598378 0.752741945909435 0.490306530801588 0.439293829596762 0.414878085833862 0.717098056557998 0.560041562007297 0.367012627951492 0.922934942603572 0.116158609863762 0.622738899041023 0.653829594455368 0.429771014652575 0.568076937093949 0.263074492290764 0.779795104529334 0.697589725499824 0.660639566265421 0.277351651088858 0.891635141781098 0.401867527961319 0.208540796755118 0.210466542396452 0.697335512269192 0.685147442423852 0.262026423362826 0.847984099041569 0.460722390634907 0.296947338998254 0.860839471576478 0.413252564466074 0.762146626990943 0.219624843364199 0.609013503252251 0.623142035373022 0.565841985167571 0.539923005226477 0.570937340940553 0.648137522830678 0.503932837011682 0.561823398681492 0.826345851546809 0.0388201278379618 0.654840489110708 0.485517128785472 0.57918654290061 0.274658180551047 0.640376977045787 0.717272759224891 0.565002727841857 0.821424208033457 0.0776800359672134 0.719770745032771 0.656207679736266 0.226542613320573 0.183561809428012 0.688038034723872 0.70207458641716 0.414595483897052 0.202463512860120 0.887197334696464 0.131026161400824 0.785585604315987 0.604720930115744 0.732427012657653 0.190285943656811 0.653713951798509 0.582078813540422 0.56445744324161 0.585296548423549 0.545201121645437 0.512158848853689 0.663663356301537 0.196694924417256 0.807497960754929 0.556109836349908 0.19387297610647 0.825790997175721 0.529605983840014 0.755003686848971 0.102582746620457 0.647646672916849 0.951926153459718 0.0797533078955308 0.295763432897149 0.401598192997153 0.215812067398082 0.890024742884594 0.794733933003439 0.0278027760362107 0.606320856789181 0.309630749002706 0.601974049630863 0.736040788844642 0.807576316283775 0.387078979005882 0.444961074015799 0.0409674924603717 0.460229937637111 0.886854029175067 0.00258924679611607 0.656902753352866 0.753970867101941 0.00374262784959822 0.0806015317223096 0.996739377079484 0.710541733336184 0.691501923972801 0.130213418392753 0.402353061039341 0.909600351288678 0.103630184829446 0.605051931004881 0.788456173268553 0.110675307191691 0.646610732222771 0.0660345294583826 0.759956578952733 0.380472806312038 0.546859646587196 0.745778097420117 0.355241680342661 0.268875318019886 0.89527058027561 0.929393461949624 0.173816740969382 0.325600266345215 0.706138902292958 0.69450516677538 0.137950802791421 0.695368150820693 0.268517199178449 0.666604566868223 0.0219311196440681 0.823337910757466 0.567127596490144 0.858887957192568 0.358783266777924 0.365494246835348 0.287344818004858 0.342817628372411 0.894376335354906 0.886536811231333 0.356199535567681 0.295253066356895 0.330092810193116 0.718588142659267 0.612102783761287 0.533256364699526 0.76614990901578 0.358680869886531 0.158926487198446 0.626835028579973 0.762771406524856 0.222663347995656 0.229254083183012 0.947556646751677 0.387992517985962 0.496747068598917 0.776340232002243 0.361215266058478 0.925363968273705 0.115000251247743 0.673004353199916 0.310715860082175 0.671208458578523 0.500000271128444 0.669796332493771 0.548974135865594 0.652055452672788 0.52941677695076 0.542716834935821 0.87048816289084 0.491192594954148 0.0313080329809902 0.558736595888229 0.720460238587831 0.410792479275364 0.8581820492389 0.414617989754125 0.302680512977579 0.750445892747748 0.660811893650622 0.0125937789370284 0.79493222518725 0.570163442174658 0.20735574881443 0.3851551296631 0.752821758118046 0.533774228113587 0.593731761362603 0.347330913756748 0.725840087001375 0.916601763332123 0.399550493767609 0.0141636996050694 0.718769915750404 0.360613733950867 0.594413612813645 0.431897606345503 0.672221467819302 0.601317516654793 0.790006360324538 0.345881850999859 0.506217044157629 0.582031703085493 0.65753755758374 0.478417659550951 0.451343524157941 0.100906612518731 0.886626685110867 0.302241942587971 0.116203408016676 0.946121861128872 0.489847266741996 0.855197908814648 0.169369985606804 0.209269941491305 0.968311243189977 0.136306375126432 0.681753371693941 0.731569940234895 0.00421458522930279 0.442078848345805 0.442003123354761 0.780512351465294 0.101769653221506 0.950865699652354 0.292399314137043 0.578412092754975 0.755148615533587 0.308528798351979 0.699062492851923 0.714649566036436 0.0242410571466644 0.835671933027503 0.188104732947434 0.516012625613804 0.252296210016958 0.476070154756038 0.842439214520336 0.695747764911567 0.561908733875013 0.447430019573496 0.630711105134302 0.572312784021536 0.524081653090229 0.796342038640585 0.600500045798252 0.0723812993117253 0.561717607176766 0.387529577139247 0.730954278070718 0.439292034525751 0.716364093661275 0.542074712299962 0.579428141978878 0.577873938474262 0.574738844620015 0.694648629011797 0.49111147794823 0.52561658881692 0.722555445432695 0.135945138534968 0.677814537749278 0.85635392512229 0.367619126260379 0.362648773519505 0.43421124177555 0.638982605216492 0.634950256119706 0.517829280786245 0.694747616593364 0.499177909365228 0.876841702738185 0.213891494989933 0.430579907462218 0.88987160995126 0.3100087078297 0.334698549253672 0.685884296021587 0.603861766165178 0.406095678177993 0.424169679426084 0.431479579998207 0.796181797769922 0.572219337346905 0.8198811294518 0.0189727050024304 0.909793810098704 0.413655193344512 0.0341262966815541 0.542059392655352 0.556372978358863 0.629778313207274 0.626293782465791 0.634388459025393 0.453108575398965 0.437393841881888 0.609948031181905 0.66079499569921 0.834255201948388 0.544713499437598 0.0854719927958929 0.573774904728966 0.726590943274506 0.377952324843664 0.212031092794113 0.783355704666932 0.584291584445907 0.935938994348604 0.270364034871785 0.225657899275811 0.68158788347177 0.218483223691555 0.698357385634189 0.359526698769709 0.666592797300355 0.652988970396164 0.0967759738131405 0.889504330966873 0.446560696976003 0.121746410926463 0.608360712098013 0.78426720918455 0.159501303223634 0.548935242066309 0.820505596743597 0.987458494176324 0.00668940545493385 0.157737041095890 0.721404934981478 0.613799730241839 0.320663080100305 0.883960806626386 0.358193068251595 0.300517916612201 0.609686329367609 0.168587111181421 0.774506917803679 0.708545128181676 0.58850712544546 0.38938819272024 0.93720492227647 0.139534551302207 0.319651439311082 0.206335068119622 0.880783229599455 0.426200354434889 0.831501030775046 0.0978547064205788 0.546836805867508 0.822304725559 0.485974135813721 0.296047424652614 0.44543723501943 0.10106867440604 0.889590238656007 0.236619251307825 0.7828431819409 0.575471878026347 0.245210493673539 0.266779424817538 0.932041067918363 0.179455887054256 0.671509895568613 0.718936746004126 0.398417614997318 0.659430110464987 0.637507124251944 0.582416840250635 0.518211788502703 0.626296388660589 0.943431261294247 0.322918237927557 0.0752413903812775 0.226558468860131 0.160729925407868 0.960644133519866 0.230739058491420 0.602754975387094 0.763836321820714 0.19013030520772 0.420052225263408 0.887359338201204 0.508136496408434 0.685469882496683 0.521467488159852 0.523973130861684 0.661828902488785 0.536129333244783 0.117489126388755 0.69329214838206 0.711014980272704 0.527403456719664 0.769453655948121 0.360259163919838 0.564257458735348 0.349679880415505 0.747888695926155 0.465815378788136 0.754374090535483 0.462531906373203 0.997098707042817 0.0271605088211349 0.0711088965890997 0.671696814391679 0.369942973595198 0.641845453223448 0.467048865130181 0.686486039087087 0.557317033401216 0.295232699761735 0.196026746905483 0.935099549507458 0.370740660925239 0.731080391918514 0.572776416142449 0.111553248884543 0.86667307345118 0.486244441015 0.000467020703088454 0.78299063794053 0.622033313247084 0.441790411806657 0.496721287031431 0.747053676147533 0.100403715616692 0.493157273618908 0.864126725293882 0.528809955660642 0.289191399629183 0.797952608351338 0.804588045688423 0.0520072325749484 0.59155162453938 0.065367962346293 0.995369789317871 0.0704699369376078 0.825961911741166 0.0831780855598142 0.557555671153547 0.569655060085936 0.640038464592014 0.515600500737913 0.789623356587827 0.0691407750151685 0.609683941039352 0.856316439140133 0.471985139288981 0.209647762565507 0.350381833962897 0.788378095578436 0.505660507495806 0.582527110062326 0.562104008499686 0.5871126379759 0.614213201006947 0.689451639072569 0.383925228513245 0.70810398341412 0.114226554633693 0.696807751743314 0.603705173314155 0.496385928773537 0.623811729153404 0.968781432752965 0.238181004481191 0.0687920392010812 0.198826454419363 0.0441186590246649 0.979041155901472 0.958761060822913 0.074491230806341 0.274277751162354 0.9323277268737 0.0942964678419522 0.34910340281219 0.368592508094436 0.861951557262497 0.348107850973531 0.814327296388826 0.370139115570943 0.447066090729799 0.613956880943126 0.645951319833437 0.45365608201371 0.650184504992124 0.697401207800787 0.301482445303454 0.596485425489282 0.657541871785687 0.460264949814175 0.982702132159148 0.0226072648211812 0.183808136455300 0.467193870269302 0.357760842384731 0.808540083878937 0.482490842319068 0.87059569801425 0.0962585979397068 0.252255101932831 0.325106506364288 0.911412707322245 0.310819766974521 0.49099585211926 0.813826852382979 0.671229315858725 0.0376498832816191 0.74029297701701 0.468763057124365 0.671515590608206 0.573871072494103 0.0751811077947112 0.977183387083474 0.198646492641652 0.756968630435101 0.649280113848044 0.0737144917819941 0.54881097618545 0.730303938873864 0.406771028078074 0.94324452946781 0.257888344789649 0.209244735299849 0.507458068892158 0.379124103188194 0.773790167098284 0.755225847690023 0.634837886374533 0.163140359826748 0.776502447960154 0.610078415898881 0.157633355500035 0.390419881308405 0.439226176669662 0.809106100587112 0.904582832039452 0.105819632606072 0.412955330919217 0.524078584164858 0.665355646091671 0.53164226866728 0.875817621426622 0.482620216256584 0.00460661036574644 0.100868979272709 0.912030865409994 0.397523772320573 0.51620351189981 0.641022570971606 0.567999998069767 0.566308358617186 0.778465885789794 0.270713331075179 0.852211772016323 0.414842765665416 0.318811190851056 0.644753856373381 0.678214215741499 0.35258749588974 0.366359452887887 0.711310779600437 0.5998480858550 0.811085557401841 0.130891324105528 0.570094448182094 0.209058007087709 0.729872010054263 0.650831467134054 0.108540733327262 0.130463944394091 0.985493819575707 0.373038881980671 0.719796306917356 0.585435964968626 0.301007002069778 0.301273763564161 0.904781136017352 0.0266388842502375 0.401684404589158 0.915390631892066 0.544974960155806 0.00599723558480005 0.838430871311713 0.639591450367323 0.408871900691238 0.650958174879276 0.480684702372963 0.593899562140602 0.64515542855487 0.626357313763182 0.746797872298967 0.22353848309655 0.068960277324658 0.126544837804712 0.989560955260607 0.82344379341999 0.0622889101789895 0.563968448361084 0.411595160852045 0.907587418039615 0.082912617733158 0.393587757094199 0.91924162212215 0.0091387977215331 0.53260193950035 0.834366020709803 0.142015905888576 0.493172360916399 0.682565062288944 0.539338444921772 0.885093785145764 0.236883757603404 0.400618368126121 0.410560127284209 0.837155534414572 0.361401429276956 0.661720936832475 0.692796593253687 0.286632660619193 0.489548377314672 0.557725837822352 0.670286711858386 0.279035030110112 0.243691244796154 0.928845535695333 0.658063190571098 0.738197202247851 0.14838371813926 0.644695333816731 0.710093124630548 0.283082463086922 0.815067890531496 0.318988797149776 0.48364292728983 0.602245826448858 0.574273905677374 0.554535342230760 0.713269435834849 0.359567478214985 0.601629404628757 0.548457456347787 0.445273264522722 0.707761357010817 0.752880946787798 0.547925146576456 0.364620780692871 0.614915602540191 0.624687016648126 0.481295058133675 0.72615867572785 0.687335780830373 0.0162204209401404 0.636388555567607 0.177349780385478 0.750704110645331 0.601843908796808 0.677990209817438 0.422034577772825 0.221903276901869 0.671636415087826 0.70686877256545 0.3768111768885 0.753854600828552 0.538253265462949 0.474298502442271 0.710231659672255 0.520203729494717 0.275357889783357 0.886154672576787 0.372703540101760 0.310597896124713 0.666811406080234 0.677415305144638 0.391400626881157 0.91724063554236 0.073994363210206 0.383882628672565 0.653660025154878 0.652198358567365 0.471193214644282 0.556263258551756 0.684505764518145 0.212505408842071 0.870077567215647 0.444754402160299 0.718339089782951 0.497084665111491 0.486719413831828 0.850459195128408 0.437857441052390 0.291547626875256 0.284716931866825 0.267463111054519 0.92054318363311 0.885982893285852 0.402080219008957 0.231010411640992 0.942894639785455 0.300124446380365 0.144481884500228 0.966593289924353 0.176973142879062 0.185412832815644 0.760206123931028 0.317304990469122 0.566925208613228 0.52998997665741 0.374377500558359 0.76088902720328 0.970097706151726 0.0412186407388532 0.239189180722709 0.144119261068192 0.828535657560838 0.54107143958944 0.54803709557197 0.725990686451774 0.4154429745011 0.0595129515855609 0.652924303257956 0.75508149415059 0.995478764052837 0.0897280324344243 0.0311594370180765 0.516755857617863 0.763112790022775 0.388100828807776 0.0421914267532408 0.583586562369103 0.81095413417205 0.430758099392971 0.522391245322082 0.735904101509293 0.698936438287525 0.712783390194751 0.0585465105401366 0.577339892360465 0.611841471661754 0.54067426630457 0.546777392262676 0.359324763937795 0.756254056076049 0.648715389121075 0.714712175596816 0.261447604638403 0.438761358771368 0.89510688463925 0.0791968125654062 0.660177439891946 0.546484400169835 0.515286860135917 0.384352471087254 0.0448995009093936 0.922093928397324 0.127039803116994 0.793282069493568 0.595453143953407 0.584563073726566 0.456433482657784 0.670786470304996 0.712479903884465 0.365669764556961 0.598880630718376 0.162246457489656 0.0163964930271226 0.986614028913267 0.0765982528985178 0.725806748220162 0.683620707622999 0.407485257633335 0.497918620597929 0.765527799673761 0.82970083717668 0.151107557162991 0.537366752745784 0.129951325521139 0.69477421087972 0.707390591463982 0.272304700201874 0.673180995281019 0.687515452801189 0.95890035457719 0.206061530446768 0.195060902442480 0.86371249164565 0.370145825955906 0.342042101652245 0.362453250157782 0.876506389899815 0.316803077502182 0.87722005840176 0.129362222428895 0.462331466099669 0.615393180198977 0.619625091475351 0.487191933203694 0.743505094222583 0.0347297128000787 0.667827838528683 0.300449192654331 0.949233525153269 0.0931986982659044 0.206599351840870 0.623238272900822 0.754248475643493 0.529412094213445 0.836033358594963 0.144121677123740 0.51421853363109 0.311864513975342 0.798949200258198 0.764235178736701 0.643402198986112 0.0444769819245613 0.829937344675856 0.0482681746263045 0.555764506990717 0.138754319900410 0.734883195264915 0.663847819930293 0.607767228087132 0.173889794127569 0.774842781447666 0.66631689105409 0.709383090550192 0.229776916894342 0.00697647514727658 0.541956560643609 0.840377543232724 0.198522132457979 0.559755593540534 0.804526344145685 0.0163694200611710 0.715046449505438 0.69888526750571 0.432049899650285 0.781248549012985 0.450537000564087 0.751094279550893 0.117331528635094 0.649685074181389 0.147613000610986 0.97349930612497 0.174669696927725 0.585413808668234 0.545788888048065 0.599504096986675 0.327626424989264 0.531901727550671 0.780859448221872 0.742858506942894 0.0447854017476568 0.667948730407413 0.728368952661013 0.312934224172561 0.609549702765095 0.701883601424031 0.571876448306738 0.424637183868892 0.370577052353356 0.145672922508514 0.917306954032796 0.9681617586033 0.12605518866503 0.216270429298110 0.700981065162453 0.195209059962259 0.685943852798729 0.665214052508394 0.458500667379446 0.58929398635822 0.69965859939221 0.332392756122492 0.632449918945228 0.964982574069976 0.137009506436721 0.2236895770644 0.215009523696705 0.121083957585092 0.969076663600588 0.490293982106005 0.85840650908186 0.150831284144017 0.518994554789421 0.75552177043597 0.399789327641731 0.283394047607975 0.332460463305213 0.899532019507506 0.00579764115006727 0.740710272704769 0.671799582663402 0.300062614491398 0.340709151177283 0.890999271429917 0.270321265138914 0.547169455365292 0.792169174311237 0.644866137016064 0.542602639372094 0.538265771786036 0.586005758438535 0.778472306603334 0.224895795711173 0.594244634556205 0.541207091765982 0.594952265415781 0.489088098933149 0.203226609143473 0.848228611176259 0.774533017778488 0.304791639683317 0.55425685449086 0.715610550495809 0.453821232339777 0.530987597874651 0.624160773080757 0.285617863041964 0.727217825454364 0.184502058967251 0.356618024667636 0.915850738231399 0.495526789979289 0.727297356280382 0.47485972240272 0.493476516498588 0.630457434046984 0.599169718459897 0.269258462879034 0.618513458396671 0.73820117986238 0.118121264232557 0.713058543282639 0.691082397972733 0.357565377744082 0.744996164766773 0.563140937174284 0.848843209604937 0.526047652355008 0.0523361534636818 0.88321082668555 0.389984959767275 0.260481029598596 0.189527817138208 0.212271912679105 0.958655225625136 0.353995164683529 0.789760372064855 0.500965046781373 0.869437104633727 0.356381133025063 0.342157287091614 0.860612640217853 0.0244465982172447 0.508673025953667 0.824225614467836 0.563086814408976 0.0598780084327196 0.0106455761284750 0.885791655549805 0.463961005545970 0.792559968663082 0.448503697509359 0.413150250385024 0.341400084626329 0.905876721550277 0.250665808538893 0.0443133692903366 0.756805232508073 0.652136615557307 0.514052829158886 0.312124641036873 0.798954252314454 0.757831438008542 0.56518160515346 0.325977399158384 0.743559605152017 0.114396861137505 0.65881140833175 0.28778519404332 0.0490493561314772 0.956438101892922 0.748970941833296 0.237593680595115 0.618540032035609 0.811369674418072 0.512757416221577 0.280640488070563 0.515051143962087 0.84838531710406 0.122330179537141 0.624299227051597 0.262836134047456 0.73564097339787 0.197850499897837 0.77976542528302 0.593987425139092 0.994917128039102 0.0137875692751976 0.099748740683315 0.737312250893618 0.666256494884776 0.111682262271315 0.94279517692198 0.260975410591382 0.207434542541283 0.951247210314483 0.113133826381645 0.286931145394084 0.0428653783942429 0.341529811499030 0.93889293702347 0.565126393856151 0.79170285922262 0.232031768656518 0.423473163582452 0.85119393718027 0.310063479037791 0.87627311546418 0.454413540180318 0.160167916935606 0.48221974628313 0.724239257769059 0.492891077014746 0.828199406783804 0.435311200360541 0.352972947183803 0.493220673950096 0.593283205491412 0.636198400556027 0.0660637627402214 0.979482988376118 0.190390794773256 0.504561828355094 0.67860051061375 0.533777770576597 0.661789101918573 0.195418502844894 0.723772611617536 0.209945191483113 0.422213292165337 0.881849733510209 0.415639923620177 0.82230613163035 0.38865933640676 0.976462261334267 0.151899376498915 0.153127501152506 0.544513348941177 0.468211463638485 0.695904618566633 0.318862617636739 0.492548779437081 0.809766837397586 0.848058964841427 0.0848955592920423 0.523057106026272 0.241813989388138 0.694441038108739 0.677700257581957 0.984850652645685 0.172565703947923 0.0170373062520303 0.683460460028921 0.393396136089711 0.614915668760149 0.658690917749782 0.330850483986879 0.675769363111112 0.730767593936408 0.52941520071987 0.430927219956146 0.128731029925028 0.45462104303188 0.881333097737199 0.191567143507093 0.965133282367631 0.178380987761631 0.741454647679716 0.620827874110417 0.254593315233704 0.00927562938724935 0.81579492299286 0.578266898861195 0.961155928058049 0.192495046287808 0.197800250539595 0.0920083176519604 0.619502166028429 0.77958420697763 0.547717342956669 0.651435563382316 0.525011827471774 0.418911425029951 0.63577464936353 0.648308424444767 0.86338563089738 0.504515181462451 0.0054483055937407 0.246668677565206 0.0191863474594986 0.96890992748521 0.391047127531532 0.861997176783383 0.322556989176819 0.740801600981481 0.286582210826000 0.607522529970171 0.794044316234744 0.572271374252968 0.204936814813534 0.409620332717676 0.593821631590331 0.692522239989199 0.80403565978315 0.509760753841093 0.306056582416447 0.61232676821714 0.37768484291013 0.694557476643009 0.262730432672010 0.963447225741163 0.0523656658473383 0.752224158128195 0.509692287463857 0.417579439182761 0.64484038218226 0.483436772135021 0.592004872323454 0.536627807997884 0.480527321310408 0.693631090103111 0.774691512001743 0.404949537849399 0.485663394778741 0.214906588586284 0.795547568649006 0.566497329383697 0.880683912265805 0.221837565387295 0.418549807381671 0.954019229584542 0.151055557632641 0.25890061431215 0.801412035079944 0.443301187502719 0.401525599666699 0.502109245012107 0.761190541376703 0.410457386085345 0.0461636449075200 0.0306570292944693 0.998463351577658 0.128695054025802 0.938123186536185 0.32150034207212 0.86468705420476 0.499555727217829 0.0525392586030845 0.990751508391563 0.135582367162619 0.00537311217301451 0.216345051618572 0.757225680960656 0.616282473167806 0.853898106903156 0.426985718638888 0.297558765802050 0.545951569030173 0.5119415529653 0.663213940309587 0.391233961692353 0.839465340618937 0.377139137611092 0.528892754170687 0.752983638558779 0.391520235298927 0.612982681664084 0.575318211860076 0.54153595179086 0.427415192317202 0.516237786437199 0.742168984282468 0.585628039060009 0.601950087014479 0.542858998829336 0.652144931040902 0.691863152144722 0.309890896320021 0.396388247463635 0.503301781116212 0.767830498481245 0.261575737642127 0.202751287951671 0.94364720563933 0.334027334536508 0.297600156853326 0.894348861699568 0.000737027585516534 0.793135148752332 0.609045230343325 0.871288474559464 0.455137299779591 0.183593116562642 0.879679273293613 0.473983010158822 0.0387876554898997 0.247434573582376 0.231238145146543 0.940906505464435 0.270869546563331 0.603684203307071 0.749796686723863 0.233306853089397 0.874157267878109 0.425930725960692 0.83407865886754 0.505533385994269 0.220791273529761 0.272607644915168 0.68601055318285 0.67459216779886 0.271081400106741 0.948960660541552 0.161209612804916 0.734581190652569 0.667970698491247 0.119187332785702 0.327374703411452 0.421930622734145 0.84545866437422 0.150656277570349 0.632412387656735 0.759840284511787 0.779626798820025 0.226081741097833 0.584011216419525 0.451251258452947 0.633099537383238 0.628933444419806 0.0344403689423479 0.687933924994436 0.724955706115115 0.708360658511783 0.355076274817898 0.610037717304593 0.650352891409265 0.116640397576966 0.750623830083149 0.766377771611963 0.388500173401081 0.511598208017202 0.463779625689765 0.509074549917805 0.72508727848518 0.201810922005406 0.284385583629996 0.937228462853511 0.328040091984140 0.643541500057225 0.691551903876444 0.0540555677027731 0.958362148660525 0.280392559842648 0.86745843790934 0.184218654824818 0.462146454832688 0.69390486764047 0.181933638104902 0.696703800758096 0.278297546022311 0.278871941476653 0.919119641904688 0.359400413910181 0.585730356710236 0.726464928065554 0.259870991110385 0.752369837882841 0.605315368236635 0.330923443023768 0.250684416344336 0.90975106389572 0.764223053288301 0.291147575925855 0.575496493347444 0.529640415851331 0.725781218983972 0.439001881621217 0.363461915251207 0.453391634599897 0.813837491048893 0.120183358867907 0.108733987000585 0.986779043313236 0.239509819701771 0.179325027524398 0.9541894889223 0.501333504847302 0.530188485299249 0.683787164967 0.0848700494368254 0.713165769535224 0.695838817451156 0.630421748554004 0.206428114483562 0.748301979484803 0.618531855892299 0.502951556876217 0.603703631496629 0.585712588114661 0.695781810747443 0.415726395550048 0.749072495152278 0.346503184476806 0.564646739257187 0.90139647929871 0.432039448348109 0.0287454723209038 0.649800387368804 0.726854794044877 0.222354592822662 0.833288871879094 0.136300846796484 0.53577209255898 0.176674416869412 0.737055977279045 0.652330159337344 0.484792928221379 0.0926830155909958 0.869704360899438 0.83016801938026 0.0185947516343586 0.557203100143846 0.857608895006125 0.0875570901539582 0.506794572948591 0.381257121994784 0.119961855925446 0.916652693254745 0.84001660339833 0.423037946811715 0.339721947440052 0.793195467403743 0.281234927775239 0.540136895508365 0.413203853594565 0.173773467375424 0.893904557215659 0.229773109894831 0.302643399987658 0.924992589382839 0.795145606405841 0.575631795708485 0.190765563933620 0.233225361136039 0.743893268421267 0.626281674744272 0.654435710578904 0.58254528750396 0.482032041181925 0.51997676851823 0.346793226658087 0.780614256944755 0.610078248543144 0.69135942566444 0.387074508589063 0.387687900734888 0.0325823533110974 0.921214677410476 0.142863790771486 0.629328579813084 0.763894937747887 0.547492096867306 0.507484784023764 0.66536576245866 0.497887557241272 0.803406525996428 0.326566891050929 0.825977821669046 0.0666133994309867 0.559752885769342 0.644917842230807 0.116188984894486 0.75536818609308 0.504997670587064 0.822053799831478 0.263068247578964 0.231701484941027 0.971890282004788 0.0417576534395448 0.352081029211718 0.617607104727727 0.703278332567592 0.339368301479369 0.445900767857743 0.828252172454068 0.321458260709193 0.556952443852995 0.765812354240905 0.360072803268332 0.525146197040382 0.771083035788306 0.13900409450781 0.984710772578236 0.104988361633261 0.0357413503771164 0.906693798704875 0.420272425057061 0.503152626868556 0.413929561960082 0.758616999421188 0.193131495829898 0.445118015499553 0.874397036589355 0.311162243771597 0.540674284744797 0.781568535617145 0.577352722650876 0.777991612522295 0.247775875525807 0.509360037663801 0.784699256003103 0.353269627422608 0.650180330736986 0.658060676889895 0.379765299960327 0.680067350252632 0.282190668445629 0.676665963206791 0.117594133929581 0.0577997297386044 0.99137823806431 0.698932358270087 0.465512701915552 0.542947035094859 0.587960732504813 0.73197341512797 0.344263121141808 0.661633926080762 0.364233891684121 0.655419117822784 0.73902327778443 0.673669265468179 0.00378360361570142 0.186085328587825 0.720753349704198 0.667747601549073 0.93558076145486 0.351381490517496 0.0349240163390132 0.584522758599396 0.757039356729653 0.291932452875157 0.636933739237163 0.502662926412747 0.584504400523673 0.782250605912424 0.621726946134765 0.0392376604754305 0.569162937045201 0.75394159278503 0.328063447770172 0.0496453797961235 0.531163982441571 0.845813312747978 0.660141864329993 0.299354696350601 0.688911812013526 0.717097246680434 0.212052110603842 0.663931804624388 0.746329825710456 0.492741679296824 0.447434273093542 0.659015663870485 0.742678019542895 0.118860060832843 0.700972043317557 0.62650556476451 0.340777011851314 0.26292666432574 0.906874603910276 0.329314472759884 0.229588047632822 0.320730448361562 0.918923994614321 0.670525357800447 0.657770099116153 0.343124235890309 0.168804089884444 0.95567737378279 0.241217612287977 0.705464033867238 0.0635254316373532 0.705893063045 0.512792380465007 0.533968593665644 0.672251080710002 0.209944120890044 0.74150322992922 0.637256954538938 0.751232114535001 0.527303299565242 0.396990604874826 0.192741603783375 0.878154409494947 0.437830454920159 0.553337528274521 0.830399901818191 0.0652194975707524 0.154535924253970 0.930177764914066 0.332998459117222 0.925006598949611 0.248447384120231 0.287465979245351 0.761225173331361 0.439398327417283 0.47693327138032 0.506801555346779 0.483031460920964 0.714025763721902 0.716050154918052 0.182984503476854 0.673638513691997 0.965461298139048 0.0768210005824049 0.248963884258706 0.660099734282606 0.683428161638317 0.311759985693648 0.449710191384941 0.651884037470743 0.610580007415378 0.790326807308691 0.605165237875149 0.095700431121103 0.0262831426990702 0.984792228749384 0.171736608225158 0.852658082910165 0.431517332332223 0.294562362743176 0.765468884005884 0.451417466901756 0.458562600082898 0.346720475762354 0.428329115110669 0.834457357110379 0.532235585859639 0.773028007998822 0.345185428420755 0.278412168593051 0.653421212427475 0.703937059351988 0.482527033335305 0.290007059291065 0.826476598375283 0.699647823314837 0.147081510612458 0.699185206198449 0.557457910248054 0.815414362617587 0.156013126174779 0.892187821390988 0.153471880494161 0.424790858257552 0.64453567851844 0.406158150024437 0.647772580683608 0.0933932710807105 0.772970025913443 0.627530904383375 0.777111208878363 0.627445114754294 0.049099867683941 0.601827750689156 0.454431818935521 0.656730599591176 0.426096960497287 0.479624583172135 0.767073425085193 0.387676736841473 0.352573955953532 0.851703207282457 0.0161852277620771 0.65863926317261 0.752284759522437 0.734926901913623 0.360666249487037 0.574284167746768 0.0783563785648953 0.105426627992275 0.991335212755188 0.543170941509231 0.502859484672188 0.67238208406768 0.938378088366078 0.179001667324102 0.295643309360480 0.472838476167634 0.0763793689128519 0.877832539531284 0.81082352813983 0.254100090152070 0.527255488733489 0.561108946866709 0.454611937844255 0.691725910831468 0.670522205808195 0.304681927939561 0.67643838914209 0.171863557486448 0.667941443795174 0.724097469453472 0.669063050235367 0.302984258249716 0.678642154646038 0.950900414697115 0.0535793088254969 0.304823980347079 0.278338403016503 0.893588255607876 0.352175755619118 0.227758758227162 0.498256202617609 0.836580363506042 0.9651197260268 0.143216277151558 0.219164350186795 0.510812075354537 0.654543769083561 0.557353997048444 0.263373778034223 0.860781900504074 0.435532745965875 0.504676754105969 0.775882520925466 0.378560018474491 0.70543119322736 0.705822060240617 0.064668778398188 0.716213707100272 0.66483168849253 0.212218641353338 0.866859818814729 0.409791121898756 0.283945929601843 0.111567043428751 0.978789653334428 0.171824356090856 0.652234021993721 0.301515829403864 0.6954703337834 0.0666990027157267 0.98211173365991 0.176090276972504 0.445334571512304 0.698860297910685 0.559706533301283 0.146414882895715 0.813359397944879 0.563035675460604 0.0271353059952913 0.71110683133404 0.702560139488857 0.603979066789011 0.501645123060253 0.61932338676215 0.608491010788763 0.517648856188326 0.601480133899854 0.429863421942927 0.768422169036457 0.474072577364293 0.576169910142846 0.68962621596032 0.43868430209689 0.700769273840782 0.651616263491309 0.290376772477221 0.826186222780971 0.0767967187038297 0.558138503673807 0.494963463402905 0.797599846007813 0.344739982515104 0.0911068521444222 0.559652853783893 0.823703966691844 0.80832722605801 0.586318831100326 0.0532665364981587 0.93280082325382 0.0390561204744079 0.358269791624251 0.566399022494314 0.61157371529723 0.55242170311731 0.622978566637721 0.5370182605929 0.568778597786332 0.765618456688613 0.613232576716716 0.1943558222208 0.474689227934718 0.0220536616172378 0.879877135111496 0.865115299503515 0.479936088277845 0.145728753969502 0.616046142180685 0.536727072718462 0.576551125326598 0.77280368312554 0.109643377034771 0.625102229415326 0.908551371166303 0.114041096663974 0.401906748168662 0.0257610935175364 0.711102093732117 0.702616665295223 0.914964741547467 0.0175895119458715 0.403150258333643 0.646805903973301 0.121764477170093 0.752871526015412 0.349090427581596 0.669216594604046 0.655961144335137 0.591777983473546 0.355730454902973 0.723363436821704 0.567953826837014 0.622669604252288 0.538248097554919 0.545113313297736 0.200040547681683 0.814146949235073 0.632615840739104 0.301226402679717 0.713484304224412 0.556468253395695 0.516419481267222 0.650887088772268 0.675663761539441 0.521367133766544 0.521205135402973 0.609184226276513 0.60588523766716 0.511661662852411 0.690747401953453 0.169691115317379 0.70290323094783 0.814767090013067 0.533587236654462 0.226802226424463 0.88116508054591 0.384969691048548 0.274493056015092 0.277688226043217 0.829044761626384 0.485359693770324 0.647371249993236 0.728872695089286 0.222834151411932 0.687878766393212 0.5171393155908 0.509303181823589 0.207514187751085 0.596186683588169 0.77556385952038 0.921716283906491 0.277518406840106 0.270966097227195 0.520243256524909 0.264363708673252 0.812070676466576 0.477027969600526 0.513202693375414 0.713489531619785 0.666061026554283 0.667875340435711 0.332122324668695 0.115275908502091 0.336693637067955 0.934531358316547 0.631344670915717 0.680002591009665 0.37282755092196 0.856628351697253 0.481117177285961 0.186317279898666 0.231596558078402 0.269998751801310 0.934592803477521 0.224441093141894 0.95175324961623 0.209265256443152 0.536230135254599 0.259383935480011 0.80322924253275 0.600835212609739 0.734990604580025 0.314302177000572 0.235842894541110 0.888284429326712 0.394117877937792 0.341103615565078 0.781825633384352 0.521916662343317 0.703852226105977 0.658004800579107 0.267622357475062 0.505182223940772 0.594201257519889 0.625872020604882 0.0633685869501454 0.457954089646478 0.886714426387666 0.439278416154825 0.771348651199841 0.460495093777007 0.507145630777623 0.522712861430679 0.685255115762092 0.536150308378854 0.505111383598323 0.676317482388743 0.0250506069694214 0.434688572660715 0.900232365497183 0.727237613728117 0.254942397956697 0.637283160693206 0.863579546164721 0.131578737305886 0.486741618659143 0.367716741172561 0.670064529811807 0.644823948182381 0.434771653325322 0.188634576237421 0.880562664500656 0.622987325423979 0.615383043408718 0.482898024686477 0.0815516677773574 0.309609191829142 0.947360266117192 0.84982659863326 0.0537451248757095 0.524314994833755 0.478839476815371 0.360614727129248 0.800418499299385 0.780254578784904 0.625461833919165 0.000535346305585524 0.667302065941662 0.697468906598804 0.261237587490502 0.578916432645096 0.325227302129361 0.747718507169064 0.198152873506357 0.304271877136032 0.931747854038467 0.908040408721356 0.336157177090241 0.249921924648224 0.344276712853448 0.838507860268766 0.422348331658027 0.330903795629124 0.677751625222543 0.656624255222453 0.638507469919762 0.731912826467732 0.237932396509344 0.603562319694501 0.0952521149495546 0.791605685201054 0.195621087323043 0.891729190165524 0.408107144756483 0.524547927723596 0.841849947758494 0.127035967268731 0.72820142839238 0.682505588045225 0.0625204124613677 0.343171120253314 0.132084918721013 0.929939329456793 0.0560707883617615 0.71252072173222 0.699407097329364 0.686835818711649 0.458463424406372 0.563975040774219 0.708479881895414 0.687804676733337 0.15805373647342 0.428897153594883 0.441331328144484 0.788209293548632 0.0630221016346647 0.572869707337196 0.81721999065181 0.703247304702455 0.524242456845878 0.480221901696424 0.912547937373764 0.351284800861683 0.209416452740602 0.394894332519793 0.747864057599253 0.533627039696199 0.530776350988888 0.790925996997483 0.304487327329822 0.615795057477015 0.540966285911412 0.572845463187143 0.443512774241572 0.416716882302053 0.79350076187046 0.0481483393256154 0.757308374876674 0.651280095474932 0.470333815368892 0.382234082283105 0.795413859862734 0.628641920973969 0.504932696634878 0.591483141825013 0.989512707758146 0.0674025081313559 0.127755638164208 0.599748091642601 0.685415357695547 0.412926160476839 0.692256770189449 0.663013972735658 0.284943917436665 0.58885448510435 0.718077640994616 0.370964818919663 0.0597331001907148 0.998023397234088 0.0195257602908813 0.493814906642416 0.83975808363254 0.225728152766875 0.665899162026761 0.350173452938447 0.658754020002325 0.515279965273492 0.588864002929445 0.622676274995008 0.194626811590809 0.129150321679899 0.972337697829295 0.897054274750932 0.135562374877319 0.420614396649355 0.7759874461081 0.164939708226086 0.608800768834042 0.176048291213794 0.981494848248038 0.0753316800772702 0.749005778515371 0.485505907006637 0.450859576822148 0.217409534672093 0.0784401032953102 0.972923555285144 0.271768439562818 0.782336363830454 0.560438871855026 0.253391569144955 0.578330027990304 0.77545282990714 0.898314252195297 0.0139648603865331 0.439131514443212 0.728010485173005 0.68427365102629 0.0420749805622851 0.219341531504681 0.974273876366585 0.0517658805277198 0.348514014904375 0.679596173551604 0.64551299158828 0.721076984513788 0.422186125460858 0.549369509413156 0.0772202561105136 0.713460992089443 0.696426912757522 0.556365905827693 0.357265417690809 0.750212236740206 0.661370384438227 0.135481339545006 0.737722184310003 0.0324296311736465 0.643940940103072 0.764387587995195 0.647200038135386 0.255888100347994 0.718090099317523 0.941809879481574 0.279531272275907 0.186698737892672 0.746479267716219 0.271476446463605 0.60751069281565 0.76007597840394 0.504134932700741 0.410039603799574 0.633229113906191 0.586604955225424 0.504891588171716 0.561996383998824 0.687033611385172 0.460591881386651 0.573116336794378 0.537543931237359 0.618533900840753 0.755535566954379 0.0289630949974015 0.654467070367254 0.309052894420409 0.646843001560511 0.697194692881806 0.315817714449993 0.93899375292701 0.136198029367656 0.872911015240848 0.487366297953294 0.0223707641910857 0.572184595775974 0.501290122965567 0.649086281609658 0.209905978736031 0.971031192800664 0.114183635863414 0.701346046775931 0.394985205579231 0.593380493482307 0.234961915507400 0.729133830201904 0.642772709374157 0.204025096211266 0.488810641845036 0.848196861898833 0.250498492938733 0.606181980749135 0.754846945579353 0.271309977697230 0.705203873116373 0.655040757009512 0.372620364392951 0.689155097534047 0.621465458076716 0.171988147696668 0.748399001180911 0.640561481891695 0.874543706918002 0.450284905615496 0.180046684126545 0.94217608098562 0.294283399794517 0.160316914341436 0.583210621082766 0.703802050362274 0.405620568218765 0.648843217562856 0.611839003227079 0.452388674872365 0.282977922918308 0.65561136306507 0.700069450669576 0.556060128889895 0.544957246179148 0.62754978519301 0.567666033566802 0.376781319378975 0.731977534970557 0.647471605223157 0.406207892884774 0.644806690557612 0.823309529696694 0.503024695599464 0.262921231412898 0.405999260034551 0.265935826802527 0.874324160065507 0.663860975464393 0.338797324402569 0.666712065462389 0.806597687810501 0.335493743768707 0.48666633118679 0.767746244738151 0.421674925218892 0.482447884368985 0.421383454302043 0.798620447914726 0.429699155936987 0.658550764679486 0.193051792413051 0.727352662596469 0.821564900061167 0.569325323592777 0.0299965148552866 0.701380255054733 0.177297552043073 0.690384904136013 0.187722998118793 0.926014334847495 0.327501950580823 0.400116262751307 0.636392969447172 0.659477796987994 0.718004673276293 0.0340558887269594 0.695204635770232 0.954258458354845 0.234838072489874 0.185045600778495 0.940737128120944 0.174625440856078 0.290722567374085 0.193198120282248 0.878984514449549 0.435959527567981 0.322278347233806 0.836310713339793 0.443532476440377 0.583746587487448 0.236959734435117 0.776588697994761 0.76204814345871 0.556213381246855 0.331525717815487 0.475745865203509 0.858371606337642 0.192000148893436 0.420684052087839 0.299458404581724 0.856358331683838 0.0494079319600252 0.982939515056797 0.177168750064291 0.285257384606495 0.301615341099680 0.9097562368793 0.533973778146541 0.656330918074804 0.533011941921561 0.107833247059545 0.129126958516656 0.985747543447526 0.575348183506634 0.693880272416519 0.433018054227296 0.853262318962607 0.281309462480107 0.439099534681725 0.234391798876182 0.717801979625823 0.65560720150471 0.953569795722053 0.135017249404697 0.269211788467353 0.197524648268325 0.741190426808306 0.641576779921309 0.135019725055297 0.92440964570111 0.356702229851089 0.72641639822288 0.146088002940702 0.671548592277353 0.177095728157001 0.735186247597386 0.654322767762377 0.276576849992221 0.835449780987535 0.474898841329668 0.398495526936192 0.907386986136269 0.133604537357027 0.62735329499203 0.774834757557746 0.0778392044093 0.474952159762145 0.221701146851075 0.851627293727832 0.512498985830117 0.841245955525247 0.172191846019246 0.659084992633766 0.0199871123935913 0.751802825096524 0.411825379241967 0.562428689863501 0.71698941821385 0.93912940258638 0.0425062540307033 0.340924014358078 0.459188319296142 0.296739484454812 0.8373122271814 0.160265788968822 0.496413662883111 0.853163731173082 0.265104311262897 0.81411700342702 0.516655793426179 0.967102508584905 0.181155203226131 0.178593197610892 0.556430653445524 0.663704061377655 0.499881832853519 0.154375977235627 0.0658840848967508 0.985813037553198 0.617070892465963 0.716777652140978 0.324735755750005 0.405180288145809 0.729261262246107 0.551368248528417 0.375260841531607 0.34526155115817 0.86021727610229 0.817780532878574 0.492225663302436 0.298243015729310 0.889350012189986 0.439279787983875 0.126845668773177 0.832899801046533 0.406608676548944 0.375429494807963 0.0126894894360297 0.706834430448907 0.707265201172673 0.521392262619226 0.75342035528239 0.400634342920025 0.444370761149637 0.120883270722556 0.887649627665505 0.928772626632199 0.361841915462079 0.0803233230977141 0.266441025005609 0.946048586829005 0.184394282863660 0.401486119574357 0.00154116292140909 0.915863811167345 0.724278172738563 0.682196925551822 0.100142315042795 0.636487874841741 0.399105683379249 0.659998362629656 0.976380084158092 0.0202460088295114 0.215109345184984 0.554838399014109 0.313875396786864 0.77047815431156 0.488250757567667 0.310588959685488 0.815564648483543 0.263162241198663 0.617201445106998 0.741490398430843 0.602233344267263 0.520724753974337 0.605112162868202 0.758734976722335 0.246790070886586 0.602839859340731 0.722034789232852 0.260128817121503 0.641091851173011 0.860229684262725 0.488933713898565 0.144736704835400 0.898098288586192 0.138119534042698 0.417543361046946 0.287656872014774 0.847684189517011 0.445740999713471 0.56620134755967 0.0698620736847055 0.821300995179043 0.0902436224949545 0.878551068752504 0.46904595531016 0.346680586025403 0.378910695751493 0.858043854309442 0.364740009246689 0.509332526828733 0.77945179630878 0.171316477997664 0.672489351550115 0.72000606693151 0.192301951334423 0.695677306202164 0.692136579836865 0.652784305359607 0.0553916989864996 0.75551598947975 0.630900927408588 0.658609537208626 0.410118881902337 0.744065573558302 0.621821429615066 0.244345108231844 0.570863267673104 0.146981478717556 0.80778188549607 0.769722613292127 0.280901167280689 0.573255294617577 0.846267927185288 0.501322803845861 0.180294319826332 0.568898591116208 0.189377142211860 0.800306623134947 0.613047725964411 0.69914767183679 0.367919853575559 0.946863434868565 0.196858645060576 0.254354692454880 0.514216743356914 0.265104576084893 0.81565967449069 0.878312055945596 0.378103816814282 0.292584066707487 0.967940781594023 0.172809998540015 0.182283701223539 0.977093602920684 0.190399701786894 0.095058112178493 0.521550078760572 0.633817354604631 0.571192678828107 0.584471503094365 0.810174606804014 0.0448349033742236 0.573543752094783 0.292013119349117 0.765359982335787 0.338864811564706 0.677548704173387 0.652762125859168 0.348907697078650 0.771423018170707 0.532137149572993 0.169250582792037 0.12337480687078 0.977820483143073 0.91523916685321 0.369074632714197 0.161620490485340 0.504538859592544 0.614396877228705 0.606594606316831 0.382181577831995 0.333247070439207 0.8619069738722 0.61915989704477 0.686411925055761 0.381418000404746 0.059850211742813 0.47920663320418 0.875659154493034 0.570551233902667 0.587376098516356 0.573986592512271 0.640629647778046 0.693192359798004 0.330269597004404 0.851242828655876 0.520960279857333 0.0631350415610292 0.127671906018112 0.672375362303594 0.72911676470975 0.505173709593124 0.667404242257258 0.547148152288698 0.0881056677722352 0.80035257116927 0.593020364851957 0.671369934864517 0.566914773581816 0.477357360951617 0.011440396477529 0.416881524536746 0.90888883359207 0.409048970542883 0.788589781456273 0.459135161233112 0.733057002227316 0.227774378988723 0.640894892912872 0.56283739975437 0.525836430425068 0.63773827694091 0.421358453700798 0.76574951116303 0.485885521134818 6.40343176017625e-05 0.294694821581089 0.95559141793598 0.801625256041034 0.17720203807896 0.57096093261957 0.650373212114067 0.355942682366287 0.671058486150294 0.638837577182962 0.724118557450606 0.259882405588867 0.898216803633393 0.249124597875604 0.362137416464978 0.687987290878806 0.0582679039876517 0.723379802699887 0.481886190386836 0.600127190974624 0.638461474301597 0.219146376254264 0.0495523985580852 0.974432873815208 0.335769362737224 0.335451416059867 0.880188208572729 0.664111843569985 0.259844765437561 0.701025075945771 0.657419415494033 0.747169980270087 0.097656196499154 0.488636197019005 0.529824398966558 0.693196056842889 0.153085569778608 0.946376170055287 0.284494205700301 0.739358437145675 0.516683439034343 0.431725983986544 0.209469879318613 0.455975288708876 0.86499069691246 0.538143284975051 0.533701254622286 0.652353259860683 0.947995529657542 0.243790925203064 0.204622727325072 0.170764863418757 0.436334185104913 0.883431853812395 0.939839124079725 0.00217422141415657 0.341610441307489 0.439276447973462 0.682828297606461 0.58376512249678 0.442711947890112 0.659426346507895 0.607587874077974 0.660079880342809 0.0120840983361555 0.751098213374273 0.263004653922538 0.589766989525828 0.763546626003106 0.699208210688877 0.264793381535937 0.664072543627594 0.120895697667361 0.780925026197015 0.612813457542108 0.871908576730947 0.162177370987338 0.46203239514416 0.097254839894823 0.375967108385224 0.921515181388503 0.128464522854785 0.691065918027494 0.711283883768295 0.895428208875732 0.442932269366893 0.0449369280558102 0.205550356559928 0.758905925454912 0.61790844566773 0.145483587636737 0.921056172773342 0.361234068609908 0.874532979321643 0.075216878954181 0.479097577951717 0.00531318925345733 0.755382688477721 0.655262362697666 0.551584543434614 0.666652033087212 0.501327795184663 0.783753594336156 0.335807760454066 0.522459042781328 0.253902478785409 0.565351585068783 0.78480004875563 0.743784753837705 0.591125828312135 0.312016818554508 0.0663740166369958 0.648911145328019 0.757963597664525 0.702607263650532 0.207599860556848 0.680621283065913 0.581322879885123 0.268275592615684 0.768174404499896 0.774763498275504 0.173657470298782 0.607934704346881 0.328784648768271 0.839936388279246 0.431749369864903 0.250335866677209 0.851257573613023 0.461185968153239 0.46780716985805 0.696967874292131 0.543499985311968 0.597739951091167 0.531526201295434 0.600155686639704 0.172337635442845 0.335246754468800 0.92623396235946 0.606768579479392 0.348226885190825 0.71454176042192 0.0737069624032128 0.717838513890199 0.692297011165874 0.841613738327033 0.164457249345649 0.514431850293952 0.541922788491309 0.645760954187248 0.537877756893683 0.110838170230945 0.985790304242741 0.126223516354359 0.336843650827391 0.681935209544087 0.649230871787022 0.68852211849456 0.718932243256374 0.0952560861579005 0.45222516092742 0.546433816478710 0.704913106724992 0.964829327243534 0.0667169734309831 0.254269964303689 0.163482825629575 0.913956278197868 0.371426018564762 0.397087490042324 0.545924839700472 0.737758493444773 0.642168594736627 0.583599735752397 0.497021975735197 0.781701850040305 0.346496910155753 0.518538435312254 0.417965935636605 0.125917298116908 0.899694009473418 0.670830780403409 0.741596865204007 0.0044892742112472 0.105732892054630 0.243363958512117 0.964154831567563 0.325513387448031 0.696729658061694 0.639225170162552 0.952023250016065 0.23035246743489 0.201468290744492 0.152975635747020 0.919314700721744 0.362572662930737 0.812724872164707 0.215993271667555 0.54113324492144 0.984583190119775 0.0569458831826291 0.165387750822475 0.475828035935246 0.637220071613404 0.606249338598414 0.403078373562302 0.633354658661401 0.660597987522116 0.428698649144777 0.838970034303942 0.335181666803968 0.814365517163917 0.0153831696763876 0.580148397002916 0.809381012265584 0.277224596476199 0.517734391452362 0.274778674993206 0.85316732414144 0.443398462769453 0.324856283742671 0.85459983653083 0.405126541113243 0.486643079123983 0.692229146455408 0.532913991501768 0.688155815334676 0.722566353602057 0.0658744143297938 0.78697913062015 0.6169777303219 0.00152586211370517 0.557758638879274 0.49034893304482 0.669673968896317 0.99781889857316 0.0234192071877570 0.0617169861945908 0.267363799004796 0.541485769391581 0.797063209869914 0.313001302932309 0.788333292560404 0.529679907305864 0.744855616896113 0.622317562482152 0.24064696425383 0.922331990471862 0.117359756033052 0.368144519198746 0.238135295941417 0.895379630887385 0.376280344183514 0.177900118114271 0.228773034382317 0.9570864363862 0.432411951288784 0.894056197778261 0.116976149692597 0.401256964700961 0.0145373098198459 0.9158501596343 0.610704457680321 0.617498599634645 0.495717202463902 0.559838408506295 0.651289123925458 0.512253290294507 0.620546356717101 0.339012744719265 0.707101533079262 0.749223051090434 0.0184934026145126 0.662059524343906 0.267772514847007 0.85431893916955 0.445462715015213 0.282837763404417 0.206776951729012 0.936614163797476 0.717840626377921 0.624380394537564 0.307983697682961 0.316719053995295 0.0676829157558756 0.946101508164482 0.102165114272010 0.689194843356843 0.717337268874359 0.871896477218454 0.276425526457329 0.404209674966889 0.261899090261764 0.631268253905084 0.730006341158546 0.50224842681055 0.684233054134684 0.528745350235679 0.869571013870087 0.425637215783791 0.250358168184644 0.0707902242350755 0.9937861006942 0.0858948788913757 0.596131858849593 0.668279335587932 0.445005097151349 0.657843326082165 0.689593118247252 0.302825840368993 0.58136275931457 0.794528397462314 0.175333874958937 0.56214988023932 0.624823495410582 0.541833103205979 0.164938032331823 0.84351633669995 0.511151284074297 0.49450350563779 0.0689120035099356 0.866439506650166 0.204186070379256 0.284103821779868 0.936799373992719 0.683511519658778 0.450547667223568 0.574298530429209 0.417833037713745 0.819853156883477 0.391479697740637 0.279762247870411 0.728389639989762 0.625445135101457 0.764181192460372 0.350479783246573 0.541471168784894 0.439525599963897 0.399187654199729 0.804653008265609 0.350341114236406 0.916722884236957 0.192042331770543 0.589212679878566 0.335786713480646 0.734898428981982 0.659616279731365 0.216847641981891 0.719641204823798 0.930488021711725 0.313678302752145 0.189203498470652 0.102185967274478 0.585443092122582 0.804247731720848 0.646523570201393 0.262094077720667 0.716459327246005 0.0544923641762898 0.982476967304191 0.178240261902965 0.65568755162112 0.575439727172451 0.488817916039088 0.60774566404033 0.279705039169924 0.743243095429167 0.638483920886778 0.691868803845321 0.3371288196442 0.168924133415227 0.562267405471141 0.809518376502143 0.620022455519387 0.696672529217891 0.360859448656754 0.253428345383674 0.841646094396418 0.476870973685073 0.546070006569142 0.0112962501590747 0.83766338266509 0.929189123568503 0.0517437053676589 0.365964699932688 0.664427014842229 0.646799278555042 0.374416125732482 0.69898134372646 0.00844819453527569 0.7150900007212 0.0765709912677142 0.899033089265113 0.431133839663168 0.551004753774867 0.127840725384170 0.824651750892913 0.566123897385614 0.575080007512943 0.590581677473859 0.528376896695233 0.577830540277685 0.622036752741439 0.450555234344757 0.609107105385973 0.65267795655504 0.304275818781149 0.42463980043773 0.852699985920761 0.158109189766460 0.864822322792837 0.476533140621506 0.144277781751386 0.753032198631375 0.641970738832617 0.97489811905489 0.0338126035252602 0.220069001238433 0.753230260361643 0.622214942552589 0.213290272023383 0.090169030303596 0.505154043193071 0.858305853772303 0.909704864196446 0.403903546871349 0.0964312443250086 0.771564267348944 0.126504299400306 0.623446263589354 0.42382938448568 0.698957662006244 0.576044129880042 0.093071570231874 0.471321624859808 0.87703683432002 0.305024187264906 0.71133899880629 0.633211713379221 0.668043741283134 0.393952481662233 0.631283614490826 0.618305748428842 0.489720401013604 0.614712884435428 0.907918597367929 0.274747826473540 0.316539811716502 0.308578279282958 0.774737640657938 0.551870486348509 0.553578253630841 0.700457418491432 0.450455904598162 0.996700264654167 0.0694529044598148 0.0420104332328122 0.838937009852226 0.357423940548627 0.410405677620203 0.644772960439307 0.309872744936706 0.698746528743952 0.936220711710213 0.0829250146961343 0.341488244164376 0.925321710794937 0.0883411222353288 0.368748664612815 0.0498398126853879 0.998385856791633 0.0272336929174532 0.86411056661414 0.467521659405829 0.186377108712985 0.530076245790405 0.845560313788979 0.0636154807718504 0.74486888708967 0.65240211526356 0.139792063599584 0.544457460199140 0.775191663771082 0.32038095831888 0.259433231681848 0.655681905253732 0.70906673693098 0.677422046720257 0.441945503802541 0.588033623431566 0.701064258758568 0.594918907169788 0.39316713873772 0.261271473633789 0.904394497254549 0.33735413203475 0.0509712686398599 0.757791710105693 0.650502616342419 0.377947684304305 0.0206828902144784 0.925595897776881 0.552741850336408 0.51944822226079 0.651651740791651 0.831047025429964 0.0827942052458368 0.550005419156683 0.937688075726982 0.256391641486478 0.234530166109391 0.584479291225626 0.518996907866918 0.623719622709569 0.144742379403291 0.384064195018251 0.911890529454965 0.816784627006375 0.333703197660616 0.470643228950694 0.0401321445227499 0.995044462541674 0.0909721305739109 0.449674622616004 0.212159172765316 0.867629655548202 0.678801175951804 0.213285671742171 0.702665059438662 0.628609246546282 0.628308554609161 0.458343512402502 0.83472995239069 0.41083293033217 0.366663619597742 0.690471044920934 0.273655807788236 0.669598562565334 0.701817098278369 0.369270495536381 0.609173260813741 0.612867505950056 0.654152838686452 0.443257807363858 0.443989688943295 0.335837091593182 0.830714514151684 0.0111435027464086 0.822015528194146 0.569356034265239 0.84407327688664 0.518763188042316 0.135738933169608 0.130731678496784 0.481341244927104 0.866729389238325 0.192736035791840 0.656896767199108 0.728930351783082 0.772624632394039 0.629773014796594 0.0802317097660646 0.452301349496400 0.546414431935543 0.704879250521884 0.497175118113976 0.034327828516394 0.866970877318093 0.291222791301201 0.448647653449548 0.844928735977746 0.683350494751314 0.273332025078735 0.676994612526194 0.221487039690930 0.720538750077757 0.657090101040437 0.673968076876024 0.737814510546641 0.0373735117276276 0.224064827690523 0.723667392024883 0.652763708176183 0.87001212316361 0.473688665931085 0.136740459691986 0.575683789227007 0.641330231304974 0.507231415860201 0.217063809795041 0.651690040807801 0.726762267312489 0.693693630364191 0.0697112492123472 0.716888756311189 0.288893135072033 0.58613248320487 0.756960678397726 0.809306225987043 0.217413087551706 0.54566929723033 0.203952420481709 0.471573587648322 0.857917106492313 0.0630943235666157 0.740693883494714 0.668873438915906 0.350659071134325 0.675451721589763 0.648693446577533 0.843367715987179 0.390897482487595 0.368686931983533 0.69153437980717 0.707821741357763 0.144113094498651 0.269450980355634 0.724828558288502 0.634050258477039 0.38477425889663 0.644110912912697 0.661112623958522 0.105973220246124 0.969726725287544 0.219999442848757 0.614668493290005 0.576996288902222 0.537827040924551 0.640208440992852 0.610365544707368 0.466462274911466 0.84795073044364 0.444163298644207 0.289306969977557 0.302508438952268 0.376811641048475 0.875500788996228 0.327642897704524 0.730299430473436 0.599427121036375 0.623662516059891 0.666635696481423 0.408217973928848 0.759389589451249 0.645007857669588 0.0853950524184666 0.62166302138597 0.738384933102388 0.261386262853749 0.603814645153379 0.726161506121521 0.328781601257769 0.571299516982436 0.788950685792283 0.226215996966444 0.898042081259942 0.348688277196023 0.268210562119356 0.444630664201921 0.880735505948238 0.16312124635822 0.548944889241058 0.635891654649712 0.542495448942177 0.710945979692063 0.67040358235172 0.212402567615542 0.86899207270109 0.491234185016829 0.0595126293614593 0.492244751677548 0.756591592347258 0.430423357678635 0.681729685315736 0.704995970280008 0.195512961330592 0.784545215340292 0.392344259748291 0.48016120931331 0.222715315244996 0.530478743896813 0.817918205341452 0.607612637091527 0.718601842961778 0.338257704330023 0.0511429975870019 0.477032872737553 0.87739616600802 0.930105706824095 0.00220827344908005 0.367285308257253 0.34401730966671 0.827084313185442 0.444503801482331 0.676007825337804 0.639320763041636 0.366445605821538 0.139161429025879 0.639442592889056 0.756139713988623 0.435852269228275 0.210438734095204 0.875070476362316 0.489445147555181 0.387420993572479 0.781247989612773 0.671862237731807 0.0878799300134074 0.735444254454984 0.438793001367032 0.605521956266753 0.663930615674707 0.458201616820083 0.267705699677464 0.847575917958776 0.316188591505857 0.821519687272995 0.474478848869392 0.107215124934380 0.734581881843328 0.669995802862092 0.628308586737519 0.777310723711177 0.0318803801029447 0.165583347491132 0.0551248576766787 0.984653951954572 0.147278733818586 0.214501695054113 0.965555797136399 0.598540229647217 0.659068177588092 0.45538854924621 0.363475096203829 0.72915283187236 0.579846533327686 0.874051172443615 0.391206995351063 0.288082687328371 0.85044564044718 0.0206687995331491 0.525656744815705 0.637626468968309 0.00986848656906026 0.770282480031736 0.0174097313110285 0.0687567826213088 0.997481531708354 0.899044977503515 0.216986441007443 0.380309101711526 0.933902508046477 0.00776380192744508 0.357443462444246 0.287207207826033 0.582578185957494 0.760338527906648 0.933484271749017 0.331349352210216 0.137166764148892 0.197758444049045 0.730806154577136 0.65331000469875 0.333220757847695 0.917007989658876 0.219226534528088 0.904976073732587 0.374193674778506 0.202478146295617 0.704605377077593 0.708355912899809 0.0419900375472706 0.247037414810798 0.615927969779976 0.74806767857348 0.299845294281897 0.953854086800943 0.0159743729185556 0.150827569621643 0.462187427216404 0.873861445748186 0.615206427627887 0.752919654788592 0.233737127642058 0.084069669555339 0.763239619641138 0.640622801397911 0.710373291247197 0.0540208926978813 0.701748908253337 0.541024074499688 0.83925231846061 0.0543000623410806 0.854076813169559 0.066751486435123 0.515845942375078 0.708415598015577 0.398162147836972 0.582764313010055 0.210807450866794 0.290095714552551 0.933490597198113 0.0934555661343931 0.97462475853609 0.203402647984164 0.88135186440798 0.369517112587061 0.294407871175177 0.975507466829083 0.102712489586614 0.194513050059951 0.641356764662069 0.5636432161782 0.520545699510137 0.848256399161039 0.358747170915143 0.389565846350432 0.685864889255445 0.595820295900964 0.417836724904722 0.796643955240403 0.58527042682845 0.151052759190191 0.4142452306273 0.631453765931012 0.655489916317617 0.507965879778182 0.760917204143143 0.403702456544619 0.601628482154255 0.489629330089872 0.631115115154526 0.565527613510881 0.820923789054409 0.0791369125076323 0.568097357847838 0.661827878556235 0.489131118588931 0.415567557691144 0.113619021856407 0.902437988377601 0.309538959729376 0.764021350136135 0.566089223484967 0.190692411140902 0.617904368760583 0.762778208524506 0.00874503429883629 0.709512892618201 0.704638190551482 0.697747934881376 0.548120997569156 0.461206235205649 0.706120521082553 0.601223344333914 0.37406456653103 0.293699855812628 0.47485866643315 0.829608125327236 0.263354135413823 0.502094190023314 0.82373905073468 0.600641629943173 0.795662831206415 0.0784237936840629 0.438877673863119 0.106445758997011 0.892219528914296 0.823215795650466 0.548408957043529 0.146844712625275 0.725051313788367 0.677447208267452 0.123959156113611 0.434433751951121 0.144439435218746 0.889046998037427 0.62930355797816 0.165603794096627 0.759310486755471 0.520093939305266 0.705159192245394 0.481926143604757 0.498063055617894 0.195106419446449 0.844906312983489 0.396430064230612 0.353551387934198 0.847257115794205 0.768260603944939 0.631271988206421 0.106166479324079 0.387939639747410 0.181467061041759 0.903644034822073 0.782806022702601 0.528528995762324 0.328438474389046 0.545939739633107 0.705870392888901 0.451327806734975 0.0490520221800786 0.88866767203637 0.45592068147596 0.34138949913538 0.613510017691472 0.712080520778588 0.918333092818846 0.0616331363158506 0.390980417849339 0.650308018439883 0.691143158695559 0.315310347659443 0.888769550284122 0.359662175825383 0.284133429515625 0.852424628959281 0.230817199842542 0.469143551805286 0.729094364802856 0.497445994774329 0.470073280984676 0.845307060101523 0.479155636621707 0.236359577838865 0.788638293047182 0.603234426360504 0.11898684630303 0.897222531615912 0.394800498274634 0.197798623157076 0.470767227517306 0.811724620088072 0.345660756578678 0.232334402952359 0.335029264061216 0.913113419804665 0.949610967570626 0.294978282004473 0.105956705381344 0.182436546304260 0.722053901522786 0.667349286257426 0.435407609116719 0.679287721518346 0.590752406104009 0.954098963423994 0.261200919686269 0.146523880471094 0.84082248305346 0.255411044528258 0.477265911547011 0.399455475403726 0.312556824683407 0.861825710056163 0.61234732266995 0.197761671001467 0.765454817674859 0.400726943623008 0.0904271932390994 0.911724102663444 0.301924443461543 0.874306193288119 0.38003988056318 0.713571289581743 0.532554072383532 0.455194655803826 0.484875853504684 0.771366992571884 0.412175168415944 0.43101453561595 0.856327815614847 0.284480477875146 0.664005230025456 0.744868128733624 0.0653339520900916 0.620712158641793 0.524564406370276 0.582707988347204 0.932414955773845 0.349904751830713 0.0903826028367476 0.118881997822004 0.089293012405619 0.98888514425558 0.422598262106139 0.237522244066376 0.874639292759332 0.834099905654252 0.414514461214979 0.363943826477692 0.158331241465353 0.60564111639126 0.779826939847802 0.089753707310381 0.96624416636326 0.241488059731764 0.551111150029568 0.681179095657593 0.481945577790885 0.63349666678606 0.285460157799645 0.719162340142999 0.496446866600183 0.791445976591309 0.356586279573808 0.853083888371736 0.479269270081612 0.206273716590357 0.384871915362949 0.22652557799479 0.894740057938048 0.952946709105217 0.294932842536372 0.0700513240342547 0.559106403763646 0.82597251044159 0.0718988265919645 0.741027108435045 0.448770419728739 0.499483668342507 0.0166162069585150 0.810667282866109 0.585271268863244 0.281374003211235 0.651994388906195 0.704082372419393 0.796971655958046 0.481544190400777 0.364624974858757 0.300885781684888 0.622846345403455 0.722170462146876 0.58760094510316 0.779704275080033 0.216301578209205 0.990269830791421 0.130514032614901 0.0482881922930078 0.173267032208401 0.619825057937496 0.765372741285233 0.622460964973047 0.0647058775054701 0.779971471594359 0.113402666679449 0.673052517400024 0.730848920100099 0.7184880028515 0.473167567977923 0.50979156757671 0.06839759597899 0.75211036545623 0.655478273505377 0.179666433051566 0.59495521902181 0.783420870409537 0.907154602456914 0.341671215896933 0.245624321818402 0.123660659607732 0.749639998800255 0.650190674697918 0.800005008418894 0.53228303614362 0.276887623303056 0.260859201094607 0.116702573267902 0.958296919851532 0.564475746811272 0.726831715533074 0.391257956541596 0.164321960191854 0.827946804652953 0.536192486019406 0.470079341723253 0.0931466844844159 0.87769533874494 0.205808895933210 0.727132123749692 0.65492104330676 0.0899938637880198 0.995782043386935 0.0178669121183198 0.474819720326498 0.829285255580396 0.294673035865218 0.37747964730283 0.926017880688908 2.27278435894716e-05 0.655701624941332 0.740403713928881 0.147843564112938 0.801006745211939 0.563226374344451 0.20288973697006 0.62458880519711 0.538117094770349 0.565967151642536 0.604972998483964 0.0200249227126171 0.795994141671706 0.718337261009131 0.537433388983771 0.441765697911594 0.679994863313482 0.400663714242357 0.614064796220072 0.848024909526382 0.211881553992685 0.485757099691211 0.566286802556413 0.474459139365295 0.673949391514806 0.0129464284913684 0.97470475015738 0.223121133042028 0.503601383618345 0.332391564202519 0.797434319843767 0.74165828513547 0.547697754530976 0.387259806553224 0.393118675999469 0.794044160540769 0.463628706716409 0.362282129791404 0.417247922800202 0.833460154628115 0.605382753352333 0.132878990099453 0.784764229519731 0.78290401046111 0.044185048749145 0.620571504236978 0.144478376936663 0.989247980125777 0.0226811025926354 0.530963449632205 0.0949669238727074 0.842056469914473 0.227960158059619 0.300829225510927 0.926032366289607 0.325789247947085 0.830066147578349 0.452605298871447 0.397870019666143 0.852487265296338 0.339064757765287 0.898565784628013 0.436445481089215 0.0457697796875438 0.475248306648837 0.0210308420714936 0.879600335782779 0.584530895926203 0.641746664452721 0.496472406455301 0.883209004439335 0.460078580820641 0.090937087853871 0.647894373901551 0.427468659159026 0.630478727399665 0.134086701992621 0.140014103781364 0.98102844356881 0.532719022078784 0.781394611486556 0.325012160780483 0.67091929769227 0.0973698880346945 0.735109788322956 0.95126031148320 0.179964323639602 0.250432949137736 0.298080229356743 0.709810128173753 0.638214508459806 0.0460918347197925 0.105577637859844 0.993342290027007 0.040463742866291 0.688532937854889 0.724075326883997 0.203244516807062 0.716403486771381 0.667426183581129 0.357978097127687 0.72729388338649 0.585572616475053 0.204563664145101 0.422040309729487 0.883196288644245 0.512058794240751 0.781111041375384 0.357297260389961 0.599255289470124 0.799090252512657 0.0484547869806119 0.671981904157375 0.613648635451948 0.414578910091903 0.0145406184780816 0.512697882687065 0.858445951415973 0.81819217409144 0.259480043357101 0.513061081504845 0.723416668534133 0.523371709133628 0.450278111577191 0.307775022041482 0.942379030335531 0.131134659763273 0.538333815130936 0.72254846556929 0.433728507698116 0.757658663259058 0.57810818187604 0.302893182551996 0.609645428056585 0.641696516020405 0.465357962623374 0.998716933167062 0.0254239390893609 0.0437962410094509 0.328002573718280 0.51554064273721 0.791601008918185 0.654990099951701 0.71858020951984 0.233731579919537 0.749479605644817 0.658554574468414 0.0677214380326964 0.269781972618719 0.228552434703705 0.935404442923467 0.93200172578319 0.148371233201849 0.33069436084596 0.537399721241956 0.634125843903421 0.555954992515439 0.331660802492757 0.0504890421651063 0.942046691364664 0.65349774464931 0.723773724838536 0.221567806713015 0.480525110418838 0.552562082530107 0.681007168249317 0.294031944508978 0.0475768162828883 0.954610738552973 0.351523126151987 0.786944900034118 0.507098822805404 0.903972913883305 0.268312165317557 0.332928750497657 0.720861314338128 0.590339164054884 0.363123445777999 0.673423575520048 0.156820277264926 0.722432065022273 0.508124757009515 0.552160631510717 0.661005195383295 0.324750075219286 0.643427075003353 0.693209194830607 0.0969930498334472 0.444335221806728 0.890594497482424 0.856147214016643 0.46715090703127 0.220866425677154 0.247162918058089 0.628243652546614 0.737712955675783 0.312056551288751 0.691364689727633 0.65164067905218 0.740730762201554 0.271068592379551 0.614686713825567 0.398254573788542 0.908746247273212 0.124794040416046 0.606112717666232 0.716300395407343 0.345747186572123 0.31260295631101 0.557586308980912 0.769010337864622 0.0828624479189663 0.938284237076363 0.335792354259152 0.551670610707196 0.498687813832678 0.668558151260407 0.906979956163485 0.185556261547733 0.378095534115536 0.00610671562765825 0.559359470916859 0.828902702565177 0.592970128064478 0.627440960893864 0.50468234347536 0.120715439867738 0.498308289230985 0.858554967058736 0.480350422625306 0.648582361472759 0.590427296006977 0.468417108189154 0.514376333686631 0.718333070447692 0.754058800714781 0.484473920881367 0.443486578207753 0.273966164947808 0.888103080342929 0.369073785507982 0.691881800696466 0.706139984364585 0.150551972244140 0.469858651912817 0.851802495640807 0.231657841746752 0.608090126727239 0.609788749436571 0.508314940600248 0.43628776629324 0.674509186038412 0.595558849260637 0.0904446202472522 0.364059711941829 0.92697373037706 0.73468251345789 0.129695720908915 0.665898358908561 0.459562741698214 0.509648758925462 0.727365265165004 0.621664583096221 0.312448303518179 0.718268197647935 0.190757395244985 0.658511856087668 0.727992961196276 0.365053012471325 0.449944467708456 0.815037590583505 0.672147067994246 0.11155425255106 0.731965824150631 0.768204677081127 0.0426133392082413 0.638784531303166 0.678485957049718 0.458128689534564 0.574260315459523 0.264112667870860 0.673011513449526 0.69086901901483 0.685797160356943 0.714289399714204 0.139545362883452 0.718713215922556 0.677291605881832 0.157249463783716 0.887114902010165 0.340266512287078 0.311842670665007 0.219276839345461 0.549150862794435 0.806443424933698 0.567814298464267 0.771492962687619 0.287028798177139 0.164866533106561 0.756325595286263 0.633080263612998 0.679737359656423 0.453482308940999 0.576464150979794 0.954746259547002 0.223027492022217 0.196769707229766 0.360163699525692 0.511743947836542 0.78000015474142 0.0088161879348665 0.877852020435045 0.478850817111557 0.756301356032416 0.0225601228752694 0.653834306012908 0.81406633389275 0.576214377751615 0.0726153902057767 0.640326144261887 0.767649244916441 0.0264020028392419 0.478257301084666 0.786131802609192 0.391492966585139 0.592326414925521 0.47847337139249 0.64823811292594 0.786795059504936 0.613213080205045 0.0701658934530547 0.0750396517822818 0.8930914792972 0.44357260991537 0.544827183700877 0.125516331571676 0.829101314924395 0.932609149333338 0.330563789946246 0.144802470131287 0.586373252694733 0.518727736485374 0.622163920462253 0.467800866967341 0.635295192834661 0.61446103767918 0.194198085649246 0.202273844088180 0.959881448684138 0.759800461370113 0.607326222435419 0.232073519480548 0.894816054092286 0.393628628027833 0.210619876876893 0.55062020910689 0.803096886003522 0.227712048461494 0.107357913356432 0.478032064661034 0.871756630944475 0.656895262296752 0.404856042628596 0.636066190831736 0.640433558561503 0.314905216813226 0.700485232886507 0.361412710948482 0.618988680139546 0.697304715475216 0.848081123519665 0.433589720301504 0.304562575472571 0.344377442218913 0.803941664780418 0.484852531106984 0.0945749300478306 0.769290925037197 0.631859996567168 0.204181420708936 0.925309233013243 0.319550889120535 0.430418849293812 0.640520271469063 0.635982229319175 0.530473602335166 0.681376103227089 0.504305823064358 0.703273386530115 0.434593807771342 0.562614224887062 0.707345565006213 0.60528890008034 0.365085742128577 0.734602955085653 0.0371417751507728 0.677479879345561 0.51701187691814 0.436831476226973 0.736122938443671 0.72564244850591 0.45188171259446 0.518889154587996 0.487656424274971 0.190951905161056 0.851897048814417 0.56083970329163 0.701598715415943 0.439565774075343 0.558354380641189 0.617343965607834 0.55419023245307 0.851028702524603 0.336553773218004 0.403090194884488 0.623918618424887 0.780542257504415 0.0384622130498474 0.395653763442823 0.886055349333857 0.241586459451659 0.69991249626024 0.69671051402427 0.157216275324143 0.755993947551548 0.603885144170217 0.252578470808468 0.118256906840802 0.90109688142301 0.417180673418810 0.543425681874227 0.317571901478147 0.777069247667855 0.516113524849018 0.835796973746856 0.187270521288109 0.43987576810201 0.337192443298574 0.832352428253204 0.294291903749326 0.694166138809199 0.656906117431042 0.674224147344533 0.245767196033634 0.69643397712296 0.591153558530125 0.573383063234005 0.567247153393967 0.731807760022744 0.673878973623054 0.101708068899341 0.872335201254977 0.292810948691772 0.391526557180562 0.584296949683801 0.0102296191779317 0.811475464497652 0.615414885067213 0.47200461865387 0.631249680560018 0.88289868295794 0.40164226682672 0.243255842950232 0.151544876747740 0.975910919350131 0.15694593917873 0.392875145939667 0.744979374227103 0.539124152379653 0.759211061490178 0.273743751092962 0.590476860552987 0.392057986353646 0.553170931210654 0.735045887138934 0.178218159109937 0.71149022053221 0.67972049685918 0.916427612404163 0.153508221914236 0.369588496882594 0.434946263458844 0.859455119300918 0.268623613650465 0.939148628983885 0.233082903270520 0.252333534990248 0.337536661199758 0.807060247897445 0.484481948693483 0.598378757544044 0.7851645704751 0.159560207416189 0.376999051179022 0.256925644706392 0.889865680033971 0.550143086417059 0.598887472642546 0.581959087547686 0.346856965412037 0.486933681584103 0.801614517885065 0.671170363211861 0.384889121296348 0.63355402915125 0.0375842557282645 0.635784645335428 0.770950911846569 0.48177746935535 0.698164639665825 0.529581538520598 0.631832239536043 0.0653647835091345 0.772344137130381 0.627951454008805 0.444877336328108 0.63856176445966 0.833790106650645 0.172913718821285 0.52430420930496 0.524488908924109 0.642976229114033 0.55811553750984 0.340272280657756 0.0618569246155516 0.938290198122668 0.598864446817806 0.760459028513836 0.251124352242862 0.516492735303261 0.0327847674453269 0.855663726824102 0.649270177782479 0.116237381642529 0.75162298218668 0.174703113764011 0.367771404484208 0.913358098494162 0.623839180839251 0.45605219785131 0.634697620355395 0.741520499007099 0.662986993136817 0.102934913822595 0.60978611765255 0.594384088607003 0.524278977195398 0.980914314028688 0.0345743315514597 0.191341903751891 0.837999655058165 0.508829772190772 0.197101093489315 0.503466053099768 0.626109660767085 0.59540626976063 0.722450237247247 0.684677535580591 0.0963448336585038 0.701420477917038 0.694555271590228 0.160007149417952 0.83387166838458 0.310693248425959 0.456210199412555 0.226205617272197 0.817145861398137 0.530192097182145 0.0477646315950999 0.408307168303576 0.911594096229511 0.39672004242979 0.361060064336762 0.843948362090738 0.649427308903041 0.695994980627433 0.306325247722700 0.769155334009848 0.412868963044402 0.487790212610748 0.522637562464678 0.183109315995315 0.832658967823386 0.60010463679437 0.109946220241548 0.792329636926762 0.715442023786416 0.424438823123301 0.554972428167476 0.538163669992312 0.686347533099632 0.489190073599676 0.42851997960547 0.88999238467484 0.155833829124875 0.381576676356802 0.773836400639887 0.505545710203538 0.834017341466655 0.329424822668005 0.442599548512022 0.792506504496464 0.566108870789309 0.226835153237875 0.547417976062651 0.523195836172765 0.653145984060954 0.422532003074263 0.448902987752102 0.787370823669056 0.704874617241666 0.524781848713622 0.477237661159644 0.00301334579476926 0.828117084015605 0.560547067522979 0.347288458907369 0.653213126779681 0.672832324812398 0.930905399691069 0.358256267357544 0.0711869631677808 0.315754052993453 0.0768276075657742 0.945725592724405 0.728671156789116 0.684625170544755 0.0180754286304920 0.609219183544812 0.656513652926528 0.44479412082677 0.672853152461985 0.446233360969417 0.590037645222665 0.92553954431963 0.322958883884994 0.197671725900215 0.361076609192517 0.908295538504367 0.211241324146333 0.72981567403394 0.657530593554614 0.187143261898745 0.621604016849131 0.529977848556544 0.576829200263304 0.0264770037011687 0.975877288606848 0.216708296694784 0.120824333772714 0.689804864937516 0.713842229541595 0.0584906000748101 0.325627453293580 0.943687242344849 0.0640087237006665 0.664979249722123 0.744113889622559 0.469323305162756 0.560277759637232 0.68251334586731 0.635253330703093 0.0557602305655905 0.770288259366517 0.626605905634212 0.611156081033932 0.483583791746141 0.235334924405743 0.26567262727316 0.93489867283718 0.245340488238440 0.807538047684108 0.53636773427702 0.271822187729203 0.191064994888060 0.943189729580711 0.484042603993403 0.199651071681220 0.851963735786815 0.210359820630286 0.377155946004497 0.901943533852229 0.132691272922252 0.98480012750014 0.112079145990593 0.0748791222727924 0.922507918951045 0.378645291163469 0.232673812926537 0.0351924464517453 0.971917891846306 0.913897794968324 0.399339527518506 0.0729298437769633 0.693480644467089 0.718655880709006 0.0511695306982099 0.656065429786546 0.431703027678279 0.619040101877416 0.869728230907552 0.329649483443106 0.367292829263129 0.485361822908097 0.624003374145646 0.612408107325645 0.56363238192224 0.809490960905 0.164447323668589 0.262371861200602 0.634026479386906 0.72744170205342 0.400311216588735 0.82856349711062 0.391450458077477 0.141879617177932 0.911739250674471 0.385488927219703 0.465278387092724 0.0992156922078683 0.879586419247197 0.68812825879845 0.723252875032412 0.0581788466744019 0.968087607499677 0.235889613007017 0.0846314048149436 0.945632285015866 0.0253118667982414 0.324251277460645 0.293510009958523 0.607762627867433 0.737886483289821 0.222034551351948 0.192325914684908 0.95588252444877 0.986807680767633 0.161573204811145 0.0102323342919072 0.65549326588866 0.533640845071093 0.534374425703951 0.694569340385001 0.625996115005401 0.354545195137783 0.438626444218806 0.69248615718448 0.572773746377955 0.605079067532052 0.215436917049190 0.76646347388958 0.896106008131653 0.430082207267773 0.109650887739383 0.795232152259274 0.511583344386892 0.325404833644193 0.421715584482124 0.885954040713477 0.192980319070010 0.673179730917323 0.630764971476723 0.385959325110885 0.0310478324576257 0.36104319339724 0.932032104919786 0.197714799705359 0.943423965795898 0.266195564837979 0.175217788890676 0.324343925100229 0.92956965565085 0.5635535080999 0.430963377414498 0.704753865428055 0.505259766578316 0.858816357182436 0.0845401260533469 0.361917005827482 0.87908703404916 0.310196820518075 0.113244222840015 0.921881149904470 0.370554842694268 0.582907231730675 0.465404166724165 0.666046635598339 0.16109662714587 0.767732973622918 0.62018864705373 0.0281101566104206 0.970495828300852 0.23947372788258 0.451602125056849 0.606823508358403 0.654080079461022 0.724613231152808 0.0777113725360964 0.68476025572228 0.369245546351035 0.634382155357401 0.679129595485297 0.622530539340317 0.265900517133785 0.736038479005439 0.46533254635141 0.57077201802642 0.676524149416827 0.273808632991448 0.700181418634117 0.659374562368666 0.542890762686747 0.271865084364304 0.794581018960931 0.295886474965912 0.240161344670461 0.924539735467504 0.314445172246873 0.165682362836521 0.934705080918865 0.473203544813874 0.121329742821002 0.872558020238525 0.548040925400437 0.663355182841776 0.509520407327505 0.478768040677224 0.529174884164377 0.700539153221081 0.509934880782915 0.839918564833227 0.185750428826980 0.168308954857164 0.541406668910802 0.823742019429505 0.340585164105536 0.373310150940753 0.862925997519948 0.5905022474529 0.0370919146900307 0.80618315885269 0.302776553803946 0.749975179972541 0.58810168159236 0.592232284677584 0.64865931090276 0.478018848336261 0.478852210073442 0.65155868025708 0.588363703069311 0.785453717408839 0.499627762467776 0.365286951286355 0.482842325016167 0.681197148936332 0.550303310415261 0.173968912827651 0.568971652513271 0.803745031714587 0.119353532691167 0.821677488213642 0.557315744975017 0.290637116868588 0.80711851284957 0.513896655480275 0.852499160955275 0.237013961303894 0.465907246903919 0.747709905672943 0.599184790074662 0.286194836259744 0.304424706540476 0.586445387199909 0.750604693483657 0.335777219955942 0.835877471231628 0.434237851466311 0.486874035352132 0.722689469641467 0.490584961213922 0.757248471534376 0.167220974031669 0.631357187495915 0.917957035589985 0.382466681201628 0.105233638070051 0.686118649849383 0.608549725683898 0.398633201952512 0.100072084353336 0.991987865323725 0.0771080604324703 0.428552032557674 0.707184393547534 0.562346324708798 0.70484738001917 0.161388413067506 0.690756072002023 0.844201708475524 0.517677760871814 0.139043918621964 0.255144733221682 0.724847570230625 0.639919655144297 0.208245759993299 0.135548072652684 0.968638437934896 0.759918561089345 0.563513828967704 0.323999915237731 0.0780250562176449 0.877997185651761 0.472263732028853 0.967315002113517 0.0967306633224838 0.234403211282011 0.706399941154866 0.434280475899347 0.558927178967922 0.575688706442228 0.467233800620044 0.671025401034135 0.181183253148393 0.71751952955633 0.672561040712163 0.719263449600771 0.685216139985432 0.114625178612135 0.442724343047388 0.73228208546324 0.517453479438361 0.224706722288492 0.0781543091117475 0.971287183548526 0.680760555432128 0.630462183853437 0.37293766355585 0.562883691902047 0.28400253201215 0.776211640727842 0.537514173309744 0.0387604089190085 0.842363427619916 0.474569263173429 0.85085476303536 0.22545550929412 0.956938268604292 0.289351970965557 0.0233363874446611 0.0454856207153023 0.744665502717116 0.665886136941751 0.628061286425648 0.553031561021101 0.547444164283376 0.6851945301745 0.718272347957964 0.120802690275918 0.633814373067756 0.111859875118491 0.765353976164757 0.475409713774846 0.635699193638827 0.608171143063747 0.7566340170736 0.652763236291604 0.037484951022755 0.885764115930268 0.14982752720348 0.439287654074594 0.670531937037313 0.416775288296018 0.6137469189159 0.397534325762163 0.722602937381286 0.565518748344173 0.686336782435 0.721812454587228 0.0890426947005364 0.0403113029048609 0.50949625952529 0.85952810331475 0.214680991230162 0.972249019393966 0.0929726642186118 0.733372548047843 0.442065001310277 0.516471916357858 0.339403250063926 0.819552791932181 0.461669421861802 0.748018485402273 0.0783281831699655 0.6590394838079 0.58234958733343 0.746270559278541 0.322411554517943 0.367464553208649 0.87241558345039 0.32227449773149 0.65248676871227 0.54899010387936 0.52237044565897 0.209071263354363 0.347928485008774 0.913911908314422 0.388200298150414 0.0246483726563517 0.921245345302392 0.402674214446593 0.659046707883567 0.63522508912011 0.911866042217028 0.225446421728920 0.34303677934163 0.921463214739356 0.380918189919137 0.0762028639287293 0.701943055065833 0.71220652751818 0.00614895156425849 0.568106194280141 0.815055019123678 0.113757056140865 0.855964191364193 0.352040596154264 0.378672314490502 0.326446367437397 0.942097199034138 0.0767179037706266 0.79101998363227 0.591201274332311 0.157379918421173 0.0838522582670935 0.492302409427678 0.866375863269062 0.680758249116737 0.722921315647203 0.118122722803163 0.540079046782015 0.110052402380279 0.834387854631981 0.513202465635117 0.113791331269156 0.850690755911941 0.393356263176218 0.88792934816073 0.238437251483286 0.791281169083271 0.0456060696796578 0.609749290989818 0.838991665499214 0.17507109289037 0.515211701785806 0.271781878481983 0.531794973268855 0.802077749931253 0.182484458654172 0.644799933430793 0.742248252404369 0.80659296661696 0.152136555366098 0.571193710334235 0.160980791152281 0.450103314873725 0.878346281838587 0.68906683617928 0.686329769658755 0.232676476159574 0.982468541082247 0.157257986623074 0.100127376011645 0.70512194938562 0.707085608731712 0.0532257307993639 0.369705024893862 0.426148451381352 0.825660760817361 0.0162529028329091 0.633024714329024 0.773960951339382 0.304284433123883 0.94726829994170 0.100467664868060 0.455242050347066 0.618873210927064 0.640117664490385 0.173518979348762 0.937870748434488 0.300482317344461 0.605251451818828 0.323001992397103 0.727557827927583 0.150236957124381 0.091385049602086 0.984417406095215 0.284521172004608 0.594851091839363 0.751797766170293 0.41225338662873 0.672774519273236 0.614346475069084 0.806887067239093 0.573542172544296 0.141359955558368 0.658884978832307 0.458016335270104 0.596734129487241 0.725093259643243 0.360648165533006 0.586662309610575 0.564491803548995 0.393779427722497 0.725456246805102 0.0354958997611554 0.94813458109978 0.315881080824556 0.389266480929551 0.881590785741063 0.266963093556353 0.367166641229810 0.708896371943529 0.602208096436208 0.0779337780528961 0.526027298062971 0.846889371719218 0.411323902652467 0.909683527125733 0.0573456849538877 0.746015935831277 0.552952804720566 0.371084113426383 0.468706671918072 0.132624735404247 0.873341133382849 0.661902649806369 0.404980159023955 0.630774090286086 0.525599580431942 0.789936180038105 0.315825762908242 0.418447785666986 0.449814366662165 0.789030092084396 0.758173803462912 0.643353096658786 0.106156849812586 0.72710377751423 0.650665304739638 0.218985748240861 0.650990329587573 0.275870528306144 0.70718246753971 0.09715796272209 0.742902854205218 0.662310863185434 0.346311749526933 0.186256467992586 0.91944369064697 0.762721366874204 0.617762356343225 0.191378649798799 0.859488421090184 0.463271975005372 0.216006322098508 0.657467501883253 0.749976911062054 0.0726024575425282 0.615296159690986 0.00951499994959482 0.788238606416537 0.594389154083276 0.753368174587078 0.281314640620607 0.158934566080185 0.00672796150309059 0.987266194214568 0.385764344048846 0.916670168265878 0.104411079258716 0.356318476662862 0.521929338905582 0.77500123121079 0.760541607521371 0.647690696821736 0.0455326748542515 0.315582207999624 0.414978117656422 0.8533469586636 0.0867599126524988 0.812445751981095 0.576545416809816 0.175337002002451 0.601371709938815 0.779492785222582 0.331990338694099 0.673762584715056 0.660171488669319 0.122440106942377 0.978253061887123 0.167419733366193 0.0896396460150105 0.813263606183985 0.574949598416177 0.466972638920627 0.806618163498986 0.362358514199720 0.846698232048343 0.164200149994373 0.506103165953382 0.388278899439989 0.696197934764294 0.603778048524127 0.357650547544085 0.876824081084278 0.321349679744866 0.543252681462033 0.155824053888997 0.82498205332838 0.69023075028117 0.355233572083013 0.630389261196157 0.655170183078552 0.662642843950865 0.362844997988846 0.300175415423694 0.556034407920712 0.775061582832923 0.539290944102461 0.797445193607442 0.270640796631745 0.123076803197067 0.77580116719743 0.618857535697752 0.719267010469282 0.687715434789065 0.0985010071190625 0.449190844855854 0.581861907425553 0.677985475939405 0.674180968566488 0.114391321978064 0.729653785763401 0.543903561025713 0.293857865897516 0.78601302212731 0.138008298219649 0.213977877405822 0.967040421907696 0.899484204233346 0.413721639426542 0.140579413161807 0.642350010417216 0.693768521061351 0.32568651077585 0.800561363554871 0.0416481142142006 0.597801754568825 0.790563527775703 0.123806366798735 0.59973435126807 0.39517446725083 0.64750598089174 0.651592775545008 0.79057393785313 0.324051142032849 0.519599563254821 0.435494818987628 0.125018156735432 0.891467735322714 0.326796206812662 0.536162958283036 0.77828884186916 0.550253984772357 0.543647910838644 0.633772436512445 0.235926422031887 0.902985641069738 0.359103961839890 0.413913230826409 0.705023275849946 0.575862846393701 0.645448231132619 0.404430386068726 0.647944938827425 0.619450167283947 0.700089312404487 0.355185085425756 0.507539985110975 0.617611051331204 0.600799261639956 0.399852893835358 0.877040540105572 0.266303500357801 0.741445338984404 0.670598085795755 0.0236011996595842 0.349722037080073 0.92983238990026 0.114482415562108 0.549272569224142 0.529844153234293 0.646192554879229 0.514289144460127 0.71442926225613 0.474444417316329 0.542792560306676 0.195892022178160 0.816702242021335 0.566364206443081 0.428134349594039 0.704224796750149 0.644683996468893 0.162784521376926 0.746916156136003 0.614485600462713 0.672647698696964 0.412252980900875 0.327423257744046 0.701239209833071 0.633291071215256 0.596912845740636 0.79869415211136 0.0760441054450046 0.93853339051314 0.341618572302023 0.0495159161304656 0.78110996792071 0.609902437989880 0.13373942630694 0.535046700828305 0.649598460675992 0.540135971603565 0.486223024503227 0.526219978643084 0.697624329076765 0.76080901652624 0.438396908720314 0.478516238801618 0.00276021638633145 0.364890265928795 0.93104644085884 0.433816208321949 0.622178437532912 0.651688184077533 0.533411288076978 0.212549432390986 0.818715540674739 0.698152637241674 0.632733732974814 0.335008833119745 0.684704401332026 0.0437675680195953 0.727505520794311 0.569018839893196 0.333213552503180 0.751788725823161 0.83304842866246 0.489456106888373 0.257804257010401 0.466237725915314 0.531116976840458 0.707486494461321 0.555197601723233 0.0229708189220826 0.831401205507196 0.76931905381306 0.462419340603419 0.440813505777759 0.172479998065376 0.856430387619062 0.486598028592421 0.823429580302112 0.310177554739599 0.475135360522927 0.624671335023545 0.467002314863674 0.625855063981968 0.119468213333469 0.760845326959278 0.637841464979456 0.0717679190290864 0.99740967570641 0.00482748438328434 0.588203075569533 0.099733580634228 0.80253993968177 0.174292009916334 0.709273657062557 0.683046978381745 0.247469104251888 0.795512593779542 0.553099227606506 0.152582173448336 0.46892840197443 0.86995680017314 0.197537172510354 0.943783162156613 0.265051708740539 0.240333810693684 0.131447073186667 0.961749097419962 0.621910833332277 0.295837802362947 0.725056487507708 0.236201015365833 0.626758318543805 0.742551742625584 0.897490958874773 0.438668807531405 0.0456032459043776 0.740475071200097 0.384516083004406 0.551220510179147 0.754713834150566 0.573355929037805 0.318857346126676 0.371808909510268 0.71012033435711 0.597902371245784 0.670708092285352 0.0622026448437601 0.739108575188642 0.345769376456535 0.805258324238955 0.481666450511896 0.0428247911057233 0.805629666808498 0.590869594093975 0.150113729143087 0.809558477833673 0.567521752261869 0.776061868359442 0.491674405705973 0.394948421002199 0.834910692880973 0.546400098916409 0.066114044023577 0.915454049032129 0.368025195095228 0.162792321335497 0.312786203153337 0.930362351016042 0.191286923047089 0.583746408946787 0.76074341552738 0.28374211138544 0.278835452868182 0.461703858662387 0.842069080966673 0.382277653391985 0.623665104027505 0.681839888636239 0.255720910920063 0.787965814887122 0.560104178066444 0.879696051327692 0.464726974671438 0.100815159034735 0.67114895919904 0.684396546460744 0.284886717413521 0.688247462045046 0.584673371440769 0.429502595704191 0.483384431901383 0.322608357260961 0.81379563701261 0.836621075407912 0.0654958345390794 0.543852435722539 0.608954769878444 0.0766803623247172 0.789489841781414 0.565348894142018 0.819977496260946 0.0895406807994481 0.237116911636386 0.858644862099776 0.454427740136625 0.563092709043721 0.822279594847064 0.0823581745787917 0.119232710666267 0.550636424569316 0.826185868097908 0.72282026512259 0.642002914128047 0.255662125820787 0.127318620353622 0.932533847416033 0.337891391329671 0.722528070287191 0.524196796321782 0.450744835104129 0.488030138487467 0.702645563215422 0.517798992294873 0.106838905208120 0.776936960887211 0.620446941439213 0.919450739934892 0.134639975688487 0.369435263313863 0.573478894496544 0.468471905221326 0.672053592792512 0.0495204089576132 0.820946113448127 0.568854294095673 0.669323529226167 0.309055654240629 0.675640892639075 0.468237930449409 0.852003169682162 0.234187615684527 0.672944827121637 0.111055206706720 0.73130841695796 0.666079756908866 0.533485661962338 0.521278050484415 0.0975879636948487 0.985747859713932 0.137031917491131 0.22045045936032 0.743896355851721 0.630888109507822 0.825969288100493 0.360945981266199 0.433004311436441 0.279909002020909 0.827025367873657 0.487524349628919 0.0683079261123599 0.936551455758827 0.343810119028295 0.418271610848745 0.896453381186666 0.146356396911753 0.255835592493642 0.770198831403713 0.58424473443736 0.96843003880678 0.200811457938523 0.147709235653376 0.875257630403589 0.479723345992563 0.0615596599242866 0.482657700287625 0.802907666879345 0.349829705455995 0.679019660970923 0.340823270971583 0.650209041754391 0.623036843910191 0.287026325000648 0.727626951045005 0.719961321891062 0.187423292746621 0.668227659048089 0.568267054545444 0.267303478199504 0.77821681121696 0.879747717243688 0.430800664243612 0.201133641372555 0.089994844105075 0.968112267809288 0.233793851398323 0.141203953885921 0.463646720655562 0.874696039680257 0.818183875180826 0.286411019482264 0.498541747813779 0.70529221547167 0.576645160064434 0.412363007760548 0.834431981612687 0.275071270876578 0.477555299415963 0.735288139048342 0.111644122860072 0.668496030209329 0.687620581582937 0.625442911879662 0.368780557734585 0.750227887288234 0.586704257053738 0.304854443776132 0.0232454010753264 0.791684435839645 0.610487842121454 0.353889140303201 0.883236714552315 0.307661148737201 0.135465292666303 0.194734557076605 0.97145643585444 0.69834325156128 0.661147775849126 0.274226770189514 0.865014265279684 0.501740329685072 0.00263864172726534 0.911369173858207 0.401341427191026 0.0912758881703136 0.373978304747250 0.0567785997986938 0.925697800679721 0.0587436326907651 0.877494851994581 0.475974758092592 0.468741612307776 0.396771734596808 0.789210676255806 0.413896335801094 0.867071644972314 0.277266272192332 0.597222188835129 0.80156287237968 0.0286813316534266 0.0869304888622002 0.985546898957482 0.145397386707838 0.607739441148511 0.134417978538675 0.782677825620524 0.819231330044316 0.572639800546359 0.0307194841110149 0.671451812843631 0.73987422468706 0.0416964587551939 0.0166073974757274 0.996609891569325 0.0805786471421665 0.619841647065773 0.505238642513706 0.600441709638577 0.789204590422773 0.476604796839764 0.38730347543619 0.606217731093347 0.64706704442535 0.46238977338029 0.73739143842235 0.549405034158569 0.392947801854953 0.793226717033801 0.508649406723489 0.334764329676296 0.430405316404103 0.441500808687473 0.787291749950037 0.368372648374532 0.803244100602812 0.468081730872198 0.168885195423199 0.779550768647144 0.603140439589748 0.361016231169934 0.297404541998415 0.883865272103486 0.91533450022884 0.231915983378739 0.329207729776034 0.516470447580986 0.63244657085656 0.577295082074388 0.614439969179139 0.786607548071713 0.0609269200907634 0.755148244548613 0.205247943728954 0.622594900677948 0.0845157025287087 0.992267313273154 0.0908992576193841 0.532952447070092 0.113565755715520 0.838489420500201 0.628841085284026 0.304852934536603 0.715278671402433 0.471311451218021 0.501952363582738 0.725196070483332 0.798697770861419 0.242308534974282 0.550788929354628 0.0547428471595002 0.735143440618149 0.675697670856561 0.59348245617956 0.171877230239069 0.78628035199439 0.745583473488604 0.137562041259806 0.652059789333083 0.417309372731955 0.82368750429597 0.383916374613975 0.502587002544118 0.203516226613143 0.840230593574684 0.668664968814415 0.0197297959298513 0.743302021141463 0.704600460028087 0.204250730658456 0.679573271070673 0.596697996116712 0.728926841360184 0.335584805041833 0.62166212201547 0.389937230212374 0.679326992357528 0.383349602197303 0.527731306566555 0.757985983092515 0.616126032535175 0.597975344305282 0.512654074045495 0.835744786349757 0.495352784147697 0.236973144736537 0.560310943873571 0.55456086909983 0.615234823980851 0.697870111958394 0.365544921569187 0.615917378509615 0.203500034571081 0.97416779517434 0.0979022102647994 0.165034471145369 0.755624842707847 0.633872795138354 0.615637404114679 0.558078443936586 0.55636232534946 0.343475722866034 0.824029040770463 0.45055584311888 0.0502806991758197 0.879074223176591 0.474025697021652 0.519566854775615 0.366760653533486 0.77171037730373 0.269879010153727 0.533274827508674 0.80173766172236 0.406692995058154 0.897155515312832 0.172373980386816 0.651788291164867 0.64975008931362 0.391148111253685 0.549304744783188 0.819922120249219 0.161220389792056 0.0326408003028168 0.664794843679148 0.746312531030539 0.0791342397425706 0.246800133943691 0.965829936368583 0.151194203956066 0.530155907177605 0.834311109104261 0.71962299546448 0.463739228358104 0.516806223337683 0.665838531829929 0.433017288515892 0.607581333960244 0.033250763055185 0.979149055501676 0.200403377881771 0.71336940022763 0.233163595056798 0.660862191957644 0.445926576040957 0.379809920210686 0.810489921769506 0.540746296822637 0.606469425646316 0.582913611291443 0.811686025737891 0.498108737806509 0.30504668649673 0.906896518507199 0.308315912347476 0.287193319756685 0.440281536096871 0.554563598991867 0.70612419845617 0.150376940017507 0.276218655088637 0.94925762071842 0.0891901466582381 0.843555602480815 0.529583858574175 0.375167625891382 0.574921622409124 0.727127485775009 0.294050837082818 0.954188373200265 0.0553050961514881 0.473264848147044 0.399931842609467 0.784904392123877 0.446414956610166 0.668518880363331 0.594807694227724 0.509651340668408 0.677661455267022 0.530123064014645 0.329127174686873 0.920964241379653 0.208566941250615 0.484813745099175 0.496081023256314 0.720318853652936 0.446857643543238 0.479127800450764 0.755483154836822 0.287468098480186 0.268108671260177 0.919499773111059 0.772715334978771 0.61821544400534 0.143946781422598 0.586941310144211 0.545110998416803 0.598626676528229 0.503106988415501 0.0133370431315202 0.864121219209431 0.132753311372596 0.579605005329313 0.804011564666092 0.0752799107192465 0.997031273182362 0.0161732908976503 0.421680651033562 0.438051186860484 0.79391220310185 0.421916714485215 0.77309642070445 0.473611877313027 0.0708460979702595 0.98428254649437 0.161767422767836 0.555496104972101 0.0448624936548972 0.830308035625266 0.318696205940587 0.299220648134107 0.89938853230919 0.281534678501216 0.617671909993625 0.734315760695659 0.463111180012928 0.810221309061477 0.359262390586241 0.244832777810156 0.842858683566577 0.479214096668889 0.566016013442831 0.0261563244928061 0.823979198290413 0.822067464075013 0.159817855926616 0.546500994908789 0.443351948541315 0.880928070840512 0.165543902726236 0.622989099882935 0.434780320096657 0.650269678428649 0.99828381114918 0.0183621732566981 0.0556081198276038 0.676479730494392 0.383320277743031 0.628840789788036 0.795550551560345 0.305527604281052 0.523213343612634 0.776856353216271 0.54610928232598 0.313462690323616 0.71747024381868 0.694471055159273 0.0542807772671809 0.203612313388766 0.711556334713282 0.672480191801866 0.597622833716958 0.507669450746021 0.620579307904595 0.550891018418742 0.80945118909417 0.203243347491612 0.65404528418665 0.617421440556688 0.437053235858183 0.425734892402027 0.644775190360701 0.634834431396688 0.77316715367925 0.623195548214629 0.117642939256866 0.570682261425537 0.364004239887896 0.736086047848939 0.188681586071002 0.511841565290972 0.838103496662684 0.038899048703982 0.985348956002233 0.166055108067274 0.789795106793178 0.554453931688141 0.262306170192610 0.121338917578593 0.705873005233623 0.697868302449187 0.3417851434717 0.0285145847922024 0.93934542855978 0.536115002738433 0.583528207958115 0.609979945863764 0.529782896407069 0.77227912182671 0.350592413872723 0.966018185893777 0.235951893352614 0.105525203367791 0.784239264043427 0.143704786378359 0.603587368244709 0.269663955326747 0.729465253312958 0.628618958834838 0.818914169154563 0.375496897538809 0.434029565233316 0.277293066007927 0.795959497353194 0.538105040040672 0.692545437596252 0.236964615285594 0.68134322332226 0.213476962393013 0.525460283814792 0.823601285004297 0.167034821057269 0.970701055077537 0.172739197131755 0.590688399993208 0.153707492517158 0.792124498331892 0.899257575591852 0.347597410120491 0.265540680910083 0.582164576734444 0.533104712905898 0.61390860123729 0.54751775661379 0.303442129577598 0.779837919179373 0.182367676096504 0.858749896649643 0.478843028266454 0.343095415681197 0.925713711955055 0.159184356131309 0.539151023339708 0.775284980804167 0.329012724026333 0.944335147476718 0.194459610495039 0.265361242698032 0.689054392578904 0.315527663011509 0.652415770764482 0.98660809281774 0.0685165996035267 0.148020089059934 0.211631810827636 0.718635034944079 0.662401436590183 0.143823209741491 0.646226519189626 0.749470593309514 0.473614015167554 0.878363665954276 0.064552575225417 0.931484796413429 0.312184411736702 0.186753760656226 0.370173699442303 0.0327000478816263 0.928386847768612 0.0398699814070369 0.855047991607455 0.517013845685645 0.465202515500297 0.406788459370839 0.78619957319684 0.590319527144025 0.536333578819888 0.603215672958442 0.732957931973782 0.545204774585511 0.406846929109559 0.147202599832865 0.914947740494464 0.375768581398871 0.538652513284841 0.697767668346234 0.472200964571849 0.962940024593573 0.0261645582056354 0.268443522793218 0.621730234913365 0.644835703617432 0.444565439878972 0.792795999943274 0.352807093624427 0.496992612784365 0.565853261335878 0.106860253632325 0.817551816601973 0.350454149429690 0.0976257242148794 0.93147791552942 0.896680841629932 0.431057490553635 0.100761639979902 0.341862882882980 0.873699433970623 0.346091127286370 0.976104653720671 0.203202436346455 0.076996589844702 0.566168814500607 0.574627641688868 0.590978804098816 0.93876341804466 0.264179309324228 0.221207001394804 0.562501923897983 0.0371818475540432 0.825959500110954 0.469992909408252 0.80240426179555 0.367769038607527 0.819454721854097 0.56640386339327 0.0876391599925598 0.869675270098485 0.0151110923502481 0.493392926040807 0.695793801468291 0.498244060650470 0.517323730235561 0.286337160127432 0.50659097286972 0.813250648285673 0.70423720120935 0.535808189843501 0.46578916703746 0.854671533799308 0.413945053878644 0.31334655205147 0.615704143866759 0.590925987212803 0.521262779087358 0.521520626969592 0.853128989808692 0.0136807307276891 0.598630182545717 0.590675813463968 0.541058211224967 0.696409901777352 0.68766752181801 0.205247723843985 0.632771801906247 0.562432751409554 0.532230445252994 0.873877407211453 0.0673857819993789 0.48145345938078 0.883674136318774 0.330765118389058 0.331231727433138 0.876774892493789 0.260346442292607 0.40433342414162 0.173091260348731 0.236721678620518 0.956034655471219 0.357898589412355 0.88274687316485 0.304411822395791 0.519042392990225 0.70549466565612 0.482568410704369 0.524380331941392 0.386017741490629 0.758956896488535 0.931951110514353 0.362215466863286 0.0163426795867955 0.596004567762989 0.69725562741786 0.398262658605824 0.648558760908711 0.00700341058431486 0.761132370805988 0.650090345916162 0.0482628769969275 0.758322646932415 0.605539736137263 0.0125424387063539 0.795716227803676 0.259622713915645 0.638299288847437 0.724686183306906 0.0492474287843945 0.981337728792326 0.185878865949966 0.334259383352366 0.865199802044049 0.373764587921107 0.0596277373112904 0.840440321629667 0.538613589433239 0.607961266470289 0.759268141674897 0.232152939911152 0.816948202143318 0.0914942975769123 0.569407085068063 0.650887980240182 0.73606478306531 0.185885643097779 0.811519792635694 0.561062824528149 0.163230306907194 0.640458913430583 0.644531058946367 0.417602794843128 0.75989263134073 0.077380193339682 0.645426598857511 0.0247371157280441 0.631191239902779 0.775232670735341 0.572181412209897 0.748603458725291 0.334964614707313 0.566354726223198 0.738321717867294 0.366228569352713 0.698206846226663 0.505926950813538 0.506502833479472 0.432759275879905 0.823715300387042 0.366350260062942 0.84111987858561 0.531386847978173 0.100724215777282 0.655374580010764 0.563200751811252 0.50327832561611 0.804801768730525 0.403334572856254 0.435448430226912 0.257759742580818 0.966209039091476 8.87839855742536e-05 0.137530625926767 0.951775386674993 0.274242484403602 0.377371234198333 0.861558351837822 0.339570549338607 0.0164672864513465 0.947961895806057 0.317957658465266 0.633940679358993 0.467560450851491 0.616040940078992 0.636123740951932 0.573286181505276 0.516419926312317 0.0634105080052 0.909128467144194 0.411660707018014 0.400131517831339 0.81334000032713 0.422342056046818 0.891580729653617 0.178258886573296 0.416302260224434 0.255394242962105 0.666899337784718 0.700013609813494 0.861722089433725 0.325919073560909 0.388859612291087 0.475019446056878 0.842280225006074 0.254795110690008 0.542952525906675 0.61566456922561 0.571103924703557 0.423427725492703 0.905574317020626 0.0253794727428207 0.954502231799895 0.0534121512814406 0.293381375660602 0.7808702161139 0.618562366756073 0.0873058074778327 0.277598203029846 0.858213635801038 0.431750614359452 0.0410637818653542 0.995407672090294 0.0864715685222419 0.924705152095344 0.370719342761706 0.0865306338278792 0.729585300979196 0.0157251046550914 0.683709009505274 0.345214558305631 0.578995110831218 0.738641706355249 0.607926741982725 0.792680191125344 0.0456419870268318 0.644548839882123 0.291795897076312 0.706690842912259 0.504892432518945 0.682456609944009 0.528523043138929 0.170878505645661 0.845683866960441 0.505588106536478 0.793180965163598 0.433686589556444 0.427527658217622 0.198627642840583 0.89024344439835 0.409894705022346 0.903508642680374 0.204704696826966 0.376521074707444 0.301400180320596 0.522339553866377 0.79769625909201 0.513570773682694 0.0477688475790298 0.856716521155003 0.700533089840833 0.498217356683373 0.510913745692449 0.81748745259765 0.511121953811581 0.265459249560523 0.0631422762014142 0.926810733128232 0.370182276607637 0.445728343749915 0.691829317691113 0.568065523299035 0.333307186936657 0.567916380179456 0.752580430426035 0.259837771434750 0.964832864569774 0.0397728045516835 0.626103944055711 0.768377510623526 0.132626740915535 0.419565812600201 0.377412038410944 0.825545081845703 0.749319591706166 0.651562540087475 0.118264135899525 0.304741169936263 0.540940633193141 0.78391074154299 0.956839159369145 0.161560778263178 0.241571807181104 0.440066698164528 0.596009158608775 0.671650492459457 0.267963454492487 0.841251782692806 0.469564718832909 0.979556340361233 0.196810921723065 0.0416513763112962 0.641280631130964 0.464473756014597 0.610756319746235 0.551900425853588 0.395919875240011 0.733930086815197 0.437787395113474 0.566119710226687 0.698463077315194 0.0316770922753232 0.800290620154811 0.598774987050402 0.558614182712582 0.205449397460031 0.803579952435141 0.785632301506148 0.615363577533154 0.064105805320193 0.64931797503534 0.590510352862725 0.47925326337746 0.631764207528251 0.515565415639225 0.578849106661619 0.195022943856871 0.782656898515511 0.591112705476274 0.874697880502641 0.410003984973882 0.258457637050492 0.554427633422654 0.714398167876436 0.426901929056483 0.432727229495981 0.868451721049301 0.241947831276163 0.38703216184226 0.8377171275128 0.385274084219805 0.112431654694969 0.701987900255433 0.703258210700394 0.782980043803766 0.0180999746628231 0.621783436513275 0.0615133788955713 0.870896930264039 0.487600903478987 0.950541759978943 0.279649415081525 0.135153864838171 0.621893527886745 0.32102120431178 0.714278535555138 0.556279307475622 0.724397750448602 0.407186973292918 0.226279130863316 0.949901401244599 0.215603995439070 0.588952304395791 0.21330388448436 0.779510510519756 eaf/inst/extdata/ALG_2_dat.xz0000644000175000017500000175131014127067160015621 0ustar nileshnilesh7zXZִF!t/ ]C:YN| ;ݨBCwڮwc_.Y,\E[{f8'-æ%_%AE1r>uim2h \Rcg5YF Ϡn7uRe_k(F廩 {%y( vۈ]Г /#_$\1jxZO믳4Śijlʓ[K} WδBƻ˨!E0?+@rWܪ,mE(}(eNjkmfK 1)(;xf䭷t7ܫ.oZ(Ь3rnDSLPi'rt ʜ01lF b%f0/3,d9(%0%M|Ŧ mG d~:X/GX2lʉ1Ӟ$mц;GIƆ p @ p1rRSMס> y1V Y՘zgVcr#[b0>Aŗ%K41fhm '75#EipC̞xv f^_| =4v x$Y_X?e++喭N<%ϥ7[kMKɈ}ܥE-p΃^vgsρ|@lĎ01p/7T1T9(\gV$FGM,z&'RMF5.?ʩ3.9u6Nք'v,5jZ)ֵP#L(z8>\-|ϞgۀϓS]9N 1x^j)>h4OnQj7'OJdX,6I*yM7v3*0Sޢ3C0ϔ5U ) sBf7a?+4X~υS7u2S#}nEޏsϊ2[$@T;*S S]\ajJƏ}8HQqA,Gӑ+zZv`e04OB%~l/U^&ZTLdV9E -mk34L3Ai7*?@fj:~Nӣ"*a($-q#SM)Ej]@l8 'd1[yl8 e\=QÓK#=Tr,ʴoA,SEKw e >oV00\QNJBc*ax:(#J[Wk̄>!Q1٢8RyUzoQj1\*!+R0cI-QP洄 2gQ² gs÷!VmK2l|[…碥X Bo)UJQ߷3p}ɴM5rm6ci|=)sW7 oɡj*J$l ,Z}Q$R8BŒ=q@[BUُ%rb.{J>L p{"C2Pgβۿ4&KYwNɖ'هh&ҹ:ƐPP握*~ #}!#z("DJDpNWr9qґQ2Fc#ڤZubc~k|v0hv]c-n̝}]v3W}I0 q)(+ e C/y8GO<--[S[u#+.&IDj>KW8; _.6oY4%64&o֮aPC"-Ѵ5S(^!iHLG(4H*鴳FkM9: =Ւj+¼@7 A{ S2ZMw\R sn)Br?jߊԕy5k;@;uELE([w8[ i-\%/Mďj}hm71Y|w=UTyY$[ !yfV(#= hܙbn8y' EDH$qL{$F#>4 _?xDeK=w,jg0JS#r:jt]a~ej. 0PB"+})Sx2قܦ8@\8OxꀫN`*꿯ɼ>EhpHaf*2ՠ`EqjǺS}u! 2C@{dv>sKצ [nN;w^*HjxRz<`@q "Yjvq& fuY1~*om8*},25r]m.*ي,zč}gL3^0G*KJrs.\GC*35{aHSAnc{A{FZ. q:*ʃ˃UֽuS$7}fq͇]T.viB@)+ ;; JN&M;dk್!G΁`8O܊{ve@$N- h뗇݆/usLfc-/#oq7t/,1K#tdZ&sp5kW+ZL[ &_?_ي;e&,w3fwLrQ#p)Og=bzėv@+Ïs-.I;`]ye7]} 8‚rm;uj9)C0|inc}h6e/:4'3>ӂ# .e~?t^>WJe'U@&]:kJ4~ ȦCµvPӈ$I1\tg[(]0 nymS +3PQ1%= :ӻ5 8N@U{*'"뙎(ު2p!άF+80'1;UV\(}Fz@;!Gȶ}kR̯l4zTM D`z f33zY#%x NNƭqr%14D%>-;%i6њh0aq4qk&ڤX$33]ZLeHŝ&K@3_į|לkȄ)Xa[w']6|q a*slG_GܛR1csPyo:4/{~]R:-:$vMgt)>ÙWc) ˏ‚RF pð&CypJWm>VG-lORD`f0 Mn4CFysk|(;Q;% xsp*g7]#&jquZjG^1 ղ"A <(cv IGH~%Cի0c=nbT m|1]V tb~uBQzo_v8ZO&'ܴqnwVFDxj.0fMlW3=u't-4upPU^7EaMW/v'2)|VJ: r(KޛMWx?9&&/ԂO>=T]&-"8e5DĦ@nAdm:p g3{S#iAPt$^6qB:F4+S>_ L4y!0drҠVƮ90mw8D'B(\|jE<_O BzϢ~E A0W׸w[^޾b &2P$FBWHa4{c=9ieg,1!q8/({/IraT}K W:l$%LB_թIwk,D~ړ}*>m)64qSŤ|iW[?j׫WLM|ug 0YBa$. t U*+ٹHQX!f74xэ!I)Vq'g(k']v>=in<cVK^۩2X ,O᯽A|Cgt5ϳ&)Q@X DFj=MkѰ,J@W@Of$`ʿgWC$ 'L Z~dɱ\ap[Cv_!s7lS:A<Ew?! axx VטSU| q(aѩ >ELCJlr<%C1:N+.vt/(E7eИ>E;; fe߁Kt/],8h^8՗sE٦ ǻakfVp*2*(dq`#rǰ'>:E._6)e^l & m*1Ḥ:a'A,8dGcE.e@[mx;NZ .T _8ڨ:(FЀG{&w=O@= ,LpN3]- ˆ\Tӧ:~i^{lر)^־*99Zn87i pIr+1#ÿ"i"~5BNy7FLI Gٹ7}ͳurrKYV^K).%_{* Sm)2n.\m/' #`)Ly}Wjl%X=YI T& 0V蚐ٵ-!M0A 2Tq G|雋j`'̶M'B˖*S)p΂ԁ!1R5~FVt\J<_<|;U1S3{QFzdN Ō|F08 qQ~*W]\ւtcv3Hہ W} /x.'R`vNM@IASLj )uuHx{39n>Nlh4y[,Gp^V^S5xb0ΪV- ].pOXSI, }gW9|cz GMW8Ks(f1hzp STno^ƹH`v8f/YaJ9t}Rt!?D/!5d8I_ϤXL*øh75W 0 ևk:b Ou@r-{ϺU<_iYc[C1]x:{MNDu ?bD;|QZZ6&sP:L/hx/Fֶt(Rx:3J m;7>):Q Iq y |ձڳ߀'Vzg2Y¶weHcwqvF#H.޷s^':P~Z2y-Rޤ #EAs-߫ۺm}^3؋%QQת-ߡ+R!e]9s}m_@%邼i~[aIB1Ue4*nBJ=͐}fn^Vry/0q%=qYNuEw\/{{ d8o?&0,;!"?>i8 S`v )IW"O\xX_߿(9ON)FcTEfv 1oZϢlLB,Apt=d~8'tq A}v[^DtW9!YoOAiPEKǹl[3aSrCrx/ 0Y>~= * igک׌lZA @&lٴ07&J-vj;:ɸU9plYO?Wq*WMh'ٚd[ +tړ$|ʛxX_B,:iߜض YauY aI[/%3@s`Ov+!POZQXyoφ:Ig! |Dro0 HϺ*tRM#Q,[\DXX Α#e߱hہ85) 0הDш~_մG"`.'?R>HҒ6UQ * _ ^ّHJ%X:ʡ`EF-E+$Ksgd^"&;Hl$^WB-$_]& A2r9dRkxԑ+$Π'bUygw蟘F- mh##Lmq\{| 1H }›d`2e8IF)+:Ξƻ-CGK`G5;+-* x6 &ԩ9tdߡc+uPcom6 w{ !,0qLvC@A.X)ЦOal'6{-2;VծV<`҃d?O9Bq/>h&(hEE~{#~bەMִoJCHU{p1$>Íhd< 5kΏ PaZ͗Rv%H;Qw[טsq]\%[EAold} xHf6X.Y/ښmnMvo*mTS(mp+X~ei?Zam1ok/)1!Kc *m=[!б1KZEk\LBgI(! V3!k45LUvw)ДG\}Yо (C.,L`LLK< 5^O^e4{a9lZTq+;jMFsi: eU+H Ys AU7gCVYLՈOi iELȺOt9]Ng34EQ5VX7 &Ӡ#TuLڨޑa}G5XpN%U4 fw/$- >u1œ ]Ri=GOS4jqrOAֶ]][`-_rjTa|Is7#`'ӣnP4@oZ@PH_}E f\!;չ8JҮ^#[5.{%E4A,R:zM0Ez.%+E_dNh]JV Tbs{`ߛTHn2# EvވBU>Ҡ8O z_6sUq8AA_OwDGxGP3ѽ1Ke#8Q|s},)6@uN;c{_LQS L\(I٪f4|c֬}ϻ4o9{ }ku;Yá>PfAo' :I!OpPe Fvk8$Mᢗڢm,!ࣜ _J?.Ȓ[E?a`{r({Ujfζ߷΂Lzޚ.L m?Z^ޠ_vrVƚ{xz9^S iN`tN09>mW ,seMC׳m)IPm\ܚ bK1^*@Q*;r_h4nqЪM =k>zY^Uh!xDB+Є:^0 8k (38^U| Q 沼?!Q_X&ΕYp'M|+ ƚ "v]r' 5x PXO 5@\"~AyEgx nmRh mbm 7ͻpDpXLoOMY:2~M6#< ]"͡Rd_/1a[XFn灌+-uAKe>w5b8*Q7mLfB 1vo=J&6`/럙 C LxFFi03 \$hq&^;!`<+~q27Aaqz?w;(X8)$Ue|q1߳ʙ#m OU"}NXBt_KqƹG鮈ݍBY|){QEtl21Q@ٳcmD=;#cnXS 4FK(n`-uё3b0/X'v2.㜜҄?u֓ ^VwcxЧ8HE.ՙMt :Ta{eV?k1x3E}YNi#JufvX\Sxd7i@y)k T7*U26+Yޞ c#ӖOx=a3kzb_@'>$1ŅC*3jTG6s4KJ|-98Dk1uϼFSaLŅI8+ >|L}hU7S\qCEoQj\ YGs}G_@}Dsv!=Oc^8--J͈V $İw'+Gy?)zry;Py|)jӈ3t )e>)+U%G3ly<[ K;K%~|-Q\@TnkQq|)%ץbA [E>l$#/lŠwa;Nh3w, ٢]h@gw *T磣J{O,!&f@4>fIzAZg/Bi ~q»eU=3 *V( REtFppY٪U5F=3"з辁u`m?i0>Hrjߩǩ9ryY8\+@ljFL % &s 1V{G\ $;zlTm.|\)xD,V],h̰t,8S)$PMyR@'z$,7 T܈_h;<zф9&bV'i{7άK|,蝝>|GK?Iх,wu S"3:5u l@9yݿ~2fhsraӪ%)t>4=XcȤZj[nM[_⋫pԄusO 1(WUr~%).wqajYJ}U8o3B\?ڂ()ɵN^a, _"E-@ooH0oI8u^!@ / } Pc>W20*C1[3e͝>f4覉+,ۗJ|ѳ "zl&w?%۫8Y%8@H?6^J<5 JښpWLޗ-Lqs+5)pYtQxBb1-%jx(r$yؖ_aԯ:Eq*E)SύsH40(xm-*`(+@]2lAW>z7'HL{W&RУ)[Sd ˃q-;W IW! ]S# _8uwboPJ>Y$~%^6-|LQ'h_WeVOJL3<1jtݭ=9|xPb|lCF"պǼԴڳ#=NOU~.uyŸV`CqXMgu4 PT!E8GD1%=jVQ4 b+uUj ̨ uPȚ_ױQ?0 dfyȪy-CmWDSd2qiOIjk\]! t۟2Q'Ïq)7/jQk:$|^R=zl-=A>3ϧm q늫)5y0_8\ͤwq/EAl\WMH˥όU<%A},G8A!ed8a^0ra^Ȓ Ϙ{}ZX;Di_Qԃ1zj[GKɑ ̓wE9ho{a_znQk4v#lba~Pb[g*u~uܺ5S/9cW3?yGJoޏ-YGr8m=ӌ9wyě1=Wa ]މ󤰅_JkNaAyLj"W; Wk2YMuB]=(GgnahkG{Zh& Y7K `v~_y˵n D,s[V{||mPbn?B?rQ~/Pm>xX`;58xbͿD5`;` v qq~M>VHDFС[G@q x\M)+LUwLD[Q9~R-cyh\`x-/¿Ө4l v^^3 ?%c{)aG3b0 X y>(%*|s.N w^=FPaaZ }f`CIQ1<3?E l^X=tѕMٱ#X[/Y#LJXoώJ)0 WJu!eAf4uELV&;= oV.j4M%}"n}b.Z:2V@@ ɫU/}Дp;[c tYI4R[O|2*5ͿN' Żc4 )7MrtT z8Dq00j IqqBPG~3ʖq>ϪLIbC|Tšϩ-. sn[ -J44E0IV[}(j Չqde!y|v Y Y3f[@fr/9F8%1n~Y!у{_ռG!U+U)MnDz)v [IfJLAr0Rs ⥧?E9x5.&Se %O{\*`Ts*kn2Ay%r/e Ia}8:Cc4ʔ,PHWu~VHϔ_ zlHͤkb y4ZiSO lڳ,Swײ%؟陼^O ?G?:~3xL+9EC*'B&D ;M)҄ *CcDeKȫ !LJg3gGބ1r4 4CbuJ˭/N!Ճ O߹(9ٍh U@jEM_7u>fuTbrv{OmTEkBōJ(C ))_A]'qz Ug*$8Ca yAUg: "ٱkUQXQ}^a4MPÖe$2>_NBk)$Wf=m>4f8vpsVRkۑapirLp|VxO#2`$Q3xs^C)[ ^nW/g7*QN(~!] "hc˖ȿ7^h+q{!n@Sj/~. *?SamxNaX)CSe<]o纖j8"Y;!AQ>_] /v!50nWn}u)[k5eʶu:ybv4GSbY8Gͤm =Fz0;e z$Yոq(vfjRBOqy9G.%Ç.ww ^j<{e=8N G145Cg"Pl6etR?801&QfDy:;N6ءNdFcV]U>S\'*z'2=R{4{=()VZ1᷅t6 ڐm_XL+:LGARvÚjjdCy(O{;] HJ>pNcCu7Ҩ݋QxFҹ =BRmL:Un2ni:M1Uͷ@!9fVtN#iJܴۜXڵj"--*?.ݫ#Kpk&?U/OFWrnmN=xP~&*﫺bsWܓMB2gdrQdKl_o#d1ͧq qv&^Ħ5CgJK,oxX萙%Dx*W1A6q$i*=Uۢt$ߕ%6fmNuN@/C3e~-1UYtfR3F5bli2Jhmo+h^ϩ]#P_uENdR^y3Z@߯x\0p/LٱP ɊhPg=uG(YšH*7e_FսkO@]c.kz9#9_2[5l]xw:Xs]K UJvۺ)*dm.:W7Nnd?&_hD "70f#fi<*F} NՎ{KoB- )3c sh"]*ck0vK*i>k= 7`׸wcS(QEA& 5,WV)?2s=X֢_pAJZ't;e|Oˮ:lO&%ńu$1Щ"bx.G{Ɂ 9d ͔۫^n+,Dblr&ϵ9;aH\vmO0p/&rtA[usWKcϚR#L ]Fv3dߟjn7`J$VIw)B"'͉(zЏT9 NP6\ d.\9.#A7@4͕!7}6N| PQxkwsr5'WkdbNl$)k&z ھ?x*Vػ+|ҞpuXm❆JZYZDaP=ia(`>dg9ZҸR9b70Pl O'aWaqL$;nr(C~k;p+##4lRqd:Q딖x( _5N]+鱷GA;k-iF*xTf)QrjBU+o4+`.J{pI)F\}vbiU}-k /g0,h >Z" *˓ 8K^Pg˄d^yIC`ΡKlQ[7G0X(o9Q7/^ EMoIj6E*DNE#{Ah(gϬ7N=oT[IU?u9MRqŖXA&enY,qJW~8|qot}7 [vLNU*:!Vy4hg_V<xPqDJ%m̞S)_.WGgLysQ}S]d!qqK 9_fx>D'Haf9zCᠾ.qH{J8x lTgjNS<hGhzAGMneq)>^ {i1\3dIY4.if31H e ׂzxrU0x Kg$Y'q_ P7dX4n9H1'8ڦh5$mx*u> @fOM?fEhфj$ r#4"rru`IU49W]o)9Vd b^_ E6!\l0:z `_jJG<4Cr<>E5N]29颴Ao!՝hnCl}%|v~o5_o7$Q7 ϯ)Dt?L1)kN|~LLupGpnCBt] 3ԍ)G-*iA^R NIJK+N^z:3''-?P=)˝ v]X)<J=qI5;ơ5mGx],^K[ŜĆm9TMeRcCN;BgM=.lB"7WJ=Neؠ М??|Ӭri,S+$+?ةBO"cKM:Z7䕑oc-s6E]>ݔjdmE ^ ۚ9w 6j]՝g+X@6oytRɘ{V'tђ_ϯF %#ɽuNifeG_ЯW?"! x/,3}{\'<lo%lL)QR&Կ2#NaZHbFm*fyz,<~` lU:?Kd!NJ~0E qm:ZDLF"R>/8+iIX.89D](izê(]X5<*yjމ1~4.J, a&|uM -*2w'yzt~Ŏ3xB?&kQZ׊:,٦[O9+`r=H5@u][&^զ*EίfN+r2Df.ޚ8/41ٸ lx2dͱ U9+ N Y ͫezѢaȏol30 Ck6%5&>5atlM窟^6:?5MXLړJB9z\ܸ*PWzGǹnx,s9AYw}0 ,i 9?f`H\k1nyV;d<" 9<śu=<D""SWuNPҏkB.u S7"vŃ@+2`w @5wt@*+x eg9cL7&qˑjy^﷡`N-oVi^tf [^.kN Жچ/L)L3Ⱥ1ak;P2ɽxYCȀRbd M܂D}KT*CEO]'x݌?skeϤ/b?{ 9KD悠:Å۸𨼏dȷ|>4x8݁Y?Dجvb藢uDεh& {L;\&5&:xV EFOE@ߒ-qIMK~3EIM$h{ C ӃY"D0mJS*BimiId(G|<}{[ӵUO@7NokJ ͜ B_i(SXda̱{/D;b%")u4G 7q{L0T-:o UțsLX(:aę/Vg?mr ȿf^#'v/kwSﵵKIW yGDFm޺ZҤg qwtLwro>$4WV2 ((ж>f[;cBI]")ǖ#ńoQ ƠtCٓ`*6J[i-ǂ ^a"M,;Ky/%h/AMU(PvaY;!UL(lԗ򖷝y/>ILLjB{hyw ?h]VXuHYxII ';-Ehl|x}ד9mAWUMlt)Lz@(i?5vO|d\D1=%g깨eES;"6UվUǔ)aaMGG0mC켚1oph|X#ᔼ2ݖ<ˁ$aA`ϳ[V^ \ Z8)PWl.φ[!)ō8^:X2f?ϴj5wY@;`нR{ 0ǽhd Uq;7ۀ$ڸj 83Ͻ,s v_:oȌq/mbHr? ³B+73W:,$?H#8}kNPե}XWin)& 3~{T˴fYq/W^uFڄ)"ς0Phj?fƽJjn1DLgiTJ9Bq8LS\Zr@o6UNLc*Yb\"?ٮL{GobsMX'b>>܏{s2iO@\Rr#)hC] u#fy ~*nǽz*q|0 8N5i!7Kl`ˁ)ROv]KKwLu"J 4sl& xpUQõzqߔfR[:aHDYJb28%zN[,RHL4̪ʇ,@sj(4%쪒 'ېczgjd]r-EV#>T9LxX@}r=|ziے10\xW{C20(ϠG/@=箹yR/S>֥CdCa-RpC0cM=2, S/EwVx D =n* /ykؼ|J ޠkSL}{n^l+t֧Ԑ{D(;_ĩ)~Z} h 91Qբ-#܊]Y| UtHtz=8BUkiZ~h!ܐD R5(jDϗZzjh4ytbMu)nGLS'Oc6<;`7'bDhwc? U6.n d B&zʄ@:WL9،M:+fR8 5ZO_\ gi,;.u<Kc%R -]\}q44'_Y}8c2QL)x\֔Z4VKq 8ʃ6"_j5{g~ HLpc{㧆9#zmyIgªiJ#(}qqX E: t2it$ؖ`HG;,f5Fu=nP&bW6]$5axO^ !o⋶xVHOl<P5`=J0܁U}~]DƘiexQFMծܺybjM.P^M'ecW 2r%!~Tbvg($D{Al3MyVEjДHEtoeND[؈Eo {٫0fzJT:yݿ/55 +Jݖ~*N{{nnOJ{¨,'s^gBhk_K|rBrڿ@dvsuE 著'|Z:.J]NlaZEղk:EQK-xz2:!y!ShIfj:}N*g@nIr1XjU 6XǦLvO7Vh{u?#r {[HU/s*,703,xB(- 0 G_F;NTy x} #ˋ~5R!-PV0 `trZM 'x-E`sزQ.*00eX/+EàYH7$q+GH˅A04r{E X# %0Z4Tx %, tP0_{LFF[t$[&H TA /6iYWt;r4z"݄o|f\5< d:t 2eި9@FWŔBɏ=1 Xo> b$^/IX;i,2([Hej-D>3+K9(MTVTc#@ F5P^\[ؿg`FmŤ=ō5n$HYXt!hQ5ԇ H>};,C,R7A{aLFs9ےH@µ0cI8X{qىɀ&9s[1o/T`.׋a'IqfNa|DZ.F./L>aV$0nϔz13Hӗ r@\ơĦ-֨j# JU<{ꭿ c -*B$ڋW\3Xss8o&Y64G22oHbRI(4jWcf~uM2fߏXr|m;{. XO [Q֮&i.jQR@~v]ޱ4uzc4ۗΰ+alOIު~V +0`uiMC6@^{WūMl'!+ߕ( 4G RFYƗPډP֖٩O/F1nlH1zJ+=}BCNH AևRG5Q^G5㫀)f%1oW}77쇉2K.-od.eqX;Nd%*ΕZT| "^,7w5Fś_Ûk42_T^yZߐSѦtǺY"^* w6AG209( :r(5%<~APrRv_{:L"/~t:D`7,E#<l,>QڥPj[ t&.zb1͆L ZfGRLJ!4{딗VLNJDJ[n~;ys6?pqV}yfK(`i[h1ϼ6z+*U ދFsrk$HjIzacu^KV ڐ&H C˛]2*jBF9:;5~ _X J`yDĴ 4N4GTrւ$;,RN$4 A[*x;MOrXU=[ %NQORK ~/ljf͗2Q3374N>-S,|/rF v[Gd6rE}XMgz5$0t_VOrHJiiqeʑ %LX7ΠVDg)-E؏Cr)/_V(¯-mHܻ c;;rK'Xֲ<#=/{)D hr5|Ňh2ɝ$tIČ\`,) I:!Ik XȃAбQ}ktlFšR\þ pO lš. kNihUS^\]bT5hl"/ !cyya1\p/ /*$,p̯Gs1?Y`Ugm5V tE^bd,>n*DM>4L9tGpa v]Z\qhqV[X+$_...FU+yVWt#t7c9/\ 8h)EdY79"{8J/EhLd}_U >PɊ|q^W֗b 7}T[mhҶ_;=O JPT'p}ZFJ2QY[k~ƺmхIH=Oqf mSZҟ-d& &8I`CJ?q,+A$]ir@:q!ɍqi??pXm~=+f2cV˅S##]$lQg |@@!46g8B^_XOlC8Y`ޅL3g/$'#Yt{ kX!+GVvq󘺡+nS!s:p*Jy$m9Mn>k԰WS}r=mE}7ޗJ㟎 ==Xߐd}tuŬ{j y;R(bF$K rCllB4Xo@s":wȬd1 s, shB}(RBzqΦ'S|2 u=n0S#zro[&X I;W3#(=U>]rJkAʌ:L~i0v 8^ΦԪˈ̗Lȟ%y%kIfDp?6l$ #pǁiZ; XZ|TPPE{ܰ:FPɜJaM/ɢ _VK=TtRU]ާYfJG|Ix]')GWVĄywZEAMtw* 2EpsHv 7,"~ur| )6n}鏈,8M1+n@eZsH Ù|u1厯`g oy7`p=Cgy\#wT5SZӓnВ%ж]lkh k*蟥=MsЕcȃF $"x!edP{D0=p%@?Wk.)tN)1{& zB ˕UU%aqE iW+|t$1x GW@-ˁ8K>ltkF9ZP,7xP8 8YWP̚2sKyDh.LF0=Ϸ)Iv<|R䃈OE C>pK{,! q8a(:oV!6/G-ѱ xa)Erں %m>oVMV@nt} ʅ鵂l[XXfv䄮! S~RC#@C22Ry.dAzǗـU(FS3aPBe]:CZ] 'DBC}J;ŴNfCm|׍FqDWrtP&;B,(gITi,%QBnFMZ׌x<i3' /~byT}v7"X6|Si@ 0F9ORPw҃ofHY}ظѯ*1:v;?:2'#LS@#n:2Bk`J*|1艡<.H$I'Ug:kp P3X'/M=UyD h-Ӧ9/ӝji-PNb3+BrPIgȸ 3'ḩޱ``i EYn P2m<.g0) VC5+[0K+?GIq*순>G[ b&l'ibbQzTV[Q52jN(Fb6 \Vp.hr r: ι黏=i gsKsRu\&A %lн\.寪)W'5onhS!%NsiVԶo~gQ H99Щ_ҟ G &3UMV!pLtC0( tE,Z 'P}{0H 4t|H)eG@C vMH@U)hl$1uf3̜5X4sxzE ؞ ڢ 6m^gG09$T{ O[g`vQ3ŮX皵& ֢ ۝ۋ#\i0ڊh&Ff&=wa^X24gҕWu2BlM_I|h m|w5sãZf?9SG$K8d![tP:ҍof?yqR'l) "X6_Jͱ51P v՚6dIs|66  <_{DX3K꒱|åVO1@Maؔ gjBObmYi,K$@V}B:3Zt-W(5qyYb2dz)ηހAc7Cg1hݨn䰱-nq9; kC*2Ѭ'֢ɿƉNW>6Kn bϱe]KX18ƞ; kŴw͂EWxG(ut#j\%lKm/9ow W6S;=^ Gi9D6Oelj޹б[Jq=Cz>rxRоg/3_[ww T[2EݿVÁFa(hkK._7w2zS"r`6m"x4`I>L)x WA{JIh{*pxQ s"*ifp L}DuSgјC&;%Հ4sW2`GU^LQ\"m\fܞ PL(@X8mG=%w\kFo(e-dyzKxO'pCr6jQ(%rVIC4qe #d0FKYY/kgRI7`"& Oǃ电n?(żC\+ШR; F o\|RjPGKgHa$WI :51Jet(e,C6#GY?5{]ީ. J+'M9$ q# XM8?GD,ŭ3|,OARNyN-^l n7܎Wa5 LJNF}+a'|E\:+Ak2~"Ν,JoREe ~;Gxp+O][𮚏-̙EMpMmY:A9c¾;EMӗ9Ղjt8 mbsyq/gK|['!X'jvԬAˤX R;LUKh,J8"h_M~Ę$pϷgDw؝0S| (@)c(+^}*#z$픫֫摞l $YB7nSM`<)TӃw lF?b5CHض~b ,U-|+lD7XsأvZfQ?yR Gg;^T/+CdE*faq<|=.PMZ*M5W'uRx /ƊXRqeUK@л6 ~N]rbyu׻85Z~.w1@ =5>aWBHjiA A,ԲMREų/? \RUdNO81mמA`x-ՇB#1F\1oe[6Ơ6&!MqPz|-A{W9)`(%m~_ Bb c3G B #ly$^qQ~r+Dz"i>D/)Pxz6ϛzҮ%lSh҉]mM:X >6!2ƨR#ژSYYV%s5Ku᤹F^Sd(c~Do eČ,'?Ԁ p0ü^ I~G;e>^ гOJ^CA:h:dIQ|zjM]`a? CZtXbG䜘u1'd<:7p[VnaB36W.IS[5wM_R}PWƼQq!1:k0<8D-ξb @AQ˽\ycŪנc@iC8R7B} oN﷡Ձ3Ù[7rWzlZzʡ-=Mij4kqʹOBR1(5YW7AVάhm[\ t0:P]F=ORePQKΊHy ( :FqִWwo[fe*Aw1/ i-'w>g7mS90)%/ h Б _$ <0h} tn:Q/f&3#َYWZRJzps:>< rf+qYꦜ@67*h@/ e@lE#RH] 8 į2 Vk-gG(-uC,v߮rGAj3(J4IrB"KI Ӫ=}{L΀:Y"Em^X$/6V0$̾ƣ8KN 7}qki0a}_wpES$}k мT%h\R-^',¡Uʭ؅ʩ 3>9C6cų1@8:xYSb;#LäMJW< i-(0ٻԐ9qM&t\Zgl.EÜ~⽅o/p*y<$ á\((цgX7~eMRHd g(Dd `n4$W(ۭpR$Wќ>yrm<hy~˄WҥD>xY>;NW3uW.0լgId}J>)ѵ# :IJV|hqV h+NuOSF;G+묰oI(D| =.O Twv Vp״ZI79~~ G{N iweJweh_ E)֫K2KZ ,y9l@4b!=d^L/qg]ǦƗĖ G~`@݁ ?Vf&`Mj$]Լij@mݰX'WHLT}d sTغ2<;O1G]!t>sH ~ :Noj,]8!T0 iDRyUtMYf;2\,8l9(zbsUֳ M3jGǨ[S@Ȅ[C%iT'Ğn,7vo<+ig#iviLΉ8yc26ӞKЃ^R3XBQ=[2mVRzIUBV:K9@*zn$} 3FlS !a:lj] >="G\&[L/[->+|V-*YHH3Jci›Y|G-3 s2;=Ҳeȫ :^e{,9IGMP8 u*}gΩJ̝%$Ѿ:1m$bTt ;3eOj'K?:I]DRZLNar_M,х(k)]u/-DU9W27CZhEt)5#Xv/޺1d,U$ky˵?GZCxsu5^BrDnp knݪC<ߌ2P]["e`]:+mۖs}ˏ]`ha781!8y@α@w #j|R5_>ojcBUP 86#`<ս9ło+`XO{;> cgՔhnZx;k&&^kߵϰ$ ZaMciOx9`s_Y&GԞQD+PLvn_eok>cuYY]hmo4fz?e@a4Z@]j&ۢoc`V1aNZ3i9n E37E=%t-PG.8Ts6ftG(n*#05ʕE鵕=yꌵo+ TNBpAVKlpR⦱KL-JJDWIǭeH?c6DZIKO8!q/0[7: RG,fYB+EDiiTGi?<#K#'Z{ *M&BL~9326LW ެ>S1Cij+?O<c JcmͺUd)31Vv?;wEk6x_`? _1ȡT2%.ȇxFb `#w-+$,;+#кE=CĆk";ӓEoϣ-#5B6ÄLY9f!p% (]{`]&F|Z0M3}2Y{2G$gZ`&1 xw 0 !3YKJksPlQeH6;Qp1Bx e-2B|,Z]̱I|b-oma0х)XC8ZD;yħKOl0A>,Pݪ ,3 |a+P  J7Z:ȋ -w{I= h iLAJ&:-8gɠJ£R7(qsv'JȬnSn%~9A/Q[ wI)6ߕҕyv ޼~%S[&6,u1}bL \7=_ @SHБlPT?cux7ky"@@$t1f%P6<`^\qxհf㾥?XM=2~yK'yA=N zX Zi*WͯЋ瓸.trA -i1ȭi RL1|:Ӿd'~/H6's6 is/K1=A&X D A+IɤàreT?r%>`Ep)ޟr|/1hʵQ5QOC?UCUKRKKl1P JmƵna1t@7^~zyTvLo\w d}n6N7U4w-RA;^}{tL "'.8DOE+EwYq^e]LG >!R.pq0Jz̕_hey(`|uM[j)xlQX }H*j#EWl,vڼx^و Ǔiyx J/PrT+J׉ <ß=0!@eT,hQz=>=ıc'W+5r::WԚ.A^Kb̞LiλK T6DDa14v.cɻ'lM,}-1 }6x#MJ#19!uzYid-\lXqj YUo|DRŘ|3V( ѡe'LRgvGm,8$uf,A?aTC[@!]k(%EwXd=SIyGr ~W֏/7/B֍R_o橐W"U񇭭 D93,BZNLZ8ݟ.8cRzV@zG۔KjOKb`>VbfgXQEׁ.w}H9"% St2*\kB7a3 dfB!*0'd131x6{EߥU ==F޿SI-!M1=J63[aAYb9h]*'7iMjq'p 0'{Ld@ 6*}U9ĵk|GNBdzHc pBT a\F_h]Sps@(D-` , HJzԆ}:ӳ/@TOjTȊG@'~.[0foוZH P4z Cɒb>]~t@S)"ܚ-)n"whcBEDŽkxL4m>;".{h]x ;z.t,s#;?į柎hZ+@7T3ƻ (͎n[ZzK R *TW"[WŹzaӋ:'<\ߙ ˑl<^Ւ,xq`707NbPei8vs%[rvh@bmo2>CFЀ6)ZM/)yqC5[12P$AgL8h c6*j#޽M `j9ʞ)8K0ceˋ J:/kv~fjAW~a~.U[LqCX/vk^ּ·M^_#LooT]4o.K`>OB/HDcVU(Nߝ[ͥO>fXF`6c(#՚JO8%kCr/kGFB3dZgusw^7G >1>HQ]m'8Y>dQKIO#y#S!EJҚ* 'Q4e|+ r“8(i6.ޠڝ%tW@Er9x;>B`ì ?SkI1zӁlK` $j/zb)eάSbm4H~bAu֘2^STeNvv@T?doP6KTi͙6PyYOzh?uqH&}ZbskO'kjg5wCIQᔼGBO3[rlu@]UvF^eO:d iDa,6ov<.YY_}nHRR-v0E\Q:&F.K+bH~F~, '\]piNg+|u.7fxfWGȾWԳZ]CkD]kV"0U'ލUKV/tp̼OBh ѳfSɴz$^YhyD16"BlO!EF, .E LRJ[ms K?H~Y ke2#iK9}0[m^ڟ@^I4w>jJu_nIԛr7KH$QJA[uEh=Zuc#ZC`1F3b1܃A%8 '#a~Hz;1r*mn_VQγ껇20b!t]TFP>W[MD lj/d{rڎ~jX%8O8xV.N_ ]Z?o*`+ uT |Dmr{R@2! ;⟀5PW5]Ec|z.USPa L#N^qviڀ$e$u/v-,_F]g, 8{*eѿW=jǘylAC6u霳h$t< qQ7$M٫Սat|dZ{+C<~TE3OL Wc:oC$e5ۿ"̡y,S>ʭݔ="s4b2w=adu0zQ#n罳)4 dYoMlaƢ#g_A;c(hw+Lغm l.H.:ͽ ^5K)RˣGQ'W1)]4'RXJntt5ZկƢiu--ȫAxSbR9l˪A*^V`q7jk-ee]"bO2:?Ǘ8H.j˷*y23ܗ VhKx_~ +H V7cHGO:y*~h %o,c$ެVeØβlWUN? Lu3 c]#Y%!-%KQD3I-C!Ȭq_Ķl Ra͆4$[ dSBk9\͖^/=Fgʈu?>6n XW cdjo]Kѷce_ρ#w`EZrJr5l [/_ʚp({+5:-C7Lhs6wBf}ld"Lyc.GcG) ׋nEMAS "(VzfY^_7W&&Sq14e[nvuF{3Vd +^6Zؘ٥Ǐt٢ .ghWxMNLF!;=ܥ 20XfQaW t*b៞XErk1e&o8!"놧7Uf牾5AO[޷ihs=`Կ1':qj:dX<6S +yD-ґ즂b: 0Ԋך!?Gӈp![iP/9)na=GgG3ckYEnҕj_<}1s@wk[cy2CҫK5a#vcmn5yVLs0|0+.c@ѓ{b@vda@m+;2x#Xdp,;ynO(>%ej[;{ Iaez#g;!l:V[]b̭d_ty[/?^M5Z@"׬`Zu{NNIŽC 7#պ.3< V(! H X@%t/EcBj9:a#}^ӂ.L EwwJDN*&8o9#Kn}"t7LIe9fW,Fэ;Fk'l3rSGF`uܘ l}R<+e(Lo/7%M=?D67VϾ骣c.SCc}!^iixtyj[pd+ݲt1:ƕg B(ZNNlw #\֢e|5ɽ"&'T(^v +$/dx43oG9/ Д#& Sѧ 5)3Q |SbyqJݢPߞҝoYh*Q~mͯd_\D#@7^]QAzq-85LBv)|c&kr]d{qʧӿ&i7Ό"l^+> 9ng@0n­W*8*P6gD*j%4db[tDNdF,RU;_}=`ی߹QsZ1KC{2 :Y 3'\\3U9-Wg+TIO,U:"*Y~7x@붿Xi. $Za"bʾTM0({ ʫ߿46C`W7<{ ,'<3G;-lF-/ͮ$G:z`^}r;^8Ak34d85+Qîmg'f"&}$Ne4ˋybE\Uk0P>6aZ KY6qÅTC={uSugQ&qrfX /gmeFlk^5Y,V f,c|= @W[Z^GPL%'{hp.g~#!e;I :R$ '7X+o;M{3 ~7\'Ɂku \#u;J ƈaq /] uZ+3lٞFZm09coUﷂekGZLn9sP=mʬrۈ)c/` S\hA>*Z;<;.+#0אDa]JFK׸H$ BW~VHžvGnQn{Y7֋8<r9*p?mp3?xHu܇&ja/'l0HqK&u]Hc0W,/U@ +,>OǼN  15Q6 #{cbU91BώsxJ6߲6f%zk?~*8]-&֟x[cF? >,ON.tMuw&m8RbZLf MZGBYY8Gl_vu,bnOiRrZ@$T i{ f=9VA7TIuKcմgR3\Pv ]0w mU1:$h"7i/nZ\v/߯w[iveMKe {yEvU7q TNB.ˆRM.SI)&~B9]P3&[,2 xEt`x K]%sf7[ԭ`N2?0=Vޘ(!i((>B?vK놵; ULxAn^^dEd;@XK栄"F>zt̒tG;ar~`.\ lse!{mxSBxGq}osłhh~G1!j 1B)~7YΕh@:=GVmpV%%[# ZcM}yi8NC.<%E\KNQɰ]Ä9B>Զ̗8Jɞ:mP=d:Dƹb[ՠ,@ r?w9WV,_Qvy]wBKzMS%“ 458 KE$祷]ߺtOiZ.EKe*'GtıfSOKOJv$ڔ_|9yբ}~6(rسq4)*e"Lq\h LQX}<.( k#{gcbOF6u#<[3. >- 'oa󐍄]rtGVbML֢)3ڵL#ؑЅȺ(&pK'o Qz)GhYF9ܥR{Ӕ^.,\*I$J@ MO>HCb{0U0x#;3 4­Z5ws* nU_0ʷtw>U٦@<MKm&Y2cUcRiAղ'3\;!n}1 L8ʰ!?5f;*~[;r-I]OfͺYN""O޲ n:䜹)%%#e:RmhL.v/!I(}ޣE&=u ('cC쀼"݆!$bl txܟP( Q^'dԣzK?&RuWOB"'ؾzE|ŬWцpܥLq$ Kc!\M YA Ij^R\سL֖|p#8|倣kf}`QUi`zdղe)y&F>}ZPFJ ]e׾ ߖ鄉S~4lGQT 8Q#E*egodT8QA2$͡>N Ţ:n[c4%X4u#Ɲk@,cp3boɤ]6#:-b' '3IDw"&h U=]ryOK_;4*ϑᐨJOֹ&s]h)6n]mӇ;ӂz\']'̹ Qo>"<ʪ˕LaIXSX G07Jl_/bz]o%z;%Y\og'\XGhjQe`W6ԐFڟOtG ̿z5'S1'n՝5܇e,Bulz~ lp /SRCpk:Jc"xm·Txu >v%$Wiw!a^U/7v53!K(QaWk7r&Мÿ@X B;BWpoйKwRcm[IqY8 w\qwߏ58c$ ? 3Ah4`neLٺjޮ32DEj`{J]lDcԍLu$@,HfUGR&JSay%+s7a{Tg,|d}unx8$<}AjTOSQacKJW=yd{q_4/Wה?MwL_  03|G" ȡkE6#=E^ס~Xg'c_+r=]I M ɦsrF\TB tp{~`K Yoa7Z㱎$3۫-I蟥;)ύf+cYyv ~'W0(@lM^>xe}Tw٘ nɥ2ѝ*Qyecwx546ѽHʗn ':{֘ූ+Zx ki,Ju"7-WZu\bH1~XxkR ~0yeXNm\W5ŅPF=Luiڐ櫳T3z¤/ +'e LiέB; _W'l*ac%8k#ܝa Q~Z>;_Szw399FSnX{UQ*)_UEYW-Zd߸8k6 ޙw`.P?prXf9 X94(m1j3/"^E4%ߴ%2ULS })(/P\p)4u4ㆱ,r2vזr9p%d;✚oP/mbKfPZEÔ򺜤hKb kɶ{Zdi7T’ Y`JFȸhmsAF۽Eil;Ol+>ȟa$Eoyo "I/mkY̶D7O ?mu~(bebJv=W (0F? verڟB rʬJ$*^rܾ-vzt%EEAg돲[ԒIAxWUn߅v\ Z+Gx=z:u݃]i8 p`bEveOlZ_j@DF ,,a5C8ݐYzfX1/<}Y})8{qq.U @;5q;hT0D:(-؟S⤐bF0ZeAt, :JJ0\Y=s 7+֌> AI`~@.45FN~,RCj4uUE^s 4TٞC 4.,4749XՁm~SfG6^:W5씷,ӽm`NQq½Q#C)Lz@{;1dp JV )DD -E!ñ9~%S+PǨ`!N4Ik5 ]0/xClMNKZ=uqUP+_rȤwѶJE6;_ q l'V.?dMdg[Ļ"g]Bc>=2+raĺ,j ZAcV~$fI9,B1$qcݫW ak^+ѷMhr iMR\b^9X x=j*m];/B5ףk)aF !< $gMS7T# n2kl1 >f&0˵t2cœ4H6 7<h2Վ[9 ֊ &Gb: h#b3͂>>: D$]&XbB$Ʃ)XU1 ; ]u$LB2I$sMBZ`3uM!gGDz(ڲ؝Z\'JWb%cV UD֩42bk5u⛅R0>W-_309%0x!Mo8vA5TcB͈XU;Hl֥F*uIFZL4͔U0N՞]L]J8jØ5TUVƈN5 \_D 0a5,B;ENC.d'ļ"f|$rR:w=urTlLMIJ *_ W7'ԥֽ&꾢 3/< /lko~#/x`*ygOQa"{d7,,׉ҟ«f_.cih.C;G/HlLF02ߩp t e OF1¨ 8364l_b_ H |o. x|t%?Yf8߆pH\\}~T=ν,!Rg joW s}^mBK7ipSqXf7s֦qT;Jk %Kؙj/@\Fғ-;M!z8 ǪJ;+ɻW-2͎L AA{www KEt!H6}szMD\i{1(q,/{+~?Nۿ8\sjU\H9m Jck߰G;qsP;(p44s)N2znZ#NB"! eh iB29{X ,- f&`T2Rc\u6QX/Eم_f;dNUf$L /<8FdFK? Xȍ+5[oQ`ba+|8 c#:'A X7i`e7vi[Ɍ!f9FKލeai?7V8Mt܊rm?*8 [B/28d/Gx/(- B'z性c>I>מE]*7>$ˋZʼn{qhXb1DYE4XjRl- BUgz]C"Is+%c c< Z0v3˻ag-M:?H]TAŭ=G "`x5LȰG|Q/\D&Lݨ \EUJm+G5Ep9w36I5vk]^/&D[.WG^35#SSH~ǁĂn(WcH4Bytߩsm:o&ȨxSoa=π7qg-R5EN9aVֵc#!J1G1ڢ_zѱREY!HtᲘ" .D{ դ~b$^\5&>fhaw]PEM&hg"w,h: B5̜t]8'% NmH3#Q%LkjhU Cr"wwbnݺ`FE.(#qZBjM+kɅaBVfIE6D)=ROYROBY{9G¼S>՗LaDwka͓w2 4z)bw#dSh x%!D=o6qvW$|1s]v{)-G&o9vI~/{oDrUۍ1 _V?ݗBm-Dm=Uh)pQXQnd|9`t?Zyr/7Fq77`Y~ ,(dE"f'j/T_( Q͛ʁS" 7ZYOjrDFX#5b g⡬IJ`TN2#w'T fdv:z]q{;2yy98ϖAYU^̙IM +U}g|~hz-䯕x߾}@=f\-$06ЄqR C9#U}E^S6O^z?LZ@Ȧ?'ȃTqgnzЦL[&wS9cjhUb_)0ŷH𦭍eI鱭3HS܄~Lk19NɣS"Ɂ̯!`^[A?Zh̡,L+92II߬o}<܀[cxs` Gl'[SIk샎gC'㉼m]A׀gSĠ)e/Guݎc?eO { ")̸҄Gݤz'Q O쯞P8NUK۱*e6u}*Q Y~L0NwgFʛ_EPi?wb/+QJ,K6U> >0p$(JЦRtޜE\;? p=]GN)awqFـiǛke_fFKI#_3*QtݕB仐XBV0|#YP8iRcyO->%"GA;ǫ_s'>*?h86sfٯb-]"iOf.(=ޝ N>b6H#Qizb${d?mwYl ER]~NG1;h_v:mL'dENA7:xOd`B7Hh}8?$FynKѡ$.ݎr6WXө?Ϭs0W-q6*N 4lzrbSڪj>&c_>MnsĄpc|ܐ5X)Ʉ]۷!%&^:5+9t 4Hڟh悽CBI*֌~l0µa-#s4uy ᆕۯ26HਬHE|_ysW"3N9(p/jv:$cSJ|N6Affcm4`SQNmN7}ʈs[_f2,I ;/|dn`zfU#(ZvHMUEms!RCa<׸4VXd:uq!"v{چ4apBK|6#4knd>xۚQpMJs{mz:QȜExi/ b3(7A>vԄp ~C{~bFqx3xS4 O ;7Xܘa`k;xC!)ﴀ KwD^#V^h"-c9 zƸ 4!O Ve1'W8N6*b4|;: UEچb2h0m'mX:|]&#u(wkB7j@|3ݐ^L`s)E|sko wqTۤy"m}~q(׊lГQzO N{RMR~֏]^rNURfLml2I |'`||I3߀@0U.x~a¥O4gZhwkm3mtSC(LnPYl6r*"ѐsU.Q+F::G__Cd[M0.3e/M5;ydWl4esmOqW3j)a0o2U"`U:7I <v KNà 5:dK&66"ku" n97;SKjC+z0P]A\ 勴"j}!۳TY j8TÜEc(DaX,Mr>t:[K٣/ia5־d ۃt1JFTG,R\;`<\!D YOnjܗ-]N=b Kq ~"ᯞMnKU¢a[V(y H傼olP:y-d(;TYFɠ): q{KN̝vd?9NBt"6 ]t=*vjy?i0t'tvC.*5}Ketn"7:>uO>!K ua}ܹu:;zEHE# =swWfĕ=T>@98mSQ9( K #&x ʥ`0 @{`[~]@.竞ŴV#I+U3xWX#37LZbV-Aw< ;X*,<.mKFBUf7Q.~燩7E2Y.Y!xyɖ3H'+aBq=$SbtuͶOT܉K~^/?"d2`1E*/W=R… Ϭp{Qea2X9e'AɨHJYKwr:zI<l8ETPb{"42lΌ~܍OI:W M"@7D&/ZIuG>ւgJC|}x"1y:vm)m] ]B]9۝$%fⵌ{C"/\5p.k#Q]c|W?#>UNC?礵Jj)^^UnT}ǾNp1xr$*pȤgD( '-AB+^: <(b1ol Q P;uM)!)V V ݭ4j}1&.g78Z&<ݛ.S4y& Jb7.S$pX߆5f :ȥVQ{U睈"YeW t %s`Z#|Y1e'(zƽ8P2*z%8|d?th\e``@%AK4I|ʉ:Υ۫cŌhT1Jr mֿIx ڍ ~mSnAat=Δ)`BBsnLʯWRATj{H2$2퐢0x NF71dhX|SAoչ^K G(H6<-B܁E$foxS% qV MǗ]9n -ݲɠEBp&GAUjtGj,8ܡLT:Gs-͌b6d A?D?cl%mI 7zndKQ:leF\*z>' `C⬲L.FD~x#uLEVrY9RblQBlj!TjymCUx́9ݶVk*Bg$ 8H<{j,?j;Sv@4YK||FOKGA~^/sj")Fڷ` f y@]xN;mIxM. avlJ&gxc| hE߯ Pj  b` [D7}je9+"+psWJVp^xX U#?ڒGZr \GB_poe͉'+qRzK"%ZvxUi䀙󊗐M߬ 4t+͆~_!w޵OÉLߌ}̶2%BU=J@_$s$ -?P>h$OOW<;Hz ij">!m^R![` *rjovo N.ox)|47܁zIjU(.kC/U?|.ĸU4?E_yrS?ac9vQJ1KnfKiَ\t`xqF'$].K6 `$fBė#%q8Rg;3Ch8#B܇gksx`V,*ϩnn eRa~多CpΡs#]ڡI_vB|҉W mͩ5aׂLR[n LvsЯkJ0o֣%tDЊ/gx؅՚ʣ /81'jWщHf<%RX&rŅ=a"ZJE %yoHJs\ĜTSp# ci;N%\ޱft-5<.d)I[-.2<clϱ'QhB0Z2 :Wfn"'Ȣ_vd%u&:mTbYl3 }Ibń"(_QIfA KFATsKu5~P<7 HhuMAnHxm#Ӳ蜑rR&!C&^)t>3o_vzC4n}s0K?f]WloTlB"ה6 bC5_mWZ-];Du֚ 8"<X^dUb)vnMfٖ"`2bU(M-+lr+EI>ΙrT]S` ĉ 3p +{Q&O.Vk}8OaS{ R'۞jREA155F[Z2`;š5&"XàKuqG 3/$m8bHаQIz=٤&B7Aeȴ[. +Ц_te9b c [X U2>p8>YL乜^1RQr8*$h;[tϚAkvZqWRs(Wg?}ݧ{ R|ǰTO[PwF ٭?sŘ"[ QfD*'iUYf M^*$`w*<\ZO8bց+d ZsR??mtH7R#gQڰvw2ԭ{b#HZ *FBx.>UInB¶$ \pvQ{ЯwIeH 7}-#9sS q\vfw/ ~67f@ 9P ` @]p]a M;u~ mMc.}L K:'H=9Tn U|N~j5q0^=\jI^ke[Eu\Ά}fNJT%)rβi߆6X+HNӔŁs62U_,+t>p@:wb6LaSt?gN}J_VtV;0ۡInT?}:7޹1Q ?ޞ7:΃ۥ eo\Yp$Dc+RnS)"{3F'U9 if]<^\=K<68uXHE3l.JJsV\:0#'8LͿnچH)j8-k+&ݭ#<ٯ0`;'RApT&3L^ϖ_)٥m0g.m c`G*h²9~;w[e5ȴ4' q!^.)A|w/ 2Mޛ̍Tp2̨R6R[\2Ĥ0ØOpw3 _s"n8`g>0=μkO/ 2n٩.RQ=ZSMd*JcVQP<8G2Yg~ûC{]4_Mt!pZíBPB؊dw䅼5ʏt7 L8~A'НRJ,z '[ ǨbQ :}%k)`s.G^*5öln廂n$h pFR6 _0FxYaJ"n.*WG"F>eg9Bu# h풐˘!O;K\~pZFM'|/ቿCOyO běYZ3R {cWPe7QH'U]+6={KҖpv1OgcsJ~u8R8CkUUWC0Q쟉~{}+H!^$qW'| o0{ɭbח}89V[Oj{Ś~`PHcٲ@f亭 :qgDZ"uA4l.BLj2sYp`|ߡ>ztHE|{1 BG|ˊ_{.cdwGeu8}11>:Ȝ B$A-/CW+KE}Y(X%efus'^ Uڅnm7"?~utь߱Q ?4%MA|p.{G;T:- UL&JU7cLЀ;RDu8asۛ7EMLzCۓԝuXE 4aj`\Feج8< CLz-@ 46Ԏpq]8,/m,@\X2oiݧ&镅=At;mvk=3;&CY۲خB QSq KO32pdNœk3AZlڬ/dra.?0*Ӊ&egC}붐1ᖝXw =?r0k adړPG}0jvh C;<%r`fA[⦆88!~*LDh3w%Zc PZ.7-I9;=QE4our2UҗWDc L⭿MH~3q4:7^6c?aZ U ?csGE><㬣@[eX48$->'w5ayJaЙ:q+GZPdϳY?[j(^]lp͌x] ]}%wv-)8sb+OS)f8;iS!_&NT =E7Z$I/p[=bUvS6k0VpHUĢkg+?<HMZG%P^aU .Gy3ӾvUFdWR;PqXIyө״PLN;ɟo{FSRĉzAlz -zuAIQFBŰqj&V5D]!5[p_k1amIAw҈];ȹJ8. 畃n֍/l%}W+ةu@8M s@ovA 'N7[8}jYY{~NQ<0kYWIۓ[#Ql y6 4[g} Ҏ}'=(( 2 gg*R#fCa ru[=X^yZ)\TǼ^7n&S:mM}Q~OPk2}G)ɋj"|/Om2gC\onǛ&uٸ/{UU'lrx&R#5|*r͘D[J[4~էƓe`i\bRϝS FxpU^ᱭ1?Q^)YoE$mYKdifRyׅjfeY;x#]uM%{9?I1UKO} ?C8%hVo]e|KJNNQqyӝVf%P*A]o?aiCH9ڝI#C߈Rh!/{?!_Ve< ks =56u 0EIԘWm L1"`ҹOD8gW`>WO{D&_!3 %{UyvVfjF XI Ctxq%Dǘ~Z&c>۶@֦mx\{RUag$thtNMьv`Y3yi^mc[D@0rb&n.f_Ar.ױJ~`iv)韐0HToK Jk ;}{ ^0?3/lJgO-y CetKT+łv򤮅]oRʾc|\za\M@X?Z5T0G7*`ٜ}# H<Iqlꪖ0j^ew儬Cf5EcF\͸ITZOXTzcb>Nd 1E@J2_BרTbhhya}tSd) W\N+\y&[6W-4уŦݣo#v3~k(uij\1fO9j !AA%@N%v3bGK0=6^ . -@M"/8G!pΡUY*1N~Ǚha xe}=4Rd󺾿qDG}DuK'-e)[mn0=P'7&ŝTLeҞ vTZחRf,zPXpYulq13"R6jTO>`]{j.սjD$m㖯y6I'LAl;<8OCSd,-Kuдy<$ɰ$NMVP++HKRx}9E+}U'n<-keNok.]xP._q~%خǖVZ&:p7dl5N:93-e\ i. Mڗ' Vޙđ~oy1ؓMQTkAEY?$~%h&eBd]6S8$  f_ф;Ӻ^YEjM>+{}y30#[V8 .l~Ǯ?9&'.2KyPI= ' Rn4ӔVw^w߰DU#lW!d1hMqJÑ(9Ï]~+{_$ 9 K R t4M< pn)7Gzb U{7loR)WnXljwJ FV{t͚,j-B!/qݚ (>q'Z9|h)vMߜkMQboί~O-j*𫰆"穴"9HA9!q]۳Pwe#U)"O H5&ݑf3hg{LD {|F&w-,LK oU,՗a^l!(. uVvlENϱ|sXt^47S=Ctt϶?0ї]1:nϷEKbơ@d v^4ΧObKdEU? ěg +f۬"^nE'֭r Dz~^_lSo`# 3^}.N~؅' +NF;S9!wMֲT׶V5df˓wBo#ỉ8ã'*;:I/#ǹr[s`@@)7>j'D1~v`g]<ZrAsEp]Q`ZKŚQ_qX:O33Vw˃a=P?ڐkDGOg0*ĢM0*MreBZ߷vI2Ń a *82 Z= iE)bt2F_6 nIijuXw$BPiU ΀ xa>X~htH{vTӗX!"d_k>/k A>3o'<7c4W7X64 A'u%wKkB#Do&` p)<¦xlj5Mhs+rT1ZWV9s6U+8dI](營&fAOf>ID lMZɛ^W!>ERqĝm`KK}7eaEWٜhk_y\Ku lOWujXG> [:/R+rI =mƲ`qt(E('i`K*V%oyYSb0y#7->fdMILF [OEmk;P<0 2`&.$dFn"L#,u3tZFQ{GZy+Nh#:P>/*v>H |hȼp+ri22M2eNĩ&&:mL7f,},$])ҮoRmFt`yK;k7J1;(;Hl[ O]Qz6?dc:.e`5#:~~%ܛ6AK q>k"xn.H%IX`mQƕޥ_$VJy0ߗ)O? ;CѱFwDCfR 49e)J0䵢C~" t4$6 ğmΌY]b yEsaF==B,.]kMn}i#:wElt0rR9'@5,9 `.Wpa_'uHJR|+ϧ4ESkUN p#l1̟@#gCUj'JmCfxBd*eL\?':p@bAt5'0&WyL,8Kݶ-r}J*dQʿ@^̘N!jz2_}Y"O l-]r`nuV_ `' A@$i8{0:+۠ ?S@c8rBe{RsϮ1\W1nJ};3;Ѓã:Duy[fKi[0mp9'5DcKf ?E|"BJJǮk>  (e WeM~8WD>)dҟ J'1wpz ª(ҼX֭##ܫa7}]u7(J7*b`} l 7M3{辯/]gK4RRg=bQnFiѤ@ kY9J3 SW~tݩMlwm@*v2p!mS:WedÉA+~RlNFa(' ݖ®igQ ޒ i3:Bh7OStuҥFjX!q#,s,&oXI JJ45`ٱ6Y/tb"3tJP?7ٓl9P됏+wCPU1wi/ gP.fwtM r':GGd_d9A^, "/'WH9ٟ$XΞsxn4ꄙD |?ꅩG~?}:-Zfq ]cޛĚhI\tA4JBз3/&BO9uMXhߙ~(aW[lJS[{ Ea'ޑe2],Q+ taɑ@L>p A,RD=ڍ}1"ٿ@ˆY@= E^3XAW\Ya3 /' %bV ;׈q&dZ77\( ^P2bV?ryHG^7tn6,ZoPYV1Z%nz #%'(ǽߞ)KoZɮDN|br4?QhB=5,DR$ոu3uRtxS0K@y ~=^2+(ÄpV;1":͌_8V' ƺj n!C>KzR %(CK4$r(qxNIܺHzށ)̈ -ċO)gOe ڛPhO@}qD#\\[×=@Vڄ^瑕kTrVcreOkbOΦ#v]5s gI? Y:J,@9#PeԵ6oZ[3\A49/E/O]ͅyX꧁V^W͜kՠFO &+~:_]qjhW $/2ܬ$fh#MpLr.3",\S6_:7ݽ>yBel i0wEQ Ri8h! I^21N95[^ޝ$I?cٖG]hdmOnRxp/1Bn1՛ц7,X/g &I=5Wz>hhIeX5 9Sc2ۑF$vquzK]6xpoL`*rMϿ8ߴ,iWf% D6#5kdN.Mbh'DQmX}bQkxW/\LŊ<\$dg[/j7G zv. i4*PfjMU0s*z&N:ɱi8Wْ7GxR#1 cq$F$1Ӎ!0bQqrΌ[ %(#z(γ?F␶ȴhuɗދ5#j < p !ZW毶̲no9ec4Hz]&Ԉ:O;c0 8o4bryS`9|[) hqgp8Ab ݫjЅ1aK 5?G&BzvI<޽C\wrKhƨ ˜#^=Rf |vvhā~8'8R\0F[KiMlR$.x5ĪN8XOnS8'L6?^Yj:30dx̤ϘoE{[Rw؉ :6{(#'Ύr(,[s6Pwt6 R,ApdO8xo XN RF$r7讑8]!LLy}9{deK?g5;LmuC@o1CkkCx㏰ѕ@*?t.jlg!yzXAR+˔qFEn6ɰ&tsM?,iW0/W86vԧo VA $7PV㭾/8kJK6hCW6j3pEˠ"H"pxO;vlZsHSo[5U9dA+cbK˱Gm Q@(oyęӲr}_֑OaPL ^H" Q&~&qϨD-RE5H@,vK@}e4SDZۑ!c">V Ӷk{=!cu #>Bjmxd*͙KgO34z 3q` 2H)uNmO]beQ/f''G-B`L~%q9*ďd56”m.XBkYyţ[#@ i@7 ѷ4x-Yӡ% <4'hB9ƂZj:t%Ƙ6ڰ68]d6nS>5 QjS,ZI}o #6\m/cPߒ7׫DϪ%,2h@ߣj4Z:%-TT2WTei+ MӄZPG,(9tg2.RkH؎!WN-ҨR?Bm\9X9m\8JRk/v =3Dܢ$}#T'sc۬B6)0O[nAS',Fc2,JߣF #ZUe6 EEnt ܱ=IkDs IͮIrv|3T +3eh)OGp8&s/'n(ow Q"X{O&hDhY%Q1~8Sp#zr]6/+6#+܇*T#|DVCwnB*p@H%GKl>.nHE}F@/ɋ䂓ڑ2p?'%4,3x~N]ELr_ğ9XjfJc:<̖bF|q@FG>5lJ-̬z 3uIBYkYk trDo" *Fƥ+?kkl/mTK>dFViEtG߄]b"Px8HLaYovE,8+ Q;H9K[/A?+CΥ|K C*g4 f,Wq@&?Br=YRiW6p{6Gµ˫6]*W!vhr:_\2֕#ZX%!P ZZJ\HqZ .rBe҄Vo4\HbbWdă9.)h7+ e~PJtI >K jO,Aك|S濷[hf#Os:+R a8+2pSfNnv?7 {sozWeı(Wv>ۿ]a{㺅o pzddESV0Cu4%h v5*FMK`[ SdVp-l$/ d?U.:k++e}"bj|F_MkZnP0>)4žbP[Ƶ;ΩL!e>\OB}6[2* qᤴ㥖fٙ8P}ڸ{6uyAV ۚ"_T<9V##l2K:7Sg2z./Z028Y596YXe[SE-cDE8[Ꮙ:0D%@QK_`+~ѺwȑL2E#>,/ߜ6Iza0_* Ǚh(d%b]<~:hhZсn-o MBm|d|-鿯lCJޤ37JJHrC I$Vn!tTp=SEVܥЊDA4w9ʢ (Fsx6%go0;pbOĘzǗO#: }em8;S>nM4n4 K|`IW 4/:K+W՘U%`q~u(B(yގ55(Eѩpֺ->XZ9<SAnv.h4/֜PiKbg`^+Lh#IФeȺ )%7ϴG);fWa}/`提}}1:aeL͗uG;۩F[^',V\4>~7}.W;; 'K82#o62G'u*U'QymJ/W .!ND5CE43қēE#jμGguTTq[K(-ٶsuDdp$lOٶIBADIE׭oÒK7f&6qw<ٞ]D&m֝'r f0 h6=<=cӻGM?S$#c! iY ~kՍ5\R.V(@Nںa~ ?A >fHC$o[á+ʞZ 7'F&Rk M#q%"\,m,>x'HqV34&UjghIh ޅ\SschV'P!WtOd a9dfW_8=,"^qߡe& WJY-}H̯뇛Xb" sW/.u0^@I-mtapG.n}9˟d)%_3!$FZs<]xLT?Lpm68^hh#ߌ:G`RO,<> sKnRrg>;,L B̙$jd-k:f;BUh%`"5] mvɒ_-; }kI|[qNy.Kee QYz~-GKU- ~>( 7?7VM;۞a)hDڜgA?bFm'@bABρA2wC6Hong$NB ߇(_5 .>I1KXSpO fvCg$  oTZt9WLj˹YeDΨԧ3j D5xsNowŦ4 g: -[m]2Q8fQ?!8~E']jUBg$686\ktВ9`4w1@A ,vx@S# xa2Ի|JZse8_Q13!-aOd6`uX#WBVys ;ࣦSdsl% ̂]I_xބN\lsF[\+s^n)] MtY%6h^j>Px4sCw73a+}?/i~࿲mWuyiH 9 hE4_*,Q߳J۩Ghn0@X!7hqZ&B6:  >S7bW#4]Jf @\_gf:(qUtaw n"Jm.k5]nאt.O%pP6mSMvF?0#Y_x< ֦>N \*q1z1K|G̴5frϰfyR@:AB"jRD$rwo8 [,jhAjv6gJ;8(n.ܟ\tisLjK۳`4ktB"}A%1"dk.PFddsd5,sPNM>R+^:P5Ȍ NX?,gƓW! vSctH̐͂j\HbK/v<˚ŋޣ՗{ՖH"T (Y4so16ŌYo5ZTfT=/?jxЧ6T<̿CMXezxA@WޡBnߙSIH.ܷ;Q3;#&߂% FzHr֏꒰hZ@+` #>% [ E@ dABr:ƞ&bvDKWXYZFki*Yiԥ0[ͭsܱ%rx.d݈qG/-mj&J]+g jY[Y0$BݒҘ_ba c]Q7lA`7'*y9[uN=Q" e(.w oʆ#rHjExbzTX֊xKۏ .Mj}\?651GqԑliU5YYQܪU_ K%4 @Q` F}ȌLGlj ,S<:cdI HB(*`TļQ8 twČ ?a^ hڕۂzȁۉKZUO CyK8,G}.˽hGgYMI:93Ɲ=܅kC$] `2 i@jQBc]zQ0 tw aY&-kpei҅&M UF48p-̠iYWO:' ݃٧VM9"$"4yY ni)f[^dH-Y&! '+ Ba77Yy75 12GJד  R @1ci1'^>( P y_vnfrwu0D\ж~ί>%^! "JU "-MKܤ`WZv"⇬rwU?^HOL1Kc ]=uT=u 2_I{kSRMy&$uqqo߂y- g9o y?t{g- _$S-^4f)> eOKRuu礑 ]jh/Q0-j^K|Kc"j9 Bq0eAUc ,QgOSi',($"utU޸aF&Bf{!/@øℊVj#$Aŭ٦l?>}6L-䞑Koī~*bRF mDwqސ$1v8@ =p7HiE.̺? E0ah:2۰6]Op[=Tl{ rfʓ*5Gf3*^ T" 5[W3NsdŞ$̋뇹e dNO5QȜ@cJ%֞EE2ɏl7g8^zinSڙkO&毅WyyW; Gd))j(z\`paX>?XL/p="{/3WqEf% c|)~0H?k7\-}So;Tn'| _5aNh!y )5.ɺa8,I)5"N F#6Rܼ;JMWXnQbY`WK+fhJSݫα'WJ:aQۦ@".{a4ׄ9EQ^F6Bvv`>^ޚ2?kEINfwxz+荳2A4s)3yAE"/aRT^0fq^e!jnӸ Ru8b=Bý:Al?]J*w7kx8: 9;Nk5.~C+}ؿOUE=9ty[y,GmS?e .%,DpPKrAˁ;RJŋo.j7IQO1Rp: {gǵ4 _WId) >םu> I61G i(HIދ_ς~^ ZOBTڄ{5bu '͛ r68Z.IJ5RiYKy<6vߓ,n4?.B(12Uak.3MГk+u] 3J"2M:*:Zwtpa x£bJJ7by2?ǜ:63(T~]t^27n̰{ 4Ls)uYH, ɱֽE^'4D. 6&27jNB mJ̣eMx-7$cgT 2J}>r~,z@ xG#|īl0$w8]激qhAt 8j Ě1\៪ ѪX}3Vz_Ն+EYeu- a:ki x貱|ZpU9w$V8X2eˍ =F%Զ̻GwD4tj7a'QJ)XJ&߷W<|:4`ȇDy\9M9(C-l#{2Y#W5&4Er^*%)\OѢ=~nDKq5_{@{ꇁ"j!ϯ@ =2S5̦G s0BPteK 9}0=OCAZ ijOn1rHJ$,(%.ag-|EM H18%Q G 3!`0*_|{._HЬ4TQG2rKaup!`ΝGѼ3ٸtgYe;9j'[! _g/ tp%I ` !Oo@C^4h8O(}3qz[KW#Я⍦jz&Ę7[s~Cw!͹Z>#l$,n_+̀u448u.AL"DAWPٸuVce4Chj+WپHC;N4X2gz~unLbf@.rI?Fg() pm3SZg5KQ8;Q@GM5L_5WQ egMQY5*14| `NL<42@9?,%`y?ك ɸ4 /knU~ǪZ\\3;2q_yciXz'1?~qWY%KY|?s}$ 5DͻPpc%&X[m,x 怱«9H9t.IJ?؅╺Eq%͛vnu ^;w?f("*6T_#l6PY'!Ϥp44}ى}+iۀW;ҰɦEx5piXDŽ`H`zQ.G7IJGD )ǍXcUժayݫNsQZzȅʵd%*Ȉ)Gr4i/h!׍c ̄6lia;ˀ0nϻ_N}8D:?fmH%(2cx4ލy φ|2˻ONkr9c-&3:>A+4T"PwYY~ΛFO(fQFXڰum;n#)lDI<_2XK!G?ԭ'ܨQ*"1uSWlVB Iingj'2l(SS )3|R($^ƯMv$Zס`9jL%THrL g Xpt.9(-SZㅡAjqVj~3yӘ[]VC:N"1 n AOH+ nOJS.bシA:0#œAj i-YOq^kJH ZiDbRMp3v*=;lg@ _)iOV^NTmbcyﯛ쮋]S m7ϳ~:3V9@YBV6KjƢ˼&{nν- ^IIpbrʍoTQעmo;9h :[*V8dUvgI0NBJ: >wiwڦKǚYZ΃ $> tnX .*i :EqOͥt}N {1@S+i`.Yh3RيM/. [+{Q Y3S/:;# JyADh=|T/3Y'j1o;]jz,w;}wɟ皚Mo7ŎNP2Q9epsjf,:(« $k7/ vV{E37 [A$ة"n^| jR hrļצ$~fRbc|LybM귭zу:(ſx9<¥ мyhnek]E⌺$n]5/2wl]1*MAa6'FuǍbHYkx섐{m2mJz>a$x3h<3<6\?@NՇoA<0IL lTݦKPb=t97 ҫc[##t,l +n=FlٷǏzîpby.&&÷u%Uu Qzj>iΨz\N8! g;x!4A*|Ea|éi/7`H7NJi<.݃nvqImQ*+iqo EcëJ`w7uLaT#)0pKtXIIi+0WRj^0hܹfɱEX{"[W xCaPk.B3+& 2u\Ivm)ebi5)%YX՗sɦޅyYlcS GO89a#,Wʲ' cwE>ɿ( K4L8pk^CJ @*pB\ l?uNh21^逊dŃ-68۟k {#v{B-4B[٭SС`wR3<,q~tHpU@J53fa(}ol;ڔDͩtozGa-+78Ym-y63 Z0GV6%#N8Tr\a:PM'7=LvS[(ү,ʄX vbLS :VWuQ;dowzGM 2͆5޳ֲ c]/?>/8[!u6ro^, }Rv܏!UboYf.Ѫ {Ϧqqz/i!OhxqMM!kvdGn|aIfD]FAGQֲ;a:Vl_h rmoMc/ @-R5Ve_||pKp[4;6U)G۫T[' [`36O`E*N ^rnn+Mhy  HeUss˨$4 |?/fVZԁlHVU;\T=vݷ>RCRʮ{oǀ%ٷ)}Q:GB2ļ"wFMF%9vj8rD9u Zce O:y0 SrgH]ppp<ؓKD44gA?W3 c$ksYԦRV"yHƐ6F+퀰EBr۶4>tWpW|W=u<So A+2%|reLdf| ?ޚZOAQN?>rYnjYnwlobО@ES'xtq|!K|F E wW hݣhuwh*ySK;]ka gӵ3 8l a4fmGH!&^[[w[`aÓD |8y7=:];Ƕsl?K75]%FA83Ttmށ<E!v;(M6}9Mb$T ^G# 9ߋ*!w 8C)uzӳ!rC{t$v}ťXDK6(] DjgywtWW$bH">7G/+ZVufj>+8szt:xD3! EGIqg,ߝ4׼ҎZRN ` SW}`{0 .=h6%cɖP\-W׿ 訝FhY;=GVOG>t4{Oa@c@"f`x5GWL3':m+WյSn\-& -2`S vrigi;G-?t}c,Iv"YzL6W.z ,)0btCv` ށ4{T؁,J8@1\B% i2c:d?OU Z4rF 2=wu؄Ϛ}\,m3L5Z{>a6"?4ݗoG.3lJҞ9Ncԧ UÚdw#( 5X}_HqvE8(`G $"@Yfr( 6]^][O;Ѓи.!{s1T& xm7 4jz#e,S μI;27[T3i<#If8)(mt>[VLgđT g2e( %.c;0K}i Fh -7AHfW^ؓM푩*|Xf]z+\b͛y&Q1Cjc D_|ssMg N +c @ ߢzK>.1k<`'(H$?> Ssa`2%l҉R$Ѿc T*Gm |Q!jCB &iI%KkD:ڽ&#7/r`BF$>6ۇ<[`Ro]%-MM2r"ǒ :pW75yL;72邪W%Dc[;5sx@]p0S=~!=o'}dO~9%e=YJk[J-_}rp3VO(J;{y}EH*Yw-mWAkg喳,Uwgs2.Ze#í(;eO]iՈi[Tq@1Jjy.'$– ,2cs[ތz գ-G虦F0xfѓcizАN}w]U8'Ƶ]~z7;7݈ihɍ#I N>㾼'E.m5c\Jmz@ HTاH-HgE1#vZ\"|_FjAl!.6ݜ\ 8fWnwN*-1U. lKjwuF3.Y7[Yer̾C"d\`X 3jρH NNhRɽW>c:ЦZ=WJNJ\f v.ΟD-yRaJw qƫ?~FxlS`߹ $ oLT ޱ _A+nDr/˱􆂨R)ҵ&%g= \ x7CwH[ ѓ, bD`{!6aQq9mDl8ڡlzB׎um8OpQ{Ҟ%H |O!" 2ժO01lh@I6,ǂ+Nۅg(+ࣰɜ;,6&q=?I dJ|ǢWc:^7TDtU-X[khsEN7PD+Jּ "m~vɧF jwJ20/*n2[RFrD%3;#@PSaUf I:L-C[$!vv5IV,ReX׋gɛo# zw.2fHEt'yKtjhre{/{k~1ZrRT%i)^Tq\-RǙ|"'b|3Sg!?Bz%p+ˊ)M<ͮ,'Z3b|] G9Ȩp]$\-jvyO]ad7=ų:^7y)p6*-yҞT1^;P߾Xސ&O/qEÖ/Wa ! -TuWh+'Nc3bWΗd-ͫJW籾H0O)ٔ.6Ρ͖Y$$he;+-}%|WM"Gֹ}nO6EU/x`5b^,? w-G<:3YmԎE g%T$KU-cCYVVaid2FcNk<%' ]Ig@UÃd l2$X9ߔ i* `9 0 B^vo^6u`2H'CA 9LTbΊU5:5wg- l-ǯS"G+sP1%s5mp~`"wU1xy4xR5یetH ݲVK=bCM,ً rO/@cZFSliqYpwXX!O-.Tq(y |[d̩S'b5_Brڪ̲b-.,QtyBl$TTM6T`Ю'"k9"!-o v?qB;7lg{\@5IZϿSp]]Su-Nl*9T[7@--ЁD~|ĻWo/~ƅ,U%!hw=oKQ`rH \JĀ0B*v(jnd6o{WpFeR?wY4D!h,=Mp8Y b"]ha;0kHl/e8kO \0̡gr8ыjͻoh+5CBD&ؙCf b}{5 FNһJtPD K*^ mj3gD^6I0 %Cw`Z4ú~[uG7Par;|.ĺO_9FYA,~wR <ߺܿNV5YJ }I˽o`|$ >L,Ãbz'@#>&0z\~[> S%ysfڤL?D= w[ӓhH#J*HNeW2 /':y)lɺ9ROoP=sjA=<#^x[GmE#M&~J`9!EEb?S)?¶G/ocҗOֳ񗂒tTȹ;Z{B` Go߳n, {TkwI<_4w 5h:3:ul>-uKz]EmQo1rje|luyC3Bo9U}rUO` d_FkN!" (zR 9m`&ʤ>QqQofoʜqGvƖa~R?0h+$7ԯ}^~PC t&=@;tR@4ŏ9)\mZJMT ABW*] IhaaX@sYc"=/ILXdP[~-oy*V_w>RhԘ &H8(kL8 $hUE% 2ytb1o8S9(J02#+ӵ'Qs,0Ǒ_uQB4Ceg8]=,|䇇0QcptyVG\;/]L/yǁ&w]:=w3\FqȂ\OAi!̴$ű`YJo(GbYֈ d[̝!y[CVI yUt,t{ѹy{q :P0ɻ8HUD~hN`w2 R?}n &Ņ|kݩ`t$!.*ȚTZC7JPx3tqym~r'Yc9{XQ*"+˦|'m)'d^$,BI"鈪&@cMکvYfaӬUʄ>qW2]VYbR63;D RxScYjӶvq_:IQLm2t4CheRC=]I)"EZ3*69Gxɲ$KzHsՂlǾշL+NbEy v}~JyZInݾrͿGꩿx'ꘌuP·}ww='o)-ɡ=; ojac7ٞ­cv#ۂT#'1b0bwLWʶϓ$Ң1c+֬ԜJ;~G P3\:^Zi]0X0V*Qoc 6 o-jNd ,,JUT\`Ia;vC$f)O 7vB4#f͢1ɾ^ i"bG6V{N9z^CBGo_C2!@>>z06i:dOמ{/rs>yʦM仱*TWE*oKnK8_1pA8+J#^y玄Vi+0֠׌lJoKPd:9‡F 8#/a3^Jgrza_9J+i;Пz6P e:3F[F#^h~Úg:0ٽؘ` ;UG(ՆU4FB[3֤J\INUȆ:6QrMKt; v`'y DImv7<@!@[Kh'*TQ =[HuMNvtg ےMz i#PФmQ5JU< .FNx%sl:pӿjל!]8rV  xMaЭC\V/Ҥ \Pل =:b,/T,+!GaBD8cSOsFjb>A+zaU5Ph3}4`jbx6>x~_Ê MM\rz,S" ƖXc;| _7c8deѕ \Գ$%T5vc<@޹2WP U5 `c>Q2| 8/Sm;]*| dO݀փ<͏<<@sTx}8OꜼR E>|뫽c K෈`_6;OVѦR^D[}蘃@"ʿ0CHs<4AI淡MZP-2E(E=a6L>Eh>dpTG3ϑdwۀ>cŘ~ȩ$-HAXQbr "v|ݭOӒ\y'6cϴ/SRpck!(*V̜7eO92RFϡQڡb>>qx~n)iqbGW*"7Nט9c@8{" I-|O1 tPIQDn(~1Gsu ގ;/s"lpΚ[v7PdDBCa0є 76 YyHi1Z|E-⟁_< Sy1i`}`NRRŠunb)p(Buـ۩Lҹt ~!* 0`W\gay=}_w%Sz6 *Gg)DkfR%JⰤ'iZ# M#lÝy_jO'\@b֦@~A5,ݡv`D೩>:WXe"ǰ:KQ^j?gP $,!8ōğXcs'oLvB:m;LY"{+_Yi# a~n$$-IlWh~EAr~_&W׸齈bѽuiy!2K%m&\0PgZ|k[L9%E|宮uFdьlX&Zo29ڒNў8`;L8Ba<\kzJ9Bd u69eu__@W%Sܗs8IzoH),$V(GB"Tq.l*ΟޒS3dĭw cp[10w Ys&c2g~#O[vGܵpKT¶C$9MraZ KLj~=Wۦm\WU$-§mz{v=+l^&j?CO/' f5y7HזUŝq@&M~$=Lc#MMu~Ȁt8\oSʒxN{<[6:XeoGoBw"&`Y2HpEZȱdS][k fVa.n{/|X8tRtow/WEy,nDx|ToΏژ-ޱ8a呵 dOd/ǞLcgM2)dK DXfYά*kTo`#E9;X"yMBߏK7R@pEgõz7k|TOրJ7S6R~ k}x0f7*ȣvaw{~VZ/DG(7i;}g*zS4'}i:`@2e=,9z$ e̚l]hQu4-/ tR{Li<.@rX.3ۡzg"/iV M \B0]nm@nVnLƳIġNnQr`4%i] cQwiȵcV,蘳 }oGW'WA$⎇)P\_P~/66R9W# u\rP{ϙ,-Fqa5HvgCy^Q d_*y:J= : kDY{ߜ2~֥ͷ KB3 W% EI<eM$f=;ln8Q1mRoxN*?8)ۄ0nn4T˷עiO!LW:TeTsv|ca,Er ܮRɵ4ӻ@!dLa,T\I`dr d \Msh2&&qWX(En)822)(0c>j3,[:&=y(h3,_ⳟ՞"Z't?29eiH L6e ytyGEʉ8fJڜg5Jd8i# [@8^#{| ag.߶a[ߑT)fӻ16 "붗"Tҏ# %LԠx+#nZ_P I*N8 H>4qJx:vtpQsqdp~eK=70HOZ֭u$KBWI70fQ Nvg>kd<\ J (˘xLZ)h)Ļ0)St~BoKCrSMRjҁa 5PVMIcX,}UX?6Lq#fH9&78~FEY S0Mr.lrm؛a%R1,߹<@m=Y9dS*`jd/0l{X^ckN =hBc M'Yӱs<_V hE?Uϗ-hSVQϿP^uWw ,d0/sfLٙH-+_CpJ,&a:,YgqMh j&^XxQz8(h2 rT0ssA[r6+8z:0\k/P*'))mۨ")p}f½?aqf:ܚg2O tg*(ZsGbmm"MW5떻]-tXh0ח!Ȅ[X9ýS%tjB>ېKK,;3IPa &].Uv TS۾FwDj0֡ovl96Ag.?kA#?{_ $9ve"Eђ{܀4]Sl0TP@ oy5]Gߺ4mˤ,5\`Z+J39 η9O½F~@b[ZѸ$NJب@^7Z.E:DSv$]t!S9jkUt`bPrG!)Fqx0gv)+Qw/<#{'L'V~ugt鿳htL%VKUi+2˩,Ueu-2Oťm;P6{B }Ym`nZ)?1q'\ ]0kݸ@Jw8"{Ǟ2CpCC{UϞR:@F]aOŠy)q5@0lBQґ'D6 9*${b̳Wd:R6ItXlavhzE+h\Ā/Tkxȝj;#Gt=:Nu\W>LYqQkG'bTwO 8Ųf|wl58؂Zݰ]ޕƗ,O}WX-c XBrlyw] BU iΩ)euH ` vF'_YDEV}UzۄAIE>Vڈn]?X:{? 0;]E$W UR(~//XxX}WIjçՙ%i ɍSPܡԔSni%Zt;0>m)jfV9inudFq5na'8hHYHy`9f>q~F+fTbxvDwP$W4[uUm&9:B;=ڽٸ4 z:?'S%x6LhG-Co(iGp>ʷJy|jfYW運Τ[Ji^!37|H-V&GgSAZw& H -L!AH/ BcRT7M8rSı}Mf-ecW4nhKxJElҀbY$j=H-Qpz69|D Tq:޼0> p+#5wjΩJpn?e.ųS{XiNYL,StȎ]eqDnK%&f*oy53rןj} u{nʭp-kevPi#]^ID.ޜ~3gʏL(0 i:߱KKT$ude9]vw-ɸ yĀPa>*\bQdB{Y+ShDv?JaloC64 됽JoT,љR5GeX6ψI^RY%VMK@:~򨚠>t }iJZ9b tV*"I!M;歟W+Ϧim[úGS#;d3xȷxjQIQ*T7$>պo%ҩI}+`L1+r&hk/uYΉс.w(e6P3}L~a5ƶ?Km|6<ܬRy:VJjr K8{&T} cj/!aѨD_U$K q3j{wQ}k" 鹄a})PڠϭP|!U|˞Yhu' *Lռo!3Yemw%.^R%u9R {aĆ>B3r> _kQ/MՕS<%N++ppS z0i(/]DX-0umC]u/gz?P9ɀ MtSu;+LG])3,D]5T칕~;TV0E H$P/^\2V1)op fʫ}.$0Un Zm嘨nKE> ξ7 $k-\>C W6 /Z=ltbG;Ff7kcwV1٬#͸9& ~jOJ GtAOdz{m^Z /(LXKx~e3@G\dvkboYd%dM;Q42՛LCh˟Go2 DϋU/ZCDx\Ǝտy1X&~hfI=k$S2m%E3MmZ-Buxp@Z;L[ҩHiNiM0ır]?ѥ2CƝuTe${ʿܢ8Ph|aJC .GIwDNd-o*5()gډbu{jZMtEsP˦)x4 čhn2qSZ-@ B.so>[g zQE ) Td."RZ!H?VC˓ !Lc%3{`?Պἥ2eȕRz?ۛP}j(iHmF'*e~ŷ_)Đ6̌3_<#uE} ؚ,_|:gJ%fr'-@2ToO?WfQ lUQfrJM\ jt'īJ!@)tcnR/cEi(5n;`fz$]>S`פo("n=CL 7@3-I+r wYrj=<q&?Y6_,D#FW!mK@ƣys7Z1.K%X6̘{EciK+)a6T7 k_kyD穴6@'V2T}|!)9z=I][} ?&;:!V\+vQ#c@lVdz žnsh5FyUt͌潟4?ra \Tآ]qCfqMhzd1 Um{L (9wHzgDW+{M{,b':4!X|{O z':`xaiM$^c=-=70 g>׃W7ʸr~T L~Vj4!5=!X//Qd1X;NAH)\,BnLJ+6/rBGxJvX 5f 2(Ez$Bz]!!"ҸL}rS+^2Gk 81 eRB?I7<8a&0(_5;D;Rr ASh*a𡣲9{E7:Nȗ_<^pSȦa׉6d$j>  *E~5wN_{dї$ym$dyؚ\Oă >T8#%"~V9w #5p4IP KJGkyK'hGHV6[+pG-$ے:4S2We,b*L=4Y(V^>RkonQ7j33}t[-@V ?,UBtOE) E:9ŇMz![VCh2XS=P?etlIrkԌ{ԡ"*mGls! 2"1՜^ V1;g1$d\ή\b6 wb3aJY.rASW ܁Z)ixd̀b 35l$_Ͼtk ʸ eHLIB$V0CnOUW;ĉ S " ]yq(z:L<Zf6>9a,4ރ۩fݦP.hl F3;P]ћ_i 9}ޙ'-5qTKܯ "f|7kklUlm i"_N3h:N%e^]dUSh|ސ#}ܢ嘝W0J9'r}TK|jh Oxv#ۋ72f4go¢o l?xUfOv>Kw}9aS!9xɪL $0]PI^.9ӕx*,O҆)WEz$Dbҍ%o7"/2m{hYoGq(:a'uJۯ%M3-aEW6N;S~_FH|5#`:TI2 eˋ~aT:X;N &i bU2]!- Og;HBJb9a?Ϳqx^9 .JA醌V)Ծ=G&{{S&NKF3M!L, Xh`bI(b0bKo=q `s.JEܒDJ$CћG];n:7&NSsM)޳[;!Y?a^wĪc5CBUP,Hv۫[i%Q|;aX Yt%͂z)4㝡9;4BW2q-f} i㯡Zqi,Na h4/ wЙ7#{n HeGo9w~Em2ɗ`2krAy C4&wС\)ֽF ul \VEU8:M]pW䑦Ipɳ}lpǀ J6w*Uوe͵{kj- 6ϻ(2[$Fz-7Cg'/>TE聐b9JD~ 7TNݦ:7g{0(@G [ *S7 b٭-q{kx$6<8Kv-Y%^}?}-`9^ 0W 'Pb 8fdYb6 8u4o851~Rk-~ >qRJC9*}D e&l("w* aZ+x; 7`+7բ #ʽX|:f&ۛy[ núk$|O <351kN=IUDKHhn1p@# SxÊNVK<~vFK]Ut@ψC=bRp729:&M,B˳㼎Zx?[e (|JĪ^i>]# ֑و[ߕw4N=҃DkZ]4v. -}5"b0h-B s9EHb&m)`΄aZ%cZ4 'FٻhG^ָԿCKE+U@T;3.v!ݼHҸ> (,|-_S)6P0*@B}tCdrYlF1'ȳ-(nmjS c{M5R7C"Gza#,H!%@Zqe6Vr`M2VDKLZI}aaP+I@! d6\ }˨AE޴M8nxH@7 {i΅Dz0%֖L$q[-7)R-iJ<^OyΜ!yǎV0$y5`6ygLL k5dS=ad UM! КK:>7-roQޫ1n]׭S_. -jL,k2Qv} ư,8{%٦beWdKTIյ;'T֭ː7G:J0@&t22cqMQw{Ivi~'vWNb$GZ%H%C7wX>=;)dI;u^򊦑 '3'6ZjoP{]ۀJ@~ 0~wzZq64vK쾴Nxywۈ,>@ 9csO\4ZzS)+ъAl.VF4 :$+zB/5b<~ OM!-Ew|;ΨJsA#t`_tW[kzW9??kVXĩhG̚F.-xkR_C?RZ0}~ 1k=ZCWa9HJ;H>*<KB7~gUH=9XY]wD砃AA 6Cۨnw!,e|RRVE)}܏jᜡljzE,`|=]{B]ukU1lM+R)Q\/_^cXy*2z[TqYY-`\_ 2b4 yHyC0MԖq ;7sSH)"HES[qzT"aB,-=m^\*iwx#y&Bc!QUYUM1\oD{w@C5r: 6/HifIhP<zxrʖ Lir2oh]$TtcYQ>b=jL5˷iq)TFB^! UT-A1(­Q ?>V,~I?kj^@hboi72nC?]]C䴞Ohr.4gz҂W)θTFLY(M=W{Pؒkȣ] ?9=@l>_}S%>ˈ\IG:tɂc񶑄F:`(Ĝ=*RѴlOz+ܓСnC [G ͻ\M"@NSQ@f t |uAYc3Vt-^c`%PʎAAM;T8# 05}.Yzps9Rbs`pEBgk"yI!if̣C7dڔ NJn+uWMYn =DT\^iҀNNwk\ ? ܅`sܬte2^wUS$47q>)6tl2Ō.b'ĚT;5T06XLЦ3+{YΕb )^K&h 3q e ]3TE{vN fV\sh?KM4P4 $5ƀxWee9&XΨAsC#Z![89ӣ`O>Kՙ؜F\in(U?<2ꠦwR#p/ue3I&fEjnoE&Rk %q<_]*?|..5jdx]YRm/dژid#|r LNLbi\0 h2-m*vWr꺀6ԥtEAd&iJ#6ؘ(Gv~\{"Ll33z4U>_NοtSoFǜ&Xt^|ŏ?~IQ;E|Oiq`D˼{}jnalbwo;>_YO;́wX!/xx=U<ގ="9f"2fgCaC^|=hβ4aͲn/Ӗ t6MCehmRM 1iEC_c;9ͧ`R)a n.P|NN%0/,@H H+M ΀9HοĄxEJ{>yӤI$nA-͛~Ƕj|0|U.O>2gz2jV:jZ,ʲ>C İ`A ZRْ"͆7nINoz[2wscE0c޾iHUR3H|^krńcZRTԯZLyW-ʫ3Q^OHoV8a N Vbt[rR||`[E dmWHÔ"D=19 X![˅7⮴FDdVtb %pv1M-+2i-` QHvfxd` ji'*cVqiis9 qI9:OAh"Jt7Uvp)Fq?mxZ>KX[`cAi? S0c'1++$#tزѓb۸1!M<+= ȣ(b=m"iMcQJN "۴cΤ$HAb}DS!W/Y@h#t88 jH7`}_^&d_D4ūKh+[|ӿŪ(ItNw/!3OYNbz8ܺ-J&u' @ si9;uְRԶRZiC)者sG ^%4SMBcSl"<+ݪdlF op*#Mߴ2u# e,L?M`:`8:Xg0IVO8wN3RYҔ- ޟ iIJĄ}5EҨ T}^ 𢌡O%Vv>Z#o❗js̺y#n-dE!־ࢠ]f@E [m""лJ4:P8g8FRUXdSlu N|r}Z*PPj9uNX~d#gIhnxx5kӢlsB#k0j!}Ɲٸ5TBtV0򄌘V 9^ ?ېaѤx⭀ #,v;K$Rm+Ovbi0>2vyh>"9jX #+悬y#0E P'Cy;'ǶfK`AϾ aE!=gJ$91f*Bѳ9Xvw`%bƣoG,C3Y&@|r <U^3HyNLMaat&^L8Y.z)1$l.\o ~wu!Ŏ9mm{)~pjeki/aqWXvmZ{#c jtASd)gcvz7Ak8"{! Ou_9,~]6dH:#Mh>X'h" LۺMk^jj3N>Nw(i$9p iDi;1=GՌWP]{7S /\ M-$6xz{&v3$AH\зgd9Z05(`}ߊ#vU0?Mj6'( qȕiTHkuF~^MMEFV} UWb>#@DƠ9[HQMtsfowX .`e6[[ij/5zQ]AZMavjd.ñxZi;9&6K^˷ "\FPKiJDEyM1W8>(U 9_L<˓:ՆX[tvUV PEnhsY֐A{x2xw(dc(noDfQ)KABY{\=6;\[jk>-M4+^ZgåCT sntl$NEӬGdUꪜYMkK}~I.3i0)Ь EfnYr,^K(U20"i>Ewz b ɾ-]x`чX܋ŝH>fze>g [rN:Il"`5Q:%>K- 64^QGDx~VI7BMd|(^tg%hHw=c6f2+ȇ4ɪ ؝ %>Bu{ݝ!2vG-Wg#&/S6wX)հFRZ)qwjܔe/ [ONlxG63A/(xpvW#dW hS`n!K;Ը#}շ OЀ7oX2O C:_1x._-J)XwC=\O * -hd2+R '-`n5 odȚsRe5J;jvFQLI͌W_ Q2JY3&)t4n-+60$nICbj)=ACTQo/}*K-!+,C}-s-]%< EjE"^mbVvHeݓ .kDeq% W@ EJzˢe=MP{5X/V-KZrqW1\'/eol 'kOx(^pCF?הnw䰾|ry*w3ngmVupvÂf+A@ IV7:ܱUe,;h&"1g~qǶUIS|]p:^,#ÉdJ$CxY]qPg=;``3Ѷӫ5oj)Y?1R3)@ ܳ/ ѻ1U$a ?02VrAWŒD|t*Qx8?ޡܒ0S#oqMVBޡCC&"WĩFTR>xfAge_rS=.fz!< df]!(F߫,Iżb(BE=\iB5㮭[ZaL9d}:Rkʋ7M!p3R0BFuxa"gB+.8o&nD,Ivb<:D۹rׇ 'CyeYMjW$-ӭ+qꆙ= BYhXJ_<ٮ2  X]^K/5%c*yMM.-@RHLSLde /(KM@-D0Tۅk]5*u2@ق)ȂlXxxDfcZ܊=B|gF{l–1e{u֥ώ#Npakij!43qF#&'rӬ&,|9k?ğY *LnnC}l YeIH )6N珲BZm.q:SkKy 6&~ȷ?Ӈ;3e |߻:J|hl},D$t#(,bZ]c)-8+:WwojT) \?4g@82gp>0 Z_̒^GmQRTXf8V.~l @[.j?lӤf>AH8a@+6UxuEDru^@LDlk[ n4ʹ!&.ߥ7'h'(_Q͗",/#)zs_1Q`,|8kdhQGhNYkLMB: W0.\YOD0E bp7fCp!.bFx>C wpdV\Lޯpݫes[} Zeh7Eӹs*fi['x> PWj"iMj>}GP6ɫ6{`lK%--",di iU(=}#,c ? Ѩ<& Rc #:xώ6gRH^.f4_q"TY. b^ۍ*ϳuHo7 L"-a}Rzal37 z#C\|1K_ELp˯&o{H o&2GxT _+S '[t#sfr+ꎓtZ49Y9[$qh.߈ww+)X},ӷF*0ԁU#{O]@doZ14};o#e_X-^rѿ85GHxuDw5Gr$=1L,8XߩT؜I&IFgs,׳556AZr;!jk[ 4S(iIIՋC{6YM$SgU^:,֞z&`!'B 9.|4idf&Ųy`^&:4*q2>!T.A(1t Uc ߂0#.וӣx+$~&͙~*i:qhݚqFFA{]Rf[nƖ5<')i9B;f@Ë&W\Fs\K=6V?Å;bM+C5-xc,z8r^@cu~Wላ#|'#ҸZEL]1!hנ2Z^n(/( LW .pE 7MO3C̡G=@88}:r4'izmc{+XyGXȄ9d]NUH5?z Tў_.\/%4_ 7{Sa7P;&HDƖLȯ.X.azG;S~y]>zyAd$hm"Nk3=vѼH)t{$f+T}׊2 cn0 ]XUU&+=bR7>^`RHMRI`)m[T,lX[& L28j+JRA+y%ʔRj*"odaMP@z Б.̡C q3H㚾XjB*_F7(fKKDf%-)*3 0.}eV@Nrp0؋c,dۂ*Ndc h"iۇ(upc}yW >]qo2??LJ}̓q{zx$_gL5:N7MV"FȄ?О)of56 FuXR3#*P4X؇.kgha Er BU6obi'_HRZ7CK3I:!jG! ~,FɿFN*>uq mp., }B31s[$#usB׹<=2TUxFSLʼLLU#Csq-»>$t\j(3RpGpC L`|< b!a>7#+r4Il8jTe@Eft,Yu7Lw߳`v )z?)Եa k?(:T =#djKߦ8_Ӫ(oՁ;)ZmJ\| ݐq$9@j/{KpCYҏ*%˃Ƌ&gXk_jPZ $0)S6?+TƗ<**ѓcAf,ڞ5`&{$: >' Gǃ+KYd,"U5:nkmDh(t&0 Ҭ_!ZUBŇ5Ϙ2r&e_#es \SUI׿a<%O2:X¦u팥ka7J+P@JrQi1<+t(ݷs\):̔5uxi5Y QF,bc1kdw4>:t S}sCXi:Fa!_W]E 3$Uq&Wn~Y1x1 4(ִ9.},pn?)šz|pyIr\&b:%]is=;wA6*.N1ծ+O,NCze"ef2QypS (&;M+Tv]k݇1n|wH*M/M%"f?U!KNָGR4wxaDkG(39""DTq%\!m_M QS\Rk|c!w!e2Ma`W2'eRRc5_~;zoEs96gdOg+46蝺Ypt4qi\2붩/X]umpBנ\(_%!#^KVskan.KRw˓KT~&CzX:^@kJԃb98SuyW;dt"9@UH@~E."2 V㥭0 {u+X$.sݵ \-"[sSd.F=l\*/ сDW2N;^=/v;6jRbsVcG}@||T~<+?a|1ʸ.(aΘVu(pS`^_'`Ѳƴr@I-:BE7EkԖ>^6V8GWxf/]y4S? 4 &)C.'Ŀē4_CrE,I',w3 L dzj}7t(z44s2"JK̮1G* /ʺyrgShf{TbYjjnP!t!ng63D; -} 0L.@a"vV h#-adƎVSQ{+ԧl 댟D(ڂG,4[_C_n&NtAqf.ݾ~ᡭO*4 ԈLv_,qmH|&-,mH/8%8Z FAL>_!yԅ?1eXbNOL_] gnvm& &g sA.+(7|ʂyђMTaS#]/NP"9>UW&%TRcL3ߒ86!ϵ~I`>g˄C1q?Q ipo޸~|~岶tɰ@d2OKoI<@Cf ablrD 8'YLm>YOr[T3}DefB\rA7%n:^:%U١a%Itp[c$+K{y@73vby5Rßz@OWxm`#dqRʝtevI@iϫ3cq_c^(O> |VvD׫Ӌz:T${ϰ"ꠕ;A07pUhOfmv; 'JWԐmٷ)HGu2mZl`rД1.ꁸ{poYqx^dl͵ fŘZ38dI܀Za$=w2 Ơkg/^4 ۆCW!"YϭezW- 7A7}YazRUmeK7xU.c6wWye6e"4ك Z] DŽa!;R3B䥛0Eb% ˻I 䱱;KM=ZI mQ$oe-2$DE!髣%o愳db h:E %dpYk4wHe&q9GQ~Hs^_Ru+'ޥSؘqXCBtt%_V`39Ur=~L7ːg4uc_h?"iͦv&ĝ[5\ٳcƢ*_+!R{"P>T-Rm:ww);ը0<#%j %]Tha\tk߮qq^p Ѫ˴M,tԆ[0݋uH;}Y5*ڴ:f[7 =&n-]\5!M5Ij"L}J[ {?~= -s BqXCcE6hZ@Fb'8&z#?9sE4|h1^\%(==WW}@Wc_Zʺ7 ||Ju7(V-yXkfȝqBhiCv0 J'nIvT݄9 9ISTtR5*%vӣM^FrQaqcbF5P.!&Ao ,=y\q4~g_+2ﵪ8}iWpkWara]*)um 157퉎I=u|%!oȸ|lL`x [Fn>56i5^oR'BؽX[Twx{ABm3[dXJ:FRv 7Ѽw(< CcϨBpؗO<]w.jW8emO%+M sxYZi²gtpv>W Qb5iyȂJ6r8+f%{E#D9?(.Pj|,|O߬йWb-b7$Zy @${g|6ۀ\a9_9!kݿ _EŲ,bz](jw{:xnCo~w+͖D4ЩdX:M +q9kAhqR&jD]H4"7Rd,;./pX.ؗ\L_! Մ4X6@WXjԗ^dvw3݆wkTXKNI\H 2WS+^Nllq_89?ruD ѾĄYVY*Dvԙ*70 +qL2|U[89NcufP&.\lE\e~7)Mܾ*.G$=ףygLK,rE|):8+'e(I˿Ҕk;'MDri 4Nmuu_Ѩ JʷTndd< 5bIai&RTQS-[G5P#ӦJ{lqn&ms_>A>ufC%cΕ%y-u1wgR1GE4,ec)œCR誺[ l d$ ._cHlGYo[4SC'sNCydC4ŧ:ҵdQ)PWWmgDEu[CL9 M[b #NJUi.EMēnt?)=C#c*8QQ&I2g8iinĂ@U_DҹchCL7?l|1 HnGl1_4ƕ1ȔX$  &&bR>XZ-x?ogFB"J0R+ 9qW04>s/wdn֙~9btʐ0xXH@Ovzthtx>N كuu 毿LM:KҸޟn+tUlZ_{ߦ|~(#a^03Y*Y> ?+9HEm <k):)~h7ן)r!b.%>W1.-npn"ϟvO羥?%Զm=捐§u!hel]9)TnxSa Vrh  +l[5Tt;0`bYR JJ`yLrPc`NG'lJP"N1$l3*f{;D^|M t&~ϝU}&V=|vPP.:%h;͔o:- "~XJ:GdG/illf h'X:/g2{r-<&/X6_tTvȆ +ݖ*[0iN7!ʒ7 k+yz ;O8tۈT !v m4HŸa컱$~9fيޓ8݄Z<݄FV`BeuJ4,ѯVNoµ)533㯝P>U%8:jFnT/F<`3Ol J,[idD;kg^t7i`Z\k"Ц5#d'RK7p4-򏄔t`=pvz}·GIk>vB#ҽ?h̄! il^+ei+-Hۏ# r@<ȅZ4L'>*rB#}u""rƴ^ӟVFM.rp*I+z$?TBݰ׈%"%wv{:rLzN~2#Ə*3m4בK|LZLfas, E[ 3(-\koqv뷘N/"@D(L8)-Qȯw6x?Ѯ cui&hx3\ ϛz݋̴jNz79_lN&.*{!5[*999pRu?'l.asM9ʪ,/}u=߷/=?f/ RZ`FLɳH;]WQ#eW52{:\7,U'I:v<5Q'a`h$JYFe"t3!; :$$5U^ >ؿ{0x3iS`|S=!*Kϭk*nڃ+pW',["cA9S$aS>5OIB(zPAaP)>R2i?tkc<3/Kcl89RaCd)zVUs-fiP&8k,NZ; ӏE+y1z1$Ew^eNRM}鄞EkZvV?@|6^ 4nݪkt8̲k ;`>r bӀɼ;c-$ w|4/p#2af% ̈TFȆ 8˘QnrƉie|*Pl l[U= 3ؗRS܅-9X wd@"G&e8Wۘ"wx7kSe ]utsA;!~dn曷C3r x}x۵|nuO2⑪Yh8Ty"!+4۲j`4|ӝ>:cuJѐȯcD f4TfH.)c#Н_C]6i2@X},|#Fm[7H9uK\VM9y)wDvq$ 0@HivxԿ΂[6 z@zJِCSj_`BS'WsFzI~ۏ h'З29mF#9Ȣ3epMm5rծQZ"}hM߾,.<5b;T|# i4.b&T CVd7G%pUg%P<"-aε=^"mZR8"H^ ٔj]/GY:O-`&O6- ѼoG]/?zsPcDkeG:O1iXLJTϴqhsFHRW"pdLMU&"(>R ^-?H đі k--OSaQs)bʓO .b[= \&G/j͑AgdjC gZoW{MyK pJ?Hgm(2*ѴI=G3世P<$/֚FhD 7Pu?/$ӢÙBxicB$03u(yY6pjJRAr:tK@Uh/pϘB]]e$WN{F;Z^_V:N)J >U(E8x3vb;N_ 1Yk͵&^뭛 #h6im7 bN6[ƩnFFLR1ug֏?>~LjIi:)tᶺˑE5wx}!3dA)|ѩcQTэ zιD@aG,5v^&;ʘfRXNFare~94] w%u`HEZtA 8#A2ss&wGHOkB&ė|",/>#+>`>d,F.T).k wnyI8kֺ(0Oc}I  ՄyHK~;L8x TӀ/b*|o4Ux!QiIFq/Tj̰( 4P#+] ]Se.'Co%J#ȓOb4pqxhZds<6Mk`ڌZF9U!,$F;CRQ sAr[i#/8piD7. =AsShpGKRpwJP,'HTT&3b3Q2 [2vO-uQ dh lOr~OS3_.i).вF6pЅj9,᧻Ql3%ssCЍG14慀w%t{gc߂%7:tشVq3KZdbk/ JA} V'gОMEtbއE||U(G ΍}A]o`(U0`?7m3ar H$$݋%/6(Ŧ؟QզKO!DQyQDƶx1ABS3=Bo?ۯukf^pU]/lo #IWB8 Ř0Q<7>+"T@78JO8 YEfjk w ʶab$r`xQYC1;qm>&eV!usk9X6ITCcw;eDHׄϛ7Õ1F|?/XF3ۇI7<\+=\Q*.FR0]uNyH9/Z&|;܇Z,Om1ZߖEɰ2n@Kvb?hO*gU^KݪZ7y/9'%W_%+>ˋV^ƟxD FqɎU5o˃NA  K2/2n$ߴ{ŶK5a7tT[ 5I-@˕tȶb;X\yZ QlC7QR5dI/{4K9mma޳'a”9=^-oSfyN#XTPxgB:|V =Up}}12ަ3Z]ѱ5UoO1<2XCf-㥁x&-DD=O[&CrA/rk$݊A58ଝjfrÀ7;ŤUf.E0ˡh̝P-&ex|B*Eqk iFo)^!Ç:a"mɇ|AW3y%>X}xB0~v{wܷE0'㝑n,Lf^ms˲ T>slEC7U:_+OFƖNBvoCL~ͽ Xn_2>#4&ٲY^?{$CS]P~τaڨ B@w3;ӵά2΀*e\Ș(su @cR3p"ЋcJ {E-Lxm=| RJ(YXz{3߹)fm$$Zp+Ƶb^Zϛ*n q`ǃGlj2Ng?9TrTSUlI`<#'|4ZPٖR> ŮZ<ڄ!Wfbyd${<_>O"9#ىcjibuQȡ" 3rl;hRmD,&aAռox矟KRi:aR@,To?-x\^>Va;*LhYc*$D x(]s"xJղZ|L %r+K"Z/*qRV5ߏ{V6iIB]z9w(/yR9&9jp H镹™464?D =GefX{(!c2QA;9ʎ&hF;cwlli^;T_V^MM@QJG,?] ;[kBı$U9.ri!! '}&AmGꜿf ZPο𝿉[Uω8ב"`$dW'>kTC 2'x${);fc":Y;`B3P8LȪ:(Qrˠ+~@g9ecIOyvÜA^mO࿱SA7 +:|JMqFf13Odp3?!GvRo34VtwjΧ"3ڿgp΍R-|#R_`cKp^;+w /Խɶi)OU(؜X)wd4G9ʝkQwvt+H &U>9c5}ye4:8/#5KE-h V$4dh)8ep)C,r,ԻFgB9V?W.?~\ }.0쮼-yT7K*CEu|Lu`cTōףpqAuf4)`) Gko&,v9.g[NW/>>)-iwy JF\mT AoB1~L)|71 p**ѷC#)gM~  zGwxRTEUnjw[5C{DS2vPy>f2QHP7,,>*uSSQdJ:Mfm1wq#cmԠ/qUpŽ[=\9̟ʋb'7Kh2=0"2nP>f/Ac3<:jΆT~3lvL,g_֭oa:V\5(~;"} 72:%8ٽ l ܡq'jk  LS#K UMr݋}vg4y 㡥3z]j HޗQjT-rœ:_1,A |U`B,CξеleD@/uyYAOal!%V7 "sC1Yc;dlҶ #u2Hf=4MOi! hY6>p".٦z R3/0r89 qyOMF!\n+-hf S( ,RT8@TՄTO/`Dxe /ڰRh]6ԑc% +ߴ#ZXK(GVU[&yxBtâgb&uG˹~.)L*'3G$(tHH;S,e*bbVT%ExQv@vИ2GKOzh{ 7&VdRjt~w|gqӱJ:^摖͘4O{|0|q Fp@z~Yca6/>8s#OPeՀ?XWLi 7 v~:hIй(aNP %w{Ҧq7+ojo6e76S)hrgVuCv_ "$2\D/v{C H鶣uCF]4<4TjZlIZ W({YJ j{l[AHn @9r;0f.ܣMnOsݞD͕Har7UwJfz(ْ%>ehxG~Dqn 晠%p@BnBOL7+{Č`PQfA L5ķwRz7m%FGފeZv gzh˅WT+P%A2h$@Oi$Hk'0fNAbQin+5JXM7y:N@ )D@. Ć@er+ u 8Exrg;'jZIz M2V1KW!KwEQF9XʳqRjR8$];ߤBYTeYq>}*MBJ~} 5~)Ch>jEC=GdY/((^ $_ٻc[7EbcI`եv[_ ;5=qٿЗyTrCdp ?3iD6'>%Xg;^Ľ3n߿L$(ΫJ 746-frQY3\Hw>93ڤխ;f^]lœP`2@eZLN7=ȑ$+5Gc}㾊'j8R-w+`,SFc\H:bqdMԾX{{]=΍}Ԓ*{M18\%=ۄS>˵#ɽyZ#&tBe@ ô l9xϕb{uK0R1 rb|ѥT$e^'B=ea?xI0dqc0p>8OA?M0h*jKݾj2 ԦG$de;q,U)DM-9 =qSaz0 1њnʫݑZrQGRiЯf;C#aH7_\|C{rF\Hho#1)L4K3KSyP_80U(w]\Z!6>@e}l[Lhiz$ ZM3}”|bwrz^krZU9w g\k =uP}Py**2xPX };;ug̀o`ؐ*21y+>5fK-cd=-ł'lxPoI gr砉8Qs㔹PSm7fz~@:%Z Ym ckHe-x{d5l!?JE.giM4xɼIVF--ԗ}qHdvW1H}8+l$n>#Ue_^j&fްx+yߘnOC`FsUM9/8KǢZ}4*%BVIC;ǸN4K֍8 O{1̰LvMN٩ݹudwy 쾚M=?Vka%1a:e_%IU$+rCrx;s$~i"ل, _<}5N [K5f(6^"u>N?=wkxcb&m '2B:m%2ҰZH^Va߁+1p!ӰZlPZڨ<0 fbIYp}c{Ǘی1޿v jӬ5 =qlܞXS:?(i4 $5z:\HMJ~Bǥm(/\c*FdHFlB~? Ώ2^z1@Dۓeq`†gGvP@ڋ$]qc:o@qWj~.ft#13N{W$fJ9mDQZxn8 C7PO;{z|OuCXBߢkW&Z*whwC!+~l]}ה_vǚsA{D&,E"9a8Lvi}(ܥ3C $^W[sdr²xsR)_ (I N3HP m餳(-!8=1j G0A?rYuAG.ƻ.#W^mzAүʈK+4 xK%QlߊA:QmU}XSKBST-k'n?dˣ NOKĝTt0g¹$]JՇLm\wCAzAQ+.ߝ '))>OĻmWHqXHRG -~ΰHDtpߎu$gmx=kZ;fԳ81zqm[ϕ1C,l౹n@CW?+E|":anxv dd|)o#)d%x?+Ivm0BAw*lP!okh"Jɽ$(-:W-y0$VMCoM gTɭDi|[c7ڭn?;$F# XV Ix8}Op\ܭbu>rx gr*mb_K=#`^! R wi (TH@. J1I(,+o K6L?Le}B*HJ -~#j1mKDcMh$>_ /-HD*>BԩyNCz$wː0~;H>>P!#+ŵ[,tcteBJzJ0u :9P]D7Lן{/w BʴFlL{1ԊʊA8о>)1 ;uXFm 1ѦxN~}Pڼ&H!o0L! 5J=WT pk//mLbKV(*de{iNGqySۡJpL=| 1 4瘌Ry!!/t;Hk6+h!0|dע%(IH~+A% Bl py~ s56m.GcT$m I+|}0*t)TySeh^,yrAy8޹l9VN+ΟAnyZ9s>at;]P8_i=,+H!V!LxKx,QMnu:oEߡb#]xsS-0ZK pߚjj\N]av :.Ah(?:\SE.U^cfwb ar ݷy(%.yG++%=(ƵO7Z'YOrߣK%kpҮD:WRZQKo2Kd5j/]t۫)'HXkŲu❈xxe1U WUy|:B8c`wyBoVl=Oݱsu(;F֐ _O ΆJ +<wl-/U |6+-GD,AfA/S1 $nE"zbEuCvW }nv>GSg7b$rǒxZO[>$F{TxOYOWC-m I[1a֫l5*{"xfb2й/_ⷅfcnî(K+ʃ~.)!w뎏<|&4 1ky``-mDZ-rshJdo|S'aӅKgXWkn5.ݯZ (e%0U`q%ҡ-wNejb(gǢ\4٦JFH_°(OIЊcyȱ&PB6=OP@s/A) KyqUjN!Z~yÔ+(x=N8Y}9eIzkޣw$ݨq;wW-})? i PY_ީ𩡓.OUFp=yO!)VaDv0ՅN$5Cm 07}PK VJhYn0n07h܂tNjpB4×LzۆIۭK|HKcd2N&n}V"  ɪ6ݧu۪U~r Je( tvʎwCGmN" (e9ݹT[6T3Dg_•9?LFBE@;zeoX uC#z WfMv? (4fɪ+žDg{D6xAI06+QJ@ނuN {4HF zy[CVJ\NI~.wCLJ 'VgN+m,;̏`Uyic.[?PH9%@z^X u$9e^}:b8\Z^O#2{Ug> K2kIqieʬ4cfԫ (ˆmӣNhzD.,=Yyپ^0UM݀(<#RGo08fU,1, <Y؁v^If!nw3`!Q~o^e۳I O(zpAP{8ڱHWU"o,#NCbճ4fIӄ]SްфՅ]і;LA&wgL7Hi:S<4*9ɘL8@g4q?q`G8A e؅p P.n(Gxo + 4T ܜ$lX@Zڅ:2y:Ͱv;#j)/(Y@ 1A]8D 2*9 .f-3PL6_3i4*xI,f+6++\$VZ]0k/>DV߭j%["OtZzxC!v6%ɏ0F3v\W&$E(v6K6[}JRFx 㶚ɝw@;JMyz?uRv3uQ+"u-hie"i;v5s^[  D Z_, 1X̭5h6 8<&"tطEEXw;bQ^5 5}I uE€!L(cD7IìH8LS#̏2\Ep/kxANeBt[ؔ(.|U mYU]Z:he3:XXubHdC|whHԒ*>: C"cjRWA蜛X0d kXu+w NFz)&ϓ+(qqDjRQ{ۖ =)/vD3>&+ga3Q5Q!I$R8|<iE3*~{kjEBcڰ?oOT=o"|4 އB˳YN hJW-a{k4by- wSwox[[&|l jvWLJlz?_7yC/"m6^cc5pZJ'x3ίF|)&qڎ+\f[j+*wssk;u2zwfiKZ1p@,3#2N53)WMA<-9ucUd6CeoQE6zFT}0$og{"t 5,[?XNe]4lN/V[Fq?&ahb@#G xT` IeIo>+3km?y%QzAS/r=dƖ#\ĕW_ZOb壷ʊ5Cv.k&kS蔫H~cznWɚ?鴴#@ #w@vܩ)Z!jDo0 66&PE7˃r0Ì)uGR;NN #!D>)i*[;w=gju:2W{b 5$@CJ-[]΁!@ V֙Hg..e/4iɋ C__lp'8E$I|?AOyF,&Vk w.(:i .u(ÛҤ)ͮ q~ÂVҡ$Λ 8^Dl+b'q  (dJCc^8b(񻜦8 #~kw=8S~!g7073py9⬞$,"]?h;v Lm/U/C>e`ɩfn޵ʣۥG;keM\4u-&p;%P9EO˾1REM|Z$"Iw5Uʩ</g14].ZOgővɜegp(~zgw<.xJ,i# b7}Bya39' o@~ ]fYi C6 pRQnBږ^whd]A*dl =`C) S+I}#2(4q5ēnH4OOaO}Uy7#|n !vd6V0m3x!lRV^k%߄\d]0^;gmDaf?Yh0)0SW 󃒘7EBf  )gX;Ua#3nZ XbBd\Ť!`#%\\jÂ{{F@ӟ>|z^IN  U(wټS[!4x a2-A.cA$QA-&)N+v#4?֕72ZzW̽FxSElߍBν;q -H/Rb_ށؼeE~ AnOpq1j{ZE63tWX lllۙ7i3[.t,-֊e=}VLTVo^ڡ.w)D hL.%8T'6zG!1L@ˢy`nTʯ,-MwbŽ6P VPb;fEiI6ˍѧh%__ &7qaxJ@Μ$wu_2M\'*5Śmo_4FJ1E3A@=D3AȤV}fsO\EYGbd\ 40 pg!aArw/7^;?ڰGO>6oU RSH!̗<+CRΐMI%ʍvA!j *kZ>u f"MJDm@#?<\gX`Fe a`w&R;Mƣۉp!S}Tǫ<um-76ctS꬞64BK̴-TGW ̗c2K17=!9 ۢ\vJ2 ">\HlT+{LV7/Ѣ{5+#44$TAQWv)6ڐ>Kп!Ȁ/GRYI|pNnB=3;ED^spU؉ q`ꨗglcֈCtjA5ƈ?0f ^|Ԣ]4ok^yoV.} ͈ꎔBNߙu2{*k]8g?6&CuNo)x| !Iձ-a3.菴2S3 Ky1kRx?C>>,;pia:'*=NճWTC~}=c#S>RMd.wƲh^ 4W0o\1 j v­^[[b *{)gٚoqO O∋(v%b:VtϷ}zR{,# R>.nsD!jn(qY˜<-Dyk Ǧc郑ϩ*KI1 9S7,lh?Bm6iXܷD!;>)9ϞV|2'πZcsZP꬙  pU$}XfW"-ɹsL9ʻpv=3#])9I-dcš9,rwZ7eGD$7v&BM&qmk>1(JaRgMK?tIZ㶝e] Ч_=!P\Y*# Ƒ-cH~qU "ZXBoUޒvQ߃4JC^D`48PZh0{GM7$)_k7'ãBYg/Gt { v.?;QXf\"w-oYX(4b14jQĩ[*i!t=sq4?-+}S_k⛆Ql<Sx&l#R={%f])鈳Sz,Ls+Dzm ݮW)n(%v#*eaGkU(lm^6`DGαB4][I?Ьͺ Pt&A 9к*wYt9Zo,~][{U}h@=4xj}R^R7L4`*15jL)wid~(>IUwhlZY~QKE}^HkvZfD@KOYҍoc$Yc !XUvљ8OOd\Kԃ%BtnGGږ!;.mN-ۡ. ~gp? >"-89/|H,2" N.SKd$'x߁fX@.;2vAQ&iF p5;HqU5^ ؤUw(!(/ >_`UG;jv!moP.?& f1xL t6k$#]iMw`iPD GC$K{&ea-,Dl2e8.LYg#: œgK!Nˆ72V.PWOr|%΄LNtrqQ56t{,nX~~}-1Dz$I`̡I[Nw2+zf!ebevu/Y pCwZvb(FE"?GƞkX/ASҹڶQKn@N#d`~8Y/mG' w|d H־<;kA7]#,Nc1wQ'4E8.U-blNKg_F*=>c*X-WR<_OƗr)ySfHj ̟, l?IfϹW5yݢ.״| ћ͐3b`/{3.Pko@rTy{KB1/;nZhB)]\ewKUyB8PU8%>4~>>L#e|q^ c~29$l>,&$RF ݹDF eQ Wd77J]#AiA6 ͆pWv,'pqV<.`ϻkJ"u'w1(x7>!uzݙjKھzҸq1k${i8#dK[p@A"|lk*~8 +4+>D,Zf&;?a/̼`K=59 -fH u&g33OD]X1ԖxkXPdxO tv<0'vIU] ]qR_L`]@oU O>2F:t[ឆ1=B%|b+\[*aErD`w2gR9 SSyk!z?/C)+:1260jT&sS ׊v3Yv$kPF2ґ*ŋxS2¦m~0at Gg䙻{$EWyI[HcØ*=zDE0#w@×QgHS%.=rn9hX- ) [WCv=A=U_uá[^3QahBdݾ K8aG3tb|hBh¨p*Aèb8 0XJ)IgѪ9 u%[I_5ۺIDO!%|Yd,>·/ 3-O:;qZvw̳ߤ2LvBU "aDȘRjxod6hZW/֕>P$h7$OzJ#7'#06dsH5XP20Ru:6h\n|#L靴wp[(鞐=midz zTQ|r9L'8&d4C^]GyUٷBy Qe I% &ʖ] ͺ nVU 7S8JzK`zo"}S"v# lWZu|dvUw4)@J Bkd%0I|;mHz\ k? 2/ޅc,e0Qρi1]幬vSrpHΏlCD(_ /QWnO;EER etptPd斅SȮD ^^ P"E2sy4:s}rQ"~a1r BB^=t|xP*$Pc7Nk|jrfB ӀmU_Nw1W_`v*gNRe9HYuᇞž\*{wLLh]yĜQyjϫGH;Ty0&Rdxe{E:WSMm]|'Vr\"ru00…4B VنCGoh/iNeDā]f؞:qH1;!djnE#bk;앛x ɛ ةXetc(6N1 [7T VW#)ZɒJW96FFyqKd e (_ZzLj0=!^gÌ)ݶ/\Qrް)݉k*>cKb"D@aب1~!x( 8B0}?[{;p9뾌h:YG"%Zd#. &{_4wCh{vEd3|CP_U0[[uYlܡ,0Y-֣Vڐ Qlp+)4 xIQ ~[13, EKN%vt.oFŘ(6}WGDy-fևM NL#_upW0a<\[LVuNH^ո_ åȲnIbDYtHzbB*@= 9JnRd_1r7Id #}OeJI{*Ƴd=&xֱK|>W*ԼL25ྯt)Kw _泻Dڪ.FH7eDNwc^"T A574b45׼{{+CrafSѪ*j3./~̑w.ڒ"Y@ /Z=S،ĺ rq}nߔ82&C+Wт$US& >wϊJ)+[ ff] )0x$,G>WF2u,lJ҅=ƀZR 0;9V  ֭.u+7Pi;ݲ8B\M#6"kƈ 8pSL4]%;'QKSRW3|g߭kT+O|#X:4;U:FWY$̢-~%YmC RCFm kmaA9\(û=$r2@6k'ti=M =l ai U D ztˏjk-cR<%@BAV6YiB  Sd窆ӎu2!%( G kdUU*O rյPaX뜖?c&ԗMu1]l•>Jcu}-};a`zP(_fF٤0üi̲GǴ^qa)l2J?8ϩNiNj'+*KMr`!\g:X#zR1 o4KY?D fHQD85\Yߵ.>b\ i[d7۲Zj>VWw rkbȶ8p+->c'hvȓϷIf(di1Av7uqqbP@Uh C-|R3ۃ1~7h,YD%izdxk\;nG_r` "TnY? Lb!o!'MP^O]~U(~I|Bج{z!I:B]$vm9@x,uZț{,U%R.6aR:5^dY/Q~^UcEkP^mFQ^t#,(OOw#k |^/"3oiݳ(O Sj fxuUj5lH{ t ԓSHz=aBq}WK#=/򲺽~͛ pԚmovS%}|O\ڒI1uq#_]75B!:)+XVC},wN[}\jh#í̤RP"72YG-NCl1f1T=MKP_PK=e~dDKR)O4w2Ze>8 9L53i7wT109KuKE`iWZcQ+NRsX?n^v\S,Oa3ˏ- ij\% ODYdAAc'zD.omkTә0nq ˒;I?'ΙVÊ5Q@_oݲqI8c G4\bH0N[t8O"J;( Y334MuEy@:.cbLӨ`ۡBd^@Hͺ`DEGcvC2%|T%@[@ u#nD |#z^ Pa)s둭q6A.,X[k|NN 4zMOͦ<}IGx/&mȯʺGs:iGP+_T(c !ǫYᬐv` ~\XNsjoND KM][Eh ;0os`|(N\/}%ُy;[욢7Kp@z}Qs#7_qacUL(c@§-[jOdjS6[pyiկ$'.!*j2qf⋘ :ūA٥IR;mpuU?`-Ya3lD%RO6=3NGwky9SLec%^8e=Ok_5O3|Gׁ 5}0lfHXA!"O#kA!Tp8yՖOKCEMV2EZc@"38lh8NOɸht֡:d=1R!r=n7Rϭ&zng@gD|vdd5^j]X1*h\SGynu lΞU˄Nl k> \xuSY/N<L oc7$[ lv:ԋ8.('v\SVH??$?vj~lrow:N5Z_دK5$_9 @q1r+4j0;ܣCW-p1}/`ω|I*8֍έRNQ:aGgW:J 3A m cЊCG?7$mukYݕ&j4Nq {ؙM8QNddXL<)NtRyCb^^Fe6(ޭTlT6@Q.xOJ&Q/.L)$F@UQ'gh+CEhv1]ćY7tùm#bVF1CSG~>|tDTלk$:+Rdҳ4Yh'E|D(oy"KaPrgwں`w=ťg/AZgx;b݆Һ/f0Ml} v(gSn}\OnYn.g E)PRkH0kX¢ު y{d.S";UXt/QlRX(=SBCeCeFj KܳvqSa+K+_(Dh/[Efc}&h8ZH;*y""l T5@x0p_"CuV SBM44GRq!I4dӊ*wF::7i‹vv$J܁K⅃Ssk˺=SuIzFQtVeY`ΧbG,O#N`s1!.0k޴sYsGS8lz=4XWe,#|-d%]Sx]!?"M/9n"*ABB\ vR_H_5ւT#x v sD(}bBWOASFtMS|đK6G*Xr[]|riё ˄n#ȳ3LȣMU VN=.oڣ0~0ػ6X#$+=ӑZT]JkѸ X%G%̊au]f@,rH0Xv?ݱ\Pr-ZQKY\69O'cQ H`E I]RkʪJTkd[zY hc1PݼoɁ0m_6[:E޺^XK* ZBr7].pQb9EAƀ)Q,m\iD:/ X9SE ~;vlت.]_B ㏰;BOp Lh?}QuR 22x}c6bJ6ڜ~ƒ$kR z߃3笲WS#ԑ 2yƂ>3 >DhȖ;kO&obQ$bc+ MLdeθ6KZjzAyq[\zƔxep\LvR׋eޟA J\@ԍP`OE .*M%=.]_Cx@'!h/[#[h`qۻr\)aV9 ~ؤ̇8qӃ/cƌQ*>lS!5ƄQBȓJ//,}7R $s꧊J!О}YI2A#Z

}wpBMg<^d@G " $Mrf <8p "FAO&Tr-QBȃ,[cyjU~h(2ރ+^2,fď+8jc⌕_Tj l`fщ/cd{U3֞2AkG̈́(R'NIԥD(u[iAVcR|tSE6~ FцR0?+J<D_XDnjC2~<LX/7πz O!(0DT\Y셿m߲ky~UP55rf0tc0p>[dF?AauAk5_:X/pxO09Joz7jr^g91΀m옡 hyB =`_/@O!-"O~!6ؤHWYY]O7uȡVR[/iݜS0I=h >ڍ.9Jpe +,s ~=>@a"h[d ]n˴|_0i\iB4{ÿ'&N=5+-֓&DEmaY, 8kT!#bܿg}sv,c tPeu5'ʹ ?g5G)0wa&|Cg$pn@#a_{.2LXwx˨_ȋb$cgOSc+G]7ܗIH8eDɯ:hL94yVJgb#EX5< .E>-1 wgJjjWGHE]&WJ*Ӛ~b+dr5_*qy铓 mAȞfuρg b~y 9T1GZEHZ1@RojC,^2{o@[:8tF*z\fq}Y==Ny"%P7O+i<4so+YCը%.uP5O+)]EwI?m'Fp׉܅-EHOUFJ[CepDUv#w.8X_)l 8ynG8I$Yv1n""jaqs2~oЍלּY.5ԟi 2&"<{ӞsԻmPG&Sg=0營6:Fj&vmK4W~R> ^p&sy,1_'l}D<8?hʵ؇ A߬J3Hz؉~Jn@(0L#.3*^T0v+D1օ62WmjrPNVhA'3yGy'L~whd8ۮֳC+\o5xm.7:ksipq ۔˙[8E3R,Ld+ nYgLgw hT ֊`z!p+ 4K1pa/E#pnh3-Ĉv4PEiܾ`0+A£Fؚ M3_#06soY#@%M^*Еn?B3~nԤ2f0ZwRvغ(E7"IgɂP#h4\b=`8l >ڰc֞TX*BsthiH,uL#/M) ڕK s;a~lkO1qhWhM$&ڙe3|-Lݞp([ ,vin>TT~a7`eQ{s1CZAa+r {ez;݂em}IL>m"kytjTbYBdi 4DmShҼ>q S{Aɺp$8lm  1Ӻw>!~sCڇ Pߥ[maޢL׋`tJLܬt$?=ກ.0ΣbN(e$l) ״>S{eţ:!5adec@Z0dAQ>@8O(=]@wPwdbk+N†??E̜QJft |0&󜵭.wF HM]˜3Poy*p4ZW̻iz yB6DCK+V]J"'tQ]C6tS$#q :z>*\7sh,bw'^\/|̍/.Dώ|Kwɿ.Zvew+"L;b7e# LzqUlL(Ѓ P?J~%z DnNo;ᷟ}=/-h,ut<.B@f?Lzk$5Ȩ}_hhB}vEmxw*WǏS |mHvt1kM+*"%5!AQ]_tn$"ݺj*}._ }MVQCSGV wO4z=| of q#gyq]FQ}! 4l% prэa)sȥ6m'qX'9eMrM V6% NhC`Oe̪!Ŧ/jsM*غ_1i=+o>K} ;f(%]ĥSZ=t--rV7ΕN|򔍞- Ɯ ֻ1N|y@l.J<~`V7~dž]LpUC^ `#AzV{E;7c.Dd pDJLo̧!S|mZ,mv;|ŠԽdm~CMgz#a`TRހ<'7ɖjK %s39SFsZix [ LUbT3A~HF;X&ošOj$2$esEz*C4!}& e@2-!"{_]s@"/J}S͹JZch[+Csx琅'ddq|<Yg lXa^l_L6q^{̤\`Wq[e-x٨@%&6釩dS at@+oڃuqs^UxƲP7izpkqTu4ʓp)ʬ}@S8FGx RDXI^RyjA P=DШlGMuاw8Z0@2k7%cd;P%,Μ4q _w*B=~%)F Π ӪK.eTVxkVS *jۀ<g?u,޶koi7 `w旬GJmet[*aІQY\[CxQ)y_tpqKWsDN\W^<ˎ$8DU46 9/h) >Q-*WB ^Ⱦl\A Rky S=X(sݛ*ҒƆafO n{.J0 G#c7ɖ使 d X(Q7`o"]ԐR[(TK R4*Oʿ)G9/Z&:~o {rBUQWٷ}1DIւ!H`C`o6RA6ǚdNJ\:,{F9"4SwmQ^T ZL|  {s8G-F[̽`R9ߦ08j_(Ԕ E!SDo{V{`84r0Ìf.׍N: J '31^bDQn-SI0V}OB \&|O({sič 1TَטlL't2LrH!yx@f`J:vk-opG]ԏ~oeBTY\},#yK2SzQ;@ͷ꣌Vx󲜃WwDRѾ(ƸK ;& |ē!]>l0tc}qݴlj$IDpcx/m o/]P UUbK_EN-~]8' Z0™w ;I(B~hK)2R9g] suhr |҈*a ϐ ߲}կGTܭvN x^̓S"]Eez(9{Vޱce;RțOtEd#R1I_.FwmҰfa{:9a^ (1!CQ9h3(j$90[ڊxʗ30MSh]ķcIE]C&e۩?ES*gyr$+5i6α$ }+y] wK2w&B@kUHy`hO|l#pl&kJEB 1D iv1%PUgrcvp;M@ƭʍrs[}}|m>qÆ ־Sԑ5!A E@c$qOi6|#pH8MNR%L2*/Rۮn$c7h5Zh^IUud7}h%?MOo WU-gCh\µ2ſ$pKcKBwY˚R¢O~zA aUt]l!Jc|hXyFYrcWRJ# 74pIj? ,<]:m#'"1$Gbd= ]V3/UV[<1"oi'9 1~\lDL"#2%C*QC<@q=G"1javT]sDh&#d(fmH1r 60[YB>k sh)-*'+<ܵ@7c6k1mS{I2Zq4Gu !r ŲCT_,!&9qүm-,a`r3I~b-[PzV_9rATVbOhEQ\ }ólLC۠ڽksUC#%-Nj5Z'OS}+u^Evsy$#\^6>&yeCPzz?B@Z0L)b? "&n:;,&fG(z'[y}5iFUMeF쥮0Z Ţԧ/7Ruf5LXa}p"IL4.J1{∰2)I:O27x5|irye@9wؖĨDSk򷮾qT?]}. ?u?KƄv嫻MGu KZG0!3e^hZO!m > Kt&3nRAܨ睠bAϰPGٴя-S'Fy_{y0kdnTx٘^OK>°\Q_LJIb>/ /sa E `"nP9S<X3]62y6Ib̺eOsf XhҺF&ь!|WxO4cΠ3Ǘ5f?)U&@6RY*瑚$cF ~hjb&yJĊ"/o:pRIa4#պ2 Š7|r4 }S0Ӹ&͔6 &˒޹m[۲'[ܞreaWP~;zXY8K(/%L,@Ӻt9L2/3%ap9-`ѸJ- XRzNY 07u2"ZkF,ҧ,doIOH8 h9&A&=GE5W͞sdNwT2q Ta׎ObPHvLu*ׄlNӉmŪ]V&_sbqAmkv#DN|oO'xO<4+zG5P1z>A4Jƣ!"NȾ-4&j\|YcKFl&ܙϕ" BHGyG_@f S3džU^dʴ&uyu]eGu&EH);e\ ȉDb@NT}ujc!@'}@1.֗f hhd:>3Պ35 U;]%B)X}詻ܗ8CƒeȑmˆW/$/-Y4^Ÿv5O&VP;3⏹9^+M9&\w'Ue"8 0qm/[ 7]NK[ƨىpy nP%&ile@iF`TCcen/(]i&)fÍ cdDA@ |8iv":뺭v|(lttlLg p|NFXq ۹);xjޏ&{H5*̞OH@ijWsLOF]% W_G@b6QݰL@AO,y{E^|pSHG׭&_NAvsbC}ddc>j䉮KҽanL7SuioDۿR{(+L% $/[uǗ%M-t텮6"b?-w\ ~zpi|,cl'.|S' KRcZn}sOEY; #~xO |=>W)uf$-D=ׂ3/`I<f7#G, aa\nZo{5) S>\ KW/π~1Y.4%V[0A6@>UkAK{^ToE)sULC{XZ^3+jKƧ QX|ys +2$to5mX:4"YT+\[ t5m=&(^C=D-P]c a9 j <s4-F8 @6OAd|ISǃ+lHÙ@\+Să)Awt>S(`m7pJSHEv'K3^Xۧ+%Hԩ<7"BY4.jK?4B0k`q0Q3\K$ze/b D?]@h׮avGVb>!Ӽnwd걲E~ }2acꎮs<mxR fzU"P 51(=%B-|f`즡5/HPt5s|Kw2asۮeHipɣw;oim@yC۱~!u͋b8Ju&T f+0?2# ZbrXkQPc1y~]j,ruT\5uz %Ę!a!@#Y5|ߗ}vJX)RI!֘΂HgIRʈ:P ~^wƆ-f5pt6\RNܚu_[X-fp6}V^M9׆7Ch 1?s7oXjD!KfV YM5vtΓ>G^GMIkaD|cz+nđ[nhɢN嗹s'ku6;4d79jY g5.#J*˔L<<+q "}ȳ6OZhn}w-T?CURw8sA`A<^uWT;xJ~b5[>9*n&ƣv[2V5*ILA ^l&u7f@:/T˕7"y5ƺlt C FuddY*S7?AT[/-I0 ^d^֐R:-Gc`I;S>4+P`Æc $h8~I7W\a~V%pΠ?T$>jBz2x,roTal(7G,pL!-1="OQɈ/]3+c9NɓK1J@VpGŒ3Zrt[ Ll "3h-,k3UIW0Cعd="fsט?Ū!B=9^@؋nJx0vVw[Q{ir.w¢5'YIY'q{L9{(Kq-v$tu +F{fzQ 5nZd.qONӎ[N_wyu% 6G(f,1)n379=vu%B:Rt2諱o0c1 UoU}[HPM\]- sf>=0Yiw= (%ܸzpŒ jͶZ'NEvj662NcEr#(0I(7N3XVW[ h.X Ad1>俑8 :&d7>[ 9 Qjb̪ e+V1KY yt)V_#1 )0܏l(<ﵑg4B\S4"'wYp [37{Pu(<;# 'gk^ 1S_,C<*üzy-Iw,xح"p)go`bU`Ϛp kdKU?;{Jf#.tnʦXo@gxvlJ- xq:-#H;i|z1=| NۯE$K^X:ǬnmM/CVhΖ$"lR;Z } 8SRďڏ8FrXG;(EXbf&a|y+@ئR({.m JO%nSA{ىy燚MpȾ`M"%[^sco\O@Ox$ g0dW>_ZUTN,Bq:$Aoe bV,gjڬ][18j ^%?׫  lV6O; RoMGs-#oO";of^ƶ;5Zycw;Fe3֏q!5̖f}h2J&l}c/R_;&CPQ# "ŕEѽަČ LGnI"*gfnAjk0%B`?y*a׎G e /W= /U?<&;RT+A\7ehJ2 .-}=~b`IK5rqK@\h #A[iD^DA-CX9fEfsI =Hyx^"d+ɓdh*B/ZT4ɬsTL ߾ufcZTB>V dQRGVh6S^t\!ߗam l*  ]r@ ̼i\ U/4 [pSps'˄B[''_r2z6zJzĮL;elAwhJ#ځ~[z;(y>Tc(H!y x^ͭvهT4%DYwpܯU9޻i'[{k Y?ʼn]~z/ځʾ(o<75#wE¼HrEteE9"> ljR V1-0M~ fx=>4B"걢q:#~[tK>͢ӞF5t V{$Vu-5alL6;~} 㞔DUw a pzc/l3'!_mDjC4";q|t&:Hړc=YmÍ>އ{vd)cN6,m\˓Z'f^b{¹TwNYlQѹ02/2dg KчCވ` aLE8A&R]!1Xh ka5З'Pl;ä .f@ް}:Gd("р:6ߺCvn*0WM!@Ξ!wo¦Epɾ Ȃdxެ OPMAL;xݞ3r&9Mhg`_%GyR|j)TԵXt7%ޢj@Hd> #bL]8:a;/HV?3w(Bb:jI*5%9;^@oMAXT㍁Uo}ʮpZe ;݊=쵂Vvrk3TF!z!ckom.!uɜ"\X.)]:rhn*M oBC98MU,=fSZ(B7C%ԡ|7# hkG}GʌHzšg4l*hPjgoc'݉R `vOε6S# 9kaan$=чno!(VB4X0jcҷ ~ҽJX#]NU8in/}8BKup4[gKlKuq,֔B@ V-"c2{=Rϭb|"w62lļ}f{dsފTmoH@_T[HTdJ$t:)H2.}(R$1+Z3=;VO>ff{u]+ׯQc5.^ixa !_I^?2aU~ijl#8Y ÀEw?d cml>` i)?I?m!ECR=Rr(?NQs9c]M3Ks%8- ,_U!dPB׸ +W#DG%7AhnD@ %)\xC >g`&=U ];eb/>aI^ޅ7* nV9TDO&Wt 7)SUl */Y@:EGsɞRcA$8ڭq o+oUzMN7%%; 2?]"P]GiBx e]O|{d8H^ȿGkM8}'F)#v(b+nA& σQJδ%f)D0"Ȁp)JW?{L ?u~mi}3z45Dc]ͩpNЀ֝篆z~ -^;ڰA˗d<VOndXM라p,oqRP1lD9(-_Xƍֳm| {!Pk߀@8#NF4"ɶF} @@g_tBV;]\\; ݦ o}+K(/'֫x݊큻83*r٠ꉨJ OϖtP ! uwU%YGTIs;nbt}afdL¢iYjsöv#k\{2FQ՛,,_q;>tݱ>v¡;^YN~F,;hb^Wu%[1v +yٲtJLfyO~b{ɮwAwkoj%LP!3HQ@ g DYBj:5)K䊷i0?ČӏMՁl}>1dpo1$cӜQv#F{mS#`4hyy%@/"5f؅:GmLrN{n1y` F1[UXbx׳d[Pia7::k8,O=)XD.˶mٛ u{?I;C=Ң pɿPeXGUױ7JNC<,l/(&SxR3ZwSLF\ $_2GM$3lLM4 gT.@1lA@v:R#c|\OeuQǾ'4[3΋Ghꌮa.XY(!YloDG7=~{bUT ;#`ξoP:($a$3 E<*t ->$K'ajAxxHcQ!,S0.7^K[Yu*nKcG|(na-x[Qx\z(F"yB9qL)sS}7k m3[ {VsRdKd-+bEߗI"0X26UyKcL>?uc@vh(pyɧjkbfS oҟ[q(mg{o)JQd)`<'qL}L 6a?>\~ R̽DZwP踤$қz*X`O͕#E!ز7 4  H -'7-7kP ~x q0{>k>wRiH밡lq*2yG(Y:U~i6_6~6Ss0_ൽ)Zr9)ЌuܥTlJIT_QҪxM=a:"G.ݝ}eOMaj`Nŋ*}hqrj^2"G m'F@hzөQ~ UGrD0 qHDS>qʃFe-B'v+`Q[Q}=y=%duz\ @y$XqBA[QʇK_"d|2 gÈbVa-Lv2‰Փ6Zxd1u=t@smN/ɾF:B}mr`l6*q5}? O`4r#g/8ݎw"ozƟeM9xQYm&J/4FS+Z At,u^ %sD-|}%C>e$W8 /!+R1O'`1 jvbH?|0efɢ7 C#xh]o@&XxxBb=!{QfG =>ksgQ>uO l(MVLb6՘8rpHb>b=P$$%ϋU- WW_%!Qv5_$HqG 8$%5901K/vd>HA@ m\HЧa*] _4`tR&!#+ B}SX865F<5Ee@'ȼ,s$ {ȍ*k߿`Fbx+q B$Lzۡ"i@fx\o+z[+5`;N8NȆNƃ!U+ #dMJ"x]"V9HY>7$q?acm<`)_{ 1AuΣD&>FU[uHiG.q6 jD`J&ZÒw)gS@V$L }s\?<[}Bf!T'X::{xw/ѻTќ*(T1Ѐl^참S޼9t.?ð7῜ي~$ml4pD[ֶk(ӻ;A"=hx2i|;6CSZ_fa3_BmYޢm*qj'mwq?\7UďS-?jٿ<9SIR|15{B+*i.KϘ'- ȅ܇cʹ[֨-^2)!b3ifS\#"q/+ͷg 860ǰy +tCbP)ۑ0q"X,c?ĽC55d"*KR:xDcQK )]IuYxl__iq $èv[hey--:CWrBaghZ-ctJګֈ˛SCeJq&!x_,$ ȅ]fh|QBίvw?|KUu%!t"EǛ 'dxx\Qq ''$_G*MN N&vМFIi"践sւeT ֖A*d;h#GbNS`])6;KG$ɨ<`7`W9Z Tǭwn!J V>;NÂWi|}LhXSo{)esiIV)*&.Md47FIRփnf h#hj}oTfdYXѾFȘ]k|={,֯ y$"H|jN@H҅ ۧEU5}U> j)Kk ix8`_LdԆO>3`BSV@1)NZ:EWryFtWEŠs{ 6"pL n\ټk ![;:U$q՟' Vh˱>`K4J( 2Аe[3Ry͝g_ɤ;=ŽE šU=G ;(,Y&)4#(Qqc:P,+} ov><ۑl^p5A #!`k7DѳMA**̜45_wdY@>Z4Cj,Vl9*I--pKGWmu{OԶԖxQ\ 20{z3z^j[9]RoO(,3߂QE?R(HL3?;Δ,yOUTJOdEֈ{s3%]P<0Vjb?0- Sqы$},I*=؏U梠@0|eN}Qlb& 7zFL(?Yo7}5РG(R,)Y["᜻!<~q Y_D\UY}u*7U7@as@;_~>^>3{Uh|r8,&#]no3Y]ƹե `[ִA[#3dWF6nC5ᘎ ss}PIx$*g SQ\S*7V4G_aܺ>`#'cBIYty{_.#G |<8l x/yM=w98*Ei;<ɂRMt`x9A>ޖ\A8w5u-D)/h>CX޲&%jv8iJ5 Iȉ-Nkxu =A7S"b8Aʴ=k"v%;q-=iÿl>1[@i#M)US\ݔpEb=H4g麉ef˷ōUAeoÒfpL48 +_uڲx %-7ijih`CêK a8#:Fφ"ܬQ"W,TbPB*)ır1uσGApz5D#1*(\׬}Ca0Gw?],5;5SR k RI? 8aNtH24 . y)ʒ) ,(P Pʶ5h x$`Ei, g+ XzvX8kМD̸_']i< %)oF`OB{&xpp/o[BkEֈBI\JO^'f.L 1\d9"mJVmmSCjMH\yj^Lysch`UB6*p0|q)mV]=֕'L|]^9,йMXabf&8.O,u(eGk$A8Jw-;V =  WqHѳ\'5TV k[Zx0cIzSuk2C2 u[Q\œ)aU3thq?n3\Smmޅfv5 ܐn6T""@+oaxdH}Z~sRnOɭ?.sc!̻C%I8[Rf}Cې>"yQ!߽D o4|SX3^ORUjߕ#D~"5;c[jya&(`P6.u԰yc:[F!n.2Np n ;)oKS IqP𖼀\\$a%qV֋.ӏ dIp,OfMDˬce F{{xGPnҀFu}]?Ɂ;w˪]qv wśAnw;XRS'ORT ]گgbe3juA˹s mX:iYOqSNFeꋞ|f%{d~(eS!mHvKkoƐG2ambw8i~w?E^b`v"NFR׊ ­P}8 b&m<?yˀn~% ȅU$-/x98qo+˩@E~O\̗Zköy'r[$X 7nH@]G/]U[C:䨳AR|bVHO!hn0ztׂ2KbZ&HH1Ϫ6,&U}k ͪR4xq "ȱ9JFv Vac VwA v+/%֍4;yXuHH;߲UN85vWq{ܢW9i?TAI6G]ށVj 6Vħ_St$^i oI?b G[UWڈG{AىdpCzvhY°0ȡQyne{>ds0zF~tD`Iqe} P`G>1RY]I)PksyBry丮14E^ܣM].,VOC:hbdl<.V?:F Y{c@;RŖfkƭ]$p.}C#b\K٘0YRNQ$!.dW8ahvbqey||DP";~ti!zh%v}ٕa+%MS8|Y)"= |@_NXQ $#/ns]T9oDAfۻڙRl: M>sFd!R3-<cg9Ur-nm 3"EE#'X5%xyKt.,3GL;43CACu/H^nQGc%a'lt f8]mf{skתL|gZ}*U.Ii0r\AoY' vhKuϯ"9yˆxUo8pL3}JF=5Bek{du?MNVF#̧::]j^]I/\3tS=7b֡F<؀Kv D_5[ @RO y[WdZ&W3uf#?uNH m{jHJT+;;W2l!W/NG`BLRC;gA{-(L_HVIbkIw+y潦gRӋ xs`][NI b*\lK==h!wZE3xR/==|5NlTd)y&2ᤱ`di 9!7x>Z=R pa$NBzJ'MVB~'g ya.m=Cw,P9o )Dw5$-k5 mgniUx+L [:Z݌$k^XÄ[V9/&33 е5?.0(J,&<?{BG, UaNCԞ_z\@_3/̿H9 /Τ A#@R)7[|u+?UE bHj[dg"+Pj¬OD#/% ! g\ʴc vv):f#!:X)\-DELRŮt~Hqs:3ۅZw]\̓z$eL9 D1XaVtyNj#_O9wua(WH-\FFuja=(~tC.xUV$Ÿ`*I!|㒲ssSX@~GSGgOU):'jYS^Z}(D8e81)!ds^+*Gh!!`ϦRyظ^64 \UEDXҏ6!2b=>-P2H>m9vg@c†%A0STh";5(]\q<b7$jz4ߕ/h "Hh.%y3aq Ӟw]?7U s/R&O<.%TyEM?EDeY5X8#VI| B8Bw$t9R:&] e t9ەJ>k6@cIqyۉ= P9T.xcp8'OHBctg*EW @ n W: 0ȋNJh [#&7tCùzzsN 5Z7gi= TeӶ!~T|23c:T,<:54&{/;C\pgS,$۰xLcHnC?Uw* .%cQNkMWqBh8i#&`؊+8m.b`Z8h:oq 8t5G) "tf #0RJƊD~p(Sh0V9eĪu&V-x &>5Yn&#) kqD3{:OX(v$uҡ*n4 B/i< `ٴo;2ff{5=QII(90)Y.ZE5v`(8m$_r& tۦb`.5.uo7} 3( ߲7n~]|}ഹNYNh7޽m55c ų9/<&y+{21Y9ǚ5Kj&oA3feqRQc*dJA]&!8:ǽ3c¬jir3ֿA٨D>^L$)5D\yK3Jsq̧9DN6KZ&5.)IkwO_^ ngt %|("p5(Ca (%veHfYmTY(1;E.q`T4gi[T$ 2 6Lijt$'w|yS i3SIu2U ܴJ%.>*|cߡJdz8݇dƾB/x&SE1>)xթ`0b3QU䃵wG*_rKL+NN7S``@t${IFdt]@LS^".j]<#B!)LF8i0,X W8T|a%_hs<|lMIXqGgE̥6 j:T@_㡘v~MMq/xpY{`Wx\;} sĝЊ&m@[N"(P8Yrd5sZ_q~vʨwv2`-$N%/ ' ,Ouva&ify%-mgc]$RjYm{lE>/5 q}AV!)A0tJ|j);ԇe}6(JGez@v["@yg]@YMώdVCH؛zZ0:;YDMXD>¶3w?̣< CsN kf\s+}u.61ؓaXLu ̇]lXOH*Lm㳙?)JLt'\@ҏZ.w4~ͤW GԶ+ p9puޟLoW IS>ـC膦\I7/ xrV0i OD7GcKnj_ n0,H+MAk5Q:3Im̌e\/M4%Bv#5,7ߚ}s$IJR$[ЭfJF;( %]L {g'cW#BxeXyS ɾo, W RWhtD5lvj\iNm+Rzy!pӫ_V( t뉾"% "g'ɨj/Ήr}t9-k2E|m7"bY;)@'^@US?: %~ Fi=4T0aas3<@V& E2\g[Lvq* ݛ+'>uf#s+7篴s'e!(]¸HncVXvw[*.Rn9ddy/I(W䰪~j%/qa!8t^e6Jpj9aV͠a8; SkeŏnoxZ`[.RedבN!QyfvhIh{s_Oz¦  z(",-.{G՘AL+Zc'}}0Y,:dRknw<-HŕriWl: V~Ak/:֭S|inr-{/V"'=D:ڒrh:D蠼s-#6Hjw&K#y Dboati1PQ^\1Y3%:/L2,HQazk0u{@Y]ۍؠL\6 v=} H;+5YůIu@t!D2>ą &,SyZMb=pÚxdE*,Gïv1ֳ:ք϶kւ&&X -"ֽ{Aص3jaYp02ba.:WiLju!~B*.vT̥I *2"ɟ䛏Ye)c'?,ȌQm2n)i |2-54\*LPgՐmE:M4*GUDW#5[Ϗx +yRNws(RnK`Cti@Y|+*IqM"XqE8@qًTOs.a iEy7I-d(IieL%@F$>I+V4p!h.s`XMD +?eQlshQCvbyʶgJkb׶۪W1/9p๕.('DԞNHV,|ZW\lsdB&y@W#kWcv߃Z FK"jgIW,Y EG_Z fM'~p ("Xy)ʠ׵0Io w>b<yenu6 0OB1QnzawU1?8X"[iɳmHÁ3nq;;X!Ǵ`B"ka5Շ^s ܎e> $}4{]x3qq~:(&}{yGW* [xOVwzi 7@Xh;)h`nʖ<\ w6O8xlyMgk̅iR*h3>OEPuąׯ$} ;{I:34OvՃFPjjpcԙdon~2b˜t~h%^i& S먾f&÷xCdTᄓb>>3:u?\2S1_A >H}$7jT;"A%ܺ!8-VB1أ&%N%tpIJ(OnFzl{Dž8Z>)ͫd|&qSցq*q9zafo !~} <&1Yh+VkU(?˂WyZ qC0QڔK/nJb Ϣr!I4+ ҉O?'Ȇࣩ`¤0}Op|.qSmVpF]-^JQ&ދX~a$m6ҨvSi]4m$Wu: O= $9d,kgUwS6 9⌕ I5~To of`dΕEtXKiR'('%CϡI (PVήoƨFwIǢ4z63rd !S|ohedJ1g[`7qVwёH|Ξω쫉n/oH I;z}'$'` թN(c*OgvE '/MQyu?Bt@hQ}'ZRQz o1dNxr5mDŽY (qay<Zu$rf%XmU#7:uf}?aQ)P!rFz* `=f7e6ۀLfnnnJ#/x}w# \*N쯱Q!TDC$.&Tp\C7VҵW¹X=[&y| jp|Z]=FL̮xcv |=70CG_D@CBɱ-,$ "lW0KdZg?Lfn -t)ݖ*z?A_Ytnzd%Kqr_b1:R`pKIl)G.6y ̫o\Ft"GЇ`| mSI#y4XmU NKgniW9%=̾y8u")z ˹VH9TNeр5~WEDԥsW Fh!uAw hH<ǥl(zVjTRݩֻކeO,),A`4ړ$Q1) :9~Tv>dt׃x SSWL7 9o,EtӖ_0/(bz&CI̭!N>P[X}FFp{:.9񼑒ǜl`D/5nq]C q*6cGԵ*H0 q0" 9N)296Yr9] \\G6@=@ 㨊#Ʉ!aE%(Ksl|щw | n/Q۟0$]z^,cI\1y Je]=a%xq5V(2 ? ה=⚍p7RsytafH;|qz H=#q wQ_P,? o{$g9EfSGpd3LJTj6,G B%3ZSt)yŌct{USG5+OmQlu„ggvqzZn03b񊼯St4 p@}%Bm,>55z|P̓zr'/L7Eb,q֐p>5 ~иN<9C#KYL~iy){"*Y7|? &j4Gxv݅KUBkaZe%= B4+E3d\/kqLTF?B?hvSk)O~:URVf*]j= pj5l.t*4@-OjR;hS+G<' <ЍWaػvCebm gמ9||U0yA"ae@:if&:0@5; tb%/خ w<:<d.YoL2Rߑ:nt tiW6}cxp?o2v3rBV^&|K]GA+5G-4}fvrK% rϤik̓n ՙθFZ#fpg5) j||R_pPǘ=3#vA9LG?eטE8"Aޭn?kkϤܡ`4=lh&KL3hՐu#Vn%?2v[5 )/f0g?+E5xǏX$+gR(R/2C o٠PFzs }x'ѠՑDK:ZȝK .'J򪳲]|]Ptcm[p7͛~nTb]p)^C^GrՕcMi͢c`-=l)N~GjGYoPA i>|x.wvMvs4Q2h}T@ZOp;lPﺶUUH**|lD*!pcKɢ9*=T6Lpz/Ŭ;=LZ*l=$+ zb3.贑FX{ S{hCjB;UV4RWS9_psvj0#lHUknOmlA0WIRÿ3 ԙ|/qQ1w*d0:>Ct@ ||/ƏV HP#dJLqFwnO8HEtW9ƳLI%Kdh' [u]M|w=?7P"0 VݤB ie  ']5gE^ڄ܅@!g7mK *A$yYsQ\C`S՞L"Hck$g,PծrHk[ny #>3*1eG.r.iؒzH*~yJQΞCn&Oؼ̎pXX WM4 WZ\g60gIt>2DF.6pGHSmH^̙֩ H(4'?1)cl@8 I9_ժ3)2_yOS!4ot;~/x(FOכvVi#q@Z69:0"| L> ݘHk(B$2<:2rJ0#?9I0uR +Nh+^4 e(VExe;D橽k]_f@ sQ Ԇ Qv p9(k/kw`@Y/ P1V"0vB6=*\^tni<}UQP G,1N FM޶^vݘ?3orQnxCt漒`eژ1 C갦Ѥm Â8kX. ʽK/6>(r:y/mq3*m.>veyњ:>O7P*=h,޽w?9p w`՗r5{JUٺf56^to}Hԅ@\$TͿc@Cjx[1}Ե.2X F᭄Da=/J9 ~/lX˨7w@IL9yK 1}İx&kA5φMg1vYB IX*b3!sނa_P$jrAǖÒ+Zx(4l dr,%G1{fs5\|5iE'بN ۛ !--bZ5ګy\]nkXIaL_zoS4B!%UHw]1",'b- I /VDD4/>н,d{ߑC ` imFQfF5yQ04Z錕Ebya%V`_v$W@GU/'`Ja˵7$ q[3pg[Y+nI>8QCʳ_끣`v)fi$2^~C7@.R3aΤs[7c?095 -z8h}s&o{e^dy` 9V]QޗZ8$w̬Za)ǓSJz=T%hZ ou 4=ģo-h<< VQ+ÖG˫R+҄ܽoGO-ozN-[J(?%DAoߔ/dy gwf.~Dv:o(7rk3WC{憦!Naߪ*-dH 5`gu4VvӫuGF(@@'- mG%X!ejW_F{3Tޯa'h ~5#bZl>W} zf3U'ʳ4XX\4HWj"sԙ$}~AAAq ZY܁ε{wjk40OA2S9Pɞ2\xvWo'֞ҏ 0clu5#n%#~oΨyjy;Ѕ{c݊P}yd7/-W;QUE+4CȎ!f$2!_)]saҩC$OG?^v♲s$ޕŞM _jqd)Z9v@o {@w>Ԃ#/gȥDѭ75y gp Lv Ml[  y#в:8{Tn59(QK$=!9QM{bw/)eLkȞ]1cyF Քz +l:E= e=ҭX^W@(6Am 5k@S?\ܙCGi1tz^Mc:7j 1%/vIW; ] 7uP]l|s> E%oqQgT/Ȉ4跲ʤ&G^x&0󼾲_Vh_KpNgo?&DDyӢ,滶Y)oqcV5$ A6 t7h, ?lS|~^&̫o0V nd,!Tj8cNr!&c>}ꎲMb99eB/Ά"S#œqky\T]#qbU5dh`5faloM# Z<fXl kj.2r#[j3.VKy.e@yeDP砆|_] }xM0g#:ȧ'y-1~?ꋨtl޼?ۑ_MT8TIl,l;i_h>2uj=I|q‡J۔c g_yr:BpVX,5wO [l#7J tIOE;6KQH(C,J KяÔoxHv]mTqq;FY*6׍Iu;9OayKm[7-xPb?[L|g wTZ8`AT5kLM3.7N6ڕh C0=/ dr:gdil ^rFs⯢,/*TQ-6}|Ec/ݻll?٠d=œGNJsdU%X+S.#Rƍú+~(6ƴAy- +h:Z¤P3 LO7^nntZ}USσ2%EM T<ȵ'ii鶒_?Eov<OS5ve+@^:>L=~Z[V-cę 9,C%b2N_8|,,m jK"Թ[SܛsD 6Ru31*RmA)?ى)ԞPpZ><`(7b!LJYkm,.+4xeU{ft;U9$ h7PAE8QĂy3 crk1MکxS*h3F\x&}v 0X(x2rBȗi!PLRӆvr~cɋRko.ۙ*Rk +t &XS5!IKte4K!OmO?Xqm_SJDUG ٦p̭q؊÷t5?Y{:ֆ W E@sZ-yzzc| 9`*I>PIdQc%ә_~;3ԴQSW, nRWW_(IEB͹뭯t#˪D^zď7 יձV, }cYW3=nIllm "4ᢰMOjJ 0e^QdWt9'O.vH=krz/BneGߗ$mLFDʔW-\*稡eY,!#Q 2[{iiOF0/k4sTk4 wS6FGolzD,:4wj4%LVx22p=(u ~g&bFd1t=ޥ65*v53S ڧWͿ?@BÌz!Ϲ_ը?S炕m&;7Tv%'l&vY@H)1da_jCƲ7Wݝ֩%wy"a1Zp$@1OO$vomױ"#&yQ[c$ȇNe d>iy/ylhFEP)YM61ΈHf@l>sQ kL3Tzt?laSê$|jqBp,0YzK<FUI6dW&0~w [ b-&Ώύt8s4^= He R[`a ΂y+nB"%O+r~>0/[!]" DʼqҼf[+bClס0@DHzF Tߪ>iVQ%McF|a .QG7;@#ǚ |~ VI%e&!8 Ĵ6@*4R2zl!R?? ͓L8k.r'^ή[b252[(wE׼QJHV|>! 1iMQ"wWa>a8ϧB¸Y5~^߀Gi7it&FeS$OM4L#cLȝ@# QjEڵw~>Ȭigg8?.$zQ} ^l6)k@Q.qLAx8|>F0ƭCJԩe78uv}P\#h}@.,N? =&"՞EigD H GmeIy&v`OL4ngZ<D6(AO ~ŀtg DCi`'²Pbk9Xی9u2 [W1CdU9gBErWԼHG&5ӡDĒ3\N1ag?&ƁZȎ^oqY3^=@>Y@wxhwfhd3iy&MPANG?* Nn9*\ ?CެQ0H@Dӏzɀ<2%cQ+JaN{me0z=Y"9MmfO1$B+w]做* oh [&&?|_7_Xm1#яtДLhoe>tՌy>o f|)J=*naJ=jUzJД6 eao=NuwiGA _+Pߚ 0zQ}#VTEOaAkFBO@CLN?L9?nQYucu'ۭ6`#K$Nf7EH!%]F-4(֜6kdxv )%D+Z%tG8^r*(=؝!e3$gJ#g"|C˩_'1@PV] \YDt DGWr39OY2oUGz)fp0M:8|9'f hcx^Sa{PtAIxa !\/}8j5h^֤{H-oZ=c43 94կ={ϮFyP7zGK.j)4rcxa4|),qز|tbG1vi줼U )9=8LybZhX{h,ַGBF9+ $jǧ;H|>0zԕᯎH'O4K%r7EѺ%〡J-x2Uq|uG}F.Z 8RagWȡ3}0˹l NXQBSɏ-i}? I ix@C~#3)×d\W+dv*REɵP9G.mzK=0|M;AHo=@yp7Ges`10A~~LîT["o%msx ,_JD>@pL%2ÊGpFi?$cED[n'#m 1bYZy}뫗Utb$IrغYXT^ ?Ht/QEk$%L*&y$u8 <AmY54^HޜOq''s}T/XّD$`o I=6KNr*՜Y 6MC  };`9İ_1G-x,*R-[ݵblVmU{4;`Y~ؑI9ȃTjcgz~8) e& i bC7gv<<"L LE׿}2Ô6/8앣 J bk7ӌRRF`SbS恺(2R]N1:Xm"5g_eW dX'Rbh=:C+p!FO /wIp%(l6c Qz{Q"P!SB*r(&F h»'`S`1#b|֫4ӫb"8\[>ishi:\ijIQ$hGiR+v  MWlq@X{$vhq2CBwށ %;?0d1T0|C㚋(pUy̙\?.09}иۤֈPYl:"~o(H5D5@Fkh:QGO@VQϡuNJۡc~1'|\=OL#~'&&pStXJ> iU21t/>m9?CF~@ksQ+E؏׬K6vYksEQ7[U\r4gAnl$A\vPL= Cq%jvRyCIPô{r.ULeP/!bS/MmI>zF5r殁;sTYhiE)1oC/_٭"un8Q'8N/6o:͵G PF'/yJ/Nlq-wR6ʎ\һh57I`u@c4Nf1]`76Hnz4ľ)3{gt{`{^;i SE4(,];3LϹy`Z>~M^ Ռ3OA ^G~Z<ݙ,ؤ W&YϬ(Hkt6jlթԳԬ70i&%+D,tw%*T}Ҥshv"WK=?VƗb3Ś+&9&Bhacg(\xC^ 5Ks]vaPz,WE>/ ֝gm0txruLٕo8UryX1bL[۬qmT4}!"uȮ]-D+,AB}Sԑ}h٨{dʃU2ryWSVWLA-'U` &7ө1+=ڂ5Ң͔gWLĭgqqlq!HԢƗe-gym7\ ZU9!&6φf.OxP4:hݰ"r4`2< /g:}ԣ+{nv}m.1:QE<{yziQ:Iu]y} E fWDW_1C1QİΓ"gcH%9MyZ*p;`+K)5m-?"IXh-Vx:R 5h|l0$>HIȪ 9ɡ;F(޸Dɶ}![΀G%Ʌ:o U.㸴U@k)o$\#C ҒT`0'Pӈ~RA=\.Jc#`[חO;M c6PQ%ߎ64v<ߥ%ҒWgEț!Wx>dU%%z]PG"o/: q <%t7QCT51B>QdFo;#KW]4Qbn!X}vG<i;#.SsuL ]yKH  L+>魋E`2Qv)ˊ$ᭁT/y$9K-ѭOH`{a%3rBh2bt,uX71T+Y >|+"e كmd8aӯ=* ]xitaSU׀hr[Ǎ0ɰ 4E#5jQlem$q`w1}NR)@w<πq:o0锓dÂ?kN^l#=LMv`60u -&-Zr9W_"2f.tl+-Ȓu'gYZ0"N! , ne08i[{Vy̦4mgs^ ctE~ejӎFưA3}3\f8ԱӐ R&l]+ o` * œþ\$#:XT2 X> Ԫ:8hPr /'qTA,MKEzbE*@tD2ȡ dodW[=jMFKPgvj~Qx6Gi6$/oS?ӑ.:  {fmr'T4wmaU'g8ro5%tZ ց피,`=+}cN;&, ,N|Odn{UcN^i.ӉITz+zjWMaʫ^kG}"tKL `ڞW"v<J<ޘQSҹh\;J͠5 *~ yPk= $LEm34z+;§I6{Λ7;nj{"0N,r_]:Ew c uUakj$l Χh$ZɎB#^89$N?Xi8&#m(YʎJ"D2zLAS07E2AqV..FNl 8 pAd[^zWR{,}BLӨ{{ %oGUrs _WZh687$2L߁μHcfHc\\LH/֋LW#Փsc';.u>EOZ4ܹBIԔ n\#|6!OqXU6~`| "MRx=!xڶڍN\Rh؂xjOQgw%E27I_)q#[M:R ݘjFU;oUԵot`Xe'pz6݌;񛠸VimX:u%hgdƓ& K*SX#W.CrWj]Dzr[Bȅ͆l_ys.}2͐N S_ѹ#gY%՗4E<1-lk7skGfvۚSzbsϗ=6g3μFsPsɝcm8cOOA\z9qp-gƺpXϠ2h'P; )~xw^τ: Txm5bUZ$}E}"%.BT,O9,IEA}4DQ<8x6=b5s GB?R'i#ܬaƣ2EkIpß6tnqU̵U*c,X4G :*$inI!}B3PY2Ooa F4u׵3DLzu\J0fy!M$ZfD7yƑJHT`EBOpdnn"gU@e?(h}`^!N%Wy{l۝N*/pFGoJx^m&"_MJŲ;bQuS{: ژ1f+vʠ{]=Ό?GVN87ڊn} Ta>AbIPGwR M3Ry$@X>63/[vqM@_t=~ZHS!ȕaѣH4jNdcyHi#1gn=;ŸŴN»UbteFʠ.gk&=^IrQ rpheqY.}0'>/Ʒ&RF},.CDu`Ǵշt-!߰SM_y6ʏ%[ G+ zPRͷ=Tr L3Grf(3-tVK=ڭ}ȣ:AN$h]7qM3"[4Y9Jb~ހ%,_w{ܳ9)li"դ!:3sqO Y,T6i)f<`qM*uUqӟ+? ;oS+5""/9]33Y8G@@ I_$7Xwa=HX;Fz&&u;dZ(PAvxA-Xw'R&7JJ͘ܗg`Fz+ޖyoւ[K}$IKR8]wdwO*ΞO.u ؇#7 5xNDsTU XP[|?)@3s,dWdՌ?t z ;1Pםۘ& (Y:}wfi]țepœ톧SMP _2#$Ojх/`Wy:. 􉐛 HY=:`=}9fq) a)!HJD=`Ym(Yv𢀳{g)7g% (9B"n6uV 6Ð/ dD [V!=>̼M;  cɘyP x{I\ЉMW˵Y^}Z\;H/7w/fL=i)a-7)5̅k  QgLאonpr1:gnqf٭T098ݑtFc%$Clej>Ux/Y[uˢ*ĵ4`NZd/F\^ͭ6~lI'SeeTՙ]BjNZJ>pK@'Sgg&| ua|N.~ HڮrJ-Cy|^w9D,O|Mv=+%xL;ɋ׌[pZ2 +>2GpR=eu3n7U=ؚv*+OڜŒm>7م^L(z=et:kh-6%ZM&XywAIUKKwn ;" /*D@6D6d6鋋 !Ts_k v DY-Wg`H?Mdu_,yH&(]BC}Y_J9Mn}n%w?P[};M?0:D~-K$7i-ILjDQAA` 6C[+db3 @ţKP<Ƕڬ̯DS7Ij5\UpLmB$I,nM ߤٍ2eװ]ZcC5/1d ?)G8JO*i~dPFM-S+ 4S83߲r"AA5] E4 ۇDz7&V9%G=LЬubǼ2Rp#)Oj;;_hĆ&agbjUJz̈́tL'm]#$V |22 #= e vs Px}d7ܑ堫2IqϏV ݃7k!U | M-QDQpnK=ȊMVA YRZh*`[dMvj }J~an∲,BEa)Kk=?, bf8ht^Ƅ1f L*d};@GP7T  x41˫4sX8[5i`~ HSdH{2٨x(xfbxgxysb ⾳Eا HP\9߭IxlR&q^59T&_⩅`FŧKϡRxoU~ФpGt!Zw'a_JrEVBoh\HE \\/A㼏v/ 2|x݂5(l$,#"_Oʑf0>b)Q$BCIxU=JeY0{ӤVKٷN(? bequkpZQ=@@=Y!76KfԾL9Bx#`'DW|A7,H"֛싍| x Jm{:T 6T'`~Q ){>  ,['rb9CP HUr#*|>:~B_*o iI ^ād|jJ!J̅6 ?V8G>Bz\w}jmZ0LT`Lãn|ܞ A/GZm&ÇTC~R.  9bK 2.P,)M$RPu?TOh Ր'/SggNsGM'5椔M(Z4tLQr*jbNV3R6 s fgqtt\{)=) /kԈFɱx@.1#{c fMT mtbVZA|T8@ޖGD t*-dT0E^.g!fL<{1nLt + Hي=U*!ȵEMؖI94xҶS\(03n<ٔ{ pS/+*jb(6PQth1yw8pFYLx&d}%jn2(0>~<뀮|ٖ jŅ$` C 54kϦz@iwܬ_;`7@ڣ'L* u9+7 x:dd"N9 zYV@:5}vzƟjigI5PCBxxdTӶ~S4dz4$.䂗R D|g)1⿘|d5eѿ ZG}vƈ|ѓBHٙ*y2aEP4tMa@ x\~Bx'9g3Gs) IrǓdݚq辥_RJy'{㢊.$Sj~%aH{^"ƢTGF ffm -S=9|%Q fg z~|??8+C1Xn'qYABFN/zprvr‰]|vȠ@V`e%8ʕD\.)hPG*ppJ{=l>\hh1{U^C sӒ'cgX3]U@"NpƵEG*mwSw{?$)kQz}Y­azYmvt7c*\<6?.+8[$:xsO-uR9w{4 j+J2 Q [i?АØImָ(VKwgy}#$d+'Ib4& 3}(>?Ky'ny%߃pQ±v/yoK,ϛ= vπxjkVj j@wP>Lf9&T""c:ҦVx)etqdfP8wl>@ѽWôCIG'+M[o,_#Y nHK"mn..Ț3Y6-E]?GRqĴ)Qbv-uD%qZ?Yf09):"謎Zꣃ:Өy3F5ct*, 7\˂<ھ{:n-vypg*BKewE|1 B~ `ڝIbWp5bNM}/{ e0s82k]X^.ho 8ˮ]/ScoB&IFU}dOj+o8諄XG?Ul}'&kxA Pﶸ44Eڒ8r. 7-%dNQ d˚V?l]?q.ůZ+LHLhI w>Y&;'0%c2}"4Ka&Q$Afڻ١,pu^j :Cg:b*l;"݃N` 'iƐO3)bL>lt.(/߬y|+wZ{A,7q~߉Jm7b3|FnEɁl Ll@I˪1gyrp15 |%,=MwhD#C9H+1ޙF.3V#B׷}Mymxp~0(20CE  yUQu$NJL_G`}LY?GN0P +tb I3w)9'̴rqͺ͛F-.ĖYE7a0y[X O(^cIK9D,K#[9`Ñ;pViEJDs;ȲYLsۏ[.w&ݬ,c`?|wJ%g=G3#OfDf3bA5 L") o2ƷΓ!~x;}*V^J Ԩ iOjM:KՐ)Yb|KkV(a1Z;Y-,hd'6v*P aG Pʸȁ-2kWl*ik04|4y᎙1&8NA4䈝hm* ζ%Tb2GyyUb(ž'~y^HsנC.Σ~E f)˶Lġ-+* AĘ kǼIV8Ӟnq vdmv O/n }R j#/)Y=Bק8ڀcb<̣\WI&sW?*MOG|-K)﯒cH70H"AAeũfD)LFcAsH nw@ ZY^ 9o4L smQt(u<뇋6N}=A8{۲QK33A~Zgm^5KZʶ$^3]\WɵP>ioc vɹl =b︐{+vjA<.EFu O$_װtr&2, _6%x2(򰚕"[N\:&: JtIV;Z\ N $^(myJu__.qڦ:x%8n2+mHaб=?A% 1m>Yqbg_HmYCœb |vq+>mތ r8IA{9Q'g}<bc .+1J'>ELjf$ΙhU[dT-?"TcD.IĚ%DӴL9ڀUҾ>p u8EL jw3]$rrhj.aF[`O? [=P1Ĝ "H|4[z&߁͢\䜹O#D؁mfHSEe[|!6앃\N%YU|JIKAj|BG;h?)W%cL~Y@0͔ـcmd) c&5\UݎBIEnb!QԄXhq;YOr04oG؃WBJcK 9%wU3)Rntv)lrR"mKs& J=Rʀ}}t2 Xgw ;r`0=^)=y&+VESr3%' ˦dGvr1jf"DQ@XԎ CC4U_1iKY9˸Mn$5녌xԐMX(F5AO$IMA;j[Ǧ0CfuM}m!BJ lLl3{Hs9$m!hޜ IQcƝ|8(U> ¢gkf-5n~ b +>annT9Fs: FsN0թ)dl+XGj gSWW1&I٪AUM DȣXw iWs a,!ҁ~cZr,~}n+ +֐,* įH@T.0΋d vOڍ d!Eiw{tF3zDר1jT}h¸W|-b !>)ظ3K.$5zp{wHmGߊ#:ݒCE)%;Um13-+W"0$JҰxac|qQr5G^4vHjM^{1R@,*WR~q:y:$FA7rs[(m 폳+A pϊ)H=͆[0cPn4a!ӅlOkdQso\u1jG "g/;BrAh2 AZ7"4fmB#k ׭@8Q154#i@HAYm먛W(4O L:? g- ũ~Դ9qG/˻NEg7^V?VEi.ݾ@+]}r , |_PNvK:3k]f7 vx%> ^YjI&#gg4帺%E*Ҁ+;zu5xE"VДz@I%uO6%{ZY`;sv0bf-䂭+!ލ?ps 3 coq$#̸*#@_'MCǵWũO@5ΔkK|^t;D.RobXՎܖclw\&SGfD]G#ͿJ(_ϑx5r4lւ{H f~ kT]HDjv%qā]aIx? ]KTakx Sc<}B~4pPBG->.*Et_'ܼؑnEե]썡T]Nn84 ҼSpX-=-:?W+֦ ǨbݬAhy1CZQ4_mpDyRl~k"p8H73Q:aQ>έ||i: +>X.F;~ APA`0 |]fi@g)2^M*Hg~_SӀb5{DUk{ń?=l'U$,U-ӠyUz  1on^̨E{N[ԦS/ݚ,qʤ1 #>H[`KvC ^ UdAO.~ĥJU=i=< _(QmcNߙ@dnz8CK^o@nGګ~UW{6kNL Po`RYW&βRQHkPy::^hNkLH@q&&]'fEL># Cdg2bIОFvi( -&J]g-L`TbƊs{+fwѥax+}z僒} 1 dH(.=x C{S`9Vw b|sF88(o8կ)$?upkF$U`?ۡh9 >c Z1Eu! B2 &zFr|M#^%6@&]$\˔4N֌~qoGO<?T98Ω9V^0 ֤}BVseD28w4MeaG7 Ie#s+!X9_Cpfҥ'.gK~r*EtU[Mt,JӰ i޵; iwR/Ɏu"!9k»vq]be6.P ZIG򊮾"W}|AiJ Aϻn!?gZvKw}rM00;H(EiP?+:7rx.X0*SC[L4j=s _M nxOEhY0'qG.QW[%G3uM&)Ѭ'2/O8J6\}7qxO1/͵=J!hs{SA%Rh{.[(}Dd@FĠ !;ܨ(>lβ}e*Ūk1% Ыq_#r #K[j G-PTZ x36{ .Zxud?5DZH\y PL΀[` tE)͟M?{:-$] 5 qvydtWqx.t"mDP3e&J?-]SsP&\|@X]K",3"ɛ nUwחqh/1{X!Z+F)0;_Y ma=ǘ\B.*Ŧw\+!5KlYs:2aMF-XeApn'ҝvby}Xe{a{#~$tʾSLns>11pݭI@$p78^}%>}t?Cv`2rf_gӆU\8YjRLDȪVOi$nn\pW5!ї < o';5 NRSv9.PѨbh53b _04LM?U4a*7.mHp)Ϡ)&%jSNxn@\RKXy'ko86mo͠DAEbq*n4(M56ZG Yt:y9iߞ6"~zQns"8S,m<3sogd up;M1AV/XLvjC\ʶ "F/ ;Tq 10~y϶g7ǓIksiE?tcyk-0ލ;A2EC1$>RA#u6tZPxF %EgmWgPfHK5q 1QCej?A9;>|/*)&5Jy,G ?~ӕwz]$̇yMc~C3VL@ء[ltaNBk'2:w:>|1?Ԏ4AhE}eG0ΐS^f srK^Uy ەR8So0ݣ~ /.Ijޖ) M~M(n&3A:C-i#T1,$ĖP!y;v%luBEmOSOQurD.lv ;~"8OpTd2Q3we _c d3㋚ 0^Φ{vX4 ÿ:Q7S|JpLRLs]QěO9;2GR0n"C]˴ 9)m|V4 tǸS&(>wTr9BوquWL451/orho 7XMy%p͸4jo-M¤f|WKbԾ.~QrTM"'SШcWsd;m wY׊g"i!I!ei99,&H0 ɍtrco-<o[;6iXgDй2`3ȏW+E47fdD` ډmCWI_wSLYqȔ0--;*aj2 Rxy {!Wvg[ni;*@Luy+6}WQ"GO۔%VN,w˜94 _ J^|]/ѝQCߥ 29NoS 5\Nqzwd9or l֑^_OU+~bsxFqVU[ӻǰn 1n&8QTy5NE3k`!!7]LF6L*>3|/mN;C<w,Ȑ`=38~G勸w?b/!q0Jjjw=tI לisk5-'w˩Be6cԀbH?ElKD;l)[v5M8#ԖjNx.yyܚC`ؑٿT>;ጜV"]n&$F<;HBV=8#[šS@RމOkߋz25Ґ=כ v{;V35j ]V]Py~BwOn$3| if~qLN>Yl1v+X,CRS$Mp*A෠ 5B@^f_\/ɮ4 W|,͗@"vut0G~^b6M(!+"Dq0/r^}({*/KOz1rDKD"NOw\l%y*٬"qRTp֨Z//&q]%PۻoT&6.фHo@Hf7xb&&_=5󷶍ȁ *:SsS~5"f!opiT!?4Y2A;Uim$'^@L|yWJ7ֲ>vSCv/N(Zkl"m(o}<6,&|5%::RsTk5~*P;w9սP]6zd^E:tvLX?AkAIGĠjASzR,lpw}pܳ aSRim("oovrKs0:K:BcND=Hf8 q+8HͲL>!|wnQ7/CN,5 <*).fd#n/ Z̈́YƗhajف4o"z82I7<#!3! IuIX_Ql465+m3ިH l?Ls^ T> 3?aV{uEgs-TՅ5tB^-Xw7#nĒ;" +&O x"f6 GgOVjI]g(!O/Z%]`x7B`/w{L 8\%M1Q-&i ȃ/⹍#p&8Otv瘸ۻIj8﵃#t,ZׯޢPЛiql+CjHkrAb&S\܍b!3S߯% In%BYmzpK~+BQHXTҎl50;x Á'cB:/7)k]7V3f"%;VKת,{HX_3SSnL{d(z =_1XTT#:0j[t|PwŎ5 o*Gn)S. ~K(B/| /OQ~ Eˊ m}'6BU\$eG0kܶ-ypB- E:¾'d3IEF>tEF5Õ")&֎9-͡~ǷlYkr$#6Ih3GoZ֝Yo<6ט`C 03 @8ָ ?P@۳9 FGOi7!Kf60]: 'XG ;Q&t fQOTq7Mތs2 ̾k8\1zlfF53(ݏm+dEDvCh6t9d⦛ RY9 b~ |.!Q }&;х/ TP\?;D% [jz;\L ?Xut^Ix5A$ɔ]/rw4J(u͛+>! =w,A_\Vt :w5+U'`o ub%fcWam4tl638 uz-]>ӻ*'<Ì?Qc`jHFI% a w!ݡ$uFns=^ FWܕ[@bt/¹(B>Ӻ G&BwR<zZ4sPQ3xz_?#j3Ψ0f흰AA~MyE(Һ>"s$6^I0C7[G|k=J)Ӆj?_Yj:+}Zm<p-N޾p$|6}@>fJ[>n΄t=8q9=0JU:-cŪ?p,$|)ӱ4MdWa#mGnxmf9kU8%ܳO>KK9դ|ۉ.C=H < pC<^cSw$P(#ІuJm D&ݢ`Mi̚a=( iO>O7[L7ܒ\ȸempAed"L/WMƳ'o^nd5XrQ 6ZlO(Xt\Sr2r8s[uf ]rt)m3vj+籃榞}?todvtkH<x )9 [`T!=OvRaB;\6渕_he)ƥ ]aᠰCw45Dyc!bv՟0Əu _V>L3HZS!ª8RN4?Yl^zX[=)ڬz_E(4yuR~2XKъOO!p]1UV|rN AB@GkQb8,AHl.֎ (qМM8'i5k;^d iקL0h- gU0p- cFCU =i?Q$uͻ^`wo_fvݰ/3m, ke'v/7=TW2k njc3Xp儠C7x=v ;7CLD1E<C}"ɡ ; ):,QHS <^w\4.E~{$: IG}U 8b7ӞWFy]?L(և=yS x剋;_ J:%p76㤝Y $9/aw(vPdB(yh;,3^{a=u^$ܴu*M:$tEUNr*(*dtCUfQ'T@:YMxJuV!>GM?bI'啖>)M *fy`C#5Nh=xSv#iĩFE_tt` ?solא^qUJ: 4 Fni[֫v5([~z=mi0iNYCK.w'O:D1cnMBbAQ0nz4ײ`jcm1O5rF{w,j?= 5Ĉ [V:GZF +勮KVcƣKP*&. 2P> )J4%Z ^c({ǬRcw)\I1&$oS&ܺb݊;ep v6V%@]tҵ[{@[T< ywi6-2J@[ە"DZWiVBϡ hKƌ[!PMtmo2T#Q>*eUEx̪B on澿s;t0=<Л BT̀@g cl26 `z%e%*/ZMo [P4>Xi"XC$gI G/m? Q~94EJs 3ZŅ%D<6^|$k}+x2P*RLb'v١E͓fqbTs Sjo<7{1݂ NF ƽvXM딍m*'*{j&G&hBKn>p-,n>+^% G \hCf|}S}Kנzy~H&~ZS7L"]t{%K< zz% phʱ[6'=3[l!6@ãGR *i&` 6Fdo=:*a?~jd92sCD6 ܔ0j ͩ q-&/?JsQ:<( "-)xMCUvZT;l(8sKd)B0MISM006a5_a"7 dtL ;a~L. p7R/4P*)vp w bL۪iPӒ ;g)~joIb)/@K(vsՌYIԉ軗84|"7$\J>re/TfIZL 􋛂4czeZI+g]ī2 D(PUwU czTXdĭR0)v#O>wH @gU "~B.k;`nX4[gK6y>:@\DWi;0Wd ed\_pVnETe*2_U\ix6P-b!|"s0{^2Ҁ9eJ%hT' s0 s%,9`+ޣ0X"d=K΢!h4Zi)?qH7͕onwοA7u*b8 ر9)94>thMC4[ LDX =+"&" taڕl3:UB݉VqeќV⭄{{< yq_e g 61xc׿KЖ#Vh{<,旉]Wp[]ŐݺnvuéPP<|Й7U+|wGWNi%gy0V/VsPK6 oH &=dEц\5>e1bq:ӼeEEup{uSO[&0A3!s~& +[TdWxP5(c a]xʂ^eͫS,XzI~!Ƞ1M:wsPG=GiTPľ* O.=[d79s22pM)a6 [9D:iwX3]CU 5 bV*C|uCV}F֟0U]mx)܎B:FKk0]7%Qڻ>@Lz^*BɈ\xI&Wa3Qc{0 #׃7{ja_D^0 \2&bM/yzvqE/gQO_abpo|2D_VHTIU8w A$ON6:Jzp\YuX&&WŤS~rrp$l{Í>S'&i/'1$P+2w*y׬'6s#R;[ڼjAz06֘w ܾ;G,ݣk^qHo:E* ad$)R#W?Y JEpjuju EZDԝ^W[)d i5Efm#)q_a GOvWz|O&h5wC]gG Nv=3Zhl8㫿ߧ敔}" @*t~D 1tx&>>D|zTQv+۬7Ѻ2S]Lb/)7Ф6` Pk,_d*@S|S8\QgtqFV/qE&C?[ȠvM3JR.*S4yStnO~`k"(ѩ&aAYzs+;V1ĝgwF,`&HUY7 Ҫ.ǗMljd o0mD ٫b9~32Ybz!5ȇ$dh'mmp7"$o!Cg5*VXS1c--G"q! kRJ\6 {ƕ#c+~A_Fl}ሔqk^n7z,6.vZMr)pgKˏ銊ov;u`崹=gV SU_]B[Qf"yl^FC.-%Ub{/! u Fx'a(5E&)]w|Y f9Q',%.L1*RCjxPJnc]6eխ*a4O)(^XA'TY0Og6@Z+/;uQZ5g?%f"q>;xsftkkkm[cm\a3]כ^ }+ai@ϡӘ ?T0FZA BI>`E2m;ަ!Zd먿ը㾭2ؚE\؈k{~t<ɨCn\_ !tX+L@,WHI컟4`%0i =Mfn4Nl]W Kg `ytBz (pE{Z4tQ,6O*ard# 1(/Q?S}Sy}YTz?Vf I<6 O^#HI&]&:m=UVpKoH1T;ipKo(YR)&Zhir{"G8]I}(%ȨM̍v}wH-{W\Bkߪ#8Dk`~X14z+I:;;*` 8cJ`AbhyF:4@^[m ^0kl_ev(^ZJ{d:t׈ReySN iA 4[Ԁ֔o7+oz{h8ȣj-U0@ # bIbmPbw7*O\6˞*WCtC~a@f&zkein|$gsJoRrd\a]O)˸͏ke p *ߎ='9nmj5c^[0|84*Ѭ]~8R_5Ssou}iQ63GCf.A=$|WcoHy6s^o]K}#NAGM/'pm^u{s$EdO0`ѥAЗǾ:;Dkk&e;dVdq7/?d D0k[P ]:ҺS@<;Y@Vsh`)bP{ _e 8|<:Md!XrMra OÇxߛ4+Ύf*!H.ιcoL r057ԕmX yFm_^'Qm~%q5.{ȣ|4&F[@)r  /% W*&&eAkEQs܀hTr/0J5OIdZ f^&yB7g.)%$P5.KxrNMS dx֭v4ޒb$˥8Bc= #J՜ >,|E!e^7ⵌnpI3{KFúy_EW`Zα :( ͧ9l,;F ^Jġ/7F*yOs\])bTEN$f1=ps_=~+=XcaN]ZH rD$'Y;͸/c'uϽA;+>1.Qzq ia\mim`b7'o|]_{H5网3uy!9 P ѧD 7hj>b؜}E3qE؆9km}Co6VlE3I/w"ՠڔBzR`1Xz,?pG+U|)P-%+ "g=x3:uk$YrcAELl5p wMQ)K[rpJJx0GM1 /In((kd,^\RSP@nDra1Oޏ.px t{QkGA)`AQ$P“=ZiQHNp&غ-X# :;;ER :vK*&|S::w6VüGl:vG J_1{¨;&3o)OT?B6-F/JN1@eζ%A} `˳=ROevOMgƺy*dN+>L"7ڑ Gq6\y>j/'lS6 ,Z7  щazaS9&R(0d=+` z芎',ww``ԫ5 @LTcxB~?^"')zIMJ:fNG3: 蚢d.ݩftV^EeIm9FSȫGec1plkQZUH zx礡}ze[0l X'8}%3FB4;OE>Ր8"ʍ6L0++WSOVS}aBF*m*YH-.t6; BOsPZP"[څ`TmǺc`es w_F,)V5٫Ԟ F,kBD˩{&H$v8ŀfaxoR4ֆǔV[qDc 1 }xB#=_g C&C5MTlt҅jUŒ\kHO4qW8$AF5@m? BŭBqtD5[uZe4E, +v3w[aQY)ߥc_A ^=/X]Xژh 8+`6` TnJl ΁O}MO}I&lSnnLC#K2 W PcH4Gu_*ZTq)+(MjL/pjfW+)l=K\»8HP1Lơ]v>0q3nf"SS9a/#މM3 \:kt|2e^$,br1C$(?;%&>J<}Y_!0wp-(Ֆo3(gۍ|PŒ?P4Sz@@SZeS|m(f;B~$o>TtE. &(–hJcj&pWG .Iܳ׮)Vr+hgCCǟV&ڶRw9MRj6k\]E]slv{07@5 - .u[iTw$GP".PռWKȖR=u\UϏ^ѹCai#p_4Vl OHBߖst8,*_KmmGO] xq?5`kkw[uN0@/Rкq;U:HưXke$YOꘒty6-Eʪ OeBۄJ$VsɃ{ݝb洒bcgm;.5H3;s8SSTd+Mh_1ӤZ^ H^,]0)*34~ܟIV/fc&oNÐpe؈yt@XqBޠprL6PwBh5gDO5StũleYlY$s 6@wV, *vr"C%ceS3m[FB,L7g)xxrP➲,Ke$[wm <#pٔ(35˙Y N=?)nRFeMbL/4$,.RMV.r*OTsۨ\d7(wx:5JB@KyKtb|h g~[₩S; B3Ť_| Ƈfjg*SAٚ7O;VB5X >j'Ͻ--#MZ)pB[V+ BYϙkTKD]`&vJЭ7G *F-6 MX3Q}~+Y`daZ‡W֢o;~Y~[ rQ!;!0b.4KhG?^nZ3B9պ/"A v2-.ug2>g">8W:Nn] 0H"AnN/#tvBf@ YKZ -m}}F{:vbMBMXAM+ţ& zetp43ps3Y- 1o!ْ\P}~R n3ذ.BveEc9KSot# YA~n%eɽ.>x#fa؃}Ϲm\$oRMsИ1䯁b@Hj(5b0,b@b^ *H5VVl[!X&VlUv.S<תx |PnST8-J(hj=Tef}["D!r^0@k1p*`fߕ4^+Ő۲o;3#FXjؔeˇԧCԅ<ՙj عv}V@;{q56_O2Xj''BZ՘+F\^+c{hf\tR0\ GUR%^MY="D`,2)m{2nI6M! .!U%7(7.#;'`.:2lFj  ~UOe0&,@&-">AoRUk?tf,3~/g)ǣ`'v]3YfSD(_ؒ[hC_W]3Kcq\1E#JCJ_j*9pmwmJN/As:$Du)aomA _ '6cU h#`)t|Wϛ^?w}u]0 eN$+BvrջĶ:ȗ,R^ ajr |΅/tC?-. #lzV7OL3u;GSL(S4к߅4 /QDJ 7:@w;18Fa \3K5ώ}NӽpfZf>0#1pU]UjUB" n++5.,vި#(ԭ~$b1k キ/sҕ^٭ͥWbR m>d[5 ֋$Deb˖,rNl #|e6 <A]\$\_P{"p/EˈQwUK-LM!ǒb_576fl ]ϩ,R@+t&'5:Ȱ<$R^+g]>vA>Q›tPnc0X㥃K왴h8Gj MG4 jm@4aqk9]T$xP#{a>g{5`ﮞ= =Es G Zvv'7ֆ3/q\s.d5F2Epe:"98 3QA ,j1 :Q1L* }{rH%y^*Pz䰶@UNxÓAxRTZ E_yA?+e*6JzY36 [q?$MiCރۊ$Wh? "R ڃ-њO:dO;̠]NHWٜOL}>>WHJk1+oJo}BYށ8q'A{eJvib( wPK g8+Dc+걹lw w.4j!=S8k ~cn%]hj3N(hm~!65q}bpMܸ8V⃧Ay7FЊ16VGP;Kdú|fGH!.' Es RiZ~3DߵBk ̬$hU[ԏjMCEUw%L/t:~f9'ОizFYwiמ!}C*rSS^qHL5JV\Z:D{Zyln[;!Xի,>'¤O9z_./9v \طiPշ5vu׸yP-?:Dmp[AMwE]CM b[f6gS!61i}/Vq@%x'NcKIv Eiz@뎿Пhφ*,vr"nv̔{N>ۤq` 1PbK:%5#K]Xv[a)Zraݘma- Lv$Őaxi/g w\w)QxF)$DM*85o y99ځ٘˒4g;ұ lS~8sX1 6[ $Ec/"wgމQ"~ie0DҤJo  O6GeBT3:ܢ_laȨaRj Ch @*}RǍiciQv̫Xwzx|Cc/#&bHM)&Rgݥ?)ߛ_'T96; uUepH&q6< 䊲fye&D4|Gu~!9,еy4T7Rd!BLE=;R`^dR!4A%3<[eb>~IB@-+H(űttyLÓ}fἻ@T=ƾ^t]?}+%ȓ*Dk,rm 2[HgİߥF֑CQ-knA/Eޔ@D3ա4Ճ*BlRZwYk#* zn}5 P(Xa3W#w* =QXHlo禎h`q Z&Qf‘:  Zt顷_2i+)2jW`b "ݦuk)})bI}82k$A~ d>$sѥQ,5i+fe}U27K z !o1WK+FF.Bh# L.dx&=Bɢ)/hzKNdni,g+ʕ39\v-';2r [sq <kecg71ߩo` 1*RRz ƝT\#46d Sn?snBl BWKyv-`-rT )|uOO:jNSj Oo. 7ݼ 'c(1TAҦ:G#1)cfzCq̲xkoRmc"2Q6c,YbSZ2^=m V,|%;Rw'/pMhWwt$y!N~Djn` bn rBeg9ŚE7WEpjR1zĥxfE b,zfļ0V7 `qb8@=8Uf5a£f')$+:N~i%@?C43s$@W6Ӌ H5, #G5X)Iaf/ ^J@Iif3H#Mc O'!,Bv6s"O^g.Z\. Z8h9#^M/e8,(eq?46J `!HuNufoS9-m Đ*8г*sy<$L€&CBUq-t}ƌpBi&]]A䠊bmX%ĨQNME[2Sms~\bEO I]f#qF'$}Ĺ`#'G8{w;cPh=(o|bu޳"mɂ_5w%b(biQR1*4ԁ߿Ϙ\w ]|lH~7t"C(rK ܠJw#Qy{&vbq@_ghV=GAAQ*Xc+9c];vojwG0jn}PThMgsNy&#a'NG)PA|IE34Ǿ5}ڵZkoRz}Q79ǹLJC3C: @@ YSb{QJaU]T,J/&D[ ˕׶Z @Hp]%czh&[fz${BxA%s},T8лcYt!3|,${ !!B;Z~(`ASWK`w)r\{e^l9"qxp{α`NJ`B_+UpZozyw3_#AשNh~?@+':դj,'%9'|56 .aB[w9v!q`tAIg'4='c$iv?/3ԃ+TCۭMLrvE XBu.蠱,3dxB>5 ~;$$@U[!P=T_AiVyin%4s] =G)XF8٩Ja$FiէKE(y7֑B뽾ce)ձ5-aP9f*bԃ`JNl;?]D]3)U&;Վ[q 1mkűQEH L[ e1apVA:j+Ӊ7;ݹ޴dw7!c5c~{neVE;($T۵pƙ12:#2!029[Edi}yh96yY !'̢ ( i7-J`MJÅȦi.ܐJ OF-.c]AבK|fV;*xcqz)[EIB>lJts6gpLC.IRov<7|#s_WeFPѿٺ0hvmV^WO7DR_( #FQZ-gkggce[]]R9lS@5uFG6|6aY1'.I/pıAN{ UI؏ߺwp݄d X@Z濚A ʕ9jNCE:3ȹ.z r΀[_d>5ڟ3k%.lۨp_pnPBCiŐ"OGQвk-+qkuIpXRLgA`xr3k;1gj`]d{}j`yjZ +IS*X-,- %M馠daCEhK6N q#rӰȻ} QNwo^y1)>H}d^` <+~N:&>YgJ%y)jqlYbh?< |d};|:և52BeZR3+[]G7RbzT^MuXxϓrDm' #cKg'T֞!"V_,sX5N\qG}qkB*"4/yӭaeu׹) _w\eSyՔrxCO 5QBʡ/;غї!Az8+g<j(8oxx1^s^zsƷ8Q6@*Ҫ4_/;`6%D~k.vZ.! g J_K_>LAQEjWxu{n. =]Kߐ:c3Qz'4q{ёjXa_.wNG ( `#W<~wYQrhS̨䮻LL.Ht#u8{f3&RHhǻD/Mtf-oƃlC;XF05wb|Xg;gFn`N㴴gқ AZz00V#|(G_#4 IοJ,9#D2 l}2B^`u:!c]oJfkksoeJ1Z#ׯ@mSxf,N_Qx#Q.OCKk;aPiJ>|%RA-T>mq7,/,GHT")i,%/S=y$\AUDy/P]y ß LTĬQpܷ==d~e,I!OFǪ\2wQH :hzd6y=9 ߞ}~h աIhj>' /jLY+1د <'">T.5D6)Qbt(( jiL|-m-}*VZDu$DoMR`  * 1Y٪o ۑyNd`w3b>R=7l*~T_ؽYr4 9p&2$]D}LSk}rS`/ν4]E챵3Mp!wKm|xx,5mD4BCgdk@,~ LLcoDMXSTMUF @IW%҃o*$`lxѤHhn)PMsڤEw!9Z +^˰a[T 0 ݤmLm~/(7Ӌd*$b.uDV㉞RMIL*Pc),]]-r,%dp'd_W#œAVcx0דyz6Mr>dAyU4a|6 ̂.18@EwkÍ$ <FJ1 6 "=w$C"s5Φu$}jx$a3[ 02 JuFo9&p J,GHD) $tqQ%Go8Ԗ'E5R= ҁ.s)+cٶ>_I0>uVU1%l2n2 ڙ]!D&H3=vQLXW7'/&{۱\Z?y_w/I8I oj1!)%32sEn Ew~Vaj5u=)\kFo@3k<G"cXn%'Eqz Lm)@|'y&sw[JѬס A@&~#i,ֻ){xˍ!(3pmd[?ZuNbyǼ a`"/G vbeΞ# ?^ C mܹ'=`@xkP{n,yJ/$͎[a?WB4#|j s6z3wԷh4.=F?qy< = ףx] ZL$^<Е2؈xn jYL @ꄅz:k^_9^vwwSc01w?-92mԼOOrG2TՕCj7RQ7U Лc;6>f/BSIc&Y 22Q({ `W):$y^!#e}Z>D>prFч Yp8ͱqSw몑;'MRx`VQs]6cKOCgtjx|u#Jzw1S#[U$&}e=nYy@J!_>l;)5וǁ0r8]n?8b3" 04in=h6+LtݺA bxYxp@;Z;ڬ}E{ >:Y'g N.@=b1rI|*~ψ9 j}SsPgTG V+,J< NBy&xQoȝ8<ㇶ\/ik4zo'tNsϢ2֛ y Y˓ƣqXxϫ[G*1UʭUlfs̠nt4tFg;2{?+@_}|lօ6(OҒ̫ҧd VƄHrEX'QV;` ~ o&hkI# -h `z) 1؇ D/OjR $hr"#z/Wai-pʩ:!Jο?g(VVV\ WKk'xhk0݁n^&͌bʕ9.54չD}{Lʩ ;t@Nf/ ½ 4z<[6|?nnZ㉯ 1C['HUu"gs 6WPg!/`Lפ,8|pVx7n>&bbB]t e4Q&g[h|ѕ)h=":Cķjf7g 0>SǗuf'd5I2nq!#=oܚ5#_J-}ŔYf!85꘮* 6UKCHnEGq7ʵu}ʍ=-"2xEou1쇋B4lQƆ%I$ y"yFdޥJf;f&9?q=r+bRGBHw>MP͝fQ6xM3D#zϥOfVn>o۔CQ>4]?IXl9j\0v]UD/*s*tke+A3#ρCgQ"BY*ĦCV|eɴ2FŒkcݰ:Hw忯G0Zdb68# zfyBk]\wgYK1B\ga :䯔ì Gm! ^A&8fv2ܤ)ԣ4E?7~ Yk`)]i6q|vnk%| "t2V)lf<gbyl:_\qz9h8f{psJ9[Qӕ)F/cQ?^iZc6ozڭQQ%aIN}{Hq kcDzv!kdͥœR=":xc:S=;J~< { S{(°lHT8"WšM3|Mgɣ|dۛӼQwtJo^R A~'U/};k#(T!$֊xX!@Q("L lHúp>e74 W&F&R_i>miܐ8^ zIO]Erlw z~ļ+"\$'^Vz E90`ac3Py׻L3qyI,coݑf$M؉\\[5p֝9MxZEy'3YUQ(q.-n>f|WiY[l#;doF? bzk1(T`sCN{+06 `Vju9 7R7 ='Yۉ-cE "AV.9jEaĊQ~)]:qEyi{U=Y&u[xeڅ mgL٣IzdmP(BWVɍ0~HJ͙;g8wUk)`VEx(ˑN۳B-~g0// բ /^ { r켝$?煖ۍ0<j%hֽY_'qY# /NA/LTJ*Y(Z)RN3{mo3Q`#Оk,?>];ܲM=R{?^hk,Α ].A55DWvW5vJ*L'{9p=eb. كW+K}wFit UB0lɝm5&>Gd5vvK|rVgv8֥ÞI9"{Ǿ'WxjU>`]f\TLq+<y>N&]Um\*a vHf]\bbMޜzo5ޏ"!Sv! ۮ4m{L% yNP+$_P8"ﻆUa8]e^f+ӥޠ^{|,LNáb<'qPkD5nv"/ =?{OP < ou#xѶ&HiˀDd99 ;8N%Vb-n9)G`( i{$ oO)LEوwףa6*!tivS&Ӽ5ȷ2ylv@7N "G7o_ҽR=C-8`;]QRB[ Lqp%)/4 .!yUꄍn;y3?qK?A9} @ H0 1'@]MCSʸ@S.2grh+bcj* k1)VFP&E?.Jǃok(\ate@=3Ɠcf~B,d3XnZtX1I(f4]eSACV5[^>`Ƅ*%/} (4^Sonb 5W_>q(@t(|],}6 ] !~VYCM;(_f&uriqgâCË̚f{nU?OvW4ehOj F _b~vNRW/^ `sŨc gI޿\F,gsJǓV jnf{x6eS$fp @'VDdhcTm' PUewpz{Q@SW}Gt:BO&="uMkl uٵ5}{KfTEٽ:7\Podu|CgϣOU ]bƩ-9{ 8Rd"GЁ#,ƸltZͦ.>Vř1K&U:Gz !<qWC%X8LG91i%ȓw?@Z0dtS'?_8#Y:t#Hz$|t.ymG?IJ-_=Ԗ ΰC\.zkSK LwihǸE _ [oH: `p^3p h{S""Cj"-XEĵlXؠi-A'fWPx\jk9)v7ơ `q~ 86|1$Qm'h`Hڮi61gEy1ˁ1 u;Fb˸JmM~ J9bEy]i|2pa PL –8dHBj~VRANJ}NΉ@Y\| "=eUI8F*נJ}aEU'*8k4Fև ƒm:^`[Jc6j1kTNSw 3[#e ZMR+bZGZ}N/Hp w9㮶#_=J՜4w: rBmE.V)iU:{'6bݩl+`v!.VN U煷 I|Pv:QA.m" gUF{U&'"!bZl_5NS=QF&>"ȼ[j:V:sT#'p:;!"ن}GTW080fL:w be.ŗ 흽!>G8S8FE_l*Krx2rWԓBj<"k[q9iHzR^% ū_qkƜ{X0r!͈̥ȚcqfHLa8UkH'9%o[?FrX4*.}8y;*uhn}2Ӳ[L6cݞw6 )_Ъi_AfK 1A߼>od ^.9(ќm?9ߵ*^]ۛAƘ&j A hb-_",QJ'.\ޟX$ 3yX~߱xo@ Ita' &ѼX GŒ-DSW07w/F T{&5aX],Ξ"1Y}\Eu' o%h785Lm7 0둯["2v qZ#lA"KmR8NJ:5O ۋiDt EM ==19"R|ψ4Ю`Fcl H>@҇/ %ޜ3s PEyҽ>U!}`hL`bzD^.]ߙ ZI&p crU[C@*ɀh+"ǘREa1Vm8I!&\ p(ޢ;=Dk4{n5ey9~B+Xg> 6ϠC{ۗ@Ř8'iF_!b)q5HU}5S(y_BBçNBm7% 0~ee{_EmQ.R#|#,A^@?YCm)ni C7*Uu!Ȳ/}bC=bqWa;CQ@c4K}!*Xr 5hВg.Yfu0c!-C1Y uxf(E{0@e8-"`ce!MZg`o6IZUl vw9]$IboQQ ZwbWʗ©"/_'z]> udBܘI%ҥuM]B_WO'Vܷ)sƂo;6Bc?!dflHP #lY`Vp3ת }KMvdZ) O`_(DHC-4;6Iu,H)ⱨ* fDϰ.JqjTyyϘ:P׋Y@IMڋ{s(K$uM#ver=dvOly1"nV#HƮ0-%A42@`i9xMsH+ZVrѴqMj4QWD^9Pfn#3fm $#[xEGϚ?Ww""5?i%a%76'Ԇp]x3y!ڿ rG( ڭ…c$a.yCV[Oc(:~1?13 .iN"W$]{h:.beý ETI%?o_51.!("(mDV} ZeF9,+܅'^)!Lԟ&% (VR-Y$Ԋ\4+ OOK8%GF*9w:1ٗooQv>8;8 LMO. -6<œۺPAIiנ "QN4tP Ȉ*sQ$@JuA;bȩBWq)-qm7{?ok{}ٯH$: 2B;6/M%g5:|;Vm"z_FhűMLwo)yx?PVF:2+%"C78*lL,'mѕ4$/ ѰFMY%֟vRoL}k2$Sg1 ٱ0j0ϴ=E)_Nϓ.i_/~Q8\[x7 S+|S PKsD/l)5>7GYaO1TUх*]|2d$_&IcgeD5n&؈5/ݝD,maNs@E*lP6w=(@Bjyx~zDR%X&ֲ\ƶ xC"QlV:ZsX,^(~([i_ H"+v!N-MFQߵYVCִ18oO*zi ~Nāq`Ӕ%׮ϥ(3 *=1ZQb#.}+\C4TI&m-@D/KVN_'cƓw]liJcHeIAgMɄ8b.Y!!2X8}D\!'u)$h_^'hgɳ4!: yv\ajOE#}k*l>7}ʓZ'*~ |{5~1Ah12}B >)-jjX˾H`D"ʶI hl̆ؑ,җ@VK蹱Qa5#/c//|>U*v_* }eFʯ_5^ǿ\v<\?L{)22Km{ l#f3)Ǒsi``;<7_cɘ'̜a?'[|d2Z=Xo qD!"TQʃ\8(i5ՔV"p>Mx|ift/BjIXM6&a n S/%ʹ}3k¡Ȑ~>e&`wb T P5;XQ_N8汷K${7kj~kMNI>"PF҃3㟳 mMh$еACQ߀{ >yxueO4DiC͒k3P). z iX;܃ BaaH{g%eDFbr>n@[)g#dB98_'0ekH];xv$5Wr1LgJкgGs7:u p dpcҟsen>h. Yp5éӺv D[gsDOpnX*|G> )FSp30;>N}8ȓ ʹ?h,X3٣Dΐ|tKk;h:^nj|\%ANe8ѭ=_MpԼt9a/*4ŷʟR!߸(T7`?oyBmPA1BiCK tSJښM#C̰h]%?"~`#yv66y4kCyܩ?e4у٬[tql֝| <=ҧ84$et ||KmJc1>?I$ :?ݖP& 2 u7}Z0gkwk=$CI0?Fi=σְ=Ynp54b͢n<c֖U;'P(PaRҝGqŻEFK)(@De ʰb31'Lyxj OGnv:R.>;uA4wv}1lѱY_v pTl.3Qg6Q ,:w(!h]=4oYi;ދZWUWrĽ^/',}rk(<)Y9?Uk0̽r|98q壽b~{oٺDCu&bw, i鿆b|Q[g ݎ -3 !u`6w?@[yiC椂hYCSsٮeT(u(^/ G對Y&aqF(4J`A?;ȼhdzasOv7Y:ۇ&Q_b3ёL =\"cI@:JMh3 38x#VQmX܋ nhЖY|'Pk/uZ_VE? CDD{VvL8N 3 ;@ $~ Ҭ8\nsm"rI*|ԈA0υ [o~Gc"!  MUxglxJo$镻?~B54ggU[=5+V01n@wrӸP9mrZo?GQ=}# Ev<%BM e\SEM]Ly >zX`l\ ('Bdc!̔z>qc~+jytA/2WPMO ى(n dM6}n|QĥL ,h/J$ILY̚tO[}?b+ p{J片\_Uq$wˇUƐ %{;$I]ꃏAxB_FqJ Lv+2~CtLV/'Բ[oU橄_J54zqNjr4@lSS L"uPψQ8 TUXلc] ;EE>GP`>_\ܜ߻?uץWAd|K`bz!bb 37Okqj{chIƓNlЈ?^\:7GXV]v:cK\ZOORP.wsAj +-+hv;kjOvec(gnZ1zdh}c~2 <%dODJ#0O!P\QrT;(J  O]C,֌ɆľCѵ dz9sz| Sàh  #3l9)hyAnJ`RTB]Ymv>`fkK" >*fL]WF(ǝ 1̶|aRn#ў_v4Fzь&3; ev ȣ:;H Ԣ$n>'Z11a^ʨ%435dUR`8F[$ b8](Kx^'BF/tp|V&=Ǭ]@ךZ J+:JIZVmv':ep$ٕ??mcb-/)q,EY;ni&h 3uyWn`g 0 VX̷{p?@P7 KM&=%΅k4t*G ry<+'V҈S`ױ-xF H~^B1PQȩ9'vu_Ťvn.—e鐂UlW_x'&fc~b]a9SzgH:<0znm.1{ekrgv9&>Ι! LDHWc2'R-n-׏Gu$||L=@N &;alJY@/)r `MxdLn- *IJ1}u9.u`\ԖY)hv[9넗seJbpr~!Et"Hd{R9*pm~4MMп"*c5E ͓IS'G7I ovd 61 23vJq(j+;led % XL5n㸌nY18˄t!#Qǵ>Z:eUV6aĩ#0sq닭vLǤp #e8.#[7\%-soZf~ !ڥ"30ݪ4x vTd"cArieuKzq_i_ɛV(ɂe7kEGok!}ŦdVU,[OQ@/ ~?[[TVӏ=^y=;-5]6TI@3@]fTr}bj1L;BXÎh5Lи_dYorf}ycX157l(¨ .^FB.ׄ6 O%'A\N]&fK} +SkZ}A* 0r1W2+gأ!oxCr+Ssm9FPWy:vN_ gvf2lDb%Y:nT7I*pJ"C 3͔?^:#5gK.Ue B?[v=V|$tM鱗Z.:QeJ&"}z- 4HJZ9׷׈m,!mhHd,RS)5p45NdMycP77-&?Ѝt$iеIF1x[օfYxܽUoaF:I_ qdzYR~ : &:f/=,lJ gsfk~ku@heLvicb?#GG.Zs:k#R\ϳ8dX.^ga|PF9+4‘ vB?e@1 4ؾR'} ¬w,ii?19wvŹJs20 ᪂`&7,yeeJˎ/n- c+.]v݄4p_5:{㾷l|YRMg)dp}亩ڷ;}[,Y;%` r|Rn|_7e+σ u)AewwI^=][S'ٚɐ> 6hA\0k ƹH/c.-1\ôVo-?j7m12}Wkctuy.qѵ- Ux;@x'ZNg4Lb?3CbңV?c95h3J~'ۘDbL'gaB HTFUoԒ[H_)J?A'}O!.(=xwEO=ZtV"Y`\|GGX.ut.jy]>w4ۅLJ]"xM ͏S֦D] yEh2%*jnʽ&S(`(Ch_:@N޼ߓUnqM?gdzQ<9]k ls6Ul# "e|07yg+j/(~txDG6S pXjJMs zրQDf>bǓ8Anj܍#^Q L쵴t p WuO谀Htiv xXwFN`'Q?e 2ɛe_\6[Ktv l=9pA'4~!oZ #QhR3k8N!C4sk_ aMmE2Aĝ!UmBM7iaxq,?`ڦmDq2)B0t޽c2vM_?*ӂpjEpܵ~e*]`.ާ2kfbK%7 #f^CW?1\]zan-L(?lʏNtEbPm3UpcͼPf~Bxp>:\WC:_f־F+-^V#6PmsPO[MZ64"I$ WC8@z|L r] ` kօKJJ6N - V4g8ΙmΓc7;,Ycr/aE&yAv1MlCC7uu&}>]EzMYU.oUӱw* +J?L*Uq2˂MU5&eBmG}_k""xshFkDNL5g55A7U\a r#8;9+'%ޤڪg~eGJ򠘉Ț/@]K0 7FߔZخTV/^|Nb-X\n(L26`2~WCXu9)3ATOJɾIAJ|ȵ^fYVG9]_+)ևnN2pl[J  o}-aQוֹ~&WZ{xNNDnӶRI]{"TaA8#QD`Q>{8a2[J~Ӛ1խf Y?unZj6OĒHD~oC_漂6Wt-I *@{QHU1!ɱכ݋ KAU2w wW=۠{on ".*5z< /`=$&6xT(lU LbAKraUwr1^ ܙ))?!'o5~nn t{ _gtx4{| u5Zgx1$8`!Rt8}[IkTq1YAM|Iu+l4EWK( TßFA@a]dudxrg[Ips#k^O)^ZЏtm/wWc.0\2qZՓjGx%݊Wվיeh"`_`e\p[D.?FA9i˙]:|(@3I=퐄qv#W\I۰Av~2~ a)@3tcWa9J}S$h235ƔRߓyH& =y&q?hhӟPėJ*CbH*Oiŝ/At7e/kCI}Bǃ3 Q-(2[oѮ&>RBOlgİnvy=hjhJld+$6ZV_x-gB :_t@zhF>N-i轶;:vn.zդőE4?k67?^O%Jgwoa\/_&kLߖy[2o @tL`ޯ2R}$cZN짦7pk^Us8@;xc&9_|5ipn' R mFJLQ>ag1krE}tVczNw 98Zsto_Odcf(=2]l(G;c;|:Wf~|(٧ִmAoKTE?ߟMw蓪R [ọشmVX|=Ķ-aDs(^){$k3uF̢@^tfuHˊNnԡپ>8I ߟJ-ZB),ZitiÊTx vXU)CyUir0OS];el>2As}i|Je-!ez\S.q䯦 W|5sث^/Sb<=_KYHПSu1/Sr,xR$ W*VLeBCu[k GT Y#_W=Lx'M)phX[b;W rgklT䧗3{{挌Yc-Q"ݫL(]9c [ƿbJ"(VQq GHw4nKwDg LH_= ѱ*/.B1.k'PNX,Q]ؓ\:ٵUj&j ;rjt.1e+K4 h[h֨ekͫZJ CwrtQbe<}@벖+;#>0WC dِitZFm[J#5T9 zxȶRji.shǵڌ c5N&/+u*hj7 慁Ǭ@L˅DR4_p5zXHs٣gjpx| 'RsjxL“rså:WՄJrZXlmSrHS^E@wr^Ss 6 '/,5zE>)ĸkG,[3!69%RamE2 ׯcxc!C۔(*̄p-gZ@J8H;5{F>78C5ODg& &Uƍy}BE-9XìuZt YXZ0oxX6o~elI8w$C0]\:C> 9Fœ(v٢ eTt4ZV$fۑLb. eYRD9 q/\dZ7ĴrtU~T=(W5T+e81U Da=D]FǟNC)8:$:Ǫ"p4%N B߄Ǽ]JpR ٚoUi>\ɪDׇ9;O,%>tF2+M\]8C"Nj'Se2f,3\9D:,Yߕ#շg=i\l{"GZH0 x,& 'FT"]T[cSA }FhZ<-!c܊շ2>hPyLް`ÕpǑEk߻;K-8WE1^m.zsB DFE`Ho7Xy~=Q36ԍ5/9PXjYC^}9l/u|f1s: 7eYݢK{\:TmSJn+tR(k h6"v\CL7k4{b&_ju`itM]THJȞ#-i甀~]|l^|'YPL>ڰ$\s<}[xvG^(]譸1Ri@T5uPO O:y,M!nF-6ڝYW2ɚ[ѓ}Ej 9!&xexE{﵈W 8z/V'Aȿa oӫ2R i[$e+.ICc.½Fv} 7@ XD:D,ۺ7J G .ni, qz7]u(uUX-7%txQY6_*il ꒈŸ$U>7?G`{ f|sh8Rlp;?V ,90 vZ_bP$y.yU!?ߕT0 ".?X6wP-T5kgII"FTB5,@t]ف<*= q-1dXܢơ曀MkZz;Uohm$gmRMǀQ-@R/R^i_*JDTtˡ G )0M Gizѿבharއp>*dN.z M12HQJՍ*Hܩ A ^o` >$,QP\nɾee0 urq/45ZnW,2Vbyߛ0 p!>~N9mR诟Х: * fNJo dE7ڛ]GTmP,bYձ:ժpJTnk*nNuuK)#'79 0^9Pǘ%f =#`nPXEQ2+$XaNZo6 l 6ڟW3GR8?A9GG0?8iz3&]$U:+ 2x! ʃ>_ %PҶRZ49GC'#EH~ѥ">Nt aa#P@Kz{)XO yZR1J &eWj U''4vDxjG(K8D7GMfYe lapjs>f .F""WuڑYKneJL fԩ YוS56 s4'*Wq~N`:E- CA}%\nu9 h>ZL &%4qTWTl um7;gqpũ+-t:%ldTK!0)-54hoFAdT{F(b\KG$”d;x% k-P,᝗R[0KcUj6&f-clXX]{j8j@+~ < CsʈO vbEg˽hgQ4I2nc:ZJʎÖ= PlFͬo}}_ZobJ~7nԗt07}rD^IЙ} ^%[/襪Ÿq;vW3fv|qFUU.At\ '̕8\O7$򉞒S.NfsL{-{KC6U<ċy^w| I'Sms[M3HH SpH =mah`].P{~B//аɌ4(G|6+Ɗy.:8| Rqa2SiS7ޔ!.U~M=NC95Z Lt ?ib efW{gqi?0e_0"[O#Ԯ1.,KgEtncŲ\ N2Ot@wn$L ؉8C],&7_%d'd3نT%qeӜC(~ݚ%PlN~R%`AR(e^N 7a 9QtέU8Zi w- l@+=X,]ip}HN%i" ,"Vn@g 6 .,@BQcjK0 Mkfznmq-ZE ٌb?y44i*2{n;s.3P)| 9sP6~:>4jKd5N+b.]f݅GHUFM{Ȁ@Cy %(o؟ p%kCCp7X*;)Z!F2j}*-h)*~/ aj1#߃6:+){ JFͣgM!+E.ʴj٦4eÝXv;nBZcYm{ Gpш7Ke=}t?ybnٴ h2ds:, ِ{ \SٍF43CM(϶O՗fͫh;G\S]"nXLzh m÷K a>&y!WT .y]Ң60٤=D8\ @vl7K}<$W8bgZ ? qSGi|Ns Yy)Dq21$;IRZK >OT1Hr"hh Խ9qjo18U;gB߈ I+JRZAS k8e@Z]!a<4=D 8:0Az6,v o4uPf+/LMeo#I8Lxx\TOG"W;(_Qzp.?U#@)A b5 ֪c W 1L ?W ~ N'Q>b~sU73MNNue(BE]Bs׹RNX/HĮJ ^ QԎugFv~F^:n +X&faB D+T0}?20׾/|tfKZ,FnKh$dے":~|d?S1D>X ȑhMe&G?,EC~Zh U]5&MJĥh ;> ܿtK4P2v2D+9:tEzOYѶ͓ŏ硴|/,]-Tho|!`r7>8Ekecye%LbyhxtQ+ƖWqOz`khieđ(39o!NT[.u?#50EK֋ g7 tsh _z8`j:l Y=dDX$Mdr{J{"n,o&`N("E*Pɽ}vCiUp+7‘R=7M!OŊaHLQ vWd\> -}z>8ȷtNW:'?ތCVNNbwƼ6 Od9;pفA7 |_ZD L z9H˕lEbtp['iNG`Vn]gx)7 YcO/hb^;+6[u\jçwi@Kfޯe|242>mGmW3̋S#vLRcœV@<xjf=3Jf }V&8wrf̏HF0#:KD+Gw{cJTCT?fO^g"oT&_SD/n2 [;Cb5-W|[ $I}qP]hDcej񣬷6 8 qL?p-um {οҥ.ddKtSQ-#H (UiF2}t(>{PeBC@R8~1?/m4ļY:&;mh{Kҿ'*Y*VH=h /iАqm1OIAjW@io0dl!^ @PXQCyT)^R&!Hp:IN—*op1C,:)ڧD&&%N2-p RaH?Z|6O5|xK6#^ 3X!P/|^bKpwdO88M@ܔSZcZX@Ҥ_[Z&9 F$eh+a)lX"ozKS)O8FKVrX& z$}〦-nZRTtz_[X#}⡉h7Ef8};ir5s"@>OJx9PVYs fp气`&[wD4RAǬʣ a&Pxaf=Pqgo+A /  gIc$@N ;^*xD*Y5Ws4}8EH &= PXe6 =P(G˙4SS`* F)*dzsJ=x`2:,_H:`nb)ET-Ucg{oSl8M|5KAU+hysh0G!mLx~ dT!BfpƼ4B_I-%]X%즓f=gd"9TiÚTאItd9 Ɍ;ÇQDTؗ}{:IsG% Iݲ8(*9Af83RMXiەe~ x- nfLT4F<8 & RGm񨛽~MʖIAO|)S.s.h[I:Ǡ݈lzFB77hqM Gb'yA{8-; (@QI`A+-GuX-'#QqyPd!OĨSxF' ]+f{I?G,s+~84';.iB ZQCܽo"F.'|諙q?@sЫ+ӪPmuDHZ`ƀy mM F`3ƹA9!|nR:&KY8ud3P`{ 5dyhRm 3)AWI"~x֚꜍%.92$Vj܎%&^czk>"_.GQn`7/;v'imi.={6+Mڥ{(\-ccł񌉲Ĺh_"?*Yl ɛ h#Ր{$9򵑼 Iq]#ppIבּCBQ ȕ;4AeO]ج@!:09]ccL*0X:.w?>7U|{3bL=PСz=\odm)_B,Ne:.)7X1 RB-4} ӀgYCVv pA]@{3 |~W? TZ?q 02%>GQ/[l ƂtΈhLT@s%~LN38$љ> wДzFf1ӖyNr8l%|W T0u|O[r 㨖3oUʋg8a=qUj(ڧVX7wg1g`mX+ ;J(gᎏKeL⫐`=JK⏄N2ɴcuuDS @1frN Lèt$qZ,Cll-5wY'Jn"؛'^8:h m-u1#_sxЩAWXi˿N (Q5- &%!:Iݻ]%|L&5TdbU#B/zPmd2@o'|~d 3M5΂eTkM@\:.ΒDl upkH{(VP;O|RY-_%%;L &ZTE? "uOZ:l+dpǴu}OdU :Iհ2u؜0^AQ٤넢~^02FR ۶l?[q\*10imy6__57HڝF*ńhe\5ty5 SxTڡ{t9i{\:2]Oӕ |@X [ PI܆>N+ȳBaWTQֳ A1Pʽ; E9fµ.;dHUO.]Mg_u%!ٓ85c/4u>7f/e2*pXĉGMQC }p|+|/J'7;Q7fHHr/ `D:]W4r`q5FO)u7x'-Hr)<XP8׷N)Ӄ߸*L}yLZKvzE/qU8-vτU!|S;??[YxϾ:W hWQM23y;jk ̐P,P+Q/ii(|`^<]YCyBʶP81G R@UdIa"@8|@ ԌXD-][I>E`Wn&=_JF=Cċ2OJ!Yi]) Yk ;|fSxH#hs|K1E,^^Nk/{zq,. Ejj6繰p11dbWw)eP hΊpKHSr6MN01B{! e6DPNhTSƋ DZT3Mw4"- 2FK.[UB:yBw TC? `!@H&8@jnP[>;,`#ͦi#~pUT`8m<1pa 6GEF!FDy:h021F0DG ~bܜ Cf}m s,PB_kKB"},ϔ(g^I)V9*#W)/>OM7q6>0Yq tS ('YRɻ"f/[wOĈY? yH[ڳ)$>җG2RP-kHWFKJLhg-zZ:űY]7!CCdIͿEUVҧ< )Q2Xzw nIyJ2pԊۃSAJWBrs#Y>x ݰ/Wu V/o(37!hJ> ]bc/)'U&A u1^H/芊_ W뿓%FGǞьEˋ7_/uXyu3bd^Y3 UqOe <NM܅l!ʥɼT8T._Q$2rsUt"NCA5qOm8Sw1s$+=Į#'9(+z?Xluu\2}vW|GKZ觀ZOz(H o悔DasHTb kXJovl0FoLd▌l*e['kBGlGJ3 I>$P6_AdDśk$Y鯶4~IIw/%V0W7Փ>Md[Ykr .#y$n6{(Zs9929 5C5F01w C*I)My.PP/ J柬2M{o AMN0ބ_Þ-5MTCM%)GDcz'"&1K5áSJT<2(5y5Ӣ0h+-Sَ@D&@,*;I l\)t70/֛#WdDFHKX:s(Ќ}ꔚ`f 8Htl@md4,<*^ۨǬLP"f]cE>GrM36TJ)1Wy?W aC yRmf^:eȅp>rcAo,A cIFfrs7,Xw)jo a7w`>7K߹ /75ZY[٘mV|$J~ioJ*(z[R{ R;?CJ8~صu@<[|z@5q+B}yӯ1[ȳݬMKaڃ p~o`gXvG R+*"M'Prt>$E$ ?Τ7\ `Fj'z.Cu'".Oek冰Lķ@[kyHoAUznSsA@{T+m ZhYwf n@#Dۑ5vѹg<`LbD&?nKϵt$I%Gm^.X%@kEe'%O )|jX3`Aa$3N$ßooM摪2 $# VymnQHSqׇ`a;8*oor0{xcqiX{X?uLyhIVze0|MF'|$T'Jv"G0n7<#TU.0 ѫ_}f sA/Y͆M3}@E4{"|B nV j})\S I"會@ )ˡC*Ov&h \U@&6g6npF-iuƱLg% Qmɞv: ?qA6Du'i/p/{(/ P,@jqJnмȳqEɡǨ$'C_brrBDHE.IC6OuY3ȻYSQrU-{,;:'W}?m?̣ntT@SneOϻ ܱhojEq}q'V.XyRH6Ex?gG|&j/ē n`XgTK Z㽩S+5 Pv'R31.t3ۗy?o@ϳ^敀ՁdujM)i%R6FyeL,fPjQJNv= 5{jsA;Yt31M$glFgHCZa¨yuY2=fA1[A cXǯQԬ,&@$LGEF؊!:]'iҲ&n U̦ &fڶ"MeEi"u:O\PxzmRR菔59jm5q)UYaȤN5&$y.܍IL!hHgg cWvi"P@x#Q=v#5tD),'B_Źfcɤa 9 ,9``~\T۸t[ޞR!xgdͼr)}$bD#sJ#GntQMk:"Fl :zY9Iwۨ.& ]w#4?ۊ0Tw93D=\= ,r]1h pYTNRVnDL$d< l\%=pUز5G Iי0-$rÊC]?*x [Hc=#L0M^Oj]߃0Ag-֪W i[d &ick3FI{1]HQzŒs͚ |AoAbL#$3;!RxRZ] W-EY)"p2G4e$GPy"dT'?Z@[X I̗ zcEpHd(YBl:F]1bZ:0nv߫wb Qa?4$?9Q?C w-825>0OcjQW6H-\eQӯ pKY@F%3 :p'DZvt YC2`ǁV_RIQ(VsI,bs`z{(y($yէUSŅb[IΥes䆅SЕ%'^unXS)Qݚ枲2plN -vЛkz(e8%9x&0qڐU3{/׿(Ņ+[oY;j9hHIu@)v0V"1v\g9)e?ySy,D"'&+p} N6r( ~"iT(#YCjS[mVUkк\*㿄QnyZ/0&,s[QMH25C8l8>aqs7/ IO\KO95NFXsOKڲm)ѣ؝%~s$:ܪLZ)⋌w?H#(谫 K76G?b3XL䊃rM¾˸OՌ6Z7pzMbMX%R~]7!@V>#n~ Z]5gj2vъ0<(_8šz}&Wf@~FF\tnNᙻdq31D&ﴴªE/j0ZB(fZ:Hl_ C'u =jȵƋ(K U!vc*.7XL-Z˰`Ƭ8LKZ98Ȋ"}ޯq 蔔K%w~/ܲißX1 `!t4Öc;yNBx?'ZQ&W > m(ID^\) U`z7 $ixjEv\J)lWF\2gNj? QvmЌGD;&ӗ7y jB$ɤ7pq" AUγܡW$lCGdI!h&|˒j[Sh;sZ1[zY*_ee~inĜ#fiND!yʓ'<~0fl;r @hja" csd9۳'`< Vj3v9#SDz Z?CΔ6רy9EI^'ιYywwp2(pɯ#&_ 'oEn/IàjXp"P `vf'scPk2ʰA }PH洞0Ѿ?Sc)yN2fs0i/T04wÞ*izSP~{n]wL %1;)Fۿ yÇۮ]Âj@^u>A gF'\8>\ݤ=nBv_7kF-J8` k;/FʼkL2ɴ#_Oɽ"fQRVM;g`((66_fF f Vß~VCZ^Qo'Iw!*>,>s{@=4m~za ]s(p sh2 |:_nA lj)[i۝_2+*xR1oϓ?o69qAm@4wƄbZ@v>p{\Α]j-:ؤnwI]|s;OhwpXhWP{7,9ΒQIT,6[`9UѳPlpӺ`N|x8Чr}) cp9O62==We38įyH ם;Hey|*q =U4ih!Hs`߉ݠ򜫢ߚ1Zf2Xn1dPsnFϧpTJ\dyB'20BN]o!_'+G1 z 5Ǹt_T7e/e:1?q r]K ķDBj'J{5ҳ:juP:zһbb.F 7E* W3O4HThZI@E]QxWE߁zd4]Z1DɂIn[bINT&v49Z ƨ}8 ΔlS;g qgPLBwH@ECNZMnW]Ϊ;9 o[LHқ!p=kcZŰ"!̗q.8zAY{ܣɩ$n!ys`R:qG p/y!Y9G4|~ ]`a2{Y"4G:Ge+W#w7̧bz)"nЀ5]`pƭTb_63,w9t)VO aazTR; "S4c69MٵCls kZ_y6Z$#WXDof ~ {Dd1{ێ.(g`2us4DI'4k5X9/c﮸<* +7<*>姍0xc4+ 3cJcתSi*b>`s]>H7yqZ[$J #8Gߘ|ף,]2߀mm<|{3&Ȥ'VT}J"ѬS#b~ lq%d1dc2yɔ}2nsdųTf1Mku|UY2% ])Jy_*q3oy98+W0ewhLZ}"!n'F(rLnϏ"Of,2;լG&TzϗMq"ctl7@cUVw_R E(nJ1Ab}@5CA1zH+"zB67w#3+i[wjC6;wlŠ݅13'8i8Z+|TM ~h>1s3(6Qk|,В}^͚o&͕E] `iY>-30DnC ;d+G%-b(d2N2L*flK{Ҋ*z ̑)>Ұae!zs_C}/yH?We+JwdkGm]Mr-+XXbh8isrpA=4(Lc纜zG\ WIBidE5t}*BwnHt"0bJrΩ0~fu7=3%\/<}~5U\Kd9Ͽe~:j覼#[PZ ?I`~\><^cieԪ;?3@FI4PS@X >? 6ݦ0 tE_Bˠ^GVּh֡\Y_&9P1h9@Oc_yLz4'ʱ F%2(`hY!RVr5Mת0sHS[}J-["/ְ2eCS/cQ\YU7ޮHfF)kK+F:?K:@7M.U|=K]3VFLv -ըŕ?f۩# W 8O_%P@q&Cfs}҄ J&= ns ʄzGgQ VX7g,ە@c?9$&d]@(PzW_/&R1zєkCuIPUy2[Ӥ9`l;t_~2W秵 M "$oPD~c/X/]vtxIHH TI挩ml*%@+2$HxI/ifq,fmtש$m#4)Q>y:}YC)4Cm-;]{aT[SqW+B&{Hjry&LXz/ʩ,iC:< ܤM"ڄ 0y`T e2pha?KӰ]Ѻk`.߳xtO2H\`NaGccl1I~:/ <ĖK{X;f90 :(wr9ST[+`#Gz#[+t?WuBr$=k z\BOǽ=F;"CƇHJ.)E)tѢn˯?=}iOԎTW42b5+zר=3`) ͙ԕ߬{zPrF8xx0Yc: L%1dv:N2 EmS;59K;:6fbSE^ȓ yzo!>O8]UAV\ok[׀=j"]WhӬ1[ZS%+TJ@Y52llID1#AcH*Ab瀈ɭwUu&۝ZtU|Mrpwv:p7 +1a4KkTQy5 "FaG(z*ft%bF8ޔ {]Z'{o$Ens<2k[Y?vmȜa/trz, ] ˥4dL\teO_irRqÔd|h!HAWȧPPwd,y(,ƌ:md&Zı=jkbCAʮ5_wX(ZIw헿\ucEtJ[RC˘P%+!!'he鳒kȋTN6̘ Y^YC4>Ga 8A і # .F(֣,WF=O~1raA3!lE.̕Ei\5GWXwVj҆38k47Q)3ρ!׶U{48դF ,߰BF/yl/ o B, uO=L5YC%Xe٠n$(82GG6n}Jx~oPZ>3y_9 =igw3)6+}CEO4;4fmNjn-[, aZckX R4Ȱ]o@' b-̽#'}sau^;,عWh-^U@F}N1% &QH5Vp6P7a-=d yv[aoj5xkR„&) gdyrWȱRX=m)5:ݗ\hWX!;{=e4&/HLx"5#UZnAfsWGP.{J&q}L+ݮb?J:Ē1]ZT;4eS>m.d9\0YYKd[BKÏw;FC965t/BSz_prc|-kڃdD0{b5y:ߏ/zxB1EVטu~QQoπàACe 2(,;Ķ!wUA~wZh ('?:\#փe2 a{;GEh<˰Ě6-#5a1Os/(j*NWMxlxaV#| f WI5~r-"V>QyZQ:_{ Vp*=Δ0`)>lo3lӋ7]߼ep?*76ӯC =6pY ;)M ge7 mzXL(e\S/:~3+N1 <{MJvj |慓XO9nP!)Jص4e|Y bq{`@v|ŀZjՀ0k`8=Q02񛭯- 7wpzDtkwpHVAfK!RK譚@,i #&8(UH)%mˉvF$t?eZTmtZ*7[sL2bpCV T'ƴ1mr$C} tiW:#bXQTY۱u1 &:U[#gRzlR@b8_T .lS?rC[ h.yrvVš(+{ّ4wjRcVa{)O܂c^|Kbh;(BiV}xxD5DH=&UGZ׃GƢL k+BDE6\bw>NuO'P;ҙ'JRa{I=y3n3a_Y%"#?fU,7t0^ġe~N*ReA -ݳ7 `g;GF[pj6J{ʍ53Y` Jdu󤨆l->)ǥSkc4a1#mRj'uMômON$ Phm %LJD7w"ۼtssʟЖ 3 a[nˮ@y /LJ{XC v)ě|DP^3&eqnzPL_8>(BꅝДwں 5ymh>ڋkE7F;Cbv5 oXq^6>: 9F/YO,\\HQqECJw&?"(Т]C$(zɐ8rAS\"VE1MPح6ɶeqrj }Vӫ~a_Wm34F:^Meup)Xzn P]L0( =& h,.Os.ڦl%.a|:9R)/qŢ:#n"@#x"+Mvǒ૷@u(]߷Gƽ4lq?r0N0Mn@y{}ׁ6#M4q H?S1A\#r7TqAKd?vRd>tMdKҡ ~Ҕk"薤%Kq*TaP^'cTiE4aNڀQ)p ۝uh@p|.ëR&n:VwyU]^V-)Ks^~4[[Խ|(ugWk𓜋:YپrWijI K:&'F@I|e/@oq}2US2" uv낄P:\K2-0j߹='>Յd A=˄BNS$6u| Od7>ŒƸ 0s)n#ȶURk;u9_!"Ƨ\T"_ Un޼YAg2s4pw3#G 34_[Ԍ(X^MBDѴ zƜ> 5wt5ד}~SR!Jb3Ϻ^$;ZU/?e%1INI=$kt`>効b YvW&* `wkimYfl{}.UORI 0rgT"«:/7LªHb3Ō="9iod@Çȁh\lr?$ z6]I-y4 ΢|z~_'<z" n1Uob.8N.=SA;9⬳n'Ym5aκ J 9 NH&Y=۾,QĿ{Z sL"DJU wѶaX]0v.AaoT 9<}<"7cQA(x6bTan(~3_wjb7^>߫ b&pUX"3ScJCR$VI{J(El=4r)[~F|k>.+^)-[( vAÔA3ۜՀ6?0E?jSIXCYC[:sR8p2̇Po+y6#P-`w֝8?Oq@wO ,9/̓OQ޻Ns$"> 0^"-wʌ*OZc5xQp9jk]߉d3Xq}%'CF@l77m`c(>gMl"bɻҵzky@:[LI̮;)nkH>YgE\AFP,~Vl9/@ފEWzT.O1!uST޻zWdHй %O\z&.hI.S*o"hJ0^^g`% %c;s1MkK}݀/З 8)<9F+t~Js 6 xmZ|杖$ {9# XD|ɬD."]Z(:'c7a:R'vb&K:ܧA s% yki^k+J礷6}Px(OX$&h%iAۙZMq :p1.h2ߤ_0_k9niv`V_D<2o~xϵ; NB)W0\#eolFIЕf͍j'ډ`^MXyͷAő񽥄aBgw3ZP2x /7~"pJreu+# *+zJBR㉅ g؇?]ZަbW:y5М0Q-Q誢.s=CM2VeBќȼ7o>mI'l^R\u@m :*F?!#Bf. DWM6ֿ fc r1h 2{&?c߻]7(3s7(^* /HѼ#v1bY'Hm?8_X !}tî"6SLr6CG^KMr6&Nb%nk,ZKhP==y3`\b5J j?X5lb 9u<] N慩X†1yiVCAGm$ql5o7cR0]_ԓKw>/OWJijy*˳ŝ@of5]C*qhԅɳ\Yo2Ĉ4NOVdy.`Y RHdsr@:2P$ {$}h2"";v KE|]ᅲY[8E ӟ?&RэԌ}`E-]nH8}.:V@NCBoݢ=OƸn G:eSAI"'=xT+g>yD^1wP33{}f8gH_w敞Bts+`zL"xb]L_FL| i+KUi3>sb074˕(E?O~3!H,,s5TRB-}oYYɂ{֑<Ч'>_$eDDc-#BLͽV8ih`_Lk* /]AE2CIrױpNP3֪7n56ܥtR jmkzx4etH[Sg<ŚjX'qBvHF 6yRC'0-ѺIgѻYq_pMIRqZ}WP3ط#h]%8qcTR)\yFS<bxjaZg:!:Py4 $]ڽ?@|,,V|*,z/Ӹ41Q&44 KCͣ]A`o#cq1܈bۻFw?/}Nz9-_wԧىTRHQ7Frǐ= 8Xkb3]] gOMjo6z a p+Zfﱥor7Gx{I}#H,v~>^U1BwepN&oGÎz'Or pd 8:N@ߔr3TI5Jv{vz 쁿al(D]Gv'寫#k1u#TE_;W 啦@FOY5jsSYH6ZLceHٞ I"CgSh|AEBۿuKz#S_iaw)Ǹ;/9( D3Lu@"X`S.cY 2!FJQ܆jTeR#u0C XG=I"pa-J/85bL\E w~Wvz1y315P]kv WI2jC751a13ӣ2CgNy:ê\Hy/d{UO]1gdڼ1_ԞjqHozq^@|MGKl_h6._6y#%48x,'ՎF&l|1]zSah  qp|ը{kϬ/}C>KYdV(M믙/S02Xg}y>bƓk~y%aTM7Tki, N`g#$IvICD*>D}Z>wϴ8["9Py>2,vgOMiG1=N7Wp3X,CKM^1?M (t/*rHh39;:pm *G[6d`9$C%*wa+×~kcV٭T[z٘+0Pɇ"_ͅ\rٷ~ַM!'62N;"\`?uwgx W&a&މi: DRrɱ5Uəwgu):v TْQylx)hع_"(Ea) }N{|xZRkn@Q(@?,7OwPP&a]scv7Ҕ$\{_4 %Zn"UL}}vs^""o.IEthXǕ& }5h mh];zoRy^S֢fDHDᐁN*FhF=1k ֘"vkO ݧI<.Rt:WeG&*Wx~d2wX$VTҌGSQpҥِwBy-}:OY b*ءja߮^,UrѵFN2JI1ֈbYk'M)pږyYXޣjm>R ~Wʖe{P g6KTcBBH~i'zܵɶfNG]{tDL8口”2tn!a4Ҫ1H_gL Π'!B-,pԫ V>G&R2ّfDZ%؀ VMU>V%-fxPb=׻4T$WMjTiSq럾dw#AԥܙfhKe ׊kNOF ]B+Vc3\4&;s*f0 C+oA Dp~oHd4vm3(ތ:92e S 릜`e[p;Ka|L 8Bgr}BGZ`fdޗcKq3[V#O K*H|g0qRs1}l=Ju//`NfAT wMc[{|IyWܽB%k ,Fy$xsvcyy1mLJF`j|stFRC bৄWuX;RU>=/Zz''aJޒOD+xjRΏUJ/%Wj#|TfK.,X!B6Q$C}H2 >F'Uϳ *H"  L@3_{F7T7KL;Z~bp!&>9C,%ٔe?aW[Xr Z`~GX8"B*^v9^lYZwgݺu^I+~K]~,#9(ἊY Y! [,RADnօ.oc7SV- D-J#+rpeRt%NzԣK}^2 K~xu2I_D' 3_M~v)v'HA/֎C;_% 3hĚzgpG P[JVKΑQ1Ա́KOSq B/3j˳Xh6?\@1Zu!CvTKiV7"nvU Ck`rWC6of.Sm-_p_N+],X ]TCM:. Tq Ϟ4 l{@1Jl(tAv'q PPևѥqE |JZN377r[jP$k^  ,]+`\-]^0 MP>an&yEr8uVU/R ;|Z C8:5U7aC2ߒw9X؏ڷ!#hݹv(+əV uc;di5w"xF** BjgJʃhvZvI\ɆNRB'd4LZkάȊMtpG >ғ%SUbex559!;9nsqE>#USo픳WWH|uH8O*"Jk}E;?<\B4rjkIH .%Kg:sbVDA~^,wD~0.Hl" lz6:XHS99Dy2TRGA\AXEb`TAz4?5z;&^GRY1:쉴"?\P |ql1bҖqo|):o oz3baBL|,,pINsRf`7D%?(u;W++ 2k[5:v2UUP|[sKnd:{1cS?jf/!읛)9)9?q߸>**ʬE";lana]u qN x//\Љ|tdOXǻ-!0uO\ X|í+سh˴C썼,|c̎w왨"4/J\Ч )RPC֟QLxG9({ hɾF1;Zz2}ւҔ{Zut Ҙr.]Ya-C 8UWg :BA|" 3xǛRڼ3}ܼGі)Zi%Z4%Da:C u%_ʭ;CsuyzަAH@iO)wf]>D*VT=xz2AޖIS} X4Ydr A)'ߊ"Wcz#j_9U=$..j/+ZGKT+\p/Z ,,sL62,"YyPF}ai^Ox~0"ԬE6ZWeF ^jvOX whi>,~e0VA*91-75,K-m+rv%DB6ٺjdٮQyHDyڂAzx ̐s|O 3?>}{TUQE [̧Z!:ټms3~8ăT59ܥs>ƜRԳ۫RB:+2/ҰSJ;kuZcDO+3ڨ΋t=h;Qşa;93W̴u>|{M;UΌUCRN:fMO΃/C^_z^sؽQAUw?8Ot lSQ[[ߖCV %ϠK$h4?9ҫyp+m춒jLTC)zr(Ĺ{sC}($cSkl/߃a(K Y'!}x^ю_̲6 ~7=+Txz?-7FR!i+N{ R~~晑\txc~)'Cד)`|8i 0g= +Fo%h# с (ހ/+-nK"MG&Sl=ޘQ88B1ҫ}%hL^{VƕBDD_w!pŹQy '+lP\ IP"l9=-RX` RehT3OYj Gк& Y%-ޛG+-G- ;_;aǀ;f4;{)S&"Qb7OD4iiIZ8sH(#by[l1c`蛽z{ߗ Lnlm8/6&kM!T L,Ȝ/&@Jp֭9xm8pkW:mv&ﴓ0 /xD':(rKck,sPuB~x!.C:@ rI}tQPl ]2j4LԘ10HH2;R ON]=Ӷ%eu}6(h6W1|VlNg#);ߏ-:QxYB#i#ؿʎ lx|6_bJp_.d/9P~+EnMG :TmVj\"8Du*ZhDG$c=}%̰^qRgazh=pۘ^4kmܚC&8ڟv"Cs5tQz a6 VƤGh S?]jf B," 1FM$.|UDCQLF >w:/j%G[*0*t Rf c,F8%KԿ$a-hHAIc?6 .L =)ۍS!X9~ rTPo&[D<ȬF"2eETR_~. aw~{ŧLb#Cs&c5Y F_׼ 3O'`h7/1EgC 9IAp5Jy>LQ8KC1lQN>+[5b4>gFe^ɖ3&, a e{RZ/nr-l*Žzhoe#-@q# 5$fD \] y z9da9fIe+Մd[P0K牟+h \}?\zAa) ƛG߈nfo.1Wׇ_,&.g^$< oFoky>oF5lX  EW%STL'~?Lu0DUrzOX!&_-vDeEOn Nw]qU+/qv ;!}Xۄ̺T{xpfpt`zvH~k@a~tnЧ mkQ, %wN(Uu\<\\pf,4y7V~:'?K77[_eCbab(2x *F/-VԫA-8*Z 6;5k͊Q5ux+;.d@!b5%G>m2(R2/ 7 wVP<^>B MDU{hWP3 g.3p@ ئUr=A1-=8.{bQzaR-LOZ#@ݤR" $_3%{ xa0=$D)D#ol"L̜sW.##(S `)t$Rs1;:$l{o$6lbRF̗sF;G^p]fV=T]`gÚ P0ƌgS6%5XKe~'hבeӆSK/&E0{r0;1H#S'tgItPk1غ$[]9 Vuњ#TyWdtt- PAR| *3i>3QX҉Hv:U{ B Dhw> .@VɛX>R{ciI7]Q*rz֩j?LE`ŭ^oFȭ8%>,EIH= ?"0u ;eh>'Dyb9#=g+qM}!ɀqV|+gOޱ`.9KMMz׸(ʅw,/pwۑ<|N\'r{@5dft~ri>(zK&𰒺e֦2N0K0~DH4p-q{ c]cQZFjqUf1K ,wbeNj/5y>z)zgX hVRhv|M~5  C eRzm?YQO\"C)g9`M4R?$ JlV? f=}oSZ j &o=? A0?_vD>k [i5SG.p]NBC*׻=PUtOeDE78*N²arEPMei y\g+C>[B,ݑ2Q L1[UCfRm&U@ kd e&0J[`aAft5a2lXPf%O3ơHqSIǂo$~ڸ\3^k/=ݴqh 30JGKA7JD  xía y#v10-{0 lY1l9%eQ @(^!=;@M~jۚ_o6}ķE6ٽ̞V7*cq$GDBK/'΀8iG?ۏc6D/!4}}'wt J%J'V9ȴ-!AJouJtagW0Q2'O qڭl@%D^8`4Cٮ8F;xvJ;?@T i 6e (B55ykYsPe0Qk}ѣͼ$'nhƑر3 H2X%~ѕMaix ?sꭙ[5'^J>lzEK;yqB& nnkN(aABhP 4R2ұҤJd/w6ˀzYhEYC_508昼GE`3ʼn>02E}\y,_~[_i4 3_ {s-rFRkZʲ[t% \%&LwE5 qFV c i‘WǟԔ"Ey"VOG3τ,A>"_JǦFOU qU0Q@spiev~VS<(;V5V]& $ ޶yt В_wzUnsdc:9lh]#8ZBcXL3t]\}$N&{#Z,$rz̫.۹󹃚ql)'q\5ZVD%cvrox3^?](>Ws5۰ Ukx [;_M/o϶'#&80i| MԵBx2$9"[TB q2~l_# Zh3U(Ohb1;F JY P&Py?bxQ]eڊ8r8Pc0 ,*oNson%: %Ƣ:B*?rUB*V Q4 >O\f0!sf:;|ꄄҹ+2u̐+18- -gբ :]|𝁈7ʋHdi9N,W†A=”u6̷is5. ׏JHX\7Z,9aƋĥyc,*(3qz~e5}Њ<wγ+]O#F6TW0; wTy魯k߾37K /h"RDĂkN,NDā9}?Hx|;="ꐘ\E91ǐQa\ٵ.6 M̓h6DE#2xLidI`2O8UWB j|t 8 'QkOr}u .ۛcMG#+K C4#@bZsT"1Y 5LU.@:o3rZ&T,ԺXKcSG3慊KT1.UoQ|ElgnJ|VcH[1`/Ww} ;!m!I%n!(@^m竨I3ԑZI`Ll;Bb[uH^>EY8S[lh(lٴpnSF=Es ;wꥅuRMXtA#֢VFb~Ej?Po eF8X nvVAӌ槎Ph|Y?_ _ro6WSvd|bU"M%X{Gj8Ss2tEcd4i]yCO  }Muޯ ɨSvN$3AB4 gfW/\biR8/`&`CkPVdx]NV&LS >IJ YN^-T/=&&`bPTa'٘H l9U%%: i"}ޯprzI=Y wI0z{rZ&IVe' 6{/['&/A:r{zb#gUIK̚^Hݞ܂vv`j|b(#HjUH>6F YoBL*9C v_\tiw*ht$PyB#&}-Q1IZFRm[疿>>4[C_4Mn6+m=j)UL(x g1/DJE0.pCnzt * o+ ⥣*"'!\E:n*!=b&ec+缜!qr;\ǐ%h-uPJL:d\i R,yT(9Ƕr~im>Os֓_&ZepO@ p>[ҹdHM!A&g!Q;{9ٖ b|cIIFmSSĝ";CCƷuhh`< 7fOb"p(s|wnF(`3iw~? ﻷgT  -oNS ΄w?Ę 70 N[yWZܖ3HzVR ϒV _ͪ2l~g򋍏ȓZq^hJx}@C؄a@ҿVMQIO.!UļDK̎4Q7 \)nߡV`2>|Ӧ6X,a m׏NޏƋġ1fF{iT'5>ܜͩDIJ4$aCO6IZ: ecx:cPAK'JdNVkmސe{…z qyKkyg,!ۭX޲,? r DxTLْ:["wtO 4j6E]SMp[2貱xË4T"I+'b@ω~aZ0嬢Yĉpލ-IƐœ yΡ;~|օfGH}+* & *P ^jSm;"E[eDu亶r/rבsP9 *Ь{B06\I Nw`_PH3b߯(/CB V·"]8qGd7%,bSRп4p>纊)SZ#w?9܇nD(Y,=~ʩ>CB`&?>DT;3LKLH)qQZ9SOG Wsӵ"FYcU{H U#7Uh}Bx9hҬ'e~+oMJLSRù^Pf 05ws,z.|dTEH_'kh4 |ٛ F"I֓?j0Wmj{^hO90qIb֞/is/۫ckj!>vSXM$Pn p͌A/ W{qnVtqP:N~;?rH+}tП \|)5`r78Hd9ߕ ?SZ=t`s{cݡ*`L7;<4`@lz϶Pg Y! G,Tna\{|ђFž #kSuVs烦!oЪ)^e׵ޅpU55fjSqp{yƯBw^0>mACc JK얹va_wv2$>8oP6uPgZ~c%X(5G^R!{d@+iCψ"hXo7L%d.q.~e&myB5X9b8JN'#-Ro Ѭ0KBbQ)aÎؕmHJܣ@9N]U / Q |"sk{9%n٠%X>'?]&TbwA*1#)GQ<"9~p6$WwDT{)L,,s̒k@oh"-xq.q-(}ZV3tjв7@ea+y6|)ѻ&PHsLitSs=,n6)z @{>ظ ھH,_'䵎HwGetV KBMLv.`I0¤9٠%f 0@vxWaU[wc'FioxYiQݨG{$ ~eCʫlh3 w9<C?}R;v]JHoٓ=k eesTv }\EL9@REGFPI 0]}?o|iaL`^^Oٓ(0FUeF[+xphP'\10l fb/m NF\H& hOK& =i#D :q8&DXΧTr(gM[p6G:N Fcb EC(EM*ҽZ B "&r4- ~;!/eEz-G,DNWȭq z[+ABh6Cu3[3*H/(6 \zP4Lb& '''+0(MV.HwD>I^@l>+t"+?fH&A)O8LOAleWɠMJ׋ шHz5m }YC ͨ쳤Y@Ԍ6/H!% 'ulK~E)mlz7qEG#p.L,'cx @-BiuIJWٳ.tx\*: تQL+%\bΓ:m ͈7X:Bxq2t =oE/aBJQsKeS/h pswٙ?[;$CƟ+T%$tNH{&%"~F/hs7SLU[נ(\[tk,>+4 (3 i5Iu8w샍(e V:;< .Q=O?4' S Fp^:eo >[x,e:>w# s+fnr 4 -<;CY^zp#]l!8ɥ썝*Έxub{geJiC\@/^Vw}C w7}HYpG#%,Ñ6;.=IdMk5y#kvtS8k˴ebt[);Y ]E,ӵ3AmvohAĸ|]DHթ_h7 8gm!c@R!b^N5yE})P%^wkv+aak.܌8@"`cȽ &(Z)04רeJlfEޤh.>DŽ[О汤0f!}ad𢑼Q+)jۻ?yȯވR8UѰ\Ї~kI8+^_1Iv-utȜ rW!{ /ўJxQ. !15g~*+H?L 2#= f#zW= \䙟u;y)z *=$ T{LƄm}jhl/`$K[K{KD|B #nM0`>0kEUh"g8}Xzq! ZyC&UadsA#h6B[f=`lOoΔw(gppk9`uP1ϟlD'ȨٺMhP1C-NvX.d~͖9K2 Y:᠏ʜD0y(SgVIqt1Vo}#-`~嫇so!u#jaE㡜{7YT7_w%+}1Lhȯ} x_]Đ Y3ix(f3wgIr9YX97 >@9dJ9ЪbuQV_@%fg/Ƈp KdM, e;2~cLv_+ߑi4A7km_bf5$\#. 8χ|?b ˤ[(3qITpâ!%:M ٖ)N}$ƓxOË bJ'3G;:1{iڗ\;<{2M]Js_Tx ̌y$B"Zm mh&3QoG7  u&y Ӑ5 pL4QDkO.Ju_YAh`v!T"x,P쒐Nc%t-]j} -v-Mչͫ4w~6pt ٕHe=T9u+Eo 2;` ͊ LtӮz |8=l=תquj {JX_ cckFv$[/IOpR0 "pcV_Z*rO!B=Ϊ~Зщ*vtR;b9k*B>ڱtAe?8R{qf /t-Je\T(CmnhG@LQQD-by/0jG{ENV>,ˑMGz$.'7$xzx2< KusO!:u lL :jh1m^0@"C8uڤ^V!Og\L 77s(DSX7U_-H݁ch4ť&>o(fP :K{~U0hnxtRys^Jni}c2`ë~Ă_V#C7E"HjǬAn$:R\qXY} D}%X&By> 泈eLJ"{юj:#Y!D]w!|w|_Zx2L=#V}-Lng]BPsQB!-WA'-U7.F) 7C浕z}QL1_[(1[m*v)?;ڶ`Q<_!xɩjֺh[ } ¨Y0ۧ*@)|.4G\nǑNKL /ːrM06jcκC/.[%qeW? j{ğPzt> YT٤;7s"4?19-.]{N3H(3m(dAK{ϼq_guxM TQT; f.G62ХΥ+[$B+):M8-ƖKF>YCt>>=^#WTٮ)v@DQ'|mKN=x.s I3V y6=HUbxsH̝ $݅dzMv?={X/d?ᾢNld*m>ˮ($#+Dboo.D9I2w7V.!RJ#:xR+*8bR76!2.k&U$zw- χlhg`:'*6⩜ LS.r:k [ Ւ[g_ٺ-6;vbqFYMR#g?#w1&<࣊Q!d9heu+7d,Rn.N'M7_~A#-ǩzƻÏirmǂgB+͍,GP{* bla źY,Ǽ"c.ry  3s]iBm l=;-27LIYTxߋ[^ފKm&WV.u y3$8&רmde`4㔻/x-u|GjmyeMC01'E_#U:c`?rSY,t~Л:]x~b (Au6X0`dx R8Kuʭ^iE' ?'uSm}3g/ao S*'V)ϮE '/2iJ{H9L۽ .qrb]9py0gŸaM?E qTTzT%wI .u0x ɉ -]UY8BnKrh%&V@Sè_ɽY2lx1 Hh!j;b#xwL-?C_ϚdKї.ڨPI_B+a2I- Aptw+H!y* 8B%4l͞Ӕ,g>FxN h?u[8C0ׂ =sح inEJXދ9$#[g/h4sÆ~0JM[`b΢rRvuaHc4%2q$o$q#.WުoXDy #(>ְHB,n ݨV<3>@ZZGREwA>ҾͧPLOq)"6/L%_3w4Yl' ޳5[oT: -;%kP*Zx ho_3Q4J&܇ @ lRb2|ӚDlX]–h_ƒ^&~1m< ]E"'ZT9DN+RŬӞLE^H3t& 3O l6bpi>٪|w./Rwll_Tp u_qn#xv)dkQGsz>}@ F-+83 qNi RM5y=h}=rS[M<;E1 uΒ\$)gB9x8I= =|uο9Z2P r}Bj'ӉShrA_6D]*Ҍ`p0bC48j Ť@zAhC5=^<ۼ]r-%aP6GDef fýB"ƒɳ ][fY}^S/2ii׿SI|O*/|4%/bGlG |`CN9|> <6$Yp,DFoϭ#W.&&pJsiLRb>/0 ض՚9ay9̭r+(+:=KMǻoMxX9Qc?q"txKD1'CDAе+WzaL\}O'ko ' rYu&˘^ir._ ڞ)ƍ}r9ˍׂQH f9[2]JtHչq34;貏N\VgksIe.}:˨0ڭET?jH~2bG.6[C%Ӂy9x PO$hz.EV"4q;L6.="BU<k:~Д\uQp"8rc}{ƎnW-@a^ϳvGA1|]x >?IDohDFWI عK~ HYU6-vi>Xi3w@&گȱȹ ֹc $`VE;GC螕AnCjG1:7QciN&FNR\ds%NXX8ʽđXx83~]ˢF6W`z 7o |DC-ZOa j#ttܕ:NYSnSS|IkS淬 -b(TJP)T6ЅϡeBrA`c7G57]֔րu$XiRx:")gTh6=""$o0C da;CQdEq,(77E^/Y+=ơ?ܑ6֩I\.F7aqdP,d_}#ϡ ;z \Vuբ?^0ވOvϝ r.FW*!7WЌȂ7r_}wM%r=њ;-v&Z:l:X<ǀ&Q}+xqdEX_+dVoᦳX_KJ`UӞXHЕ 5eHQB,^%&'QLs=qt^NKOp~Lc"MSk_][MSi{tgt{ ˏ\zbZzo+L@mQ$s$su!HN_U&$`#fkC:H߅4;(`@kϮ>mY=s6oⅡ yѸ,l̠1i"9]wД$y put0t,hŇa|+Z!ggoJsr0?d!F}x+MJÈZX&]p$^}⑪IZ?M >!̪s&0]kZf\W&UM9A,z<'3T0˿NzH#|jxλūy'ÁYɸ'^%N)vh.0ܫx56p7 #z;qpe'I菊[S /]dX·s;6TM# `d 2_lB=2#VzXMp$"AXt;p qu?65t1A4,#2;n I✬^Чe"PU⁽|x|2FD | DhLؗ+Fm_]Al"X&荂}03,;d,2)AEc$.I`MWx_ThIU %Z^{K+J!;cb].>0,G8h V>O:֫>Q'ŹA!&/ioxc"vp~᾵s`+$v|^˞[U50hqVܖR {__"꥛|? BjM{#Pd~ō锦})G9οVe=hme w6vQVL}x)P2SU¼yrwp 9k B˻&U#yH]4DZrl }Irqc%b&֧yz M8 [ :jy9 e W'N( onkf&Fޤ^ &N,K\AgƜA̔4?!}re ʸm~qy,ߎݮ GkE2C^^TS|~W^h c$.iZnpxdqvtSNfslAo+fOiLR(>lQsC[-8_5k(Q'rs$߅u0?h1{:C#eq:FQeWcy|u h!Yg@׆;Ѝ%PdQJGb!+sx #뇖^0HţvK{a-1/Aio9CAZLh.h HԸ! _rIA%'8QX]Ͷw\5[>wz%uqcX[K834PNp4w i E7-jgA0Lk갠UZ`j<¡?=>8~tfTw(%Y5C op-0/]ثIDjI%=}b+h6KO[~/d>a]  vsoj<,EL*j9 /+w7egew+faO/cģOv,7mߠ5:Bm#ڛ?9F 51\hexNNNӉT0ɇ~&v$E%N2g..NRBn9 9u@y6먅L^~ U?!r:RE QWȁAzQLaDެ0¤EGJt.>\I9ʴ?8gBDeZ?5t(2A5TI _uƫK# z '_jr=OW 7q|o!\Z07:lGG(ƴ3dKH.(CE"䔩$ۧa6Aq8%Z8[p" ^L;6h,~i[ Y.tˎ0|p3'cTkP&q^7}E{ւ+J›:B)Υn`5DFwɈ%-e]a]>0=?Ӟ\յF:A4^ !MRslVܔXā;(w^j5ӭ&;D"Sj0Wq5{E1-3ƅzIj?\dˏ{㝾Cl#+:ˏj"7e_u0Θg0ْw.pQf_'6i#!ՔѾGZPY[qsnBm7fyMyX]MClCQ1|% E(C \ƮFƜIv|'-6`Uq{+!!g"_[_pNJ]TA%JT˻]y-lʋP/l9TmNq7d1/\&Jyn(hKyƃI팒*9KˁZ_>;~x?U| 7-RVVC4^^V͛7M[\prN.'wٺ v͂Ac. ?F"C[2ʰ;Q't[+bUwV{e:;ϟ[wb HDԙ`.LyɫmXOG ? ,Wm̈́l}GB3_5q Rv>D+ ʞ-!v\P)*gnlmz|3Ջr͊GZ"kF ZPt*{Y/%otc&%Mo%דtJ+ap[@ȍD{k]^krߙc^*5U~y!CG6ωRMkPr3ſGG!\ @D3[[iD'榷Sܣku)?T ݴY){.cxMnJ@7Eβ彪u=(xYuw]s߫2ȥƥlY-/Kg9<Ƨz óؕ [z]M W=t`}G2qXI'Ԯ;RpGGQ\e+R Nv|ˏᣕxN2]j_9N,vRՎՓz!;1?lߨ%hk~mNQQ3|d@lVZ r=kqf!Nnf%{u kȝfB Gh u9h |R}T]2bԸ tjɄCJ.O/\ru\D2օxDWFvuCBx]GOh\oN |>'J]#`n S`^|ۮiB9yW.No6_EA #4ގJ?t8C33FRxx<-pR1jeo^ 3E+zY']$U0e;yxl½w_=EtϯCNJlyt0d»dq?Y`e޺vJqt;Ux >S42$Q-6=c#*VKsՐe4:'̿q-BsKpbrjZ>\Ћ3*BP͑|TR @{4E"0pŜid[C")?6|!z)./f|IN`ylB<}ܝN\i?4d "2}͚uЀ tqIЙ#iȿX %zw Oj `F|#^Eb[j|"\Y8s>} ͢:xñH*w9wڧ{BO͌"/kD[!#jzW pWR[͠(\[{T1o=߫;N 2&i`#u@kZa$CJL*OMo*1[HГPUv:TjSNZ5 2`}qrĽJJ&)Q׎HJٖ{2my%إA蚴Euqv0}9`0F`dۛke6yqCHQTgh&Yx5m jz/0\6!#[$w"YyӨj.0=iKMCb~1Y~Y*D[a ebsKv:MDS{ApQzG;%ASR"E*I/o*RL,,xVX4DBBE =/缔~H~HfrAN~'D 'Rߪ[AJNHX̱{)~Boj#R43:]t>oxhXz~wWn潹R~Hw oz=A9K[#+},l#ܽ6Sp*l 2-SPAq^da{4_x<,Nq>m(٫i6qTMY#:LG_"dHv,8 i6R^#x2M^P7Wl|T_硕m2x:>ޏ;@R"`56rrh1 bXj F +s˾Gѳ=w=DK\6$1=d}itި;tȤJoÈ=vm^}δ467g57|'S"R<]WQ1$Ʈ6g:a?CwN=> 4{?]t6CHB]AmˊZcrO2YβGrbZ7-fr ׌ާ Gq4,m~3n=SS3~[^oR?a2Iq_FH8|v.!A#+Y#/r(A][h0¸d!s^0Y3a挓\y2X`5w"hl{xBe8SI1Dj#XU%% S`SڣKGIo^I=~w#<7VndEO-X)w[xNOtǗő߻vS=-LGbc/-{COؓ!uL062"Fp~p.:P,EؕhDE Iyu L"l^zf ^OvjQ7_BAF16%4psXf]K@ه}፳dԠ[6垭iqdp*VG竭X~^ݓ,MBz vg]mߐ¯ hkx<8؅3"c\ mT Y'҆2,)?Hf˂<oh?,p!PV85G"84 Eq!>~2:ܚѾiEՉ:`xt(;/z?t73lԣ0ҭ6Fc9>prlUq,sЁR`^j@t)aV Htv!匾33;ecθJÈ_d= })AkcBgOI_lrc~u0MM'J2ȼr( 52v| j40ʑEBxm(F{|Y1@rl6sw,([]+ e痏#K2reJ3:;5鏅bewdH\g|pnre%Gt4j1ZF:GH=yecvbe4je]6BXRɨ~ Elj.G*+.-Ud#2_0KyIoH`~pڗia)5d4|'}㪰^{ e]jSti!FB振$s's%{[۹QJV^{)c8.ypRQ3[EE:7oԖqxp`/C dN&qR4%DN .+u7:3 qath sAܠǙw6ەԲ;M#Ū` " T׊؏{|@lzZ,a O^` rF;[cSʞxP俬k2d( uLLAN}Tߒ4ɞћoHG愂J6̲dz _arZb>Cs.opENFBYv)3[B9iUS8zŰ(! M3ǝ/GlaӜ`X/ڋ>H +Lb|z!R i<`I޿ossr |G*Q'Fӳ&!|\6 McN]>m2,W1ގLoH TތMݾ XT$5Xl _B(ך͛X$M|4+;fAfwgaYs=Et~ZšBAJCEJ2Z/o%K!ԨX~7c<+uSi$M qH~pGELy鰛U~>S_ i w[;lt.7VP^C2藛8wiqT7`wU" ҄EjOɑ Mdzhv ߌMǟw֭g1 ej}Y,,iࡧ#k(uJ6P^( @02k`<բ\p5t:`'[Gjvgqӡ]gޢM 2gBy0 )SP Ar$$>C.qƛ (edUD_G&\^kk wLW8\.e /]ҌO%~g-;bq:45MQ`+ 4n"{*O:.%ϟ*@@ymM*fM!?L`lȘ > )nnAZ$iGYZ!)HF'nu8 %"D>QOZPxeb!&{Ʋq-$O 5OZ*-YLWZpl(Rr/ 4cl ۂ9.BxDJ6A$]>!%G_، bd4U&Fʦ\K;G>GnJa?;n8iNqfrIfCMuk3z_mmk?W|`RCwHd53Br*>(E>o{tT,&9_:d|T~ψ&һRKwl,~8\366JӇ۱Kn=/UA1.?LUI1P%C &C@>Rr$g욳 fmYN0_X<ֆ" !tgc¸PQ3Kd@{2O1Ҧ6)Aq4ɦdPϱ@jތ>`$MJu_9L8"eQmQ`d%;3q/ͣH Agc&T9KdߞM_UyǥA ˚~ٸPaŧu*[e2AnE2E41{lpt d6ckO{(hGy[Aimj|<- e VAP.,݅ݓo|.T[My94Y:\D%۷8CuIp` M { r;+yjX&\+|+/,Fg_Wo= p<͕4SI[8U=JIӹcV(> pʵ9&4RxD$OBq-!^ɑR/Pnt2BQN̍ɣh f<;);j"@0յN`SkHQ){e c,vTf'K{P2]y6 F80x1,h5#z`Y4A]mWB#z{\L<p "L">IzLǩKrNAƘ𨧤̩E</U]1lgPcn|8Y ճrJW.^Q@"2ȩؾV&@Z ! LDIT?eΔ.. "$g 'PvS] ٦}p'XZX9q#8E2li 2jrޑi]2yMJ Ꮥ*Nn3l&=J]g|0VeK;ғ3dbǻ 3 p[m"lV&e=3E⨲iYW3-UKaѥ A˜j֬3}Qiɋ+٣oB4g'΅~ٛs(;!0FK)-*r܄?)Iy qt cˡ_iƕlX{x;ۚjQ7ljTnCx.z"9W%Jq=+ʉ$7FdR QO#NUASԽ/[+红&H;. cW}=xB 37UǟJy%^:j-,̊.YeDˌ p^Q>7 S)c-Mcc.R[|BBw洩*ua˨zKDd8I9A?7ooAl1n}Ko+SR`K4 )"T*7F+> 4<oR%g4Fo4*a.t?gWy| uaGM#|sFT 䮣/xpXz◔}ǂ7JbV HIZ+v $w00ݻɺADoTM<⯭ */Q4O?0xqU ]mzAsV'.H6@ݫhD]fS nRwUw0L#pv?M3뭌t|^U Ma-O@)Sd֝inM!/%ܪӇ\xRhT3DTp7E"=UxUJN ?cLⲛFL*^/`Vc!yivkqqѸT`5֛^ )NG`kDO›e2]h¹;z05a eCG2~T 352^/a.!;^T:fOK| 7 ?I5x?-w6ZX32ަh?P48AO/V{UrƞA~R.'N%ǛZEI.7v'Vʽ$"^ {*-@L+5~qnڒR.e*LT"{}M&^D)>6~*vG<m8 ֕)gĊx=Of#c&+xt>:?j~ws{-N>1mNVSxvZI~-u=tnYĥVOrJ3Rvۙ}*䨱/odɘ0xE|ܑW`^7yI>m^ X zM/M`5Rl-Qm#TަWǘR?`X:U<,9i37/pJ7e x/}\sJǸxhZ#SD_Y8VsP=<_&B!@[C)EnY^&M;Aon g#Un!kr G= 7Æm 7A&,u ":gyuca7U F{RkK|2'ψIȭN/U /1"Z65/\a+,MulQbC{B>vMQNt p=chLNr㧳KB[M,+Xqvf\vr"WB xW{5aBQa+ʪz'0! \O'". 48ӧ7oл.Nv8!n֋#BpF^I8%961F!ަ_59?ylg&H)v1,E:>U$<,3B#Eà%/yfo_yE+;e~H/ $h rk=&Å=j{ T/kZy7J=;}x80VMS~)`ǵ~68̵K?ʺO{]^,܂eBlsQI8ܻ1& ,fI?s8]rn$ubӤzXy7{V?q~qXmGg4IKQ)zZݦi/6rӜzBTf|L/FaT?U%Q.Bsے{`6*<_Q$~ӷ''(rB`7CImq/8rzǍ4vIXp[}CWSWGFяrLCCxŀ?e|Nho4!`ŊO~^gczbGUPYGd ^99hs?m>"c)FJ" uTyyC1_a Dq0pT6)!tfx me_qCޓ~Bx{+ؽ%z?]aW6dCGY+a'UIyt^Sy#YQBWE =K/!{BJ?D Ik]Ro\0_Ie/f#We P } 6la $TXjlee C0 i,ЪmOrIKj>Y2(&6߱)DXiT o ׄc"X 0WPk1R Umuu."(ˈ+j<@2Ǿ- B^vs:DA80G kZɜP&@pA@Fq 3h/tt*Ya[=+;,LqjD {$9Id\b92s$(K1Tpu%x0A' ?uϔq]hmrق*Vw[f,ЯLF7q3Gx< 7cpIȗ8R5ߏYb%} %$_'nl9vWpr)IIK\ {MB2l'i`׊ An1W5:gYo_L5vsBy 0ZD.pův-~bdNY8Ee?4u%`3٩҆KWl #ӷPTA:]v`*H²jz*HN6G%8pUF*kZ i<-BEwۭebb}]:>-he&CQQ(Bنj:NW-v` ~H­V-AKre:{Vh v\U ΡEILj5 ս/_?n:Ve8g ^#VȂ۞l8$&/]ml۵8&̃yrM,!2BUo~2QKRQgl$ e O8SlsZtuj7x i/ݸ\:̂j=w, h㙀|zH[?[48. |_@7v1f;83M &B1iwwx, 6¾ &![z$!~t3_e>NnPL۶؞r%K~8.2j y/7['ٞHgkEq=a0M-b`;H8d At1AU1,v+9Év=lp ^ xɑpF4<CnXPgTuY)2)[:v`_hV+N8ӑ2 LiY1oY|Ut=4܌_}ؒ'^vi8?Iu,,)K/݆c!ۉv/;pY!?F.[A DA֮zE W{ 7cW EX0cc#@Ї !1-ؚ/v!ZNY ȼf]pSc ꬫ/~4AA/ {%!N6yNɝR,5>lQnCEŷe|3/%B r[':i %TK-<. ,!o΂ǂQ+I*6 {H(UG'wդJ<a]%8+''_B 4r=Ks/*j.H(pZX.knasH0&3:"FҕcLAʬt+HG :˸+EQ']6cC 8?Y/*eft?u {mؾ@KRhvFh4}kZ-DI8ruZA&RTj2hfXJ2X'_WE]\5LAyx iW)J+@񴽊ishONL3zF26dkkr\ޟr!wW>!; V8@}`5 E3)H5L*褑~K]dXQS3GxDxp2rv5G}ksv7_XMjDC{!tg6hr)tG`1%fNK+D1e!zNKuDqt ynKp0Cuȟ`ym\  `Uȶ_0E\\#o;'4"q+:d tLP$4|+axIQ6̤Z`i'/**βzh3M)(ATyV1zJ|\RL]dfz4 } oҙftUݠ8ÄkyRB4 ȎMiNQI{ߞ#Ck)6zGoc6<շ͋M:(_\{%o3J?qXO}peb}Uko'~ =$+s~ڰn ڗF5xRp~E9'ѴfL"!d% E{Sc'pN\&_(B6%)ēI‰bVDh=/@ 87񁴰`_^Te~[{Yg00Sʶ`YBq!㧗γ}$VH!Si]bsw>!ğӠ$,DXӞ.@0fi\}\ג'NqGB~F[xVd稂 5@!$! #ʭn*y't^8٤^˕HbMm rA5Qz 99v;w/b[ g"GG <'c$ZD15Eё@8kHˤE=U6eQS@9_7=2 VXDJRAoh2]oXʧ$3:ghyvէ!߲Ć^!G˭{Rl> ߞ(lyzƩaZ'ߩtaW (e#_ Ӎ(fGUP=~*}yTVBb~Ǜ̂ͽ^W9CH_~ 0VbAk \rcKr(IgÂʞVxZLؙD6}%\AgiNͿN}"옩\bIͅe5!3"{pmm31QKZ#gN3C@3PAIiWimyެO9b{/>`΀mݐmɌ ' D€%HA?mtz[$9S2T[_!HaJq8w3-ڢ)#Lme18j3)hPhP~3> ޅ&gMȥa+~,.ERcS9dLc*%jYj]2~с6GU45@ŠQKf% ^F/ ᯸)mi#'%>yz ֬7v&!4[wAɝǎ| +qOA+vH~(-.`:xF\W qCTvԄ0D ʆ%D&2/d$ v '\nv= cCu2v-|LZذ~g,Y9UH%o ],o*64Ujך WpD mh`sPyf8&{}Ii*@a $9b:P/[!/^- 5XYr2i:LO\?iG=<Ťd7Z< ld e2F?GS$k38#yH$Q-uOATf ~&% Uڑ몤/\1`t֭LEA|H!4̓ɥ߀x|:T 5"vEBϾgF"Ȅ5_{AS2Vú' BT:qTj$z1g9) *fOdD.ك/qfL#11Q~~>rʅ3;Ý*y`Μ*?@倈oE=NDEW 4cRmPvO+2.=2cKbHMŇߏ5 p۰(X~3|8B9g:7Kk[=aU׾{EWhN R>)'*?6*ֵ:=o'յeSx@o8p3]6,#8f/Ϝ#=^*A&b0>FCq hҷ=aq Zcd7v~cOK_i Z2}h{ :FM| ®bqs$*`9J<xA☖L[!"ĭmIe_[|GGe\N N4sE( #I3nrӪ]"ʈ[vq<' 7ܴdP^ _`y5 o}k zFˉ3wͤ>~%fκ?K`&ŷxtW3H*psa7a)B0rƞQPNJnuvfioO$g[BlSgu#'igr ˉOr6HX襤`X`3S󤅑,#wvҴȬTU,*UzAuFsO:{53 (Ftj _"z-y˘DZDڊ{Ĵc[LOP~1Qw^:7^j_,#6 P%#JЫ3V۠EFXxϧ|e˄#*FH)aܹ*D<{%$VUg,F-CVDksCFN2K ^:݀UF߱8S=Es"s3 n FE{S@G.~,;Y4/MYx\hy 59o~/ڜl I&Aa9>;ef  JCFL{A% B*C9qz5n jf{XC-z8:3dUTәې81Z1bp9N.w i +6ĴD9\  -Lbvh4hGoֺQr1p5הvDHSڵ̉[U6n3*M;z\HP+ JVVtQ[":M@_g{%gY&  ؿqJ!>aD0Wx6j>wzFV{Zj;4>BfrOmIG:] 5GKrL(omk3w~* "W.ZNuԖ$.5g.O|E}l_R2NJ,Ŗgӛn b$hȅd XQ9{EzP5,ҧ\j= h[xU`~QMMw0煋hRk]2J EZ({ o#k(#ʄ`XxssF N%P] ƞ08@3  I/ H?OSMCbgo,0ycNJGevl (߯7m+zV 7#ka$ewyX;ߘK R~fQ*xm7\/eh=oqU(*f в|J\"ؙkhW>?K"p{>,i]A ^;|?8}gw(l1G#Իȿ|ù"6j .44r8&&?lC|u.2ߏ *G&M=pOƻ@tWGrL"X ; ԝTs`rr.V~#O-P{Zf4Eyg`.̹.%jB뵯ɜ۪ZO4G1ϔj e֌?4rdM ݅E'DwМŸn:!#M"@G7e=~od c%% Rd{#A:߰y){*N?cGZl5.v7k D>-d_vNqƳ-4\8>9ٛAC~@ހmw"EQgHRsDƯg/V:Qn5!cZX{@w٨M[ig7S/d[8[F/.q[籨o ?vvs ʸIn *Uo_h(fT+_8̸ KX,<Dܴ7#h6)ϕ{1lqBv53L8*:3&:IS$fSmAlT p`rzW<% 7>=[CrJ1aj'j|:NUkA WDk#XKo$oaѸUIXi$-Y1'Gɒir[a`k_QWBtopI.&+#n}Sެ'# 6498SRc"lJ-rЬt}o#HS ;mĮ6]ݢfKZ"#~)RmJR)(@G9_{4 ,쫲iߕHC/mB &y81 tia+ +@+'d4;sVX=e.c"dhY'=D;:$f:1K2w$i?P,ZZ>qP-F++>Ϩy̔Ʀ7oMn1~2Po9 E36=0A,{3Ybl2n]㥹`(j09Ӹe|-Ӳ)u6d TG[ZQ#wKSn~}M0&k.r#@+ 9-/XSnV> <=kj_SoZKZ}qxT*W80,Wic8aңw6΅F0X*1E[dۘkGR60aG0{Īg:`}Z@nÓ7 -]agm Io§dfZ_T3-yZ|߀q>oGW S+RKIUVzcX%|ʘzP}4<Ew03@'Y׋־ޖ6ë[VRuܴ4îH*`gcr$V^|Y+j ŇzTT L"R2j8Z'nusValLǜ5=*UG~gJpI>v^ΤlcUCXxK0H+Z6&.>8"(EґWJEס] h;^ΐ Ѱ%H⪣Sؤ_#a-օ&p/˺=xK> PiQy(1aMT8L1rC 2?oD!L-3k,rUd=evJ2IY%_&9*Zm<Ԏ$!+#ɻR8y!X@@?hCsoe r$g}+kY\Hሼn$Z(WF XnJ/;vu^E&.goCf Cȡ4/iyχnVT ó^KfkӑpӝjūId;=ARC6oF&8zCBGj_w`""cZF`Txňؗ.hSکvkE.Ov?[Ȑ*萑.O˓Cϻi%CZ:] R!ZwjʵuB ?4vl THyrg= ^{Id\+|.dVkȌ&(7D@S^X_, G#UvWwR[zԪ'$+زG=2o⻕ETg^ ;K*6̫v"H'ҹ"hIsPě׶z}/^ҳӳ[m€\`ώC9"xA<($ V[$Pa_hߵlo} |~kZ!$P5W^)rw<f4صI@<ԊnH twNUV=fg\Ca"(lQnMI8aZVEbs~)/}QEB3g5J&YPh* j= $]iٵFk%/>'B9iC#ć0tYuNiB@Do@!:r7^5h1 K [dj>jEv@&b8,3ƈǩV<)LdDԥ;aKqHE"̂=q6.  %"d>RSqu's*OuW֬4 H n>.aziU^phL{-V;F)=e/Yj6 8{Hֳ}*n@,Kyj<:O :#0Ѡ ];ג ՇjEc|\66ꎨfê,v OK}LFj3Rn6] kR+ L3A72N6|Ξ6:8~HS[v]32~n^צnjKeڬ5qޯGx#8:;E%DzA g@mv̲ɂ,{t~ߴY>ֹ"(lrx%mVȩS0]m{0(``оN8i[iʏLۻ?82+]5c1'!55rb]kD'~'+ڶז˰֘JSYY6󗲗@K|5.Ȳ^ NoQPhdޜ#evFߣbw֯i\S8^*zb]&_qExe O$.h0~x7UtK7];jDZ39_`_k/d)pɑ9S F j-#DrYI<߰mpC o(jd$ѣ* vK㬋UQ+pPHшbS!Je]Cӈ85u4N6m?T@?'T' 2ӣ2,P0{6%A?pX~ˎoa.HaEbb=L[ᰆ0~(Ũ >cϴ]F|[W+!w {yժ"$Xdb%Ӭua$/޿gw7Iή22Ŝ1<`ʠ@ Ե 7woAe驠>.5]AB%]\1>! m$fdEU Bh ?6K?!j:IaZbq.hxuq/~ %ˬBZM i-l3|v_ 띈n,+a2/Sۮ _yO~ 9+E& t7ڽ%#;$ $=E9jd(=9A~Oe%ݕ?UcBD"A!0Y-%"бzv v1 -RN e2 vf)#4zvfG-8]-3ɗ b+WhzUљiy !1R>EN(n iqTɅ&}@t2 T+nf Lb lܳzt W0uh<#ICJ*z1j|$YUG(@w*r5T8)b< ؗ< Y/ x`#Fy[OvK}0 |8YjwGy;I_+um߮*Q2[?h iY>Hyݼ&u . Lz\Д ' W5ºCĨb0޸{<ܧ%-I! a :<+Ӑ'yPE}(3VȮBMʮ&D|0_LGse@ DKFj3yzg6"ΎCN-9?%mq?80!jKdL51 v wct]}<4ﷆS: _Rn2޿NةswT[8Q^^Q,ak 0Ȓ킕y H2 W#Ek8?2.pX1{<.Y 9}xFQ5:՛cZtd.]W.(lØ/ĂVh8'~8=@o2szF#nCF:^ y xЩ٢_IghݨD PCLkB}3~jYz.t q-U1Sxgw^>a""RMd;:тgS*BxW7Cmf;b6w%aubz\g76`2eES#e$i-Eq.èbsԒ-15ׯKjF(i`?)d?SPa?VxXRM!A̍|j'}Fȳy?q'*FEK1"pnoEؐQ˄1@G%2sčߟUxm Kglc ,_Yjqx9!vicr""85u\?W\9뵻 2+u0->Ι*b5ChV-L?lcбK˷ A ZQT]=Ph}[ԤCK}*9$^ؽ3KNf/HЀGNx>X?381|K,X=?RjE Oa_goMַv/Ιm plBy?WHZi bs<’T5a > jYz32OcbvC>,_[f\ggjNpw8V{@ƱËٽ1y\`H.t kxE:6;]{^k]SC=2)ۺM= <} 5D%MV}-4}1]E &ڌҺ1i}B̙4pkfx29Joqٱzq?zCzVnr|6-?s=+yT,O8:}adC]|QS{ f|qR.}Tn!q'þQk((yUWP'`pǜ oX/6cwm*Nc=KAe_#\?g>QfMX8t堉7XB)!-7͈q~AXQo284!Ͱu-JԫDDf(v/@T~t1ӀCjCS0OnYN6I@PD5xW:jEnBƫ|EV!=zt@(⻙WQjpaV7NX|Ѵ&8 VG~¾[qs _DB\`SYY!Xx @!gWp&c"9 so w^ uq gzν_G8='o,A/@þ>NYݧHIu;xEb➃qđ?dYOAVfeKMqY!qǫt.$?8'! ddhAœWCIp9۶dtMu<}Dٽ'VD'ʩuoH4_.jHM~;<O"`M;GF U'V&_'K0{lނ̱ C5!&'guJ~)7k1:#dqD%OW =}o5qs LnxC);S@ {֮NsJ0>ZM'kCr9ۂ/(zIVQZ Dp"$xTg_$ ~]~*Lev3z|uh*CqY07:u%eQA)/Pae3QҲ~LiNcȰ8P.@LqSX5Y-dN4n 5Tm_pU%&\ៜ>؇o_%}g1T%DaVU;vdk6iWUvEJ8V_ e 5NO%0dDzVwf n=`RG%c|щto*N 8 n?ϥ,-:g wpm܍ [3GҽK>*ܠ$"00Fzc-ZV {q0͒S>{@XImSe?%ᶚG|Iѵ6!WTǶKj{CH)RY=J@'/XfxXB9k '3R4! ~Aܲk*1`ICnᕱ6=Sn@׬."@dTDV!7KX[_S/k6u_]J7@w.|`֌[Ԣ,!圡4 d1w_4Ĩ f$#DN *bQF,UbBwl?h4G^ህP_Jt$%G>K$6:nf]@t\j@44 mz1~0J&FS[cϳ 0 #dK nP.sÈD'fM1&k@qxHs3c&Mݢs}:Wr\d=f/&$HY ( S޵(zc%`MqBt0SњXGN&,q;?xQKb7\-q̞Pc SGV=--T4WkΝϳ$eP9^gySȚ;s:*h&K~Cdc>@j8/zˋ )aM:X=rN\H!`˷NҖ@5 $#ظX|qbD@|Ov,RRAv>R*P4ׇ9ɿ#抟VH|oB2=߉p /_!'.:P!v̭b@©l,0b#h Md ׸:7lLL/G,*թ| )c^dǰ!ϽzUG煑d!ĉPۥtid65:@JŤqZ()Q٘B3kaEkOcAE(Uc<3/'q\{h{|k!)o8cy.TQ~501EJS]lL J%Blo#4:mm֕budO⼥zDfC%励"xח]˜;T'8saJrq #(%yIF:?!X?"x;>L:<6M"ws_/D݆H1t2(gХ1fq׈8,~u<T<>MǵhdN1s2_N᳥mr؛P>R=%iy97惒1 (]A +| W굡II-f7yԘܰx!8E7!_gc?!(G$A=ۊ]enWr#":{m\TVhL?/Z v@ucdiy:@91ٯaN)ntyD֠ïO]=0{TЈ mJ~;/8avC91_qRv2l@!L ,6L 9o鑣 3 (Nz!A~6 @`F:U;zq@9}u-%z]>GOҟϽ24l&ߖW0D7@yt>npz]ۼt!?G'` ,֔(&^Y^'E ݰCB qW!)wiiO\TG@!ILM9;@~}GPwŦ `o*E/gM) b4ÕDRErvxAS.ߓ3ƛ@ﯼWC%UδǽenMl-R] ѠOpv2 2+e( ^7T 0ˁN3^ _OCz} p©㽌xfw2$Pc釞 @80nϵ=T>%yH4lK5:g {#0oiQ*"w>e,o6ybvIYwz͟+v50*Hl Tь|__ T:bq8>\⯲znn-T#b@56u&Z!L~71: N\ ]bCxh|'R;1>;3!jJv.3\Pos |pc EVqچ/p| .hwvrWq{p/nܤvqh7\mCe-bk!C*#d>' ]*nD#5gO5թ#&~LQ:rWqLA\܅ȴ䡏nhS٠|p{R&ϯ6xl6R&C&C[ +L Cq*vRH>sW|T_q*4 r&Gỳ<9;' ưt%h1pՀMw}\QPf=T/z h fqۭ͐ e $PW" jcGޅ%m17me{ d3۷jK$_) +5.Nc n]>=wYʰuyL Q*&kD] FG&Ia-ڤ].gO"oQk-@(18LRW'9@}eIJ+٤_mrJPzŁծJYdPJBBN.R]#*BHIJČPLVw&6^!tHr.C;@NJ[V E#9@`j;\~ 1nU>.2xqG>rZ 7YH#l4&B,t\@Iބ3I8$qTsh=p@\ӥas%O6oO vFԨU W"Qa+9+!W,1?`HOgf+N,T #- TVX=`Q 覬F@Qv6t>U4v*'ܗ!.YnіMhׇ.:Ȇ]D ȥUwk(, ^xz($PCǰh* L՘82UȂV@@1. IqIATגyzaD>;SU_;(ޟ*C|lef =&@ջAFM?CBQl&w[CglA @exb;#]3iZ4..OQNJtluIkO 8숰0gr-Jz{o-˙tHK}ڂo}8uziW,A~\"G@CG:`7l`n?g5Jm]a 9j{,8\LWEV9-0:DŽ)`5>yH冐Wx]HV|˦aq2 { b-ȷK@@)f+01Vv[Ple|B 9ZUA.HD(,D/W?ANPlQXNÌ]b0zEwtNSgH,??>pN4y9Px1-UImXF`P V?^. Š*t+DkVjӲ;rrgR{?9*V|vB嶃P9۲9x{GO6a;oa2bh;pEk)Ia2Va0#' s.αwB8O, 5ɱeVƅ5_)ز>  4Gіo@˪LdbuC5A}-X⅄g'|7zC{27 LuD${xD˒iʠĮo;׼C$!r/_st;v446\:umyS:[ x+/Ofxm'oƪ&T* l'Jf^_"2̵2wbP0m(眪`{Jj3l.#@j_:IdbFg|xaFưp!>dht$~9UR=׎RA[jN'Ϝy09.J؇xD\s-62+`T'%ɔD a_& :V`Ѫ\tuV^OxMyl<11w*_}$͜[,T#ք5K1NB.w'B{ѴDp0@ּɑI=gPelTos5u0OQ9pFDO@rrc.*]?`'0fqw4-`DIwA/ۤ,ꅆL}Sm`ޚ-3'DB&; ,y׋DNHr$5Lq'0!}.!"4Ky,!b+ړJI{j`(IŃ < @Az+x88_ ~,m뒜>čr3 'P$t+l[X4Mm%W}.=0mIP:@-궮폠HR ]-cfpMQ$,{ R};JX#?1u2;aUxFU̕z - 䒱{1cÆ8|_#@);H(@_*V& 9jg>aپxNn7ᵜ㡮 ^Q`|n>8_D,շ䘎/^&Pg&ǥ7q{qqУ4&.w1DrbLvJSvG_@eN`ȑW-\AaDy}4մ`轟Jgޓj@n$ǚiʸ7RRHct|HmD "}exrnpȕBrR"N‘Ib?©ıvuI)lX*v]YYY}*7 J*cvpB+3G4%K ĨԀ<>m=ف~C`Lh)$KspsmzFbՁgmml@7ƨN;P9H^.x,֓R5sz((fsLCݚZ!MOl3P:ޭ|F7JHP`Z|1tG~E^)r5'$a9BSo}4GWi9ӬP}͉O!tjN~Lm?U^ r)#;&2T58)0ؾNVhoܞJap[C+Fp_FT*N0G콓Q_ 0H7B):5Z2k|s|^"i.z%/oN1܏:(ȩW=cB Ql=R$ėrivh~~~7kF>lLA^DaP<:kk'O[L0Jm:Ҋ$(UM'` 4n֊^sF2A'LlXV,}-S-:*'QWAķOIި7Mz # s(R.Lj'8fKm3Y=e 3' ~m` ~iU~Tݻ;N@nShy{'yj =qD''V秐N]Ȧv __]L ,ҟvg'vy`j&Njϯ1&.ڧIpM@yg(f .f $2e]과9~$bT% <˹ 'hG8Jsis[D0N 5UӈXu?lZҊm_ ݴgvP Q.Yf6< j'z񝯯35sd\VHGx{H؞9x;J 3HHd7'wqW[']g")?Ķzys,mpW,wʚȧ:Gӯ6HVĿA_1lmTG1Ʃӻ*Gk3iv0}׾i1.H`^Iݔ:{40DQk])~PJk&uY}CSѕS #Vl/T7"yΞcwQUK;1U>jyfM !W7{;eȈ%J*fMXa.hT{Kw}/ޠ(oAk#x(R!Ҡua] ś\aB[>pd"H잩kI S)pϐ&+i6wj2ĄTKvM`ɵNtoXT)|l֫D*IsbRцIH(fU<Mg&&[/-uVBZXz7j+-,!%4+ I k:(VtFΙ8\4ᗯ*7h0b˛SUɩTH~"uY=ٜA^SEvr2p<,\`g{2)?1w3SmN Qƌl?gy3W 2:{}]TNeMj?Ow-`#MrY}X] 4$?CGLW D;w[н 1;9<24e//S]H ܗUs|DpY` jY.'ma f`T jmQwUcIHY 018elFODeg("C7>Ҩ, fP+}2Tz~f,"Xa*ʜm`h7@i:l9ml$ 8~@nDjsq[94rہbWz"讚m/A.en*N!@mgg1+{!}A=3VNu@6HX7FOl 8|>@|^6 *g$`iTW)֓i]c E@_NoR^E>ЃKR- e pPēڎ/1LkȮ$z5}/"pؓ8_6ѻ|N^sE= /П}N2|x)"$_&$aCLpg?esԳ0;2g^sNotߓ<3֍1D?,An|gV38Fpj*l]J YQ+`{=Zɢ+Q<7".h>z"i"9cF?B`rwE-~Fa(ʺ]蜦GK|~:vb-Ⱥ.REtk5OSj )$ϯ[c6iD1K^nsO?eVEC?Z+іN<;rhn$ьOq\qgUTȴDo:hdՁ+m_3{A:HHƻyԩXX٭#Ҹ\(1h#uX,W#K0N돠RYdwsNCdWJ-`bEhqFۜgKuJBkϲz;rja^i{#m5r >ۼ?L0vO^vv%kKq? "柦^6Q)WdZ.cX}/fkt2OH_\A>T( h*Ls .l7Ͱ㦥XХ±!xa0Wqy M0Vq^؄voo.ny)ҵ{%:kҡŨ=Q|z)󛱷q41>mz{3yN[sj5#}s꠲m{ʑKiKBD UK2aCՏDaoppڜՄYݔv먦ta q/Secv=HvhKZyb{ۥ8[NCw3=JR@YX GL_$p؍Cz$Sz㷶/>匈^9`$ J)KSIIWȏ=^^?SNC\}i'ObG\HCel'@9f}GL8Yҗ;C.7!և9u+ӏ̮VE #x)ymv1E ꡭ`c%kV#⳺4і1Q&3,ѣljpJy} سsĕjR§2X!/;*@Z̿;rTKLnNKm7AKX9 V[̾ꦊIgsAUB锅d˚-jRC +b Zl_1HY]SA!GM2T?պqRb:B[-c*װ~~֑*|´-..:?ؚD$sԦ</\&}|!%Nmz1 K쩕soKY reDHזXKbK֦i"vY4՛mբwra Тti b|B|Čmqȳ*/T-Y6sAQt;sh9T{ ǫRIoۊ#^d,Jz8Ç[<7]xo.1*dEgM%ZUv]V Aּnmc?ak7/j5= n#V7:w ~̹3+S:MXbZ*edɷhS*nQ9#Ҏӹ_?; T*W_hGKא_@q|Z8ӫ]Q"g<+ԳT Wg_`XQy؛5+5G:5R1w]]yxJEf2W~W킡&q?B1S;p9?7 x:_8vS#FT_ ؤnx*TXZfHB6j 5 [NH.`kܿH$[|`sab_~-pԕz.|]vx7 /dr# 3Ȓ5p 0`I5OX$Z @P m.ht:_D^j+`nhel|*~p-@-d&t#4Atö/;|'R•q=ru s!cULmit,5&@ʔ< C)i@1o\"sv4&n|33zQQ|W3QZǗ %`葛J +W#5lɎ9oϿOIt9e>(ѫOlP lIkpWMҀR4N:2߭5"Ҁ\mn A yJ , x-c0X.FSXqӃ>:q9bN-9L"x<fգ oZ"Rɠi׊ysBT_iss+ՓGa97 }%'H| nQtf "t=gо`T_^04O1Ƃ = P櫣QgVsU}xMBVte_-9V+Pv A@~/S>P'ҎO9M> +R!]Xh;eBջ&N,W p r\>. <2ۥ}FdQ,p-bj0qH+wEª {kMڜ]اX6$\O7x1/\i2z5ZWe"w`_ՙ7͡흍@Ʌ^t(ŶcPff6<>oW TG}^D`S_Nŵ|~g 6$ LMPvQU b5B^5_%G2818.j{)+ZG::MfH95zx#b@R|PLngۊ|)Ɵ'},/:;j]ld`7E=-!}@ @ލnrO_ dX'~Ƹ?ةдhQl5memR?%XXҢAR02/1vů{u7 m޿ ;TƲ$S$~dݣ9XT&B?YOEZO/ONA{^& 9~x:~ޏtUX'|sv45ahD?rG{[yI[?ugxˎ@ׄ (U+oXcK20R#J:qhc&L oTs6xt r$-&rpu-5|Stfocd^ج^]\r=??usNBN98Ύx plÒA;&5u3ӼK* b+@/U('S ڠW_&ƒ)08œ?kaT&ޡ#GhT3#f[fw]'Ǽ}S(J0 2T>ÚgQVs?5W gݞ$F3j@|epfiEY]s~YGpK<XڼwcR2{Bŏ*ĸq|h'%}ϟ[Xƌ#sq {)2\=\PVD^pk7?uK[FD*T>iJrlYcwT֕jlk~ߖŸ: E`&(o6MŎpH*}n+^f#NW'Ku}͗}fK1B(dx z]L*-Ofj] ozhZ()q(`.&ZuIM>o]l#g+5(e=CɒPh_E{K @.@M|v8&] 7Y*Dw<|v}f)Aeh,/E# T \KV{@Ȗ\9EnźDR\a/,g+;PCmt6~ڠ_`5^R9u4|E] Zb1 "G(Uiq ZBk1ǐŹ v[h}\/ysf=} C糖.1r,o2K1oᬥSӛN#(wRR $:ֵkJsޘ7nXV8IO//ڴ#b찟[UR3370kTaHW '6>TEx̉)0,@=`C8,SU`!A+g0q<, RQӴ+FWv ӊgݞoH.GUjzB[!׸ ~O @X޷8h@2-L*O{[ {Xzh eyS(n5sɬ4 {I !l s׾v]hvVt[:WrF KZ b$ߦjoBlo٦,Hz#EGW*ʥ78 VoTЭTP/ L5E.U՗Is;B a AٚMD<нdO`jTކE#y 0 }Z| 6!]S"`ɡS=*XFTYR%g5P ${0·&lǃ"ksCsvk]5h2e/dg]- 35-.|F…jP6sVSToB E91CH~"h5Dg,<F~kt }֊KOD[$HDT3~-4^[[8Sy'\AmL#eQy6Z] .8[?HʀsAFxAl!^n0ҖnM/0{e=A[V@P'Fëk[#Gej3{SP_R bny'7u\z̊ZgJiWF.r.d80ŚϺ 9\!1BΓ,vWHpm,79zޥ&xzxbnuq40čkt氕;BNLZfsvAEVx,x2v6Ϗ/c$9IF8Hp6i%{¯aZ:PjfpܟEYK kqJčHKxzM]lO"RgMmBH6LwO{zATME$l nMQ~}fq2.C%5PYKT*Itxި:OʉÅ=TzAノ+"!Jdyy%)IQ2b̬i S'?<8PJ'C+o4_""$>qcw_4,ۊ-')Ǜ$ P!X>'3J׹]1Ҙ^?쐙9BlПE1Z,E,q'%~pU1CDc@ǾZDQGҵ?V 1:acdsr;YTP!vڜUȦoݗ0nj:a^{Li!-/I[N "#JE3s!(<װ܈{Pmㄒ '-N+oSӽ 10O&IEOQӇ_P'X M8%/׻;wWDsT߶n/綧AZȃKDTSAAQփ]t,aHKf|Pq ^S(.S/7 6 pRN@oç,zj H䖁#x*)+}nF J.~&U q,qD \:WT?pW#K2M:M閍,n_|N '_X=A &91l9v|WNtI pIp@7_ScRK>&[. U$flX+Gh6/oQÇ䝲x ǟ.Gc9Au:;pt>t$a v㠻]ͪ:ƛ$G,M1mh4Cscjc c]!Kd10ϼ I9i.gVRHC)j知. F+vN$* ^a$-C7)853u)@ߏ"Lv:)Fue!i6[o t%=F]~3YQUA1$׵iN-^fxL]Y6<430#?,ӆiB4Ww!}"dw4ݼXЯELgÉ݌,AMP-0vrba ޫ`A mSpPyO)=BQ7˄eWA|AT;gEJ{?A !#M “\߄ $]tPnI_tVJaU;{3GeWU-&%Qi@6-S=n*q-2pVY/Щ)}%iB[@\kgz~'1.(CK2ǩuRm33Q&g~B>^'P)7pY,TUB(Fl\|Ѩ{1QGyN6tr(QP!J͆-u%"K IKw#.(J.2yRݥ{66l 0#H $Tlg ȀSJ^>sX̴AS&?QfbmWn"_<[唤HR|NŖo`luqM0~Ef@Uy)BXVo; Bb'L!_"a4-1C=&<u5M`,9q5 }cxQJI7R5rWa<p'vz g5?])ip/OiSwRү,!:7uDŽCyqmM#zUfh a4WkCI3|JkRqz5UH3h C0͎*X}sĴSq v%?bj ?| Bp>& Ȏ4H'2m?DD 'BB)G qPܵaNpx;M`v>Jx$+\囯7F'-.~e ?nϺHFl>W4h#lCAtč.h}ON*$LNjN+wfQi5 k\w AKfC&xx R&o5bKvA ob5BE8>w"kj`5yòlR 0T!eRb.S4sC'NwVy..gЭ/ÓIvH?vFEIv_؋! #xZ4h.pJmd4RH2oN6VD E:l'F 4lN_mtxwi?=T"v&[iw Pb\[SYaf1Q/:_i"w3#ӭZ.$,t$>s{{4ⴐ_ ł9;{]A}V_52yR-E"o7~KD{b) _ަ`$#nZ5 nh%8 amo GǽRG ֱ+!~16c^,Q59Lsg0M'IVҚh7 >P8 qzV ]E8arv[sZE|2E_זĴB1Wi?1ӢS|ҝȶ;фjl-IcXw@L@ԑ#=/=3٩|ji\S[ hbH4vs]1 ɳ@DX)Uv#@f*f;_{? &t9x{j8(ο40p1T/i{xxDO]IKY/ƛ97 6JBGuSȰL=.!LS0nЪ"woo$B/b_@ۮӷ5FYTg6tB2o@$n-ݢ k]uX/A81#J`PAFʇVICD "NUA/H;? zw!rAZ0${ՙogeRB_,|W(T=^˥:ʚ50B$Kà|D"y5iNސ_)ɔݱ:5!#I+7 @-dBCC-q44 PD!J|qQ2-NJhτ0nJdˊe7IJx9|Nv舶Y EHMmV2P;uѷ`XV#abèG[dX %X;кF0U_[e7 kzW/L SV U d.UKWGtGMMuepwㅴ;$ާ;q، er=l̜Mi5B30E T*D%NRF2ᤷjQI^?"0<=y8j|hxmg:Z@nZ2 'ևaꚫ#j'Auȸ9C/I%rm3"F{Ü{<#S5/Ԕ GފxŬJcg(Za(,N'SNiY0ԃ>DYД{jޚfsQ745m+ @['{c Hr~Eo%Ʌg=v,ȉbUXGrt!t]5k&grl ,qf Ü\3 >̡}$h;[tt_7ye;)C2d)!*hk|j)xzBmFc@~ZS2[' GB{M20:)xz7#o6y^Tu$!v,.>lS@#[rн2NHgPo80yXWDrUtM`\lel1<菞Rq͠kַv>+X?KT=Z'Ku}g D|H胰/N'LmF%ڌR&2#л7k#X$_9:|m /9(ݾIo9\ ِy):MVAXO)9VQ/Rn1~v =Vl"m-Qj  to= bLH=Q ay=ely'6{g}CKupE5w}F$*MA)5MBZ iye %/t܅7vb(:娲qQH]A|c>. $rb!)`qSuNl"֚;VinK*E5w<ɺE'ر[ * u 򥫡6Vr1s)YL9 ^ JX [{k@ &6Qw.garF|3z]|,@8Qi֒fGuH!Fuhp+xDu@ ,SGWAB\wPu5)IU]{br}π>Չ.FC9L*{,/XgD6Wg:L|ȟԁ(0MB.1|tu-lpC5w$)>]{ BurkXy5^{Srt _UH@!?jUIuqΫ`ןVkd;qF]Ab+va&~* j-< ?bVʟb!% ^c:l^l%X̆ @~I<$%ŻhnGVz X+)iBl5=\ggu>IT4XppݳZR.5̆8 ]ܧiFr"1cq>3[3c#Qi7fϡh1=xјcXS9 5Sa9sC/3my||"*BWoW,4ܟ׷xgA^ sլGaT4,ɜ'Z7&r%[b"ABga+j!Y= 0W+_wL'ld^LJ< ‚N!BHYDӅ_Nljj"3xwu{Hөݔ쌁^ύ9U 0&EJBP͗#G]Ȳ23>@#U(9mEI6D}Y!=S)F9YVT+~AiMV=-Ԓ@U|Ouo\; bB$&B '*Lh%Vs.tZ qۛŏ8 /4k&ђft,(o ; tIﳀbiWv|.}:!g; eA<_ xZ#^HO9&?hN#G@ξV(W&$˅*qա $ݡԁWpa۳/=# ^LbQO2aч 6¸dS b H A}K!?m !~=aO*|DӮ@q᳣m+5dPpZߕD|LuB3zb:~h:+|]oE\_j'65rմN+MpNۍhAmŠ3׍{!lךGM脕ܗӫVPtO8bX7C2"QlL<ՓgcugDDQꥇIj; /E庙7 XށјӁ x9oJ3Q0td.y'љqRcgOuP e Ƀ D[r,?xQC0ҦD xs_qҤh: ' {RL.ľl[G@6auU= Br)Lr mXrqM Q 5Qjdj3˙ VtJU RdjW/=h0pe~+~o - }kqoւo2 2@N0oi,ͯНL0;;[H.'GïrJDIr%7ZѾidpG/,tMv ueT1X)r#ГUhsC-T oLn݅#7Mޞ UryG4C!BMβV+ٕ g;􇐖 U=N"X$S^j+>I~f}TK6xLQC -v-{l0% ^Uzn8,` V]`gN Tw(c Rv@H :="QrI֍ƎT ;gzk<;G)$IlpJfVJl@<&60rn*+B!cO屵?X4.[רga'v)C^:S~ 3cW6S:wPu5 otvj.]?ނk孟'tLA[el-0$j2о{0fAh^bY5a7,fhOzPs8k<*M3NuQy/S-+ӭWbTrz|+ :溲U$`[[#% (Pj7}v[*4:zџOk(ĤScU >P 3"s)+'H)OBC7 8F;Zln*MT-y|2)( "J3@xɏfAҋ)p*;mU5.=D1LRA |J#hq' 2qE:ޑ="@&ؒ]`G)vwQ!ZGdz&/n)/`*[c/QZ*@d"xWq&Y:홸FĩcgW0'>+H,"oZiywbޭ%W rC;?n"D^2ęэg؊g1rsWosgS(DW/ޞJtsq&V`l n^Ǧ^7?XQT\f&+͍}S!@rĉvtV 7D]>WdȀhԖǮ &(fCݩ2KavY%wR>>L$7+~ ZA'=#j G$I[.Vaiy; pPIw @W' b/gM*It`",u$x1E||Z`3f5qʔ9T`*%; a(:^Pu%ܧ_֋D\8svqIuCNUL P v"d < )C|TE@X" 6< 쀙lޥiC 3~LcߢE,Q|>}G'Btfz6f}p|OV 9m ʝ7vޢ @BFicA .d_Қ|UwQ#Pn Ȓ熀 ݇[c@a dޛ&S.1Sԇ+ͼ93IjćS^)NFٹTw]}6$;<,UzLꈭqm4 dt'D64rnkA/ы+յW=Ҭ75u_Ԭ.,1|5̉ĽY;}a5)z{WvĨ!ߧUFHT(^Ts/HDEpA`u,CagJϟ?36x(+R8 ~ $dI&3/̫!Qy2 8SD˿ơ|"mflb!?ތAٍ19H㕢/oԌ4ǖu'PéblDm[#ٞ\. DJʰ#WJk_Yζ.ƁⶉLT>6o|$З2 n`{BBzA%-D3u+X]֋} denُ՜DCQN8(b{/)|YF[o+n;s (Naip!b"I,n2e5m*W(rEzkɘ`~4ƴ<ݵiKY^i, x5!AF솳Id*͛KStyS%{,"~2u6f v)U=nn9Iz07"$kJLǹ. \eAOܭgPt@ Ϊc7H*ݯ(?,S\SqtoͳM{5%׍F൮XiJ7 q/y }1;o72^gtLr'!K[؊H7J}'dG }-$ ӬK#kI_Nb/NKBϿ)E$zh9 kI+|# tjT,a’Jx<*s|0[iq'ϔ |ǹ)Y 'I|5 è> O7tpӯ#GF&Re(,3-M P-a`ϛ-Ӝ=Dfډ"Va"/h:/nZ Cd&LHI" 0XEѺgº)r;(op)lMoU8/߹E% Nc9%O"\nhonWYퟫ$A^JGHi-8"<,_ևc«HGvĚDQh_gcpJ}Vy-S@iJqzԌNN_8 %MRkE 1Q,#F.]In$QtPJ:I]aB9p0ɥЍ9T {?ET,!}|@@sE"cIJp[o8%UY QAtNP"_SMuer~Ik8󦴑^K^Hl?U \i.V<^7FjpbgO IyvC SI:]H:+' BmN{fxEQn\I]?ȩ(=x3X@ L`W,NHX)G!ٖMޏM/@ɸ}'/IcZ]PWd틃B$GaJ=7MB:q7Jy#8091o| }Q籀 4) fY`GNI!ι< a!ևyuMhԴeUWM-$5hx=l'=74\xQLQL @DɮZamsYl{ruF=f{8b ㏺R.XP#ekprIMӋ#Fdx2 .)NuZwt mKy%[o2yiKP֢Y, z]IUu4S)d]W3pɦt /i''_=K0?Օ ƂT+.)XLhlnybey;msÆRڛ^r?pHXݬ/{960߸adsd78Ia|"PtYws9e24X6sl7{B[[iF-n(f(XB6Ɂn.#Jm1q:VjDp)M%E!aO0` ;-ƣ9{}1@Hn-]%hFE CS)4 T2l5E֊M!N!O֏EJ[v@㷉 1P9vE^Odu]))O`P"NO>2kEQe08Z)#THx׭ҘƔBw~#$LkQ)8ΐoW;Ԃd1ש5-pcFa=%pD:Zcg%/t2kClޠA  #WAR,@Rv0{a,zD 3p,ND CL+8& ) WJPL^pG-kO@.N`ܩS8'pƌ VKT@ngx2R2 )<sE- hA[jmǐ'D9\А1H.C RHڑVklZ៚G9µi1P'se;l挋l/s-5C+g9sp+!f͗&іdCvcbpAlrj{wN@n~g`LJ2 4]٦#KnUₓǰC Sksi9x?DYc'"=V@ ɸ{@YXLqL娔[[),/ -Z 6{_GǘԙN&>T:e;#ٽ3&]"%v](-b=s6n/\m.qڈc%㔢x/ \;IS.]1K]`MAɚvF TlQolTBsνU::kj㵮7F]A,6I*zP7ߴ./}ivZX$D2X &N0#*aГNk0 <2$3k];wpQkQaA+O|K^|F۬ |Z'Ȭ+ F6SU;w(Nr3SgZ}$Q y dTg:C$JeD0e^/Bjxfl\Y5FX wf k M%hz/&o @[;&^,v/vE&&mtk#Mc;=eOap3v-ck8Xf4\2;Ž♆``M&RffěUg 8Ġ7ԁKs֔4C3 <@/}Z,Icח+/\c/=1[ֈNt{3@ΰ":PFp%0x?'l*.=abwD5@V`xk CuK /[7M4\civ!VLN A3ncCLTQyq 0LzqgDZQ1ufOKQ_*Ш.)u'lbcN92/Wθ;';ݩLHxbYM\ ޽ |*Gg2a1$oUA`AGH "8cvb^})4â0Mk -!d 5-퓍&&!O_ĜQqPK6*LMmf]xu9j`7W?lF?AR8JPqELT1tU;¶%;P!?>k#4jtuܷA"?,`( [jGRq'l7|mu&(bs>/cN/{o ޼PS"lI ۡ(,{͒tr<* j%қVg<-0=RṳOLq@0rR( B&ꌅ~cyQVHN4>N~QjzLBXP-T E.氜T3|rj$R3𐏢Eyt ''7ԥCGs~RcUG5:}NW&ޙܿFY6q`8"[%FÃUmSy@*n ") Շ,kհui6i ^~XY\M <8\'tTh ۯbb(ُ]9]ϭgA0qûkk :Y|EmRWx$į 6(XG4x6#u&TSEs0|hve5#8b`k?ߟ vYsY~ N'{ ){!9"‚M]rԓKi3ٴsS!떼A;.- i6\j:CyM,©_r5Ս54)/1G _3w;^zî*٘ qf )+x^nT'` P4OqTL7 ^1jSN6A cӎZ 6f^Z$p \6|Y!UY3D`7P&=C_C.XdȚGT]>$RB!6{="i};J,b>~3rnra_p+[ ty!; ޸tg?A{K`F?@RȈCgA!y۽a{˯}faURa-Q͖D{^:R*kN޶MJ@@TKU`3Տ2cA$ʬ~Ǡk*10Y(%7!~(L{~Y]y8 sJI$,LTofR-,0o[t–Imj*űHM[B߇^.pPߠ q4i=JEb>77`-졂|p 2!fN=/JS$dҪ,0k5I.1RmJ4ճ 7yLOrKް]-B;hiB|RFwT)#6cDlj=PTҠڣR-Oq5GUDr~Zl9C8iOkVWg/WcF"w %# Cٙ]X/C)U?m:%W UUG͐y[[t6v A$J=b? I)In%I¨7:`hI:bAyf q-K|Zt#@ݺ3 5]@Tn_vٕ!?@NsM!W)=cf0tAk*:iPIű"}H;I kA|kc# v '6ճ!Sa/Ne #ւ^D.=k=nC^l*k}ح^ cӰ Y0i-?a(?a/-δSD}վEsů$0;%;qE'W c"˯ƞ[enOED i^ ؇Maޡ5,DsnˍɌރjDm2!w2'p{9~ A #Mg7iyd75p(6TBB"9wOIb[ݞ5󭿒3L: ݦ9~r%9`YI{MI[Rr5?l;?t9&zweXnEoFgoȁBG1I|EB4\UhwA׈4G4̞<'pٍ8zK-F6 ${npS &|(Z\CtJD{Rt6ėo0vx~M\EdޓոN֕#O B@vG dI<r TqоĊ )ߏ.8YSt M>20du_PO[zϐŵ,LnW,Q5h|'9H_#5UDKZ!3y7 >p=R984 k\WWh\K}9eā5!HȉsZTYÑH/唆)ۥ0U@𱻌ب=?6k$XN%KbF^VV3W\G{!ԟLM.ULF\Zx(ǯU^g-菱pͼ}SBdʒb5ݘ  _6z d֝?IK\d^n! Ke\o6[a?ɣ;YaBeASU()4 0yVL>FBߞIB7*J~U? 7- !`o{w~HFiJ+6pYg-LL |t\AP/x.u{YoJ wJ#yϺL7%ϳBTp%̽z*.(Qn%$7,:ɹy؋  ˆncڽ̧I9r k#|2 maW U8%K{Ņ8٠Q xT1kvaw0U#1iˊ&b}7)v؊{<:^dBv釭 ^BmE,'E?/Xf$5P5G Y*j&uqɏ|"$4Xl0jamc _t F IajxWq(|r^_ ].P2AU}PZ2NGJ‘ڰ mƎ`>1(/-HKiKM [2^VH립<}?J$2+~pRS=(vهӓbQaQk׋; % ~,?KPm#\1QD0U?qe֥VaQiYS::`7pĉkmQ}jy̒{]Y8⃑zmef/25Qn(4}ٕ1 +@84Z^٠E6ҹg$ K<۳_vgnbtđ\W?-dq3$GQHiwF2bkIzZo S[ap]g@/E9%R{)2KFo?KlO GŸNqu2 9AcFVZ9Dtj2Lܢ*=[t?Xk (#8).P,-D!5o3i'0}=/ Q qF)#82oe򑒑xIт}#QÑh^ =jI |aPX[mr6#vbN-2NѨˍp!z=q-]KmqHï8XX6|%!q9%̷q(nj]y⠄GIg0<"uhܪc]kE}(xpE- c_}ҝyTKJ;% FԴxP_zSB2Ae3d`KR B@ݎFar<_obU`7l8Ъ6픽@@>kuRҒh)pcfO#W^b+WfHyLwçA^1,K+dP5c]Šn"|Z ,IJpLey6 _z~C{}%FV~R@fĊ3V &GXbUOH UXLHjk`Th,xҰmK۞/ux'{VMCG#n9=Yp~NU|tؽAwbj3eG(w]1܊E\uK!nK?/Œ7$(3&Ë+dI=kދ7#Xodajڹl>~*LזV<.w-B-0,MFhyѳXoܽQQ͠>3i]įnP,@xV|l >:zhHOvI.B ;9v u괶FK~فBzYDS"΅1jlAIEF{8 t;zhm#[MʭA .\ O;%X@\ܧnzBi.=E\}h8_a4koUM-zn I@05vgu:4Za#})C2M{FY=I1yA x3%0\ ?*'{~ɆBT0TڷM 58nD_kY!@CDwLXΨ EL5h.mGe! ! ֪݋U[QО"lwE&pZe^kaHiֱ&bi~ Ҥzo H&KIӽ߫*xg<_% mwÜiwo|~) mnUD x|u}CTPyH#{yHߛy|o dbxt_з-ƶlN0\`/lRa?j}ٖ7Pɶ MmqTg TP@drVihp;B' ,E5tW39 'M(*(_u~ɊAi`Nl$X|;6vD *i]=vXԙ7ƘsChWEckxGf\lY+|2w_)f> SU;wfk^gW'@(p>jb_t>S4嘳Vbh2 Syu?1:g.go.Z0)`29JCpñib28xrys7-V-SB&$"rKI3i23Q]"2GZ|~vjJU*B *N̂STT(a~C~EauIؼCU*3c.ʼnP o:!`YeLbݔK9,`+3֦kZ:ZG6`Sz>?^R4!b9"&@amr+W^m`i9 G@_!3s_`8;t *r$޾q O>*ETXykYR7'EϫYBvfQCI=0[ZUrOƮL]M[ N+~vކi n-؂ulM-: !vk;H"O Ca9zCyxU2#ybr_]T uKo4RbXP|̿X \b` Rq 1_ʓ䐩GGS(XM &_t $CM^ ]U[ҕ#L.OŔ8PnERhSu8.>QRd3?7.> M >;ׇ< B7L?O*眙IpwoFaa)Wn0\DEN1Dp;dڴqz{oV=cdM O)hb/UR0%L^8\çɔZçz^L7ӘJ2?fAǧ].XBcV|Adtf\U<*ǘO#m]?yM&'Aռ x,->wU?4(Ǹ#tG7Ll_6ROzޠQF4R4=* c8>u[}{GULfKgTr27\$ޏr#SgǹG]'zQlZ`/(lM'$ *7h[QXtIC-VW\7$x"twtP22"S„?HSǍɱ]jf8z. ǢIW[ lwW% [ΟT]ךGϽ{QX_E! |yf[ 2#Y|YPܨ)T\ҔưO2ҟ_&&Uܪnn6p&?(oI)3t25kHYPo_-o2&SѪ!j=]!U=jj1XCu֛/n>v =}+9*ΏyH]k%dCĤ$ihk8ABs2':Gͽ92וqڻQۆ!?/O.vSLmICVl=Ye}JʶjH@7{mB-X ٌfbJ$͡Lus<=(~A,챜.)≏=bx' dd sįin~ܰ~.'=(  }lRF;ːo5 ܤҺ1-UW n-"PF4! "Nv8Qf.@ ꖇ@ErXRU4al ;v@ R}Zg$9ȌB P_u(\8NneSNZ|o DisW<z]mz|ƣIQ -#VC b(8tlQI'Euu@aڛ4kGՋߑ @u;Mw)eg}D]ѕ?U67e&1"SXUiO3r@+v1|bO;t țWD?uưn,فmT9>XZZ/ :ьT7챔Pj¢-n UQxVN' %~Pfw1  =,r3 z?jӆW}ugM7YXs0W3Uۆ( eYDY-!x4di_uMF T(`ֺAcus $RR6V~7 ؤa5:m6L(.HݡZXi_'g^R9hYT$vi$>O m +NAFS`! O7.X>q"T' .THZSKTlaz ^_̋zPދK s/eM=%c572s{VDŽxt ~F/\s l}U@RQYx[SrbWh(At#X}ept NI0W5,Ax׀'ְHH$ʠ_88Dl{~n!yk@s/`A#RpvL~XI?҈+WO7-)< ԏ"tg)&""1pUA9 킈4vNHLT^#A #nbYᙓfrn;HMUT-(J(HѽPKn*女t)+ Q(xP2>!f}[FE]XVX D6wnfӞ 5 -TF\' axgRZxgiCoxn)h,#V)]1<KP"-U6u42Sfjv5.9@hFT`z jj0d$/>rXW`cp n0|Oez5 Z mhu@P 9 TQFtg J{ U4F[hC̡Tt\D`ujBF=‹TׇћsǛӒMh 3&@"kŐK[ c|O[M -uSZ=S#ª 6I2H f6MS״Tyb -Gn" |t\ɍ1g&Un91yJԏjd,PeoF),B &?d`qKr-7&.CwՅ_rFG#}Gt6nN1N:2e RAo/W,H5,N-P_w6Yоv"} JOˋ-߃ǘ#!bs) $;Keo3$al$)i?dG!xŤ採sQē;yXnCPˆ4ִ졉d@s@},^P[:r)jzK.W&j4ۯU=wC^ ޡGg:8+RTEr,088,:w;eM(E*?Em_~EoQhQ /y.b 溱bʥùxq5 #AL2c.+Yˡ08c2~iqꝇ)XߋNvE.@ʎu yK56c&?Nb+ٮI1 kvI7hztQ21(2 DvqO=Wm& ?q᷺]qwh|4u"IdP}VW=|4Դ,jYFk2,S/QƵ'[_ޟy<`p[MR~ ]h܍_I~Zn{HPS]HTi΅[q>ӵ~ob"Vc/B}'#{Dlw]hCbpCc7rc&] lgiUzy3 JQ9R_L6<?JSC$7jUς̙\y}A6bбEa6\\vMM(&=jl>6}TmۗG} @?I&x Y̻dҍ3$TdZ[sHg58h^}HYgzK'jw(g#g-gW$_~ ~]D8*L 'D*)Tͱ%LQ=3SCfռŗ (4 nn,~ XDrb  %$=PY"Y]L`|MU;KmCȔ8aDkfkQ*sV|c(A # cb"8Xofמ t5@zlK'EhC3(\ûlJ:a|$R̻X5sC0(I!u"D,PyF}eL!Й픇\$hYBez1c+7ΌYߎp@|[<#kg^P-ʔc'8!$%2JՃP,)Y-kBA3D Bmx(eyRv&Pw|v.^x͖'V:X ~AQ Օ_N3h}қti'v]N*<#=# }.c~[ϢCw,a "P"E/&1mQZ\TI[|t1?F`u7SstvT'imBխKU篘xadzӌ h'}G0ŗ.yzPoE8{[-򀎲V1Q/.nC5Ƥ%25=Z~œXV#F@̖ ZK*lp+fϐx Qfz ϥ{ g ԺOD^#/~q;.;=2QK?}z}Yۖ) O)ߓ P*y M-6ścʂWkBZŠx c $3\V#Ms'AQ-|59yqMFZpEhYI 9<`+V'>N4{R.nx,݃!\.OZ/ceTRuݦ@Aet~S]suEFAkj1.Ղad':wp[c;}?ae4I-#KhZ]ZRnSx|z12S;г ݲP\ם$ELr (Jy߇&fZIxYyqrmj)f|XoY2g[ٯ[YEceP%U(BMwFh}EsbjGA~|WR9Mu)Ҽ~89zCT՛)&F-WiH\$PdzqiGZh 8memT hن n-i%OӕӮD\e_,N렖K}Jus|ESD\S,4 yך"\,Ɓn06%/)HbTS+ŀY Mϟ (S;X)H7Yө;`9W[NX_M[`Y/RSFhT -\)&'fb'P߽etnxe:c<V KG@hx^xJq)Fz򇭕Ov{]s4QnV+m\Nv HR]=gS3P!]ڕNO3-j>Pi1l Ua33G)jh92i+-k 6nʌSJb[t~˥;9of ._YZ.m z!S{bd\<,"͌ԛ4֙(_p0&*N!4y,}|Еy"ŧkS f 54 pIdL5PtWN-VZ;#'uO!m-dfb3g&=kk(柴O%]y ts'8bfT_by2-}mBUaՋvY6XS\-'J1EMN>~"$VǛ"uw!6ЍEbm4[#a^V%eݐeꖖ7 wF( q45}AZch.vN..qvd߉s!ZyڦJW!`#D:%nӲa ] nb}Gz"e6n&)K%[P4hFlEr@k35:0 !CD#)^1 I%rR!0_ެZ\A; x0 UuNy2*x׻Dr bkf]4Rq\#da#o[1Er_R9[X8ĔѸt'b&WdiL#5w,:J:Mڨ)^C:YB%Ҝr0-=WND %Iˬ/G+Y<2t`>>‰8SV3> qsy}u}$AS4*H+Hۻ@'&R.ʼ!!xa.`0jP-0=D~L F'۬G7dqjNᑻS}-kӃL}Z]WN -~PuBr#jvD"hO1J-)f0uvؾ.AڰX"y\{:qx `exFU ]jѧd|ps׽Z16zwOy vqһ5z6OM) =PFh-s-+" z$_4tS Dl0r旲fՒZ̯`NWgT3;&( +"ƬPnAvBqi6O$ k!J/tGI =BƇݎ̡ |(E7^cy{j]SuIm poY'#<z,s(fYސ~>~hxWN66xqv+Bmx@d ]܌^B#BRj#I0BoA;٥]DTs!K屚DoGHp# Tʛ@>QgZA:!;'u_KنNd{&p+ݠn2I EZ?ϸ3Q},8ȨUzyAuBns Z޸Z^((v;;., [kd8+ M(*d6qţ #T%^/;1sX 7YڶSM;.0[ -@G< V*oI)ɶ2g1WO*x+q`4´ kxZm0kb'rM6Nu@(թW뙅X׆}[dhH _fm.Zb1m]!]`GC)Hc qg8{ L.A`aFpj;1k>N<,9t_$r=X̔*ɠL}lD/Vokxp[dǼO*ca$ #~d˭BN*.ٝ\&Q%P/?I:^{7jN.pQv%*Ȏ&?bуal+ yZ14Avlz&B ߔb$ճJbw Dt+{c!rjÙqjAv^ofҠZ d/|?M-(d'21w*9gt쒺$l7ȡOLoѤ33.NGd%|kޣr)8wQ3Smy<}fH SX=)+r5~n)f%؀Or=:g1y!H ZhAfAnD?\ТGGܓ'OO9q`@\.ÀI jӡ֛d78uoEH%=SQJ uFfxcSJEZwP=`>?t=2L[Ja,L桍-5#3v=Wp;/1N㇘/m HVN7ە1[EV3|{noj/ {6{,-Ӓ0t=_/uneRCN vh،bvdH;48!H_)mcG>ZR^G?Eitu-TL%}TZTVo>ryZCy{YdU)a6n û"Sok43ui+b>D]m똃}e3R4AdF cK-5D&x#;EOYs M>3tqHNepL|Q{UVB=Т; Xq#wT9a)RLb5p7P4P-6 o 1"7&U@>+s8*xu29.\trYިNd~I<-ǀUGyS*&*WF5VD @i|nϒ4%ğr/h.3l|eD@gbhk zK`j t?(FmRnuW_XDp^Ųld+CU}Xd|\!oH7}'e$z,wN^ ";g tOϡb},$r򝔡ͤ6I׼9h\ XJALsbz+c hŊ4T9[x{}q—X?xb8<,\inTۙ ע!W09 I8#؆ 8< ;"OC0qiDS47+Dήئo!O97#$qQla ø~l4d+SxK)K (pGALi8ɳU`,>V魥LM|<~ة }mObjvgJ@S'# =d_D9l'U@pp:*]Z}l={Ƒ -=+㩠۲{>Q<80FP$^󊶹l)/F?-߹.妘~1ZYjIkMQ~a.Y]v{Ĉ 9ј&qdAf/}F#)i:X \[ P0_xSndQWJB!jzWu YM!ڈ鋙yi~)eA24ExHvɹi}}9cJ䚷/Yi<,*z9}C+ t]O@vEe{B⎒4Favs%N%ť> TpdM_1I FiED I(sjFFvHYV$mtX-)k:,C}/݆=D쵥|f.,x\c*,sh+sOfjv^y9MZde~!~u U&QBȘ€?7D b *eC|B-j;s𥣼SƷ2n+S(;=5j_n(ⴓ_`O.6ߝti`GN \SvpK>#]H[ᐡ9NiP~B6$:ܷ̀ǐ:ηWLls h {Q7#@ [qhL+fx+Pd-o5,%x;#:"8"H;RSNHpj!h 09 똀gnAh(|{_l%wؔBՙSXLN zV{krŮOr|訃qͩ陥*;RV]2i{jbMU#I3$L$c3@ݏg#5h_j$! /\ sżG [ ʀmMusGmnsj}fDȴBKޑ5/z+Fhhp% XAl|'ng1_: )Q֨dd OMni  ?|R[8yΜ#%,W7.zޠ'3-G u|vrIC~kQɃfKo.OUWȲ(>WSeQ`v yrF_Q TpΤ@KݽKyݪ'zZox.!H usƽ JBh.#n(Sh2ڱ `Qs6mg8U?zYp*x]Mx~䡯KsyB?N{UWc.sr U7{G(*bvb]dsl96F(b(YGQ1eM}Y>bZ޻9|S[ 9 M@oc|w QWLvX"<ہhW>`y8A`p^a9ɺ&%*/C\M]8%.ek V>}X %VLuJ~1DdGnAZ݀l7|Lи8tGo;;]C!Z%R`7"B7 cYSQk[xg<­OMZa? }o>#f#Y:"rY7TԚpi 6L^m|OgnX}NhKT{Z0Zs"LL)7MSe^C)ң!N{D˹&q% ؀ORe=?;ݲ"u*3V]s]N-m3)ݘbY#i1*u䞾?p&ÙͥloeY;PfdF#XCafL- a2׷9 q"o)ru ];[lv;c?uCH)R5{8%BYSQgwэ&R,٩vg!wVsyL\mw!"|1jƏpgd,8t`Rgy"l~+eԩ{2~瓨>$bix{UdQ]}T %g#=B{!@dMa<uL34Ce͋REH!HZy}U%Ψ%8et}vN;?ǶNKPżRLM;X}zIED˄IVQ_b \xF5^=}JT^ӓh ͳ/||Syn'jHdw]='BP_ujԸs3IC+>DCG^'4UMx@tAuuMM6;>nwG4F%3 h1 Qq:4sNvzɎ}6zo#Bj i&b, Yj:V*X,V1{hzGً?r/A:Ͷè8e2E;x*к|$ÔJ٭fO'dAW%UXx 꺷-gNђuD,bUU a+G]+?: r2O\YZÃxgYW:)pU>.9-hEL;{jOsSO s l>9 $29 O4 ~&F*2[q.`qgQ7`O9&d{qǕ݇<6"B`|#=~`c~5oK npd-킚}Gת2C*,h2eB ;F I:{\!J?*zHmm]M(F@$B)Ģ 8WxS3 2f.iP^% |W5w'ܣ/p0|7Q<~vFelUh"|56L)YP!Nie>}Dk%'ǹ#·n>5%̢_3Lsg:T<%|he}6_ߝ_^'I Rs'zRV;iy|!{|98p'"Bkg.@Q[Z)6hSӅiFA0{ǘQd%1C` eˡhޟ:L<]|#JR%=67gūnhf 3{ $U*B̻ 5no#Fo`J; LPus9} {;*h>+n )Npq2L֢z!'Y]5˸JiQ+uhm"\<%~>mN~_ +{Xye(֫: ŹNhly"p*VrV,{{ԗVnah#H*9#>:g/V\]x#0| *6V 3ɳgؐYB8Iv#8늩>!KzuڬB| 77ݒaʦS]Bq7"mYqg}NT < _o h^Tٻqϡ2V-Li yO>?.m9zܤ_ԉ TS  *}Yj-}BVÛh©CDR ; VӷଐߜM'nTHNğڍ* kʤ $A$[t@m[LS/׊p8Xۛz8 Y3m:>g:>Ύ6d [Triuo$w&[elKCRP׮Bi+ks6}<+=ώpo_Fd3} 0.bO국VAcr<_: ^"2[TQ?#sw((QcJgD3SQ|%,qRA$&{\Wzh6yM #A:,k{De(6$Ŗy { -t9$ "|#[P|Щ}A >'/P)I}5L{g.^lN3ٶDP/O" 1\vOxFz1iW5~d.f3(]}4V|xS/_-[jc஛n,|ZOQ=$w}"DmkX'Hi(dIR4|jyD]se||[]iU3;JI ! n?Ă/|0 ׿L3轅^#isR "A0ۂ`O o,)BE`Ԥ@HVH|8ZV L|k5MLI\&\go%{\-nڦwoPtz붻>y85:ukgjOȯL'8zx~^|IX̿ bJB6JOkV 2N!#u<87b;~J`%q3fz(>o^!9˺U16e4{BIV$KCFs/q1%xo~PԌla|;V`H~݁dRbŪJQF JnK-0kpPlΕcSW.;M|(ӗMTV׀y`Rz-^ım[#a+[ֈu3е 3H_U4[ `EܰjS?ync4 x R¥m=1Ȣ /c_P1^ea2v1hL~Fɳ! Q *.h xSC ѪO;+ZIfWs=/tԲucԴh#gS{rel'݋;я8g,z҉J(D;MG}9V3ی>h6z?'[~E4иlLNH像$P7~^ kwR&TK滧A~!BF 2 P x=߶#mcK&x1V8 EP Ugw'Z I9 6A5K*i뫘-=;şz3v%^@Ƃ2N*P\roz|*:陕gGW vK Ăՠ. @XQسh*?P._,kM*)jvu٘B(i9/WfrJnAhIH;Z>:٥&JJpW$Q͈ЊX\ ?ZnԜtD NwaRQQ"퓾Я+ѨSR^W d2I[I^5+q.xB ,gc_jp<+Ӳ"Y&XH ­= e\,y$j(/E{ " MꇆvWId~^59 ٲt)noЀ^%Mtf\!Q"䙳]֪LÃǖz2~yxECؚy_`SPUj4P]ȳq>m&٧"},EKѱX|# 7* ՝s0yQ94;ʼ44b= +a$ 'tg|" CnuZ};pYGIDk/Ֆzfj- U41n5T(5D<\{c]\?]<* %#Gΰ4bNBUĘwl2mbi~e=Mq8:*S䩴|("W:DCZoopW {=E5&U)7*ZJ0^p8qtj履`4 YUMcZ*۔Y,f'rHuS5;%MW qQ 2vLcҴOTa |71G% 9}ˍ8=w-sujUZơmxH| jֶ@hnW;hňt;]MpjXi4JIWVnn<oǹI,")uD/c &^akӆʰۖrZqs<& nzch辸ඹ8>2.;UJ\mW xH'1䪒:s8iM6r>H!2OjTB)}Tq=A gmXMB#,־p$\p: kΓ(|Jǫ<$(ܹx2;:\|C=Y`Gчm|%XLq[( r?|c$l nYUWeBc-Gmv1x bcU'IIF)_cװRqF ^i~X$\geCȱ*ΉV\_ !D[ #p;rɧD}?{j2H=]q†k_[ITȬ\Y1$3hO؍P$Y Qdmɍs홌L0yF WQ?ղxx:嗷>ԧew:#꯽[2S4Q=+ يBH}̊5e"PpDX[ o‘LΨ9&c/!ԻPBelY \R\K\S1v ڿlAw=Th@tH`{5FM/_g{Zwx!ś(Β`_F>]6߹&A"eS%u .\I3./:v9=c0#!-`6#u8(޷Mѫ5*Y% @*~N^)D B_3xglgnY,Uv9jܺo0>oۼz$LSNCBz濹rM"8H/v_Ghabm%eghT83PfRs 'fd ƛik CVjJ7URX,ٍ д>HMKle`R3"0{9H&lk Hw%~g^o2Ӆ[Qa=gԢ4oK&+BZN\?*kes eR勍ʗ_xGdq{y9IB\R)[ZuV*O wCg:=H WgYXSKY-RGF-bs7r0 GiIG`.|tJ;'t>jw@ #bYH.AE i$m-;v 8Y(YLG[S^*'_'S$ ND_QU9>)xˏZf]6VzN)()-8,qz%L⼔]'(ZFyb(i|,P3M' Sݎ^gM$9FW&~$3Uüww)鹻0vL4ˁQpp_69xӣ]4zʋ ^N * e Z>Ȇ].=?+xC%] y|ajt`ꗴv53U6]Π'$=al =P:0)lh(g#l-TKt8 \N+Mr-4VHTߏj%D x:aءH ZB]jM.??ZwfU3H|hA6Gw~^H*9PNK,o籣1HʼnY{\-Gaտk[mV\L#huUL %iퟡ*vHOe`D70+H'KUH\vD/cǐܟFn!֭dP5+<>0gPݻ:7"wdPu Q&,kѦQK-o$+n'Uz(˦d2#?zj=œM5Vў!pjLTVȾq%UZKv@n:'ej F]bHؽȖQ _^Y %NnGs=EsN;&i2^|U;Cb5Av (pqK^mݦQ .=(wx6ښ0+us< 6wϐX^w_b#) Q\t^C"V(${rmodL &]ۧi烩z`o /{]úL&w.Z0Qc*a[>i9 ΞphH97e;@J#.A@ qDCIaGvp,Mc7 |snA@Kvg[F! J> VbݓQ2Y@(} #Ei@BQKZ*}t 3z( ؀)]t~S·QN˜U IPa7+#y'ޗ@db 6'*T±|OQ57oO6e0C:4@Fqcc]X%{5̫X 豀K>Wm+92럼|ZYXƉQځ5is~HXZ‹Ķş9zxC%*fXWP͙URBd% Y“t mgrLXy}I^^#Q{Zʦ% |6ԃwOwG&ڌ .TZ@p^66]Z!a3i0p+D;.X6۩lUj5K|xpA}SUY]3dt~|gZDr@ }R|KA%bI lh" leX^V(=rz.D#uJ/Yͮ?!6veWY̗Wtc jϴ?@_yj^v{:Pd4Q:#+z˶~,dES<$[2;- ^N𕎿 v>X gq8)psP aaoTojH0㟯P~a,ŖK `3[p60bO5vJL.aSМpAX"6$F69[=^k]A!|WѨie*r<^dziU3:<]*w*Qh2\1B/ۑh퐍fO4vW9צ 'oA{u5\\J?*A*zQ5CwFsCVaec|ǟyNL'PI1S1*߽pӉq]7r_<˶ϕ펪\4 V )9n-uDiP%ш\A/XY 6z<(q_D_hYD E$ ֦I#-AL+"1`LtǐȄF8lEJwe}Et(:4otM5^7u=ԙf0=M#*-#N־0xts6Nە#B:8T&eHB݋T E?%ۊb:d=P84nThN5\R$OoNnu+w>Ȃn(zh88(| nGlr OG2?Eì2|NdYP?ae֦)Ro=_%;nJЗ"ȈT:R3b MIf:4gsf(Wrp`І JAN)H˼ ;=Rcn}s[9eĦFCNj/R혁t қTaH5ٙk뼗՟ToLMfiS!9pJB8*6Uywuc}r N&Nb69rqol. $`XEH*FqRPcox|3ohPB|0aosc2 ' ǝ4ԻtՇ~SvMع5H9ŒV`kUW3dT1_̀;렲-;NT2\YHeI8 9Th8myv̦iҋ8//N',?! 32;^,~޽V`v%o:+>A\. j@&o÷VK9;V %tʅ81&r%R,0a_"|kn{C9Aq]:yvObG|NBKY%N]f3HuK_F99gPԧ}#lӽuv+zNOxǧ-Kꁠ*P}ֻ>)N{>'x[e(0%/m$9l i6 %:Ҳ?W![ X$Gֵ`2lLCbY;0I\|Q}ݐ˕JT,*|_X{g,:d3T N8T{ı`gd89]Nc8/12 cE5T%H61~PB*[ %IS!P/X=O4Kcs~|NJfʒcFK鍾 g? eG%Ѝ5$HYKu%%> 磻]/wy?.Q X#X=jJ7ܽ/4O-D[H  wѿEեzW XԔd2ԈU1Lg~@wAfl*`/ DʌR ۽jveVaS+Xύ壋vAkc9ED[4Vÿ[fMQ3^AJalHplj+~)P^LLbݢJ_44YG|tM#B?ܕgNqaO"K2zdht8هs8-#Uhy$[wX_|53ޔ=m ։0lJc_S)^Y/HC=yѳckH"jPN:>$kXȠ~-R||Yj:u Zcy2qc{>"Cr+Յ~PkKନJo6EjA5K2n\m'uA 8UpUPDmXk()x}~=ogIlL .~ԾQ:.A8@FOUtEݡ9spk9׾F)a?GGULe YD0"V-|!g#- 6{B"``RPnΠe%n ( KZiwTsBXB#L!)S1YՇ%Ԕ ,SV% hO?tfH]%WwyX@5tW3ֈԓJX{E)*Ry{z8Ad .?U|W(Ym&wGp÷Rz5AeԱ#t,DLnf :ytm}l4Pmq4{cO;T |m%bU:8]p]xy#pf_;^W}x,&+u$lǎ:zk\oVze1lHҟQB{6GVF<j{YIvAv75( ?MϴfﻊTZ8~>..YC^ǭ1`hoʖB}U5=f}=*i^^ Dܴ tM?FPa^{T,vej@Y 1hl_=ys}::wrԾA_\"T7< qcSY Πt+ͤwXNaonY/iuK% ̩ۡzSjPK&*ْq6G2rcKe( OV >I5jX0ཛOY Jz '|i^1;zb %AVV34{qCoƴD;UNSȞLbZ'r/XT?z:~_ 7J *:AT`#LH!Fp{Ք,~c1QqYEuKQ]?ajGaz6jW"0]e~mma.ق9zݩb.QߚVNEP{SO6OPI0:Zo41o.^SMJU ldl@ 1LX>ajKd}nvU6{d24%YUՏJ慗}2hjAM$k3si{+Ɛug TS:-7xLKlН_r_˯#BkI*;U.x{WsYOkx`,$|CK|ށM.ڇ[{ԭ[fv~nu8wKQl', 7D]$z}x!B-ۆ*PMt+l9נ+_:|[,mܦxlm^׍X.Tܻn+X?Xt|+rՓ`-*Zh2?'OqPw^ %VIq9tDM8ĚJ4u΁0|0рJ<_8Eڜ'-{l>}6A2R[ 5:QOϤnm'X^ QMSvݨbDMy*$>z0~7:'9qSP5׈q.mY!i` OF'Jp 0 O#ҲWI5o[po @egH_DU b-9ĉFg-Z,g{'i,N3H& P 419<~}FEҎ0G_QBնqo}u|N7Y"} j t⇮>:4\}`)lrTZփDf~@˲ ]#2 ,aѳz[e92ӀX^0@pfjHB"oCE:b]/wYq{*d/n4\uƈ #xu9RZSD^RdnOsݓ؁ 20ji.ab۝loO _GD)E񒝂_QI\E+ Kljs{!t:NWX-h⤺/d#-Rq˚( UQ ٣Nu1Uu0 #NRqz^oN4Jn.kuZHJ&x*A+(֥ʯ֋CG[S.P܇9xӴٳ-c7"q4'~j@/e8~}>(g& 7J@1P;ih9 9%1 >,\ GEPOQA_N\L`~ip7l`D(%JbV6h WŐ?_lͩԻ~mtR0{\X'` @@L bV:UR$7 r35m"#r4̝jUs.b"c4P,:H koCNbⳔbA JN.vijϻc": ES!UAUiXB?#Sɥ]jgVs~Ij,K&WbFvGAVe(3<҆)/8G @?t2xޠ'J+И"AS&\#"aQtHð wu @;MX(K4kܙ&0ӤKXd_3ag @UcqKI=HcˆRM\_}] 2Dr¤gHh>]齹&L- ~Q_&/(h2%HZL ]R1olmHC` $sImOF 5pn-- (; @_/zFߎ9Hd{h`Â} /{=PGXmתgCHN/5kwQmp7ӻ"r\O "3("j5%_HHx dn2gJRʫ++C/Zۙ b"f0'j؅W B!Ν}b©fqYRkk$o*guWVcׄGH:H}r˾(rKV4o9!pww̧ ,{ xPWZ؃7pg=+.2ŨV]͍Hq\^gӂB P6M\mrG$.$MF4Űԯ0O ؼ<{lcrG$a\ *5;<ʕ$?i]R{yTSsK'$7&n4Irv_Gk֣X)oQiVQ_{ nc!9v'Gjb痮IbhzS: =:_FYdlPBB]\h~V6Ad-'K_iQ#}[]h1eRɔڐx L*d s`{,2@=[Bu?fbHe<m߳ LGD6E4צ>l;ЖsAcR[-ߚ3mpIItW[u*!E!-ٿ23" a%QLaze(9&_Me!H8m$haryc6MH,%=AfCw"0 V@q#S社ZhI ԰Fr_ȓlR9&-vy n2`ߡW9z߂k@zƞ&wmiW|.#yvx TqocZ?٨{Ζ܍鈋F}8 r^:1NTe+DQ{g(fҷxTƅH¿ A0v+s _ݸAٝf_ Գ?ᅊ=vZ3\k1t7"=g__}t%Jiݞ"QV }VS0:N3I$/dUiQ'cK a("07ړ"߻*NJG"ɉa)yR/z^ I˿_xW+hyN$INg>ST(TTqĺz}5- (~fI1Ήg%{:N?U"h1yH/;"%۱~&.yW{g*l_yX5 ʷlsh%XNӖ*r6c̦kap)SvweCCPLE%#h{bVҦj6}%(pO9`5V&C--ELR1VR3dx?Kٍajɿ^jS! 7|b`:./r]IIo:q7lGL9Xs^46rJZI R g@ V7U}61:]]nȰ=iom qU{(cSЅE?9Jxֳ,p6]ଦ}\aV>!x;x&eʩs+=7%-HxDW`JHt{`93ZPR1V9RI™a%6Bjj}8"2ovmwRU&<<5;=N{nfОRF{'ןs0¬=I0^{׺dn84ꕨ ܦn v)q[)ǽ:(O JԨ13bQr*SD8lY}/1Rdy&оysW=!Ό/+zS: hNq R4$Тx݂{KU:Oº(UV셈}d:iØxMz. e:)/^iwgLqQ ,m^Q٩^oRKpVO|1} 3\=b:lk`t@gK(JMrym+.Zx%5.HT8y#GrI&c3oD@c`Sc!Z+rBjb;`+*oᰂRW:3&>m]Y_OGȢc=aEWVJau@ ;RuWT {cU=_I+zס4_C ԪoUϧ֪0, :e~wΔNRQIu[w-m+}S*m!D%QQ\p WE/}8k0슢ڹKf݌R.)^6R5gf)y#exmrE!RgT=_GZ?~1.i6+8U/5Pi{y!%zFHd[o9yLe$iv\ZhGth{~M%E7dq:%!?SaF3xU ĮfkΞ(nh.7GD!]bxVTMNq g>g9ٕ{u'ڜh,r3}fwI.IU N+\"(|& Kw|8a,1 EhCbiD?I]?#U2{/; qJinf e](.hl΂n8w^AAt/ eƈ_ͣEޢKg٬DɅ;0,X> e0n~s(Ob5(tOlP jni+jR<-1&%vn &}eu Ծ$p[#OZ>ilГwQJi[!w%A#8(Yz}4If)*Yҵt<_RΖso@0AXVG1-ꋩqv{28 @Wį9hՇF;*1ZWp>sq|[rT$Ϙ`NL3bC!87.MꞬIJKKm xJR@;(a"8Cx7^E\/#ltFGkRnRʗ_i^ B#TG72|W FBnkp2O ({N=meϹޤ‹OQ/F:';`$yG t<߱!b8z^RެlӔ{@ 3D3(. w]sG2dFҪ1`3gy+_tVF+=Kl~ǘRyCRn?|7 Xޑ1<<ܰCuhC1È6fkyI3*EG4{.s_L˺U'aZ>RB!i5_ˆ"}בуg.Co? >^4JĄbt,q'2YJǧ'd${n'ȂEP_,\-sۿf"A+.Ze%|U2`)! l1"9gz|bYPl]ɬ MK೤vIEGJej`ev2'ʮJY&J< R,_me1wW!S/ߛ]nS 87 -QGQbLzͻ&{(|`A6BV\Zp/:|蝁570]23$u(`ISSjH\HwZ^{&f!̚D<g-IRЙot.]F;Ԏ^ + Ȉ8b%^H%UNt#׷X媑{EhVZH;:5PPӧ\c&<-|>85UNEDiBMQ6FPcؼTD6M^?ܩ&uOh%OT7|Ǻ8$1qIzYpx%ؐEk*@ŻQp@ӹIUmI6F>Rj+AQSO in͗Q3ٮ5!|EJdĪs$QKS ֛̰|1;#mm5])4P1,Dҹ#ϖ=V[# kGW5ZF1ҁڃyC'LθФfs]T]Sr4ʉ4**Dطn7vĭ~s3\z/'e NMh(0.9EH۔qR"M)H Z'RX'`. uFS !!YkZës-޼ثk` -SMB/뿤YiulD 'J8Q Sp[&v^"u =ks?+HjdFcz{fx[q.:4ws&`5\٠ҮWJYd$w%E:*(V&sNk/LKftbClg05B2?W}xׯVM4fU#S3)cMxz. X+ 3> ŦeGŊ\.-HG32{" 2f)A6)(4U_wV8zO+ \tׄR)iw7T)F҇W@ζɪj 4" oC;L1(˪ixmHوLK?-)9&E5d`)\] T}4,d*xD6cWO1GY؊\ΓPv"C.+o5&5$xdwBFP&5/n.櫀e5 B1Zo5One|qN¥ 8Yk7U_ M>rVF9t*~OK'R2g><:F;De+Crl ?ڟ[fҲ"+T-) ,ۘŇTk ~4޾]%XUHެ'-n`l}qRJ4^K6٨X˔$BH+c $S 0ܤf%Ol~i߳AњUfa#Np+YWpBz2Cf]f2"J+nrmn I<(HnP>2o1M&m+ˏ,Âzq)[)c)+{4:c0|zP |t?<#n~ˌ>I )6)T Z}AD7METX\ח0/'B1B`Sj֪wPB@_-5w:*$:[im曼m'-f{|oCAg(PGsKK,IsC Ѹ`j5ˋ8 O he3`dzxxgbXL4~RstZD+}QB+vo(7B}w*`ht ȉkpRL$ k$AZz|E9ܖZ1gT\a*L;CIdpgXSӂo "yz7 a0a4{yDj1~A0dyN@`a<:ɎP!?{()3I^\jbbnasTD4zߟQKs]&xrxHfB;gUs'$ݩ)N*I;] ;1X.%9hiЖhܜ{6:/[m1TQ7BȎN\N"چۀfc6p2v3O4_Lm膠]4y9P ZeӮI\hE]HtNz'M #9O6ou)'תDUKL$%ěԗ8Sf~Z3[؝ 8Ģ0O'UW̵svv-BEWD&{ `!F,ĆMcBv7FRZm$Q_ɡ]{8*"]D &8zYa_zh!ÇK 0~ [f/C6ˎ= >==,+Xe jb#ThvhƞcwlN`sFƍS0#;8O N&=HŰkr _ x# #_­ ofP\ex"%IvHM2b_[+M: #x6&x/:>ziҚTeUo~Tq]1v?mx<1{I* (iġ;r<<t˭F97{my}_ۇx{?g;B11/ BɟCW,{_?[/٭%:0;I)/(@9tERj`mK`9"#1bJǠv ii2>tJv-d O0A͆UBI\w~Z >2s5ݻ6:?g}*D/gR KuR\sHʦˊG(G'bX5յ$3HU/*_Uyɫć~:.LjD&!4g_(qdտ]5w 4D|T=\A]7!NnˑD A]~=̘.@2B ggWrs`rͅ_V=:Ac.'e/Vk>_QsKVkWi X^d5FW" XOm.^j1>i>?A=$*@:]iin@VWbQrZTZ眇;S:\;wxǸ[/%#vxD{AY#.Vq]>b`z?$k`XPb|ud/ɸD+AK\)|Ic"R;e3Ēe2lh0-a[hj=ٲ`Rɋ4VeIMn\H&/ځglk!2(:2韁p3 U+^>"kd=ޖzTCN:d,qpzMh&&9*rN@FcW\_E&:0ҙrj0cfL\w keԒ#ȥNbZBJEs슕_CYƦISH 9< dPVIlތvAed¨[d~[;LeFco#Y;&9.5D9ZC;@؆hh ( cP6@V-J)0g=B6ݦ.o,p_31c"^%)% jhJN9q+C+xtR܉ [|*N)h C^|tX3ٓ=$_ɓ$ f?FQKV{yݓ.>jokhޚx̘E5Ձ1pֆ`G7]d$;x0~` ҍ b4|Y${Oq^q`-=e P%FWZ@% ) HS>7ŝw%L๢P.3E^7貺\EuqYŜa4"Ԁ3"=>u/ a0.aYܠr>uv{hcHyTVxA1nsgJėlVW8ޙ aYe*4R$",,ݦ -ORHꢩݖKBV降ޭ~Pk+~xYA4s~!׹= 2s!Q D6 h5[Rcq4d{zk= ReޒTfL 3'<8եs澑E [Bk37a BJYSٞI{ hGΟ{.6ۛͧ!e˫-͕Y fhI%wnöԂ38$k‚&ǞK { vwOۼ"<ˊEv)Q^0UӱT !?=/Om5Pr*̈́h`:ܨtCQ8w5&` ?NO:-Y8tS?[Х9UrhX)1:)W)/"\NXb-'QDflu*pн wp%}S}!9vYoXle%/hcc%55.m(~اu*ׁsCT(~4*jFSa',Cg`vUlL{+E4&nX5:݉J9֍`~R/[&Me`A2v_:/%f,ԦG&S!/ j]דw:T@KղP! 3yy)U77H{׍o8NB{<_pݧJiF f0ĀN'8: or t񪾦dU_նȓLSr yr)"\bL4:=GH%9lw\mH"Ďd hv0xf4&APhs$S5[oDvU0,@\<@?vVoF =ו2Ϸ~wnɻcCe%""'om<RhaPY(v '|IMY\8KX$[k~ Iik,w$$̀SoxpM鍽 gONz%8͊Pm BXH(7y9髼^̤_fGKǐɔmLlkK=jl̏˿ rIߞEo;zF;h7E4èn} [E>Cl&vEb1#E~=(b dP1n>gꩂq;U*>I0{0 `QNHW#9ȢK>ia%I/K6Vu `6%Vxh"C]ަ*IGȥ > `. 5)=RGzn*ZY'r]ls9 Nٻ+1Kѐ WFM۹=lmg:Ր B9ք5J[aR$54>ph|8]!&of~d ˸P(.XlV8Pm]x jnn]Dbϛ_j`&S_a-Pp,u J\E9cKVcݺ7Uݼ C6nq*܅ȩ]Er~wbIp']{ w'Ԏ,lĔVG/z}"m4豳zFX~U/7;0نtaIdzy}KC2g-@4Tަ伌f֯>χa֝KQ ڪFo ^ r-b֝Н˥:dc  v3՟ElBfχlĩj:Og07eMyvBbRa}Gkp9,E.4= CD /oԅlߤ"rv9DˏA4fm A/(i?5`F}d:vL>͐pϟ#@ˮơ[?&)Gj[`sG `.$" &%/n=2֎^;6X)Dxh H y޹ e` G?uR "cXMǟ{:1r1%7 CC/񌖪⭪v{n +U/ 4g!oG7G'?w tIr7hyԧEx*. 4-~]2]~2k, 6r_*vU~0C!Sx !83iX'WYwOo#q<#_"54.MvSCo5ePrŜ=r8rrD5 lí',[6zW֍+u솽J6Ԕ@#;ؑK7X5YkN(Ҏ}FgKΏE@wku M>=FԹg|`ӥ5;AH;k&v7[㷭r dWLj`^M}p;-X^?[)Kuc+\".9&ms-`PtleEJ/Ɨ}V jenu| ӵ5PS oɲڻ+8v-:Ng}CM sn2M~.)Nm އ~{ (v ~.ywpX6d?eBUIOCC-,k1$ ھ J4} SlVFqHw}YvVx3 sk+4q7 s\d=;I/=u|k%͵2URuջ!]?`HC\-f9r:,<@(3|T)u9C~!lDŽщ/݊JۋڕT*gtlp׉im7r|ئH,ib8l(+]6[8pgee2PFz`A" i J|f 1_ p,nJpn7,.X]Gv,,2tyvugV#3ẙ*/J:B$/@37L阍v/z$UFߣJxԗ<ǁJDڄ7F.P68XWS:0|?-P _ r~B{Jy]CwBqj w &xk_Zô۵hąxݱ9A-=UɸTYiYzڣurqǹ#ʐfOs'bpݬM脟SH"fN@iؕ X=B?,YJX")2TF9{XU5frW -LBy l8:X e᱌2g6-i6t~&>XskJ *^i/#hđVA˴Fz^<*HMt Y[ J?gp=}Z(h:6)b5Yp6rtm`"RY[h>%oV5 ERt?eǐSC5y`;g6P *)T'_f(yH <rR`Z?\Jt6ߓDkcv7F"BrB^K2OؘM˒KLǩ?ulq$Ix`ø.̖D.HgJrLe`X@^fͣ|͓J]fh%%'֠]$sD+ [{/t%Mjpt"XCNnS'¿PAl"5[=,OA\6Fc/4R0:bQ>U0G <|v! =>]mdȝ g<$~J ]w,Bd˦f̜V~ VPe9!2v`pёcEfkc=K&Çs.%5O3|^錄VGndƫgQ> m*XHK}Nld1m5OL:4Z=NZXfk蕁іPSn<78B:V_FdzEwXG1tuQqsPHFi0zv[cul(`;Xg%W4 կf#WZ%/UΉwb.|A^T|5Dhƙ(V"hTZ9 TR2*Y;z8N刱{T1Q.́tX)/t ]'MtHXȭԯ0"ˬ=U䣾dKhs`UOQxX(K>l`'~4j/4ɜ^Urf9V¿_y" vXل|rȁKdg4c5bj[jO_'|Z#)[>z3^ӿ`_UZ26˙;> 4@cY涛.;մ_<ZH,OGX8OIDj`pjKIJY]#+tu36(KxiPBkT& []UEy~vޘZ5~d37FH\КmpV]T\FRxDYx޼ 'W&u_B9ATm !Kel(酑װ\Qc'5:IP 1_"fW~q |%C>txyo%-UYw i[ )AP6.Sp8:0€7ku{)|w LJ ; "}DD?Hsa4bn3^_8dFIE,s!Ch_ uÇ(lL3!ƢFo'#~T΅IevAʓ72x$ӛ*Bi,ЁtÚB7Nt ~;x13҇YrϬd"/K(X orCC# Suh2\,z^p+5-,=/h@T{DC$P"6o sI |G Ů癚7d?,X0Aĺ^LXDUdt7S~'D ЛSqZz\=ʈ.ܪY֠R,lͦR&ܟQߵ2L0ٵf¶3ȹ<!r[4U? " N/~S!3^`϶TobN,:)O%?L'6.2tVsW\ ;-`0o;OYqH/%**oD-&Lg) D0oD#lcӨ q'Xq.V"*s>< YNRpv@|3ds6SyKb~Ww`gs%w⾙Pl@nx-N܂K` ;jO&rxWzɌ;=!(9db[,_Ϩx.kfQ_`G ,Ȍ?e#P顃ݸ8#G+̨*s~723stt8$OۛunM<Ǒa6|oj_fUuh443̈{T34t{qv$J=hׁo@&7۬P8E=֍mFb.Q&NF8^iIAܻw~kkJέEkKNUw1 &jlzYrM|3-=ߦ[2Gոg;UQoѨ +hdpqIh|Ķ􀽿Eu7G³WsEhރcqi֐zYs_s\W@Fp`D@H"U!M]:a%iiD7ъd& &a>:5$O .Uk}PBaWaed KC&qdVjwa,K؄Zp!+ \ 9ޯF$1{Q)h߀UgRu/4ak74&E'"Bi=_HJ$ _$3sY.O ] T"P3P* 6ݯImyWQ`dC\Q qO>z)᪽+z;9l@ qkU̸:ivq Ûo_MHP@R#7lB*)!Qɰd; ϗp׍A^PdxO-.}l.O^=Ȑ{Lob&je o%Y9QYKId+Vt@*k'م5fq>tMDnۺsx}Bn3bW`97ټbuLYv]KI+>;R{B_nO0rd>#Pu>rBCjρR2|.;}rkIx K-P.^¾t.,Iti[{L]$#;UW@5n_?4 [mR+')*D][*{ܜ'9G-IV"׃K{RNlCtѼor8q}~-k9ii֥VoUqx dg 6 <,C/ca4KӧMw {[#[ҁm)\E$x]XB1:sE?w08n:.N4s$pf 7`>bk4^ 5s<P.G[Y:nb,iҁIy\߭h'Zi=$F3UD#i2%:SUPSP:0!h*}4>OΖ$æUF>4V Di(9"KZaBJ#VZ eC:Ä|%YVOpoH506 꽭tѕFYl^3#gt+qjI[Y;fWk.{)N?j 5;CgG$²#Mc أ.?\=.+%腣:Bf)0o`Z]?ʿYS#Gj(R81Ő:И=u~7K+9yd [~o{QHpx)qoSFlf<}!HH,W BHoGt _`2lJ$lqmYQn/12Z˝ E DHgvcܘ^Lci"93]8kkݚ(ŗQEI( # Jj0_v^{K(".^.-_|++7?=p7 s24*rs^m|2 "׎kv]4QK<'ƒ_GN6dtufV8TlYz$ըF`C=4qK䱠= ZX캙G'ՉٌYO"m>;ѥzU%'\M8ǂ-ZxoF$jgQ ~&W9.ciF0T&SXG\stoKW|O> 0/79TbI^&(UC>hjAg*e%MU1)2j"LЏVtϱn}\*pו= U^H4$ؒeT߮u Gh՛[k Ե'@s@!#ф6zL|/'3x)8MW DLK"^,9E$qB,J,PL;0Yk@"u0UobCL%&ү):$eZaY*?ӷ/N>t{ɉipnJ+g8K>oF.eHQ9Ah˶414(VQd;f<8e1 e`Ffͷ0UtWc_w_`6{ peέ`ԪѠFOFЛgu[N"Urq"CXZDOg0]o1QyqW%SqNbV:{mؙtXkf(xc7?biܛ{k^ iA9BOo\:?/n1>6=$ʊcڪ[:iD""]Ʉp}r,p!Ltu%EF M|BlUK1<#8kt~-GtKJ6NO,?];ǎB X(يNԏ'܋=|lovrV Vx L&73FzOnQ:! "qƻ5ڝF {-%gsh\(gm+,{OI?*^^my 8kET敨लzPXo`wIR=9q\;2f}.ܡ҄rLwW d+gȵlNHՕ,l6N N"hi;?F`}nʠwTxct =gT2\=21Pئ Ԯ &S^'HU [ӁhuzuWG#Ж2\ԑnP)p(~T&AgzzEB ՠUueZdžw139;%wU-$,|<w#\ƒШ<+b\ T4{9,Q|?3 E QHtRu.`ԟ/aY# 5?z 0R) 8ueucJ19$ ƹHۛivUuFk"M}a9q@x_Q|㕲X쎉%^Lc.9-sg8pv2SBQ#%`C͡}23`meݚ\r 9lm ɩ%?߭D+<}~ykR ,pާhVls[gu:ly̒y5dv:98^ \t24zl_7F7T'L/oKe ICݕ{ӁKAh.v!y=\2A.4VѷѼQZkSqusv[:k筋'HرqhY?A88f[#N8ȩaԔd4@&Ag4*Z.SwgPOۿﰴ!jd:28bi!hNM"!_J4@z"2lI!=!6Iqo !uS/òbj*[*0ݶ={3W`wR (Wf7Yu)UЩ|x;%{^2*c?4,A?Q2ZSdp{=X[?L}Ft[UarTIкmq` ^`-21yO`ɒ4hoaR~h鍯@a!^J^)y j~1oPưbB:Y"ӣ$Jun [T[GC0n-2:*;L y;jo٭F)}^U1Qy}E @Q 7Mih"l8Ď7JH_4% K<2ª /@2KO\jZ )F_4lb86lK׉YMsgJeXt Ej?CqC6y8<w_?? )oqorʏv=Q;i>,^ɣBԁm#Dʿ`פ- fX1͙TTXC8B2hVŽCl`tlYtrH։aZwhP b=_)}f0 U#qVdzx#JOm^+җsK X(#. !Ϊȉi$2MoZ|>SI~bWWgoL-2E#'7 |);pLz yu8X(db{$*i%BZ}Z0c@TὟ* iz$: *o.]sf6omU9\Y E,[t T66pWdStZNJ.1&PtpEjӄNFs3X*&W!Xd-1ahkʌo0m|㓀Qi<8i1={p dE}igUtEϡ#ﵹ)Q 4":m۽E%飅-Z] ~lzhnT =>~ū%g'2Ø K;/2󮿀o:ZcUGAG2˟w o<Na=b6 aLZDmWYłx^/N̽J*fUu@.9UpA r}I*Đ˞:"|/d\z9vdz+J|K8Wqwٶ-@v&5n*;1[n#Z ,4 堐A~| 8z6{\*Iz\VaBX(;aݧR?VZ`WxH6$cdY]5?coJq"0A ڳ :G(2g H{XOh'MuTC7J"r`4gub!fKNi=븚 s& .uH> ߔ x)"=m9TD;#j=i"DdJ>[!~_ ڛ2T:nBбl\ s.6WBQXR Ѐv{"<@4n >ɞ-tѪ􍉦4x$: $O˱R9>k'J."(f֪ă"C*~ ͳd/|F_ !nM%lKn[Lk:BO шBuWJ c>M%9EXӋ+9d;7>j2Stݳ8I x(^1/p(7FweeQpC7׷fku;KOi}E=jIs<"7TɄ"Dݬ"$Ŏ:}S^n[St?8v,RY{A/:XD+ N'{IJF|E;F9dzj%)e Sw £^o|3cl^FAJi  XvǜBz:QfJaNw㏱|r۸4ʢwJNeQziypqp04b+aoJ1?u_åe8\+<:iQtJ yPa5$Ρ #&'}.T͉㛨l^W\nahX?oK .iVH@mHJ7, %nV⃕a2 `:mkE^R8)5s>9/> "-*](4T)u\qjj&X˅:ؔ6Ya&/=YQ>.ghΚwYQŸbsLQu| I  _rJ~āvḐ/ |$|G+ 6 Z8wjk iW=M!gfU 11zxA>3m7(ЅI¿P*Nj$$Gc:4 Z-SOkU-[Z*Eb  *R`}? Վ䷃VmN˙_].W 6Ăi}0gqՎ\~Dq.T7J`SyM,**mL}rm2v>D qnqάVK%`%Ώ:+C\N,Cэ~g%:&_ASҁݛW$-=~oL()#,Pa淫zռ]?T]۷=8vؽr=/#AStO>*T7߹=hNÐj ўo?r3}bvT'-\OÊFS慏O)Wmk+M#D&Lw]2@^,l]I+G;17Rf94 D"5BH2Lm+gѪ2uDF:k5ژ&jIlЌ+*AdYmͿnME\C4"k9#+ -[?!BsR%_O:rEi_O/^8]iyHPs{./W?Y$7LPe(GZtOΫ`-:$?"KT9;djOǁϩ`Eqi\uCrǁ{1Бg}d]NV;Za,WJ$=c e {CVOs\x0^F|mZmQ;Iʊ™|cg~@MX\/rm{>4 N*%+vxz<Щ1oWd2s}_ǏhhZ/r>1l 9`;"Vijg@?< ~4sRL=b!BJ6 k0#8Kh߮_~Kƌ#EoSeL>EMNOA$z9a9CVj<~EN[D WKj "i0ћ%mLYEȉ3;Lg^(@r[cC:m?$ʬOikI<,ȈyOPc:ʝPjP)/SggZpj r]N{BhjMP;gUײKs„r(7kTsae^Q(Z3V7 _6PЀvfELGWPզ|ՙ/Ŵ?cE! NMuwh<EJZʾ‘xtGk;c߄Lک3dk"z˓ *6ד`lV{۱ku%O,W2v ^y9{PYyܮghbMȇ`s GqcbcŮ?G7"ƀfbM 7ѭ`% ҧw]DWG3#-(\Ctл4g@chۦsVlnQDQ_ /e|A_0.dGI7_E>>|j(b`|ejc&2"hlE)ͣ2s_L>V3g/؂Uljepp ud59g(d :-gBƭ4_(Go(SAi$hIM@&3c1-$yǪ*t!v%z!rV}@I*sg g"[.юjkj'hƐ¤ ҉9M̝* kL=oE#,,qT1MD jgݨsZ\59<=Cn0e}C>dӕ*GV:xS$y i2i(i,%#6]H[QӍ5 ۹垒SvGor3X'&itڈJ뺸] b!Ǭ'T2k OkF*UVFEBB? NY+`b-nvJu:,j~;k\Xm2G2к+Lɒ\r-Ղ2IvDMz ̩5$|*IԸ@sZ\iϊ' lFp`AfmX=TNhi7fHecP:CT$O)P.^rm_%/2UR }$G܃i×~9nh+x̰!7EWlo䧕XHb FUP!'O/@) wR+ z~H%*3_UakNО9]`\xjG+@"¾ v3 YeJ7ڙxajk0 0 GW.o7Ӑ~Zmc^F.5On؏ȦEu俳 GrXӿ>ałW##]ΰj)*\FR߭@4y,W>Ą`29Prz _ĮfZGJ`zJMT?[j+Q"2 OVi ++a-=R6\WZ>}g2\v4gkx?;n8?gjr kҨ< @a(NN+,MRNI4gƿF_ (FN@,ּxh߼dMÀ3QSE6U$!Mڄ AB.y/Uhf),! uOBIi7H6X(o~睟UF} 2< afnT\ yi ߺ=~.T'rX4lӾ'9S\eO;s_mz 0|=%=Hך% l`U~_X^ ꐜ`2t{8S`IovJVwA̙#xS\e:`hK.gΧͧH^jp'x)R>7YAhU&SdGNj;_`YDS̠~olԓB]@g맊M`MݪIe5-Fyt:]26%zg+B<{o$c$g[I\N|"HQ|4(Zlhu]0u@H}uI FWc$OFU{6ƘitbkJBF4ٚ/IYyDI3 gEF\`ħւ`#LFzHW=aUiFtNm[q, I,?DG*ˉd[@݌% +qum=DM[yѪ`TPC +k0dtl6{^㹞"xC#z=M{x`|8)C~yн<}NK{$s 'qu"f~Jp,vA@|h E1WG $C;Lm4Wc򂍚o⊎QCڦ?eE:3,Nh\u!p4f׽W:v {OMʢj:tD}5΄5L\5&x۲gWaE<)8UvBh#L8v$+V[T X%f,RQRG&';ua.F aޛ+O]HN~6o^Pia") ~>(B ; Qn0ov=о2L vƶk[5& 0vľ/JڪdLNr+6k383/utq;E .O3`V,-4ujZwLMrԳ,/;  h1n0E?&"cύ pŒfQh0דžzZ5swٛ7t# b7_V 4ZRIW1%kK. \k@h",L;{2+<&U W41N,|ؕ?kkN bޝGm%'{3=y?|G 0 hocqN>.Kjr}7,k@`v ATUe~q X k|H(Z5oKyJX B9"hQ"+n.fe´%"aowި!D+BL(ߣFE{! nP <1-@K_/QO$iCF dڕЖ uk-Jubсrd,m/z]GFfh2XDH9n*1zgj:g_ptW=8GfbgIC sl+tHɻe E1V{[N  F-XՆDwjef#!mP70«}UX o&. [M(xV["<@<Ťrz9'nH ۆCt?|l|;ٝᦝ2m}yZ`ܖAȂTP'v[mF@T4b߶ Iiq:3::+-˜DbY: DOG-`t;UGǁ@559SZ Y>ݾ =宛0rIdE,VS}ĕ]=45Hs oO+ǣS+/?NR}ZB{@^CȈ\&ףK0L9bԢ9Ȳru)x>|NM?p%@Wϗc}8 IX%qtL=„ EYx`I!9uYG6t]-~+3{ZmJT,R*ƚ^u B@&͑Ww8׻iX\S;D."UvOSGfί+^Ap h&MY|yVNu!#v;kvsC;t>a4`rNؾ \/Sr+LJ)4l"189nuCx|wW$2Agv>8ڙ_ kkH޷?gn|>d!{Ch@Oi qa_*W+<)ke԰,-Uy'u4fWߘ!#"8Cj3?WxF$i%w05 Z6g`ħLw%5Ġ[Q G,AP=`Pe)M` J?$A5uʬ;wxQsky2z_BD"mH%wE"mkBRMEށ(" 5x P^Jg'}n߳΃lu˓ɐsmԈ$LeC8/X ьQ3<;-K:%D@%O疀>ČSPKv蜃%l}J[VQ>4X^oGID;$Ϫ4@ 'fb*9a[sap:<Nr=@R͖Q],|ȿ~kX ^I4 g(|m (_qOZ{iv~J{תՆSAc?;v͢.w jy)b!(Ȋ 0wpjo-My̧wnhz3.;[n\Mّ_>0E")Yqp/%21_Es.:Ev"ӐmkYn)I4oYwU#!+HN`+OE G_,5JfЇJXt!ƾ`x{&vE  eWl:rt !wT.pIDW+{'F-&x0UYxᔱ*//\{{}:}.Ʈxr(-|: gnS gVN#Qq+EZ: j*U^$_SvlU+) ZzoV׷$\:E J,HbAxF>qjU䝭r`s21 kKgL_w=ˆ_S@q9֭|חf樲T/%ʱV }}@C潷a U:mn{92P Al|~R|%ei8 &>\" G]V/fzv[2B`/$6̫*B-Hs0#K6G7a Tf߭JVINy4*C&A]"dnIJSX,҇kq:FXx?kPan}m 'Jys">|`hkrq9 )!xfR84d5NI(-BPG ҩ&iOS63ǾtPO N`EW'U/۬K퍜̴LJ%?.cRQ|B$]qClpX 3W2|thT$ t&b}WPYw+q<ݽE~I=mIɘC8uuԌΝ&ޥU+M=(&$ᛉgfA_W@̘:~ f{9W`o 3u1u}_2G&k%HG5>Y^r=̙7\3HOltqf u8t38#{2Ϊq{Kb Sc Or.@pd 9܎ 3t(/4 l"ݺh`2ǤXxˮN^݅{A|lt+_鐲\lQ]uW|[^¥WG4dh X<"†"u$}j)(97:;Ɣ* ꧛K`i&=dG>я Rlr. 6'~Ž5 >/Bu%*,Z( zQ@i1?]ICV!ZܻZI6nXܱBk2XSpVbӀ>oY{Dn,]nDN[Q kY`C|qJaҗ(; JYa(KjWnQ'QoiCl)OIW;s>x}I7,Isul>fF,~]. ̴Apb';>M05O0~.ny![D!RͤnRM-9Cm>^\MbTx1^6+m(5# ė?݅\SKrFh_;TT)C[a@Ղ(mоoɧ)3g -tcC|heu 8#PL3·;S4CPCbU, o$cvXuڤR~| D !wr(fZtۜ&ء)NZq%p85&.q|ӠJGiSMY5QU_]MR6ʞ6OX_ooXx@g~XqSaG13h*4-N /Ӊz ?h xpm$E֟j48 =9v?ѿ42Ox(8[ov\R`O4Y^(yyū$WkBC x=T(V3_Xu@YسyE5t31gl# )Iv&k"SjE0 rҲj)i=&Y>DO5 n$;q;L|?Fq~7^Jb;zkF,d!hP Rr{tT|L4$\kF* fOHF\b ߺ pL ɀWk81mRYc@v]ʜ (Go$*!E5=/[(ps@)`mUw,ygb]`z !)ь>b: (س16M'Ҟ4{K5 ܘw7B6?6|;bC0(s@mmUxňDKh 1;7sW2csCC.ʐFQyFT1#(1*?OLdsO?-en-9_ȱOVfu?MI;odG/:̥AٹOokT{be?o8_P"ct9&\/ { PZ?pUWCqS)9:*Х]] g7xBԸ }q<6+n4RJ%t6.̂`媏K@M:DQ0ڲGRQGy&NBIa.萸Kʪ\;gK۷ȵ@{:/dAj?Z ϮPPJu'I2tg*T%`:{*J~w|Mo]2jމ<=>ZzYÿQT~(޻Fa ү(~"IBr@5U6ФFI$Y_AU W;Z2-~}EY:P XVpXX@RS{]g!j`5tv/?"@Y$_XX~x }~[l*Ziw54[.3׷j{ɏTSⅥݿCN~ڵ"m8Iľc!U-0jMRA.['ig\1ybQ>U<2__|;0_%f R*1!}"h)m=9Pb:}4<IM>:r]V'wh⏂jY7{=v|S}$2>Z:ee%o'Б`v![߱Nt::ĸKU7X'tNٗq4 kCa6rhqޔ8Pf(*CL\U𮚭itgTҀ*h"L>ì["بLux N/]F4>iIk\}cGD$'͇h$7ud2>md(Z=9D_6my(\^?Ķ.#YoB]^q^FW Y_?7Jt\)fk\]b{iLXs1Z0֊\]SM}8 oN* =~E%9Yۃu(mky\ DyjllrX˃+HF[qJ'?f!J)-MT`6Hn4Q Q[PO"+~z QZʰM>z0C ;rq:A9["*ԃ>&|-"\ߪk]Jb_F{8VDvdڎ70=H*oi-"TJbb7W6\-8ջ1ߖ.ZP6 zv'+SabX:JUP ;"sQ``.&- M $=͸HbHOA*K|z@ڕ tyG;N$/U>S rPGFKe{kNNBOeԆv/q2`g,28. f5amko%b,Қk* ~K#hC"Ȅw0F"YPfߕaCc:9W/" BOGvfa=eD}v7Kĝjx/u; 6B5}Y'ŃԸΙB@jL@<I&vs_('ix gt S7~ *W~pۘI +(^3jgU e8_;U w&{<;A9YcN|~B|0gL˺9_QzUfu}3Lt]2ZH!zwkCVrb |[5N{TRܑL$0G]60-׎Vlskt *H1A47q V1u!ǹFƖ).CPڤ);u IsdQSnA /G>2b~>Gaf>튷vX<ytRڗ[7GB'f^~NCA/l0?(j6XڻB% U4ˬq<E_)]> ҭJofy3yusy-CƘ̪=t :ioh|W7<+uey囔x{tsI^$dp~BN7&Ulg볈ǎKETt}xc]~HޅILi"yI<8]vQ,S%snbN71 Qz. ;=E#ϻrs3~g1Ȧ4˷бt{-j oS/K+l>]ʺٹؗ. V`Ry?L?>ZVEbNzceG Yb^rd;(#Gñ(@(5Ptz?'J|baߓQ BeQjVYi$4adkFx*ȓO_W(cn { H$ ԟ4~߉.EhC)y]9 &BW*鈮%91? m1γb8L;]mGS~mh^An~!%iaΖ#C=4S/Br# 'dk/@-'Q)'L tKRET16?g@mjzvҁR}i -˓SqJD@I.HZZ}@"=#~T*‚ocAs[ \L(Hy8}e27Zj]Bqu]2oHɺS=38Kw""+q>ύq3C~ϝ3AǽגN&kZ UZkGMB&hd3lqDRǜoqg[Y}䵙H`_"`d3tEH̨փo=g0·[9qD0)Lo&(fA1Lv3=% c9zfQ^kJs< K'=/(PivZoȢF.sgDvx%D\k [e9'sD/P^ 3ְ!=XB] w -,,ӈݱzy23 ~Ek&QR:HL{:M;ʖ*!^T&(:)zղG' !PC N+wCd@<L'л vmSLmbĈVU=[y5q* Xݑ[]<yC25EęHl#[բuD?Dh<3[JH73l`P@^M&Hx4].ܒ=6'#*}LH<=@ #2%6<@n9="y,-CG**] dOhg=' *!k#& h,5Yaґ*#s{ XLhPsNH9MLQQ{cSf`|n[poȘVВNaG{N&ќ[h9@+4.k\x*bT:w`s#Q3q<\A5MƬ>#hd&ZGZ,v6n@t(1G- wOZ@ 9vAJ-ӤSiPb AI֋?C CW qV):pS@o wGəKJ,ljv)@Qk# y 3Eg4'\݅=Am  KWBXv΀ `aZaV+TSZnJ[KȪ:xae)+ai*9˘wN7?~ș UF^ʚ T'?=綴=zm={7494W>R~Bah-Ag놟OM0A:`h-I'ԮS1/ϑ֓8%H2؏L|JIGxd2S0%84WɚW^Y1wizNxǮ* x`?2;ۛLdPruP]s.W)͠f4*Zs<ٮM#]]$7A#|7LpkqW2HH=y)l="Vk{}?{׋WKZ+ԣsB ]{|P 3v {sɶDBE-{W3nʮ-eҍLp P;Lq-=j\5ٱXrH,ڀ|KхLvH}-˫]愮u=W(5U fHDGUQw+~X٬"(5ng+%t,+RŚXl M5,S^@M+)0|%Oܺ~dFjy>%=Sh eAv=PQea +VrT͞C) 2J;]r6W2Ugoml2t1儗/:YAu12wVa?JaE^QNdExt+#G`Ֆ\`B2\Gf W*tH$nP`9Oַ+o!G~"_ѬXwV|胶P!1kXqLONT q yAmuSy%al a=n`J-}4BtWplK>u`p,Aں5eWhB̟RеI2(ܲ﷡} y(~6'>eө%z}'$uuOFH,dk6ȀѦQw۴xfNIN đA7uOR9q[bYPVR㋻Z/;_!7E dv77V8~jkT䣥v'h?,8x++m`\f𒆌<%jYãgB> FIoA[I{t-МJpZ^$@UA M6kn8"įzޤ_hN%̗pyf'S:VPܣK綀~ ;#XNCװu^&{]BpV+u$0Yǯ&n8t 7煉Ft%fS^3/vpԯqg5VoTEnOtq [S^Ț%&Lʝ4WdRU6s)$Xh%7C^rḠ]%$?|zMN0+A1{ [R35)gCY֜G$O: "_ 6o{Yuفw! ccm9erBG:+d63qM:̷RBI$EVP`׺ j$麛_ULVܐӞ<2|=uSel:.=%?{Gͽ $]xNU_o YBR !3jz։ Z7hicSsё_,W8=ͳ7(lȁmk9;0͉^HI9Ū0MΊApwMuA}Px?qZ~ϣ> eީ.P+#SjGIOOh!OBy`OcwJbs7B6tnɅ/sb1EUv|J*cR+0pP=%lQlCAO6LPr?-4E*L"۞P)6(I[joPzTQ)t} lf%9m(\c%C+F$:7.tb'ؿ$[4Q )ܢ"L`=/@N>uT P챥UTh?ţ=H=AژߪY t}S4?&4 HHt,[,1k|"8WW z|.&]L[2YZX6l,SI|,T5`ģ;JD,‹TUR"j/cp,j8S+nדNfꭷDUm/+6iJDrlq5s{Z ?Z V8(lBli r%O`BIx%dCs)֔B`VzX= tZm|Ʋ?X)cfJT6wPAei ؐy Y>{{2-d=ytqϴ ,^;Et8a;Uh`Iy,Wba i#V.?٠ktIXaqd0*a皞LFl2z*E U\߼_r~FG*$ϵ?Π;0EsKc\]D( 3*sFrܢd%{_if LhgٰNSKKc=X  T4AM\q c&K"0$Ȃ:谷q j^?E]MHb 7HA] J&r%z7*wZ?I(OE[nJW(Q|I #Rb}7soj'>nP>װAJBg]?6wABBP@C3H # ލ`!. 8y,G].BYv*^/BxGmܧO4C0KűsF%I\]_"h-MHӽo Ԟ8m?[%;h/ދ쀗ޯaYxDPs,LY This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to (a) mention the fashion in which this software was used in the Methods section; (b) mention the algorithm in the References section. The appropriate citation is: Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuss, editors, Experimental Methods for the Analysis of Optimization Algorithms, pages 209–222. Springer, Berlin, Germany, 2010. doi: 10.1007/978-3-642-02538-9_9 Moreover, as a personal note, I would appreciate it if you would email with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. You can obtain a copy of the GNU General Public License at http://www.gnu.org/licenses/gpl.html or writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. eaf/inst/scripts/eafdiff/eafdiff.pl0000755000175000017500000004262414160346513017126 0ustar nileshnilesh#!/usr/bin/perl -w #--------------------------------------------------------------------- # # eafdiff.pl $Revision: 252 $ # #--------------------------------------------------------------------- # # Copyright (c) 2007-2014 # Manuel Lopez-Ibanez # LaTeX: Manuel L{\'o}pez-Ib{\'a}{\~n}ez # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You can obtain a copy of the GNU General Public License at # http://www.gnu.org/licenses/gpl.html or writing to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA # #--------------------------------------------------------------------- # # IMPORTANT NOTE: Please be aware that the fact that this program is # released as Free Software does not excuse you from scientific # propriety, which obligates you to give appropriate credit! If you # write a scientific paper describing research that made substantive # use of this program, it is your obligation as a scientist to (a) # mention the fashion in which this software was used in the Methods # section; (b) mention the algorithm in the References section. The # appropriate citation is: # # Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. # Exploratory Analysis of Stochastic Local Search Algorithms in # Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, # L. Paquete, and M. Preuss, editors, Experimental Methods for the # Analysis of Optimization Algorithms, pages 209–222. Springer, # Berlin, Germany, 2010. # doi: 10.1007/978-3-642-02538-9_9 # # Moreover, as a personal note, I would appreciate it if you would # email with citations of papers # referencing this work so I can mention them to my funding agent and # tenure committee. # #--------------------------------------------------------------------- # # Literature: # # [1] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid # population-based algorithms for the bi-objective quadratic # assignment problem. Journal of Mathematical Modelling and # Algorithms, 5(1):111-137, April 2006. # # [2] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid # population-based algorithms for the bi-objective quadratic # assignment problem. Journal of Mathematical Modelling and # Algorithms, 5(1):111-137, April 2006. # #--------------------------------------------------------------------- # # TODO: # # * Fail if any subcommand fails. # #--------------------------------------------------------------------- use strict; use warnings FATAL => 'all'; use diagnostics; use File::Basename; use Getopt::Long qw(:config pass_through); use File::Temp qw/ tempfile /; my $copyright = ' Copyright (C) 2007-2017 Manuel Lopez-Ibanez This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. '; my $progname = basename($0); my $version = ' $Revision: 252 $ '; my $Rexe = "R"; my $ps2epsfilter = undef; $ps2epsfilter = "ps2eps"; ## Comment this out if you do not want ps2eps. my $eps2png = "convert"; # this is only required if --png is given my $pdf2png = "convert"; requiredprog($Rexe); # Old default #my $colors = '"#FFFFFF", "#BFBFBF","#808080","#404040","#000000"'; my $colors = '"#808080","#000000"'; my $intervals = 5; my $compress_flag = 0; my $flag_xmaximise = 0; my $flag_ymaximise = 0; my $flag_fulleaf = 0; my $flag_area; my $flag_eps = 0; my $flag_crop = (which_program("pdfcrop") ne "pdfcrop"); my $jpeg_flag = 0; my $flag_png = 0; my $flag_verbose = 0; my $flag_attsurfs = 1; my $filter = ""; my $legendpos; my $xlim = "NULL"; my $ylim = "NULL"; my $label_left; my $label_right; my $label_obj1 = "objective 1"; my $label_obj2 = "objective 2"; my $output_file; my $output_dir = ""; my $overwrite = 1; my $scale = 1; &usage(1) if (@ARGV == 0); ## Format commandline. my $commandline = &format_commandline (); GetOptions ('eps' => \$flag_eps, 'png' => \$flag_png, 'crop' => \$flag_crop, 'attsurfs!' => \$flag_attsurfs, 'output|o=s' => \$output_file, 'output-dir=s' => \$output_dir, 'obj1:s' => \$label_obj1, 'obj2:s' => \$label_obj2, 'scale=f' => \$scale, 'points' => sub { $flag_area = 0; }, 'colors=s' => \$colors, 'intervals=i' => \$intervals, 'full' => sub { $flag_fulleaf = 1; $flag_area = 1 unless (defined($flag_area)); }, 'verbose|v!' => \$flag_verbose, ## Silently accept these options for backwards compatibility. 'area' => \$flag_area,, 'save-temps' => \$flag_verbose); requiredprog($ps2epsfilter) if ($flag_eps); requiredprog($eps2png) if ($flag_png and $flag_eps); requiredprog($pdf2png) if ($flag_png and not $flag_eps); requiredprog("pdfcrop") if ($flag_crop and not $flag_eps); sub usage { my $exitcode = shift; print<<"EOF"; $progname: version $version $copyright Usage: $progname FILE1 FILE2 Create a plot of the differences between the EAFs of FILE1 and FILE2. -h, --help print this summary and exit --version print version number and exit -v, --verbose increase verbosity and keep intermediate files --full plot the full EAF instead of the differences --points plot points instead of areas --left=STRING label for left plot --right=STRING label for right plot --obj1=STRING label for objective 1 (x-axis) --obj2=STRING label for objective 2 (y-axis) (labels can be R expressions, e.g., --obj1="expression(pi)") --legendpos=none|{top,bottom}{left,right} no legend or position of the legend --xlim=REAL,REAL limits of x-axis --ylim=REAL,REAL limits of y-axis --maximise handle a maximisation problem --xmaximise maximise first objective --ymaximise maximise second objective --[no]attsurfs do not add attainment surfaces to the plot --scale REAL scale the plot so fonts become larger --colors=STRING,STRING colors for 50\% and 100\% difference (default: '"#808080","#000000"') --intervals=INT number of intervals (default: 5) -o --output=FILE output file -z --gzip compress the output file (adds gz extension) --png generate also png file from the eps output (requires ImageMagick) --eps generate EPS file (default is PDF) EOF exit $exitcode; } my @files = (); ## Handle parameters while (@ARGV) { my $argv = shift @ARGV; if ($argv =~ /^--left=/ or $argv =~ /^--left$/) { $label_left = &get_arg ($argv); } elsif ($argv =~ /^--right=/ or $argv =~ /^--right$/) { $label_right = &get_arg ($argv); } elsif ($argv =~ /^--legendpos=/ or $argv =~ /^--legendpos$/) { my $arg = &get_arg ($argv); $legendpos = "$arg" if ($arg); } elsif ($argv =~ /^--xlim=/ or $argv =~ /^--xlim$/) { my $arg = &get_arg ($argv); $xlim = "c($arg)" if ($arg); } elsif ($argv =~ /^--ylim=/ or $argv =~ /^--ylim$/) { my $arg = &get_arg ($argv); $ylim = "c($arg)" if ($arg); } elsif ($argv =~ /--maxim/) { $flag_xmaximise = 1; $flag_ymaximise = 1; } elsif ($argv =~ /--xmax/) { $flag_xmaximise = 1; } elsif ($argv =~ /--ymax/) { $flag_ymaximise = 1; } elsif ($argv =~ /^-z$/ or $argv =~ /^--gzip$/) { requiredprog ("gzip"); $compress_flag = 1; } ## The remainder options are standard. elsif ($argv =~ /^--help/ or $argv =~ /^-h/) { &usage(0); } elsif ($argv =~ /^--version/) { print "$progname: version $version\n"; print $copyright; exit (0); } elsif ($argv =~ /^--/ or $argv =~ /^-/) { print "$progname: unknown option $argv\n"; &usage(1); } else { push (@files, $argv); } } unless (@files == 2) { print "$progname: you must specify two input files.\n"; print "$progname: try '$progname --help' for more information.\n"; exit 1; } my $file1 = $files[0]; die "$progname: error: cannot read $file1\n" unless (-r $file1); my $file2 = $files[1]; die "$progname: error: cannot read $file2\n" unless (-r $file2); $output_dir .= "/" if ($output_dir and not($output_dir =~ m|/$|)); my $outsuffix = ($flag_eps) ? ".eps" : ".pdf"; unless (defined($output_file) and $output_file) { $output_file = $output_dir . basename($file1)."-".basename($file2); $output_file = (($flag_fulleaf) ? "${output_file}_full$outsuffix" : "${output_file}$outsuffix"); } if ($output_file !~ m/$outsuffix$/) { $output_file =~ s/(\.pdf|\.eps|\.ps|\.png)?$/$outsuffix/; } die "$progname: error: $output_file already exists.\n" if (-e $output_file and not $overwrite); $filter = "|$ps2epsfilter -s b0 -q -l -B -O -P > " if ($flag_eps and defined($ps2epsfilter) and -x $ps2epsfilter); unless (defined($legendpos)) { $legendpos = ($flag_fulleaf) ? "bottomleft" : "topright"; } $label_left = basename($file1) unless (defined($label_left) and $label_left); $label_right= basename($file2) unless (defined($label_right) and $label_right); $flag_area = 1 unless (defined($flag_area)); $label_left = parse_expression ($label_left); $label_right = parse_expression ($label_right); $label_obj1 = parse_expression ($label_obj1); $label_obj2 = parse_expression ($label_obj2); #print "$progname: generating plot $output_file ...\n"; my $Rfile = "$$.R"; open(R, ">$Rfile") or die "$progname: error: can't open $Rfile: $!\n"; print R <<"EOFR"; #!/usr/bin/r --vanilla # # R script to plot the differences # # This script is executable if you have littler installed. [*] # [*] http://code.google.com/p/littler/ # # Input: # label1 = label for first plot # label2 = label for second plot # output_file = filename for output plot # legendpos = location of the legend or "" for no legend. # # Created by $commandline # # $version # library(eaf) col <- c("#FFFFFF", $colors) intervals <- $intervals filter <- "$filter" file.left <- "$file1" file.right <- "$file2" title.left <- $label_left title.right <- $label_right output.file <- "$output_file" legend.pos <- "$legendpos" maximise <- c(${flag_xmaximise}, ${flag_ymaximise}) xlab <- $label_obj1 ylab <- $label_obj2 Xlim <- $xlim Ylim <- $ylim full.eaf <- as.logical(${flag_fulleaf}) eaf.type <- ifelse(${flag_area}, "area", "point") flag.eps <- as.logical(${flag_eps}) flag.attsurfs <- as.logical(${flag_attsurfs}) scale <- $scale EOFR print R <<'EOFR'; data.left <- read_datasets (file.left) data.right <- read_datasets (file.right) xlim <- range(data.left[,1], data.right[,1]) ylim <- range(data.left[,2], data.right[,2]) cat(sprintf("xlim = c(%s, %s)\n", xlim[1], xlim[2])) cat(sprintf("ylim = c(%s, %s)\n", ylim[1], ylim[2])) if (!is.null(Xlim)) xlim <- Xlim if (!is.null(Ylim)) ylim <- Ylim output.title <- output.file output.file <- paste(filter, output.file, sep="") if (flag.eps) { postscript(output.file, title = output.title, paper = "special", horizontal=F, onefile=F, width = 9 / scale, height = 6 / scale, family = "Helvetica") } else { pdf(output.file, title = output.title, width = 9 / scale, height = 6 / scale, family = "Helvetica") } eafdiffplot (data.left, data.right, col = col, intervals = intervals, full.eaf = full.eaf, type = eaf.type, legend.pos = legend.pos, title.left = title.left, title.right = title.right, cex = 1.0, cex.lab = 1.1, cex.axis = 1.0, xlim = xlim, ylim = ylim, xlab = xlab, ylab = ylab, maximise = maximise, percentiles = if(flag.attsurfs) 50 else NA, grand.lines = flag.attsurfs) dev.off() cat (paste("eafdiffplot:", output.file, "\n")) EOFR close R; my @args = ("$Rexe --quiet --vanilla --slave < $$.R"); system(@args) == 0 or die "$progname: error: R failed to create the plots (@args)\n"; if ($flag_crop and not $flag_eps) { my ($tmpfh, $tmpfilename) = tempfile(); execute ("pdfcrop $output_file $tmpfilename"); execute ("mv $tmpfilename $output_file"); } # FIXME: EPS files tend to be huge, so sometimes pays off to convert # them to PNG or JPEG and then back to EPS. How to fix this: # # Option 1: Find the proper settings of 'convert' or an alternative # tool to do the best possible conversion. Multi-platform tools are # better. Choose either PNG or JPEG. PNG seems the best option. # # Option 2: Create the output of R directly in PNG format. Then, # conversion to EPS seems easier and pdfLaTeX handles PNG. Still, the # proper settings for PNG would need to be investigated. # # Option 3: create smaller EPS files, so no conversion is # needed. Currently, points overlapped by other points are still # present in the EPS file and take space (and time to render). Avoid # anything that is not shown in final plot. If the points are at # exactly the same position, we should be able to detect that and only # plot the point that is visible. However, a point can also be # completely overlapped by other points in different positions (since # points in a plot have a nonzero area). No idea how to avoid plotting # those points. Perhaps there is some way to detec this in R itself. # # if ($flag_png) { my $output_png = $output_file; $output_png =~ s/${outsuffix}$/.png/; #$output_png =~ s[/eps/][/png/]; if ($flag_eps) { `$eps2png -render +antialias -density 300 -background white -flatten $output_file $output_png`; } else { my $tmpfile = "/tmp/". basename($output_file); `pdfcrop $output_file $tmpfile`; `$pdf2png -render +antialias -density 300 -background white -flatten $tmpfile $output_png`; } #my $output_png_eps = $output_png; #my $output_png_eps =~ s/\.png$/_png.eps/; #`convert $output_png $output_png_eps`; #`rm -f $output_png`; #`gzip --force -v $output_png_eps`; } # if($jpeg_flag) { # $output_jpg = $output_file; # $output_jpg =~ s/\.eps$/.jpg/; # $output_jpg =~ s[/eps/][/jpg/]; # $output_jpg_eps = $output_jpg; # $output_jpg_eps =~ s/\.jpg$/_jpg.eps/; # `convert -render +antialias -density 300 $output_eps $output_jpg`; # `convert $output_jpg -compress jpeg eps2:${output_jpg_eps}`; # `rm -f $output_jpg`; # `gzip --force -v $output_jpg_eps`; # } ## FIXME: Do this on the fly within the R script by using pipes. if ($compress_flag) { print "$progname: compressing: "; `gzip --force -v $output_file`; } unless ($flag_verbose) { unlink("$$.R", "$$.Rout"); } else { print "$progname: generated R script: $$.R\n"; } ################################### # helper sub-routines ################################### sub parse_expression { my $label = shift; $label = "\"$label\"" if ($label !~ /^expression\(/); return $label; } sub get_arg { my ($option, $arg) = split (/=/, $_[0], 2); $arg = shift @ARGV if (not $arg); return $arg; } sub format_commandline { my $cmd = $0 . " "; for (my $i=0, my $j=25; $i < @ARGV; $i++) { if ($i == $j) { $j += 25; $cmd .= "\\\n# "; } if ($ARGV[$i] =~ /\s/) { $cmd .= " \"" . $ARGV[$i] . "\""; } else { $cmd .= " " . $ARGV[$i]; } } return $cmd; } use Env '@PATH'; use Cwd; # FIXME: This should return the empty string if not found. sub which_program { my $program = shift; my $cwd = cwd(); unless ($program =~ m|^.?.?/|) { # If no path was given foreach my $path (@PATH) { if (-e "$path/$program") { $program = "$path/$program"; last; } } # Try also the current directory: $program = "$cwd/$program" if (-e "$cwd/$program"); } return $program; } sub requiredprog { my $cwd = cwd(); foreach my $program (@_) { next if not defined $program; my $pathtoprogram = which_program($program); die "$progname: cannot find required program `$program'," ." either in your PATH=\"". join(':',@PATH) ."\" or in the current directory`$cwd'\n" unless ($pathtoprogram =~ m|^.?.?/|); die "$progname: required program `$program' is not executable\n" unless (-x $pathtoprogram); } } sub execute { my $command = shift; if ($flag_verbose) { print $command ."\n"; print `$command`; } else { `$command`; } my $exit = $? >> 8; die "$progname: command `$command' failed with value $exit\n" if ($exit); } eaf/inst/scripts/eafdiff.py0000755000175000017500000000231614143307125015546 0ustar nileshnilesh#!/usr/bin/python3 from rpy2.robjects.packages import importr import numpy as np from rpy2.robjects import r as R from rpy2.robjects import numpy2ri numpy2ri.activate() eaf = importr("eaf") path = R('system.file(package="eaf")')[0] + "/extdata/" alg1 = eaf.read_datasets(path + "wrots_l100w10_dat") #alg1 = np.array(alg1).transpose() alg2 = eaf.read_data_sets_(path + "wrots_l10w100_dat") x = eaf.eafdiff(alg1, alg2) # numpy.asarray constructs a view. x = np.asarray(x) import pandas as pd data = eaf.read_datasets(path + "ran.10pts.3d.10") data = np.asarray(data) df = pd.DataFrame(data, columns = ['obj1','obj2','obj3','run']) eaf50 = eaf.eafs(df.iloc[:,:3].to_numpy(), sets=df.run.to_numpy(), # It must be type float. percentiles=np.array([50.0])) # Remove useless last column eaf50 = np.asarray(eaf50)[:, :3] def select_side(rectangles, side): if (side == "left"): rectangles = rectangles[rectangles[:, 4] >= 1, :] elif (side == "right"): rectangles = rectangles[rectangles[:, 4] <= -1, :] rectangles[:, 4] = -rectangles[:,4] else: raise("Unknown side {}\n".format(side)) return rectangles eaf/inst/scripts/eafplot/0000755000175000017500000000000014160346513015240 5ustar nileshnilesheaf/inst/scripts/eafplot/README0000644000175000017500000000514114160346513016121 0ustar nileshnilesh------------------- eafplot.pl ------------------- Perl script to plot attainment surfaces for a set of input points. Requirements of `eafplot.pl' ---------------------------- The program has been tested on GNU/Linux using bash shell. If you have success or problems using other systems, please let me know. The following programs are required: * Perl 5 * eaf R package: http://iridia.ulb.ac.be/~manuel/eaftools The following programs are only required if the corresponding features are enabled by editing the script: * ps2eps: Filter PS files and remove excessive margin whitespace. * gzip * ImageMagick (in particular, the program `convert') Using `eafplot.pl' -------------------- See the output of eafplot.pl --help License ------- Copyright (c) 2010 Manuel Lopez-Ibanez This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to (a) mention the fashion in which this software was used in the Methods section; (b) mention the algorithm in the References section. The appropriate citation is: Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, L. Paquete, and M. Preuss, editors, Experimental Methods for the Analysis of Optimization Algorithms, pages 209–222. Springer, Berlin, Germany, 2010. doi: 10.1007/978-3-642-02538-9_9 Moreover, as a personal note, I would appreciate it if you would email with citations of papers referencing this work so I can mention them to my funding agent and tenure committee. You can obtain a copy of the GNU General Public License at http://www.gnu.org/licenses/gpl.html or writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. eaf/inst/scripts/eafplot/eafplot.pl0000755000175000017500000005100314160346513017231 0ustar nileshnilesh#!/usr/bin/perl -w #--------------------------------------------------------------------- # # eafplot.pl ($Revision: 251 $) # #--------------------------------------------------------------------- # # Copyright (c) 2005-2017 # Manuel Lopez-Ibanez # TeX: \copyright 2005-2017 Manuel L{\'o}pez-Ib{\'a}{\~n}ez # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You can obtain a copy of the GNU General Public License at # http://www.gnu.org/licenses/gpl.html or writing to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA # #--------------------------------------------------------------------- # # IMPORTANT NOTE: Please be aware that the fact that this program is # released as Free Software does not excuse you from scientific # propriety, which obligates you to give appropriate credit! If you # write a scientific paper describing research that made substantive # use of this program, it is your obligation as a scientist to (a) # mention the fashion in which this software was used in the Methods # section; (b) mention the algorithm in the References section. The # appropriate citation is: # # Manuel López-Ibáñez, Luís Paquete, and Thomas Stützle. # Exploratory Analysis of Stochastic Local Search Algorithms in # Biobjective Optimization. In T. Bartz-Beielstein, M. Chiarandini, # L. Paquete, and M. Preuss, editors, Experimental Methods for the # Analysis of Optimization Algorithms, pages 209–222. Springer, # Berlin, Germany, 2010. # doi: 10.1007/978-3-642-02538-9_9 # # Moreover, as a personal note, I would appreciate it if you would # email with citations of papers # referencing this work so I can mention them to my funding agent and # tenure committee. # #--------------------------------------------------------------------- # # Literature: # # [1] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid # population-based algorithms for the bi-objective quadratic # assignment problem. Journal of Mathematical Modelling and # Algorithms, 5(1):111-137, April 2006. # # [2] Manuel Lopez-Ibanez, Luis Paquete, and Thomas Stutzle. Hybrid # population-based algorithms for the bi-objective quadratic # assignment problem. Journal of Mathematical Modelling and # Algorithms, 5(1):111-137, April 2006. # #--------------------------------------------------------------------- # # TODO: # # * Fail if any subcommand fails. For example, do not even run R if # the call to the eaf program failed. (See execute in eafdiff.pl). # #--------------------------------------------------------------------- use strict; use warnings FATAL => 'all'; use diagnostics; use Carp; use File::Basename; use Getopt::Long qw(:config pass_through);; use File::Temp qw/ tempfile /; my $copyright =' Copyright (C) 2005-2017 Manuel Lopez-Ibanez This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. '; my $progname = basename($0); my $version = ' $Revision: 251 $ '; my $Rexe = "R"; requiredprog($Rexe); &usage(1) if (@ARGV == 0); my $colors = "NULL"; my $percentiles; # FIXME: single/multiple plots are a mess. This is how it should work: # --single file1 file2 ... --output plotfile # produces a single plot 'plotfile' from all input files. Labels are input filenames # # --no-single file --output plotfile # produces a single plot 'plotfile' from input file. Labels are percentiles. # # --no-single file1 file2 --output plotfile # error: use --suffix and/or --output-dir. my $flag_single_plot = 0; my $legend; my $output_file; my @output_files; my $flag_verbose = 0; my $flag_eps = 0; my $flag_crop = (which_program("pdfcrop") ne "pdfcrop"); my $label_obj1 = "objective 1"; my $label_obj2 = "objective 2"; my $flag_area = 0; my $flag_ymaximise = 0; my $flag_xmaximise = 0; my $flag_maximise = 0; my $flag_best = 0; my $flag_median = 0; my $flag_worst = 0; GetOptions ('area' => \$flag_area, 'eps' => \$flag_eps, 'crop' => \$flag_crop, 'single' => \$flag_single_plot, 'best|b' => \$flag_best, 'median|m' => \$flag_median, 'worst|w' => \$flag_worst, 'maximise' => \$flag_maximise, 'xmaximise' => \$flag_xmaximise, 'ymaximise' => \$flag_ymaximise, 'output|o=s' => \$output_file, 'legend=s' => \$legend, 'colors=s' => \$colors, 'obj1:s' => \$label_obj1, 'obj2:s' => \$label_obj2, 'verbose|v' => \$flag_verbose); requiredprog("pdfcrop") if ($flag_crop and not $flag_eps); if ($flag_best) { $percentiles .= ", " if (defined($percentiles)); $percentiles .= "0"; } if ($flag_median) { $percentiles .= ", " if (defined($percentiles)); $percentiles .= "50"; } if ($flag_worst) { $percentiles .= ", " if (defined($percentiles)); $percentiles .= "100"; } sub version { print "$progname: version $version\n"; print $copyright; exit (0); } sub usage { my $exitcode = shift; print <<"EOF"; $progname version $version $copyright Usage: $progname [OPTIONS] FILES Plot the best/median/worst attainment surfaces for a set of input points. -h, --help print this summary and exit --version print version number and exit -v, --verbose increase verbosity and keep intermediate files -I, --iqr, --IQR plot IQR (25%-75% percentile) instead of best and worst -b, --best plot best attainment surface -m, --median plot median attainment surface -w, --worst plot worst attainment surface -p, --percentiles=INT[,INT..] plot the given percentile(s) of the EAF --extra=FILE add extra points to the plot --extra-label=STRING label in the legend for the extra points --obj1=STRING label for objective 1 (x-axis) --obj2=STRING label for objective 2 (y-axis) (labels can be R expressions, e.g., --obj1="expression(pi)") --legend=STRING A legend like: '"Algorithm A", "Algorithm B"' --legendpos={top,bottom}{left,right} position of the legend --xlim=REAL,REAL limits of x-axis --ylim=REAL,REAL limits of y-axis --area plot the area dominated by the attainment surfaces instead of lines. --colors=STRING,STRING bounds for color range in area mode (default '"gray","black"') --maximise handle a maximisation problem --xmaximise maximise first objective --ymaximise maximise second objective -o, --output=FILE output file. --[no]single generate a single plot. --eps generate EPS file (default is PDF). --no-eaf just plot the points directly. EOF exit $exitcode; } ## Format commandline. my $commandline = &format_commandline (); my @files = (); my $flag_axislog = ""; my $extra_points = "NULL"; my $extra_labels = "NULL"; my $IQR_flag = 0; my $legendpos = "topright"; my $xlim = "NULL"; my $ylim = "NULL"; my $do_eaf = 1; #FIXME: Move everything to GetOpt above. ## Handle parameters while (@ARGV) { my $argv = shift @ARGV; if ($argv =~ /^--help/ or $argv =~ /^-h/) { &usage(0); } elsif ($argv =~ /^--version/) { &version(); } elsif (# For backwards compatibility $argv =~ /--stoptime/ or $argv =~ /-stoptime/) { print "$progname: maximising y-axis\n"; $flag_ymaximise = 1; } elsif ($argv =~ /^-I/ or $argv =~ /^--iqr/i) { $IQR_flag = 1; $percentiles .= ", " if (defined($percentiles)); $percentiles .= "25, 50, 75"; } elsif ($argv =~ /^-p$/ or $argv =~ /^--percentiles=/ or $argv =~ /^--percentiles$/) { $percentiles .= ", " if (defined($percentiles)); $percentiles .= &get_arg($argv); } elsif ($argv =~ /--no-eaf/i) { $do_eaf = 0; } elsif ($argv =~ /^--extra=/ or $argv =~ /^--extra$/) { my $arg = &get_arg ($argv); if ($arg and -r $arg) { $extra_points = ($extra_points eq "NULL") ? "\"$arg\"" : $extra_points . ", \"$arg\""; } else { die "cannot read file $arg.\n"; } } elsif ($argv =~ /^--extra-label=/ or $argv =~ /^--extra-label$/) { my $arg = &get_arg ($argv); if ($arg) { $extra_labels = ($extra_labels eq "NULL") ? "\"$arg\"" : $extra_labels . ", \"$arg\""; } } elsif ($argv =~ /^--legendpos=/ or $argv =~ /^--legendpos$/) { my $arg = &get_arg ($argv); $legendpos = "$arg" if ($arg); } elsif ($argv =~ /^--ylog/) { $flag_axislog = "y"; } elsif ($argv =~ /^--xlim=/ or $argv =~ /^--xlim$/) { my $arg = &get_arg ($argv); $xlim = "c($arg)" if ($arg); } elsif ($argv =~ /^--ylim=/ or $argv =~ /^--ylim$/) { my $arg = &get_arg ($argv); $ylim = "c($arg)" if ($arg); } elsif ($argv =~ /^--/ or $argv =~ /^-/) { print "$progname: unknown option $argv\n"; &usage(1); } else { push (@files, $argv); } } @files = &unique(@files); die "$progname: error: no input files given\n" unless (@files); if (defined($percentiles) and not $do_eaf) { die "$progname: cannot specify --no-eaf and any EAF option" . " (--best, --median, --worst, --iqr, --percentiles)"; } my $ps2epsfilter = undef; $ps2epsfilter = "ps2eps"; requiredprog ($ps2epsfilter) if ($flag_eps); my $filter = ""; $filter = "|$ps2epsfilter -s b0 -q -l -B -O -P > " if ($flag_eps and defined($ps2epsfilter) and -x $ps2epsfilter); if ($extra_labels eq "NULL") { $extra_labels = $extra_points; } $percentiles = "NULL" unless ($do_eaf); # Default is best, median, worst. unless(defined($percentiles)) { $percentiles = ($flag_single_plot) ? "50" : "0, 50, 100"; } $label_obj1 = parse_expression ($label_obj1); $label_obj2 = parse_expression ($label_obj2); my $num = 0; my $eaffiles = ""; my @titles; my @eaffiles; foreach my $inpfile (@files) { unless (-r $inpfile) { die "$progname: warning: $inpfile: cannot read file.\n"; #next; } elsif (!(-s $inpfile) or `grep -v -e "#\\|^\$" $inpfile | wc --bytes` =~ /\s+0$/o) { die "$progname: warning: $inpfile: empty file.\n"; #next; } $num++; my $basefile; my $inpdir; my $file_eps; chomp($basefile = `basename $inpfile .dat`); chomp($inpdir = `dirname $inpfile`); my $filedata = $inpfile; if ($num < 10) { print "# f$num: $inpfile\n"; } else { print "#f$num: $inpfile\n"; } if ($do_eaf) { if ($IQR_flag) { $file_eps = "$inpdir/att_iqr_${basefile}"; } elsif ($flag_area) { $file_eps = "$inpdir/att_area_${basefile}"; } else { $file_eps = "$inpdir/${basefile}_att"; } } else { $file_eps = "$inpdir/${basefile}"; } $eaffiles = "\"${filedata}\""; push @output_files, $file_eps; push @titles, $inpfile; push @eaffiles, $eaffiles; } # FIXME: We can override only one output file. if (defined($output_file) and $output_file) { # Remove suffix, the R code will add the correct one. $output_file =~ s/(\.pdf|\.eps|\.ps|\.png)$//; $output_files[0] = $output_file; } my $str_outfiles = asRlist(@output_files); my $str_titles = asRlist(@titles); my $str_eaffiles = join(', ', @eaffiles); $legend = $str_titles unless(defined($legend)); if ($flag_maximise) { $flag_xmaximise = 1; $flag_ymaximise = 1; } print "$progname: maximising x-axis\n" if ($flag_xmaximise); print "$progname: maximising y-axis\n" if ($flag_ymaximise); my $Rfile = "$$.R"; open(R, ">$Rfile") or die "$progname: error: can't open $Rfile: $!\n"; print R <<"EOFR"; #!/usr/bin/r --vanilla # # R script to plot attainment surfaces # # This script is executable if you have littler installed. [*] # [*] http://code.google.com/p/littler/ # # Created by $commandline # # $version # library(eaf) filter <- "$filter" file.extra <- list(${extra_points}) extra.legend <- c(${extra_labels}) extra.pch <- c(20, 1:25) extra.col <- c("black") maximise <- as.logical(c($flag_xmaximise, $flag_ymaximise)) legend.txt <- c($legend) legend.pos <- "$legendpos" log <- "$flag_axislog" Xlim <- $xlim Ylim <- $ylim eaf.type <- ifelse(${flag_area}, "area", "point") xlab <- $label_obj1 ylab <- $label_obj2 colors <- c($colors) percentiles <- c($percentiles) percentiles <- if (is.null(percentiles)) percentiles else sort(percentiles) do.eaf <- as.logical($do_eaf) single.plot <- as.logical($flag_single_plot) flag.eps <- as.logical(${flag_eps}) output.files <- c(${str_outfiles}) titles <- c(${str_titles}) eaffiles <- list(${str_eaffiles}) EOFR print R <<'EOFR'; if (eaf.type == "area") { col <- if (!is.null(colors)) colors else c('grey', 'black') # These two are unused for "area" lty <- NULL pch <- NA } else { col <- c("black", "darkgrey", "black", "grey40", "darkgrey") lty <- c("dashed", "solid", "solid", "solid", "dashed") pch <- NA #lty <- c("blank") #pch <- c(20,21,22,23,4,5) } data <- NULL attsurfs <- NULL xlim <- NULL ylim <- NULL if (do.eaf) { data <- lapply (eaffiles, read_datasets) xlim <- range(xlim, sapply(data, function(x) x[, 1])) ylim <- range(ylim, sapply(data, function(x) x[, 2])) } else { attsurfs <- lapply(eaffiles, function(x) { z <- read_datasets(x) z <- split.data.frame(z, z$set) z <- lapply(z, function(y) {y$set <- 1; return(y)}) return(z)}) xlim <- range(xlim, sapply(attsurfs, function(x) do.call("rbind", x)[,1])) ylim <- range(ylim, sapply(attsurfs, function(x) do.call("rbind", x)[,2])) lty <- c("blank") pch <- c(20,21,22,23,4,5) col <- c("black", "darkgrey", "black", "grey40", "darkgrey") } if (is.null (file.extra[[1]])) { extra.points <- NULL } else { extra.points <- list() for (i in 1:length(file.extra)) { tmp <- read.table(file.extra[[i]], na.strings="NA")[,c(1,2)] extra.points[[i]] <- tmp xlim <- range(xlim, tmp[,1], na.rm=T) ylim <- range(ylim, tmp[,2], na.rm=T) } } cat(sprintf("xlim = c(%s, %s)\n", xlim[1], xlim[2])) cat(sprintf("ylim = c(%s, %s)\n", ylim[1], ylim[2])) if (!is.null(Xlim)) xlim <- Xlim if (!is.null(Ylim)) ylim <- Ylim for (k in seq_along(output.files)) { if (single.plot) { output.title <- output.files } else { output.title <- titles[k] } output.file <- output.files[k] if (flag.eps) { output.file <- paste(filter, output.file, ".eps", sep='') postscript(output.file, title = output.title, paper = "special", horizontal=F, onefile=F, width=4.5, height=4.5) } else { output.file <- paste(filter, output.file, ".pdf", sep='') pdf(output.file, title = output.title, width=4.5, height=4.5) } if (single.plot) { eafplot (data, attsurfs = attsurfs, percentiles = percentiles, xlab = xlab, ylab = ylab, las = 0, log = log, type = eaf.type, lty = lty, col = col, pch=pch, cex.pch=0.75, extra.points = extra.points, extra.pch = extra.pch, extra.col = extra.col, xlim = xlim, ylim = ylim, legend.pos = legend.pos, extra.legend = extra.legend, legend.txt = legend.txt, maximise = maximise, main = NULL) } else { eafplot (data[[k]][,1:2], sets = data[[k]][,3], attsurfs = attsurfs[[k]], percentiles = percentiles, xlab = xlab, ylab = ylab, las = 0, log = log, type = eaf.type, lty = lty, col = col, pch=pch, cex.pch=0.75, extra.points = extra.points, extra.pch = extra.pch, extra.col = extra.col, xlim=xlim, ylim=ylim, legend.pos = legend.pos, extra.legend = extra.legend, maximise = maximise, main = NULL) } dev.null <- dev.off() cat ("Plot: ", output.file, "\n", sep='') } EOFR close R; &execute_verbose ("$Rexe --quiet --vanilla --slave <$Rfile"); ($flag_verbose) ? print "$progname: generated R script: $Rfile\n" : unlink($Rfile); if ($flag_crop and not $flag_eps) { my ($tmpfh, $tmpfilename) = tempfile(); foreach my $outfile (@output_files) { execute ("pdfcrop ${outfile}.pdf $tmpfilename"); execute ("mv $tmpfilename ${outfile}.pdf"); } } exit 0; ################################### # helper sub-routines ################################### sub parse_expression { my $label = shift; $label = "\"$label\"" if ($label !~ /^expression\(/); return $label; } sub unique { my %seen =() ; @_ = grep { ! $seen{$_}++ } @_ ; } sub round { my($number) = shift; return int($number + .5 * ($number <=> 0)); } sub get_arg { my ($option, $arg) = split (/=/, $_[0], 2); $arg = shift @ARGV if (not $arg); return $arg; } sub format_commandline { my $cmd = $0 . " "; for (my $i=0, my $j=25; $i < @ARGV; $i++) { if ($i == $j) { $j += 25; $cmd .= "\\\n# "; } if ($ARGV[$i] =~ /\s/) { $cmd .= " \"" . $ARGV[$i] . "\""; } else { $cmd .= " " . $ARGV[$i]; } } return $cmd; } use Env '@PATH'; use Cwd; # FIXME: This should return the empty string if not found. sub which_program { my $program = shift; my $cwd = cwd(); unless ($program =~ m|^.?.?/|) { # If no path was given foreach my $path (@PATH) { if (-e "$path/$program") { $program = "$path/$program"; last; } } # Try also the current directory: $program = "$cwd/$program" if (-e "$cwd/$program"); } return $program; } sub requiredprog { my $cwd = cwd(); foreach my $program (@_) { next if not defined $program; my $pathtoprogram = which_program($program); die "$progname: cannot find required program `$program'," ." either in your PATH=\"". join(':',@PATH) ."\" or in the current directory`$cwd'\n" unless ($pathtoprogram =~ m|^.?.?/|); die "$progname: required program `$program' is not executable\n" unless (-x $pathtoprogram); } } ## See ## http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/svn-keyword-check.pl ## for a better way to read from a command output sub runcmd { my $command = shift; system ($command); if ($? == -1) { die "error: failed to execute $command: $!\n"; } elsif ($? & 127) { die "child died with signal ". ($? & 127) . ($? & 128) ? "with core dump.\n" : ".\n"; } else { return $? >> 8; } } sub execute { my $command = shift; if ($flag_verbose) { &execute_verbose ("$command"); } else { `$command`; } } sub execute_verbose { unless (@_) { croak "$progname: execute_verbose passed no arguments.\n"; } print "\n@_\n" if ($flag_verbose); my $fh = _pipe(@_); my @output; while (<$fh>) { print; chomp; push(@output, $_); } close($fh); my $result = $?; my $exit = $result >> 8; my $signal = $result & 127; my $cd = $result & 128 ? "with core dump" : ""; if ($signal or $cd) { warn "$progname: pipe from `@_' failed $cd: exit=$exit signal=$signal\n"; } if (wantarray) { return ($result, @output); } else { return $result; } } # Return the filehandle as a glob so we can loop over it elsewhere. sub _pipe { local *SAFE_READ; my $pid = open(SAFE_READ, '-|'); unless (defined $pid) { die "$progname: cannot fork: $!\n"; } unless ($pid) { open(STDERR, ">&STDOUT") or die "$progname: cannot dup STDOUT: $!\n"; exec(@_) or die "$progname: cannot exec `@_': $!\n"; } return *SAFE_READ; } sub asRlist { return "\"". join("\", \"", @_) . "\""; } eaf/inst/REFERENCES.bib0000644000175000017500000003515114143277046014230 0ustar nileshnilesh% References should come from https://iridia-ulb.github.io/references/ @article{Jen03, title = {Reducing the run-time complexity of multiobjective {EA}s: The {NSGA-II} and other algorithms}, author = {M. T. Jensen}, journal = {IEEE Transactions on Evolutionary Computation}, volume = 7, number = 5, pages = {503--515}, year = 2003 } @article{Deb02nsga2, author = { Kalyanmoy Deb and A. Pratap and S. Agarwal and T. Meyarivan}, title = {A fast and elitist multi-objective genetic algorithm: {NSGA-II}}, journal = {IEEE Transactions on Evolutionary Computation}, year = 2002, volume = 6, number = 2, pages = {182--197}, doi = {10.1109/4235.996017} } @article{DiaLop2020ejor, author = { Juan Esteban Diaz and Manuel L{\'o}pez-Ib{\'a}{\~n}ez }, title = {Incorporating Decision-Maker's Preferences into the Automatic Configuration of Bi-Objective Optimisation Algorithms}, journal = {European Journal of Operational Research}, year = 2021, volume = 289, number = 3, pages = {1209--1222}, doi = {10.1016/j.ejor.2020.07.059}, abstract = {Automatic configuration (AC) methods are increasingly used to tune and design optimisation algorithms for problems with multiple objectives. Most AC methods use unary quality indicators, which assign a single scalar value to an approximation to the Pareto front, to compare the performance of different optimisers. These quality indicators, however, imply preferences beyond Pareto-optimality that may differ from those of the decision maker (DM). Although it is possible to incorporate DM's preferences into quality indicators, e.g., by means of the weighted hypervolume indicator (HV$^w$), expressing preferences in terms of weight function is not always intuitive nor an easy task for a DM, in particular, when comparing the stochastic outcomes of several algorithm configurations. A more visual approach to compare such outcomes is the visualisation of their empirical attainment functions (EAFs) differences. This paper proposes using such visualisations as a way of eliciting information about regions of the objective space that are preferred by the DM. We present a method to convert the information about EAF differences into a HV$^w$ that will assign higher quality values to approximation fronts that result in EAF differences preferred by the DM. We show that the resulting HV$^w$ may be used by an AC method to guide the configuration of multi-objective optimisers according to the preferences of the DM. We evaluate the proposed approach on a well-known benchmark problem. Finally, we apply our approach to re-configuring, according to different DM's preferences, a multi-objective optimiser tackling a real-world production planning problem arising in the manufacturing industry.}, supplement = {https://doi.org/10.5281/zenodo.3749288} } @incollection{Grunert01, year = 2001, series = {Lecture Notes in Computer Science}, volume = 1993, publisher = {Springer, Heidelberg, Germany}, editor = { Eckart Zitzler and Kalyanmoy Deb and Lothar Thiele and Carlos A. {Coello Coello} and David Corne }, booktitle = {Evolutionary Multi-criterion Optimization, EMO 2001}, author = { Viviane {Grunert da Fonseca} and Carlos M. Fonseca and Andreia O. Hall }, key = {Fonseca et al., 2001}, title = {Inferential Performance Assessment of Stochastic Optimisers and the Attainment Function}, pages = {213--225}, alias = {Fonseca01}, doi = {10.1007/3-540-44719-9_15}, annote = {Proposed looking at anytime behavior as a multi-objective problem}, keywords = {EAF} } @phdthesis{LopezIbanezPhD, author = { Manuel L{\'o}pez-Ib{\'a}{\~n}ez }, title = {Operational Optimisation of Water Distribution Networks}, school = {School of Engineering and the Built Environment}, year = 2009, address = {Edinburgh Napier University, UK}, url = {http://researchrepository.napier.ac.uk/id/eprint/3044} } @incollection{GruFon2009:emaa, editor = { Thomas Bartz-Beielstein and Marco Chiarandini and Lu{\'i}s Paquete and Mike Preuss }, year = 2010, address = {Berlin, Germany}, publisher = {Springer}, booktitle = {Experimental Methods for the Analysis of Optimization Algorithms}, author = { Viviane {Grunert da Fonseca} and Carlos M. Fonseca }, title = {The Attainment-Function Approach to Stochastic Multiobjective Optimizer Assessment and Comparison}, pages = {103--130} } @incollection{LopPaqStu09emaa, editor = { Thomas Bartz-Beielstein and Marco Chiarandini and Lu{\'i}s Paquete and Mike Preuss }, year = 2010, address = {Berlin, Germany}, publisher = {Springer}, booktitle = {Experimental Methods for the Analysis of Optimization Algorithms}, author = { Manuel L{\'o}pez-Ib{\'a}{\~n}ez and Lu{\'i}s Paquete and Thomas St{\"u}tzle }, title = {Exploratory Analysis of Stochastic Local Search Algorithms in Biobjective Optimization}, pages = {209--222}, doi = {10.1007/978-3-642-02538-9_9}, abstract = {This chapter introduces two Perl programs that implement graphical tools for exploring the performance of stochastic local search algorithms for biobjective optimization problems. These tools are based on the concept of the empirical attainment function (EAF), which describes the probabilistic distribution of the outcomes obtained by a stochastic algorithm in the objective space. In particular, we consider the visualization of attainment surfaces and differences between the first-order EAFs of the outcomes of two algorithms. This visualization allows us to identify certain algorithmic behaviors in a graphical way. We explain the use of these visualization tools and illustrate them with examples arising from practice.} } @article{BinGinRou2015gaupar, title = {Quantifying uncertainty on {P}areto fronts with {G}aussian process conditional simulations}, volume = 243, doi = {10.1016/j.ejor.2014.07.032}, abstract = {Multi-objective optimization algorithms aim at finding Pareto-optimal solutions. Recovering Pareto fronts or Pareto sets from a limited number of function evaluations are challenging problems. A popular approach in the case of expensive-to-evaluate functions is to appeal to metamodels. Kriging has been shown efficient as a base for sequential multi-objective optimization, notably through infill sampling criteria balancing exploitation and exploration such as the Expected Hypervolume Improvement. Here we consider Kriging metamodels not only for selecting new points, but as a tool for estimating the whole Pareto front and quantifying how much uncertainty remains on it at any stage of Kriging-based multi-objective optimization algorithms. Our approach relies on the Gaussian process interpretation of Kriging, and bases upon conditional simulations. Using concepts from random set theory, we propose to adapt the Vorob'ev expectation and deviation to capture the variability of the set of non-dominated points. Numerical experiments illustrate the potential of the proposed workflow, and it is shown on examples how Gaussian process simulations and the estimated Vorob'ev deviation can be used to monitor the ability of Kriging-based multi-objective optimization algorithms to accurately learn the Pareto front.}, number = 2, journal = {European Journal of Operational Research}, author = {Binois, M. and Ginsbourger, D. and Roustant, O.}, year = 2015, keywords = {Attainment function, Expected Hypervolume Improvement, Kriging, Multi-objective optimization, Vorob'ev expectation}, pages = {386--394} } @phdthesis{ChiarandiniPhD, author = { Marco Chiarandini }, title = {Stochastic Local Search Methods for Highly Constrained Combinatorial Optimisation Problems}, school = {FB Informatik, TU Darmstadt, Germany}, year = 2005 } @article{JohAraMcGSch1991, author = {David S. Johnson and Cecilia R. Aragon and Lyle A. McGeoch and Catherine Schevon}, title = {Optimization by Simulated Annealing: An Experimental Evaluation: Part {II}, Graph Coloring and Number Partitioning}, journal = {Operations Research}, year = 1991, volume = 39, number = 3, pages = {378--406} } @incollection{FonPaqLop06:hypervolume, address = {Piscataway, NJ}, publisher = {IEEE Press}, month = jul, year = 2006, booktitle = {Proceedings of the 2006 Congress on Evolutionary Computation (CEC 2006)}, key = {IEEE CEC}, author = { Carlos M. Fonseca and Lu{\'i}s Paquete and Manuel L{\'o}pez-Ib{\'a}{\~n}ez }, title = {An improved dimension-sweep algorithm for the hypervolume indicator}, pages = {1157--1163}, doi = {10.1109/CEC.2006.1688440}, pdf = {FonPaqLop06-hypervolume.pdf}, } @article{BeuFonLopPaqVah09:tec, author = { Nicola Beume and Carlos M. Fonseca and Manuel L{\'o}pez-Ib{\'a}{\~n}ez and Lu{\'i}s Paquete and Jan Vahrenhold }, title = {On the complexity of computing the hypervolume indicator}, journal = {IEEE Transactions on Evolutionary Computation}, year = 2009, volume = 13, number = 5, pages = {1075--1082}, doi = {10.1109/TEVC.2009.2015575}, } @article{ZitThiLauFon2003:tec, author = { Eckart Zitzler and Lothar Thiele and Marco Laumanns and Carlos M. Fonseca and Viviane {Grunert da Fonseca}}, title = {Performance Assessment of Multiobjective Optimizers: an Analysis and Review}, journal = {IEEE Transactions on Evolutionary Computation}, year = 2003, volume = 7, number = 2, pages = {117--132}, alias = {perfassess} } @incollection{BezLopStu2017emo, editor = {Heike Trautmann and G{\"{u}}nter Rudolph and Kathrin Klamroth and Oliver Sch{\"{u}}tze and Margaret M. Wiecek and Yaochu Jin and Christian Grimme}, year = 2017, series = {Lecture Notes in Computer Science}, address = {Cham, Switzerland}, publisher = {Springer International Publishing}, booktitle = {Evolutionary Multi-criterion Optimization, EMO 2017}, author = { Leonardo C. T. Bezerra and Manuel L{\'o}pez-Ib{\'a}{\~n}ez and Thomas St{\"u}tzle }, title = {An Empirical Assessment of the Properties of Inverted Generational Distance Indicators on Multi- and Many-objective Optimization}, pages = {31--45}, doi = {10.1007/978-3-319-54157-0_3} } @incollection{CoeSie2004igd, publisher = {Springer, Heidelberg, Germany}, volume = 2972, series = {Lecture Notes in Artificial Intelligence}, booktitle = {Proceedings of MICAI}, editor = {Monroy, Ra{\'u}l and Arroyo-Figueroa, Gustavo and Sucar, Luis Enrique and Sossa, Humberto}, author = { Carlos A. {Coello Coello} and Reyes-Sierra, Margarita}, title = {A Study of the Parallelization of a Coevolutionary Multi-objective Evolutionary Algorithm}, year = 2004, pages = {688--697}, keywords = {IGD}, annote = {Introduces Inverted Generational Distance (IGD)} } @incollection{IshMasTanNoj2015igd, editor = { Ant{\'o}nio Gaspar{-}Cunha and Carlos Henggeler Antunes and Carlos A. {Coello Coello} }, volume = 9018, year = 2015, series = {Lecture Notes in Computer Science}, publisher = {Springer, Heidelberg, Germany}, booktitle = {Evolutionary Multi-criterion Optimization, EMO 2015 Part {I}}, author = { Ishibuchi, Hisao and Masuda, Hiroyuki and Tanigaki, Yuki and Nojima, Yusuke}, title = {Modified Distance Calculation in Generational Distance and Inverted Generational Distance}, pages = {110--125} } @article{SchEsqLarCoe2012tec, author = { Oliver Sch{\"u}tze and X. Esquivel and A. Lara and Carlos A. {Coello Coello} }, journal = {IEEE Transactions on Evolutionary Computation}, title = {Using the Averaged {Hausdorff} Distance as a Performance Measure in Evolutionary Multiobjective Optimization}, year = 2012, volume = 16, number = 4, pages = {504--522} } @inproceedings{VelLam1998gp, year = 1998, publisher = {Stanford University Bookstore}, address = {Stanford University, California}, month = jul, editor = {John R. Koza}, booktitle = {Late Breaking Papers at the Genetic Programming 1998 Conference}, alias = {Veldhuizen98a}, key = {Van Veldhuizen and Lamont, 1998a}, title = {Evolutionary Computation and Convergence to a {P}areto Front}, author = { David A. {Van Veldhuizen} and Gary B. Lamont }, pages = {221--228}, keywords = {generational distance} } @incollection{AugBadBroZit2009gecco, address = {New York, NY}, publisher = {ACM Press}, year = 2009, editor = {Franz Rothlauf}, booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference, GECCO 2009}, author = { Anne Auger and Johannes Bader and Dimo Brockhoff and Eckart Zitzler }, title = {Articulating User Preferences in Many-Objective Problems by Sampling the Weighted Hypervolume}, pages = {555--562} } @article{ZhoZhaJin2009igdx, author = "Zhou, A. and Zhang, Qingfu and Yaochu Jin ", title = {Approximating the set of {Pareto}-optimal solutions in both the decision and objective spaces by an estimation of distribution algorithm}, journal = {IEEE Transactions on Evolutionary Computation}, year = 2009, volume = 13, number = 5, pages = {1167--1189}, doi = {10.1109/TEVC.2009.2021467}, keywords = {multi-modal, IGDX} }eaf/cleanup0000755000175000017500000000025614160346554012527 0ustar nileshnilesh#!/bin/sh rm -f config.* confdefs.h \ src/*.o src/*.so src/Makevars src/config.h src/symbols.rds \ inst/doc/*.blg inst/doc/*.bbl *-Ex.R rm -rf autom4te.cache eaf/data/0000755000175000017500000000000013627006324012053 5ustar nileshnilesheaf/data/HybridGA.rda0000644000175000017500000000041713534247654014210 0ustar nileshnilesh r0b```b`bd`b2Y#s1GeRQf#P0X3fbvҍ3`CC1eLi P}HCiT\gu.Bn Ud!3CiV$-y@ A0C8]CrNb1LL+%$Q/hr΢r= 15R< ND(Nd NbZ.Y`'3L NG7OVWUĎ,eaf/data/SPEA2relativeRichmond.rda0000644000175000017500000000155213534247654016612 0ustar nileshnileshVyHTA~VYme%%TFDAi{nʪ.M"QaaDHDDev!!]DEEٌ?,n |3~ zA'A.nCtt 3ay..uUVWBPYGiI0j7H2] gv|rقkǜEQDca=R2 d ]I$t|=?O< ϿOA}3?C!@ !@#F{?''G?U:j=`R'ݥ[檮3y25ti֊;m5ϥ涙J]ԟ~/| eaf/data/SPEA2relativeVanzyl.rda0000644000175000017500000000165613534247654016337 0ustar nileshnileshV{HTYSLCfR5a/Z"FS9쒻D=v7{.FDHX=(7"ika{}s?.L8;~wagܚ94HA?}h\pZneyֈR͡%$ӕMxwYC~;/.C< ^[ ֕jIj_NK,먭>; !Z("?8ܩsrYҊNLmpyG!\ٍYs}g UXwk&}G˧ tXe'F`h]) }uF[ΐMys[#n `k+/Ρu2c3ޔ:Sp*O8?6֮{F4j(`R~Şf62zNR ?>)WWh=w^:fI]^ Ò!BA )#2F<<]Xw'TuFꛎigC|miK3 zX')y^zg(<(d#i|QآgesW:tL9c]2pAdveEg6R9kWsi K *KD°{$&YI.g9`RӳH}|<y_+=UwW}\pxþ ]J/c8V\.zL?~یVvlf|_g31$S,0&lj#La#mbc^8k6qB h8) i4rRo)8%T3oʍzvJ?ݵ$+hK*?gSI^mD eaf/data/SPEA2minstoptimeRichmond.rda0000644000175000017500000000301413534247654017342 0ustar nileshnileshŗ{PTUǯ":dFd">I)ƟoQ=.,h*(#4"c+̦| "pPcu.b\>s8w##AP *ʋvT?Յ^&iқ,IzӼp.d1 ttW& Ǿ_W7jɬ A8B^3H?[EW@Zj 5.)!Pj*h|6NoxA7AcS!~/>zoI:bKWϛjݛ -| B jx ?u'=Hz*p/ȿPy2IA`Oa\&#hSYEw 1L;2a}ʼ<%!oxz&*_ƍ>}SHM;n o e/ Cj^%hv6S\P >d9k[ݸZHa4#R"h_W wz}Gs΁X+NN X?DP7a~a\K?ָHa%WcAױ1h^իBuqF s7/NaD^%W#6`_H:ژi@γEldc$yt)MUq 9?BTց1X ĉ~XZwbx>7ucݚ>pt.6/o 0OpoY$ W9Swd 귰O[S b3ͩ1,!НǺ\\-k*>t{ᾹKkxH(&3JM }я< 0[!=CwU6K 'NX^; 8AoٗGzf%Evi^aEJdmqpחxV@oC:~nxδߪ}BC^ގ:덂RB_*׳<<Y2 YjE^k*swk^^)},B?dX/ j&B+}u9`7Ѿ|_̷e~ÑC\ne|Ǔe5ӵV!\>rlx˃p*˝o>"wzbB乣4_u >?yod$߆,y >u?ώ_> +xTAF>ד8?0JܾH;?'gc+{*xE]>t7<b)rqnρBs;ѷٳF h#1GzN|9fpϘM ;^|Q5wn$J¶Keq۾{J477-щ Ew=}]xeaf/data/CPFs.rda0000644000175000017500000013102213627006324013335 0ustar nileshnileshdi ۓɾ:0۱/)% i-I*IH& Q*RD(/TBYB" I}__a 3|>63Gˇq񅙉i~0wĺqebt6m]?v [@C ΘO[@r( )MB&7iкS4?e1fa bnHnwκtC\hLiZxg=:˸hRvق,Q҇TT\꺠$6b^g$9ux/uGL:vL !xELox%wz#+ a3'ED̎{yg ~NK nm07&#B{4Z:δrD3!$ ,!aVN_n~9R$9@训9!U*Կ,' OEhfTZ0ݕP| %7 I8o_,P~~v>B`+2CSOz9>x)se) |-cg7]ygp;s_DPM+>LjVkmZ#X؞Y]L|2/W1^zR72e4ӾK`ɶ\҇1 o{؀]90OHi֕;@Ѻ湽W{i0e9dH|q BDX,v!^}+&U 0A =:JUW 8!~x3 _e䊗O4[y:GP 8 F«)eJT7=dg떴,KuVgL'$ oQpYD/Fn?4kۏŞj8$2k[@m;SR{U"DQXVvWfD=楽Nmp lrk~=)7#((;y)m: ] [bN`Z%1 B6\2?-엷 1O>*C{R?@CD+ EǏq˽KBȠ)ne{҄z4?󃾄>mRץrzUva_2wc?JŪRA4O'̈́&*3[&OqU}w';zdڭug5m͏{LRA-4"eBQP_at>{,{mCʃ@PhJ o!Py8O94z;m 37"ZnYr'Cی#dZV c]Ck"L\߃pߝ9F]{jՀ,:G:;kpY#i_[}5}bnA73%`g&.]@瀕:0YtxPP{]z#@ ˢtZ^s./>3rwp!DZٻS|T dNlAÌ:(pDN?)TM~g -ZWs qW2h<8-\0rr:1*_体u@#N\Q3D鵰u^Gl=CʝdB<\%Stnj>%wuDkԜR5vgWWF^қDޑ-62_G^97_]e2M Hq9`7+J%٧h$rU߿7/Bڃl;Ok9D0=7Í 䄗ށEfO|83_g\A&;"Yk.j5rzYwu,`w*>Bʁgw kQ8yIML&mYeu~e%C=ԵКOt|h8%7߼-_XP+R!4NVS^.HlFkfCP>n'=_H jo5J'y)q}}bݠѼ! u>GC6hEL`2L(|Պ#< Tk~IEJ\_D_Y4jZi5K[(r)ێܠ-h|p&A߈ANiT,~d*⟌'= S|Yh:t>Sp K3gAqԂ՟ Tt@Zj&v~PeT'Q(&JiX@%[|G)%V[^&[l^>[C)n -0UA]p ?v.Ilz\|Oo)U X2_*sWxiI!bZaU~Bާ:iWpa2[z&J^c](}qW MP#߳evTZD!Ey#ߎ@*g{or.P0=8zWkHqnpQxr ~G{"Agy϶ưuG]6wB4~;|( \Xvh0vgqaʃ#"+h7ߺ|d(ƀ]D7r}8q'M(׽&M\nl51\oi@}yS'nzQv0|װOI $Ƚ #|=ӆpx` -32_Gp{4|R *O8Cٗl_{3 }v ̢kէe{Jnc%~&p^e}W$;X ?5]=xk {@\"vnA`[ ZNeėEQ6~ہk'}O;x^0v˒?w?VX8 Lşow TS&Cc%EZC$R4TF/+`!ADŘ*<D]6GOǿu0uSVVPҹec|K- @xSN*X c1 b$^gf~dNBa ݬ-Gw uX/TR>SK%k$~Hl95̇ZbxBPnSG;^*&$XȆcQ齥wT_ND SB$qC# ErqώzAꎈ~>.leP<}{Ut"FS7!2/Lgv(/tE p4.*RǸ/"AmKgig>Q{L|ށV<u+ySnm/_D儴6+4/ōƐ%e?m(O%[Ԓn1)1U%x yCJԣwM|~Iy-u7p cj28uPRȗ6Q_Pu܃FKnI㏆BkPnKU0Iϧ޻i4|.m EV.3EYQ*T>ł *]z<:)/ O5mu IJW68 -͓lE>mFqkpjQwHEs'I0/O_![~ڋV??-Db :ˇkG~/XّrVֽU"ryQнXsi{%/( Q#(RѭTuq,|mᅰt5܏sy,z 

A>]eɛsk$fjpmdMz6 LInL~&:{ck`JxL^Ce٨*>'_G﹔[˭>AjHB}}̪׺'@:T!Ap,tayjRp?<ФJ_UĿy\~bbsb/z0Y'9u5*;+9kv`uKpO|7_|Z{ZBUO (K?hNZ7tnF#,e-;誃>j.T\Rgs(܈<\^);L齺g+sAL^V^c]%IdxVYE;cipjZ&Ztb}x4| \gs#uSݺ} 5-]Q \Lw $e;)e l77+%ۯ 3-}aC{A`7mh7xK11hsu *+WAб͂`]ua0W =. Uz4c)Sςmkec(Cw- Zl%"?9N?"+KÎv zrVF*s]р&l~?+WGDEKCoI +$Vrn.I!tϟ@(j@,Ń(~k¨ ;&i؈,AwA91+uj:\XޥBpza &WE2zaQwd  :6EkJD,X՘u茑ڳ @4gt$$qza'FjFoh@}!6G_ AתXuդnR"4/ koߗhc?WUUpq l­'=ȏYC4FLZe/NP_\y}i<F5w1ҫö3!KhGKmս[IG͌C+H-p w fES 054k̜/,k? -}ۇ˙@yDKC~ԍS%NIC˟\U*cT,'v_ 1-}@Ǡ[`[\;SwwiiŇp,U9r#Asڌ.w3 7yVJ Qz-;eQ/9Ԫg9:;P t·*Q6}0b=*׈Ye~1^8--pu=v_f߲ҍ7ܙ9(9ɓi{8]wja96GLdw 섬o?i_۴ⓓ!ȏb\BX CMZV^^1X7&+ p?`-Z\Nّksdt07wI>"꽼-I"s\ }rOR/>w~{tfFrtC'W_x}<7 8Bj!F˧{Wγ - }`v(8`sug` $Nc=,}JTZy]<{Wh9Yþf[Q[79B~D? %,P,'vrL @-Y,-뉗o}TwT J 6/* c.krwi-ބ]\j(x.TtdR^pAoUxpme~:;;"Rb * r?M=2lވÉ;8WҮ=BfWh:ltSߧHg綫J.7v( ;~OweMO] ^ MeAsf4W Ѧ+ʄfl:8px#! lG%ؑaή^S"v79;Gv#d'jwYjs(,$}Z Z_Wo+VMhj]50<ѣPTv&eIfв~wh?U?g1[.){ړX)+qU BF׽(`TŜi'18H}ӂ KR{cIpJuئ|@:@.D0!x4")B}daXr; 9}zA:a'.<<}Z1lIHqw1a32%g O[&#SI韻RjhR-;!j ^,U X8wȻFz䠮}38Dw̩GGqC_P_Z.Tmk;Ls%H") 8T,3.Y9?0{^F[m7B>O{aP)Q1}XnuxF"skfRJ;MCDH6Y[֓%;-L]Fw 1B3Qz:W.' n+ ~xGphM,(\3]vϖJ|!t|䶍Hf15{X {\ =f;kmH5P!1{謎zp}mnr?ؿ)YNZt;m-|wCVtuZQmZX>y0z,B^()y^Ѹ%1l.^>}'EEwg=w5z!^bXcxcagp٠P(5> ,܄Kty4k(6 Q;bŁx ة=rS[u`RYF:MW}οS v|;0X?CXnm巰UCݵfh}?s^M<3KsO=3h/m _z&ۏ$Ȃى7px-׃µOR/cY=i yW=N|XTv s{bn426ȹ 'VWI8H8/juͺ3Ą󷃗Pf#`G7透W ߟk ֥Ykj+ˈh̤)Pnts`6#y@, MTsd ^ [V.WZ:#}:5tv9l6DvGtNLOFMTE13vxV*/+ xz#Sq-?pcཟWZWap^` VnvK:. '`F~#<'KPorAbg@gr:z3R//ŤHopM%HfKt`B#HA-mm=Nw} Wsf;>I˃/fi5 v_. ayۆؙiB{9M@ϥ 1{Ď^ D$]x) ֍[^_gg'$Džs ĭP5i5yc9\'Hj`ah d}QDt6` fnW4ޢⱗ)=W^su51\q'{òH#%m9?P޲)h,md-4s8ÊmGH׌<^(G5$~s2//̀Cʎ"@֚Au32ຝT_(t-BkXt@`.'hLw>;SIs"Sr;Cz3^Zuv?b&~wuh=Uc":^@ǴHwzǫ.Vsʐ`4>2f7 vN|̣ӥr|Yb恞-sb #\5_ځ}?˼PL}+"Gb$«vo1kuπ ;EHEEpFEkGHq9Vk?ҵ/a>QشE>ELG<l/C/ׅ`^r!8l=]z΃Eo髫`Z2~sDd}L=&~yaiB݇FHWonGi4k3u~X%)BR\9$y1 'jgt3ӕ. } ]s8: z8%ѧ7.rh\+kK< wtXO1rb/8uQ<AsQ|tx.s  +4em ,Q|߱rr/#,L0h˄@7Ʋپ;^|O+g+=Qt+c 5j轹+Kh_* 4 6-9$㫊/^-%Y s Ȃ|-3v \(U-OR>ʱ[ !%Sk/-Tl}tMWOeTDb;d0aST-g&HJ/MظX8MsSTp B: ZYÝ:q06n XGS4scn=Eeh?U~8_35-~ݎ6cVzǰ.A 0D:9-.Y$O,&sWupU'^NIIV>$4 2v_6Jݠ AIm-⦯QWj[~Nfc>Zr'h2(a[23{xZrr٫5Ӄk"ZxXΣŕGW徣) I5YXDVdR5:&`wg;=}^Ֆ[iE[aQbhx=lZ L.2-LSsȎOюgh06dYF3,IuI'*9޼BD~~ z wf)կ;cO(F;i/G?0ԡ%/ȲU| <+l^mn;f=czc"-E|{Pu=m[}zؙwszfc>[!ȧ6̑E*?|~䤻wD}Eڦ[|Z7M)8IƯZ~w)07c90h%$GYLZT5Rwb ,ܱeShM&Tv50pYg.GӑX% h"SQHAyu茼"Գ"GtQoO nJ˫g 6gu.;fU 2ߢãZƣ#7}GP`AN/9@&[ϧn+5BrK}r2'̐^| D qtz :! uEM܁`dze>a6P6y~_  JjkmyнT1 J^Y@E6P)}S .d/rHK3t!| 70?#oѶCi_Ѭ(b/b Z27l: [mc@!ɇ)3Y5^Zv]/xwO6}v!R<繆m|$9Hܪ9},k${S0j4S#5:ո<V'sn3xj!5bYcDAW@U)O<AGX+\qCgx~OH3|<AKcz>*{wcx EӢ-4'}/Aן},;O3It~q RZluqAF)h_$k ֎@@{ن /<^ %KŀŝBӷfLoZ>-Ins,Ͼ•R~Y 7wՂ#Qoonnv7`pk7be79J,}5@}mX6PNh'UxjE}}]te8K2y_r<^FO#1`3.LW_\C+#sX;f>oe3U`ía K%;jGYhp"D%E7|{(GYREE4P&eśPfڌ]$ @kk_O+9AdPW3RnW =msB2m|5,7FX]1 Mz]}󗅻Ww3 Fq0 ݭ㺵h))uJmDg*!w}5kKw xBsThqR$;)c0Ը]$N)CrF >fUv9 .vg`רI\S{|fs5 kleP{%\Nmmb0&ww(s]CGSbݣN1 t>W"釷¶{m5W?3d&T?sܗl5e ]p)uXo'ׂ+Dj0U;*/zM@0WLg~Av*6^@;nńf!/XcexZ^΃"yH<^rRļ8eOo£Oq`)8o yV=`NK5$QLg(UO')k;P@/Fݨ[h@YƁss~ eC-N;s;-V. GUР`}DOc^eHS{ah?]O2k %+!p _hq;YuF=|O E䦩<&0[@᷆2[N_IqU'ͫZ^&yaqv"TR7\#ϋPKR˅zi|{ӌxGN{?"~b6,Wv-hbmn$ =Y6b"w(ZL;jya]u0JV,- )6ؙ;g\C5Z <^gV%>>̯>˿i~|kŸ;_xRh˼3;%u$Xdn \ .v3Aalh~IR;;>N>W[A9`s5e?=VUKզcbI!k7J㲛:UБ]UtWA`?Wo쩟]>MޖW95驂C(ʿ u毋_gǶ٫hn7!ʀ9 yĺMsq??nupUQɷ|-hYw"mEe`.uhM LP GEr޸"RCO]K}dls *gO9mG}2T/:Aգa.i`FRr0D0ӃBczy 0oT Tr#: Lc}]Mv++l1Co%=re9k2M} X }°V0l<},B9%EA)&+zZJ`"X.! cqTYj hDѥT?Vxh0ܳ)˔\SB@bRQ{D|WH-PB|:{ Ƭp &9fWZ՛(+3G>T.p Ì#Pqwph#"6tzbrTh Gfoͣr} B!5ŷLkk ζVc, >tOb܁pnY^jzΒAonu+@nO2 n'Ƕ\; h >}[i`֐y1i+܄,9֫WM1|f14 8{{.|y+ [^)0(U]uX]}iCO1坽([mwwvɂG#{|IlQ,:"3m@hۻg sM`KAdLM#.Qwnhl7F /3iM#vU J zWn'3< ;$v۵5W,E^x7^I:!;̗66 uN=כ[{S'?}~B?N*\{!R ?6tqwe+p'm⁻C!='k$+X> Kٝ"ckgu2xY]:Xm h%͜פklZ-ulPNK9빗23m%ns`OOU2*|ν\痾)\#ħ,o 孺oA/% D̍7Y?MOZSSf]!Xt5IF?lDH΍AHWiaV!Vp\>akkP %['3-I\9dq(aMwrըwW: `|i4 !O5&F OgՊ`߹Dq_!fuh62$ $+fUn]wΖ&n]ܣfԁ.<}I}6X;  WeU^¼a7l»_@z.}`mקߠzmyPw\<ĹR7w!5.ci x2* j9^cz!qnX^>`_4._v?nTlpt8Zh[R50U}C vWro$SԘl9Odށsԍh' }?Rfy4\a{)kS"zssv o윈w~9-ҟ8P;Rfnāfw"l<˧Yѹs 㘑OSV+aSP+Ô:>m">R+EK!|!>:JĄ!0(?]kB^6IG_| S%7%+#QyvJ޶=P* =*Д}M>f:6TKSI6(?v̗mB: -s^g=QpQ%Ai:ITj>\N b'(ѷQ"^u_Vl@p7= W.=;i59 2Mޔ~2v`E:X@`}1kWYNbGt_Cmo g>  3x՘ŴZoOfxpkި'K`p?2f$W%ΆdI˕9:7  $^>3\&n0daˈϮPgOA˩@ ZԷ zL|bԱǹ}]uw@*ͺu=+ΏlO|S6mFi\h1,yΣAXC?$79csz8._?t@4|[x5 {2Yk9<OGVX+ I!B9=̧f;Z̧x}Qcwsҳ xb[aUzII~/Q?T@}p 3pebθJάO(Ee `aYqS*'jF}eZhNOQ 2xY:ĠE&{ALؼu' x5VW9 7cƜvoߜߘF* 8X|+./u hyKYy`:q,$Ţ@.|6Yp>{P3[.:RzeC}\(g2g|_77_wG16p0?fBsȭs'=ro SC;w5xRTk.Cnvx-/#|| MmNIkOzD&TKDSzdr8w>Xߘi; .b{ Y@gkj4g}ܜ%NJoE Z~%>_{¼r2͊6*햋 N CklG@!Zbahktd2y6~mEkgk`R ^zn9| UAm`:ک~k-!r.Hogo7hl? MA%Qp{00lTiwBPa)"YaFqvYy,Q;>!@ 0ٮ? {R+Ll:0RCZ? &A,i)w:5VwO0Ct o*NkGݕU;c =$*!7[bZ58mx L \2o|.YÒ?Q_Wme]?zg~|&_[%K<@GE>3 :wQ[Vג>me0P/4=-UtaO5;pHx:[֙uq '6gy.`Mv. &%-σi{ B!󝟗s40|x;;C $wOǵE#)c~Fw`e^~^hP6' <5ECEؓGE8ks#{7cy0NP+&շ'p""M! Ƚ?/債{@XFS~=|<ܯgP~#55NE)\T 7Ʋo -_ťS8 S}@r4RG,dwyؙ[2!0wheplo_f X[Z6±NrGlH@%L >ZC"z\h~nDWwRh>r|'?Mj?jpUwnɧarחْW|k8E&nxđwd?i9?hlg'h6F.Ho 9]/prmx:iR r^@޵`y%SQ|vo{Ւp&];iN)ݵ;;,_<]훈:`[ӧ4k2/YC_u@/)qLk/vs^xe"&mll3*[e4:3Eo a%ꐞ#X}jS-7ɗ A m>0!kLjS/eOǡ|d6̞!#S ƅ/rDUs;1Tx v3UiqA^SG+@4_aτ ;׬?ɠ} x xOzVRMR#N_{dI ]sߤyx*0ܵe[q[T_6AR;6cITN11' H3}R<#};6ˊHؚ~u]h@%=B@͍5xh"P6 l VD; _U!&>;*ܷD%7n{0%Dgu$|ܤټ_T8Aa$l ?SD xh A^́1ޜQ9vMUm/4/f=|$]o "h=`l%bT_hQge'!8?n7r3wA˚#?FJ\m@6呦 -y{$r+thz o_!ѸӺOf@@6 x/Uz<>8yю/,m82 f>HuYϓw qU)z/l2,p!K؁ac_?G<7+.hź!%dLGnEG tuy]a+tkF jA[p2=NDX(NHS׈}{Mg+W΂k>|Kk=N)Lb[x@ s=s܄Y"YA-FI*n^5JݩB(H&\ޏ.{΂#ãZ3kԹ>>!ݻ_s߈!psHDc'誀 ?]>8m;€Wkx> Z2JYO)ۛ*̭'06_^'RAFj^~qVYj~ߦ\6e᧖hUzefh uecPӖ."}&|pwt=t A+9%XKXj9|P8S ͂:viPҧQV8Ņ<{*l~90R7s,CUv!(|8Ϋ]$pѡ&݇GNS`p΍04e\_޷ CG@oTܾ`zlRS+YgOU b [*GʳZv]'eCKN{Dqxc)b^ q FSb 1fyOkF]:jN< {͢uA $:4`hK' ٥1oC^ F,\{sν?ݥ7ܴ@tD0>k2me_ )v۶ Lu\ Uo`j#{Eo˟VYp9%UHߣp@ZEwC'液Z@y{k]u.Jr*ݵ^u"gxlNP j/ =`ճq_:*TV6v@Nu& ere⓫" G|nвfIt뒾ρFlbqx5mNAsEqk+$`gsUpDҭ]Xu Q tӋY`jz$<@朘NZ=.FZF)\1*@) fP/҅{P7{Sw_à/H}uvEE&=kGu\UyO'189}ҷ>~|<f}@󔹃O%Ǿb嗨\OF׃3 pw/O}nAw^--~=d^_PYiFYr<,ҽ,Vu2{t䍟䁸aۃ)E4~gKҌ&n?XS.tfͪ\eB"*hް)>]gӂtC4M< ?Ҩrv<wJwU?dUօ^43>fg΅ș8B el gwDkbH:aynڳq1z{u2D!ZFj~;8/ҿ\u܈,0 WK/1~oI# \NF؆ȁעhdל$rG^ѐU_ S݅0@>P4JR? tӊ0Ϩ?rb4n>|"UTK 0caPE*%4xA A>'aln46XDg\hbxzH;ӿI f΋ #VKH;՘56݉3}g[ |ŹH?~2Brϒ񇨙۶?h7j6D]z]3Є#Kiz/]GQxsb'Ln M}.ArMt4R&\.FgB͐gNQ5C8HEVqHNOΕ A8 }И!}4nϒxWY АR:QIh%,8}/ l]E¿;5Ѩ„;iË3;l"/[\+Vh7fmnYۅgS3zHbT=#{BrUrÝ$gr M6'/ڃg'uu;/$#ckC;cH$k?bE4>N@^_Hr?FFdV"-:KŋF yO˞=bP!kPёDh؂HK?jClrzRQ. lF;WZovwOb}A{$_I‚&{hum4dIOiv ?2F6WՌآ[WT%HmXoz=fR9MIE ̣#vHR|{&QUfO[#1|r5@S=|'~۠}^h*BwfN"6nAyKs԰P>}c!^_ cyH.WX:r?h\"ڄQ?7#LW6 wgmmB2E5@ 3؏5b*\9//K\GcnK7Ǐ g̥ԍj/"5u޼EM@qz ac״Z#jNz"m=9ԫ/r}0`pYcv80wZ 48yh[o'>@ݗӮšٓ_w!?j4d4|6I§MIHһP4Cq1Hh3W&TahtU4vǦd|os IAY"$]jjB~.RH*1CMVCN $}g򢎑'Q!tə+,htji-ZAWsDdȳxG77ʶ[&E߸"PHhRh'&UH6)E{Ů}P/ps ;"RCˍ|ChSe3#B2כqΌtG?c$ѐ\迃^ l$k|;x,1n]0a^bs+9e!=&@ɦyvŖ!qioJ/7YMQA[ŵ0C[Ž_hՊ x2pjMF[l: ){(aCP͌}L}P}p׷NN DN=ބrm. +R)EW|}~z#-愺5b2VCx??#6v,#ݡ_]Ìod Rv^`p#/ioH),3fR=)g">ʙfh.p-1'=")[bf!u]x!ծ 41bCEMk!UTK] rMGxz*v!~ L8M ~-;ȁ+ !2m(VHlvOAꘈZ!uIL o?R}xeJdFJfgH wpFw6+mـ$KN՘24O4C|4^t|hep$ݓBj GɟB=ۡۻmh}0nO:#a=*Mcj̑h4DGBZG}¼eg[4q?g'v:>fq7A`"RIi{%73jÑǥ 1<c2{g!AM_HH)[.F Br~ ,ld GDy/#5$+/cBJu6s/ jȗwGvLA?3re Îf?26 ?^F8v2TOW&{fHw$"y԰gwz S1λbD R3<=ckއP]ZT j4 W6jg}U"UϵԾ??Fu@7n)[ J3"՟|kUB.hx;n7q$lj 3BBݽWk|xjpV uzIqŸuan}b< 8P(/iRMIdc:ƨ+闣=%7V(&-3V銛1hw!kV gQA>4,wsEs߉P~"ĜR {F t)ꉿwCC/B Y1 C9 mg {<;YgT5"!Q=M)ϖmEZ|o}閻nԓEdv] AhWp I>։sh|X $kr?gq^Ofu6<})UĞXr6p}^B{‘~Kxqah:Oh4<66F ?y>ABcѤeބoqx;38/8I$ ^|᳦rO'D;EbW7m9]m*xڐtU Ѱ%أ eC[WBm>i_ex[b?c kF߃^0_D8lH]zWC$ɏwS. 8]zQa$}Dq[zpN0wțlH*j9蛄; /dXa6yq![C23o=[?F&^]Z[^IMؚDA;ф !wGgKCZO h\fN@\F+4]8piii+H;f9Vd^d6Ι38f[չ*%lq7dGu]>ξ! nbmaA]>KƎ7>i,F95ə˘낂˽h(L̃H-Ak4|cF7tQOjso !yS]$U4;!\eWE_6>}fooUk\zzԉ+[b(lE=h8T pl_TmVzp*^R$m߀&5 ^Wsp=x ѐ>%Zeیj8{Ml >"fFa߆TSvh~ jC>l*@ÝS<}5yiRsߢHHLx㏩H;  7n:[e7tq"gv<`pP~h^;ܤ :>Y 7-jڵ{',ܹmqOKi>,l]^+Z[$tI%@354~$-|7ɍ3 %.h^D8R>}U^dVe+9@) ޵g~rӿcT.aճD4~>M]M e CC=<5ԉ(Ȣ1˨*9|sj~q:iq>vYHP<=Z~Wl) MsF!m9USӧ-X"(w1h"Y>S4}{6=;q-Q/~#Y]m-#'HDdhllEڈ:4ή${~GTK+DC % bC^@ʼn% Q2G0*ެT Q6v{#'lamOR ?9IֺSGH "\~γH+ש!$3-)W}~!5Y? GFd#zq9HnIzmá> ]l޸/ -^AmOcE+$g-i#d?ϛƱ-d}WGҏQ5YT9CH9rp6G"Iix E]Tgߙ k{b"]TK{gf.qBey%rijővH]Ke{#EAջS9R.#϶%F;gK(s>Cu (H::sSRfAҋC9FnrjjY'M!ָ28TШ2ӥ^0=W4fN x.qǗ,O:,$dTyl˟[I]e94fw >(lkK}S7fjb-;uBÙ&]$~& ]H{'Ss$\ȁ>D֙$UbG*be6~ YU.=ȓyL]i@̽ luM+[uo`E#g^UFPL @ZhI!q1-nuM4}[O2'UPi?_nw?Dƽ`9Rn}iVM+hѨH?{k&{:w#] =KH!T1棝oH0it?aywnQ\N4 lsH?i[ҍ^WA߫ƈtx㤻 RIv14&H( "qLzHu?‰faIY$۽%f鈄I{rSzK\!Kuh7h]wG nvMe:Ov*2닀rh#orNqӟ$4E8nTyvAƼ:(Q+s a /$ḇ&?#ijV[>𭫿-VĞa6icH;h5؎neG"4m^ FZ^ Rh'뭟@#d wjŮ+%83pĐU R۟‚&f3Z}c?O_̄80cYl/hȳzaJ$l#E]zHq;|wRc̯꺫jo:K"~ϮQOiE-3rxGz""Xo~w8#c4F5QULM+ )VH DmHlU+3AhN(YֽHd I)4TTJ!E)$Tdl PTJAR9}{\{~u]|%}}e-B8n[XBam뜙tL; 0߿X }&Pz*?i`HWНp~^Rr#6ͨlwJ+bHt0)߽i[qn'‹ⶭ_EtGPOuksK#!ywo $S69:]1u'oQ&sY^HmO;})WlW_aZ}o9a'uѫ{_=(s  I~/m!VJ~P/ >{> TI֥GO,[SA؏]2ޣ96*q'Cr#u[*$Q .& sܓ scU }Ip*o/}u$nOc2oyut!1v>i%5#+K:VO؜a)D/RLz£CެV@L[!tZo,DWy_f7_qY.]yӗ5oi)) |FܳVS/NjNw)&|-p!H{ӟȮxs:ëK nfW |\0BR=jX-صW4qWMt6J撫KJ1`PѮ&6|e-h_ٵXdg\vKY | )̚\ -6`?oqd9h{.6i"y|Lz| $~I9$A-+s [* yp' '9ҝi!|7e)35oȧj\81R#ԪR5N-[Ԇ^\ihn/vaɞjnYfe)L]&f8unSvV._ nvY}di={.D_fČt|k[!0($:z8/JJzxl /$/fT|Q6_[S>`Zf,X6V`v`a*}rLoP붃iL0ICyuXD/V !e-0~{pjkwAsfH;/ズ~]B>u'8,K6EV;=BXH{Ԏ;, mpU׶ͅH>6ogH5]_5DG*}}gQl^Z̺a֤o'ɼ8>\t`>I16{XI{.DqZxu\P[DNJ=/ W`<]gN}G~NyGVnϏ |E1*su }{%]Bw Ɍ46̑+k[m oRs&=YOx:9M{񈿝y΋d9J/ݒf@#XV{38-N[^_?É_(5Ɨ&:t*ߡC}'ĻnͤJ{8~ I_A.PIB[\j10_QW<@bJ·*?8(}9|zcSH_tblp?'OYwQ1٥L!rAߏ6nvU \ǽĽI~4C<6od]Ck4 k,t %$=t{UXF C }[5ޯf:UT"9u ;ljU!]`Y t#ՓƕBlgOkecFrt?H8>fx:I+~@:apXE?377@lVdi79-,\ n~yv}HY,&nnJ|n=]se.m.8foz?M8ozQ(siBc|6Ci+@~q$Vgo|;ڪ2ycy SvS#τ~'^ˬl6ȺkhB41}r:ZP1ć=gX2ݥsABrkEeyߥARX6T`R[Waw p28)wNC.Z}ȱ!fy,W<67I/}4+&vיfU =$nU0\M]!ĥ4q[2V<vI͸v-5=[w ۷m(Q0MWxC tYYCσdm0PuiuHX`MLWֻga|z4 aLDr?1QdDw :'0x'Plj-I[6Fil&0})=7qrJuO5\q~ٞzEWǮ7{h&muAhF?w.D3-ۻ"* @%UWAփE>֪7LswG`U6w6VAx"XJ0>_|bE-9`\9xSAI+;̧m~>0NNC;`=:9he~{Nzǽ/crМV=!>>W@c R˭s!x;hC`ZpS|fWX "Έ7Y4(bߞ8]_ z )@IeWO~ +[mCZp7Б"o8ZY?@YhIhS., )xw\J"AY\g|( ʺ.װhWY 6fƌG1ϓt- l+t\)HPxPr87p3o'0m ۹0H-Yf} .^kN  Ͷ[\E^΄/+"4_R;n)x^$9XZj$Í4$9>.k,pv:C$&[g$#U8=x~dZouT)LՂ{$'H@Z"Dgi{k^0b>O=~чaռ(PPֲiD3UrW@bв!"Oȅh\Y*Hxr1+=p{&C+@;ð('YLއ>*yVG;!*jw<v8k~o-*׷jVy4ӯ 0?Bron>Syy ʜIutFNͼAkQ2LI 9+] ^л?@/2zt&dLPK'e:*kPܸ;5Cjod5. IU Ͱvm^5N 褷X:Uq0ԗ*Q*؆ ӕuI>s\78@LgW [/`dn=KA 1;xxa,&zZ{3Ɲv"ԉg>7$?2F 2.+Q"q6WGQ`1QpzVV;|6+j,M#fʶ_sXf.G%wQW"'1p~gfGϙM[rHOrL,cū k 瞐'b#pkD)r:!Y˰W>P߆~ 6ryUiĈ~$&( %EZCHϬKηĠ㶍=wcq ~H$,0?DܵkU lzX ڪӐ\>%]} &&AOP"O;E u a|FOrŦ N1V^~tSO_TdS׈7wiU"=pD);xY!/w̰S*Wւä 77neWpN8&}luߦ $~MxϖJӻbs&IJl^雟ǝJW*"sEGܩ?{Ks:s6\:|Ǣ`Ok~BrtfM}J_x=S_Z6ca{~N̨#d]U" d+o:wpXă/ S QLS*LL=O$3QZb |q@#'1`Վ NtpE]` =(&ixX^Atz;/3WD |Ju ]ו:Xlu3'BW=ggvIE7~LV!y QpxWޏNg #>h>k;ɨA02˃mWQIA\? -s1"8coL%וWFv#adTEXߏsϒ! \@ɽZ$ɹ ' \o2<^HO*Y^t/דi[L#57ٽFɜ̤?G}&cV 5HN  mܼ{6^lLBY[L|=pى9!P(Z^D7fOJ\gMP'j'{vs4p'w/(5+4a ̓ !$+O|.#yį`Gk\4jpcÛ,ݹ ǽ.Cbhƃd!sU **8M;SgѾ"zj5IJG#gS8[=U.ZQ>#=Dsxcikڔ^~=ru* *fK ~yd :R_@Zr#Nl1=ڭo#!" @A2kį+֔$t6dcgC0@ x/dۨL֝6$¢0tjV{@K?_jb.p NJܣ& i>2=S TN=#~?tiM40zI=(szƒAqI'r:$'iQ-^ n}0ⴜg'/( U5 s=TY-\[ihRbpW%MpCVQm++ؔݙf jaĿEsK_AM3$~ Jm$3TTHO_ 9ci  [tA<{A` 03 i՜zz6m2spxu[ *$S~}Oi^&g=$7)6 y9lBJax eZU*GE {y*{/WέCjz6(ź) =9 L 41L3tjfs~Wnp|X4rf(0UwtgC"UږPˇK{6&A ^o߸XN#ނ 3H)ߔIDWUW RApjeIA;4 T gQ; 6H~=([Z':ҘǦ 5$BT9[}E1Nk3OD~;U'O!bNMm-Al3cx=^JA, Gw'k4AyWHpb|ڀ(k7V1L拜w?YZ2Q ec`uj >Z.͏媓zv3@0%Iw&4.99W_|QBUp7:A:!$j E)NFkʖ¨9d%=^ Lr/8>Se]gs䍄7;>| x‘A!(hY^ l yo)g쪄䞾\;{:Ajˠ4HG&vVACm kyx@B ?y6ޏB:s`韛a҉wWXm q/r% Kz_c?m[ѤZ+IЙ!Zѹ}K5GSTQW 1 W1rooZ @86ւHM T0ӺA̦OWDn$;9/b 0ҷ±ޯ 8AQJוT,>UL|J}Y0SC^5.-< ܛsH=Y0[nh8 یz~s㛇z:̽}$"`زU?V`wN{5bc7_cE%xs| L4}Pg]n^yzXpUo ݈Wo=i(r;?{ЎI!Dp7VAj"f7#"X踭$G{Ozʲכ!zujJӋ9B9ҊloJ^26utUʧɅ n)$7 A<as{4i,^pCɎNW! Q7g|5ԲSU|q> E!z[m ċ;M(ӊS!tSK9}ǣ'y4gJa ̆hÇS5:^2d-Uu| s D?i3Nvo2XrK㆗K!~s[:gb亣Is#(wۤ\6y] $-'(ɾ.ԁڥQ0ԑBW/;BQڻVz ԅ8m$a}ky]_n.y)YCX3y8/Vp#gUa 鱢߈^H'ե@pnؑ";^S7pN^D gf>B{C`.|H_5K\Q}\Wm7M.^gj,X6~.lwPArKFoϧ&~C`gQshG'{<8&OBzu1} 9A߮ǎ\HzGz`9oĸ0[؞ofNO~uR#t4_)BWz%xygU6G\EsEA`PFyScКB>CEmo[lS1DC.{B4c^hh|{3Ѩ/s_?RNg[遑*#MDͶ:vA`5DKo۪ٵSpI 9PSŇz)0aн P~Gv 6]㚟Wk4^$$(GOr/սkI3Ԗ՞s}~?L|nUmFo5#v?'BfNnc ;e|W^C!HRV&Q0Myc^mÀk-!yˏupZZER>k U^,6{մ^/20ЫE&e~{ 5 $_4LB 9\N02!Mc YD&ߒjx5lO+HM{+ZFdM_=Ht/Vk%fJP>?jv|q*+|?R:-3H<<< `o6Wi,@lv&7YO޴I/_EK^A<+\s|$1 .wpԡki͛| k]~pe+0Oŕܺ8}Ʀڨ7=sbb#imʠ<{6yͼ]`͚l|sډH>;t~ &yLtSlSg >FlѤzjC) Dl=qwb-!Mmi)tˢ1zv+t^10v]%`fnz܉)-{Cl+ּmMIN?(s'9`9:]9fН"P <@ ۹I |UyT9duJߦ {x1۳Ncz+.8z$R-kz xt_;1uE0+ʿEk%nZ(}] N23O)7D} `p|~mRY6-ѩUkW8e ^P57 zsVÝx&j~ /MԽ|B*m6~Z227t-{#}6 NOɯ|nd8.uǔi`?qq[wͺ9IxG&'M{DX-Pێ 6/TpTuGBկGP Xq{r&j嶄&!dnoռ+On$W`}T!?Y%:;xg@X=˳ϭ_Ӿ;¶2!8 zn3Y*rdڑ^7$BW_Ueե=xtw1d;hT !ټ/XΟKYw}c3]鈭_Czƫq ;Mv[R\VMrlkϑ,|a%h+#ClN sIeSTB|r/EDsWoX[j29X 4'RIjknNZH&m]֏y-N@x)+HZuiHcVa] awSMb[_2 /;Gx}pՆtUrS~ʩz z.DQBR("){N>:~xkoޟ&&ǂr]l@($ zNG$Ŗ L^i; onJ4s72sHZ =U$1s;Y݅U/<<[eK^nm;[O[nxғ;ǀeC>3nĸv?bV;@PLtGbG=gX;'Aqÿ ɏu;Gߴ.?^z{ (d+84rNoJYD dnS "}A1$vݺ 3]q%V5d=['C|v[ņ7Ly~$eK+>[8B7>PyM-.Wc}bI+ ^̛ǒL|v@wj_'w<~u;'I?YkR jQ .{y1ϡ(Bu!huK35-ä$Wlhcc(WS12ONG!#CrߛF ;]S4~>$W>6A@O/{r$/q+i#N\v!8\rǀQZpQԐ E2{I^;6Iw@X߬uD΋aH_&δ.?ذ4lj;΃"S`_;}t ͉?DBP~ר$|c [p ћFI7yjYHқFf!Q4iqB]o|4V_1\ *3K#f[)~t_6o]*e:^~/pR{B;C^[k^D4hJ|`oKF <`\Q"%ߕCrd?7S*"S%wSE~!hi dd'矌?(y`w/P'oLɿ8~I̿#X4ʈ~3\+#t~o--d`3dL?.צĈ~w8SFmi-Oƈ md`cVFD;~1/Β矒n$dddD?߇2dDc$~R]YOJ꟔?gI3FLRrFD?̿(~WsdJR0Fw%1t_Ɉq_2%Zx1| /.n \xYe^g|V{, &w]>8(۝GO}}~?+\ eaf/data/gcp2x2.rda0000644000175000017500000006636313534247654013700 0ustar nileshnileshXTk}0tybwwQDPBJJBD|flppK5s8vKY "2ɀ?MMtVjl)OP+ U31bĈ#F1bĈ#F1bĈ#F L?Ϳm_F1bĈ#F1bĈ#F~ο=C2bĈ?/#gHVtwF1bĈ#F1bĈ#F1bĈ#Fb ی1bĈ#F1bĈ#F1b[H*aeEV k-QXٴTW=fFS#FaTF@mȿ#G1bnĈ=, g{q{nĸ7̿=K6b_ߞ'g~FsP#7 >_go>_򟠒*H2݆ ٕ!;#TE3vGwW~u-emSO_e/鯉G-ꯎO}'_ [O_i{;_a+EOc̟;Ej{m|7kW{8JJO6m{ʿ{sZ_ʭ2{Y.J}]5ٻRGT=ӍtA_7ZyѪkՎ>cuKMoNUPۊV/kᓔu}y7gvVߊfi:,}Ƿ7xwҷ5?`amC kcsz<ȻzzjX>~]ٟԓaXJ_x'7{Xϔ2wuΞekƞ\Ʒfvưxܦk~QX- 6)QopjSԦ*>8zN|ĥl|aHO:oGmrWö'ZƋ{N XG2k>JG[wڗ8vY6VԼn橺1a7ǤeZv`;|C7N\¿ ?>VZ־7+$l)Y|N۹3\TQU^7 mb >u]Փݭv+L~9Z; %خ2IxDVtWs9xkDhm髎`  6uR}Wλ$-lGƷa-ɩa&\e誨dnjk]X1{={/O{Nc+z^@EݨѮnE%o;@O=J= F_?yvN~́o=qR,R\_iPŷ/ҽliX7,ʰ9/`3RFh% >˾t[}?;G vɖL'62oz)>-KOOoX'j*۾TG|8Z.LN[L`'}ʌ{krg o+9AufX2`Nɟ?@ѷ³%I\RY41ĺH٭pEU&2vRu2"  X! X-uq3 x)p1[jrS䀗r"|qvP.G.iȗ ^x+>OvrAbݴ#,d}rr!qnX_U_^\3:: ϸ{(aze(P{qҎo ^(*xK'/a5`6UQ٬{q>X*k]vAKؿA+5d\#HQ_x:D"kL 2> N4*o=94B_ޒ{gnrlCrI]9]~+%+₯8?_Tk_9ںj+*ꌣ"9ñetz\jOqta q(NDfDI't*OcJ:=)b9d}*' gC*Z'P]N2o5\q[y|3 4UQC3)-QTwsz?d/\ĻDx燚eC*n9&a{gӽ_ѩ>VW-sWmɀT/y IݠhG> Pٰ@|B?UoQ멘y@OżNO_zՃ'䃲WmGQ[&(*/Oq*OiQgVsUԕ:\Q>'3P/**矉(](Mrv Q'n4kD$dpyQ`4FpPq*MۼgT2NV MÚvNV{IXf\OX4eyq}Ξw T=թtK=bSxcM ?{8Sƙ":WA$*mwؒG6;5䁂!'4UYr1HM?m (}b2xea9Vu4hVsmPz[sS_a?Uazf>VB)EɃ7*Ic-|`Zpz*rGghPd?NJFIuᓲiMO2fg~r>"_#= Wz $(sFcN,?r!0Cڡ%b1u_uy'҂m7#T뫴`ou/e]ggE=+Ye>+gEשQRC|*Dxqr߶sՕ!b~6]b_Yr_|aG:|Ɵ\}y UQg#<{,aQuOUQ1;*GrQ_GEsTǗ**Xb~bਘkss=U?o'}k|%?@ _8/s<=NѓE<1>x}؇?GgEɃ!H]oo7EܿO:Z|[^TΥwTTn,`ԩCi5tľN8OfXi;K{!E4AGմ*Y?պ2OM STTn3V9>UT 7JOE_Ճb.֩dc^8**9"('==%=+*sD9%)iU۟:!*z*)ZC@bEW'ecOm:'s|_udX?=}Oߺ}bqT4VjՕ ->'9@yن)*K sP94Py>q^QQGQĊ+ߢ9N|v?Ǘ8I=:Gw߱FOžN5n6 F-*:iCTɆhykjh_8i Z('|E%BENI x!=M[s9u֩k8 @u偺6X)EփE-stzPG}z*<(Z=,e5z+c՛LjU_qD?zvU=zTܟc<ӴiUca Q׷l|Rt*WO =)ƊKm?%u|ZJ+?*'p+Z=GF>]}sA".<$/E\Z; !n'C}"Fcb~մ=E%Dt1}QOYvN]_Ϭ;8N_ CE?B3L?n<ҽ z a8c`+,&;$?iǟ(S%M}vW}IC/_w]\fX7/1Ϗﯘϭ=@q`);􁧋~g}v׭<֚{G#OEK#5v?;~Z t+Odxؗ+Gv\)[4T_N5N<>Mݏ֛]0mz%ΣG 7N ӿ xG21q{ͬ\}Eg-L?M ֎X)iwc=:6xCCͥ>~౧_*:ѶwÇ>7bon_Uh jBAG[6qH3NfȨ6n ;(zF6ܙvi仉'L1t//qEmh<;V+H{\fݧjR8T?\= *m#g `" ήnE68Ȃ&O9Y:lx٬|^Y"9~O}nxeq^{mwa1_3(놊9uw u33(}id|\ҁOƣglg*n7nM a^՞CY?M#7 𤺽SvrL3z4G_SzW͹.^)osTn~Nn]RPWYŁh[F_w.+ Gߺ>uGnTRcׯv^cDd+1$Gv^ ,ũWJv/ k`SwBq̋'kws̫+;q |pljw5eY˭w@m%)rȾ0/R--pqEvР{ԄCֵTs²] *gSugIٯ%/Iݝ⤖g|ZZ},#qr.ɫ}_3ƿɏ_ ޢx Srl-A3/_ossJ=zW pq}N~tcf\){_՜Ћrt;+s/5rBOQu bͿƑ:]]4]_K{rdS|Nҭy;x[5)FYsAb&Zf}MQ/Oe(ҕ7qdnS')z3>}}2~TА˫^(;+x-~m7G1Dѯ NSŷq_/CDs>`[5趾%}q ]ץ9ܱX}ةG`Y7(s 9aݛ=en˗;UN7=ϱ=w}cgB7ݫAѰ$T9!ݳ8M5EqR۔\/vufFIvHIm8j0pspl oI.EKM6>]/53='VSuN>m$N>S@5|zɇ*Aw)/2 ┋eϹViU|V%Fպ W z(pSݝWh j+ޚu>vOD:l/rDfd(vىU C+<-6r-rpęUo!d+ր'V)z%r`(pR*p+]g? ?s}04y~ܿn8q4"!:Ԗ>X,Ӭļ'N/:^giVs)79ސSCׇO=S/E$݇{lxN(,eKNcΔr}>P*E2p)_:?gtM[bj4tA本 )YQ6/ty*&̞]|솹߹UQG9di^D}ڰ=UG|kt|ˆOz: 9~6ЪWY|@w9@@65fܻ*+%(= pvfgMS'թ+z`ӳ8\֛~?hVwSVVZp4QUa?Qbӈ*/a\%7]"G'}t}TC82Ў3qdĥ 4ꊛp5*\%Wz(ݓ8p}ѹ}9fq9ދ1./hMFӣCO:l1wzN஥Nc: 7yHEE]W@8tP¢R v9&ZQ4Q+W;/Z2s)zO_|WT*DOWZ^r/>S'66n5Nr8ߝDN;91*}ջV[Ǘ>L')Br:p }sRKm8uOT<< Jgron !);W#$u$XeRǨl9mjqXw[ ݻJ?1Knswx"Ljm?afK̆hW_Zub:cvk4Efڲ◊f.1X̒2-S4|U.KOKͣT_4i-G9εZ= 4j/E f7W V\4&#&5kU=[|[6`h9RޥmG+!%r2$4[Rw0է7a7R`OvZtzU.;?Ut3Ub*u|ƵȲ_:&Qѩuʼn[r Q˖$yޔ Nv[pZ,r֗/O.69&qjzek`,|%pȢJi@tQou‰o=0têz*,<~T*&7~Ҫ6#a7r;Mys4G-u!!'}3{W{{]de˴H9Wy 㠯LёOʌ#p9rL/ [F^m_w-(9_~V{e)>9*CcDZyۂezXrJ?gӹsE?W[\s\ǖjƒ.YY:?5Ua/]ZQyl5?#GOcz4YE&]ǢHiud7cKM +4!=O_4>3Oq}篰8y<*T8.0&U3nhL֝zWT4v:b>ox43+ )J.}η<qBDžv *T+hu|ᒠ}RB]޴/~m %ZeyZSZO.ҩ_fp|;]ݖc|eZ)#C>v/_#=q _D|ufJr|mÁY5ɺW)fQN}&8Ǒnk9u&,JӃA|=dӄ;zu)2oJo·8`)x4#4ΩRN_cZtsD<m+Bi'7{,˟TԱ\=8B*[YջMW~% ~i+K H8os>in%:u-tO5nZަm\/k3֥ӑ&=;%W[>bA5ECIo}sZOb[4ھ2plKKusX1ߋ~L'/BqSA 4"?Dq[!yӝC}ҨnӈʷG Nz898pF/>qz"cKq`Nw NNіrwCWܾ_c:_ 2ۋ7i6%9^|֜L>\BR/hg|vS8Z)aCƖʨ9(:Z=kg9:inͺ&4&UqTnLR)ֶ"Zq̐7NA-eB/3s!͜6nn\CK_q,oql9Nlh+~41aS:ϗjĥ-U3 sOH/4xg+6:'\l'9VV/‰/~f(WSK|\B,ř/IG^\Ɨ˃|P7qʓGs=C_(q|gN~ૢ.KmMO?NZCh#]= UA)=wRqjˇwfǙ<;b2kiwJ?ԇG%T.3KRγtWԣɚ^뎗Nxs<[ʡ{cwi~fpO<6rd-sXm.oX60 ߷}[U?s9}$'~].88 ώMT#,#Fw&K1~j(:8S夺tzl|%U{A4hr9(*o-V4OV1j5rǞlWO&ogRX8CwyO[=~.46r,!?7=bc]zk;!jVۦߩ=w?T֝~OEwU]ꅢ>Ě۳o|ߜ/IcG9LbePrrM'_|FfrÏ)r[xSTi)h?PbZ"uni5]Q\->[mKY|)U>H guY ?$5廪#^7xLЫu}] ûy!LO>2sM_1^gIipk*[]MK]7/y79mߏ76ȗI&ޒY}1#A9`vw5PwmgUηɳyĉ/#4l)/efRxݥlTyT^^VηMVig~㭜TEϓH%,< X- y<_O/~SM.EN t=9DjßbSN ӎ3띟#et[PZ=t$] K믻֮^<u7oU5|尞Gm8F-z\)Pwc> ⿹D%YYj9yduY!B,qc8*)2Yڠb[i㔡cQ>W+qJۨ]q;ģߍIߡħi|ku:N3:v^޾Զ<&IMX)IwoHwbR rmɢ.JytOsY*Uem/>}YlQ" گo6i[butsۿ,)"lt~;.Y)yH|i"L1#!o^&o<"?mfgu'7rPGigϓ ;å1҉!z뭋SFYͿi.Nk=m>1xr, aZ)|Qw/t`^qyg&9|9fm砊հZC6~|rIx=6w^ӎrBq^Wq_:L-;GyG3E~%gc;}O&MҩmDd%1 0Af2d @ @k2Q A+2P T tSwkZp'SU?4h2 S_X^ ZSy0 H'EjDLH9Y@f2˝Vd֜!3!` vn2;";Rtdvl IdvJfO+`i UqQ ih,*\"6+1,Vg!'Zxt'tc'Kvdiy,k$˚e8A_$+dOVf] alJ3,ɴ<dxL Ml!؁vܰB]񻞰מȴL$LG99=t2x=d.^{{bXvOj{? h2=מv@p ܇}+dT%a?%.3p9L`&x%w[͠KdE@1Rm9F`)~8Kgp0wVM`;G1~BI:3?t3Hv-Bf^Òia 2\iu4du Isi @7^d~ YT! ,jkȢ Y4 ȢC[,f[d9,:dYWdB=cFؚ,@P ~L i`. .pAO0N :Lw~"]0L=]bgS zm@2N70(!^ڀy(@Lq1, iCfEWdVz!oEfY5d1@LjS%N2Bf]Gيi`c 1(JfGT"ϵz2 V49:[+4 Ťi ;˽!*d^mM=w1 ꉸdE@ A?dQG)^6+PuV cIgd6d5D k@l Γi;W'c$r)f s%PLȗ8N.q}"T`MUoHkVzIQnl*ꤲ+oڠ/v618L]wjlq/l>v/=@_ ^P#^_'l Pԃpyȡx3|g7I?? ^QnƁQx84Й4nGH3k<qlBQ2v<"E|0L[2w_A滰޷`߆=<&7ȢDhiQ_ !>1J'J6D:Ci `ڡ^jx5t{F2y= ZHRYa  y.۸1î #dyI>\#H5j@^< @U KjiRov.^`pAЌ~uy @670L5&tHG\67'}[-%Ai2݊cnCVAOt"ݨw#2 35^zUgP DlukGȏs7N#ӳ0G/珚 @ @P d8пG;2>eOWT|%,w}{2}|L >?COeL j/_MP2)Ra4o=}RY^D/`̲4@}ov5!` OB}@,{j~(ꂢk^W:\Ųn`$%ubk ާ W]g{{z [ERmcկijXfbW04S2ff%vEIt@=t83Yr{ykx!ze Z5זAO;i&\ܭ @֍'N')x|2_t1Җ ,PZd1y;8N3\bC6"` Y r${d37H6d3:e'uxp_dah5% l,@oaa `ɴ#bfGbgu熠)haiWpW!x!tJ^|kc)p)|p)E<;Obf/W:܏c PDvjzA܍ #U,XƯZԡspԖ1ɐՓbb P8XC}2jѨYӊ  ЧE[ugdVqv 5 Y}*Ezv2[MfPC?7Y k焢MBM|ߑ4Z@LҴBlm54af@i|`cNE3b},]hY,-D!"gdY E&+d9ۃ,tm}Aړ,ܧ Kɦ ٖEm:]gV&CD- zx~otuX̂D&*C45ST~t2 - @Qc"(z]uss8vڰK(%2e^ѱ7ީ>Y<:]CK'e !\݉-|Su瘗AQ\td26e?p*?ϓH,ιcm2@Y t8t8g:畵,+q_$Qs19l:IYd7xM2qĹ`r'j7=tVanou.X 6 !tVdzGjG0vjRls!<Vkȶ&SӋlk1m)( dgnp \' *t q ٽ޼_aSr8R! 99 %'n;@9 ENepFno9LΧeT(:e\BϮP{A0Nߟ#Qb Nu\ϐC+2g9(kFʜweM(sRo0\Qq"g~q23[v/E :O̡BmT?֋ƃ`)XO@4xLbA2Y/W;<oz#hh dPl2d dn]oX[pbd#apsk.9:_@ GrcwXËkAQrȱS{ $Buȩn8+(2qJ^p\LN)sIP28n':P(`/8 )emEYRV\SF-h2\똂Zm}HA;ROPu4,݆#l@u9d/|&GqGAK}|{{LVp$ɮjz%"Ē]}J6]@8$F5ykЍC?HaNd|$d;m'&Ǹ`9&R{1*9^р8 NSQM@4 ʁ $/9L2'i>酟!pp-;9J }]rv΃0^sʠ9Psr<\RrI :`,<)E.OPB)P}ְ t(e ([ӔHsІc- ݪI{ʽ)Ձ RITtsz*0ϔl֡^ooagldo rڠWmd1֫X"2vjUaXp` :&L!2|$/tgɾI7xEˁ`,Hsk` ֓|UXQѿ`rqyNG~L7mn.toezTCN[Dmk)sywe6}Fks5)ϩ-9ӕk o`E*x N{Q+d2IB6ꊠٸE" es0L$P{ ָFz) u6m gg3G3 P?%;6I@.r }1' 2Bd?ٻ# \cǥ%@%ГF#EidKf9\>8ɹVqʸm e F.uWKҬO.smI>rp xArͥQ2Mٮ(M4#A5rF9])ct1jKfP7TF?*r/*K;K~P !P@)W)ټE{x[d~.?kL6gs jpl;AkNStep x`Vr) K9eIwr `99O+HSѽ?@419 )-9۬9Esѡ`,9W@`3@r*,&52ij k>,ہՔl'eO7\}<)>gqx|e$Z\ސkJ-r}4\_v;xAc:P(}孽좼oR VTok ST@; Vqȃ{ZdvU$XXA6ye}b'؅ jm=ksoe6ݳXuxwXt2@KW{^ 0 3 |LΙ\Z j)Yw]Br)Kq &od[.9}3oͷs6k )y+{?@:l=;a8gKp>1aۺ= ~V8r_ێ?XҰ? nö[}!l!zrvkpQ'pW^{{qX ]r. ǽu?>Ѓubk)Sp/}M_>r/g_M۠C¦{a5?fy:_Okkð薺|Ua-vawNN4)ӃGz?׿N nl_a8mޟ+aI/իx蚰 7ϓ}$l:yMOyo~)l–~*ly=ufޏ-w[>qQr-~wi?}Vغu{mup䛞p+Gyzp]tN ka<7a'\M,î` }ɕp>(C;Q/-geo[˹53}=x>F,yi–{?lY9L7MÖ)l)G-/3K [/S' [-l}Ǫϊ|6l;6閺^7~~~‘?xpv!zx8.?^gpMNՃ]ѧK>==ؓ=VO2{o0l3{ֶac^<a7p}&{ gkUnouִ 6pCl,͗p'6K|U_  a8kí?}~OH/Gw濮38-!pNg8!Rgn o_ 1uzq9ߏ-qz\Ǻ^z\~v-Jϧv;焰=|\dzXw+ºW7†6z!ݿ-7 ߒL=O_tkpЙe_8ν5?5/.Ž9}B-ɏ>}/)kM.gzoy }˙'rg>y;}9|3Η=!lq=p\'w[  Oozzu q^[yO)!U>i}F}N/W_W_W_W_W_W_Wbcۿ?G#??G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#?G#7&?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'??g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3?g3_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+_W+o7vP_uiz.Y0GHzVTH~¹Gz^#[õ]s;[w|Z83CtGGED/;tp M:Gz^}G QusUg'r3 6ȽD \-?_.nkTSθQzq{{{\QGV|z|=;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{;7{m){;7{;7{;7{;7{;7{;7{;7{;7{ݾw{ݾw{w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;w;o6????????????????????????????????O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?O'?___________________________________________________________________________________________________________________________£uC#]uWSEՃp=Z'z^7o]O~rݿȸ@-:JֺkE!]t?=DBɹ@/kfKu{ѵf︁nug˹;.=^V9{/[utNyMu;5ts[z;;H/w^w5>/5tkkx׍])rw*..gzVD=]Ӌ ]wCZ/ٻֻֻqNsw]CizDgla]kݮyzzksN|:qzyy"z%rI{1}Zs==:H^U{[5;_uW*٪zru^{3>}D{5V]|kmԍMLyn'5gk5t=_]˵5׾^q)k]ssɚ3w{\^׾}r^^:{o&{u-r{/g