From da7a12b908000a7c196083f5d86c9c143984f406 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 May 2014 15:02:25 +0200 Subject: [PATCH 01/53] perl: Disable tests They're on the critical path for stdenv rebuilds. --- .../interpreters/perl/5.16/default.nix | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix index bbd9e003b2c7..600884db5e67 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -64,29 +64,5 @@ stdenv.mkDerivation rec { setupHook = ./setup-hook.sh; - doCheck = !stdenv.isDarwin; - - # some network-related tests don't work, mostly probably due to our sandboxing - testsToSkip = '' - lib/Net/hostent.t \ - dist/IO/t/{io_multihomed.t,io_sock.t} \ - dist/Net-Ping/t/*.t \ - cpan/autodie/t/truncate.t \ - t/porting/{maintainers.t,regen.t} \ - cpan/Socket/t/get{name,addr}info.t \ - '' + optionalString stdenv.isFreeBSD '' - cpan/CPANPLUS/t/04_CPANPLUS-Module.t \ - cpan/CPANPLUS/t/20_CPANPLUS-Dist-MM.t \ - '' + " "; - - postPatch = optionalString (!stdenv.isDarwin) /* this failed on Darwin, no idea why */ '' - for test in ${testsToSkip}; do - echo "Removing test" $test - rm "$test" - pat=`echo "$test" | sed 's,/,\\\\/,g'` # just escape slashes - sed "/^$pat/d" -i MANIFEST - done - ''; - passthru.libPrefix = "lib/perl5/site_perl"; } From 01449afa1b44fe193d79ae6488cd12f57908d4c4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 24 Jun 2014 13:53:59 +0200 Subject: [PATCH 02/53] bash: Update to 4.2-p47 --- pkgs/shells/bash/bash-4.2-patches.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/shells/bash/bash-4.2-patches.nix b/pkgs/shells/bash/bash-4.2-patches.nix index ac6e9e97f180..567ec3c551cf 100644 --- a/pkgs/shells/bash/bash-4.2-patches.nix +++ b/pkgs/shells/bash/bash-4.2-patches.nix @@ -46,4 +46,6 @@ patch: [ (patch "043" "0mswgjk3z80qm1mb93jmbql27nbczxk86cw5byf0m29y1y2869nw") (patch "044" "1rk6jywzfvg1crvhib1zk37rsps73minhr7l4vcb3vfdkin2vlqh") (patch "045" "0vcqn9rb26bahhrarbwhpa0ny0nrf4vyrzh97d44lfcxypqfzdyx") +(patch "046" "0vc1ngkxkamwr022ww3vjp9ww9c647az4pjn175c1v60d0xk5hcm") +(patch "047" "0ymgimqz65sx2izg1dvm1h5cc01arl3j9j5137212l1ls00r55y1") ] From 69deced59bed26e8fc6cd2907e4cc12997a5f05a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 24 Jun 2014 14:01:54 +0200 Subject: [PATCH 03/53] util-linux: Update to 2.24.2 --- pkgs/os-specific/linux/util-linux/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index cdc384f3ee8c..1dd7c0c089fa 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, zlib, ncurses ? null, perl ? null, pam }: stdenv.mkDerivation rec { - name = "util-linux-2.24.1"; + name = "util-linux-2.24.2"; src = fetchurl { url = "http://www.kernel.org/pub/linux/utils/util-linux/v2.24/${name}.tar.xz"; - sha256 = "0444xhfm9525v3aagyfbp38mp7xsw2fn9zg4ya713c7s5hivcpl3"; + sha256 = "1w0g8q5aj5pjdf8l52g0mxyvlk62f4dch51q9jm3hnqwgz0dchqj"; }; crossAttrs = { From 6303278ad3acb3cfe81d2a6960901d09b70c886c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 25 Jun 2014 13:32:40 +0200 Subject: [PATCH 04/53] boost: Drop unnecessary runtime dependency on Python The only file that actually referred to the Python interpreter was share/boost-build/example/customization/inline_file.py. So get rid of the whole example directory. --- pkgs/development/libraries/boost/1.55.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/boost/1.55.nix b/pkgs/development/libraries/boost/1.55.nix index df29b2402f8d..bf355f7169c6 100644 --- a/pkgs/development/libraries/boost/1.55.nix +++ b/pkgs/development/libraries/boost/1.55.nix @@ -75,6 +75,7 @@ stdenv.mkDerivation { ./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${layout} variant=${variant} threading=${threading} link=${link} ${cflags} install${withToolset} rm $out/bin/bjam ln -s $out/bin/b2 $out/bin/bjam + rm -rf $out/share/boost-build/example ''; crossAttrs = rec { From 47075812ce0ca06e647ca8d2ab439dce060055a2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 13:31:08 +0200 Subject: [PATCH 05/53] Remove the unmaintained (and AFAIK unused) stdenv for mingw --- pkgs/stdenv/default.nix | 34 +- pkgs/stdenv/mingw/builder.sh | 18 - pkgs/stdenv/mingw/cygpath/builder.sh | 5 - pkgs/stdenv/mingw/cygpath/default.nix | 9 - pkgs/stdenv/mingw/default-builder.sh | 2 - pkgs/stdenv/mingw/default.nix | 233 ------ pkgs/stdenv/mingw/fetchurl/builder.sh | 34 - pkgs/stdenv/mingw/fetchurl/default.nix | 28 - pkgs/stdenv/mingw/fix-builder.sh | 23 - pkgs/stdenv/mingw/msys-builder.sh | 15 - pkgs/stdenv/mingw/pkgs/bin-builder.sh | 5 - pkgs/stdenv/mingw/pkgs/curl.exe | Bin 240128 -> 0 bytes pkgs/stdenv/mingw/pkgs/default.nix | 157 ---- pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh | 8 - pkgs/stdenv/mingw/pkgs/single-exe-builder.sh | 12 - pkgs/stdenv/mingw/pkgs/src-builder.sh | 7 - pkgs/stdenv/mingw/setup.sh | 759 ------------------- pkgs/stdenv/mingw/simple-stdenv/builder.sh | 80 -- pkgs/stdenv/mingw/simple-stdenv/default.nix | 31 - pkgs/top-level/all-packages.nix | 13 +- pkgs/top-level/mingw.nix | 27 - 21 files changed, 12 insertions(+), 1488 deletions(-) delete mode 100755 pkgs/stdenv/mingw/builder.sh delete mode 100755 pkgs/stdenv/mingw/cygpath/builder.sh delete mode 100644 pkgs/stdenv/mingw/cygpath/default.nix delete mode 100755 pkgs/stdenv/mingw/default-builder.sh delete mode 100644 pkgs/stdenv/mingw/default.nix delete mode 100755 pkgs/stdenv/mingw/fetchurl/builder.sh delete mode 100644 pkgs/stdenv/mingw/fetchurl/default.nix delete mode 100755 pkgs/stdenv/mingw/fix-builder.sh delete mode 100644 pkgs/stdenv/mingw/msys-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/bin-builder.sh delete mode 100755 pkgs/stdenv/mingw/pkgs/curl.exe delete mode 100644 pkgs/stdenv/mingw/pkgs/default.nix delete mode 100644 pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/single-exe-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/src-builder.sh delete mode 100755 pkgs/stdenv/mingw/setup.sh delete mode 100644 pkgs/stdenv/mingw/simple-stdenv/builder.sh delete mode 100644 pkgs/stdenv/mingw/simple-stdenv/default.nix delete mode 100644 pkgs/top-level/mingw.nix diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index a2723f5575c0..47d1fb6d9f75 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -5,14 +5,7 @@ # Posix utilities, the GNU C compiler, and so on. On other systems, # we use the native C library. - -# stdenvType exists to support multiple kinds of stdenvs on the same -# system, e.g., cygwin and mingw builds on i686-cygwin. Most people -# can ignore it. - -{ system, stdenvType ? system, allPackages ? import ../.., platform, config }: - -assert system != "i686-cygwin" -> system == stdenvType; +{ system, allPackages ? import ../.., platform, config }: rec { @@ -45,23 +38,16 @@ rec { stdenvLinux = (import ./linux { inherit system allPackages platform config;}).stdenvLinux; - # MinGW/MSYS standard environment. - stdenvMinGW = import ./mingw { - inherit system; - }; - - # Select the appropriate stdenv for the platform `system'. stdenv = - if stdenvType == "i686-linux" then stdenvLinux else - if stdenvType == "x86_64-linux" then stdenvLinux else - if stdenvType == "armv5tel-linux" then stdenvLinux else - if stdenvType == "armv6l-linux" then stdenvLinux else - if stdenvType == "armv7l-linux" then stdenvLinux else - if stdenvType == "mips64el-linux" then stdenvLinux else - if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else - if stdenvType == "i686-mingw" then stdenvMinGW else - if stdenvType == "x86_64-darwin" then stdenvNix else - if stdenvType == "x86_64-solaris" then stdenvNix else + if system == "i686-linux" then stdenvLinux else + if system == "x86_64-linux" then stdenvLinux else + if system == "armv5tel-linux" then stdenvLinux else + if system == "armv6l-linux" then stdenvLinux else + if system == "armv7l-linux" then stdenvLinux else + if system == "mips64el-linux" then stdenvLinux else + if system == "powerpc-linux" then /* stdenvLinux */ stdenvNative else + if system == "x86_64-darwin" then stdenvNix else + if system == "x86_64-solaris" then stdenvNix else stdenvNative; } diff --git a/pkgs/stdenv/mingw/builder.sh b/pkgs/stdenv/mingw/builder.sh deleted file mode 100755 index 5a9f9749a4f8..000000000000 --- a/pkgs/stdenv/mingw/builder.sh +++ /dev/null @@ -1,18 +0,0 @@ -# the other stdenv could change the SHELL variable, -# so we have to remember its value. -origShell=$SHELL -origGcc=$GCC - -source $STDENV/setup - -mkdir $OUT - -SHELL=$origShell -GCC=$origGcc - -export NIX_BUILD_TOP=$(pwd) - -substitute "$SETUP" "$OUT/setup" \ - --subst-var INITIALPATH \ - --subst-var GCC \ - --subst-var SHELL diff --git a/pkgs/stdenv/mingw/cygpath/builder.sh b/pkgs/stdenv/mingw/cygpath/builder.sh deleted file mode 100755 index 3061900ee0c9..000000000000 --- a/pkgs/stdenv/mingw/cygpath/builder.sh +++ /dev/null @@ -1,5 +0,0 @@ -source $stdenv/setup - -mkdir $out -result="$(cygpath --mixed $path)" -echo "\"$result\"" > $out/default.nix diff --git a/pkgs/stdenv/mingw/cygpath/default.nix b/pkgs/stdenv/mingw/cygpath/default.nix deleted file mode 100644 index a0554c1d41de..000000000000 --- a/pkgs/stdenv/mingw/cygpath/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv}: path : - -import ( - stdenv.mkDerivation { - name = "cygpath"; - builder = ./builder.sh; - inherit path; - } -) diff --git a/pkgs/stdenv/mingw/default-builder.sh b/pkgs/stdenv/mingw/default-builder.sh deleted file mode 100755 index 422699971ed6..000000000000 --- a/pkgs/stdenv/mingw/default-builder.sh +++ /dev/null @@ -1,2 +0,0 @@ -source $STDENV/setup -genericBuild diff --git a/pkgs/stdenv/mingw/default.nix b/pkgs/stdenv/mingw/default.nix deleted file mode 100644 index 947db5f10a89..000000000000 --- a/pkgs/stdenv/mingw/default.nix +++ /dev/null @@ -1,233 +0,0 @@ -{system} : - -let { - body = - stdenvFinal; - - /** - * Initial standard environment based on native Cygwin tools. - * GCC is not required. - * Required (approx): bash, mkdir, gnu tar, curl. - */ - stdenvInit1 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init1-mingw"; - shell = "/bin/bash.exe"; - path = ["/usr/bin" "/bin" "/usr/local/bin"]; - }; - - /** - * Initial standard environment based on MSYS tools. - */ - stdenvInit2 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init2-mingw"; - shell = msysShell; - path = [(msys + "/bin")]; - }; - - /** - * Initial standard environment with the most basic MinGW packages. - */ - stdenvInit3 = - (import ./simple-stdenv) { - inherit system; - name = "stdenv-init3-mingw"; - shell = msysShell; - path = [ - (make + "/bin") - (tar + "/bin") - (binutils + "/bin") - (gccFull + "/bin") - (mingwRuntimeBin + "/bin") - (w32apiBin + "/bin") - (msys + "/bin") - ]; - - extraEnv = { - C_INCLUDE_PATH = mingwRuntimeBin + "/include" + ":" + w32apiBin + "/include"; - LIBRARY_PATH = mingwRuntimeBin + "/lib" + ":" + w32apiBin + "/lib"; - }; - }; - - /** - * Final standard environment, based on generic stdenv. - * It would be better to make the generic stdenv usable on - * MINGW (i.e. make all environment variables CAPS). - */ - stdenvFinal = - let { - body = - stdenv // mkDerivationFun // { - inherit fetchurl; - overrides.pkgconfig = pkgconfigBin; - }; - - shell = - msys + "/bin/sh.exe"; - - stdenv = - stdenvInit2.mkDerivation { - name = "stdenv-mingw"; - builder = ./builder.sh; - setup = ./setup.sh; - - /** - * binutils is on the path because it contains dlltool, which - * is invoked on the PATH by some packages. - */ - initialPath = [make tar binutils gccFull mingwRuntimeSrc w32apiSrc msys]; - gcc = gccFull; - shell = msysShell; - inherit curl; - isDarwin = false; - isMinGW = true; - }; - - mkDerivationFun = { - mkDerivation = attrs: - (derivation ( - (removeAttrs attrs ["meta"]) - // - { - builder = - if attrs ? realBuilder then attrs.realBuilder else shell; - args = - if attrs ? args then - attrs.args - else - ["-e"] ++ ( - if attrs ? builder then - [./fix-builder.sh attrs.builder] - else - [./fix-builder.sh ./default-builder.sh] - ); - inherit stdenv system; - C_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - CPLUS_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - LIBRARY_PATH = mingwRuntimeSrc + "/lib" + ":" + w32apiSrc + "/lib"; - }) - ) - // { meta = if attrs ? meta then attrs.meta else {}; }; - }; - }; - - /** - * fetchurl - */ - fetchurlInit1 = - import ../../build-support/fetchurl { - stdenv = stdenvInit1; - curl = - (import ./pkgs).curl { - stdenv = stdenvInit1; - }; - }; - - cygpath = - import ./cygpath { - stdenv = stdenvInit1; - }; - - /** - * Hack: we need the cygpath of the Cygwin chmod. - */ - fetchurl = - import ./fetchurl { - stdenv = stdenvInit2; - curl = curl + "/bin/curl.exe"; - chmod = cygpath "/usr/bin/chmod"; - }; - - /** - * MSYS, installed using stdenvInit1 - * - * @todo Maybe remove the make of msys? - */ - msys = - stdenvInit1.mkDerivation { - name = "msys-1.0.11"; - builder = ./msys-builder.sh; - src = - fetchurlInit1 { - url = ftp://ftp.strategoxt.org/pub/mingw/msys-1.0.11.tar.gz; - sha256 = "08qp4jk279i66q6ngksg58fx3cfv1r6p5n394h2kfrs56qs9zvz4"; - }; - }; - - msysShell = - msys + "/bin/sh.exe"; - - /** - * Binary packages, based on stdenvInit2 - */ - curl = - (import ./pkgs).curl { - stdenv = stdenvInit2; - }; - - gccFull = - (import ./pkgs).gccFull { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - make = - (import ./pkgs).make { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - tar = - (import ./pkgs).tar { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - binutils = - (import ./pkgs).binutils { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - mingwRuntimeBin = - (import ./pkgs).mingwRuntimeBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - w32apiBin = - (import ./pkgs).w32apiBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - pkgconfigBin = - (import ./pkgs).pkgconfigBin { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - /** - * Source packages, based on stdenvInit3 - */ - mingwRuntimeSrc = - (import ./pkgs).mingwRuntimeSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - w32apiSrc = - (import ./pkgs).w32apiSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - replace = - (import ./pkgs).replace { - stdenv = stdenvInit3; - inherit fetchurl; - }; -} diff --git a/pkgs/stdenv/mingw/fetchurl/builder.sh b/pkgs/stdenv/mingw/fetchurl/builder.sh deleted file mode 100755 index e9f2669a097f..000000000000 --- a/pkgs/stdenv/mingw/fetchurl/builder.sh +++ /dev/null @@ -1,34 +0,0 @@ -if test -z "$out"; then - stdenv="$STDENV" - url="$URL" - id="$ID" - outputHashAlgo="$OUTPUTHASHALGO" - outputHash="$OUTPUTHASH" - chmod=$CHMOD - curl=$CURL -fi - -source $stdenv/setup - -if test -z "$out"; then - out="$OUT" -fi - -header "downloading $out from $url" -$curl --fail --location --max-redirs 20 "$url" > "$out" - -if test "$NIX_OUTPUT_CHECKED" != "1"; then - if test "$outputHashAlgo" != "md5"; then - echo "hashes other than md5 are unsupported in Nix <= 0.7, upgrade to Nix 0.8" - exit 1 - fi - actual=$(md5sum -b "$out" | cut -c1-32) - if test "$actual" != "$id"; then - echo "hash is $actual, expected $id" - exit 1 - fi -fi - -$chmod a-x $out - -stopNest diff --git a/pkgs/stdenv/mingw/fetchurl/default.nix b/pkgs/stdenv/mingw/fetchurl/default.nix deleted file mode 100644 index b4d278b2686f..000000000000 --- a/pkgs/stdenv/mingw/fetchurl/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{stdenv, curl, chmod}: - -{url, outputHash ? "", outputHashAlgo ? "", md5 ? "", sha1 ? "", sha256 ? ""}: - -assert (outputHash != "" && outputHashAlgo != "") - || md5 != "" || sha1 != "" || sha256 != ""; - -stdenv.mkDerivation { - name = baseNameOf (toString url); - builder = ./builder.sh; - - # Compatibility with Nix <= 0.7. - id = md5; - - # New-style output content requirements. - outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else - if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5"; - outputHash = if outputHash != "" then outputHash else - if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5; - - inherit url chmod curl; - - # We borrow these environment variables from the caller to allow - # easy proxy configuration. This is impure, but a fixed-output - # derivation like fetchurl is allowed to do so since its result is - # by definition pure. - impureEnvVars = ["http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"]; -} diff --git a/pkgs/stdenv/mingw/fix-builder.sh b/pkgs/stdenv/mingw/fix-builder.sh deleted file mode 100755 index 09d933bd17b2..000000000000 --- a/pkgs/stdenv/mingw/fix-builder.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Workaround MSYS shell problem - -if test -z "$out"; then - buildInputs=$BUILDINPUTS - buildUtilities=$BUILDUTILITIES - configureFlags=$CONFIGUREFLAGS - doCheck=$DOCHECK - doCoverageAnalysis=$DOCOVERAGEANALYSIS - dontInstall=$DONTINSTALL - dontLogThroughTee=$DONTLOGTHROUGHTEE - lcov=$LCOV - logPhases=$LOGPHASES - out=$OUT - patches=$PATCHES - propagatedBuildInputs=$PROPAGATEDBUILDINPUTS - stdenv=$STDENV - src=$SRC - srcs=$SRCS - succeedOnFailure=$SUCCEEDONFAILURE - system=$SYSTEM -fi - -source $@ diff --git a/pkgs/stdenv/mingw/msys-builder.sh b/pkgs/stdenv/mingw/msys-builder.sh deleted file mode 100644 index a801e7fbcab1..000000000000 --- a/pkgs/stdenv/mingw/msys-builder.sh +++ /dev/null @@ -1,15 +0,0 @@ -source $stdenv/setup - -mkdir $out -cd $out -tar zxvf $src - -# Make the Nix store available to MSYS. -# Hack: we are assuming that the stdenv is based on Cygwin. - -nixdir="$(cygpath --windows /nix)" -mkdir $out/nix -cat > $out/etc/fstab <vSD^K zlX0rHrqvc&t=iIWeW6NlMFZi*EC_0NsiL4_>&sn-)>M=Pq3-WmL`aRF@ zd473d=G=46J@?#m&wamhcUsjWQidc+9{f+GBq@$J{RQ~*e}6%xV1t9iHGk+&qWFmL|Cyh%5gK2e|08*z)|bR68?Y8|5q$fYJ65!l7GSsdh-vPk||Ai6otBM+yo1+CDXUS ziKOY%!&2DG&b!wwX*>N|yGvcHH>o|fW4^FA)uQc50c+jSZXB99d)9W3G~qEsRo`3| zobYo3UhhJ(mP!*c2{~iJIe0~Omz6=Zhb5MGh^~g{mq@h7e%ewmkS6>BjP_qbp|A@& z{6;Y9CnA|h*EZN&VZ_{%O0GzyQs9xoJ=lGn!p_s1KsK%h7%!_Ok7b8V~h^-J3MT*HVa%^q9fU;!0ej&Y(f9+UK*p=$H9;&mye-DOD zKc>4K`ddGun>~*qqVd_R)F)JarDo5)>F^`?gZx>^a@dms_(Qn7tfb}`HR5o>6Hyb1 z`DJ|@URKa=t@{Qkgp7|<5uZXlC9Ezgkslh(`U&}`zXBVgr8ZEpDAJRK5(}dcDz)z? z&s=r&Yv^1g+jYZJYoUU?C1I$**`q+EK5a9rjM={!m$^H$?{Mha>OU zeLG~9vw@ITQDt8a)QFEnLROJ0>ZNYUS~1wA?aWQiCez;W&CJ== zvv!bE89TsfdiC9^r(j>Co8ixIvi(XnG%jIn$YY$UnmOzAZsIO0F(Y36ggW9Wav*D# zPiqQ>{4hZ-rwA$7@k7e3iN#0Ee@1%&q~ zV;|k^mS!6ncDDp?**jzKGVwwsLvMw0`6u$568bSfP*Tzw2`9<1C&;|_gnO2-XOVMM z-6}PsS(3upCG0UEV9!d9IIZnYq(k5X`m}q#>y$S(Oh9? z6|-@GD~)D{uJhuzJpDtg4+ySx6sw{t)j%2u=WyKOa*$D1QRDRmFul>*#rQDi;}1bs z{jhqKS>!P<7l!a7N`+bE6(P3>K>``+n+Rwn?C*FP$1CkO&M=L!Bb>v2Mx^cL%a1^C zg}z_SJDuP3Dq1(mcuzlZ{7dr_$NmGNKE>(cnM^co(2iC#nEZ_sOC{1CnR#=obRFP@KB zc4quqym;~RM|qji%%USdYRf+cZ}{pE zyAo>6)|;wj{ViagRFPAKT(g$@i=}@H?+BwId;tlVI>km8C!IEQ2GB^r9gWtnUr04j zux(!n90|a6iuyaq;jN5e9Rr4CETGDjXVsG%T8;GN^yww+c$EZ!tq}F~3&z`UR}%HE zX;EUBf%K zX!b-@;#FyL7IFx;${5|nP$5=@;^K`4Y^EI>lL#II8(I>d8O)JioaHwIUSk$Bg00%h z97zqBr8(Mt9w~B_QjgrGE@NRze_D>-WK8r_S49S=@|DMl5@}`C-=XV7ojQynlQ$ho zzJjtcXSJF?A5Q>$2<5XcYnvP^2gHWVNbPp2EfqahX$G!c_p@8FSF zL3f1c`&ai^(S3pxkfdeq{N38hBe%=HY0`I@{c_NsJ>|zk?Vk~3eM^r$O#y@Blb=9< zE6CyujaTo|W9GEhwmXo~gGS5z(qn{lwHT!>M(~gsJo1E5y3>4=YaDDcfZt^rl#8}I zn#@_djA?ses-0+df=%*^!M(=5L?$Iff3EivnWP5&S>s&=D-W$GTb)@DIk@y@o-)!* zMfMu+nx!qN$Sz}tHKu=A3H#;_vTCbYya>4+89buzU*(&>{~M%O(6Y*HwCGK%{A@h@ ziG5iKI|YxzRKy=VYL*P7R(w-AHf=y;{FFfZt^HI{k2(Bm3*0aX&d1=&ynY> zM{#T<&!N=mk35HTpg-<8O)CQAIj=7*a6D%xxlKG3*_euKNPEua+j#+x4DRJVl6x9H z(p*ldBkhCaAk)xH9yDsna>h2}ak8TsB?X1)3rdfy7>IO&hnDt*Inf}1B$>bFS(wGl z;4xSMx-x@X!kqT032bSr=`v=aL{Y}ajG)gb^*T*avKFm-dYo2)Hu?R=?P$s7nL53q zdwuf^y$R5VLErn&6Yz24Mm*ntp2!~t2bm2NG#ld_`D2EhbgXAOVwpORQcqD_Fs=8) z;81gFu30fC&D)tm@Aq79_x|{d7&=MnUB8}UTO3|Ta6uzISM*=)EodO@QlH7+CdZql z-jrKU$q)Y;)>@IJeJ{xmQnzhR^P0szbD~$@f3G()l>yh>k8a6$SAOn5_O|b{O`e*` zQ`5L4sgqBBt|fchciD!%7U>!FPm&g2%MT?X7g`*WAD|u$`BOGgle;K~{bm{D?{I1F zN|gl-#9l2w^cr!0P_T|<*n7*%J{~pn`tyw@VqPMHL zjEP>O*q7hbrO)G?*eG*luK6Gh>5brCwtEKN@5249U`vSgfSAhYR^A|~=a!{Lrxtlq zi@a9wpu$M;oDiGFbs1!Pnu7-=ZEFkUNRc~Iuk6KJ`4^a2H_TBneyCEjouPD|eXc`K z5&d&aT`>Zhsru7HZR0@_V-HqbPa|_&6dQe)TWWsrAn-0huBbA9No*JmW*DV=&4&*m zU`*Skopj6kVAR6=6V&R;54-?8AYeZMgpNA@@YI6lduF3Gj*idGj@%fXFq#^U$T_Ji zK7~TaT}a8`DU*D*JVKWBr(U6uaVYE>(HaOLva8j)$A!^9Y}A~|C4dX!i>4Oru%G-d zLeK9ibj0zn3)37SG-O|%jyuSlhI#P8)EMgs^b$%x;MCfM~Wt&g?V6-Zt{b_287PdnsyK);3p~55r46g#euzS zrAR6n0oUfUfV78fzJOi>H(yS#zMBi_<=cESy)rk?!HesYqpjTKnqG|VO<4?FeoEfd zijMmxHj*TM-hxS+)*KkOGDp_@kX^3S@tAvA51yhA(WOXH{^5e-vPRx#c?ORQ=G=1* za$|YUk~evBL(0#bD2K4d2G6%;B%nMFBs+*ndu2sY!SN*tA%f;kJh4XrkZO?&tenAC zp^Jo`jlR|L$nb@p5gCSZWk-+w&xKW-3UG7fH%&`5?>z*DWLwrpDYGXRP;ZDrB+A6A&U!a8m zifsj=0+lttDLn~5bq&RbV{Mid%|`VOwi^1ezf()c@WiM$D>_z^^?yQLOdo-Ioow;P z5UNO%p&tc8jvWM%CWuBNzlkP@*VUYChyCRTUj#v+2+B^%SOc+J4d0;cQJM)Wp(`q5 zbE?7h7Q$uhNrn6kD=&urDR@;GO#w8nG#V&r`!*3HEU~NLm{TWwk5raT3*S=4+UC*x za|hV(snz>4W=+t)8_b|H;C^-+h_KqxxQhM>IwZIp2$Du+7!lI`{4{~J`(y~ zhmdL@0%k6FVzr7^Mn*#(4cD90)mkIxi^wJHyJ{$7@Obu(`TI>yIbGYrXD)5~3~Lu8 z7$5VXsZ*eBpLL@vRh()d8EmtoyAYucEeWwZF}SU+2xmJS>%lQoZ<=j1%dtD)DYgfz z3mMJbpgh+?jy1xJDV`^he6xN4qOmkHrLKFdNgXL~Y2kCz|F}NWKuVxRj=U{z>8`c+ zlw*|;xwDwc(MX$vqthu`+RG;u)g?$HO3Dvo<$4Ho%0Y_dp8V^CS z=(XoX?weB1La0K*GA@iSbRx~JlViJ~Kz>v7zOCJ$Z|@%oQ0|*WYN9w`|wi zm#9Nl_duy1(ApQOee8i+yQ;!SOVwU>ua~my?3c3bZZGw;-7od1?Q5-a71{q&+rwxp zvY&3wknAh|uSIZ~lMnT6WM1QnOX@Jw;yEagA_Jq1yinEd#cb1DG!zM*19DD} zKaQtaPZ2_M&g$u-CyelE;!X;b$ZuIRfB;tRjNp~ zXj=}VLTaZn)r*Zo?3I5YjZ_1rk!qm2B&wWp1Uy0;w#KH(ZEjj?U#fu=W2Yds+Hvf! z0MAZ7fDyRKtK~ReMJa>d-UbgjbJ$XItOa@+^@~nY{Z;U!tS9ujfatGTznyT+`fc>8 z^GCnCI6{r_#bOb|XeLC4wa9(iXfrK}RmWrGALgxMLa(5B_%p0q0AaDZf!<}QSLXf^ zjp{TkoQleyUzXy$f*_K0vA&>_waf?SfITw8;3^vHD4`-P;nPmtv-EjBHPjj@C71m0 zvvNWt&y8W z?Pb;zP}irnp7723LZaHkgf{k6(;~9THLT03wTP)M;Hu?(7-BY~ofAsjJ0kz^X3CK1 zuH$T1d(~HqwCy}Qc88`Tp;KC!Q44sH_@Z$I@g#MSNCzbWp9_fMaTz)lqkVR2GfDE zwgvhJeI|Dut;xf#`!bbEu0pgfSTDPru!_KHO@ZXo=yp38GS|ZP%ug&qVwvWPF22B( zEa)mElLo--SQ4fU`V!GY2+?0M=f_M5Vk-3|)({i=Nh$f&Su_iX!WvjuOEr*L*x)MO z;TZKZ5HjnDXy_q4qgP82UxIVj{~p7zLCy;Bd)$?^ldh$xv&2rLX_G_p7Bu41)G4dc zj89RAQxjfj_tx5PP;aysYwdTc{Z^w*yG>nU->$VUP_NS3f1(bw%j3{3U|OU=+q0DP zwolGA4%n9f@5i!QS9}ie{o}OBdL};GIAG=U5Q>Ye*gciJy)l7&OH(E=gG0@hzhBR ziFvf;oBVkfs$Y)L>H?KeAkRzGNQWrkrQ|#c^0?HhB+Drn^hGy(38E`GRWLWNp(!TH zUr@ECNl6uBgtQ7sq-Oa4sDg|4JuFg8cG@t_Mqr>*5B-49(8AHdwGTu+t}<$o!L z7Rco6YHf2nqDheff}l(T&vcgeIbS|ZZtTaCGHQsax#l!a;kQ8Y$rS`>O?k!|A|?%D z?W_tF?3yo-$9ss^v7TGa?O@2-GkwtbFU+78>6&zap zF+`UleXxojeFzW+j%x^|=23~)5NP*Cfw^hQf=xC-#jwEcpwrTBB+J;v{stuwI4sAS zb5K#RI>u`=TSYdw!S7DK2z1x#-&cNcEl{Zbo_)OfM>kZUd|k;0fTiRLXP`^RPDFSX zx*A^KGoTR4pXg~5W!{1~Yyc7gDiNK75N$yuC;ph}o6npoO-$VF1`!jvz+9eiPZ1}& z;qQ>(N`Bv$>k)nFA3XRK1%tj!1-!}Oy+q(H3Y_f(7Ez#=2#DNgsz9;(k#KT@i0hdBOAd}w80wQe$Y4&ES>(~a1Tm!} zr$ZCt(T6BEHKJ|Tn&w~zj{0#+NO_JTh|9;md$iHbTI3W+J_0YY!*epYnY66{#hnM=3}`TtY}T*(W?WItU@ucvPXm`I7YY(M&MhH{h>rUvY+*&$c1N$%w=tq>rsTA=BxR$NE+om z@JzlO_73rRfbH7&9jcM|{3dc2{>jXk#(7{t?bCD)*aEF>#(7Z6(NMoei zWc?`OC{h%Txzx{kO{a;NJx+O}(>Z>HnGrTn$=CWjzP8KpwTF*#U+a+d7-T`={FJtR z4EAU1Z$uIaeX64wCUGn6pq@g5YZ1=!^uV6?pRfXqiCC37)$U%xEQG3zgvle7SUKIX zPE*g0ocf=CPe)O!BLq8u{|t&v+VGF0jI7Ajb7u^ao;gsQN63s10kkV%k2W!6AMvtl%+5O?P9 z$5a>dU$Gr+SVKWF+MMYx1u*>`<0@k>Ate|GokHR0YB@IeTlBVEPKnYTsbcH>vzutv z{U-PXfo%n-?HrWcL5(2l^5W6Sc-Qt&YYMTSpbV0~16Jt?DUL6HUgmVKJ&~eTNB-%@ zIz$(D8_UK}#QBKWwHLv1*~ef;FET^)A|m^l>w#o$ig8s}1u~x@{FfgCKllv%2Ey+r zeD^c(8wtOe@L%=pqE9A1Z^Z-~yWeODRh|CokuPbzqzeUCz z`%-6)t==Gd7v~5_Z(3pK)8z!nunbf^jQ8j@o!tca)u?uAKOs4MwbqmoVu@08!N!i+ zaG$=IGZ&#;j1Pnje)Ey=Fy2ySK1phuKqZ^dE`!Z!=1}jGFAxUpG8&-mc}T5h+fY13 zUAza{8qKIB*l-OgxgCyS)K4Psv;ugteKYuId#bE^(Z_eRgBL+LYAFnTEV$&DjXD+x zv5cE|^JwVffsN#f^C9O!GNuk8c2zYrdK;W(J<*L;G_o+8*6QM`9C9pz2HmuXme5Dz ziHu1T6Z&!oG%QLiJT9S+axkd|!mzbavT~-;93JH$Od!xqV|9%$V_^04XS9mpHa<$| zW1P4+$rIzt1z(SBztl=t3##jCEw35>|^8#PVXK zAK8Vl>>eQbqS+4heDW#y*4fcmrA(RSVh8$v53tm@h048E+pf6ocYiixhtsGBkEG>mk^bw zsg9zPFO?7u zj@OCvZ=pJYI+?#)#4h;fJ$-Qc#IwgN^ca)&cpz({{iVt4L&9?$qXdcNAEAXUs<+|Z zC1Ed)DW)2zwx$}W=CZful1mIi7S2`{kDW6QD`zd`2nPqFdgvB{{GnRNRILVMQETp$lkzt-6~^yrAR6f`|u#J;FgTohlc>_`(LAwiv56Y3H=B# zyj=97fL?ZEy~O10Ky>VQqqR#t#}1EGPomU2!@Z}6y(UksYYrwmX?3TxHuAI*u{S6R z&;H+Ur~KjYh#Y$r9A%2-WOC>s-tjx?{~qdBB=3WYA{pMWbWO%d1r3s9JoKYf9!#gA zmUmcj$9q^Et+s!oG&w201VrV`WIrUL{MEtz1~@t`#%(wRN{GU%X7_!7Hkuk3g^J%k z;IMpuGgvUA7zH7l$zu)AP=u2&0mM7H;d214h=JakFL>}Eg87HF2~X}WMDHBi zhFqk^tfLTXguo(gJP$~-?Z1-nK@gt&oP4xnEJ~Q4l2D|vXpk$phG6udkJ3oMXc;D9 zWo-gItQt~H?HzqP%izQipL5uKz#aYkL>dPk36s(onS{#bGRTXQag)_fDjOJAeEy5D@KcKno%5ZgUNZj`)#|gmnQ5Bo~voX+EF=PSVNQ zB8BLN&%oeH-b_IZo;E*@AYz+q9>UvLLqSx(Jjy@~1^AR6r_U(c9du_(Pjuck(3IW} z7e)XL&T*J7+DNOAcSrnIk=M!6@7~24U=PghJ&7VOVoCsA$!0Jk=YmITn!)Y|TXKWI zMmNO3=Sn_BK|W@Xx43EAJAkIW7b0F^rU#`bW;@AdFn3OR={#ogd7!|SiGq=mPa+V$ z*cluRnFi;b=0m$%Wi3`B0j0;=g;Fv5)j_mP*g!*A|dHE6X9akED|o(H51t_L>>{3^Z!;Yu5bLcgzye9^QN89lG)1*@oXyQe@H5sIQfOxfMtbf5w*bZiYg!={o07`2 z&~G|R?c<#URWVwB8OO!QFbj52d%K8!Z`mWf_ zoy7gG{lH(=6|XfdVm1l|t&zS2lT|pacJEynM9?}$V&YwRN=d3-9qDRKcd=KU7y*ib zhHd#G#GuYQ5m-$sbr>yJk5selo?80^^#Z$_Q?eQa1S#gNC)RoKR5lviN>5R0~?QZr}UxzrNs>k-RXLqhECajwf%brx;kbnakfTeNkBGbwyy z#@RN(P8|*!da>d!$9(8Net4Rv=2#4EN&X4;QUMOf>oahaKzSUg(D7Uu+KDd_tj5Q% z%XZo-47^G$siEJ9rpjnN{wK;>eG_b+(A)7O?Gw5LUV_5zgubf-8+V{){Y5~oX8i?1 zB=q$To{fR4Cp<%G&ERQTO%7u-ZUzR968k-x!X$eTMY|n9v^w-(}#_R(f4V@G+zG@l}_> z*kL!0Wh&c{0Q=?L)bL`FAu<5vXioG*$6g%i6Dsswbo6H?fC4LUnK&tvWDyk5I-=DR7o|4n(danr zK2ir;BGmcELZ?dmgb}4A9fpIn{QXmfz?D7C1|A=Ea>fRaWsz={-WMfO970`h#R3{; zV>r#Pp2za3et(}S$1FHhs6^RGSw08)BFo8pfr~a$L`fZ+;@aAyJA@0tX3hpn@55!s z4^ZSsA)Y2gRCk{{hiV8Zlk~y)Dnh@p zj`(oaiMyRkYdlTSWc__GX^j%4AnSV(h&GNFfvpHAz4s$mi94}u%*P#Z8cYR%+~$w}QuU1a+aMdts*pe}ag9`fMqHsTjp&S6#}hthtVOl$)qP-YbGF z@ZnHT3NN7WHK)j-kM`6!?K6El;A*fuvU@=9~vGh{65 z5Yj*y&gOk=30qspC*hUqg~mFSE0u2M?DG{`&S7uuK^~wzCRl4BEq$QT(23Ekr>Ce) zM*VUKFsv1L;=Bd$Xc4wyXB=lPh?OU820Ui5*U%3FW9TtFscpi6#_rSEQRq_bFz1Gn z_aG`yO^ByWJZmkbpg+zPeFjgm9$MfIsD)C+9|ZQC&Z@_u*)?=R3bE0~tI31RfDe;Y z95~|1r;pyK^KlBMk(yvh?PKyD0=jvf3MUyXK-#ejiK#=|t`bGzGRE;eBZ%Um;1Sr)` z@fygW_^dClQ>n4ZO|-Ml+jwO$`~{~ecZpdml>u9T15I1VMJtl0uqm6+NglQF34JFZ z0BBx#Uex~FXPnHOKc6=t)oNcfMHFQfw%jR(h)c~T#ZAuULZd$r)yI+2h)x?Ti$oUw zablw16S+`pHxl7TIF&xAJAN%fF6gp0eshLk^ zNTC8-B9#B<0K?d1Osq}+fpXe-FR#LrEqxNzS7C3ap~oP%z$YpCEx?=gbMS=Osa33x z;%Vn#*Nmd#52r^Q2**ySU>rUgMFK-{@L`fVNr^#MqkaR>A{|424ls*AEwN}$ZB^s~ z$A=#TH(Sw6D@$9+xsunzp)jfd52f0yZ$(;gYd+|dWBuXdPMsqRd+`oFdYmciG>Pcy z^qJHj8qG)&Zr@C9&nrXt(lU16c#(08n6fAH#mp^8Dtu|GfyIq5Gs62 zhy{VgAgEf+v?^S7Pjna=MG(4<)1?xptJ*q+7Y&Up)Vr_TG70vVusQHJ6g98d+aROD;7K_9kvs$0 zPQl_M5s1SIrJe(GqS!h0A#?$v(hG#bi{Ru=UIggQq-28jXAgH>5PMIqpX7PZMn z{YE_PE4!A$h`FK^)I9E_VzYFSpM5e0`c;YfhL}@01*sONebVtTI15^O@*?^RcX#ss zTk?+2Zs#^d&vQ0De-|eD0}=KLLjHa#W4@h_PHu?Fod>A1Qc&S0sDK7d&91R%BqU+r zV%AgZtbONNReeJL7)XDl3@4(1LlT+s4G@jPl20Nm5(`WZrR$#ZDiPU&AZe7VHS+#I z&2^M|8${)O(rgrG@ZsYWNI{>!2WIW+oXXY01GiiY!jGEe56}p62W(RNhOfm3$KV#O zx8(xxpXpZklm=;>;aXwvV~d#D#~a#^tHbJfVlZcXjnk{}1MX!XL(y_}`y|Rrjy+It zIJD1sHm7i!U*OmbNOhb|Yoy7d6zP?=iL24R(0H9su6ob@Fxx-Yk8@3_fJ+ zL-UKquFv#P_%=t&lY0KHI@lc{ijVkV~z7c_LWPGei&6bfJB z5PO^%5!!^pqaE5;=<8vRw4&Hp3WYCoXa_(O1aSNj&YP!t!e~AL25_i5?6%$b81iz5 z``I5zibB#Dhi3eMCIv#_`3~(TKcu-r;VT?kv7ljeO7`v7Y2UGFLJJZ4cM=At39l33 ztWH8VLBN<6OBf+#U?=6+5N?80!y||i?&&1`F0f`Wikxfh8R~GY-4huvW@yUb&bS-W zacR*bJl^h+YEa=p%J5DWE6wr{X_VJVPzAxU@KJw=_U(CTR;8oNp(y8dMwyrd zPQvgsp^5b9>&WSo#_l96KDXe~Pv`Oc<~QZ<;6+8P9G{U`+iql0;deljz|rFQ}94oRCu78THe_PF0}Q2lP6iF7Bi@ z3o4qvfFpRLz&HyO>QK~$H0g;B=Cl?M3d{-pLnz{nWJMdPnZwKs0)vjg+XYXmffmBT zlN{_cft5Gu{h(JUj1zG@Ust5LXOIa-b!s{&O{gHkRh@*4G~pH^{G^lcC01l%94wZi z5!V`NW-UeB`As3^;!dVF1XHTvE|8T=I|i%rVnO`Q>TrwM~d(#@TO4Itq717C%O#N&TT*QngCH40O6 zWX`B>!BhD=jWIl>=@qN9LaaNwR$M$|=sQ7YtEH1cL&|lX%4VcSK^R>R0bjc!m>kz92;#??YUw z6jHdEWF-QPh9JEY6g0#%TNzy%H|SCF*EJftOIVq={PE3N9ZQX7_lprjaWlqq+2 zs`;Uypk9t}gzXU+Q}+wSM~9U8o&3*t@MGtk+{kEVPY4_i>ga9g-{Z7~9&KDqIS}<~ zX=nVO2wphjH4q;PFLY8Z75Hdl5zm4roU(^S8v{y3^ZKEMf3~xQKZbb&20x}g7ZRwSqfWku*4_<(=;9YU0=IKcUv%Yj zqTyQR;QvS9&EN)A8hc22xD$JI z8hcQAq!T+djcrltJF&ge*dxj>Igp@Y9e|i%RC`b~KIGuZ1x}iqT1WLy%ID zqe@*T_C;V#eFID@T>j#aVs=s=b>cK^1cUNWCtL0?> z(Pts}u;`&R5);Lk~R4bK&kc&_9ab779{QNHCmsB=cJCoF%+ZJc)rtJ4yMc0o#1P9tUHi`*=*ZIn4Duv zV-nIrweN+gDepu_U}91^6H6jx>DA|HV$h8t52WJ*#WI$ON?8>uQz~JeR0DNy?BEsL zK-%}?Bj+dz@JjPv@Sx9z9gdeA4zZZ3Ug#`h(A=NREfLGNxUwX@f`D&9Rzbze^hj%( zQ&Q?AOaBycLP{^G!(ksq1u{7rmeHG*=NbADZiJ(FS{z3H9z)LAAJ3TW_t8~M^0MQ1&q^#NE(@VgyY1v3$7R8xD{RbP;kVj zbm1FN%qkJA)(;!&NLaD}d+yH44jF$vC3Y1!Dm!|2NVot9r!!~e_{;|d%g4n0NUl@z zID(9Gxp24T!ZwH|59cMz_t8l>&ED7t0y!K$j)Q2XK2%f}uphmUvxhhZ?7SN6Atd{> z4|;<(Q>XEmwT>Dwku{5iVZpZpu>y$MrcR?A!La}cx_h19721v~(c)3k1yog^WyrpqYR`d_!uR+Afs6K>Q7e*=A8lg#Ln1rCBsXgc1l< znMH~Sy(*&a?1;KvAX+;RzZ8f(w2van&_a}nsjctehzJha^%Wd*Iid(BEy*Lw5Sndj zYKMRz5S6C3yaO=?h$>U7?LeGQ0#Ywytpt0aV`$a(WiP=`2$&9?F-ySoJr%1FFrCF= z5dlXDo)36->Sa2_$YueaX|$)mgXZ@+#sf%#U+Tz4526zv8<>!ebM99PiI-BuQzl zC_)QO=RwI{*!yh|2k4q{y z8kzvIg-u9%M}>CERkiGVXE`u06sNN`BRMlZJ}F~kFW}wK4UrAyY|uw8y4H^0XVG~d zrFLvM?h!K|Ckx@^jPV|BUVsd=1Le_^Gu1oldtRX<&a+dbpOgW|j*1o%6*2f^$KHT4Ra6waU24WbL4sJxVs$JHi;pR$jA}|~n zY0A9BWUSxei6#?USdR{c&l!_FNF@~&l5yq2EpqH{U|x+|2u7*bug-$QUXnZojMhF= zy)^kx4&9H#QN6VGS#pd#Jb8p8SE^?x_X8?ddQk?JU>sGhj3Dq%fM)65X1647o$R$d zIyA;d$V)x!9MXZd(I$K3SOyvmWJ4H=xz9ljkhk9CHOoAPr_L&I%}XIN3TNC(+_e&H z4MFi@)&o_3=G5v)_e8Lja!D!Ra;(;*OBm2NV7y~Sxk-Y1?ZR>;L>m1Ctn!v3e6cu7 z?Y}yk@+u>PwpVMvA1mnXD{(1X>E0+#JgaXNO);nKt;?8FRO^}uv*tI&Xq<^;lTRaG zuzV?59zKu=9wH4a)jiyr=oY0l#rXi@tpEMPm3s7`bjgGqdxIndze;q2Y`UkG;r|!- z|2h7D7E%^K`*QXGx;Gq4H+JBwhgE0Qm3~$i{Cw>8l|AJxP4brgBU6-B~?`(DMseB5Vz_<)~ z-kr`fij4fzcSg>SBIid!%7;AX4-M(aId;TxF(B?jD`;7fN108619=IDcy2;0lV`)v zPk}{OesMLN%$V#q%Dn$ILpjE&=(VHOZuYhCIbZr4mZBej#NuS-U1-IxpKY6^E7yb4RmWQ~mB0v(8`7>QvVw#J8v{CKaIP9u%(D?#+5$W9WQ2ggAHc`>8joYxuaAO zKO0Xuh87v$0V;D)%xoa#9S23xzWecgAEI!kVk0+>!5O(fJl=@r(R`4%uZvQ+!K<>ZnIhppa_c^p z8uOrCKme+@t6f_@+!YxuZw-t#cHFSMzk@d?jUAO5^Eitk;R^c;2b)sIj$(@mbJ@5(*e!%KR(9OYcO$~$Za!ScN*cmAkB~*o4a8q)l(J}?TP5Oa=3nZ%#F;+2 z#*-u)E&G@?HC3=r)@l%3ur1fh$u$dyoTD=2VcWdx4X-O41<=kh3&&>^jx`F$f`3&Xvv3r^ zmtD3uwPbkmT^Q*)?aSQQVHH}pj^ka_lG^0=z~d^y{KL*QrsIA^I?5VtS)RZ}hLLml z^@ZHHYm`O25Lp?U*$)}nVc!fQw{}Lb)tWlo3}BbTtrm$q%%wbBYtNFm7H8w2B|P=C znezyI8~1JEUW(~yX>I$;tjZMgLga{9%=Hn59`?ApiQQ_uO|~yjE%wV>C;CFlJ?W&6 z=8yyBxSB_xLFylDrhv8Xs-Zg^O!Mx6)CV zH{(D7>QwrAE$BvFHl{ttdZCZ2Hi8>aGgfXuy;_I_-~>1* zBge|p@cFV%W|g;uT)ZXvkF8J$(&*YFIrcXAk)9RwhOyt$&>If{$i2@jly=h#k$wom3+_YUmxtZcJP8mV(R_F}9)>~t`kBdCFB-ip>88U*; z5%=3?qZ_3oNIPLvtp1f}1lQxft7SkV7e-`#@;B(WOWF&^uMcX%b% zKaeWA^x3#8SB{;e(kwkvN1V7ta6-$>B3ySI{2PslVi+Lfi=%G|SHdm=frdmFU{V~< zw+Dfqs@bc)Gy2{B6{raYOAkVPw&eWlU(0t)5A zLm3o`rb8Zt>JkVUxuZvrssIZ`Rt+4u}f)7^i_uo>~0 zEB*M`3e29m}y|Phrx@nqqhDy4vz541Mt=TuTWj4=BFlnk3M>t2VdwO zk2Vq=r^v&@@F^3tpo4YlMTp)Jt%Q|OG!e-k9#+PVlPT~idBknB;f{k|bO0}_obC0a z1+X#X>Bul{3jQqapM^%9Huf+|xh#Kwd?1Bsp#$Ob_^2s9m{1c0N*1UK33U-rvvyG1 zK!5yl|FSan%(E^@EbJaY0?lp5=eN)@?}&GeZS$K6GN!c}_>qayZ{S3gGo6e4Ve;Z) za~9d$IP@y9jSTwdw{!m1k-?lN(EYcaG=j%0PxtDo^d*hB{+>s{1);|KxDk;+Hg=m!JPhd3&iQugut4D@}@Qz3jb0a1ac3BY&gI%*Iu z%6_C!YN;y(=-^NJ|dptVP36wD@l27&6jdH7k3PWKr;|j{8(T}oa zmJTu|P)?0=C~vs22+t00;WjcpL#D2n%FP4`Bbg6h?VZRZU0rG>8@?$WawAmbal<%7 zqd$IEe{ouoUic)1b`Y!RR9U326+9hcmxi!IyC1F_$uLV#8!fn}J3bOIQEH{QqZnTd z1pTO&zUk}{tRaKCSy0IdQ2%C#A3VUf4>?j~T=ccwu(qV0!>Tb8H~SWBSNn*=-fLgR zaGhNTtdW6_&mw+y-UgHyjo-26kfHhv_!NGwBI(BInNIt|bCCCLvyyMlbut4ChU@sY zn`f=_BJ&+LaP9aI2fucK=|H=NmYSOr(}9ZoCOR|wIMh>Ul#%L3MS!F=`ZTIij^zNE z&^!nb*(&i{ll@8)K#V+^`(otrKs(CSz|cdIwjFhcga9;h#&$#d21pv{yo1=LNi5j( z-u8*xc<=cCm=9nvP%?jU46+Q3;JODeIY45k@q|~TYBdVOPDABQ4}1d=q14O7jn8_@ z*u_EKy^yAaQ|~q(piL!MWdL*_mmw0Ns??HZ?H~Y``2fw$e!xPgYISt8c0{loMZ@_!p+&(p z8jXWylEMAxUJ_a@a2wEw7)AbsMpH(zeL{OZ4HeO8id3TLE`j&MFapZyfQFJyz>f__ zf||80^h#)V;WeJ)pAm>#@IuEeC5rOKVs$B@VQ|F%5=8-m5=E2vOQVp02mxJ@=hM5p zw(oFwt^G#%!C#WM4AqyD2t#Lg6K1Vcy=|Q zZwVSskWEk#L7xzGKSA#i^b$dD5%exWI|%xQAliwI51Rw%MS`v;2pyXgUri8QW|H4tPH^e2Kg67&>7hY9*6L8l0^2pTpQ5LMv#1VHwR_*{BL;t$YkVSF>a z?u>s(uQ~C5(5o_@bq8M4@gI>eqhv_vW{w=)* z#%1^)ejDaIdimmG=#?2)@S>lBpf~S03bpULFPo4WT0cgCyFPa(xGv>h3wiq~G$j57 zy$154g}hS~^2M{k4teL{Me=6g&E;v|d6o@_xMxTlc|T&_PP~2N%jxBdKTNMoE{^vM z7^R@6n1x>(u{O+spEgJ7DJ>uN)Tfw8jmup*i2uY(2|I}i5(X}1OpP!9<6}INo zWK6l`*iy7|^26jQHKz(V<`|^N53hx&np1R&QI5R?%<8E%r_SM_2Pkw-%_%zUD#zv` zRC9{X@XE2<0P`>5YfhcZ5qEGR9T}8kR7v@l@HMCCAlB;h;&EiC<`f;*lC2k@M$M_q zIp;Lu+zdo~Kj)wWY;x=&t|(RJbW%Gq4GNgVqXu=2yim&8aO z%q1MXnxofoQ{KoiMZl1{bSO)XVMxuBnZiTVu+*HI%HiXHlbg7x>p9{CC*Hu}Z;1E= zC*I5vZb!~E9{QZK(&05ZMh#PPA;@v}e6lv3c9dfQAmoQXAR67@QgiAqj`ormC`Sjw zgjvL~OT26^@ zn08c>`#9nhXI%?eeu$>wHK$H<3^jzw7x0Mph5n*797Ygt4KE>xw}u4-@z!uMLA*7r zAc(hyiwNSaVGTjNHC#s!Zw+4{h_{BX5yV@=4+!F|;nxK5*3cUU#9PBWf_Q5Iq?;;rFl1U*GkTnhm4)^GqpyfwU> zAdRR~0HHN3rdK3BmtG6w3+Q!c{9by^iEH$#j9c`Y9)Fr%H^g6}*QEIC^qLTVhhA64 zkI?JVc#>YjD4zrgI>P)LV9J!AIFO~F4!FWQ#KZ$X*ZHqyG}Gu z>V|U)qr-xXUn?vDh>5<$&iC;N3VyIpc{LrqjM4rT)}xvq;QN{3>@xOic;QT1z2B~S zN3>2|m4OwTaL+QP0gvfLCGc4zuuQ-S^jnFT3U^Ky`S0Ty@0I1Bzz@jTJr~9P zQoD)!(&a7x=3*>oPhkx@dw%cun>f1Cvo51({7~HT)M^YqV|I)6H;mpeK(E7azR+7x z=()#dy5&uKYI9TW6z)CRHIui_Rxk&X3P0u*G&kzjyL0T0xuJ}Kvc9X8PW0@=6PFbI zlUB*R3B3tH|4(SY_jN!p4xqRL;ZrO?I7EskPV98hA9o;JDS)5cIu1z@pBy`iM&8tk z*P7}wECQlqv6x05|KdWfVUb>1lN;ZX0-yXna2A(qV9kLfGdi!9e;6Zg{TT$YWML87 zuqcERHh30r$|_tnK{%tHa0&fMJcZh89Vq#CRA1A23_)C3I#Fvc5ZbJ+(%SQ7>kd$H z?SuGnyw$h?`g}P?6@WGg^VHRRpu{h#p999^Q=Iz}ahn~nT&&)ee261Q%dy_XvWkZk zIrbSz!B=`W%CRIst^HxOmf` z?QtiE@vtZQ#rMg99P}pp;BD%ZwdgxhSoNX^R;S#;l){k0!t4$#3DxYOkuaH*OaqhF zbCcFn$h5dgErR8rzJ}y+ToZ8ee*jv%l(4c~%w~0WOGt_qR|WkM(6v4OB#r$~?8uAw z?9Aw%sJ%kllV>l}_5|!DCw6!u8PRv}(KwYgqzJE=8hs}(#Ck#=7e?h~PyT@uyoi%6 z(RTu*GSNF#rchdCg5d?61D`SzMYvMEC~{oabE6tujje@CR@1FLD+^G@>KMAPI?o=d zv5W9QyWLG=qqX*|WkYS;XM2~}BEFfnh!xr*UQAoW_hI1y=9Z{B(gN!rVN#Q)VREm$ zj^7M4PmZ;LY4r_SdxadM=7oG}iX7{XxK!3bIrcfQ$t)_u_7YV|^2V!ut{i(1c=_Q* zJhk@Q#pMslzw*%C>iw$+Ywh#ZJ4wWya*P&9`E5hAdU#cmrdV40J?gpSl8e+Ucw?@$ zN7V6J`*L+kl15Y79xpbF5}vV?3BFq=f~b2^l2(R95Z$U|-wW6tfk*Tmw>^ZvJ@x?p z_S(JqJJ-&_n|un(A)c`qkw|tSF!n_b+Jm)b0r~;vI9M;1UmdKM;&rEZ*}wn>C@t8B zgX>hJ#-yw9+e74o#w}NS5b~W!1k_6faVk-bZP=$nv@AqROrlvJe`6t%zp<%|e*ACb z^Xh0WmV{AE-+zy1)>B(2s#d^oYui1BgAomxlpKhq&iviuc)gLWpCc`t*ciwCZ)Gm> z<7&4;x!UsFtVlL~b+FlkyQ>QQz?+`21w|{b;0|&=A?0+^#L`9 z@Ln@SF(-}l8#Bh`*dy>WnK&Ksu0YuXo!H(Fr4MgGY{!mN788@VVs1^lC>AyDhP9C_ z*|--^ewgL+Y^vfsIChvi6({m|ehDFO!ukmB7^(tTw|Sj7>xq!!odSOH2A>lkSXbzx zlM!n{$JR(=QU}1>dM=fkczjewV$mdphlw~s?(6{W6P*ioAu)La#pFrgUZ~COe3cf3 zA4go)NC-AvEiO?h!h2>Z5uE2zBtN?(1Izx zG}+Fbr|-r`$-vUzy)q6?lc)e%GeR1>%z8p>V;R~}SFIi+q8ocLxVH5XxEac9Ey_&D zHK+KWz`0n8RCH$1ZbBnQ0eu;^!gF&t>YXo-HZqX}$cXh0D#q>}8V(N6-M zBGrkGVYm&=DLJ@jxX{1ttHI{<9OGnHQ^j_x6WR{Z&$98{wtXNhh=UBmo(V)UzKiWw z-ED{Pi+LQm?c`v?B0Hn~g;9AKl3D~%i-un-AwSpeLRf1gMrm0Vehz|wrSr{tQrg&O z9DtnS={TW`AWkR~@@;nKw=S5NGKl3yvz|oMd0e&bvXbl1;N%o`5_2Kid-={$Unsw9 zt=2Bt^+Jt0i(F?US7rqF$q`&pELk^lbJNk9ZR%i=4{7yaESn=jvow0DDAaU5D0kAT ztIT==M%0rl87fc4~(tWP#hVOBS}NI0;SdN_cdaW~v{e2>)}c z$&^fgM@khq#UP?A@6rPO6$^-hxl=olUFv84ZFZd$dF_3=Bf7mW#mmpK$Oj9!^_SsJ zdETZrQVGeMx;u4xHq~hbQKtx35egI}49;geEzpTVs^o*fcBUfoPw6hEEf$ zTTV5s_TvtMu})RNK8k=m@^7)3lAn5QB3d$-{{qnlYM->db_Fo=wq{DkRF5s=MqSJ` z#7}%-t3EA;4wMz}+9&P>?q>3UFyIK@)`D4jn6&@k(5reaZ#mO#;41dJHcLrQx5j~qN4LYMSmW&AG#YY z^ZXlk`$LBq`>lCT6(T*W@m=KQG=5w3Al|Q@i|ph#Z5e{s@&AD%S&fAL`UO!e2~oSy zp0w>V%RM9BKGB?~W|~vHcK;L20sPuH_m2e=z3HA?bnNr={at$R-j1KI_8HsLAbK zWIxE2Gey~Rr%wx4IQgG#BpmnkA~qeH!I>HUdpgdDz`CV(YB_#@h1wY7i%P@Ja1?L60= zMc9zMR<{4hIaU*ee*AgCsgJO`G9@pZRlJFw{BDs#eug$5N z0G7OQ`VPklv4Wil(uN>Tg81nu9?p&j+i^UEwcrQIs?5^%O6(f;9*151(pH>}D8#Q` z(Si{Ft!3J#$0xivQPD%+9T|*~U3$wiqe>lxD`xW`H&MjrCH6)11I#7fKtaor!Iq~_ zs5r$pr)fngl7*8N%|$+!-EZIRUL%7z`x^hO^|@0;9(mKY&Y!Y}(pISt>P_EV`||*u zUcn(~(%#8LB1oHeQgiUM#AM1qpi=D?U3pqk@nf3p61u}ktJn>!#2KqRj>9QY%3L#c zwQ+L6?x9e>Aoe|JFPhSEtVJtHNc%r0xfZ|2_Mel)2J!zXN!pIUZ=rk5>{?d}D_c!i z&)WRSW26S{l;eyW76RC4q=gkLQ5GF%T=HO^>6=>&e6odAFCTb#Nm=*-)1Ws^@Ui2^ zIKh!BmdPNO9R@xvl*=sDn)0|fw$w_7QIDmj zu@vr3UCC1R8k~r1_H>szKOccDP!cdSzAeZ^`@l`jGoOddV-Zl~zn63F4?oXI*>^IX zz)$_+4~HR-&|%0Um^iIR_y(LI_$jS})OD*39>%m%kvFY!SyO&HKGT}ARsO~H@tN{3 z#9@%`))eG-*_67Q+}1>*Py8W$BGE6jf=9!C<2yLcr?sV@hH9sM)*Sp?Vn4?&hSu!X zY&R0Z5)>Vl#v!h0hbPzi`~iGTl3av5nbVGd(Ch&({SXXg|Vi*l33d>4hA=a=LHQ~U~?yp_ga2Ie-Y`j#R#?QeR z2|oIIZ8vN|rzJ=1DJf&^@Q4vRT+OWcd0e5Q+zb)G_QH?IL7zAYOCKR(&wyjr)8mnR zJP(hq``t($2a>#w^X))WfFlUkP$u{p1v*311EoZ&qsk65GMqNdIE01i{@N;!WV9l0 z0S{frX@6@}c(5vQN4s<6iEj%c^F#29_Zj9r9)KOk6H1KZLN4xBjC_)g;~bks#X}u2 zBf0pk;c=UvLB26xNnliu>GbRV4gU{m?*blWb?yJpkPrq4PLP065u>67MI}O&0MS60 zfEVaMBo~lNd(=)-dqkN5FI*-}CgjcQ)GKN)w6w>z+ACJ22y(X*w6>*al`0l&@%T=M z)_5r**v|j+-S0ag*q+}x&-0Hs@4l{mTYK-d*Is)qeWPVFnXJf*y!8P5ERJ9=B5lUR z$X=HCRnASC*kl9&VuPA}N{i~NgL+~_qFB)Rt+KtCtI|DRw9pz>v6p`9ArW5>)83BX zM@cYF3<5{{=N6aNH_WQb?a7Wz9P738+}z?4Uby$lja{>d?svZVp5JGJ>KmNI?3TmAYPdSpLv>*#8#+YIkxH=CUK|4fOQSC?H)iUj`xa=TH24d zQPEN(`3gVt-O>>ZBZm73s`8xm)+DeEB1y_Fs{ciiRXud zC>TtZ>1d;fd=sHP<^^cZdX0dIgqu=N1*l2HS1l93cfjGXYswfvYBfB*c~pXOV`tV! zwyF~F>!?H}l}INP<0oBw^G5Yqbi7+5OKZvQkMrqsD5qrA+Rs#eBRBflqOy>pNX zZ9I(>Ctd91XMxZ}0-CHe6Ta%rg7|ZzUHmVZ)xee4{(DVbxL~RU?-N^Hj33zSo7FJW zdE?DIzK?VckkBA|tgzyZ?CE5ka*!>$DICdClicObY|}TaePwznkvN_M9jDP#iGx?< zSCag0CguCcDZ1B6&YzLg#A?ifjYhugNHl^GRF5#|?o8_=0)pEKnS*Q&JO)9dw2Yj#)j zL>7ncWpigmt`XAk3V=NuWGt=Ml5c$QBMhI+VY}?|VOo?YD3i-7a-EaQg}N-A{q5Ru z)@wYfu-DSCMO? z0;zc=^UbKJ9l_T3VJz_0o3|XK&#V$hBGwgOen5s;XCJhC*>@Etc5+8D(3*WPcDev& z{@jcH*oVSecK$<`Zu2%TWCBXHvSfPWG^pn5@(EOP- zI1)3;3lp*%^Eo`$QRR*G@zN{tKd78llxbGd6#>#otm;$gc(#_g+JzNJtSBat#1=l4 zNWj($SZ#5Jmk2;Z1U2~wg`8X}+Hf+*2~MmiCxQCwQwan~@98`lLUvVP23wy{o*Cu6 zvg1FMUR8<~9jPt%XD6BVpUB(f<^77A*PpJ%Y=y2F{~d_)0D-yC3y2n&KhwKj6%e}} zJ3R9P0$6s-PO4X|#2er&&(02O^`wp^?lt3#^76!r;WYAPf2YpZr_cE-QNuwn}Z8EE7m`0d##qhj4ye;-ll+R=V9 z4_I-yTgD6VeUF?$x^C4gK;>6uh zlSM~r%Kfo(?3!};aD|TtVnY&l5BJ3akC)&p=i4h<@_4}1km-T!2au40CLR-Q1SIY* zqqjNJb4qaRYdMYVgKlL9D$^slJ$C8uZ)BobvtP;H3c1~myEC+h)ZPkcFW+bOyqQqB zd+g$0FI3{`kF)mJ%O5wJe&vg|kIKa!C!tv|3HCHa+M#`rq`N=b>)#W0zEpx}tj@7^ zF0?1Hd{5z$Z|7pKxWpu{`mCBVE|FMf(=|i=b{*u=j=%Iuyzied56ec|lY1~%SQoGh zoDX;eNa_OK!I;E_e$z3r3*bzjOXm!uOU|(CO6{6rr_)Va!-V>RNnGNG*sLqIuPwDg zFIls9+cm@Ox)Ij&=k06DtPpR;o&%U&H`bcI(Y|(+HG4g;v8>S3_T9)a!$vkj%(B-n{YjU|g{l`40vaaDN-3T-Ar`XdE*^`D_lZRU~hi3BYq_e~t zXzj5=hcvG&+6a{d$``O*+H=Q&Ov$IXbk1Ha-LlpPY$;d8?}pdYH#f%J9~)PgX4GJW6w&@(R+%*{v7Dw|Wt8L;Sw}1OW-rPu4nz)tvyL;syr7yND^G=<4-@SC z_aPW}2=T;DabFDE(@XsRfioG>?uKnN{IR#|obhj;SzgA0Dq)B{Ss2Un>&{x!Qhz5V=!CV# zT1E6HJ@_Re@eStK!|2q3FdNO16|hR|0;;z=|7fTV#czhp!^T7fYhv_2;IN$cCrTS! zy`#ow9q{j&j6khre9m8}M)O&bWAsv;vz$~+K9RW3mzcGRtDD?smY(T6MY2t-)IOuS zs$*4#^zDTcre+VOYeoPQ)PW++6Qq#VB7ZuQT`V{nIW17jQTgL|e)M+bU5X~kD2Rlr(v zh+lh+ibM~WLZmJHeCT`Jk!j?H)>q1~bDjZFEFIcGV;?eKkdmgJQKHDT$^bist-~OV zl0M1;mRe)r%_4eMz4HeX?LoRz(J4h&K&W@+mIiW53!OJvqZxg-uzDqNYjmeuz#}~& zTtReV<#1p0BIh)g61OaD2&>;Bce_R2+_OeSWU#gzB-&(~j@=0rexcDIr5Ad6&PA_iO&&a4uqX6^#CsMzT`zyc&=Hkdz+gY%x1oCQ?R*D`u|?WRREhk=>}PsL3%(@B|B9zGSRSxF_Sk04oM z3^D(Nf&jxvKbJ+1yQYP63ku*}BzHF=7-<_(Z-zbueta1To-xcp7kg*smX_s~mS(Y2 zBP%4TXt!QbVnM*^AlP-4(%I z9k@@ju;{6!#p{ge2ofo`Vmo#VbKa(6dmY&8I(do%(pot>d}DwK;fMp?c?>pDZN@^*&e z?&l%*^Qimzruih7>BAoaHm*Y##kd5rGb!e@T+VT@A9>|i|Hxc`JBNQy6YS7Bqf+3P ztRU&+txB4jw=UZ&S6~-(_+S!@4sLY?lK(|Zjj#pt%KFT5-rWxw1!*5m12MR@q+1=q z|7?-@IkLDq3C00p-501+#T%crhaO8U|6cpPXV0d}AN(*Cd#paPil|&{o%2KJFY6;+ z611E1$kkd)I0CeK6CPTr-m!Q z#POmP8Ixuf7iw0hy*i3@C$*lT?^q)T$BxAER=qGq9Zn_H*cR^w_T4~5YGPL)k-Kn7Mv%;SR>uZlp;99g zY}G<MqW7;x(`uY^?wI&%pQh_4OPg+Zn8u7+0)l0oWjc8MsrTf@j;wF zgWpo8O{<(9SX|R_buRw#MMTCwzL=)#ac=YyqZ`xOXT9ci`qw_neR=yt{~mrw>^3_V zK%&cZfE~Nf;tBM+#8FQ@&lZF5ZbydPQGy4MSRVI=t720LY?>XvQ%+ztApDUoTp{W{_%??}I&zcwaGP)Ct-ei`aKp2zN z?`ECCwY=#hj77`Qa{SBe8Y|CC9Istb++yl;3jx`Fu6qw|Q`qSz=5F@Hzz?7(E4B_h zgMjiTtpsckTO**i>G8~GKhaEJbO(2a9-?Y2D-to}BdJ~kUcx;tT5BYNNpqXv^`|+V zZ3f)R78CM!sua9en~)v)rae7wg`T%Vk6NMKHU{rPFCj)o+Kbf)dwHuB+NUFxHGPk@ z{FTm-}j@S%qqTtbeW;m?|7duFBoZ24s8V$QJo$-(%0aM;y|9hC|w8wKnhZ4X-%hOa`-4(sfqu~bYclA)RdR;C07{d29s7dcwpSts( zm0h==Sr3#t=SNi0z~HKAA8*%>)_gAe)`?BTUFmg%F^~1FKfvz}V^A($>5KN6bWP$| zF7_eKejTpv&XKRjPCapTf$ozjr{}W6Fdh>fh$WF|QAeL^P&OttbJ@R+luDvh;RLts zl%h+i>T>$C`;=(c=;ow{mxlKAo^+&i-;d`LqXZG!t~)VW5J&XzHhPE2{5cmLQP!(< zblpsjXV&keDyqx$nppd8uW^SqDOb5`DdSi)avv*7mm{T-!3}#ff_qNzxOJp}qDN66 zG^S9eLtR(e>}yYE32`Q~bET7SC=#B`I4jwO)8)))c}jDxfbLofV#c>90}E#_;6>U8 zv3Z;064+oF6{^8jNrN{}sB^YxJ6vET50W7}aAG+#Wny1Y!mL<*YB~y9x5qNpf##|P z=K+%H;ZLwtJUlEmnlc{RS!ptJ&2HwFF=lSBk^WX_Gk%dkn3XmzZe-W7GZtRk3#I;Ql?WnZ-ofQ~+& z%26;in?*o}Om&f8P`vXx>xJe;G{^znoYdiEi+5WWc~0@0ym(jMpyM>_=w_{W?Q32K zM*P?%u>v?Y&6k9o7MfuI71mV8{&wxkU_)dV0NgS1XSsohZ&990=ue(#FNc+Tiaoo` zI_m6%-h#>)No5tu^hCdfM<+2xwI#?tqdEzm>TrK%B&9caKqDVgfGDxEq$QQ7qQykk zMb3>;?_T+Km2|gj#N5n!)36Jb;4SK6>N_r*N7f570g*G_f-Rmt`(KEd8T2-b$#ju#p z*}lQFg=v7*EmJIxI6z+4PoqFQIhaY1yJxk@n#1JTXl z>KP1S3@bL&nfW`j4a|*x_M*^GBw=_4aDow7TRbN^gxjm3Vdn+X*|jd;uMBIp9xk|@ z;8O9ZD>iirCKo^}sXK#71RQ)Bky!Bw=S8n=9#H4(aSL1!El4x_`_(zy2oM|41f-0n z@o;21y;|oywhTBdE68U?PiY<>b{@>vw%9w;W{!iQXjMCo@c%BbEH`}ZV`K%5t`bt8 zz-aI}^Dqe_pEKh)hvQg#?eJ_vg9>P}0Bv&WWDY5V>9>dS^bMIFF~b#o5Nl9O6!N zZSkB~z9VWpzk(0@u0BV9bi_f-30ff$n7&di@T|d;O>M!@*6>M!MzI{eT#T#OZjS~Y&uielXDlSXl zs5`NPtpx-oR>BA_vum{lo~HAw<8T>mCVn7$if}a=XoV~N8Wl^d)RTBDZ8{Zb?~gNpWsT2^`Rk^BA?(H|RsmlHH6u9Jxi~$m+TcDFEa*THlDB z2Tu;b$cx%*<*>$NOJD`G(M!nw43IqJXbOPgHMzK(b#55A;dJPIKh#ghY$Pd)+h>0u zCRpr}=2954<~jxDr7o%I!Vl;|s|$Wj?~U744{v#_DQv3XQYfIi@iCEK5>xM-#d>OH zY_Y44jY2SKSdkN{6pVD5G+&}`Fi_Ui5&9sRYp>xlOvmgVbbys^1mst;;pYDJkr&A0 z9OU9(v;Dnv=si}h=ozUQ{c-yLl_Z$d;TK5|+z@(CTJ2|sS)&5Z1o{J$Z4IW7dS~gc zy`?&~HqZ5sFMl7hufe(JC1yK~^7mki=efS$azI}=zjf%s?^W+yahI8W-70A|=!#wE z#&2j;=N5`x)TS^vC9f;PRbD)s1&*s;wtokp($5rM{(%;LmpszZ#GRWXh$}4{Z zNA{1Ezl{}I2eQ4av%N~eq03!U+(gK4tv@ijzo7!w=pOScf4@{=*Y;d>=9=rU{&t!3 zw%)<*%f4qJE@XrZ-SN+L3)R`-09vi~#(Hnk;yr7V_NLsT!rY>vxkY91J4XA6(QY)0 zs}7S)+mD;9W7=>Q>3noG`j?p4y*K?{33$163JvYI=}mm`ahK%bM-Je3nqEF31v)bw z`aq&N5~E`c_zpd$3-Dm8bPCj)>F!+mzBk*0`Pu$~AN7mbQIVs7t9Mqi!8IWsYwnd0 zclmtw)W|Vn8l2BC940h79c&oi5E-I3umnum0W)H@+EO z_$Jzr!;9VwSHIbK2iJ&*mMacC1SfSrlt0`xcGe7cV@ljlsrxC{hr^o`AGsJ?S66X_ znOX6M#Z#d3eZDSE>2N6zD`Az-SB{9n(qbIiYBQA(S-400qQm)A`=TQ=7Z8Myno(qy z%w<1g&-2`GWY4r?p8E)52&k|N9X82aafu@kRV~NPpoCy+1McAJCn>V!Sg{FNM;9!e z+j49$1-t4=mY&seOlmJt8bVylF)45iw*DP==DP+|FOzYCG7fAxCZ&$SRx}i&r@}<{ zH_=r}f4d17Vgf{cFFmj2*eS+02w!m35`J5bm70)yac3r(3}q(Z8w3PbuT^k6KP|_k zc{12~8SbUiT8>H4B~LABil9m#X0Y{-_=2ks^4o&FuW~{jRQ9aNF2$FwbWU*f+a$^C zHtD1qGuZk(Zovr}-+$u^uGaG1a!g7t-T2IZ88~P9stGs)x0)}toUTgoOsk0=YNACp z89gO-3$!O2U@$3;_Qv&0ip((p+bu#kBcWrryd>ui6Z(prXul)DJ~<_vYPal{a~;k% zTSn7G+4*m_Ow+gi&6cpfGu~`z)VKD{mWBFWdEki>eJ?-o1WGh~*-H*QF;3qL4m?q< z?=ZV%BGt);4?J;H-%}1eq5F<((VHz1zHbi8Y*o3FuFGCxw;ZPM?A3NlR4FIfEr;YE zVz(UB_Y}Kjw7x}li^JC{$h4Akrt@DnD{!WBKF1o#xA$tw{-@pYypr_E-e|XcLNOAs zzs9~_n&#}nRa(vMxEjfW3`_BLVMlzUwmk$c!cG*3bFxEHp%2*1{b3?=>y_HM_G#%@ zhy^>P-5z$3!Tp|+o+nLz=?igppPs_v?i@Ax_43qI#SzG<6$6hLtp8bo+rMaTGu%Z=@l?BYCJdjEfX>7^e)ZS+zpHnvkz6s_-%99Y z*Hzl>8crSg_b*!B9`(Zi|LA*@Za}!zKCDf;qLS=huKvKLSkcW}&-7(WKCM9TgrdOC zf1@sr1%9agX>ELSPUzLs-i`3=zwX|_)(y1B9wyZBJAh#h-fOCd&Z_qq+g2ve{XQ6S5 zaCbgtQsy>HQOSQZ&S`S~**L>;?laEoGMC@}Lu9t6{iD;Bl#-VZ>Zjkc{<6J1` zx8z(>>O5?M;spfRI8$v4abhr_6i#c~(^Mkt{Oa>+P`O9XLrzJncV1d0?8!FkbPB~a zucWHfW^+4|JT$~w;tvhk_6!a>PCWAZ|zQMpEF1TtNVTq$>LbDGba=wYY z5Iida1{#FVMS4bMuG++J;^@d=Yl@i6Mw zBv(`7=*(d2r7DO%oDppGsXKvnZLoEPa)(Uru&X;EbA|EE4z>=bCQ5dFu=Q%yWtfS8 zDc7owFEKv!u1xg+FGPw~Lq-maqztFz%;8himM>7E`u~r{_azk6(U#!q4Zutsy$J;{ zirhhDRSRR!xZ>2nqw#0Bob=AEJXSU>`x*5`hYMt}Dt?cFxRkz99VqzrVCybHTWlik zgad*ja}z&Rwt@Ygnto1|WjwPC$kjlq(j;?>%Uq$YdM3xytwcEYCSrLrlyb zRbKI%-fPSlzA>?4|EV5@(O5p1JdxZpmb9MJ!Zu)nK zQp*-G+AnZs7AWQdu*U4zg^**y%O!O+k4gGxy0ao5W0gibeZ7zg03{8f@iU5s-Y4R^I{*5e) z!PQfQA5jxss2~#h)%4C%R_h4&RAF?h~)?1DL zW&Bh`HfX_HMb;=%)>ggMWsLmmjlaJO`lrToh{VCwS$?Zzt3B9yOu2h2wMU@nMXX2cD781JQF5t6*aSbly%&06J3hoks9Y4@S++gd`mIQoXV{tO;`5o zY}1#`F2^x>TB>jhvlK?#29vA%0qCqy%lmZ}8iKDT`@Urgu}q+?nzl`9#q-@>T`^^z>Gp1v_xs)6$K`z_@7>Dh5x^j!gXALP*pi)P4Z@pR*)7B2H@xA)ufc6v!g)Mhq$ zp7rwl#Pe`cU>WGnwNBpqy|^-YT0PHDd6s&faq={G=lY?%bKSVwh2rPUz$5XWWC%xR z?ZQ7m{beeg6UQcS zfhu^t)uxC{vjJt*-jG@7y4qe*73)0DGNq~YJbM&VDG##|x&c?6$433z^X_ecH!)5l z$}(KlOkXc^7nx7y&^E)E`q&W}>ak}tZ?Y`d1?@(&cxI10rXY;Q_#*EZ(!2J6$LJcE zGhANhFXg`EuEk+V*E@IjEIohOsMDcd ztaNFPXRaY%bN{+X7r>oA{V~r)El$<+7mP3lmSJOYGC@$$)TrKRFqZ;l9($}Y(?>R?9Jp8F}%Y;wKh@^{e-LF1~qN&q3avS#Hck#m@##oR^#mp2C5M@+Gc0lAR%T#%; z;h8bUrK`(DtWn~iWXcJ0>%3Lof!*FM^7b+r+S^`|=kF{Kf;b|RHLkB&Z5yeS_3(4* z^4Cn5u)SyK4mVHRb|rb*^E@xl5Aejdz5-x_?_$j4@!bSA*#+q~WDFXdWl z174EHl;k+mRV^QydCzlA%e-S;^ucaYSP#FXbT6AQ(+535x43!Q?o*QW9)Qx!_dQpM z_)*fc<1s6$b)jl`d0Lfcndgb)QQ}+hcecqV74(^TUUa(`J>5jhCvEhZE4^rKbD0Xy zBc4WPxaV0X&uO0LA$j_Fp2y|+2mPV0+b>U-=Q${kUOFn~kUXz?9!H)RJkMcyo|DI{ z2|vfhr9Bb}IC#5%q>jD|bz!vSQ3C3nF3+E_@VaREcR{!duLdBRS!7%{TeWv&B&VXl zWtq9gr6C;4@G^wYYLr86d|R~{f6p_;jKAkuD34T1s}VQKBlXepTqh4YL5xQS@(kK+ zjHgtdzj&TSe6iAU6@|9Fio3H-A^OX7;&5BA8&_r{KlYh=(hUIk^n&ZpJBSC@7m|O~x*Ky;Dgx?@h;oMr*#_{(iv)_}}vlK){i_ zn&gSQcx5-(T$=Fe=B_Z-PcfBeSC?{~TN^+*BZf5G;-GOzu?ndZ*e0YXb8p^M-U~p* z+_Jj}2b0)iJT1m!X4HwyFfZ9|bSQv%S)gIR4>!a9O$E&q*oWkrDpx?RD!Gc~8Y5SUTqET= z3jFNZ?l}EQp@UpEH=KxKu$_Pc+zp`M;X^%8>3$!QIE<7!(IPpW*B&+R5`K%&t%KH( z2~Qca^){E&WEZZdcPAt^mje<@GP(7dVY&5M4YI|#^_q#f^_rZ##=&Bf^E}YlTzSc} zqPN7(KB{#AF8f(BcL%IEmlEFSJRof?#@AV>b=cRaN_M}h*1etkx~eZG!M*{Hzj2PW z&shAajveV~Rb`-ORfWghW1QD%!v-jJ#}LL zA@~qY^C|Qo4tEtN^p$+*o)e+Dr+h3ePH({J7P!u-xPfVc*1?2BqQqvQ7nYHPkC<40 zi$ZfxDaYj2B3cCCxl^XmXvfy18kl6m-XdiF>dBnkqtEAkb>*E{WQJr&(N>Psz zo|Y}J!{cT}&RfcT<7j6#6*G5EsH_gy9c8qUcVUHd(TM_o&9K+HZ(rMo{!6T0Oey1Z zT@aTgHVJPL1VBI%9gYvk*E9!(OnyIQd^)YxsS|1CJCW8%FwD#|^}rJpkBmw8@x?d4 zueL-_k8hUHf-gEIvDuUvD@gZ2iagt-d-&FQ;97jERy1tF@DAO1pW8n#ON=ax@8o9+cL?$sn&g0J*yfIdStTx5#0C5lCI5$u+J~z6bh(3v}>-gpU#%L8dB%Q2* znd(by(p->ooZ2aje(l)YlIz18X93@fLGGgoUpO*{-&xM2ttzxMWpeZMWgC@P@c=IZuVJgidDLm4DfL_UWZ1a#1TE%<9qt{ z)Y^yORU^DMt39~}S2`(wZ-k@>OD7-3<3md189_)VAHfTXT>PAABNsuZqS95_NL-l| z#Av_B3i=`QL+I;Nax5WXCZn6b-uc_cd`6U)DzX>pzo+zfkv_h~lughc1$~jA4g*~W z*+#lzB3fOAVTkM^>uj5*cyhWqM0OKf)LdqTZ5*E5^PRc6lxauq88toJzV<{r{mzA) zFxgVAW9<)Jq{gO9`x_Fw3Ubc~ntz}Fc-Sd)Q>9E3Q)^Vsa2@QEam8S>-Ls z%pfJk$ofSdQNAni{d0S4ggeAO=8r)JCJ8C_D#c(@M3&!)tG`^|m&=bU_>0=c)Y{QB z#v6WK*De{GHhu4}_prbneZO<#WMOa#S0V7@LCa~ezL0u1eZs__YbOOnXsQLl6?N;t zm0Ei}UDjM(*Wje9mAyEXyo8j@k5TUDLiaO5pU43!R_EOMxQ2#H7_^q!NyW4$9|g?K zc2cR^lV8JQ8vyOeue%Wf+MfId9x2kzJ)`Q-VGq?Xt&+Jp*gIb`HuA38eH1)WyTi^8 z9^szEOas(Aev_>3Fo%(`%#ZLy)8VBcJcFeX?gx^daTj2AvU=t5{6zYq4WAlZrJtnq z50L%@p5LmVl>~K<_f=-Re_`qoc0PI7PbCcks7*oyHB?_UUSIV{IP#bPY47Dm)nH}j zbUgOMW@Ttw#}HU+3aK}1Lej@K?EG*Vt3hKrIR#&#IwGA6;l!ZhBNUoiI~))FQOl>! z^bQQ~w&Ed!cD(R;^GT#t(zVd&~?2tJd%@;c_?2P%p=3KOloa4Popl%L3A0b%s zf2#5)-XNSF=Oo54lRYics6>}LBgi#( z!AAB|G*?;s;#(h)bBp;LwPM@@Fr19Z(d}i>#g5@uE1dxt=Kpq2eY< z_wp}*Og3~BWK@^)Bjf~~j(Z@Q46nd?SZm}-O4>FtXMLVlwddIVI+NEU6-}5ANu$o> zLeIndNY9lfW_lp;tVnPl??Q%X0f^iOn7q;t-t%rpPsF_9PQivzQX*i*1_M4 z=W^EBOwf6O#NE?$b`z(7LajC(h3uMX*26j(!Kt$Ee@P)NyXCE4#>qc%=S1aj2uR#1 zsr$AJ&W;xGY1`YxFz9Fz2d=&Ch;fUR)!z28af{2<-X@_R5eTMVjB*zqB~8jzsVkTE z-smGysu8NhRYTy?hqc#fGIr?FrAm0Use}cD&+aO zy5HFjo80V+5GghVMUuqTIU`^6n4@>uwc+@h>l`6sD6dUY!jnMs^^K(K`O zWiak^$Tz8@W1BCwPiPd>6V*N z9t2yDssM}Hx;1AFr1Eup5x7$s8^Q=?b;9ZXv>{d%>)fRJE_F5nbfV-qzel(K{7AwmbUN=01@Z3956x zZ-5tPuWs(GbiY%&;_h?;Gv(@<>$4ZQ(XT1`ue*Dea@~|kVUF{)Wszufky@RY5%4!x z1I+n4u;(VXFNpT9ZoVq)*m$%3ny*sSO59emk*PE%u|*%A7S9hyKmSR^UfcNF_jtHt zrN$9$REBHSpJ^xM7aG)uQ;j*jx!Gy@P@`52)gWkL=QrGxXkbzK;=9yNDUh>WwjV6A zSnr!V3oeC06poL-Ds~S0iuIaT*vwf15_T2=u{(EstL6Yx{CoVSl7D9n>p1I8dcqir zg5}-5_Cu{}*HWaRuKv!V*CS3#;H6%iNy*s?b4CO=)J5K0!GJCr>im;g1qK_=xdymD zZv^q@CxJO;AhR%#@#a5iwsD*vo}Aj`9x+`wS#Azah|x^ zkQnBG)%rEkG>_L{KS0}93K!V*W25~>?y<}WW(RrNTV1JacbF^oYF=3f+V_~}Y!l4b zFTKK^F&5P%#^Vjt)z*QLC;4aQo)KQ4Y>yf<3aq??de*QRX0Db~6cG5e1g(wI|EU#a z*4im#i%VPBFx$9uNreQr!nJE+)TYj9FVO4BgG`ws(^N$}|H&Pm2HU`?bAoUq7EtEw zy2t?a+s}UKZCcmHx2PnaTTXPiy~c&!E9_+H7CR;H0-k7E#>ErQ?CYtdvV@&Y+sxRo zf$h{mVpyb1pdTZY1&P82M$T2hg9M;q3O>e#7|M#CFE-=6!1-dcCw3QlMq{l9%@$M3 z4ynz9=U!$g;VhZa_Bcx%^8L{X;Ad{VmY!5?SvWFEW&GiLrdK_547Of_NDEk&UiAve z{MIU^PTU;$r(M6yuD!$PP`Nz5RU3~lcJZumWUPQZ)B^~+kJkKNz;Q*?{AsgK`8#Vz z0L#ak85vKeI_F0BCT&6VN>&zh;andk`sPkf5AcM2q`mURNw@;a#b2knhd91lVLGoa z#Fd%F1{}G{fEx@rMhfmqBt$@VVkBD1 zjePwl`G)m-LM|oy+{%2ze)$8rN(ejKxJq$7X>yb)Y`J2^_i|n3xNiH=B&}-Pf`lWx zs6G4L*F9}krD&b(eEj*$) z3psqE_xLsVz`}_aT|uHa(k+VR@`m5YiEBloDX{?25bOIFkOXOXpYtM^YW(49C zLWU%XlpzV#qzu~{@?{b4%ZyT4ZuMsmlDZl0o|VtAaONZ~RjyxX)I?Z@ zRtzRDVLSFHP*!OUeC9XT%$ej%qqQ`ayD2lhNf*c;%6Whw8Z$RKqkA}SWt8*7i3PG5 z7(kmBNGH|-*N@D7eqepsGwULU1sOzN^|-qRkj9s}8bKBY++MX0uV%7_91IV(@;*NQ z5Q}enJlsI~0Zo@r%ofnnK6w;lE$3g*T<%#r47ag0bVYL!bApLWCvO32+2Em|$TH@Uu zTL-MQ@@7wW3+@ruWF0e7FxHldB#2)%Hx{019nbpBtMTY(|3?)naf(ERiaxWPAJg(C zIxO}=e8TwX^YIDuV*Szuz8Y(-fU@&GqpvfVWNh%G#IacjNt9HsstuQNoVg;vy*809!a;oiH$bn?5_7GmBrOh$G&ntD<)STr%gdswj zKxweG3^Z`bzz0<#dq1^6zK&oPps}D>V&i%|XiWMmu+rwtfhj+Mh>stS8d2Op4M#3w zpl3O6t}z3h4Td9Ent+!~KrzN5RCaV`YK9un@WC} zp$SK(3Hu?C{BBdG#U{qLC}v)449xCy+h6Dyzj~{gWBhd_n$x5~bP4D9xbe|porZ?i zU}R5qiLK9a+MkPF0#Ur0pp(Zj$SdNT#wAD;jd8u(=uzBgTF=wP-hd)_Ng`H}Jku#M zj~Y7r*M7PyujQ!D2*x*R``7i9As1Z4Z=zJ|>mmp|>L9x?Utoj1R@F)+Z{)WIEiv3V z&?&g5OGdWg|1ddws+hxE*^izq!`bu~!HTsIK{XsC-n z-KZn#dY1EDm>8@P>9*rkR`qr<&lj!Dt$&(&o}5Vo66Y#_9Q52^yph#jE#7honCvMo zC>8++fPN6ZBzj(at2`)#jqFfz_o04UoFG<{UlEj5?S#=iicMz2 zg^{MEKDU^wp0UoCx&w9KxY@30yt%TrF_`=rKC=>?l}bE~n>!x!acV1IhPF!6h8AiF z;m1p2!N&`u^AH8t*h)79VzY8j#fkHt5cKg%h%U%IrJnYl6LdZ6)+RbFd#+dCXjN|U zl-!aj&MW!2QFhJsm9^K$hHID4J++SP&S^BtoIZld2N>%0erxSQa63DY{+&AES@mS* zNg{Z@%up>*PqOBI0HWnz+Re$gI^zflGeI!!oU zU@BC9`4K-CLee`?pcDp?DZ6GgqDFSjSgrgu%UdnzvFzlgX{RH`5bpdoeyCGan)^F=eTauy8Uv;H*51T znrpoWGxjL=_Uj!3Lvyq(YYHFu-B8Lvgl z?vlbtL5sUyUg7Rh*+%dV)d%+r@hV?leroqLPfUE&7cHpC{)Kg9!lR0gl{t6+5mIee zIC8lM<-K)g)kS+h_j;`A=rT34-x~X<0pw!FI5OLlMp$hVaa6pZi{j`=8W-RE6WSm_ zm9fAw90<6AYjoR2z_H-PbSdkqY>Y7A2Kqu}C> ze+!M+hWB8+7vVK4l1qa|d+U^J_AY3elmSGiT+d2U??{@T6@6NaEB_L%^|N;-wwRJ) zi*ifGMHYH3{+8M5&_*ieFWU?`6q$Rcpl~Kl9An>arh>u;%Mcd_N$VcYe`6_0G@9IA3a6NuL)6 z01xakdyJ$&`!O}eppS34;BdK)HyGQs6%|~CdJ13A_t=k z(F^LFBXA#i2+zCvT&KdMCxFU&_D-Ust>0!@ZV;7}=y-nZ?hV(QNm9ckSzH)-gpsLt zO26e&HAlPUBV6qhVeNV^Ai)&sO22M7OAFG z=x?dz?>3}E@A|{s^EM)2;U$bo>?(w{gunTs=SaWp=l`f0G$vn|6GL4KstQ&}q$ zZDZ-%ehH^Iw?T6rncv(71?3*rTA(U+R*|wKc50-HcGo#mzs{rj3kk~J7~lGypv11v zgS%GtlOn-Y=;`f`G*yf6)HWrI+?Set2*E>O`VZ923OgTL5R1m2cz$T*ftxYWJfI&s zXxc_8Num?`NhQ{}lU_`st$HR_jUQd6*1ZuOVHdzbq~~-+;c6VadS*SsS!F*rOC86l zauj4_Uuo`LA1S3yPVPw)VGxnn{@Fgp$t~x}CVrT4nnCIKQ8h1d_l-W(8*Ls=u?5ku zBsM>!P&7+F^*CRIZE{9z$4ZAIXHZI=)AkJ&Q^u3f>iWod6Ljj=ARI1g*{oGo;-)b) znjuuZc!X2YZkUf1d#gEC-(V8I&7QMq5-Ht^9hH7GrnVX@vrvh{*Lila%xDH$(u=5> z46p3BjZiUa7W--~?HEBgG9Fk6=&KFt!HM`eQq6QG9@NklBNAYR_QXz$Bq%o*+wXi? zC0{|wneT8*bHqUN^XQAqt|Os6xNg?9*Yf@LY86Qr7T&zkSDl*O#TGJ)ha^8HYwk%E zJJY%5Vf6xc{lWIpbW`SSLH-#PwVWhY9}JFyaG&mVQs z*L|dG$o*WO6DHQs0dOiAr|-8~6ye`zJu7$+SCq^aC*Iv3+L#}qE`RMPs!&inT1GRV zyMoCt!mW|aQrmp7ZRYJqE&qdpVpO_uXh_x)o~|udbD2s!?8I;F9=Wd?<%*$=*dNDC z4GkZO8HlH;d_m~xf2}=jrS^}ywO{|~+Fz;K&)#pX@@l`SyY^4B0ju_Bn%X~I0J%8* zY1-wVF*w^YH+0vE|_) z24wN4=^!-JEc8XsOMF!{O|NwALNo=a+$!-up>Mvg@P8;=r`JC}$z~@!t{!MQ!Cq0_ zvFdSBPV}Gt#zmV2_>U$& zzR{|QM0-hhV!&=#W=*}to_dF71&XOc`x6_5x&GKGEgy@mhmFb5Htx< z81M7PdM?%O5qa#@ij?|FSdO{q2xdQ1cl&1zQ1mM($^A-bwP=!B_iJeYlg&CLx1BKI zn)iKGb_SVm%>8U*GA40lZso_W9l?-|m=;Xd04W6_xFX!Z7K2^FU(&KV=b?mVsH?R0 z%b~;l{I%C-uWN|>Ud>)o?ZixUF|1cm#m90r+ODsrJDs0Foauc1XH_J$zq2;HTh-fW zC|R@=8L_>7P@bB`wPDL>TCsUov}zB77T=_2Vo0bndMzK{i+jaYEgwrDC3;26$MEQU z*yI%(W0_rJ#xU4Ah~?+RI0lmi_}#G#COv`Z`bUj3nv78;O;k%~c)9CIkKJs5WU?7r*(8p?0qLuUJ4HZUv$^!;u0 zoXXdiowX8uz)Mbxyz61!=?}1@Tm_8G=V)ef?;TLV0n0SNGWe1CYj1#vVQm`D{ZhY# zi?mlgWM)q0B@#3va8@0eM2s{3MBUy7F7q$ZIUwtwDjkN=i+b`~PgaN=;J!M5T-->}R$b1toKug01HbV2Z`oH-sH0PRGvM zZ!ceOCzP8WmW7jyWCIO)Tnpk<va zi|kdgyWB$ZDgOx1hz3zXl>KniWX3x4egVmksWQD<-G*%FPB+9fL`#u>mh&77T4QDx z$(sX0gux_tD%?8^hH^-AUxf}+=$ZLYO46+r@|0X+wJR%{G^!&bl<3G0y760*)pUE} z?uD#8Dvm8Bv1?$Sf&afFRM$#Sh}#hm3UQF}0{=)JJXV=p(dbMcRiIB@q(<>ePm0$J z%)CPvHy74Lu2pOw707lAwSWfDYg<45>&)ie3wnPnmr*7bc39f|F|=Tz*4J>9G=w%L~|Mc>*#mud+> z=pR|@X;%Gp_JU>h=kBO{Ihd46rOF+_Y4tzi` zZ?4lD2SfQ?L~692-5$1AEhGb-T3}Be8`h4g<)^<+Cr=90Oy@VIZNpDwAyBQ^L-|bs{vhz*$CwE56Mn z54KJrm$mwp1U*=(f($x+Lk0c7WxvvtzAY=lW+OPed64Sy6GgXoM~@;}`$OzJA|)Wi z27ceqOy9d(cY7t41DQSAGFUld0zXW7&J({Jqg6R)j2e)~oL>#FxLJ!jU@JvEibI|jAS{#o>bbOE%k zVV0Xk{zfX)5&Bts!GgrIa#Ojn+SM_j+f6Y+D#bT#R3y)Nd0Mk%G(FSIl>hGzp+~73 zz+KILCxXb|2})`o+nK?O(X3jXwWERH^BetB{+ftw=xXTB>{$$@7c1hzUhQKF5D`p% z0|z%Vy5~&x{!n~fm(u&EAwrVNh?Y?})VJVrX{Naf!`@-XY;)3(7WLMtgmr|rduI_H z`tzz$TeDP&jyN(Yz{>;9^ggc}q80IH%~BaX)hiOYLYPjO3u#ljZHrnG`4z*gR#&EA zU(a=^LXm_rX)`*$Vu~+zp+RbwFyuh5Y&`#syhFx1=R0)YrgI3%yjDalII`U<^ygVk zBMWfijzzxM=j?|cBLUjgL-y*Sirl_pLgM3I(K9M{F25}DnWXMyH__>^sSv`<+ykJ> zoh!;BGl@~vzNNV7#c<#4IdN8LUZ@TYc@lE%lkX=(OFXUkHko1wvZ>3zCXr1gri5^g^&a<^Bp$0%XbX==Pw zb%Z1Ldg1pde4N5}5?&qalka{G%U?GnQHQ7~c%)FZALpWDIDmbvplDEiA(YJpqHJz2 zXFzR3(q2>q>mj-QPCb7klP?b|p9Nb@^@T239D`i~ma?S8H=A|@lO^=GP$^cbP7*@p zbz>e8EOp$)`7s^NBmmWOPYQRN{WG2UrU#A6MML+0SZK2NgR57O*{;1Yanv6jy|PFP zQuc<#(O%K<+1Yt$U-0@Hi&*=eQV&vSU-p`Of=MJmxBY(S?=Sh#m4CR0 z`%IXPBEEb(_t0KHy37Y|lrJX+<^wKqhE8w}%6f1Pie1jZz!7i`79^&>0`rKA!O^5= za#z#U>?*d=Mry4R3o5=B$l#0Di+Zv?nM@rY@Cwg4OEHIuQhnEg2bqi1S4ofm*R zV7I6|>p@k|N(eqvFcmr&&iz6`xnC$K_lt?Nq``@-Hj~utAK6wln~}Su4~Bht&`mC* zy{9JK`OILf5+F>&R_=*n-!L$8kNh)-aR?&OMQEQgLepqpn~ zhf;lgd1QE-R{Wo}l5HrdGCCF|wrZ%s{ulVAf$@z7%VM{~Z;ziiop&GLFR{50I;HaE zSYhRk=s6UV*k-ou*x-@7Pk)_L**pr-qA-nOvgaF!?vh+?$KBa;eV=G)WBF~d9dk!Q}B7BD`O01f)R9iru zTvuwD&P}!Tt&w-Al~@l9`w_7*?bSkZaH(<+T)jQjmbs(0+YA*^Gb)`hyKZwqy|d;# zz04m(pNO-IdS=!?*R>QEdbH!)%r+4lM^%7+f{BvcyX;gnDIfJM=|77bmt`h-aXxw9 z{OrA!wLwD;>f7!#-ln?cqL(ozaQLF<+N<;HSnO1+e_#eRU9-?{)ihdlH)Q*#Yd-IH zv-aZ7K#J@1PFr^d4fU9oW{Ko>aXE&mOZ+RYJ+f*9Gfte;RVwx7tP@ckW<3w2JymYSKGUS!pg1<-NYD`J2EWWWEhc6b4R0-o2l{oL- zP5wC*G8a?v0?%xB);;ByIPN*Yt-Vmv7lmw?c0j(ro@hdtbfwv?CZRK z*CpHzZtdtXnxkyvI?f1g-KC7^YP+iabT?}{JJ{-K-3~uiPnFNNc1%k9E=&7IPs;XA z`!BL~OwR5~LzQ=5>Lm`B$FXi28>78!GEB@|^vuf1*DV_oj$B2(XE{HO)0dZ0Xl70U zoi#m>n{-{eMg7IgVHN=1UeZ06$2T4_4g`G;;&3nW7ULNeb40M(K1>0l5shj@}{K%U}7#(lZp9!?k|%(W|Li z?zQ%%rj+DuVQ`U(QvX55VzMq?O{ZpV*Z9Tu5!&E9LG`qyKx2--G&)ck#boy*ke+g7 z?ounZ&z`=I=u~0QnMaA-BDw?L4RP*#Yk6_@8Zadt*TnHPmy^i(E?`Z4xi>9#{t8<@ zRh_rgYbq7RG>o*j_vr~0P{OGArdOyT4~g?Qp{mbEU{Q=2MF}yAB7;VF}r|M!Nqy3jHuDTS*%3Cn!CjvqTpM=AF^e=6Se8bFu0dCID7RB)oyg;Xg zNI??-0l-_Wcs_FD9x}x@{YVLUeExeC9{B^m+OT%6)K*{2iyJ)8o~3>cIQR1X^o^uc zTy&z&qPYlF=Kh9M>;tERWU0{m^&C_Vr&s@8@Ee>jz94{Q?t^uadd3z2vXh6o2ORBu zWjpJb(cK%vI2R9g?@GU^R@npw7Z2^hB{3CL| zP zd`MnDk_*8NJ5H=}b#-}t3(#t3cO*o!B&hu;0SnlhT~#C@dT2GUBX(P+I@^=c-j z69)Ct1^{LjoEh97iAIeLhG6fE-@y{8Ka57Nmb)YLu0=5>xq6_dNvg!*(tM?2s6U62 z@z1-Aj_oga&oGjn>|IM z_|{)5DbjI#QlWQQdb`5TXAUUQg5(n0J&AdgFWJO=x@H%gBqnHHGR3|I~Zdx z{1ZOc)qwgR^sga65GPK!suoyJ@ig&Dm`Q0cO%6h1hO|8nC0Sd6PTX8h&YdLtW@#GsFwD? zLA+;ZV(HVMDhv$f{MH3Sy=y-bILMbY&WTO5ew8g|Ot_DGozMl+f(Di8P{=tL@pvbU z9oUDDni;S0l7=)h%9*i@3uYjgXL*@EW?&Sdu~AwgV^wv|TMg!ILhQV{$T{tzX}jym zz;#KSBcc)+-0TLVu}D(y6y9lys&{VxNY9w89k7i&v6uN~zxY*;NoZ7qn|a8Zh`>;+ zyklM&CzX1vL_)r!b*1(GbyUWlU23&xh!C7;|C(q`_nO5H4YgWy=yC5`l#4BmTu&;O zWt6Jhq2X3bwdr?FMd=$)R4v?5LlcKZ##}H7)^#L|*J&<y{HO)8wwYgvCobtdjadlWehWTYi@=a|?m$~Z@- zu_w+<+)auBaGl{sy@ogf?MQ`=VsV|bxt&l-dk{x_J9N|veaI*x^!xU?lVsbqhz60` z0O+Ueza#scraW0Gd+K5OpRsVR0}-)mAmfyWebL(xQ8~+ zI;#WfAJI<*b@g@g^GIsqQh zLDu@)Knbr)tk9vT>6Oi-SkS0=Q`h-+>=4p0x8z6RKQs!ElwGOihr`aTH|2ZX8atdG zYjDn`HiqaJ-?P|@-C`peiUtb4>qNnBsUcIU*UZFkIr<-B3H=U@=K1iSsO5{f`MULe zo)CBWDG?pS#@>Ik+tX=!`cktkwyrUW4zWfBoVzzM$mE6)4JO-&Fpy=k?r3&V&nk9s z;-xRZVgO@$Cd1+;A{l(^?wfCuW-fd0A;h>@0p5a2$zIeGNXP{On<-b#vu{w<^ywD~ z=1>ARwp1LbUe>Xb_9=Itj=8Am;r4N)4OE>OE*MOM7K2hgYhJ)L1d|yAOxLODrJbIB zJ#dhMNCQ&4R%2esy+y3I4mjd!o7p%olOd%sRA5d#b*Z5xn|crCSonvvLk~Un}WX-sRdw=*V@R1|^yn zWdD-8+{IE?7OZzocKfF|3w6yU?u0cvbo4A2X;9bC45xc(NWT+`{t?G<4XAJitee1k zJueVDqoaV!x%hbpRchY}gTP9*8**>0w=6aRwNixPW! zDfO@x7g{v|tAF-H3$(#asKcUKgYz8Y>o%}Vi&8a%PzuvVlB|K;OhmY{rO05qy_bJ! z!?78>%%Azilrc?W5S>?<4K!&9%KY+8y3j@u7@G9*P5LDbSCgX5o(AV}%4ePHr{?W7 zYx}1_FIR6_$LM3{P8ay%01ylBv&(2jdA`5kLKZvCdC;nNAA#I|QdR3^>}FnI!s5X4 zk~)ajvFn`&D8II;F`Jcu=BG?3xwwgioE%M?up+R0BCRUi$ogfgdTz1~JA1h0%gvB2L#Vdw@1|zA^=Ox7A(bCe=X{azJuxYSCAqf@uG}}9A^n~8 zHpDw-Urz|k_MKVh_~Gbhd-wen6g^TbdDQBjcLkM2v4yOA6lFSF~gqgUp@;8*NA(KL5PzU%@RCz|Tew z6K=8-E-%CX>jRZ17Rt2yTkbA>S2 z@I+t_$*)xd5(hCA;y-=wM|%^0f*EQu$nvkXYi3?cUNa`-bQ=Zh(|Knh`j0{%nzKu! zPYJ9aJqD;lH=Cckw}3%!QCZWw5cqy*XUqS`*}1?+Rb2~z@&Ez^CPEO9D2OPas6?m| zgc^tmXvI#5Nq8vOdzE`k^%i9YPJ^3OMj z-;2Ejh)lg*UU230Dz%5gI1}Krg-S;$3|@9N2x7{C`06zX5cgK@b$8auD{6sg)63K= zz~QFtTH4^?=9q+V(<%uP`eX+Mm!e(01}VwCm(tmN9PAE(6s+(cx)IJfCuH492^DS@ zz+o>OFkP`K&Y1Eo()oecM8-(aGDzFjcX?jxdAhYnR6X2iUF4uO5dGm%LPn7 zRq*ff<&%$^uag2;bzEC!kckX6=s1};dW|(_hx8@*BI~umZwhvK>7IZMxp&W&)1F>~ zdCF*zaAR5twIB$*h8~+L3N0Al|(AmPGsz z36lDZQbZ^bKO#B&WFt+oAA_Og`DAmX>}ufN4QdREB#hURI$gZfoaKTLv5 zMTU^W^l-Gnb7G4}aL4^Gsfgo`Trd@z=mH+-u3X ziRgbF0$VhTTuhnc=ook3lXQF16WhAzV9=R06Dr9-4_Rek<&W$OLCx7NBim7sbS8V1 z)P$=izsQITG^5^tjWvl52_3q)SV^oC4E*w*q&(C~Yj?9`QHxYG1Lq+K;}6vOmyW^) zezz@0dgiwx`PN+>QK#twb7!Q-wv{Kq?G>F#IvY~YhG{J9$n+AKWCRK{C?7l=UOH>|}g1$#VD2feSCWPfvwSQ{cR=JL2JwA2_MYkX>mm0t0_bg&y!bL{bbe)dH%R{2C zla-b%l=I{UW#_7NM%n7FH0ZT>20@3B>%MuDv22d~IZ>98&XR)>-B7S+k*1(6O#^9k zo$@EyI_knknuo(ZP9e1~>3o4w%Bv~x7sb10FrQS zB=W1-L}1MyjK4zwO1ng9-gVDq#7<@hSG`P#H!P9olmwg{Wd&>;XNe`+P?bGnC$r2^ zo7nyND0GBVy5IdP-Lxb>eQxaj0ffZ~Gyc}$F12cAB3t}TGIb&?d^i1XKt2uO4>q3< zk(%<_Vscg5 zPmeQL;lAp_PY~b?Hhg*5+_3V_he&j~z!#kCp54F?Td;*!xWrh##4>585XlJO0IY z_fHu42IHqXRBmzb96MNUxxP*Y+JN-LCTSA`W6#7tL-XYWzuP=uG-LrkdslRNA3V%UpiB56hdsXxP`m z0*Cxvr}Dv}MlxMPrUA>RekG-MOf=Z4j@IJ$1EzvP9mWf93EJHu1ejqWhwM@pSo6-3wa@HxuhCo1p?Wu9Q{bS zB2gpj+6%r;3(kWLcWOB2roW*Wb!h*U=p36g}M3*om&eRdNEx z8y0^6pzgKf;36@Za_luS{iI~V^`6(6=y{!qhLVDr=mCD-{gD)rUUo)&ris5(6zHG+q!+pXWUv=GS|EK2P^2CO%i=EkcBA_%}2QQ%%MW z6DWV~B9huM$z`t*2u9;7JL#(9w;#@xsM;K!M%~a6ldmy(onusMhqzaJ09SiSqODzdfGa*(;nGr{ zWSmuj|Aw%lZ%#%s9`fIDi^E$oF8eH!-iZn&U>7*1A;?}Qre01=5X5sxsIGbO4biPb z_!1ME@+Hos#j=YX?!(Y{n!W(@b≺?CmII>vaj8pQk%~v*$SL1ZwSSffogcn{y@L z@mk5>Z?wUFqoi+{Zod(7Z>;N%`i|74w|Z6*OS6%`M7L{1YIW-GE}#PqSak6Q}xzzR`v?+OnBNShBPBuj@h6IBTTyI5EM`UN=^- zSfiaLKALy?c}eNSqyt^8vCGe1l5@4jEy#8B*D<-2V9o|<8@uk!sDNAhW}W=J@a87@ z+4klO^7A{#mgbyfJMv@ii=FJctV^SGlBu{Q-(dI#rEdB_ldOM)&T&ZY199<#br{kTaW+A z-gQS(-V+6xj>39udWemI$F5Oshr@#gMe7M^6Xy|WSm(iFd9IYEE_!Quk0ltQqqpB@ zzhx?I*Geh&!v&H`I~{A0t;DNc*}YJ85#5M77X*Ae~KL58p((SqwXv8u@+NpT(d$u_v%@gsLZwBN_|X)jwgqZ z&a{qSiAS^&D+PTl!5`R3{PONtItJCpkHOV(1Ow+s**xt8Yc>!6nmk$iKJcK)aPqd` z${4R$_clnB*C5H1~!;x|2z>xt3G8(v$Y#ff@uVI0 z)C9g8myp|PZtDy;F*eifX+UF-S>bvUwHRCZQS8sfehp1e){*DvDEzt_`fVxnbT$hQ zwKt3t92zF@j2~;S;TN51C{cJo<>A(uqD|d|(HYj{ZIaRGZIaRG-b$MPry6#^l^TvT zptXkQw$)I0ud_i4x_X1~*`-|_{Y9_-_A(almnf@Bls@I2gCZd{%DP5c9C;&dOsZ>*H|aUPMjivFpXjRYlVmd-bQb-p2~_U0^QJADlc zQi|H~Tfxp=$6|>~IywMltrU{kRh#4Rs4W(?|hOicTjE9KEgn))U~BtPTeXo?LfIZyAzxpl0fNZs$T9+?3~wYka^S5+1}CFzQQe#1WGN% zVV~C^Egf={jPB{ri8YfZzRMb9vbAg($?Kz~7-OF4D8u;4Na{qv7(;nF z;skSYyG){zidhfnOkcnVNXA_jV!Vi&+*z8>0jy;FFhK&qXu7z@K7NFdmiYS;-V%S$ z{Jd*^-jN>^mGZ+M)G4pn0`2^;Jv%@^1+m&qLD^c8nTp-++ zoah7SB{OH+O2u?>G2g-N@A)y#Ymov^bo(!6NnKlS{VBQs?gEaoe7K^=*P(A zHAo}i*O8~$4|4yvM5`g%2HEvBDct^q&Wvu?E+xK_JKA?vbi4MjFc(Rv!O9FrJ89b@ z!`H7&N8V=9?Tk*83<q6vXZ?$XwnnSyI4k zi(8t4E0)Q}6_SRM?k_;&K>>tm0p5ZFZ@~bkWY{I3>y5Dj3DIY!5O><@WxrZEZ&!+o zr0R3(Lm9X1>G+OBeW&Jy4sWzi_2lGQ93$77-qB(Ib zHt=23_kyLM7_uJH#6PJJ#0yAYRF=OC-}-Wcb|8I~DbyfBN}D?EPNZG<;`7x>Ym6)r%>$N!n-z27hY0Wb+712$zNLRRL3EY~NWQCDYWv6Rr9&4!?%z9AFfiCdL`)h$f**M>F3b8yKdU%XyuL>zIs%{cCqf$ugrX z?`i0m5=zg02Yg+W0|Cd_cNmpkx_A++BZCp`yHI6E@qVY z4EyxgSXA0Ct4-zcH%Goo>CWUl7VP@WH@MaW%Gq(wbANZKHqia`);4;gaBP9w$sB(9hW=aYtU^+jJiT8~36f4q^;_bZ^Tc zrFVtf58!j=vMrWxpTZJ-3!7i*?)p0AOFA?g1EZ{GJAh6BDEH|!b%eZj14314tMEYx z=3qD3wjU>U!8I9T2@zt}F_+cYd(7SP*oo^gky+syXXQrn+6!{gP_rMG6#N2MUCpyg zMpwA!fi|I#E>SXC$#ughrb?8{L*3o)La!?Kip#V+Tc1mfu5?R4$n0AL`MUdm$Y09k z9BglW#hUPW*%&u-YElhrrQiy87xHMEu32Z3+N0|QBX*70Z^i0CWKich$&5n1)jbKF zV&9}+pCaTAjFG57h>c2^>fLLUD6*G3#?2ROMJ`%#X-DfCiPrr-`?XNdY?;dxow^HP zh%|4F z;O6NWyAJ1c-)$B@@OE=Y+@fwW1NTBJtjnG*;mPScVqW&L`+XVz3gq(Oi*sP{%_T*9 zBDW=`d?{=ih~iU2Wq!AtQV3m1xHOe3IGW|b@#D0`v>b9`yXEK65#klPKcXYBOF|8X zQUen@+8stUsHrr>fTJqO1>-MJlfq_|a8!+r1Gfvg)PtIZ+`I6n;gk)VS)|{~dik@d zVdiGtk~#*%hubK};mLmj{=NND(hxn^F$d#FHaIG;-*j>8RL-Jl-mrDof>h(Rl$^e% zu~dG>HI~Uwp~@8LiyNoP*9DE&$xlJ!_43otY`^t3{kxkUTID9I-HbW^REX|x=+bAs zcJBq*?(8r$D#?*OZMh=&*(;C@&*}?9c2bDK+{{Ev=+Uu5nr7lN1&=gfg2qt1zu7!^X?2&u12y!#OC(mF?J5+S1PD8;uS!;=6`!S(J z&CP7+p5nOmT%@1UoLR}zs3{{^S|=}U#nii%6hpQ+%ge>WU{=)=ZB(evlo1?-V2C@V z^|l_Vw^dKtD76dL$%WTK>|k9t-mH}}T*tUw7|F0n?rD7hPZnb=o8W5qBHg6OZBz#o zhd^+L2stTPBRG2U-qB`>y4<@e4?+OP`MJd>RmP;w*MJgVSbpd-$rVuzm{Ftc+qQ z?J4))VB9kGKUI@e?Jg`60t_>*1%6Cs*l-i6C2p3+sSgace~F7OeL4`n6JrFsbX%fy zTgdGXfv~=vpY6?;(4)0;xqxK$_IFPGw_f zCfRvE*y$I={8i2q!lAo!kmju`vA|+WQ;kTg?PS#s##NxAqGl9E6l3X50=Rdvd=BQb zjFX&ysmX>RDu3J~E{)k$AI%w(!eb$8w37Q6vK<5<!op)Qv^V)!h8w=jWd$Yqu?d?3oFQ0{-=;ZGYvHd= zJESe`5R-O}9I`m$z(a@hgt{zt^v-0dSW5^G^$mV}Hj0Q;y55LfPUU)Yy4Jb^B20I? zYXj%TCJMpjQ2S(pU5AeIQweDcFVJx7Mk1x}+%p-0ZUjZ8Zf70axLoo~fw|i)jUx#~ zQ(bq1MA#B>nM5Q_1lq4L67jf1^pglqd`lK{;=8}Z{ZisiGJoT2){ol{C;fuq*w`p> z?`qsDe%vd>y)SVuN!%`t+vmsaBW{nxy(w}3p>cctxV^;vT;fs^XKP%uAJu|nehq;XICaZeNXp~T%Rale(gJsKr9G`vg%jKRD6ChzXC z-s_y}m}Qqf6}eEHf*A9xJIN)@`O{)$P;?(~z+D*`6A|3!wld!as_+}d`s##Ft%U}{F})PBpI&%Uobe>9!4KkxffNm^^lM7 zr`N~|=beiHnpzE#$U-B`SZ6vvN+{>-OV>8e;w83pEkyc+@?|!f90IFL^ghVMtO0m} zW<6+|D`Co=OmhO6n@MK)oFUR<2M3e_sUP~;OV>Kn*6t9n$>IS#xgd4&40{qQ$+7k% zfnMyNP?+m1T?^}*k{7I-LteQ9aTSaH*?RgvST~Cas3j1XQgcnU`#r*qV}o!uVI|_2 zl1XoZxQyUP2IABR`-GP12E=5wQUFipnw>5H=GHuTOt;Cg2@eI*$L;r}-TxQ7#CO2i zQlN+%d;SsNrPh-WwA#IabD(0#r7P=jrS(${y^>H9MAr#lV?CpxLkOK?PDhNgHfd0= zw(KAjz>Vw+8hU&<3DG#r9fs}pI+H*Xa`RrW z?tIcYrE59#y0{=b+&(l9LbxYo0cyxFBv>aF=Vy{Zy5`cgPGM|$0ap;H9KEQZ%6+~_ zdpRq_DX{Bc-HT)d3|>qo3%?#Cl)MZyC4(~wzP-N6T}~cgF^R^To$7qfg@x}cVNU8A zoAARx8tKUfc^`EM>C&oM%w9_xOrs;LosUVI>Bo zdZx1r52VeB6zvY6(PduYv2-3&t~=`_f>^S2Ep=khueDq4X-644Aa?Fo2ajwfGI+j8 z$}~GmxH43y0`v2^jMAGwfOWl$;7Sb6AQLb|0y~l2-W!qR5BbA!8x1Y|<6jNL;Xq_U zO&zAu(DDGqpMSi{SM1V_(ie@dWtAg{6fq~@RW{dTTdx301l9Ej$L_CyC(_dc8sa{| zXKe2XuGoFGEtR{PFmW(qKzWthz!t%jiAR>poHgC3m3ToU9Nkd)Ops&msI*=RH4gTG zcu*nQ$E6xqYOz(O(2-i`keW>EkL`u_ldzXXtz<5_zm9$pJK1evHK(hN%K?bQ4TUGl ztwUsR-HXkbii~%b){8SNCwr?mS|0PW-GLaX8qwn_YH-+;_~O+fRrzON#a?QVQ(5n1 zuaR79$YoMJOe&G-kU87&S}Hk9>z!%!g3tsfkSZXc!mHdg_Y9&{lCH|Dd=}tXx3EZ4WZsnB^c_a zqmmasc&i*Pj4gc%{-ka3+KeBINI`5~$Q_7=E!jnd4w{4R|CN>c*j+O4d?&H^{dlKM z6caJgD6h-Q6VqA?y>gLu-Pcj~QF+Yq{1epQ5xp16_>lXTk;+{t_ghZn=<42exb2Fb z91?s4AK=UVC2*vF^yF~XvC)%5+d{fTPu?8q(vm&+<|*~LgUhC*e~X&2CHrdR4*q%h9M2Yw)H~hcE)> z+R1P~op8oiyQhV(%Wj$Yl!38`;}-_#dlvzi#V-?j^)@2Gtj-a$nZ>^MUt8v>t<3^ zxIZ!56@JZc*RTiM!v>J<4h_4nEzBscq@ojLzEM{|;mft=qX?kKvY^*mYRv~oqBhSt ze_zW@Sij-d;fz|EdOazUSx3FZj=rMGx~HRB6JXL(t=F00)TUH?`}~3rEpA@1IKWjc zO5S+UqT~&k9G#Gd7A0go(E;Q*RF?h<%L<=mHETqxdk$F5o|`U^@c;+aVWFHb$Gu>O zWEf)OAq$i3Gi|IH4`Mt^Kf|yIpGZ3zp)@>Be7)-J+mTU;+I)t0>_p#1L2qnA=I!a$ zrgdz~bSs~3ZRMrPJ#A1*-#76K@`W#+_@(?5OcZ${+`DNCi6+Wq8}64bYr0nQ<~Cg; zKV6!}^AkHcd|9xug*S7#9@@ozPIltfwL0W`gr-+muSn`X<-ENvZ#m@{ryl05%3Yyl z=YM5E!xlR{o^=<5$O_r7doOOJ{QAm|>TmhDh4b!iNk24F-J1Rz7#yqk8$Gg(O&As- zyC8eSL!oGjImUR@u5`tJiBF$}2rOcQ%K`$pjei9UpA*7e8UjN$#aY=m|9Hu{tk$YWSjY!Ofp0ZggWOgNq83GzSm=B7=Dn zdv8;$rA3?<+`QWx8y7sRVkxtiQ+YJFIeUD_D%Zlci5X+%QHT}XJUIi|FFZ)SiuO)l zCSFDRvDXytpB`$>k<5Lqf03VD%aWfiR#-vY3kYrw61ezkx*&Y^@*c4h12A@QAZF~u z@bJh~ZF>{Qg&kBvu5h>R)9mBPPVuRzNrNx1KxB~>C2pszWh&f(B$zqp>ZR_2TPb99 z_W0oD{US(RkL%O3trZ59xWf7iQ_754={^YIAvp{4Ia=W zjU<@@3h57|XNAv(;6ETjohaz3sMI5*IJ2A99xdq3Oc8HA2L0CQldmK4^+Qovs(rf? z+jI`LhOuXPN{th-XIX+^lq2cfT)38_aly@b#WQ24E|`O#LXw83Lcvo5*wR%ir&Gg& zbz;)2XZ;duasc74g1C&^{=Fp~`1tF3Y;$^|tP2BgfE{-!Aw4RwX2kzBwMkoZ0rnNg zv9CAF|n@zb^<@VrS8&X1l3UFIDuh$tW%fcA!?yvb}Oy~&Bo7Yo2I z(J$jk&Dk#Lj=!4mhg$C>3*ki-&N@j!UF6virbuRjXDNnVx~VKp8l^&)D0pX`)}kh( z3dw9MNkWObeu8Ak-7|m*MPZ{9bhZmfXL&ZRhV(Us#@bUr2803U(@$E%&~LAT%*K6D z7;rHyGZPYSm)_DwLS>KcWqGoFB)F8bzIHe6 zjBN_`;TTrRUD=0oey~x99Djg@>Y}>(_?^6pntok9FKFtmM!F<|tm@_Fa&@_pAGjs* zgIty)J&dEe*Lj!8>>=s=i51e%?G@6QlPg}}DSycoVnIPPZ~5(SIoNmjVg8#e`eFV* z5J(7S>nuTtJ&gEmyhNK^fyIff=c4>3HeAaLV!fpOi1Zb1PJf|Po)edB6+UfxqjPo? z5Kiz`2)U9gp7K#}6t1&ApX}1lCh?otE?^UCii&{rs`Q^RZq8uU&B{J}{BsJoJ|?`% zy_?+tl_SQOLTd(h$)SX5^wUFVRxK9p(z0SWp%iTS1*iTXF#5uptK3V!3S)Vf5eCLV z3N>&AM)cS`S8Gyb-Ct~p5}f;djK{igT+0I6pp5!kQvFDx692zS=HYv>qx$t^=cu)oIco_cLBYR%S~$9UlW|Rthe~7cE=KAxxCu( zIxs_hF3Dv-rkA^3lOLDlMb-uDC3zQu;>~tEN?KAZ)D+{0O855;O2iV0xX3-1I&mO} z2(LkF{24^Ac3-D48)X_w{fyb8=9qh-lonr1CP%Z@oR0yt3_NF@1lsXu<+*MXPw(~O z2zORX0p2=;>ngydW&w%q9)jH@-^qBGSNbq-^Le|CH<`rqO@tI~A^-yyk|YT&MV5{Y zlGmLN7_~bQf(KW~hPSgp*uun2UW4%^biPEx(*)oK7mm(2bBH3&FA)1S^WnJ#b7G}YuP4nMX!OBGxt_3@vP;dC=M3B`XdS)a>H#5eN7 zgd;K2VG#81jUYVTZPd-2d`F8;KWA`HC^}S95vcIXzTGeTc_t5oa9i2Ix^;wgl>bC~ z`A@c$zuuHDG1Eh^EN_#PA9BZ?QU0%W56!fjHm$c#dQUM|B~ZYz(!Ct`9mZQi(G8jX z9-lta6J#Ie@CbSYY*CYN=_bLH6qqV!b5-1MuE1cLPQ+fx<&#z7eB-=zLtpTc59QY5_C>><5<)okXS?nH)|G+ z4B4%gtf1W6iHFcLXC$+vo_-oKYU(hwBU;%? zXM|)0nyUZ%O8teDex(Ft>b*0+J5?&R=WD7XVBO}{f6_=d)#gYGecNxLWdM=N6r{rP zMhn4ZG9v$)ytXz+o98_sO0{S|X&$+ofvQarwAzv!@0>*1rcY{k=lFB{kH2dbA$}^x zpy7~zZ%u1No0j5wFstu&6^+wfIxafJL2Ib!K#en)+6!4`~k{Oll0_s}nMoqbJ+BfgqB)fEY$3T*X-l2~BDiK;e7vzTUkh0E18{jzW2LL2r|(KEn^!*rqt_ z3ON}s?v&M;6ZmA7(JaHvee^F-n2OJGr!cNNu`lZj&pV?;69*R#q-SRM+sY)}p<^_nK*rZ!Tq4MUsN+^aiBW7Fa zrVL&7Jk(k)w(SYig*lbR_MI}OYk!y{i}h>#`#^4x`F>EkG)cJh1rll(sBo)xOu-gY!x;VlnAep@hyaO}K((hoUYJ!s`T1$?M ziw#21Pn;|%kd!kz6lzjHO|Os}=n?X+#|C>}W8 z;dbc8r-*b*zBnz%nF~MNABiQ)qd6x z=IILe%Au@x1v_<7a>vUqoUXh^su2I$$aiR(&Lx?>T013A(q)&lvNz$Qv!+7axN z4@-^9tKHvbAX@(3qapJAI08q*9_*HCcZNis_P9FWaV>V|`4oE|8Pn%m+cl*3Fgir( zJN722ng|-bpO@yvt3mt9*dG!Bvzq-VIk}jm0ekYb9rPL3QhF#u9PNtFnf(%-EZrwR z&iM8XfW-H8H9YMVBVV~+o;=M4N*;Ry&35Hp_R=GHNfCQ=i@KD(ve)dEq;z{=x$+a+ z`GWj}hk22`UZmOG3IN*Sul)E8Ak=?U5~VABXDQ)JLCM>+mN0MALp zv)9}|GbuPFBfJH}*lsan0Th!Z!zhJ2$VZr;QSy@>gLMyVFVq+)Mqz`O{K#uyDWx7f zSK2(EHN^w}N&n~6QR$&T>M35MOAo<1f5;oV9h{Rn*Bbi65*&FS3RJh%<-3EK0%xQa zN*WwyAQF{slkzeqSs9r{rQ3pu0-`*2eWtw@E$R`B%N!ovsVdem_H&rLx@dHgfS&VP`mt^vz?+B4!aqlA| zCL#OPEe=j{xY>Najeq}KXWD)z)2`nKt(?+*9Rpu4so^dUZn80#p3u6I*+}m=j9jr1 z>dK}|?MDJO%A(cNi-!d}@!%Oone9bDk|^zfY%9l_>5&`=QJF zCSA6|-PSWB@MTgD8-hsyl_#5|dk5%_^}Vdv^%NpAay2ThjU))UyUnmr-Gy9(;ABP{ zO}FifLo-QVQIi>R=MU0;>nMbx6XC8SlNo!`zlMw*_qc#&c{#^W#@VkoP6C~}1Kgfa z!b`|1RqP6xdTCVHxL()BeZAPgZ%`ej1Qz2AL>OxLQv1`!X>9;16u>N=)$S3nuv-Da zoyyIz!=J~R&rSEBYc|(E+Df~&H>%ks!)?n!_5;hEEVxNo$od{Is?>$9L1Mh`gp%$y zpdE<|YnOiheMr5mA3Cdh$iX>=yC}9%Oj^V}YxXmbua+w634ke2gzZnn`qc2bdkDon8S2;0o+AT4MdFB`yB+M*wWmy!WS>f=eK)!=%TLt2GRp~_Dc8Rd0x1;hV@Nn^EE8e zlTue#zF%KH4#M1Wq@`pWSfkHS31Zht88wW+BPdNNi?;Wo_ZH&FbGK~V=ZZ&9G4_3u zIAPi|$0jF@6|CUd+$o0tZ{!2%F8JR9KXI0B&lv0HK3t%=!vn2f`L%mVHUcV-v`pq^ z+)cEfQ+gQA7=Kz`g*Kz*Jm$34+LIqp1Uq8luCom+1G&Ic6LO$(;@!+nTO z4G;jgxV`~=_#Vd*#_z0Y|1 zUj==mi=ohEsP+Y(TqYSgAO9BT;@IVMVBy);b$-r&At%@Q9mb%iO64Op*Iba@=pjzO{)DcN)IR z@z~u!VJJrlsF!`b-2uNjf?Jvwve(JMC3ITLed7Qftw2lm@_x2)8KcMbQ#%6p0_flx+8Dwn~#tmE`@JM5?u0 z-Dk;|?&kiGX0i9k65~+kB?jC4250+qv7G7eOj&~Szn(pSmc@97F?qGYj+?3@TtnClhu|^BTmM;n1dl5djyn70)6<}KJ zKEswNl-En-L|j698%Pc1fe)>g+9!F*aON&{7A?8tmLr2AZv5Div+(Qkg@}*~yKR-9 z!eiWOm`MhvEL|d?vGg7lzbkUY;>cN*F2kwlQ%2z-aRZM<+!1RvWs8J-In#6FV91lg z<7~jc6ZsZ5@<7qFBau}YDs?^y$(?UE8D~ny>wy&}KYkZx2(I%-hRz8jI@x>_#E5)7A`(ZjQko?nlHm*b^0{oQ@oLojUNNdxuQNULpBi?BMnukB;zme zDu3wF-R=l7PT71)Yl%NaIQt44<%hqPxLh}Zmj&ZVCFK4OwtTWm?8a8X!ujc8M))y@ z`3Z2RG3hJX;d3k8W)jx~kSOwNHPlwPDY4D?(pfg&NeC9JwM?BjV<$5fMiLwL6Pk?6 zQ&8YQAAr3Eshj)O<3bg2Hq6-9koT+9X|N`T$DQK{6B6{R+=rhKiyl)2Y#xAOef+ox z91qd{AeqM7h*mT*E)jo)EJ=OJ3YXmoVFPS`OCd%wb6;gnF%%Ml)PF!aAHeE$LbrC~ z6A=vQ02%C>-9;W-sa+hb`-mKVBk2UJ%k7Xmk~F3uXPrR$=U4nlhB#WW~wkDXEKK+C4>wVCoIrZpe8Sb=i!ev#%mDZ?jTCTiEw2izK_qO zKK&}cMgV(9n(W9YlI-4YR@V(E0LJ46_;rbOZzkMMvW;w#U8>OTz1SKg$@*GX%1^HK zZTab9-Of*y+k6&hYh?Ma`bEEXm=OREaY1Gt$Sv5*HscM;rK{wn^G$@;AT8v^9@7>} z#9Jg;BEHxB>^48m=0^Zpaf*b$iw0uv04-GvXyd=2cuFyUF2q$=}0qV|yp)Nyo9#?J|P!B;wa()KZj4 zj*iZzffSuAo(ci{_IEwhn_qF{q2#-9qza8Hdo_yrTde0cbqpa>6tPk)Y*AQ0V(NJt;ci*8NJOSoH0OhPjJ2zY;R zbE_9_IHIC@h5MO^q{@{BGmD|M4cLpOy4O*-^`Q`8j61du>vC?av|G+tiO7UyCYtEt zLNjM&J|Ugs#|EO#S^b;(3&d9U1nO4KUAMYlLc23(t*-#O5C*Dq3J#6WfRt|_{kjd( zVutaVkksj=KVg3}y2DU&x_|U7d|hlY7VIT0#f2HGS8arxW`UCvYn~LcdMN52ipeYUU-Vqq zEA~Y$H!9bENs;N^PQ9?LbXTWdMr7Rq@qKfY-bti{a<5(SR9rK2?ch=DY>TI|uqsL} z?Kj1_E*o2{;N!^eTn@lx0J|e;(hc}BJ$%%rvkqE}_ub3d22ybz z!uvT&wo<=jF&gOK)QjA7smIx^QL-5$TKop5zah12??=WlJ5ILEH~EU`vYP~Gvg~H_GedsdjE_!xcG<0V)oq-~OJxIupDILAXM?!RPsT_2$kgu1 zk}b>fhIqG*GHs}6`%RwnwwtGtCH zxKnNm+g6Mdyq0(ihvCzWQVg0i{Hw>4Wg`?`*(mu*U!Bl2zQ(YuIK*5pG(a@x=|0}Q zjSvq^ATW&7A`aXGsY@w1s?OX4!MY)Wg~CC9IKt=;O*(TyfT_kf%5#VGgk{Z5{e=cG zO;zY+log{$EJ_9wqIvL)r~RwZB63MFV1-<5tB`XHT3&;Yz*~4Na;W>7L9rt&(-i7{ zo1&QAWJM!X48~st9`2fWN5{wt3CiIII#1Ps|4r$S(_|B zZqJhW&$I0Iv#`Q0yOvuRheYnMOS@P8O5Ha z#U_T3q79NJeZZu}q4g9Lm3G;+bTPm2Y#j;7vSI<7zKA5|dIR|+;gpiAw@bfCeV2#d z#*t#vzD3FKl_O7ZLbYtfu9Ji98%NRW%(@RvtX(!Ne3k?(yf);HW^NO?&sSm2sa;kq zU3SqqC@{_S9^18V8$C$;DsYaOkVqfj%l@xUa9tYWHc`$7>5h(GmtZGk>~LF-(PnDn zGNrv8jBj8fa<)sX+}V+kuQChsBC_J-wjj9bE`l(m821#$+n(qr!sl3HVPAfaiRG|X zkriO7Lh>r}h&46SQ|RPR@HAaExIwIeNH$qo? zk9wOC+q)lP01%@LX8)Y7X&LxaDjpLc*;*$xiPwt_1W zaM$s${*z?o?mSF!Fp~~eTd(SO72hDRwS@Gk^GVlMjgJX%GSPilACVBZiY8%WPe}-~ zV*D!ge+;=&>_5@1wq8Zig9EpCBY4L><4*_0f~3(w6K%?6QX3k%y>@pmUcy&6 z31#D3 zZaeiI5_tWWmlzkPsLDkj|IzVj#RAYDYr=k?1a+wbx@G+#UnkpWS1WS?Pe7103 z+Q-s9BwTfhpjgbqWHfazJXY)d5wN~Ye-7(z+8}&Zt#=Wf&Rm$3ng?+b@gX3Y*eX&E zi^&2$_z}eU$u~cF<|kKwV$yZ2Us8pT`@2tN5*dPn^2jXw72M3{Os_!zdJO`}YY;$Q zgTV0`1dP`pP^>*w;V@S zJFFGvIcucO@dNavm~7kP7Nb<|d>B%+d--)%Na4IquR%XTi_V$bGMSa`HMwG-v}~kx zpT=(`ekLj<63lLyMEqdlt*12ZN#f*OU8I-a(f*fJnjGg!^#WBh#rS;|^PJwwrR{ha zP%?4$w{`%f+&#gL$=n%@aFjqw{D;+g`*;n*eGh4T5v4G;W7}nN&*Q!pGis+$R%#U~ zO~hG|a=+8&IV(nJWg~qXd;M5+fIpT7MhDo3FS9%5cmMlc1CLi3ep&*okMQ z>Mv148BdY^iIp+{P-)TspGiso$9IW+(3F%PspPUwc0f*g+(ub$^#^(F=U#(=aj*Ha zbd-FV;pMv~tIC}UC4Dhi$_~Z{F+hDB{~%LP7rqVje!=(~P{p*7Pq-`XhNsEqkMliS7uDn zC-+=_{16v4I1Pf;@we=<`6G838pzlE+3AI@LdbeuPB#$A3ESa za9W5qpm7+Oro?V>z@eN{g3lGdtW%L~eH*fwDZ~kJdu_Ns~Nvom|&E?&*#Jgv)^%2q2-PA|ggzAU~ z$z^!D(qQD>U10rH0UQBWcef_XrQ?31seo$ujokmRcHHw#8=oCH&mV)(o5i+$<6?Wx z5_iU*sjPNRXM=Q;)VG;5d~9@#4KQ+9_#3s}9CAkRH((v7?3yeN2_5-gp&*JgktF*` zPBR>T!F-oGo0-&P;-W4Ub*$b$(b=~z*=BDY3?6e*?<04MUZ7KbK0PAU7ExDfBO=~^ zk|@={!(R_*Db9~%dGCz2H*5s)WW1Fp>A_yU6Hmx+a;`_8qPwTHo~Sm=s-tc@uQeko z+=EA9)OykuS&FbkJPS5n!VL8#Ao$7TGn7aKl(}cfN4YhGN>sQb$jTujY_ub{u3jez zHf4-k+eKa?-!8_&Z`mj8!k0P<$qN&;zoL;e^K3Y$M2<do}G3w3_L`ouQD= z+6*9}gQW=y9Ib(qkQ(9bFJsp{J0X-z&&6BtWP^)Qss^mxibEf8m@}8IDvH<&cOyJp z`Kk0%IThu-wrF4hwa#4Si`*d2m%BK}v>()O=Ve;_bwK9rK{fuPeZ|{#u#@7Of!UN8X zsp0AIw`idnASqNyS$HgUNKnvosv%RcWtW}o-F z)@HEfC@pL1Id;q38^!V?Vz-VwWbgS_c--o)6Gnuu2=3Vb&y{Pp)4<|5jUz)~a%1|p zW#V1_G7+&5j}8m#%T4!n6mx?CRxL|VN1p= z&neQv7mj34{6e!QexB(tow4F7P{?er5d#^Yu;IZRh7(#h2=dndbYRg1Ea;+6gEWyy zFy56SD0U>4okr=$?h{L-GY^rP%>d1GNn4|tA-~(SHkL!&Vk5w0=O%q#wbc{FnqTFs z*Z_yFjj{+y^_9A6U!bTG3v_sO4wl5Bq_J zbuwUK4};4QoyLt6V?3$oF=W&}%Pbr=vdy@WEU4Y`EwMxvk0nPwJMCYBI4xwKkX?*O z7FRI%?_qs+7hkRYneA?b=x3!p$oWgjsirl3kq)yr6{LGoz;kE-nA09S6RYxav7^dz zwhCr!yBfJE-CN_o2D{vL>;{2OK9~&vGogbz zmB|gR70Z(|v8+8>Cxnx$GICmA)fqL5&0%ZKDyvIjt!`}ld?(rE3Fmr1XF5o^0vvj7pt7|1&eXZ=+rbNwx{hgXh<|K=y zN?x*9DCo6eb2z#M85{c5iD2uL&zB=-(stNQvPhop#^2ITB}>C}mZzJA^rNEH0ggnE z`Ny+E4tC@@)7>e5GP6VEw`?*-$6XrUj`<~UW!zliL*7OIvkw-rN7J7VNMKbxmIr_wF6a!s?V+mQKrIO{%=zRz7dvz1Y5YNqX?ePe?rQ zi`cG=*uj8ZFU;RwFB5@1f3dxIiBoyFW%6ho#=6lhMpe-rI*Af0G6oT9i;nCZ_xCVU zpVq6$+awAT;JQO$icY25vO=hwk-oN_?q6*#IVo$m0g03~_3;7x=~V@=dWANYf)Tir zF>p|eQVa_QDktpVhd{c0p)$ix-OSv-`h;|Q(Nu#?AbLMS^l&QCtPH+qd+B}I*cZ{o zy^X@z2mT`pquBjJaBk;xO-A=hUjDoVzN64&$q@O*-RLmdyW>dEFbSQ**nQx4AX_rw zjK~QRIUCzN>?X|dANX)N&VfV$iZvi5Lr?J*8@VJ=dIBl$bBwBvz0whkU+)t}fpyT= z2WS3<3)kANAN22mu3)u6C)Opg*=FzRYm0+*wV+U~df_T}kYAweo6n|4Q{YjICgXmA z5_~NkbE2r>!`&x}b~T)zKBwCHt@MB^-O;T&J*Ed&TOSaT#v@g$)%`ytZYvA%fcxwJ z(FCH)jhv5r{Z^M}t%w)kAXCD3%HrSGYUr19poz zl{(jnJw+K}Th%Az{?{u^q8cE>ms?sHPhx;F=*)gn;a zpS89Wj}s=1;V3-t`5e!Fh`Z)K7 z?8*m>OKdUGZYdcba8|5`nxbxGvo0&#BOR91lSAp-YA)w|*4y+RaX8iztP|;qTW@)C zTS=Qg54JjIs!ot=1A=vT&?0s#d~)OoxJEUb3RhrXCau6?veIFrBu&$Lb&=Yz+LS-P92-tc< zq4Ci#l1^;J&F1xjTWy&R>=XH4nL0fs>|8-=khtlj2hcmx$$1 zyTDG|NvA~3ezvn+-k2@a?plMd8~L(1%HZ5TL2WRLUXBc#&LM>=cZsU>nKHwDtvmfH zR2`KCABbo84)5pC>v7`5(ji;>cdSW_&8bo!`JR^BlEDbdv3L2VPM8r8tixAE6=wr7 zoX0e*Fj>2VI64+LBqenT0j?anm1Tr^lX&U%$yyl#8dlpD8{GVeObTwd|5DMS$p3~m ze}ikmu!cL2;Ko)0H(PL-H2^_DW{FrUEL zUy2MVeEaG-`Ahq=`Q_xVm#7jG)f~wxNguKINnd^pL{x92dMey}P@;P$Q;I*|-b;KU zvN193@hTHp?*5^rJ$5#+PU*&p9|{sUa#>HSR=elJ8pz(Lnx%1)Bra8x!BUdIbA06y z`2Sk|={&%%>+9%ny&=Uny&0*Xdj7Si62X>fWM{gkqa=z#g7X|DsI^5p(`fe> zjJ}zTqQIM-+C{tL$Wk4cx9aggG1yMr@{}qAYp$qpPySx899ChyCAsxdJa@s%?Ny5c zpej-MxQUtWzWLkssN0E>TJQ5~{ejl{5*_=wdMq_HnIv1g{ERJ_oxU0N)*gI0)1uzp zAyxmDyIng9lM|8B=E1n|z^X*)wFSTcOQC5>H&+wl7yHlS{CW3+&#Isy?)|RU+O2D z$-xKLfDwDNUjwSN1Jv|(P|4cEH;7p7*? zr*wgQ1e91@zsnDJwUn+2IOmu%@W~bJBY8#JNEZHF;dVnO0RZ!Hcx9)L37un35z|sO zE`y{n8{O(^$>7#;89tx0C=?5z-5hd+9GPv)ks!;F>F!TIVL4*&o}12-v|g)-kh%75 z;aAggR@aJVufB8*$JGwdZ!5Vto$eeyH@LZSjikT(IHMMECDJq94e8~@U3|8CtUu#` zxi~}ol6CdL!UN^@`^YP>-}?P{JS%NI{;JdX8s%_)3@4uht17&!+-|C%7N(o+bmI)y z^6d17U$yz?NZ;#D4suU^V*Rz!7!TD8X`>JD#I@o2kcLGytd3{xt{g^n2(QG`tzw$T z$|&Zbll$}Eokr0s_r}j4rzb#2~W`TdTmGL=5iLW3@`|FdY*6^ z?_Af;(;fLP7KT|w7{doT?it3+zsYd&?2j%8sb7q$K>EUC zyL0p_N51+;KgiH8s)Q-6QHK;4zLex9Xd!u_Y+&8vW1dfbIk3z5Zq|6)PZ`GcBnBSd}%|DCwDDOICBbS-TNcZRt zSBg#N*PfKvNbl&5lmuwDaJS&*txv_6DNeK*`6B;uieG)x(yO>g1qZdx!!p+C2=Ihc zx1k0Qj*C>WHu}5ht|h@RhZv1W|5^*&^G5f$)X3r!FC2 z`MCh;QU?roEh}xi1sS%72(M9r%PDzgAH_91-dQ0SOq3dg^P)`#%&>_aP}T~R8-Y^4 zN1;q>ZK+i#c5BX|VBK%YD5rUz+s}*FFI!Gn;pY=ku=X~IS|P;6>}(c^BRwIu^qp)xppIp&=}fkq>361s^14E_XU-2qU1C=r zCfDRhRxy+Cw0E3a4rAebeU38=n`iFMJ$|4is#x0lj_>cjU)c(pWNN|wZVnr^pDfBO zWSxzDmw@D`QPX-zM!$_U)yqp{t}Mn!whlanrnKMkZWI5|je|=f6~?v{OE(V>j4u6i zKpH5=6qVuEJbg2X{P*Y<;hcfUb+R?A1I~5-Xtt#^pTuS)qobjL{3WBpLgmjs(XE;SQ?kk< zh0QIKb2D1Xax+pdQ!Hu%hr>HG)VNo7U1-Tyi)WXp>#lT*88 zy(CkwKssBpMt2U7HVlu6ZvBGaK;+`s&H@cN-&-)&dr{swQHSt_kHJW<=+2*0DiZrf zo>0uEuQQqYW=76G6JuuPC(u^3VH~+PT|71N9iQOg;Z4~;SDJKVRSees<@`w-L5eku zYN9)scBEyJUq@~(k5aJItS_0X-OuO{qE(`Di=}eKy_llq7%}zh=I8u7)oX>!@TGaR zOLK**IpZVwiTQmKPfGtttUAmSew*%>c=U(_%s-26m3UG*Q#zw;bys-GCI45I+zbEZ ztK@!P)3wTy=HsSk?Yi`ziN{KEGQ+*Baaw~yYLNanMiZA|!{on}lj-9H52=!~)ZBL@ zG{oIXc6d_ylA116miCz*?Eo)P_iTkDg~@twS+(5zoBK7vgEn= znfYAwMsln~ZtY>tfj8zmdf^!~3H~Pv=?czlw<0xgQ6w6KXMjYK*!_#ysgHib7ZVeA zGDccSP;_efd{|uTq8e{Oj;yf3_xSI~P?6(&D-7lA-#Zm@Sg`x+;jvDMWmn{QC5xTP ze3sr$$*uMZIfLnx+-83(*Ipskp2?E=f_kzfEI;YqepQksx$+IuNS`MXgDEK?B}G~} z!?_@DDMu}p4W6I;)@_U=MDS-AI?Te5(|y#Q}~_6!=K6VB2v%~eG* z`Q{7Pg8=Gs2@lh1@l}Gh}^HFDd4oxR+0xFMipv8V8d`a!8Krzg^%TD>J<}`T3 z?b5vj`N{p{WpZXwbNwc{EQzZ1Z0X?&x92<38}h}QWiYOW+3g3F`*343s~T6%DQ|gG zlSzM_)|$}+h1GYjo^~XB3tf8Tv?EzLPE6>>F%2gs#Iwt8V?k(_Sx#AwQ6o?VrbEK}Mh%NEPfPG8Oosl~@D9WOw6kpf8IWJ10+ zscwd>y43f;S6Q(r+;V7lb~R8U^m0NuoNvxJHMMB>!b|Bd87KY^XKw=^RdF@`?`Ah- z0}H!AlpsM8U6p9mps6N;ns<=bKzIoV2pVuf1e)yfqJRmTKrYu+tXOSppW4>;p-+7( zRSFRm6JoRYQbjV8wRI{XT5dvhI7Es0UFyW`2`;lvYUibM zh5_D(BK9KJi)OSE*-@!WrpGHMO*I-mSKXS6KTx|otjMOu_UJ}_hcnKN*-JJ!{-ZIY zj#}OX5rVHQ>|JRj5mG~Ly7+$jYB%3dTLpW{a_1vL(`SFnk+9WXFf(QG>~}aBUvR2s zAUx)+G>({BRbektFC1Fa!6~7tS;nU4vqK1YtYQDk#e}9oQn&V znzdN)Z%4izl1J4-ZYUIoF`;HTbc`NjVRHN`e-lHJF(H9mFrBD-h>~@L*k;S*PM-+6 z^kq)va9O%@cL}-Fn&W9%JvVtNu*GY~PamTUZOVRDU|d_aUv{=wqLC(2*1{JAf#>C= z-`(_x3W;DxshItE{r7{wRBhbL#_v>jV*+7mEusnBaTdnn%BdHEmJ(Pc-*n>t)j9Lp;H6CCGw--e`CsXwfp$Z!= ztDB9JtTbgZj0gAlBLdC=I4v?ABlTd?lY@5bRVj^qW-_^hLSiQ+->|6aZJ?QZD528 z`Q1{1U2Mk@5fAj{o{7^JtFyYj!heI6PsBKmWx%mPPSd-?>kfuw_@ThE-NwD5sA>}m zFb9rRXubTpC<>{vN$crSopZo3yiV4lmO}w9xX~iGu8;=cRvZu)kntxr@gx3(bT?z% zpOg!pdS2b#olV&FlEL&onO6d^d4-@tnolk>Ay0V;>>IjNZ}w#N{E%qu-$Ac zMC?_U*mU5eNG7>bh8zZPa^0OoF3Vw`@;{Xcc4SR}@IR#LXzW*{e;ufJ9AMR9U*rB+ zc3I27DbGi@snlB~Q$g8QPk0N7;^K3oLph_`NHAeIB$qjI_sldg#rTDZ!-jRT2RVW} zc@7P1nHFksaIbF~6h$bKmh&{e%I6I!BYLyTH=?I9a^VmSBFFQ+%31;lLq`1_6>5b# zvTmn{3AW&Mrjs!$LfvfsKdBn5hk5AFmy~U_@TP#!YHnw{*G2)WdWKfFaG>uiGFSwN z8vNGB9m1E(2Dhha+>`Cj6x+hS)BJmZXN*QWOn0Y`;gCyEP%G8Uh5e`b56kz9JHKbM z_gBBtM3IH7F)hAS2}YM4GY1SR8MrYTrLcvVSD%o~|3DpY0#6T*^ekl9%h8n&umeOMh2!`;q7Qz;Ny%?)&>kE=>LjRb>Z>URo621)k9gpZu)l5SE< zJsEJ|qq}5(QWb9MAUQsA7T8TS{(CQiVlOo}#jephVplcilL6Nd+#L63>Bq*OPzT9~ zS0^F)*S_u%3bXr56@UmF*iAb`*Tj4VB&u#vgiHuRVm`6jt+OPM6^$*BnOHRq@N6&P zjA<=<|J(&eKZaWL@tJiy)gmHzp1w}j3pB@RL4ietTJ&q`({vG_0vCpMnw$NeX_ZDT z)03Lp&WiOFxX<6L)_}9Q(kDe-JgqKckW6cCQ!FwUInQ*#{Unf<5wG^{M9 zRWk{?k<>U~n@^=K!bY+M?k*R?+p1#R&F*B~_?=vckWi(#?m6iTw&2zJNIwSfZLQx7 zag5LGKij8|T=X-s&~7|%*C5QqzP2q-^Dm%@5O<7LhWq9`vc*^pbjl#A?rdSUX>W#_ zb7)w>4k28?H9QSW~l4{P0d8}jvlR3}G&8PeSK&lvk z_y36>JD%VV0qlV$iL`z{s5bP<_fsx*RQC0+8&esKR3Hp;}*H07lR_L9GpdR67?OY;i8 zG#wAgh@pwHu~HlN{6ypGr`0kBl_nzIQ>5l*zztgTm_ z&1OLEJ;v*za{%rx3#~SgJ)*L$7PBAkB?z}%5`2DY_Hjg}3gep{vKVNlM*6I+_Aj~5 zwbJ;QxJy>!PqW1_tJ%RN*3;~haCESTXz8EN`|5V?mqrToj&BpJ%{l5O_!bF6+bB`( zb&`V3CaYrFxI+vmGG$?T28d=uonc$bJE@e=by>YAnRwF8aTzG|OFt zrAyq$SsS<&dCHYAAnyw|G_U7-;#3Dy5IVFSKPO5n!fNPb9t^Ob!fMJxDaixjDemqf#kvE=N$3ER`~OUcW8RJ9`e zOUrdvvU1%e+Lt}?nxSe^;)?W&_)lcsANGR1z3;1VUqOebaavC+^D2GRih_58+X`L@ zJ^@|M@XR&Bv_k&T_j~3#*R6WIcM-3ydKBC@bm__(50Q&Lf0SezG=~$;KWm z-SL_t!4aeQu#nT!_$NN;>n77$P(L9B&8BAYrAz%CBsQ+tWsTU9i0iNK+VP16;}llz zG|A#_G(>Gis|Q^U7EePjn1>5R&tw-_ zeJ0q&)H{Q2Md&G+q2Oo`*VoBxM7^xfQ;t;V#dDxeKQS7R`AV;s3FLH&;9*Ybr=JdE zQ=o2sO+Zj9R~a5oCkXJVs)*^(VeMq zEW(|i!TtUc$P*84F;-w69eTbHp=_75{3q<%2+!SfL~`NWW>;wS%d#hE-Z3Y{MFsf+ z7j;0Hg-HvOrW#jPi>!~~maElpgbu;mHIypDH>Emoc`dYz|5*SUnb`0wOoA`D&@hjD zj2ox}XKBI5LTg;MKv`ovc$R;Gh1%a~Jadg5ydu8L)m%e-BmPF5iIu)TXr+9Tlrs3r z51G9(!C8>YLMCt>rS$DAWw}`j7q$nvYxZTUl+GenTSZim zY@{6b=K@_N3nifS+aU@Ay=)7fymlhT-UKP%mbL${dMHwccBWHv`kN?7wWG-ygz)vs zME3vtNb*{6GVfZ!qw2oLq$eKH*Ge&5`Nbd>@W}2UN)W^UJCep&ZX5n*|pN!ps%;g^5ICt32 ziY0m$=?OYL4KmV4dr0=+VYS~R{;CrjucQ4j3x$&it<$w#NGqPkC6Zcfev=O(c9I-L z%NFB8L@Z0u($jB$jJpIs5M>m{CX`E~kTf;H zk$PEO?fQM8P5YTFuj-ysvQ{uNzRV4G`L8CIbckC)Nrn|gfCH4JsB*-(_R9oS+KJpT zp5!u@c-~dR-FP%Cmg_0dJ{)SvtuS5%C1%>`!2$l63iuIYa~q@ad7u`R`(0QnVHZdx z*O`?x`Q}yuf10NjcKtR+;d3}%rJA4{&8o2;JQztnxwsi z!e`%vKWM>ksEKAKOB$^9IY(hGqAwXOIYn89mGA)vwI6pFTgsRJ#>{&qRD(Zc(yMD$ z;(k!BBh+`u_^dx6<1^>xOuw*0A$)?u8C*k_pl&L)>7?#zfiFCF#CR7~phy)M>-dq)rV7g2QD1oVrLa_j3S=>c|ZN%BuZ5%2ZQ+VYODanQ^-Bw^{_?&lr(5AtagZdIBl_cc^o0GM$9Q@k;K~NY-}Kw-|Vs$HXU%#|C)oqg@9CE3{lN=*-GhZz=e`Z{Q4HU!R53$KPwp4=Imz?%f%kY zu@WS zmM{NEWSF75ZVq9LR*X9VvM|Zgpvx@8mU1oIjupm4zEDsR7Mchnd|`94HglR$V8&<5 z8IsO;ABLZ1d|y_Brb17xgpLM1C?=9o;lT{iKY-!FOm)2tJG7ye!V2S)|5aTiQnwV0 zzP%W=h5RupnbPC68OAR-=O${eD+x;@Mr15KY&=S|x^^x&ej($cVcbsy<3OP~jW%|E zz8sr#W2$`Q;_GP(nWpiw@>3QQNZlvaZqJXkC=w_X54Ox6Q1DvGyIM(OS85~ z%&SNu#i%Dru3xxcHs-rl|Dp9c8R#}MV-*$mvjEpIdZN{|G@RWMx&1P0rAoQpz9`W0Zz_Uc6oU1bCa$I|25rO}OBsbRPr zvR-A3mH0mG>lYDkkCeOM8*y6CelWYM`g)nbw4`ANLeI%Bo2T(f{<4=HIx#4C?!rOF zxSyYjKRHNq`ur8DPaZXX@-(yS22#~MCopY+s>Ct23(eA}854fV(bd@%Pa`AQ;>$<* zZ?m#aBWui;NR>^h8PhACM)D+8o?o|84I>q^O)RG{(D&&KKGr{%;AA#0N%%h`R3C(m z9V#`pN7DZ)jNhX6pKVnJeeC+f)B!?^C}a3xbVHm_dpF}?dDgspu{2uL~j$g{CWKi%4Uz0nfb)S!D&e4Aiv zT#oWg8{s=WI;@lEV49_Lzj2}4c$m>38lx~wO(N@5BNNcpRg{_&Uz zEhCs7R>)QuN7;UfIDIH~Y|(L)Yu(jVh`ma<#91L%S$=b%NPyam%l;_C3ky}v5gcr6 z*$n688czW;0qnN`!@X_n60s{O$ygYtE1GBXSn=3M2pATEM(`nOTjFkp*3ydj)u&A) z5F2fzl8g;K4c5PLM#VILL@}mee7)loS22Avflb76YWp10AHeeE?`im`-Six%uPh`{m^j>V@TTfEu>E&Po% zKF?o}<*@u=hF19{W7~OLrA*L_l*(w&?(R&k!rw$1_ru^S1IOaaH02f3jFbdupB@m{ z+`Z;5*xD$$1CGMj(Skj}{-G1sFYlw7k%gKJsF67ePC-61oX?TNN!^4tdSr1LU>EQGAnWvn`+U#6ZCg-}TNWm`Xc=rR+ zDgj3^blepj6gqkR^0SdHb?4VwgZdOMwws>AkF_}i*OE6Zja2YrZ9f?`oTmyJl>b(N z@CoOC&VbNCS_MHe)qUVHA*faq2<$96zX5{TmfavI;NT#i6a>jMGAg~F=3qQqae?Aa z7*dmSizYvI<;3tWg)2>>S6XeKXnMTy@eP6G>jx6e|D4ErH2*87n}4Nh{#se73=g_% z{eo}*`H>Q41sPT+SbW5R0HDAS$@4>FdcYG>S-A@4?k>?ztM!Qvc8R84N_xykz74&@ z_492m+Oy^tTBmd1?j3T9R)GyX1GnB=j8OO)e@|r0g?4`fZEg}4}9DwIW&RldJwZfywc4>5zTv*ru2 z>(uUa8J81-5UdN~+{4RP1X3!D!^Mn{Vl0Rgtt6~wHAk2~vz=OrQ^`CIt;#udnsLj$ zXlk$r!x`#BD?p^%)~Jas2l~H*ZMYL#OvLL5=(C;BDNs=9;>5(D*p~!u1+F;(BDvJM zj1%{W;_FVgt%@s9YSY3ch~jI`Rvzdoot(o0FEAB(%%O4D3YqH!Bl)M7Fc);nkJBy6 z#>e{^Qj!(bP9OHH)JJ(k(Iglw^mUKrDREyo^G_wzD>l7yQhce~IR69(2gjMepT>bi ztjPTRg8cpw$HiD<9KcSx?hy)(c@h!5^}0ui(305a;Cj8?v7TnOe?a^$&8zl+w@4F- z^st)wgNDxU+R%TK`Yd(IJ~{$~4fji&(exTL7rjv{d#p+?d#vfLeJ5A|VoY*9k_ICM zqUL4>nf_vVRr<@V1*P{n13ij|PuU!c@h5ne3^rctqsB++=5~GZFSmxrc!9U?1fVVl zj)&2vw+Z1vrwlZoG0^mr+$vTpeNbghk*rGG89rspGKV&03;tw0o_oaHProWkFQ9tq ztZ}ujR|O`PP>9Rh)i9#`b%PkNp_IX7L^?kgd9s!1fJXIkE_qw>ISHiw3`AKOK}o?0`LE# zpN@losflfOq~En2`}v zCD~Bol5`Q)8y4i~RKQ3cPs82n*O#{7&>c`$NPR!XEKyM=C1Bl!UFUSE8t`TZda9a6 zGe{u1qp`fBzab~It!w_9kQ#f^688@FNZ6}8%wGX|9YC$6T+AOX`y^cJMm{L$Z`!*6 zIM`cB^>wR1!6#SjQXzf*r8HD++SC|VtbL-WlqHy8d@t#TNm5V4%allQbi>b~I7kHQ-8jkZbda;5RRTUT{o=VLM1V)0kNgzAF%)v^Q z9Q`Yd3Px+YQdigB>tj@iOGHy~8nGwv?zVK|@g&@r}Y}|7N zCUkq%uT%m&h4aO{fGu{dYI>SrG~>3_J7PmEpw|P`?9(N3{`w-4V5!lwS$Hqnz@N~a z-kyPhifj8MI=@{e0CC3=H@VCljv6PaUg7N-92>eb-4-mD-Yxjs7J5x10c}@R<6d(n z&XJGBZuu(CVJN)V72(!Zf|U%5hax4iqhgB}FJh~yyZ!(lI;;=H(&mU{Z#))Bk$0y! zkfOwa*mdTFdNyLkQAA?+9rj>iWVtga_7VQqFkcvVbYgtjstO~JNkvidl&=b{K57fT zk0!56nX{r-P~lEZ40HK>Q}PJTHrK}SWh;zr*U-k>>OjQ!BR?s8x|nhgqn`Tku9Ntc z>&0lRBwesc=yR&9`B?iV_M$c9s(D#R&;=3YtzjI->!$84kY8UQ^I|Yp)Rc?lwvCA* z24tyAH-b*RU+i-{Cu_wS91bg5G)gO4q&f8BbTQw$@$`xtt@lIWvPZQkn--SJB+|xG zJ5nZdjnG6d+ZZWrd{lV8P%GOgQqvKRGwWrWw6~db|Ax)*!cvT?h!BNkrLhT>idy!0 z8h!-+79@SjMpEcwH)iUA2OgD`fwI0i#hcALPvbwOG;Z2WeNH$}dnH!MO?TOzGvHs z#lRy~efBiLKz@%`Yr>hah~S2NR`)Od$b}mRq5c+Wv5koZLnsz6s)oc4aOs#oNxbpDChuY4d5r;#0Nu%3%j4Htd}kxKK=fry5@} zIm2OE1Yf|Y0a@MKgw2g?0XQfY3$1p=1Eaz?VsK)7A(b+&GtuKFNSPSnk`?+n0MqXm z2@!3!aThHKKz31Qnvul4#o8e@4mQ4^Thhs$NqcuD{S!$IKf4m)aYxKfHDs`=3!RGY z1Ob!vDsSw`E{8JYkPka6Vv>m8g8FNejA!-U3$E>V5q;WoZPs{Ng!b`j#Y?dulXoDN z{FLazwB3q{MLox1M=m7aJ1dGUNqmap24IU8TIum-MW2v(C0>d8krjfg{`#)vO_aOc z0)@u!>qxkK6_?0yiJdVNk>@E9z_`mW|>}OCRYBKe#yr>KtO40#Pi_yr>z2H-(;)FHE88s=1a`9IL4auirvk zMf}IBjM-@Tlx&Cg-tR}a!q4^}WTJHY?^B@=At)VLufPDw^0|gly-Y^NOLw6IYvb%x zncGyQyw<5X;bIgH0p(p0Uf1&MQPyW`93@)2g-_sy`1Z#@BEDVV(j|5RM|JSKmdX)| zmQ@KX3B{MLGX4V5IuZS~Le1E$5M^6YJ4dT=qTq=0_X_`u>g$VqH7hCyFQ03X8dDJ} zjm~Q9IZ&T7WNdsCuS)a_S&7P8Q`W$;-02)g^%AE!Hg=D6MM`8?k=0$7q-oYpN0->? z49urB+=;YuFM6aT{Y(hVQ4$p?$uwVTHf!f9^)9QK`Xgwixom9$JR$pW?TzE*S9_x< z@UUvF6Ag1p@*L_MOHLlaOKU{+6Bl1w9QN>TNcxWs=)B7+em25E@C77ij*T3JutvkP zit6V1pMV28h6Qw}%-bVWAXj85BydY8vFh^L8~-1R^;4`ke+<454o?P1xNQH#3jc8m z2MJ^0CSe2?1xW#4_yP5O-2O=u{XHKyzmM+xj!y{0R&x6X@vXwx@{G0Ze~y_CCqL?N zw!&YtM{5|fBz2Zby_VD@CShCjc?(F6 z0&*>>F_D}d81#Kb7P+FQ$RlN5p_2C@xfrF^M0RwusDtiob; z6Aar<+Y*P%>Yi0x7&u!2>qgR|^jKEivx+s%QT*ROTdVHejSk^|Dw`wd#wC^$lv@VSB%A+7n*AUwi9|KZTza9JE*D_whII9khCX zI56y#_Lg{uYAofO@>(&)d;GP!5q;0&uCjKA_7{oQ!}8b8z20Tsy8Ij@6AsGT%e>JT z({0_es>fp2tC&ztF?F&xj58RakBSIkHP$DVqLzuVWVL`}$dc_4^RBdMT4d_5WBAbU zY;#`Cwb9kokxK_cZAr%aO=?sPo${=CKQYXi6IT5ZBq|%n#u+}E9#}$Ibt{0%=LgGqSpCK*e@)g;uOox|VQ#o;EgBh#DfR9X@4!%wIYr%S5v z+6MB4R1S{yM;ayT0?=ejE%|Br5xNc|^7cZvEqW_M3P0?jHJLU}ww0@H6_Nw!(~Q|G z8PlH)khvmkI?Guobw#cAHS%v*d6ATpixrl)4l~ij3Zta23>q2AidFiBlR|WrTq}20 zV$u`;i=gCR3OHl!&lJ(LNN4ibWgNjMZxXkUvu|Xsffi<&>kkGal~8N+145wxp5)pt z*?FDKydPTQwg+#(6fJ&L{4bKkEG5G#rLD7+B~l8z^%ISmlwt|*`U8?hVD%GNcr-On ztgRGGJ04PFu{uC_wh7$CO~H(w3&7BtbOau=D znd{&{jVeQBI)57bpMv(X%udYjl2UJ0rDkZ6So*ZiFN$)b)EBQ7>57Z#8x0$ihI^!g ztD^A*CPi=UQuLJ+tv3p1F+abKC8`Yag8cMp&G%ERLIwjY=J_;AUFNd*)oeLz@Pv&j z{67~ATOO3`L-hv~qb8Xn6Se=-HgoU}TpKUXjOAN^|0TS>TY$F|c)H?e@%?GnpB1=@ z#-ZyGt+om4m!~n~UtAHt+V7Vv*D4gm6TT?8gezq26TjN3@sJz!@(eQMS0w7}Um@9g zoRN)_&#DsfE6j{07TQ4W$P^sZG2MKV+e57mGwno4EPmfiOCW_n;4Hrm{7PdCy*UA- zt5Js~_=H2!ckA1vw^taSa=4~SLma{$Bl;czk&i?Gt~&y2$-hY5QR`P?>4!jyLj{R6 z?^g*uCvqZGl3^siU6RMQOLpVRW!4NE)YrH0QNLHRame?}7?67^jHTj8xsqwNd(mQVvX0uxHJ{N%8Fh(Z7*8Gi*GZ@WMNUt*zFtls1A} z<*_sLY7YuV+Iqq0w0PaQDKSN#l&*cqN}}&1{~>@?7<~aoH;nc6_xZDg?S!jlG+#?` z>NpwWFutxzsSa|PqpQ@$jUY$TLv4#pF&)PbbO%%&PP8ZdKzcu{7xVFuUo_d~*fL#p z?TZj`7Y+*T@<#`g#TtHy!!ku8T}1LTR;%6Vjvy$Kdtp+gVZTs_S%u^58OvAV+|cq| z!2x~}1O}tOwA-@xRB*6THuCrXLiIQ%*0O`ahshMY#44!Lc(6n`7~y&P?C?^5;C{T6 zmmM|UV?3(RzKCkzjuGuzJTagaT>)1nFf2P5TPB`5%=18}{?9b2Ev+NOA>T$0LXM6zI8Acq95N{)9g18EWf!JR%4Mauk@*NxSDBIw%gF z#@IdE9IfxUQd`4CNd>!BE!FmfXZA|U-W{$ubv)vdJn3-n6>>J+Su#5IPXZUnbrG4P zOO8k26+{i9`gQ#-_eca%R7tVS(V>rV-H|AEjW_g3QZ{D@*+iLgl=FFB?da@IIYf@y zVcWr))Ell{RCgy-Uc&@VAz0LyRJN|NEHSBEuBdE$41f6-tKKxWNgZ98u_7bEAD2%x zE*hXZHYW!MiYpglOPaak+cFmrC+&>GQK5x zk~JclngGwv{&Lx8zhCd!ht()vxt$dk)RB=fSYDHi ztDuyu81-psf%8KrJ$I#TaFjGT2e921A9q9>nHGJ9?x*yA(P#OE&xD?8doubsp?2p0 zl*!`4yN^ln$Vi!hY}&|-Xahg$hWADg9hnYRHo%ocMNq37-ZPjVx(lDC7gEc*=5P7P z6$)8=B54XCwtvvr`-q5MVa5u#N5wm$1uUAvZ+&D2HpB%-Ym=Dyg<~cVWVUJGCO$0o(sy^ zN1=|a+-~6u)e-eybQ-@QmZwpvXh)_iKUdd>Q)VkvBlYs7j`CFFn_ZAT8%)`f5=}D!5UdvO?1qN{Uf0+0)tth<~m3% z_fj(WSqIB2DsZ^hVwts}+C@TZpm4#>+yc>y-FiMc&BY6I6K<5JtAo~onQA}7p#_hk z#Km<@MtF8+q}&NJ+qBtfSUFM{BfeLr7tXF@*}$Po&iu^hZb;AeGIxbhRzr;$v5417 zlB6V*cwg!xHpcFO%@bpeR4#NR7ilkCcF>>sL+KYZtX|#YXS2-wKXt@!6q1a6#$|OWXaAfMf z0m(+knN$)^atCPrBgJY?)g6`(NUhQt8-ztE3Q{)1_yMaVW5*G5@C9E;;Ub(zn}&F& zZ8b13VZaW$KxG2US6kqQ;pejDgcE3nB-q=Wx496P?Y2TyUhFI#a1#c+*DVmWeDD?PN;F%vgMSLq)wD{q1d1VJXjAnD~;vUT?VI^tUi<}kcnOVJqydk zd?e0_X0>%|Pka^)+gmBl12(v?4i`N)V&HOj>-#-CJ6pq(lb(x>4Hx~YThvprf^gBE z5vg5LIb#>reSJx=r?#i{P>*oMb+G|;UtiuCyguft`}*3T1EAbX<5=@hQ)N=?C$6SS zyZr6n&DmJ!NQT9qN-%Pnie#LVT#Hn!c4+C695m}uw880#Me9a*t_^xOlor@Ypj1VL ztOy+A4w?J*yUn{7%Q~2-S9jRf%)hOy!@v9=#Dm>fT5e{(5cE(h>GnBfU>m2E#TjdGSwpyVP^5pWovuvTkz%bhYY`-LClQ%Q5`e7sk!C790O0IGG%hPe~ZfJ}|rIgw(q_>6N2$=;yH+EOwLjh$D}P8E`5q;{B{ z3}3C}>`z8(pa+_@;UspptUD9Zw>g4~soMb@`L>wm46y}V%D~2$97?JhUh7_&7GkY8 zwh}*nnBZY^C`Yu|m;%)mSBaHkFKW?SV}1rx3ho&@hiN96u|C#!;#8&Hl-mmA+w3ZB zk2WOcG7CD>=vP+YvzSl7hdp|_{3cEbEA94XdvJkXj|=lr33LZUv0x3so`uWN_u z&L^6jz4+T|xSC3P**)7!pGe|Il4o1#6OM9zIYO<@*#0wyc|V87b(}Id^(s67y0s~f zX|j|5kTz=*MuHeQM9Ll&KE>?Mvn|a9Fqd5`yPHc9#qfZ*Qdg1+dppCJmE28Ht%n$^ zbZjXmH*RG%z|Ntt<|z)PeQ|ux`DL54-cH@+n6mZT@G}EeJi74B)<}x|I5(-EJiaHZ zBkK#vxY>bQhX(J|?GdB3#mzbtbawIiXx2%|`b_xY{s)$3`t&KATig0NW^L9wvbZTH z>x6u432#07(^sBtZEZi>{>~X?K2MR4dshAP`-|L7kr%hGANhSnzD$w*%X2q>Z;^W_ z(*8jC|9xMP`zf;Hp}Ga%Ut|YGK7PDZ|Gpv*Qskd+MEv`{S{|avoo~+6zOTr`6nS3X zjkkS&kp@NH|Ko@LFHvOH2?{vASDW$(wBO@kAbZ$xPsz&P(+U=G-^%JZ{+jk;)~rV$ z{~l615O}xt$Z~B(lH05>$U54q>=8##kHgjjc`DoOMFlTRY*Ha_IOTsylJU>JdtPBjxJ0A1W0;;M8?}@7KTj zzEbzAQvZ=Q1E2qA*40p@CPzQ`!*@%4hEh-b_Oow)sMI~G)VGqB+Nhd7ZO=}hxoQ$_doYI=Zh_jW31OwJJ>2;p(k})`S0obtY6fQMCp#bQ2J?Af{^8Yk#&m-Tl^k=% zJbkPi%!9yO`pk1XyTLSo*}mo%L%YG;3e1xi{rZz`Fk67xnEToOZZKa4X7b=BXE&G~ zz%1Ca|E+E?4+HbVpB?z98_c7?JhAFGL%P9y2AK1vKK4A3QhVHvE8=aH+Mk#G6#`VG zhy6IwihO&3`(XUy66qX0rE{c0SFojco zeM;N(8|R$?y9L-kdD(sM8L$~%9IL*bHMS6V_~Aat7?9z&`X* z&Z#qCGg>;*O6J8J(_~@%cRaoK z&5O?f-vRjh_N|NQWe?kN8oUMKXesu0uxYcS`*C7-XYbHPB0g@k?-679kz4{HK88cj z`x7D&a+{b{GOy}|UU7}w8czE^nFCv+4*MPian6`=)X5PqNkbAW$M7o4cYk| zx0u2CfU=|6$HS9*rQ45AW9N2~WbP(aRw6csj`$;Gj|on)MlahezgYN3sO9-(w?@hy z*8cdn&mv`yoI1GUAtvx;ldnLN@Q~6AXdM%c0SIp4DVxL0?oOX5bc{b@#l~oPQ>)?F zkxxYE(Dk7cS1(K6v4TMMF0EtIj*ZCi#@~^(!c#Wl0Nl#>vIt+Ib|pf_cw;V*_+7t%D= z+%|`;H`h1yVbje+d;QSAIifdoRq%LiX|7sZzmy^TUdjW)sVz2d3c5+x9G*luu`IE#|q5@H4#o@Z7^Qp76Iev;8L$?o0hcR{PWSUBmdk3;2TXT%Ih#zu^tv zyXtw02*1yF!Dl)Td#b5FvD$wn;R3>Yt@d9)IGgYjyaiv4=LW)GkYCz!3eQ zPhp;Mgin%R+Fy94KlN|3+P{`C?U34TwZG8xe8RuyE$Kr%C4@gBzqJ32JkUAyr&jyl zNq9KnH>~!*jWB$jis6P!_(|s(L--i^r9RVm26Sov<%F;1`zu!a-%9u*!hhl|<*nx# zN%&Lp3q5b*q2H$dm(~7v5x$=AJ68KIA$&REoxFvg?&X<4_>|TDKh*zQfiLYphbNQt zzvgY@spBam{2t$>{i}G=3EyY6{|dtSgkQ7T-%ofb;Xm`1_G;o8Mfh{_OZ)#&|9`=1 z|7z0sNdE`klD>hblyH>%0&gZy2H~Gs?Z1lf2*Ph!?Z1d{4&kSGyLs;B8B6$U@=JUE zQ2+m{)&4h=<~-8>j&~BzTApIUACh0%V+PMTgdecl{|>^}5Psci|AmAvCj1xPLeC96 zqY3|${L=nE)c^lxwf}t5TuA!=UoL?f53OaXFAV7!uOxi|Myw#zku)A ze1DR+;H&Z6K=@1YOMCuM|9{D9|9Pajfb@UlE%a*SDI**szqJ1>p238FVYUBi!q*Z$ zV7344gfAuhH1FO#VV-e>zahW0{}1*5h}HhLkmh{S|2J<*AL1z?{4x2Z{cq$MMEF6g z{qH0^oba1g``=h7m@yP-csIro{@wF*o!1#v8(2~^uR7EG zvS{AoTLb>ue<3^}R0WnS$-I5;;+2_Z>dYlInbiww19KPOGB2}srf0Y9=RiCazBF7KJ3dZy2)@0s17dj_Oxp_e# zQG=R!OXtlE@FmeO)pG-Lt!6nLX;s&3EfG}1&%mHI+Z3fcU!^zrHWFg*?>hZ%^;4gS ze2u7E70Bs~krOlLYA@-j93N~vj|l|TDJzIlUw&Xfc}r9>5% zzMSagX?S-4lJsQXBKVq1vk+$)N0MOPNvuK5w^uPU~E#pB5@wr%2BKfKuX7oOm?#kK;TdY%@_+DO6r zDlokXCAIc;&>Kl%VzM>MpXh8veN3pA`x^h@X%M9~ORS~Z=i@@{sB!b-1onMwU*)SN z&9Z}XU0X3#d(D7!KKq_lgCkk3A17x=3ckT*x7m`I+AKXElz|*^Fx1(UoBZfj)-S|W zv$P6*64f7;>9e-USK&{r9Z3+J6`ImW~Ia3JluJd>)F&w&T2^-E=^6v zm(Q_iAF%u(a8EN13!dSzz5s?hzzs-J;MrgnXZ=SuX^dBfu&xaZJJw$63+h~iyPPNzWjGn5zhomIjIal2lOWLDPa`hU7CI?xDI8g?jrI~-#a@SYjrQX_{l}Tw zf?Vtx2Zjm;c-CJh&A8QM>~e2Gsc%jon_P3OI%|u3PA$V{^oCYq74wZ0Wp%V7Z#K#G zXUxnqeff&yOPrKH$38MGJH}Z*`%Nx;aXLG;*V9FZ>!ZEmHWjJF21B^?*o3&E;FvgR#c5i3uJlJprvrOrUgJMFo!C++bqW>q0;ri1?k>;4^9Y@e zO{)H(XMCF|hWjQdVrKL_IReNJ_V7Q0hBGk$i^o0;8FjH1K_O9zMbJqQo8ZRIj8@Tu zX=GpDvL8v`|=1Ym3D}?ZDpW&_lz;-AepD*>YFvZMf8$2Annp6qC z^fVqoW=L>|Kpu81k|GQiIyGdu!s!hYXeUnR6w@J>?)$(lUF+14We0@akCpdL!qn+| zU=al@&+?13V^YH=fj0AW4f~fcSmTST5WwrG3y$m|(9F9?_@g7sRv<916vtU%J9YhB~Ue zG`mA6oc(vLIA54s+7$SLvcQjs$O(R~K#|n;=VGLEV52o(0D7rs+lXEzZ00))Vl|%~ zYtQsFUXuX)cQ*YS{b#~MqynDTgeUf#{|;Uo85E)lUiz8vWZa@cft!VXSC|8VH9rc* zhH&ShzB)@n3ri3Wp_eqfY5%<@2pl^8EZrbR@PfwP6&W_d?X zqP2uAWJXvj&7-4*W=C|&=aEsmNzmJa0V1b5YcERpt?T0a&psj`2=0o&eWGC(cw@v)Vo=0^IB3&8Zwb9V)#gP% z<2Z@-c_&FaoBt=W5zu8+=}rZj-?N?GBRtR=_15Fk7!%kR8C}dqL1H^5qst8tIMM!s z5LRuK`4I<70}(>2xCVmJdVE1l#_i$A)XSWt^2_o4ew43FITgbbI#n{Aew;G3lm8r8#tl(5c?$q|*W}(6_T)hnO?9H7oX}U18+V zr+uVZq|uT?9}lUIh}&W9jw;YneL6Yx!I1D6ntWy=#wo&Tn^T)Hxjud_iI;Oh(7DUH z470gD2vI1_4!V(|In>=2v3rFCs~~}pVcHzMYBE*JDR{e5@4tPl5- zG#Hu-a-kFbv|aNfrPKXfk@;&AnxfP*5J}CL>r{ z^CcCUEIbRWysWqMjC(!X-t=sHvEcJ%SwiYxn(WibB3`vPQnFm^d3GcXFOJ|mp7sBP z2%c@PdbWLCaH{r4UDm4tq)LE%&%j9rS!H>)y;kr>%^QRiqs6>35&;Rca-{m%r{-%j zNBgyxO0+7eWe&I&g7*mfy9I1^dDiBOgi34acHFFb8tUkKks>uFXs>E7nJpA*8>_9X z)>f8kuhvIYW6h*ZUJA8U(=cg3b?XzWXcHk96m(%XwoBU0Y3z_?aH4_CB>=MO?b1N2 zzOV|OSRE;<=pk7rj#BVm4Mi#hC;_iNai&1jR|42W~y_j8vI%Wfp8mm{(z?730u2dUaiS|vj?Q5!SRSO+o zcAhj#t6={F-9Hv-V93!y_E_6dPvcst+Pm7hWnLJw(Y1% z+0Y@6R#F&oNT*c2>83)4-?D;tYL#l>SJD7okn1|*7raw*u<0#Yp!zxC8HM3H*uu~? zCuBwJcjOC4M(k+<`E)Z?=qpC;`+z2bF>9*a8zLzDXcTr5F ztG=g3=h*J=X_irDvy`6METvYnj5?!Pa{ooM{7wkerRM*pS)jJrXI3ei>2r;Y}s{m7ovk!b<yGH-@)PoDyRzTbSLWDH z#x&}=D0`Qcm8%pR6DxUiAbj&{s0?J`0RU~97h4XJ&e1#|RE>;d38mVdxeRPhk>$}E z+w{v+Ww>>D5jn?u^~Fwl`67kH@?4Phqpzse5s}mhc2j@I@bBfc7hQl~eLW4&s5;6p z6N;oT7hEbM%`}tTowG=yADx~6Lc3C!12Fe~br@auEwf=mpQca=HHD{y-n%P2y%$xJ zDM6GVBkXV6cNgqhe%YANH?*CBaIX3jlg1dK%Y1FsD1Q;(v{7@wJtz2K^m!5BEwznw z&XMV#!3+_*=)M|61e~3ABrhDaZj+L;0`C!=R&(2--o*+fx81)GCbW8 zy`E{xoLxh$Nd>Re<_Kv<2>33Y+?rrJp+m+b?nK^C)8r7@NgI~m=aMf+CChu(9b zSe8RlLa_^7LBm(js#7Gs%jD5c+I&YO219>BZ3c{NQ91G0i_%0p*23+|cgU4G$^{s# z=mM2Rk{~<6_~_JUq-p5jR$dKn3I^sFE~>GjTv7?retm_^NOM^CiRR%j*pXDN!1!9t z@s0ZT)ynI$bo-mAlMu?~J1ScHyRGjNSMX}r$srZ3arF0}oGGGrj(UvLsl>)PTuCQ7BG}4WE!s>77H~ElkQ=h2x3^qpCD0g+4!V%7C#KcA5(4_I` zE-A=yS}ESwV102cp%cYz7@E!KKe+s(n|=j*Bt`)*i|b6vOQZaujmH=;(pgLS$l}J? zr8L59u@O>t5Qc_xR`3P02H&f2p3WSpIemgYfSkq+gol@;c^cV8#BRyU_{2EmH0qHt z(PQ4OkI5`}b=hdWHYe=7JbO2t+m#r`t{Y2^%1o`&hg(RY7XI;icQeg_SZjzI)C>nanwu0kHM4F%(5)gwiPxowx>dduxlD{w zN(#QL?IESKZq#YqJ{(vL=MB%E<U`&-=H>D0!#f~y+$>a)@UHzy3mcF0OAQU-U( z%Vec8(@d;Pv>1?6{WTBF{U>H(cT{V4jMDBXr8I0EXQf4w)FQcrE~A<{TEMR&_{O5>Tf`B1idT5_9GE5gwxmbUj7L)?(wrDA`8#wZ2c{khf8^3exHa^l$fuuV zz;V7n7CQukRbL65tt|97^{LG9vJ(0i#Yr%2201fn6CaR~!rNhNCN+A0D@A@y%YFxG=#;j6l>KDm3*0-5d&w~w>O6>k zXAbzM?R%e2?4s6cU*&;O@I4lboT`*Xaxg<1pQHRhNVQ;1(^VrNR5qu+W~j!!3{x}d z=xI_5IfNtKR|X7y_E0TDZ2Qc;iC3i!POonfa2T;u^a|;iJrp_H5*)Qbaa7{SyU9_7 zCPx)2j>0VQ|COgkv+*=a8(rFFb`!DRWY>>sIYo&@ZHEdSh|6T)a%=2!4SWNg43?W} zJi*}t+#%aJGQ0G}r5xDz)GK{p-=AtF_<`FG-ED;RQ90_IDDd?$L*d5wUd!PeL*JVe z(HRXWz{Fnf&Yv{scj?1n#A|v7oC^NvJmCLRiQBPHwPWUZ=NA0+nhbrh5@MoKv+P7Cb`(hcBk-9;UY8khns?Po=GBO$hpmf###>fw%jCI)Cx_>1o>HC(Jh$*H<&kflE zQ0pUcI5L?LfqwBGpM=Z5k8GWB2?LAnCLWppzYR7_{ucGpWbl~G7*(a;mcijdeTJ98 zW`urm_B-RW&+M;;K1-(EN5DM!`W@~G7`h(~Zyg?|nc>(x@{iDqd<^-yl1gL}thj+T zf?DV36LVzHl729mn3;^~#ija;Trr?1WvCxLO7%CGFkK%#R@~ZhiwP-jASO*8U9s=b zDAIXDr}`|kLT%LZ@YQbepfiCPPm{8G~A-wW&3`eP0Z9A49g= zhra*^a|71up2pW{L4Fkm&-QF{`xG{KU$fuPK35%L-}|E_an`=!*o%axa6XfJgtdw8+Hu)LkU2lpk~|!} z2m||Mt;|__VYUQHeYx0AQP3*rNPg|6T&>8fEzjfTQd7Q~?8|MI6xnZPpNMskCSN&O z$o^Zl5qn(dX3guelT9r`KA#8Ly8}7H^L({^P7_c_Ce=+~oAvg-7&5zCcl)wm`A>-L z&63j7yU`a1-1}miy_(Y(%=s4-jR?0fFD-(O(I?>|6eZwV&<>_9GS_Bx$MavIt~-7E z-p_6yorPN?RRh^x%FEu3m4krttXnMPL~N#y%Gm<9ub|bl{sxH@mK^Kzjiyw#i9C%M zvPrY%2nlxEMd9Es0GYum3=g`CM|!sPZ1Tk2zTj5^Qo~mbM-bde%d*s`;wF!zuwG4` z&?2APp%N^ASD-Pwon^t0So<=>$kFzZO&(zqPv}V`Zea<}TG^tDKFS}8X8Gf*T_}hO zZuZ@$vGZj+B~Fm^gaRTY2;$#CloV9e2|-9E9vcM~>D<0ElSVI+ucSL&h6#MY4*`$< zlhy;C^oq68njgwWqeYs3OOvR0dmc&4Hw}n>&CkpQi?Ox~%*#|mZf41nr7LR|-0BZx z4l5}5(WO`9=H_LNn_F{RW>NJb#{BQv(m6P*kj%M-6by?~Z9Q$h*gx~IkQ=6@mo8P7QjTz}+lVdTern|XB` z582!a%(2;U``}sjB~$wd64(kD=xei;JVwKfU`_lev8Z21c(!MZXPny9D<)>)22I7Xi1@=GMm#hjvCfd z|Gd;zjg1>AdnRS~kb6azeNg~nwX(9$Q)8TRO4eN-^lTp+m}B3Y{o;!A6-_>C+>6|{ z$@d5lSxxkjP0l%5H2XE}mGOa;X3&hs?uCdb(rgNx04VfqhpP70`P$e(F<|;Ei*_UJ zwK6DMRK@wz)cK48LpkPY)CM7gGf_>BLp6zKR+N;Ca1@wfU zPQni0eXqIqpZX@n9u_yGztK89Dy_wD|X~X-f}lm)8H3?$1@A=#6d!S1IIlki!655C93I# z%s0$$d_kIEPS7_T?({TxAQ{ail~Jwou<8%A9DO0Lgfw}cbq+`(*i%?$mT1C}Cq9#r z5JIqakrj<>J*xSf+BpT5)cv2zGAtweud2dYH0-=&-}}SqQME%vOa-aZIoU75gMDA8ioYkfolgA#+5{VMt}1G@IP*-2rUp%>Fc(pkT0dR2S3 z9*r4Y1?GH+Dw>M~q(Bz>Ka#YHJbz_!^93$Qu$IM)bap7Y0Um@E*|~)IXj#Pod=M2v z#=cLRUei|n1>YF^K58Tm`O+Qeb4DA};;5poCy#31@mVC4_LbtntMPVeDUm`=0!hQ* zTE!Yi?0vN%(Wg*mfSl?YvE7MZ(E~CW!^CT(7HMYvJ=-!W2&JdK%g|V1R=)KEZ|b|z z^GKZ-$mWXgqCs0^Jd7=ecJSO>6cq&$b@+R{KkyZRK|Bon*Zo*4t^lldX3meTo%!S?^Tq z-P3yavfgg%-P?NivEH6gyH|dOkZ8f_-Wr;f5qe;E{K2nWQjHG&Q`>#~L$>Tc@hsT; zIV_s}+VKxh2lk2j+#|zUN9!SP>TYxPFwdd>G&f~=&fGqq?wFYRvw_dwo^tP33zz=r zceg};`#|-7UD0%)&!f!;SDqVv{ZP|edmp@H?6%ZrSN(ZS%B9U8-#7TVjn)4jdv5|y zW%oUfK1$}Pfd;CRDbz7ENXR@EA*4igaBw&r9CM`s)ges^O@=0UD;ZLX6b%w(EJI}| zi6)9t-sGN zEQ#6H&@$_N=Sx4kf`)k96sPz%HkI;$I&$=g@6?u1|SaSQ5W=?~R{rvtPPdQd=bZx7P2Y zTQ&T>j+STr#I8U)7%M*WO1-GT@Lb!<#-mLu{O;AB{d?e9y-yFr_-C{K60^Ntmum_) zx3HT)fFj=&y>cqAzs=C)xgGIAOkogmB4jib#b*fwxnBEQ=!8;CUmhllDaH zN9)Fvie_cml$xBY7aGf_ugG7&Q}n8;j?1m zeRn0S?v$kBbKYpF7wjp*?yqBXJdWu3_=#R{_K6g(7VA7UBA7To8xzV+<=+rPHuyhUi2M-n#`GR`F#CDr5k>=FR14@N47{*t$gXlYP<2{M{mh~ z7G#4(qAvHl( zO>vTAiO$XYO2W7D4m)36!0VImk~z{?rcqr}5TDw-aCUa1!e<_SYR2EqVIpdhd&^^V*&Z zH`LYdHhR_Y`Fs9LZ~y3)xsRnvc5YC-@vS2)hZSaieMXnFz}^5K@sUS5e4Z}CJd;OK z=?56uZr|%id}*fDOsVi!Lg}CCL>nEVc~_U^Ph3t@^vWER+FWC8&aiwQ=C8NXr#AbA z^Rs48;WmRlou*~>*~MA+Q;S-+SLd1cj1;KLe7SWiuI%O`^~8Mp^JlKgPtvTpnaJ1p zSlOx7;kH+^oNA*#-Nl(W%uk zDSPaul&zGIYqqZs7zjUX*h_P4%vPP&Rj{nFAVnrACVJBP6zN?vval1+hp0KnD>buR zUBkL$n9PwjeZz)SG3Uppg@XLTep)h9`Zdkk^7vgJ1UdwKRHyq64EC!OT`SW# z9dby9vm~AW;NQh*({Cokh()w!DQNZP>5fG7vr8Y0tjfhgqtP_pZOH$T zeMgvsYtcDc2|UNYk`A7T8z#5 zbyLKoX39y5w*+X(pD>hLk?A{3?{eyscGv-xgF5Wy`ta7D8 z{_>|9{j1dIDQV0+!QB_-Eh^qg+Se$XMg8p^Mt}7!LSOB=g}i34wBYQeDpPpB6x*-L zPq0`M&`OWc=#AR^tH0~*?XuxtTMyMdU6Ec{HKZ9AUBrLrc(_Ax?s9tOg;goAewURZ zTQO81xVJJ}!p60ClNfWr?6H2c-#)RjVB;yy{S)L2-<1Y1OLrKCHJLYRCi8Vs_untT z&c(z?7te|_4BSxU?48mbX58G&be>~FmE07iDRPo3J^!T)rZ)vkxnZvnoqo_QJHFPw z;IP#FftOALz4wk}mi0bOYW~(!%%6QBLFT$|tHw!{UX|F75x$QuSp?Lxq+P$Os+e_j zXtsK$^WWd@?$GTZOYgUS)1NotY+07H*P$47#q>1g!tDEnZpj#;J?}tVDYua*G@CqEHW(5)qQp2P^EZR zM_pAx)sKXj#`cv{lCB8LC0u(Lkba6|SQKOCDmRgzsWt1KzNAL1n3$4LijCLAEQhE& zLlKTUE8VQ--q+f>aX>ERRHj(|izLavq%ns#&Kfp9kGZ)uHrYo!nQqfzxi)IZ_9(S+ zOM^_6+tj!O>YAdYC5O6;=GHW)^L^-#+IYE)Ztj1`f~l5nAJVNkMLUaMP|gR`LJR2n zlRG0alg?QbAMlhubauW<+^zQF$}brSHSgV8hwsSsb~WGXD4zDSCR0>DI!-Yv?~wit z`I><5l9db{vo52^u;C2_zVsIZ&QbT53EF=O)v_4O%@!=|OPi9hxJo}RXjncGwf|*4 zWjy{3F%#F9m`!+bL6HA_StVcI)&$;IDVs@!c2mU;=+ufoi%k~o=yeqF_%Tb+KCwwa zh?*+2!rVnT;EbY-c}3^!Ibo;gD$m|L=aR6R^aS!Hb(XM8PS%zXG|>6DR_!KvpJ zb0;6NVoOYO)|He~|1~Xgf1#9hXXNyDGi$BJg$I`JKU|@6fh>hz8ol!? zHc%CgChR z)b1o44;XyAE--uj9QLurFM?zg62lhQ*o6jto*ry^;%P|u3r>{HwN=}t1Vp#ZbF1EZ zHh4!w;vA#!N9nwg!;ceSr({p0Z*0N6+=Sd(N&~a_GJ5#J`nY zoK0C9{nRdR+9AEP<9gs=`={#MSIy_xuU+zWyL_8}yMa4=fF4lvk~FD*Ida=-t!1>PwGyPrh^Eigjh${R2=_6%Rj87On{9 zH>ooA+x>V}{hey+jR{W-lCB&I`{{R3)o8)tnMys0C-u%JU3BnB{_;-t==~k-N4}RA zr&V8$N==%obuuGj=#)IGAZ6;LuwyHWG)`=*?LV%*l#{@}Y1O`s9isag@zn=DoZ1oh ze9$Ofby&lJ-Z;P$l)s-`6M{UcCoeourG4AK>Vzp;X-y<6Iba#5qtE}Xk zlnYOIJ^%XQfA-?m@b}rPrYK*Ta*1_W;lbrgGj@K?RC~Ype5hl{SwsEn=k6(gPwzL@ z&iHG1>zPx@C8ulH_X^(5g76c-M82=a2Jra>euA#4U3j>G3(-5&7=Jmi)Rl{W8v**D_=JGd|4dU*1lH4eO;Q-sWmh9%A|ee9m(H!EuQ?51CB*M8}2bD&yZX>r(Y ziOzSg!`7`4ZTe{7ecSGP#`gt%_tKIrRMcgiZJbhHePdZ}PZaoCzAe+>>5Mx+{Z`kc zEnRS3F5&)+q_p(yD)VQW58vEMF`RJtz<|VHx5b4O>!zJpr+-22+QHcx^@AB4pX$(Q z;ujuW>fqmA60`X(UtK`@#_Q8%y4DwF4d}K>TE)ICt8L#A#Sl}g+~R8ycK5WnXl1!~ zE?c>rmu8h-*!(qxWpZ$&{%4e}=O^i9Eo-gk-w;zWm~`zyZ_e2>dqresO&ka%1~aoTR2~Ieq2ouUGm*Wfvt)PK^sMS&%ZjIhnGmVjx^K+v3h0p5eN4o`ya$ z8$OqMs*=lHGjxA>b%d2Va^U%hNEC?I)!bK_@EMk7Pfebuv$y(VMmW@^ID0$)iQNg^=bH0l zmL5BtWcy21_1Fyu#hmRq?KWJ|}eRvrmuiv7XIdFO-|n(K%;Y z|IUaDs~Q=VQ}e{aF1lot-B|u0if6~Ktdnn!Ny-arrfd4!$?VUR^4wh(*rK2UGM+*-EYr(&L8r!o12wW75PLY_z3NW=V!i2 zt*HHn@vA3&5~D3VCTMq)-|ybc0H1*aJ?`h0rg|JbBldjnqKFrTXWO6l%t@|m-Ya;` zYC%-))?052sr(0T&ptH!x`c;M4&_V#jX;Z-62sP6Ee+fJUUt48Xeh9Yu8%FB%1l}7 z;d|lEu-lKwIC{m0X*@1A?tIMVA@LRN2?C;Db^Iw0tr!v;pKdnnJna=2q&u;*b`@`f zd7WtN@HwFZ-=zf?hK%x3n9qwUo?R;bVX&x)`P#J2CFI33(dvt}E7mJEt6#Ef#k3zb z+U>YqLz9|!b)aBv{yn+sn@5io-a03)G@&qc)1ta)o>3)mU5itn;>-TuPgL z@tP-fMd%B|gFMdz`BLgA#l24@R04BjIega&=BC~5Jl9>=usEE*;t)L$AU?z9DyYTq>+6~AsX>PG}^`!lEQaCZ|vRb_HuTcWDC`DU;WnpzZ^FZ2S#5eLy0yY~QlReq z35I`_2uny*h){Mrc^4>9Sh4vxJR1a`&^psLw*C-PZmvklsY#J7Z@h4Ieg2B+s#isK zUccp{bLS@W^2fqx%JJLz*Ct+jB@&!lcl_N`^W~@N!mjW>SCnMGkcxioECUK4jM8cl=E@-(TByFWRapgBd-pI{un|tqG@M?3^@ZaBS#wdxX zq~-4`_KcpTz^Y4MhZT5 ziW^utVI4EBn}_WcaPArr_X+Ui(|I(RN7&^6J$2-}TQ-B{J5n#jtTs&-dKKO%TK8!+ zZ?wbmiTP!jUW&Au%~FGw40CHe|FGxTwLUAGpEyZtciiiN=E_S2HX;StQP!!^)ct!>WU5z|O|i3YmXin{2&kv^8Xi{7ZggB$ z&^1jarJ!+AbWGAN>6G;+u&fz5)S>5Dnw7`9!dzWPm`s@lL;beL&SI%YW8_coOOt$^ znP)~R$qJ)=?(R6>-Cy(eZfmrB%l$mMt84aOCT3~xS-w?Dp#j5;iBzgS~0`R?y1 zGv!zGFmE;eh;N$m7T0GBN(b{!QCYgmzWB=;i-i0LdTYSus9ue?UH!j)4VT@1T61V? zRb~2$=s3-xqMull1<4H5-b?1kjSpwyQ$aJ#%zEo=GUzMIJit~ zU%&Gd<9CK~6H1u@rA=XmJCZdU&G%Eg_|9Pk_lu=tVge20W_ddoZ7>e&PH|>7H%n4& z=7?xUZJIAlJ*kJuyu6WuO-YZ|u#eAnJ9xOjzV_w7eW`oB15UkVnMb}gCq2#PFYdW6 zlW^grMyqcuC;%S$MtrOfu(9P~@`rk-rm7P_O zIpn3Bmaf=&Kf7?aHSNc<{wnS2?%^#vvV4n=Skouy3;Lu$gW<6t#9sBlW0Tl}rOQA#UoDq@p!*i@Fc-r8n1XjOzbj zPA|L6v^eA+VxO+2Jw>xyPLMxKK;FS;vOax5Qf5TwfntkuXAenx-ilM1|E03H{e4YB z#+~6-x8|;1xoO26w?s2*ek#UA>+2uNiwdZbzrm=K{BG1`rn6xib&H>Tn*k>Y+y&ZzHes~BpCE5$6QiX(F%vZ=Lo(Y)USz$i+bl99Zn`bLa zs|jD4^^taB#>KX>nT&$3QtICU^(WOAg>Zc5)kQY0F*BB{Q;kG@Ne7 zs2_crzo_2#-QvkSFXesT98}0UkU76sF3Fpc882;aWyn$0#*0jaIkZu25`1fLBznv)pGoBn9agGa;6V$~eKD3d)b zt)W)`p@TiX1-qF(VIMYlYpj{T=+|26c4fPOyPu>!ZNWv)%{`@d^z)4k9v-(|d&*9{ z>DA6iuxPBLSW0G0Uu8dc^~ysb5jL&vKUd2LR$4hQ!8+^{JC0{^4}$+K-zDXx(bBI(t6ut$%+}GwvP3<<{`j z!oHuib>+X3nW-a=d|5-YBo_YN6e;~9^`6mpm+X*!tjFR@S@ib4m=%hj&739=2pS&w zTDjoNV8YR%Z#E;3o5Ni!AhYE9 zuE(6b$InIb#dCFXEydk(;^~e>jk4Z1B`r1;+JED_apA zh}wT)u^0U>!H4lv3a)%Q;Fj#PthH~Eg72mmry8|x+`p>SyG_6*j&-ZuqY)GUE1%si z{NmH}vb`;A@j7>jwYD>z(z?&74-HAAO*6XmJ+N)dorhlKnU_O?1dJa)VJRNHygh(A zd4{C^+3SDrnNgEEtGavsY4!o5oClOk0+Hqw>5H!D&Dj5NgOH9_LEav$M$J}>k^Etk zNbLH)S1aBm@1gJBQ~Of8{c80A8|SdaO8W0QC3de_7xvoVW0UB2yW8G<3%+MqB&XeT zmQ`1ImFi@(-IDdK{Hs9XQ-jQHen0QbSejO|IzjIGg0!R=_vfo@Pro^AK68R0Wvj%% zfx{Opx(828Tem{)g8n*<*$1z2G6w6Xg;x7qdUQd&WIKNc-`&kI8`A^ox@4wbAIK_P zZzb8LTU+)vmJzk1eM_a9*xfJ--%3&O)9hUDavE>Ba&uw2l?f~5>(Ba;gP%NYqt>=8 zlNP%%-}>4l1EsS$y$@tW_MX}KJZIK&ug2{Q>cS5t`p+HEQ5>8Yef*&3AvOKI%8Bbf zUNzb5Ao87GV~+KOw)3B>Z~i*m_Q6cGkmGP-y4Q#K0TTlIEQ%_u)LNha*rD!j`qt4` zKmBBVboq}`P4DRuapFOpuFEQ2I&8C7JB%27>rPR~j^E3cTGlJYyUXBvvEKYs^LpmW zA9D;hjBjteve+f((Z}`IbR6H*ZZx-z${G1E^QoK8JZ8%tGr@<8dfo=?-@i-gV`{@e zyC1o`I@fN}UZ2ynFwJTp&uUsS>+8>uX zIVoj9NjN3Bd3N|f#i~0N*{XHJJa>EyJsGseQ|q<&WrF+HL>BZc^Ty1YYd`_8w@u@ny8GG#vd@0dj{BtY@`D24Hcx5O<*WXh zk^+MEvx8P2Klem=}T2D8A;~DmzQUmPTp7*YW<1t$!CuH3lqfzkMD-vKhz@Z3=`)pu~*D(d4K%b z?ff4PdW20g_RZ`QbIY(|@avwiD~Xw}`8?_Hv8Af2zibs9ZX8SPZvDB>HE_z34ymv# zP1Prp<18;u)bBDairz_i-F_%^gUh$6mObl-KRfEBFn96IYtW;aJcxhtSJbks>Sx;x zwfyfYx^4~SDl_(&sZH9xkCNZ=5(&Q5V3P=C8P0Tm{{J8vJ4lVs0YhWX8qbB zFL~^ZX1b>Eei=Le-JVjJdM$xv3t6oTkJR6=6y)96ms{9%^o*$G7U^8oImUH*7JvJ% zr}jMmcGu49(D|yIthvD=Pa-{U(2lfD;`5fhBmo8VM)>3f0rB?&q9MwmvwO|SrX33(0M#-m5( za-NCr{tUY>i2Zg_@C=RyY{P{u73J~MVskdYzGB{loJ~e>dy0fc8JuH^7m3Yrg2!;- z_5lHnN5}?|!m$D=jmm$9g+OHR|2ixRS;>{||CzA=DbE^@AlHytBG>VFY5%WG_y3MO z|4-;VMr6o9bT8#UR})my$XxL~(_mj!^vJ|ed+zgjQqjG<|GU+Q;+_~*96Q4K5 z;=hpY!Fo;;>~Xn^_}22{My$ zCN~>=09*gCU_I{rHe#F>2nZ)k%@A`Q&2a~gue1r4BK(K6{^=iX>_ha}-3JW-?RSHs z6HGC#33%bWk0^}d8f^l;e>4FW(FFd%#t@ba2o>{Rhy6$M`Cmx)&$jblB#QGtDkL<3 z|A+JZZ?qzt&woqj|5RR$vOoC$U+U<;;eW^!Gyv$!{&(u1c<{C9KN8@TLET=p4U@lE5hcXIh}=d#yu**|dE2e|CT zTy|cr^dz|K-?{u(aoJyR+3#@KA9C3RxZ>~ou)bzm-iFiq5OEBV%U&DI_8DTeX zPsLrb8w3CLwiyx!!2kCVcz*3JI<7b}?G$oZ74i*^b9tw4F~YhXl7@+wI^k^LifQl> zdoPCiJA-(cSY(Aq%?93=!ui6C^iq_6h=$koF6UeMBxHxq5p#W?2pc>zB+862NYpjn zf_J0?{43x)olIj(;YrWYizqc;p&2$b0HACA$$V`4iS039B&Ui6)VHVc5Icr zU>GtWSP8a>FVQ*L|=zAit(_TC_ z3@8Gb@^R?a6Gg5PoCn|>lL5~5J`O&ZZFiRlI`GKbz7MwJnh6+e1;pn7G|0FEl@Tv_ z4^@%bw2XA%2F}_U@seke!AvHj20oOVEre~PBOExaYo?xY0lti$36;Erds~vxj>50i zikIxfBht<2!^4^2;mj;JYYj4Tz-zqZRTN;YEy|*q6<(ouZNf8E58+a|nRj?9qT4Ca zcMSK&NLoPPl@V{oC?1P0DItg+%S1+;?y=}NCPDgGbUcWlKK{r(Q30`AktI>GX&lyg%+_02)edg73c;Ar|wC_cbqx9*TJr5oXYP-2nTa; z;56|N^!?H96HsO2HabI70RD^q z01xi;K?Pyxl|XoO+7up-oQ7U$Ne4H$=wmMjFy{fs`UB)ub$L_hdd@>m%iuRoX}M`P ze8M;nop|=sIk$CHmepd>61r1?gvbOIVZmt+MF8xg68Z5SQikxjf>@ zWy?c8h$q71fAH>KzIw&`D{w`FD8A`hqXNAT3W+uW{>CxwhG!sAitiK21O^@Z@T+77 zo1^Q2!{Oc^xYYGIe%wCZwDSf9vIW=C_HnG+ z3d+C@E+TV$0oHiOs`!v9R7o`u0je|P;{gg4QpM>T41wHK)zg~>Uvr*u%5@y8!lvMr z)%3fvf+s1rNr$`uvH@ok3xtK<4e><{N*A(P4@7AP-t5VR*##lB!~@&? zCe-ixlNf6y&|*--=!3eFg@&>EcfxZixZmj4K)Vb9XP9Vv@vvtSd29W zSnwno!)<5`MF;<5Yxn@qS)taz6+h&69OHM!S$CrXb`p%=O)!2Z!T8Xg`VixH5{%zH z%J}ds*Eq)S`%O#n7$uzXWf9|(zYzsy{h#ug3zvN_m))DozLm?qgUh~;%kIHt59YFm zbJ;g@*#o%jF@M;J^V{gntR+YiK^XKB>Kvq<&?m#tH zdkY0v@6kkJ*RPf@4g`@dTLR^otg{_jSh) zb+}*}W|rb5wJ4F;r||KQ%%h4}bizvf6j3^jZyF=0 zgbAplf#^ApIc1#c(xJJK7IbfL3~hKWnE(UH@^|8Uq#z4H0?-piqg#1U z`hZZTNQwfvG7#P4grcE#N@~Sp(BKTjjnnAE{u3|*Fk@+8xCBK#((h`B-o&spyo$gN}NEC2Dn0=C#>n-2y}ovqG;eQVwA`EKEMm(r}qDI42;@E!hg1!mBw;l_K zMtsi;h$wmldw=tfoKJWk0}W*wyyW{1jsDHx2^WJn4+dK}jXjUSj=JO#g$sZ5XCn$% zx$Nm&c9%cqe>-$fx z@4;N(3%S1caoP8B`S<3sn{e56x$M)p?BQH?buPODmpy>X&dX(=!DYANvQxP15?uC& zT;;vTWf$P`e}v2aoy-3KmwhXj{~cWR&0O|_Ty|S7y9bwDp3APpWw+q6w{zw11(!XY z%l}C(y8)Md371`q%U;YCe-4-Z5|_Q3%idY{r+lT$^?`%WlPG7vQqb;IfNw*?GC_7F>22E_)MKeqV6ewYdB*;j%B} zvfFam+qvTV$z^ZgvVZ5Y*KpZC{9#9`s~)fD;ZXq`#+(rhsl(uhn{m_sd;g`!8)5Cy z0C7f`1ej|8kN?3ajkWt3W4z-0*jvB?$YI=%;%_|8_D|zHC&ND+|3OoOKR#m=lJ?_W zN5gRA@qYe)^Zy~!U|zy zC@TzjBaae53!=drdGsLk-Hqk}*$!btOy2Y$Iz|rK z1v!!iSQfx_fD(WffYSi?0jdD%0sg=KGxdi`qbQ&nWV6FqK^{1ZK-~fFD6r>iV_|NX z8E^yQ3Kqp3F5rXvmQYpU7w{>th2WMX1qG^t2b-dxuvAsUQvrUMr~(@&>_a0JOc#UK zK(U6?M%XieCIAKXMIPE?|5O#!H9aVxR#d>kFa$Q^URivYO}!VQ=%JJ^Ha zuLl-w1rKdX*k}_+#D&5MVGs;cp0|0!PFqA zK1{_2;w0X-q zRKnoNN8m$GJnP|@Z;;y(OeF%30#O8iXHz9|Tv>yHF?kxE2{xOF$-Ci3VBt_q9&YM_ zw>8;I353COe8KJkRDXD-l1YoeCQi)eCF?oX4Y+ptI6%~-m2*Bin@Tkd0N#)rXye3LxQc>@X$p;e!UxKM) z-oe2E8mj7WrC2bN9jbvX!hl+#i{Mf-gcoB=Fh)S=5=;{zO}KQ777&0g*EGaX`=>(3 z5BYWjUSat%=oq{s$)=P1gqRXJQhjJaa6KBzGQ&Rvz6N6+7~a-AXgDVQd$)6E5O~_u5_iIUFdrCTsBGdvSg0jbel~`lF=f-C@zb$Yhz_0% zFN_I|jU7xygEwY{*9{tGF{|J)Gc`CUgbgDi=7;k*&H>h7M1wTu53Mj5x)OgDVW6@C z@EcH>*lKX25?7dFEHwHBKzCpRP@))0vPtGDmF80SgIWvS?&q6@v2( z=14L+Vj?UQgAv?~#inCxkqN(IH7p3;oTZ|!ES&I)t%JmIp$2DJ=r#z;dW;P55PZ3v%py+Oc((4n%FeJ z(@FDuz$&D95#Xf&=w}4jlyqMOcr|Hu2JA|jy#f0IpkFB92-3U*a5QO70DO=%9|fF3 zno|L1kmfAFmq>Fl;M=6R67UlMl;>u^FG%;dfZvhkUcg@fke?rbf0Aatb4Ku-IN>e^ zcrt0819%<)`l$leAkE7G>ylyfNM$fOTg^_==TZmXVUx=@Ca#^Ja2@}06;%w zzzYFT9+m;tCe5aREl9HsU^@WxTMu{xX{G^oC(R7NzN9%2Fq<@o1CAuk+X3$+&3ggI z0ibk`0!}8)sesb~(C;t6mq_>PfNzlI`+&nfc?w`j(mWTiENNB*tW2600bWX)wE?dn%_e}&NwW=LI{@@s3wRyr?h1G_ zX=VcU2SC42z~Q8ME8r;791S=Y0Ot+B`$_jCz$v8p6yP+{d=>CD(tI0mDF6!l5bz_? zy#equ(%c646>07V{1pKC|ApKx5P9PVEJ&Kg0Z$>#^8m|{W-4Gc02EdeuomfV0@#c+ zuL0};fczk{3u&eU_5wgZ7T`eA{W0`IVWfE*;OzkD7Y{grG#>$+M4B@Ip8-Je=K;P- zn(qKEBhBT2D@bz#;Aa5n*9y3uH1j~Z-C#!Xd;vT_nuh@Y9B1auBK%ASJe4%h1w4;5 zF9fVgny*10s|9BCb7X@Ep-sW(aT|z1jIFAw>PpcCu}KfJ!G|@rHbu!o8Rl>_e>Oh9 zRYQ|pdwlAs0Ygdkl)1jbXPP;43S zin}bh$x@JD41r-%iw0}*!FVDd)eX`l1O|#O8l_hdiK-#lRuAs2MWO_Sa6^-Jd};-W z!(_{YLJArb&mflHxP0K^Dwzuk$~>VPFhZg_#qiI(;JK$75d|kCGCU*-WoU0~X{i=W z4~JrdAixGe42a}DmSH5}QFMunI-zlUEJKLcFbOAeOY=n2NHn)6icchIj7Kvj8&Y&Z z-eS{(^jxDSJQ=BtTMh(SJS2C$96bwXt`=CvoFQfIN_;8TI_z zFJ7*H4ME7Dqw)U^LAv9K|E}+`3DFqE@DQs<=SlxcYw!!Dz$aCBF!(oCLnegtzf}<# zY;-;s6ik6hus6ev5e&){#KESvYa9@RSRstFGglCH=s$zluO&I(1d;Z)-2G>*qA5Kg z`m*t6G+MJ5qyU8(osW(NGBr1$plKE~HC)(6dL?2COVS+X*rQEm-1H0LLWDqxIT+h+ zT5V%uYGt?{_y!k{DO5USk(>;mbm6y#m>N(V*I1E_$rLdaObRHv=>G<7Tyf#y3hjuA z-}H}M8F1}CQdHnA31-&6wHr#~GB!4~py;9r2E@P}6gg9rOib6P*_v9bnXWchri_mO z<{=ba_=ngOI)flaC`uH$;t8Xs&g~zcw~VIuj}ZS&dZ?%riY`Ksq%E=qcn8sdqKN*8 zssZEjFg~Zm?1-WZ7(yBcMFc?eB^|*O0#V@JRVlJi+4xinRB-HISv+QB!cY-`^7zDT zlnsmxDdWivF+p$1@Qk26eT~Hev$0% zzA1?AO=Ej2BaS2@#&dykGXD3U6C>0l6kSvR&?12%h}4{*7{>~Yp~z4VJ*pEy_BF&D z1iHI1SD0f2uwb@FQ6ie72c5Wn9BA(q$p{$bcbJom*Vn)hLr2pTs4{C>IKwZ*kAkKy z6wq_B!k`aCRYwLvvqY3O;i?s|8xv|bh!tiz@Dc_EpYM;Onl}SF-XM4Hh_T>I zPZSaHGiLb%^@1r@W~kW4YXCDw2S$uS^@Ik6X3C@9DHNpeqYx87P~@2(7mC)6604Spd^ z7*4}H)cjfKKk5NN5gz8@3L~a}a1e`0F?KS6S_C13D+XvF&=H~^>TPTd?boWA+Co2w zxDk!1pfk3$`J)R(>5f;iQ0zh9g10D3TMEs?15GdSnnIDG)Pzv%KsOYQJxV%Lf24{- ze5U4LWk1#^!PD5_O7_KOh~}V{Amst5f28vP76nZ?YCrfOgA)KW>%ov)`+p37C^)Ij z_(Q7rpGHFUf;^B)5L6iWnGm`}yt8E^{`UulqoDp1*Ac)X06q+D*@nAqa0TWuN0GoN z@cW0WSW$&j;qewUl7}%s8$%#&8G02Us4hzl_SW zKH&G?luM(zC3Q|?k{2!);_@Iq%=~VBV@gzt?wIj6JAmQ_6#TxBG^uJ;8)a;wGsI9{ zsZ^wV1$xs%=}Z_ZNS4MO@rnc;3~(p|Ixbx8#R!Jp2>B%$+ZQJsp%Ej>ZixE1aXlO^ zU!bm-4bmhV=MJD9K8}z*33U}j0!;#RX+#v1v33#W&2aZdk)dyR=^^ik9>6Y42sNg7 z!vk7Dw~rHR**Xy%YZpN5s!d@=(v$04y}Q?fkI3Oa&Cok4sqZ!2NWd) z#i?dRI%-qAq1MKCw4>ffHHrTWftoEojp3S^KxO$;Fgz8me^4?OWHX53&0+@=6eHTI zALMUT@%=v;&QN>!J)3}3h~UI(070U$v5+7Gq7eQWgaYVs$f5B!XQR|nb)%I4iY~rd z^LseO`2ha{CGcQ{`6HDibTdRtw8k@!G^?YEhY)&lTm>lwmiQb@%sh3XG}apmi% zSBf?CIK)IumH2>$Yp7CK!$i{Ec-ay|fynS;ZdD19&)q~C)C7f)<7`dXa@z;On5{Kn2rTO z$xiE!`5oy7q$Hikjhe7t1D_$V4Fn#ic7~LR$>Hz7wBIr?Ec`;F|1AQb`hqwDAP#(4 zh)`BT95(p;5zP;RSRr0xg9h%2Li!?QFJqh4t4)m^M%ym#Wo&XjZdy)+6)uZ75R^R_jn`#RLL;?ujo#>LC zIj+ed#2aGZC54x9wKyunKph1B<~Gt~>515Ttjat=Ttjm_a(N#*PJDXGrl^t&o)oGb zWCLGGfEk&e2bv4vA^-@^(5^g`*tqyk4$y9NXg}n1! z&|QJ>fLc5ugb<1lLYz?3P}M;5Vbr4&31Fxccs!%4siRzM226)bWN5TN&0_p?l~Aq_ zQ$y++lo4V{1sBv&d0-UylYi#}M~c?Cj8V0@=ug4bl}wfXl)- zCGg2Buog&=elS$I1AWKGL@Y#(>wTS&b_-vugwia8m1Q(kArT6wjy8?JAPI}|ZZPQ6 z!6TjK?)^t}|I(imdBpdeAlAVJ8;B1YC4+?qST+!bm=yq#@t-{q6+Ny8i>s;>6BgQ_ zLG}QU2NZ)B1hYrM#ukxKI9wFM=MJhACnOzGVHw_!<_pRt&rv){x&W?*E^~AY18p8!*;b`cNzLY1&lwEV_+u4~qHAO8up*QO(iYBV_zK&Y zN(9d>@COJIWOq#Vv^0tb-7UlmjkE9#l1289=7TD1rVAd6ptDVWoVIaEG*RliaBm=a5VD{ z(CUzmanz2J46R<`(jbP?fN;PAx-dkdt^}AR09qeX|A1dyent5OwhBQhpn+Hy{U`N6 zuz>|Q0nw4{aBv@gj?z>|2ubw#|3!GBlmEBip%8quym$^lmI0C?`u|pd;+w2sFOx3_ zb)jgqTT6sO3!p?Gq7^_yxDzP`p`5~&Dm27~L4dK9QpyH2-J=D&Qk=YD5)PyoZD+XR z6)7p0bW({HK3cqgVQ+lWLlkYSbr8*hx(`BAeH$3{C}Z5`Mngj!P=H3TGxEeB$)^q> z$&C|aML7avO#@8&!G+YjQ5T`|p#2tq_<=zNTt@vYCjBh_ zho8lxe&7q0I=ZWb@W#ZOu-%w~fz1j*GY!;85Iq*dE-s`t010=rx&79#5Svy;lN%Qj zs)`0rt>P-o|278H?ug$%S_qy6GT#3b4|NHY8|^(A%?BDF*(@fE^|)9Kd9k#GucS-^ z^{Gh&(EKk0XpRdY2LXW5$2JDw+6_YNA0^7@XC$8DTN825uzm4A>>{YiHo|%V6tBQK zFhD9mBY= zOuc7>Sp)0`cmy!vKCIaTcmkXQcn%=)0QO)2Yz4>%7zS8bZiK}EWC1(|_zWQV&`x+>e#{#W@)k-118kOtk9AoKBgkM9J9Aw zZE9|VK|2PpwS>JsZjpF&SU@Gv2#k?{4FK-|OaZ(fFa{^m4g*GOt;xtf0nVQRM(3u^ zBRhP!3>ds&xyTNOrqCV@@P=IjJ32!(ev2;BKER$_26UvTdoo{0v0g}7g@j=v*ccoZ zJZ{q_3`+j6)exM=RH(3z2o$N3{25mgc%O7UfppXW2B`WUd8YbGRxDa}KBs7D{ z8+F>SL(&688wC&88%Qb#L9GP4k%X`yH_Vt7!t_A0Ag-vwb%4LMRk8|f*@ZAz;)1F# z$iJYGq5B0uXN8oUs&LLzfvu>(#&lrv#KJdHVG4_uF5R$kh3g6oi77ChB_4AY!q9Tb z3QR#`(XtI2)m+sGgU&)BR}AGJ^&~4WQ}iq}#Vv%v#HD^TjDjFIwtadNKCXgTgEZiD z4+Rvy*Lo~>_<7zhOtzb@M?Fbs+QH>->08Ba!*KN^3$IAAmC{dMFDa0x` zswT8o9E}7KtPn_5!BTUH2Ngq7FuqruvP@NDsp=An5@V^BCN;pF>IY%M7BBK+hq^1{ zn^J8_B_}M-Lv>IvGuZYETilQptqnlApohk57ix+u6jJu$se+h-Cq6a?<3q3#5^a#u zf1F|f@=T~JP@ZwQa%>=01tE@@4r~JTGKyMhu`(VlNXiUcvkWq0gnuwC9Ptb`q-KEm zQ4KIjqkn?G@;}{>KS6Z^Od5a+pbuaNfZW|l{BLn_yX^tLeE>5w3^0$y23S6T|55{N zxsCzG0yqwU!c5dPz?1;C1C#(f23Who0NVmU)ic0W14II->lB!FuGn5qFL4loCR3ZM;O4&VU51c(864DbeE0AM2U zz!ZRa04D&RLmZER9&Z4K0VJ0|JOHKu2>^)Wphv-Q*$$tMVn~xfm@wiOPz(E&0HOi# z56}ofQUo51L`;j%S78Kz)wc*Cj7r6brEF+KXzMz1fo=qPTU<6nO&V97Lz_ea)&84y zh#7-Kx5?OWlab?U6Dw0RSLeat6ENl+-hsTap-C^&n5$f^? zp`2LIWou)wcpp&~?Gkm`7d}!EUce4rPZ$FS;11C!u+{Vd8QWMnT7&3;V#Dx>$#?}29+ML)39jJ* zrlTk@@g*0e)ltPQ=nHH?#;Ji*I*1j9N<<3--8SCm6UQ1x&j~3hco4lisQB>l7xBIQ zxQQ~7g2ylCvtbbpx_Y+=a5pxDoRI6a_^>8~)0W^jG@e6eJ#O~|Olyff7>Ff6&US-^ zQ5Y79vBM(-S6I-5@Gqe5B9;ib<4^*HmLL9}w;P=TXNX|OfX6~4;UJGVC*fa(@KFT@ z9atDbUqJDPY99AMasV_VWmO?4HjIb!(b*z2U5A-zNDv&c^7O=8F(~x@$TX=nA6F-XrBtKC_%;IS%9(F0a1?>@IYchJqZ$S5G7$B+CO?29Yjw2 zm>SWs0h_>tnhA@G{MV@l6H0ecKO$N!?9t#zry54%+-FL z+WuwLfuGlB|49BdSaiADc;ir8t>W#0)mtJtZHyxa1_#1K#7CH~@87+?sOSBv&%e_=||mzV54BU{mXxOh4>J~(PN zykZXR?{-*D^J_iw=5%9ALSM47uv z|^q1$RciA*)0F!Zh~ks1|o_(-5O)mz%&;*f~u)T^s_^N%Ngo(M0r z7_$~0{vm%XIl8-?*?g|#${OdGbtg`zGWyFSZVFtJJyD-(KK+XL>G{?ABMrUFmr5kO zUjA5XW~S3c?`tQMdUmZnuB~RUFM+iC?8^K!ZjJQ}L^ddDYe zs$Qs{o_$3?XV`5^kwv9PpPIJxtuK1-k1mTi{Bw)J*`mp|UsslgoI27_s-IjTBU-2a zs^^trYWo$GU-)-^0q?zuDR2mfc{A+{4(w<2NX4(tc)eIKHzQm~%)$2Vl69{pTI!Z?7Dei?{8#F363zP=sq>_K zSa*N$k4O%h-THi+f7u)6&7`;s8rxqTInt%ed~I7F zoGMU1!LUQ1j`7tiU#6|bfpgf+b@!r#z?B@s9T62n0ba^0lHVlC4=!0@#dtc<6s6g; zO|vOvfytI*H|(V7dFedVQsEy;ryaHLHQoz3Ez92XR#A1qz}|DNrkPiJP3Fl(CT~0{ z8fCZX>ED0<{WW;d?YdcH=_)_oezz+t7nM8dE<7RD6sr;OTC!o*aH`8W@fAgnJaXNA zqOMV|L2_guT{H?QqDClqX*B8ej}4y#~Z#vKZJl&)}JgM8@m}?22ll7ce$J}Z65+fh^y_61KxKh^g zxjxZ>aWSR3llP!psnOs0u9SauoYirJP8ruk5fh3ysytu%N zQ}9f{WoLXr)6axX?iC&Bay+o+zM*TLWw?U*2oKhcktIHefV6)!#92BgzJyCrPXY#b z#fQe4lf|&pN3UXwX&`=9JgT(BR>dQnUWjaT$0lKKj;yrP9^Rl~#UpGahErQSx(NCB z-KRtf^z41MoKEOFoblztQz=o!vRqKFv-AP0U2lfQMt?47@nt-NI{)F5)z~|n5@reK zXTwWy$n&?C)DZFVqNHuai}QrVQ)`ZPEzO~vFdMcmb#N?PgJ?~(E^ZR=G51om`NbA3 ze&03s6Q2GVJs0ULoyNfhK`e|VdJwcbh-2bSJZfSJDy?D-`561HqSx>i35aDNUE$KE zLE?;8)~Ze^jkN>IV?D*KUS|~N9U>aKoJ9DR)wo{L3}k70QU8w^2gFr(oJkIvPX-%j zth+cxryp4{XLjCA86dQ^I+~hVIRWkvD8ez*oL;|Y@TtB3sOXN zn*$~h5r@j1+?dief)(I*_~}}6lPoFbT{@NzDHMfNuN-1N<2=F9^$Y3OlgBGc9hQe@ zRoeQd&@j0hC0#h(Xq-6tJg!VxqmJ* zVpep=<+r%J6jQ}f0B~)UgEcTIi2-*w)A^) zoskAnHYw^93(P!Tt`)cQ#_8#DAyEkW_5>#lOq(xo;gUtIIhO6{$dEQ@@&oPIEMD>Q z(@o{B1wIuJNx`9bn3#T@twLj(rg(0)ELi$tp2dRcJ#EQAjzl7NX>r4Me4OLTzi&1t zW5zUjoH|UruJ@h4=lIxwy|kUdR#s~oCxog(TD{7q)9jva$1xFh&f099)57vH&xjqv z@PsFVV>lvCA$FkXB?SIgSiLo@_MC)$?lru41D1-*JXWg`YcY@j=qT06ev#2^z-C=r zbV=W(*|L~o7sm-{$CE&am&RFD?F^H$-rNCq_@WbNywa*}7Hz5W-zx~jbi6yTXzsrH zZvW)%(e7XC^h)3D$#;95*1e&%jJmJ7s*$?w(M~Xmo(h|#+@-QGxP|LuXRVA@l6e$J zE}n#oQIr`ZZQUTWT*wLNMRIIw&FPGt4#7iW9$pkoNleNsA_-Fe2XtQwhe``&26gU< z%LO*fJDP=TeMiSa$_VXCN12DW@Tm}vGo3g26CHH)sD?*adyW0z0Mn?Ud##iUbn`@6 zhNxNfvqp`LNaWMQWLMt_5%e@u7AFU2AjUqCnT!U!oigAAW&+J3*$Nw|9A-yOq^Qu! zGUY1^Cn30{xznU9#_=NAR%yXDl6#SXG}-0Z<&m&UrdT}bRY>8*!I{MgW93u!n+UD3 z<|Nw>*!X3WF+op>%gzS%L<^P4#|_)C@i)Co`(rnT{y$=qGMrhF7mB#moCN>7MAsJU z)qVkb-NWvPLu!7qoGny}`NLWk`Ktw$QSz(Al&?f0?Z?G9O>1u*&H1X>A08YZdp-DG z1b$2dvOX;d+zA6VxUjcD#!a_t+iAo2k~z`FSj^zk5X}d+CngKJC<`^l{Iy&yl2`j3 zkqYW_l7$(^G%toS!I zHRxh_3I!($**TM_HLm6>*!I~hWY=@Oxti2wB5$-=EQxR8YB5R7WV4D$R=;tGlW%>f zZuh9b@mnR1{y1IS;LyLErUl!S^n-@fF&v(le#d-^FA95GcRV$tw^(|BRpPvoEUwwk)P zmbl$@mJ=776^(@zzn|$~JvES(%Ut$)IS)FZ1zOJ7QD>{r&IbAD>m6x|w+fa8b5uBY z=H3Uy`a6{My0Ga?*m;6SSy>}(KL3qpN*qS+B&jl8X4my|3zKn*z1z;NuB!XOq~Aw_ z;OZ}h-8PQXoA@D}EoYI~WN~nmF&BXYCdTQmov505)Y+qX@$em;_JQigEQ?Ij8O$Ye z>j&*bi<`KBj{$dcU6^CBk-m3tBn@6nltWB~uXtL@0X)8PX*NgKpV7TNiywGZObqO*U;kL4kQ8Lo;l?qy|_P zuW_tsJWb+!x>7x`euD07fnjf^g}9INIhI!)HOWLg)1ubwX~_zSkV-13uCucg>e1{S#Xywo5ef zMZ@?Yk8EF9u#7)tQPp>8aRt{YHba_g8W^kJ+sY;nF+4Ep4QB)2XvGIyq{zB|-#WH;)4&2Dx>5&ozKHqh-^tZhm3fXT!G0pBwMy<$Yk=w8Pz8oRH4iVTO`-4ShLlL z*Lq|Sw4~RFIYWoX|JRZC)H+w_imAIn4sS`YpaXe8+tuOGRJx zP2n=X^s}t9E$&0@iYbJ1C_CBQtR1!S5n0@TYLh7>09wGd(e<-{jq}E_GQwdbVgi${ zU^tfEaH-)!T-Dt;;vUo2-{&H`%=9a}`fOE1eF^OXJqh2SjiXawn^)IM)0zaHPp{Oi zNNk5lq>N5pgUk*t=qGKi95(QCjwXaI|K_`4w0Sn%e)4>0>wnbHJb^_AMu?Y>SeS<_ zidRFA_$4;}vY*?WEPOq$vnyGQC`-Axx>j-q;nGNEO9T&c7~2(n$$^y+Jc(qc>ZYwV z_s!*-6P6cPcQDn1hq)Y)tc#1V1o!j44jvf~J!+^VY=#k*4nZugMu{-h(<+J!Xpv_) zX;^p(gd=WNzr~V!u?&xwP^Yi9LK`@3Y4WfTahjJ5e!32w@xFK{C!JOwmoWesk0QrX z7i|sz<={^CYRE-&@ytm*S&=jr!52JLQ^xi~pVZwx*0oO^=y(Qvsm>M<4x=WI?!P8F z!YhLoBcLPTsu|EC;}C?<6rf!YPA~9Bq~LEA!>gS9S(0DNN|FrIGz!R_7rSU3wv+s+ zFOCAHvbp$dCbz=G8t$6yJ<8ylLQ-%T2GN@^?5yTuH)|&hAy7&X@FD{SrX1O4~)lJ1@jaA_nmh_(JlP z#Qo@2m_wKkvD}Q@QKJujb)A~*S+@$K9L&RZM{bNwDT7Sp1$cpS~ zm)JoLC#gkBg=2a2iZMGdZ)_SDE-ckg^FJ~d$U0}@sq@Ct-#jDToA*u$^iTwsrG{i# zL~m`oIR2**EHOoB>-9}2s)RFUMTEqqT#wm9X{QXGH|&CT`$f@hf;iZ?=%>Y?64O>H z9mht3Y6RdA+m=(0NSQ_7U3eP(Z=r%tJ+D)_^tEJg9d|9xtr9%v?ecs)%*2AG55DPTHUR%nD<|O^kx3m1;3 z_Xxyg(rv7*3u@<~U<^G`ka-kpIS}4)eugh$BvP?qjd9+GAEHUT73CZbAJaGnexA|= zn++iy2Z>N7FR>=rHm`e7r1BUa8_t z_eQxAE;|x22nvSCn?mulzLT`=5YlLPe!5$~RU>Ql8mw^|NOKLhfhWP@?$?tbTcCKV zN9V)uyd2#Y6D8EgCmHm|+YwUWZzMrSfz-c}-TD6TyBfjydmvRaSzUWVgmP|qBB%Im{o_ zZ%}vCgv%f~3Dq;*P(LfdF^!e=mbPqeu^vfi=5+2*4dr51Mzbr@2~sNR{D&{(j;>Zm z!xNU`I6+_y>rr{~5zUGTtrrK-gBssnoV?d=)49;6&*SR^QTF0y@oq#Tlhz>YOAC#8 ze_Zp`G`dcZJ~yq8X@*Yb*T`pj+3NgErj~qiMhlPFigCVLAZ=3KQYOSPND}W5W+n~VtpBb@ z4ak7WU_nbJEJ;2iDj6-)=|r5t&d1+~*hf1>XvD+a0P$cG1Deycw}OjLpO09eXj&EG zyO{JZPJbw)d^zXNt1ESv=GlDKjQH8SI36BE(b+IMJ3aXkr>g{^aNZ>P58jOK;yh&? zp|{ooCwY8)e(r6HeQ*UQtrjUbAN&5<>?r;L$xE-3EiB97u@=wtO?-#mX`=0}n*W|) zlUz^wtVXupp3Ja@)wGdC42!Fpr$nfkmwC3JZT&h1hvkdrFivI-??sV~Z?^=%HKbJ^ipJ;HS8ZunMSjA|MteRk`V(_Ymujd>O9o;4?%PMf6g)h@) z;^!P{=N~?%=a2dn^ZHBt+a5+2?lk8gha=^eRieC0k%tj{+w=j$*h)Lsiw=)2cmPQQz0|^cPS(HCcRAe`hT8ey|@7_P5e`xEkWL&mtOAoiH88NbH^#`!d}Cu!tcl z+@%&*2gbR?4ex{hezVwWIT&pL;y%Ehms;ZkTCM~$J|B=A^6p^&-B)i<4^NJ|jVZYh z4w4somN6Cjx|u(63IqSf!P=M}kH4Wa&nFy69&EFP8EUGhjju&9;h-L3b0ipH`8j8S zZ`>f^ydrbK*}=y;rUA9AZc#DAqZJ~Yz7BGnmtDGYQcj^yy^l!Twhi?i&h1!;XplT4 z?6uIh4*0$*qwlkvlfDkk8*UH9^HszCIGymNo6+-(i*mky`OU{YF}!`X6XQMizsK3} zVE_%)i3Z#}KH&*zr~jVu*rsz_dy@Acfgpi10l|vXG?@euVdHmsauXLf(Xvcozo}p3 zOE@M?U9b>b&5&_x2Qggbq`*Z5g`g#zx2W9b7$)*upg$&8G-c$RO;=(yTDoqSsikdE z4enc}Xk|Brz#i0j&BvpnE4W`tvTfG`qt}QxiwYVcPi}LbS$cWQqVyK7UsZ-V2(4(% zT|h!oR+I*+z<5YJ0Zv(9^;`{ejKV|5JSoTO-p03$0RMPu&ev8{e|Ino;y@K zeHh1J!AG-m%-bo>kgKb}*i>t7|KPw|bED1u$wWd(J{#;l8SHHR_H3C-fWFxk>UWaZ z8J0z3Mb}4zHJ6jbgKZx-%6Grs^lIBPtN@TyzY#OX2VDZCT%d)9--yeORwm977XTfR zwhKlZ#rtYp5}Xek<|Uf>)(ZeW%{g>Nw8yH=QVE?2;;?>=!*AWT2&uPIy1$orL{&A7 z_eK+Vev+T<k}-v8T=l{Che6abjx*0m2~hCQ z8V<-X5JY5D01R@9-6TmCE(Vd4OeMWFCWg$YQnRKkRt*L!yiXNjq8G0Zc0YUaIZ1}A zLe$J4%a-q_L3?x7h{VWBikU=A6E)G=CM@m9p=eO$JflT4A%j@YqT%J)Mf;F&OM(Gn%|JFwdf8<9AeM^-Y5|~PWTsiay}8#V;#TE#!{r)*7Lzcc@Htds*s8_O0PC&<+F9{ME#Vasw| zB)vVGC4%S0lAUq8LQ*qQ_M+UxYev`QUG6%MRi@M-`$7`Vv|Qmlc5PJMIxnG{tlfJD z<0#x=BF(s{ZCd<+e6IT?IF)Q(Q5tPHA!H-Puht9-QOmTMyMoL|wu9Fx2ltf@9k~dW zpk28*ciS({|DJmu!$asiFK<6xyx%_xOR;H2$LCQznK0B)m}R!SM)*cc9y@ZSoMVXE zLYv(}cFFvzyo=nKsuYEff?I1tgbmH^$}p^35!bxF8;rOS^KW5uEEia;)L5^lu&>G% zJ{|0BJ?3|W;Ds1hTKzHf9gP)WS3mW^PF>q$yYQR&oLHjY?>^W4YYipt7Pf&vbC9)a zP)spxC6qVutq=x;tsot)pd&xNF`ariJlVcH8PcBVLN*Cy{n7Y61sF6HOwHnL6&^(6 zD<6wQo5Eee^yWgXgV<_ri+-xY6Z1&x8W!gPTAZ~i8xm>lLah}6iOJGVAqR-J90_j) zIM8V1OISR`R7VoVHpd{d&<|B2pD1(`uKv$I{jA+fnP_ZQfcYYMITFcc_yb5BDnjK1Ux`DJ9O_Vdd;kc~PZKA4e?#YFww^)ogH|a&I{kZ?y4fNHQmDcX> z2eXxZS5!cQeekhFXE>7S7LL4pKz4|*=Ya*2sNalG%adB_rAXM_yM(oKJ?z(+-aw;_ zsPRip^;laMb>0)*>GF?{K1FMx7vB7ZE&n=^GbbAt|qH(qs zc3Wm^7rt|!j9z`2&L_zOXY&h+2dHive|8X%-nQ;Ut?OD00{es3uCi=xV?Ty)y~zWT zGEyk=;~VxeJ0cXq!xqk!|HwhC8=b&aMk|LphDUi&J#V~QzaV(})t8(|hF|~c-o`&f z#l#8LP6S@kt7XnM{6vnVfRGv@gR+x1`=@XBPaX}13PoAx#$m~_a@FHJYFLKciI3tF zMnk0tCMUg1lZP=vqFtuYT|8YHJfI0#EqoZ3t2`F;Pm_+ODRAbeNaH&^t|U2IJ0|`?4!k)3qV!n#r)(us&B%XJAB=F5O}msD=Uy>?U6gWoFZs+`An7 z0#<9u`)#wv%Pmm>N0hO^(?(Zx3T$?E0MWN3mWfn~dDGg_tQ*P4ibPLztl2|;L$67| zxt?aD?CR(Ap3#CRa7Bt z^{J+el``vw+Ncnild4F?Fr632PEigv;%jU~W7S+tU9T?XiZUapV+?a32?w=Qy0ytH zAeCB@g-eigc&*|E`1;7@9j<{~)VsQpp(t6u4j}m68;#hf616ylHOERkFA|;R^Q;Yh zoJQ6CTi4~7wL_0M)u{z1t$*C}qxD_dT$-Uw>j(19(f*-L_co?jz2@)WAG15QsW{?GQHULMIMzop7}X@Tj^-9)R{6p#7C5cxrTK z7>1%je1MTm6nYoeSy_-15&zftJR$$UKQ%@88%mPEqw%ik07D4uSL4zAz zZyxdW5fsu|r|3onId-55fR=?*a_}NoKWW@75UR>0bKQ6zj?=@NXR`3lFbl>7w2Nun zz?re(I5aMcMRxp@AxR`+J;`C7z@vnI= zdx(=#?D%~5Nftze=wMsUaW*yVP;>Oj-g75ysfakeF&q9`F%+PHt~rvKBP=JAwhKuEPI8xIrUTLo=mo6a z_PWam1FA`!=P4b=hNDWHvV3KUa}8)EGcnWA@)Q95T9*}8jm4|MRCBUX7%9Cj$LO+h zf3YUwZkwvW$w4-L(YJvoaF?|CTJVbTkU&aJujzOseapTkdHQ-C*77kwS}~8D@Z&BZ zIk0zQL((yz(x8-?Hx=< zqVnh(^udUGxMtlM_Q3+&XfsZxu#yE_bZPLho%3$qJdX+$frnk;)VBt7pVOC+>#MaE z6tXf9#9T82r*|gvvSlHyH(9g5EKU3FYLX11{kf@nkz$Qw zofo^6axw}Y#ie0BUMS76iXm;(x&0ddL*23Hb;4HS8j*r|{Xsslv!+^3Te7@M&tiE^ z4j|7$BKjCM^d;aJ_)vPO@< z7KTa=%-=NfF`_A;@N^8;S({cI*tVb`Mp0#{hqZYpC8`6)uu$k8by(5j-UR*wsJ3>I ztrlpG+RaIlWARBd_S^uY+Thd?Nw;seL8IeoCRmR5^Zy2nVteAiE#DVXA7D)gbx3M~ z%}nK4hmxXPv16@u>cYhEq!Jm(Rv4cTxlcoHJd!6C?vk`r24OK`M$~Kd4IFYX-|E$X zPlm0S~^em77}K2)|>1FLnCfJb=aw@#w&% z!|2t3MtFL%V3=|<^lZW4j<&@r>e$ncNRkUtW zLq@0}__PkJtby-}AB=V^Ai0q!Rx;W18;#hhE`uX_#2r~0TG2=Ybj{U`I_-z8s*-34jlx@|r|Bq%Y3v@6lFM|e z*_dt>Tf(Smt9?umM$BPX5JBL#m8`w*h!MB|e=sl<6K%#lGYwYIfGfxOcc-Fn1@!SM zy^db$&$cA8>S+lc^p`!ShiZVG-1%CCphfG)+g8yja9}czc724!;#|Apv8e0e3KnW& zUNWytS1)_fgW-C!=gsa=*Tcu<60y;hvXWlV30L{sYu;{CT1UEf$kl)(A=G3zS6d)!wzikXRs6h89reib{=~(qlu70&2@Rn=WT_5qWi# zy#7+EIO_hBPDWCfhfQ262@fIng$Hh^<~2>GuVvR=gmfA4d9I z!E?H3*c7awnVFq&yaDcYKUZ2AW*l-KXn~RQ!8V1FRyQQZ^D6470?6q-H}S*6phyIM zz4M>?3`0+bsRjaMFyX+L1(+c2ne@TN|#5Cv8_mbVl+ujx)Q(cK@|NQ)L|8n2Wjnm1P zXYfr%>;>jC_I-Zxc6fAA=Z@zWXVAqz*)hz;=rAthCf?uP76y0k2B&^nxxk}$*v)+G zt|VIuo;|1DuAc=i+gfU!0veMNP%^V|#lJyZD6iUpaj5T&2MiLX!2m8qWn5uvprchF zzP557lKab*ab-vYFGn(XeV^s^mt4~Hi$}Tg%%ST0vgvrY0qL%yWfO-?G0f!1b8@}7 ze^^nE1xz23cDj)B4VS}2OpIZDO5<=g42wt=M~ zB;@J{2yV0=NowR(6XFS>=VDjyrQs}rfr4u%aHJzqJ{vA1a6_s=N62ksBd2(SkkP|E zwB(RY@y2w;cn)xPl7yZtY=q(9rrC8mX7H;vm(cGgN>2f}k``qj=Cnsjqv9F$n8A8D z@tL!tJWG%)$4-LcAOSUE$^~{lxhHZv(kPYbs& zxd^1{N*g5R&KKSH026&Dd;4`GqHXggj}8G944Dnq)LMBmU> z#(AFID}PaR=jA*=a}Ue4Q1i=0i#ZRWRJC~jXJNd51#GF+yP=uou0pYc#}XaiSsygA zgah9Y$I&Qn2e0Tv5D8rUtjOU!ZE7WROY3feEwvTW zO|n+?Pa=U--Gz0Xg`9z_l3+N}8kiIKETg8S$a#!8#-3a z{-sAzQ!SZ82#gyPu5q5I1*>q#>kXbDFjMTP6Zn=ms5s77v8&Ax>=qvHH7{wYUlJ&! z?6K3ZNxp6Jzf{3NHL6!guMK>$U*=0*A#8|Lfbj9IuwI&TQf^AFQe}nj8#^oWVzwaq zQPt)y)ra`8;#UF+|5i7yBYUT>)j4Ch2#=l169|`;Q*5Y;;K@AMLWMdD6s|S*7as?Y z?WWgm7@ydkY=#Mxs=Y=bnOY570;saw!FHy|Jen-Wi68?mb6|0fBoS6?J8;{6hnhx; zNyho7W#S|1AyqRFsKxQu%kBa4%JTG^Xa!smlM34v*$qHUZo1lI^0e{ zr;iOBQbS4@*ns(I^1!AcVy2%yX)V9>!ejXG%+z451{tnR1s6w_S7z7ai=qWjnkzDj zSXHh~b~BtlXR6~_Hq4|FK*d2x64l#SC@n<8%*w^+0CXzJ=M5-Zq)b41#9}c`dWWN@ zib~P6-%v-crHmX`stSTbnkKoRdYsa`iz2cRH;%>=ciRY+i=*ft*+?rPH!{b7uO>nC zH-LtWCQGqrVnkX{o#RPZK8>y!oR&S$9OczklU31IYIXKLdQrJIyc_dnBVh9le>jK^ zC8k2`F-whe6V5pVzHrQ^L z94;XPqL+zz5x}TwdK;{bV3tHT7-xH7#G=B#u%WGvh~C^rp4aBntw?&^+}+{HIRCbVw~My0VD9fTgJrT$=KQdhKI61+-eew}A1 zK?<8b=4mBeDh5wy6|6PafoZhk#fiZBTHVG5?d}6BFCE{iAk2O{F|je?wnSVJ%U9Wn z^#kJnN;Zw7EnL84KJ2yzkgEzVlHw$r(NZGTO7@z!v`wby&Q{1_=vErC1|l=h9|| z@vXYOpFOThVGp#Rz1j-l>SLrg(L?8)7UEuOADvAaqXe>vAWT%SSH*39e02Fbn&dI9 z0{`1EpXSLg@om3YV6XaMrTv|!gYw~VtJ4R^0?@YYpC4nL>K#icfR7$-4F;&h0tjHL z+U)W*k+Cioph7U~(6}2=LJ&~2B2eL@d4OEX#@P2%sgSauD5Vf940~BWocqHWw zRZ*(D@4EeE^nw$9lQ|b%(R1e6pK@W3dg>e+7-akCVp6H;0urCS-nIXuW#3LAeq{a8 z65rKcJQQvy^Oh%qf|QCISHM+13sKs*a6{3o4=Xi8i&_oCn%PylNha0i+wu?ibr&tE z!n@?>s3xpUxLQ`IfPzX~MXyC>FdJJcXjxkOje{b63rJnKgK@11fz>uTUzH&){Q~}n zHdiw;sO3FsbluXClw@i0{L{;mH&KJvizvh2RloXAcs_k`d^}{1ug30%Oj(N66=yR~ zN%SK|peGAEjSHR`yXYu8I4rg(j&z~jB#c9P?)o)#i~Ppr`)0c`ghYJ z{nO8KA6{{ef)9W(qAGlzGqw*AQ!+(4T=hFq9WknU>ewuegu&|q_~5`XqFGXtbqQ$} zmQhWx=YS%yt?>Bau4c<;I&Y?p$VO|7(7#ZAp}f!jJ%ACB)rWp2Fb41bxC_au(*$qe z6|g;b!76LARI1&fmmUVT?a?J2;1Rul?XnO9Ki8F{9DPi&serz>v|2vZQlmz}@Fl@MV2Tcd6rvJAFb<1Mtc z3a(F30;7<`ey-rkH5r2X-HnI_#XzhTNN%GF5XI7v8cb}g5Cm&J%((?q*;gHZlq&jt zt`GZiag)>awI=_VC%5`&uuF0^ebkZB^GXdBv)i_2p|@x))4Qh#uIIpeIqq8;dPx zQk|Icq=8wv5XyFvz?7OoOCcR$U};i(Y$u@X&)W5DZc%Ib$#9RtEov=6`Je5P^xv{c z+E)vPM{K*qoAi;5bHRev<=jvjeUziP^=s3IqL7vRh6QBJtFnCDiv~Q%O4Xet*@vTb z{0@XDQn4-CVq4d(MBvG^&1fUY=~A`vVdaLh*?+Kiw|dQR3}&MZ)B3z`EwQ4f;R_Y$ zXc-8mn6o8D=F0u7!M1=rFiW`XvIxg1%N>(UGICki2ntv6bx*xCE{cS!!sZz}uM5fG zb9*g?(qsvugR|4qqk~HyQ_|vsY$`pfTuJ(x`q|ZwWwv-dO3+{0rE&4O#B+&t(6zFq zDzpC%9Z9#r(L3J`P-I_fns|HS*M(^Ig~E{_N~O&5ZA6oylsa9fQ%g^^=qEMQ)_t<& zLRENGrp30-o+4jjo9lb}jO&18>cQDSF9k#^CJBoouaCT53Io=~;@~LA(v_`iB+;Ux zL^rHjZ`t$gFrkI&X^1RC%QAd^&_Rnon?;gz5j7gB4rbstz~{p?L1t(L8j6lf!*2&j zP6tWUL4tlKOi7W54fiTd8BhUkkSzfp#zxf;!JD=DcAh?PoKsU~a=-(R3~TrK-eC9B z&j-6ZgWbyT*tmx__+`BIm%jvT=$|!jwHomyt;Hvyse?Jpq3fAtV%l)chZ#NQfp#TP zHN{6`-ozOYq%F3%=4)Q=w!EPt0a`w5vBBj27d6Xia!7{ck+(Bg_Hlq$#Q7*K*~%8g zCkK~|FWxbT{@1c8mly!QWDUb&^VQMovx_5FR9Q1DSR9XU1*Azpi8cZAT9*^K5QxE? zYjooI_lHq9JXlz9U{O}Z(&^euX>+W;bSEuCM;ybdkAM{$U5KYUGbt>Z#Kld+0n}}F z$v_-DbLnE5j>Hm#!c!coII-CMb#*6tf_SSXkt<vC9y0;8xN|PivZS(hB6LW{LLz9D`#-CBIw-iRp77 zU$L5(e6g}GY@FpR05zlIJ>3<+e187yIZg>z1O3nOLc_X^zpW%?Snx^A3YEa{764oY zW?(~()}4fZNl}}%xXqdhm91q_tzKodLS@|o=t^%k>Qm<1yb#y41pMQRb)Yv8*N`^I zxlaf()VTId+>3$-hGT37<}D3?t~JN4?GAP&TPS2Z7ii5Arz;ReNG@4p{X{figA#W7 zPoF;z;Qi7hL8#jN^Va4!TWz!dY-gwUDSkeG-Y#`i`gmef ztBjV~X=#0zTHSsAyoX+%eNgM=edh5wc3oFYb46_m^k?*n!$yN@puB3@dK3pwUDZAp&oT?e?KbH}d`_tu zu{Q{?U#JIPOJ0o3Ub4HpKJM0}Cj*q1$W8|Z*>fzC4b)yOWQQ~;7BP~r zWQtEici2pg8^eolzLKzX&eQX#t>Pk4>FPRV7tL}pXr`Ds+yZ@_$*+*9ly%bno{jt)5!7J0mIhFr4=SIvrA zM43^nk@Y*!yq-FQ4$k&$StcLbSy}|+_R}0zd$`5sz3YhtUBrAkJdZ%Yu>ixl{IIh-T&aK*QCO57WZ0~ zj|b1zjhrq3{8EV`#!X`GkcQ04TUn`gs=MJZgSNtrFDJBc?RL`(%N%EY0Z4IzWv%a6 z=`}|Wn%1bn%dPpzz5w zxWWWjAl(?v8^O}q@$@)e#9TJ%SHu(jmQz=b7yWtGrpa6)#o8<^mj~zXPR|aHPWFFv z^<2$21s47;iHp@clCS8?%_m#1Vl}FVT_=@AP6)#}m#R5UO+NDe95 zsx>u0qDwlbWip*7r6%S@FVD^|U){wG&{>Xj)ItzOi}I$6ML`6;BICLz>6AB|H} zo*%t>3DmMLApWTQ$RK8z84!Hy@BDChJUl-+J9zc-2g6{L%OCj!wUO z_3|#xdzhcR&CvZ#(7j-ZE|EUPHR2xedC2K-Ip}5&bZ0d%MO9shT<5#(>^ihMAGB+@ zbFNhmkoAeZ!f_rqgb4t&H~PBdG07{U83@$iww(r?s{KTq z5y1_K$tOW0()ZSlE0+`PdoxB>vkbNs`1AmEvFZgggef4937#`&-y$nN8=x? ztCVPdPjJlsrLR=4u%vbW{vbNSxBbfoG74T;#AzP5A?_7_RhL&?(_9%->%6mqza~qi zh&on?u4ASt8lk}i_t-*cc$hvRqpgmkQ*ac;LV!|uMLAm{gt!sgFn{g};WZ#H$ov=iQ48BCHdto^kEh!g3k67D!I=lX9x4*lyv-9&{ zfu+0R<`Lz!NXKxU&}ODFR{@d!w!_OY=dvhm%+000A*Xc7g$VfJXtESjeayhzYTU$T z(`~0f6mc2%TEW)%+oS*_U`fOprUCbiM+y~d9t0CJ&Pg2}fX)dlTm~l$z(C7#w4}&H z;-pNn`G_J07N#E;<1~GIEn`_pS;%l5{X&Z1>6Y^U9cyXu7LdUVt&5$Ok{-Rpzb`B$d@VGsB$3zB$E|vyug}#;4yZPF=9E^CA|u7l zYS{|T-xsia=X*I6!n_Iv|{rmZZV z;^KNy)U{^6Rq1lf#63l0Mb1_exGk`Dw7kCN%AY4(eUighEO{X6e$iFm zd`BybK_cl0ST8`WTLjY{*X(Y43lP!iT~N{4;yP|px})YzpPZs)0Ekcm_or=R{Im6j z=xlc8wgM}zx{gSnD$mrGtqJo*EU0737 zTxA%fCpj0kFINiEkaAl5{MLLz)p`M~*!8-2Jfuw~aZS7IoLl18i_Vq_#;iBEjIcJD z*M{s6i8EK)sI7b2+Pt;**IIercdknR*cGL3RIP0EoB`-z5be7FE?3W97ym^wf#vSg zz;prb${*=+rcF7W%V$N=xA%6XhJ~nrxi){fQ9LhBWi|+#UlWv!>S|nLXa{A#Mx@)oBqI zT+c(dJ;2rChxN7>S!>M#@CC-6N@hj3W>uKcrJ1k%H5Jj7XINtBtl!?;1VzVS;VY!d zXagm%Sk1>bho{5#*Ll2S&548a3{R6t27edJaR4}<-nF7zlY=`Cj^cg#JL#V8BzDR{ zo{L_}?ej(BKyaFcGk}^~g70YQw$i5 zr(RiJh4}g!<=7u!{&;Zs@fC45C^*DdkTe`*7Bu2#*a-oHQAZx`^sM%-7*wP(tS_-G z)@_D;YHeGAKV zeC7((S0JnZE_!+#k*p&X?ez18gW2O(f6}Lep>^`K>^2SBK9ilfPv=ke`hj-bYXFA9 z`y`@K06rx}P(F#o=_Mgp49LEPXBKMv)jIppkypy13$E$n{bPsQ8 zRA|pbB(TcDSH=hIE6+ZeD4>HYKRin8;AryQ{jotE*={thHKceR_pU z^J`FF4(P~w6Zx~U_@vzz(=a`qn)gZw*~e)UDz69@C-Qoc&fUQ{!VbG{HLT29VAWJl zIPA%t6Km5V&SdaR(|pde4d{mmNKwbi*SSi5&TWr+cWMyusZju+w?d0fDR?LPF#<2W zaGQ1_RGq)_*xuPWSE$c+?O2;We=@CH2qU7t_qKdD*GWK{w~_gF*%eMgLH=U@6L_Mh zkH7Rx7a6l{#`Ffidi7-2%Ttf11?2n%AB#C-PR= z7sX7JdD$G;%X4I9*K*SPxVIf0E1*8 zAxoxBe)KlIlJa6&@=U9vH6e*50>0v!E|48$e@Lt%9@l1RE&ns#Dg;L~m zX+mw~%yssnOG!!TYdCO@ zZTRS6J*rr7-#C@7SSX1~-?V);bXFVFbz;Pa@LVbKN;J@zAHlkU{S|ZZJw{i!>k8&h z%?q_}0scwAp%{V2iVZ<<%+l6x$FB+DYy0U^`nYl^bV^DAGU7aU@RnUgvFTu>Q^c!a z%pVM0L|$?XB(IeP?sY(?RLVk1DgFi-{4B~c_)rYmuh)lPp#7!09!QIEPq~Yk~ zw#D~8(~)+eF)@;t4s(F^nJK(izn<@|@|*b{_NjlnD|d^TkRieBt)(+{4#JK$PaUbj zi!iYRJSILAl}VRH@q~Y4(!-u&YBk#^X80Ky*;kay%-p;c=cErNYiNq~+eO4MI$^_0 zj7t6aB+LJ6;kr2OThSmW6nR&kHCp0Z%N$3O7aC!aU8m0}c3#fJa6U}RhD(^0sd51u z`$N6;1ZP$Zp>_avc!FwGl0kiIg~?3sHK8z^PQ4Z=iIIL5aETTYW2b}r&gkOftYId% zRjgKAx>*O6&2rUmy{Ua-DafNMl9->ArLIh zSdB6#h2aQDdOa*gJ|z=)UYw1g_-s_dHeJkbY0Gu_=b-jR9o#a0i03>}404@yOeLPO zmiISDZ=ZC}(g|HP;*;w&OKI?{46;hlvom<#V?X^^J3)umhcS_1==#RT8`3m8q8UZ& zV;%{}E$lpmLqH~4s0r!g${eUW4@bGw9`63Ujd-r7QwKPI*l~9sELkY}@x$jyqvWah z5ih5aJVs2b+_u3SZF^no3o>m%*R#L8E~imX^%8|J4kx?zwRtLU#V{X=z!$hhBkArS z&g^qXtr_ogiJl*a7X!@3f~4_^p7V!w0g3YQyN6B&jA3iYhGsZ4l@NF8jd)ciZdG^1 zw5`l={Vg!s6s&29suefD3gK6=mU)GA`cuWsN=dS_@1XA!Low22_AgMqs>Y8z-Hr^h zts;evc`dcLeiiDljW_j<(*^aP;qQEF59yR$9r>${t#~F zzUX^xD({P=rG6d0FDI>w0o3dAs2-pdJCp8$QI27_~9l0)uo#L0h;;rGkl@1==HuNQUtP(v956KIRIB#6L zTYlJ(O=_Yb>H6mHO8rXHU~#)e$kuoQ{B~ZAT^075jvnMt5;wUrcD1YS{wMBZ;-{3! zui|g_c}OXPIURo>UJ z$~J~IV}=0Dfsn~fZ{?(1{7Wf1M)kt(c`y9_Nw|;=KIzx%<^r1T-NA_+UC}^cgOt8& z`?H=9HniZ%yQ5$~Z4ycMTuJxK<>2!jHzJAOgA%dM^BdcGM(HlJj%Id$9-&Q{*dG>b-KTrT%&oNP(YX>{6S)Z30?VLm;G1AA`D zb_QX+00fy6_0-eC-^OXDg-3;tGVI9ghswTqdv-)tuV{v|nt#9zP;7etl5n90;M&SZGH@FjxQw&y2Dpsl2()1cmdztz2w^kIWE{fr;pr8a|d^=e4diVLFFtC>m<4-$V9OIoFt(5a>Ye|_mx3{#Q~X0)Id zpuwGJGe4e?t~1tZ9U|+}6AK3i_i5+<1V)KDVmdaszSOo7lBYx9AQ>*l3y36^0g9DlqTQKT$-BsP2;mxde{F><)thcyp zj#%y2`} zN+kG0C=a>N&(#DJj zP`?spWlXyvkw;8MKZ-0RdF_jGg|uPls53gzgO;N!yqFjG=(4bSaRhU?ax1qi#)~x- zkxLnTpQtB*W-B@bqdauFMUd9_!1Q5o!REwe{*J-Zt6h|I34@a*$}Z0~L%@|kM@tnw zjkl>@H6mzXwIptOd2_O_;;1;E)$ZHcd_t0kH*ML?OM-{@{M7vPQtR!lNJONeoN+sJ z-y-4`UPwl3uAAiuM=5_eH4Y5(Cq11=NQ5(GBAIgmrAx07UlX&n^dlK<2 zXE*9+%5$2(SjOH=;Cz3-fQ{oWJDCpuX*-kjt_DQkhZ~oM^lFAmS_e2|bwUb%gZobA z*N9n6n6{$|xcq7_15&`EMJ*yNX}=Z^nRF(Qx2PLaD7`go$nbS!ct8K0shZOC+v=FZ zUN6;k+Eulkj08%3kSLMbBXMpiId;uEFeiuG`qdkT|RM2M7*0 zFn^^5()Yh_3gbs%p}nHG`D~+`X#~#TVdcigXONH{&l1K&xS|Su*s-DC7`+si5j=^7 z&_z-VI|LA9BB0^974kURzKD74=W3U$7O2U#2g^L|qz?DhlkgLvh#=6&I#Je59U>lv zbsYS90Wg>kp(_TIXrA9P-!8Qa%!{?(-w2ke@ zO~FJ6_Zo4|p3CmEzfxf4+YA29Yz_g)F%B@*$iTZN`+H$WF8%vVamijk#wekyCmxH~J-Ep3Km-{={`%{~l zTzw&h<2L>wuV&_YY%@=qNzoYzGpIZou=*2Xt-SNCx79iTEjJaX@I-GZg1>!w$#Izc z1Q@()F2vXEP3qrA0={YawOx5Up6Sk$QbFM7olxv@D)mbyNDMR3X#>NdJ%~-QiurLq zGbk9B@3_*qR%_#k>Gv-gQJ0upXLaa%MKW(#k-X6yOh5Z7!dIGcmXT7NU3e5QM1|^z zY^a!zn+QIUjF-Hp>X*9VJJ9iiIN^RNeufmbMFe<5ub-q!@7DoF^u90Y&1urv-c`$)=A*h zBV2*AoRaZfD^?f##V;F*4?exCLoeUk7&=gbI`;1;MDKdXN5ct9+PraDJ+>Z?zYBPM z#&V)0*m$6i|no}vqUb7jI4rMCRc4lpRo84NT;|?st`Y_zHSAG z%g6BK_2Vob zL9T|CyLDgk=4~Te2hPw1#iw&Ny8Ul((z?QE4pmgaa>fpz3ygb1& zGLtWZ=S=QyV7CbSgrjdOQgXow&+=B(>u(LwV#bxKq{VDP3+WER0u{cstdVR8smShY z;pRxJ6x{hug_g}&AUmyi^^nBz#v;+Uam1T6XLc5Y$z)+HCIl`vFVeyB5$hOt9U|R% z#dJ7{2Ch@qr5UHDNf6>VqiVL zuXk9d;?kXK@aSgvPfW}J|}Pqw5YmF)Sb>xnQz&k5vq^0PN4 zmo!ERqtbB{m&J!NEp17&;fmLprnt$kP(DcLiT;31h#+N#-vW0vq0Z2ba8=)1eC`iV z%Nj>>P>ftP`9&>YP&z;oCl!E5BlxX}Y4 z!jxqiNf}p%PvLsU;OOF_w5Z{r2wb(*k?Rpaq{z(3JXn}X%JMb`Z|i=u@sXG%12+ZT z#xB6nn)Le7pX-_8?Okrqm(#uKJ=kf|5mM`ItuLXcUKp=IiM3nSxgeEQp^^HndSMJa zTw?_aXZZ0H)|*KA>FGU%Af`c({9fQz$6Jo5KH6#tl}0P^3wHL78fP>T($BI-f%w>U zMEfefp~3VU{ZZ!pkLT>+F1lI8lzJ9{6DBbCy-KkyTuDV7fr2KdXMWf>V`jftZlr@P zO^cH^@Cil-td$hn>CCbf7U>gkG3q$UunjMqyW)pLNQ|lM>LBJ>xLR;S1y#a-Q*}Z#R?Ow>ZewKYp>q3;$iPzjgw?NcL_iHw_`}<(6^###di-& z8f!}e5AFb>DguyV%i;FMViJ=0^6x3DLGDdPT*{d-Twl2mNDMwh&@mltw%(IlEU|Ta zy0Bp=mLg!DQs@~<$G$Az^msg`2PaTD$Macz=cauC@SRi#k8sLDMi+gH-t?u7zn^ie z@_o3$#(gu^tQ;uyNy|9AU7k-moR?;pz4Wug+x|Cs^@>esOk+(;d%P6G^FWT>hn?ah z{NYK8Ii?&w1)-|qgG72iptY(;ivqY^0Wl|#!H=e0t4+3J$;9m7%Bt}9)30W3*C=O- z-Wp8%ni!e+IuES566^_i=Ie4s+j43AGO0n+tA`b8RWo{C3b$vrod`J~YNL#rW$sgU zkSasI{XFxeCYYy~QJO0DtK<+(&Par*L!B08=Qkif&W|BTxir{ok>8ZxE?o9E$04GZ zq!VW+mjz=BQXQuKI#EC`dq_2gMj~^fn$Kanbx>b?R|GjwR4|OE|Kwtt(W=%0tYK)mT1Ww z>gGH{hNKcCflb)wasmsK{K}!pNL1xFR=*4Qi`8p0<0A5ZlzYhQzKuS-8M{XNaP)MR z?L{Y<2kSH#)sr{;yq%EOvwwemv)GsZEMI3%CXoLFxG1vQyVoOen)W>t3d#y zR6{M2DI8dBJt@_Ct*@+Z-N?i4G zd_??1D5X=rCP3Wwu7FY7Cr_1RI??A%v!w@h0HLYF%HGX7SFHX-DNl+}FV;<3Qp3=< zZo-nE=drW;^Fj}D%Sd0Mz!zM(3}W~Fwgd=zoxv88bS36CDk*RR?{BbDfVEmGSo=h6 zUBo*0dX8AyR{0Lzx;bKeH@@GI*1!1<6obYZ`Mz1SYw!zhI-cb&1nn-j_t&Gbj~g z9iO0WAMJ9z;C9>}4komH9T!}nHAAUybpQmsBg)kLSEoT$8AkLUMj1nSzA33U}SxGNCVdx|&C>qrDd0oHvYcK9`i{P)irG>^ zNleE~RE3@5?KToXkWm#Tcc@XCf6HSZBTeWk>&uSF^7Qy^`~9>@=l1I$$jMQ;g;d|C zz+G0vCkoHis>~kEQ~Jh^ZT;`S2o71}$@={oJQnGXPVY)a*k~B%$6Xfqh&GL4)Yj-TQ-vGytoiD(GNK49#zLdlhZv4f@(#N&S z=Yh_fdZm|0Y5<=K`vZ~(BFVUnT>eNZ5tI0{lG)lsx)q=|nzbsJ|cEBP!JV zVUa_7*xF z1|M=IKhk+I1!Am~t+|jq8RIv7{3*i?cFe&i(r9evnxjV@tefj}I zDOxnT1lASx0mJVaI2cSv9leF!$3Sk02nh;q53~SL&eaQu3o(Q1;7_IHdam zUz%w#)U}Wp9;+#IrtKX_Kepc7yqE2x(Kue11a&N#e)cNZpm$()94(Z~s&`f*_{W<{ zXPNu>w~3)&r6+lMttHCXLBLbMR}7o*>E45BlyAj3^5G+tuYyD1djag__t8FG)S^Sy zh1kp?iE;5mdM-M63B0tyX~19lI=ZM*8}!BOQd9u%5B5B|`clg>1{_>M1zot83|1ks zc@fn6x4A6A;jGQAnNLoYUaR86gFT!T?WLtSzV?c3@v)`BU+m5hPC5j#wZ17tA0wmA zoYs6Xvmill`@LgC{OE*@**zHu7r8uTUyysSYH6!&B2pu`!8Y{ioq^JcU;C*_xq7GDNeCK z0vsxjVxu#O_SL7wfn9+X!vdxj7k91Aklu3`G~{QBpUqlz28^x4GSk zn4dXTcdsUJsb7dLWbW@r1jp02)R4QZn|H(#VL6DtIffpWQFygC{zClL!G%%P#{Y+4 z_+Ep3$=E%g{I|e&s_h$X#>=^QRbOBl_XR_O5TY_O(@YLBMQyk)X6i1qmhKZ3kI`Lk zb4P17Z!>Lj7JJEfKZg{vic0?$rM}9_8zpyj`~JD({o{bBlrrMXg0)xSD1GBdEJ@B8 ziJeeMos)###_LrY=(`>~RUeM8l*``P1$0#C(NK4U1!m+SZkdh{6E$4XBuyPs(uax( zQqS2mzT-2ty~$-KwaUHSH_qej*``dJ#6Tad$UzJ3*y_vIT!qnsZvf)d!(qX4vN58Z z68=JXezu`Q`!tw)h_O zw)c~5WrPsleq+V@#CnTz3wC?);gPEmFUHtdyKvG(#B1&xiBe~QN=MD9SuB;0v=LgD zJaPn)lA7B{`Ii=N-t_K6)D+zi)Y>_r8!wAB?JfL}dng7$*T|?EOp1|)VuPTY!J-)v4}vVsGodmoN`%{=$jA6j=2IUmvzSCp5@hqX5Ktg%7b~oRXY% zAN>JVu%hWLpD-`_cqEeOOG~|B^(FAN@$;&lG#|w&pH=8s~O&24J>>Ow&ay5 zQQ1D-$k%4lgkWh^I3qk3PX=?x2{BCfkHRTKkYetb*5HvlxeI43v1= z6-MY+x71kO)IXvd&-l2)C1GAex$crtr*(AKIDe&SnSL5PW<2R~h>F$t>_?N2N4-hE;8Gtr*y=8RMoqfpygA}I{@B;o z_7mfaS~KcdOlB_AC25^2;31=o$u#ZJ)Y{;-6i7<+oqAvfD+xZdu2e@1$ITaO*Tl_L zNP?q(=$31uYjtY*LOy^=#^6hJQcw+1m8EJ{*{M47d0OE+lvb<$-j6?R84SrcC$`+T z=!@4ZaY@k-+5=zLOFt{3nQC_lhUIr>X; z@`p`ad><);ry~jrQp<{IkRnhFnMx3Q&DM0BnGp2N;F=;NdO&*p8o|l0W^POht!5%g zcVphsrw@h2v@Z=-X)@B#K)?g~9!-e0F-I%Y)>>l-LAdt_zeqj7SIgFVo)@k1Y8E}! zDr%CQ?29(Kb{Tr?TydxPFyWt6l?>3!{6%GC*7%`J6eRje6^nNHCMLK}OAQI$K2l0r z0%472IerW*0u1Eb%Gvm|ia9w}q*Dal9ITVpGn`I?W6ew>lp&*tg2tl+VIMCuL<9( z>PHX@jH#S`{^$=cC!b&3-S@-8xMH+=o9BDaFEmQ(R|T+0kTJs!(I`|F%F#HOR*=Gs z?fa68nf?oK+#3lSEVafrxj0-?C(JTy$-JRA-s^F~9ej@uTULCLYovzZ<-YVl zM}L?hB?S4iT3K99Dz*tT1VrKp=h6XX?oX$|qfey6y*{#*+;{ae+3#R-etrIx^ecn;%~hVG6Rk?*Gm@ zr1k4|Z@>FxNecJ+Aw`Y$nd4}$D4sku)p}SI5ghjDeEd-_QDL%jAum0+of-a) z&!goMBPBmLXQ&eyc5TmJ*PY7K9R_rjcZ zkUP)Q?PDU!;Z>8D)%S^cj@|cQ2ST7H`BX+0wtD4qlTRi8cevUn310*jQ{K$hL)m&( zhoXC3M~ZMH6t_3)x0kJ|u6c|qW)oSrU3-IXn`H`r_AD8)Cn^%sthrJ>gGu?x2v%GO zvF9f@FPsFfaU7HM`@0`}A(MJu74#HfrZ1xCH7N`_Bkyc?f;C|C)06C@vtLb<^Y8@k z$;gCE4ql{h4~qfZ2*Y&sP#H8lmC641LnxxFFo6V+!bDA0h2=`HN?E8x- zsFHhQh%;3aGw?q5Yhq2M%qA?x}0 zfk4*AJILiz=5eFKXZR~p{F})|d#TGGIBMSQ8NB5!J&rc~B%cs{H z&s`m7kHJjG9HP@fOD{rAT~{1bF(Cr!8lnd8>Im=C9?Dt{<9XIgOKhciRb$1yrDdNwZZwZ6BuPbKGl+_fLQQ89%|?)&rG=SWxo88} zcQ6%NXrGH6&GJ(U@~7OMVhmPHml~m$e*bb=`_L-TBDh{|?9z|vb-mkG7-PGnYxMn; z!aw`2m8(7qNwg`tN$-*}uR$SdNoCE7tKLhuQ=;BP47H-a8BK!z4!@N-qedHq^Iq7) zd9)nzvrFX>_GA8DqC4kSaA0Q2MYI{NuJlfkFyrp=Uu)GuM#k)xc+8g&lAR!ctcgHV?mW35D9j>Vl-Mz^mgq8v#bVGQ$y;H4w zPxNN$+iR95zc)XgkZpHg@$1@p3`?S~idS=PwHmM(9Gk#oRh;WK;;W#!HDS$BvBzlk zl&`>6GFdIv8No#PWmqG0_+rsIl#|Yc#)s(zWu;nKq%>%(Jx$I6X0wgY7@YYIMcCvJ zhG7GxmA$?`4Kli08Nm$O(;%S%e^KtnlYvj~8Dwb^V8kf}*a>^)rk>3jD%P#LgN8Tj zLOy(#rpPDkRo6!#_&`pzJHYC`a!g;X>nI}VF0^8rs>XfE=8<2l9x~0U-@VY4T~2k{ z$@kQzh~+R$NF3>)dodH6-8rT5o26db>G|2}>vCRQKJBOQE1RG?l|o|1FpT~AMY?xi z8cp61WF^Iq6)q~9euV@QIcA79`+Zqh2O&HkDAs*Sg|Fz!97uD_<-t1$2O*m@J5DL9 z-P7zmYNt&q?CFAM@Ex|V-q!Ud66fnlJrc^GVGi*BAOe1W?D6N;5+6qtXvJKEW4AVe zdCNiQgAh+bvVaACONEOn$IiEKBgARdbcLYLdpyg=7N%S`E_PoizG!8Pk6A=pXw-7E zpXD_!M(}+YJ`A;#Q1X@v%ZHjBGiTN`FZdjnFbrP}=wgyh@#VBqdUe z21NTbwl2i9^Dl`CH51LTc%%QuLPozeA&6q`Gw8XAI_hH-k%fq4V})(Quv>?Ej`{P{ zo|e{RhJ*jxZpR&Imk^<?Iy3vdRs;f_2e*1aw>v-pKFMWDjn$<-f{M6Fxo0Y* z`|-2)JK{`Z4TJoTgqlAT?J&$7xg1oV_opV%ZVZv(1JuR~l;F|_`_o&Azrh6cj%44H z@|pTpZWjXZroW;%34>^PL|X(CE~C!-g``5ugpu7yJrjNHao4eph;5Skb1ev zACk&6mmy21y9)fapn)DUYl=sDbvkuyFagqbo@n8qrTK&eo^Y3_WO?c481<|zJkb&D zihFUcC*}e&*XN^t zQnXK3?y*GT@9g~yB zr@Af6;ize8^2~$ePF%fp%Ddm=;W@;29SIK%t{=xX$4qmyz9^i~xV(oolPUQ?8XTk4 z`ko;m%@~g(z)qO=d%wz1TKWm223Kx3!isorihn=2mPmjyFR*;NSv9vjjdRjGZzz$#x@{CYUkTH8#vYIx^ zxM9%AODqMkDv-3GZ8gE#uuF&@HzeeO8)+0&bZv$enJ<8Av}D@pQRv6Tqkg+-pwBFs zL*sK|;+l1a?kf81Rmr)q3TxS=;@>scTno|ks94-PnB2XyBwT+#P?!uo#_tYO1aFAF zb_`*+^VLRm0rE(NuG-ph>w-6)U1cB2&-Dhm6H~P#eJ3P!$uJt{xT2BuHw-DCR}=GM za76s$g^DX_h(DGc6T~$RL-dMg#flY`b>gj||A2s3`-ZpMyDQa5`uM>DIi^lem>G?z z>~jk~LDw*Di4F`V1mH#NKPjut#ET`!TJ3=^xb!g=oaqH8oYlnY9x=#A{<-NI>+{bOXhQ>y`xrK1H&N#45nkIP<4KkKEvvK-|t8 z>>GV|W{f=PHv(++D9uE->XMK=MZ%=;7rxtg!|gGWOkJakUk!*oqNk?^j`a%n@D;^{ z8JsN`16IhrUY#DCJcc+UTGXh)W?!|G;+ab$Y6kBuvw{`FCkdo z2_ta?(L|iXoLjPdcptMHzJI6E^5fZZ38HfjhW@xGi*lf-d++?Yv~~i4r-aSsx{arB zAj6R1qfnndX(4We>1OH>RmbOG;|Uks@qv;qs&}t)r+IYN>=6g>n0~+K*eJO*EJ>Jw zD-18ud62?M8fF;)GnY=Q?f~#6yG`Ooyb^)inB63;PoxVJdxJL`@Zl;FZi=;3f}sW# z@F~0t?mT7-&Sp<~^<%ubjYN?@k=S*Z-w=4_84)~a(FI})aATx+dugf3j-hya-@yg1 z4krMWZ3JoWU_r=5rSaq=q&OuY5F7YSlq13!_T{_Z^;pD05t~HU4M@BlFk*cU{WZ?YI=-PS&A$WJ1iW>@2$`Y~g43Jh1?QzS&T z*F)i#2hzv6B;`V-`tZ9jlNCx&S4ybpQ+qfjWEe5E7qNTq+M0hLtlX_pdOt40H?s)& zA-(hGYFAtex~f3<3uO}&o zDz78he%LWcQ~K!!{w#Sd7ju2gGBKv7mT$J0cMj0m z7>3Dv8^bME zA3)3q`ta)7x`C+QK-GL7nkcM^8k1fa= zN9s#OmST?$zDqd_6%3)63<6+*SVEs_CZH_UnIb$5l>t((Rt5PS!$OFAYbj5)jzaBv zDcAb(P3z;SWXP#x*DrzDZ*r!5=azE9!gybSGptE8y-VhrLIxhNLRHvN4mi@ww=@lW zdpOjyQF8LjsDTtFlA%8^V=!6J2~JVmtlA$cKVrs+aC$f;#4_=aGglZtQI1sv6i?V> zW;wEqL0?JJGVYcoo9!09#5RK0TvMKn;~3Z!K#`){oNLv$S%d4X74O=D7Azh^*<;tV zkHIkTAPkl!EN|@l%x1cqlP47B@OI4`M%Uy$_=~FfHyL^E&HP*Ztp>KCyXzR8bHap4 zL?NjVMYg)z62L|5t$Zvop$G-T!WT7O)4C*qdcADrQ8+I9nK-wbF!^2NaNyq z7$vW7TQl@Iz!@ujI4T(jZ@Yuh5K1$ZOkGJ2Mtdaq8WKNVBb|&&eiJ_W=hbYom1;wyU|uF`ARRUY;t3)sVL!;Qhk~xuPjtD!7agY#mDA%Q_bBl0+Z|1Qr=bFi2Kl{Ya+FFfe zThVs7pud+fXZk^{=JDcKMgKjyk)%%mP;zCzY>12wk-Icrj0JB?bnf85mI*BnUIk~hi9eMwPXZ4miu*I;Th1xn9+-=`CY znd9||p%PKTUBz<+8RVCRmRJ0(A(MRk>wBYN&O1hI9bY)BdY68-9vOEjCIbSJi()tD z>J`fQ1fEatw~ntzCl5f^t1o>QFWR(ebdmG`I*FYVVjYXv#>sFDW5(8NrOo8U%7^IT zSJxW{o|gEpOeziFzZZti!z2>>UfxLHQTk$eGcOJk^Y0kVDiCvT{O~#?g^y~?Z8n*gof?k9KWiBiD!BH-@0Q6^UrJK^Oy<`UhoPpoa+`aa)e;~1g{_{U z!RS8TYVshJe3~7xBcO9&hkxBe8P>*1UB{h(&9=}XaNF6C@Y&wjhqAtGE?=3MQVx+pTGWjbVU*uA% zq&P}_>v9}KM8;|?GGj{`lYy~e23=X45L4%*04?WWmfL|eUFdr|Kz^@`;pj_6YDpp` zh2nx;dPCKcE{9Z2gqVbWD1Hhy7y61V#!byu0Hy|ZB)A6wN?OQ_e+7R{k=SBT|(1?;>VPO<*563O~A| z)1Uehk4vdt@9^r&Da`fvcP&E?Hb~z;KH2@XEZNIP6K*aoO~oMZX3anna**j9i39YKMdGlR6z zDN_vo=5J}P_!hp2Z${7i`%o#l(zd_#o<;jnm7IRUly}=!YKv)Jrv(ONJ)z3kogF9m z$|w6~x$(Ca9hyAf?r)XkMbvDnM{}@8XeBH;BtUQ7gI;rM4xejI>i$aAk4_Ml!((fw z_G!YdYhoTfM)A$J(8&RYL~qO9aNG6@69z)kV;-cY8nnt4CAz}ieTXb-c(daFq`J_> z;31pOjQZ;}syCBd)`Q34;X`O23ORoYMHyljP(qtZiS?BBlRO*8nE}&W_qQV-R6L3; zM;G+|sQ1(EKEw0)#-b_!yCS;fUVDbo2+O#!578e$mYPqmL(s?x%i5@qvY0?*)Lva1xr?ctkWOoGP)TvN0`$?_q(ll-AUuY2g~&N9MU^*g!1-1_m|rvZ zVg59>b**58(>LAb#x^F@G$(ELT$bcs%qbrQ!xV=VC*<~ES5GM=bqC*SjEzAx{&umP z*6FY`ijTj}H#{A16q8hH?BPy7YDifpfBx;>laH2=kQw5%eq}CE}hC8E|``6Tl9J21L@w=3FGc-B6Ir)1vS@ z@;pCPn2u|3pMMH-)Mk_wcMlv%I^mRv7(p39zNjhVA6W*Y(AvDA`P`%&;3w7B2CP&9 z&8fvLqgYFlZAO}6kWQv@2cjmTRKzv+Y)IhBs@ck+3f2rmPlykS@2fj}&&o~YzR7P6 zz0$d{ttZ0;05xL zZUeJ8M!0S>i+do3yJWH;fUzp7qE<4Q$Tod8K`0?*ns`KnrjCMQ8C*&Y6>0aU6D8?;FK5 z5*kIf1%8Ns%CdXdghXgN+8rFJ6psk|BaR!JnRQ&_0oP z+sm)zDAP*bksVBq*t%C>`l$WDKd+yN%=wfZ9B!@`DXx){33LwIg2y=)U)fD6550$N zSxT^SN#d6sg#JWyeYJa0(}{VLt0fpyHAr5T zEaOcj?CTh-x^o<%_hI=~VZwao=)rg<>)(2qsA< zzY~4(Z0b7&90TDFZ}*_WLqvMeN$p$Sus~OreQdtF(O&=o33(10(3IEPDL1Y~n;pK) z-TMgrX;$gmU5Ao3HOW*0SK+<&gQ8fTjrzg6*xkfyB@a&G{9FZQtyW(qVJD@^pBS>Q zVXf(Z@$(jDlo;TUTuFWHP9;v?xulCNSb8z;6aj~}pLd>i{<^WS?pcx1Nga8~JzyNA<6c~FD81fGv z46t{A0KhJejt zIlvicZwUf`9YJQ+7S?7!h_wT>l?Al%zg0skJ3uSD*#AePnH3P)!9SJgsLkmARsU~E z|J504bLKzV{?YhH$p4?lf2{bA8f*Liy`%pbAUkU?*xKF_Kx;?~W9H&)D*)}9IXyt% z($>M$6k1>ipa!GBP=jHp*%-`WtnL2{4|JgZWt_FWE6~>3{NLjS@o)tFB>?3=bM+?$ z6>JQ$umG7stX)AcRuG7zv6+MUzf<=1&=MGkwH?S9;s62K{++Z3+JS5x9Bf=1|IV8^ z{8v3kXAlHBa$pOP^WUXl2+$ewZx-146Uf*K1T=>h|CM$IIk`Z6;qQ#OgPXmr1JL~M zoQvb%X-5#q-1t95e`Wtw22~9K*+Y!~*au_pVh8R0Uwr}pt=k!7ZteWXgg-_9WWX>M zP&1*eoIQ-8er5GPN92FzD)l5`FrchoWr6DMxIElgFLkR(z#)c9vlq8^Z?;r*v0Ocz} z)BaG>fs!;d|G#}CHPsZ1WtA1BVgC9OS5c7?*AR!H)>M~PQ&CfXFQ*_)Z6NOGX#3An zl>$P5|1F3LBKO}}dxyV092#2wvw9t!9Uu;74z@5BKx1?nwf#XV1PNu-Wp{7H|w9-QV~~I z|L>~*@c)e0|Hg;b*ZSZ192~q*HrUa@9t;BfZS>!Y%z%IFw6L~xaRveY_yoiX1o+D& zXh`~#{+GnRoBns3|HsI`s{dQbpRfV221CQ@Uw-$mmj4Va7z6=8qZZKF17PM)&0MP7Df1qvw-4*`bSvTO{dycaF-|Bz>Cl?0@2w>)5X9u*0ZXzIvi?cmc@?YT; zMpi>Zi* zG;;sp{jnD+;m=n5$6%-ysKfug>p~|+TwPL5?yq?P&}rzZNdKSq&IU-btGe$;vxI^P z!lZx{R#f<{q(QUm>F(JtX*JSnr?;nPceFhpn(oo;N?Nsgx_f3?+tb~2_h@E>Y%7jz zD^(cFAV8Q8+XP%PApyIT7+g3Z33e%jN{A7G5JCwTDR3+Tl_Yx_7hXrs;gXAo+ZbrWnEZW6{5oH#e$L zyleEmpd(AxbrY$Sn>x9vG|QExp?nC_v?4B~Q!Ta2>wQgOuVO!8O~WtX)NAlHOzAM4 zR-2oorO6@Q>SlwT6%NENt`|(FbAYjKJDx@JEUh?(Xk{lV!Nv5Z5OuBBSD4xqMkSO# zh~ly|kc2%_iS}TFEMvXQNzU1mNM~?J`=gb)${ac5P#G zBPwmsMyM+z7nm$Mg4zX2)of{lWwumTvctP>wccQo`EVUFHt=>-uCnHhL#xL9*Ssix zM#Kw{5n0#Djzakz+t3+f;@ToO;3hzOr^PC%Hr8s5s?BLP3=C&H!)>Ar#G{WY)z#8w zJ?<9r(2WB+RD)(-k|Ok8hhEYOh1G2ohX&buC8}HN^t>YiaXeeCaZH;9N-IlsUDi7~ zJ2pF22~&Nm)?K$r?ncO}((5gWr!r~!#=xT0TI*Ehl8p3SCT)EljVjM`61r%cP`kFa z-tC+`AWIGE++1tGpH(6wcp1lAC9(}D9!-%M&s6H-h;-ka^^-#BZ=~E@RNXGatU+ZK z9a~3UN^i9MI#irlYFo7A=|%4+VS}?lySnA)C38=^$~w5yrH3GNE|u-7^(F%yHqU|u zO>6mctleo_fG#lY8hA&oS+^A>E_e!R%v!0}l?h-KK~imn#x-}*X8ge;UXVWdl4q;p z{bgp#zp+Y$5v^|5I^B+cGY4C+2_0d)+KgTU64%l7=3Av}nFX=23188!u91)@Wt`?0 z3dPL)+#SVux%*Yrf&FpZo!fy#R(B?)1s(togYUg%Qr?F9IQSs=DENm!!#|DtS@1OY z8u%9Y&*1yu&ZlCqc4I@|#~ zN(dx_onBb~5iE|3H5ZZedR0Uc@eb14tNNhVjWyma%H{2`htY4!7g=Vj`hrH>#+Iy z!*r$MUv#&c?Ta+O6RlK@=CMc18D)<*AtrDede)GP_OET{?ada)`=p#=2R4>XJ&q1p zSlmZ}(1d`F%)>B17mUzQnR2@Z&2M*H=3BG~JASJ-s9Jp<7MMRhQzOp$L)pZ-T3Ybosai%twJw$+I1dFf1}1Q4Ze(v*z;{j z8c2-aG(xa7^?vB2b^2V@4UY0Z4551%7!}7hDH-bHGz6NjNB$7ZKr^J!ua!-N1iIrR z#*to=LtQ)*0p0Jt(+XV@9#59eIwNYeD>R#M7mXcgA4OEz3!t0utrb0<^jC=YP*8ZY zX0vtjq|9+TgS~FT$FMiqv~#Vc-0DWFyQ4#9dtAM?0S6QK-?%&_#~qsk%KVq8`bO0; z8w@5=3+C=3ax9Joj>@ug^xCsrYv{C!SwKJ8Y(JOXFSRRryhSB`A2x!4X^?bn(J;rz zSkvOiu?V?ER9Y+58h+0v7aem~OUiL;7H++-(VU$dqn zp+i`7?e+l~KXmxW(PKBJdHsmxS%`t+HZ+s@`@=jIn~U(6Sl?pQu|{?7jM`EGwN zeQBi(!?m_vyYFIsqtR@=x!vh*-oLfI^MH&tYV`yDuZ--@V%Kv*ep({A)?^+@6@19& ze`zwtGu}V?$fPJ?wxh0ZYBY8_CKNE@EOS&>x1vOCbbEj04 za>j|;lmV4)Q>4?}Y{P8{Lb)}zCAn(^d93~$>0D50;)y!s?;{1uqpK=?`y63$NO5lmTGRmZ#jV}L z(?qTYegeD>{FHY`a1VlG;AYTwR!TJy>~<55lhhpl#|Pj$!2Vxne+8#N6Fdt3IpII| zoA5{Yul$Wkc{BI`_{ZQ{!cTyNv{%GU=ic;|#0&hCim8|~Q9w*N0jCF_p)!w@G8ze8 zm^Vi&%DQrxJTcO_a#;A6NSH4qh58`a;C#|-OqfK+r_)7#;u^VzBq8eVQa1RXD^$iV zDZv#G5)I^!w4Lo+4~;k5p6d!3>0BebpLdtaJh*b${#Yxtj6{MU=OOHcf47wyGF@Ha zWYLy%tBt!Ow{12+UDBItoEus)&$^mx-p^KFz9h5BH)muDoB=to01Dt7xEtIHDqtPd z!7LnJVY4dB>??)!O_^@jBwy-Eo-#kq`zOICz^A~c!DqlzfOHkAM$(SDBuAlPA?urM z^N^E1li6n5JUYBPTH$Yz{yX5mfh*d`mBC*FSAo;B1z9R&WI0=qQ%E?L(*;T6rl$&m zv_-PG8Qcu+Ebc7s0`3CtdEE23XK>HpW;Crn%oSv2Dz_{dGMzOntA{rk{e$mLnI>qO zhb-@xwZvsDGLtFDZ5pZ}Sq(XjXYNjgc?covY&;H=v_XGU-aX^p9PVeHfByLe+*^2G z!2K@nIov04@5UWNpnk6pui&opyzay6xF6!V<-@zU&+xqM!ym-GdPw9UAO0}zIi4T! z;cxZNk9zl=xR3Gvaoo@2z8_cX_nY4Ruy;R#`v~D5^X`-0{iJ{Y2mbk=c=r!+@BUxU zKmS?W2=`xk_Y1h+_@B=||0UcfaKDOM$Njp0{tvk0JpZY8{}b+W-+%u3|KgtucS_;T z6FNIy?8pB=`>u52&Qjt5==u2J%0&D}Q;r-OKYZk_du~2);l#+%n{K)Z@0G(B#MB^_ z=7v(^&c#}*1@~1(!&5_?p~8qDKCd*pNFN%?xoKP_`@?%CP`y}}ZNv0`1F=2NBM6id zY!g!5ZXr@bjn!A3PL-2P6@^G)aVaa)>0CZ5DS;bfzbLa(;d%MXw&m+M(m8Pr#7W7b zFN=zesq$;xJgyAWJJJV#^OKwz!QTbXftUaOr2GwVJ!mu=RVDBcnrC={CB5ZLILN+D%P(mE+C1j+>k?VZEYoy zl3BDQQs`8py48WllD~`DmG-$kQ90rVtltIF(y8+CiUd7D~_I$niY3! zM8?+YYHuc^(HRao9TX{O8<~U`tDJAU>&(AP>$O#a9a1U09>J8iNVTwlK$-xT;-rDP z4y^>ONgXwr4z_0G&NC6mR*q^)0K$1SdEg~il?hO3mQ5y3#=dVe0~^w^G&m z*_v{tvi{dMlYI!BF?EB4ndUI2Lq1zy!DL@lo125Ldvmilcf#DKS{@e2YrPTkyN8&Nn|Ff0))sQ0Ar{I^VgF<%^9gA!@mhUW;)Qq@m;VxGBi2=m+P zqWtX95vidr?s9T>TG}#eqJc-XP+(DznkPhL}{y3M2%vbnizAsJ5bQ!^PJRO69+G0y8R{ri!_ z$9y-Nhn{XUi#8%MH($h@>}|tsq@mL$R-GJ)^AF5+g)XGX{PMzyGfXH*PD~fTJsUq^W8Oa@W@Sf zjVEp@C05gk>51e8tlT`WNWWo%){zBWh+bc7a!?iNP=Wd;JeD_TSw*Mj%sb$d;8}EW z7hyEpW#b;lSiZ{cc~vOfS&5x@2OV$6%!rCBJH<)~GnM+}dTDz*iIUQ@Z%R2w)VQU( z(NXfmW?4bhw0{_uDd93T9oQfmWNt1UHZyqo>@BeS6a*03j4xQORlPL7I{b4*PTLpY=v*3whi7_6*&>C zIb^tMJanuc?AO(+4n>voaN65&u*&tPM0>u5C<CXyi!6J)4igH#t@gZF_fp;)N8zbJ%UFQK9ywrK!6#%+ESqS@s7FXPOzbsdhT( zNy_9R6;7a#$2M_6DL+TD!0%1Cem#^NcbmfCnAu4|Q={S~HI32&t0B#yz0+76;_g`r z?Fgz7lp;EX2J>G>v!_xdZ`l;9%_lU7!(Kb~bSAU}Yi7``Pl)ZWHMAD~q$PIH+D@3G z%o;pbN468OcV(x`u{mV4sAjJd1Lv_^2|K7+RQId!&l9q|yqrk)xP2nKF74y)3CnqX z_=L=?HJWW*zB+R$+-%7bDiC&4nu(;QZXCF)HUpIuXs>vp$WavLlFnGGc9Ic%ifS;( z2DY0`*0Kx=h`@{ojh!yAYNNTiwm$qKF`KOA5YuzcL2|8Yq<4IS7O*%rlw^4-Sl02{ zQPVTp;Wa7V`hk(w!69d7_z>xikPHWFl$#i@q91BhI?=sh*sdRo?)4*gz41%;>cCwe zW`CR)d{R$0sODLw=5q8b8#f@0YX$MnQZoqGmItI)FMmWq6o&pY|1lw<44!p1t&>1=XvV|HQrLKPh6 z$UL<3A(;nbS7!)PjTWaf(cv2o-H>I$L0(BlHw} zf_PjRkB+@&Ct%Y1{_lx2bpNWb*7WFrl1}>ytO6<+V4aWeqgI zCg}f-9Il&$I{cLp?AZ}ojT62uBRBFOBgdeN$cOoR5w01@#CT=aJ>$6N(>zz~PeFYP zTE>Z+({cg)40u2I8n_<(0XTRtTGYMBh^61L-SW3>D`?t`48ssbBO_5kFF-{6@W*07 z{O33bSE4A*UI?=v<@I_3v2<`Wc5uBX<4kmh_0UrrfU zR~#Hm;3>Vys9Xu-#xPRb-L8gtov-t_@pxcLU9-}62L!oWRNT!}XiN0UVFdPNEHSHM z_IGFuoWRZ{j{h2Gau5yD4jW*j2KI`Fz-Ys26K-M zkR9tB*N;SQD`a6`B*_>yk6K@?iZ;Zm*L~6IsYI(6cUNJiv4-F8mOABHO^2bZ2y2qA z(U#igj%CZPV9zeN%$3UL-bxC-nCqaX!t z04Kl{2)~%Va}dLzQtd#Quv;r$FlM35cI__D7;0}B>+R1lw!}H5skvyYn{W&(7rT_Z zCU}sECi5{RPPVk5Gv@DU*di2kq;cd`X}05ctzHNL+=xLgLhVJyOt#=Q3AcrBsmaKZ z!^uj$ZY&nHH+x&uI%;d4a;{F;c(3B@tqo-mHEmJ#63*ADsf@R%161s|pv^}AlQVD+ z?`)p9i%~AJZcqKs4B27qD46Q*JsV-M(r|v47y){_hIKz=LaSmK>G>rrB+eJID>IX7HIrY^r1QC{ zM0W0unMKM^FBQ%(^fSIX*}2T(`30;hvdeLl9+BwtJ@fXAd=oqiz6*xl!97CoYH$_! zDR3P)0LH1uz73uO{~f&SF>F@A zYr)lE6x;|-g6#Y>-Jf5O^eHY4@wiCGBOP9lDVqhSmm#?ISsIX_DX%cF~@w&rvj7uj;W9^e=3quc361Ipo-U50(rp2 zK{Bo~5G^mC-G6}CSv6BdV6x&U8n-Y=Fxq#ukpL_)5me|^&I1z7 zh1_|GY{^Bcd6Y=S@31lgw-Aja4{t-j?3T3NlvXyP96xfHK78X{_l#W_Qx6q%5zJE- zy>K|D)wW0{q6;Gj?}|=bP*HV9*8(et$y#JSBRg?-5e6>$M5N8{AXeS(*`*FdFcQ0* zPv`Y|F!a%HntJjVY-_PMu9a2C#VOla+6K)#+iDOoc}vUX{NW-y<`fgCxAhwP+RgKv8ms;o}>QbmX^B~Rwbo3OR7*pN}*+ep(*W(oM51<{XS?6qkIq!>IMvy zma*md7Q~<2i6;jYcEGkYQAqUKt;~wvjMFRlUcBq?W_rc%{8<%#sjZH1fTB<~*+I1($y-E0nPAos;O{_Lx=`t*K*_mVg;6KSOv(7C2JVzAq4H zlwn85P;S}%d%qnz1&0^}RU-=OKuRn3EN zU(J#6qZK{L?}qfh*yDWvLrDbs2h1jfvteQf#6WgfPBVAB^g`!>v5BTV*YjpLe=$Bk z8bw)N4SaPy=nlqG*kB6PI?YC(c3t-vuG!gLciU)A>&{}M-`fD)7atm|Y6O)~W$k^| z0SdlKba;GxSmturi05Yb!_K;w%;g2{4>Rq<_8cz_H|Haz@WV2{x~jFbea0CKtWQ@hOAL(D(3d0HyFVG^4#)?sDy0b0QxRnroH!j@fPvK9NP*s9>1Ni5#(E_qr)LYr_f+vZT~!CdfcKjV_t%z> zRQTHV)_kRj!j6L|6Hr;Z0iun?ho{+|=a_2Rs$d#JJX26q|%U zS+@R@6vp)!ty0#9PVuv(pr33R=qX<@}v(V{}#})(x7@9c4Xiui=5kaeoaHrdZwzwLq!l z)YA|=HT1PFg6WJ7b2upe_F7)LA{}4A7Rq!|qG|h-w--jhY#fo#OW8$4V8}lFcq^Ik z@0h{Ri#_K7+nlJ>k}}NJMW57Q11pRNO77m*sZys_CIb!%bA{Y2#H!(KX_T3bDRB_r zspikv>D_h|m(kYu3_^Nkvh*nv{Wo?TT~{+R2=|s_w8v&XG^On~`N29%-VxLiExCM} z*x01Px=>?umYS95%5ql@u>;k-Ik^XOb#K;@jNL`U) zdR~=LHPM-8qjZOM`?h3F88;E!=+O8$CR5Cq#-C;YITT#-3hveH#;Dr`xhtM{It#SAI*rLy z|6_g<;s{MtRw(T%eT2bB7f~zD)Jo|e%DPOH@S6G0=Ohn_QAoEWv=3b4cmE|by+x&( z8DyRG4wW*OKQE@ClbO}nEH07PkI!fqQ$fO)8nC-&FgNh#5-ng~bAld`)vF!qj>cip znlX`|v^~|Qtpj^ya-sck*Mz)w^_X4gB~q~c;d~v1-qd&ACJRMUqlyjmt|~0`R5<;K zCi*`pmD)~l1udboDS=hIS-w?u(9DAM%Hcg5*K0;-;jW@BLU{Mm1u}i&m0p_zd#S9Y zj#poIgjYsP^qn_g3EdUmhots;(IgkTgfzHkw_7E+LbY^ zra+o}Wyg$xdLj%ul6tUYojyEn(Ko)CmREcWnJDfv;QQbwc|HPO_aD9Zadm@nmm?7Fm%KCp+lHDr1WYJ-}SAvQ=N7>wN@^>D2WgyaYzHX{oFuU zn5rE)enX0Htt9MQR+U7n+fJ5+fT9cFIdQA09!{LFuRAqYN2y;id#0E_lU~eD9ndb| z$e!*tH|97lrlZjkUT&P~rPBwh#P1w95bZw^jsK9HMY0D!zb{Vw>{s{6=l^)0yy9Q? z!p8soKDqk~`(&yw?9A8p$>W5bBX0PeBkZG3?~_Vj*i(dkg0Rc|qA%`~F>njWfxAHq zJOthco&cW$p95b7-vzJwH~S<4<6sh;19k8qcq@1x_$c@UcnW+Od;>fOUiYPaay1wQ zw}5jX{95=Q1do8nz;A$$f+xYJ!BgOA@C$ z1fK?<178N;0N(}Q2e0@F^#xah>%cg;1)Ko|a5q>7UGNZiD|j4y2z(rT3Oog#2G4+J z!E-?VU9V4G)#tw&{}`AA1yBK9@DO+eJPtkto&=u(PlK<5Z-M8)%b1t10dD{i7z4+_ zB*=lgLHPZ6PW^aJ{V3cDOx@{?DvdwBcpP+~&E`U<-PHeBzCXoiRE9o5Ugju-3@Arl&= zhi*N#5htV1db%`LNn}=^xwExduWBsYr-&x^X}A_j_rVDo7xD8NmhV(lZb!y>-dHK}Nt+@D@51+wip5qD zyIPx~qUG!Jsw+)ofoBRY@(nZh|1}{0Chg>kW}9J^O)0MMnb?LqmsYhqWrwz-G1S-c zxD+`RHu%_^$Ul|hsv30HZa6A`NS{8^a?*t8{5cjt{Ncm`x0=GG=AD+1!rYI)tq- z<91SA+LakXJ6OFar-xSKaXC9g7H*hjerRnY9=jpCqhpWlAwCD->vaDR3W@T%&6O?l z>!|b1Df74NTV6Zr-)M3_75b!p22SI=WoYAK$p7bus4BDgmxhr3A>)5!h^qQR-Zn%6 zE50g^4t21i;eWEh?;S&(768Y6xF-3BsB%oz|F>AIYB6DKX$lI6bUcxa#HGrhg3-h2SwL$92v&L*d z8hL+rc*ZJI%e#k*_xyhpq=;RjE=wq|-0S>}ZnGpMcXvB3YlROOsHuyl<%8 "$NIX_BUILD_TOP/.times" - local -a times=($(cat "$NIX_BUILD_TOP/.times")) - # Print the following statistics: - # - user time for the shell - # - system time for the shell - # - user time for all child processes - # - system time for all child processes - echo "build time elapsed: " ${times[*]} - fi - - if test $exitCode != 0; then - runHook failureHook - - # If the builder had a non-zero exit code and - # $succeedOnFailure is set, create the file - # `$out/nix-support/failed' to signal failure, and exit - # normally. Otherwise, return the original exit code. - if test -n "$succeedOnFailure"; then - echo "build failed with exit code $exitCode (ignored)" - mkdir -p "$out/nix-support" - echo -n $exitCode > "$out/nix-support/failed" - exit 0 - fi - - else - runHook exitHook - fi - - exit $exitCode -} - -trap "exitHandler" EXIT - - -###################################################################### -# Helper functions that might be useful in setup hooks. - - -addToSearchPathWithCustomDelimiter() { - local delimiter=$1 - local varName=$2 - local dir=$3 - if [ -d "$dir" ]; then - eval export ${varName}=${!varName}${!varName:+$delimiter}${dir} - fi -} - -PATH_DELIMITER=':' - -addToSearchPath() { - addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" -} - - -###################################################################### -# Initialisation. - -set -e - -test -z $NIX_GCC && NIX_GCC=@GCC@ - - -# Wildcard expansions that don't match should expand to an empty list. -# This ensures that, for instance, "for i in *; do ...; done" does the -# right thing. -shopt -s nullglob - - -# Set up the initial path. -PATH= -for i in $NIX_GCC @INITIALPATH@; do - if test "$i" = /; then i=; fi - addToSearchPath PATH $i/bin -done - -# Hack: the /tmp of Cygwin is different from the /tmp in MSYS -if test -d $NIX_BUILD_TOP; then - echo "Nix build top already exists. Strange." -else - mkdir $NIX_BUILD_TOP - cd $NIX_BUILD_TOP -fi - -if test "$NIX_DEBUG" = "1"; then - echo "initial path: $PATH" -fi - - -# Execute the pre-hook. -export SHELL=@SHELL@ -if test -z "$shell"; then - export shell=@SHELL@ -fi - -# Check that the pre-hook initialised SHELL. -if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi - - -# Hack: run gcc's setup hook. -envHooks=() -if test -f $NIX_GCC/nix-support/setup-hook; then - source $NIX_GCC/nix-support/setup-hook -fi - - -# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in "$@"; do - if ! test -x "$dir"; then mkdir -p "$dir"; fi - done -} - -installBin() { - mkdir -p $out/bin - cp "$@" $out/bin -} - - -# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -runHook addInputsHook - - -# Recursively find all build inputs. -findInputs() { - local pkg=$1 - - case $pkgs in - *\ $pkg\ *) - return 0 - ;; - esac - - pkgs="$pkgs $pkg " - - if test -f $pkg/nix-support/setup-hook; then - source $pkg/nix-support/setup-hook - fi - - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i - done - fi -} - -pkgs="" -for i in $buildInputs $propagatedBuildInputs; do - findInputs $i -done - - -# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() { - local pkg=$1 - - if test -d $1/bin; then - addToSearchPath _PATH $1/bin - fi - - # Run the package-specific hooks set by the setup-hook scripts. - for i in "${envHooks[@]}"; do - $i $pkg - done -} - -for i in $pkgs; do - addToEnv $i -done - - -# Add the output as an rpath. -if test "$NIX_NO_SELF_RPATH" != "1"; then - export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS" - if test -n "$NIX_LIB64_IN_SELF_RPATH"; then - export NIX_LDFLAGS="-rpath $out/lib64 $NIX_LDFLAGS" - fi -fi - - -# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC - - -# Set the prefix. This is generally $out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to $out. -if test -z "$prefix"; then - prefix="$out"; -fi - -if test "$useTempPrefix" = "1"; then - prefix="$NIX_BUILD_TOP/tmp_prefix"; -fi - - -PATH=$_PATH${_PATH:+:}$PATH -if test "$NIX_DEBUG" = "1"; then - echo "final path: $PATH" -fi - - -# Make GNU Make produce nested output. -export NIX_INDENT_MAKE=1 - - -###################################################################### -# Misc. helper functions. - - -stripDirs() { - local dirs="$1" - local stripFlags="$2" - local dirsNew= - - for d in ${dirs}; do - if test -d "$prefix/$d"; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} - - if test -n "${dirs}"; then - header "stripping (with flags $stripFlags) in $dirs" - find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} strip $stripFlags || true - stopNest - fi -} - - -###################################################################### -# Textual substitution functions. - - -substitute() { - local input="$1" - local output="$2" - - local -a params=("$@") - local -a args=() - - local n p pattern replacement varName - - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--replace"; then - pattern="${params[$((n + 1))]}" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test "$p" = "--subst-var"; then - varName="${params[$((n + 1))]}" - pattern="@$varName@" - replacement="${!varName}" - n=$((n + 1)) - fi - - if test "$p" = "--subst-var-by"; then - pattern="@${params[$((n + 1))]}@" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test ${#args[@]} != 0; then - args[${#args[@]}]="-a" - fi - args[${#args[@]}]="$pattern" - args[${#args[@]}]="$replacement" - done - - replace-literal -e -s -- "${args[@]}" < "$input" > "$output".tmp - if test -x "$output"; then - chmod +x "$output".tmp - fi - mv -f "$output".tmp "$output" -} - - -substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" -} - - -substituteAll() { - local input="$1" - local output="$2" - - # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do - if test "$NIX_DEBUG" = "1"; then - echo "$envVar -> ${!envVar}" - fi - args="$args --subst-var $envVar" - done - - substitute "$input" "$output" $args -} - - -###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=$(($nestingLevel + 1)) - echo -en "\e[$1p" -} - -stopNest() { - nestingLevel=$(($nestingLevel - 1)) - echo -en "\e[q" -} - -header() { - startNest "$2" - echo "$1" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test $nestingLevel -gt 0; do - stopNest - done -} - - -# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - echo "Dumping env-vars to $NIX_BUILD_TOP/env-vars" - if test "$noDumpEnvVars" != "1"; then - export > "$NIX_BUILD_TOP/env-vars" - fi -} - - -# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=$(basename $1); - if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=$(echo "$strippedName" | cut -c34-) - fi -} - - -unpackFile() { - curSrc="$1" - local cmd - - header "unpacking source archive $curSrc" 3 - - case "$curSrc" in - *.tar) - tar xvf $curSrc - ;; - *.tar.gz | *.tgz | *.tar.Z) - gzip -d < $curSrc | tar xvf - - ;; - *.tar.bz2 | *.tbz2) - bzip2 -d < $curSrc | tar xvf - - ;; - *.zip) - unzip $curSrc - ;; - *) - if test -d "$curSrc"; then - stripHash $curSrc - cp -prvd $curSrc $strippedName - else - if test -z "$unpackCmd"; then - echo "source archive $curSrc has unknown type" - exit 1 - fi - runHook unpackCmd - fi - ;; - esac - - stopNest -} - - -unpackPhase() { - runHook preUnpack - - if test -z "$srcs"; then - if test -z "$src"; then - echo 'variable $src or $srcs should point to the source' - exit 1 - fi - srcs="$src" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore="" - for i in *; do - if test -d "$i"; then - dirsBefore="$dirsBefore $i " - fi - done - - # Unpack all source archives. - for i in $srcs; do - unpackFile $i - done - - # Find the source directory. - if test -n "$setSourceRoot"; then - runHook setSourceRoot - elif test -z "$sourceRoot"; then - sourceRoot= - for i in *; do - if test -d "$i"; then - case $dirsBefore in - *\ $i\ *) - ;; - *) - if test -n "$sourceRoot"; then - echo "unpacker produced multiple directories" - exit 1 - fi - sourceRoot="$i" - ;; - esac - fi - done - fi - - if test -z "$sourceRoot"; then - echo "unpacker appears to have produced no directories" - exit 1 - fi - - echo "source root is $sourceRoot" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test "$dontMakeSourcesWritable" != 1; then - chmod -R u+w "$sourceRoot" - fi - - runHook postUnpack -} - - -patchPhase() { - runHook prePatch - - for i in $patches; do - header "applying patch $i" 3 - local uncompress=cat - case $i in - *.gz) - uncompress="gzip -d" - ;; - *.bz2) - uncompress="bzip2 -d" - ;; - esac - $uncompress < $i | patch ${patchFlags:--p1} - stopNest - done - - runHook postPatch -} - - -configurePhase() { - runHook preConfigure - - if test -z "$configureScript"; then - configureScript=./configure - if ! test -x $configureScript; then - echo "no configure script, doing nothing" - return - fi - fi - - if test -z "$dontAddPrefix"; then - configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" - fi - - # Add --disable-dependency-tracking to speed up some builds. - if test -z "$dontAddDisableDepTrack"; then - if grep -q dependency-tracking $configureScript; then - configureFlags="--disable-dependency-tracking $configureFlags" - fi - fi - - # By default, disable static builds. - if test -z "$dontDisableStatic"; then - if grep -q enable-static $configureScript; then - configureFlags="--disable-static $configureFlags" - fi - fi - - echo "configure flags: $configureFlags ${configureFlagsArray[@]}" - $configureScript $configureFlags "${configureFlagsArray[@]}" - - runHook postConfigure -} - - -buildPhase() { - runHook preBuild - - if test -z "$makeFlags" && ! test -n "$makefile" -o -e "Makefile" -o -e "makefile" -o -e "GNUmakefile"; then - echo "no Makefile, doing nothing" - return - fi - - echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" - - runHook postBuild -} - - -checkPhase() { - runHook preCheck - - echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $checkFlags "${checkFlagsArray[@]}" ${checkTarget:-check} - - runHook postCheck -} - - -patchELF() { - # Patch all ELF executables and shared libraries. - header "patching ELF executables and libraries" - if test -e "$prefix"; then - find "$prefix" \( \ - \( -type f -a -name "*.so*" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - fi - stopNest -} - - -patchShebangs() { - # Rewrite all script interpreter file names (`#! /path') under the - # specified directory tree to paths found in $PATH. E.g., - # /bin/sh will be rewritten to /nix/store/-some-bash/bin/sh. - # Interpreters that are already in the store are left untouched. - header "patching script interpreter paths" - local dir="$1" - local f - for f in $(find "$dir" -type f -perm +0100); do - local oldPath=$(sed -ne '1 s,^#![ ]*\([^ ]*\).*$,\1,p' "$f") - if test -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE"; then - local newPath=$(type -P $(basename $oldPath) || true) - if test -n "$newPath" -a "$newPath" != "$oldPath"; then - echo "$f: interpreter changed from $oldPath to $newPath" - sed -i -e "1 s,$oldPath,$newPath," "$f" - fi - fi - done - stopNest -} - - -installPhase() { - runHook preInstall - - mkdir -p "$prefix" - - installTargets=${installTargets:-install} - echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make ${makefile:+-f $makefile} $installTargets \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" - - runHook postInstall -} - - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupPhase() { - runHook preFixup - - # Put man/doc/info under $out/share. - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "both $d/ and share/$d/ exists!" - else - echo "fixing location of $d/ subdirectory" - mkdir -p $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv $prefix/share/$d $prefix/$d - fi - fi - fi - done; - fi - - # TODO: strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin} - if test -n "$stripDebugList"; then - stripDirs "$stripDebugList" "${stripDebugFlags:--S}" - fi - - stripAllList=${stripAllList:-} - if test -n "$stripAllList"; then - stripDirs "$stripAllList" "${stripAllFlags:--s}" - fi - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -z "$dontPatchShebangs"; then - patchShebangs "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - mkdir -p "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - if test -n "$setupHook"; then - mkdir -p "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi - - runHook postFixup -} - - -distPhase() { - runHook preDist - - echo "dist flags: $distFlags ${distFlagsArray[@]}" - make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" ${distTarget:-dist} - - if test "$dontCopyDist" != 1; then - mkdir -p "$out/tarballs" - - # Note: don't quote $tarballs, since we explicitly permit - # wildcards in there. - cp -pvd ${tarballs:-*.tar.gz} $out/tarballs - fi - - runHook postDist -} - - -showPhaseHeader() { - local phase="$1" - case $phase in - unpackPhase) header "unpacking sources";; - patchPhase) header "patching sources";; - configurePhase) header "configuring";; - buildPhase) header "building";; - checkPhase) header "running tests";; - installPhase) header "installing";; - fixupPhase) header "post-installation fixup";; - *) header "$phase";; - esac -} - - -genericBuild() { - header "building $out" - - if test -n "$buildCommand"; then - eval "$buildCommand" - return - fi - - if test -z "$phases"; then - phases="$prePhases unpackPhase patchPhase $preConfigurePhases \ - configurePhase $preBuildPhases buildPhase checkPhase \ - $preInstallPhases installPhase $preFixupPhases fixupPhase \ - $preDistPhases distPhase $postPhases"; - fi - - for curPhase in $phases; do - if test "$curPhase" = buildPhase -a -n "$dontBuild"; then continue; fi - if test "$curPhase" = checkPhase -a -z "$doCheck"; then continue; fi - if test "$curPhase" = installPhase -a -n "$dontInstall"; then continue; fi - if test "$curPhase" = fixupPhase -a -n "$dontFixup"; then continue; fi - if test "$curPhase" = distPhase -a -z "$doDist"; then continue; fi - - showPhaseHeader "$curPhase" - dumpVars - - # Evaluate the variable named $curPhase if it exists, otherwise the - # function named $curPhase. - eval "${!curPhase:-$curPhase}" - - if test "$curPhase" = unpackPhase; then - cd "${sourceRoot:-.}" - fi - - stopNest - done - - stopNest -} - - - - -dumpVars diff --git a/pkgs/stdenv/mingw/simple-stdenv/builder.sh b/pkgs/stdenv/mingw/simple-stdenv/builder.sh deleted file mode 100644 index 0cbc13e4fab3..000000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/builder.sh +++ /dev/null @@ -1,80 +0,0 @@ -if test -z "$out"; then - out="$OUT" - initialPath="$INITIALPATH" - shell="$SHELL" -fi - -setupPath= -for i in $initialPath; do - setupPath=$setupPath${setupPath:+:}$i -done - -PATH=$setupPath -export PATH - -mkdir $out - -cat > $out/setup <> \$sedScript - sedArgs=("\${sedArgs[@]}" "-e" ) - fi - - if test "\$p" = "--subst-var"; then - varName=\${params[\$((n + 1))]} - n=\$((n + 1)) - echo "s^@\${varName}@^\${!varName}^g" >> \$sedScript - fi - - if test "\$p" = "--subst-var-by"; then - varName=\${params[\$((n + 1))]} - replacement=\${params[\$((n + 2))]} - n=\$((n + 2)) - echo "s^@\${varName}@^\$replacement^g" >> \$sedScript - fi - - done - - sed -f \$sedScript < "\$input" > "\$output".tmp - if test -x "\$output"; then - chmod +x "\$output".tmp - fi - mv -f "\$output".tmp "\$output" -} -EOF - -chmod +x $out/setup diff --git a/pkgs/stdenv/mingw/simple-stdenv/default.nix b/pkgs/stdenv/mingw/simple-stdenv/default.nix deleted file mode 100644 index 379cda0a598b..000000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ system -, name -, shell -, path -, extraEnv ? {} -, extraShellOptions ? [] -}: - -let { - body = - derivation ({ - inherit system name; - initialPath = path; - builder = shell; - args = extraShellOptions ++ ["-e" ./builder.sh]; - } // extraEnv) - - // { - mkDerivation = attrs: - derivation ((removeAttrs attrs ["meta"]) // { - builder = shell; - args = extraShellOptions ++ ["-e" ] ++ [attrs.builder]; # (if attrs ? builder then [attrs.builder] else [ ../fix-builder.sh ../default-builder.sh] ) ; - stdenv = body; - system = body.system; - } - - // extraEnv); - - inherit shell; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b5d4844a6d50..d61c789cb4f0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8,15 +8,6 @@ { # The system (e.g., `i686-linux') for which to build the packages. system ? builtins.currentSystem - # Usually, the system type uniquely determines the stdenv and thus - # how to build the packages. But on some platforms we have - # different stdenvs, leading to different ways to build the - # packages. For instance, on Windows we support both Cygwin and - # Mingw builds. In both cases, `system' is `i686-cygwin'. The - # attribute `stdenvType' is used to select the specific kind of - # stdenv to use, e.g., `i686-mingw'. -, stdenvType ? system - , # The standard environment to use. Only used for bootstrapping. If # null, the default standard environment is used. bootStdenv ? null @@ -137,7 +128,7 @@ let self_ = with self; helperFunctions // { # Make some arguments passed to all-packages.nix available - inherit system stdenvType platform; + inherit system platform; # Allow callPackage to fill in the pkgs argument inherit pkgs; @@ -213,7 +204,7 @@ let allStdenvs = import ../stdenv { - inherit system stdenvType platform config; + inherit system platform config; allPackages = args: import ./all-packages.nix ({ inherit config system; } // args); }; diff --git a/pkgs/top-level/mingw.nix b/pkgs/top-level/mingw.nix deleted file mode 100644 index 6c744bfd8612..000000000000 --- a/pkgs/top-level/mingw.nix +++ /dev/null @@ -1,27 +0,0 @@ -let { - pkgs = - import ./all-packages.nix { - stdenvType = "i686-mingw"; - }; - - body = { - inherit (pkgs) - aterm - getopt - pkgconfig - realCurl - strategoLibraries - zlib; -# inherit profileTest; - }; - -# profileTest = -# pkgs.stdenv.mkDerivation { -# name = "profile-test"; -# src = ./char-test.c; -# builder = ./profile-builder.sh; -# strlib = pkgs.strategoLibraries; -# aterm = pkgs.aterm; -# buildInputs = [pkgs.aterm pkgs.strategoLibraries]; -# }; -} From 40f7b0f9df5a35d56d4f44fc02067f49d104a191 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 14:56:10 +0200 Subject: [PATCH 06/53] Another attempt to eradicate ensureDir See c556a6ea46e71e1907d78b71fab36df30297b3ad. --- nixos/doc/manual/default.nix | 2 +- nixos/lib/make-iso9660-image.sh | 4 ++-- nixos/lib/make-system-tarball.sh | 4 ++-- nixos/modules/services/amqp/activemq/default.nix | 2 +- nixos/modules/services/hardware/acpid.nix | 2 +- nixos/modules/services/monitoring/nagios.nix | 2 +- nixos/modules/services/monitoring/systemhealth.nix | 2 +- .../network-filesystems/openafs-client/default.nix | 2 +- .../services/networking/ircd-hybrid/builder.sh | 4 ++-- nixos/modules/services/system/dbus.nix | 2 +- .../services/web-servers/apache-httpd/default.nix | 4 ++-- .../services/web-servers/apache-httpd/mediawiki.nix | 4 ++-- .../services/web-servers/apache-httpd/mercurial.nix | 2 +- .../services/x11/display-managers/lightdm.nix | 2 +- nixos/modules/services/x11/display-managers/slim.nix | 2 +- nixos/modules/system/boot/stage-1.nix | 2 +- nixos/modules/tasks/tty-backgrounds-combine.sh | 2 +- nixos/modules/virtualisation/qemu-vm.nix | 2 +- pkgs/applications/audio/espeak/edit.nix | 2 +- pkgs/applications/audio/mixxx/default.nix | 2 +- pkgs/applications/audio/praat/default.nix | 2 +- pkgs/applications/editors/atom/default.nix | 4 ++-- pkgs/applications/editors/dhex/default.nix | 6 +++--- .../editors/emacs-modes/calfw/default.nix | 4 ++-- .../editors/emacs-modes/ocaml/default.nix | 2 +- .../editors/emacs-modes/tuareg/default.nix | 2 +- pkgs/applications/editors/vim/macvim.nix | 2 +- pkgs/applications/graphics/alchemy/default.nix | 2 +- pkgs/applications/misc/keepass/default.nix | 4 ++-- pkgs/applications/misc/librecad/2.0.nix | 2 +- pkgs/applications/misc/librecad/default.nix | 2 +- pkgs/applications/misc/synergy/default.nix | 2 +- pkgs/applications/misc/vanitygen/default.nix | 2 +- .../networking/bittorrentsync/default.nix | 2 +- .../networking/browsers/chromium/browser.nix | 2 +- .../networking/browsers/chromium/default.nix | 2 +- .../networking/browsers/chromium/plugins.nix | 6 +++--- .../networking/browsers/chromium/source/default.nix | 2 +- pkgs/applications/networking/dropbox-cli/default.nix | 2 +- pkgs/applications/networking/dropbox/default.nix | 6 +++--- .../pidgin-plugins/skype4pidgin/default.nix | 2 +- .../networking/irc/irssi/fish/default.nix | 2 +- pkgs/applications/networking/p2p/freenet/default.nix | 2 +- pkgs/applications/networking/syncthing/default.nix | 2 +- pkgs/applications/office/zotero/default.nix | 4 ++-- pkgs/applications/science/math/gap/default.nix | 2 +- .../git-and-tools/git-bz/default.nix | 4 ++-- .../git-and-tools/svn2git-kde/default.nix | 2 +- pkgs/applications/video/makemkv/builder.sh | 6 +++--- pkgs/applications/video/omxplayer/default.nix | 2 +- pkgs/build-support/cabal/default.nix | 4 ++-- pkgs/build-support/kdewrapper/default.nix | 2 +- pkgs/build-support/make-startupitem/default.nix | 2 +- pkgs/build-support/release/functions.sh | 2 +- pkgs/build-support/vm/windows/bootstrap.nix | 2 +- pkgs/build-support/vm/windows/install/default.nix | 4 ++-- pkgs/data/misc/tzdata/default.nix | 2 +- pkgs/development/compilers/ghdl/default.nix | 6 +++--- pkgs/development/compilers/gwt/2.4.0.nix | 2 +- pkgs/development/compilers/mercury/default.nix | 2 +- pkgs/development/compilers/ocaml/3.11.2.nix | 2 +- pkgs/development/compilers/pakcs/default.nix | 8 ++++---- pkgs/development/libraries/aacskeys/default.nix | 2 +- .../libraries/apache-activemq/default.nix | 2 +- pkgs/development/libraries/bwidget/default.nix | 2 +- .../libraries/haskell/ghc-heap-view/default.nix | 2 +- .../libraries/haskell/ghc-mod/default.nix | 2 +- .../libraries/haskell/ghc-vis/default.nix | 2 +- pkgs/development/libraries/haskell/hoogle/local.nix | 2 +- pkgs/development/mobile/androidenv/androidsdk.nix | 2 +- pkgs/development/mobile/xcodeenv/simulate-app.nix | 2 +- pkgs/development/mobile/xcodeenv/xcodewrapper.nix | 2 +- pkgs/development/ocaml-modules/ocamlmake/default.nix | 2 +- pkgs/development/tools/apktool/default.nix | 2 +- .../tools/literate-programming/noweb/default.nix | 2 +- pkgs/development/tools/misc/distcc/masq.nix | 2 +- pkgs/development/tools/misc/grafana/default.nix | 2 +- pkgs/development/tools/misc/opengrok/default.nix | 2 +- pkgs/development/tools/node-webkit/default.nix | 4 ++-- pkgs/development/tools/ocaml/deriving/default.nix | 2 +- pkgs/development/tools/yuicompressor/default.nix | 2 +- pkgs/games/andyetitmoves/default.nix | 2 +- pkgs/games/crafty/default.nix | 6 +++--- pkgs/games/gsb/default.nix | 4 ++-- pkgs/games/openlierox/default.nix | 2 +- pkgs/games/opentyrian/default.nix | 4 ++-- pkgs/games/vessel/default.nix | 4 ++-- pkgs/games/worldofgoo/default.nix | 4 ++-- pkgs/misc/emulators/bsod/default.nix | 2 +- pkgs/misc/vim-plugins/default.nix | 2 +- pkgs/os-specific/darwin/xcode/default.nix | 4 ++-- pkgs/os-specific/linux/apparmor/default.nix | 2 +- pkgs/os-specific/linux/bbswitch/default.nix | 4 ++-- pkgs/os-specific/linux/frandom/default.nix | 4 ++-- pkgs/os-specific/linux/gogoclient/default.nix | 2 +- .../linux/google-authenticator/default.nix | 2 +- pkgs/os-specific/linux/i7z/default.nix | 2 +- pkgs/os-specific/linux/mcelog/default.nix | 2 +- pkgs/os-specific/linux/microcode/converter.nix | 2 +- pkgs/os-specific/linux/netatop/default.nix | 4 ++-- pkgs/os-specific/linux/otpw/default.nix | 2 +- pkgs/os-specific/linux/rfkill/udev.nix | 4 ++-- pkgs/os-specific/linux/x86info/default.nix | 2 +- pkgs/servers/dict/dictd-wiktionary.nix | 2 +- pkgs/servers/dict/dictd-wordnet.nix | 2 +- pkgs/servers/http/thttpd/default.nix | 2 +- pkgs/servers/monitoring/seyren/default.nix | 2 +- pkgs/servers/nosql/influxdb/default.nix | 2 +- pkgs/servers/serfdom/default.nix | 2 +- pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix | 2 +- pkgs/tools/backup/store-backup/default.nix | 2 +- pkgs/tools/filesystems/unionfs-fuse/default.nix | 2 +- pkgs/tools/misc/debootstrap/default.nix | 6 +++--- pkgs/tools/misc/megacli/default.nix | 2 +- pkgs/tools/misc/multitail/default.nix | 2 +- pkgs/tools/misc/picocom/default.nix | 2 +- pkgs/tools/misc/rkflashtool/default.nix | 2 +- pkgs/tools/misc/sl/default.nix | 2 +- pkgs/tools/networking/connect/default.nix | 2 +- pkgs/tools/networking/filegive/default.nix | 2 +- pkgs/tools/networking/reaver-wps/default.nix | 2 +- pkgs/tools/networking/udptunnel/default.nix | 2 +- pkgs/tools/security/fprot/default.nix | 12 ++++++------ pkgs/tools/security/meo/default.nix | 2 +- pkgs/tools/security/tor/torbrowser.nix | 4 ++-- pkgs/tools/system/storebrowse/default.nix | 2 +- pkgs/tools/system/vboot_reference/default.nix | 2 +- pkgs/tools/typesetting/tex/pgfplots/default.nix | 2 +- 128 files changed, 173 insertions(+), 173 deletions(-) diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index a79a77f40df1..e118f8b89437 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -67,7 +67,7 @@ in rec { # Generate the HTML manual. dst=$out/share/doc/nixos - ensureDir $dst + mkdir -p $dst xsltproc $xsltFlags --nonet --xinclude \ --output $dst/manual.html \ ${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \ diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh index 89b681ed2cd5..675b5bb35148 100644 --- a/nixos/lib/make-iso9660-image.sh +++ b/nixos/lib/make-iso9660-image.sh @@ -78,7 +78,7 @@ done cat pathlist | sed -e 's/=\(.*\)=\(.*\)=/\\=\1=\2\\=/' | tee pathlist.safer -ensureDir $out/iso +mkdir -p $out/iso genCommand="genisoimage -iso-level 4 -r -J $bootFlags -hide-rr-moved -graft-points -path-list pathlist.safer ${volumeID:+-V $volumeID}" if test -z "$compressImage"; then $genCommand -o $out/iso/$isoName @@ -87,5 +87,5 @@ else fi -ensureDir $out/nix-support +mkdir -p $out/nix-support echo $system > $out/nix-support/system diff --git a/nixos/lib/make-system-tarball.sh b/nixos/lib/make-system-tarball.sh index aadd0f6428c8..096d96ac1c81 100644 --- a/nixos/lib/make-system-tarball.sh +++ b/nixos/lib/make-system-tarball.sh @@ -48,11 +48,11 @@ for ((n = 0; n < ${#objects[*]}; n++)); do fi done -ensureDir $out/tarball +mkdir -p $out/tarball tar cvJf $out/tarball/$fileName.tar.xz * -ensureDir $out/nix-support +mkdir -p $out/nix-support echo $system > $out/nix-support/system echo "file system-tarball $out/tarball/$fileName.tar.xz" > $out/nix-support/hydra-build-products diff --git a/nixos/modules/services/amqp/activemq/default.nix b/nixos/modules/services/amqp/activemq/default.nix index f1f3d005f30f..1862e17de0b5 100644 --- a/nixos/modules/services/amqp/activemq/default.nix +++ b/nixos/modules/services/amqp/activemq/default.nix @@ -12,7 +12,7 @@ let phases = [ "installPhase" ]; buildInputs = [ jdk ]; installPhase = '' - ensureDir $out/lib + mkdir -p $out/lib source ${activemq}/lib/classpath.env export CLASSPATH ln -s "${./ActiveMQBroker.java}" ActiveMQBroker.java diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix index a710636c1400..03daab0d4882 100644 --- a/nixos/modules/services/hardware/acpid.nix +++ b/nixos/modules/services/hardware/acpid.nix @@ -6,7 +6,7 @@ let acpiConfDir = pkgs.runCommand "acpi-events" {} '' - ensureDir $out + mkdir -p $out ${ # Generate a configuration file for each event. (You can't have # multiple events in one config file...) diff --git a/nixos/modules/services/monitoring/nagios.nix b/nixos/modules/services/monitoring/nagios.nix index 97d153153a55..c1f7ba0eca74 100644 --- a/nixos/modules/services/monitoring/nagios.nix +++ b/nixos/modules/services/monitoring/nagios.nix @@ -12,7 +12,7 @@ let nagiosObjectDefs = cfg.objectDefs; nagiosObjectDefsDir = pkgs.runCommand "nagios-objects" {inherit nagiosObjectDefs;} - "ensureDir $out; ln -s $nagiosObjectDefs $out/"; + "mkdir -p $out; ln -s $nagiosObjectDefs $out/"; nagiosCfgFile = pkgs.writeText "nagios.cfg" '' diff --git a/nixos/modules/services/monitoring/systemhealth.nix b/nixos/modules/services/monitoring/systemhealth.nix index b0e59595e133..20d1dadd3bf2 100644 --- a/nixos/modules/services/monitoring/systemhealth.nix +++ b/nixos/modules/services/monitoring/systemhealth.nix @@ -13,7 +13,7 @@ let }; buildInputs = [ python ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin # Make it work for kernels 3.x, not so different than 2.6 sed -i 's/2\.6/4.0/' system_health.py cp system_health.py $out/bin diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix index b34ebc3663e3..5c539ba306ae 100644 --- a/nixos/modules/services/network-filesystems/openafs-client/default.nix +++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix @@ -11,7 +11,7 @@ let }; afsConfig = pkgs.runCommand "afsconfig" {} '' - ensureDir $out + mkdir -p $out echo ${cfg.cellName} > $out/ThisCell cp ${cellServDB} $out/CellServDB echo "/afs:${cfg.cacheDirectory}:${cfg.cacheSize}" > $out/cacheinfo diff --git a/nixos/modules/services/networking/ircd-hybrid/builder.sh b/nixos/modules/services/networking/ircd-hybrid/builder.sh index b8cb836db95e..f2c92878a4dc 100644 --- a/nixos/modules/services/networking/ircd-hybrid/builder.sh +++ b/nixos/modules/services/networking/ircd-hybrid/builder.sh @@ -3,7 +3,7 @@ source $stdenv/setup doSub() { local src=$1 local dst=$2 - ensureDir $(dirname $dst) + mkdir -p $(dirname $dst) substituteAll $src $dst } @@ -28,4 +28,4 @@ for i in $substFiles; do fi done -ensureDir $out/bin +mkdir -p $out/bin diff --git a/nixos/modules/services/system/dbus.nix b/nixos/modules/services/system/dbus.nix index 8d02a6404ac1..928f16c94489 100644 --- a/nixos/modules/services/system/dbus.nix +++ b/nixos/modules/services/system/dbus.nix @@ -14,7 +14,7 @@ let name = "dbus-conf"; preferLocalBuild = true; buildCommand = '' - ensureDir $out + mkdir -p $out cp -v ${pkgs.dbus.daemon}/etc/dbus-1/system.conf $out/system.conf diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix index b8359d4756b3..a6f856912533 100644 --- a/nixos/modules/services/web-servers/apache-httpd/default.nix +++ b/nixos/modules/services/web-servers/apache-httpd/default.nix @@ -80,7 +80,7 @@ let # !!! should be in lib writeTextInDir = name: text: - pkgs.runCommand name {inherit text;} "ensureDir $out; echo -n \"$text\" > $out/$name"; + pkgs.runCommand name {inherit text;} "mkdir -p $out; echo -n \"$text\" > $out/$name"; enableSSL = any (vhost: vhost.enableSSL) allHosts; @@ -194,7 +194,7 @@ let ) null ([ cfg ] ++ subservices); documentRoot = if maybeDocumentRoot != null then maybeDocumentRoot else - pkgs.runCommand "empty" {} "ensureDir $out"; + pkgs.runCommand "empty" {} "mkdir -p $out"; documentRootConf = '' DocumentRoot "${documentRoot}" diff --git a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix index 7d59c13b9575..0693ca57814a 100644 --- a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix +++ b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix @@ -90,7 +90,7 @@ let installPhase = '' - ensureDir $out + mkdir -p $out cp -r * $out cp ${mediawikiConfig} $out/LocalSettings.php sed -i 's|/bin/bash|${pkgs.stdenv.shell}|' \ @@ -103,7 +103,7 @@ let mediawikiScripts = pkgs.runCommand "mediawiki-${config.id}-scripts" { buildInputs = [ pkgs.makeWrapper ]; } '' - ensureDir $out/bin + mkdir -p $out/bin for i in changePassword.php createAndPromote.php userOptions.php edit.php nukePage.php update.php; do makeWrapper ${php}/bin/php $out/bin/mediawiki-${config.id}-$(basename $i .php) \ --add-flags ${mediawikiRoot}/maintenance/$i diff --git a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix index 755b595c783d..82da3330b00a 100644 --- a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix +++ b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix @@ -9,7 +9,7 @@ let cgi = pkgs.stdenv.mkDerivation { name = "mercurial-cgi"; buildCommand = '' - ensureDir $out + mkdir -p $out cp -v ${mercurial}/share/cgi-bin/hgweb.cgi $out sed -i "s|/path/to/repo/or/config|$out/hgweb.config|" $out/hgweb.cgi echo " diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix index d459c59b0483..f8ce06738fee 100644 --- a/nixos/modules/services/x11/display-managers/lightdm.nix +++ b/nixos/modules/services/x11/display-managers/lightdm.nix @@ -26,7 +26,7 @@ let buildInputs = [ pkgs.makeWrapper ]; buildCommand = '' - ensureDir $out/gtk-3.0/ + mkdir -p $out/gtk-3.0/ # This wrapper ensures that we actually get fonts makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \ diff --git a/nixos/modules/services/x11/display-managers/slim.nix b/nixos/modules/services/x11/display-managers/slim.nix index 48feb12d044c..9ee4e0dc7cb0 100644 --- a/nixos/modules/services/x11/display-managers/slim.nix +++ b/nixos/modules/services/x11/display-managers/slim.nix @@ -27,7 +27,7 @@ let unpackedTheme = pkgs.stdenv.mkDerivation { name = "slim-theme"; buildCommand = '' - ensureDir $out + mkdir -p $out cd $out unpackFile ${cfg.theme} ln -s * default diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index b6249b6c0915..f894f5bfbc1b 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -140,7 +140,7 @@ let udevRules = pkgs.stdenv.mkDerivation { name = "udev-rules"; buildCommand = '' - ensureDir $out + mkdir -p $out echo 'ENV{LD_LIBRARY_PATH}="${extraUtils}/lib"' > $out/00-env.rules diff --git a/nixos/modules/tasks/tty-backgrounds-combine.sh b/nixos/modules/tasks/tty-backgrounds-combine.sh index 1e0d8758a6ee..55c3a1ebfa8a 100644 --- a/nixos/modules/tasks/tty-backgrounds-combine.sh +++ b/nixos/modules/tasks/tty-backgrounds-combine.sh @@ -3,7 +3,7 @@ source $stdenv/setup ttys=($ttys) themes=($themes) -ensureDir $out +mkdir -p $out defaultName=$(cd $default && ls | grep -v default) echo $defaultName diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index bccf6583e47d..16c3836887cc 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -379,7 +379,7 @@ in system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; } '' - ensureDir $out/bin + mkdir -p $out/bin ln -s ${config.system.build.toplevel} $out/system ln -s ${pkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${vmName}-vm ''; diff --git a/pkgs/applications/audio/espeak/edit.nix b/pkgs/applications/audio/espeak/edit.nix index eb34335721f0..6627c6eb0e52 100644 --- a/pkgs/applications/audio/espeak/edit.nix +++ b/pkgs/applications/audio/espeak/edit.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp espeakedit $out/bin ''; diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix index b76eecc9e4ad..e3422d4ba069 100644 --- a/pkgs/applications/audio/mixxx/default.nix +++ b/pkgs/applications/audio/mixxx/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { buildPhase = '' runHook preBuild - ensureDir "$out" + mkdir -p "$out" scons \ -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \ $sconsFlags "prefix=$out" diff --git a/pkgs/applications/audio/praat/default.nix b/pkgs/applications/audio/praat/default.nix index b8a283125fc4..c7a40bf85a7c 100644 --- a/pkgs/applications/audio/praat/default.nix +++ b/pkgs/applications/audio/praat/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp praat $out/bin ''; diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 725b4520e699..51844f641794 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -43,8 +43,8 @@ in stdenv.mkDerivation rec { phases = [ "installPhase" ]; installPhase = '' - ensureDir $out/share/atom - ensureDir $out/bin + mkdir -p $out/share/atom + mkdir -p $out/bin tar -C $out/share/atom -xvf $src patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ $out/share/atom/atom diff --git a/pkgs/applications/editors/dhex/default.nix b/pkgs/applications/editors/dhex/default.nix index 45b7de900e26..7a0e9e59d7e5 100644 --- a/pkgs/applications/editors/dhex/default.nix +++ b/pkgs/applications/editors/dhex/default.nix @@ -12,9 +12,9 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin - ensureDir $out/share/man/man1 - ensureDir $out/share/man/man5 + mkdir -p $out/bin + mkdir -p $out/share/man/man1 + mkdir -p $out/share/man/man5 cp dhex $out/bin cp dhex.1 $out/share/man/man1 diff --git a/pkgs/applications/editors/emacs-modes/calfw/default.nix b/pkgs/applications/editors/emacs-modes/calfw/default.nix index 8934238ffa3a..3015865e3bf8 100644 --- a/pkgs/applications/editors/emacs-modes/calfw/default.nix +++ b/pkgs/applications/editors/emacs-modes/calfw/default.nix @@ -16,10 +16,10 @@ stdenv.mkDerivation rec { installPhase = '' - ensureDir "$out/share/doc/${name}" + mkdir -p "$out/share/doc/${name}" cp -v readme.md "$out/share/doc/${name}" - ensureDir "$out/share/emacs/site-lisp/" + mkdir -p "$out/share/emacs/site-lisp/" cp *.el "$out/share/emacs/site-lisp/" ''; diff --git a/pkgs/applications/editors/emacs-modes/ocaml/default.nix b/pkgs/applications/editors/emacs-modes/ocaml/default.nix index 1d81a0b7ff1e..9e4496ff1a48 100644 --- a/pkgs/applications/editors/emacs-modes/ocaml/default.nix +++ b/pkgs/applications/editors/emacs-modes/ocaml/default.nix @@ -18,7 +18,7 @@ in stdenv.mkDerivation { installPhase = '' cd emacs; - ensureDir "$out/share/emacs/site-lisp" "$out/bin" + mkdir -p "$out/share/emacs/site-lisp" "$out/bin" EMACSDIR=$out/share/emacs/site-lisp make simple-install install-ocamltags ''; diff --git a/pkgs/applications/editors/emacs-modes/tuareg/default.nix b/pkgs/applications/editors/emacs-modes/tuareg/default.nix index 17957ffc276b..3fd592f3dba6 100644 --- a/pkgs/applications/editors/emacs-modes/tuareg/default.nix +++ b/pkgs/applications/editors/emacs-modes/tuareg/default.nix @@ -15,7 +15,7 @@ in stdenv.mkDerivation { buildInputs = [ emacs ]; installPhase = '' - ensureDir "$out/share/emacs/site-lisp" + mkdir -p "$out/share/emacs/site-lisp" cp *.el *.elc "$out/share/emacs/site-lisp" ''; diff --git a/pkgs/applications/editors/vim/macvim.nix b/pkgs/applications/editors/vim/macvim.nix index e48cb2590f9c..8b8f08b6fd73 100644 --- a/pkgs/applications/editors/vim/macvim.nix +++ b/pkgs/applications/editors/vim/macvim.nix @@ -62,7 +62,7 @@ in mkDerivation rec { ''; postInstall = '' - ensureDir $out/Applications + mkdir -p $out/Applications cp -r src/MacVim/build/Release/MacVim.app $out/Applications rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view} diff --git a/pkgs/applications/graphics/alchemy/default.nix b/pkgs/applications/graphics/alchemy/default.nix index ee8543f7039a..263c411a8dbf 100644 --- a/pkgs/applications/graphics/alchemy/default.nix +++ b/pkgs/applications/graphics/alchemy/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -a . $out/share/alchemy cat >> $out/bin/alchemy << EOF #!/bin/sh diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix index 0098e626b424..89f794850d27 100644 --- a/pkgs/applications/misc/keepass/default.nix +++ b/pkgs/applications/misc/keepass/default.nix @@ -24,12 +24,12 @@ stdenv.mkDerivation rec { installPhase = '' - ensureDir "$out/bin" + mkdir -p "$out/bin" echo "${mono}/bin/mono $out/KeePass.exe" > $out/bin/keepass chmod +x $out/bin/keepass echo $out cp -r ./* $out/ - ensureDir "$out/share/applications" + mkdir -p "$out/share/applications" cp ${desktopItem}/share/applications/* $out/share/applications ''; diff --git a/pkgs/applications/misc/librecad/2.0.nix b/pkgs/applications/misc/librecad/2.0.nix index 2f140db93973..f7743feddbb2 100644 --- a/pkgs/applications/misc/librecad/2.0.nix +++ b/pkgs/applications/misc/librecad/2.0.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -R unix/librecad $out/bin cp -R unix/resources $out/share/librecad ''; diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix index b225519f4868..6e368f6fb10d 100644 --- a/pkgs/applications/misc/librecad/default.nix +++ b/pkgs/applications/misc/librecad/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { configurePhase = "qmake PREFIX=$out"; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -R unix/librecad $out/bin cp -R unix/resources $out/share/librecad ''; diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index 834b514148b6..d975d171518d 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { # http://synergy-foss.org/spit/issues/details/3317/ installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp ../bin/synergyc $out/bin cp ../bin/synergys $out/bin cp ../bin/synergyd $out/bin diff --git a/pkgs/applications/misc/vanitygen/default.nix b/pkgs/applications/misc/vanitygen/default.nix index e16767d4c261..99b0e70c898f 100644 --- a/pkgs/applications/misc/vanitygen/default.nix +++ b/pkgs/applications/misc/vanitygen/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = [ openssl pcre ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp vanitygen $out/bin cp keyconv $out/bin/vanitygen-keyconv ''; diff --git a/pkgs/applications/networking/bittorrentsync/default.nix b/pkgs/applications/networking/bittorrentsync/default.nix index abb94a32bd71..989ceb235b02 100644 --- a/pkgs/applications/networking/bittorrentsync/default.nix +++ b/pkgs/applications/networking/bittorrentsync/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { buildInputs = [ patchelf ]; installPhase = '' - ensureDir "$out/bin/" + mkdir -p "$out/bin/" cp -r "btsync" "$out/bin/" patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index d425c3f07384..ffc23a9d968d 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -8,7 +8,7 @@ mkChromiumDerivation (base: rec { buildTargets = [ "mksnapshot" "chrome" ]; installPhase = '' - ensureDir "$libExecPath" + mkdir -p "$libExecPath" cp -v "$buildPath/"*.pak "$libExecPath/" cp -v "$buildPath/icudtl.dat" "$libExecPath/" cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 44fd3c69e537..4dfdca882bc8 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -67,7 +67,7 @@ in stdenv.mkDerivation { browserBinary = "${chromium.browser}/libexec/chromium/chromium"; sandboxBinary = "${chromium.sandbox}/bin/chromium-sandbox"; in '' - ensureDir "$out/bin" "$out/share/applications" + mkdir -p "$out/bin" "$out/share/applications" ln -s "${chromium.browser}/share" "$out/share" makeWrapper "${browserBinary}" "$out/bin/chromium" \ diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix index f760b06fe24b..e0c45f910751 100644 --- a/pkgs/applications/networking/browsers/chromium/plugins.nix +++ b/pkgs/applications/networking/browsers/chromium/plugins.nix @@ -22,7 +22,7 @@ let else if source.channel == "stable" then "chrome" else "chrome-${source.channel}"; in '' - ensureDir plugins + mkdir -p plugins ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \ ./opt/google/${chan}/PepperFlash \ ./opt/google/${chan}/libpdf.so @@ -53,7 +53,7 @@ let pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}"; in '' install -vD libpdf.so "$pdf/lib/libpdf.so" - ensureDir "$pdf/nix-support" + mkdir -p "$pdf/nix-support" echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \ > "$pdf/nix-support/chromium-flags" @@ -63,7 +63,7 @@ let install -vD PepperFlash/libpepflashplayer.so \ "$flash/lib/libpepflashplayer.so" - ensureDir "$flash/nix-support" + mkdir -p "$flash/nix-support" echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \ "--ppapi-flash-version=$flashVersion" \ > "$flash/nix-support/chromium-flags" diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix index 6a6b299ee511..0d8a4156703e 100644 --- a/pkgs/applications/networking/browsers/chromium/source/default.nix +++ b/pkgs/applications/networking/browsers/chromium/source/default.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation { outputs = [ "out" "sandbox" "bundled" "main" ]; installPhase = '' - ensureDir "$out" "$sandbox" "$bundled" "$main" + mkdir -p "$out" "$sandbox" "$bundled" "$main" header "copying browser main sources to $main" find . -mindepth 1 -maxdepth 1 \ diff --git a/pkgs/applications/networking/dropbox-cli/default.nix b/pkgs/applications/networking/dropbox-cli/default.nix index 5262c121bb28..51f3ae2ac8d9 100644 --- a/pkgs/applications/networking/dropbox-cli/default.nix +++ b/pkgs/applications/networking/dropbox-cli/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { phases = "unpackPhase installPhase"; installPhase = '' - ensureDir "$out/bin/" "$out/share/applications" + mkdir -p "$out/bin/" "$out/share/applications" cp data/dropbox.desktop "$out/share/applications" substitute "dropbox.in" "$out/bin/dropbox" \ --replace '@PACKAGE_VERSION@' ${version} \ diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index 62dce4c42127..55b7bd7486b4 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -70,9 +70,9 @@ in stdenv.mkDerivation { ''; installPhase = '' - ensureDir "$out/${appdir}" + mkdir -p "$out/${appdir}" cp -r ".dropbox-dist/"* "$out/${appdir}/" - ensureDir "$out/bin" + mkdir -p "$out/bin" ln -s "$out/${appdir}/dropbox" "$out/bin/dropbox" patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \ @@ -83,7 +83,7 @@ in stdenv.mkDerivation { find "$out/${appdir}" -type f -a -perm +0100 \ -print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \; - ensureDir "$out/share/applications" + mkdir -p "$out/share/applications" cp "${desktopItem}/share/applications/"* $out/share/applications ''; diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix index 544aa06877ad..339e36321b33 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { buildPhase = "make libskype.so libskype_dbus.so"; installPhase = '' - ensureDir $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin + mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin cp icons/16/skypeout.png $out/pixmaps/pidgin/protocols/16 cp icons/22/skypeout.png $out/pixmaps/pidgin/protocols/22 cp icons/48/skypeout.png $out/pixmaps/pidgin/protocols/48 diff --git a/pkgs/applications/networking/irc/irssi/fish/default.nix b/pkgs/applications/networking/irc/irssi/fish/default.nix index 98d5afa0ba9f..2471c4885af8 100644 --- a/pkgs/applications/networking/irc/irssi/fish/default.nix +++ b/pkgs/applications/networking/irc/irssi/fish/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/lib/irssi/modules + mkdir -p $out/lib/irssi/modules cp src/.libs/libfish.so $out/lib/irssi/modules ''; diff --git a/pkgs/applications/networking/p2p/freenet/default.nix b/pkgs/applications/networking/p2p/freenet/default.nix index 4c74c2c32de0..cb53f4b5aa31 100644 --- a/pkgs/applications/networking/p2p/freenet/default.nix +++ b/pkgs/applications/networking/p2p/freenet/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { buildPhase = "ant package-only"; installPhase = '' - ensureDir $out/share/freenet $out/bin + mkdir -p $out/share/freenet $out/bin cp lib/bcprov.jar $out/share/freenet cp lib/freenet/freenet-ext.jar $out/share/freenet cp dist/freenet.jar $out/share/freenet diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix index 8f169180dd5e..226b7f6d097b 100644 --- a/pkgs/applications/networking/syncthing/default.nix +++ b/pkgs/applications/networking/syncthing/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -r ./bin $out ''; diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index f0f7d801d8fd..b6636cef6418 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -23,10 +23,10 @@ stdenv.mkDerivation { inherit bash xulrunner; installPhase = '' - ensureDir "$out/libexec/zotero" + mkdir -p "$out/libexec/zotero" cp -vR * "$out/libexec/zotero/" - ensureDir "$out/bin" + mkdir -p "$out/bin" substituteAll "${./zotero.sh}" "$out/bin/zotero" chmod +x "$out/bin/zotero" ''; diff --git a/pkgs/applications/science/math/gap/default.nix b/pkgs/applications/science/math/gap/default.nix index f76640567f60..e7766fab5815 100644 --- a/pkgs/applications/science/math/gap/default.nix +++ b/pkgs/applications/science/math/gap/default.nix @@ -38,7 +38,7 @@ rec { phaseNames = ["doConfigure" "doMake" "doDeploy"]; doDeploy = a.fullDepEntry '' - ensureDir "$out/bin" "$out/share/gap/" + mkdir -p "$out/bin" "$out/share/gap/" cp -r . "$out/share/gap/build-dir" diff --git a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix index 3a2270cf972d..4c4ff62901e5 100644 --- a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix @@ -21,8 +21,8 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out - ensureDir $out/bin + mkdir -p $out + mkdir -p $out/bin cp git-bz $out/bin wrapProgram $out/bin/git-bz \ --prefix PYTHONPATH : "$(toPythonPath $python):$(toPythonPath $pysqlite)" diff --git a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix index c44f2dbcbb6b..94c819e711b5 100644 --- a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix +++ b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp svn-all-fast-export $out/bin ''; diff --git a/pkgs/applications/video/makemkv/builder.sh b/pkgs/applications/video/makemkv/builder.sh index 0e1898a45564..e4cfcf3d9068 100644 --- a/pkgs/applications/video/makemkv/builder.sh +++ b/pkgs/applications/video/makemkv/builder.sh @@ -30,9 +30,9 @@ for i in ${bin} ; do ${i} done -ensureDir $out/bin -ensureDir $out/lib -ensureDir $out/share/MakeMKV +mkdir -p $out/bin +mkdir -p $out/lib +mkdir -p $out/share/MakeMKV cp ${lib} ${out}/lib cp ${bin} ${out}/bin cp makemkv-bin-${ver}/src/share/* $out/share/MakeMKV diff --git a/pkgs/applications/video/omxplayer/default.nix b/pkgs/applications/video/omxplayer/default.nix index b3880067cac4..6bc982efa128 100644 --- a/pkgs/applications/video/omxplayer/default.nix +++ b/pkgs/applications/video/omxplayer/default.nix @@ -71,7 +71,7 @@ stdenv.mkDerivation rec { export INCLUDES="-I${raspberrypifw}/include/interface/vcos/pthreads -I${raspberrypifw}/include/interface/vmcs_host/linux/" ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp omxplayer.bin $out/bin ''; buildInputs = [ raspberrypifw ffmpeg pcre boostHeaders freetype zlib ]; diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index bc73d1f73a2b..67934ed0c291 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -250,12 +250,12 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version; ./Setup copy - ensureDir $out/bin # necessary to get it added to PATH + mkdir -p $out/bin # necessary to get it added to PATH local confDir=$out/lib/ghc-${ghc.ghc.version}/package.conf.d local installedPkgConf=$confDir/${self.fname}.installedconf local pkgConf=$confDir/${self.fname}.conf - ensureDir $confDir + mkdir -p $confDir ./Setup register --gen-pkg-config=$pkgConf if test -f $pkgConf; then echo '[]' > $installedPkgConf diff --git a/pkgs/build-support/kdewrapper/default.nix b/pkgs/build-support/kdewrapper/default.nix index 6dcf68a324a2..64dfd7d0ca6b 100644 --- a/pkgs/build-support/kdewrapper/default.nix +++ b/pkgs/build-support/kdewrapper/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { inherit libs; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin KDEDIRS=${program} QT_PLUGIN_PATH=${program}/lib/qt4/plugins:${program}/lib/kde4/plugins diff --git a/pkgs/build-support/make-startupitem/default.nix b/pkgs/build-support/make-startupitem/default.nix index dc78b8a704e2..fad6f00d8211 100644 --- a/pkgs/build-support/make-startupitem/default.nix +++ b/pkgs/build-support/make-startupitem/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { priority = 5; buildCommand = '' - ensureDir $out/share/autostart + mkdir -p $out/share/autostart target=${name}.desktop cp ${package}/share/applications/${srcPrefix}${name}.desktop $target chmod +rw $target diff --git a/pkgs/build-support/release/functions.sh b/pkgs/build-support/release/functions.sh index 9f2d03519c8c..8ac67a196721 100644 --- a/pkgs/build-support/release/functions.sh +++ b/pkgs/build-support/release/functions.sh @@ -9,6 +9,6 @@ findTarballs() { } propagateImageName() { - ensureDir $out/nix-support + mkdir -p $out/nix-support cat "$diskImage"/nix-support/full-name > $out/nix-support/full-name } diff --git a/pkgs/build-support/vm/windows/bootstrap.nix b/pkgs/build-support/vm/windows/bootstrap.nix index e3b44d1b6ab7..ebea819b1910 100644 --- a/pkgs/build-support/vm/windows/bootstrap.nix +++ b/pkgs/build-support/vm/windows/bootstrap.nix @@ -69,7 +69,7 @@ in rec { -b "${installedVM}/disk.img" \ -f qcow2 winvm.img ${runAndSuspend} - ensureDir "$out" + mkdir -p "$out" cp winvm.img "$out/disk.img" cp state.gz "$out/state.gz" ''; diff --git a/pkgs/build-support/vm/windows/install/default.nix b/pkgs/build-support/vm/windows/install/default.nix index 10690bf6b287..fe8e8f61de02 100644 --- a/pkgs/build-support/vm/windows/install/default.nix +++ b/pkgs/build-support/vm/windows/install/default.nix @@ -22,7 +22,7 @@ let cygwinSshKey = stdenv.mkDerivation { name = "snakeoil-ssh-cygwin"; buildCommand = '' - ensureDir "$out" + mkdir -p "$out" ${openssh}/bin/ssh-keygen -t ecdsa -f "$out/key" -N "" ''; }; @@ -65,7 +65,7 @@ in stdenv.mkDerivation { buildCommand = '' ${qemu}/bin/qemu-img create -f qcow2 winvm.img 2G ${installController} - ensureDir "$out" + mkdir -p "$out" cp winvm.img "$out/disk.img" ''; passthru = { diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix index afee316d0bf8..71153d884991 100644 --- a/pkgs/data/misc/tzdata/default.nix +++ b/pkgs/data/misc/tzdata/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ln -s . $out/share/zoneinfo/posix mv $out/share/zoneinfo-leaps $out/share/zoneinfo/right - ensureDir "$lib/include" + mkdir -p "$lib/include" cp tzfile.h "$lib/include/tzfile.h" ''; diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix index cd33d3d79a70..7b103805def3 100644 --- a/pkgs/development/compilers/ghdl/default.nix +++ b/pkgs/development/compilers/ghdl/default.nix @@ -34,14 +34,14 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp ghdl_mcode $out/bin - ensureDir $out/share/ghdl_mcode/translate + mkdir -p $out/share/ghdl_mcode/translate cp -R ../lib $out/share/ghdl_mcode/translate cp -R ../../libraries $out/share/ghdl_mcode - ensureDir $out/share/man/man1 + mkdir -p $out/share/man/man1 cp ../../doc/ghdl.1 $out/share/man/man1/ghdl_mcode.1 # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. diff --git a/pkgs/development/compilers/gwt/2.4.0.nix b/pkgs/development/compilers/gwt/2.4.0.nix index 65208b062c25..f0dc9378c4f0 100644 --- a/pkgs/development/compilers/gwt/2.4.0.nix +++ b/pkgs/development/compilers/gwt/2.4.0.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { buildInputs = [ unzip ]; installPhase = '' - ensureDir $out + mkdir -p $out unzip $src mv gwt-2.4.0 $out/bin ''; diff --git a/pkgs/development/compilers/mercury/default.nix b/pkgs/development/compilers/mercury/default.nix index 5ea922a371a7..21af582c594b 100644 --- a/pkgs/development/compilers/mercury/default.nix +++ b/pkgs/development/compilers/mercury/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; preConfigure = '' - ensureDir $out/lib/mercury/cgi-bin ; + mkdir -p $out/lib/mercury/cgi-bin ; configureFlags="--enable-deep-profiler=$out/lib/mercury/cgi-bin"; ''; diff --git a/pkgs/development/compilers/ocaml/3.11.2.nix b/pkgs/development/compilers/ocaml/3.11.2.nix index cffd7c3f54a4..64cf8a9f9f7b 100644 --- a/pkgs/development/compilers/ocaml/3.11.2.nix +++ b/pkgs/development/compilers/ocaml/3.11.2.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { patch -p0 < ${./mips64.patch} ''; postBuild = '' - ensureDir $out/include + mkdir -p $out/include ln -sv $out/lib/ocaml/caml $out/include/caml ''; diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix index 60071a8f6fa9..1fb4318ebb92 100644 --- a/pkgs/development/compilers/pakcs/default.nix +++ b/pkgs/development/compilers/pakcs/default.nix @@ -54,13 +54,13 @@ stdenv.mkDerivation rec { export LC_ALL=en_US.UTF-8 # Set up link to cymake, which has been built already. - ensureDir bin/.local + mkdir -p bin/.local ln -s ${curryFront}/bin/cymake bin/.local/ ''; installPhase = '' # Prepare PAKCSHOME directory. - ensureDir $out/pakcs + mkdir -p $out/pakcs for d in bin curry2prolog currytools lib tools cpns include www examples docs ; do cp -r $d $out/pakcs ; done @@ -80,7 +80,7 @@ stdenv.mkDerivation rec { (cd $out/pakcs/www ; make) # Install bin. - ensureDir $out/bin + mkdir -p $out/bin for b in makecurrycgi .makesavedstate pakcs parsecurry cleancurry \ addtypes cass currybrowse currycreatemake currydoc currytest \ dataToXml erd2curry ; do @@ -88,7 +88,7 @@ stdenv.mkDerivation rec { done # Place emacs lisp files in expected locations. - ensureDir $out/share/emacs/site-lisp/curry-pakcs + mkdir -p $out/share/emacs/site-lisp/curry-pakcs for e in "tools/emacs/"*.el ; do cp $e $out/share/emacs/site-lisp/curry-pakcs/ ; done diff --git a/pkgs/development/libraries/aacskeys/default.nix b/pkgs/development/libraries/aacskeys/default.nix index 088f2cc4b1e0..0b20d8a41ea1 100644 --- a/pkgs/development/libraries/aacskeys/default.nix +++ b/pkgs/development/libraries/aacskeys/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { buildInputs = [openssl jdk premake3]; installPhase = '' - ensureDir $out/{bin,lib,share/${baseName}} + mkdir -p $out/{bin,lib,share/${baseName}} # Install lib install -Dm444 lib/linux/libaacskeys.so $out/lib diff --git a/pkgs/development/libraries/apache-activemq/default.nix b/pkgs/development/libraries/apache-activemq/default.nix index d55ff9049eda..2f2792dec140 100644 --- a/pkgs/development/libraries/apache-activemq/default.nix +++ b/pkgs/development/libraries/apache-activemq/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { phases = [ "unpackPhase" "installPhase" ]; installPhase = '' - ensureDir $out + mkdir -p $out mv * $out/ for j in `find $out/lib -name "*.jar"`; do cp="''${cp:+"$cp:"}$j"; diff --git a/pkgs/development/libraries/bwidget/default.nix b/pkgs/development/libraries/bwidget/default.nix index 81f4f9a287ec..0d1913bc8e7a 100644 --- a/pkgs/development/libraries/bwidget/default.nix +++ b/pkgs/development/libraries/bwidget/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { dontBuild = true; installPhase = '' - ensureDir "$out/lib/${passthru.libPrefix}" + mkdir -p "$out/lib/${passthru.libPrefix}" cp -R *.tcl lang images "$out/lib/${passthru.libPrefix}" ''; diff --git a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix index 679ced622d9b..38220eeb05ea 100644 --- a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix +++ b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix @@ -6,7 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1qi7f3phj2j63x1wd2cvk36945cxd84s12zs03hlrn49wzx2pf1n"; buildDepends = [ binary transformers ]; postInstall = '' - ensureDir "$out/share/ghci" + mkdir -p "$out/share/ghci" ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname" ''; meta = { diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index f05bfedafcff..31d1d7689b1e 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -24,7 +24,7 @@ cabal.mkDerivation (self: { make rm Makefile cd .. - ensureDir "$out/share/emacs" + mkdir -p "$out/share/emacs" mv $pname-$version emacs/site-lisp mv $out/bin/ghc-mod $out/bin/.ghc-mod-wrapped diff --git a/pkgs/development/libraries/haskell/ghc-vis/default.nix b/pkgs/development/libraries/haskell/ghc-vis/default.nix index a15ed9d1c47c..d8edd81cda65 100644 --- a/pkgs/development/libraries/haskell/ghc-vis/default.nix +++ b/pkgs/development/libraries/haskell/ghc-vis/default.nix @@ -12,7 +12,7 @@ cabal.mkDerivation (self: { ]; jailbreak = true; postInstall = '' - ensureDir "$out/share/ghci" + mkdir -p "$out/share/ghci" ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname" ''; meta = { diff --git a/pkgs/development/libraries/haskell/hoogle/local.nix b/pkgs/development/libraries/haskell/hoogle/local.nix index 67f38f260e07..eebfd0224d26 100644 --- a/pkgs/development/libraries/haskell/hoogle/local.nix +++ b/pkgs/development/libraries/haskell/hoogle/local.nix @@ -65,7 +65,7 @@ cabal.mkDerivation (self: rec { exit 1 fi - ensureDir $out/share/hoogle/doc + mkdir -p $out/share/hoogle/doc export HOOGLE_DOC_PATH=$out/share/hoogle/doc cd $out/share/hoogle diff --git a/pkgs/development/mobile/androidenv/androidsdk.nix b/pkgs/development/mobile/androidenv/androidsdk.nix index 1a2124754a20..3c9327f1c594 100644 --- a/pkgs/development/mobile/androidenv/androidsdk.nix +++ b/pkgs/development/mobile/androidenv/androidsdk.nix @@ -178,7 +178,7 @@ stdenv.mkDerivation rec { # Create wrappers to the most important tools and platform tools so that we can run them if the SDK is in our PATH - ensureDir $out/bin + mkdir -p $out/bin for i in $out/libexec/android-sdk-*/tools/* do diff --git a/pkgs/development/mobile/xcodeenv/simulate-app.nix b/pkgs/development/mobile/xcodeenv/simulate-app.nix index d25ef0f8e431..c999497d8c09 100644 --- a/pkgs/development/mobile/xcodeenv/simulate-app.nix +++ b/pkgs/development/mobile/xcodeenv/simulate-app.nix @@ -10,7 +10,7 @@ in stdenv.mkDerivation { name = stdenv.lib.replaceChars [" "] [""] name; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cat > $out/bin/run-test-simulator << "EOF" #! ${stdenv.shell} -e diff --git a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix index 71e34ee5127d..fd375d6213c6 100644 --- a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix +++ b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "xcode-wrapper-"+version; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cd $out/bin ln -s /usr/bin/xcode-select ln -s /usr/bin/xcodebuild diff --git a/pkgs/development/ocaml-modules/ocamlmake/default.nix b/pkgs/development/ocaml-modules/ocamlmake/default.nix index 0170119d94e0..3f91901d9b64 100644 --- a/pkgs/development/ocaml-modules/ocamlmake/default.nix +++ b/pkgs/development/ocaml-modules/ocamlmake/default.nix @@ -14,7 +14,7 @@ in stdenv.mkDerivation { }; installPhase = '' - ensureDir "$out/include/" + mkdir -p "$out/include/" cp OCamlMakefile "$out/include/" ''; diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix index a415ffd152d7..239416535755 100644 --- a/pkgs/development/tools/apktool/default.nix +++ b/pkgs/development/tools/apktool/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { installPhase = '' install -D apktool.jar "$out/libexec/apktool/apktool.jar" - ensureDir "$out/bin" + mkdir -p "$out/bin" makeWrapper "${jre}/bin/java" "$out/bin/apktool" \ --add-flags "-jar $out/libexec/apktool/apktool.jar" \ --prefix PATH : "${buildTools}/build-tools/android-4.3/" diff --git a/pkgs/development/tools/literate-programming/noweb/default.nix b/pkgs/development/tools/literate-programming/noweb/default.nix index 291bc29e1b70..4f8691c40adb 100644 --- a/pkgs/development/tools/literate-programming/noweb/default.nix +++ b/pkgs/development/tools/literate-programming/noweb/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { sha256 = "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"; }; preBuild = '' - ensureDir $out/lib/noweb + mkdir -p $out/lib/noweb cd src makeFlags="BIN=$out/bin LIB=$out/lib/noweb MAN=$out/share/man TEXINPUTS=$out/share/texmf/tex/latex" ''; diff --git a/pkgs/development/tools/misc/distcc/masq.nix b/pkgs/development/tools/misc/distcc/masq.nix index 117480670c39..753c35b5d3a2 100644 --- a/pkgs/development/tools/misc/distcc/masq.nix +++ b/pkgs/development/tools/misc/distcc/masq.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { phases = [ "installPhase" ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin bin=${gccRaw}/bin diff --git a/pkgs/development/tools/misc/grafana/default.nix b/pkgs/development/tools/misc/grafana/default.nix index 346c7fb6ad29..b1566684cf0b 100644 --- a/pkgs/development/tools/misc/grafana/default.nix +++ b/pkgs/development/tools/misc/grafana/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { phases = ["unpackPhase" "installPhase"]; installPhase = '' - ensureDir $out && cp -R * $out + mkdir -p $out && cp -R * $out ${optionalString (conf!=null) ''cp ${conf} $out/config.js''} ''; diff --git a/pkgs/development/tools/misc/opengrok/default.nix b/pkgs/development/tools/misc/opengrok/default.nix index 8f77b3d7283a..d38c862ecfb1 100644 --- a/pkgs/development/tools/misc/opengrok/default.nix +++ b/pkgs/development/tools/misc/opengrok/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper ]; installPhase = '' - ensureDir $out + mkdir -p $out cp -a * $out/ substituteInPlace $out/bin/OpenGrok --replace /bin/uname ${coreutils}/bin/uname wrapProgram $out/bin/OpenGrok \ diff --git a/pkgs/development/tools/node-webkit/default.nix b/pkgs/development/tools/node-webkit/default.nix index be125801bd50..1c891ddf8765 100644 --- a/pkgs/development/tools/node-webkit/default.nix +++ b/pkgs/development/tools/node-webkit/default.nix @@ -33,8 +33,8 @@ in stdenv.mkDerivation rec { installPhase = let LD_LIBRARY_PATH = "${nwEnv}/lib:${nwEnv}/lib64:$out/share/node-webkit"; in '' - ensureDir $out/bin - ensureDir $out/share/node-webkit + mkdir -p $out/bin + mkdir -p $out/share/node-webkit cp -R * $out/share/node-webkit ln -s ${udev}/lib/libudev.so $out/share/node-webkit/libudev.so.0 diff --git a/pkgs/development/tools/ocaml/deriving/default.nix b/pkgs/development/tools/ocaml/deriving/default.nix index d53f41b5da5c..55bbf3748ea9 100644 --- a/pkgs/development/tools/ocaml/deriving/default.nix +++ b/pkgs/development/tools/ocaml/deriving/default.nix @@ -52,7 +52,7 @@ versionedDerivation "ocaml-deriving" version { # not all tests compile !? # (cd tests; make) - ensureDir $out/bin + mkdir -p $out/bin cp -a lib $out/ cp -a syntax $out diff --git a/pkgs/development/tools/yuicompressor/default.nix b/pkgs/development/tools/yuicompressor/default.nix index 5dcc30811e22..1a5485af541d 100644 --- a/pkgs/development/tools/yuicompressor/default.nix +++ b/pkgs/development/tools/yuicompressor/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { }; buildCommand = '' - ensureDir $out/lib + mkdir -p $out/lib ln -s $src $out/lib/yuicompressor.jar ''; } diff --git a/pkgs/games/andyetitmoves/default.nix b/pkgs/games/andyetitmoves/default.nix index cf3f6e1563b8..ec14325e3d9e 100644 --- a/pkgs/games/andyetitmoves/default.nix +++ b/pkgs/games/andyetitmoves/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { phases = "unpackPhase installPhase"; installPhase = '' - ensureDir $out/{opt/andyetitmoves,bin} + mkdir -p $out/{opt/andyetitmoves,bin} cp -r * $out/opt/andyetitmoves/ fullPath=${stdenv.gcc.gcc}/lib64 diff --git a/pkgs/games/crafty/default.nix b/pkgs/games/crafty/default.nix index 54deae2ecfe1..0e2796df22d8 100644 --- a/pkgs/games/crafty/default.nix +++ b/pkgs/games/crafty/default.nix @@ -621,10 +621,10 @@ stdenv.mkDerivation rec { else "make"; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p ./crafty $out/bin - ensureDir $out/share/crafty + mkdir -p $out/share/crafty cd $out/share/crafty $out/bin/crafty "books create ${startPgn} 60" @@ -635,7 +635,7 @@ stdenv.mkDerivation rec { $out/bin/crafty "book create enormous.pgn 60" rm -f *.001 enormous.pgn - ensureDir $out/share/crafty/TB + mkdir -p $out/share/crafty/TB ${stdenv.lib.fold (tb: acc: acc + "\nln -s " + toString tb diff --git a/pkgs/games/gsb/default.nix b/pkgs/games/gsb/default.nix index 52c3830c22a4..757d3cf7681e 100644 --- a/pkgs/games/gsb/default.nix +++ b/pkgs/games/gsb/default.nix @@ -32,8 +32,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.gcc.gcc + "/lib64"; installPhase = '' - ensureDir $out/libexec/positech/GSB/ - ensureDir $out/bin + mkdir -p $out/libexec/positech/GSB/ + mkdir -p $out/bin patchelf \ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ diff --git a/pkgs/games/openlierox/default.nix b/pkgs/games/openlierox/default.nix index 0c7e46ae0740..ede7b6fdac43 100644 --- a/pkgs/games/openlierox/default.nix +++ b/pkgs/games/openlierox/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin $out/share/OpenLieroX + mkdir -p $out/bin $out/share/OpenLieroX cp bin/* $out/bin cp -R ../share/gamedir/* $out/share/OpenLieroX ''; diff --git a/pkgs/games/opentyrian/default.nix b/pkgs/games/opentyrian/default.nix index 260b146217cc..5e2ecdbcc5c7 100644 --- a/pkgs/games/opentyrian/default.nix +++ b/pkgs/games/opentyrian/default.nix @@ -22,9 +22,9 @@ stdenv.mkDerivation rec { "; buildPhase = "make release"; installPhase = " - ensureDir $out/bin + mkdir -p $out/bin cp ./opentyrian $out/bin - ensureDir $out/share/opentyrian/data + mkdir -p $out/share/opentyrian/data unzip -j $data -d $out/share/opentyrian/data "; diff --git a/pkgs/games/vessel/default.nix b/pkgs/games/vessel/default.nix index 9b9dd6c1f43f..8a92490b6e0c 100644 --- a/pkgs/games/vessel/default.nix +++ b/pkgs/games/vessel/default.nix @@ -24,8 +24,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.lib.makeLibraryPath [ SDL pulseaudio alsaLib ] ; installPhase = '' - ensureDir $out/libexec/strangeloop/vessel/ - ensureDir $out/bin + mkdir -p $out/libexec/strangeloop/vessel/ + mkdir -p $out/bin # allow scripting of the mojoinstaller gcc -fPIC -shared -o isatty.so $ld_preload diff --git a/pkgs/games/worldofgoo/default.nix b/pkgs/games/worldofgoo/default.nix index 13e7e487c8f0..c39ffb1de058 100644 --- a/pkgs/games/worldofgoo/default.nix +++ b/pkgs/games/worldofgoo/default.nix @@ -50,8 +50,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.gcc.gcc + "/lib64"; installPhase = '' - ensureDir $out/libexec/2dboy/WorldOfGoo/ - ensureDir $out/bin + mkdir -p $out/libexec/2dboy/WorldOfGoo/ + mkdir -p $out/bin patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath $libPath ./WorldOfGoo.bin64 diff --git a/pkgs/misc/emulators/bsod/default.nix b/pkgs/misc/emulators/bsod/default.nix index 181a89b66677..a6cb42d5c679 100644 --- a/pkgs/misc/emulators/bsod/default.nix +++ b/pkgs/misc/emulators/bsod/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bsod $out/bin ''; diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index 976e4dc687f3..4bc9a11a5894 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -89,7 +89,7 @@ let vimHelpTags = '' installPhase = '' target=$out/vim-plugins/$path - ensureDir $out/vim-plugins + mkdir -p $out/vim-plugins cp -r . $target ${vimHelpTags} vimHelpTags $target diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix index 73585d59c0b3..2a48590154e4 100644 --- a/pkgs/os-specific/darwin/xcode/default.nix +++ b/pkgs/os-specific/darwin/xcode/default.nix @@ -31,12 +31,12 @@ in stdenv.mkDerivation rec { patches = optional (osxVersion == "10.9") ./gcc-fix-enum-attributes.patch; installPhase = '' - ensureDir "$out/share/sysroot" + mkdir -p "$out/share/sysroot" cp -a * "$out/share/sysroot/" ln -s "$out/share/sysroot/usr/lib" "$out/lib" ln -s "$out/share/sysroot/usr/include" "$out/include" - ensureDir "$toolchain" + mkdir -p "$toolchain" pushd "$toolchain" ${xpwn}/bin/hfsplus "$(dirs +1)/../main.hfs" extractall \ Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr \ diff --git a/pkgs/os-specific/linux/apparmor/default.nix b/pkgs/os-specific/linux/apparmor/default.nix index 12173e20f3f9..8048419a93ba 100644 --- a/pkgs/os-specific/linux/apparmor/default.nix +++ b/pkgs/os-specific/linux/apparmor/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { make make check make install - ensureDir $out/lib/perl5/site_perl/ + mkdir -p $out/lib/perl5/site_perl/ cp swig/perl/LibAppArmor.pm $out/lib/perl5/site_perl/ cp swig/perl/LibAppArmor.bs $out/lib/perl5/site_perl/ # this is automatically copied elsewhere.... diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix index e12c80e08864..6c7d6d5330e2 100644 --- a/pkgs/os-specific/linux/bbswitch/default.nix +++ b/pkgs/os-specific/linux/bbswitch/default.nix @@ -22,10 +22,10 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/lib/modules/${kernel.modDirVersion}/misc + mkdir -p $out/lib/modules/${kernel.modDirVersion}/misc cp bbswitch.ko $out/lib/modules/${kernel.modDirVersion}/misc - ensureDir $out/bin + mkdir -p $out/bin tee $out/bin/discrete_vga_poweroff << EOF #!/bin/sh diff --git a/pkgs/os-specific/linux/frandom/default.nix b/pkgs/os-specific/linux/frandom/default.nix index 419207882f83..1814a72667a6 100644 --- a/pkgs/os-specific/linux/frandom/default.nix +++ b/pkgs/os-specific/linux/frandom/default.nix @@ -20,10 +20,10 @@ stdenv.mkDerivation rec { installPhase = '' kernelVersion=${kernel.modDirVersion} - ensureDir $out/lib/modules/$kernelVersion/misc + mkdir -p $out/lib/modules/$kernelVersion/misc cp frandom.ko $out/lib/modules/$kernelVersion/misc - ensureDir $out/lib/udev/rules.d + mkdir -p $out/lib/udev/rules.d tee $out/lib/udev/rules.d/10-frandom.rules <<-EOF # # These are the rules for the frandom devices. In theory, we could let diff --git a/pkgs/os-specific/linux/gogoclient/default.nix b/pkgs/os-specific/linux/gogoclient/default.nix index 09a449bbede9..a627a8cbcc94 100644 --- a/pkgs/os-specific/linux/gogoclient/default.nix +++ b/pkgs/os-specific/linux/gogoclient/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { buildInputs = [openssl]; preFixup = '' - ensureDir $out/share/${name} + mkdir -p $out/share/${name} chmod 444 $out/bin/gogoc.conf mv $out/bin/gogoc.conf $out/share/${name}/gogoc.conf.sample rm $out/bin/gogoc.conf.sample diff --git a/pkgs/os-specific/linux/google-authenticator/default.nix b/pkgs/os-specific/linux/google-authenticator/default.nix index a9278f0c7ce0..7667b330f231 100644 --- a/pkgs/os-specific/linux/google-authenticator/default.nix +++ b/pkgs/os-specific/linux/google-authenticator/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin $out/lib/security + mkdir -p $out/bin $out/lib/security cp pam_google_authenticator.so $out/lib/security cp google-authenticator $out/bin ''; diff --git a/pkgs/os-specific/linux/i7z/default.nix b/pkgs/os-specific/linux/i7z/default.nix index 33ac05aef478..80e43f17b3c6 100644 --- a/pkgs/os-specific/linux/i7z/default.nix +++ b/pkgs/os-specific/linux/i7z/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/sbin + mkdir -p $out/sbin make install prefix=$out install -Dm755 GUI/i7z_GUI $out/sbin/i7z-gui ''; diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix index 5c36bb097812..463722d2c961 100644 --- a/pkgs/os-specific/linux/mcelog/default.nix +++ b/pkgs/os-specific/linux/mcelog/default.nix @@ -26,7 +26,7 @@ in stdenv.mkDerivation { makeFlags = "prefix=$(out) etcprefix=$(out) DOCDIR=$(out)/share/doc"; preInstall = '' - ensureDir $out/share/doc + mkdir -p $out/share/doc ''; meta = { diff --git a/pkgs/os-specific/linux/microcode/converter.nix b/pkgs/os-specific/linux/microcode/converter.nix index 49babc6ca57b..da4d96772171 100644 --- a/pkgs/os-specific/linux/microcode/converter.nix +++ b/pkgs/os-specific/linux/microcode/converter.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir "$out/bin" + mkdir -p "$out/bin" cp intel-microcode2ucode "$out/bin/" ''; diff --git a/pkgs/os-specific/linux/netatop/default.nix b/pkgs/os-specific/linux/netatop/default.nix index a863ee8a4d04..e1cdd919e935 100644 --- a/pkgs/os-specific/linux/netatop/default.nix +++ b/pkgs/os-specific/linux/netatop/default.nix @@ -22,8 +22,8 @@ stdenv.mkDerivation { ''; preInstall = '' - ensureDir $out/bin $out/sbin $out/share/man/man{4,8} - ensureDir $out/lib/modules/${kernel.modDirVersion}/extra + mkdir -p $out/bin $out/sbin $out/share/man/man{4,8} + mkdir -p $out/lib/modules/${kernel.modDirVersion}/extra ''; meta = { diff --git a/pkgs/os-specific/linux/otpw/default.nix b/pkgs/os-specific/linux/otpw/default.nix index fe5f938b75b3..c270f0dd0c69 100644 --- a/pkgs/os-specific/linux/otpw/default.nix +++ b/pkgs/os-specific/linux/otpw/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin $out/lib/security $out/share/man/man{1,8} + mkdir -p $out/bin $out/lib/security $out/share/man/man{1,8} cp pam_*.so $out/lib/security cp otpw-gen $out/bin cp *.1 $out/share/man/man1 diff --git a/pkgs/os-specific/linux/rfkill/udev.nix b/pkgs/os-specific/linux/rfkill/udev.nix index 6cf6e4adfa07..054ed471eaaf 100644 --- a/pkgs/os-specific/linux/rfkill/udev.nix +++ b/pkgs/os-specific/linux/rfkill/udev.nix @@ -31,12 +31,12 @@ stdenv.mkDerivation { dontBuild = true; installPhase = '' - ensureDir "$out/etc/udev/rules.d/"; + mkdir -p "$out/etc/udev/rules.d/"; cat > "$out/etc/udev/rules.d/90-rfkill.rules" << EOF SUBSYSTEM=="rfkill", ATTR{type}=="wlan", RUN+="$out/bin/rfkill-hook.sh" EOF - ensureDir "$out/bin/"; + mkdir -p "$out/bin/"; cp ${./rfkill-hook.sh} "$out/bin/rfkill-hook.sh" chmod +x "$out/bin/rfkill-hook.sh"; ''; diff --git a/pkgs/os-specific/linux/x86info/default.nix b/pkgs/os-specific/linux/x86info/default.nix index 6cd2a431a605..eaec63f98bfc 100644 --- a/pkgs/os-specific/linux/x86info/default.nix +++ b/pkgs/os-specific/linux/x86info/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ pciutils python ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp x86info lsmsr $out/bin ''; diff --git a/pkgs/servers/dict/dictd-wiktionary.nix b/pkgs/servers/dict/dictd-wiktionary.nix index 9e9c05d2f915..370bfd39137a 100644 --- a/pkgs/servers/dict/dictd-wiktionary.nix +++ b/pkgs/servers/dict/dictd-wiktionary.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { builder = writeScript "wiktionary-builder.sh" '' source $stdenv/setup - ensureDir $out/share/dictd/ + mkdir -p $out/share/dictd/ cd $out/share/dictd export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive diff --git a/pkgs/servers/dict/dictd-wordnet.nix b/pkgs/servers/dict/dictd-wordnet.nix index 063868ddc6e8..b6680e8b21c4 100644 --- a/pkgs/servers/dict/dictd-wordnet.nix +++ b/pkgs/servers/dict/dictd-wordnet.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { builder = writeScript "builder.sh" '' . ${stdenv}/setup - ensureDir $out/share/dictd/ + mkdir -p $out/share/dictd/ cd $out/share/dictd for i in ${wordnet}/dict/data.*; do diff --git a/pkgs/servers/http/thttpd/default.nix b/pkgs/servers/http/thttpd/default.nix index e03183cbe49d..0bb3d96b37b7 100644 --- a/pkgs/servers/http/thttpd/default.nix +++ b/pkgs/servers/http/thttpd/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { ''; preInstall = '' - ensureDir "$out/man/man1" + mkdir -p "$out/man/man1" sed -i -e 's/-o bin -g bin *//' Makefile sed -i -e '/chgrp/d' extras/Makefile ''; diff --git a/pkgs/servers/monitoring/seyren/default.nix b/pkgs/servers/monitoring/seyren/default.nix index 541c377c4049..e6e151295687 100644 --- a/pkgs/servers/monitoring/seyren/default.nix +++ b/pkgs/servers/monitoring/seyren/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper jre src ]; installPhase = '' - ensureDir "$out"/bin + mkdir -p "$out"/bin makeWrapper "${jre}/bin/java" "$out"/bin/seyren --add-flags "-jar $src" ''; diff --git a/pkgs/servers/nosql/influxdb/default.nix b/pkgs/servers/nosql/influxdb/default.nix index fa9c48c6ea92..77852b6d2ed9 100644 --- a/pkgs/servers/nosql/influxdb/default.nix +++ b/pkgs/servers/nosql/influxdb/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { wrapProgram "$out/bin/influxdb" \ --prefix LD_LIBRARY_PATH : "${stdenv.gcc.gcc}/lib:${stdenv.gcc.gcc}/lib64" - ensureDir $out/share/influxdb + mkdir -p $out/share/influxdb cp -R admin scripts config.toml $out/share/influxdb ''; diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix index 274fc89f94d0..9274ba86a707 100644 --- a/pkgs/servers/serfdom/default.nix +++ b/pkgs/servers/serfdom/default.nix @@ -112,7 +112,7 @@ in ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bin/serf $out/bin ''; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix index 9ea63a46be3e..3abffc469269 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix @@ -116,7 +116,7 @@ rec { buildCommand = '' set -x - ensureDir $out/bin $out/lib $out/libexec + mkdir -p $out/bin $out/lib $out/libexec # Copy what we need of Glibc. cp -d ${glibc}/lib/ld-*.so* $out/lib diff --git a/pkgs/tools/backup/store-backup/default.nix b/pkgs/tools/backup/store-backup/default.nix index e9b98fec7100..c986adeafdcc 100644 --- a/pkgs/tools/backup/store-backup/default.nix +++ b/pkgs/tools/backup/store-backup/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/scripts + mkdir -p $out/scripts mv * $out mv $out/_ATTENTION_ $out/doc mv $out/{correct.sh,cron-storebackup} $out/scripts diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix index bff5aaf242ba..23340f88376b 100644 --- a/pkgs/tools/filesystems/unionfs-fuse/default.nix +++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { # This must be done in preConfigure because the build process removes # helper from the source directory during the build. preConfigure = '' - ensureDir $out/sbin + mkdir -p $out/sbin cp -a mount.unionfs $out/sbin/mount.unionfs-fuse substituteInPlace $out/sbin/mount.unionfs-fuse --replace mount.fuse ${fuse}/sbin/mount.fuse substituteInPlace $out/sbin/mount.unionfs-fuse --replace unionfs $out/bin/unionfs diff --git a/pkgs/tools/misc/debootstrap/default.nix b/pkgs/tools/misc/debootstrap/default.nix index aac7855827cc..a76a57864d94 100644 --- a/pkgs/tools/misc/debootstrap/default.nix +++ b/pkgs/tools/misc/debootstrap/default.nix @@ -20,7 +20,7 @@ let ]; # TODO install man installPhase = '' - ensureDir $out/sbin + mkdir -p $out/sbin ls -l t=$out/sbin/MAKEDEV cp MAKEDEV $t @@ -78,7 +78,7 @@ stdenv.mkDerivation { functions d=$out/share/debootstrap - ensureDir $out/{share/debootstrap,bin} + mkdir -p $out/{share/debootstrap,bin} ${fakeroot}/bin/fakeroot -- make devices.tar.gz MAKEDEV=${makedev}/sbin/MAKEDEV @@ -94,7 +94,7 @@ stdenv.mkDerivation { EOF chmod +x $out/bin/debootstrap - ensureDir $out/man/man8 + mkdir -p $out/man/man8 mv debootstrap.8 $out/man/man8 ''; diff --git a/pkgs/tools/misc/megacli/default.nix b/pkgs/tools/misc/megacli/default.nix index 2b15d4470c36..ef85c3994a8e 100644 --- a/pkgs/tools/misc/megacli/default.nix +++ b/pkgs/tools/misc/megacli/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { [ stdenv.gcc.gcc stdenv.gcc.libc ncurses ]; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cd $out unzip ${src} rpm2cpio linux/MegaCli-8.07.07-1.noarch.rpm | cpio -idmv diff --git a/pkgs/tools/misc/multitail/default.nix b/pkgs/tools/misc/multitail/default.nix index 96d3764abd46..831bc532c331 100644 --- a/pkgs/tools/misc/multitail/default.nix +++ b/pkgs/tools/misc/multitail/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { makeFlags = stdenv.lib.optionalString stdenv.isDarwin "-f makefile.macosx"; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp multitail $out/bin ''; diff --git a/pkgs/tools/misc/picocom/default.nix b/pkgs/tools/misc/picocom/default.nix index bb08091ad57a..126725eaafcb 100644 --- a/pkgs/tools/misc/picocom/default.nix +++ b/pkgs/tools/misc/picocom/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin $out/share/man/man8 + mkdir -p $out/bin $out/share/man/man8 cp picocom $out/bin cp picocom.8 $out/share/man/man8 ''; diff --git a/pkgs/tools/misc/rkflashtool/default.nix b/pkgs/tools/misc/rkflashtool/default.nix index c985183c1c00..6b74f9ac5d34 100644 --- a/pkgs/tools/misc/rkflashtool/default.nix +++ b/pkgs/tools/misc/rkflashtool/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp rkunpack rkcrc rkflashtool $out/bin ''; diff --git a/pkgs/tools/misc/sl/default.nix b/pkgs/tools/misc/sl/default.nix index 14cc6c4260f7..2ed8d89d43e4 100644 --- a/pkgs/tools/misc/sl/default.nix +++ b/pkgs/tools/misc/sl/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp sl $out/bin ''; diff --git a/pkgs/tools/networking/connect/default.nix b/pkgs/tools/networking/connect/default.nix index c6291efad312..8723c53c3229 100644 --- a/pkgs/tools/networking/connect/default.nix +++ b/pkgs/tools/networking/connect/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; buildPhase = '' - ensureDir $out/bin + mkdir -p $out/bin gcc -o $out/bin/connect connect.c ''; diff --git a/pkgs/tools/networking/filegive/default.nix b/pkgs/tools/networking/filegive/default.nix index a47a0397bf5a..f9efc6815b67 100644 --- a/pkgs/tools/networking/filegive/default.nix +++ b/pkgs/tools/networking/filegive/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp filegive $out/bin ''; diff --git a/pkgs/tools/networking/reaver-wps/default.nix b/pkgs/tools/networking/reaver-wps/default.nix index a057985b48cc..65d681fdc224 100644 --- a/pkgs/tools/networking/reaver-wps/default.nix +++ b/pkgs/tools/networking/reaver-wps/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; preInstall = '' - ensureDir $out/bin + mkdir -p $out/bin ''; meta = { diff --git a/pkgs/tools/networking/udptunnel/default.nix b/pkgs/tools/networking/udptunnel/default.nix index 88ee926e4065..0cb777b01af3 100644 --- a/pkgs/tools/networking/udptunnel/default.nix +++ b/pkgs/tools/networking/udptunnel/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/bin $out/share/udptunnel + mkdir -p $out/bin $out/share/udptunnel cp udptunnel $out/bin cp README COPYING* $out/share/udptunnel ''; diff --git a/pkgs/tools/security/fprot/default.nix b/pkgs/tools/security/fprot/default.nix index 2a8531a17954..b43ea402f6dc 100644 --- a/pkgs/tools/security/fprot/default.nix +++ b/pkgs/tools/security/fprot/default.nix @@ -11,10 +11,10 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp fpscan $out/bin - ensureDir $out/opt/f-prot + mkdir -p $out/opt/f-prot cp fpupdate $out/opt/f-prot cp product.data.default $out/opt/f-prot/product.data cp license.key $out/opt/f-prot/ @@ -23,12 +23,12 @@ stdenv.mkDerivation rec { patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $out/opt/f-prot/fpupdate - ensureDir $out/share/man/ - ensureDir $out/share/man/man1 + mkdir -p $out/share/man/ + mkdir -p $out/share/man/man1 cp doc/man/fpscan.1 $out/share/man/man1 - ensureDir $out/share/man/man5 + mkdir -p $out/share/man/man5 cp doc/man/f-prot.conf.5 $out/share/man/man5 - ensureDir $out/share/man/man8 + mkdir -p $out/share/man/man8 cp doc/man/fpupdate.8 $out/share/man/man8 ''; diff --git a/pkgs/tools/security/meo/default.nix b/pkgs/tools/security/meo/default.nix index e18b68c7593f..820919d1a2ef 100644 --- a/pkgs/tools/security/meo/default.nix +++ b/pkgs/tools/security/meo/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp tools/{meo,p11} $out/bin cp meo-gui/meo-gui $out/bin cp meo-gui/meo-gui $out/bin diff --git a/pkgs/tools/security/tor/torbrowser.nix b/pkgs/tools/security/tor/torbrowser.nix index 7be7c79888ea..f220a46bddcf 100644 --- a/pkgs/tools/security/tor/torbrowser.nix +++ b/pkgs/tools/security/tor/torbrowser.nix @@ -45,8 +45,8 @@ in stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/share/tor-browser - ensureDir $out/bin + mkdir -p $out/share/tor-browser + mkdir -p $out/bin cp -R * $out/share/tor-browser cat > "$out/bin/tor-browser" << EOF diff --git a/pkgs/tools/system/storebrowse/default.nix b/pkgs/tools/system/storebrowse/default.nix index c46372bcd4b6..a997e38ba4a3 100644 --- a/pkgs/tools/system/storebrowse/default.nix +++ b/pkgs/tools/system/storebrowse/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp storebrowse $out/bin ''; diff --git a/pkgs/tools/system/vboot_reference/default.nix b/pkgs/tools/system/vboot_reference/default.nix index e1c4734bbdaf..087a3212fc2e 100644 --- a/pkgs/tools/system/vboot_reference/default.nix +++ b/pkgs/tools/system/vboot_reference/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp build/cgpt/cgpt $out/bin cp build/utility/vbutil_kernel $out/bin cp build/utility/vbutil_key $out/bin diff --git a/pkgs/tools/typesetting/tex/pgfplots/default.nix b/pkgs/tools/typesetting/tex/pgfplots/default.nix index bc47244a5fa8..67739350c6f6 100644 --- a/pkgs/tools/typesetting/tex/pgfplots/default.nix +++ b/pkgs/tools/typesetting/tex/pgfplots/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { buildPhase = "true"; installPhase = " - ensureDir $out/share/texmf-nix + mkdir -p $out/share/texmf-nix cp -prd * $out/share/texmf-nix "; } From b3b9c51b34077edda65a07d0fc97e1a385d1fc7f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 14:57:12 +0200 Subject: [PATCH 07/53] Add a deprecation warning to ensureDir --- pkgs/stdenv/generic/setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index ce83b1f69610..4f78713a5494 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -120,6 +120,7 @@ fi # Ensure that the given directories exists. ensureDir() { + echo "warning: ‘ensureDir’ is deprecated; use ‘mkdir’ instead" >&2 local dir for dir in "$@"; do if ! [ -x "$dir" ]; then mkdir -p "$dir"; fi From 7fe89be1464dd0263c7c987d2460613f44c7b229 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 16:39:39 +0200 Subject: [PATCH 08/53] gcc: Fix purity Somewhere the no-sys-dirs.patch got disabled, so gcc was looking in /usr/local/include and /usr/lib. Since I can't fix the patch easily, I've borrowed the --sysroot trick from clang-wrapper. This causes builtin paths to be prefixed with /var/empty (e.g. /var/empty/usr/lib), which don't exist. --- pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 1 + pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 3 ++ .../development/compilers/gcc/4.8/default.nix | 1 - .../compilers/gcc/4.8/no-sys-dirs.patch | 41 ------------------- 4 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 2ad7783a442c..c53fd44207d0 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -77,6 +77,7 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then n=$((n + 1)) done params=("${rest[@]}") + NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE --sysroot=/var/empty" fi diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 74b6273848ed..ff3f320e0d8e 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -32,6 +32,9 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ # We cannot skip this; barf. echo "impure path \`$p' used in link" >&2 exit 1 + elif test "${p:0:9}" = "--sysroot"; then + # Our ld is not built with sysroot support (Can we fix that?) + : else rest=("${rest[@]}" "$p") fi diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 58732f1a0be2..21487a09dcd2 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -67,7 +67,6 @@ let version = "4.8.3"; patches = [] ++ optional enableParallelBuilding ./parallel-bconfig.patch ++ optional (cross != null) ./libstdc++-target.patch - # ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. ++ optional langAda ./gnat-cflags.patch diff --git a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch deleted file mode 100644 index 79901703cb82..000000000000 --- a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ru gcc-4.3.1-orig/gcc/cppdefault.c gcc-4.3.1/gcc/cppdefault.c ---- gcc-4.3.1-orig/gcc/cppdefault.c 2007-07-26 10:37:01.000000000 +0200 -+++ gcc-4.3.1/gcc/cppdefault.c 2008-06-25 17:48:23.000000000 +0200 -@@ -41,6 +41,10 @@ - # undef CROSS_INCLUDE_DIR - #endif - -+#undef LOCAL_INCLUDE_DIR -+#undef SYSTEM_INCLUDE_DIR -+#undef STANDARD_INCLUDE_DIR -+ - const struct default_include cpp_include_defaults[] - #ifdef INCLUDE_DEFAULTS - = INCLUDE_DEFAULTS; -diff -ru gcc-4.3.1-orig/gcc/gcc.c gcc-4.3.1/gcc/gcc.c ---- gcc-4.3.1-orig/gcc/gcc.c 2008-03-02 23:55:19.000000000 +0100 -+++ gcc-4.3.1/gcc/gcc.c 2008-06-25 17:52:53.000000000 +0200 -@@ -1478,10 +1478,10 @@ - /* Default prefixes to attach to command names. */ - - #ifndef STANDARD_STARTFILE_PREFIX_1 --#define STANDARD_STARTFILE_PREFIX_1 "/lib/" -+#define STANDARD_STARTFILE_PREFIX_1 "" - #endif - #ifndef STANDARD_STARTFILE_PREFIX_2 --#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/" -+#define STANDARD_STARTFILE_PREFIX_2 "" - #endif - - #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */ ---- gcc-4.3.1-orig/gcc/Makefile.in 2008-05-11 20:54:15.000000000 +0200 -+++ gcc-4.3.1/gcc/Makefile.in 2008-06-25 17:48:23.000000000 +0200 -@@ -3277,7 +3281,7 @@ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ - -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -- -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -+ -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \ - -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DPREFIX=\"$(prefix)/\" \ From 55e8e0ef9bf2c927edbdcc05097a1e7185184cba Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 12:46:42 +0200 Subject: [PATCH 09/53] gcc: Slight builder cleanup --- pkgs/development/compilers/gcc/4.8/builder.sh | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/builder.sh b/pkgs/development/compilers/gcc/4.8/builder.sh index 7c9b9420ddaa..f0f428e4dc51 100644 --- a/pkgs/development/compilers/gcc/4.8/builder.sh +++ b/pkgs/development/compilers/gcc/4.8/builder.sh @@ -109,13 +109,11 @@ if test "$noSysDirs" = "1"; then fi fi - # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find # the startfiles. # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx # for the startfiles. - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ @@ -128,8 +126,7 @@ if test "$noSysDirs" = "1"; then ) if test -z "$targetConfig"; then - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \ ) @@ -138,13 +135,11 @@ if test "$noSysDirs" = "1"; then if test -n "$targetConfig" -a "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing # limits.h in this stagae - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ LIMITS_H_TEST=false \ ) else - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ LIMITS_H_TEST=true \ ) fi @@ -163,6 +158,7 @@ preConfigure() { # Patch to get armvt5el working: sed -i -e 's/ arm)/ arm*)/' newlib/configure.host fi + # Bug - they packaged zlib if test -d "zlib"; then # This breaks the build without-headers, which should build only @@ -189,8 +185,8 @@ preConfigure() { fi # Eval the preConfigure script from nix expression. - eval $providedPreConfigure; - env; + eval "$providedPreConfigure" + # Perform the build in a different directory. mkdir ../build cd ../build From 89f8af55f11b01e68cbfc6d10537413140261721 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 19:51:43 +0200 Subject: [PATCH 10/53] Darwin: Use xcrun to get the path to the SDK Recent versions of Xcode don't install headers in /usr/include but in a directory like /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include So use that instead, falling back to /usr/include in case of an older version of Xcode. --- .../development/compilers/gcc/4.8/default.nix | 23 ++++++++++++------- pkgs/stdenv/nix/default.nix | 9 +++++++- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 21487a09dcd2..10d6992ede1c 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -303,14 +303,21 @@ stdenv.mkDerivation ({ "\"--with-host-libstdcxx=-Wl,-rpath,\$prefix/lib/amd64 -lstdc++\" \"--with-boot-ldflags=-L../prev-x86_64-pc-solaris2.11/libstdc++-v3/src/.libs\""} ); - ${stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) - '' - export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` - export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" - export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" - export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" - ''} - ''; + '' + stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) '' + export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` + export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" + export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" + export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + if xcodePath=$(/usr/bin/xcrun --show-sdk-path); then + configureFlagsArray+=(--with-native-system-header-dir=$xcodePath/usr/include) + makeFlagsArray+=( \ + CFLAGS_FOR_BUILD=-F$xcodePath/System/Library/Frameworks \ + CFLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + FLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + ) + fi + ''; dontDisableStatic = true; diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 78e5b84a841e..84bcea7f643d 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -16,7 +16,14 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " fi - ''; + '' + (if stdenv.isDarwin then '' + export NIX_CFLAGS_COMPILE="--sysroot=/var/empty" + if xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null); then + NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + else + NIX_CFLAGS_COMPILE+=" -idirafter /usr/include -F/System/Library/Frameworks" + fi + '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From 0fd9db3cfbae877dcf7a07886c45197386cfef4d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 14:27:57 +0200 Subject: [PATCH 11/53] gcc-4.8: Get rid of lib64 Having a separate lib64 is bad because it requires special-casing in lots of places. Previously done in e4a11b4d92424c42f61ee55cf505ac1217944f4a, which apparently got lost going from 4.6 to 4.8. --- pkgs/development/compilers/gcc/4.8/builder.sh | 9 +++++++++ pkgs/development/compilers/gcc/4.8/default.nix | 2 ++ 2 files changed, 11 insertions(+) diff --git a/pkgs/development/compilers/gcc/4.8/builder.sh b/pkgs/development/compilers/gcc/4.8/builder.sh index f0f428e4dc51..3d24d34a2f26 100644 --- a/pkgs/development/compilers/gcc/4.8/builder.sh +++ b/pkgs/development/compilers/gcc/4.8/builder.sh @@ -200,6 +200,15 @@ postConfigure() { } +preInstall() { + # Make ‘lib64’ a symlink to ‘lib’. + if [ -n "$is64bit" -a -z "$enableMultilib" ]; then + mkdir -p $out/lib + ln -s lib $out/lib64 + fi +} + + postInstall() { # Remove precompiled headers for now. They are very big and # probably not very useful yet. diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 10d6992ede1c..8865ca7c9550 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -504,6 +504,8 @@ stdenv.mkDerivation ({ inherit enableParallelBuilding; + inherit (stdenv) is64bit; + meta = { homepage = http://gcc.gnu.org/; license = "GPLv3+"; # runtime support libraries are typically LGPLv3+ From 06536251c9c697eba324b18d9df8d0d95938048f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 13:08:09 +0200 Subject: [PATCH 12/53] readline: Don't use gcc-apple --- .../libraries/readline/no-arch_only.patch | 14 ++++++++++++++ .../libraries/readline/readline6.nix | 4 +++- pkgs/top-level/all-packages.nix | 18 ++---------------- 3 files changed, 19 insertions(+), 17 deletions(-) create mode 100644 pkgs/development/libraries/readline/no-arch_only.patch diff --git a/pkgs/development/libraries/readline/no-arch_only.patch b/pkgs/development/libraries/readline/no-arch_only.patch new file mode 100644 index 000000000000..b23eab5d9d73 --- /dev/null +++ b/pkgs/development/libraries/readline/no-arch_only.patch @@ -0,0 +1,14 @@ +diff -ru -x '*~' readline-6.2-orig/support/shobj-conf readline-6.2/support/shobj-conf +--- support/shobj-conf 2009-10-28 14:20:21.000000000 +0100 ++++ support/shobj-conf 2014-07-01 13:03:28.000000000 +0200 +@@ -168,8 +168,8 @@ + SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' + SHLIB_LIBSUFF='dylib' + +- SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`' +- SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' ++ SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup' ++ SHLIB_XLDFLAGS='-dynamiclib -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + + SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 + ;; diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index 0826e6c5f7cb..e6b49e413b8c 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -12,7 +12,9 @@ stdenv.mkDerivation (rec { patchFlags = "-p0"; patches = - [ ./link-against-ncurses.patch ] + [ ./link-against-ncurses.patch + ./no-arch_only.patch + ] ++ (let patch = nr: sha256: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bd5bb4f1832f..fff4371a2639 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5969,23 +5969,9 @@ let readline5 = callPackage ../development/libraries/readline/readline5.nix { }; - readline6 = callPackage ../development/libraries/readline/readline6.nix { - stdenv = - # On Darwin, Readline uses `-arch_only', which is specific to - # Apple-GCC. So give it what it expects. - if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + readline6 = callPackage ../development/libraries/readline/readline6.nix { }; - readline63 = callPackage ../development/libraries/readline/readline6.3.nix { - stdenv = - # On Darwin, Readline uses `-arch_only', which is specific to - # Apple-GCC. So give it what it expects. - if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + readline63 = callPackage ../development/libraries/readline/readline6.3.nix { }; librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { }; From 0d8014f6fcdf7fbbea93f5bf8fd1750da66d4d2c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 15:53:30 +0200 Subject: [PATCH 13/53] Darwin: Search for libraries in $sdk/usr/lib This required adding a new environment variable NIX_LDFLAGS_AFTER that ensures that the -L.../usr/lib flag happens last. --- pkgs/build-support/clang-wrapper/ld-wrapper.sh | 4 ++-- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 ++-- pkgs/stdenv/nix/default.nix | 10 ++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/pkgs/build-support/clang-wrapper/ld-wrapper.sh b/pkgs/build-support/clang-wrapper/ld-wrapper.sh index ae45c62d460a..105d1670eb6a 100644 --- a/pkgs/build-support/clang-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/clang-wrapper/ld-wrapper.sh @@ -48,8 +48,8 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) + extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extraBefore+=($NIX_LDFLAGS_BEFORE) fi diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index ff3f320e0d8e..5b8af068a00c 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -48,8 +48,8 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) + extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extraBefore+=($NIX_LDFLAGS_BEFORE) fi diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 84bcea7f643d..ba693443b056 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -17,12 +17,10 @@ import ../generic rec { xargsFlags=" " fi '' + (if stdenv.isDarwin then '' - export NIX_CFLAGS_COMPILE="--sysroot=/var/empty" - if xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null); then - NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" - else - NIX_CFLAGS_COMPILE+=" -idirafter /usr/include -F/System/Library/Frameworks" - fi + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" + xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From f46108aaf020173ec4fdf532d4c2cf26eabeb2a6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 16:22:34 +0200 Subject: [PATCH 14/53] Remove last reference to stdenvType --- pkgs/games/0ad/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/games/0ad/default.nix b/pkgs/games/0ad/default.nix index efbd59dbbe3f..39124d28f0a2 100644 --- a/pkgs/games/0ad/default.nix +++ b/pkgs/games/0ad/default.nix @@ -1,4 +1,4 @@ -{ stdenv, stdenvType, callPackage, fetchurl, python27 +{ stdenv, callPackage, fetchurl, python27 , pkgconfig, spidermonkey_24, boost, icu, libxml2, libpng , libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc , openalSoft, mesa, xproto, libX11, libXcursor, nspr, SDL @@ -16,8 +16,8 @@ let zeroadData = callPackage ./data.nix { inherit version releaseType; }; archForPremake = - if stdenv.lib.hasPrefix "x86_64-" stdenvType then "x64" else - if stdenv.lib.hasPrefix "i686-" stdenvType then "x32" else "ERROR"; + if stdenv.lib.hasPrefix "x86_64-" stdenv.system then "x64" else + if stdenv.lib.hasPrefix "i686-" stdenv.system then "x32" else "ERROR"; in stdenv.mkDerivation rec { From 0da7fadce32289e926415629a697028aa7296b96 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 16:55:14 +0200 Subject: [PATCH 15/53] stdenv: Fix __ignoreNulls Commit 262c21ed464a2593b54ec274a3b84083c0795f2d purported to enable ignoreNulls, but it was bogus because it set the flag on the wrong derivation (i.e. stdenv rather than the result of mkDerivation). --- pkgs/stdenv/generic/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 6047ecf853c5..0d8355e89cc3 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -55,8 +55,6 @@ let propagatedUserEnvPkgs = [gcc] ++ lib.filter lib.isDerivation initialPath; - - __ignoreNulls = true; } // rec { @@ -103,6 +101,7 @@ let stdenv = result; system = result.system; userHook = config.stdenv.userHook or null; + __ignoreNulls = true; # Inputs built by the cross compiler. buildInputs = lib.optionals (crossConfig != null) (buildInputs ++ extraBuildInputs); From 289895fe2ceae2ade5aad635018eaeeaeaa669c6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 14:55:44 +0200 Subject: [PATCH 16/53] Fix SNAFU using $NIX_LDFLAGS_AFTER --- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 5b8af068a00c..822c4a03a218 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -48,10 +48,12 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extra+=($NIX_LDFLAGS) extraBefore+=($NIX_LDFLAGS_BEFORE) fi +extra+=($NIX_LDFLAGS_AFTER) + # Add all used dynamic libraries to the rpath. if test "$NIX_DONT_SET_RPATH" != "1"; then From fd1a5d8531dd76097e493db20c6e123ff2cf257c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 19:52:25 +0200 Subject: [PATCH 17/53] Set MACOSX_DEPLOYMENT_TARGET This variable sets the minimal Mac OS X version required for running binaries produced by the Darwin toolchain. Since it defaults to the version of the user's SDK, setting it explicitly should make our builds more deterministic. It's now set to 10.6 because that's what hydra.nixos.org runs. --- pkgs/stdenv/nix/default.nix | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index ba693443b056..cb4c0fd0a61b 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -7,16 +7,14 @@ import ../generic rec { '' export NIX_ENFORCE_PURITY=1 export NIX_IGNORE_LD_THROUGH_GCC=1 - - if [ "$system" = "i686-darwin" -o "$system" = "powerpc-darwin" -o "$system" = "x86_64-darwin" ]; then - export NIX_ENFORCE_PURITY= - export NIX_DONT_SET_RPATH=1 - export NIX_NO_SELF_RPATH=1 - dontFixLibtool=1 - stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" - xargsFlags=" " - fi '' + (if stdenv.isDarwin then '' + export NIX_ENFORCE_PURITY= + export NIX_DONT_SET_RPATH=1 + export NIX_NO_SELF_RPATH=1 + dontFixLibtool=1 + stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" + xargsFlags=" " + export MACOSX_DEPLOYMENT_TARGET=10.6 export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" From a4f9b9c8b5ec9ef106671ffdf93e0059835d0ec1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 20:10:40 +0200 Subject: [PATCH 18/53] Partially merge gcc-wrapper and clang-wrapper Having a separate clang-wrapper is really unfortunate because it means that we'll forever forget to apply changes to both (e.g. commit 289895fe2ceae2ade5aad635018eaeeaeaa669c6). This commit gets rid of the redundant copies of ld-wrapper.sh and utils.sh. --- pkgs/build-support/clang-wrapper/add-flags | 2 +- .../clang-wrapper/clang-wrapper.sh | 6 +- pkgs/build-support/clang-wrapper/default.nix | 4 +- .../build-support/clang-wrapper/ld-wrapper.sh | 164 ------------------ pkgs/build-support/clang-wrapper/utils.sh | 24 --- 5 files changed, 6 insertions(+), 194 deletions(-) delete mode 100644 pkgs/build-support/clang-wrapper/ld-wrapper.sh delete mode 100644 pkgs/build-support/clang-wrapper/utils.sh diff --git a/pkgs/build-support/clang-wrapper/add-flags b/pkgs/build-support/clang-wrapper/add-flags index 3b0645471531..7a9711290aa1 100644 --- a/pkgs/build-support/clang-wrapper/add-flags +++ b/pkgs/build-support/clang-wrapper/add-flags @@ -21,4 +21,4 @@ if test -e @out@/nix-support/libc-ldflags-before; then export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" fi -export NIX_CLANG_WRAPPER_FLAGS_SET=1 +export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/clang-wrapper/clang-wrapper.sh b/pkgs/build-support/clang-wrapper/clang-wrapper.sh index b39aa2d721e8..57715274f1e2 100644 --- a/pkgs/build-support/clang-wrapper/clang-wrapper.sh +++ b/pkgs/build-support/clang-wrapper/clang-wrapper.sh @@ -1,10 +1,10 @@ #! @shell@ -e -if test -n "$NIX_CLANG_WRAPPER_START_HOOK"; then - source "$NIX_CLANG_WRAPPER_START_HOOK" +if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then + source "$NIX_GCC_WRAPPER_START_HOOK" fi -if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then source @out@/nix-support/add-flags.sh fi diff --git a/pkgs/build-support/clang-wrapper/default.nix b/pkgs/build-support/clang-wrapper/default.nix index 4b2a5a1182ea..7a5d87127d90 100644 --- a/pkgs/build-support/clang-wrapper/default.nix +++ b/pkgs/build-support/clang-wrapper/default.nix @@ -29,8 +29,8 @@ stdenv.mkDerivation { builder = ./builder.sh; setupHook = ./setup-hook.sh; clangWrapper = ./clang-wrapper.sh; - ldWrapper = ./ld-wrapper.sh; - utils = ./utils.sh; + ldWrapper = ../gcc-wrapper/ld-wrapper.sh; + utils = ../gcc-wrapper/utils.sh; addFlags = ./add-flags; inherit nativeTools nativeLibc nativePrefix clang clangVersion libcxx; diff --git a/pkgs/build-support/clang-wrapper/ld-wrapper.sh b/pkgs/build-support/clang-wrapper/ld-wrapper.sh deleted file mode 100644 index 105d1670eb6a..000000000000 --- a/pkgs/build-support/clang-wrapper/ld-wrapper.sh +++ /dev/null @@ -1,164 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_CLANG" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - elif test "${p:0:9}" = "--sysroot"; then - # Our ld is not built with sysroot support (Can we fix that?) - : - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) - extraBefore+=($NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - libs="" - addToLibs() { - libs="$libs $1" - } - - rpath="" - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif test "$p" = "-l"; then - addToLibs ${p2} - n=$((n + 1)) - elif test "${p:0:2}" = "-l"; then - addToLibs ${p:2} - elif test "$p" = "-dynamic-linker"; then - # Ignore the dynamic linker argument, or it - # will get into the next 'elif'. We don't want - # the dynamic linker path rpath to go always first. - n=$((n + 1)) - elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then - # This is a direct reference to a shared library, so add - # its directory to the rpath. - path="$(dirname "$p")"; - addToRPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - # It's important to add the rpath in the order of -L..., so - # the link time chosen objects will be those of runtime linking. - - for i in $libPath; do - for j in $libs; do - if test -f "$i/lib$j.so"; then - addToRPath $i - break - fi - done - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/clang-wrapper/utils.sh b/pkgs/build-support/clang-wrapper/utils.sh deleted file mode 100644 index 753b3772e956..000000000000 --- a/pkgs/build-support/clang-wrapper/utils.sh +++ /dev/null @@ -1,24 +0,0 @@ -skip () { - if test "$NIX_DEBUG" = "1"; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if test "${p:0:1}" != "/"; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "$p" != "/dev/null" -a \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} From 421ce6439c2e685065fe9c256b751225de51e0b3 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 2 Jul 2014 20:16:43 +0200 Subject: [PATCH 19/53] gdk-pixbuf: check for empty $out in setup-hook.sh. Closes #2818 --- pkgs/development/libraries/gdk-pixbuf/setup-hook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh index c983f9f6a612..06e820633b84 100644 --- a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh +++ b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh @@ -1,6 +1,6 @@ findGdkPixbufLoaders() { - if [ -z "$IN_NIX_SHELL" ]; then + if [ -n "$out" ] && [ -z "$IN_NIX_SHELL" ]; then # set pixbuf loaders.cache for this package From 8aacdfee7c0b211b736bce9362ed584020868845 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 8 Jul 2014 15:43:05 +0200 Subject: [PATCH 20/53] =?UTF-8?q?gawk:=20Remove=20unnecessary=20=E2=80=98g?= =?UTF-8?q?awk-=E2=80=99=20copy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This saves > 600 KiB. --- pkgs/tools/text/gawk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index b231f2875c09..f2db91d30369 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -8,8 +8,6 @@ stdenv.mkDerivation rec { sha256 = "0hin2hswbbd6kd6i4zzvgciwpl5fba8d2s524z8y5qagyz3x010q"; }; - patches = []; - doCheck = !stdenv.isCygwin; # XXX: `test-dup2' segfaults on Cygwin 6.1 buildInputs = [ libsigsegv ] @@ -20,6 +18,8 @@ stdenv.mkDerivation rec { # only darwin where reported, seems OK on non-chrooted Fedora (don't rebuild stdenv) ++ stdenv.lib.optional (!readlineSupport && stdenv.isDarwin) "--without-readline"; + postInstall = "rm $out/bin/gawk-*"; + meta = { homepage = http://www.gnu.org/software/gawk/; description = "GNU implementation of the Awk programming language"; From da9b5109967b49fb502a307240dfaa2aaceba1ce Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Tue, 8 Jul 2014 18:00:00 +0200 Subject: [PATCH 21/53] Move at_spi2_core and at_spi2_atk outside of the gnome3 attrset --- .../services/desktops/gnome3/at-spi2-core.nix | 7 ++-- .../gnome-3/3.10/core/at-spi2-atk/default.nix | 21 ------------ .../gnome-3/3.10/core/caribou/default.nix | 2 +- .../gnome-3/3.10/core/gnome-shell/default.nix | 2 +- pkgs/desktops/gnome-3/3.10/default.nix | 4 --- .../3.12/core/at-spi2-core/default.nix | 32 ------------------- pkgs/desktops/gnome-3/3.12/default.nix | 4 --- .../libraries}/at-spi2-atk/default.nix | 0 .../libraries}/at-spi2-core/default.nix | 0 pkgs/top-level/all-packages.nix | 9 +++--- 10 files changed, 9 insertions(+), 72 deletions(-) delete mode 100644 pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix delete mode 100644 pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix rename pkgs/{desktops/gnome-3/3.12/core => development/libraries}/at-spi2-atk/default.nix (100%) rename pkgs/{desktops/gnome-3/3.10/core => development/libraries}/at-spi2-core/default.nix (100%) diff --git a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix index 615f272e7b9a..6e4c59f4bb37 100644 --- a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix +++ b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix @@ -4,9 +4,6 @@ with lib; -let - gnome3 = config.environment.gnome3.packageSet; -in { ###### interface @@ -33,9 +30,9 @@ in config = mkIf config.services.gnome3.at-spi2-core.enable { - environment.systemPackages = [ gnome3.at_spi2_core ]; + environment.systemPackages = [ pkgs.at_spi2_core ]; - services.dbus.packages = [ gnome3.at_spi2_core ]; + services.dbus.packages = [ pkgs.at_spi2_core ]; }; diff --git a/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix b/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix deleted file mode 100644 index fc0c4f2a6bc0..000000000000 --- a/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, python, pkgconfig, popt, atk, libX11, libICE, xlibs, libXi -, intltool, dbus_glib, at_spi2_core, libSM }: - -stdenv.mkDerivation rec { - versionMajor = "2.12"; - versionMinor = "0"; - moduleName = "at-spi2-atk"; - name = "${moduleName}-${versionMajor}.${versionMinor}"; - - src = fetchurl { - url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "0crn3k6qvn6fjvgm68dj5ska1ppfgmdkaia2db1jp0b9y74nfm1v"; - }; - - buildInputs = [ python pkgconfig popt atk libX11 libICE xlibs.libXtst libXi - intltool dbus_glib at_spi2_core libSM ]; - - meta = with stdenv.lib; { - platforms = platforms.linux; - }; -} diff --git a/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix index 41a997c1f714..ba5dc7e7b90a 100644 --- a/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix +++ b/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2 -, libxklavier, libXtst, gtk2, intltool, libxslt }: +, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core }: stdenv.mkDerivation rec { diff --git a/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix index d468e06d429f..2b5ff4cc5a28 100644 --- a/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix +++ b/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret -, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns +, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core , libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip , pulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }: diff --git a/pkgs/desktops/gnome-3/3.10/default.nix b/pkgs/desktops/gnome-3/3.10/default.nix index 4376493c95b0..89e16490df93 100644 --- a/pkgs/desktops/gnome-3/3.10/default.nix +++ b/pkgs/desktops/gnome-3/3.10/default.nix @@ -10,10 +10,6 @@ rec { #### Core (http://ftp.acc.umu.se/pub/GNOME/core/) - at_spi2_atk = callPackage ./core/at-spi2-atk { }; - - at_spi2_core = callPackage ./core/at-spi2-core { }; - baobab = callPackage ./core/baobab { }; caribou = callPackage ./core/caribou { }; diff --git a/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix b/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix deleted file mode 100644 index d60a0ff7480c..000000000000 --- a/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ stdenv, fetchurl, python, pkgconfig, popt, intltool, dbus_glib -, libX11, xextproto, libSM, libICE, libXtst, libXi, gobjectIntrospection }: - -stdenv.mkDerivation (rec { - versionMajor = "2.12"; - versionMinor = "0"; - moduleName = "at-spi2-core"; - name = "${moduleName}-${versionMajor}.${versionMinor}"; - - src = fetchurl { - url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "12gvsgdaxnxskndlhlmdkc50cfqgmzfc4n8la9944fz5k3fhwmfv"; - }; - - buildInputs = [ - python pkgconfig popt intltool dbus_glib - libX11 xextproto libSM libICE libXtst libXi - gobjectIntrospection - ]; - - # ToDo: on non-NixOS we create a symlink from there? - configureFlags = "--with-dbus-daemondir=/run/current-system/sw/bin/"; - - meta = with stdenv.lib; { - platforms = platforms.linux; - }; -} - // stdenv.lib.optionalAttrs stdenv.isDarwin { - NIX_LDFLAGS = "-lintl"; - } -) - diff --git a/pkgs/desktops/gnome-3/3.12/default.nix b/pkgs/desktops/gnome-3/3.12/default.nix index f5369b2a3c32..e31c85fee8b1 100644 --- a/pkgs/desktops/gnome-3/3.12/default.nix +++ b/pkgs/desktops/gnome-3/3.12/default.nix @@ -16,10 +16,6 @@ rec { #### Core (http://ftp.acc.umu.se/pub/GNOME/core/) - at_spi2_atk = callPackage ./core/at-spi2-atk { }; - - at_spi2_core = callPackage ./core/at-spi2-core { }; - baobab = callPackage ./core/baobab { }; caribou = callPackage ./core/caribou { }; diff --git a/pkgs/desktops/gnome-3/3.12/core/at-spi2-atk/default.nix b/pkgs/development/libraries/at-spi2-atk/default.nix similarity index 100% rename from pkgs/desktops/gnome-3/3.12/core/at-spi2-atk/default.nix rename to pkgs/development/libraries/at-spi2-atk/default.nix diff --git a/pkgs/desktops/gnome-3/3.10/core/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix similarity index 100% rename from pkgs/desktops/gnome-3/3.10/core/at-spi2-core/default.nix rename to pkgs/development/libraries/at-spi2-core/default.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5be835ae1391..616f6a34a987 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4230,6 +4230,10 @@ let attr = callPackage ../development/libraries/attr { }; + at_spi2_core = callPackage ../development/libraries/at-spi2-core { }; + + at_spi2_atk = callPackage ../development/libraries/at-spi2-atk { }; + aqbanking = callPackage ../development/libraries/aqbanking { }; aubio = callPackage ../development/libraries/aubio { }; @@ -4811,9 +4815,7 @@ let cupsSupport = config.gtk2.cups or stdenv.isLinux; }; - gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { - inherit (gnome3) at_spi2_atk; - }; + gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { }; gtk = pkgs.gtk2; @@ -9671,7 +9673,6 @@ let thunderbird-bin = callPackage ../applications/networking/mailreaders/thunderbird-bin { gconf = pkgs.gnome.GConf; - inherit (pkgs.gnome3) at_spi2_atk; inherit (pkgs.gnome) libgnome libgnomeui; inherit (pkgs.xlibs) libX11 libXScrnSaver libXext libXinerama libXrender libXt; From 88d9224f6de6e4ec399fc7a4a6d5deb7083573b0 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 12 Jul 2014 11:20:21 +0200 Subject: [PATCH 22/53] caribou 3.12: fix at_spi2_core argument --- pkgs/desktops/gnome-3/3.12/core/caribou/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix index 4d2f390c0428..3a6c3f0dd357 100644 --- a/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix +++ b/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2 -, libxklavier, libXtst, gtk2, intltool, libxslt }: +, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core }: stdenv.mkDerivation rec { From 0b82b9532229a28758df482218222d90d910c494 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 12 Jul 2014 20:45:09 +0200 Subject: [PATCH 23/53] gnome-shell 3.12: fix at_spi2_core argument --- pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix index 2fb1e091aa0e..9ff7fdb17401 100644 --- a/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix +++ b/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret -, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns +, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core , libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip , pulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }: From 3fff7cf9a2b7090d49b9953a4ae14b704464371f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 14 Jul 2014 17:33:53 +0200 Subject: [PATCH 24/53] nixUnstable: Update to 1.8pre3666_5bcb982 --- pkgs/tools/package-management/nix/unstable.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index b81ab7cad424..19243bad902a 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.8pre3636_9d0709e"; + name = "nix-1.8pre3666_5bcb982"; src = fetchurl { - url = "http://hydra.nixos.org/build/11854244/download/5/${name}.tar.xz"; - sha256 = "13h32d4nbkhvxhj9nyamxf6mfsi7mzvjz1bhyy63088vx468nhmm"; + url = "http://hydra.nixos.org/build/12516859/download/5/${name}.tar.xz"; + sha256 = "6b968ec6db727dad2dc1fb6d31395996bd7cad14fddadfa996661c1f2c142c32"; }; nativeBuildInputs = [ perl pkgconfig ]; From 78b5dea799f4e1d8fae93f771eb778e53cfcbb9a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 14 Jul 2014 17:34:13 +0200 Subject: [PATCH 25/53] Revert "nixUnstable: Update to 1.8pre3666_5bcb982" This reverts commit 3fff7cf9a2b7090d49b9953a4ae14b704464371f. --- pkgs/tools/package-management/nix/unstable.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 19243bad902a..b81ab7cad424 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.8pre3666_5bcb982"; + name = "nix-1.8pre3636_9d0709e"; src = fetchurl { - url = "http://hydra.nixos.org/build/12516859/download/5/${name}.tar.xz"; - sha256 = "6b968ec6db727dad2dc1fb6d31395996bd7cad14fddadfa996661c1f2c142c32"; + url = "http://hydra.nixos.org/build/11854244/download/5/${name}.tar.xz"; + sha256 = "13h32d4nbkhvxhj9nyamxf6mfsi7mzvjz1bhyy63088vx468nhmm"; }; nativeBuildInputs = [ perl pkgconfig ]; From ebd4594c2c1b2cc8071e7f7b2a80bd870d93ec80 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:09:30 +0200 Subject: [PATCH 26/53] glib: Fix compilation on Darwin and use default gcc http://hydra.nixos.org/build/12458779 --- .../libraries/glib/darwin-compilation.patch | 24 +++++++++++++++++++ pkgs/development/libraries/glib/default.nix | 7 ++++++ pkgs/top-level/all-packages.nix | 6 +---- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/libraries/glib/darwin-compilation.patch diff --git a/pkgs/development/libraries/glib/darwin-compilation.patch b/pkgs/development/libraries/glib/darwin-compilation.patch new file mode 100644 index 000000000000..f215eef798af --- /dev/null +++ b/pkgs/development/libraries/glib/darwin-compilation.patch @@ -0,0 +1,24 @@ +Fix compilation on Mac OS X with gcc 4.8. + +diff -ru glib-2.40.0-orig/gio/gdummyfile.c glib-2.40.0/gio/gdummyfile.c +--- glib-2.40.0-orig/gio/gdummyfile.c 2014-02-03 18:40:41.000000000 +0100 ++++ glib-2.40.0/gio/gdummyfile.c 2014-07-15 10:58:31.000000000 +0200 +@@ -454,7 +454,8 @@ + result = g_malloc (escaped_string_end - escaped_string + 1); + + out = result; +- for (in = escaped_string; in < escaped_string_end; in++) ++ in = escaped_string; ++ for (; in < escaped_string_end; in++) + { + character = *in; + if (*in == '%') +@@ -551,6 +552,7 @@ + + decoded->scheme = g_malloc (p - uri); + out = decoded->scheme; +- for (in = uri; in < p - 1; in++) ++ in = uri; ++ for (; in < p - 1; in++) + *out++ = g_ascii_tolower (*in); + *out = 0; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 9a592d4f9541..14e724959682 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -49,6 +49,8 @@ stdenv.mkDerivation rec { sha256 = "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"; }; + patches = optional stdenv.isDarwin ./darwin-compilation.patch; + setupHook = ./setup-hook.sh; buildInputs = [ libelf ] @@ -67,6 +69,11 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin " -lintl" + optionalString stdenv.isSunOS " -DBSD_COMP"; + preBuild = optionalString stdenv.isDarwin + '' + export MACOSX_DEPLOYMENT_TARGET= + ''; + enableParallelBuilding = true; inherit doCheck; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4799eebf5443..794c75992956 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4800,11 +4800,7 @@ let gtkmm; }; - glib = callPackage ../development/libraries/glib { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + glib = callPackage ../development/libraries/glib { }; glib-tested = glib.override { doCheck = true; }; # checked version separate to break cycles glibmm = callPackage ../development/libraries/glibmm { }; From 828e386e6899aae29bb91a29f18cacf11206249e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:17:51 +0200 Subject: [PATCH 27/53] junixsocket: Fix build on Darwin --- pkgs/development/libraries/java/junixsocket/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/development/libraries/java/junixsocket/default.nix b/pkgs/development/libraries/java/junixsocket/default.nix index e49e626aa001..317ba601cfbd 100644 --- a/pkgs/development/libraries/java/junixsocket/default.nix +++ b/pkgs/development/libraries/java/junixsocket/default.nix @@ -14,9 +14,6 @@ stdenv.mkDerivation rec { preConfigure = '' - substituteInPlace build.xml \ - --replace /usr/bin/ "" \ - --replace macosx darwin substituteInPlace src/main/org/newsclub/net/unix/NativeUnixSocketConfig.java \ --replace /opt/newsclub/lib-native $out/lib ''; @@ -25,7 +22,7 @@ stdenv.mkDerivation rec { ANT_ARGS = # Note that our OpenJDK on Darwin is currently 32-bit, so we have to build a 32-bit dylib. - (if stdenv.is64bit && !stdenv.isDarwin then [ "-Dskip32=true" ] else [ "-Dskip64=true" ]) + (if stdenv.is64bit then [ "-Dskip32=true" ] else [ "-Dskip64=true" ]) ++ [ "-Dgcc=cc" "-Dant.build.javac.source=1.6" ] ++ stdenv.lib.optional stdenv.isDarwin "-DisMac=true"; From caa74a146da8ef2a6a314593989837fd80bbc27b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:51:07 +0200 Subject: [PATCH 28/53] openjdk-darwin: Update to 7u60b30 --- .../compilers/openjdk-darwin/default.nix | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/openjdk-darwin/default.nix b/pkgs/development/compilers/openjdk-darwin/default.nix index 251b3868dd7f..fc8493d4cf35 100644 --- a/pkgs/development/compilers/openjdk-darwin/default.nix +++ b/pkgs/development/compilers/openjdk-darwin/default.nix @@ -1,16 +1,18 @@ -{ stdenv, fetchurl, setJavaClassPath }: +{ stdenv, fetchurl, unzip, setJavaClassPath }: let jdk = stdenv.mkDerivation { - name = "openjdk6-b16-24_apr_2009-r1"; + name = "openjdk-7u60b30"; + # From https://github.com/alexkasko/openjdk-unofficial-builds src = fetchurl { - url = http://landonf.bikemonkey.org/static/soylatte/bsd-dist/openjdk6_darwin/openjdk6-b16-24_apr_2009-r1.tar.bz2; - sha256 = "14pbv6jjk95k7hbgiwyvjdjv8pccm7m8a130k0q7mjssf4qmpx1v"; + url = https://bitbucket.org/alexkasko/openjdk-unofficial-builds/downloads/openjdk-1.7.0-u60-unofficial-macosx-x86_64-bundle.zip; + sha256 = "af510a4d566712d82c17054bb39f91d98c69a85586e244c6123669a0bd4b7401"; }; + buildInputs = [ unzip ]; + installPhase = '' - mkdir -p $out - cp -vR * $out/ + mv */Contents/Home $out # jni.h expects jni_md.h to be in the header search path. ln -s $out/include/darwin/*_md.h $out/include/ From 946dfe1a371af80cd4bf4536e737bbd5a4361bb7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:51:27 +0200 Subject: [PATCH 29/53] ecj: Build on Darwin --- pkgs/development/eclipse/ecj/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/eclipse/ecj/default.nix b/pkgs/development/eclipse/ecj/default.nix index 786fcdba18a8..0f52e879863e 100644 --- a/pkgs/development/eclipse/ecj/default.nix +++ b/pkgs/development/eclipse/ecj/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation rec { # http://www.eclipse.org/legal/epl-v10.html (free software, copyleft) license = "EPLv1.0"; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; }; } From f77abc8b7a8b4279258862a7b6d3810e73d4b092 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 10:49:46 +0200 Subject: [PATCH 30/53] go: Fix build http://hydra.nixos.org/build/12538479 --- pkgs/development/compilers/go/1.3.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/go/1.3.nix b/pkgs/development/compilers/go/1.3.nix index b9178d5e61c1..fafa045e5621 100644 --- a/pkgs/development/compilers/go/1.3.nix +++ b/pkgs/development/compilers/go/1.3.nix @@ -69,7 +69,7 @@ stdenv.mkDerivation { # http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011891.html # Fix for "libgcc_s.so.1 must be installed for pthread_cancel to work" # during tests: - export LD_LIBRARY_PATH="$(dirname $(echo ${stdenv.gcc.gcc}/lib*/libgcc_s.so))" + export LD_LIBRARY_PATH="$(dirname $(echo ${stdenv.gcc.gcc}/lib/libgcc_s.so))" mkdir -p "$out/bin" export GOROOT="$(pwd)/" From 4f7289eec98b19004cb26229cbb1373c624fc4d7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 11:01:32 +0200 Subject: [PATCH 31/53] Don't use ensureDir --- pkgs/applications/misc/camlistore/default.nix | 2 +- pkgs/applications/science/logic/twelf/default.nix | 8 ++++---- pkgs/development/compilers/go/gox.nix | 2 +- pkgs/development/compilers/sbcl/bootstrap.nix | 4 ++-- pkgs/development/compilers/sbcl/default.nix | 2 +- pkgs/development/compilers/smlnj/bootstrap.nix | 4 ++-- pkgs/development/tools/etcdctl/default.nix | 2 +- pkgs/development/tools/gocode/default.nix | 2 +- pkgs/development/tools/packer/default.nix | 2 +- pkgs/misc/vim-plugins/default.nix | 2 +- pkgs/os-specific/linux/iomelt/default.nix | 4 ++-- pkgs/servers/etcd/default.nix | 2 +- pkgs/servers/fleet/default.nix | 2 +- pkgs/servers/nsq/default.nix | 2 +- pkgs/tools/misc/logstash/default.nix | 10 +++++----- pkgs/tools/typesetting/djvu2pdf/default.nix | 4 ++-- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/pkgs/applications/misc/camlistore/default.nix b/pkgs/applications/misc/camlistore/default.nix index 80d8dd801a9b..56131425ab4b 100644 --- a/pkgs/applications/misc/camlistore/default.nix +++ b/pkgs/applications/misc/camlistore/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bin/* $out/bin ''; diff --git a/pkgs/applications/science/logic/twelf/default.nix b/pkgs/applications/science/logic/twelf/default.nix index 1079c3783218..c6c7e4d9c1a7 100644 --- a/pkgs/applications/science/logic/twelf/default.nix +++ b/pkgs/applications/science/logic/twelf/default.nix @@ -17,15 +17,15 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin rsync -av bin/* $out/bin/ - ensureDir $out/share/emacs/site-lisp/twelf/ + mkdir -p $out/share/emacs/site-lisp/twelf/ rsync -av emacs/ $out/share/emacs/site-lisp/twelf/ - ensureDir $out/share/twelf/examples + mkdir -p $out/share/twelf/examples rsync -av examples/ $out/share/twelf/examples/ - ensureDir $out/share/twelf/vim + mkdir -p $out/share/twelf/vim rsync -av vim/ $out/share/twelf/vim/ ''; diff --git a/pkgs/development/compilers/go/gox.nix b/pkgs/development/compilers/go/gox.nix index 705cb6e5c28f..da40b7570fe5 100644 --- a/pkgs/development/compilers/go/gox.nix +++ b/pkgs/development/compilers/go/gox.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ go ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin export GOPATH=$src go build -v -o $out/bin/gox github.com/mitchellh/gox ''; diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix index c3335ea6d22b..015d7dd95da8 100644 --- a/pkgs/development/compilers/sbcl/bootstrap.nix +++ b/pkgs/development/compilers/sbcl/bootstrap.nix @@ -15,9 +15,9 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p src/runtime/sbcl $out/bin - ensureDir $out/share/sbcl + mkdir -p $out/share/sbcl cp -p output/sbcl.core $out/share/sbcl ''; diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 579d5ec11eb9..8133ae3ffd38 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { preBuild = '' export INSTALL_ROOT=$out - ensureDir test-home + mkdir -p test-home export HOME=$PWD/test-home ''; diff --git a/pkgs/development/compilers/smlnj/bootstrap.nix b/pkgs/development/compilers/smlnj/bootstrap.nix index 27fdf75cc25d..39a1bbd0df35 100644 --- a/pkgs/development/compilers/smlnj/bootstrap.nix +++ b/pkgs/development/compilers/smlnj/bootstrap.nix @@ -22,10 +22,10 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin rsync -av bin/ $out/bin/ - ensureDir $out/lib + mkdir -p $out/lib rsync -av lib/ $out/lib/ ''; diff --git a/pkgs/development/tools/etcdctl/default.nix b/pkgs/development/tools/etcdctl/default.nix index a37ef26f5412..5e6438d0f5ff 100644 --- a/pkgs/development/tools/etcdctl/default.nix +++ b/pkgs/development/tools/etcdctl/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv etcdctl $out/bin ''; diff --git a/pkgs/development/tools/gocode/default.nix b/pkgs/development/tools/gocode/default.nix index 6057c288cf69..30e4b79ee38b 100644 --- a/pkgs/development/tools/gocode/default.nix +++ b/pkgs/development/tools/gocode/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv gocode $out/bin ''; diff --git a/pkgs/development/tools/packer/default.nix b/pkgs/development/tools/packer/default.nix index 5cea753dd9c3..073de5137f85 100644 --- a/pkgs/development/tools/packer/default.nix +++ b/pkgs/development/tools/packer/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { XC_ARCH=$(go env GOARCH) XC_OS=$(go env GOOS) - ensureDir $out/bin + mkdir -p $out/bin cd $src/src/github.com/mitchellh/packer gox \ diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index 58859e4571af..9f553b480e75 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -406,7 +406,7 @@ in rec }; unpackPhase = ":"; installPhase = '' - ensureDir $out/share/vim-plugins/vim-a + mkdir -p $out/share/vim-plugins/vim-a cp ${src} $out/share/vim-plugins/vim-a/a.vim ''; }; diff --git a/pkgs/os-specific/linux/iomelt/default.nix b/pkgs/os-specific/linux/iomelt/default.nix index df267d304c15..fccf7b6b1cd1 100644 --- a/pkgs/os-specific/linux/iomelt/default.nix +++ b/pkgs/os-specific/linux/iomelt/default.nix @@ -9,8 +9,8 @@ in stdenv.mkDerivation { }; preBuild = '' - ensureDir $out/bin - ensureDir $out/share/man/man1 + mkdir -p $out/bin + mkdir -p $out/share/man/man1 substituteInPlace Makefile \ --replace /usr $out diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix index 1fb21f2b8ab6..8b4903c86022 100644 --- a/pkgs/servers/etcd/default.nix +++ b/pkgs/servers/etcd/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv etcd $out/bin/etcd ''; diff --git a/pkgs/servers/fleet/default.nix b/pkgs/servers/fleet/default.nix index 627c1ff0cf90..e3a53c85052e 100644 --- a/pkgs/servers/fleet/default.nix +++ b/pkgs/servers/fleet/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv fleet $out/bin ''; diff --git a/pkgs/servers/nsq/default.nix b/pkgs/servers/nsq/default.nix index b1570d96c7b6..4d32c3203c7d 100644 --- a/pkgs/servers/nsq/default.nix +++ b/pkgs/servers/nsq/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv build/* $out/bin ''; diff --git a/pkgs/tools/misc/logstash/default.nix b/pkgs/tools/misc/logstash/default.nix index 15c99fff54c8..7f43ccdb6258 100644 --- a/pkgs/tools/misc/logstash/default.nix +++ b/pkgs/tools/misc/logstash/default.nix @@ -15,11 +15,11 @@ stdenv.mkDerivation rec { dontPatchShebangs = true; installPhase = '' - ensureDir $out/bin - ensureDir $out/vendor - ensureDir $out/lib - ensureDir $out/locales - ensureDir $out/patterns + mkdir -p $out/bin + mkdir -p $out/vendor + mkdir -p $out/lib + mkdir -p $out/locales + mkdir -p $out/patterns cp -a bin $out cp -a vendor $out cp -a lib $out diff --git a/pkgs/tools/typesetting/djvu2pdf/default.nix b/pkgs/tools/typesetting/djvu2pdf/default.nix index c7729ac676f8..5455df5f106e 100644 --- a/pkgs/tools/typesetting/djvu2pdf/default.nix +++ b/pkgs/tools/typesetting/djvu2pdf/default.nix @@ -13,9 +13,9 @@ stdenv.mkDerivation rec { propagatedUserEnvPkgs = [ djvulibre ghostscript ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p djvu2pdf $out/bin - ensureDir $out/man/man1 + mkdir -p $out/man/man1 cp -p djvu2pdf.1.gz $out/man/man1 ''; From b9e9e90a02769a5f946ed3ce1ffe7c1662a2914b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 11:24:00 +0200 Subject: [PATCH 32/53] readline-6.3: Fix build on Mac OS X < 10.9 http://hydra.nixos.org/build/12476331 --- .../libraries/readline/no-arch_only-6.3.patch | 13 +++++++++++++ pkgs/development/libraries/readline/readline6.3.nix | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/readline/no-arch_only-6.3.patch diff --git a/pkgs/development/libraries/readline/no-arch_only-6.3.patch b/pkgs/development/libraries/readline/no-arch_only-6.3.patch new file mode 100644 index 000000000000..7c46dbad962a --- /dev/null +++ b/pkgs/development/libraries/readline/no-arch_only-6.3.patch @@ -0,0 +1,13 @@ +diff -ru -x '*~' readline-6.3-orig/support/shobj-conf readline-6.3/support/shobj-conf +--- support/shobj-conf 2014-02-24 03:06:29.000000000 +0100 ++++ support/shobj-conf 2014-07-22 11:18:52.000000000 +0200 +@@ -194,9 +194,6 @@ + # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 + *) + case "${host_os}" in +- darwin[89]*|darwin1[012]*) +- SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' +- ;; + *) # Mac OS X 10.9 (Mavericks) and later + SHOBJ_ARCHFLAGS= + # for 32 and 64bit universal library diff --git a/pkgs/development/libraries/readline/readline6.3.nix b/pkgs/development/libraries/readline/readline6.3.nix index 2f99b9d72183..e3f07b3ddc03 100644 --- a/pkgs/development/libraries/readline/readline6.3.nix +++ b/pkgs/development/libraries/readline/readline6.3.nix @@ -13,7 +13,9 @@ stdenv.mkDerivation (rec { patchFlags = "-p0"; patches = - [ ./link-against-ncurses.patch ]; + [ ./link-against-ncurses.patch + ./no-arch_only-6.3.patch + ]; meta = { description = "GNU Readline, a library for interactive line editing"; From 0b996d886b32d1e6baf33406848e3ddeed7efe00 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 12:01:01 +0200 Subject: [PATCH 33/53] opencv: Enable fewer dependencies by default In particular, this prevents KDE from pulling in gfortran, numpy and atlas. We don't want anything important depending on atlas because it has a crazy non-deterministic build system. http://hydra.nixos.org/build/12555947 --- pkgs/development/libraries/opencv/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix index ea858417b2f8..7dafcfce9481 100644 --- a/pkgs/development/libraries/opencv/default.nix +++ b/pkgs/development/libraries/opencv/default.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg -, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages }: +{ lib, stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg +, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages +, enableBloat ? false }: let v = "2.4.7"; in @@ -11,8 +12,9 @@ stdenv.mkDerivation rec { sha256 = "0hravl3yhyv4r4n7vb055d4qnp893q2hc0fcmmncfh7sbdrnr3f4"; }; - buildInputs = [ gtk glib libjpeg libpng libtiff jasper ffmpeg xineLib gstreamer - python27 python27Packages.numpy ]; + buildInputs = + [ libjpeg libpng libtiff ] + ++ lib.optionals enableBloat [ gtk glib jasper ffmpeg xineLib gstreamer python27 python27Packages.numpy ]; nativeBuildInputs = [ cmake pkgconfig ]; From 402688b752a4b2c5548a1d07aed4fbbde2b55e87 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 13:35:16 +0200 Subject: [PATCH 34/53] gcc: Fix multilib builds http://hydra.nixos.org/build/12578050 --- pkgs/development/compilers/gcc/4.8/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 8865ca7c9550..6357e8f6a0c2 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -500,9 +500,9 @@ stdenv.mkDerivation ({ else null; passthru = - { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo enableMultilib version; }; + { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; }; - inherit enableParallelBuilding; + inherit enableParallelBuilding enableMultilib; inherit (stdenv) is64bit; From a1a381150636387d55143213f1b4c0d53d14be4d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 10:48:27 +0200 Subject: [PATCH 35/53] flac: Disable tests These take a stupid amount of time. --- pkgs/applications/audio/flac/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index 1c8dc56de61c..fe4b43539d44 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { buildInputs = [ libogg ]; - doCheck = true; # takes lots of time but will be run rarely (small build-time closure) + #doCheck = true; # takes lots of time meta = with stdenv.lib; { homepage = http://xiph.org/flac/; From 922af7f1588e78041ef7102f0c505a6a055a7b04 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:00:41 +0200 Subject: [PATCH 36/53] libsndfile: Fix build on Darwin Fixes #3347. --- pkgs/development/libraries/libsndfile/default.nix | 9 +++++++-- pkgs/top-level/all-packages.nix | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index 8b0eeeb8e572..f97bd040a544 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -12,8 +12,13 @@ stdenv.mkDerivation rec { # need headers from the Carbon.framework in /System/Library/Frameworks to # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin - "-I/System/Library/Frameworks/Carbon.framework/Versions/A/Headers"; + preConfigure = stdenv.lib.optionalString stdenv.isDarwin + '' + NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + ''; + + # Needed on Darwin. + NIX_CFLAGS_LINK = "-logg -lvorbis"; meta = with stdenv.lib; { description = "A C library for reading and writing files containing sampled sound"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 879570690490..df1ac5dc24a0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5463,11 +5463,7 @@ let # To bootstrap SBCL, I need CLisp 2.44.1; it needs libsigsegv 2.5 libsigsegv_25 = callPackage ../development/libraries/libsigsegv/2.5.nix { }; - libsndfile = callPackage ../development/libraries/libsndfile { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + libsndfile = callPackage ../development/libraries/libsndfile { }; libsodium = callPackage ../development/libraries/libsodium { }; From 4c2c0499f3a428caba4a857dd8e23d7e23398a7d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:25:38 +0200 Subject: [PATCH 37/53] enscript: Build with the default GCC --- pkgs/tools/text/enscript/default.nix | 7 +++++++ pkgs/top-level/all-packages.nix | 7 +------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/tools/text/enscript/default.nix b/pkgs/tools/text/enscript/default.nix index 7bb7060d5c2d..156ff7aea6b1 100644 --- a/pkgs/tools/text/enscript/default.nix +++ b/pkgs/tools/text/enscript/default.nix @@ -8,6 +8,13 @@ stdenv.mkDerivation rec { sha256 = "1fy0ymvzrrvs889zanxcaxjfcxarm2d3k43c9frmbl1ld7dblmkd"; }; + preBuild = + '' + # Fix building on Darwin with GCC. + substituteInPlace compat/regex.c --replace \ + __private_extern__ '__attribute__ ((visibility ("hidden")))' + ''; + buildInputs = [ gettext ]; doCheck = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index df1ac5dc24a0..cc2ab0c177c0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -949,12 +949,7 @@ let encfs = callPackage ../tools/filesystems/encfs { }; - enscript = callPackage ../tools/text/enscript { - # fix syntax errors - stdenv = if stdenv.isDarwin - then clangStdenv - else stdenv; - }; + enscript = callPackage ../tools/text/enscript { }; ethtool = callPackage ../tools/misc/ethtool { }; From b52da47cf1b8c7c0abfbeae28ff5b3c37cc49da2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:28:26 +0200 Subject: [PATCH 38/53] audiofile: Use default gcc --- pkgs/top-level/all-packages.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc2ab0c177c0..5040b3b1d3db 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4259,11 +4259,7 @@ let aubio = callPackage ../development/libraries/aubio { }; - audiofile = callPackage ../development/libraries/audiofile { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + audiofile = callPackage ../development/libraries/audiofile { }; axis = callPackage ../development/libraries/axis { }; From eb6c0826c539ba20db94b1f088323729c42be6c1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:45:44 +0200 Subject: [PATCH 39/53] libsamplerate: Use default gcc --- pkgs/development/libraries/libsamplerate/default.nix | 12 ++++++++---- pkgs/top-level/all-packages.nix | 6 +----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 708d89893040..183caefff852 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -15,10 +15,14 @@ stdenv.mkDerivation rec { #--disable-fftw disable usage of FFTW #--disable-cpu-clip disable tricky cpu specific clipper - # need headers from the Carbon.framework in /System/Library/Frameworks to - # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin - "-I/System/Library/Frameworks/Carbon.framework/Versions/A/Headers"; + postConfigure = stdenv.lib.optionalString stdenv.isDarwin + '' + # need headers from the Carbon.framework in /System/Library/Frameworks to + # compile this on darwin -- not sure how to handle + NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + + substituteInPlace examples/Makefile --replace "-fpascal-strings" "" + ''; meta = with stdenv.lib; { description = "Sample Rate Converter for audio"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5040b3b1d3db..ecc392df80f4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5255,11 +5255,7 @@ let librevisa = callPackage ../development/libraries/librevisa { }; - libsamplerate = callPackage ../development/libraries/libsamplerate { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + libsamplerate = callPackage ../development/libraries/libsamplerate { }; libspectre = callPackage ../development/libraries/libspectre { }; From bf0d518c6733873a67989c4781d56f8b0fccbc46 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:47:46 +0200 Subject: [PATCH 40/53] stdenv-darwin: Shut up some warnings from SDK headers The Carbon headers spew out zillions of multichar / deprecations warnings, which isn't very helpful. So turn them off. --- pkgs/stdenv/nix/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index cb4c0fd0a61b..b540456afa4a 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,9 +15,8 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" '' else ""); From ac8775dd968f49a37260c53690d072faf91aca6f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 24 Jul 2014 21:53:46 +0200 Subject: [PATCH 41/53] $xcodePath -> $SDKROOT SDKROOT is standard. In particular, this fixes the cmake build on Mac OS X 10.9. --- pkgs/development/compilers/gcc/4.8/default.nix | 10 +++++----- pkgs/development/libraries/libsamplerate/default.nix | 2 +- pkgs/development/libraries/libsndfile/default.nix | 2 +- pkgs/stdenv/nix/default.nix | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 6357e8f6a0c2..0664cc0ebd51 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -309,12 +309,12 @@ stdenv.mkDerivation ({ export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" '' + stdenv.lib.optionalString stdenv.isDarwin '' - if xcodePath=$(/usr/bin/xcrun --show-sdk-path); then - configureFlagsArray+=(--with-native-system-header-dir=$xcodePath/usr/include) + if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then + configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include) makeFlagsArray+=( \ - CFLAGS_FOR_BUILD=-F$xcodePath/System/Library/Frameworks \ - CFLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ - FLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \ + CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ + FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ ) fi ''; diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 183caefff852..85d51d0ad71e 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { '' # need headers from the Carbon.framework in /System/Library/Frameworks to # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + NIX_CFLAGS_COMPILE+=" -I$SDKROOT/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" substituteInPlace examples/Makefile --replace "-fpascal-strings" "" ''; diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index f97bd040a544..74140d5f335e 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { # compile this on darwin -- not sure how to handle preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' - NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + NIX_CFLAGS_COMPILE+=" -I$SDKROOT/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" ''; # Needed on Darwin. diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index b540456afa4a..2301b8b8f2b1 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,9 +15,9 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" - export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" + SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" + export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From fb4e2e112fffa76d92433d8ffc7b7c5e19888c79 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 09:14:13 +0200 Subject: [PATCH 42/53] Export SDKROOT --- pkgs/stdenv/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 2301b8b8f2b1..afdd353a329d 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,7 +15,7 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); From 3e4a382d6753a057256c7ef1e9f52ae9e07bd677 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 09:37:23 +0200 Subject: [PATCH 43/53] Doh --- pkgs/stdenv/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index afdd353a329d..a496a819a6df 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -16,7 +16,7 @@ import ../generic rec { xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 export SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$SDKROOT/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); From 8f3dc34618efc87e6d39f979278cc03f50b1c8ed Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 18:09:53 +0200 Subject: [PATCH 44/53] gcc-apple: Mark as broken It doesn't work with the --sysroot flag passed by gcc-wrapper, and it doesn't build with recent Xcode versions (if the SDK is not in /). --- pkgs/development/compilers/gcc/4.2-apple64/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/compilers/gcc/4.2-apple64/default.nix b/pkgs/development/compilers/gcc/4.2-apple64/default.nix index 229f68fd8411..f5496cb5ef7b 100644 --- a/pkgs/development/compilers/gcc/4.2-apple64/default.nix +++ b/pkgs/development/compilers/gcc/4.2-apple64/default.nix @@ -44,4 +44,6 @@ stdenv.mkDerivation rec { langC = true; buildInputs = stdenv.lib.optionals langF77 [ gmp mpfr bison flex ]; + + meta.broken = true; } From 8a10d8bbc33a331f15f41d54aca031fc7b7c9f67 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 29 Jul 2014 17:03:32 +0200 Subject: [PATCH 45/53] autoconf: Disable tests These take waaaay too long. --- pkgs/development/tools/misc/autoconf/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/autoconf/default.nix b/pkgs/development/tools/misc/autoconf/default.nix index 08fcd95afb5e..05544b22b085 100644 --- a/pkgs/development/tools/misc/autoconf/default.nix +++ b/pkgs/development/tools/misc/autoconf/default.nix @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { # http://thread.gmane.org/gmane.comp.sysutils.autoconf.bugs/6822 for # details. # There are many test failures on `i386-pc-solaris2.11'. - doCheck = ((!stdenv.isCygwin) && (!stdenv.isSunOS)); + #doCheck = ((!stdenv.isCygwin) && (!stdenv.isSunOS)); + doCheck = false; # Don't fixup "#! /bin/sh" in Autoconf, otherwise it will use the # "fixed" path in generated files! From 0769fc5b77eb76c6a794187f173c48f912fc837c Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 14 Jun 2014 10:59:35 +0400 Subject: [PATCH 46/53] Set CONFIG_SHELL to stdenv.shell in the default builder, just like SHELL --- pkgs/stdenv/generic/setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 4f78713a5494..c3b9033b49a6 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -103,6 +103,7 @@ fi # Execute the pre-hook. export SHELL=@shell@ +export CONFIG_SHELL="$SHELL" if [ -z "$shell" ]; then export shell=@shell@; fi runHook preHook From b76a7504bb5580facafac99f26bba37adba8acbc Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Aug 2014 12:38:51 +0200 Subject: [PATCH 47/53] cabal: cosmetic fix to syntax highlighting in Emacs --- pkgs/build-support/cabal/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index df03c8854cb0..69423004d65f 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -265,7 +265,7 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version; fi ${optionalString (self.enableSharedExecutables && self.isExecutable && self.stdenv.isDarwin) '' - for exe in $out/bin/* ; do + for exe in "$out/bin/"* ; do install_name_tool -add_rpath \ $out/lib/${ghc.ghc.name}/${self.pname}-${self.version} $exe done From 9253a95f6b3f65ecc701ebb10620acfb6d251f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 3 Aug 2014 17:51:50 +0200 Subject: [PATCH 48/53] glibc: fix CVE-2014-0475 by upstream patches https://sourceware.org/bugzilla/show_bug.cgi?id=17137 --- .../libraries/glibc/2.19/common.nix | 2 + .../libraries/glibc/2.19/cve-2014-0475.patch | 170 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch diff --git a/pkgs/development/libraries/glibc/2.19/common.nix b/pkgs/development/libraries/glibc/2.19/common.nix index b153d91934b3..8a4614851860 100644 --- a/pkgs/development/libraries/glibc/2.19/common.nix +++ b/pkgs/development/libraries/glibc/2.19/common.nix @@ -58,6 +58,8 @@ stdenv.mkDerivation ({ ./fix_path_attribute_in_getconf.patch ./fix-math.patch + + ./cve-2014-0475.patch ]; postPatch = '' diff --git a/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch b/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch new file mode 100644 index 000000000000..a4f983de8f6c --- /dev/null +++ b/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch @@ -0,0 +1,170 @@ +Picked from upstream commits, but excluding changes to news and tests: +d183645616b0533 and 4e8f95a0df7c2 +Also see https://sourceware.org/bugzilla/show_bug.cgi?id=17137 + +diff --git a/locale/setlocale.c b/locale/setlocale.c +index 9458468..6455b8b 100644 +--- a/locale/setlocale.c ++++ b/locale/setlocale.c +@@ -272,6 +272,8 @@ setlocale (int category, const char *locale) + of entries of the form `CATEGORY=VALUE'. */ + const char *newnames[__LC_LAST]; + struct __locale_data *newdata[__LC_LAST]; ++ /* Copy of the locale argument, for in-place splitting. */ ++ char *locale_copy = NULL; + + /* Set all name pointers to the argument name. */ + for (category = 0; category < __LC_LAST; ++category) +@@ -281,7 +283,13 @@ setlocale (int category, const char *locale) + if (__glibc_unlikely (strchr (locale, ';') != NULL)) + { + /* This is a composite name. Make a copy and split it up. */ +- char *np = strdupa (locale); ++ locale_copy = strdup (locale); ++ if (__glibc_unlikely (locale_copy == NULL)) ++ { ++ __libc_rwlock_unlock (__libc_setlocale_lock); ++ return NULL; ++ } ++ char *np = locale_copy; + char *cp; + int cnt; + +@@ -299,6 +307,7 @@ setlocale (int category, const char *locale) + { + error_return: + __libc_rwlock_unlock (__libc_setlocale_lock); ++ free (locale_copy); + + /* Bogus category name. */ + ERROR_RETURN; +@@ -391,8 +400,9 @@ setlocale (int category, const char *locale) + /* Critical section left. */ + __libc_rwlock_unlock (__libc_setlocale_lock); + +- /* Free the resources (the locale path variable). */ ++ /* Free the resources. */ + free (locale_path); ++ free (locale_copy); + + return composite; + } +diff --git a/locale/findlocale.c b/locale/findlocale.c +index bbaf708..22e8b53 100644 +--- a/locale/findlocale.c ++++ b/locale/findlocale.c +@@ -17,6 +17,7 @@ + . */ + + #include ++#include + #include + #include + #include +@@ -57,6 +58,45 @@ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST]; + + const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR; + ++/* Checks if the name is actually present, that is, not NULL and not ++ empty. */ ++static inline int ++name_present (const char *name) ++{ ++ return name != NULL && name[0] != '\0'; ++} ++ ++/* Checks that the locale name neither extremely long, nor contains a ++ ".." path component (to prevent directory traversal). */ ++static inline int ++valid_locale_name (const char *name) ++{ ++ /* Not set. */ ++ size_t namelen = strlen (name); ++ /* Name too long. The limit is arbitrary and prevents stack overflow ++ issues later. */ ++ if (__glibc_unlikely (namelen > 255)) ++ return 0; ++ /* Directory traversal attempt. */ ++ static const char slashdot[4] = {'/', '.', '.', '/'}; ++ if (__glibc_unlikely (memmem (name, namelen, ++ slashdot, sizeof (slashdot)) != NULL)) ++ return 0; ++ if (namelen == 2 && __glibc_unlikely (name[0] == '.' && name [1] == '.')) ++ return 0; ++ if (namelen >= 3 ++ && __glibc_unlikely (((name[0] == '.' ++ && name[1] == '.' ++ && name[2] == '/') ++ || (name[namelen - 3] == '/' ++ && name[namelen - 2] == '.' ++ && name[namelen - 1] == '.')))) ++ return 0; ++ /* If there is a slash in the name, it must start with one. */ ++ if (__glibc_unlikely (memchr (name, '/', namelen) != NULL) && name[0] != '/') ++ return 0; ++ return 1; ++} + + struct __locale_data * + internal_function +@@ -65,7 +105,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, + { + int mask; + /* Name of the locale for this category. */ +- char *loc_name; ++ char *loc_name = (char *) *name; + const char *language; + const char *modifier; + const char *territory; +@@ -73,31 +113,39 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, + const char *normalized_codeset; + struct loaded_l10nfile *locale_file; + +- if ((*name)[0] == '\0') ++ if (loc_name[0] == '\0') + { + /* The user decides which locale to use by setting environment + variables. */ +- *name = getenv ("LC_ALL"); +- if (*name == NULL || (*name)[0] == '\0') +- *name = getenv (_nl_category_names.str ++ loc_name = getenv ("LC_ALL"); ++ if (!name_present (loc_name)) ++ loc_name = getenv (_nl_category_names.str + + _nl_category_name_idxs[category]); +- if (*name == NULL || (*name)[0] == '\0') +- *name = getenv ("LANG"); ++ if (!name_present (loc_name)) ++ loc_name = getenv ("LANG"); ++ if (!name_present (loc_name)) ++ loc_name = (char *) _nl_C_name; + } + +- if (*name == NULL || (*name)[0] == '\0' +- || (__builtin_expect (__libc_enable_secure, 0) +- && strchr (*name, '/') != NULL)) +- *name = (char *) _nl_C_name; ++ /* We used to fall back to the C locale if the name contains a slash ++ character '/', but we now check for directory traversal in ++ valid_locale_name, so this is no longer necessary. */ + +- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 +- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) ++ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0 ++ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0) + { + /* We need not load anything. The needed data is contained in + the library itself. */ + *name = (char *) _nl_C_name; + return _nl_C[category]; + } ++ else if (!valid_locale_name (loc_name)) ++ { ++ __set_errno (EINVAL); ++ return NULL; ++ } ++ ++ *name = loc_name; + + /* We really have to load some data. First we try the archive, + but only if there was no LOCPATH environment variable specified. */ From d4c946829f5de3b603f84236240ab8d7bbb6a94e Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Mon, 4 Aug 2014 19:41:54 +0200 Subject: [PATCH 49/53] fontconfig: revert to sysconfdir=/etc. Closes #3453 --- pkgs/development/libraries/fontconfig/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index 5e211c74d5e6..f0c4da755673 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -20,6 +20,7 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig expat ]; configureFlags = [ + "--sysconfdir=/etc" "--with-cache-dir=/var/cache/fontconfig" "--disable-docs" "--with-default-fonts=" @@ -39,7 +40,7 @@ stdenv.mkDerivation rec { doCheck = true; # Don't try to write to /var/cache/fontconfig at install time. - installFlags = "fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false"; + installFlags = "sysconfdir=$(out)/etc fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false"; postInstall = '' cd "$out/etc/fonts" && tar xvf ${infinality_patch} From aa0da0e1a8c201537d4089cf8666793066e569ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 4 Aug 2014 20:33:39 +0200 Subject: [PATCH 50/53] mesa: bugfix update Squashed this one as well, as mesa bugfixes tend to be very reliable. --- pkgs/development/libraries/mesa/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 5695967bc3dc..bbad10898bf4 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -24,7 +24,7 @@ else */ let - version = "10.2.4"; + version = "10.2.5"; # this is the default search path for DRI drivers driverLink = "/run/opengl-driver" + stdenv.lib.optionalString stdenv.isi686 "-32"; in @@ -35,7 +35,7 @@ stdenv.mkDerivation { src = fetchurl { url = "ftp://ftp.freedesktop.org/pub/mesa/${version}/MesaLib-${version}.tar.bz2"; - sha256 = "06l18j9vshq2xzhnp6zd6pw0dlfy0qg1cw4zyn1w51gb8h9398h6"; + sha256 = "039is15p8pkhf8m0yiyb72zybl63xb9ckqzcg3xwi8zlyw5ryidl"; }; prePatch = "patchShebangs ."; From 9a5adb93d46b7a5be2fe81e11e12be2cc24988de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 4 Aug 2014 21:11:35 +0200 Subject: [PATCH 51/53] libav: maintenance + security update Supposed to fix CVE-2011-3946 and CVE-2013-{0851,0852,0868}. --- pkgs/development/libraries/libav/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libav/default.nix b/pkgs/development/libraries/libav/default.nix index cd80d61d1916..8ee8c087b2f1 100644 --- a/pkgs/development/libraries/libav/default.nix +++ b/pkgs/development/libraries/libav/default.nix @@ -28,7 +28,7 @@ let result = { libav_0_8 = libavFun "0.8.13" "1fr3rzykrlm1cla0csm9hqa3gcqp19hf5rgn70nyb9w92r67v685"; libav_9 = libavFun "9.14" "07gn4lbqx6wfhb2h2ddj88hcsacwmzb4syalg211m55xmp1g1fp4"; - libav_10 = libavFun "10.2" "06wvk51cnllw6367qagc90sva4jr5d0r6jx8183wcwzwzgv01w29"; + libav_10 = libavFun "10.3" "1fq83rc5534fjqjlhkw5i9k54dmyqn2pgvyillm6pws8rkn9yb5r"; }; libavFun = version : sha256 : stdenv.mkDerivation rec { From 5c276c4f68125e7d53e0467a3e74969dbd05b51b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Aug 2014 09:46:57 +0200 Subject: [PATCH 52/53] openssl: update to version 1.0.1i See https://www.openssl.org/news/secadv_20140806.txt for a long list of CVE numbers. Fixes . --- pkgs/development/libraries/openssl/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 93f7cbe1a1f4..8c88df984f05 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -2,7 +2,7 @@ , withCryptodev ? false, cryptodevHeaders }: let - name = "openssl-1.0.1h"; + name = "openssl-1.0.1i"; opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ] (throw "openssl needs its platform name cross building" null) @@ -43,7 +43,7 @@ stdenv.mkDerivation { "http://www.openssl.org/source/${name}.tar.gz" "http://openssl.linux-mirror.org/source/${name}.tar.gz" ]; - sha256 = "14yhsgag5as7nhxnw7f0vklwjwa3pmn1i15nmp3f4qxa6sc8l74x"; + sha256 = "1izwv1wzqdw8aqnvb70jcqpqp0rvkcm22w5c1dm9l1kpr939y5rw"; }; patches = patchesCross false; @@ -65,7 +65,7 @@ stdenv.mkDerivation { makeFlags = "MANDIR=$(out)/share/man"; # Parallel building is broken in OpenSSL. - #enableParallelBuilding = true; + enableParallelBuilding = false; postInstall = '' From 777617f987c1e3e44f0f399582bc1b2e2f113c42 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 8 Aug 2014 19:28:24 +0200 Subject: [PATCH 53/53] ncurses: Build with standard gcc --- .../development/libraries/ncurses/default.nix | 28 +++++++++---------- pkgs/top-level/all-packages.nix | 7 ----- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 7627fb79e992..87953c1158d5 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, unicode ? true}: +{ lib, stdenv, fetchurl, unicode ? true }: let /* C++ bindings fail to build on `i386-pc-solaris2.11' with GCC 3.4.3: @@ -10,7 +10,7 @@ let So disable them for now. */ cxx = !stdenv.isSunOS; in -stdenv.mkDerivation (rec { +stdenv.mkDerivation rec { name = "ncurses-5.9"; src = fetchurl { @@ -18,13 +18,7 @@ stdenv.mkDerivation (rec { sha256 = "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh"; }; - clangPatch = fetchurl { - # Patch referenced from https://github.com/Homebrew/homebrew-dupes/issues/43 - url = "http://lists.gnu.org/archive/html/bug-ncurses/2011-04/txtkWQqiQvcZe.txt"; - sha256 = "03lrwqvb0r2qgi8hz7ayd3g26d6xilr3c92j8li3b77kdc0w0rlv"; - }; - - patches = [ ./patch-ac ] ++ stdenv.lib.optional stdenv.isDarwin clangPatch; + patches = [ ./patch-ac ]; configureFlags = '' --with-shared --without-debug --enable-pc-files --enable-symlinks @@ -41,6 +35,8 @@ stdenv.mkDerivation (rec { export configureFlags="$configureFlags --includedir=$out/include" export PKG_CONFIG_LIBDIR="$out/lib/pkgconfig" mkdir -p "$PKG_CONFIG_LIBDIR" + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace configure --replace -no-cpp-precomp "" ''; selfNativeBuildInput = true; @@ -50,8 +46,8 @@ stdenv.mkDerivation (rec { preBuild = # On Darwin, we end up using the native `sed' during bootstrap, and it # fails to run this command, which isn't needed anyway. - stdenv.lib.optionalString (!stdenv.isDarwin) - ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; + lib.optionalString (!stdenv.isDarwin) + ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; # When building a wide-character (Unicode) build, create backward # compatibility links from the the "normal" libraries to the @@ -71,6 +67,8 @@ stdenv.mkDerivation (rec { ln -svf ncursesw5-config $out/bin/ncurses5-config '' else ""; + postFixup = lib.optionalString stdenv.isDarwin "rm $out/lib/*.so"; + meta = { description = "GNU Ncurses, a free software emulation of curses in SVR4 and more"; @@ -90,9 +88,9 @@ stdenv.mkDerivation (rec { homepage = http://www.gnu.org/software/ncurses/; - license = stdenv.lib.licenses.mit; + license = lib.licenses.mit; - maintainers = [ stdenv.lib.maintainers.ludo ]; - platforms = stdenv.lib.platforms.all; + maintainers = [ lib.maintainers.ludo ]; + platforms = lib.platforms.all; }; -} // ( if stdenv.isDarwin then { postFixup = "rm $out/lib/*.so"; } else { } ) ) +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6af488d5217e..3e77a1231bf8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5754,13 +5754,6 @@ let ncurses = callPackage ../development/libraries/ncurses { unicode = system != "i686-cygwin"; - stdenv = - # On Darwin, NCurses uses `-no-cpp-precomp', which is specific to - # Apple-GCC. Since NCurses is part of stdenv, always use - # `stdenvNative' to build it. - if stdenv.isDarwin - then allStdenvs.stdenvNative - else stdenv; }; neon = callPackage ../development/libraries/neon {