diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2011-07-12 14:15:20 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2011-07-12 14:15:20 +0000 |
commit | 079c689ef9b252fd82dbf9b182ec2517c48f8737 (patch) | |
tree | 76d35549f6bb5cf84901953a98be8682c25bb8fb | |
parent | ec9bd2e246eb94181a9254dcb2de7ddc191bb8cc (diff) |
Tue Jul 12 14:15:20 UTC 2011
96 files changed, 0 insertions, 12697 deletions
diff --git a/community-testing/coin/PKGBUILD b/community-testing/coin/PKGBUILD deleted file mode 100644 index 70289ef96..000000000 --- a/community-testing/coin/PKGBUILD +++ /dev/null @@ -1,54 +0,0 @@ -# Maintainer: Thomas Dziedzic < gostrc at gmail > -# Contributor: mickele -# Contributor: marcus fritzsch <fritschy@googlemail.com> - -pkgname=coin -pkgver=3.1.3 -pkgrel=5 -pkgdesc='Coin3D is a high-level 3D graphics toolkit on top of OpenGL.' -url='http://www.coin3d.org/' -license=('GPL') -arch=('i686' 'x86_64') -depends=('mesa' 'expat') -makedepends=('doxygen') -optdepends=('openal: sound/dynamic linking support' - 'fontconfig: dynamic linking support' - 'zlib: dynamic linking support' - 'freetype2: dynamic linking support' - 'js: dynamic linking support') -options=('!libtool') -source=("http://ftp.coin3d.org/coin/src/all/Coin-${pkgver}.tar.gz") -md5sums=('1538682f8d92cdf03e845c786879fbea') - -build() { - cd Coin-${pkgver} - - ./configure \ - --prefix=/usr \ - --mandir=/usr/share/man \ - --enable-optimization \ - --enable-3ds-import \ - --enable-javascript-api \ - --enable-threadsafe \ - --enable-exceptions \ - --enable-man \ - --with-mesa \ - --disable-debug \ - --enable-shared \ - --disable-maintainer-mode \ - --disable-dependency-tracking \ - --enable-system-expat - - make -} - -package() { - cd Coin-${pkgver} - - make DESTDIR=${pkgdir} install - - # final adjustments - for _FILE in threads deprecated ; do - mv "${pkgdir}/usr/share/man/man3/${_FILE}.3" "${pkgdir}/usr/share/man/man3/coin-${_FILE}.3" - done -} diff --git a/community-testing/couchdb/PKGBUILD b/community-testing/couchdb/PKGBUILD deleted file mode 100644 index 6d4d6d171..000000000 --- a/community-testing/couchdb/PKGBUILD +++ /dev/null @@ -1,46 +0,0 @@ -# $Id: PKGBUILD 51045 2011-07-04 15:16:10Z spupykin $ -# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> -# Contributor: Vitaliy Berdinskikh ur6lad[at]i.ua -# Previous Contributor: Michael Fellinger <m.fellinger@gmail.com> - -pkgname=couchdb -pkgver=1.1.0 -pkgrel=1.svn20110704 -pkgdesc="A document-oriented database that can be queried and indexed in a MapReduce fashion using JSON" -arch=('i686' 'x86_64') -url="http://couchdb.apache.org" -license=('APACHE') -depends=('icu' 'erlang' 'js' 'openssl' 'curl') -makedepends=('gcc') -install=couchdb.install -options=('!libtool') -backup=('etc/couchdb/local.ini' - 'etc/conf.d/couchdb' - 'etc/logrotate.d/couchdb') -#source=("http://www.apache.org/dist/$pkgname/$pkgver/apache-$pkgname-$pkgver.tar.gz" -source=("http://arch.p5n.pp.ru/~sergej/dl/apache-couchdb-$pkgver.svn20110704.tar.gz" - "rc-script.patch") -md5sums=('a961f9047aa34df56ef19d6f6dce083b' - 'e9b5595338efbdc1a5db13284a296612') - -build() { - cd "$srcdir/apache-$pkgname-$pkgver" - - sed -i 's|-ljs|-lmozjs185|' configure - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var - make - patch etc/init/couchdb <$srcdir/rc-script.patch -} - -package() { - cd "$srcdir/apache-$pkgname-$pkgver" - make DESTDIR="$pkgdir" install - - install -Dm755 etc/default/couchdb $pkgdir/etc/conf.d/couchdb - sed -i 's|\(CONFIGURATION_FILE=/etc/\)default\(/couchdb\)|\1conf.d\2|' $pkgdir/etc/rc.d/couchdb - sed -i 's|\(COUCHDB_OPTIONS=\)|\1"-p /var/run/couchdb/couchdb.pid"|' $pkgdir/etc/conf.d/couchdb - sed -i 's|$COUCHDB -s|$COUCHDB $COUCHDB_OPTIONS -s|' $pkgdir/etc/rc.d/couchdb - sed -i 's|su $COUCHDB_USER -c|su $COUCHDB_USER -s /bin/bash -c|' $pkgdir/etc/rc.d/couchdb - - rm -rf $pkgdir/etc/default/ $pkgdir/var/run -} diff --git a/community-testing/couchdb/couchdb.install b/community-testing/couchdb/couchdb.install deleted file mode 100644 index 5eff459c7..000000000 --- a/community-testing/couchdb/couchdb.install +++ /dev/null @@ -1,22 +0,0 @@ -post_install() { - id couchdb &>/dev/null || \ - useradd -r -c "CouchDB daemon" -g daemon -d /var/lib/couchdb -s /bin/false couchdb - mkdir -p /var/run/couchdb - chown -R couchdb.daemon /etc/couchdb - chown -R couchdb.daemon /var/{lib,log,run}/couchdb -} - -pre_upgrade() { - id couchdb &>/dev/null || \ - useradd -r -c "CouchDB daemon" -g daemon -d /var/lib/couchdb -s /bin/false couchdb -} - -post_upgrade() { - mkdir -p $pkgdir/var/run/couchdb - chown -R couchdb.daemon /etc/couchdb - chown -R couchdb.daemon /var/{lib,log,run}/couchdb -} - -post_remove() { - userdel couchdb &>/dev/null -} diff --git a/community-testing/couchdb/rc-script.patch b/community-testing/couchdb/rc-script.patch deleted file mode 100644 index d38f4dc6c..000000000 --- a/community-testing/couchdb/rc-script.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- couchdb.org 2011-04-01 19:56:32.000000000 +0000 -+++ couchdb 2011-04-01 19:59:17.000000000 +0000 -@@ -1,4 +1,7 @@ --#!/bin/sh -e -+#!/bin/bash -+#general config -+. /etc/rc.conf -+. /etc/rc.d/functions - - # Licensed under the Apache License, Version 2.0 (the "License"); you may not - # use this file except in compliance with the License. You may obtain a copy of -@@ -29,7 +32,7 @@ - NAME=couchdb - SCRIPT_NAME=`basename $0` - COUCHDB=/usr/bin/couchdb --CONFIGURATION_FILE=/etc/default/couchdb -+CONFIGURATION_FILE=/etc/conf.d/couchdb - RUN_DIR=/var/run/couchdb - LSB_LIBRARY=/lib/lsb/init-functions - -@@ -61,8 +63,9 @@ - fi - - start_couchdb () { -- # Start Apache CouchDB as a background process. -+ stat_busy "Starting the CouchDB daemon" - -+ [ -d /var/run/couchdb ] || mkdir -p /var/run/couchdb - command="$COUCHDB -b" - if test -n "$COUCHDB_STDOUT_FILE"; then - command="$command -o $COUCHDB_STDOUT_FILE" -@@ -79,38 +82,38 @@ - mkdir -p "$RUN_DIR" - if test -n "$COUCHDB_USER"; then - chown $COUCHDB_USER "$RUN_DIR" -- if su $COUCHDB_USER -c "$command" > /dev/null; then -- return $SCRIPT_OK -+ if su $COUCHDB_USER -s /bin/bash -c "$command" > /dev/null; then -+ stat_done - else -- return $SCRIPT_ERROR -+ stat_fail - fi - else - if $command > /dev/null; then -- return $SCRIPT_OK -+ stat_done - else -- return $SCRIPT_ERROR -+ stat_fail - fi - fi - } - - stop_couchdb () { -- # Stop the running Apache CouchDB process. -+ stat_busy "Stopping the CouchDB daemon" - - command="$COUCHDB -d" - if test -n "$COUCHDB_OPTIONS"; then - command="$command $COUCHDB_OPTIONS" - fi - if test -n "$COUCHDB_USER"; then -- if su $COUCHDB_USER -c "$command" > /dev/null; then -- return $SCRIPT_OK -+ if su $COUCHDB_USER -s /bin/bash -c "$command" > /dev/null; then -+ stat_done - else -- return $SCRIPT_ERROR -+ stat_fail - fi - else - if $command > /dev/null; then -- return $SCRIPT_OK -+ stat_done - else -- return $SCRIPT_ERROR -+ stat_fail - fi - fi - } -@@ -118,7 +121,7 @@ - display_status () { - # Display the status of the running Apache CouchDB process. - -- $COUCHDB -s -+ $COUCHDB $COUCHDB_OPTIONS -s - } - - parse_script_option_list () { diff --git a/community-testing/elinks/PKGBUILD b/community-testing/elinks/PKGBUILD deleted file mode 100644 index 037b290e9..000000000 --- a/community-testing/elinks/PKGBUILD +++ /dev/null @@ -1,37 +0,0 @@ -# $Id: PKGBUILD 51048 2011-07-04 15:29:28Z spupykin $ -# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> -# Maintainer: Andrea Scarpino <andrea@archlinux.org> -# Contributor: damir <damir@archlinux.org> -# Contributor: Ben <contrasutra@myrealbox.com> - -pkgname=elinks -pkgver=0.13 -_commit="03c698e926d4421ba43d905b6d9fd7388b97352f" -pkgrel=6 -pkgdesc="An advanced and well-established feature-rich text mode web browser." -arch=("i686" "x86_64") -url="http://elinks.or.cz" -license=('GPL') -depends=('bzip2' 'expat>=2.0' 'gpm>=1.20.4' 'openssl' 'lua>=5.1.1' 'libidn' 'js' - 'gc' 'tre' 'smbclient') -source=("http://arch.p5n.pp.ru/~sergej/dl/elinks-$pkgver-${_commit}.tar.gz") -md5sums=('85916038633d0eb4ed98c3f82ac0b405') - -build() { - cd "$srcdir/elinks" - [ -x configure ] || sh autogen.sh - ./configure --prefix=/usr --mandir=/usr/share/man \ - --sysconfdir=/etc \ - --enable-smb --without-x --enable-cgi \ - --enable-leds --enable-256-colors --enable-html-highlight \ - --with-zlib - make -} - -package() { - cd "$srcdir/elinks" - make DESTDIR="$pkgdir" install - rm -f "$pkgdir/usr/share/locale/locale.alias" - install -D -m644 "contrib/debian/$pkgname.desktop" \ - "$pkgdir/usr/share/applications/$pkgname.desktop" -} diff --git a/community-testing/freewrl/PKGBUILD b/community-testing/freewrl/PKGBUILD deleted file mode 100644 index 8d00cdc7f..000000000 --- a/community-testing/freewrl/PKGBUILD +++ /dev/null @@ -1,38 +0,0 @@ -# $Id: PKGBUILD 51056 2011-07-04 16:35:05Z spupykin $ -# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> -# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com> - -pkgname=freewrl -pkgver=1.22.10 -pkgrel=6 -pkgdesc="VRML viewer" -arch=('i686' 'x86_64') -url="http://freewrl.sourceforge.net/" -license=('GPL') -depends=('java-runtime' 'libxaw' 'glew' 'freeglut' 'curl' 'freetype2' 'imlib2' 'sox' - 'unzip' 'imagemagick' 'libxml2' 'ttf-bitstream-vera' 'lesstif' 'js') -makedepends=('java-environment') -options=(!libtool) -source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 - build-fix.patch) -md5sums=('07fd8f193d14799ffb95a59a4887fc88' - '52e4b6aacebcaf18cbec8975e0eb7fd8') - -build() { - . /etc/profile.d/openjdk6.sh - cd $srcdir/$pkgname-$pkgver - patch -p1 <$srcdir/build-fix.patch - export JAVASCRIPT_ENGINE_CFLAGS="-I/usr/include/js -DXP_UNIX -DJS_THREADSAFE $(pkg-config --cflags nspr)" - export JAVASCRIPT_ENGINE_LIBS="$(pkg-config --libs nspr) -lmozjs185" - ./configure \ - --prefix=/usr --with-fontsdir=/usr/share/fonts/TTF --enable-libeai \ - --enable-libcurl --with-expat=/usr --with-target=x11 --disable-plugin \ - --disable-mozilla-js --disable-xulrunner-js --disable-firefox-js \ - --disable-seamonkey-js - make -} - -package() { - cd $srcdir/$pkgname-$pkgver - make DESTDIR=$pkgdir install -} diff --git a/community-testing/freewrl/build-fix.patch b/community-testing/freewrl/build-fix.patch deleted file mode 100644 index c0de71d07..000000000 --- a/community-testing/freewrl/build-fix.patch +++ /dev/null @@ -1,1201 +0,0 @@ -diff -wbBur freewrl-1.22.10/src/lib/non_web3d_formats/ColladaParser.c freewrl-1.22.10.my/src/lib/non_web3d_formats/ColladaParser.c ---- freewrl-1.22.10/src/lib/non_web3d_formats/ColladaParser.c 2010-08-19 06:20:36.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/non_web3d_formats/ColladaParser.c 2011-07-04 01:19:07.000000000 +0400 -@@ -54,7 +54,7 @@ - #include "ColladaParser.h" - - #if HAVE_EXPAT_H --# include <expat.h> -+# include </usr/include/expat.h> - #endif - - #define PROTOINSTANCE_MAX_LEVELS 10 -diff -wbBur freewrl-1.22.10/src/lib/world_script/fieldGet.c freewrl-1.22.10.my/src/lib/world_script/fieldGet.c ---- freewrl-1.22.10/src/lib/world_script/fieldGet.c 2010-10-13 23:45:26.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/fieldGet.c 2011-07-04 20:21:21.000000000 +0400 -@@ -412,7 +412,7 @@ - /* create a new SFFloat object */ - - fp = (float *)fp_in; -- newjsval = DOUBLE_TO_JSVAL(JS_NewDouble(cx,(double)*fp)); -+ newjsval = JS_NewJSVal(cx,(double)*fp); - fp_in = offsetPointer_deref(float *,fp_in,elementlen); - - /* put this object into the MF class */ -@@ -449,7 +449,7 @@ - /* create a new SFTime object */ - - fp = (float *)fp_in; -- newjsval = DOUBLE_TO_JSVAL(JS_NewDouble(cx,(double)*fp)); -+ newjsval = JS_NewJSVal(cx,(double)*fp); - fp_in = offsetPointer_deref(float *,fp_in,elementlen); - - /* put this object into the MF class */ -diff -wbBur freewrl-1.22.10/src/lib/world_script/fieldSet.c freewrl-1.22.10.my/src/lib/world_script/fieldSet.c ---- freewrl-1.22.10/src/lib/world_script/fieldSet.c 2010-09-22 00:00:25.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/fieldSet.c 2011-07-04 20:03:53.000000000 +0400 -@@ -748,7 +748,7 @@ - - #ifdef SETFIELDVERBOSE - strval = JS_ValueToString(scriptContext, JSglobal_return_val); -- strp = JS_GetStringBytes(strval); -+ strp = JS_EncodeString(scriptContext, strval); - printf ("start of setField_javascriptEventOut, to %ld:%d = %p, fieldtype %d string %s\n",(long)tn, tptr, memptr, fieldType, strp); - #endif - -@@ -813,7 +813,7 @@ - case FIELDTYPE_SFImage: { - /* the string should be saved as an SFImage */ - strval = JS_ValueToString(scriptContext, JSglobal_return_val); -- strp = JS_GetStringBytes(strval); -+ strp = JS_EncodeString(scriptContext, strval); - - Parser_scanStringValueToMem(tn, tptr, FIELDTYPE_SFImage, strp, FALSE); - break; -@@ -824,7 +824,7 @@ - uintptr_t *newptr; - - strval = JS_ValueToString(scriptContext, JSglobal_return_val); -- strp = JS_GetStringBytes(strval); -+ strp = JS_EncodeString(scriptContext, strval); - - /* copy the string over, delete the old one, if need be */ - /* printf ("fieldSet SFString, tn %d tptr %d offset from struct %d\n", -@@ -844,7 +844,7 @@ - struct X3D_Node *mynode; - - strval = JS_ValueToString(scriptContext, JSglobal_return_val); -- strp = JS_GetStringBytes(strval); -+ strp = JS_EncodeString(scriptContext, strval); - - /* we will have at least one node here, in an ascii string */ - while ((*strp > '\0') && (*strp <= ' ')) strp ++; -@@ -1227,7 +1227,7 @@ - JSString *_tmpStr; - - _tmpStr = JS_ValueToString(cx, mainElement); -- strp = JS_GetStringBytes(_tmpStr); -+ strp = JS_EncodeString(scriptContext, _tmpStr); - printf ("sub element %d is \"%s\" \n",i,strp); - - if (JSVAL_IS_OBJECT(mainElement)) printf ("sub element %d is an OBJECT\n",i); -@@ -1329,7 +1329,7 @@ - JSString *strval; - - strval = JS_ValueToString(cx, mainElement); -- strp = JS_GetStringBytes(strval); -+ strp = JS_EncodeString(cx, strval); - - #ifdef SETFIELDVERBOSE - printf ("getJSMultiNumType, got string %s\n",strp); -@@ -1441,7 +1441,7 @@ - return; - } - strval = JS_ValueToString(cx, _v); -- valStr = JS_GetStringBytes(strval); -+ valStr = JS_EncodeString(cx, strval); - - /* printf ("new string %d is %s\n",i,valStr); */ - -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsUtils.c freewrl-1.22.10.my/src/lib/world_script/jsUtils.c ---- freewrl-1.22.10/src/lib/world_script/jsUtils.c 2010-06-03 23:38:37.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsUtils.c 2011-07-04 20:21:44.000000000 +0400 -@@ -134,7 +134,7 @@ - nf = OBJECT_TO_JSVAL(me); - - #ifdef JSVRMLCLASSESVERBOSE -- printf ("parentField is %u \"%s\"\n", pf, JS_GetStringBytes(JSVAL_TO_STRING(pf))); -+ printf ("parentField is %u \"%s\"\n", pf, JS_EncodeString(cx, JSVAL_TO_STRING(pf))); - #endif - - if (!setSFNodeField (cx, par, pf, &nf)) { -@@ -197,7 +197,7 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, *newval); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - oldS = (struct Uni_String *) *((uintptr_t *)Data); - -@@ -305,12 +305,12 @@ - - case FIELDTYPE_SFFloat: { - memcpy ((void *) &fl, Data, datalen); -- *newval = DOUBLE_TO_JSVAL(JS_NewDouble(cx,(double)fl)); -+ *newval = JS_NewJSVal(cx,(double)fl); - break; - } - case FIELDTYPE_SFTime: { - memcpy ((void *) &dl, Data, datalen); -- *newval = DOUBLE_TO_JSVAL(JS_NewDouble(cx,dl)); -+ *newval = JS_NewJSVal(cx,dl); - break; - } - case FIELDTYPE_SFBool: -@@ -824,7 +824,7 @@ - struct X3D_Node *node; - - _idStr = JS_ValueToString(context, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(context, _idStr); - - #ifdef JSVRMLCLASSESVERBOSE - printf ("\ngetSFNodeField called on name %s object %u\n",_id_c, obj); -@@ -912,7 +912,7 @@ - - /* get the id field... */ - -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - - #ifdef JSVRMLCLASSESVERBOSE - printf ("\nsetSFNodeField called on name %s object %u, jsval %u\n",_id_c, obj, *vp); -@@ -1131,10 +1131,10 @@ - char *_id_c = "(no value in string)"; - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - /* printf ("hmmm...js_SetPropertyCheck called on string \"%s\" object %u, jsval %u\n",_id_c, obj, *vp); */ - } else if (JSVAL_IS_DOUBLE(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyCheck called on double %s object %u, jsval %u\n",_id_c, obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1192,7 +1192,7 @@ - /* get the id field... */ - - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - printf ("\n...js_GetPropertyDebug called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1211,7 +1211,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1229,7 +1229,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug1 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1247,7 +1247,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(cx, JSVAL_TO_STRING(id)); - printf ("...js_SetPropertyDebug2 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1265,7 +1265,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug3 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1283,7 +1283,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug4 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1301,7 +1301,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug5 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1319,7 +1319,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug6 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1337,7 +1337,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug7 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1355,7 +1355,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug8 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -@@ -1373,7 +1373,7 @@ - - /* get the id field... */ - if (JSVAL_IS_STRING(id)) { -- _id_c = JS_GetStringBytes(JSVAL_TO_STRING(id)); -+ _id_c = JS_EncodeString(context, JSVAL_TO_STRING(id)); - printf ("\n...js_SetPropertyDebug9 called on string \"%s\" object %u, jsval %lu\n",_id_c, (unsigned int) obj, *vp); - } else if (JSVAL_IS_INT(id)) { - num = JSVAL_TO_INT(id); -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsVRMLBrowser.c freewrl-1.22.10.my/src/lib/world_script/jsVRMLBrowser.c ---- freewrl-1.22.10/src/lib/world_script/jsVRMLBrowser.c 2010-08-02 23:55:57.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsVRMLBrowser.c 2011-07-04 20:06:25.000000000 +0400 -@@ -336,7 +336,7 @@ - return JS_FALSE; - } - _str = JS_ValueToString(context, argv[0]); -- _costr = JS_GetStringBytes(_str); -+ _costr = JS_EncodeString(context, _str); - - /* sanitize string, for the EAI_RW call (see EAI_RW code) */ - tptr = _costr; -@@ -385,10 +385,10 @@ - return JS_FALSE; - } - _str[0] = JS_ValueToString(context, argv[0]); -- _costr[0] = JS_GetStringBytes(_str[0]); -+ _costr[0] = JS_EncodeString(context, _str[0]); - - _str[1] = JS_ValueToString(context, argv[1]); -- _costr[1] = JS_GetStringBytes(_str[1]); -+ _costr[1] = JS_EncodeString(context, _str[1]); - - /* we use the EAI code for this - so reformat this for the EAI format */ - { -@@ -575,7 +575,7 @@ - /* third parameter should be a string */ - if (JSVAL_IS_STRING(argv[2])) { - _str[1] = JSVAL_TO_STRING(argv[2]); -- fieldStr = JS_GetStringBytes(_str[1]); -+ fieldStr = JS_EncodeString(context, _str[1]); - #ifdef JSVERBOSE - printf ("field string is :%s:\n",fieldStr); - #endif -@@ -590,7 +590,7 @@ - - /* get the URL listing as a string */ - _str[0] = JS_ValueToString(context, argv[0]); -- _costr0 = JS_GetStringBytes(_str[0]); -+ _costr0 = JS_EncodeString(context, _str[0]); - - - #ifdef JSVERBOSE -@@ -690,7 +690,7 @@ - for (count=0; count < argc; count++) { - if (JSVAL_IS_STRING(argv[count])) { - _str = JSVAL_TO_STRING(argv[count]); -- _id_c = JS_GetStringBytes(_str); -+ _id_c = JS_EncodeString(context, _str); - #if defined(AQUA) || defined(_MSC_VER) - BrowserPrintConsoleMessage(_id_c); /* statusbar hud */ - consMsgCount = 0; /* reset the "Maximum" count */ -@@ -850,7 +850,7 @@ - - /* parameter should be a string */ - if (JSVAL_IS_STRING(argv[0])) { -- target = JS_GetStringBytes( JSVAL_TO_STRING(argv[0])); -+ target = JS_EncodeString(context, JSVAL_TO_STRING(argv[0])); - #ifdef JSVERBOSE - printf ("field string is %s\n",target); - #endif -@@ -930,7 +930,7 @@ - - /* parameters should be a string */ - if (JSVAL_IS_STRING(argv[0])) { -- targetDevice = JS_GetStringBytes( JSVAL_TO_STRING(argv[0])); -+ targetDevice = JS_EncodeString(cx, JSVAL_TO_STRING(argv[0])); - #ifdef JSVERBOSE - printf ("field string is %s\n",targetDevice); - #endif -@@ -939,7 +939,7 @@ - return -1; - } - if (JSVAL_IS_STRING(argv[1])) { -- targetController = JS_GetStringBytes( JSVAL_TO_STRING(argv[1])); -+ targetController = JS_EncodeString(cx, JSVAL_TO_STRING(argv[1])); - #ifdef JSVERBOSE - printf ("field string is %s\n",targetController); - #endif -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsVRMLClasses.c freewrl-1.22.10.my/src/lib/world_script/jsVRMLClasses.c ---- freewrl-1.22.10/src/lib/world_script/jsVRMLClasses.c 2010-09-22 23:40:48.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsVRMLClasses.c 2011-07-04 20:08:03.000000000 +0400 -@@ -935,7 +935,7 @@ - printf( "JS_NewDouble failed for %f in simplecopyelements.\n",dd); - return JS_FALSE; - } -- val = DOUBLE_TO_JSVAL(dp); -+ val = DOUBLE_TO_JSVAL(*dp); - - } - } -@@ -1108,7 +1108,7 @@ - - printf ("HAVE STRING HERE!\n"); - _str = JS_ValueToString(cx, id); -- asciiStr = JS_GetStringBytes(_str); -+ asciiStr = JS_EncodeString(context, _str); - printf ("we have as a parameter :%s:\n",asciiStr); - #endif - -@@ -1185,7 +1185,7 @@ - if (_tmpStr==NULL) { - _tmp_valStr = "NULL"; - } else { -- _tmp_valStr = JS_GetStringBytes(_tmpStr); -+ _tmp_valStr = JS_EncodeString(cx, _tmpStr); - } - } - -@@ -1281,7 +1281,7 @@ - #endif - - str = JS_ValueToString(cx, id); -- p = JS_GetStringBytes(str); -+ p = JS_EncodeString(cx, str); - #ifdef JSVRMLCLASSESVERBOSE - printf("\tid string %s\n ",p); - #endif -@@ -1368,12 +1368,12 @@ - char * _c; - printf ("doMFSetProperty, for object %u, vp %u\n", obj,*vp); - _str = JS_ValueToString(cx, id); -- _c = JS_GetStringBytes(_str); -+ _c = JS_EncodeString(cx, _str); - printf ("id is %s\n",_c); - - _sstr = JS_ValueToString(cx, *vp); - printf ("looking up value for %d %x object %p\n",*vp,*vp,obj); -- _cc = JS_GetStringBytes(_sstr); -+ _cc = JS_EncodeString(cx, _sstr); - printf("\tdoMFSetProperty:%d: obj = %p, id = %s, vp = %s\n",type, - obj, _c, _cc); - if (JSVAL_IS_OBJECT(*vp)) { printf ("doMFSet, vp is an OBJECT\n"); } -@@ -1397,7 +1397,7 @@ - - if (!JS_ValueToInt32(cx, *vp, &i)) { - _sstr = JS_ValueToString(cx, *vp); -- _cc = JS_GetStringBytes(_sstr); -+ _cc = JS_EncodeString(cx, _sstr); - printf ("can not convert %s to an integer in doMFAddProperty for type %d\n",_cc,type); - return JS_FALSE; - } -@@ -1408,7 +1408,7 @@ - #ifdef JSVRMLCLASSESVERBOSE - printf ("doMFSetProperty - ensure that this is a DOUBLE "); - _sstr = JS_ValueToString(cx, *vp); -- _cc = JS_GetStringBytes(_sstr); -+ _cc = JS_EncodeString(cx, _sstr); - printf ("value is %s \n",_cc); - #endif - -@@ -1420,7 +1420,7 @@ - printf( "JS_NewDouble failed for %f in simplecopyelements.\n",dd); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - - } - } -@@ -1511,7 +1511,7 @@ - nf = OBJECT_TO_JSVAL(me); - - #ifdef JSVRMLCLASSESVERBOSE -- printf ("parentField is %u \"%s\"\n", pf, JS_GetStringBytes(JSVAL_TO_STRING(pf))); -+ printf ("parentField is %u \"%s\"\n", pf, JS_EncodeString(cx, JSVAL_TO_STRING(pf))); - #endif - - if (!setSFNodeField (cx, par, pf, &nf)) { -@@ -1535,7 +1535,7 @@ - unsigned int i, j = 0; - - _str = JS_ValueToString(cx, *vp); -- _buff = JS_GetStringBytes(_str); -+ _buff = JS_EncodeString(cx, _str); - _buff_len = strlen(_buff) + 1; - - #ifdef JSVRMLCLASSESVERBOSE -@@ -1719,14 +1719,14 @@ - size_t len = 0; - - _idStr = JS_ValueToString(context, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(context, _idStr); - - /* "register" this ECMA value for routing changed flag stuff */ - setInECMATable(context, _id_c); - - if (JSVAL_IS_STRING(*vp)) { - _vpStr = JS_ValueToString(context, *vp); -- _vp_c = JS_GetStringBytes(_vpStr); -+ _vp_c = JS_EncodeString(context, _vpStr); - - len = strlen(_vp_c); - -@@ -1752,7 +1752,7 @@ - } else { - #ifdef JSVRMLCLASSESVERBOSE - _vpStr = JS_ValueToString(context, *vp); -- _vp_c = JS_GetStringBytes(_vpStr); -+ _vp_c = JS_EncodeString(cx, _vpStr); - printf("setECMANative: obj = %p, id = \"%s\", vp = %s\n", - obj, _id_c, _vp_c); - #endif -@@ -1770,9 +1770,9 @@ - JSString *_idStr, *_vpStr; - char *_id_c, *_vp_c; - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - _vpStr = JS_ValueToString(cx, *vp); -- _vp_c = JS_GetStringBytes(_vpStr); -+ _vp_c = JS_EncodeString(cx, _vpStr); - printf("getAssignProperty: obj = %p, id = \"%s\", vp = %s\n", - obj, _id_c, _vp_c); - printf ("what is vp? \n"); -@@ -1803,7 +1803,7 @@ - - if (JSVAL_IS_STRING(id)) { - _str = JSVAL_TO_STRING(id); -- _id_c = JS_GetStringBytes(_str); -+ _id_c = JS_EncodeString(cx, _str); - if (!JS_ConvertValue(cx, *vp, JSTYPE_OBJECT, &newVal)) { - printf( "JS_ConvertValue failed in setAssignProperty.\n"); - return JS_FALSE; -@@ -1834,9 +1834,9 @@ - if (JSVAL_IS_DOUBLE(id)) printf ("id is an DOUBLE\n"); - if (JSVAL_IS_INT(id)) printf ("id is an INT\n"); - -- printf ("id is %s\n",JS_GetStringBytes(JS_ValueToString(cx,id))); -- printf ("initVal is %s\n",JS_GetStringBytes(JS_ValueToString(cx,initVal))); -- printf ("newVal is %s\n",JS_GetStringBytes(JS_ValueToString(cx,newVal))); -+ printf ("id is %s\n",JS_EncodeString(cx, JS_ValueToString(cx,id))); -+ printf ("initVal is %s\n",JS_EncodeString(cx, JS_ValueToString(cx,initVal))); -+ printf ("newVal is %s\n",JS_EncodeString(cx, JS_ValueToString(cx,newVal))); - - #endif - -@@ -1859,7 +1859,7 @@ - } else { - #ifdef JSVRMLCLASSESVERBOSE - _str = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_str); -+ _id_c = JS_EncodeString(cx, _str); - printf("setAssignProperty: obj = %p, id = \"%s\"\n", - obj, _id_c); - #endif -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsVRMLClasses.h freewrl-1.22.10.my/src/lib/world_script/jsVRMLClasses.h ---- freewrl-1.22.10/src/lib/world_script/jsVRMLClasses.h 2010-10-13 23:45:26.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsVRMLClasses.h 2011-07-04 20:24:53.000000000 +0400 -@@ -30,6 +30,21 @@ - #ifndef __FREEWRL_JS_VRML_CLASSES_H__ - #define __FREEWRL_JS_VRML_CLASSES_H__ - -+static inline jsval JS_NewJSVal(JSContext *cx, jsdouble d) -+{ -+ jsval ret; -+ JS_NewNumberValue(cx, d, &ret); -+ return ret; -+} -+ -+static inline jsdouble * JS_NewDouble(JSContext *cx, jsdouble d) -+{ -+ static jsdouble ret; -+ jsval rv; -+ JS_NewNumberValue(cx, d, &rv); -+ ret = JSVAL_TO_DOUBLE(rv); -+ return &ret; -+} - - #ifndef UNUSED - #define UNUSED(v) ((void) v) -@@ -80,14 +95,14 @@ - - - #define SET_JS_TICKTIME_FALSE(possibleRetVal) { jsval zimbo; \ -- zimbo = DOUBLE_TO_JSVAL(JS_NewDouble(cx, TickTime)); \ -+ zimbo = JS_NewJSVal(cx, TickTime); \ - if (!JS_DefineProperty(cx,obj, "__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \ - printf( "JS_DefineProperty failed for \"__eventInTickTime\" at %s:%d.\n",__FILE__,__LINE__); \ - return possibleRetVal; \ - }} - - #define SET_JS_TICKTIME() { jsval zimbo; \ -- zimbo = DOUBLE_TO_JSVAL(JS_NewDouble(cx, TickTime)); \ -+ zimbo = JS_NewJSVal(cx, TickTime); \ - if (!JS_DefineProperty(cx,obj, "__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \ - printf( "JS_DefineProperty failed for \"__eventInTickTime\" at %s:%d.\n",__FILE__,__LINE__); \ - return FALSE; \ -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsVRML_MFClasses.c freewrl-1.22.10.my/src/lib/world_script/jsVRML_MFClasses.c ---- freewrl-1.22.10/src/lib/world_script/jsVRML_MFClasses.c 2010-09-22 23:40:48.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsVRML_MFClasses.c 2011-07-04 20:08:44.000000000 +0400 -@@ -596,7 +596,7 @@ - return; - } - -- val = DOUBLE_TO_JSVAL(dp); -+ val = DOUBLE_TO_JSVAL(*dp); - - if (!JS_SetElement(cx, obj, (jsint) i, &val)) { - printf( "JS_DefineElement failed for arg %u in VrmlMatrixSetTransform.\n", i); -@@ -1212,7 +1212,7 @@ - /* - if (JSVAL_IS_STRING(id)==TRUE) { - printf(" is a common string :%s:\n", -- JS_GetStringBytes(JS_ValueToString(cx, id))); -+ JS_EncodeString(cx, JS_ValueToString(cx, id))); - } - if (JSVAL_IS_OBJECT(id)==TRUE) { - printf (" parameter is an object\n"); -@@ -1231,7 +1231,7 @@ - _index = JSVAL_TO_INT(id); - - if (_index >= _length) { -- *vp = DOUBLE_TO_JSVAL(&zerojsdouble); -+ *vp = DOUBLE_TO_JSVAL(zerojsdouble); - if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) { - printf( "JS_DefineElement failed in VrmlMatrixGetProperty.\n"); - return JS_FALSE; -@@ -1331,7 +1331,7 @@ - printf("MFStringAddProperty: vp = %p\n", obj); - if (JSVAL_IS_STRING(*vp)==TRUE) { - printf(" is a common string :%s:\n", -- JS_GetStringBytes(JS_ValueToString(cx, *vp))); -+ JS_EncodeString(cx, JS_ValueToString(cx, *vp))); - } - if (JSVAL_IS_OBJECT(*vp)==TRUE) { - printf (" parameter is an object\n"); -@@ -1345,7 +1345,7 @@ - printf("MFStringAddProperty: id = %p\n", obj); - if (JSVAL_IS_STRING(id)==TRUE) { - printf(" is a common string :%s:\n", -- JS_GetStringBytes(JS_ValueToString(cx, id))); -+ JS_EncodeString(cx, JS_ValueToString(cx, id))); - } - if (JSVAL_IS_OBJECT(id)==TRUE) { - printf (" parameter is an object\n"); -@@ -1494,7 +1494,7 @@ - if (JSVAL_IS_STRING(argv[i])==TRUE) { - printf (" Common String, is"); - _str = JS_ValueToString(cx, argv[i]); -- printf (JS_GetStringBytes(_str)); -+ printf (JS_EncodeString(cx, _str)); - printf (".."); - - } -diff -wbBur freewrl-1.22.10/src/lib/world_script/jsVRML_SFClasses.c freewrl-1.22.10.my/src/lib/world_script/jsVRML_SFClasses.c ---- freewrl-1.22.10/src/lib/world_script/jsVRML_SFClasses.c 2010-09-25 00:22:05.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/world_script/jsVRML_SFClasses.c 2011-07-04 20:09:01.000000000 +0400 -@@ -161,7 +161,7 @@ - printf( "JS_NewDouble failed for %f in SFColorGetHSV.\n", xp[i]); - return JS_FALSE; - } -- _v = DOUBLE_TO_JSVAL(dp); -+ _v = DOUBLE_TO_JSVAL(*dp); - JS_SetElement(cx, result, (jsint)i, &_v); - } - -@@ -336,7 +336,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -346,7 +346,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -356,7 +356,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } -@@ -387,13 +387,13 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(_val); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(_val); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(_val); - break; - - } -@@ -422,18 +422,18 @@ - *rval = OBJECT_TO_JSVAL(_arrayObj); - - /* construct new double before conversion? */ -- _v = DOUBLE_TO_JSVAL(&hue); -+ _v = DOUBLE_TO_JSVAL(hue); - if (!JS_SetElement(cx, _arrayObj, 0, &_v)) { - printf( "JS_SetElement failed for hue in SFColorRGBAGetHSV.\n"); - return JS_FALSE; - } -- _v = DOUBLE_TO_JSVAL(&saturation); -+ _v = DOUBLE_TO_JSVAL(saturation); - if (!JS_SetElement(cx, _arrayObj, 1, &_v)) { - printf( "JS_SetElement failed for saturation in SFColorRGBAGetHSV.\n"); - return JS_FALSE; - } - -- _v = DOUBLE_TO_JSVAL(&value); -+ _v = DOUBLE_TO_JSVAL(value); - if (!JS_SetElement(cx, _arrayObj, 2, &_v)) { - printf( "JS_SetElement failed for value in SFColorRGBAGetHSV.\n"); - return JS_FALSE; -@@ -601,7 +601,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -611,7 +611,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -621,7 +621,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 3: - d = (ptr->v).c[3]; -@@ -631,7 +631,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } -@@ -662,16 +662,16 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(_val); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(_val); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(_val); - break; - case 3: -- (ptr->v).c[3] = (float) *JSVAL_TO_DOUBLE(_val); -+ (ptr->v).c[3] = (float) JSVAL_TO_DOUBLE(_val); - break; - - } -@@ -983,7 +983,7 @@ - } else if (argc == 1) { - /* is this a string, or a number indicating a node? */ - myStr = JS_ValueToString(cx, argv[0]); -- cString = JS_GetStringBytes(myStr); -+ cString = JS_EncodeString(cx, myStr); - #ifdef JSVRMLCLASSESVERBOSE - printf ("SFNodeConstr, argc =1l string %s\n",cString); - #endif -@@ -1067,13 +1067,13 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, argv[0]); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - /* printf ("first string :%s:\n",_id_c); */ - - cString = STRDUP(_id_c); - - _idStr = JS_ValueToString(cx, argv[1]); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - /* printf ("second string :%s:\n",_id_c); */ - - if (sscanf (_id_c,"%p",&newHandle) != 1) { -@@ -1190,7 +1190,7 @@ - jsval rval; - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - #ifdef JSVRMLCLASSESVERBOSE - printf ("start of SFNodeGetProperty... id is %s\n",_id_c); -@@ -1264,10 +1264,10 @@ - - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - _valStr = JS_ValueToString(cx, *vp); -- _val_c = JS_GetStringBytes(_valStr); -+ _val_c = JS_EncodeString(cx, _valStr); - - #ifdef JSVRMLCLASSESVERBOSE - printf("SFNodeSetProperty: obj = %p, id = %s, vp = %s\n", -@@ -1904,7 +1904,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -1914,7 +1914,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -1924,7 +1924,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 3: - d = (ptr->v).c[3]; -@@ -1934,7 +1934,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } -@@ -1969,16 +1969,16 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 3: -- (ptr->v).c[3] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[3] = (float) JSVAL_TO_DOUBLE(myv); - break; - } - } -@@ -2051,7 +2051,7 @@ - * it get created in javascript? */ - if (param_isString) { - _str = JS_ValueToString(cx, *argv); -- charString = JS_GetStringBytes(_str); -+ charString = JS_EncodeString(cx, _str); - - if (sscanf(charString, "%lf %lf", - &(pars[0]), &(pars[1])) != 2) { -@@ -2143,7 +2143,7 @@ - printf( "JS_NewDouble failed for %f in SFVec2f.\n",d); - return JS_FALSE; - } -- *rval = DOUBLE_TO_JSVAL(dp); -+ *rval = DOUBLE_TO_JSVAL(*dp); - } - - #ifdef JSVRMLCLASSESVERBOSE -@@ -2332,7 +2332,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -2342,7 +2342,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } -@@ -2373,13 +2373,13 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(myv); - break; - } - } -@@ -2458,7 +2458,7 @@ - * it get created in javascript? */ - if (param_isString) { - _str = JS_ValueToString(cx, *argv); -- charString = JS_GetStringBytes(_str); -+ charString = JS_EncodeString(cx, _str); - - if (sscanf(charString, "%lf %lf %lf", - &(pars[0]), &(pars[1]), &(pars[2])) != 3) { -@@ -2580,7 +2580,7 @@ - printf( "JS_NewDouble failed for %f in SFVec3f.\n",d); - return JS_FALSE; - } -- *rval = DOUBLE_TO_JSVAL(dp); -+ *rval = DOUBLE_TO_JSVAL(*dp); - } - #ifdef JSVRMLCLASSESVERBOSE - if (retSFVec3f){ -@@ -2792,9 +2792,9 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - _idStr = JS_ValueToString(cx, *vp); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - #endif - -@@ -2813,7 +2813,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -2823,7 +2823,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -2833,7 +2833,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } else { -@@ -2869,13 +2869,13 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(myv); - break; - } - } -@@ -2949,7 +2949,7 @@ - * it get created in javascript? */ - if (param_isString) { - _str = JS_ValueToString(cx, *argv); -- charString = JS_GetStringBytes(_str); -+ charString = JS_EncodeString(cx, _str); - - if (sscanf(charString, "%lf %lf %lf", - &(pars[0]), &(pars[1]), &(pars[2])) != 3) { -@@ -3071,7 +3071,7 @@ - printf( "JS_NewDouble failed for %f in SFVec3d.\n",d); - return JS_FALSE; - } -- *rval = DOUBLE_TO_JSVAL(dp); -+ *rval = DOUBLE_TO_JSVAL(*dp); - } - #ifdef JSVRMLCLASSESVERBOSE - if (retSFVec3d){ -@@ -3282,9 +3282,9 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - _idStr = JS_ValueToString(cx, *vp); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - #endif - -@@ -3303,7 +3303,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -3313,7 +3313,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -3323,7 +3323,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } else { -@@ -3359,13 +3359,13 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = JSVAL_TO_DOUBLE(myv); - break; - } - } -@@ -3513,9 +3513,9 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - _idStr = JS_ValueToString(cx, *vp); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - #endif - -@@ -3534,7 +3534,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -3544,7 +3544,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -3554,7 +3554,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 3: - d = (ptr->v).c[3]; -@@ -3564,7 +3564,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } else { -@@ -3600,16 +3600,16 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 3: -- (ptr->v).c[3] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[3] = (float) JSVAL_TO_DOUBLE(myv); - break; - } - } -@@ -3758,9 +3758,9 @@ - char *_id_c; - - _idStr = JS_ValueToString(cx, id); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - _idStr = JS_ValueToString(cx, *vp); -- _id_c = JS_GetStringBytes(_idStr); -+ _id_c = JS_EncodeString(cx, _idStr); - - #endif - -@@ -3779,7 +3779,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 1: - d = (ptr->v).c[1]; -@@ -3789,7 +3789,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 2: - d = (ptr->v).c[2]; -@@ -3799,7 +3799,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - case 3: - d = (ptr->v).c[3]; -@@ -3809,7 +3809,7 @@ - d); - return JS_FALSE; - } -- *vp = DOUBLE_TO_JSVAL(dp); -+ *vp = DOUBLE_TO_JSVAL(*dp); - break; - } - } else { -@@ -3845,16 +3845,16 @@ - if (JSVAL_IS_INT(id)) { - switch (JSVAL_TO_INT(id)) { - case 0: -- (ptr->v).c[0] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[0] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 1: -- (ptr->v).c[1] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[1] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 2: -- (ptr->v).c[2] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[2] = (float) JSVAL_TO_DOUBLE(myv); - break; - case 3: -- (ptr->v).c[3] = (float) *JSVAL_TO_DOUBLE(myv); -+ (ptr->v).c[3] = (float) JSVAL_TO_DOUBLE(myv); - break; - } - } -diff -wbBur freewrl-1.22.10/src/lib/x3d_parser/X3DParser.c freewrl-1.22.10.my/src/lib/x3d_parser/X3DParser.c ---- freewrl-1.22.10/src/lib/x3d_parser/X3DParser.c 2010-09-22 20:54:59.000000000 +0400 -+++ freewrl-1.22.10.my/src/lib/x3d_parser/X3DParser.c 2011-07-04 01:19:07.000000000 +0400 -@@ -54,7 +54,7 @@ - #include "X3DProtoScript.h" - - #if HAVE_EXPAT_H --# include <expat.h> -+# include </usr/include/expat.h> - #endif - //#define X3DPARSERVERBOSE 1 - diff --git a/community-testing/gpac/PKGBUILD b/community-testing/gpac/PKGBUILD deleted file mode 100644 index 69717e2bc..000000000 --- a/community-testing/gpac/PKGBUILD +++ /dev/null @@ -1,44 +0,0 @@ -# Maintainer: Brad Fanella <bradfanella@archlinux.us -# Contributor: Allan McRae <allan@archlinux.org> -# Contributor: niQo -# Contributor: Daniel J Griffiths <ghost1227@archlinux.us> - -pkgname=gpac -pkgver=0.4.5 -pkgrel=7 -pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" -arch=('i686' 'x86_64') -url="http://gpac.sourceforge.net" -depends=('libxml2' 'wxgtk' 'alsa-lib' 'sdl' 'js' 'libmad' \ - 'faad2' 'xvidcore' 'ffmpeg' 'freeglut') -license=('LGPL') -options=('!makeflags') # Multiple build jobs aren't handled correctly -source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz - libpng14-infopp-null.patch) -md5sums=('755e8c438a48ebdb13525dd491f5b0d1' - '14d6483c9eb84434aea68596f243e0ca') - -build() { - cd ${srcdir}/${pkgname} - chmod +x configure - sed -i 's|--warn-common||' configure - sed -i 's#osmozilla##g' applications/Makefile - sed -i 's#"$(prefix)#"$(DESTDIR)$(prefix)#' applications/osmo4_wx/Makefile - sed -i 's#ldconfig || true##g' Makefile - - #FS#14506 - sed -i 's#lib64#lib#g' configure - patch -Np1 -i ${srcdir}/libpng14-infopp-null.patch - - # Was getting "symbol lookup error: /usr/lib/gpac/gm_x11_out.so: undefined - # symbol: XvQueryExtension" with our LDFLAGS :\ - unset LDFLAGS - - ./configure --prefix=/usr --mandir=/usr/share/man --use-js=no - make -} - -package() { - cd ${srcdir}/${pkgname} - make DESTDIR=${pkgdir} install install-lib -} diff --git a/community-testing/gpac/libpng14-infopp-null.patch b/community-testing/gpac/libpng14-infopp-null.patch deleted file mode 100644 index b02456557..000000000 --- a/community-testing/gpac/libpng14-infopp-null.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -upr gpac.orig/src/media_tools/img.c gpac/src/media_tools/img.c ---- gpac.orig/src/media_tools/img.c 2010-01-24 19:03:28.000000000 +0200 -+++ gpac/src/media_tools/img.c 2010-01-24 19:04:07.000000000 +0200 -@@ -551,7 +551,7 @@ GF_Err gf_img_png_enc(char *data, u32 wi - /* Allocate/initialize the image information data. REQUIRED */ - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) { -- png_destroy_write_struct(&png_ptr, png_infopp_NULL); -+ png_destroy_write_struct(&png_ptr, NULL); - return GF_IO_ERR; - } - diff --git a/community-testing/mediatomb/PKGBUILD b/community-testing/mediatomb/PKGBUILD deleted file mode 100644 index c8850e23c..000000000 --- a/community-testing/mediatomb/PKGBUILD +++ /dev/null @@ -1,49 +0,0 @@ -# $Id: PKGBUILD 51077 2011-07-05 06:51:52Z jconder $ -# Contributor: William Rea <sillywilly@gmail.com> -# Contributor: Nikhil Bysani <nikron@gmail.com> -# Contributor: Mika Hynnä <igheax@gmail.com> -# Maintainer: Jonathan Conder <jonno.conder@gmail.com> - -pkgname=mediatomb -pkgver=0.12.1 -pkgrel=5 -pkgdesc="Free UPnP/DLNA media server" -arch=('i686' 'x86_64') -url="http://mediatomb.cc/" -license=('GPL') -depends=('curl' 'ffmpegthumbnailer' 'js' 'libexif' 'libmp4v2' 'sqlite3' 'taglib') -backup=('etc/conf.d/mediatomb') -install=mediatomb.install -source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" - 'mediatomb.rc' - 'mediatomb.conf' - 'gcc46.patch' - 'tonewjs.patch') -md5sums=('e927dd5dc52d3cfcebd8ca1af6f0d3c2' - 'aa1191ec508d8bd4b3b9a5fe48efc079' - 'bec297e4178332a26b42bbde873b94cd' - '0ae34c0d73b76e3d215887834c3c08cf' - 'd9e02a9956eecf5ff645bddf6dac0331') - -build() { - cd "$srcdir/$pkgname-$pkgver" - patch -Np1 -i $srcdir/gcc46.patch - patch -Np1 -i $srcdir/tonewjs.patch - - ./configure --prefix=/usr \ - --disable-mysql \ - --enable-libmagic \ - --enable-libjs \ - --enable-ffmpeg - make -} - -package() { - cd "$srcdir/$pkgname-$pkgver" - - make DESTDIR="$pkgdir/" install - - install -D -m0755 "$srcdir/mediatomb.rc" "$pkgdir/etc/rc.d/mediatomb" - install -D -m0755 "$srcdir/mediatomb.conf" "$pkgdir/etc/conf.d/mediatomb" - install -d "$pkgdir/var/lib/mediatomb" -} diff --git a/community-testing/mediatomb/gcc46.patch b/community-testing/mediatomb/gcc46.patch deleted file mode 100644 index 0f4fe490f..000000000 --- a/community-testing/mediatomb/gcc46.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/src/zmm/object.h -+++ b/src/zmm/object.h -@@ -33,6 +33,7 @@ - #define __ZMM_OBJECT_H__ - - #include <new> // for size_t -+#include <cstddef> - #include "atomic.h" - - namespace zmm diff --git a/community-testing/mediatomb/mediatomb.conf b/community-testing/mediatomb/mediatomb.conf deleted file mode 100644 index 798018d2a..000000000 --- a/community-testing/mediatomb/mediatomb.conf +++ /dev/null @@ -1,23 +0,0 @@ -# -# Parameters to be passed to mediatomb -# - -# Port to listen on -MT_PORT='50500' - -# User and group to run as -MT_USER='nobody' -MT_GROUP='nobody' - -# Location of the PID file -MT_PIDFILE='/var/run/mediatomb.pid' - -# Location of the log file -MT_LOGFILE='/var/log/mediatomb.log' - -# Location of the config file/database -MT_HOME='/var/lib/mediatomb' -MT_CFGDIR='.mediatomb' - -# User defined command line options -MT_OPTIONS='' diff --git a/community-testing/mediatomb/mediatomb.install b/community-testing/mediatomb/mediatomb.install deleted file mode 100644 index 56f6ef92c..000000000 --- a/community-testing/mediatomb/mediatomb.install +++ /dev/null @@ -1,9 +0,0 @@ -post_install() { - echo 'Warning: the MediaTomb web interface exposes your filesystem to the network' - echo 'For maximum security, set <ui enabled="no"> in your MediaTomb config file' -} - -post_upgrade() { - # TODO: disable next update - post_install -} diff --git a/community-testing/mediatomb/mediatomb.rc b/community-testing/mediatomb/mediatomb.rc deleted file mode 100644 index 7b93012cd..000000000 --- a/community-testing/mediatomb/mediatomb.rc +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions -. /etc/conf.d/mediatomb - -MT_OPTIONS="-p $MT_PORT -u $MT_USER -g $MT_GROUP -P $MT_PIDFILE \ - -l $MT_LOGFILE -m $MT_HOME -f $MT_CFGDIR $MT_OPTIONS" - -case "$1" in - start) - stat_busy "Starting Mediatomb UPnP Media Server" - - chown "$MT_USER:$MT_GROUP" "$MT_HOME" - - if ! pidof -o %PPID /usr/bin/mediatomb &> /dev/null; then - rm -f "$MT_PIDFILE" - fi - - PID="$(cat "$MT_PIDFILE" 2> /dev/null)" - - if [ -z "$PID" ] && /usr/bin/mediatomb -d $MT_OPTIONS; then - add_daemon mediatomb - stat_done - else - stat_fail - fi - ;; - - stop) - stat_busy "Stopping Mediatomb UPnP Media Server" - - PID="$(cat "$MT_PIDFILE" 2> /dev/null)" - - if [ -n "$PID" ] && kill "$PID" &> /dev/null; then - rm -f "$MT_PIDFILE" - rm_daemon mediatomb - stat_done - else - stat_fail - fi - ;; - - restart) - "$0" stop - sleep 1 - "$0" start - ;; - - *) - echo "usage: $0 {start|stop|restart}" - ;; -esac -exit 0 diff --git a/community-testing/mediatomb/tonewjs.patch b/community-testing/mediatomb/tonewjs.patch deleted file mode 100644 index 115968530..000000000 --- a/community-testing/mediatomb/tonewjs.patch +++ /dev/null @@ -1,564 +0,0 @@ -diff -up mediatomb-0.12.1-back/build/Makefile.in.tonewjs mediatomb-0.12.1-back/build/Makefile.in ---- mediatomb-0.12.1-back/build/Makefile.in.tonewjs 2010-04-08 00:40:15.000000000 +0200 -+++ mediatomb-0.12.1-back/build/Makefile.in 2011-04-19 17:17:01.343509944 +0200 -@@ -257,7 +257,7 @@ CURL_LIBS = @CURL_LIBS@ - CXX = @CXX@ - CXXCPP = @CXXCPP@ - CXXDEPMODE = @CXXDEPMODE@ --CXXFLAGS = @CXXFLAGS@ -+CXXFLAGS = -fpermissive @CXXFLAGS@ - CYGPATH_W = @CYGPATH_W@ - DB_AUTOCREATE_OPTION_ENABLED = @DB_AUTOCREATE_OPTION_ENABLED@ - DB_AUTOCREATE_OPTION_REQUESTED = @DB_AUTOCREATE_OPTION_REQUESTED@ -diff -up mediatomb-0.12.1-back/src/scripting/import_script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/import_script.cc ---- mediatomb-0.12.1-back/src/scripting/import_script.cc.tonewjs 2011-04-18 13:10:48.000000000 +0200 -+++ mediatomb-0.12.1-back/src/scripting/import_script.cc 2011-04-18 13:29:36.000000000 +0200 -@@ -53,8 +53,8 @@ ImportScript::ImportScript(Ref<Runtime> - try - { - load(scriptPath); -- root = JS_NewScriptObject(cx, script); -- JS_AddNamedRoot(cx, &root, "ImportScript"); -+ root = JS_NewObject(cx, NULL, script, NULL); -+ JS_AddNamedObjectRoot(cx, &root, "ImportScript"); - } - catch (Exception ex) - { -@@ -117,7 +117,7 @@ ImportScript::~ImportScript() - #endif - - if (root) -- JS_RemoveRoot(cx, &root); -+ JS_RemoveObjectRoot(cx, &root); - - #ifdef JS_THREADSAFE - JS_EndRequest(cx); -diff -up mediatomb-0.12.1-back/src/scripting/js_functions.cc.tonewjs mediatomb-0.12.1-back/src/scripting/js_functions.cc ---- mediatomb-0.12.1-back/src/scripting/js_functions.cc.tonewjs 2011-04-18 13:29:55.000000000 +0200 -+++ mediatomb-0.12.1-back/src/scripting/js_functions.cc 2011-04-19 16:48:04.009229611 +0200 -@@ -49,7 +49,7 @@ using namespace zmm; - extern "C" { - - JSBool --js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+js_print(JSContext *cx, uintN argc, jsval *argv) - { - uintN i; - JSString *str; -@@ -60,19 +60,21 @@ js_print(JSContext *cx, JSObject *obj, u - if (!str) - return JS_TRUE; - argv[i] = STRING_TO_JSVAL(str); -- log_js("%s\n", JS_GetStringBytes(str)); -+ char * log_str = JS_EncodeString(cx, str); -+ log_js("%s\n", log_str); -+ JS_free(cx, log_str); - } - return JS_TRUE; - } - - JSBool --js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+js_copyObject(JSContext *cx, uintN argc, jsval *argv) - { - jsval arg; - JSObject *js_cds_obj; - JSObject *js_cds_clone_obj; - -- Script *self = (Script *)JS_GetPrivate(cx, obj); -+ Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); - - try - { -@@ -91,7 +93,7 @@ js_copyObject(JSContext *cx, JSObject *o - - self->cdsObject2jsObject(cds_obj, js_cds_clone_obj); - -- *rval = OBJECT_TO_JSVAL(js_cds_clone_obj); -+ JS_SET_RVAL(cx, argv, OBJECT_TO_JSVAL(js_cds_clone_obj)); - - return JS_TRUE; - -@@ -110,7 +112,7 @@ js_copyObject(JSContext *cx, JSObject *o - } - - JSBool --js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+js_addCdsObject(JSContext *cx, uintN argc, jsval *argv) - { - try - { -@@ -126,7 +128,7 @@ js_addCdsObject(JSContext *cx, JSObject - Ref<StringConverter> p2i; - Ref<StringConverter> i2i; - -- Script *self = (Script *)JS_GetPrivate(cx, obj); -+ Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); - - if (self == NULL) - { -@@ -156,20 +158,20 @@ js_addCdsObject(JSContext *cx, JSObject - if (!str) - path = _("/"); - else -- path = JS_GetStringBytes(str); -+ path = JS_EncodeString(cx, str); - - JSString *cont = JS_ValueToString(cx, argv[2]); - if (cont) - { -- containerclass = JS_GetStringBytes(cont); -+ containerclass = JS_EncodeString(cx, cont); - if (!string_ok(containerclass) || containerclass == "undefined") - containerclass = nil; - } - - if (self->whoami() == S_PLAYLIST) -- js_orig_obj = self->getObjectProperty(obj, _("playlist")); -+ js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist")); - else if (self->whoami() == S_IMPORT) -- js_orig_obj = self->getObjectProperty(obj, _("orig")); -+ js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig")); - - if (js_orig_obj == NULL) - { -@@ -285,8 +287,7 @@ js_addCdsObject(JSContext *cx, JSObject - JSString *str2 = JS_NewStringCopyN(cx, tmp.c_str(), tmp.length()); - if (!str2) - return JS_TRUE; -- *rval = STRING_TO_JSVAL(str2); -- -+ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2)); - return JS_TRUE; - } - catch (ServerShutdownException se) -@@ -302,7 +303,7 @@ js_addCdsObject(JSContext *cx, JSObject - return JS_TRUE; - } - --static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, charset_convert_t chr) -+static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, charset_convert_t chr) - { - try - { -@@ -321,7 +322,7 @@ static JSBool convert_charset_generic(JS - { - str = JS_ValueToString(cx, argv[0]); - if (str) -- result = JS_GetStringBytes(str); -+ result = JS_EncodeString(cx, str); - } - - if (result != nil) -@@ -330,7 +331,7 @@ static JSBool convert_charset_generic(JS - JSString *str2 = JS_NewStringCopyN(cx, result.c_str(), result.length()); - if (!str2) - return JS_TRUE; -- *rval = STRING_TO_JSVAL(str2); -+ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2)); - } - } - catch (ServerShutdownException se) -@@ -347,24 +348,23 @@ static JSBool convert_charset_generic(JS - } - - --JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv) - { -- return convert_charset_generic(cx, obj, argc, argv, rval, F2I); -+ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, F2I); - } - --JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv) - { -- return convert_charset_generic(cx, obj, argc, argv, rval, M2I); --} -+ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, M2I); } - --JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv) - { -- return convert_charset_generic(cx, obj, argc, argv, rval, P2I); -+ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, P2I); - } - --JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv) - { -- return convert_charset_generic(cx, obj, argc, argv, rval, J2I); -+ return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, J2I); - } - - } // extern "C" -diff -up mediatomb-0.12.1-back/src/scripting/js_functions.h.tonewjs mediatomb-0.12.1-back/src/scripting/js_functions.h ---- mediatomb-0.12.1-back/src/scripting/js_functions.h.tonewjs 2010-03-25 15:58:05.000000000 +0100 -+++ mediatomb-0.12.1-back/src/scripting/js_functions.h 2011-04-18 13:59:29.000000000 +0200 -@@ -40,18 +40,18 @@ - extern "C" { - - /// \brief Log output. --JSBool js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -+JSBool js_print(JSContext *cx, uintN argc, jsval *argv); - - /// \brief Adds an object to the database. --JSBool js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -+JSBool js_addCdsObject(JSContext *cx, uintN argc, jsval *argv); - - /// \brief Makes a copy of an CDS object. --JSBool js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -+JSBool js_copyObject(JSContext *cx, uintN argc, jsval *argv); - --JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); --JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); --JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); --JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -+JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv); -+JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv); -+JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv); -+JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv); - - } // extern "C" - -diff -up mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc ---- mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc.tonewjs 2011-04-18 13:34:14.000000000 +0200 -+++ mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc 2011-04-18 13:51:59.000000000 +0200 -@@ -46,9 +46,9 @@ using namespace zmm; - extern "C" { - - static JSBool --js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -+js_readln(JSContext *cx, uintN argc, jsval *argv) - { -- PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, obj); -+ PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); - - String line; - -@@ -69,7 +69,7 @@ js_readln(JSContext *cx, JSObject *obj, - - JSString *jsline = JS_NewStringCopyZ(cx, line.c_str()); - -- *rval = STRING_TO_JSVAL(jsline); -+ JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(jsline)); - - return JS_TRUE; - } -@@ -93,8 +93,8 @@ PlaylistParserScript::PlaylistParserScri - - String scriptPath = ConfigManager::getInstance()->getOption(CFG_IMPORT_SCRIPTING_PLAYLIST_SCRIPT); - load(scriptPath); -- root = JS_NewScriptObject(cx, script); -- JS_AddNamedRoot(cx, &root, "PlaylistScript"); -+ root = JS_NewObject(cx, NULL, script, NULL); -+ JS_AddNamedObjectRoot(cx, &root, "PlaylistScript"); - } - catch (Exception ex) - { -@@ -245,7 +245,7 @@ PlaylistParserScript::~PlaylistParserScr - #endif - - if (root) -- JS_RemoveRoot(cx, &root); -+ JS_RemoveObjectRoot(cx, &root); - - #ifdef JS_THREADSAFE - JS_EndRequest(cx); -diff -up mediatomb-0.12.1-back/src/scripting/script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/script.cc ---- mediatomb-0.12.1-back/src/scripting/script.cc.tonewjs 2011-04-18 13:53:07.000000000 +0200 -+++ mediatomb-0.12.1-back/src/scripting/script.cc 2011-04-19 18:26:34.460338804 +0200 -@@ -87,7 +87,7 @@ String Script::getProperty(JSObject *obj - str = JS_ValueToString(cx, val); - if (! str) - return nil; -- return JS_GetStringBytes(str); -+ return JS_EncodeString(cx, str); - } - - int Script::getBoolProperty(JSObject *obj, String name) -@@ -427,14 +427,14 @@ static JSFunctionSpec js_global_function - try - { - common_script = _load(common_scr_path); -- common_root = JS_NewScriptObject(cx, common_script); -- JS_AddNamedRoot(cx, &common_root, "common-script"); -+ common_root = JS_NewObject(cx, NULL, common_script, NULL); -+ JS_AddNamedObjectRoot(cx, &common_root, "common-script"); - _execute(common_script); - } - catch (Exception e) - { - if (common_root) -- JS_RemoveRoot(cx, &common_root); -+ JS_RemoveObjectRoot(cx, &common_root); - - log_js("Unable to load %s: %s\n", common_scr_path.c_str(), - e.getMessage().c_str()); -@@ -460,7 +460,7 @@ Script::~Script() - JS_BeginRequest(cx); - #endif - if (common_root) -- JS_RemoveRoot(cx, &common_root); -+ JS_RemoveObjectRoot(cx, &common_root); - - /* - * scripts are unrooted and will be cleaned up by GC -@@ -504,11 +504,11 @@ void Script::initGlobalObject() - static JSClass global_class = - { - "global", /* name */ -- JSCLASS_HAS_PRIVATE, /* flags */ -+ JSCLASS_HAS_PRIVATE | JSCLASS_GLOBAL_FLAGS,/* flags */ - JS_PropertyStub, /* add property */ - JS_PropertyStub, /* del property */ - JS_PropertyStub, /* get property */ -- JS_PropertyStub, /* set property */ -+ JS_StrictPropertyStub, /* set property */ - JS_EnumerateStandardClasses, /* enumerate */ - JS_ResolveStub, /* resolve */ - JS_ConvertStub, /* convert */ -@@ -517,7 +517,7 @@ void Script::initGlobalObject() - }; - - /* create the global object here */ -- glob = JS_NewObject(cx, &global_class, NULL, NULL); -+ glob = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL); - if (! glob) - throw _Exception(_("Scripting: could not initialize glboal class")); - -@@ -539,12 +539,12 @@ void Script::defineFunctions(JSFunctionS - throw _Exception(_("Scripting: JS_DefineFunctions failed")); - } - --JSScript *Script::_load(zmm::String scriptPath) -+JSObject *Script::_load(zmm::String scriptPath) - { - if (glob == NULL) - initGlobalObject(); - -- JSScript *scr; -+ JSObject *scr; - - String scriptText = read_text_file(scriptPath); - -@@ -571,14 +571,11 @@ JSScript *Script::_load(zmm::String scri - - void Script::load(zmm::String scriptPath) - { -- if (script) -- JS_DestroyScript(cx, script); -- - script = _load((scriptPath)); - } - - --void Script::_execute(JSScript *scr) -+void Script::_execute(JSObject *scr) - { - jsval ret_val; - -@@ -662,7 +659,7 @@ Ref<CdsObject> Script::jsObject2cdsObjec - JSObject *js_meta = getObjectProperty(js, _("meta")); - if (js_meta) - { -- JS_AddNamedRoot(cx, &js_meta, "meta"); -+ JS_AddNamedObjectRoot(cx, &js_meta, "meta"); - /// \todo: only metadata enumerated in MT_KEYS is taken - for (int i = 0; i < M_MAX; i++) - { -@@ -687,7 +684,7 @@ Ref<CdsObject> Script::jsObject2cdsObjec - } - } - } -- JS_RemoveRoot(cx, &js_meta); -+ JS_RemoveObjectRoot(cx, &js_meta); - } - - // stuff that has not been exported to js -diff -up mediatomb-0.12.1-back/src/scripting/script.h.tonewjs mediatomb-0.12.1-back/src/scripting/script.h ---- mediatomb-0.12.1-back/src/scripting/script.h.tonewjs 2011-04-18 12:56:14.000000000 +0200 -+++ mediatomb-0.12.1-back/src/scripting/script.h 2011-04-18 12:56:51.000000000 +0200 -@@ -66,8 +66,8 @@ public: - JSRuntime *rt; - JSContext *cx; - JSObject *glob; -- JSScript *script; -- JSScript *common_script; -+ JSObject *script; -+ JSObject *common_script; - - public: - Script(zmm::Ref<Runtime> runtime); -@@ -115,8 +115,8 @@ private: - JSObject *common_root; - - void initGlobalObject(); -- JSScript *_load(zmm::String scriptPath); -- void _execute(JSScript *scr); -+ JSObject *_load(zmm::String scriptPath); -+ void _execute(JSObject *scr); - zmm::Ref<StringConverter> _p2i; - zmm::Ref<StringConverter> _j2i; - zmm::Ref<StringConverter> _f2i; ---- mediatomb-0.12.1/configure.tonewjs 2011-07-04 20:20:00.290227110 +1200 -+++ mediatomb-0.12.1/configure 2011-07-04 20:20:28.186894644 +1200 -@@ -23784,14 +23784,14 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" - - else - -- LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS" -- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 --$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } --if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then -+ LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs185 $ADD_PTHREAD_CFLAGS" -+ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 -+$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } -+if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lmozjs $LIBS" -+LIBS="-lmozjs185 $LIBS" - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF -@@ -23835,12 +23835,12 @@ $as_echo "$ac_try_echo") >&5 - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_mozjs_JS_NewObject=yes -+ ac_cv_lib_mozjs185_JS_NewObject=yes - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_mozjs_JS_NewObject=no -+ ac_cv_lib_mozjs185_JS_NewObject=no - fi - - rm -rf conftest.dSYM -@@ -23848,12 +23848,12 @@ rm -f core conftest.err conftest.$ac_obj - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 --$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } --if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 -+$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } -+if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then - -- JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs" -- MOZLIB=mozjs -+ JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs185" -+ MOZLIB=mozjs185 - - else - -@@ -24020,13 +24020,13 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" - else - - unset ac_cv_lib_smjs_JS_NewObject -- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 --$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } --if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then -+ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 -+$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } -+if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lmozjs $LIBS" -+LIBS="-lmozjs185 $LIBS" - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF -@@ -24070,12 +24070,12 @@ $as_echo "$ac_try_echo") >&5 - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_mozjs_JS_NewObject=yes -+ ac_cv_lib_mozjs185_JS_NewObject=yes - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_mozjs_JS_NewObject=no -+ ac_cv_lib_mozjs185_JS_NewObject=no - fi - - rm -rf conftest.dSYM -@@ -24083,12 +24083,12 @@ rm -f core conftest.err conftest.$ac_obj - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 --$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } --if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 -+$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } -+if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then - -- MOZLIB=mozjs -- JS_LIBS="-lmozjs" -+ MOZLIB=mozjs185 -+ JS_LIBS="-lmozjs185" - - else - -@@ -24239,15 +24239,15 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" - - else - -- LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs" -- unset ac_cv_lib_mozjs_JS_NewObject -- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 --$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } --if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then -+ LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs185" -+ unset ac_cv_lib_mozjs185_JS_NewObject -+ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 -+$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } -+if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lmozjs $LIBS" -+LIBS="-lmozjs185 $LIBS" - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF -@@ -24291,12 +24291,12 @@ $as_echo "$ac_try_echo") >&5 - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_mozjs_JS_NewObject=yes -+ ac_cv_lib_mozjs185_JS_NewObject=yes - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_mozjs_JS_NewObject=no -+ ac_cv_lib_mozjs185_JS_NewObject=no - fi - - rm -rf conftest.dSYM -@@ -24304,12 +24304,12 @@ rm -f core conftest.err conftest.$ac_obj - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 --$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } --if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 -+$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } -+if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then - -- JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs" -- MOZLIB=mozjs -+ JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs185" -+ MOZLIB=mozjs185 - - else - diff --git a/community-testing/mongodb/PKGBUILD b/community-testing/mongodb/PKGBUILD deleted file mode 100644 index 04fa547a9..000000000 --- a/community-testing/mongodb/PKGBUILD +++ /dev/null @@ -1,60 +0,0 @@ -# Maintainer: Thomas Dziedzic < gostrc at gmail > -# Contributor: Mathias Stearn <mathias@10gen.com> -# Contributor: Alec Thomas - -pkgname=mongodb -pkgver=1.8.2 -pkgrel=5 -pkgdesc='A high-performance, open source, schema-free document-oriented database.' -arch=('i686' 'x86_64') -url='http://www.mongodb.org' -license=('AGPL3') -depends=('boost-libs' 'js' 'pcre') -makedepends=('scons' 'boost') -optdepends=('libpcap: needed for mongosniff') -backup=('etc/mongodb.conf') -install="mongodb.install" -source=("http://downloads.mongodb.org/src/mongodb-src-r${pkgver}.tar.gz" - 'mongodb.rc' - 'mongodb.conf' - 'mongodb-1.8.0-spidermonkey-1.8.5-support.patch' - 'add-js185-support-to-SConstruct.diff') -md5sums=('951fb1a75d90fc822cf4528585a970cf' - '85eaa28e349fdc6250f883624e624cca' - '4839fe1d638187ca3226e8267b947318' - '2e6409732fba887c9cfe81257b5260ad' - 'ca7e62be31389d951bfd8848b1675c1b') - -build() { - export SCONSFLAGS="$MAKEFLAGS" - - cd mongodb-src-r${pkgver} - - # js185 support https://jira.mongodb.org/browse/SERVER-2887 - patch -Np1 -i ${srcdir}/mongodb-1.8.0-spidermonkey-1.8.5-support.patch - patch -Np0 -i ${srcdir}/add-js185-support-to-SConstruct.diff - - scons \ - all \ - --full -} - -package() { - cd mongodb-src-r${pkgver} - - scons \ - install \ - --full \ - --prefix=${pkgdir}/usr - - install -D -m755 ${srcdir}/mongodb.rc \ - ${pkgdir}/etc/rc.d/mongodb - install -D -m644 ${srcdir}/mongodb.conf \ - ${pkgdir}/etc/mongodb.conf - install -d -m700 ${pkgdir}/var/lib/mongodb - install -d -m755 ${pkgdir}/var/log/mongodb - - if [ -d ${pkgdir}/usr/lib64 ]; then - mv ${pkgdir}/usr/lib64 ${pkgdir}/usr/lib - fi -} diff --git a/community-testing/mongodb/add-js185-support-to-SConstruct.diff b/community-testing/mongodb/add-js185-support-to-SConstruct.diff deleted file mode 100644 index c621d00cb..000000000 --- a/community-testing/mongodb/add-js185-support-to-SConstruct.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- SConstruct.original 2011-07-05 14:23:46.334748007 +0000 -+++ SConstruct 2011-07-05 14:26:15.729533840 +0000 -@@ -208,6 +208,9 @@ - justClientLib = (COMMAND_LINE_TARGETS == ['mongoclient']) - - env = Environment( MSVS_ARCH=msarch , tools = ["default", "gch"], toolpath = '.' ) -+ -+env.ParseConfig('pkg-config --cflags --libs mozjs185') -+ - if has_option( "cxx" ): - env["CC"] = get_option( "cxx" ) - env["CXX"] = get_option( "cxx" ) diff --git a/community-testing/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch b/community-testing/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch deleted file mode 100644 index 46160450f..000000000 --- a/community-testing/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch +++ /dev/null @@ -1,1502 +0,0 @@ ---- mongodb-src-r1.8.0/SConstruct.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 -+++ mongodb-src-r1.8.0/SConstruct 2011-04-01 22:16:43.411100876 +0200 -@@ -671,7 +671,6 @@ if nix: - env.Append( CPPFLAGS="-fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch" ) - # env.Append( " -Wconversion" ) TODO: this doesn't really work yet - if linux: -- env.Append( CPPFLAGS=" -Werror " ) - env.Append( CPPFLAGS=" -fno-builtin-memcmp " ) # glibc's memcmp is faster than gcc's - env.Append( CXXFLAGS=" -Wnon-virtual-dtor " ) - env.Append( LINKFLAGS=" -fPIC -pthread -rdynamic" ) -@@ -893,11 +892,11 @@ def doConfigure( myenv , needPcre=True , - if usesm: - - # see http://www.mongodb.org/pages/viewpageattachments.action?pageId=12157032 -- J = [ "mozjs" , "js", "js_static" ] -+ J = [ "mozjs185" , "js", "js_static" ] - if windows: - if msarch == "amd64": - if release: -- J = [ "js64r", "js", "mozjs" , "js_static" ] -+ J = [ "js64r", "js", "mozjs185" , "js_static" ] - else: - J = "js64d" - print( "looking for js64d.lib for spidermonkey. (available at mongodb.org prebuilt)" ); -@@ -905,14 +904,12 @@ def doConfigure( myenv , needPcre=True , - if not force32: - print( "Assuming a 32 bit build is desired" ) - if release: -- J = [ "js32r", "js", "mozjs" , "js_static" ] -+ J = [ "js32r", "js", "mozjs185" , "js_static" ] - else: -- J = [ "js32d", "js", "mozjs" , "js_static" ] -+ J = [ "js32d", "js", "mozjs185" , "js_static" ] - - myCheckLib( J , True ) - mozHeader = "js" -- if bigLibString(myenv).find( "mozjs" ) >= 0: -- mozHeader = "mozjs" - - if not conf.CheckHeader( mozHeader + "/jsapi.h" ): - if conf.CheckHeader( "jsapi.h" ): -@@ -921,6 +918,13 @@ def doConfigure( myenv , needPcre=True , - print( "no spider monkey headers!" ) - Exit(1) - -+ if conf.CheckFunc( 'JS_NewCompartmentAndGlobalObject' ): -+ myenv.Append( CPPDEFINES=[ "HAVE_COMPARTMENTS" ] ) -+ if conf.CheckFunc( 'JS_GetStringCharsAndLength' ): -+ myenv.Append( CPPDEFINES=[ "HAVE_JS_GET_STRING_CHARS_AND_LENGTH" ] ) -+ if conf.CheckFunc( 'JS_NewRegExpObjectNoStatics' ): -+ myenv.Append( CPPDEFINES=[ "JS_NEW_REG_EXP_OBJECT_NO_STATISTICS" ] ) -+ - if usev8: - if debugBuild: - myCheckLib( [ "v8_g" , "v8" ] , True ) ---- mongodb-src-r1.8.0/scripting/engine_spidermonkey.cpp.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 -+++ mongodb-src-r1.8.0/scripting/engine_spidermonkey.cpp 2011-04-01 22:42:19.780233492 +0200 -@@ -192,8 +192,13 @@ namespace mongo { - } - - string toString( JSString * so ) { -+#ifdef HAVE_JS_GET_STRING_CHARS_AND_LENGTH -+ size_t srclen; -+ const jschar * s = JS_GetStringCharsAndLength( _context , so , &srclen ); -+#else - jschar * s = JS_GetStringChars( so ); - size_t srclen = JS_GetStringLength( so ); -+#endif - if( srclen == 0 ) - return ""; - -@@ -360,7 +365,7 @@ namespace mongo { - - case JSTYPE_OBJECT: { - JSObject * o = JSVAL_TO_OBJECT( val ); -- if ( ! o || o == JSVAL_NULL ) { -+ if ( ! o || o == (JSObject *)JSVAL_NULL ){ - b.appendNull( name ); - } - else if ( ! appendSpecialDBObject( this , b , name , val , o ) ) { -@@ -419,16 +424,15 @@ namespace mongo { - return true; - } - -- void addRoot( JSFunction * f , const char * name ); -+ void addRoot( JSFunction * f ); - - JSFunction * compileFunction( const char * code, JSObject * assoc = 0 ) { -- const char * gcName = "unknown"; -- JSFunction * f = _compileFunction( code , assoc , gcName ); -- //addRoot( f , gcName ); -+ JSFunction * f = _compileFunction( code , assoc ); -+ //addRoot( f ); - return f; - } - -- JSFunction * _compileFunction( const char * raw , JSObject * assoc , const char *& gcName ) { -+ JSFunction * _compileFunction( const char * raw , JSObject * assoc ) { - if ( ! assoc ) - assoc = JS_GetGlobalObject( _context ); - -@@ -447,7 +451,6 @@ namespace mongo { - if ( isSimpleStatement( s ) ) { - s = "return " + s; - } -- gcName = "cf anon"; - fname << "anon"; - return JS_CompileFunction( _context , assoc , fname.str().c_str() , 0 , 0 , s.c_str() , s.size() , "nofile_a" , 0 ); - } -@@ -488,7 +491,6 @@ namespace mongo { - log() << "compile failed for: " << raw << endl; - return 0; - } -- gcName = "cf normal"; - return func; - } - -@@ -630,7 +632,11 @@ namespace mongo { - flags++; - } - -+#ifdef JS_NEW_REG_EXP_OBJECT_NO_STATISTICS -+ JSObject * r = JS_NewRegExpObjectNoStatics( _context , (char*)e.regex() , strlen( e.regex() ) , flagNumber); -+#else - JSObject * r = JS_NewRegExpObject( _context , (char*)e.regex() , strlen( e.regex() ) , flagNumber ); -+#endif - assert( r ); - return OBJECT_TO_JSVAL( r ); - } -@@ -791,7 +797,7 @@ namespace mongo { - - BSONFieldIterator * it = (BSONFieldIterator*)JSVAL_TO_PRIVATE( *statep ); - if ( ! it ) { -- *statep = 0; -+ *statep = JSVAL_NULL; - return JS_TRUE; - } - -@@ -803,7 +809,7 @@ namespace mongo { - } - else { - delete it; -- *statep = 0; -+ *statep = JSVAL_NULL; - } - return JS_TRUE; - } -@@ -818,7 +824,7 @@ namespace mongo { - return JS_FALSE; - } - -- JSBool noaccess( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { -+ JSBool noaccess( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ - BSONHolder * holder = GETHOLDER( cx , obj ); - if ( ! holder ) { - // in init code still -@@ -830,24 +836,37 @@ namespace mongo { - return JS_FALSE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) -+ JSBool strict_noaccess( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp){ -+ return noaccess( cx , obj , id , vp ); -+ } -+ -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) - JSClass bson_ro_class = { - "bson_ro_object" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE , -- noaccess, noaccess, JS_PropertyStub, noaccess, -- (JSEnumerateOp)bson_enumerate, (JSResolveOp)(&resolveBSONField) , JS_ConvertStub, bson_finalize , -+ noaccess, noaccess, JS_PropertyStub, strict_noaccess, -+ (JSEnumerateOp)bson_enumerate, (JSResolveOp)resolveBSONField , JS_ConvertStub, bson_finalize , - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool bson_cons( JSContext* cx, uintN argc, jsval* vp ){ -+#else - JSBool bson_cons( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - cerr << "bson_cons : shouldn't be here!" << endl; - JS_ReportError( cx , "can't construct bson object" ); - return JS_FALSE; - } - - JSFunctionSpec bson_functions[] = { -- { 0 } -+ JS_FS_END - }; - -- JSBool bson_add_prop( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) -+ JSBool bson_add_prop( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - BSONHolder * holder = GETHOLDER( cx , obj ); - if ( ! holder ) { - // static init -@@ -864,8 +883,10 @@ namespace mongo { - return JS_TRUE; - } - -- -- JSBool mark_modified( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) -+ JSBool mark_modified( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - Convertor c(cx); - BSONHolder * holder = GETHOLDER( cx , obj ); - if ( !holder ) // needed when we're messing with DBRef.prototype -@@ -877,7 +898,10 @@ namespace mongo { - return JS_TRUE; - } - -- JSBool mark_modified_remove( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) -+ JSBool mark_modified_remove( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - Convertor c(cx); - BSONHolder * holder = GETHOLDER( cx , obj ); - if ( holder->_inResolve ) -@@ -887,23 +911,26 @@ namespace mongo { - return JS_TRUE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) - JSClass bson_class = { - "bson_object" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE , - bson_add_prop, mark_modified_remove, JS_PropertyStub, mark_modified, -- (JSEnumerateOp)bson_enumerate, (JSResolveOp)(&resolveBSONField) , JS_ConvertStub, bson_finalize , -+ (JSEnumerateOp)bson_enumerate, (JSResolveOp)resolveBSONField , JS_ConvertStub, bson_finalize , - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - static JSClass global_class = { - "global", JSCLASS_GLOBAL_FLAGS, -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - // --- global helpers --- - -- JSBool native_print( JSContext * cx , JSObject * obj , uintN argc, jsval *argv, jsval *rval ) { -+ JSBool native_print( JSContext * cx , uintN argc , jsval *vp ){ -+ jsval *argv = JS_ARGV( cx , vp); - stringstream ss; - Convertor c( cx ); - for ( uintN i=0; i<argc; i++ ) { -@@ -913,10 +940,13 @@ namespace mongo { - } - ss << "\n"; - Logstream::logLockless( ss.str() ); -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - return JS_TRUE; - } - -- JSBool native_helper( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { -+ JSBool native_helper( JSContext *cx , uintN argc, jsval *vp){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - - NativeFunction func = (NativeFunction)((long long)c.getNumber( obj , "x" ) ); -@@ -942,35 +972,37 @@ namespace mongo { - } - - if ( out.isEmpty() ) { -- *rval = JSVAL_VOID; -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - } - else { -- *rval = c.toval( out.firstElement() ); -+ JS_SET_RVAL( cx , vp , c.toval( out.firstElement() ) ); - } - - return JS_TRUE; - } - -- JSBool native_load( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ); -+ JSBool native_load( JSContext *cx , uintN argc, jsval *vp ); - -- JSBool native_gc( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { -+ JSBool native_gc( JSContext *cx , uintN argc, jsval *vp ){ - JS_GC( cx ); -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - return JS_TRUE; - } - - JSFunctionSpec globalHelpers[] = { -- { "print" , &native_print , 0 , 0 , 0 } , -- { "nativeHelper" , &native_helper , 1 , 0 , 0 } , -- { "load" , &native_load , 1 , 0 , 0 } , -- { "gc" , &native_gc , 1 , 0 , 0 } , -- { 0 , 0 , 0 , 0 , 0 } -+ JS_FS( "print" , &native_print , 0 , JSFUN_FAST_NATIVE ) , -+ JS_FS( "nativeHelper" , &native_helper , 1 , JSFUN_FAST_NATIVE ) , -+ JS_FS( "load" , &native_load , 1 , JSFUN_FAST_NATIVE ) , -+ JS_FS( "gc" , &native_gc , 1 , JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // ----END global helpers ---- - - // Object helpers - -- JSBool bson_get_size(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bson_get_size(JSContext *cx, uintN argc, jsval *vp){ -+ jsval *argv = JS_ARGV( cx , vp ); - if ( argc != 1 || !JSVAL_IS_OBJECT( argv[ 0 ] ) ) { - JS_ReportError( cx , "bsonsize requires one valid object" ); - return JS_FALSE; -@@ -979,7 +1011,7 @@ namespace mongo { - Convertor c(cx); - - if ( argv[0] == JSVAL_VOID || argv[0] == JSVAL_NULL ) { -- *rval = c.toval( 0.0 ); -+ JS_SET_RVAL( cx , vp , c.toval( 0.0 ) ); - return JS_TRUE; - } - -@@ -999,18 +1031,21 @@ namespace mongo { - size = temp.objsize(); - } - -- *rval = c.toval( size ); -+ JS_SET_RVAL( cx , vp , c.toval( size ) ); - return JS_TRUE; - } - - JSFunctionSpec objectHelpers[] = { -- { "bsonsize" , &bson_get_size , 1 , 0 , 0 } , -- { 0 , 0 , 0 , 0 , 0 } -+ JS_FS( "bsonsize" , &bson_get_size , 1 , JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // end Object helpers - -- JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) -+ JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - assert( JS_EnterLocalRootScope( cx ) ); - Convertor c( cx ); - -@@ -1023,7 +1058,7 @@ namespace mongo { - } - holder->check(); - -- string s = c.toString( id ); -+ string s = c.toString( idval ); - - BSONElement e = holder->_obj[ s.c_str() ]; - -@@ -1139,9 +1174,15 @@ namespace mongo { - //JS_SetVersion( _context , JSVERSION_LATEST); TODO - JS_SetErrorReporter( _context , errorReporter ); - -+#ifdef HAVE_COMPARTMENTS -+ _global = JS_NewCompartmentAndGlobalObject( _context , &global_class , NULL); -+ massert( 13442 , "JS_NewCompartmentAndGlobalObject failed for global" , _global ); -+ _call = JS_EnterCrossCompartmentCall( _context , _global); -+#else - _global = JS_NewObject( _context , &global_class, NULL, NULL); - massert( 10432 , "JS_NewObject failed for global" , _global ); - JS_SetGlobalObject( _context , _global ); -+#endif - massert( 10433 , "js init failed" , JS_InitStandardClasses( _context , _global ) ); - - JS_SetOptions( _context , JS_GetOptions( _context ) | JSOPTION_VAROBJFIX ); -@@ -1159,13 +1200,14 @@ namespace mongo { - smlock; - uassert( 10223 , "deleted SMScope twice?" , _convertor ); - -- for ( list<void*>::iterator i=_roots.begin(); i != _roots.end(); i++ ) { -- JS_RemoveRoot( _context , *i ); -+ for ( list<JSObject*>::iterator i=_roots.begin(); i != _roots.end(); i++ ){ -+ JSObject * obj = (JSObject *)*i; -+ JS_RemoveObjectRoot( _context , &obj ); - } - _roots.clear(); - - if ( _this ) { -- JS_RemoveRoot( _context , &_this ); -+ JS_RemoveObjectRoot( _context , &_this ); - _this = 0; - } - -@@ -1174,6 +1216,13 @@ namespace mongo { - _convertor = 0; - } - -+#ifdef HAVE_COMPARTMENTS -+ if ( _call ) { -+ JS_LeaveCrossCompartmentCall( _call ); -+ _call = 0; -+ } -+#endif -+ - if ( _context ) { - // This is expected to reclaim _global as well. - JS_DestroyContext( _context ); -@@ -1187,16 +1236,16 @@ namespace mongo { - assert( _convertor ); - return; - if ( _this ) { -- JS_RemoveRoot( _context , &_this ); -+ JS_RemoveObjectRoot( _context , &_this ); - _this = 0; - } - currentScope.reset( this ); - _error = ""; - } - -- void addRoot( void * root , const char * name ) { -- JS_AddNamedRoot( _context , root , name ); -- _roots.push_back( root ); -+ void addRoot( JSObject * obj ){ -+ JS_AddObjectRoot( _context , &obj ); -+ _roots.push_back( obj ); - } - - void init( const BSONObj * data ) { -@@ -1336,13 +1385,13 @@ namespace mongo { - void setThis( const BSONObj * obj ) { - smlock; - if ( _this ) { -- JS_RemoveRoot( _context , &_this ); -+ JS_RemoveObjectRoot( _context , &_this ); - _this = 0; - } - - if ( obj ) { - _this = _convertor->toJSObject( obj ); -- JS_AddNamedRoot( _context , &_this , "scope this" ); -+ JS_AddObjectRoot( _context , &_this ); - } - } - -@@ -1402,7 +1451,7 @@ namespace mongo { - spec->start = boost::posix_time::microsec_clock::local_time(); - spec->count = 0; - JS_SetContextPrivate( _context, (void*)spec ); --#if defined(SM181) && !defined(XULRUNNER190) -+#if JS_VERSION >= 181 && !defined(XULRUNNER190) - JS_SetOperationCallback( _context, _interrupt ); - #else - JS_SetBranchCallback( _context, interrupt ); -@@ -1412,7 +1461,7 @@ namespace mongo { - - void uninstallInterrupt( int timeoutMs ) { - if ( timeoutMs != 0 || ScriptEngine::haveCheckInterruptCallback() ) { --#if defined(SM181) && !defined(XULRUNNER190) -+#if JS_VERSION >= 181 && !defined(XULRUNNER190) - JS_SetOperationCallback( _context , 0 ); - #else - JS_SetBranchCallback( _context, 0 ); -@@ -1548,9 +1597,12 @@ namespace mongo { - - JSObject * _global; - JSObject * _this; -+#ifdef HAVE_COMPARTMENTS -+ JSCrossCompartmentCall * _call; -+#endif - - string _error; -- list<void*> _roots; -+ list<JSObject*> _roots; - - bool _externalSetup; - bool _localConnect; -@@ -1579,7 +1631,8 @@ namespace mongo { - } - } - -- JSBool native_load( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { -+ JSBool native_load( JSContext *cx , uintN argc, jsval *vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); - Convertor c(cx); - - Scope * s = currentScope.get(); -@@ -1594,6 +1647,7 @@ namespace mongo { - } - } - -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - return JS_TRUE; - } - -@@ -1633,7 +1687,7 @@ namespace mongo { - return new SMScope(); - } - -- void Convertor::addRoot( JSFunction * f , const char * name ) { -+ void Convertor::addRoot( JSFunction * f ){ - if ( ! f ) - return; - -@@ -1642,7 +1696,7 @@ namespace mongo { - - JSObject * o = JS_GetFunctionObject( f ); - assert( o ); -- scope->addRoot( &o , name ); -+ scope->addRoot( o ); - } - - } ---- mongodb-src-r1.8.0/scripting/engine_spidermonkey.h.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 -+++ mongodb-src-r1.8.0/scripting/engine_spidermonkey.h 2011-04-01 21:29:15.697678508 +0200 -@@ -21,6 +21,9 @@ - - // START inc hacking - -+#undef malloc -+#undef realloc -+ - #if defined( MOZJS ) - - #define MOZILLA_1_8_BRANCH -@@ -55,6 +58,9 @@ - - #endif - -+#define malloc MONGO_malloc -+#define realloc MONGO_realloc -+ - // END inc hacking - - // -- SM 1.6 hacks --- -@@ -81,6 +87,10 @@ JSBool JS_CStringsAreUTF8() { - #define SM181 - #endif - -+#ifndef JSFUN_FAST_NATIVE -+#define JSFUN_FAST_NATIVE 0 -+#endif -+ - namespace mongo { - - class SMScope; -@@ -104,7 +114,7 @@ namespace mongo { - extern boost::thread_specific_ptr<SMScope> currentScope; - - // bson -- JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ); -+ JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ); - - - // mongo ---- mongodb-src-r1.8.0/scripting/sm_db.cpp.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 -+++ mongodb-src-r1.8.0/scripting/sm_db.cpp 2011-04-01 22:51:59.701652521 +0200 -@@ -79,13 +79,25 @@ namespace mongo { - return holder->get(); - } - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool internal_cursor_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool internal_cursor_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - uassert( 10236 , "no args to internal_cursor_constructor" , argc == 0 ); - assert( JS_SetPrivate( cx , obj , 0 ) ); // just for safety -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -- void internal_cursor_finalize( JSContext * cx , JSObject * obj ) { -+ void internal_cursor_finalize( JSContext * cx, JSObject * obj ){ - CursorHolder * holder = (CursorHolder*)JS_GetPrivate( cx , obj ); - if ( holder ) { - delete holder; -@@ -93,10 +105,11 @@ namespace mongo { - } - } - -- JSBool internal_cursor_hasNext(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool internal_cursor_hasNext(JSContext *cx , uintN argc , jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); - DBClientCursor *cursor = getCursor( cx, obj ); - try { -- *rval = cursor->more() ? JSVAL_TRUE : JSVAL_FALSE; -+ JS_SET_RVAL( cx , vp , cursor->more() ? JSVAL_TRUE : JSVAL_FALSE ); - } - catch ( std::exception& e ) { - JS_ReportError( cx , e.what() ); -@@ -105,14 +118,16 @@ namespace mongo { - return JS_TRUE; - } - -- JSBool internal_cursor_objsLeftInBatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool internal_cursor_objsLeftInBatch(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); - DBClientCursor *cursor = getCursor( cx, obj ); - Convertor c(cx); -- *rval = c.toval((double) cursor->objsLeftInBatch() ); -+ JS_SET_RVAL( cx , vp , c.toval((double) cursor->objsLeftInBatch()) ); - return JS_TRUE; - } - -- JSBool internal_cursor_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool internal_cursor_next(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); - DBClientCursor *cursor = getCursor( cx, obj ); - - BSONObj n; -@@ -131,20 +146,21 @@ namespace mongo { - } - - Convertor c(cx); -- *rval = c.toval( &n ); -+ JS_SET_RVAL( cx , vp , c.toval( &n ) ); - return JS_TRUE; - } - - JSFunctionSpec internal_cursor_functions[] = { -- { "hasNext" , internal_cursor_hasNext , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "objsLeftInBatch" , internal_cursor_objsLeftInBatch , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "next" , internal_cursor_next , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "hasNext" , internal_cursor_hasNext , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "objsLeftInBatch" , internal_cursor_objsLeftInBatch , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "next" , internal_cursor_next , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass internal_cursor_class = { - "InternalCursor" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, internal_cursor_finalize, - JSCLASS_NO_OPTIONAL_MEMBERS - }; -@@ -157,7 +173,16 @@ namespace mongo { - throw -1; - } - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool mongo_local_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool mongo_local_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - shared_ptr< DBClientWithCommands > client( createDirectClient() ); -@@ -166,10 +191,23 @@ namespace mongo { - jsval host = c.toval( "EMBEDDED" ); - assert( JS_SetProperty( cx , obj , "host" , &host ) ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool mongo_external_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool mongo_external_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - smuassert( cx , "0 or 1 args to Mongo" , argc <= 1 ); -@@ -197,6 +235,9 @@ namespace mongo { - assert( JS_SetPrivate( cx , obj , (void*)( new shared_ptr< DBClientWithCommands >( conn ) ) ) ); - jsval host_val = c.toval( host.c_str() ); - assert( JS_SetProperty( cx , obj , "host" , &host_val ) ); -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - - } -@@ -215,14 +256,18 @@ namespace mongo { - } - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass mongo_class = { - "Mongo" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, mongo_finalize, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -- JSBool mongo_find(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool mongo_find(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); -+ jsval* argv = JS_ARGV( cx , vp ); -+ - smuassert( cx , "mongo_find needs 7 args" , argc == 7 ); - shared_ptr< DBClientWithCommands > * connHolder = (shared_ptr< DBClientWithCommands >*)JS_GetPrivate( cx , obj ); - smuassert( cx , "no connection!" , connHolder && connHolder->get() ); -@@ -252,7 +297,8 @@ namespace mongo { - JSObject * mycursor = JS_NewObject( cx , &internal_cursor_class , 0 , 0 ); - CHECKNEWOBJECT( mycursor, cx, "internal_cursor_class" ); - assert( JS_SetPrivate( cx , mycursor , new CursorHolder( cursor, *connHolder ) ) ); -- *rval = OBJECT_TO_JSVAL( mycursor ); -+ -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( mycursor )); - return JS_TRUE; - } - catch ( ... ) { -@@ -261,7 +307,10 @@ namespace mongo { - } - } - -- JSBool mongo_update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool mongo_update(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); -+ jsval* argv = JS_ARGV( cx , vp ); -+ - smuassert( cx , "mongo_find needs at elast 3 args" , argc >= 3 ); - smuassert( cx , "2nd param to update has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); - smuassert( cx , "3rd param to update has to be an object" , JSVAL_IS_OBJECT( argv[2] ) ); -@@ -282,6 +331,7 @@ namespace mongo { - - try { - conn->update( ns , c.toObject( argv[1] ) , c.toObject( argv[2] ) , upsert , multi ); -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - return JS_TRUE; - } - catch ( ... ) { -@@ -290,7 +340,10 @@ namespace mongo { - } - } - -- JSBool mongo_insert(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool mongo_insert(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); -+ jsval* argv = JS_ARGV( cx , vp ); -+ - smuassert( cx , "mongo_insert needs 2 args" , argc == 2 ); - smuassert( cx , "2nd param to insert has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); - -@@ -310,6 +363,7 @@ namespace mongo { - // TODO: add _id - - conn->insert( ns , o ); -+ JS_SET_RVAL( cx, vp, JSVAL_VOID ); - return JS_TRUE; - } - catch ( std::exception& e ) { -@@ -325,7 +379,10 @@ namespace mongo { - } - } - -- JSBool mongo_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool mongo_remove(JSContext *cx, uintN argc, jsval *vp) { -+ JSObject* obj = JS_THIS_OBJECT( cx , vp ); -+ jsval* argv = JS_ARGV( cx , vp ); -+ - smuassert( cx , "mongo_remove needs 2 or 3 arguments" , argc == 2 || argc == 3 ); - smuassert( cx , "2nd param to insert has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); - -@@ -346,6 +403,7 @@ namespace mongo { - - try { - conn->remove( ns , o , justOne ); -+ JS_SET_RVAL( cx , vp , JSVAL_VOID ); - return JS_TRUE; - } - catch ( std::exception& e ) { -@@ -361,16 +419,26 @@ namespace mongo { - } - - JSFunctionSpec mongo_functions[] = { -- { "find" , mongo_find , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "update" , mongo_update , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "insert" , mongo_insert , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "remove" , mongo_remove , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "find" , mongo_find , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "update" , mongo_update , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "insert" , mongo_insert , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "remove" , mongo_remove , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // ------------- db_collection ------------- - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool db_collection_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool db_collection_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - smuassert( cx , "db_collection_constructor wrong args" , argc == 4 ); - assert( JS_SetProperty( cx , obj , "_mongo" , &(argv[0]) ) ); - assert( JS_SetProperty( cx , obj , "_db" , &(argv[1]) ) ); -@@ -382,16 +450,22 @@ namespace mongo { - JS_ReportError( cx , "can't use sharded collection from db.eval" ); - return JS_FALSE; - } -- -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -- JSBool db_collection_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) -+ JSBool db_collection_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); -+ - if ( flags & JSRESOLVE_ASSIGNING ) - return JS_TRUE; - - Convertor c( cx ); -- string collname = c.toString( id ); -+ string collname = c.toString( idval ); - - if ( isSpecialName( collname ) ) - return JS_TRUE; -@@ -419,10 +493,11 @@ namespace mongo { - return JS_TRUE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) - JSClass db_collection_class = { - "DBCollection" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -- JS_EnumerateStub, (JSResolveOp)(&db_collection_resolve) , JS_ConvertStub, JS_FinalizeStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, -+ JS_EnumerateStub, (JSResolveOp)db_collection_resolve , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -@@ -454,15 +529,32 @@ namespace mongo { - // -------------- DB --------------- - - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool db_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool db_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - smuassert( cx, "wrong number of arguments to DB" , argc == 2 ); - assert( JS_SetProperty( cx , obj , "_mongo" , &(argv[0]) ) ); - assert( JS_SetProperty( cx , obj , "_name" , &(argv[1]) ) ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif -+ - return JS_TRUE; - } - -- JSBool db_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) -+ JSBool db_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - if ( flags & JSRESOLVE_ASSIGNING ) - return JS_TRUE; - -@@ -471,7 +563,7 @@ namespace mongo { - if ( obj == c.getGlobalPrototype( "DB" ) ) - return JS_TRUE; - -- string collname = c.toString( id ); -+ string collname = c.toString( idval ); - - if ( isSpecialName( collname ) ) - return JS_TRUE; -@@ -489,17 +581,28 @@ namespace mongo { - return JS_TRUE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) - JSClass db_class = { - "DB" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -- JS_EnumerateStub, (JSResolveOp)(&db_resolve) , JS_ConvertStub, JS_FinalizeStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, -+ JS_EnumerateStub, (JSResolveOp)db_resolve , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - - // -------------- object id ------------- - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool object_id_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool object_id_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - OID oid; -@@ -524,35 +627,48 @@ namespace mongo { - if ( ! JS_InstanceOf( cx , obj , &object_id_class , 0 ) ) { - obj = JS_NewObject( cx , &object_id_class , 0 , 0 ); - CHECKNEWOBJECT( obj, cx, "object_id_constructor" ); -- *rval = OBJECT_TO_JSVAL( obj ); - } - - jsval v = c.toval( oid.str().c_str() ); - assert( JS_SetProperty( cx , obj , "str" , &v ) ); - -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); - return JS_TRUE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass object_id_class = { - "ObjectId" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -- JSBool object_id_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool object_id_tostring(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); -- return (JSBool) (*rval = c.getProperty( obj , "str" )); -+ JS_SET_RVAL( cx , vp , c.getProperty( obj , "str" )); -+ return JS_TRUE; - } - - JSFunctionSpec object_id_functions[] = { -- { "toString" , object_id_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "toString" , object_id_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // dbpointer - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool dbpointer_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool dbpointer_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - if ( argc == 2 ) { -@@ -564,6 +680,9 @@ namespace mongo { - - assert( JS_SetProperty( cx , obj , "ns" , &(argv[0]) ) ); - assert( JS_SetProperty( cx , obj , "id" , &(argv[1]) ) ); -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - else { -@@ -572,19 +691,30 @@ namespace mongo { - } - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass dbpointer_class = { - "DBPointer" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - JSFunctionSpec dbpointer_functions[] = { -- { 0 } -+ JS_FS_END - }; - - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool dbref_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool dbref_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - if ( argc == 2 ) { -@@ -594,6 +724,9 @@ namespace mongo { - assert( JS_SetProperty( cx, o , "$id" , &argv[ 1 ] ) ); - BSONObj bo = c.toObject( o ); - assert( JS_SetPrivate( cx , obj , (void*)(new BSONHolder( bo.getOwned() ) ) ) ); -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - else { -@@ -607,7 +740,17 @@ namespace mongo { - - // UUID ************************** - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool uuid_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool uuid_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - if( argc == 0 ) { -@@ -635,6 +778,9 @@ namespace mongo { - c.setProperty( obj, "len", c.toval( (double)16 ) ); - c.setProperty( obj, "type", c.toval( (double)3 ) ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - else { -@@ -643,7 +789,8 @@ namespace mongo { - } - } - -- JSBool uuid_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool uuid_tostring(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - void *holder = JS_GetPrivate( cx, obj ); - assert( holder ); -@@ -652,7 +799,8 @@ namespace mongo { - ss << "UUID(\"" << toHex(data, 16); - ss << "\")"; - string ret = ss.str(); -- return *rval = c.toval( ret.c_str() ); -+ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); -+ return JS_TRUE; - } - - void uuid_finalize( JSContext * cx , JSObject * obj ) { -@@ -664,21 +812,32 @@ namespace mongo { - } - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass uuid_class = { - "UUID" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, uuid_finalize, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - JSFunctionSpec uuid_functions[] = { -- { "toString" , uuid_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "toString" , uuid_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // BinData ************************** - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool bindata_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool bindata_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - Convertor c( cx ); - - if ( argc == 2 ) { -@@ -702,6 +861,9 @@ namespace mongo { - c.setProperty( obj, "len", c.toval( (double)decoded.length() ) ); - c.setProperty( obj, "type", c.toval( (double)type ) ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - else { -@@ -710,7 +872,8 @@ namespace mongo { - } - } - -- JSBool bindata_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bindata_tostring(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - int type = (int)c.getNumber( obj , "type" ); - int len = (int)c.getNumber( obj, "len" ); -@@ -722,10 +885,12 @@ namespace mongo { - base64::encode( ss, (const char *)data, len ); - ss << "\")"; - string ret = ss.str(); -- return *rval = c.toval( ret.c_str() ); -+ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); -+ return JS_TRUE; - } - -- JSBool bindataBase64(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bindataBase64(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - int len = (int)c.getNumber( obj, "len" ); - void *holder = JS_GetPrivate( cx, obj ); -@@ -734,10 +899,12 @@ namespace mongo { - stringstream ss; - base64::encode( ss, (const char *)data, len ); - string ret = ss.str(); -- return *rval = c.toval( ret.c_str() ); -+ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); -+ return JS_TRUE; - } - -- JSBool bindataAsHex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bindataAsHex(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - int len = (int)c.getNumber( obj, "len" ); - void *holder = JS_GetPrivate( cx, obj ); -@@ -750,19 +917,24 @@ namespace mongo { - ss << v; - } - string ret = ss.str(); -- return *rval = c.toval( ret.c_str() ); -+ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); -+ return JS_TRUE; - } - -- JSBool bindataLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bindataLength(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - int len = (int)c.getNumber( obj, "len" ); -- return *rval = c.toval((double) len); -+ JS_SET_RVAL( cx , vp , c.toval((double) len) ); -+ return JS_TRUE; - } - -- JSBool bindataSubtype(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool bindataSubtype(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - int t = (int)c.getNumber( obj, "type" ); -- return *rval = c.toval((double) t); -+ JS_SET_RVAL( cx , vp , c.toval((double) t) ); -+ return JS_TRUE; - } - - void bindata_finalize( JSContext * cx , JSObject * obj ) { -@@ -774,20 +946,21 @@ namespace mongo { - } - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass bindata_class = { - "BinData" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, bindata_finalize, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - JSFunctionSpec bindata_functions[] = { -- { "toString" , bindata_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "hex", bindataAsHex, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "base64", bindataBase64, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "length", bindataLength, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "subtype", bindataSubtype, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "toString" , bindata_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "hex", bindataAsHex, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "base64", bindataBase64, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "length", bindataLength, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "subtype", bindataSubtype, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - - // Map -@@ -796,7 +969,16 @@ namespace mongo { - return s == "put" || s == "get" || s == "_get" || s == "values" || s == "_data" || s == "constructor" ; - } - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool map_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool map_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - if ( argc > 0 ) { - JS_ReportError( cx , "Map takes no arguments" ); - return JS_FALSE; -@@ -808,10 +990,16 @@ namespace mongo { - jsval a = OBJECT_TO_JSVAL( array ); - JS_SetProperty( cx , obj , "_data" , &a ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -- JSBool map_prop( JSContext *cx, JSObject *obj, jsval idval, jsval *vp ) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) -+ JSBool map_prop( JSContext *cx, JSObject *obj, jsid id, jsval *vp ){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - Convertor c(cx); - if ( specialMapString( c.toString( idval ) ) ) - return JS_TRUE; -@@ -821,34 +1009,49 @@ namespace mongo { - return JS_FALSE; - } - -+ JSBool strict_map_prop( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp ){ -+ return map_prop( cx , obj , id , vp ); -+ } -+ -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass map_class = { - "Map" , JSCLASS_HAS_PRIVATE , -- map_prop, JS_PropertyStub, map_prop, map_prop, -+ map_prop, JS_PropertyStub, map_prop, strict_map_prop, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - JSFunctionSpec map_functions[] = { -- { 0 } -+ JS_FS_END - }; - - - // ----- - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass timestamp_class = { - "Timestamp" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool timestamp_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool timestamp_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - smuassert( cx , "Timestamp needs 0 or 2 args" , argc == 0 || argc == 2 ); - - if ( ! JS_InstanceOf( cx , obj , ×tamp_class , 0 ) ) { - obj = JS_NewObject( cx , ×tamp_class , 0 , 0 ); - CHECKNEWOBJECT( obj, cx, "timestamp_constructor" ); -- *rval = OBJECT_TO_JSVAL( obj ); - } - - Convertor c( cx ); -@@ -864,21 +1067,30 @@ namespace mongo { - return JS_TRUE; - } - -- -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass numberlong_class = { - "NumberLong" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool numberlong_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool numberlong_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - smuassert( cx , "NumberLong needs 0 or 1 args" , argc == 0 || argc == 1 ); - - if ( ! JS_InstanceOf( cx , obj , &numberlong_class , 0 ) ) { - obj = JS_NewObject( cx , &numberlong_class , 0 , 0 ); - CHECKNEWOBJECT( obj, cx, "numberlong_constructor" ); -- *rval = OBJECT_TO_JSVAL( obj ); - } - - Convertor c( cx ); -@@ -903,19 +1115,25 @@ namespace mongo { - c.makeLongObj( n, obj ); - } - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -- JSBool numberlong_valueof(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool numberlong_valueof(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); -- return *rval = c.toval( double( c.toNumberLongUnsafe( obj ) ) ); -+ JS_SET_RVAL( cx , vp , c.toval( double( c.toNumberLongUnsafe( obj ) ) ) ); -+ return JS_TRUE; - } - -- JSBool numberlong_tonumber(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -- return numberlong_valueof( cx, obj, argc, argv, rval ); -+ JSBool numberlong_tonumber(JSContext *cx, uintN argc, jsval *vp){ -+ return numberlong_valueof( cx, argc, vp ); - } - -- JSBool numberlong_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { -+ JSBool numberlong_tostring(JSContext *cx, uintN argc, jsval *vp){ -+ JSObject *obj = JS_THIS_OBJECT( cx , vp ); - Convertor c(cx); - stringstream ss; - long long val = c.toNumberLongUnsafe( obj ); -@@ -927,33 +1145,45 @@ namespace mongo { - ss << "NumberLong(" << val << ")"; - - string ret = ss.str(); -- return *rval = c.toval( ret.c_str() ); -+ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); -+ return JS_TRUE; - } - - JSFunctionSpec numberlong_functions[] = { -- { "valueOf" , numberlong_valueof , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "toNumber" , numberlong_tonumber , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { "toString" , numberlong_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , -- { 0 } -+ JS_FS( "valueOf" , numberlong_valueof , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "toNumber" , numberlong_tonumber , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS( "toString" , numberlong_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , -+ JS_FS_END - }; - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) - JSClass minkey_class = { - "MinKey" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - JSClass maxkey_class = { - "MaxKey" , JSCLASS_HAS_PRIVATE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, - JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - - // dbquery - -+#ifdef JSFUN_CONSTRUCTOR -+ JSBool dbquery_constructor( JSContext* cx, uintN argc, jsval* vp ){ -+ jsval *argv = JS_ARGV( cx , vp ); -+ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); -+ if( ! obj ) { -+ JS_ReportError( cx , "Failed to create 'this' object" ); -+ return JS_FALSE; -+ } -+#else - JSBool dbquery_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { -+#endif - smuassert( cx , "DDQuery needs at least 4 args" , argc >= 4 ); - - Convertor c(cx); -@@ -1001,28 +1231,35 @@ namespace mongo { - c.setProperty( obj , "_numReturned" , JSVAL_ZERO ); - c.setProperty( obj , "_special" , JSVAL_FALSE ); - -+#ifdef JSFUN_CONSTRUCTOR -+ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); -+#endif - return JS_TRUE; - } - -- JSBool dbquery_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) -+ JSBool dbquery_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ -+ jsval idval; -+ JS_IdToValue( cx , id , &idval ); - if ( flags & JSRESOLVE_ASSIGNING ) - return JS_TRUE; - -- if ( ! JSVAL_IS_NUMBER( id ) ) -+ if ( ! JSVAL_IS_NUMBER( idval ) ) - return JS_TRUE; - - jsval val = JSVAL_VOID; -- assert( JS_CallFunctionName( cx , obj , "arrayAccess" , 1 , &id , &val ) ); -+ assert( JS_CallFunctionName( cx , obj , "arrayAccess" , 1 , &idval , &val ) ); - Convertor c(cx); -- c.setProperty( obj , c.toString( id ).c_str() , val ); -+ c.setProperty( obj , c.toString( idval ).c_str() , val ); - *objp = obj; - return JS_TRUE; - } - -+ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) - JSClass dbquery_class = { - "DBQuery" , JSCLASS_NEW_RESOLVE , -- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, -- JS_EnumerateStub, (JSResolveOp)(&dbquery_resolve) , JS_ConvertStub, JS_FinalizeStub, -+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, -+ JS_EnumerateStub, (JSResolveOp)dbquery_resolve , JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS - }; - -@@ -1102,7 +1339,7 @@ namespace mongo { - return true; - } - --#if defined( SM16 ) || defined( MOZJS ) -+#if defined( SM16 ) || JS_VERSION >= 181 - #warning dates do not work in your version of spider monkey - { - jsdouble d = js_DateGetMsecSinceEpoch( c->_context , o ); -@@ -1150,7 +1387,7 @@ namespace mongo { - } - - bool isDate( JSContext * cx , JSObject * o ) { --#if defined( SM16 ) || defined( MOZJS ) || defined( XULRUNNER ) -+#if defined( SM16 ) || JS_VERSION >= 181 || defined( XULRUNNER ) - return js_DateGetMsecSinceEpoch( cx , o ) != 0; - #else - return JS_InstanceOf( cx , o, &js_DateClass, 0 ); diff --git a/community-testing/mongodb/mongodb.conf b/community-testing/mongodb/mongodb.conf deleted file mode 100644 index c5272b7f2..000000000 --- a/community-testing/mongodb/mongodb.conf +++ /dev/null @@ -1,8 +0,0 @@ -# See http://www.mongodb.org/display/DOCS/File+Based+Configuration for format details -# Run mongod --help to see a list of options - -bind_ip = 127.0.0.1 -quiet = true -dbpath = /var/lib/mongodb -logpath = /var/log/mongodb/mongod.log -logappend = true diff --git a/community-testing/mongodb/mongodb.install b/community-testing/mongodb/mongodb.install deleted file mode 100755 index 8808eea0d..000000000 --- a/community-testing/mongodb/mongodb.install +++ /dev/null @@ -1,29 +0,0 @@ -# vim: syntax=sh - -post_install() { - useradd -r -g daemon -d /var/lib/mongodb -s /bin/bash mongodb - chown -R mongodb:daemon /var/lib/mongodb - chown -R mongodb:daemon /var/log/mongodb - - if [ "$(arch)" != "x86_64" ] - then - echo '==> Warning: the 32 bit version of MongoDB is limited to about 2GB of data.' - echo '==> See http://blog.mongodb.org/post/137788967/32-bit-limitations' - fi -} - -post_upgrade() { - chown -R mongodb:daemon /var/lib/mongodb - chown -R mongodb:daemon /var/log/mongodb - - # have to fix my fudge up in 1.8.2-2 and 1.8.2-3 - # added july 5th, 2011 - usermod -s /bin/bash mongodb >& /dev/null - echo 'The dbpath has changed from /var/state/mongodb to /var/lib/mongodb' - echo 'Make sure you move your data files to the new dbpath before you start/restart mongodb' - echo 'The logpath has changed from /var/log/mongod to /var/log/mongodb/mongod.log' -} - -pre_remove() { - userdel mongodb -} diff --git a/community-testing/mongodb/mongodb.rc b/community-testing/mongodb/mongodb.rc deleted file mode 100755 index 517258f63..000000000 --- a/community-testing/mongodb/mongodb.rc +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# vim: syntax=sh - -. /etc/rc.conf -. /etc/rc.d/functions - -PID=`pidof /usr/bin/mongod` -case "$1" in - start) - stat_busy "Starting mongodb" - [ -z "$PID" ] && /bin/su mongodb -c "/usr/bin/mongod --config /etc/mongodb.conf --fork" > /dev/null - if [ $? -gt 0 ]; then - stat_fail - else - add_daemon mongodb - stat_done - fi - ;; - stop) - stat_busy "Stopping mongodb" - [ ! -z "$PID" ] && kill $PID &> /dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon mongodb - while [ ! -z "$(pidof /usr/bin/mongod)" ]; do - sleep 1; - done - stat_done - fi - ;; - restart) - $0 stop - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac -exit 0 diff --git a/community/conkeror-git/PKGBUILD b/community/conkeror-git/PKGBUILD deleted file mode 100644 index 4343b023b..000000000 --- a/community/conkeror-git/PKGBUILD +++ /dev/null @@ -1,61 +0,0 @@ -# Contributor: Heeru Kiyura <M8R-p9i5nh@mailinator.com> -# Maintainer: Stefan Husmann <stefan-husmann@t-online.de> - -_commit=0d883dfd5e61e7d0b8a96a079d69b46af064fdca -pkgname=conkeror-git -pkgver=0.9.3 -pkgrel=5 -pkgdesc="A highly programmable web browser based on Mozilla XULRunner." -arch=('i686' 'x86_64') -url="http://conkeror.mozdev.org/" -license=('MPL' 'GPL' 'LGPL') -depends=('xulrunner' 'desktop-file-utils') -makedepends=('git' 'imagemagick') -provides=(conkeror) -source=(conkeror_gimpfile.xpm) -md5sums=('b592582a5b923db1707615564a95737f') -install=conkeror-git.install - -__gitroot="git://repo.or.cz/conkeror.git" -__gitname="conkeror" - -build() { - cd $srcdir - - ## Git checkout - if [ -d $srcdir/${__gitname} ] ; then - msg "Git checkout: Updating existing tree" - cd ${__gitname} && git checkout ${_commit} - msg "Git checkout: Tree has been updated" - else - msg "Git checkout: Retrieving sources" - git clone ${__gitroot} && cd ${__gitname} && git checkout ${_commit} - fi - msg "Checkout completed" - - ## Build - [ -d ${__gitname}-build ] || rm -rf $srcdir/${__gitname}-build - git clone $srcdir/${__gitname} $srcdir/${__gitname}-build - cd $srcdir/${__gitname}-build - make -} - -package() { - cd $srcdir/${__gitname}-build - install -d $pkgdir/usr/share/conkeror - install -Dm755 $srcdir/${__gitname}-build/conkeror-spawn-helper \ - $pkgdir/usr/bin/conkeror-spawn-helper - install -d $pkgdir/usr/share/man/man1 - cp -a $srcdir/${__gitname}-build/* $pkgdir/usr/share/conkeror - install -Dm644 $pkgdir/usr/share/conkeror/contrib/man/conkeror.1 \ - $pkgdir/usr/share/man/man1/conkeror.1 - rm -r $pkgdir/usr/share/conkeror/contrib/man - install -Dm644 $srcdir/${__gitname}-build/debian/conkeror.desktop \ - $pkgdir/usr/share/applications/conkeror.desktop - ln -s /usr/share/conkeror/contrib/run-conkeror \ - $pkgdir/usr/bin/conkeror - rm $pkgdir/usr/share/conkeror/conkeror-spawn-helper - rm -r $pkgdir/usr/share/conkeror/debian - install -d $pkgdir/usr/share/pixmaps - install $srcdir/conkeror_gimpfile.xpm $pkgdir/usr/share/pixmaps -} diff --git a/community/conkeror-git/conkeror-git.install b/community/conkeror-git/conkeror-git.install deleted file mode 100644 index 5e5cfef4d..000000000 --- a/community/conkeror-git/conkeror-git.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - update-desktop-database -q -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - update-desktop-database -q -} diff --git a/community/conkeror-git/conkeror_gimpfile.xpm b/community/conkeror-git/conkeror_gimpfile.xpm deleted file mode 100644 index ee2dc0773..000000000 --- a/community/conkeror-git/conkeror_gimpfile.xpm +++ /dev/null @@ -1,2251 +0,0 @@ -/* XPM */ -static char * conkeror_gimpfile_xpm[] = { -"337 274 1974 2", -" c None", -". c #BD8A7A", -"+ c #F1D9A4", -"@ c #587533", -"# c #2F6B20", -"$ c #347028", -"% c #38732C", -"& c #3D7630", -"* c #437935", -"= c #487D3C", -"- c #4F8141", -"; c #558447", -"> c #558546", -", c #4C7F3D", -"' c #417935", -") c #5C7736", -"! c #9D9C64", -"~ c #29671B", -"{ c #2D6A1E", -"] c #2C6A1E", -"^ c #2D6A1F", -"/ c #2C6A1F", -"( c #2B6A1E", -"_ c #2D6B1F", -": c #326D25", -"< c #39732C", -"[ c #4B7E3E", -"} c #578546", -"| c #4C8040", -"1 c #427934", -"2 c #367129", -"3 c #2C691E", -"4 c #246314", -"5 c #EBD49F", -"6 c #266619", -"7 c #36712A", -"8 c #4E8040", -"9 c #538346", -"0 c #467B39", -"a c #38722B", -"b c #2B6A1D", -"c c #246414", -"d c #DAC691", -"e c #2A681C", -"f c #2C6A1D", -"g c #2D6B21", -"h c #39722A", -"i c #558346", -"j c #487D3B", -"k c #39722B", -"l c #2D6B20", -"m c #246417", -"n c #236415", -"o c #497C3C", -"p c #568246", -"q c #326F25", -"r c #256516", -"s c #2B681C", -"t c #336F25", -"u c #417733", -"v c #558147", -"w c #457B37", -"x c #336E25", -"y c #2C691D", -"z c #276618", -"A c #246415", -"B c #26631A", -"C c #276219", -"D c #266119", -"E c #2D6620", -"F c #437A36", -"G c #4D7F3F", -"H c #2B6A1F", -"I c #276619", -"J c #2D6B1E", -"K c #2B681D", -"L c #2A661C", -"M c #27641B", -"N c #256219", -"O c #316A25", -"P c #316D24", -"Q c #28681A", -"R c #246516", -"S c #2B691D", -"T c #2A671C", -"U c #28651C", -"V c #266219", -"W c #2A651E", -"X c #457A37", -"Y c #417834", -"Z c #2F6C20", -"` c #2C6B1E", -" . c #2B691B", -".. c #27641A", -"+. c #28641B", -"@. c #3D7430", -"#. c #2E6B20", -"$. c #2E6B1F", -"%. c #2D6C1F", -"&. c #2A691C", -"*. c #2A691B", -"=. c #2C6B1F", -"-. c #2B681E", -";. c #29651B", -">. c #27621A", -",. c #27631C", -"'. c #3F7631", -"). c #306C22", -"!. c #2D6C20", -"~. c #2E6C1F", -"{. c #2E6C20", -"]. c #29691B", -"^. c #27631A", -"/. c #2A641D", -"(. c #508042", -"_. c #357028", -":. c #2A691A", -"<. c #29671D", -"[. c #28631A", -"}. c #2F6821", -"|. c #4E8242", -"1. c #407733", -"2. c #2E6D20", -"3. c #2D6D21", -"4. c #26621A", -"5. c #3A722F", -"6. c #336F27", -"7. c #2D6D20", -"8. c #28691A", -"9. c #29661B", -"0. c #2D6720", -"a. c #508142", -"b. c #447B38", -"c. c #2E6D21", -"d. c #27681A", -"e. c #467B38", -"f. c #3C7630", -"g. c #2D6C21", -"h. c #2E6E21", -"i. c #2F6E21", -"j. c #2F6D21", -"k. c #276818", -"l. c #2E6C21", -"m. c #2B671C", -"n. c #266118", -"o. c #366E29", -"p. c #38712A", -"q. c #266718", -"r. c #2E6E20", -"s. c #316924", -"t. c #558347", -"u. c #347027", -"v. c #2E6E22", -"w. c #2F6E22", -"x. c #2F6F21", -"y. c #266818", -"z. c #2D6821", -"A. c #558547", -"B. c #548246", -"C. c #2F6D20", -"D. c #2F6F22", -"E. c #246617", -"F. c #2B691E", -"G. c #29651C", -"H. c #2C6720", -"I. c #538246", -"J. c #548347", -"K. c #2E6F21", -"L. c #256716", -"M. c #29671C", -"N. c #367027", -"O. c #2F6F23", -"P. c #306F22", -"Q. c #236615", -"R. c #2A681E", -"S. c #28631B", -"T. c #2F6921", -"U. c #3A742C", -"V. c #2E6F22", -"W. c #2F7022", -"X. c #2F7023", -"Y. c #216515", -"Z. c #336C26", -"`. c #417833", -" + c #307022", -".+ c #307023", -"++ c #216513", -"@+ c #3D742F", -"#+ c #497D3C", -"$+ c #2F7123", -"%+ c #226614", -"&+ c #4A7F3C", -"*+ c #578348", -"=+ c #306D24", -"-+ c #307123", -";+ c #2B6C1E", -">+ c #568248", -",+ c #3B752F", -"'+ c #307124", -")+ c #317123", -"!+ c #356D29", -"~+ c #4A7F3E", -"{+ c #306F23", -"]+ c #307224", -"^+ c #286B1B", -"/+ c #276B1A", -"(+ c #4C803E", -"_+ c #357027", -":+ c #317124", -"<+ c #317224", -"[+ c #477C3A", -"}+ c #307122", -"|+ c #2F7124", -"1+ c #307024", -"2+ c #317225", -"3+ c #256218", -"4+ c #2D7020", -"5+ c #2D6E20", -"6+ c #307225", -"7+ c #317325", -"8+ c #276C1A", -"9+ c #384E16", -"0+ c #2C681D", -"a+ c #27631B", -"b+ c #256118", -"c+ c #367128", -"d+ c #2D6D1F", -"e+ c #307325", -"f+ c #307324", -"g+ c #317324", -"h+ c #567834", -"i+ c #296C1D", -"j+ c #2F6923", -"k+ c #508243", -"l+ c #2F7024", -"m+ c #307223", -"n+ c #317326", -"o+ c #327326", -"p+ c #518244", -"q+ c #317426", -"r+ c #327425", -"s+ c #327426", -"t+ c #246917", -"u+ c #2A671D", -"v+ c #3B722F", -"w+ c #326E24", -"x+ c #327325", -"y+ c #317425", -"z+ c #2C7120", -"A+ c #2A661D", -"B+ c #2C661F", -"C+ c #327526", -"D+ c #327527", -"E+ c #266C19", -"F+ c #2D1616", -"G+ c #2E1717", -"H+ c #305716", -"I+ c #518245", -"J+ c #317526", -"K+ c #327427", -"L+ c #7B8B4D", -"M+ c #C0A880", -"N+ c #2B6E1E", -"O+ c #28641A", -"P+ c #427936", -"Q+ c #317527", -"R+ c #316C21", -"S+ c #327627", -"T+ c #266B19", -"U+ c #2A681D", -"V+ c #29641D", -"W+ c #327628", -"X+ c #337627", -"Y+ c #2B7120", -"Z+ c #317223", -"`+ c #266218", -" @ c #548547", -".@ c #4B7F3F", -"+@ c #337527", -"@@ c #337628", -"#@ c #246C18", -"$@ c #2A5315", -"%@ c #4B803F", -"&@ c #447B36", -"*@ c #327528", -"=@ c #337728", -"-@ c #327728", -";@ c #BAAD7B", -">@ c #2D6F1F", -",@ c #2F6E20", -"'@ c #437A35", -")@ c #3D7531", -"!@ c #312117", -"~@ c #2E6D22", -"{@ c #37702A", -"]@ c #38722C", -"^@ c #347729", -"/@ c #337729", -"(@ c #307525", -"_@ c #BCA47D", -":@ c #E4CC9B", -"<@ c #28681B", -"[@ c #2A661B", -"}@ c #326A26", -"|@ c #337829", -"1@ c #3E2723", -"2@ c #8A7359", -"3@ c #CDB68A", -"4@ c #2F7223", -"5@ c #307125", -"6@ c #337828", -"7@ c #347828", -"8@ c #246517", -"9@ c #432C26", -"0@ c #A68E6D", -"a@ c #226215", -"b@ c #317125", -"c@ c #2C6620", -"d@ c #316D23", -"e@ c #337526", -"f@ c #347829", -"g@ c #34782A", -"h@ c #EDD5A1", -"i@ c #78604C", -"j@ c #D8C092", -"k@ c #2E7121", -"l@ c #306D22", -"m@ c #584135", -"n@ c #C6AF85", -"o@ c #BEAA7E", -"p@ c #29651E", -"q@ c #2F6D23", -"r@ c #347728", -"s@ c #347929", -"t@ c #34792A", -"u@ c #4D362D", -"v@ c #2A6C1C", -"w@ c #2A651D", -"x@ c #337727", -"y@ c #35792A", -"z@ c #296D1E", -"A@ c #2F1818", -"B@ c #574034", -"C@ c #D4BC8F", -"D@ c #357929", -"E@ c #347A2A", -"F@ c #357A2A", -"G@ c #34792B", -"H@ c #236617", -"I@ c #61493C", -"J@ c #D0B98C", -"K@ c #2B651F", -"L@ c #35782A", -"M@ c #347A2B", -"N@ c #553E33", -"O@ c #2E7223", -"P@ c #38732A", -"Q@ c #357A2B", -"R@ c #316B24", -"S@ c #3D752F", -"T@ c #337528", -"U@ c #35792B", -"V@ c #357B2A", -"W@ c #357B2B", -"X@ c #307425", -"Y@ c #2C6F1F", -"Z@ c #427A36", -"`@ c #367B2C", -" # c #286D1E", -".# c #2D1717", -"+# c #77604C", -"@# c #E7CF9D", -"## c #4A7E3D", -"$# c #357B2C", -"%# c #226416", -"&# c #A38B6B", -"*# c #2E7022", -"=# c #528448", -"-# c #357C2C", -";# c #442D27", -"># c #718448", -",# c #28651B", -"'# c #548448", -")# c #367C2C", -"!# c #2E7425", -"~# c #2E1716", -"{# c #A99170", -"]# c #38732B", -"^# c #357C2D", -"/# c #367C2D", -"(# c #377C2C", -"_# c #276B1D", -":# c #DDC595", -"<# c #316B25", -"[# c #457A38", -"}# c #377C2D", -"|# c #9B9A65", -"1# c #2A6B1C", -"2# c #528546", -"3# c #377D2D", -"4# c #367D2D", -"5# c #367D2E", -"6# c #357C2B", -"7# c #377D2E", -"8# c #CCB489", -"9# c #2D7122", -"0# c #377E2D", -"a# c #367E2E", -"b# c #2E7424", -"c# c #6B5343", -"d# c #A78F6E", -"e# c #2E6821", -"f# c #377E2E", -"g# c #266B1B", -"h# c #988063", -"i# c #307526", -"j# c #29661C", -"k# c #56874A", -"l# c #367B2B", -"m# c #BAAE7B", -"n# c #2E1617", -"o# c #B8A07B", -"p# c #588749", -"q# c #337929", -"r# c #357A2C", -"s# c #367E2D", -"t# c #387F2E", -"u# c #387F2F", -"v# c #5B4438", -"w# c #29631B", -"x# c #3D7632", -"y# c #377E2F", -"z# c #347C2B", -"A# c #286D1D", -"B# c #37702D", -"C# c #538647", -"D# c #367D2C", -"E# c #377F2F", -"F# c #2E7423", -"G# c #528547", -"H# c #367A2B", -"I# c #387E2F", -"J# c #37802F", -"K# c #256B1A", -"L# c #2E7222", -"M# c #3F7732", -"N# c #387F30", -"O# c #38802F", -"P# c #D2BF8D", -"Q# c #38712D", -"R# c #33782A", -"S# c #357829", -"T# c #387E2E", -"U# c #388030", -"V# c #347628", -"W# c #266319", -"X# c #337B2C", -"Y# c #236717", -"Z# c #317427", -"`# c #497E3C", -" $ c #398030", -".$ c #388130", -"+$ c #388031", -"@$ c #398130", -"#$ c #2C7223", -"$$ c #276319", -"%$ c #2D691E", -"&$ c #388131", -"*$ c #246919", -"=$ c #2F1717", -"-$ c #2F1817", -";$ c #286C1C", -">$ c #337629", -",$ c #276118", -"'$ c #3D7530", -")$ c #377F2E", -"!$ c #398031", -"~$ c #398131", -"{$ c #301718", -"]$ c #2F1718", -"^$ c #2E1718", -"/$ c #366E2B", -"($ c #327727", -"_$ c #3A8232", -":$ c #301717", -"<$ c #311817", -"[$ c #301817", -"}$ c #301818", -"|$ c #2D7223", -"1$ c #28661B", -"2$ c #367028", -"3$ c #398232", -"4$ c #337B2A", -"5$ c #311818", -"6$ c #2E6822", -"7$ c #398231", -"8$ c #3A8231", -"9$ c #2B7222", -"0$ c #321918", -"a$ c #321818", -"b$ c #321718", -"c$ c #311718", -"d$ c #311717", -"e$ c #307527", -"f$ c #316E24", -"g$ c #2E6D1F", -"h$ c #398132", -"i$ c #236918", -"j$ c #331918", -"k$ c #331818", -"l$ c #321819", -"m$ c #2B661E", -"n$ c #508244", -"o$ c #398332", -"p$ c #341819", -"q$ c #331919", -"r$ c #341918", -"s$ c #331819", -"t$ c #2A691D", -"u$ c #3A8233", -"v$ c #351919", -"w$ c #341919", -"x$ c #351819", -"y$ c #286C1D", -"z$ c #4E8143", -"A$ c #3A8332", -"B$ c #31792A", -"C$ c #361919", -"D$ c #351818", -"E$ c #341818", -"F$ c #3A8333", -"G$ c #2A7121", -"H$ c #361A19", -"I$ c #36191A", -"J$ c #317727", -"K$ c #3B8433", -"L$ c #236818", -"M$ c #371A19", -"N$ c #37191A", -"O$ c #371919", -"P$ c #371A1A", -"Q$ c #351918", -"R$ c #2E1817", -"S$ c #2C7020", -"T$ c #2C691F", -"U$ c #336F26", -"V$ c #377F30", -"W$ c #3A8433", -"X$ c #3B8434", -"Y$ c #381A19", -"Z$ c #381919", -"`$ c #256919", -" % c #3A8434", -".% c #39191A", -"+% c #381A1A", -"@% c #391A1A", -"#% c #38191A", -"$% c #3A732D", -"%% c #378030", -"&% c #398333", -"*% c #3A8534", -"=% c #3A1B1A", -"-% c #3A1A1A", -";% c #3A191A", -">% c #391919", -",% c #351A19", -"'% c #27651B", -")% c #336B27", -"!% c #3B8333", -"~% c #378130", -"{% c #3A1A1B", -"]% c #3B1A1B", -"^% c #28651A", -"/% c #26641A", -"(% c #3A8432", -"_% c #3B8534", -":% c #327A2A", -"<% c #3B1B1A", -"[% c #3B1A1A", -"}% c #3B1B1B", -"|% c #391A19", -"1% c #2F7526", -"2% c #27651A", -"3% c #2E6A1F", -"4% c #3B8535", -"5% c #2D7524", -"6% c #3C1A1A", -"7% c #3C1B1B", -"8% c #3C1B1A", -"9% c #2A701F", -"0% c #28621A", -"a% c #347B2B", -"b% c #397F30", -"c% c #3B8533", -"d% c #286E1F", -"e% c #3D1B1B", -"f% c #3C1A1B", -"g% c #3D1A1B", -"h% c #391B1A", -"i% c #2B6B1E", -"j% c #518447", -"k% c #3C8534", -"l% c #236919", -"m% c #3E1B1B", -"n% c #3E1C1B", -"o% c #3A1B1B", -"p% c #276419", -"q% c #306A24", -"r% c #3C8635", -"s% c #E5CF9B", -"t% c #3E1C1C", -"u% c #321817", -"v% c #266419", -"w% c #497E3D", -"x% c #2F6D22", -"y% c #3A8131", -"z% c #3A8331", -"A% c #3C8535", -"B% c #3C8636", -"C% c #401C1C", -"D% c #3F1B1C", -"E% c #3F1B1B", -"F% c #3F1C1C", -"G% c #3F1C1B", -"H% c #3E1B1C", -"I% c #487E3E", -"J% c #336E24", -"K% c #3B8635", -"L% c #3B8636", -"M% c #401C1B", -"N% c #401B1B", -"O% c #401B1C", -"P% c #2F7424", -"Q% c #2C661E", -"R% c #3D8636", -"S% c #388331", -"T% c #411C1C", -"U% c #2A6E1E", -"V% c #367A2C", -"W% c #377D2C", -"X% c #3D8736", -"Y% c #327C2C", -"Z% c #411D1C", -"`% c #421C1C", -" & c #421D1C", -".& c #367B2D", -"+& c #28661C", -"@& c #3C8736", -"#& c #3D8637", -"$& c #2D7725", -"%& c #431C1C", -"&& c #431D1D", -"*& c #421C1D", -"=& c #411C1D", -"-& c #411C1B", -";& c #3B8634", -">& c #3C8637", -",& c #3D8737", -"'& c #286F1F", -")& c #431C1D", -"!& c #431D1C", -"~& c #421D1D", -"{& c #2A6A1E", -"]& c #27661B", -"^& c #49803F", -"/& c #3B8334", -"(& c #3C8837", -"_& c #441D1D", -":& c #3D1B1C", -"<& c #28661A", -"[& c #377229", -"}& c #3D8837", -"|& c #451D1D", -"1& c #451D1C", -"2& c #441D1C", -"3& c #441C1D", -"4& c #306A23", -"5& c #3D8836", -"6& c #461D1E", -"7& c #461E1D", -"8& c #441C1C", -"9& c #327626", -"0& c #3A8334", -"a& c #3A8533", -"b& c #3D8838", -"c& c #461D1D", -"d& c #461E1E", -"e& c #471D1E", -"f& c #471E1D", -"g& c #451E1D", -"h& c #3E6E29", -"i& c #388232", -"j& c #471E1E", -"k& c #337C2C", -"l& c #481E1E", -"m& c #481E1D", -"n& c #471D1D", -"o& c #27661A", -"p& c #3E8938", -"q& c #2D7726", -"r& c #491E1E", -"s& c #491E1F", -"t& c #481D1E", -"u& c #327929", -"v& c #367C2B", -"w& c #3D8938", -"x& c #28701F", -"y& c #4A1F1E", -"z& c #4A1E1E", -"A& c #477C39", -"B& c #3C8737", -"C& c #3E8838", -"D& c #236B19", -"E& c #4A1F1F", -"F& c #4B1E1E", -"G& c #4B1F1E", -"H& c #4A1E1F", -"I& c #491F1F", -"J& c #451C1D", -"K& c #266A1B", -"L& c #29681C", -"M& c #457B39", -"N& c #3C8836", -"O& c #D3BF8D", -"P& c #4B1F1F", -"Q& c #4C1F1E", -"R& c #4B1E1F", -"S& c #491F1E", -"T& c #718549", -"U& c #26651A", -"V& c #2F6A24", -"W& c #3D8937", -"X& c #3E8837", -"Y& c #3E8A39", -"Z& c #4C1F1F", -"`& c #3C8735", -" * c #4D1F1F", -".* c #4C1E1F", -"+* c #28671B", -"@* c #578748", -"#* c #4E201F", -"$* c #4D1F20", -"%* c #4E2020", -"&* c #4E1F1F", -"** c #451D1E", -"=* c #307728", -"-* c #27671B", -";* c #548649", -">* c #477C3B", -",* c #2F7122", -"'* c #377C2E", -")* c #337C2D", -"!* c #4F1F1F", -"~* c #4E1F20", -"{* c #411B1C", -"]* c #E5CC9B", -"^* c #2B7121", -"/* c #2B6B1F", -"(* c #477D3B", -"_* c #3C742D", -":* c #3E8939", -"<* c #3E8A38", -"[* c #2D7626", -"}* c #4F2020", -"|* c #4F1F20", -"1* c #4F201F", -"2* c #4D201F", -"3* c #4C1F20", -"4* c #CEB48A", -"5* c #246A19", -"6* c #336C27", -"7* c #502020", -"8* c #A4896A", -"9* c #33792A", -"0* c #3D8738", -"a* c #276E1E", -"b* c #512020", -"c* c #502021", -"d* c #502121", -"e* c #502120", -"f* c #512021", -"g* c #512120", -"h* c #451E1E", -"i* c #846752", -"j* c #28701D", -"k* c #512121", -"l* c #522020", -"m* c #522021", -"n* c #522120", -"o* c #4D2020", -"p* c #3D1C1B", -"q* c #6B4E3F", -"r* c #3E8937", -"s* c #3E8A3A", -"t* c #256C1C", -"u* c #532021", -"v* c #532120", -"w* c #532121", -"x* c #522121", -"y* c #441D1E", -"z* c #5D3F35", -"A* c #2F7626", -"B* c #29691D", -"C* c #548446", -"D* c #3C8634", -"E* c #3F8A39", -"F* c #3E8B39", -"G* c #542121", -"H* c #4B2C27", -"I* c #296E1F", -"J* c #28671C", -"K* c #518547", -"L* c #497F3D", -"M* c #3D8939", -"N* c #3F8A3A", -"O* c #246B1A", -"P* c #427835", -"Q* c #3F8B3A", -"R* c #226918", -"S* c #552121", -"T* c #552221", -"U* c #542122", -"V* c #ECD4A0", -"W* c #F0D8A3", -"X* c #3F7632", -"Y* c #3F8939", -"Z* c #226919", -"`* c #562122", -" = c #562121", -".= c #562221", -"+= c #552122", -"@= c #D5BC8F", -"#= c #356C27", -"$= c #3E7129", -"%= c #562222", -"&= c #572222", -"*= c #BBA07A", -"== c #572122", -"-= c #582222", -";= c #8B6E57", -">= c #2F7525", -",= c #582223", -"'= c #582322", -")= c #572221", -"!= c #80624D", -"~= c #29641B", -"{= c #3C8536", -"]= c #592222", -"^= c #582323", -"/= c #592223", -"(= c #69493C", -"_= c #4A7831", -":= c #388231", -"<= c #592323", -"[= c #5A2323", -"}= c #592322", -"|= c #5A2322", -"1= c #552222", -"2= c #715343", -"3= c #256119", -"4= c #5A2223", -"5= c #5B2322", -"6= c #5B2323", -"7= c #66463A", -"8= c #276218", -"9= c #3F8B3B", -"0= c #E4CD9A", -"a= c #5A2222", -"b= c #5B2222", -"c= c #745544", -"d= c #357D2C", -"e= c #408B3A", -"f= c #5C2323", -"g= c #5C2424", -"h= c #5B2223", -"i= c #481D1D", -"j= c #6A493C", -"k= c #347A29", -"l= c #408B3B", -"m= c #5C2324", -"n= c #5C2423", -"o= c #5D2323", -"p= c #5D2423", -"q= c #5D2324", -"r= c #5B2423", -"s= c #572121", -"t= c #3E8B3A", -"u= c #408C3B", -"v= c #5D2424", -"w= c #5E2423", -"x= c #532020", -"y= c #27671C", -"z= c #266519", -"A= c #5F2525", -"B= c #5F2424", -"C= c #5F2524", -"D= c #5F2425", -"E= c #602525", -"F= c #5E2424", -"G= c #5E2324", -"H= c #602524", -"I= c #E5CD9B", -"J= c #2E7224", -"K= c #612626", -"L= c #612526", -"M= c #622626", -"N= c #612525", -"O= c #602526", -"P= c #542222", -"Q= c #CFB58A", -"R= c #2C7122", -"S= c #632626", -"T= c #642727", -"U= c #632627", -"V= c #642627", -"W= c #642626", -"X= c #632726", -"Y= c #642726", -"Z= c #A08365", -"`= c #2B7020", -" - c #652827", -".- c #652828", -"+- c #662827", -"@- c #652727", -"#- c #652627", -"$- c #632727", -"%- c #572322", -"&- c #765746", -"*- c #397F2F", -"=- c #3D8635", -"-- c #408A3A", -";- c #642828", -">- c #652728", -",- c #662929", -"'- c #672929", -")- c #672928", -"!- c #682929", -"~- c #542120", -"{- c #56332D", -"]- c #266C1D", -"^- c #682A2A", -"/- c #6A2B2B", -"(- c #692A2A", -"_- c #682829", -":- c #672828", -"<- c #662828", -"[- c #542221", -"}- c #276B1B", -"|- c #27661C", -"1- c #3F8B39", -"2- c #682A29", -"3- c #692B2B", -"4- c #6B2B2B", -"5- c #6A2C2B", -"6- c #6B2C2C", -"7- c #6B2C2B", -"8- c #6A2A2A", -"9- c #5E2425", -"0- c #246A1A", -"a- c #2F6822", -"b- c #3A8132", -"c- c #6C2D2D", -"d- c #6C2D2E", -"e- c #6D2D2D", -"f- c #6D2E2D", -"g- c #6C2D2C", -"h- c #6C2C2C", -"i- c #662728", -"j- c #236618", -"k- c #3B8435", -"l- c #6D2E2F", -"m- c #6D2E2E", -"n- c #6F2F2F", -"o- c #6E2F2F", -"p- c #702F30", -"q- c #703030", -"r- c #6F302F", -"s- c #6F2F30", -"t- c #70302F", -"u- c #6E2F2E", -"v- c #6E2E2E", -"w- c #6B2D2C", -"x- c #6D2F2F", -"y- c #6E302F", -"z- c #6F3031", -"A- c #713131", -"B- c #713132", -"C- c #723231", -"D- c #723132", -"E- c #723232", -"F- c #733232", -"G- c #733132", -"H- c #713130", -"I- c #723131", -"J- c #5E2524", -"K- c #5E2525", -"L- c #4C1E1E", -"M- c #728549", -"N- c #497F3E", -"O- c #538446", -"P- c #378131", -"Q- c #6E3030", -"R- c #703131", -"S- c #703232", -"T- c #723233", -"U- c #743333", -"V- c #753333", -"W- c #753434", -"X- c #753435", -"Y- c #763434", -"Z- c #743232", -"`- c #4D1E1F", -" ; c #548546", -".; c #723333", -"+; c #733333", -"@; c #763534", -"#; c #773535", -"$; c #773635", -"%; c #783535", -"&; c #773435", -"*; c #692A29", -"=; c #662829", -"-; c #50201F", -";; c #E3CC9A", -">; c #763535", -",; c #783636", -"'; c #793636", -"); c #783737", -"!; c #793838", -"~; c #7A3838", -"{; c #793737", -"]; c #7A3737", -"^; c #7A3738", -"/; c #793637", -"(; c #783635", -"_; c #753334", -":; c #662928", -"<; c #642728", -"[; c #5D2524", -"}; c #357D2E", -"|; c #773636", -"1; c #793939", -"2; c #7A3839", -"3; c #7C3A3A", -"4; c #7D3A3B", -"5; c #7E3B3B", -"6; c #7D3A3A", -"7; c #7B3939", -"8; c #7B3839", -"9; c #793736", -"0; c #783736", -"a; c #733131", -"b; c #6E2E2F", -"c; c #642827", -"d; c #367C2E", -"e; c #7A3939", -"f; c #7B3B3A", -"g; c #7C3B3A", -"h; c #7D3B3B", -"i; c #7D3B3C", -"j; c #7F3C3D", -"k; c #803D3D", -"l; c #7F3C3C", -"m; c #7F3C3B", -"n; c #7E3A3B", -"o; c #7B3938", -"p; c #6D2F2E", -"q; c #6B2D2D", -"r; c #672A2A", -"s; c #4C2020", -"t; c #491D1E", -"u; c #2A691E", -"v; c #337B2B", -"w; c #7B3A3A", -"x; c #7F3D3D", -"y; c #803D3E", -"z; c #813E3E", -"A; c #823F3F", -"B; c #833F40", -"C; c #823E3F", -"D; c #823E3E", -"E; c #7A3837", -"F; c #602625", -"G; c #5C2524", -"H; c #501F20", -"I; c #7E3C3C", -"J; c #803E3E", -"K; c #834040", -"L; c #844141", -"M; c #854242", -"N; c #864242", -"O; c #864241", -"P; c #854241", -"Q; c #854142", -"R; c #843F3F", -"S; c #803C3C", -"T; c #7C3A39", -"U; c #783837", -"V; c #6C2E2E", -"W; c #67292A", -"X; c #632728", -"Y; c #327A29", -"Z; c #7F3E3E", -"`; c #813F3F", -" > c #874343", -".> c #874344", -"+> c #884444", -"@> c #894544", -"#> c #894444", -"$> c #894545", -"%> c #894445", -"&> c #884443", -"*> c #874242", -"=> c #833F3F", -"-> c #7B3A39", -";> c #6C2E2F", -">> c #6A2C2C", -",> c #682A2B", -"'> c #5D2425", -")> c #337626", -"!> c #568649", -"~> c #2F7827", -"{> c #824040", -"]> c #874443", -"^> c #894646", -"/> c #8A4646", -"(> c #8B4747", -"_> c #8B4646", -":> c #8C4646", -"<> c #874342", -"[> c #844041", -"}> c #763635", -"|> c #743334", -"1> c #5F2626", -"2> c #2E6B1E", -"3> c #317827", -"4> c #844242", -"5> c #864444", -"6> c #884545", -"7> c #8A4747", -"8> c #8D4847", -"9> c #8D4848", -"0> c #8D4948", -"a> c #8D4949", -"b> c #8C4647", -"c> c #864343", -"d> c #864342", -"e> c #763636", -"f> c #713232", -"g> c #692C2B", -"h> c #66292A", -"i> c #642928", -"j> c #602626", -"k> c #286319", -"l> c #398331", -"m> c #2F7625", -"n> c #874444", -"o> c #884645", -"p> c #8A4746", -"q> c #8B4848", -"r> c #8C4949", -"s> c #8E4A49", -"t> c #8F4B4B", -"u> c #904B4B", -"v> c #904B4C", -"w> c #904B4A", -"x> c #8F4A4A", -"y> c #8C4746", -"z> c #854342", -"A> c #743434", -"B> c #692C2C", -"C> c #672A2B", -"D> c #2F6A23", -"E> c #884546", -"F> c #8E4A4B", -"G> c #8F4C4C", -"H> c #914C4C", -"I> c #924C4C", -"J> c #914C4B", -"K> c #8E4A4A", -"L> c #763536", -"M> c #733433", -"N> c #6F3030", -"O> c #6C2F2E", -"P> c #682B2B", -"Q> c #622726", -"R> c #5B2424", -"S> c #327828", -"T> c #2E7523", -"U> c #8A4847", -"V> c #8B4849", -"W> c #8D494A", -"X> c #904C4C", -"Y> c #914D4D", -"Z> c #924E4E", -"`> c #934E4E", -" , c #944E4E", -"., c #944E4F", -"+, c #934D4E", -"@, c #904A4A", -"#, c #8D4747", -"$, c #7C3B3B", -"%, c #773637", -"&, c #743535", -"*, c #6F3131", -"=, c #6A2C2D", -"-, c #652929", -";, c #622727", -">, c #5B2324", -",, c #317627", -"', c #8B4949", -"), c #8E4B4B", -"!, c #904D4D", -"~, c #924E4F", -"{, c #934F4E", -"], c #944F4F", -"^, c #954F4F", -"/, c #955050", -"(, c #95504F", -"_, c #924D4E", -":, c #8B4748", -"<, c #7A3A3A", -"[, c #773737", -"}, c #6C2F2F", -"|, c #6B2E2E", -"1, c #672B2A", -"2, c #582221", -"3, c #307524", -"4, c #2B7220", -"5, c #8D4A4A", -"6, c #8F4C4B", -"7, c #914F4E", -"8, c #93504F", -"9, c #945150", -"0, c #945151", -"a, c #965151", -"b, c #965152", -"c, c #965251", -"d, c #965252", -"e, c #924D4D", -"f, c #8B4847", -"g, c #894645", -"h, c #7B3B3B", -"i, c #783939", -"j, c #733334", -"k, c #632828", -"l, c #5A2324", -"m, c #2D7123", -"n, c #2A651F", -"o, c #914E4E", -"p, c #975454", -"q, c #975352", -"r, c #975353", -"s, c #985353", -"t, c #975253", -"u, c #975252", -"v, c #975251", -"w, c #955150", -"x, c #945050", -"y, c #934F4F", -"z, c #8C4848", -"A, c #884445", -"B, c #823F40", -"C, c #793839", -"D, c #763736", -"E, c #753535", -"F, c #692D2D", -"G, c #904E4E", -"H, c #914F4F", -"I, c #945251", -"J, c #975554", -"K, c #985554", -"L, c #995555", -"M, c #995655", -"N, c #985454", -"O, c #935050", -"P, c #924F4E", -"Q, c #884646", -"R, c #854343", -"S, c #824142", -"T, c #803F3F", -"U, c #7D3C3C", -"V, c #773736", -"W, c #713333", -"X, c #6E3131", -"Y, c #6A2E2D", -"Z, c #662A2A", -"`, c #642929", -" ' c #2B6F1F", -".' c #28651D", -"+' c #91504E", -"@' c #995856", -"#' c #9B5A57", -"$' c #9B5C58", -"%' c #9C5C59", -"&' c #9C5A58", -"*' c #9A5756", -"=' c #9A5655", -"-' c #94504F", -";' c #914E4D", -">' c #834141", -",' c #7A3B3B", -"'' c #773838", -")' c #6D3030", -"!' c #612727", -"~' c #5A2424", -"{' c #296E1D", -"]' c #37722A", -"^' c #935251", -"/' c #995956", -"(' c #9F5F5B", -"_' c #9F605C", -":' c #A0605C", -"<' c #9E5F5A", -"[' c #9E5C5A", -"}' c #9B5856", -"|' c #9A5555", -"1' c #894647", -"2' c #834242", -"3' c #753637", -"4' c #733434", -"5' c #6B2F2F", -"6' c #682C2C", -"7' c #672B2B", -"8' c #5A2423", -"9' c #276A1B", -"0' c #2C6B20", -"a' c #4A803F", -"b' c #935452", -"c' c #985A56", -"d' c #9D5E5A", -"e' c #A0625D", -"f' c #A36560", -"g' c #A36660", -"h' c #A2635E", -"i' c #A05F5C", -"j' c #9A5857", -"k' c #995654", -"l' c #965353", -"m' c #955151", -"n' c #924F4F", -"o' c #8C4A49", -"p' c #894747", -"q' c #874545", -"r' c #7D3E3D", -"s' c #703231", -"t' c #642829", -"u' c #612627", -"v' c #27691A", -"w' c #2B691F", -"x' c #9B5D59", -"y' c #A0635D", -"z' c #A36761", -"A' c #A66A63", -"B' c #A76B64", -"C' c #A56762", -"D' c #A2635F", -"E' c #A05E5B", -"F' c #9B5A58", -"G' c #955152", -"H' c #814040", -"I' c #7E3E3E", -"J' c #723434", -"K' c #703132", -"L' c #6B2F2E", -"M' c #662B2B", -"N' c #622828", -"O' c #5E2626", -"P' c #256A18", -"Q' c #9D605B", -"R' c #A96E66", -"S' c #A96F66", -"T' c #A86C64", -"U' c #A1615E", -"V' c #9D5C59", -"W' c #9A5757", -"X' c #8D4B4B", -"Y' c #894748", -"Z' c #864545", -"`' c #7D3E3E", -" ) c #753636", -".) c #713434", -"+) c #6F3231", -"@) c #6D2F30", -"#) c #6A2E2E", -"$) c #226616", -"%) c #467C3A", -"&) c #9F615C", -"*) c #A46862", -"=) c #A86D65", -"-) c #AA7067", -";) c #AB7168", -">) c #AA7068", -",) c #A66963", -"') c #9D5D5A", -")) c #9A5957", -"!) c #8A4949", -"~) c #854545", -"{) c #824242", -"]) c #7C3D3D", -"^) c #753536", -"/) c #682B2C", -"() c #632928", -"_) c #226517", -":) c #398233", -"<) c #4D7932", -"[) c #9E625D", -"}) c #A46962", -"|) c #A86E66", -"1) c #AB7068", -"2) c #AB7269", -"3) c #A2645F", -"4) c #9E5E5B", -"5) c #975453", -"6) c #955353", -"7) c #955252", -"8) c #8F4D4D", -"9) c #8C4A4A", -"0) c #8A4848", -"a) c #854444", -"b) c #804040", -"c) c #743636", -"d) c #713433", -"e) c #672C2C", -"f) c #5E2625", -"g) c #9D615C", -"h) c #A76C64", -"i) c #A96F67", -"j) c #AA6F67", -"k) c #A76D65", -"l) c #A0625E", -"m) c #9B5C59", -"n) c #985756", -"o) c #965553", -"p) c #925050", -"q) c #904F4F", -"r) c #8E4C4C", -"s) c #864646", -"t) c #854445", -"u) c #793B3B", -"v) c #763838", -"w) c #743534", -"x) c #713334", -"y) c #6E3231", -"z) c #692D2C", -"A) c #652A2B", -"B) c #622929", -"C) c #592423", -"D) c #526F32", -"E) c #357B2D", -"F) c #A0645E", -"G) c #A76C65", -"H) c #A86C65", -"I) c #9F5F5C", -"J) c #975655", -"K) c #925151", -"L) c #8E4D4D", -"M) c #8C4B4B", -"N) c #8B4A4A", -"O) c #884747", -"P) c #844444", -"Q) c #814141", -"R) c #7E3F3F", -"S) c #7B3C3C", -"T) c #783A3A", -"U) c #753737", -"V) c #6F3232", -"W) c #6B2E2F", -"X) c #682D2C", -"Y) c #5D2526", -"Z) c #707B46", -"`) c #9D5F5A", -" ! c #A46861", -".! c #A46761", -"+! c #A16660", -"@! c #9F625D", -"#! c #985755", -"$! c #945252", -"%! c #935151", -"&! c #915050", -"*! c #8E4E4E", -"=! c #8D4C4C", -"-! c #8A4849", -";! c #874747", -">! c #834343", -",! c #7C3E3E", -"'! c #763939", -")! c #723435", -"!! c #682D2D", -"~! c #652A2A", -"{! c #602727", -"]! c #5D2626", -"^! c #5D2525", -"/! c #985A57", -"(! c #9D615B", -"_! c #9F615D", -":! c #9E615D", -"<! c #9D5F5B", -"[! c #9A5C58", -"}! c #975855", -"|! c #945453", -"1! c #925251", -"2! c #8F4E4E", -"3! c #8E4D4C", -"4! c #8C4B4A", -"5! c #864645", -"6! c #7B3C3B", -"7! c #733635", -"8! c #703333", -"9! c #6A2D2D", -"0! c #672D2D", -"a! c #622928", -"b! c #5D2625", -"c! c #5C2625", -"d! c #A6986C", -"e! c #316A24", -"f! c #935351", -"g! c #955754", -"h! c #975956", -"i! c #985957", -"j! c #955554", -"k! c #8C4B4C", -"l! c #894848", -"m! c #7A3B3C", -"n! c #783B3B", -"o! c #753736", -"p! c #6F3333", -"q! c #6A2E2F", -"r! c #672C2D", -"s! c #662B2C", -"t! c #642B2B", -"u! c #612828", -"v! c #5B2524", -"w! c #8D4E4D", -"x! c #90504F", -"y! c #925250", -"z! c #925351", -"A! c #8D4D4D", -"B! c #8C4C4B", -"C! c #8A4A4A", -"D! c #804242", -"E! c #7B3D3D", -"F! c #783B3A", -"G! c #6A2F2F", -"H! c #63292A", -"I! c #A5986C", -"J! c #447A38", -"K! c #8E985C", -"L! c #8C4D4C", -"M! c #8E4F4E", -"N! c #8E4F4D", -"O! c #8E4E4D", -"P! c #8A4A49", -"Q! c #884848", -"R! c #864747", -"S! c #7F4040", -"T! c #7C3E3D", -"U! c #793A3B", -"V! c #773A39", -"W! c #733535", -"X! c #6F3332", -"Y! c #6D3130", -"Z! c #692D2E", -"`! c #672C2B", -" ~ c #642A2A", -".~ c #5F2727", -"+~ c #5C2525", -"@~ c #884949", -"#~ c #8B4B4B", -"$~ c #894949", -"%~ c #864647", -"&~ c #834444", -"*~ c #814242", -"=~ c #804141", -"-~ c #7C3D3E", -";~ c #793C3B", -">~ c #793A3A", -",~ c #763839", -"'~ c #6E3232", -")~ c #6C3030", -"!~ c #692F2F", -"~~ c #652B2B", -"{~ c #5C2526", -"]~ c #5A2524", -"^~ c #D7C091", -"/~ c #864847", -"(~ c #874748", -"_~ c #884948", -":~ c #884849", -"<~ c #894948", -"[~ c #89494A", -"}~ c #874646", -"|~ c #864746", -"1~ c #844544", -"2~ c #824342", -"3~ c #814142", -"4~ c #7F4141", -"5~ c #783A3B", -"6~ c #773939", -"7~ c #743737", -"8~ c #713435", -"9~ c #6A3030", -"0~ c #5B2525", -"a~ c #592424", -"b~ c #844646", -"c~ c #874848", -"d~ c #874949", -"e~ c #854647", -"f~ c #854646", -"g~ c #834544", -"h~ c #824343", -"i~ c #814342", -"j~ c #7E403F", -"k~ c #7A3C3C", -"l~ c #713535", -"m~ c #6B302F", -"n~ c #692E2E", -"o~ c #652B2C", -"p~ c #572323", -"q~ c #39802F", -"r~ c #824443", -"s~ c #834545", -"t~ c #844645", -"u~ c #824344", -"v~ c #773A3A", -"w~ c #6E3132", -"x~ c #692F30", -"y~ c #622829", -"z~ c #5E2727", -"A~ c #5B2526", -"B~ c #2C7322", -"C~ c #7F4241", -"D~ c #7D3F3F", -"E~ c #7C3E3F", -"F~ c #793C3C", -"G~ c #753838", -"H~ c #753837", -"I~ c #723635", -"J~ c #6D3132", -"K~ c #6C3130", -"L~ c #69302F", -"M~ c #612829", -"N~ c #602828", -"O~ c #326D23", -"P~ c #286E1C", -"Q~ c #7D3F40", -"R~ c #7E4040", -"S~ c #7C3F3F", -"T~ c #763A3A", -"U~ c #743837", -"V~ c #733636", -"W~ c #703534", -"X~ c #6F3434", -"Y~ c #6D3333", -"Z~ c #6B3030", -"`~ c #662C2C", -" { c #612928", -".{ c #5E2627", -"+{ c #B9B07B", -"@{ c #7A3D3D", -"#{ c #7B3E3E", -"${ c #7B3D3E", -"%{ c #793D3C", -"&{ c #773B3B", -"*{ c #76393A", -"={ c #753938", -"-{ c #713536", -";{ c #703535", -">{ c #6E3333", -",{ c #6D3232", -"'{ c #6B3130", -"){ c #662D2D", -"!{ c #5D2727", -"~{ c #5A2525", -"{{ c #582424", -"]{ c #773A3B", -"^{ c #783C3C", -"/{ c #773C3B", -"({ c #773B3A", -"_{ c #753939", -":{ c #733838", -"<{ c #723737", -"[{ c #703435", -"}{ c #6C3132", -"|{ c #682E2E", -"1{ c #672E2E", -"2{ c #632A2B", -"3{ c #632A2A", -"4{ c #5F2828", -"5{ c #5C2626", -"6{ c #562223", -"7{ c #29651D", -"8{ c #743939", -"9{ c #743839", -"0{ c #733737", -"a{ c #723837", -"b{ c #723736", -"c{ c #6C3232", -"d{ c #662E2E", -"e{ c #632B2A", -"f{ c #5C2627", -"g{ c #6F3535", -"h{ c #713636", -"i{ c #713637", -"j{ c #703635", -"k{ c #6B3131", -"l{ c #682F2F", -"m{ c #652C2B", -"n{ c #622A2A", -"o{ c #5A2425", -"p{ c #2A661E", -"q{ c #6E3434", -"r{ c #6E3433", -"s{ c #6B3031", -"t{ c #652C2C", -"u{ c #632C2C", -"v{ c #612929", -"w{ c #5E2828", -"x{ c #5C2727", -"y{ c #5B2626", -"z{ c #582324", -"A{ c #6B3132", -"B{ c #6C3231", -"C{ c #6B3232", -"D{ c #6A3130", -"E{ c #682E2F", -"F{ c #672E2F", -"G{ c #652D2C", -"H{ c #632B2B", -"I{ c #602929", -"J{ c #5D2828", -"K{ c #592324", -"L{ c #562323", -"M{ c #3D1B1A", -"N{ c #2E6823", -"O{ c #683030", -"P{ c #682F30", -"Q{ c #68302F", -"R{ c #672F2F", -"S{ c #672D2E", -"T{ c #652C2D", -"U{ c #642C2C", -"V{ c #61292A", -"W{ c #5A2526", -"X{ c #572423", -"Y{ c #3E7530", -"Z{ c #9D9B65", -"`{ c #642D2D", -" ] c #652E2D", -".] c #652E2E", -"+] c #642E2D", -"@] c #642C2D", -"#] c #612A2A", -"$] c #5F2929", -"%] c #572324", -"&] c #572424", -"*] c #481E1F", -"=] c #366D29", -"-] c #622B2B", -";] c #622B2C", -">] c #632C2B", -",] c #622B2A", -"'] c #5D2728", -")] c #5A2625", -"!] c #592525", -"~] c #562423", -"{] c #5F2A2A", -"]] c #602A2A", -"^] c #602A29", -"/] c #60292A", -"(] c #5E2928", -"_] c #5E2929", -":] c #5B2627", -"<] c #5D2829", -"[] c #5D2929", -"}] c #5E2827", -"|] c #5A2726", -"1] c #5A2727", -"2] c #552323", -"3] c #327525", -"4] c #2F7725", -"5] c #5A2626", -"6] c #5A2627", -"7] c #592625", -"8] c #592626", -"9] c #592524", -"0] c #592425", -"a] c #562322", -"b] c #A5976B", -"c] c #3E7732", -"d] c #2B701F", -"e] c #582425", -"f] c #562324", -"g] c #226314", -"h] c #26691A", -"i] c #562424", -"j] c #552322", -"k] c #266719", -"l] c #552223", -"m] c #532221", -"n] c #3E7632", -"o] c #532222", -"p] c #391A1B", -"q] c #2E6B21", -"r] c #C5A981", -"s] c #522122", -"t] c #522222", -"u] c #532122", -"v] c #29631C", -"w] c #307726", -"x] c #6D493D", -"y] c #614439", -"z] c #DBC193", -"A] c #46211F", -"B] c #391C1B", -"C] c #9A7F63", -"D] c #2A671E", -"E] c #256818", -"F] c #AE9170", -"G] c #4E312A", -"H] c #516E31", -"I] c #2D6822", -"J] c #C0AB7E", -"K] c #8D6F57", -"L] c #4D1F1E", -"M] c #765645", -"N] c #58372E", -"O] c #4C201F", -"P] c #E8D09D", -"Q] c #3D1C1C", -"R] c #361918", -"S] c #BBA07B", -"T] c #472824", -"U] c #326820", -"V] c #8C6E57", -"W] c #CCB1A1", -"X] c #DFC696", -"Y] c #412220", -"Z] c #371D1B", -"`] c #D8C091", -" ^ c #6F5041", -".^ c #C1A6A1", -"+^ c #B0958D", -"@^ c #4A2C28", -"#^ c #361C1B", -"$^ c #4F2F29", -"%^ c #5B4337", -"&^ c #4A7E3E", -"*^ c #947878", -"=^ c #3C221F", -"-^ c #407834", -";^ c #DAC192", -">^ c #BEA2A1", -",^ c #9D827F", -"'^ c #4A2F29", -")^ c #6A5141", -"!^ c #A38A6B", -"~^ c #37722B", -"{^ c #A08567", -"]^ c #967979", -"^^ c #BDA1A1", -"/^ c #31671F", -"(^ c #B69D78", -"_^ c #5B3D33", -":^ c #977979", -"<^ c #316D25", -"[^ c #432522", -"}^ c #40221F", -"|^ c #CDB489", -"1^ c #977C60", -"2^ c #402220", -"3^ c #411D1D", -"4^ c #C2A7A1", -"5^ c #C5A9A1", -"6^ c #C9AEA1", -"7^ c #CBB0A1", -"8^ c #CEB3A2", -"9^ c #D2B7A2", -"0^ c #D1B7A2", -"a^ c #D1B6A2", -"b^ c #CDB3A1", -"c^ c #D4B9A2", -"d^ c #CFB5A2", -"e^ c #CEB3A1", -"f^ c #316D22", -"g^ c #94795F", -"h^ c #442522", -"i^ c #C4A9A1", -"j^ c #DAC0A2", -"k^ c #E5CCA3", -"l^ c #EDD5A3", -"m^ c #EFD7A3", -"n^ c #E9D0A3", -"o^ c #DFC6A3", -"p^ c #D3B8A2", -"q^ c #CDB2A1", -"r^ c #2C6F20", -"s^ c #987D61", -"t^ c #553830", -"u^ c #3C1E1D", -"v^ c #C3A8A1", -"w^ c #CFB4A2", -"x^ c #E2C9A3", -"y^ c #EED6A3", -"z^ c #E6CDA3", -"A^ c #D8BEA2", -"B^ c #D0B5A2", -"C^ c #CCB288", -"D^ c #9D8265", -"E^ c #95795F", -"F^ c #BAA07A", -"G^ c #C8ADA1", -"H^ c #EAD1A3", -"I^ c #D9C0A2", -"J^ c #527031", -"K^ c #E7CFA3", -"L^ c #E3CAA3", -"M^ c #246718", -"N^ c #DCC3A2", -"O^ c #EBD2A3", -"P^ c #E7CEA3", -"Q^ c #E2C8A3", -"R^ c #DBC1A2", -"S^ c #39722C", -"T^ c #8B8758", -"U^ c #256718", -"V^ c #2D6F21", -"W^ c #967879", -"X^ c #3F7530", -"Y^ c #317626", -"Z^ c #927777", -"`^ c #376F2B", -" / c #447937", -"./ c #317525", -"+/ c #316C22", -"@/ c #2A641C", -"#/ c #326A25", -"$/ c #528243", -"%/ c #326E25", -"&/ c #2B6620", -"*/ c #3B732F", -"=/ c #346F25", -"-/ c #477B3A", -";/ c #4C7F3E", -">/ c #3C752F", -",/ c #2C681E", -"'/ c #2B651E", -")/ c #4A7D3C", -"!/ c #4A7F3D", -"~/ c #346C26", -"{/ c #568447", -"]/ c #558345", -"^/ c #356E29", -"// c #2D6A20", -"(/ c #518041", -"_/ c #346F26", -":/ c #3F7733", -"</ c #417835", -"[/ c #467B37", -"}/ c #4D7E3F", -"|/ c #447A37", -"1/ c #326E26", -"2/ c #336E26", -"3/ c #447B37", -"4/ c #558246", -"5/ c #568147", -"6/ c #497D3B", -"7/ c #2F6B1F", -"8/ c #4E7E40", -"9/ c #4E7E3F", -"0/ c #558247", -"a/ c #4F8041", -"b/ c #3E7630", -"c/ c #367127", -" ", -" ", -" . + + + @ # $ % & * = - ; ", -" > , ' ) . . . . . . + + ! ~ { { ] { ^ / ^ ( _ : < ' [ } ", -" | 1 2 # 3 ] / ] / 4 + . . . . . . . . . . + + 5 6 ^ ] / ] ] { ^ / / { ] ^ { 3 # 7 1 8 ", -" 9 0 a # b ] / ] { { { { ^ ] ^ c + + . . . . . . . . . . . . . + + + d e { / / / { ] { { { { { { { { ^ { { f g h 0 i ", -" j k l ] { { / ] { ] ] ] ] ^ ] ] { ] ] m + + . . . . . . . . . . . . . . . + + + + n { { ^ ] { / ^ ] { ] ] / ] ^ { { ] ^ { { ^ ^ l k o ", -" p * q ( { { { { / { { { ] { ^ { ] { { { ] ] ] { r + + + . . . . . . . . . . . . . . . . . + + + + s ^ { / { ^ ^ ] ^ / / { / ^ ^ ] / { { ^ { { { ] { f t u v ", -" w x y ] ^ ^ { { { ] ] ] ^ { / { { { { { / { ] / ^ / ^ z + + + . . . . . . . . . . . . . . . . . . + + + + A { ] ] ] { ^ ] ^ { / { { ^ { { { ] / ] / ^ / ] { { B C D E F ", -" G k H { { / { { ] { ^ { ^ { { ] { ] { { / ] ^ ] ^ { { { { ^ ^ I + + + . . . . . . . . . . . . . . . . . . . + + + + + + e ^ J { / ] ^ ^ ] ^ { { { { { / { ] { { ^ ] { { ^ K L M C C N O G ", -" w P ^ ] ^ ^ ] ^ { { ] ^ ^ ] ^ / / ^ ^ / { ^ ] ^ { { ] { { / ] / J _ Q + + + . . . . . . . . . . . . . . . . . . . . . + + + + + + + R J ^ { _ ] ^ / ] { ^ { / { { { { ] ^ / { ] ] ^ ] ^ ] S T U V C C W X ", -" Y Z ^ { ^ { / ] { ^ ^ { ] ] { { { ] { ^ / { ^ { ^ { ^ ^ { / ` _ J _ _ _ _ .+ + + . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + S _ _ _ _ J ^ _ ^ J / ^ ] { ^ { ] / ^ ] ^ / { ^ ^ ] { { S T ..C V V +.@. ", -" 1 #.{ { ] ^ ] ] ] { / { { { { { ] / ^ / { ] ] ] / ^ { ] ] _ _ ^ _ _ _ _ l $._ %.&.+ + + . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + *._ _ _ ^ _ ^ { ^ =.{ / ^ / ] { { ^ ^ { { { ] / { { { / ] { -.;.>.V >.V ,.'. ", -" 0 ).{ ] / ^ ^ { { { { ] { ^ { / ^ / ^ { ^ { / ] ] { { { ^ _ ^ _ _ _ _ _ _ _ !.~._ {.%.] + + + . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + ]._ %.l %.#._ _ _ ^ ^ J ` / { { ] ] { ] { { ] { { / { { / { ^ S L ^.C C C C /.0 ", -" (._.] ] ] ^ ^ ] { { { ] ] / / { ^ { ^ ] ] { ^ ^ ] { ] _ =.{ J _ ^ _ $._ %.!._ l {.%._ %.{.!.` + + + . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + :.l l !.!.l _ _ _ _ ^ _ ^ ^ ` { ^ ` ] ] ] { { ^ { { ] ] ^ ] ^ { { <.[.V >.C >.C }.|. ", -" 1.] ] / { { ] ] { / ] ^ ^ ] ] { { { ^ / ] { { ^ { / ] ` ^ ^ ^ _ $.l _ _ $.{.{.{.{.!.~.!.!.{.{.2.3.+ + + . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + Q ~.~.%.{.!.~.~._ %._ $._ J _ _ / _ ^ { { / ] / ] ] / { / / ^ ] ] ] L ^.V 4.C C V 4.5. ", -" (.6./ ] { / / / { / / { ] ] ] ^ ] { { / / ] { { ] { ] ^ ^ =.J ^ _ l _ $.$.l #.!.!.!.{.!.2.7.{.{.2.2.2.2.+ + + . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + 8.!.{.{.{.{.!.%.#._ _ l _ _ _ _ _ ^ / { ] ^ / / ^ { ] / { { ^ { ^ { { 9.C >.V C C V C 0.a. ", -" b.=./ ] { { ^ ^ { ^ ] ^ { / ^ { { / ] / ] { / ] / ^ { { =.^ _ _ _ _ _ _ {.l !.%.%.{.!.2.!.2.2.2.2.2.c.2.c.c.+ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + d.2.{.!.!.2.{.!.{.~.l _ $._ _ _ _ ^ _ J ^ ^ ] { { / { { ] { { ] ^ ^ { S U V V >.V C V 4.B e. ", -" f.y / / / ^ ] { ] { ] ] ^ / / / ] ^ { / { ] ] ] ] ^ _ ] J J _ _ #._ $.~.{.{.%.{.!.{.g.!.7.{.c.2.2.2.c.h.c.c.i.j.+ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + k.l.2.c.{.{.2.!.{.#.$.$.!.l _ %._ J _ ^ =.J ^ / { ^ { ] { { { ^ ] ^ ^ ] m.[.C >.C C >.C V n.o. ", -" p.] ^ ] ] / { { / { ] / ^ { ] { { { { ^ { ] ] ] { ^ { ] _ ^ _ _ _ _ #.%.l {.{.!.!.7.3.{.{.c.c.2.2.i.h.j.h.h.h.i.i.h.+ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + q.r.2.2.!.2.2.2.{.!.{.{.%.%.l _ _ %._ _ _ _ / { ^ { ] ] ] / { { { { ^ / / ;.C C >.C 4.>.C 4.C s. ", -" t.u.{ ] ] { { { ^ ] { ^ / ] { ] ^ ] ] ] ] { ] { ] ] ^ ^ =._ _ _ _ #.~.!.{.~.!.{.{.{.2.2.2.c.c.c.c.c.h.h.h.c.c.v.h.w.h.i.x.+ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + y.j.2.2.c.c.c.{.{.{.{.7.{.{.~.!.#.l _ _ _ _ _ J ^ { { / { { / { ^ / { / { s [.V V C V V V >.>.C z.A. ", -" B.t ] ^ ^ { ^ ] ] { ] ^ { ] ^ ] { { ^ ] { { ^ ] ^ ] { { _ _ _ %._ %.{.%.%.!.!.%.{.{.{.2.3.2.r.C.c.r.c.h.j.i.w.h.D.i.i.i.x.x.D.+ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + E.c.2.c.c.c.c.2.2.2.2.{.7.{.!.~.{.#.!._ _ _ _ _ / { { { ^ { ] ] ] { { / ] F.G.C C >.C V C >.V C 4.H.I. ", -" J.t ] { ^ ^ ^ / / / / { / ] ^ ] / ] ] ] { ^ { { ^ / { / _ ^ _ _ $.!.%._ ~.{.2.!.c.{.c.2.c.c.2.c.h.h.h.h.i.i.K.i.v.v.w.w.D.D.D.D.D.+ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + L.i.c.i.h.c.r.2.c.{.3.!.c.2.{.{.%.{.!._ _ _ ^ _ ^ ` { ] ^ { ^ ] { ] ] ] / / M.C V >.C 4.C C 4.C C C H.J. ", -" N.{ { / { / { ^ { ] { { { ^ { ^ { ^ ] / { { / { ^ ^ { J ^ _ _ _ _ $.#.!.{.{.{.2.!.{.c.c.2.2.c.c.c.i.c.h.x.x.D.D.D.w.w.D.D.O.D.P.D.+ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + Q.h.h.h.i.j.h.j.c.2.2.c.2.2.{.{.{.!.%.%.!._ _ _ _ ] _ / { ] { ] { ] ] ^ { / R.S.V 4.C C 4.C C V 4.>.>.T. ", -" U.] ] ^ { ^ { / ^ ] ] / ^ { ] ] / { { ^ / / ] ] ^ { _ ^ _ ^ $.$.$.$.{.{.!.!.{.{.c.c.c.c.c.h.c.c.c.h.i.h.w.V.D.w.D.D.D.D.D.D.D.W.O.D.X.+ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + Y.i.i.i.i.h.i.h.c.C.2.c.l.7.!.2.!.{.#.!.~._ _ _ _ _ { / ^ ^ ^ { { { ] { { / y ;.>.>.C 4.>.4.V C V 4.C >.Z. ", -" `.{ { ] ^ ] / ^ ^ ] { / ] { { { { ] { ] / { { { / { ^ _ =.^ ^ _ _ $.#.!.{.~.{.2.7.7.2.h.c.i.j.i.h.i.h.w.x.v.K.w.D.D.D.D.D.D.W.P.O. + +W..++ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + ++h.i.w.x.i.w.h.h.c.c.2.c.2.7.l.7.%.!.#.!.!.l _ _ _ ^ ^ / ] ] / ] { ] / / { ^ L C C C 4.C V C C C >.>.>.>.@+ ", -" #+] { ^ / { ^ ] { ^ / ] ] { { / { / ^ ] { { ^ { ] / ^ { J J _ _ %.!.{.!.{.!.2.2.2.l.2.c.c.j.c.i.h.h.i.V.v.D.D.D.D.D.D.D.X.W.X.X. +X..+$+X.X..++ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + %+D.w.V.i.D.h.h.c.j.c.r.2.c.2.{.{.{.{.{.{.%.!.$._ _ _ { _ J { ^ { { ^ ^ ] / / T >.V 4.C V C C C 4.V V 4.C C &+ ", -" *+=+{ ^ ] { { ] { / ^ / { ] { / ] ] ] ^ ^ ^ / ] ^ { { ] ^ ^ _ $.%._ %._ {.{.!.{.2.l.2.C.c.i.c.i.i.w.i.i.w.x.D.D.D.O.D. +D.X.X.W.X..+$+$+.+.+.+-+.++ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + ;+D.x.x.D.x.i.x.h.i.h.c.j.2.c.2.2.!.!.{.{.!.{.%.$._ _ ^ ` ` { ^ { / { ] ^ ] ^ T C V C C C C V 4.C V V >.C V W >+ ", -" ,+] / / ] ^ ^ { { / / ] ^ / { / ^ { { { { / { { ^ ] ` ^ ^ ^ $.%.l !.!.!.{.{.2.2.2.2.c.c.h.v.i.h.i.i.i.V.D.D.D.D.D.W..+D.X. +W.X..+.+-+.+.+.+-+'+)+'++ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + D.O.D.D.D.D.i.w.i.w.i.c.h.j.c.2.2.7.{.{.!.!.!.!.#._ _ _ ] _ / { ^ { { { { / / K ^.>.V V >.C C V V V 4.4.>.>.V !+ ", -" ~+b ^ ] ^ ^ / ] / ] { ] ^ ] { ] ] { { { ^ ^ ] ^ ] ] J ] _ =._ _ l _ {.{.{.{.7.7.c.2.c.r.c.h.i.i.w.w.i.i.w.D.W.P.W.{+O.X..+ +.+.+-+.+-+$+-+-+-+'+'+'+]+^++ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + /+X.P.D.P.D.D.x.V.V.x.h.h.h.h.2.2.c.2.c.2.2.!.#.{.%.%._ _ { =.^ { ] ] { ] ^ ] { K ^.C C C C >.>.C >.>.V V C 4.V V (+ ", -" _+/ { ] ] ] { / { { { ^ { / ^ { ] { ] ] ] / ^ ] { ] ] _ _ ^ _ ~.%.%.!.{.!.{.{.2.2.c.j.h.c.h.h.i.D.i.v.x.D.D.X.D.W.O.X..+.+X.-+X..+'+'+'+-+:+-+]+<+]+'+]++ + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + V.X.X.O.W.D.D.D.w.h.v.v.i.i.i.i.c.c.c.2.3.{.{.~.!._ $.%._ _ ^ ^ { / ] ^ / ] ^ ^ y ^.V C 4.>.V C 4.C >.C C V C C >.z. ", -" [+( / ] ^ ] { { / { { ] / / { / { ] ] ] ^ ^ { { ] ^ ^ _ ^ _ _ _ %.!.!.!.!.!.l.{.2.c.c.h.c.i.i.i.w.w.w.D.D.O.D.X.D. +W.}+.+.+.+|+|+1+-+'+-+]+'+'+]+]+]+<+<+2++ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + %+ + +W.W.D.D.D.D.D.w.i.D.h.v.j.h.j.c.c.{.2.2.!.!.{._ _ l l _ J ] / ^ / ^ ] { { ^ 3 S.C C C C V >.C C C C C V V 4.C 3+[+ ", -" t { ] { ^ ] ^ ] ^ ^ ] ] / { ] { ^ / ^ { / ] { ^ / { / ] ] _ _ _ %.%.{.!.{.{.2.c.c.c.j.c.h.h.w.w.i.i.D.D.D.D.W.X.W.W.W.-+X.$+-+-+-+-+:+-+]+:+]+<+'+<+2+2+]+]+4++ + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + 5+X..+.+O.{+O.O.D.D.D.D.K.K.i.h.v.c.h.c.2.2.2.!.{.!.~.%.$._ _ _ _ J ^ / ] ^ ^ / ] S [.C C >.V >.4.C V V C C 4.C C V C H. ", -" j y { / ^ ^ ] { ] ] { ] ] { { ] { ] ^ { ] { { { / { { =.J _ _ _ %.%.%.{.2.2.{.c.c.2.c.h.h.i.h.h.w.D.x.D.O..+D.D..+.+X..+-+1+|+.+'+'+'+:+<+]+]+]+6+6+<+2+2+2+2+7+8++ + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + 9+-+.+X.X..+ +O..+W.P.D.D.D.D.v.w.c.h.h.c.c.2.l.{.!.!.%.{.l _ _ _ / { =.^ { { ] ^ ] 0+a+C C C C C 4.>.V C >.>.C >.>.>.V b+o ", -" c+/ ^ ] { ] { / / ^ ^ { { { / ^ ] ^ ^ { { ] / ] / { ] { ^ J _ _ _ #.!.d+{.2.7.c.c.c.i.h.h.i.w.D.w.w.D.D.D.D.W.X.X..+$+-+$+-+'+-+'+'+]+]+<+<+2+2+e+7+7+f+g+7+7+7+7+h++ + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + i+-+-+'+.+.+X.X.W.D.P.D.D.V.v.D.h.w.c.h.h.h.c.c.2.2.{.{.{.!.l l _ _ J ^ ^ ^ ^ ^ / { K >.V C C >.>.>.4.4.V 4.C C V V >.>.C j+ ", -" k+{ ] ^ / ] { { ] { { / / { { ^ ] { ] ] { { ] ] ] ^ { { J _ _ _ #.#.l !.!.2.!.{.2.h.c.c.h.h.i.K.x.D.D.W.W.W. +.+X.W.-+l+-+-+-+'+)+'+m+]+6+<+]+2+2+2+7+g+7+7+7+n+n+7+o++ + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + m+'+-+'+-+.+.+X..+.+ +D.D.D.V.x.w.w.h.h.h.2.c.c.2.2.7.%.%.%.$.%._ _ _ ` { / ] { ] { s C V >.C C 4.V V C >.V >.C V C 4.4.4.V p+ ", -" `.^ { / { { { ^ / / ^ ^ { { ] ^ { ^ ] ] ^ { ^ ^ { ^ ] { _ ^ _ _ ~.%.{.{.2.2.2.{.c.j.h.h.h.h.w.w.x.D.O.W.X.W.X..+.+X..+1+-+'+'+<+]+]+]+]+f+<+]+<+7+7+7+7+n+7+7+q+r+r+s+q++ + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + t+'+'+-+'+X.-+$+.+X. +.+W.W.D.D.w.K.D.i.j.c.h.2.c.2.3.!.!.!.~.!.%._ _ _ J ^ { ] { ^ ] u+V C >.V C V C C 4.C 4.V C C >.C C C V v+ ", -" w+{ / ] / ] / ^ ^ { ] / ^ { ] ] ] / ^ ^ ^ ^ ] { { / { { _ / _ _ %.!.!.{.{.2.{.l.2.2.h.h.i.x.i.D.D.D.D..+W.W..+.+-+.+'+'+-+-+<+]+]+'+6+]+]+2+7+f+7+7+7+n+q+x+x+r+o+y+q+q+z++ + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + D.]+m+'+'+1+.+$+$+$+X..+X.D.D.D.D.D.D.i.h.v.i.c.2.c.l.{.{.{.{.!.l _ _ ^ { ^ ^ ^ { { ] A+C V V C C >.C V C >.C C C C 4.C C V C B+ ", -" p+F.^ { { { ^ ] ] { ^ { ] ] / { ] ^ { { ] ] / { { ] { ^ ^ ^ J _ $.$.{.!.!.{.c.2.C.c.j.h.v.i.v.i.V.D.D.D.D.X.X..+.+.+'+-+'+'+'+'+]+<+]+<+<+7+g+7+7+7+7+y+r+y+s+n+q+C+s+s+D+C+E++ + + + + + + + . . . . . F+F+F+F+F+G+G+G+G+. . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + H+'+:+-+'+-+-+.+-+.+-+.+O.X.W.D.D.D.D.D.h.w.i.h.h.2.c.{.2.{.{.{.!.~._ _ J _ _ { ] ] ] / ;.>.C C C C >.V C C V V 4.V 4.V >.V >.V n.I+ ", -" F ^ ] { { { / { / { { ] ] ] { ] ] ] { { / ^ ] { ^ ] ] ^ / _ _ _ _ %.!.{.2.2.2.{.C.j.i.h.i.i.w.D.D.D.P.D.W.O..+X.X.X.'+'+-+:+]+]+2+6+]+f+2+7+7+7+x+7+s+q+n+s+q+s+J+J+s+D+s+C+K+L++ + + + + + + + . . . F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+M+. . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + N+6+<+<+:+)+-+'+'+.+.+X..+X.W.O.D.D.D.D.i.i.i.i.c.c.c.2.g.{.!.!.%.$.$._ _ ^ { { ^ ^ { { O+C C C >.C 4.V >.V C 4.V C >.4.>.4.4.C 4.P+ ", -" a { / { ^ ^ ] { ^ ^ ] { { { ] { { ^ ] ] ^ ] ^ ^ ^ { ] ^ J / _ !._ #.!.%.{.!.l.{.c.h.h.i.w.w.w.D.D.D.{+P.{+ +.+.+X.-+-+'+<+'+]+<+2+2+2+e+7+2+7+7+r+7+o+7+s+s+s+q+q+s+Q+s+C+C+D+D++ + + + + + + + + . . F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+. . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + 2+6+<+]+]+<+'+-+'+-+.+.+.+X.O.X.W.W.D.D.w.h.i.h.j.c.c.c.2.{.{.!.{.l $._ _ _ J ^ ] { { y [.V C 4.4.>.C >.C >.C C 4.V C C C V >.C 4.O ", -" R+^ ] { / ] { ^ ] / ] ^ / { / { ] ] ] { { { ] { { / { ] ^ _ ^ _ #._ ~.~.{.3.2.2.j.c.h.w.h.w.D.D.D.D.D.D.W.X. +.+-+-+'+-+]+<+<+]+]+6+7+g+7+7+7+7+r+o+s+s+q+q+s+K+D+D+D+D+D+C+D+S+J++ + + + + + + + + G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + T+7+2+]+]+]+]+m+:+'+'+-+-+.+.+.+O.W.D.D.D.K.D.x.i.h.h.2.c.2.2.2.{.!.!._ $.^ { J / / { / U+>.C C 4.C >.>.>.C C C C C C C C C C C V C V+ ", -" ; ( ] ^ ^ { ] ^ { ^ ^ { ^ ] ^ { { ^ / { ] { ] { { / ^ { _ =._ _ _ !._ {.7.{.c.2.2.j.i.i.h.h.D.w.x.W.W.W.X. +X.$+-+$+'+'+:+<+'+6+2+<+7+7+2+7+n+n+y+s+s+q+C+s+s+K+s+D+D+D+C+S+S+S+W+X+Y++ + + + + + + + G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + ]+7+7+2+2+<+:+:+Z+'+'+-+-+.+.+.+O.X.W..+D.D.i.v.w.i.h.2.2.c.2.!.{.!.!.%._ _ ` J / / ] ^ A+V C C C C C V V 4.>.4.>.C C 4.V >.C C C 4.`+ @ ", -" .@] / ] / ^ ^ ^ ] { ^ / ^ / / ] { ^ { { / { ] ] { { ^ { { =._ _ _ _ _ {.{.{.2.2.c.h.c.i.w.K.i.D.D.D.D.{+X.X..+-+$+-+]+-+-+6+]+<+<+<+7+7+7+7+x+o+y+s+s+q+K+K+K+D+D++@C+D+D+S+X++@@@X+S+#@+ + + + + + + G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. . . . . . + + + + + + + + + + + + + + + + + + + + + + + + + + $@7+e+6+7+2+g+6+'+'+:+'+-+-+-+W..+X.X.W.D.D.x.D.v.v.h.c.r.j.7.2.2.{.!.#._ _ _ ^ ^ ^ { { / ;.4.V V V C C >.C C C 4.>.C >.V C C 4.4.V >.V %@ ", -" &@^ ] { / ^ ^ ] ^ { { { ] ] / ^ ] ^ ] ] / ] ] ] ] { { ] { ^ _ _ _ $.%.%.{.!.2.2.2.c.j.h.w.D.D.i.D.P.D. +{+X..+-+$+-+'+]+'+<+2+2+e+7+2+7+7+y+y+7+x+s+s+s+C+C+D+D+C+C+D+S+@@*@@@@@@@@@=@-@;@+ + + + + + + G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + >@7+7+6+g+2+<+<+:+:+'+'+'+-+-+X.X..+D. +D.W.D.x.D.i.i.h.,@c.2.2.l.!.{.{.#._ _ ^ { ] { { y S.C >.V C >.>.C V C C V >.>.C 4.V C C C C >.V '@ ", -" )@{ ^ ] ^ { / { { ] ^ { { { / / ^ ^ { ] / { { { ] { ] / ^ J ^ _ $._ {.~.!.2.2.2.c.j.h.h.v.i.w.w.D.P.P.W..+X.-+-+.+'+:+]+]+:+<+]+f+7+7+7+y+n+y+y+s+C+K+q+K+C+C+D+D+D+D+X+S+@@S+@@@@-@=@=@=@+ + + + + + + + G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. . . . + + + + + + + + + + + + + + + + + + + + + + + + + + + !@n+7+7+7+7+2+<+g+<+]+<+-+-+'+.+.+X.W.O.P.D.D.x.D.x.i.~@h.C.2.2.{.{.!.{.~.%.%._ J ^ =.] ] e V C >.C C C C 4.V C 4.4.4.V C >.V C 4.V C C >.{@ ", -" ]@/ { ^ { ] { ] ] { ^ ] ] { ] / ] { / ] ] / { ] ^ ] ] ] { ^ ^ ^ ~.$._ ~.!.!.c.2.c.c.h.i.i.h.x.D.W.O.D..+X..+X.-+'+'+'+]+<+<+2+g+2+7+7+n+7+q+s+s+q+s+C+C+K+D+C++@S+X+S+@@W+X+@@@@=@^@=@=@/@(@+ + + + + + + + G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+. _@:@+ + + + + + + + + + + + + + + + + + + + + + + + + + + <@n+n+x+7+7+7+f+]+2+2+]+]+'+'+'+'+.+.+W.W.O.D.D.D.D.i.i.h.h.2.2.{.l.!.~.%.$.l ^ ^ _ / { ] [@C V C V V C C >.V C C V >.C >.C V V V V V C >.}@ ", -" _+/ { { / ] { ^ { { { ^ { ^ { / { { ] ] ] ] ^ { / / ] ] ^ J { _ _ l {.#.!.2.c.2.c.j.c.h.v.w.D.D.D.W.X.X.X.$+'+'+]+'+<+<+]+]+6+e+7+2+7+x+n+r+q+s+K+D+D+C+C+D+S+D+S+X+X+-@W+@@=@=@=@/@=@|@/@|@N++ + + + + + + G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+1@2@3@+ + + + + + + + + + + + + + + + + + + + + + + + + G+4@y+s+n+7+7+7+7+<+]+6+<+Z+]+-+-+X..+X.X.O.D.D.D.V.w.v.v.h.j.h.c.2.2.2.!.~.!.%._ _ =.^ ^ ] ..>.V 4.>.V C C 4.V 4.>.C C 4.C >.C V >.C V V V z. ", -" w+/ ^ / { ^ ] ] / ^ { ] ] { ] ] { ^ { ] { ^ { { { { { { _ ^ ^ _ %.%.%.%.7.{.c.2.h.j.i.i.i.D.D.D.D.{+X..+X.$+.+-+]+<+'+5@<+7+2+7+7+7+q+y+r+n+q+C+s+s+D+D+D+S+X+S+X+@@@@-@=@=@=@=@=@=@6@/@7@7@6@8@+ + + + + + G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+9@0@+ + + + + + + + + + + + + + + + + + + + + + + + + a@q+s+y+s+7+7+7+<+g+<+<+b@'+'+'+'+|+X.X.P.X.P.D.D.i.v.i.w.h.r.C.c.2.!.!.!._ %.%._ ^ J ] { K C >.V >.V V >.C C V C C 4.4.>.4.V V V V V >.4.C c@ ", -" d@^ ^ { / ] ] ^ / ] { ^ { { ] / { / ^ { ] { { / ^ ^ ^ / { ^ ^ _ _ %.{.{.{.{.2.2.c.c.h.w.w.i.w.D.D.X.X..+.+.+.+-+'+'+'+<+e+2+2+7+7+n+y+n+y+q+s+D+D+D+D+D+e@S+D+X+W+S+@@=@@@=@=@^@/@=@=@|@7@f@f@g@h@+ + + + + + G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+i@j@+ + + + + + + + + + + + + + + + + + + + + + + G+k@q+y+y+o+7+7+n+7+g+2+]+<+]+]+]+'+-+$+.+W.X.P.X.D.D.K.x.h.j.j.r.c.2.c.!.%.{.%.%._ { { ] ^ L >.4.>.>.V 4.>.V V 4.C V C V C 4.>.V >.C C >.V C W ", -" l@{ ^ { ^ ^ { ] ] { / ] ^ ] { ^ ] ] / { ^ { ^ ] { ] ^ { ^ _ _ _ _ $.{.{.2.{.c.2.r.i.i.h.x.x.D.D.O. +.+.+-+.+-+-+'+:+]+]+6+e+<+g+7+o+n+y+y+q+q+K+D+D+C+D+S+X+X+X+S+@@=@W+=@=@=@f@/@6@|@f@f@f@g@f@f@+ + + + + + G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+m@n@+ + + + + + + + + + + + + + + + + + + + + + + o@C+s+q+s+n+7+y+7+7+7+e+<+<+'+]+-+-+'+-+-+.+{+ +O.D.D.K.i.i.h.h.2.2.c.l.{.{.!.!._ _ _ { J { O+>.V C >.>.4.C 4.C C C C C C V C C 4.V V V >.C C p@ ", -" q@] { ^ { ^ ^ { ] ] ^ { { ] { ^ { ] { { { / { ] ] ] ^ ^ ] ] ^ _ l l l ~.7.3.c.i.c.j.h.i.i.D.D.D.D.D.X..+-+-+'+:+'+]+]+2+2+2+7+2+n+7+y+q+y+s+s+s+K+D+S++@X+X+X+S+W+=@@@=@r@=@/@f@|@f@f@f@s@g@t@f@t@(@+ + + + + + G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+u@M++ + + + + + + + + + + + + + + + + + + + + + + v@s+C+q+s+n+7+y+7+7+e+7+7+]+<+:+'+'+$+-+.+X.X.P.D.D.D.w.v.i.i.h.j.c.c.!.2.%.!.%._ _ _ { ] -.C C 4.V C V C 4.C 4.V 4.4.C >.C C V V V >.C C C 4.w@ ", -" d@] { / { { { ] ^ ] { ] { ] ^ ] { { { { ^ { { / ^ ] { / { ` _ ^ _ _ l {.{.{.c.c.h.i.h.h.v.x.x.P.{+.+W..+-+-+'+-+:+'+:+<+6+e+7+7+n+7+y+r+q+q+C+D+C+D+D+S+X+X+@@@@x@=@@@/@/@=@|@/@/@f@|@f@s@g@g@t@y@t@z@+ + + + + + G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A@B@C@+ + + + + + + + + + + + + + + + + + + + + + + q+C+J+s+s+o+q+n+y+7+2+2+g+]+]+]+'+'+'+-+.+$+X.X.O.O.D.V.w.i.h.h.r.c.2.{.7.!.!._ $.^ =.{ { ;.V V >.V C V >.4.4.>.C V 4.C V C V >.C >.>.>.C >.>.W ", -" : { { { ] ^ { ] ^ { ^ ] { { ^ { / { ^ { ] / / { ] { ] { / J ] _ _ %.~.!.2.2.{.c.C.c.w.K.v.D.D.O.X.W.W..+.+.+-+'+'+]+6+2+]+]+7+n+7+q+y+q+J+s+D+C+C+D++@W+S+@@X+@@@@/@=@^@/@7@f@f@f@f@f@f@D@t@t@t@E@F@G@H@+ + + + + + G+G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+I@J@+ + + + + + + + + + + + + + + + + + + + + + 8@C+K+C+K+s+s+x+y+7+7+7+7+6+<+]+]+'+'+-+-+.+X. +D.D.D.D.w.i.i.h.c.i.c.2.3.!.%.!.l %._ ^ _ S ^.V 4.>.C 4.C C V C 4.>.>.4.C 4.4.C 4.V V V C 4.V C K@ ", -" u.{ ^ { / ^ { ^ / / ] ^ { { ^ ^ { ] ^ { { ] { ] ] ] ] { ] _ ^ _ _ l !.%.!.2.2.2.c.c.h.h.i.x.D.D.X.X.X..+.+-+-+Z+m+]+6+7+f+2+7+7+x+q+q+s+C+s+C+D+C+D+D+@@@@W+@@=@=@=@=@=@f@=@f@f@f@s@f@s@L@t@E@t@F@M@M@F@+ + + + + + + G+G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+N@n@+ + + + + + + + + + + + + + + + + + + + + + O@D+C+K+s+K+q+q+s+y+7+7+2+2+<+2+:+'+-+-+-+.+$+O.X..+W.w.w.D.i.v.h.2.C.2.7.!.!.$._ _ _ _ ^ T V C C C C >.C C C C 4.>.>.V >.C C 4.V V >.4.V V 4.C z. ", -" P@/ / { ] / { ^ ^ { ] ] { ] { ] / ] { ^ { / / ] { ] ] { ^ ^ { J _ $.!.%.{.{.{.2.c.h.i.h.w.V.w. +D.X.X.-+.+-+-+'+'+<+]+6+7+7+7+y+q+7+s+s+s+Q+C+D+D+S+X+S+X+@@=@=@@@/@7@/@|@f@f@s@t@g@f@t@s@y@t@E@Q@F@Q@Q@M@+ + + + + + + G+G+G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+u@M++ + + + + + + + + + + + + + + + + + + + + ;@D++@D+C+C+s+q+q+s+r+7+n+7+g+2+<+<+'+'+'+.+'+.+ + +D.D.D.x.w.h.j.h.r.c.l.{.{.%.~.%._ _ { ^ +.V 4.C 4.C V C V >.C 4.V C C V V >.C C >.4.C C C V V R@ ", -" S@{ { ^ { / { ^ { / { { { { / / / / ] { { { { ^ ] { { ^ ^ ] { ^ _ _ ~.~.~.{.c.c.h.h.h.i.D.w.x.D.O. +O..+X.-+'+-+'+'+<+e+7+g+7+7+o+q+s+s+J+D+K+D+S+X+S+T@X+@@=@=@=@^@r@f@f@f@f@f@f@t@t@t@t@G@E@U@M@Q@V@W@W@X@+ + + + + + + G+G+G+G+G+G+G+G+G+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A@B@C@+ + + + + + + + + + + + + + + + + + + + + Y@T@C+D+C+K+K+s+s+q+q+7+n+7+6+2+:+]+]+'+'+$+X.$+ +D.P.D.x.w.i.h.i.h.r.2.{.2.!.#._ l _ _ J s V C V C C V 4.C V >.V V V V V 4.C V C 4.V C >.>.C C V !+ ", -" Z@{ ] ] ] ^ ] { { ] / / / / { ^ ] ] { ^ / { ] { / ^ ^ { ] ] { _ _ %._ %.{.!.2.2.2.j.h.h.i.K.D.O.D.D. +X.|+.+'+'+:+'+<+g+7+g+7+7+x+y+q+q+D+K+D+C+S++@X+S+=@@@@@@@/@6@^@^@|@g@s@t@t@t@D@y@t@y@Q@F@F@V@Q@W@W@`@ #+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+.#G+G+G+G+G+G+G++#@#+ + + + + + + + + + + + + + + + + + + + + @@X+D+D+C+C+C+q+q+q+q+n+7+<+2+2+e+<+'+-+-+-+.+X. +W.O.D.w.D.x.i.c.c.c.2.2.{.!.#.!.l _ ^ J G.C C C V C V V V >.V 4.V >.V >.>.C V 4.>.C C >.4.>.V V Y ", -" ##^ ] ^ { { ] { { { ] ] { { ] { ^ ] { ^ / { { ] ^ { ^ { ^ ] ^ _ ^ $.!.#.{.2.2.3.j.2.h.v.i.V.D.W.D.W.X..+.+.+-+-+]+<+]+2+<+7+7+7+s+r+r+s+D+s+D+D+S++@W+x@=@=@@@=@/@^@|@^@f@s@t@s@g@t@t@t@F@Q@E@Q@Q@Q@Q@W@$#W@$#%#+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+&#+ + + + + + + + + + + + + + + + + + + + + *#W+T@+@D++@D+C+q+q+s+n+n+7+7+f+<+2+<+]+:+-+-+$+.+ +O.D.D.D.w.K.i.h.c.2.l.2.{.!.{.!._ J =.F.C V V C V V C 4.V C V >.C C C C V >.V V V 4.C 4.C C >.4.## ", -" =#/ { { { / ] / { ] { ] { { ^ / { { { { ] ^ ] { { { { { { { ^ { _ _ l %.~.{.7.2.c.h.i.w.D.v.D.D.X.O.{+.+X.-+-+-+<+<+2+g+7+7+7+7+q+r+s+s+C+D+D+C++@T@@@=@=@@@=@r@6@f@|@|@f@f@f@t@D@t@t@t@U@Q@Q@Q@Q@Q@Q@$#`@-#-#`@+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+;#C@+ + + + + + + + + + + + + + + + + + + + >#@@S++@D+D+D+D+C+J+s+s+n+7+7+7+7+<+2+]+:+]+'+.+$+X.X.X.O.W.D.x.w.w.i.h.c.c.c.!.~.{._ _ _ { ,#C 4.>.V 4.>.C 4.C C >.C >.4.>.C 4.V >.C 4.V C >.V C >.V '# ", -" y / { / { { { ^ ^ { ^ ^ ] ^ { ] ^ ] { / ] { ] / { ] ] ] { { ^ J _ $.$.!.{.{.c.c.2.c.i.v.x.D.D.W..+X..+X.-+-+:+]+<+]+2+<+7+7+q+n+o+q+q+s+D+D+D+X+X+@@@@@@=@/@/@=@|@f@|@f@s@t@g@y@t@y@F@Q@Q@F@Q@Q@Q@W@W@$#`@)#)#W@+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++#@#+ + + + + + + + + + + + + + + + + + + + X@X+@@X+D++@D+D+C+s+q+r+s+y+7+7+6+2+<+'+'+'+'+'+.+ +W.W.W.P.x.i.h.h.h.h.2.g.2.{.{.~.#._ _ F.V C 4.V 4.V C C C >.C C 4.>.4.C C C >.V >.>.V >.>.C V V b+ ", -" ).^ ] ^ ] { ] / ] / ] { / ^ ] { { { ^ ^ { ^ { ] / ] / ^ / { { J _ _ ~.!.!.{.{.c.h.c.w.w.D.x.D.D.D.X.W.-+$+-+'+<+]+]+<+2+7+7+n+q+r+s+s+C+C+C+D+S+X+@@S+@@=@/@6@/@|@f@g@f@t@t@t@t@t@y@F@F@M@Q@W@W@$#W@$#)#`@)#-#)#!#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+~#G+G+G+G+G+G+G+{#+ + + + + + + + + + + + + + + + + + + + E.@@@@@@W+D+D+D+C+C+s+s+7+s+7+7+2+2+6+2+<+'+-+-+-+-+.+.+D.{+D.w.D.x.c.i.c.2.3.{.%.!.#.l _ J L C C 4.>.4.V C V C V V >.V C V C >.V 4.>.V 4.C C 4.>.>.>./. ", -" ]#/ / { / / ^ ^ ] { { ] { ] { ] ] ^ / { ^ ^ ^ { { { ] / { { =._ _ _ {.~.{.{.{.2.c.h.h.v.h.h.D.O.D..+.+.+-+'+'+<+]+<+2+7+7+7+q+y+q+s+C+J+D+C+D+S+@@@@@@W+@@/@/@r@/@f@f@s@D@t@t@y@y@E@Q@Q@W@W@Q@W@$#$#)#`@^#)#/#/#(#_#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+~#G+G+G+G+:#+ + + + + + + + + + + + + + + + + + + + =@@@X+x@S+D+D+X+C+s+C+s+y+n+n+y+2+g+g+]+<+]+'+'+|+-+W.W.X.D.D.w.i.i.c.h.2.c.l.{.{.%.%._ ^ y 4.V 4.V C V V C V C C C C V C C V C C C 4.V V V C 4.4.C V <# ", -" [#{ ] { / ] { ] ] ^ { { { { { { ] { ^ / ] ] ] ] { { { ] { / ^ ] { _ l {.{.{.7.2.c.c.i.i.i.V.D.W.D.X.-+.+'+-+]+:+]+<+<+7+7+7+s+r+s+s+s+J+C+D+S+@@W+X+S+@@r@r@r@r@f@|@g@t@t@t@t@F@y@U@E@Q@Q@$#`@W@$#`@$#)#$#)#/#/#/#}#|#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+:@+ + + + + + + + + + + + + + + + + + + 1#=@=@=@=@X+X+S+S+D+C+q+J+y+s+q+x+7+7+]+]+]+:+'+-+-+.+X.W.X.D.D.i.h.h.h.c.r.c.l.{.!.!._ _ _ T ^.C V V 4.C C >.C V >.4.V 4.C 4.C V C C C >.C 4.V C V C >.[# ", -" 2#/ / { ^ / ^ ] { ] ^ / { { / ] / { ] ^ ^ { ] { / ] ] { { { ^ { _ _ _ l {.2.{.c.j.c.h.i.K.v.D.D.O. +X.X..+-+-+:+]+<+<+<+7+7+n+n+r+s+s+C+C+S+D+X+W+W+S+=@=@/@/@=@f@f@f@t@g@y@t@F@Q@Q@Q@W@Q@W@$#$#W@-#)#/#)#/#)#/#3#4#5#+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+M++ + + + + + + + + + + + + + + + + + + + =@/@=@=@W+S+W+X++@D+K+D+s+y+7+7+7+e+2+e+]+]+<+-+-+-+.+.+D.D.D.D.w.D.i.c.c.c.l.!.{.~.l %._ ] >.>.4.>.V 4.>.4.V V V >.4.V C C 4.V V 4.4.V C C V C C V >.C 2# ", -" ] { { ] / ^ ] ] { / { ^ ] / ] ^ ] ^ ] ] { / ] { { { { ^ { { { _ _ %.~.$.!.{.2.2.h.j.w.h.V.D.D.P.O.W..+$+$+'+'+]+]+7+f+g+7+7+q+q+q+s+s+D++@+@X+X+x@W+@@=@6@6@/@|@|@f@s@t@t@y@y@t@Q@Q@Q@Q@W@$#6#)#`@-#)#)#/#4#3#4#4#7#W@+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+8#:@+ + + + + + + + + + + + + + + + + 9#=@=@=@=@x@X+D+S+D+D+K+K+q+o+r+7+7+g+2+7+]+<+'+'+-+.+$+X.X.D.D.V.x.h.i.j.c.2.l.7.{.!.!._ _ 9.>.4.V V C >.V >.V V V V C C C 4.V 4.V C V V 4.4.V C >.4.C C ", -" _+{ ^ ] { ^ { { ] { { { { ] ] { ] { ] { { / / / ] ] { { / { =.^ _ l %._ !.!.{.2.h.h.c.i.D.D.D.D.W..+.+$+-+-+]+]+]+f+f+2+7+n+y+y+y+K+Q+C+D+S+X+W+=@=@=@r@/@f@|@f@f@f@t@t@t@E@M@F@Q@W@Q@`@$#$#)#)#)#)#/#/#/#4#/#4#0#7#a#b#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+~#G+G+G+G+G+G+c#d#:@+ + + + + + + + + + + + + + + + ;@^@=@/@=@@@=@X+X+X+D+D+D+s+J+y+n+7+7+7+7+<+<+'+'+-+-+.+.+P.D.W.D.D.i.w.i.j.h.2.{.{.!.$.~._ y ^.V C V C 4.C >.V C V V >.V V V 4.C C V C C V >.4.V V >.>.C e# ", -" b.{ { ^ ] / { { { ^ { { ^ ] { { ] ^ ^ { { ] ] ] ^ / ^ { { ^ { ^ ^ _ _ _ #.{.2.2.2.h.c.w.h.D.D.D.{+P.-+X.$+-+'+'+<+<+7+7+7+n+n+y+s+s+K+D+D+D+X+X+@@=@@@/@/@f@^@f@f@s@y@t@U@t@Q@M@Q@W@$#$#`@6#`@`@`@/#/#/#4#4#4#a#0#0#7#f#g#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+;#h#:@+ + + + + + + + + + + + + + + + i#r@r@=@/@=@W+X+D+S++@D+D+s+s+s+7+7+7+7+7+<+]+'+]+-+|+.+.+W.W.D.D.x.i.w.j.c.c.2.2.2.!.~._ _ j#V V V C 4.C 4.V >.V V >.C V V V V >.C C 4.C 4.4.V V 4.C C 4.b. ", -" k#{ / / { { { / ] / / { { { { ^ ] / ^ ] ^ { ] { ] { { { { ] { { _ ^ _ $.l {.7.c.c.c.c.h.D.V.D.D.D.O.X.$+-+'+]+]+2+6+f+f+7+n+s+s+q+s+J+C++@D+S+W+-@X+@@/@=@/@f@s@f@t@s@t@y@E@U@Q@Q@Q@$#$#l#$#`@)#/#/#4#4#4#3#3#7#7#7#f#f#f#m#+ + + + + + + + G+n#G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+;#o#+ + + + + + + + + + + + + + + + H@/@f@f@=@/@=@@@S+*@D+D+D+D+s+s+r+n+7+7+f+g+7+]+'+-+'+-+$+X.X.D.D.x.w.i.w.h.r.c.2.{.{.!._ %.F.^.>.4.4.4.C >.4.4.C 4.C >.C C C C C V >.V C >.>.C 4.V 4.C C V p# ", -" # ] { ] / ] { { ^ ] { ] { ] ] { { { ] { ^ ] ] { ] ] { / ^ { ^ _ _ _ %.$.!.!.l.c.c.h.h.v.i.D.D.O.X.X..+-+-+'+:+]+2+g+2+7+7+7+s+s+s+C+D+C+D+X+W+W+=@=@r@f@^@f@f@q#t@t@t@G@F@Q@Q@Q@r#$#`@W@`@-#`@)#/#)#/#3#4#7#f#s#f#f#f#t#u#+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+v#j@+ + + + + + + + + + + + + + + + -@f@f@|@r@=@W+X+@@W+S+S+C+C+q+s+s+n+n+7+7+<+6+6+]+'+l+'+-+X.X.W.D.x.V.h.h.c.c.c.c.7.!.!.%._ G.4.>.>.C >.>.4.C >.C >.C C V V >.V V V 4.V C V V 4.C V >.>.V w# ", -" x#] ^ ^ / ] / { ] { ^ ] / { { ^ ] ^ ^ / ^ / / / { ^ { / ^ ^ / ] ^ _ l _ ~.!.!.{.c.j.j.v.h.x.D.O.W.X.X.-+$+-+'+<+<+7+7+7+7+7+q+q+q+C+D+D+D+S+@@@@=@=@=@=@/@^@f@s@s@y@y@t@E@G@F@W@W@$#W@$#)#)#)#/#/#4#4#5#a#3#5#f#f#f#f#y#t#z#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+M++ + + + + + + + + + + + + + + + A#|@f@f@/@/@=@X+=@X+X+D+D+K+K+s+q+r+n+7+7+<+g+]+'+'+-+-+.+X.W.X.O.D.D.V.h.j.2.c.c.7.~.{.l %.K ^.>.C >.V V C V C >.>.C C >.>.>.V 4.C 4.V C C C C >.C V 4.V 4.B# ", -" C#^ / { { { { { { ^ ^ ] { ] ^ { ^ { { ^ { { { ^ ] ] / { ] { { { ^ _ _ ~.!.%.7.3.c.h.h.i.K.x.D.D.W. +X.$+.+'+'+<+]+]+7+7+7+y+y+q+C+q+C+D+D+S+@@S+=@/@6@^@|@f@|@s@f@s@y@t@E@Q@Q@Q@r#l#`@`@)#-#/#)#D#4#4#a#7#7#f#f#f#y#f#E#y#E#F#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++#+ + + + + + + + + + + + + + + + + t@|@r@^@6@=@=@@@W+@@D+X+D+K+C+s+s+s+y+7+2+g+2+:+:+]+'+-+1+W.D.O.D.x.v.i.i.h.c.2.2.!.{._ _ _ +.4.C V C C 4.4.>.>.>.C >.C >.>.>.>.>.V V >.V V V C V V C C V C G# ", -" #./ { ^ ] { ^ ] { ^ / ^ ] { / ^ { { ^ { ^ { { ^ ] ] { { ^ ^ { ^ _ _ !.l {.{.!.c.2.j.j.w.h.i.D.D.D..+X.1+-+m+]+<+6+6+g+7+7+q+y+q+s+C+D+D+W+@@@@@@=@=@=@^@f@|@t@t@s@y@t@Q@M@Q@W@H#W@`@6#`@)#/#/#}#4#3#5#7#f#7#f#f#I#E#u#I#J#u#K#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + L#s@|@|@|@f@=@=@W+@@S+D+D+D+C+q+q+y+r+7+n+7+g+<+:+'+-+'+1+-+.+ +D.D.D.x.h.i.c.2.{.2.{.!.!._ u+C >.4.V V C >.4.C C C V C V V C V >.V >.V V C V C V C 4.C V >.,. ", -" M#] { ] / { ] { ^ { { / / { ] ^ { ^ { { ] { ] { ] { { ^ ] ] { ^ ^ _ l !.l !.c.2.c.c.h.i.w.D.i.D..+{+X.-+'+'+m+]+]+]+2+7+y+x+r+s+s+Q+C+S+X+S+S+=@@@=@=@6@f@f@|@s@t@E@U@G@Q@Q@Q@r#W@W@$#`@`@)#4#D#4#3#3#f#3#f#y#t#y#y#u#E#N#u#O#P#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + |#t@g@f@/@f@|@=@=@=@W+X+X+D+D+s+s+s+7+7+7+7+7+2+6+<+'+:+-+.+.+X.X.W.D.i.x.i.c.c.c.c.2.{.$._ ] ^.>.B V >.4.4.>.V C V >.V C C C C 4.V 4.>.C 4.V C V C >.4.V C C Q# ", -" / / ] { ^ ^ / { { { ] ] / ^ / { ^ / { ] { ] { { { / / ] { ^ { ] J _ _ !.{.{.2.2.,@h.h.w.v.D.D.W..+W.-+-+'+-+<+2+6+7+2+7+7+q+q+J+s+D+D+X+W+@@=@x@r@=@=@|@R#R#S#t@F@M@F@F@Q@Q@W@W@)#-#-#`@/#4#4#5#3#7#7#f#f#T#f#E#E#u#N#N#u#U#U#+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + i#f@g@s@f@f@/@V#=@=@W+X+D++@C+Q+C+s+x+s+7+7+6+e+]+]+-+-+-+.+X.X.W.D.D.v.D.w.i.r.c.c.2.{.$.%.j#^.W#C 4.C V >.C C C C C 4.C V 4.V C >.V C >.V C C V V C C >.V C ", -" P / ] { { { ] { { ] { { ] ^ { ] ^ { ^ / ] ^ ^ ] ] { ^ { { ^ ] =.^ _ _ $._ 7.2.2.c.i.c.i.v.w.D.W.W.X..+-+-+:+<+<+6+2+7+7+y+q+q+q+C+D++@S+S+W+X+=@=@r@7@f@f@s@t@s@y@U@y@Q@Q@Q@Q@H#`@$#)#/#/#/#3#5#7#5#5#f#f#f#y#E#u#u#u#N#N#U#U#X#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+~#G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + Y#t@g@f@f@|@=@|@=@=@@@@@W+S+D+D+Z#s+q+o+7+x+e+7+2+<+<+'+-+-+.+X.O.W.D.w.i.K.i.h.c.c.{.{.%._ b ^.B C >.V C C 4.V V C 4.C 4.V V >.V >.C V C V >.>.V >.4.4.>.>.4.W ", -" `#^ { { { ] / { { { ] { { { ] { ^ ^ ] { ^ ] ] { { ] { { { / ^ / =._ _ %.~.{.!.2.2.c.h.h.x.D.D.W.D.X. +.+'+'+]+]+]+g+<+7+7+n+q+s+C+D+D+S+@@@@-@-@=@r@6@|@R#g@t@y@E@y@F@Q@W@W@`@$#`@`@)#/#)#/#4#3#7#4#7#f#f#y#E#t#u#u#u#U# $.$+$@$#$+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + f@y@g@g@f@^@^@/@=@x@S+@@W++@+@C+s+q+q+r+y+7+7+2+2+<+'+]+'+-+ + +O.D.D.D.w.i.c.h.2.c.2.!.%.~.+.$$$$>.C C C C V V V 4.C >.>.>.C C C C >.V V C C C C 4.V C C C V `# ", -" %$] { { ] ] ] { { ] { ^ { { ] ] ^ { { / / ] { ] { { / ] / { { ^ J _ _ l {.{.!.{.h.i.i.w.w.w.D.D.P..+X.'+-+'+<+2+7+g+7+7+q+s+s+C+C+D+D+S+X+@@W+=@/@6@|@|@g@f@s@y@E@E@Q@Q@W@l#W@-#`@)#/#4#4#3#4#3#5#f#f#f#T#E#I#E#J#U#U#U#U# $ $&$*$+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+=$=$=$-$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + ;$t@t@s@s@f@r@^@=@>$W+x@@@S+S+C+K+C+s+s+x+7+7+7+f+<+<+-+-+-+.+X.{+D.P.D.i.h.i.r.j.2.!.{.l {.e ^.^.C >.>.>.>.C C C 4.>.C >.V 4.C C 4.C 4.4.4.4.>.C C V >.C V >.,$ ", -" '$^ ] ] ^ / ^ / { ] ] { ] { ^ ^ ^ { ] ] ] { ^ { ] ] { { ] ] ^ ] ^ _ $.%.l !.2.l.c.h.c.h.D.V.D.D.O..+-+$+-+]+'+b@<+g+7+7+7+r+s+s+s+s+D+S+@@=@@@=@=@/@/@^@|@g@s@t@t@y@U@Q@W@`@$#l#-#)#/#/#/#4#3#3#7#7#f#)$I#y#u#N#N#U#U# $U#!$@$.$~$+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+{$]$-$=$=$=$A@^$=$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + E@t@t@|@f@/@f@=@r@@@S+W+*@S++@D+J+s+q+s+7+7+7+<+]+]+<+-+-+-+$+X.W.D.D.D.i.i.c.c.c.c.!.{.~.] ^.$$>.C V 4.V 4.C V C V C V V 4.V V >.4.>.>.>.C 4.V >.C 4.4.V C V /$ ", -" ] / ^ ^ / { { { ] / { ] ] / ] ^ { { ^ { ^ ] { ^ { ] { { { / ] ^ _ $.l ~.!.{.l.c.c.h.c.h.w.D.D.D.X.X.X..+-+:+]+]+<+2+7+n+y+s+s+D+D+D+D+X+@@($@@/@r@7@f@f@s@s@t@E@E@Q@Q@$#$#W@-#)#/#/#/#4#3#3#a#7#f#y#f#y#u#E#N#u#U#U#.$+$+$~$~$~$_$+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+:${$<$[$}$:$}$-$[$=$A@=$=$]$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + |$E@y@t@s@f@f@/@=@=@@@X+@@X++@C+D+s+q+y+q+y+7+2+6+]+6+]+-+-+.+.+W. +D.D.h.x.v.h.h.l.{.{.{.%.1$^.$$^.C C C C C >.V V C C C V V 4.>.C 4.C >.4.>.V C >.C 4.C V >.>. ", -" 2$^ { { ^ ^ { { ] ] ] { ] ^ ] ] / { { ] ] ] ^ { ^ ] ^ / { ] { =.^ _ %.l _ {.{.2.c.c.h.v.D.D.D.W.D.X.$+-+'+-+'+<+]+e+7+y+7+s+q+D+C+e@D+D+X+X+x@@@/@r@/@|@f@t@t@U@t@M@Q@Q@$#W@W@$#)#)#4#3#5#0#3#f#f#f#E#y#u#E#u#O#O#U# $.$~$&$~$~$3$4$+ + + + + + + + + G+G+=$]$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+5$5$<$5$5${$}$:${$[$[$-$=$:$=$=$=$-$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + ;@E@t@t@s@f@g@f@/@^@=@=@X+S+S+S+D+D+s+s+r+q+7+7+e+6+]+'+'+-+.+X.W.X.P.W.D.v.x.i.r.2.c.{.{.{.K ^.^.$$C V >.>.C C >.C >.V C V V >.C C >.C C V C C >.>.>.V >.>.C V 6$ ", -" =#] { / ^ { ^ / / { ^ { ] { { { { { ] { / / / ] ^ ] { ] ^ ] / { ] ^ _ _ ~.!.7.{.2.h.h.h.w.w.D.W.W.X..+X.-+m+'+6+6+]+2+7+y+s+y+s+Z#C+D+D+S+W+-@r@r@6@|@f@s@t@D@G@F@F@Q@Q@W@$#l#)#`@)#/#4#4#3#3#7#f#f#f#E#u#u#N#U#U#U#U#+$!$~$~$7$3$8$9$+ + + + + + + + + =$G+=$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+0$a$a$a$a$5$a$b$5$5$c$c$5$d$}${$=$:$-$=$=$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + e$E@t@f@t@R#f@r@/@=@=@=@X+S+S+e@C+D+s+q+n+7+7+2+e+<+2+]+'+-+.+.+.+.+X.D.i.v.h.j.c.2.2.{.{.=...^.^.V C C C V C >.>.>.C 4.V V >.C 4.4.V C >.C >.4.C 4.C >.V C 4.4.'# ", -" f$] { ^ ^ ] { { / ^ ^ ] { { / ] ^ { / ] { ] / ] ] ^ { { ^ ] { ] / _ _ #.{.g${.c.2.h.c.w.w.x.D.W. +W.X.'+-+-+<+6+7+2+7+7+q+q+s+C+C+D++@T@-@X+=@=@|@|@f@t@f@s@t@t@G@Q@W@Q@W@`@-#-#/#/#4#4#7#0#3#f#T#)$E#u#u#J#u#U#U#U#!$~$~$~$3$h$7$3$i$+ + + + + + + + =$=$-$]$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+j$k$k$k$k$a$l$0$a$a$a$a$5$a$5$5$5$<$[$}$A@:$[$-$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + H@Q@E@t@t@s@q#f@/@/@/@@@-@S+W+D+C+D+C+s+n+n+7+7+g+7+<+<+:+'+-+-+.+.+X.D.V.D.w.i.j.c.7.2.{.~.9.^.>.C 4.4.C V >.C C C >.V C 4.V V V >.C >.>.>.C C V V C C V >.>.>.m$ ", -" n$^ { ] { { ^ { ] { / ] { { { ] ] ] ] ] { { ^ ] { / ] { ] ^ ] ^ { / ^ _ !.%.{.3.c.h.h.h.i.i.D.D.W..+-+-+'+'+]+:+7+2+g+7+q+q+s+C+J+D+S+X+@@@@=@=@r@f@f@f@|@f@t@E@E@E@W@W@Q@$#$#^#)#/#4#5#s#7#7#f#T#y#t#u#O#u#U#U# $@$&$@$~$7$7$_$_$3$o$+ + + + + + + + + [$}${$c$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+p$q$r$s$s$j$p$k$s$a$q$a$l$l$a$a$5$a$5$}$}$}$A@[$-$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G+n#G+G+G++ + + + + + + + + + + + + + + + |@M@M@t@s@s@f@f@f@=@=@@@@@W+D++@C+D+s+s+s+7+7+2+6+2+]+'+]+-+1+$+W.O.W.D.D.w.h.i.h.c.{.{.{.t$^.^.^.4.>.C V C >.4.4.4.C C >.C >.V C V C >.>.C V C V >.V >.>.C C C n$ ", -" l@{ ^ { / { ^ { ] { { / { { ^ ^ { ] ^ ^ ^ ^ ] ] ] ] { { { ] ^ / / _ _ _ %.{.{.2.2.c.h.h.V.D.D.X. +.+.+'+-+'+]+<+2+2+7+7+7+q+s+C+D+D+S+W+@@-@/@/@/@^@s@g@g@y@t@M@Q@M@W@W@`@-#)#)#D#D#3#4#3#f#f#f#E#E#u#u#O#U# $ $@$!$~$7$~$7$7$3$_$u$.$+ + + + + + + + + {$}$5$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+v$w$w$x$w$p$p$r$w$s$p$s$k$j$k$a$k$a$a$a$b$a$5$}$}$[$}$-$=$=$=$G+G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + y$Q@F@y@t@t@s@g@f@f@=@r@=@@@W+S++@e@s+s+q+q+7+7+7+2+<+<+'+-+$+X.-+X.X.D.D.i.i.c.c.c.2.7.{._ ..a+^.>.C V 4.C C V V C >.C C C C V 4.C C >.C C >.V C 4.V V V C V >.w@ ", -" z$] ] / ^ ] ^ ] ] { { { ] ] { { { { { ] / ^ { ^ / ^ / { { { ^ ^ ^ / _ l %.{.{.!.c.c.c.c.i.w.D.W.P. +.+.+'+'+:+]+<+7+7+7+n+s+s+s+C+D+D+S+X+@@=@=@/@|@f@f@t@t@t@M@y@W@Q@`@W@$#)#/#/#}#}#4#5#7#7#I#)$u#u#O#O#N#U#U#+$+$~$~$7$~$_$3$3$o$A$B$+ + + + + + + + 5$5$5$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C$C$C$v$C$v$r$w$v$D$E$E$w$w$j$k$j$j$k$k$a$l$a$a$5$c$:$[$[$=$A@=$=$G+G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + Q@Q@F@E@t@f@f@|@|@6@/@=@=@S+W++@C+C+C+s+r+y+n+7+g+7+]+]+'+-+-+X.X. +D.D.w.v.i.h.j.l.2.{.!.G...>.B C C V V C >.C C 4.C C C 4.C >.V >.>.C C V >.C C V >.V C C V 4.z$ ", -" d@/ ] { { ^ ] { / { { ] { { / ^ { { ] ^ { ] ] { ^ ] ] / ] { ] { { _ _ l %.!.!.{.c.i.v.i.i.x.D.D..+ +-+-+-+]+]+]+<+7+7+y+q+s+s+D+C+C+X+@@W+@@r@/@7@|@f@t@s@t@y@F@Q@W@W@Q@`@-#/#)#/#/#3#4#0#f#f#T#y#u#E#u#U#U#U#+$~$~$~$7$_$3$3$3$F$F$F$G$+ + + + + + + + 5$a$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C$H$C$C$C$C$I$C$C$v$v$v$v$w$D$w$p$E$k$k$j$k$a$a$a$a$5$5${$:$[$=$-$=$G+G+G+G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + J$Q@E@t@t@t@t@f@|@|@/@/@=@-@X+X+X+C+s+s+y+q+y+7+7+<+f+]+]+m+-+X..+.+D.D.D.x.i.h.c.c.2.{.{.K M ^.>.>.V V C >.C C V 4.C 4.C C C V C C 4.C C V >.>.>.C >.V 4.C V C W ", -" 2#{ ] / / ] { ] { / { { ] { / { ^ / ] ] ] ^ ] ] ^ ] { ] ] ] ] ] { _ _ _ !.{.{.c.c.c.h.i.D.D.D.O.P. +.+.+-+:+<+<+7+2+7+x+y+y+s+J+s++@W+X+W+@@=@6@^@f@f@f@g@t@F@t@Q@W@W@$#`@-#/#)#/#/#4#3#f#f#f#f#E#E#u#O#U#U#U# $&$~$~$7$3$3$A$_$_$A$F$K$L$+ + + + + + + a$a$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+M$N$O$P$H$O$O$O$C$C$C$v$C$v$v$v$v$Q$p$r$q$s$s$q$k$l$a$c$5$d$5$}$:$:$A@R$=$G+G+G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + S$W@Q@U@t@y@t@g@|@|@7@/@=@=@S++@D+D+C+D+C+n+q+7+7+2+<+'+]+:+'+.+X.X. +D.D.w.v.i.h.h.c.2.{.T$[.a+^.B 4.C >.C V V >.C V >.C V C V 4.C C V >.V >.C C C C 4.V C C 4.>.2# ", -" U$] ] { / ] { / ^ ] ^ { { ] / { / ] { ] ^ { { ^ ] ^ { ^ { ^ { / { { _ _ #.!.2.7.c.c.i.i.V.D.D.{+W.-+.+-+-+-+6+g+<+7+7+o+y+s+q+D+D+S+S+W+@@=@=@6@/@f@|@t@s@y@y@Q@W@W@$#W@$#$#^#4#/#4#7#a#f#y#y#f#u#V$O#N#U#.$@$@$&$7$_$7$3$o$A$F$A$W$W$X$m#+ + + + + + + a$k$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Y$P$M$Z$M$M$M$P$O$M$I$C$C$H$C$C$v$v$v$r$w$r$p$r$k$j$k$a$a$5$a$5$d${$[$:$=$G+]$G+G+G+G+G+G+G++ + + + + + + + + + + + + + + + `$W@Q@E@E@E@t@g@s@|@f@|@=@=@S+W+@@S+C+s+C+s+x+q+7+7+2+6+<+'+]+-+.+.+D.W.D.D.w.i.i.2.c.2.{.{.j#^.^.W#>.W#>.4.V C V V C >.C V C >.>.V C >.V >.>.V V V C C V V >.C >.0. ", -" { ^ ] ^ { { / ^ / { / ] { ^ / ] ] ] ] { ^ { / { { { / ] / ] ] / J _ _ _ !.!.{.c.2.h.i.v.i.D.X.X. +.+$+$+'+'+]+2+7+2+n+n+s+J+D+D+D+X+@@@@=@=@/@|@|@f@f@s@t@y@y@Q@W@W@l#l#`@)#/#4#/#3#7#7#f#f#E#E#E#U#O#U#.$U#.$~$7$7$3$3$3$A$F$A$F$W$W$ %+ + + + + + + + s$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+.%+%@%+%+%#%+%Y$N$Y$+%O$M$H$C$I$O$C$C$v$v$v$Q$w$v$p$k$q$j$a$a$a$a$5$}$[$:$]$=$=$G+G+G+G+G+G+G++ + + + + + + + + + + + + + + |#Q@Q@Q@Q@y@t@t@g@|@f@^@/@=@@@=@S+S+X+D+s+s+s+s+7+7+7+f+<+]+]+.+.+X.W.W.D.D.w.i.v.h.2.c.7.{.U+O+......^.$$$$$$4.C C C C C V C C V >.C V C >.C >.>.V C C C C C V C >. ", -" $%{ ^ ^ { { ] { ^ ^ { ] ^ { / ] { { ^ ^ { / / ] ] ] ] { { { ^ { ^ ^ _ !.{.~.!.{.c.c.i.w.w.i.D.D. +.+1+-+'+'+'+2+e+7+7+y+s+r+J+K+D+D++@X+=@@@=@6@|@f@f@s@t@G@F@Q@Q@W@$#`@-#-#/#4#4#3#3#f#7#t#f#E#%%E#N#U# $@$@$~$h$7$3$3$_$&%A$A$K$W$K$ %*%+ + + + + + + s$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+=%@%-%;%@%@%Y$>%Y$Y$#%+%Y$N$Y$Z$M$O$C$C$,%v$v$C$Q$w$r$p$q$k$k$l$a$a$5$[$}${$[$-$=$=$G+G+G+G+G++ + + + + + + + + + + + + + + + l#Q@W@M@M@t@y@t@t@f@f@^@/@=@@@@@X+X+C+C+q+s+s+y+7+7+7+]+<+<+'+'+.+ +.+W.D.D.w.h.h.c.2.{.!.b '%......$$W#$$$$W#C $$>.4.V >.V C 4.V C C V C C C C 4.C V C C V 4.C C )% ", -" { / { ] ] ] ^ ] { ] ] / ^ ^ { / { ^ { { ] ^ { { { { ^ / ^ ^ { ] ^ _ _ ~.$.{.2.7.c.c.h.w.D.x.D.X.D..+.+'+]+:+]+2+2+7+7+r+q+s+s+C+X+S+S+@@=@=@/@/@f@f@s@t@t@F@M@Q@W@W@)#$#`@)#D#/#7#7#5#f#f#y#E#u#E#U#U#U#!$&$~$~$7$7$_$_$_$A$!%W$F$W$ %X$~%+ + + + + + p$Q$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+{%]%-%{%{%{%-%-%@%@%@%@%.%Y$@%+%+%+%N$O$M$P$C$C$C$C$v$v$w$p$s$j$q$a$a$5$5$c$5$}$[$=$=$=$G+G+G+G++ + + + + + + + + + + + + + + + l#Q@Q@Q@U@E@G@t@f@f@|@r@=@=@@@W+X+X+D+C+J+s+r+r+7+7+7+6+<+:+'+'+-+.+ +W. +x.V.w.h.c.c.{.!.=.^%....../%$$W#W#$$^.W#$$$$C >.C V >.V 4.V C >.C >.>.>.C V V 4.C V V C >. ", -" b.^ / { { { ] ^ { ] ^ ] / ] ] ] { { { ] { / ^ / { ] ] { ] ] ] ] ] _ _ $.l ~.d+2.c.h.i.i.V.D.D.W..+ +-+.+-+]+<+<+6+7+7+7+n+s+q+K+C++@S+@@X+@@/@/@f@|@f@s@y@M@y@Q@Q@W@$#$#-#/#/#/#4#7#5#f#f#E#u#E#E#O#O#U#.$~$@$7$~$_$_$3$A$_$(%K$ %W$X$ %_%:%+ + + + + + v$v$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+<%]%[%[%}%[%{%-%[%-%-%-%=%@%@%@%|%+%Z$#%+%M$#%I$M$C$C$C$C$Q$w$r$r$q$j$k$a$a$a$}$d$[$-$-$=$-$G+~#G++ + + + + + + + + + + + + + + 1%W@$#Q@Q@y@Q@t@t@f@|@|@|@^@=@=@@@W+S+C+C+C+q+y+o+7+7+]+<+]+]+'+-+-+X.X.W.D.V.i.h.h.r.2.{.2.~ 2%O+..^.B B W#B B ^.^.$$W#W#B V 4.>.C C 4.C V 4.4.4.C C >.V 4.>.C C C b. ", -" 3%{ / / ] ] / ^ ] { { { ] { { { { ^ { ^ / / ] ] ] { / ^ { { { { { { _ _ !.{.!.2.2.c.i.h.w.D.D.O.W..+-+'+-+:+<+<+2+7+7+y+s+s+C+C+S+X+W+-@W+=@=@|@|@s@t@t@t@y@Q@M@W@Q@W@$#`@)#/#4#4#0#f#f#)$)$y#u#O#U# $@$.$~$~$h$~$3$3$_$A$W$W$K$ %X$X$_%4%5%+ + + + + + v$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+6%6%7%<%}%<%}%8%[%}%}%[%=%-%-%-%@%@%@%@%Y$+%+%+%N$O$O$H$C$C$v$v$w$E$E$q$q$k$a$5$c$d$[${$=$=$G+G+G++ + + + + + + + + + + + + + + 9%`@W@Q@Q@F@E@y@t@f@R#|@r@r@=@=@x@W+D+D+D+C+s+q+n+y+7+e+2+<+:+:+-+-+.+X.O.D.D.V.h.h.r.r.2.{.K M ..../%^.W#W#W#W#B B W#W#W#B $$C 4.>.4.V >.4.V C C V >.4.4.V C C V 4.0% ", -" 2#] { ] { ] { { { { ] { { { { / ^ ] ^ ] { ^ { { { ^ ^ ] { ] ^ ] ^ =._ _ !.#.{.2.c.C.c.h.h.w.D.P.D.X.X.-+'+)+6+2+f+e+n+r+x+s+K+D+D+S++@@@W+=@r@|@=@f@s@s@t@E@Q@a%Q@Q@l#$#)#/#/#4#3#5#0#f#f#y#E#E#E#b% $@$.$~$~$~$7$3$A$A$A$F$W$!%W$c%X$_%4%_%d%+ + + + + C$M$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+e%7%f%g%6%e%7%f%8%8%6%f%8%[%]%-%}%-%=%h%@%@%@%+%Y$#%P$N$O$C$C$v$v$v$w$r$k$j$s$l$a$a$}$:${$]$=$G+n#+ + + + + + + + + + + + + + + L$$#$#Q@W@M@y@E@t@t@g@q#/@|@=@@@X+X+S+S+D+D+s+J+n+y+7+e+f+<+'+'+'+-+$+W.X.{+V.D.v.i.c.2.c.l.i%,#,#......^.^.W#W#$$$$$$W#W#^.^.W#$$C >.C C 4.4.>.C >.C V V >.>.4.C V C j% ", -" a / { { { / { ] / ^ { { ] ] / ^ ] ] { { { ] { { ] ] ^ { { ] ] { J ^ _ _ %.{.{.2.c.h.h.h.v.D.D.D.W.-+.+'+:+]+<+6+6+7+n+q+s+C+K+C+D+D+D+@@@@=@/@|@f@|@s@t@y@F@M@W@Q@W@$#`@/#)#3#4#5#3#f#f#t#u#u#E#O#U# $~$.$~$~$_$_$A$A$A$W$F$F$K$X$X$_%k%4%4%l%+ + + + + H$M$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+m%n%e%m%e%m%e%e%7%e%e%e%f%8%<%]%}%[%]%o%=%-%-%@%@%+%@%#%N$Z$O$I$C$H$v$v$w$r$p$k$j$a$a$5$<$[$}$}$]$=$+ + + + + + + + + + + + + + + ;@)#$#r#l#Q@Q@t@E@y@L@s@f@|@r@@@x@@@W+S+D+C+D+q+r+y+7+7+g+]+6+]+'+-+-+X.X.D.D.D.i.i.c.c.2.l.{.2%^%..p%..^.B $$B $$^.^.$$B $$W#$$^.W#C V C >.C >.>.V >.C >.C >.>.4.>.C q% ", -" ] ^ ^ { / ^ ] ] { ^ { ] { { ^ { { ^ { / { { { / ] { / ^ ^ ] ] { ^ _ _ l {.!.l.2.h.r.i.K.V.D.D.O..+X.-+-+:+]+]+7+6+x+n+q+q+C+D+D+X+S+S+W+=@^@7@f@f@g@t@y@t@Q@W@W@W@W@`@^#)#)#/#7#7#0#f#y#y#u#u#O#U#U#U#!$7$~$~$7$_$A$A$F$F$W$W$ %X$X$4%4%r%r%s%+ + + + + O$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+m%t%m%m%m%m%n%m%e%e%e%e%g%e%g%7%7%6%8%f%]%[%-%<%@%-%@%@%+%#%#%+%N$N$C$C$x$D$v$E$w$k$a$l$a$u%c$[$=$]$+ + + + + + + + + + + + + + + + -#$#`@Q@Q@Q@y@F@y@t@s@g@f@7@r@V#X+=@S++@D+K+s+q+q+y+7+7+2+]+]+]+-+$+X.X.X.D.D.h.w.c.h.c.2.!.M.2%....v%^.$$$$B W#$$W#^.W#$$^.W#W#$$$$V >.C C C V C C V V 4.>.4.>.4.C C ", -" w%] { ^ { ^ { ^ ] ^ / ^ / { { { { ] ] { ] ] ^ ] { { { ^ ] ^ { { =.^ _ _ %.%.{.c.2.2.r.x%i.w.D.D.X..+.+-+'+Z+'+6+<+7+7+r+y+q+K+C+S+X+W+@@=@=@=@/@f@t@s@t@t@Q@Q@W@Q@l#$#`@^#4#4#/#4#7#7#T#I#E#N#u#u#U#U#+$&$~$y%7$z%_$F$A$F$!%X$X$_%_%A%A%r%r%B%+ + + + + + #%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C%D%D%E%F%G%m%H%m%m%m%m%n%e%e%e%e%e%7%8%7%6%[%]%=%]%-%@%@%@%#%Y$M$M$N$C$I$v$v$p$w$r$w$k$a$5$a$}$c$A@:$+ + + + + + + + + + + + + + + a%$#$#$#Q@W@E@Q@t@L@s@g@f@/@|@>$=@@@X+D+S+C+s+q+s+n+n+7+7+f+'+m+-+-+-+X.W.D.D.D.v.h.j.c.c.{.U+'%....p%..W#W#$$^.B W#$$^.W#$$W#$$^.$$^.B >.C V C C C >.C C >.>.C C 4.4.I% ", -" J%^ { ] ^ { { / ] { ^ { / { ^ / { { ] ] { ] ^ ^ { ] { ] { { ^ ] ^ ^ _ %.$.#.{.c.2.2.h.h.w.D.D.O.W. +.+'+:+:+b@e+2+7+x+r+y+J+C+C+D++@@@x@=@=@=@|@f@t@f@t@F@F@Q@W@$#W@)#-#D#)#4#3#7#f#y#I#I#u#N#U#U#@$.$ $~$~$3$_$A$_$F$F$W$X$X$X$X$4%K%K%r%L%r%+ + + + + |%@%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C%M%G%N%F%M%O%G%F%G%E%E%E%m%E%H%m%e%e%e%e%e%7%6%8%<%[%[%{%-%@%@%@%+%+%M$M$O$H$C$v$v$E$w$j$s$0$a$5$<$:$:$+ + + + + + + + + + + + + + + P%/#-#$#$#Q@W@F@y@t@t@f@f@f@7@=@@@x@@@W+D++@C+q+s+n+o+7+2+2+]+'+'+'+.+-+D.X.D.D.i.w.i.c.2.!.] ,#......^.v%^.^.^.$$^.$$$$^.B $$W#B ^.$$B V C C >.4.C 4.>.4.C V V >.C 4.Q% ", -" { ] / ^ ] { / ^ ] ^ { { ^ / { ] ^ { / / ] { ] ^ ^ ] { { ] ^ ] ^ ^ / ^ ~.l !.2.c.c.c.h.i.D.D.D.O..+X.$+-+]+2+]+6+e+7+x+q+q+q+D++@+@D+@@=@=@=@^@/@f@t@t@t@F@Q@W@W@$#l#`@)#/#4#5#0#f#f#T#y#E#O#E#U#U# $&$@$~$7$3$_$A$A$W$F$!%K$X$_%_%4%r%r%r%R%S%+ + + + + .%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C%T%C%T%T%C%T%M%N%O%C%N%F%D%F%E%m%m%H%n%e%e%e%7%f%6%f%6%{%{%-%-%@%@%+%@%+%Y$M$I$C$v$v$r$r$E$s$k$0$a$5$}$+ + + + + + + + + + + + + + + U%^#$#6#W@W@Q@Q@E@t@s@s@f@^@=@=@=@=@@@S+S++@C+C+q+s+y+7+<+2+<+]+'+-+X..+O.W.W.x.D.v.h.h.C.c._ '%'%2%..^.B B ^.$$W#^.W#$$$$W#^.W#$$$$W#W#B ^.V >.C V C 4.4.4.V C V V C V ", -" [+{ ^ ] { ^ / ^ { { ^ ] ^ ] ^ ] ^ { ] ^ / { { ^ ^ ^ / / { ^ / ] { / ^ _ !.!.7.{.2.c.c.i.i.h.D.W.X..+-+$+)+]+]+2+]+2+n+y+s+J+C+C++@T@@@W+=@=@6@f@f@s@s@t@E@M@E@V%$#W@-#)#/#W%5#3#7#f#f#y#I#N#U#O#U#.$&$~$~$~$3$A$A$F$F$F$F$X$_%X$4%k%4%r%r%r%X%Y%+ + + + + {%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+T%Z%`% &T%T%T%T%T%T%T%T%C%O%O%F%G%D%G%G%E%m%m%e%e%e%7%7%7%7%<%[%-%h%-%@%@%+%P$P$N$C$v$v$v$w$r$s$j$a$a$5$+ + + + + + + + + + + + + + + Y#)#.&)#`@W@r#Q@F@F@E@t@s@f@|@/@=@@@=@W++@D+C+D+s+q+n+x+7+g+<+]+:+-+-+.+X.X.W.D.x.D.h.h.c.2.7.+&..2%..../%$$$$^.W#$$W#W#W#W#W#$$$$$$W#W#$$B 4.C >.4.V C V 4.C C C V C V [+ ", -" w+^ { { { ] / ] / ^ ] { ] ] ] ] ^ ] ] { / { { ^ / ] ^ ^ ] ^ { { ^ J ^ _ !.{.!.2.2.2.i.i.v.w.D.{+X.X..+'+'+]+]+7+e+7+7+y+s+s+C+D+D+@@@@=@@@/@^@|@f@R#s@t@t@Q@Q@`@$#6#`@-#/#W%}#3#5#f#y#I#E#O#U#N#U# $~$@$h$3$3$3$u$F$F$F$X$X$X$_%A%4%A%r%r%@&#&$&+ + + + + [%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+%&&&`% &*&`%`%`%`%Z%`%=&T%-&C%T%O%D%F%C%E%E%m%t%m%n%e%e%e%7%8%<%o%{%-%-%@%@%Z$O$N$N$H$I$v$x$w$w$E$k$s$5$5$+ + + + + + + + + + + + + + h@/#)#-#`@$#Q@W@y@F@t@t@t@f@f@/@=@=@@@X+D+S+C+C+s+s+s+7+7+7+]+'+'+'+-+1+X.W. +D.D.w.i.h.h.2.2.U+'%2%......B W#$$$$$$$$^.$$W#W#^.$$^.^.W#^.^.$$$$4.4.V V >.4.>.>.>.C V C m$ ", -" ] { { / ] { { { { { ^ / { ] { ] { { / ^ ^ { / / ^ / / ^ { ^ { ] ] =._ $.%.!.{.{.c.i.h.D.x.D.P.W.W..+X.'+)+'+]+2+7+n+n+s+q+C+C+D+S+*@@@=@=@/@f@f@f@t@t@E@U@W@Q@$#`@`@-#)#/#4#5#7#f#y#u#E#u#N#U#U# $&$@$~$h$_$A$_$F$F$!% %X$X$_%;&K%K%r%B%B%>&,&'&+ + + + <%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+)&%&)&!&%&&&%&&& &~&*&*&`%`%T%T%T%C%C%C%M%M%F%G%m%n%n%e%e%7%7%6%[%}%<%<%-%@%@%|%Y$+%H$O$I$v$v$p$q$s$q$k$a$+ + + + + + + + + + + + + + + /#/#`@-#`@W@Q@Q@y@t@t@t@f@f@^@r@/@=@X+W++@+@K+q+q+y+o+7+7+f+]+]+]+-+$+.+.+.+D.D.w.i.i.h.c.{.{&]&+.......$$$$$$^.W#W#^.$$^.W#W#W#^.B $$$$^.^.B ^.V C >.C V C V >.>.C >.>. ", -" ^&^ ^ { { { { ] / ] { ] { { / ] / { { { / { { ] ] { ] / ^ ] ] { { _ / _ %.l {.c.2.r.h.h.v.w.D.W.X.X..+-+-+<+:+2+2+7+7+n+q+s+D+D+C+W+X+x@=@=@|@f@|@f@f@t@U@U@W@l#`@`@)#)#/#3#3#a#a#f#y#T#y#u#U#U# $!$~$~$7$8$_$_$_$F$F$/&*%X$X$4%A%4%r%r%@&,&,&(&*$+ + + + 8%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+_&_&&&_&_&&&&&)&)&&&%&%&)&*&~&~&T%T%T%T%C%M%M%F%G%G%m%m%:&m%e%g%f%7%}%[%{%{%-%@%|%#%N$M$I$C$C$v$w$p$r$l$k$+ + + + + + + + + + + + + + + 4$4#-#/#6#$#W@Q@F@E@y@t@g@f@f@=@=@=@-@@@D++@+@D+C+s+q+7+7+7+]+]+]+:+.+.+ +O.W.D.V.h.i.h.c.c.` 1$<&'%..^.$$^.^.W#W#W#$$W#^.B ^.^.W#$$$$$$$$B B C C >.V 4.C V V C C C V C %@ ", -" [&/ { { ^ ^ { ^ ^ { { { ] ^ ^ { ^ { ^ { { ] / { { ] { { ] { { / { ^ _ _ _ !.2.{.c.j.h.i.x.w.D.D..+X..+-+]+:+'+]+7+7+x+s+q+q+s+D+D++@X+@@=@=@6@/@f@s@y@F@F@F@W@l#l#-#)#/#/#4#7#3#f#f#E#E#u#u#U#U#U#@$~$7$3$8$_$A$!%F$K$ %X$4%4%_%A%B%B%B%R%X%,&}&s%+ + + <%7%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+|&_&|&|&|&1&_&_&2&3&&&!&!&&&)&`%!&`%Z%T%`%T%T%T%C%N%M%H%t%m%m%e%e%e%6%f%[%[%o%-%@%+%>%+%O$O$C$v$v$v$r$q$k$+ + + + + + + + + + + + + + + b#/#)#)#$#`@`@Q@M@y@t@t@s@f@f@|@/@=@@@@@X+D+C+D+C+q+n+y+7+6+6+]+:+]+-+1+X.O.O.D.D.h.i.c.i.c.!.]&2%M ......^.$$$$$$B $$W#B W#^.W#B W#W#$$W#$$$$W#C C >.>.V V C C C >.>.V 4& ", -" f ^ { / { ^ / { ^ ^ / { ] { { ^ ^ / ^ ] { / { ] ^ ] / ] { ^ ] ] / ^ _ $.l !.{.2.2.h.h.i.i.D.W.O.X.-+l+-+'+'+<+2+g+7+y+s+s+s+D+D+S+X+@@=@=@=@^@f@g@t@t@t@F@Q@Q@$#$#-#-#/#4#3#3#f#f#u#)$u#u#N#U# $~$&$~$3$_$z%_$A$F$!%W$X$_%X$4%_%A%r%@&B%,&@&5&}&+ + + + e%8%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+6&7&|&|&|&|&|&|&|&_&|&|&_&2&&&8&3&&&%&`% &`%`%`%=&C%O%M%G%G%m%n%m%m%e%7%7%7%[%}%-%-%@%@%@%#%+%O$H$v$v$p$w$r$+ + + + + + + + + + + + + + + y$/#/#$#`@$#W@W@Q@U@y@t@f@g@|@f@r@=@=@X+S+S+C+C+C+s+n+q+7+2+g+<+6+]+'+X..+W. +W.D.w.i.h.h.c.{.+&1$1$2%2%....$$p%W#^.$$$$W#$$W#^.W#^.^.W#$$B ^.^.W#V C C V >.C V C 4.C C `+ ", -" { ^ / { { ] { / { ] { { { ] / ] { / / / ] / ] ^ ^ ] ] / ^ ^ { { { / _ _ !.{.l.{.2.i.h.x.x.w.D..+.+-+'+-+:+]+7+<+7+r+s+q+s+D+D+9&X+X+@@=@=@7@f@s@s@S#t@y@Q@Q@l#`@`@`@^#4#3#4#7#f#f#T#)$E#O#U#U#&$&$~$~$~$3$_$F$F$W$0&a&X$_%4%r%A%r%r%@&R%,&5&}&b&+ + + + g%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+c&d&d&e&f&c&6&c&c&|&c&c&g&|&|&|&_&_&!&&&_&!&)&`%`%T%T%T%T%C%C%C%E%G%m%e%e%e%7%8%7%]%=%-%-%@%#%Z$P$O$O$C$Q$r$w$j$+ + + + + + + + + + + + + + h&}#4#)#`@$#r#W@F@Q@y@F@s@f@s@|@/@/@=@@@@@T@D+D+C+C+q+q+x+7+2+2+]+'+]+.+-+X.D.D.x.x.x.c.c.2.c.t$1$2%2%2%......v%^.B W#$$$$$$B $$$$$$^.$$W#^.$$$$W#W#C V 4.4.C >.V C V C C ", -" F ^ ^ { ] { ^ { ] { ^ { { ] ^ { / ] ] / { { ] ] / ] { ] { { ] ^ ^ / ^ _ _ ~.{.l.2.2.h.h.h.D.D.W.P..+-+1+'+'+<+2+2+7+n+q+s+C+D+C+D+X+@@=@V#6@f@/@f@t@t@G@t@a%W@`@-#)#-#/#}#3#3#3#f#E#)$E#u#O#U#U#@$@$~$7$7$8$A$A$F$W$K$ %_%4%4%r%r%r%@&@&X%(&,&}&i&+ + + e%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+j&j&f&j&e&f&j&6&6&7&6&7&7&|&|&g&|&|&|&2&_&)&8&_&~&%&`%*&T%T%C%C%F%O%F%m%n%m%e%8%7%8%[%-%o%-%|%+%#%P$O$O$C$v$x$r$+ + + + + + + + + + + + + + + 4#D#/#)#`@W@W@Q@E@t@t@t@t@f@f@7@^@/@=@X+S++@S+D+C+s+q+n+7+2+g+<+]+'+$+-+$+X.O.P.w.x.i.h.2.7.b 1$^%'%2%2%/%v%....^.B W#B B ^.B $$$$W#$$^.B ^.W#$$$$V >.>.>.C >.>.V V 4.4.Y ", -" : / ^ { ] / / ] ^ ] { ] ] / ^ / ^ { { ^ { { ^ { { { ] ] { ^ ^ { ] _ J $.%.{.!.{.c.c.h.i.v.V.D.D.X..+|+-+<+'+2+6+<+x+y+q+q+s+C+D+D+W+X+=@=@^@^@s@s@s@t@E@E@Q@W@W@`@-#/#)#/#5#3#0#f#f#u#u#O#u#U#!$&$~$~$7$_$3$A$!%K$ %X$X$_%_%4%A%r%B%R%B%,&X%}&}&k&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+l&l&l&l&l&l&m&f&j&j&l&n&f&e&e&n&6&7&|&c&|&|&_&_&&&&&)&)&*&`%`%T%T%C%C%C%D%G%m%n%e%e%8%<%<%o%-%@%@%.%+%M$O$O$C$D$w$+ + + + + + + + + + + + + + + 7#/#/#/#$#l#$#Q@Q@F@F@y@t@g@f@|@^@/@=@=@W+S+C+C+C+q+q+n+7+6+g+6+'+'+-+.+-+X.X.D.x.K.i.h.j.c.] 1$1$o&2%2%2%../%p%/%$$$$$$W#^.$$$$^.W#^.W#$$$$$$^.^.V V C >.4.V C >.V C 4.K@ ", -" S ] / { { { { / { { { ] / ] { ^ ] ^ ^ { { ^ { { { ] { ] ^ ] { ^ / ^ _ _ %.%.2.2.2.c.h.v.D.D.D.D.X.$+.+-+]+'+]+2+7+7+n+y+s+K+e@+@+@W+x@=@/@/@|@s@t@f@t@G@F@Q@$#$#`@-#)#/#4#3#f#f#)$E#u#O#U#U# $U#&$~$7$_$_$A$F$F$!%W$X$X$_%4%r%A%r%B%X%}&}&}&}&p&q&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+l&l&r&r&r&s&r&r&l&l&t&l&t&n&j&j&e&j&7&d&c&c&|&g&_&_&_&&&&&%&)&`%T%T%C%C%M%F%E%E%m%e%7%8%8%8%<%{%@%@%@%Z$Y$N$C$C$Q$+ + + + + + + + + + + + + + + u&4#/#)#$#v&`@W@W@Q@M@t@L@f@f@f@/@6@=@@@W+S+D++@C+q+s+n+7+2+7+g+<+)+-+.+.+.+O.D.D.D.x.h.i.c.%.1$<&'%o&2%../%/%p%/%p%p%^.$$$$$$$$$$$$^.^.^.W#$$$$$$W#>.V C >.>.V V C 4.C D ", -" { ] { ^ / { / ] ] ^ / ] ] ^ ^ ] ^ { ] ] { ] { / ] { ^ { { / ] ^ { ^ _ #.!.!.2.3.c.j.c.w.D.w. +X.X.1+-+-+<+]+<+6+7+n+n+s+q+J+D+D+W+X+W+@@/@|@f@f@g@t@E@y@F@Q@W@$#`@)#/#4#4#4#7#f#)$I#E#u#U#U#.$@$~$~$_$_$o$_$F$F$F$X$X$_%_%4%4%r%B%,&X%}&}&}&}&w&x&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+y&z&z&r&z&z&s&s&z&r&l&r&l&r&l&m&t&j&j&e&j&6&c&c&|&|&_&|&2&&&!&`%%&`%Z%C%C%C%G%E%n%n%m%e%e%7%}%]%=%-%@%@%+%N$O$C$v$+ + + + + + + + + + + + + + + #$4#4#/#)#)#$#`@W@Q@E@t@y@t@g@|@|@=@=@=@=@X++@C+D+q+s+q+x+7+7+7+]+m+-+X..+X.X.O.D.i.i.h.c.C.%.]&<&<&2%2%2%/%/%/%v%....p%$$B W#W#$$$$^.^.W#^.^.$$^.$$$$C 4.V C 4.>.C C V C ", -" A&] / ^ ] ^ ] { { ] { / { { ] / ] { ] { ] ^ ^ ] / / / ] { ] ] ^ { ] _ _ l _ {.2.{.C.h.j.i.w.D.W.O.X..+-+'+]+<+7+g+7+y+q+s+C+D+D+X+D+X+=@=@^@/@g@f@f@t@t@Q@W@W@W@l#)#)#4#/#4#f#f#f#I#)$V$O#U#.$@$@$~$~$_$3$A$_$F$K$X$ %_%_%_%r%r%B%X%,&B&(&}&}&C&p&D&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+y&E&F&G&F&z&y&H&z&z&y&z&s&r&I&r&r&r&f&j&j&j&j&6&c&c&c&|&J&|&!&_&%&&&T%T%T%M%C%E%D%F%m%e%e%e%8%8%[%[%h%@%+%Y$O$N$C$+ + + + + + + + + + + + + + + K&3#/#/#)#-#`@H#`@Q@Q@Q@t@t@f@|@|@/@=@W+x@W+D+D+D+C+s+s+r+7+2+6+]+'+'+'+.+.+.+W.O.x.i.i.i.c.2.L&<&o&2%2%/%/%../%/%..v%p%^.^.^.$$B $$$$B W#W#^.W#W#W#^.C C >.4.4.C C C >.C M& ", -" [&{ { { ] ^ / / ] ] ^ ^ ^ ^ { / / ] { { { { ] ] / ] { { { / { ] ^ { ^ %.l {.{.7.2.c.c.i.h.D.O.D. +X.-+.+:+]+g+2+7+7+y+q+q+C+D+S+*@W+@@=@^@6@f@f@t@t@M@F@F@Q@W@W@-#`@4#}#3#4#7#f#y#E#E#N#N#U#U#@$&$7$7$3$3$A$F$!%/&K$X$_%A%r%r%r%B%B%@&N&}&w&b&p&p&O&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+P&P&G&Q&P&F&P&F&P&G&F&R&y&z&H&z&z&r&S&l&r&l&f&l&f&e&c&c&c&c&|&_&3&)&&&!&~&`%T%T%C%G%F%G%m%e%e%7%8%6%<%-%-%@%@%Z$N$I$C$+ + + + + + + + + + + + + + T&3#3#4#D#)#)#$#Q@W@Q@M@F@t@g@g@|@=@=@@@=@X++@D+C+C+s+r+q+r+2+]+6+]+:+-+1+.+.+O.P.x.D.i.i.j.2.U+]&]&]&o&2%U&/%/%../%/%..$$B B ^.^.^.B ^.$$$$^.B $$W#$$$$V V 4.V >.C >.C V V& ", -" _ ] { / / { { { { ] { { / { / / ] { ] ] { / ] ^ ] ] ^ { { { { ^ ^ ^ _ _ #.%.2.2.2.i.c.w.x.x.D.X. +$+-+'+-+2+]+2+7+7+q+s+C+C+D+S+S+W+@@@@=@|@|@f@s@y@E@Q@M@Q@W@W@`@-#)#/#3#0#7#f#E#E#E#U#O# $!$~$~$7$3$_$o$A$F$F$X$c%X$_%A%A%r%@&B%B&,&}&}&W&X&p&Y&+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Z&Z&Z&Z&Z&P&Z&R&Z&G&Z&P&P&F&R&F&F&z&r&r&s&S&l&l&t&l&j&f&n&|&|&|&|&3&_&%&&&`%`%T%T%C%F%C%m%m%m%e%e%7%[%<%{%-%@%#%+%Y$H$+ + + + + + + + + + + + + + + 4#3#4#/#)#`@W@Q@W@M@Q@t@t@t@f@f@f@|@r@X+X+X+D+C+C+Z#s+r+7+7+7+]+]+'+-+-+-+X.W.D.D.v.i.c.2.c.U+1$<&1$2%2%2%/%../%p%v%../%$$$$W#$$$$^.W#$$W#$$$$^.B $$V C V 4.C >.C 4.C 4.B ", -" { ^ / { ] ] { { ^ ] { { ] ^ ^ ] ^ { ^ ^ { ] { ^ ] { { { / / { / ] ^ ^ _ _ {.!.l.c.h.h.h.w.D.D.O..+-+.+'+'+'+<+2+7+n+o+s+J+s++@S+W+X+@@=@^@^@f@s@t@t@t@Q@M@$#$#v&`@-#D#3#4#7#f#f#t#E#O#U#U#.$!$@$~$h$7$_$u$!%K$ %X$X$_%k%r%r%r%`&B&@&,&}&b&}&p&p&p&+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+ * * * * * *Z&Z&Z& *Z&Z&Z&.*Z&P&G&H&H&z&E&z&s&r&l&l&l&t&n&d&f&|&g&|&_&_&2&%&~& &=&T%C%F%D%E%n%m%e%7%f%]%[%=%@%@%@%N$M$+ + + + + + + + + + + + + + + 7#5#4#)#/#/#`@W@Q@F@Q@t@t@t@R#|@^@/@=@@@@@S+D+C+D+C+s+q+n+7+g+f+'+]+'+'+.+.+W.D.D.w.w.h.c.2.( +*o&o&^%2%2%/%/%..v%v%p%../%W#$$$$^.^.B W#W#$$$$B W#B $$4.V >.C C C C 4.4.C ", -" @*] / ] { { ^ ^ ] ] ^ { { { ] / { { ^ ] ^ ] / ] { { / { { ^ / { ] { ^ _ $.{.{.{.{.2.h.j.x.w.D.O..+X.-+-+m+<+]+2+2+7+x+q+q+s+K+D+S+T@W+@@=@/@/@f@g@t@y@M@Q@Q@l#l#-#-#)#)#4#5#a#f#)$E#I#u#U# $U#~$~$7$8$7$o$u$F$W$X$X$_%_%A%K%r%@&B%@&,&B&}&C&p&p&p&W$+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+#*$*%*%*&*%*$*#*$* * * *$* * *Z&Z&Z&P&P&R&R&R&H&r&r&r&l&l&j&j&7&n&c&**|&_&_&2&%&*&`%T%T%C%O%O%E%m%t%e%e%8%}%{%{%-%@%Y$Y$+ + + + + + + + + + + + + + + =*3#4#/#/#-#)#$#l#Q@F@U@y@g@f@f@f@r@=@=@S+X+@@S+D+Z#s+q+q+7+2+2+6+]+'+-+-+X.O.O.D.i.h.i.i.r.=.-*]&]&2%2%..../%/%..v%p%/%..$$B ^.$$B ^.^.W#W#^.^.$$$$B C C C V C C C C C 4.;* ", -" >*^ ] { { { ^ ] { / ^ { ^ ] ] { ^ ] { ^ ] { { ] { ^ { ] / { { ] ^ _ _ _ ~.%.{.2.2.c.j.i.h.D.P.X.W.,*.+'+]+'+<+6+7+r+y+s+q+s+D+D+D+X+x@=@=@f@f@g@g@y@F@U@F@Q@$#W@$#)#/#3#'*4#5#f#f#u#E#u#U# $.$!$~$7$8$3$A$A$W$!%W$_%X$_%r%r%r%B%B&@&}&,&}&C&b&p&Y&)*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+%*!*#*&*%*%*~*%*&*~*#*&*~*&* *$* * *.*Z&.*P&z&P&z&s&z&r&s&r&l&e&j&f&7&6&|&_&_&!&&&)&~&T%T%{*C%G%G%m%m%e%7%f%<%[%-%@%@%Y$]*+ + + + + + + + + + + + + + ^*3#4#/#)#)#-#$#$#Q@E@E@E@t@f@|@f@r@/@=@@@@@X+D+D+C+q+y+7+n+7+]+]+]+m+-+-+X.W.D.O.x.w.i.h.h./*+*-*]&'%2%U&U&/%/%....p%v%v%B $$$$^.$$^.$$^.$$W#$$^.^.$$V >.C 4.V >.4.>.4.V (* ", -" _*{ ] ] { ] { ^ ] { ] / { / ^ { ^ ] { { ] ^ { { ] { ^ { ^ { { ^ { / ^ _ l {.{.2.c.c.c.i.w.v.D.W.X.-+-+'+'+]+]+<+7+7+7+y+C+C+D+e@X+W+@@=@=@/@|@f@t@t@y@E@F@W@$#$#$#)#/#4#4#3#0#y#f#t#u#U#U#@$U#@$~$h$y%o$u$F$W$W$X$c%4%_%A%A%B%B%X%X%}&b&p&w&p&:*<*[*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+}*}*!*}*|*|*1*|*%*1*!*%*#*#*$* *2* * *3*Z&Z&Z&Q&G&F&R&z&s&s&r&r&j&e&j&n&c&c&|&|&&&&&!&`%T%T%C%C%G%H%m%m%e%7%7%<%-%-%@%+%4*+ + + + + + + + + + + + + + 5*f#5#4#4#)#)#$#W@Q@F@E@t@y@f@s@f@=@/@=@@@X+W+D+D+D+C+r+o+7+7+7+2+]+'+-+.+.+.+O.D.V.x.i.c.c.!.+*1$1$<&'%2%....../%/%../%v%p%..$$^.$$B ^.W#W#^.W#$$B B W#V >.C 4.C V V C C 6* ", -" P { { { { ] { ^ / / ^ { { { { { / / { ] { ] ^ ^ ] ] ^ ^ / { ] { { J { _ {.!.{.2.2.c.c.h.D.D.O.X.X.-+.+'+)+:+<+7+7+7+q+s+s+K+D+D+@@=@=@=@=@|@f@|@g@t@G@F@Q@W@$#$#`@)#/#/#4#a#f#)$u#I#J#U#U# $+$~$~$7$3$3$&%W$W$W$X$X$_%K%r%r%B%@&X%5&}&}&X&C&p&:*Y&x&+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+7*}*7*7*7*7*7*7*}*7*|*|*}*1*!*%*%*~*2*&*#* * * *Z&.*Q&R&F&G&y&r&l&l&l&e&f&c&c&|&|&|&&&2& &*&`%T%C%C%G%H%t%m%e%e%6%[%{%-%@%8*+ + + + + + + + + + + + + + ;@3#5#3#/#)#`@$#V%r#Q@Q@t@t@s@g@f@=@=@=@=@x@D+S+D+D+J+s+s+7+7+2+]+<+'+-+-+.+.+X.O.D.D.v.i.r.c.+&]&1$2%2%..2%../%/%v%..p%..v%W#W#$$W#^.W#$$W#$$^.B $$$$$$$$V C C V V C C >.W ", -" ] { ^ ] { { { { { { { { / ^ { / ] { { { { { ^ ^ ] ^ { { ] ] ^ / { / _ $.%.!.{.{.2.i.h.i.K.D.O.X.X.X.-+-+]+<+6+7+7+x+y+q+C+s++@D+W+@@@@=@r@/@f@9*s@y@F@F@W@$#W@)#^#/#4#4#7#0#y#E#I#u#u#O#U#~$~$~$7$7$8$o$A$F$K$ %X$_%4%r%r%K%B%X%@&X%0*W&b&w&p&<*Y&a*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+b*c*b*d*e*b*f*b*b*b*g*7*7*7*7*7*}*}*1*~*%* * * * * *Z&P&Q&P&z&H&s&r&r&l&l&j&n&c&h*|&2&!&!&%& &`%T%T%N%F%G%H%m%7%7%]%]%<%-%i*+ + + + + + + + + + + + + + + 7#3#4#D#)#-#v&$#`@F@E@F@t@s@s@|@|@f@/@X+@@S+D+C+K+s+q+7+n+7+2+2+'+'+'+$+.+.+X. +w.D.i.h.c.c.L&]&]&'%<&2%/%../%....p%..v%..p%W#$$^.B ^.^.$$^.^.^.$$$$^.>.C C C 4.>.C C V V ", -" { ] ^ ^ { { { ^ ] ^ { { ^ / { ] / { ^ { ] ] { { ] ] { { ] ] { ] J ^ J _ %.!.!.c.2.c.h.i.D.D.D. +X..+|+-+:+:+2+7+7+7+s+s+Z#D+D+X+W+@@-@^@=@f@f@g@t@t@F@Q@Q@$#W@)#-#D#4#4#4#a#y#y#f#E#N#U#U#~$@$~$3$7$A$A$A$F$W$K$X$k%4%K%r%`&X%X%,&}&}&w&w&p&Y&<*Y&j*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+k*l*f*b*l*m*n*l*b*l*b*b*b*b*7*7*7*}*7*}*}*%*~*&*#*o* * *Z&R&P&z&z&y&r&r&l&l&n&c&c&**_&2&&&&&*&`%Z%T%C%C%D%m%p*e%f%6%}%{%-%q*+ + + + + + + + + + + + + + + -#7#5#3#/#)#)#`@W@Q@Q@E@t@t@g@s@=@/@=@x@W+W+D+D+K+C+s+7+q+7+7+7+]+'+'+-+X..+ +D.D.D.h.h.j.c.M.]&o&]&2%2%2%..../%..../%/%p%$$$$B $$$$W#^.B ^.^.W#W#^.$$4.C 4.>.C V >.C >.V ", -" ] { ] { { ] { ^ { ^ { { { { { ^ / ] { { ] { { ^ ^ { { / { ] ^ ] J { _ %.#.{.!.2.2.c.w.i.D.D.D.X.X.|+-+'+:+]+7+7+7+q+r+s+C+D+S+W+X+=@=@/@^@f@s@g@t@y@E@Q@Q@`@$#`@)#)#4#4#4#f#y#y#u#%%O# $U#@$&$~$7$3$_$F$F$W$W$X$X$_%k%4%r%B%B%X%}&}&C&r*p&p&Y&s*s*t*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+u*l*u*n*v*n*w*l*x*m*n*k*m*k*b*b*7*7*7*7*}*1*%*#*%*~* *2* * *Z&R&G&E&H&r&r&l&l&j&f&6&c&y*|&_&_&~&`%`%T%C%G%E%E%p*e%7%}%]%<%z*+ + + + + + + + + + + + + + + A*3#4#4#D#)#)#`@W@Q@F@t@t@t@s@f@f@=@=@@@S+W+D+D+C+K+s+n+q+7+7+<+2+'+'+-+$+.+P.D.D.D.h.h.h.c.B*1$]&]&2%2%..../%........v%../%$$B ^.$$B $$$$W#W#$$B ^.W#B 4.V C C C V C C C ", -" C*{ { { / / ^ ^ { ^ { ] { / { ] ] ^ ^ ^ { { ] ] ^ ^ { ] ] ] ] ] { { _ 3%_ !.!.2.3.2.h.h.w.D.D.D.D..+.+-+'+]+2+2+<+q+x+q+q+K+s+S+S+@@@@>$r@r@f@f@f@t@E@M@F@W@W@`@-#)#/#4#5#5#3#f#y#E#O#u#U#U#@$~$~$7$3$A$F$F$W$X$X$X$4%D*r%r%B%R%5&X%}&C&r*C&p&Y&E*F*t*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w*w*w*G*w*w*w*u*w*v*w*v*x*w*l*n*l*m*l*f*b*b*7*7*}*|*%*~*#* * *Z&.*P&P&R&H&s&r&l&l&t&d&6&|&|&|&&&)&!&`%T%C%C%F%G%n%n%e%7%8%]%H*+ + + + + + + + + + + + + + + I*7#4#/#/#)#`@-#l#W@Q@F@M@t@f@q#f@^@=@@@W+@@S+S+C+s+s+s+y+7+7+<+<+]+'+-+.+.+ + +D.x.w.w.h.2.t$J*]&1$'%2%......../%....v%/%..$$$$$$^.$$W#^.$$W#W#W#$$B B >.C C C C V V C >.K* ", -" L*{ ] { ^ { { { { ] ] ^ ^ / ^ { { { ] { ] ^ ] / / ^ ^ ] ] ] { ^ ] J _ _ _ $.{.{.c.c.i.i.K.D.D.D.W.-+$+-+'+6+<+2+7+7+y+r+C+C+C+D+X+@@@@/@=@/@f@g@t@y@G@Q@V@Q@`@-#)#/#D#3#3#4#f#f#f#E#N#u#U#@$~$7$8$7$_$_$A$K$X$W$X$4%_%A%K%B%@&@&,&}&}&}&W&M*Y&Y&N*N*O*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G*G*G*G*G*G*G*G*w*G*G*G*w*w*w*v*x*u*u*n*l*f*b*b*7*7*}*!*}*!*&*2* *Z&Z&G&P&y&E&r&r&r&l&f&6&c&7&|&_&&&)&`%Z%T%C%C%M%m%n%e%e%f%<%<%+ + + + + + + + + + + + + + + L$0#4#/#/#)#)#`@`@r#Q@M@t@t@L@f@|@=@=@@@X+=@X+D+D+C+s+q+n+7+7+2+]+]+]+-+|+$+W.P.D.D.D.h.c.h.S 1$1$o&o&2%....../%....p%....p%B $$^.^.$$W#^.$$$$W#^.B B B V C V >.4.C C C V L* ", -" P*{ { { { / { ] { ] { ^ { { / { ] / { { ^ ] { ^ { { { ] { ^ { ^ / ^ ^ _ !.%.2.!.2.c.i.i.v.v.D.{+D..+X.'+-+]+6+2+g+7+n+r+C+K+C+X+@@S+=@=@=@f@|@R#t@y@E@Q@Q@W@$#-#`@/#4#3#4#f#f#E#u#u#O#U#U#+$&$~$7$_$o$_$F$F$W$X$*%_%4%A%r%B%B%X%,&,&b&}&b&:*Y&:*E*Q*R*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+S*T*G*U*S*S*S*S*S*G*T*G*S*G*G*w*w*w*w*x*v*x*l*b*b*e*b*7*}*|*~*}*~* * *Z&Z&F&z&E&r&l&l&l&t&f&c&c&_&_&&&&&`%T%T%M%F%G%H%e%m%f%}%[%V*+ + + + + + + + + + + + + + W*7#4#4#W%)#)#)#l#W@W@Q@M@t@t@s@f@|@=@=@@@S+S+D+D+s+C+q+q+r+7+g+<+<+-+-+-+X.O.X.D.D.V.h.h.j.H J*1$o&2%2%../%../%/%/%/%/%p%p%..$$^.$$W#$$$$B ^.W#^.^.B C C V >.C V C V C C X* ", -" _*{ { ] { ] ^ ] ^ ] { ^ { ^ ] / { / ^ { ] ^ { ^ ] / { ] { { { { ^ ^ _ _ %.{.2.2.2.i.c.i.w.D.D. +.+W.X.'+]+:+]+<+7+o+y+s+s+K+D+D+S+X+@@=@6@r@|@s@s@t@F@M@Q@W@$#$#`@/#/#3#s#f#f#u#y#u#u# $.$~$~$~$y%7$A$3$F$W$K$a&X$4%4%K%4%B%#&,&5&}&}&w&w&:*Y&Y*s*Q*Z*+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+`*S*`*S* =`*`*.= =.=`*+= =S*S*S*+=G*G*G*G*u*u*v*x*x*k*b*b*7*7*}*}*}* *&* * *Z&P&R&H&S&l&l&m&j&d&6&|&_&8&_&&& &T%T%C%O%t%m%e%f%7%}%@=+ + + + + + + + + + + + + + + 3#a#4#3#/#)#$#$#W@Q@G@y@E@g@s@g@/@/@=@-@@@S+D+D+C+C+q+s+7+7+7+<+'+]+'+$+.+X.P.W.D.D.v.c.c./*-*1$<&'%2%/%..../%../%/%/%..p%^.^.B $$$$W#$$$$W#$$W#B W#^.>.>.4.C >.V V >.>.#= ", -" _.^ { ^ / { ] / { { { ^ ] ] ] / { ^ ] { ] { ^ ] ] { { { ] ] / { / { ^ _ $.{.!.l.2.C.i.h.w.D.D.D.W..+.+]+]+6+f+<+7+7+q+q+C+C+S++@S+@@=@/@|@^@|@f@D@t@U@M@Q@Q@$#$#/#/#4#4#a#0#y#f#E#E#u#U#U#U#~$7$~$_$A$A$W$F$ %W$_%_%A%4%B%B%@&X%X%b&X&C&w&Y&:*N*s*N*$=+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++=`*%=&=`*`*&=%=.=.=%=.=%=`*.= = =S*S*G*G*G*G*w*w*m*n*l*b*b*7*7*}*1*%* *o* *Z&Q&G&G&z&r&r&l&j&n&c&7&|&1&3&&&!&T%T%C%N%D%t%H%e%8%7%*=+ + + + + + + + + + + + + + + a%7#4#/#/#/#l#$#W@W@Q@t@y@t@f@g@f@/@=@=@@@X+X+D+D+C+s+o+n+7+2+7+<+]+-+$+.+ +X.D.D.x.v.c.r.` +*1$1$2%o&2%../%..../%....../%W#^.$$^.$$B ^.B $$^.$$W#W#W#>.C C 4.C >.C >.4.6$ ", -" P ] ^ { / { { { ^ / ] { ] ] { ] { { { ^ ] { / ] ] ^ { { ] { ] ^ ^ J =._ %.!.{.2.c.j.j.i.D.w.D.W.X.$+-+'+<+<+]+g+7+y+q+q+s+D+D++@X+X+@@/@^@|@s@s@t@F@F@F@W@Q@`@$#)#)#}#4#3#7#f#I#u#E#N#b%+$.$~$~$8$7$&%F$F$W$W$X$4%4%r%L%B%B%X%B&,&}&b&p&p&:*Y&Y&Q*Q*+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+.===&=&=&=&=-=&=&=&=&===%=%=%=.=%=%=.=S*T*U*G*G*w*w*w*l*l*b*f*c*}*7*!*&*&*&* * *R&F&F&r&r&r&l&l&n&c&7&**|&)&)&%&T%T%C%N%F%m%m%g%7%;=+ + + + + + + + + + + + + + + >=7#3#4#/#)#v&l#H#Q@Q@M@U@g@s@f@f@/@=@=@@@W+X+D+C+s+q+y+r+7+g+]+'+-+m+.+X.X..+D.D.x.h.h.j.` +&]&,#,#o&2%/%/%/%v%/%v%p%....B W#^.^.$$W#B ^.$$W#$$$$$$$$4.4.4.4.4.C C 4.C W ", -" {.] { ] { ] / ] ^ { ^ ] ^ { ] { / ] ] { ^ / { ^ { / ^ { / ^ / ^ ] { ^ $.%.{.{.3.c.h.j.i.v.D.D.W. +X.'+'+:+2+]+g+7+7+q+s+D+s+D+D+W+=@=@=@|@f@|@g@s@E@F@Q@W@$#$#`@)#/#}#3#a#f#f#y#E#E#u# $U#U#&$7$7$3$_$A$W$/&X$_%_%4%K%r%B%B%@&}&}&}&C&p&p&<*E*Y&Q*Q*+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+-=&=-=-=-=-=,='=-=-=,=-=&=)=&=&=)=%=`* =S*S*T*S*S*G*G*w*x*n*b*b*7*7*7*1*#*%*~* * *.*Q&R&z&z&r&m&j&n&7&c&_&3&&&!&~&`%T%C%C%G%m%e%7%!=+ + + + + + + + + + + + + + + A#f#4#4#)#-#)#$#`@Q@F@y@y@t@g@R#f@/@=@=@W+X+D+D+D+J+s+x+x+7+2+2+2+]+-+.+.+W.W.W.D.w.i.i.h.=.1$+*<&^%2%2%....../%v%../%p%W#B B B W#W#W#^.B W#$$W#$$^.C V C C V C V >.C C ~= ", -" / / ] / { ] ] ] { ] { ^ { / / { { { ^ ] { ] ^ / ^ / ^ ] { ] { ^ ] _ ^ _ !.!.{.3.c.h.j.i.K.D.W.W..+$+1+)+'+<+]+7+7+7+n+C+q+D+C+S+X+-@@@=@7@f@|@s@y@U@G@Q@Q@$#)#)#/#)#3#4#7#f#f#u#u#E#O#U# $&$~$3$7$A$A$F$F$W$X$X$_%A%K%{=r%@&,&(&}&}&p&p&p&Y&E*F*N*Q*+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+-=-=]=]=]=]=,=,='=^=/=]=]=-=,=-=-=-=&=)=== =%=S* =T*G*G*G*w*w*w*n*b*7*7*7*}*}*#*o*$*Z&Q&R&y&y&r&l&j&f&6&c&|&_&_&!&%& &T%C%C%G%m%m%g%(=+ + + + + + + + + + + + + + + _=0#5#4#4#)#)#$#$#H#F@U@t@y@s@f@f@^@/@=@=@X+X+D+D+D+s+s+r+7+7+<+6+]+'+-+X..+P.D.D.w.w.h.h.!.+*1$]&o&2%2%../%......p%../%p%W#B $$^.$$^.^.$$$$^.B W#B >.>.>.>.>.C 4.C 4.C 4. ", -" y { { ^ ] ] ] ] ^ { { { { ] / ] ^ { { ^ / ] { ] ^ ] / ] ] { { { / _ _ l !.{.7.2.c.h.h.D.v.D.W.D..+-+X.'+]+2+2+g+7+n+s+J+K+K+D+X+@@@@=@=@/@|@q#t@t@y@U@Q@W@`@l#)#-#/#7#s#f#f#f#)$u#E#O#U#!$!$:=8$h$3$A$F$F$/&W$X$_%A%4%r%r%R%B&,&,&X&p&p&p&E*Y&N*N*Q*+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]=<=/=]=[=}=/=[=]=}=<=|=]=]=/=}=-=-=-=&=&=&=)=%=%=`*1=S*G*G*w*w*n*m*f*b*7*7*|*#*~*2*Z&Z&P&F&R&y&l&r&l&j&j&6&|&_&&&!& &=&T%C%C%D%H%e%2=+ + + + + + + + + + + + + + + + 7#5#4#}#)#-#v&$#Q@Q@Q@F@t@g@g@f@6@r@=@W+@@W+S+K+K+s+q+x+7+7+g+<+:+-+-+.+X..+D.D.i.h.c.c.%.+*+*1$'%o&2%........p%....p%$$^.B ^.^.W#$$$$W#^.W#B ^.B V >.C C C >.C 4.V V 3= ", -" f / { { ^ ] ^ ] { ^ { { { ^ ^ { ] { { ] { { { { / / ^ ] ] { ] ] / ` _ %.!.{.!.c.2.c.i.i.v.D.W.O.X..+-+'+-+<+2+7+7+n+s+J+Z#D+D+D+W+@@@@/@^@f@g@t@y@t@M@a%Q@W@)#)#/#4#3#7#a#f#y#I#u#u#u#U#&$@$~$h$3$3$o$F$F$W$ %X$4%;&A%r%r%>&@&5&}&}&X&p&:*E*E*E*N*Q*+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+<=<=[=[=4=5=4=[=|=6=[=[=4=[=4=]=<=]=]='=-=-=-=)=%=)=%=S*S*G*G*w*w*l*l*g*b*7*7*}*|*#* * *Q&P&G&z&r&l&l&f&7&6&|&|&2&_&`%`%`%C%N%G%m%m%7=+ + + + + + + + + + + + + + + + 3#f#4#4#)#$#$#W@Q@M@E@y@t@s@s@f@7@=@=@@@X+X++@D+C+C+q+y+7+7+2+2+'+'+'+.+.+W.O.D.v.w.w.i.!.+&]&]&]&2%2%../%p%..p%v%v%$$$$W#W#^.^.$$$$$$W#^.B B $$W#4.V V C V C C V V C 8= ", -" y { / ] { { ] / ^ ^ { / ^ { { ^ / ^ ] ^ { ] { { ^ ^ ] ] { ] { { J ^ _ l ~.~.l.c.c.j.i.i.D.D.D.X..+.+.+m+]+6+6+7+7+7+q+s+s+D+X+X+X+@@=@^@|@f@g@g@t@G@E@M@Q@W@`@)#)#4#4#7#3#f#f#I#E#u#U#U# $~$~$_$_$_$_$F$F$/& %X$_%k%4%r%r%X%X%,&}&r*b&p&Y&:*Y&E*Q*9=0=+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+a=6=5=6=b=6=6=6=6=6=6=6=6=4=6=b=4=[=<=[=<=,=]=]=-=-=&=&=%=`*+=S*G*G*w*u*m*b*k*7*7*|*!*~* *Z&P&P&P&H&z&l&l&m&n&7&**|&_&&&`%`%Z%C%O%n%m%c=+ + + + + + + + + + + + + + + + d=0#4#4#/#)#`@W@l#F@y@G@t@s@g@|@f@=@r@@@X+@@D+D+s+s+s+y+7+e+g+<+:+]+'+-+W.W.D.D.v.x.x%r.%.+&+*1$'%'%2%2%../%....v%..^.W#^.^.B W#$$$$^.^.$$^.$$W#V V >.V >.4.4.C V C C n. ", -" ^ ^ ] ^ / ] ^ ] ^ ] ^ ] / ] / / { { { / ] ^ ] { / ] { ] ^ ] { ] ] ^ _ _ !.!.!.c.h.r.h.h.x.D.W.W.X.$+-+'+'+]+f+7+y+7+s+s+K+D+D+S+X+x@=@r@^@|@f@f@y@t@M@M@W@r#W@)#/#/#4#3#f#f#E#y#u#u#O#.$@$~$~$y%3$_$o$F$F$K$X$X$_%A%A%B%X%@&N&N&X&b&W&:*<*Y&E*s*Q*e=0=+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+6=f=f=f=f=g=f=f=f=f=f=f=f=f=6=6=b=[=h=[=|=]=/=-=]=]=-=&=)= =`*.=G*G*G*w*u*l*l*b*7*7*1*&*#* *Z&Z&P&z&r&S&l&i=e&j&d&|&|&)&%& &*&C%C%G%D%j=+ + + + + + + + + + + + + + + + M@5#4#4#)#/#`@`@W@Q@M@U@E@f@f@f@=@r@=@@@@@+@D+C+C+q+q+y+x+7+]+<+]+]+-+.+-+O.D.D.D.v.c.c.%.+*1$o&^%^%2%/%..p%p%v%p%p%$$W#B $$^.$$B ^.$$^.$$^.$$^.4.4.C C V C >.>.4.4.C C ", -" ] { ] { { ] { { / / { ^ ^ { ] { ] ^ { { ] ] ] { { ^ { / / ^ ] / { ] _ $.l !.2.{.j.h.~@i.x.D.D..+X.|+'+m+'+2+7+7+n+o+s+s+K+C+D++@S+=@=@=@=@f@R#t@k=t@E@Q@W@W@$#.&/#4#4#7#f#f#I#E#E#O#O#U#&$~$&$7$3$A$&%F$K$W$_%_%4%A%A%r%@&R%B&(&}&w&C&p&Y&E*Y&Q*Q*l=+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+f=m=f=n=o=o=o=f=p=o=q=n=p=f=n=n=r=6=6=6=6=[=|=/=}=/=-=-=-===s=%=1=S*S*G*w*n*g*l*e*7*}*~*#*&* *Z&Z&F&H&z&r&l&j&e&d&|&_&&&2&%&`%T%C%N%E%H%+ + + + + + + + + + + + + + + + u&3#4#/#)#)#)#$#W@F@U@Q@t@g@f@f@f@6@=@S+X+X+D+e@C+C+q+y+n+7+6+6+]+-+'+.+W.W.D.D.w.i.h.h.!.J*1$1$o&2%2%2%..p%/%p%/%^.W#$$^.^.$$$$W#$$W#^.$$W#$$W#^.V V C V >.V C V C 4.C ", -" ] { { / ^ / ] ^ ^ ^ / ] ^ ] ] { / ^ ] ^ { ^ ] ] ^ ] ^ { ^ ^ { { ] _ _ _ %.!.{.c.2.h.c.w.w.D.D.O..+.+-+'+'+]+e+7+7+q+q+C+C+D++@S+X+@@=@6@|@f@f@t@t@G@Q@Q@H#`@-#)#/#D#3#0#a#f#E#E#u#u#b%U#@$~$~$h$_$A$A$F$K$X$X$k%4%r%B%B%B%@&,&,&}&b&w&p&p&E*s*t=Q*u=+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+q=p=q=o=v=v=w=w=v=q=q=v=o=q=q=o=n=f=f=6=f=6=[=[=]=a=]=-=-=&=%=%=.=1=S*G*w*w*x=n*g*f*7*}*!*~* * *Z&R&G&s&s&r&m&j&6&|&|&J&)&)&~&T%C%N%F%m%+ + + + + + + + + + + + + + + + S+4#3#4#)#)#$#$#Q@Q@y@t@t@t@|@R#r@r@=@=@X+T@D+D+Z#s+s+7+7+7+6+]+]+:+-+.+X.X.D.D.D.i.i.2.%.y=1$o&1$'%2%2%z=..../%p%B W#B $$$$W#W#B B W#$$B W#$$^.V C >.C C 4.>.V V V C 4. ", -" { { ] ] ^ ] ^ / ] ^ ^ ^ / { { / / ] ^ / { ^ / ^ { { { ] { ] ] { / { ^ _ l {.{.2.j.j.w.x.D.P. + +X.$+-+]+<+]+g+g+7+n+r+s+C+D+C+@@@@@@=@=@f@|@f@s@y@t@F@Q@W@$#l#`@/#)#4#5#7#f#)$y#E#U#N# $~$~$~$8$8$A$o$F$ % %_%X$A%k%r%r%R%B%,&}&}&r*p&:*Y*Y&N*N*Q*9=+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+o=o=w=A=B=C=D=E=A=A=A=A=C=F=G=w=o=p=p=p=m=p=f=6=6=5=6=4=a=/='=-=&= =.=S*S*G*u*w*x*b*b*7*7*}*|*%*o*Z&Z&y&y&H&r&l&l&f&7&**|&&&2&)&`%T%C%G%H%+ + + + + + + + + + + + + + + + 1%3#4#4#/#-#l#$#Q@M@U@E@y@g@g@|@^@r@/@@@@@*@D+C+s+s+s+n+7+7+7+6+<+'+'+-+.+X.W.D.w.K.h.h.c.+&1$1$2%2%2%../%/%p%/%B $$W#B ^.$$B $$W#$$B $$W#W#W#C V C 4.V V C 4.4.>.4.V C ", -" y { ] ^ ^ { { { { ] ] { / ] ^ { ] ] / ] ^ { { { / { ] ] { ^ ^ ^ ^ J _ $.~.!.!.c.C.j.h.x.D.D.W..+.+.+'+]+:+<+7+2+n+n+y+s+C++@S+D+x@=@=@/@/@f@s@t@y@E@M@W@l#`@`@-#)#)#3#3#f#f#)$u#%%U#O#U# $!$7$~$3$A$o$F$W$W$ %_%k%4%B%r%@&@&,&}&}&X&p&p&E*E*E*N*Q*Q*+ + + + `%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A=C=E=E=A=E=E=E=E=E=E=E=E=H=A=A=E=C=w=w=v=n=f=n=f=6=[=[=<=]=/=-=&=&=)= =S*+=G*w*u*m*g*e*7*7*!*&*$*$*Z&Z&R&z&r&r&l&e&6&6&|&_&)&&&*&T%T%E%F%I=+ + + + + + + + + + + + + + + J=f#4#4#)#`@$#`@Q@M@Q@t@y@g@s@|@/@/@=@=@@@S+S+D+C+K+y+q+7+2+g+<+'+m+-+$+X.W.D.O.D.V.h.c.c.J*+&]&2%]&2%2%../%p%$$W#W#B ^.W#$$^.$$W#^.B B $$B W#C C >.C 4.C >.C C 4.V C n. ", -" f { { ] { { { { ^ ] { ^ ] ^ ] ] ^ ^ { / { { { { ] { ^ { ] { ] / ^ J _ ~.%.!.l.2.c.c.h.K.x.{+W.W.X.'+-+'+]+<+<+7+7+s+q+C+q+C+D+@@@@@@=@^@|@f@f@t@F@M@F@Q@W@W@`@$#)#/#4#7#0#7#f#y#u#O#U#U#!$~$~$~$7$3$F$F$X$W$X$4%4%A%r%B%`&@&,&}&b&b&p&p&:*Y&E*N*Q*u=+ + + + G%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+K=K=L=K=K=K=M=M=M=M=M=M=M=N=O=E=E=H=A=A=w=w=o=g=m=6=6=6=4=]=}=]=-=-=&=.=`*S*P=G*w*x*m*k*b*7*}*&*#*#* *Z&F&E&z&r&t&j&6&7&g&_&3&&&`%T%T%C%N%Q=+ + + + + + + + + + + + + + + R=5#4#3#)#^#$#$#W@Q@M@U@t@g@s@f@|@/@=@W+@@S+S++@q+q+y+7+7+7+6+2+:+]+-+$+$+W.W.D.D.x.h.j.c.+*]&<&<&'%'%2%..v%v%^.W#$$B $$W#$$W#^.^.$$W#$$W#B V C C C 4.C C 4.V C >.V C V ", -" y { { ] ] { ^ ] ^ { { ] { / { ] ] { ^ ] { ^ { { ] { { ] ] { ] ^ { =._ _ ~.{.{.c.2.,@h.i.x.D.O.W.X.'+-+]+<+<+<+7+7+q+s+s+Q+D++@S+X+($=@=@^@f@f@f@t@t@F@Q@W@$#)#)#)#/#3#0#0#f#f#I#u#O#u#U#!$~$~$h$3$_$u$A$W$K$X$X$k%4%L%B%@&X%5&}&}&b&w&p&:*Y&N*Q*N*e=+ + + + 6%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+K=K=M=S=S=T=U=V=W=X=W=V=Y=S=U=M=M=N=E=N=E=A=A=B=v=p=q=f=f=5=5=}=a=^='=&=%=%=S*S*+=G*u*u*b*f*b*7*|*}*~* *Z&R&F&z&r&l&t&f&c&g&|&_&&&!&`%Z%C%O%Z=+ + + + + + + + + + + + + + + `=4#3#/#)#)#`@W@W@Q@Q@y@t@s@g@f@^@^@=@X+X+S+D+C+C+s+n+q+7+7+g+2+]+'+-+-+.+X..+D.D.v.i.h.!.+*1$]&^%2%2%2%/%/%p%B B $$^.W#W#W#W#$$^.B W#W#^.W#V V >.C C 4.C 4.4.>.>.C V b+ ", -" ^ { / ] ] ] { { / ] { ^ ] { { / { { { ^ ] ^ { / ^ ] ] / { ] { / { ^ _ %.{.!.7.{.c.j.i.i.V.D.W.X..+-+'+:+]+<+2+7+7+s+r+s+s+D+D+@@@@@@@@=@f@f@s@s@t@F@F@Q@W@$#`@`@)#}#5#f#f#f#f#E#E#N#N#@$ $.$7$7$3$_$F$!%!% %X$_%_%_%K%r%B%@&X%5&X&}&C&M*p&Y&E*Q*Q*l=+ + + 2*>%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+S=X=U=W= -.-+-@-.-@-W=#-T=T=Y=V=S=$-S=M=E=N=E=E=D=F=v=o=q=6=6=4=a=a=]=%--=)=.=`*S*G*w*u*n*x*f*7*}*}*$* * *Z&P&y&z&l&t&e&c&c&|&2&3&)&*&`%T%C%&-+ + + + + + + + + + + + + + + d%3#3#4#/#`@$#`@W@Q@F@t@y@g@g@f@f@6@>$W+@@D+D++@s+q+q+o+7+7+2+<+'+-+-+-+X.W. +D.D.v.v.h.!.+*]&]&]&'%2%../%$$$$$$B ^.$$W#$$W#$$$$$$^.^.$$B >.>.4.>.C 4.C V C V V >.C V >. ", -" Z ] { / ] { ^ ] { / / ^ { ] { ] { ^ ] { { ] ] { { { ] / ^ { { { / ^ _ %.%.!.!.2.j.h.w.w.w.D.W.W..+l+X.'+:+<+]+7+7+y+r+q+C+D+X+S+-@@@=@|@f@f@f@s@t@E@Q@Q@Q@Q@$#)#4#3#3#4#0#f#I#t#u#N#*-.$+$&$~$7$_$o$A$F$K$X$X$X$A%K%A%B%=-B&@&}&}&w&b&p&:*Y&E*N*Q*--+ + + 3&E$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+;->-.-,-'-)-'-'-)-'-'-'-)-!-'->-@-W=T=V=X=M=N=E=E=B=D=p=g=f=f=5=4=a=]=^=-=&=&=.=S*S*G*~-x*l*b*7*7*#*!* * *Z&P&y&y&r&l&l&f&6&c&_&_&&&*&T%{*M%{-+ + + + + + + + + + + + + + + ]-4#4#/#/#`@$#l#Q@Q@E@G@y@t@s@f@=@/@=@=@@@S+D+C+J+s+q+q+7+7+7+<+'+-+'+-+.+ +{+D.w.i.h.C.%.+*+*1$]&]&2%..v%$$^.^.B W#B W#^.B W#B W#$$^.^.$$V V C >.C >.>.V V >.C C V 4.+. ", -" P { ^ / ] / { / { ^ { / ] ] ^ { / / ] / ^ ] { ] ] { ] ^ { { ^ ^ ^ _ _ %.%.{.g.2.h.2.h.v.h.D.D.W.W.-+.+-+]+6+g+7+7+7+q+s+s+C+D+W+X+@@r@=@6@f@s@t@t@y@Q@Q@H#$#$#)#)#)#4#7#3#f#t#t#u#N#N# $~$&$~$7$_$_$_$F$F$W$X$X$k%A%r%L%B%X%,&}&}&p&C&p&<*Y&E*Q*Q*@&+ + + 8%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+,-'-!-^-^-^-/-/-/-/-/-(-!-!-!-_-:-<-.-Y=V=Y=X=N=E=E=C=C=q=o=f=6=6=[=]=<=^=-===&=%=+=[-w*w*n*b*b*7*}*|*#* * *P&P&E&s&l&l&j&c&|&|&_&)&!&*&T%T%C%+ + + + + + + + + + + + + + + }-3#/#/#)#)#-#l#$#F@M@t@t@t@f@f@/@=@=@-@@@X++@C+J+s+q+y+7+7+]+<+m+'+-+|+ +.+W.D.w.i.h.j.!.|-]&1$]&o&..^.p%$$W#B B $$$$$$B $$$$$$B W#B W#^.C V V C C >.V C >.4.4.C >.V W ", -" 2${ ] ^ { { { ] ] ] / / { ^ ] ^ / { ] ^ { ] { { ] ^ / ^ ^ { { / ] _ _ l ~.{.!.{.2.h.h.h.D.D.W.O..+$+'+)+]+]+<+7+7+n+s+q+K+D++@X+X+=@=@=@7@f@f@g@t@F@M@F@Q@W@`@`@^#3#4#5#f#7#)$)$I#O#N#U#U#@$~$7$_$3$o$F$F$ % %X$_%A%K%B%B%X%@&}&b&p&p&M*Y&Y&Y&1-Q*,&+ + + E$G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+2-3-3-/-4-5-/-6-6-6-6-6-4-4-7-(-8-!-'-'-+-.-W=W=X=O=E=E=B=9-o=f=6=6=[=]='=-=&=%=.=S*[-G*G*x*m*g*7*}*1*%*2*Z&.*P&H&H&r&l&e&e&****|&!&)&*&`%T%M%+ + + + + + + + + + + + + + + 0-4#3#3#)#$#$#$#W@F@Q@y@y@f@s@|@f@=@=@@@X+X+S+D+C+s+q+q+7+e+g+]+'+'+-+.+.+.+{+D.D.v.h.c.!.+*-*<&'%..../%..$$$$W#^.$$W#^.B B $$B $$W#$$$$$$V C >.>.V V V V 4.4.>.>.C C a- ", -" _*^ { / ] ] { / { { { { { / ] { { ^ ^ ^ ^ ^ ^ { { { / { { / ^ { J _ _ l !.!.{.2.r.h.i.i.x.D.D.X..+X.-+'+]+<+g+2+7+7+x+s+C+D+D+X+S+=@/@=@/@f@g@t@t@t@F@Q@$#$#)#)#)#4#7#7#7#f#y#t#u#u#U#U#U#&$~$h$b-_$o$F$!%K$X$X$4%4%A%r%@&X%,&,&,&}&C&p&p&:*E*Y&1-4%+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+7-6-c-c-d-c-d-e-e-f-e-e-d-g-h-6-6-/-(-(-!-<-i-V=U=S=M=E=D=A=9-f=f=6=[=[=a=/=-=-=.=1=S*G*G*u*l*n*c*7*}*|* *$*Z&R&P&z&r&l&l&f&6&c&_&_&!& &`%C%O%+ + + + + + + + + + + + + + + j-4#/#4#)#)#$#r#W@Q@U@t@t@g@s@f@=@/@=@@@X+X+X+C+s+q+n+q+x+g+6+<+'+-+-+.+-+.+{+D.w.i.h.j.d+]&+*]&M M ..^.$$$$$$^.$$^.$$^.B $$$$$$B W#$$C C C >.>.>.V V 4.>.C C >.C C >.#= ", -" 1 ^ ] ^ / ] { ] ] { { ] ] ] { ^ ] / ] { / ^ ] ^ / { / ] { ] / ] ] _ ^ ~.l !.!.2.2.r.c.x.x.D.D.{+W.$+'+'+]+2+2+7+7+r+q+s+Q+D+S+S+X+W+=@/@=@|@g@t@t@t@M@Q@W@$#W@-#/#/#/#4#7#f#f#E#E#N#U#U#.$&$7$~$3$_$_$F$F$ %X$X$k-A%A%B%B%@&X%}&,&b&r*C&p&<*E*N*Q**%+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+c-l-m-n-o-n-p-q-r-s-t-r-n-u-o-v-w-g-6-4-(-^-!-+- -Y=U=K=E=A=D=9-p=f=5=[=4=]=-=&=%=.=.=T*G*v*v*f*b*7*}*}*&*&*Z&Z&z&z&r&l&l&j&n&g&|&_&8&*&=&T%T%+ + + + + + + + + + + + + + + $=7#4#4#)#)#`@W@Q@Q@M@t@t@s@f@f@/@=@=@=@S+X+D+D+s+C+y+x+7+7+6+2+]+-+-+.+X.P.D.D.D.w.h.,@$.1$1$,#O+2%..W#p%^.$$B W#^.$$B W#W#B W#B W#V C C >.C V V V V 4.4.C 4.V >.V >.X* ", -" L*^ ] ] / { ] ^ { ] / { { / ] / { { ^ { { { { ] { { ] ] / { { ] =.{ _ ~._ l {.2.c.i.h.i.V.D.D.W..+.+-+-+]+]+7+7+7+y+q+s+K+D+D+W+W+@@=@=@^@|@f@f@t@G@F@W@W@l#l#)#^#4#4#7#7#f#T#)$u#N#u# $@$&$7$~$7$7$o$F$F$!% %X$_%D*A%A%r%@&,&5&}&W&C&p&p&:*N*E*t=*%+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+m-x-y-z-A-B-C-D-E-F-G-F-H-I-A-A-n-u-o-c-h-6-8-^-)-@-.-W=S=S=E=D=J-K-n=5=[=a=]=]=&===%=.=T*G*G*u*n*g*7*7*1*}* * *Z&L-y&y&r&t&f&6&c&|&_&)&)&*&T%T%+ + + + + + + + + + + + + + + M-7#3#D#/#-#)#W@Q@F@G@t@s@t@f@|@^@=@=@=@S++@e@s+C+q+y+7+7+7+g+:+<+'+-+.+.+W..+D.D.w.h.c.=.,#,#,#......p%^.B $$B B $$^.$$^.W#^.W#$$$$$$>.C 4.>.C >.C V >.4.C C V 4.V >.N- ", -" O-] ^ ] / ] ] ] / { { / ^ { / / { { { ] { / ^ ] ] { { ] / ^ ^ ] / ^ ^ _ !.{.{.c.2.h.h.h.D.D.D.X.X.-+'+'+'+]+e+<+7+n+7+q+D+D+D+D+@@=@=@=@|@f@f@t@g@y@Q@Q@$#H#-#$#)#)#}#3#f#f#T#I#f#%%O#U# $U#@$7$y%o$A$A$!%F$W$ %4%K%A%A%B%@&@&,&,&}&p&p&:*E*:*s*N*P-+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Q-R-S-E-T-U-U-V-W-X-Y-Y-U-Z-Z-I-I-A-R-n-u-e-w-6-(-^-'-i-S=U=M=A=J-K-F=6=6=[=4=]=-=&=&= =T*S*G*w*x*n*g*7*}*&*2* *`-Z&H&y&S&l&j&7&c&|&_&2&)&~&T%C%F%+ + + + + + + + + + + + + + m#7#D#/#)#/#W@$#Q@F@y@t@t@t@|@f@/@r@=@X+S++@D+K+C+s+o+q+7+<+g+]+'+'+-+-+ +X.D.D.D.h.i.r.=.1$'%..'%2%..$$W#$$$$W#$$W#$$^.$$$$$$W#$$4.V V V >.C >.4.V V V C V C V V >.V ; ", -" ] ^ { { ] ^ { ] ] { ^ { ] ] ] ] ] ^ / ^ { ^ ] ] ] { ] ^ { ^ ] ] ^ _ #.#.{.{.2.c.j.c.i.i.x.D.O. +.+l+-+<+'+<+7+7+7+r+s+q+C+D+S+X+x@=@^@/@/@|@t@y@Q@U@F@Q@Q@$#$#/#/#/#7#3#f#f#t#E#u#N#O#.$.$~$7$7$3$_$A$A$F$X$X$X$k%4%4%B%@&,&}&,&}&b&p&M*Y*:*N*Q*P-+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+.;T-+;U-Y-Y-@;#;$;$;%;%;%;#;&;V-U-Z-I-A-s-o-m-6-6-(-*;=; - -M=K=A=K-v=m=6=h=<=/=-=-=)=`*+=S*G*w*x*l*b*7*-;1*%*2*Z&Z&G&E&S&r&l&f&7&c&|&_&%&%&`%C%C%+ + + + + + + + + + + + + + ;;3#4#D#)#)#$#l#W@Q@t@y@t@g@f@f@6@=@@@@@W+D++@D+C+r+y+y+7+7+6+6+'+-+.+.+X.D.D.V.D.w.j.2./ '%]&'%..2%^.^.$$$$$$$$B W#B W#B $$W#^.C C V C C >.4.C C 4.C 4.C 4.C V C V V ", -" { { { { ^ { ] / ^ { { ^ { { / ] / ] { ] / { / ] { ^ ^ ] / ^ ^ / =.^ _ _ !.!.2.2.h.i.h.x.D.D..+W.$+'+-+'+6+<+7+7+n+s+q+s+C+D+S+X+@@@@=@/@f@R#f@t@t@y@E@Q@l#l#-#^#/#4#/#7#0#f#f#u#u#u#U#U#.$&$7$~$_$A$A$A$K$!%_%_%4%_%4%B%@&R%B&,&b&b&W&:*p&Y*E*s*J#+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+U-W->;,;';,;);!;~;{;];~;^;';/;(;%;&;_;U-I-H-n-l-c-6-/-!-:;<;U=M=L=B=K-[;f=6=[=<=}=-===&=%=+=G*w*l*n*f*b*7*1*&* * *Z&F&H&z&l&m&j&f&|&|&_&)&!&`%T%C%+ + + + + + + + + + + + + + + 4#4#4#)#)#`@Q@Q@Q@F@t@g@s@s@f@r@/@@@@@*@S+D+D+s+s+r+x+7+2+]+<+'+-+$+.+X.O.D.D.i.h.c.c.( +&,#^%O+M v%B $$B B $$^.$$^.W#$$W#$$>.V V V 4.C 4.C V 4.C >.>.V >.V C C V >. ", -" ] / ] { ] / ^ { { / ^ ^ ^ { ^ ] ^ / { { / ^ ^ / / ^ ^ { { / { { J _ l ~.!.!.{.l.j.h.i.V.D.D.D.W..+-+-+]+<+<+2+7+n+o+r+s+D+D+S+T@X+=@=@=@|@f@f@t@E@y@M@Q@H#`@)#)#/#4#3#5#7#f#I#u#E#J#O#+$U#@$~$_$3$_$A$F$W$X$ %_%X$A%A%r%@&@&@&}&}&b&p&:*:*Y&Y&E*};+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+>;|;{;1;2;3;4;5;5;5;6;5;5;7;7;8;9;0;%;W-V-a;A-r-b;c-6-3-^-<-c;S=M=E=D=v=v=6=[=a=}=-=&=)=%=+=U*u*w*l*f*e*7*}*}*&* *Q&P&z&r&r&l&j&e&c&|&|&!&`% &T%O%+ + + + + + + + + + + + + + + 4#/#/#`@v&l#W@Q@E@t@t@t@s@f@^@|@r@=@@@S++@+@C+C+s+q+y+7+<+<+'+-+'+'+ +X.W.X.D.w.w.h.2.( U ,#'%^%....p%W#$$W#$$$$$$^.^.$$^.^.V C >.4.C 4.C C C V C C >.>.4.>.>.C C 4. ", -" P ] ^ ^ ^ / ^ { ] { ] ] / ] { { { { { / ] ^ ] ] ^ ] { ^ { ^ { { _ _ l $.%.{.c.c.2.h.i.i.w.W.X.X..+.+'+:+:+2+2+7+7+q+q+s+s+D++@X+@@-@=@=@/@f@g@t@F@G@Q@Q@r#`@l#/#)#4#d;f#7#f#y#u#E#u#*- $U#~$~$7$3$o$A$F$F$F$X$*%_%4%A%B%@&@&,&}&}&X&p&w&p&E*Y&1-};+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+);e;f;g;h;i;j;k;k;k;k;l;l;m;n;5;3;o;';,;%;U-E-A-r-p;q;6-3-r;;-<;M=K=C=9-v=6=[=[=a=}=-=&=.=+=S*G*u*u*f*g*7*1*}*&*s;Z&R&G&H&r&t;j&n&7&|&_&%&`%`%T%M%D%+ + + + + + + + + + + + + + 4#4#/#-#)#l#Q@Q@Q@y@y@t@s@f@6@7@=@=@=@X+X+D+D+C+q+7+7+2+2+]+]+'+'+$+$+X.X.D.D.i.i.h.c.u;1$,#2%......^.W#$$$$W#$$$$^.$$$$W#4.V >.4.4.V >.V >.V 4.C C >.V >.V C >.V W ", -" _*] ^ ] { ^ ] { / { { { { ] ] / { { ] ] ] ] ^ { { ^ { ^ { ^ ] / _ ^ $.~.{.{.2.c.2.r.h.w.w.W.P.O..+'+'+'+]+2+2+g+n+y+s+s+K+D++@X+W+@@=@^@|@|@f@g@s@M@Q@Q@Q@l#v&`@-#/#4#3#0#7#E#f#u#E#N#U# $!$~$7$7$_$o$A$F$W$W$X$k-4%A%r%B%@&@&N&B&X&}&p&p&:*Y&E*v;+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w;3;i;x;y;z;z;A;A;B;A;A;C;D;l;l;5;h;3;E;,;%;W-U-I-o-m-q;6-^-r;<;$-M=F;D=J-G;h=|=a=-='=&=)=T*1=G*w*u*x*b*b*H;|*~* *Z&P&E&r&s&r&f&n&c&|&_&2&&&~&T%O%C%+ + + + + + + + + + + + + + /#3#/#-#`@$#Q@Q@M@t@t@s@g@f@|@=@=@=@W+X+S+D+C+D+q+q+q+2+2+<+:+]+'+l+$+.+X.D.x.v.i.h.c.U+1$^%M ......^.B B $$$$$$B W#W#^.4.C V 4.>.>.C >.C C >.V C V 4.4.C 4.>.4.V #= ", -" >*/ ^ { { ] { { ] / { { ^ ^ { { ^ ^ / { { ^ ] ] ] ^ { / { { { / { _ _ %.{.7.{.2.c.c.h.x.x.D.P.X..+.+-+:+]+]+e+7+x+r+y+s+C+D+S+X+=@X+/@r@6@|@f@t@y@E@E@F@Q@$#`@`@)#4#4#3#3#f#f#y#E#u#u#U#.$.$~$7$~$o$u$F$W$W$ %X$_%A%4%A%r%B%@&@&5&,&w&C&p&:*<*E*4$+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+I;J;z;z;K;L;L;M;M;N;N;O;P;Q;R;D;z;S;5;T;8;U;|;W-+;A-o-V;q;5-W;'-X;M=M=J-9-v=g=6=<=]=,=&=&=.=S*G*v*w*m*g*7*}*1*~* * *P&E&H&S&r&f&e&d&|&_&3&%&`%`%T%C%E%+ + + + + + + + + + + + + 3#)#-#)#$#`@W@F@F@F@t@f@f@f@/@^@=@@@W++@D+D+C+q+q+o+7+]+<+]+]+m+-+-+ +D.W.W.D.h.h.h.c.e 1$,#,#2%../%$$$$$$W#$$$$W#$$4.>.V V >.C C >.>.C C V V V 4.4.C V V V V V 4.j ", -" ;*/ ] ] { { { { ^ { { { { ^ / ] { ^ / ^ ] { / ] / / / { { { ] / ] ^ _ $.{.!.{.c.c.c.c.i.x.D.W.W.-+.+1+]+:+2+2+g+n+q+n+J+s+D++@S+@@($@@=@=@f@g@g@s@E@Q@Q@Q@l#`@`@/#)#/#4#0#f#I#f#I#V$O#u#.$+$&$7$3$_$_$o$W$W$K$X$_%_%D*r%r%B%X%@&,&}&b&C&b&p&Y&Y&Y;+ + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Z;`;L;M; >.>+>@>#>$>%>+>&> >*>N;=>D;k;5;5;->);|;W-E-A-o-;>>>,>'-T=$-K=K=J-'>g=6=<=]=-=-=%=.=.=S*~-u*m*k*b*}*#*#*#*Z&Z&P&z&S&r&j&f&6&|&|&_&%&%& &T%C%D%+ + + + + + + + + + + + + /#D#/#`@l#l#Q@Q@U@y@t@f@s@f@r@|@=@W+@@+@)>D+C+s+y+n+7+7+<+]+m+-+'+|+X.D.D.w.x.i.i.h.c.J*1$'%M ....B ^.$$W#B $$$$>.4.>.C >.>.C 4.V 4.V C 4.C V V C 4.>.C C V V 4.4.!> ", -" ] { { ] / ^ ] ] { ^ ] { / { { ] ] ] ] ] ^ { ^ { / { ^ / / ] { { ^ _ _ {.!.7.2.h.c.h.w.V.w.D.O. +.+.+'+]+<+]+6+7+y+q+q+C+K+C+X+X+@@=@/@/@^@|@s@t@t@E@G@W@W@$#-#/#)#4#}#4#f#f#)$I#u#U#O# $ $~$~$h$3$A$o$F$W$0&K$_%4%A%r%A%B%B%@&,&}&}&b&p&p&:*Y*~>+ + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+{>L;M;]>$>^>/>(>(>_>_>:>_>_>@><><>[>A;k;l;h;7;{;}>|>B-q-o-q;5-r;W;$-U=K=1>[;g=n=[=}=]=&=&=`*S*T*G*w*m*k*b*7*|*&* *Z&P&P&z&E&l&l&j&c&g&|&3&&&!&T%C%M%G%+ + + + + + + + + + + + + 3#/#`@)#W@H#Q@Q@Q@F@t@g@f@f@^@=@=@X+S+D+D+s+C+s+n+7+7+7+]+]+<+]+-+-+.+X.X.D.D.i.h.h.c.M.'%,#^%M ......^.W#^.V >.V V V C C C C V >.>.C V V >.>.V C C V C C V C 4.C ", -" 2>{ ^ ^ ^ ^ { / { { { { { / / ] { ] ^ ] { ^ / ] / ] { { ] { { / ^ _ ~._ !.2.2.c.h.h.i.x.D.D.W..+.+1+)+:+]+f+7+2+r+o+s+J+Q+C+D+S+=@@@=@^@^@f@s@t@t@y@E@Q@W@W@$#)#/#4#4#7#f#f#)$y#u#E#O#U#+$U#~$7$7$A$A$A$W$F$X$_%_%4%4%A%`&@&@&,&X%}&}&b&w&:*Y*3>+ + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+4>5>6>7>7>(>8>9>0>a>a>a>9>b>_>/>@>c>d>A;k;l;h;e;);e>+;f>x-x-q;g>h>i>$-K=j>F=G;g=[=]=]=-=&= =S*G*G*w*x*x*k*7*}*#*~*3*Q&P&F&z&l&l&e&d&c&|&_&&&`%=&T%C%F%+ + + + + + + + + + + + + V@/#`@$#l#W@Q@Q@Q@y@t@|@|@|@6@=@=@=@S+D+D+s+J+s+y+n+7+7+]+]+:+-+-+.+X.W.D.x.D.v.v.C.c.1$,#^%M O+..^.B ^.$$V C >.>.C V V >.V >.>.V >.C >.V C V V V C V C C C V V k> ", -" [&^ ] / { ^ / { ] { { ^ ] / ^ { ^ ] { ] / ] ] ^ ] ^ ^ { ] ] { / ^ _ _ {.!.!.2.c.c.j.w.w.V.D.W.X..+.+-+]+]+6+7+2+7+q+q+J+C+D+D+D+@@x@=@=@/@f@f@t@t@E@Q@Q@$#W@$#`@/#/#/#5#a#f#y#y#f#u#O#u#U#&$~$7$7$l>o$A$F$W$/&X$_%4%4%A%B%R%B%X%N&}&X&w&p&p&:*m>+ + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+n>o>p>q>r>s>s>t>t>u>v>w>x>s>9>y>_>$> >z>A;k;5;3;!;e>A>.;R-x-q;B>C>,-$-$-j>v=g=g=|=}=,=-=&=`*`*[-G*w*u*b*7*7*|*1* * *Z&F&F&E&l&m&f&c&|&g&_&)&&&T%C%C%F%+ + + + + + + + + + + + + t@)#$#)#$#r#Q@Q@F@E@t@f@f@f@|@=@@@=@W+X++@D+q+s+o+7+7+f+<+<+]+m+X.-+ +O.D.D.x.h.h.c.%.1$'%2%O++...B C V C V C C V V C V C V C >.4.C V V >.V 4.C 4.4.C >.>.V V V D> ", -" 0 ^ ] ^ { ^ ] ] { { ^ ^ ] { ^ { ] ] ] ] { ] { ] { { ^ ] ^ ^ { ^ ^ _ _ $.{.{.2.2.c.i.v.i.w.D.D. +$+.+-+]+<+]+<+7+7+x+n+C+D+C+D+S+X+@@=@=@6@f@|@t@t@t@M@Q@r#r#-#)#)#)#4#7#5#f#f#y#E#u#O#O#U#+$!$~$~$3$_$F$A$W$/& %X$_%_%K%A%r%B%#&B&}&b&b&X&p&<*5%+ + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+E>7>r>r>F>G>H>H>I>I>I>I>J>w>x>K>9>/>6> >M;A;k;h;e;);L>M>A-N>O>w-P>,-$-Q>j>A=g=g=R>}=]=-=-=.=`*U*G*w*n*g*7*7*1*~*$* *Z&Z&R&H&r&l&f&n&**|&_&_&`%`%C%C%E%+ + + + + + + + + + + + + S>/#$#`@$#$#W@F@M@y@t@q#|@f@=@=@=@S++@D+D+C+s+y+q+7+7+<+<+]+'+-+-+.+X.D.D.D.D.i.h.c.=.1$o&+...^.^.$$V C >.C V >.V V V V 4.C C C C >.V 4.C 4.>.4.C V >.V >.V V C 0 ", -" { { ] ^ / { { / ] ] { ] { { ] ] { ] { { ] { ] / / { { ^ / { ] ^ J l _ %.!.7.2.c.h.i.i.v.D. +.+.+-+'+'+<+2+7+e+7+q+q+s+C++@D+*@T@x@=@/@^@|@f@f@t@t@y@F@W@W@$#-#)#)#4#7#3#7#f#)$y#E#O#O# $ $~$~$~$7$3$A$F$F$X$W$K$_%4%4%K%r%`&X%X%(&,&b&b&W&:*T>+ + }*G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+U>V>W>G>X>Y>Z>`>`> ,., ,+,H>H>@,K>#,/>6>c>[>`;j;$,e;%,&,.;*,O>=,3-,--,;,K=j>v=g=>,[=<=-=)=%=+=T*U*w*m*m*b*7*}*#*&* *.*R&E&s&r&l&j&d&c&|&_&&&&&T%C%C%E%+ + + + + + + + + + + + + ,,)#)#l#r#Q@F@M@U@s@s@g@f@/@=@@@@@@@D+e@C+K+s+s+o+7+7+2+]+<+]+|+-+X..+D.D.K.h.c.2.2.( ,#M M O+^.C ^.V V >.V C >.V C >.C V C C C V V C 4.C C C >.C C C C C V >.4. ", -" y ] ] { { { ] { { { ^ ] { ] { / / ] ] { ^ { ^ ^ ^ { { { { ] { { =._ _ {.{.2.2.C.i.i.w.x.D. +O..+.+1+]+:+<+<+7+7+7+y+q+C+D+D+D+@@@@=@/@^@|@f@t@t@y@Q@U@Q@W@W@)#)#)#}#4#7#3#f#)$)$u#N#N# $@$~$~$7$3$3$A$u$A$W$X$c%_%_%_%K%B%r%@&@&N&(&X&b&w&p&^*+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+',),G>!,Z>~,{,],^,^,/,(,/,],_,X>@,W>:,^>n>M;A;`;h;<,[,L>.;R-},|,3-1,-,X=;,j>K-g=g=4=]=-=2,%=+=G*G*w*x*l*e*7*1*#* * *L-R&y&r&r&l&m&j&g&|&_&%&*&=&T%M%M%+ + + + + + + + + + + + + 3,/#$#l#Q@Q@M@F@t@s@s@|@|@=@/@@@@@S+X+D+D+C+q+y+x+7+2+<+2+<+m+'+.+ + +{+D.D.w.c.i.h.F.+.O++...^.>.>.V C 4.V V V C 4.C 4.V C C C V C 4.V C >.C V V C >.>.4.C V 3= ", -" : ] { ^ { { / ] ^ ] ^ { { { / / { { { { ] { ] { { ] / / { ^ { ] ^ _ l !.!.!.3.2.j.h.i.i.D.W..+X..+-+-+]+<+6+2+7+7+y+s+K+D+D+S+S+X+@@@@/@^@f@f@f@t@F@F@Q@Q@V%W@)#)#)#/#4#a#7#f#)$E#E#O#N#U#@$~$~$8$3$3$A$A$!%F$X$X$_%_%K%K%r%@&@&@&N&}&}&r*p&4,+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+5,6,!,7,8,9,0,a,b,c,d,a,/,/,],e,X>x>a>f,g,c>L;`;l;h,i,}>j,R-N>},B>P>-,k,Q>j>K-v=R>l,^=-===%= =S*G*w*v*g*g*7*7*~*&*$*Z&Z&H&s&r&t&m&6&7&|&2&&&`%T%T%C%D%+ + + + + + + + + + + + + m,)#`@Q@W@Q@Q@M@t@g@s@f@|@/@=@W+@@X+D+D+K+q+s+s+y+7+g+2+]+'+'+-+X.X.X.D.D.D.i.v.C.2.U++.M M ^.^.B >.V >.V >.V C C C >.C 4.>.V >.C 4.C V >.C C V C >.V >.4.>.>.n, ", -" F ^ { / { ^ { { ] ^ { { / { ] ^ / ^ { { { / ] / { ] ] { ] { / ^ / ^ %.l !.{.2.c.i.w.h.x.D.{+W.X.X.-+'+]+<+]+2+7+7+y+o+s+s+D+D+S+X+@@=@/@6@f@f@t@y@E@M@Q@Q@W@$#)#)#)#/#}#a#a#f#u#E#u#E#U#U#.$@$@$~$3$3$3$&%F$W$W$_%_%_%K%r%r%`&@&@&}&,&}&X&p&9%+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+),o,8,9,d,p,q,r,q,s,t,u,v,w,x,y,Y>G>5,z,^>A,4>B,Z;h;C,D,E,f>Q-;>F,P>-,k,M=1>1>g=g=R>]=-=&=&=%=T*G*w*v*k*e*7*}*}*$* *Z&R&z&E&r&l&j&e&c&|&_&_&!&`%T%O%N%+ + + + + + + + + + + + + Y+$#$#$#W@Q@F@E@t@t@f@f@r@/@>$=@@@@@S+S+D+C+s+x+7+7+<+<+<+'+'+|+.+X.D.D.w.D.v.h.c.2.j#+.M ^.[.^.W#V C C >.V V >.C 4.>.>.4.C C 4.C C 4.C V C >.C C >.C >.C 4.C Y ", -" { ] ^ ] ^ ^ ] ] ] ] { ] { { { ] ] ] ^ { { { { ^ ^ ^ { { ^ { ] J _ _ %.~.2.7.c.2.c.h.x.D.W.X.X..+X.'+m+'+]+2+g+y+7+s+s+C+D+D++@X+W+=@=@^@f@f@f@s@t@F@F@Q@l#$#v&)#/#4#4#a#f#f#y#T#u#E#N#O#U#U#@$h$~$_$_$3$F$W$K$K$_%_%k%K%K%B%`&X%X%(&}&}&b&i$+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G,H,I,J,K,L,M,M,K,N,s,s,u,u,/,O,P,X>x>5,7>Q,R,S,T,U,<,V,E,W,X,},Y,P>Z,`,K=j>1>g=r=R>]=,===)=+=S*G*v*n*m*7*7*}*|*#* *Z&Z&F&z&r&l&f&e&6&|&_&&&*&T%T%C%F%+ + + + + + + + + + + + + '$#`@l#M@F@F@t@t@s@f@f@f@^@@@X+@@W+S+C+s+s+s+x+y+e+e+<+<+-+-+.+.+W.X.D.V.i.w.h.2.c..',#+.M ^.^.>.>.>.4.C C V C 4.C V >.4.4.V V V 4.>.V C C V C C C V C C >.C ", -" f { ^ { { ] { ] ^ ] ^ / { ^ / { / ^ ^ ] ] { ^ / ^ { ] / ] { { { _ _ _ !.{.{.c.,@c.i.i.w.D.W. +X..+'+]+<+<+2+7+7+x+q+s+D+D++@S+W+=@($/@6@=@f@g@f@y@t@F@Q@W@`@`@`@)#/#/#4#0#7#f#T#E#u#N#U#U#@$~$~$~$7$3$A$A$F$F$X$X$_%4%r%r%r%r%B%B&X%}&0*b&h@+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G++'I,J,@'#'$'%'&'*'='K,s,s,d,c,-'y,;'G>5,q>^>n>>'T,I;,'''E,.;*,)'V;B>Z,`,!'1>1>g=>,~'-=-=&=&=.=T*G*v*m*b*b*|*}*}*#*Z&Z&G&E&H&l&t&e&c&c&|&3&&&)&`%C%C%D%+ + + + + + + + + + + + + {'-#$#r#Q@M@F@y@s@9*f@7@|@/@@@=@X+D+D+C+C+C+y+7+y+2+7+2+:+'+-+.+X.W.X.D.x.x.h.r.c.!.U M ....^.^.4.V C V C >.C C >.4.>.C 4.V >.>.C 4.V V 4.C V >.V >.C C V 4.3+ ", -" ]'{ ] ] / / ] ] { / { { / ^ / { ^ { ] { / ] ] ] ^ / { { ^ { ^ / ^ ^ %.!.{.2.2.j.r.i.w.w.D.W.{+.+1+'+'+'+]+<+g+7+y+y+s+s+D+S++@S+W+X+r@=@f@|@f@g@t@F@Q@Q@W@$#$#)#)#4#4#5#3#f#f#I#E#u#u#N#U# $@$~$7$7$l>A$A$F$F$W$K$*%_%4%A%r%r%r%@&@&X%(&X&+ + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+^'J,/'%'('_':'<'['}'|'N,s,r,b,x,8,Z>G>5,',1'5>2'`;I;,'''3'4'R-x-5'6'7';-!'j>1>g=R>8',=&===%=T*G*w*w*m*b*7*}*1*&*&* *Z&P&H&S&l&m&j&c&6&|&&&!& &~&T%O%G%+ + + + + + + + + + + + + 9'l#Q@r#F@U@t@t@t@f@f@f@=@@@@@S+X+D+D+Q+C+q+s+7+7+]+]+<+]+-+.+.+X.W.D.D.D.w.h.C.c.0'+.+.M ..^.B C >.C V >.C C C V V V C C V V V V V V C V 4.4.>.C V 4.>.C >.D> ", -" a'/ { ^ { ] { / / { ] ^ { ] { ] { / ] ] ] { { { ] ^ { { ^ ^ ] { J _ _ %.{.2.{.c.j.~@x.x.x.D.W.{+-+-+-+m+<+]+2+7+7+q+r+s+D+D+S+S+S+=@@@=@r@f@g@s@t@t@F@F@Q@$#`@`@)#/#/#3#4#f#7#f#)$u#u#U#U#.$@$@$~$_$3$o$3$A$A$K$ %c%_%4%A%A%B%B%B%R%5&,&W$+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+b'c'd'e'f'f'g'h'i'%'j'k'N,r,l'm'8,n'G>),o'p'q'4>`;r'h,''e>4's'x-|,6'7't'u'K=1>>,R>~']=&=)=%=S*U*u*u*m*b*7*7*}*&* *Z&R&P&y&S&l&m&f&n&h*|&2&&&)&`%T%C%E%+ + + + + + + + + + + + + v'`@W@Q@M@Q@E@t@g@q#f@^@r@@@=@@@X+S+C+s+s+q+q+7+7+<+]+<+'+-+'+.+X.X.W.D.D.h.h.c.2.w'+...M ..^.4.V C V >.>.>.C 4.C V C V C V V 4.>.C 4.V V >.4.C >.4.V V C C %@ ", -" / ] ] ] { ] ] { ] ] { / / { { { ] { / ] { ] ] ^ { ^ / ] { ] ] ^ _ _ %.%.{.2.c.i.i.h.w.i.D.D.X..+-+-+-+:+6+2+e+y+7+y+s+C+K+X+*@S+W+W+/@=@r@f@s@s@t@y@M@Q@Q@H#`@.&)#/#4#7#3#7#y#E#u#E#O#O#U#@$@$~$~$7$3$_$A$F$F$!%X$c%X$_%_%A%B%@&@&@&X%d=+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+x'y'z'A'B'B'C'D'E'F'='N,p,l'G'y,n'G>),r>^>q'4>H'I'$,''e>J'K'x-L'6'M't'N'j>O'R>6=l,-=-=)=%=+=G*w*w*m*b*7*7*%*#* *Z&Z&P&H&r&l&l&e&6&c&|&_&!&*&`%C%C%n%+ + + + + + + + + + + + + P'`@$#Q@F@y@t@t@f@|@/@=@=@=@X+W+D++@C+s+C+s+y+7+2+g+<+'+-+'+.+.+X.W.P.V.x.h.j.j.2.S +...^.^.^.^.W#C C >.V >.C C C C C 4.C C C >.C C C C >.4.C 4.V 4.C >.V >. ", -" w+] ] ^ / / / ^ { / { ] ] { { ^ ] { ] ^ { ^ { / ] ^ / { ^ ] ^ { _ _ l %.{.3.c.2.h.v.w.D.D.{+O..+X.-+'+]+]+2+7+n+7+s+q+s+C+D+D+S+S+=@/@6@6@f@t@t@y@y@F@E@Q@l#`@6#)#/#)#'*7#7#f#f#t#E#%%u# $ $@$~$~$~$_$7$A$F$F$ %W$X$X$k-k%A%r%@&@&R%X%>=+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Q'g'B'R'S'R'T'C'U'V'W'p,r,l'm'n'H,!,X'',Y'Z'2'H'`'h,'' ).)+)@)#)6'M'`,!'j>O'r=r=l,,=&=)=.=S*G*v*n*n*g*7*}*|*~* * *P&H&z&I&l&l&7&7&|&_&_&~&*&T%T%C%F%+ + + + + + + + + + + + + $)W@Q@Q@t@F@t@t@f@f@f@=@/@-@X++@X+C+C+q+q+x+x+7+2+2+'+]+-+-+-+.+.+P.D.D.K.v.h.c.2.e M O+^.^.^.W#C C C V C V V >.V C C C C C C C >.V >.4.V V >.4.C V C 4.V m$ ", -" %){ { / ] { / { ^ { { ^ ] { ] { { / ^ ] { { / { / ^ { ^ ^ / { { J _ {.$.{.{.2.j.c.i.h.D.D.O.X.X.X.-+:+]+<+]+7+7+n+7+s+C+C+D+D+X+X+W+=@=@^@r@f@g@y@y@M@Q@Q@W@l#l#)#-#/#3#7#3#f#y#f#u#u#N#u# $~$~$&$~$7$8$o$F$A$F$X$*%X$X$A%4%r%r%r%R%@&'&+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+&)*)=)-);)>)R',)D'')))J,l'l'0,n'H,!,X'!)p'~){)H']),'''^)W,+)x-#)/)M'()!'1>O'R>[=[=-=&=.= =G*G*w*x*g*f*7*7*}*~* * *P&G&y&r&t;e&n&7&|&_&&&)&*&T%C%N%m%+ + + + + + + + + + + + + _)$#W@M@F@y@t@s@|@|@^@/@/@x@W+S+S+C+D+Z#q+s+r+7+2+<+<+'+-+l+.+.+X. +D.w.x.i.h.2.7.+&+.a+^.^.^.W#C V C V C C >.C V 4.C >.4.>.4.V C V 4.V >.>.>.V V C C 4.C [+ ", -" { { / ] ] { ^ { { { ^ { ] / / ] / { { { ] { / ^ { ^ ^ / { { / ^ _ _ $.!.2.{.c.j.h.h.x.D.P.D.O..+-+'+-+<+<+<+<+7+s+r+J+K+C++@+@X+X+=@=@/@f@s@f@t@E@y@Q@Q@Q@$#W@-#)#4#3#4#5#7#7#I#E#u#%%O#U#@$U#&$~$~$_$o$:)F$F$W$K$_%X$_%4%r%B%L%`&R%<)+ + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+[)})|)1)2)1)R',)3)4)@'5)6)7)0,n'o,8)9)0)p'a){)b)]),'''c)d)X,@)#)e)Z,k,!'1>f)~'[=<=&===`* =[-G*w*n*f*e*7*|*&* * *Z&P&E&r&l&l&f&6&7&|&_&&&)&Z%T%C%E%E%+ + + + + + + + + + + + + _)Q@W@F@F@t@g@t@f@|@^@=@@@@@@@D++@D+J+q+n+y+7+7+7+6+]+]+-+-+.+X.D.D.i.v.h.i.c.c._ ,#+.^.a+^.4.V C C C 4.C C 4.V C C 4.V C V C >.V V V C >.>.>.4.V >.C C 4. ", -" : ] ] { ^ ] / / ] { { { ^ { ] ] { { ] ^ / / ^ / / { { ^ ] / { ^ _ %.%.{.{.2.2.c.h.w.w.x.D.P.W.X.-+-+'+]+]+]+7+7+n+n+s+q+C+D+D+S+@@-@/@/@|@f@t@g@t@G@U@Q@W@$#l#`@`@/#/#3#3#0#7#f#y#I#u#N#U# $!$@$&$~$y%3$3$A$F$F$K$K$ %4%_%A%k%B%B%B%+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+g)z'h)i)1)j)k)*)l)m)n)o)7)0,p)q)G,r)9)0)s)t){)T,])u)v)w)x)y)},z)C>A)B)!'O'K-l,C)<=)=&= =+=G*G*w*m*b*7*}*~*~*$*2*Z&P&H&s&l&l&n&6&6&y*_&&& &`%T%C%D%D%+ + + + + + + + + + + + + D)Q@Q@F@E@t@f@f@f@=@/@=@X+=@@@S++@D+C+q+s+n+7+2+g+<+]+'+.+.+,*X.P.D.D.V.i.i.c.2.` +.M O+^.C ^.4.>.C C C >.V C V 4.C V >.C C V C C 4.V C C C C >.V C V V Q% ", -" w%{ ] ^ ^ ] ^ ^ ^ ] { ] { { / { / / ] { ^ { / ] ^ / ] / ] / { ^ J %._ !.{.7.l.2.i.i.v.i.D.W.D.W.X..+-+'+2+6+<+7+y+s+r+C+C+C++@D+W+x@=@=@^@|@g@f@t@t@F@M@Q@r#W@`@E))#/#/#4#3#f#f#t#y#u#u#N#U#U#U#@$~$7$h$7$3$F$F$W$F$K$X$X$4%4%4%r%B%+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+x'F)})G)|)H)A'g'I)F'J)I,0,K)n'G,L)M)N)O)s)P)Q)R)S)T)U)4'V)Q-W)X)Z,-,N'1>O'Y)[=[=<=&=%=+=+=G*v*u*k*b*b*}*#*&*2* *Z&P&y&r&l&l&j&f&|&_&_&!&*&=&T%M%D%H%+ + + + + + + + + + + + + Z)Q@M@Q@y@s@s@s@|@^@r@@@@@@@X+D+C+J+s+s+x+7+7+g+7+]+:+:+'+.+.+X.D.D.i.i.j.i.h.2.F.M M a+^.^.>.4.C C C V V >.C 4.V C >.4.C V C >.4.C >.4.>.C C >.C >.4.V w% ", -" ] { ] { / ] { ] ^ { ] ^ { ^ { ] ^ ] ] ^ { { { ] { ^ ] ] / ^ / { _ _ !.!.2.!.2.2.h.v.V.D.D. +X..+.+'+'+]+<+e+7+n+n+y+q+C+C+D+X+S+-@@@/@|@/@f@g@s@t@t@F@M@Q@$#W@$#)#)#}#4#3#7#7#I#y#y#V$u#O#U#!$@$~$7$_$3$o$A$F$(%!%K$K$_%_%4%4%A%3$+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+c'`)F)z' !.!+!@!m)#!$!0,%!&!G,*!=!9)-!;!~)>!b),!u)'! ))!V))'W)!!~!`,{!1>]!^!8'<=<=&=.=T*G*G*u*l*f*b*7*7*!*&* * *P&E&E&r&l&l&n&6&7&_&8&!&`%T%C%C%G%m%+ + + + + + + + + + + + + Z)F@y@y@y@t@f@|@=@6@=@=@W+@@W+D+C+K+J+7+y+7+2+2+]+:+'+-+-+.+X.O.D.x.D.i.i.c.r.{.u++.+.^.^.>.>.C V C C C >.>.4.>.>.4.4.V >.C 4.V V >.4.>.V >.4.>.4.C V V ", -" ]'{ / { { ] / { { ^ ^ ] ^ { { { { ] ^ ] ^ { / / ^ ^ ^ ^ ^ { ^ _ ^ _ %.%.{.l.c.c.c.w.w.D.D.D..+-+-+-+-+]+2+g+7+x+s+n+r+K+K+C+D+X+S+=@@@=@^@f@|@f@t@t@F@Q@W@W@$#)#$#/#/#/#4#a#f#f#T#y#u#E#u#U#+$ $+$~$h$7$A$_$A$F$W$!%W$X$_%4%4%A%4$+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+/!x'(!_!:!<![!}!|!1!K)&!q)2!3!4!!);!5!P){)R)6!u)v)7!8!X,},9!0!~!a!!'1>b!c!<=^=&= =%=S*G*w*x*x*b*7*-;}*#*~*o*Z&R&H&I&s&m&j&n&|&|&2&_&`%`%*&O%F%E%n%+ + + + + + + + + + + + + d!F@U@E@t@f@g@7@f@r@=@@@W+S++@D+C+s+y+y+7+7+7+<+<+'+'+-+-+.+ +P.D.x.x.i.j.c.c.{.U +.M ^.^.^.>.4.>.C 4.4.C V V V C 4.4.V 4.C >.V C C C >.V C C C C 4.C e! ", -" j%] ^ ] { ] { { { { / { / ^ { / { ] { ^ { ] / ] { ] ^ { { ^ { ^ _ _ ~._ {.{.c.2.h.h.w.D.D.W.D. +X.-+'+:+<+<+2+2+o+o+q+s+q++@D+S+@@@@@@r@=@f@f@f@t@t@F@U@F@W@`@`@)#-#/#/#4#3#s#f#f#)$u#V$O#N#O#@$ $@$~$h$_$_$o$o$A$K$K$X$X$X$_%4%b#+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+f!g!h!/!i!}!j!f!&!&!H,q)L)r)k!!)l!s)~)>!b)`'m!n!o!J'p!X,q!r!s!t!u!{!O'c!v!<=<=&=`*+=1=G*x=x=k*k*7*}*|*%* *Z&Z&R&y&r&r&m&j&6&c&_&2&_&*& &T%T%O%E%m%+ + + + + + + + + + + + + d!E@F@t@t@s@|@f@^@=@=@@@S++@D+e@C+s+s+q+7+7+2+]+'+:+-+'+-+.+X.D.D.x.i.i.c.c.c._ +.M ^.[.^.V V C C 4.V C V >.C C >.4.>.C >.V V V C C C V V >.4.>.C >.V 2# ", -" 3%^ { ] { ] { ] { ] / ] ^ / ^ ] ^ ^ ] / ^ ^ { ] / ] ] { ^ { ^ ^ ^ _ _ {.{.2.2.c.h.w.D.D.D.D..+$+$+'+<+:+<+<+e+7+7+s+q+C+C+C+D+X+@@=@=@=@/@|@f@f@t@y@Q@Q@Q@Q@W@-#`@/#/#/#4#3#7#7#y#y#I#O#U#U#U# $~$~$7$7$8$3$o$F$K$W$X$_%c%_%A% #+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w!x!y!b'b'z!K)x!2!2!2!A!=!B!C!l!s)~)>!D!R)E!F!v)c)W,V))'G!0!A)H!!'{!Y)Y)~'<=^=`*.=T*S*G*u*v*b*7*7*}*%*2* *Z&P&R&y&r&l&l&e&d&|&_&&&%&~&=&C%C%G%n%e%+ + + + + + + + + + + + + I!E@t@t@t@9*f@|@6@=@@@@@*@D+C+s+C+q+r+q+7+2+e+<+<+-+'+$+X.X..+D.D.i.h.v.c.C.c.3 M [.^.^.C V V 4.C V C >.V 4.V V V V >.V C C C 4.4.C V 4.C 4.>.C C >.0% ", -" J!] / { ^ { { { { { { { ^ ^ ^ { { / { / ] ^ ] ] ^ { { ] { ^ { ^ _ _ {.{.{.l.c.c.h.i.w.D.D..+W.-+.+-+'+]+]+f+g+7+7+y+y+C+C+D++@X+X+X+@@r@=@f@q#q#s@y@M@Q@Q@Q@W@`@`@)#/#4#4#3#7#f#f#f#u#E#O#N#O# $ $~$~$3$7$3$_$F$F$F$!%!%W$X$_%K!+ + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+N)L!w!M!N!O!L)L)A!=!k!B!P!Q!R!s)P){)S!T!U!V!U)W!X!Y!G!Z!`! ~B).~.~c!+~<=<=%-%=T*S*G*w*v*n*b*c*}*|*~*$* *Z&P&G&S&r&l&t&j&c&|&_&)&&&`%T%C%M%F%n%m%+ + + + + + + + + + + + + + F@t@f@9*f@7@6@|@=@@@@@X+S+D+D+C+s+7+y+7+g+6+]+'+]+-+.+X.X.X.D.x.w.i.h.2.c.c.S O+[.^.^.^.C >.C C >.>.C C 4.4.>.C C C V C C C C C V >.C V V 4.C V V b. ", -" ^ { ] ] ^ / ] { ^ / { { { ] ] ] { { / ] ^ { ] { ^ { ] { { { { ^ _ !.~.!.2.2.2.h.w.h.K.D.D.X..+.+-+-+:+]+6+f+2+7+x+n+s+K+D+D+D+X+W+=@=@/@^@f@s@g@s@y@F@M@F@l#W@`@`@`@)#4#4#7#f#f#f#u#u#E#N#N#U#U#U#&$7$~$3$3$_$A$F$F$W$/&X$_%+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+@~C!C!C!#~#~#~#~#~#~C!$~;!%~s)&~*~=~-~;~>~,~W!8!'~)~!~e)~~`,{!.~O'{~]~<=^=== =+=G*u*v*m*b*7*7*-;~*~* * *Q&P&z&z&r&l&e&d&6&**_&!&!&*&T%M%M%D%m%e%+ + + + + + + + + + + + + ^~y@s@s@f@f@|@=@=@@@@@X+S+X+D+D+s+n+7+x+7+2+6+]+'+-+'+.+.+X.D.D.D.x.i.h.c.c.c.J*......^.>.C C >.>.>.C C C 4.>.>.V 4.V 4.C C >.4.V V 4.V >.V >.C 4.V ", -" $%] { ^ / ] / / { ^ { { { / ] { ] ^ ^ ] { ] / { / ] / { ^ ] J =._ _ !.!.{.c.2.h.h.x.w.x.W.X.W.X..+-+'+'+<+<+7+7+7+s+s+C+K+D+9&+@X+W+=@=@6@|@|@t@f@t@F@E@Q@W@Q@`@)#)#/#)#4#3#7#a#f#)$)$u#U#u# $U#!$!$~$~$h$_$3$o$F$A$W$!%X$X$+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+/~(~_~:~<~[~C!$~$~Q!}~s)|~1~2~3~4~-~u)5~6~7~8~'~'~9~F,s! ~B).~.~^!0~a~^=,=%=S*S*w*w*w*m*b*7*}*|*~* *3*.*G&H&z&r&r&j&e&6&g&|&3&&&~&Z%T%C%D%D%m%e%+ + + + + + + + + + + + + + t@g@g@f@|@6@r@@@@@X+*@X+D+K+K+q+o+q+7+7+<+6+:+Z+'+-+.+X.D.W.D.w.v.i.h.j.c.2.M +.[.^.>.V C C >.V C V V C C C >.V >.V C C V V C V V V >.V 4.>.V 4.)% ", -" / ^ ] ] ^ { ^ { { { ^ / ] / { { ] { ^ { { { { ] { { ] ] / { _ _ l !.{.2.2.j.j.h.h.w.w.D.W.D.-+.+-+'+'+]+6+]+7+7+7+q+q+D+K+e@X+S+-@=@=@r@/@|@s@t@t@t@M@Q@Q@Q@l#$#$#/#)#}#4#3#5#f#f#f#I#u#N#U#U# $&$~$~$~$7$_$o$_$A$F$F$K$J#+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+&~b~s)/~c~d~R!(~e~R!f~g~h~i~=~j~-~k~T)6~7~l~p!y)m~n~0!o~B)N'.~]!+~~'<=p~%= =T*G*G*w*l*b*b*7*1*1*%* *Z&P&P&E&z&r&l&t&f&7&|&|&_&%&~&T%C%C%D%H%m%g%+ + + + + + + + + + + + + + t@f@q#|@|@=@=@=@x@X+D+D+C+D+s+y+7+7+7+6+]+<+]+'+|+.+$+W.D.D.D.x.i.j.,@c.2.` ..[.^.^.>.C C 4.C >.C V C 4.V C C C V V C C 4.V V V C C 4.>.>.V V V ", -" U$] ] ] { { ] { ] ] { ] ^ ^ { ] ^ ] ] ^ / { / / ] / ^ ] / { ] _ !._ !.{.2.{.2.i.j.x.w.D.D.{+.+-+.+-+]+]+2+2+7+7+r+s+s+Z#D+D+D+S+S+X+@@/@f@|@|@q#t@t@t@M@M@W@Q@`@`@$#)#/#4#7#3#f#7#E#y#u#u#u#N#q~ $~$&$~$7$8$8$_$o$u$A$F$u&+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+r~&~s~s~b~t~b~g~u~r~h~*~4~`'T!k~v~'!7~l~p!w~5'x~0!t!y~a!.~z~A~0~~'^=p~S*S*G*w*w*n*n*b*7*H;}*#*$*Z&Z&P&E&H&s&l&l&e&f&c&|&_&&&%&`%T%T%M%t%m%m%e%+ + + + + + + + + + + + + + s@t@|@f@6@r@=@x@@@X++@C+C+K+s+y+x+7+7+6+2+5@<+'+'+-+ +{+D.D.w.w.h.h.c.2.2.U+^.O+^.^.C C C C C >.C C C V >.4.>.V V C 4.C >.C 4.>.C C V V 4.C 4.H. ", -" 2#] / { / / ] ] { { { ] ] { ] { { ] { ] / { ] { / ] ^ { / / ^ _ _ _ %.~.{.c.c.h.h.h.h.D.D.W.X.$+.+-+'+Z+<+e+2+7+x+y+q+C+q+D+C+X+W+X+=@=@/@^@|@|@t@D@y@F@Q@Q@Q@l#`@)#)#)#/#4#5#s#f#f#t#)$u#u#N#O#U# $~$~$~$~$3$_$o$u$u$F$B~+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+4~D!*~*~i~h~h~h~=~C~S!D~E~k~F~'!G~H~I~8!J~K~L~0!~~t!M~N~z~]!0~a~a~'=.=S*[-w*u*n*l*b*b*7*}*~*&* * *Z&R&E&r&r&l&e&6&d&|&|&)&!&*&`%C%C%D%E%p*e%7%+ + + + + + + + + + + + + + t@q#f@/@=@=@@@@@@@D++@D+C+s+s+s+q+7+7+]+]+:+m+'+l+X. +D.O.D.w.w.h.j.c.7.g.j#+.^.^.>.W#V >.C C 4.V >.C V >.C 4.C V C V V >.C V 4.C V C 4.V V 4.2# ", -" O~^ ^ ] ^ { { ] { { ^ / ] ] { ^ ^ ] ] ] { ^ { ] ^ ^ ] ^ { ^ _ _ _ _ !.!.{.2.2.h.h.K.V.D.W.X. +-+'+'+'+<+<+6+7+n+y+y+C+q+C+D++@X+X+=@=@=@|@^@f@s@g@t@t@F@Q@W@r#`@l#)#/#W%)#4#s#3#7#f#E#y#u#N#U#u#U# $@$~$~$~$3$_$3$F$A$P~+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+D~D~Q~S!S!R~R~R~D~S~E!E!F~T~'!U~V~W~X~Y~Z~!~0!`~t! {u!.~.{0~0~C)^=&=S*S*G*w*w*l*f*b*7*}*}*%*&*$*Z&R&H&z&r&r&l&f&c&7&|&2&3&%& &`%O%G%F%m%m%e%f%+ + + + + + + + + + + + + + t@|@|@/@/@=@@@W+X+S+D+K+s+s+r+y+7+2+<+6+]+Z+'+$+.+X..+{+D.V.V.x%i.2.c.2.=.+...[.^.C ^.>.V C C V C C 4.>.V V 4.V 4.C 4.C V V C C 4.V C >.>.V W ", -" z$^ ] { ] { { ^ ] / ] ] ^ ^ / { / { / ^ ] ^ ^ ] ] / / ] ] ] { _ _ _ {.{.{.2.2.c.c.h.i.x.D.{+X.$+1+.+'+]+<+6+2+7+y+q+q+s+K+D+S+X+S+W+($r@r@f@|@f@g@t@F@U@Q@Q@W@$#W@)#-#/#/#4#d;7#7#f#y#)$f#u#U#u#U#U#&$~$~$~$h$3$_$_$A$+{+ + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+@{E!#{${#{#{@{E!%{&{v~*{={V~-{;{>{,{'{!~){`~t!H!N~z~!{A~~{a~{{p~`*S*G*w*v*x*l*b*7*7*1*|*&*$*Z&Z&P&z&z&l&l&j&j&d&c&|&&&!&*&`%T%C%C%F%m%e%e%<%+ + + + + + + + + + + + + + f@f@^@r@=@=@X+W++@X+D+s+J+s+q+n+7+7+]+]+'+<+-+$+-+X.D.P.D.D.i.i.h.2.2.7.F.O+M ^.C ^.V V >.4.>.C 4.C >.>.4.>.>.>.4.C V C C 4.>.>.V C V C >.C z$ ", -" l@] ^ { / ] ] ] / { { ^ ^ ] { ] { ] { { ^ / ] { ^ ] ] ] { ] J _ l #.!.7.c.c.h.i.v.v.V.D.W.{+W.-+-+'+'+<+]+]+7+7+y+q+s+s+D+D+S++@X+-@=@=@6@|@f@g@t@s@t@y@F@Q@Q@$#W@)#)#)#/#4#4#5#s#a#T#f#E#u#E#N#O#.$U#+$~$7$7$8$_$_$+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+T~&{]{^{&{/{({]{6~_{G~:{<{[{X~>{}{Z~|{1{`~2{3{u!4{!{5{0~8'a~%=6{S*G*w*w*m*k*g*b*7*}*}*~* *Z&Z&G&H&s&r&l&l&j&c&|&|&2&2&!&`%T%M%N%C%H%H%e%7%8%+ + + + + + + + + + + + + + |@|@/@r@@@@@X+W++@D+Q+C+C+y+r+7+7+g+e+<+'+'+-+'+X.X.O.D.x.w.K.h.c.2.{.!.u+a+S.^.4.C V C >.V >.C C C V C C V >.>.C C V 4.C 4.C >.4.V V >.>.7{ ", -" n${ { { { / { { ] { ^ ^ ] { / { { ] { ] / ] ^ { ] ^ ] ] ^ _ { _ _ l $.!.l.2.c.r.c.h.V.D.D.X.P.X.-+-+-+'+<+g+f+7+7+s+s+s+K+D++@S+@@S+=@=@=@^@^@f@f@t@t@y@M@F@W@W@$#-#)#`@/#4#'*5#7#7#y#I#t#u#%%N#N#U#.$+$!$&$~$7$8$3$+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+:{_{8{_{_{9{9{0{a{b{;{X~p!Y~c{Z~9~1{d{`~e{3{N~4{!{f{~{8'{{p~6{T*G*w*w*n*n*g*7*7*7*1*&*$*Z&Z&P&G&F&z&r&r&f&j&6&|&_&_&&&&&`%T%M%F%G%H%p*7%7%]%+ + + + + + + + + + + + + + |@7@f@=@=@S+@@S+D++@C+s+s+r+7+7+2+<+]+]+:+-+-+$+ +X.W.D.w.D.i.c.C.{.{.!.G.[.^.>.B 4.C C C C 4.C 4.V 4.C C V V >.V V C V C V C V C C V V 4.n$ ", -" w+{ ^ ] { { ] ^ ] / ] ^ { ] ] ] { ] { ] ] { ^ { ] { ] ] { { _ _ %.!.{.2.2.2.c.i.h.w.D.D.D. +.+-+-+:+]+]+]+e+7+7+q+y+s+s+D+D+D+S+W+=@@@=@=@/@|@f@t@t@t@y@F@W@Q@W@$#`@)#)#)#4#4#f#4#f#f#T#E#u#E#N#u#U#U#+$~$&$7$7$f#+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+g{h{h{h{i{j{j{;{p!p!Y~c{k{9~l{d{m{t!H!n{N~4{!{]!o{~'{{{{%=S*G*G*w*n*m*f*7*7*7*}*1*#*Z& *Z&P&E&S&r&l&t&f&n&g&|&|&&& &`%T%T%O%M%H%:&e%7%6%[%+ + + + + + + + + + + + + + ^@=@/@@@@@X+X+9&C+s+C+s+x+n+7+2+2+<+'+'+'+1+X.X.P.O.P.x.x.v.i.h.2.c.2./ a+^.^.^.^.>.4.>.4.V C V 4.C V C >.>.>.C C C >.C V >.C C >.C >.V p{ ", -" =#{ ] { { / { / ] / ] { { / ^ ^ / / ^ { ^ ^ { ] { { { ] ^ ] _ ^ l _ %.{.2.2.2.i.v.V.D.D.D.X.{+-+$+-+]+]+<+e+2+7+n+y+s+q+C+D+D+*@+@X+@@=@=@/@7@f@f@t@y@E@F@M@W@Q@r#$#-#/#/#4#4#4#a#7#7#f#f#I#E#N#N#N# $U#@$~$~$~$J$+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+q{r{X~X~>{>{>{c{c{c{s{!~!~1{){t{u{n{v{4{w{x{y{y{a~{{z{%=+=S*w*w*u*n*f*b*7*7*|*}* *$*Z&Z&Z&G&E&r&r&t&e&d&7&**_&3&2&*& &T%C%F%E%H%e%g%f%<%-%+ + + + + + + + + + + + + + =@/@r@@@X+@@S+D+C+q+s+s+o+n+7+g+g+]+]+m+'+-+$+.+W.D.D.D.x.v.j.r.c.2.!.U+..^.>.^.V C V C 4.C >.C V C V C V >.V V V >.C V C C >.C >.V C >.'# ", -" _.] { ] ^ { / { { ^ ^ ^ { { / / ] ] ] ^ ^ { ] ^ ] { { { / ^ ^ _ %.l !.{.c.,@j.h.i.i.x.O.D.D.X.-+.+'+'+<+<+<+2+y+7+x+s+s+C+C+D+S+X+@@=@=@/@/@/@f@f@t@t@F@t@F@Q@Q@W@`@-#)#-#/#4#4#4#5#f#f#E#E#I#O#O#U#U#!$ $@$&$^*+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+k{A{B{C{C{C{C{D{x~E{E{F{`~G{H{3{I{v{w{J{]!y{y{K{z{z{L{1=G*v*u*v*n*b*7*b*7*-;}*~* *3*.*P&H&y&r&s&t&l&e&c&7&|&_&_&)&~&*&{*C%F%D%e%e%M{f%[%-%+ + + + + + + + + + + + + + /@=@@@@@@@S+D+C+D+D+y+q+q+x+7+<+]+]+'+'+'+.+.+X. +W.w.h.i.h.c.c.{.{.!.,#O+^.>.^.C 4.C V C V C C C C 4.C >.4.C C >.V V >.C C >.C >.C >.N{ ", -" ^ { ] / ] / ] { { ] { ] ] { { ] ] { / / ] / ] { ^ / ^ { ^ { _ _ _ #.g$l.2.i.i.h.x.x.D.O.W. +$+-+'+:+<+5@<+<+7+x+y+r+s+C+C+S+D+D+@@W+@@=@^@|@f@f@t@y@t@E@Q@F@Q@Q@$#W@)#)#)#)#4#7#5#7#7#f#u#t#u#u#N#N#O#U#@$ $g#+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+O{l{P{Q{O{R{R{F{S{t{T{U{u{3{V{I{I{w{J{5{W{W{C)z{X{%=1=w*G*w*n*m*g*g*e*H;7*&*%* * *Z&R&G&H&H&r&r&j&f&f&c&|&_&&&&&)&`%T%C%F%G%m%e%7%8%<%[%-%+ + + + + + + + + + + + + + /@@@S+S+W+S+D+C+C+s+n+q+s+7+g+2+<+:+'+-+$+X.W.X.D.D.w.v.i.h.i.c.{.{.=.O+[.^.$$C 4.4.C >.4.V V C C >.C 4.C C V C C V >.C C V V V >.V V ", -" Y{{ / / { ] ^ { { ^ ^ ^ { ^ / { ] { ^ ] { / { { { { { ] ] J _ _ _ #.%.{.c.2.j.h.h.D.x.D.P.X.X.$+-+'+]+<+<+f+7+7+o+r+s+q+s+D+D+S+S+X+=@^@|@f@f@|@f@g@t@G@y@M@Q@W@Q@$#`@`@`@4#/#}#5#f#7#f#f#u#u#E#u#E#U#U# $+$Z{+ + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+`{ ].]+] ].]u{@]U{3{n{n{#]I{$]J{J{!{y{W{W{z{%]&]p~G*w*w*u*x*m*l*f*7*}*}*%*~*2*$*Z&Z&R&H&y&r&*]l&m&c&7&**|&_&&&%&*&`%T%C%G%n%H%e%7%6%]%[%+ + + + + + + + + + + + + + + =@=@W+X+T@D+D+Q+q+s+q+y+7+g+g+6+]+]+'+-+1+.+{+O.D.D.x.h.i.2.c.c.2.!.-.^.^.^.C C >.C C >.V C V C 4.C V 4.>.C >.V C 4.C V V V >.V C >.=] ", -" 3 / ] / { { { { { ] { ] { ^ ] / ^ { ^ ^ / { ] ^ { ] { { { _ _ #.%.!.2.2.2.c.c.i.i.D.w.D..+X.-+-+'+'+<+]+]+6+e+7+y+s+q+s+C+D+S+W+X+=@=@/@6@|@|@|@f@t@t@t@y@Q@Q@Q@W@l#$#)#)#)#4#3#3#s#0#7#y#y#E#E#J#u#U#U#U#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+-];]H{H{-]>],]#]#]#]$]I{$]']J{!{y{)]!]<=^=%]~]L{G*w*w*l*n*n*f*f*7*}*|*#*~* * *Z&Q&Z&H&S&r&l&l&j&f&7&|&|&|&2&&& &`%C%C%D%F%n%m%e%f%[%[%-%+ + + + + + + + + + + + + + + =@=@@@S+D+D+C+s+q+q+r+7+7+<+7+<+'+'+'+.+$+W.D.W.D.i.i.h.h.,@2.2.{.!.+&^.^.>.>.>.4.4.C V >.V V >.4.>.V 4.V V V 4.C >.V C C V C C C ,$ ", -" `#^ ^ { ] / ] { / ^ / ^ ^ { { ] { ^ { { { / ^ / { { ] ] ^ ^ ^ ~.%.!.{.2.2.c.C.h.i.i.D.D.X.D.X.-+.+'+]+:+<+g+7+7+7+y+q+J+C+C+C+S+@@X+x@=@=@=@^@f@f@t@t@t@t@y@Q@W@W@Q@$#`@.&)#/#/#4#4#5#7#f#f#y#E#E#u#u#O#*-+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+{]]]^]]]/]/]]](]_](]_]J{f{!{:]W{W{!]%]p~L{L{P=w*w*x*x*g*b*b*d*7*}*}*!*~* *Z& *Z&F&R&y&r&r&t&j&e&6&c&|&_&3&)&*&`%T%T%M%F%H%e%e%7%[%<%-%-%+ + + + + + + + + + + + + + + @@=@*@T@D+D+s+s+y+s+n+7+7+2+]+'+:+'+1+.+W.X.X.D.D.V.x.h.j.c.2.{.!._ a+^.C C 4.V C >.C >.C C V 4.>.V 4.4.>.C C C C V V >.C C C C 4.= ", -" =+] { ] ^ ] ] ] { ^ ^ ] ] ] { { { ^ ] ] { { ] ] ] { / { / ^ _ $.!.!.~.{.c.2.c.i.x.i.D.W.X..+.+-+1+-+<+<+]+]+7+7+n+q+q+s+K+D+S+S+@@@@@@=@=@|@f@|@f@g@s@t@U@G@Q@$#Q@W@-#`@)#)#/#4#5#5#7#3#f#y#I#y#u#E#u#-#+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+']']<][][][][]}]x{!{x{|]1]!]W{a~X{%]L{~]2]G*w*w*n*n*l*g*e*b*H;}*}*|*~* * *Z&Q&G&y&z&s&r&m&t&e&f&c&|&_&_&!&%& &`%T%O%E%G%H%e%7%8%]%[%{%@%+ + + + + + + + + + + + + + + x@S+D++@D+C+J+q+r+x+7+7+7+2+<+'+'+'+-+-+X.X.X.D.D.i.w.i.2.c.c.!.!.K a+>.^.>.V V C V V C >.4.>.4.C 4.V 4.>.4.>.V C >.V C 4.C C 4.W ", -" { { { ^ { { ] / { { { / ^ ] { ^ { { { / { ] { { / ] ^ { ^ _ ~.%.!.!.7.2.h.,@h.w.i.D.D.D.O.X.X.'+-+<+'+6+<+2+7+7+q+s+3]C+J+D+D+X+W+=@=@r@r@7@^@f@f@t@D@y@t@y@Q@Q@Q@W@$#`@-#/#/#/#4#5#4#f#7#f#)$u#E#u#4]+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+5]:]6]5]:]6]5]5]|]5]7]8]9]0]&]~]p~L{a]P=w*w*m*x*k*l*b*b*7*1*-;#*#*%* * *Z&Q&P&P&y&r&r&l&l&j&7&6&|&_&_&&&%&`%~&T%C%E%m%H%e%e%7%]%[%-%-%@%+ + + + + + + + + + + + + + b]X+S+9&D+D+C+q+y+n+n+7+2+6+'+'+]+-+.+.+.+.+O.D.D.i.h.i.i.2.g.g.{.~.;.^.^.^.C C V C >.V C C 4.>.V C V 4.C >.V C C V 4.>.V V >.>.V ", -" c]{ ] ] ] { { { ] { / ^ ] ] { { ] / ^ ] { / { ] { { { { / _ _ _ {.{.!.7.2.r.j.i.i.w.D.D.W.X.W.-+-+'+'+]+<+6+g+7+y+o+q+C+s+D+D++@S+X+@@=@=@=@|@f@f@f@t@y@t@E@M@Q@r#l#$#`@)#)#)#)#3#5#s#7#3#f#f#)$)$u#d]+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+!]~{!]W{~{W{0]a~0]a~&]e]f]L{L{L{L{P=w*v*x*m*l*f*f*7*7*7*}*|*%*&*~* *$*Z&P&P&H&y&r&l&l&t&m&6&c&c&_&2&&&!&`% &T%C%M%D%t%n%e%7%6%]%[%-%.%+ + + + + + + + + + + + + + + g]S+S++@s+D+s+q+7+7+7+7+7+6+5@'+:+.+.+.+X.O.P.w.V.i.h.c.h.c.2.2.{.=.^.[.>.>.V >.C V 4.C C >.C C C V C V V 4.V C C C V 4.C 4.>.C Q# ", -" #.^ { { { ^ { ^ / { ] ] { { ] { ] { ] ] ] ^ ^ ^ / { { ^ J { l _ !.{.2.7.c.c.i.D.w.D.W.W.W..+.+.+-+-+'+2+<+2+7+7+y+n+q+J+C+s+D+X+X+@@X+V#=@=@f@|@f@t@t@t@E@t@Q@Q@W@W@$#$#`@)#)#}#4#4#5#3#a#f#y#I#T#h]+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+&]&]&]&]&]&]i]&]&]&]L{L{2]2]j]P=P=x*x*l*n*g*g*e*b*7*}*H;|*%*~*%* *Z&.*G&F&z&r&I&r&r&j&t&j&7&|&|&_&_&!&~&T% &C%N%C%G%m%e%7%7%f%=%-%-%Z$+ + + + + + + + + + + + + + + k]S+D+D+C+Z#r+s+q+7+2+]+]+:+'+m+'+X.X..+D.{+D.w.v.i.h.i.2.2.2.{.!.T ^.^.W#C V C V V C C >.C C >.>.V V C V C 4.>.C >.C 4.C V V a+ ", -" C#{ ] ^ / ^ ] / ] / / { ] { { ] / ] { / ^ { ] ] { ] ] / / _ _ _ $.!.{.2.2.j.c.v.w.D.D.D.{+.+W.-+-+'+]+<+2+<+7+2+7+r+s+q+C+C+C+S+S+X+-@=@=@=@7@f@f@f@t@t@t@E@F@Q@Q@W@`@`@$#)#)#)#)#/#4#4#7#3#f#f#E#O&+ + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+~]i]~]i]2]l]2]2]2]2]2]P=[-U*m]l*x*l*g*b*b*f*g*7*}*1*!*~*%*%* * *Z&Z&P&P&y&z&z&S&r&m&j&f&7&c&g&_&_&)&!&`%Z%C%O%O%D%m%e%7%e%7%]%=%@%@%+ + + + + + + + + + + + + + + + /*+@D+C+s+q+n+r+x+7+6+6+6+:+m+-+'+.+W.W.D.D.D.D.i.i.c.c.2.2.7.!.l ~=^.^.C V V C C >.>.C C C C C C V >.>.>.V C V C V C C V C C G# ", -" n]^ ^ / { ] { ^ / / { / { / { ] ] ] ^ ^ ] { ] ^ { { ] ] ^ _ _ %.!.~.!.2.2.c.i.w.v.x.D.D.D. +X.1+-+-+]+]+<+2+7+7+7+o+x+s+K+C+S+D+X+S+X+X+/@^@|@|@f@s@s@y@t@t@F@F@a%l#Q@$#)#-#/#)#/#4#4#4#7#0#7#7#+ + + + + + + + + G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w*G*U*o]w*o]U*o]o]o]o]w*m*m*m*f*b*b*b*7*7*7*-;}*1*|*#*&* * *2*Z&L-R&F&y&S&r&l&l&l&e&d&c&**|&_&_&%&!&*&T%T%M%M%E%t%m%e%8%7%[%[%p]|%#%+ + + + + + + + + + + + + + + + L#+@C+s+q+r+x+o+7+7+7+2+<+'+'+1+-+.+.+{+P.D.D.i.h.h.c.c.2.2.~.~.( ^.^.>.>.C V C >.4.>.C >.>.>.>.V V >.>.C V C C 4.>.C V V V B# ", -" q]{ / ] ^ { { / ] { ^ ] { { ^ ] { ^ { / { / { ^ { / ] _ _ _ _ %.!.{.3.2.c.h.h.x.v.V.D.X. + +$+$+'+-+:+<+]+7+7+7+7+s+q+s+K+D+D++@X+@@@@@@=@=@7@^@f@g@f@t@t@t@F@Q@Q@Q@W@$#-#-#)#)#/#/#/#7#4#a#)#+ + + + + + + + r]G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+s]x*t]u]t]s]o]t]s]b*k*b*b*k*7*b*7*7*7*|*H;H;|*%*&*&*&*2* *Z&Z&G&P&z&E&H&r&r&m&l&j&7&6&c&|&_&)&)&`%&& &T%C%O%F%F%m%e%e%8%8%<%-%@%+%Y$+ + + + + + + + + + + + + + + + D+C+C+C+s+o+n+7+7+6+<+2+<+m+1+-+X..+ +O.D.x.V.v.h.h.c.{.{.!.l %.j#^.V >.4.V C C >.4.C C C 4.>.V V 4.C C C V V C C V V V 4.v] ", -" p#] ] { { / ] / ^ ^ ] { / ] ^ { ^ { ] ^ ^ { { { { { ^ { / ^ l !._ ~.!.7.c.r.h.h.w.x.D.W.X..+.+.+-+'+'+:+<+<+7+7+x+y+s+J+s+D+D+D+S+X+X+@@=@/@/@|@f@|@g@t@y@t@E@F@M@Q@W@$#$#l#`@)#/#)#/#3#3#7#w]+ + + + + + + + x]G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+b*b*7*b*b*f*b*b*b*b*c*7*f*b*7*|*}*}*}*}*%*|*%*#*~* *2*Z&Z&Z&P&R&z&z&r&r&l&r&i=j&n&7&g&|&_&3&_&&& &=&T%C%G%C%E%m%m%M{7%6%-%{%@%@%#%y]+ + + + + + + + + + + + + + + + K+s+C+s+n+x+7+7+7+<+<+]+'+'+'+.+.+X.D.P.x.V.h.v.j.j.c.{.{.%.~.=.^.^.>.$$4.C C 4.>.V V C C V C 4.4.V 4.4.C V 4.C V 4.4.V >.k# ", -" b.{ ^ ] { { ] { ^ { { ^ ^ / { ^ ] / ] { / ^ { ^ ^ { { ] _ _ _ !.{.!.7.c.c.h.j.i.D.D.D.P.W.O.X.$+|+'+'+2+]+g+e+7+7+7+q+s+s+D+C++@X+W+S+x@=@=@7@7@/@f@g@g@s@t@F@E@F@F@Q@W@$#$#)#`@-#/#/#4#4#U%+ + + + + + + z]A]G+G+G+G+G+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+7*7*7*7*7*7*7*7*7*7*}*}*7*|*1*1*~*1*1*&*&* *&*2* *Z&Z&.*G&P&E&H&E&S&r&l&l&j&f&n&6&d&|&1&_&%&)&`%T%Z%C%C%M%E%m%e%e%7%8%]%[%-%|%#%Z$B]C]+ + + + + + + + + + + + + + ^~D+C+C+q+y+x+7+2+<+]+'+]+'+-+-+.+X.W.D.D.D.v.i.h.,@2.l.{.!.%.l D]^.^.4.4.>.V C >.>.V V C C C >.C V C C 4.C C C >.C V V C b. ", -" $ ] ] { ] { ] ] ] / { { ] ] { ] { ] ] ^ { / ^ { ] { { { _ ^ _ ~.{.{.2.l.2.h.h.h.w.w.D.D.W.X.$+-+-+'+'+<+]+]+e+7+n+s+q+s+s+K++@+@S+W+W+@@=@/@^@/@r@g@t@t@t@t@F@F@Q@Q@Q@$#$#$#6#)#^#/#)#D#E]+ + + + + + + F]`%G+G+G+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+}*|*|*!*}*}*}*|*|*}*}*}*}*|*~*&*#*%*~*&*2* *Z&Z&Z&Z&P&P&H&z&z&I&S&r&t&m&e&7&f&****|&J&&&)&&&`%T%T%C%M%M%G%E%e%e%8%8%[%-%-%@%.%Y$M$P$G]+ + + + + + + + + + + + + + H]K+q+q+s+7+y+<+6+2+<+]+-+'+1+.+X.{+D.D.D.i.h.i.c.i.c.2.{.{.!.#.+.^.>.C C C >.4.C C C V C V V C C 4.>.C 4.C V V V C 4.V I] ", -" { ^ ] { ^ ] { ] { ] ^ { { { ^ / { { ^ { ^ ^ ] / / ] { J _ _ l $.{.2.2.c.j.j.i.x.w.w.D.P.X..+.+'+-+-+'+<+2+2+7+n+x+o+s+s+Z#D+D++@D+W+x@X+=@/@=@/@f@|@s@g@g@t@t@U@Q@Q@Q@Q@$#W@$#`@/#)#/#J]+ + + + + + + K]T%G+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+&*#*~*#*#*1*&*~*#*}*~*1*&*~*~*$*&* * * *$*Z&L]Z&Z&G&P&F&E&z&z&S&l&r&l&l&f&7&d&c&|&|&_&2&!&)&`%*&T%C%C%G%F%m%H%e%M{7%}%-%-%@%@%+%Z$H$I$P$+ + + + + + + + + + + + + + + q+s+s+q+7+7+g+<+6+:+<+'+.+$+X. +X.P.x.D.w.v.r.i.c.2.{.{.~.%.K >.^.C V C C >.C V 4.C >.C C V V 4.V C V V 4.C 4.V >.C V ", -" 2#{ / { ^ ] { { { / ^ / { / / { { ^ ] { ] { ^ / ] { ] { J _ _ _ l {.7.7.2.c.h.h.K.K.D.W.W.W..+.+$+-+'+]+]+2+7+7+7+n+s+s+C+s+C+S+S++@@@-@-@=@=@r@^@|@f@s@t@t@y@U@E@M@Q@W@W@Q@$#W@`@-#/#+ + + + + + + + M]T%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+ *2*~*~*o* *2*2*~*&* * * * *2* *$*Z& *Z&Z&G&G&R&P&R&P&H&H&r&r&r&l&m&j&e&7&c&c&|&_&_&&&%&!&`%=&T%T%D%E%F%H%m%e%7%}%f%<%-%-%+%.%Y$O$C$C$Q$+ + + + + + + + + + + + + + + + s+n+x+7+7+<+6+]+-+-+1+.+X..+O.W.D.w.x.h.j.r.c.2.l.{.l !.l G.>.4.4.4.C 4.C C C V C C C >.V V V >.>.V V V V 4.>.>.C 2# ", -" [#{ ^ { / ^ ] ] ] / { ^ { / ] ] { ^ / ] / ] ^ { ^ { =.^ _ _ %.l {.{.2.c.c.c.v.h.K.D.D.X. + +.+X.-+'+'+]+2+2+<+7+y+x+s+q+C+D+D+e@X+S+@@=@X+=@r@r@/@f@R#s@g@g@t@y@F@M@Q@Q@r#r#$#`@`@y@+ + + + + + + + N]N%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+Z&$*Z&Z&O] *Z& *2* * *Z&Z&Z&Z&Q&P&Z&.*.*P&P&R&H&z&y&H&r&r&r&m&l&m&j&7&6&c&|&|&2&2&_&)&*&*&T%T%C%F%O%H%E%H%e%7%}%}%[%-%@%@%+%+%M$O$C$C$v$+ + + + + + + + + + + + + + + + + 7+7+e+<+]+:+-+]+1+-+X..+O.W.D.D.x.h.i.c.C.2.{.{.%.{.l F.^.$$C V C 4.C 4.V C >.C C V C V C >.V C V V C C C V C [# ", -" ]#^ { ^ / { ^ { ] { ^ / { { ] { ^ ] ^ { ] ^ / { ^ / { J _ $.#.%.%.2.c.C.h.i.h.h.v.x.D.W.W.W..+-+'+Z+]+]+]+2+6+7+7+o+q+s+s+C++@D++@S+X+@@=@=@=@/@|@f@f@g@g@s@t@t@F@Q@F@F@Q@H#W@W@4@+ + + + + + + P]t%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+P&L-Q&Z&Z&Z&Z&Z&.*Z&Z&Z&Z&Z&Z&Z&Z&P&F&R&P&y&z&H&r&z&I&l&l&l&m&e&j&j&6&d&g&|&_&2&!&!&)&`%T%T%T%O%C%F%E%m%Q]e%7%7%}%<%=%@%@%.%#%M$C$C$R]v$r$+ + + + + + + + + + + + + + + + + + 2+2+]+<+'+'+-+.+.+.+X.D.D.v.x.i.h.h.2.c.2.{.!.%.$._ j#>.>.>.C V C 4.C >.V >.C >.C C >.C V >.>.C >.C C V C <# ", -" )./ ^ ] { ] { ] { ^ ] ] ^ { / { ] { { { ] ] { ] { { =._ _ _ l l !.2.7.c.h.i.h.i.D.D.D.{+X.X.X..+'+-+]+6+2+7+7+7+n+q+s+s+s+s+C++@S+D+@@=@=@@@=@/@f@|@f@f@s@g@t@t@E@y@E@Q@Q@W@Q@i++ + + + + + + S]m%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+y&P&R&P&F&G&P&Z&Z&G&G&L-P&F&F&P&G&F&E&y&E&H&S&z&r&S&l&r&l&l&j&e&e&n&6&|&**_&_&_&_&&&~& &=&T%T%O%M%F%m%n%m%e%g%7%<%<%T]@%@%+%+%O$I$I$C$v$w$E$+ + + + + + + + + + + + + + + + + + 2+<+]+]+]+-+1+X..+ +W.D.D.D.i.w.i.i.c.2.{.7.%.%._ ] B B C C >.>.4.C >.C C 4.>.C V V >.V V >.C 4.C V >.C /. ", -" y { ] ] ] { ^ { / ] { { { { { ] / { { / { / { ] / / { _ _ l !.~.2.2.2.c.j.h.h.x.D.D.D.D.X.X..+1+'+'+'+6+]+7+7+7+7+y+q+J+C+K+C+9&D+X+X+S+=@=@/@r@|@/@f@f@g@s@y@t@t@F@U@Q@W@$#U]+ + + + + + + V]F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+H&H&H&H&R&y&y&z&F&y&H&E&H&E&F&y&z&H&H&H&r&S&S&l&r&l&l&l&l&t&e&f&c&c&**|&_&_&_&2&&&)&`%*&`%T%C%C%N%D%H%H%e%e%e%7%W]W]W]X]Y]+%M$+%O$C$v$Q$v$w$w$Z]+ + + + + + + + + + + + + + + + + <+]+'+)+-+-+.+.+.+D.P.D.D.x.i.i.h.C.c.2.2.{.l _ _ M.>.C C C V C 4.V V C >.>.V >.4.V V 4.>.V V V 4.V C b+ ", -" =#/ { { { ^ { { { / { ] / ] / { ] { ^ ^ ] ] { { ^ / ^ { _ _ ~.%.!.2.{.2.h.h.w.x.D.w.D.W.D..+X.$+$+-+'+'+<+2+g+7+7+7+q+r+s+C+s+D+C+X+D+W+@@X+@@=@6@=@|@g@f@f@g@t@t@E@y@E@E@Q@`]+ + + + + + + ^F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+r&r&S&r&r&S&r&z&z&z&s&E&z&y&E&r&z&s&r&r&r&r&l&l&l&l&l&l&f&j&f&7&6&**|&|&|&|&3&&&)&!&`%`%T%M%C%M%G%G%m%m%e%e%M{W]W].^.^.^.^+^@^M$O$C$v$v$x$E$j$k$#^+ + + + + + + + + + + + + + + + + ]+]+m+'+'+-+X. +P.W.D.D.v.K.h.j.c.2.{.2.!.#._ _ ] 4.C C 4.V 4.V C V C >.C >.C C 4.V 4.C C >.C >.V C C '# ", -" ##/ { ^ { ^ ^ ] ^ { ^ ] { ] { { { ^ { { { / { / { { ^ _ _ _ _ {.{.{.c.c.c.i.i.v.i.D.D.D..+.+.+.+-+]+<+6+6+<+g+7+7+7+o+r+s+s+C+D+D+S+@@X+@@=@@@=@^@/@f@f@f@f@t@t@t@t@t@F@Q@+ + + + + + + + $^F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+t&m&l&r&r&r&l&l&l&S&S&r&r&r&l&r&l&l&r&l&m&l&l&j&l&e&j&f&6&j&7&**h*c&|&_&_&_&!&&&%&`%*&Z%T%T%{*F%D%G%m%:&m%e%W]W]W]W].^.^.^.^.^W]W]W]W]v$w$w$k$a$a$%^+ + + + + + + + + + + + + + + + + + '+'+'+-+.+.+P.{+W.x.x.v.v.i.h.2.2.2.!.{.%._ _ T >.C V C C >.C C 4.C >.V C C 4.C 4.V V 4.V >.4.C 4.&^ ", -" Z@/ { ] { ^ { ^ ^ ^ ] / { { { ^ ^ { ] ] { ] ^ ^ ] ^ ^ _ _ $.!.!.{.l.c.2.j.h.h.h.D.D.W.W..+X.X..+'+'+'+]+]+6+7+7+7+r+q+y+s+C+s+C+C++@X+X+@@X+@@@@/@r@=@f@f@g@f@s@s@E@t@S>+ + + + + + + + ]%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+j&j&j&t&t&m&t&t&l&l&l&l&l&l&l&m&t&j&m&l&j&l&e&e&j&j&f&d&7&|&c&h*|&**_&_&_&&&)&!&%&*&`%T%T%C%C%E%G%G%H%m%e%W]W]W]W]W].^.^.^.^.^.^.^W]W]W]W]*^s$a$a$=^&#+ + + + + + + + + + + + + + + + + + '+'+'+$+X.O.W.D.D.w.K.h.h.i.h.2.7.%.%.%.~._ ] >.>.C >.V 4.V V C >.C C V C C C 4.V V C C 4.C C C -^ ", -" '$^ ] { ] { { / ] / { ] / { ^ { ] ] { / ^ ] ^ / ^ / ^ _ $._ _ ~.7.!.c.c.i.h.i.x.i.D.W.O.X..+.+.+'+'+<+:+2+7+7+7+7+7+7+s+s+s+C+C+9&X+@@W+W+@@=@/@=@|@^@|@f@|@f@t@s@t@R=+ + + + + + + ;^-%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+c&n&6&j&n&7&f&f&n&n&f&t&f&j&m&f&j&f&j&e&f&7&e&c&d&c&g&6&|&|&|&|&|&_&_&_&3&%&*&%&`%T%=&T%T%M%M%E%D%G%m%e%W]W]W]W]W]W].^.^.^.^.^.^>^>^>^W]W]W]W],^'^)^!^+ + + + + + + + + + + + + + + + + + + + .+.+.+X. +D.D.x.i.i.i.i.h.2.{.{.{.#.l #.=.T C >.C V >.C 4.C C 4.C >.V C V C 4.>.C V C C C V !+ ", -" ~^] / { ^ { { ^ ] ] ] { / { ^ ] { ^ ] ^ ] / { ] ] { _ _ _ %.!.2.7.l.2.c.c.h.i.i.D.D.D.D.X.X..+'+.+<+]+<+2+g+<+7+7+y+s+7+s+s+K+D+D+D+X+W+@@@@=@=@=@7@/@f@f@t@f@g@g@K&+ + + + + + I={^=%G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+|&|&|&c&|&**|&c&j&c&6&n&7&j&j&e&6&f&c&c&6&d&6&c&c&g&c&|&c&g&|&|&|&2&&&!&%&)&)&`%`%`%T%T%T%C%O%F%E%H%n%]^W]W]W]W]W]W]W].^.^.^.^.^>^>^>^^^>^.^W]W]W].^W]W]+ + + + + + + + + + + + + + + + + + + + + .+.+W.O.D.D.D.i.i.v.c.i.2.2.{.d+{.!.%._ ] 4.>.V C >.C C V V V >.4.V C V >.4.>.V V C C C 4.O ", -" u.{ ] ] ^ ] ^ ^ ] { { { ^ / ] ] ^ { ] / / { ] / ` J J _ _ !.$.7.2.2.2.h.h.w.i.V.D.D.D.X..+X.-+-+-+'+]+<+6+2+<+7+7+n+o+s+q+J+q+C+D+D+X+X+@@@@=@=@=@/@6@^@f@f@f@t@/^+ + + + + + (^_^@%G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+_&2&_&J&|&|&|&g&|&**|&|&|&6&g&c&7&c&c&**g&6&c&**|&|&|&|&|&|&J&2&_&3&2&&&&&)&`%=&`% &T%C%{*C%F%G%G%H%:^W]W]W]W]W]W]W]W]W]W].^.^>^>^>^>^>^.^>^.^.^W]>^.^W]W]+ + + + + + + + + + + + + + + + + + + + + $+X.D.W.D.w.D.h.c.h.c.c.2.l.!.!.!._ _ =.G.>.>.>.>.4.4.>.>.V V >.>.>.C V C C V >.4.C V C z. ", -" <^] { ] { { ] ] / ^ { { { ] ] { ^ ^ / { ^ { ] ] { { ^ _ _ !.{.{.2.c.2.c.h.h.w.x.w.O.P.X.W..+-+'+'+'+]+]+]+2+2+2+7+7+7+q+s+s+s+D+D+D+S+X+@@X+@@@@=@=@|@|@/@f@|@+ + + + + + + {^[^}^G+G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+%&&&!&_&&&3&_&2&_&3&|&_&|&_&|&_&|&|&_&|&|&|&_&_&|&|&J&_&|&_&_&2&&&&&!&&&!&~& &T%`%=&T%T%C%C%C%F%G%n%H%W]W]W]W]W]W]W]W].^.^.^W]W]>^>^>^>^>^.^W].^.^>^>^>^.^.^W]W]+ + + + + + + + + + + + + + + + + + + + .+P.D.D.D.D.V.h.h.j.c.2.2.2.~.{.l _ _ f >.>.>.4.>.>.C V >.4.C >.C 4.C C V C >.C >.>.V n, ", -" d@^ ] { ] { { ] ] / / ^ ] { ^ ^ / { ] ^ { { { ^ { _ _ _ #.%.!.2.2.2.c.c.h.i.i.D.w.D.W.X.X.X.-+'+-+'+'+'+2+2+<+7+7+y+7+q+s+q+s+C+D+e@X+W+W+=@@@=@>$r@r@|@7@f@+ + + + + + + |^{^1^2^G+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+`%~&`%%&`%%&)&)&!&!&&&2&_&_&_&_&_&_&3&2&_&_&_&_&2&_&&&3&&&)&!&`%`%)&)&`%`%3^T%T%T%M%T%M%M%D%D%E%n%W]W]W]W]W].^.^.^.^.^4^5^6^7^8^9^0^a^b^c^d^e^W]W].^.^.^.^.^.^W]+ + + + + + + + + + + + + + + + + + + + P.O.D.D.w.w.h.h.h.c.c.2.{.!.#._ _ _ _ j#V V V C V V C 4.>.>.>.V V 4.4.V C C 4.V 4.4.W ", -" f^/ { { ] / { ] ^ { { ] ^ ^ / ^ / ] ] { { { { ^ ^ _ _ l #.{.%.!.{.2.r.c.h.h.V.D.V.P.W.W.O.X.X.-+'+:+-+'+<+6+g+2+7+n+s+r+s+q+s+K+D+D+S+S++@@@=@@@@@=@=@6@s++ + + + + + + + + + g^h^G+F+F+F+F+F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+T%Z%*&`%~&`%*&!&)&)&)&)&)&&&%&)&&&3&%&&&!&)&!&!&&&!&)&!&)&%&`%*&`%Z%T%T%T%T%T%T%C%C%C%E%E%E%m%:^]^W]W]W].^.^.^.^.^i^7^j^k^l^+ + + + + + m^n^o^p^q^W].^.^.^.^.^W]W]W]+ + + + + + + + + + + + + + + + + + O.D.D.V.h.h.i.c.2.2.{.7.{.{.l _ _ ^ K V C C V V 4.V V V V 4.C C C 4.4.V >.C C V V p@ ", -" l@{ ] ] ] ^ { { ^ { / / ^ { { { ^ ^ ] ] / / ] { ^ _ _ _ %.!.{.7.2.c.r.c.c.h.h.V.w.D.W.O.X..+-+l+-+-+'+]+]+2+2+<+7+n+n+r+s+s+s+C+K+D++@X+X+W+S+x@@@=@=@r^+ + + + + + + + + + + s^t^u^@%F+F+F+F+F+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+`%`%`%`%~&&&`%)&!&`%`%`%%&!&!&`%`%T%`%T%`%`%T%T%T%T%O%O%C%C%D%G%H%m%m%m%]^]^W]W]W]W].^.^.^v^w^x^y^W*+ + + + + + + + + + W*m^z^A^B^W].^W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + x.w.v.h.c.c.c.2.{.2.~.l _ _ _ { =.O+V V V V C 4.V V C V C V C >.C >.>.V >.C 4.p@ ", -" O~{ / { ^ ^ { ] ] ^ ] ] { ] { ^ ^ { ] ] ] { { ] { ^ _ %.{.!.%.{.c.2.c.h.h.i.h.D.D.D.W.W. +.+-+-+-+'+'+6+<+2+2+7+7+7+y+s+s+q+s+J+C+D+X+S+X+X+@@@@x@@@E]+ + + + + + + + + + + + C^D^g^E^F^F+F+F+F+F+8%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+T%T%T%*&`%T%=&T%`%=&=& &T%`%Z%T%C%C%T%T%C%O%C%N%F%E%F%H%t%H%e%e%]^W]W]W]W]W].^.^.^G^j^y^W*+ + + + + + + + + + + + + + + + H^I^e^W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + w.V.v.h.j.c.c.c.{.{.%.!._ _ _ / T V V C 4.>.C C C C C C C V C V >.C >.C V >.W ", -" x { ] ^ / ] { / { ^ ^ ^ / ] { { { { ] ] { ] ^ ^ _ _ _ %.l !.{.2.2.2.c.c.i.w.x.D.x.D.P.X.O..+-+-+-+'+'+<+]+g+<+2+7+7+x+7+q+s+C+C+D+C+9&+@D+S+@@S+=@J^+ + + + + + + + + ;@+ + + + + + W]W]W]W]W]W]W][%G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+T%T%T%T%T%C%-&T%T%T%T%C%C%C%M%C%N%N%O%E%D%E%E%D%m%n%Q]m%W]W]W]W]W]W]W]W]W]W]i^d^K^W*+ + + + + + + + + + + + + + + + + + + + L^0^W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + w.h.i.i.c.2.l.{.{.!.l %._ _ J S ^.C V V 4.C C 4.C V V >.C >.V V >.V V C C B+ ", -" _+^ ] / { { { ] { ^ ^ { ^ ] { ] { / ] { ] / { ^ ` _ $._ %.#.{.!.2.2.r.i.h.h.x.x.D.D.D.X..+X.l+'+-+'+]+:+2+<+2+2+7+7+q+y+r+n+J+K+C+D+D++@X++@S+@@+ + + + + + M^5+@@|@f@i++ + + + + W]W]W]W]W]W]W]W]W]G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+M%C%M%O%N%M%C%C%C%C%D%G%O%G%F%G%F%D%n%n%n%m%H%e%:^]^]^W]W]W]W]W]W]W]W]W]W]9^N^y^W*+ + + + + + + + + + + + + + + + + + + + + + m^O^K^P^k^Q^R^W]W]W]W]W]+ + + + + + + + + + + + i.h.r.c.c.2.{.{.!.$._ _ ^ ] _ G.V C V C C C V >.>.V >.V 4.4.C V >.>.C 4.z. ", -" S^] ] { { { ] { { / { ^ ] / ^ { ] / ] ^ ] ^ { J J _ _ %.~.{.!.{.c.c.c.h.h.K.K.w.D.D.D.X.X..+-+-+'+'+'+-+2+6+e+2+2+7+x+q+o+y+q+C+D+C+D++@D++@X++ T^U^V^@@=@^@/@/@6@^@f@O@+ + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G%G%G%F%E%E%C%G%E%D%D%D%F%G%D%E%D%E%n%:^:^:^:^]^]^W^W]W]W]W]W]W]W]W]W]W]9^+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + W*y^W]W]W]W]W]+ + + + + + + + + + + + h.c.2.2.c.!.!.{.%._ _ ^ / U+C C C C >.V C V >.>.C 4.V V >.V C V >.V }@ ", -" X^/ ] ] ^ ^ ] { ] { ] ] { { / { { { ^ ^ ^ ] ^ / J _ _ _ $.!.2.7.c.2.c.c.v.i.i.D.D.D.P.D. +-+.+X.-+-+'+:+]+2+2+2+7+7+x+7+n+r+s+s+C+s+D+D++@X+X+X+@@@@W+x@@@=@/@=@|@7@7@Y^+ + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]Z^G+G+G+G+G+m%E%t%H%m%m%m%m%n%D%H%H%m%m%m%:^]^]^W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]B^+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + W]W]W]W]W]+ + + + + + + + + + + c.c.2.2.{.!.!._ _ _ _ _ ] M 4.4.4.V V C 4.C V 4.>.V >.>.C C >.C C `^ ", -" /{ ^ { { ^ / ] ^ ^ { ^ { ] { { ^ ] { ^ { / { ^ _ _ _ #.%.~.2.2.2.c.h.h.w.h.v.D.D.D.W.P..+W.-+X.-+'+-+m+<+]+<+6+<+7+7+7+n+x+s+./s+s+C+K+D+X+X++@X+X+@@@@=@=@=@=@=@/@/@+ + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]j^+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + W]W]+ + + + + + + + + + + + + l.2.{.~.~._ %.^ _ ^ / j#V C 4.>.C C >.4.4.>.C C >.>.V 4.4.C C '@ ", -" .@{ / ^ { { / { ^ { ^ ] ] ^ { ^ { ^ { / ] { ` J _ _ _ !.$.%.{.2.{.2.c.j.h.v.x.w.x.D.W.W..+.+$+.+'+'+'+]+]+:+2+g+<+7+7+y+7+n+q+s+s+C+D+Q+C+D+D++@X+W+X+x@=@=@=@@@=@|@+ + + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7.!.!.~.l l _ ^ _ / K V V V C >.>.C >.V C >.V V V C C V V V a' ", -" J.f ^ / ^ / ^ ] { ^ / { / ^ ] { ^ ] ] / ^ { ^ ^ { ^ _ %.{.%.{.{.{.C.j.c.h.h.h.D.D.W.D.O.X.W..+.+.+$+-+'+]+]+2+7+e+2+7+7+7+s+q+y+s+s+s+D+D+D+D+D+D+S+X+W+S+x@=@@@=@=@+ + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {.%.$.%._ _ _ ` ^ / ..V C >.V 4.V V 4.C C C C V C V V C V G# ", -" +/] { { ^ ] { ^ ] / ] { ^ / ] / ^ ] { { ] ] J _ _ l {.#.$.{.c.2.c.c.h.i.w.v.i.D.D.D.W.W.O..+$+$+1+'+'+:+]+]+<+]+7+e+7+7+7+q+q+q+s+C+C+s+D+D+D+S++@D+W+X+x@=@@@=@@@+ + + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {.!._ _ _ _ ] { j#V C V 4.V 4.V >.C C >.C >.C V 4.>.@/ ", -" a { ^ / { { ] ] ^ ^ ] / ] { { { { { ^ / ^ ^ ] ^ _ !.l $.{.2.{.2.2.c.c.c.i.D.w.D.D.D. +X.X. +.+-+-+'+m+:+]+]+2+7+<+e+7+7+7+7+q+s+q+q+C+K+C+K+D+C+D+X+*@S+W+W+X+=@W++ + + + + + + + W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~._ _ ^ ^ ] / s C V V >.4.>.>.V >.V >.V V V 4.V >.#/ ", -" F / { ] ] { ^ ] ^ { { ^ / / ] ] / ] ] { ^ J { _ _ $.%.l !.7.{.l.2.c.h.i.h.w.w.i.D.D.P.{+ +W.X.X.$+1+'+<+'+'+]+<+2+]+7+7+7+7+7+y+n+q+s+J+s+K+s+C+D+X+D+S+T@S+S+@@@@x@+ + + + + + + + + + + + W]W]W]W]W]W]W]W]W]W]+ W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %._ ^ _ J ^ y S.V >.>.V V C >.4.C >.C V C V C >.Y ", -" $/F.{ { { { ] / ] { { { / ] { { / ] ^ { / { J _ _ _ ~.l {.!.2.2.2.c.c.i.i.v.x.w.x.D.D.X.X..+.+X.-+-+-+-+]+<+<+2+]+2+<+7+7+7+7+r+o+q+q+s+C+C+D+D+D+9&D+D++@W+X+S+W+@@+ + + + + + + + + + + + + + + + + + + + + + + + W]W]W]W]W]W]+ W]W]W]W]W]W]W]+ W]W]W]W]W]+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ^ J { { / { G.C >.V 4.>.C C C >.V C C >.V C ,$I+ ", -" %// ] { / ] { / ] { { { { { ^ { ] { ] ] ^ _ _ _ _ !.~.%.{.l.2.2.,@c.i.i.i.i.D.D.D.D.W.X.X.X.$+.+-+.+-+-+:+<+<+6+2+7+7+7+7+7+q+n+n+r+s+J+q+C+K+D+D+D+C+D++@X+@@@@@@W+@@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _ ^ J { / { L >.V C C C V >.V C >.V V V V 4.&/ ", -" `.] / / ] ^ { / { ^ ] { { { / ] ] ] ^ ] ^ ^ J _ _ #.l %.{.{.2.2.2.2.j.h.i.V.x.i.D.D.D.W. +X.X..+$+-+'+m+]+'+]+]+f+<+<+7+2+7+7+x+7+7+s+s+s+s+C+q+K+D+D+D+D+D+D+S+T@+@S++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _ ^ _ ] ^ ^ s V V C V C V >.>.V C C 4.C 4.4.*/ ", -" k+^ ] { { { ] { ] { { { { ] { / { { { / { { J _ _ !.!.~.!.!.!.7.2.2.h.v.v.v.K.V.D.D.W.D.O. +.+.+1+$+-+-+-+'+]+<+<+]+e+g+<+7+7+7+n+o+n+s+s+q+q+C+K+s+C+C+D+D+C++@S+S+@@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + J J ] _ ^ { F.a+C >.C V V V V >.V V V C C C p+ ", -" 2 ] / { ] / ^ ] ] ] { { { ] { { ^ ^ ^ { ^ ^ _ _ %.!.$.{.2.2.l.2.2.,@h.c.w.h.w.D.w.D.P.X.X..+ +X..+'+'+'+]+]+<+'+<+6+2+7+g+7+7+7+y+7+r+y+s+s+q+s+J+C+D+s+D+D+D+D+D+X+T@+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + j.r.2.c.l.2.!.!._ $.%.$._ _ ^ ] ] ^ ] +.V V C 4.V C C >.C V C C C j+ ", -" j S ^ ] ^ ^ ] / { ] { { ] { ] ] { / { / ^ / _ _ _ $.{.{.{.{.l.c.c.c.c.h.i.i.w.w.D.D.D.O.O.O.X.W.$+.+$+-+'+-+'+<+]+<+]+g+6+7+7+7+n+n+7+r+o+r+q+s+s+s+q+C+s+C+D+K++@D+D++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .+{+P. +D.D.D.K.D.i.i.c.c.c.r.c.{.{.{.{.%.!._ _ _ _ J { ] { / G.V 4.C C C C 4.C C >.>.C 3=j ", -" =/{ ^ ^ ^ / ] ^ ^ { { { { / { / ] { / / J _ _ _ {.l !.~.{.2.c.c.h.h.h.i.i.w.D.D.x.D.D.O.W. + +.+.+.+.+'+-+<+'+'+<+<+2+2+g+2+7+7+7+n+7+n+n+n+r+q+q+q+s+J+J+C+D+D+D+C++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + W.X.W.P.D.x.w.D.V.h.v.i.c.c.c.2.2.{.7.%.%.%.$._ _ / ^ { ] { { L >.>.C V C C V V V >.C C c@ ", -" -/( / { { ^ { ^ ] { ] { { ] { { ^ ^ { J { / _ _ %.%.!.g${.{.{.2.c.h.h.v.h.h.i.D.V.D.D.W.W.P..+.+-+.+.+-+'+'+<+]+<+]+]+]+f+<+7+2+7+7+7+y+o+q+q+q+q+s+s+q+C+q+q+C+C+J+C++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X.D.D.D.D.i.v.w.h.j.2.c.c.2.c.7.{.!.~.!._ _ _ _ / { { ] { { T C V C V C >.4.C 4.>.C `+[+ ", -" u./ / { { ] / { ^ ] / / ^ { ^ ] / ] ` { ^ _ _ _ _ %.!.{.l.{.2.c.h.i.h.i.V.x.h.D.D.D.D.P.W.X.W..+-+$+'+.+-+'+'+'+<+<+6+<+<+<+<+7+7+2+7+n+r+n+o+y+y+y+o+q+r+q+s+s+q+C+C++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X.D.P.D.w.D.i.w.v.j.i.i.c.2.2.{.7.!.!.{.%._ _ _ ^ ^ / { / / / s C V >.V V 4.>.>.C C V z. ", -" ;/] ] { ^ { { ] ] { { { { { ] / { / ^ { J _ _ _ ~.!.!.!.!.{.2.c.c.i.h.i.h.i.h.w.D.D.O.D.W..+X.X.X.-+$+-+.+-+m+'+'+'+<+'+]+<+e+<+2+2+7+7+7+7+n+n+y+r+o+s+s+s+s+y+C+s+s+s++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X.X.P.W.{+D.D.w.x.h.h.i.h.h.2.2.2.{.2.!.#.%.l _ _ _ ^ ^ { { { ] ] R.4.C V 4.C 4.C >.4.V `+[ ", -" >/^ { ^ { / ] ^ { { ] { { { ] { ^ ] _ J _ _ _ ~.%.!.{.%.{.2.c.c.2.c.i.c.v.h.w.w.w.D.P.{+P. +.+.+X.-+.+-+1+-+)+'+'+]+]+b@]+]+2+2+2+f+e+2+7+7+n+n+n+y+7+o+r+s+q+q+n+r+q+s+s++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .+.+P.W.O.D.D.D.D.D.w.i.i.h.c.h.r.c.2.{.7.!.{.!.!._ _ J { =./ { { { ^ ,/^.C C >.C V 4.>.V C !+ ", -" *+d@] ^ ] ^ ] ] ^ ] { { / ^ ] { ] / { ^ ^ _ _ _ {.%.~.{.!.c.l.2.h.c.h.i.~@v.h.v.x.w.D.D.O.X.W..+.+-+$+.+.+-+'+-+'+'+]+'+:+]+]+2+<+2+f+2+7+2+7+7+7+7+7+y+n+x+7+s+y+y+q+q+y+q+q++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X.W.X.W.W.D.D.D.w.w.h.w.h.h.,@c.c.2.{.{.7.!.~.{._ l _ _ J { ^ / { { ] y [.C >.C C C C >.C '/>+ ", -" )/] ^ { ] ] / { ] { { { / / / { ] ] ] ^ J _ l l !.~.{.{.!.2.2.2.i.c.c.h.v.i.i.w.w.w.D.D.W.W. +W. +X..+.+.+-+-+'+-+Z+]+'+'+<+'+<+]+6+<+e+g+e+e+7+g+7+7+7+7+y+7+n+7+n+n+x+s+q+s++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .+.+W..+ +D.D.W.D.D.D.K.V.D.i.i.c.h.h.c.2.c.2.7.!.~.!.!.!.#._ _ _ _ ^ ^ ] ^ { ] 3 ^.C V >.V >.V >.V !/ ", -" `.{ ^ { { { ^ { ] ^ ] ] ] { / { ] =.^ _ _ _ l %.%.{.{.{.{.2.c.c.c.i.h.v.i.K.x.h.w.w.D.D.W.W.P. +.+.+$+-+-+-+-+-+-+-+m+'+'+'+<+<+<+<+6+2+7+<+2+e+<+7+7+7+7+7+7+7+7+n+7+y+7+7+q+y+y+x+r++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -+X..+X.X..+X.X.X.W.W.D.w.D.w.i.i.i.h.c.j.c.j.c.l.{.2.{.!.{.%._ _ _ _ =.^ ^ ^ ^ ] { ^ S [.>.V C C 4.V V @+ ", -" U.] { ^ / { ] { / { / { { { / ] / { ^ J _ _ _ !.!.{.{.{.{.c.c.c.h.c.c.c.i.i.i.V.x.D.D.D.D.{+D..+ +X..+$+-+.+.+-+'+'+]+:+'+'+m+<+]+]+]+2+]+]+g+<+f+e+<+2+f+7+7+e+7+7+7+7+2+7+7+7+7+7+7+7+7+7+7+7+7+7++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + -+.+1+.+.+ +.+W.W.{+O.P.P.D.D.w.x.i.K.h.h.v.i.h.c.c.c.c.7.!.%.{.%.~.!.l _ ^ J { { ] ] { ^ ] K ^.C C C >.>.V ~/ ", -" N.] ] ] / ^ / { { / { / { { ^ { _ { ^ _ _ _ _ ~.{.!.{.!.l.!.c.c.h.c.i.h.h.h.h.w.w.D.D.D.P.O.D.D.W..+.+-+$+.+-+.+'+-+-+'+m+]+m+]+:+'+'+6+<+]+6+<+<+<+g+2+2+2+<+2+g+2+g+2+2+e+7+7+g+7+2+<+e+7+2+7+6+f+2+2+<+]+<+g+2+<+<+6+]+]+]+<+'+'+]+'+'+'+-+-+'+-+.+X.1+.+.+.+X. +{+{+ +D.D.D.D.x.w.i.x.v.w.h.h.c.c.c.c.2.7.2.{.{.{.~.$.%.$._ J ^ ` { ^ / ] { / ] R.a+C V 4.V >.}. ", -" {/t { ^ ] { { ^ / ^ / / ] ] { { ^ { _ _ _ _ l %.!.!.!.2.{.{.2.2.2.h.i.h.~@i.h.w.w.D.K.D.D.D..+X.O.D..+.+ + +$+X..+-+$+-+-+-+-+-+'+-+'+<+'+]+'+'+]+6+]+<+<+<+]+6+<+g+<+2+f+<+2+]+g+6+e+g+]+2+6+<+2+6+]+]+2+<+]+:+'+6+]+]+]+'+:+'+-+'+]+'+-+-+1+.+.+.+.+.+-+X..+W.W.D.W.D.D.D.V.D.h.w.h.w.~@h.i.h.c.r.!.2.!.{.2.!.{.{.~.l _ ^ { / { / ] ^ ] { { { m.>.C >.V 4.H.{/ ", -" ]/t / ] { ] ] ] ] { ^ { / / ] { J ^ _ _ _ l #.%.%.{.2.{.2.c.c.c.c.h.c.i.i.i.i.i.D.v.w.K.D.D.D.X.D.O.W.X..+.+X..+.+.+X.-+-+-+'+'+'+-+'+'+]+:+-+m+'+]+Z+]+'+'+'+]+:+]+]+<+]+]+:+<+'+<+]+b@'+:+]+<+]+'+]+:+:+'+]+]+-+m+]+'+'+'+-+-+-+1+.+-+.+-+X.W. +X.W.D.O.D.P.W.D.D.V.D.x.V.i.i.i.h.c.2.c.c.2.2.7.2.%.!.{.{.l %._ _ ^ { J ] ^ { { ^ { ] ^ M.>.C V >.H.I. ", -" t.u.^ { / { ^ ] / ] { { ^ { { =.^ ^ J _ _ {.~.!.l !.{.!.{.2.c.2.i.h.h.h.c.i.h.i.h.V.D.D.w.D.W.D.D.P.X.O.X.X.W.X..+.+.+-+.+'+-+'+-+'+-+'+-+-+'+]+'+]+m+'+:+'+:+m+'+'+:+]+'+]+'+-+'+]+]+'+-+'+'+-+]+'+'+'+-+-+-+-+'+-+-+.+.+-+X.$+X..+X. +.+.+X.O.X.W.W.D.D.D.w.x.K.D.v.i.v.i.c.j.h.2.c.7.2.{.{.{.!.{.{._ _ _ ` ^ ^ ^ ] { { { ] { / / L >.V 4.z.A. ", -" p.{ { ] { { ] ^ { ^ { / { ] { _ _ _ _ _ !._ !.!.!.{.!.7.{.c.c.c.c.h.j.j.i.h.h.w.w.V.V.D.w.D.D.D.D.O..+W.X.W.W..+X.X..+.+X.$+-+-+.+$+|+-+'+.+-+'+'+-+-+'+'+-+'+-+'+-+'+-+'+'+-+'+-+-+'+'+-+|+-+$+-+1+.+.+.+X..+$+.+$+W..+.+D.W.{+P.O.D.D.W.D.D.D.D.w.D.i.w.h.i.i.c.h.c.c.2.l.2.2.{.2.{.$.!.{._ %._ _ ^ { ^ ^ { ] ^ ] ] { ^ y ,#>.C s. ", -" f.S { { / { ^ { ] ^ ] ] ] { ] J _ _ _ _ $.~._ ~.d+{.!.{.2.2.2.C.c.i.h.c.i.i.h.i.i.h.i.D.D.D.D.D.D.O.W. +O.W.X.X.W.W..+X.$+W.$+.+.+.+$+.+X..+.+'+$+-+.+'+-+-+1+.+'+'+'+.+-+'+-+-+.+.+X.$+X.X..+.+-+.+.+X.W.X..+X..+.+{+X.D.D.D.D.D.D.w.w.h.D.i.h.h.i.h.c.,@c.c.2.c.c.c.7.{.!.!.!.!.l l _ _ _ _ / { ] { ] { ^ { ] ] ^ K [.b+^/ ", -" e.//] / { ^ ] { ^ { / { ] _ / J { _ _ %._ ~.{.!.~.~.{.{.2.c.c.c.c.c.c.c.c.h.h.h.h.D.w.x.x.D.w.D.D.W.D.D.O.W.W.O.W.X.D. + +X.X..+X.X.X.X.X..+.+X..+-+X.-+X.X.-+-+.+X..+.+X..+.+W.X..+X..+ +X.X.O.X.W.P.W.P.D.D.W.D.D.D.D.x.K.x.D.K.i.x.h.i.c.j.h.h.c.,@c.c.c.l.7.2.{.{.~.$.%.%.%.$.^ _ ^ ^ { { / { { ^ ] ^ { { M.^.e. ", -" (/_// ] ] ^ { ] ^ ^ { ^ ] ^ J =._ _ l _ _ _ {.{.%.!.{.2.{.2.c.2.,@j.c.c.j.h.i.w.h.i.i.V.w.i.D.D.w.D.D.W.D.D.D.{+P.W.W.P.W.W.W.W.W.X. +X.X.X.{+X..+W.X..+.+W.W..+W..+ +W..+W.P.D.X.{+X..+D.W.D.W.D.W.D.D.D.D.D.x.w.D.D.i.w.h.w.i.i.c.j.c.j.2.h.2.{.{.{.g.!.{.$.#.!._ _ _ _ _ _ ^ { J { ^ ^ ^ ] { / { / S 4&a. ", -" M#] ^ { / ] / { / / { ] ^ ^ _ _ _ _ $._ ~.!.%.!.{.{.2.!.2.c.2.2.2.c.c.c.h.h.h.i.i.h.i.v.x.v.w.i.D.i.V.D.D.D.D.D.D.O.O.P.W.P.W.W.D.X.W.O.X.W.O.P.X.D.W.D.X.X.O.W.O.{+D.W.W.D.{+D.O.D.D.D.D.D.D.D.D.w.i.D.h.w.i.v.w.i.i.h.h.c.c.c.h.c.{.{.2.7.2.{.!.!.!.l l l _ _ _ J { ^ J ^ ] ^ ] / ] ] ^ { { :/ ", -" - _+] / / ^ { ^ ^ ] { / { ] ^ _ _ _ _ !.%.!.!.!.!.~.{.!.{.l.{.7.c.r.2.c.c.r.c.v.h.i.i.v.x.w.i.i.i.h.x.i.V.D.x.D.x.D.D.D.D.D.D.D.D. +D.X.O. +O.W.D.D.O.W.D.D.D.D.D.D.D.D.D.D.V.i.D.i.w.v.V.x.D.i.K.v.w.i.i.i.h.h.r.2.2.c.2.2.2.c.{.2.2.{.{.!._ ~.!._ _ _ =.^ _ J { / { { ] / / ^ ] ^ 2$(. ", -" 0 ).] ] { { ] ] / ^ / ^ / ^ =._ _ _ _ _ l %.%.{.~.{.{.!.{.7.2.c.2.2.h.2.c.c.2.i.h.i.h.i.v.w.i.x.i.w.h.V.w.w.x.w.w.D.w.D.i.D.w.D.D.D.x.D.D.D.D.D.x.V.D.i.D.D.V.i.w.i.h.x.w.h.K.x.h.i.h.v.j.h.i.c.C.j.j.c.c.c.l.c.3.2.7.{.2.7.!.~.!.{.~.~.l _ ^ _ ^ / ^ ^ { { ^ / ] ^ ^ ^ ).0 ", -" 1 #./ { { { ] / / ^ J =.^ J { _ _ _ _ %.l %.{.!.!.7.2.l.c.{.l.c.2.c.r.c.c.2.j.h.h.c.h.c.h.h.v.h.i.h.h.i.v.h.x.v.x.i.x.v.D.D.w.w.D.x.D.w.K.w.w.D.i.w.i.K.v.v.h.i.v.i.w.h.w.i.h.i.h.i.j.c.c.c.2.c.c.2.2.c.7.{.2.{.~.!.{.!.l _ #._ _ _ _ ^ J =./ / / ] ] { { { g </ ", -" Y Z ] ^ { { / / { ] ^ / ` _ _ _ %._ %.#._ %.{.{.!.{.7.{.!.2.2.c.2.c.c.c.c.j.r.h.c.j.h.j.i.i.h.c.c.i.i.h.i.h.i.v.h.i.i.x.v.i.i.h.i.w.i.i.h.i.h.i.h.i.h.h.h.i.i.c.h.h.2.i.2.i.c.r.2.7.2.7.2.{.2.l.!.{.{.%.{.%.!.#._ $._ _ ^ _ ^ _ ^ { { ] { { / ^ q]Y ", -" X O~/ ] ] / ] / ^ / _ ^ _ { _ _ l _ $.!.!.{.#.l {.{.!.2.{.{.!.{.7.2.2.c.c.2.h.c.2.c.,@c.c.c.h.c.j.i.c.c.c.i.h.j.h.c.h.h.c.j.h.c.w.i.h.h.h.c.c.h.i.c.h.2.c.c.i.2.c.{.c.2.2.2.2.{.2.7.!.{.{.{.%.~.!.%.$.!.$._ _ _ ^ ^ =.{ / ] ] ] ] { O~[/ ", -" G a H { ] ] { ] / { _ ^ _ _ _ _ %._ !.!._ $.%.{.!.{.{.2.{.{.g.7.{.{.2.2.2.2.2.c.2.2.c.c.c.2.c.h.h.c.c.r.C.c.h.h.h.c.C.r.c.h.j.c.2.c.c.2.c.2.2.c.c.{.2.c.2.2.c.{.!.7.{.!.7.!.%.{.!.%.l %._ ~.l $._ _ _ _ / ] ^ ] / ^ ] ( a }/ ", -" |/1/S { / ] ] { J J ^ _ _ _ _ %.!.%._ !.!.%.l %.!.{.{.!.{.!.{.2.{.2.!.l.2.c.{.2.2.c.c.2.2.c.c.c.2.2.2.c.2.2.2.2.c.c.2.c.2.{.2.c.l.l.{.c.c.7.{.!.{.{.{.%.{.~.~.%.%.$.!.~.$.$._ $._ _ _ { J J J ^ ] { { S 2/3/ ", -" 4/* t ( { ] ^ { / =./ ^ _ _ _ _ l $.$.$.!.l {.!.!.{.!.!.{.7.{.{.{.{.{.2.{.{.g.{.2.2.{.2.2.{.2.c.{.{.7.2.{.2.2.2.{.2.{.{.!.{.2.7.~.{.g${.{.%.~.%.$.%.!.%._ _ $.~._ _ _ _ J J _ _ _ ^ ^ ^ b t * 5/ ", -" 6/k 7/{ / ^ =.] J _ ^ / _ _ $._ _ _ _ l _ _ ~.!.!.l !.!.{.~.!.{.{.7.%.{.~.{.~.7.!.g${.!.{.%.~.2.{.{.!.{.!.{.!.!.!.{.{.!.~.!.%.~.$.$.$._ %._ _ _ _ ^ _ _ _ _ _ { ] ^ { #.k 6/ ", -" i 0 h # ] ` ] ` J ^ J ^ _ _ _ _ _ l $.l _ _ !._ _ l %.~._ #.!.!.l %.{.!.#.~.%.{.!.!.l %.{.~.!.!.~.{.{._ $.%._ %.l {.l %._ l _ _ _ _ _ _ _ J ` _ J b q]h 0 i ", -" 8/1 2 q]3 =._ ^ _ _ _ ^ _ _ _ _ %._ $.l _ _ #.!.%._ _ $.#.l ~._ !.$.~.$.!.~.!.!.{.%.~.!.!._ _ l _ l _ _ _ _ _ ^ _ ^ / ^ ^ { c.]'1 9/ ", -" 0/[ ' < %/!.` ^ ^ ^ J ^ _ _ _ _ _ _ _ %.l _ $._ l $._ _ l l l _ _ _ _ _ _ _ _ _ _ ^ _ _ _ ^ ^ ( %.: < ' , > ", -" 0/a/6/* b/< c/%/x%q]^ J ` ] ] _ ^ _ _ _ _ 3 { ` / ^ {.x%%/_.< b/* #+a/> ", -" ", -" ", -" ", -" ", -" ", -" "}; diff --git a/community/spidermonkey/PKGBUILD b/community/spidermonkey/PKGBUILD deleted file mode 100644 index 5b0f66f55..000000000 --- a/community/spidermonkey/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: PKGBUILD 76943 2010-04-09 06:43:22Z dgriffiths $ -# Contributor: Aaron Griffin <aaron@archlinux.org> -# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us> - -pkgname=spidermonkey -pkgver=1.7.0 -pkgrel=3 -pkgdesc="Mozilla's C implementation of JavaScript." -url="http://www.mozilla.org/js/spidermonkey/" -arch=('i686' 'x86_64') -license=('MPL' 'GPL' 'LGPL') -depends=('nspr') -options=('!makeflags') -source=("http://ftp.mozilla.org/pub/mozilla.org/js/js-${pkgver}.tar.gz" \ - 'spidermonkey-1.7-threadsafe.patch' 'spidermonkey-Makefile.patch') -md5sums=('5571134c3863686b623ebe4e6b1f6fe6' - 'b2ef9be017b6aa1857354b5223975a4f' - '161d4c0f2c604d15cba29dab60b1f7a7') - -build() { - cd ${srcdir}/js/src - patch -p0 < ${srcdir}/spidermonkey-Makefile.patch || return 1 - sed -i 's|include|include/js|' rules.mk || return 1 - # fix for the lib location - [ "$CARCH" = 'x86_64' ] && (sed -i -e 's|lib64|lib|g' config.mk || return 1) - # patch Makefile for threadsafe support with native nspr - patch -p2 -i ${srcdir}/spidermonkey-1.7-threadsafe.patch || return 1 - # FS#16673 - export CFLAGS=${CFLAGS} -DJS_C_STRINGS_ARE_UTF8 - # build - threadsafe -} - -package() { - cd ${srcdir}/js/src - make -f Makefile.ref BUILD_OPT=1 JS_THREADSAFE=1 DIST=${pkgdir}/usr all export || return 1 -} diff --git a/community/spidermonkey/spidermonkey-1.7-threadsafe.patch b/community/spidermonkey/spidermonkey-1.7-threadsafe.patch deleted file mode 100644 index da6c78d1d..000000000 --- a/community/spidermonkey/spidermonkey-1.7-threadsafe.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- js/src/Makefile.ref.orig 2008-05-28 19:51:32.000000000 -0400 -+++ js/src/Makefile.ref 2008-05-28 19:52:17.000000000 -0400 -@@ -63,11 +63,11 @@ - - ifdef JS_THREADSAFE - DEFINES += -DJS_THREADSAFE --INCLUDES += -I$(DIST)/include/nspr -+INCLUDES += -I/usr/include/nspr - ifdef USE_MSVC - OTHER_LIBS += $(DIST)/lib/libnspr$(NSPR_LIBSUFFIX).lib - else --OTHER_LIBS += -L$(DIST)/lib -lnspr$(NSPR_LIBSUFFIX) -+OTHER_LIBS += -L/usr/$(LIBDIR)/nspr -lnspr${NSPR_LIBSUFFIX} - endif - endif - diff --git a/community/spidermonkey/spidermonkey-Makefile.patch b/community/spidermonkey/spidermonkey-Makefile.patch deleted file mode 100644 index abf1f3164..000000000 --- a/community/spidermonkey/spidermonkey-Makefile.patch +++ /dev/null @@ -1,22 +0,0 @@ -*** Makefile.ref.orig 2009-02-16 09:56:29.000000000 -0600 ---- Makefile.ref 2009-02-16 09:58:59.000000000 -0600 -*************** -*** 169,184 **** ---- 169,185 ---- - jstypes.h \ - jsprvtd.h \ - jspubtd.h \ - jsregexp.h \ - jsscan.h \ - jsscope.h \ - jsscript.h \ - jsstr.h \ -+ jsutil.h \ - jsxdrapi.h \ - jsxml.h \ - $(NULL) - - API_HFILES = \ - jsapi.h \ - jsdbgapi.h \ - $(NULL) diff --git a/core/mdadm/segfault-3.2.1.patch b/core/mdadm/segfault-3.2.1.patch deleted file mode 100644 index 6042d86c2..000000000 --- a/core/mdadm/segfault-3.2.1.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 4019ad07013a5d8618b867f724d1c4a13c5cb05d Mon Sep 17 00:00:00 2001 -From: Jonathan Liu <net147@gmail.com> -Date: Tue, 12 Apr 2011 18:28:01 +1000 -Subject: [PATCH] Monitor: avoid NULL dereference with 0.90 metadata - -0.90 array do not report the metadata type in /proc/mdstat, so -we cannot assume that mse->metadata_version is non-NULL. - -So add an appropriate check. - -This adds an additional check missed by commit -eb28e119b03fd5149886ed516fa4bb006ad3602e. - -Signed-off-by: NeilBrown <neilb@suse.de> ---- - Monitor.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/Monitor.c b/Monitor.c -index a3ea724..55aebeb 100644 ---- a/Monitor.c -+++ b/Monitor.c -@@ -577,7 +577,8 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat, - info[i].major = info[i].minor = 0; - } - -- if (strncmp(mse->metadata_version, "external:", 9) == 0 && -+ if (mse->metadata_version && -+ strncmp(mse->metadata_version, "external:", 9) == 0 && - is_subarray(mse->metadata_version+9)) - st->parent_dev = - devname2devnum(mse->metadata_version+10); --- -1.7.2.3 - -From eb28e119b03fd5149886ed516fa4bb006ad3602e Mon Sep 17 00:00:00 2001 -From: NeilBrown <neilb@suse.de> -Date: Tue, 5 Apr 2011 09:16:57 +1000 -Subject: [PATCH] Monitor: avoid NULL dereference with 0.90 metadata - -0.90 array do not report the metadata type in /proc/mdstat, so -we cannot assume that mse->metadata_version is non-NULL. - -So add an appropriate check. - -Reported-by: Eugene <hdejin@yahoo.com> -Signed-off-by: NeilBrown <neilb@suse.de> ---- - Monitor.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/Monitor.c b/Monitor.c -index 291e465..337785d 100644 ---- a/Monitor.c -+++ b/Monitor.c -@@ -688,7 +688,8 @@ static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist, - st->devnum = mse->devnum; - st->percent = -2; - st->expected_spares = -1; -- if (strncmp(mse->metadata_version, "external:", 9) == 0 && -+ if (mse->metadata_version && -+ strncmp(mse->metadata_version, "external:", 9) == 0 && - is_subarray(mse->metadata_version+9)) - st->parent_dev = - devname2devnum(mse->metadata_version+10); --- -1.7.2.3 - diff --git a/extra/avahi/avahi-daemon-dbus.patch b/extra/avahi/avahi-daemon-dbus.patch deleted file mode 100644 index ef7272082..000000000 --- a/extra/avahi/avahi-daemon-dbus.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -aur old/initscript/archlinux/avahi-daemon.in new/initscript/archlinux/avahi-daemon.in ---- old/initscript/archlinux/avahi-daemon.in 2010-06-29 05:30:35.000000000 +0200 -+++ new/initscript/archlinux/avahi-daemon.in 2011-06-07 12:20:03.237701492 +0200 -@@ -33,6 +33,7 @@ - - case "$1" in - start) -+ ck_daemon dbus && /etc/rc.d/dbus start - stat_busy "Starting $DESC" - $DAEMON -D > /dev/null 2>&1 - if [ $? -gt 0 ]; then diff --git a/extra/avahi/avahi.install b/extra/avahi/avahi.install deleted file mode 100644 index 7c75c3dd4..000000000 --- a/extra/avahi/avahi.install +++ /dev/null @@ -1,21 +0,0 @@ -post_install() { - getent group avahi &>/dev/null || groupadd -r -g 84 avahi >/dev/null - getent passwd avahi &>/dev/null || useradd -r -u 84 -g avahi -d / -s /bin/false -c avahi avahi >/dev/null - - cat <<EOF -==> The following daemons may be added to DAEMONS in /etc/rc.conf: -==> avahi-daemon: the mdns responder, you probably want this. -==> dbus needs to be running when you start it. -==> avahi-dnsconfd: daemon used for peer-to-peer automatic dns -==> configuration on dhcp-less networks. - -==> To use some of the client applications you will have to install python. -==> In addition, pygtk is required for the graphical ones and -==> twisted for avahi-bookmarks. -EOF -} - -post_remove() { - getent passwd avahi &>/dev/null && userdel avahi >/dev/null - getent group avahi &>/dev/null && groupdel avahi >/dev/null -} diff --git a/extra/file-roller/PKGBUILD b/extra/file-roller/PKGBUILD deleted file mode 100644 index 5d7d1c2ec..000000000 --- a/extra/file-roller/PKGBUILD +++ /dev/null @@ -1,38 +0,0 @@ -# $Id: PKGBUILD 124730 2011-05-24 07:10:29Z ibiru $ -# Maintainer: Jan de Groot <jgc@archlinux.org> - -pkgname=file-roller -pkgver=3.0.2 -pkgrel=1 -pkgdesc="Archive manipulator for GNOME" -arch=('i686' 'x86_64') -license=('GPL') -depends=('desktop-file-utils' 'gtk3' 'hicolor-icon-theme' 'dconf' 'nautilus') -makedepends=('intltool' 'gnome-doc-utils' 'pkg-config' 'nautilus' 'libsm') -optdepends=('unrar: the RAR uncompression program' - 'zip: creates PKZIP-compatible .zip files' - 'unzip: unpacks .zip archives' - 'p7zip: 7zip compression utility' - 'xz: managing LZMA and XZ compressed files' - 'arj: ARJ archiver' - 'unace: extraction tool for the proprietary ace archive format') -groups=('gnome-extra') -options=('!libtool' '!emptydirs') -install=file-roller.install -url="http://www.gnome.org" -source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2) -sha256sums=('a612f05c44f82328175ddca1b4a1da214d9c305797370b78435f490b250af3d1') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr --sysconfdir=/etc \ - --libexecdir=/usr/lib/file-roller \ - --localstatedir=/var --disable-static \ - --disable-scrollkeeper --disable-schemas-compile - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install -} diff --git a/extra/file-roller/file-roller.install b/extra/file-roller/file-roller.install deleted file mode 100644 index 10a148241..000000000 --- a/extra/file-roller/file-roller.install +++ /dev/null @@ -1,22 +0,0 @@ -pkgname=file-roller - -post_install() { - glib-compile-schemas usr/share/glib-2.0/schemas - update-desktop-database -q - gtk-update-icon-cache -q -t -f usr/share/icons/hicolor -} - -pre_upgrade() { - if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then - usr/sbin/gconfpkg --uninstall ${pkgname} - fi -} - -post_upgrade() { - post_install $1 -} - - -post_remove() { - post_install $1 -} diff --git a/extra/qtiplot/gentoo-fix-origin-build-failure.patch b/extra/qtiplot/gentoo-fix-origin-build-failure.patch deleted file mode 100644 index 931d87009..000000000 --- a/extra/qtiplot/gentoo-fix-origin-build-failure.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- qtiplot/src/origin/importOPJ.cpp 2010-09-01 11:07:38 +0000 -+++ qtiplot/src/origin/importOPJ.cpp 2010-09-07 10:12:30 +0000 -@@ -473,6 +473,8 @@ - } - table->setDayFormat(format, j); - break; -+ default: -+ break; - } - table->freeMemory(); - } -@@ -720,7 +722,6 @@ - bkg.setAlpha(0); - graph->setCanvasBackground(bkg); - -- int auto_color = -1; - int style = 0; - bool matrixImage = false; - for(unsigned int c = 0; c < layer.curves.size(); ++c){ -@@ -1461,7 +1462,7 @@ - - if (boxWhiskersPlot){ - QStringList curveNames; -- for (unsigned int i = 0; i < graph->curveCount(); i++){ -+ for (int i = 0; i < graph->curveCount(); i++){ - BoxCurve *box = (BoxCurve *)graph->curve(i); - if (!box || box->type() != Graph::Box) - continue; -@@ -1659,7 +1660,6 @@ - for(unsigned int c = 0; c < layer.curves.size(); ++c){ - Origin::GraphCurve& _curve = layer.curves[c]; - QString data(_curve.dataName.c_str()); -- int color = 0; - double fFontScaleFactor = 2.0; - switch(_curve.type){ - case Origin::GraphCurve::Line3D: -@@ -1809,7 +1809,6 @@ - } - - QStringList formulas; -- double start, end; - - plot->showColorLegend(false); - plot->setFramed(); -@@ -1951,8 +1950,8 @@ - - QList <PieLabel *> pieTexts = p->labelsList(); - QFont font(mw->plotLegendFont); -- unsigned int lsize = layer.pieTexts.size(); -- for(unsigned int i = 0; i < lsize && i < pieTexts.size(); ++i){ -+ int lsize = layer.pieTexts.size(); -+ for(int i = 0; i < lsize && i < pieTexts.size(); ++i){ - Origin::TextBox text = layer.pieTexts[lsize - i - 1]; - font.setPointSizeF(text.fontSize*fFontScaleFactor); - QFontMetrics fm(font, graph); -@@ -2159,12 +2158,12 @@ - line.replace("&lbracket;", "("); - line.replace("&rbracket;", ")"); - -- QRegExp fontModifier("\p(\\d)+\\(.*\\)");//remove \p163(...) like tags -+ QRegExp fontModifier("\\\\p(\\d)+\\(.*\\)");//remove \p163(...) like tags - int index = line.indexOf(fontModifier); - while (index >= 0){ - int pos1 = line.indexOf("(", index + 2) + 1; - int length = fontModifier.matchedLength(); -- line = line.mid(pos1, length - pos1); -+ line = line.mid(pos1, length - pos1 - 1); - index = line.indexOf(fontModifier, index + length); - } - - - diff --git a/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch b/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch deleted file mode 100644 index 71ecfd5b0..000000000 --- a/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch +++ /dev/null @@ -1,101 +0,0 @@ -=== modified file 'build.conf.example' ---- build.conf.example 2010-04-22 18:57:40 +0000 -+++ build.conf.example 2010-04-22 18:58:06 +0000 -@@ -118,6 +118,14 @@ - EMF_ENGINE_LIBS = $$QTI_ROOT/3rdparty/EmfEngine/libEmfEngine.a - - ########################################################## -+## liborigin - keep commented if you wish to use local copy -+# http://sourceforge.net/projects/liborigin/ -+########################################################## -+ -+# LIB_ORIGIN_INCLUDEPATH = /usr/include/liborigin2 -+# LIB_ORIGIN_LIBS = -lorigin2 -+ -+########################################################## - ## python - only used if python is needed - ########################################################## - - -=== modified file 'qtiplot/qtiplot.pro' ---- qtiplot/qtiplot.pro 2010-04-22 18:57:40 +0000 -+++ qtiplot/qtiplot.pro 2010-04-22 19:08:57 +0000 -@@ -16,6 +16,7 @@ - INCLUDEPATH += $$QWT_INCLUDEPATH - INCLUDEPATH += $$QWT3D_INCLUDEPATH - INCLUDEPATH += $$GSL_INCLUDEPATH -+INCLUDEPATH += $$LIB_ORIGIN_INCLUDEPATH - - # configurable libs - LIBS += $$MUPARSER_LIBS -@@ -23,6 +24,7 @@ - LIBS += $$QWT3D_LIBS - LIBS += $$QTEXENGINE_LIBS - LIBS += $$GSL_LIBS -+LIBS += $$LIB_ORIGIN_LIBS - - ############################################################################# - ###################### BASIC PROJECT PROPERTIES ############################# -@@ -150,6 +152,10 @@ - SOURCES += ../3rdparty/QTeXEngine/src/QTeXPaintDevice.cpp - } - -+isEmpty(LIB_ORIGIN_LIBS) { -+ INCLUDEPATH += ../3rdparty/liborigin -+} -+ - ############################################################### - ##################### Scripting: PYTHON + SIP + PyQT ########## - ############################################################### - -=== modified file 'qtiplot/src/origin/origin.pri' ---- qtiplot/src/origin/origin.pri 2010-04-22 17:58:49 +0000 -+++ qtiplot/src/origin/origin.pri 2010-04-22 19:08:15 +0000 -@@ -4,24 +4,28 @@ - INCLUDEPATH += src/origin/ - - HEADERS += src/origin/importOPJ.h --HEADERS += ../3rdparty/liborigin/OriginObj.h --HEADERS += ../3rdparty/liborigin/OriginFile.h --HEADERS += ../3rdparty/liborigin/OriginParser.h --HEADERS += ../3rdparty/liborigin/OriginDefaultParser.h --HEADERS += ../3rdparty/liborigin/Origin600Parser.h --HEADERS += ../3rdparty/liborigin/Origin610Parser.h --HEADERS += ../3rdparty/liborigin/Origin700Parser.h --HEADERS += ../3rdparty/liborigin/Origin750Parser.h --HEADERS += ../3rdparty/liborigin/Origin800Parser.h --HEADERS += ../3rdparty/liborigin/Origin810Parser.h - - SOURCES += src/origin/importOPJ.cpp --SOURCES += ../3rdparty/liborigin/OriginFile.cpp --SOURCES += ../3rdparty/liborigin/OriginParser.cpp --SOURCES += ../3rdparty/liborigin/OriginDefaultParser.cpp --SOURCES += ../3rdparty/liborigin/Origin600Parser.cpp --SOURCES += ../3rdparty/liborigin/Origin610Parser.cpp --SOURCES += ../3rdparty/liborigin/Origin700Parser.cpp --SOURCES += ../3rdparty/liborigin/Origin750Parser.cpp --SOURCES += ../3rdparty/liborigin/Origin800Parser.cpp --SOURCES += ../3rdparty/liborigin/Origin810Parser.cpp -+ -+isEmpty(LIB_ORIGIN_LIBS) { -+ HEADERS += ../3rdparty/liborigin/OriginObj.h -+ HEADERS += ../3rdparty/liborigin/OriginFile.h -+ HEADERS += ../3rdparty/liborigin/OriginParser.h -+ HEADERS += ../3rdparty/liborigin/OriginDefaultParser.h -+ HEADERS += ../3rdparty/liborigin/Origin600Parser.h -+ HEADERS += ../3rdparty/liborigin/Origin610Parser.h -+ HEADERS += ../3rdparty/liborigin/Origin700Parser.h -+ HEADERS += ../3rdparty/liborigin/Origin750Parser.h -+ HEADERS += ../3rdparty/liborigin/Origin800Parser.h -+ HEADERS += ../3rdparty/liborigin/Origin810Parser.h -+ -+ SOURCES += ../3rdparty/liborigin/OriginFile.cpp -+ SOURCES += ../3rdparty/liborigin/OriginParser.cpp -+ SOURCES += ../3rdparty/liborigin/OriginDefaultParser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin600Parser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin610Parser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin700Parser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin750Parser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin800Parser.cpp -+ SOURCES += ../3rdparty/liborigin/Origin810Parser.cpp -+} diff --git a/extra/xulrunner/port_gnomevfs_to_gio.patch b/extra/xulrunner/port_gnomevfs_to_gio.patch deleted file mode 100644 index 797baff42..000000000 --- a/extra/xulrunner/port_gnomevfs_to_gio.patch +++ /dev/null @@ -1,1316 +0,0 @@ -diff -r 49a1b2aa43c5 extensions/gio/Makefile.in ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/extensions/gio/Makefile.in Tue Jan 11 11:17:52 2011 +0100 -@@ -0,0 +1,69 @@ -+# vim:set ts=8 sw=8 sts=8 noet: -+# ***** BEGIN LICENSE BLOCK ***** -+# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -+# -+# The contents of this file are subject to the Mozilla Public License Version -+# 1.1 (the "License"); you may not use this file except in compliance with -+# the License. You may obtain a copy of the License at -+# http://www.mozilla.org/MPL/ -+# -+# Software distributed under the License is distributed on an "AS IS" basis, -+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -+# for the specific language governing rights and limitations under the -+# License. -+# -+# The Original Code is the Mozilla gnome-vfs extension. -+# -+# The Initial Developer of the Original Code is IBM Corporation. -+# -+# Portions created by IBM Corporation are Copyright (C) 2004 -+# IBM Corporation. All Rights Reserved. -+# -+# Contributor(s): -+# Darin Fisher <darin@meer.net> -+# Jan Horak <jhorak@redhat.com> -+# -+# Alternatively, the contents of this file may be used under the terms of -+# either the GNU General Public License Version 2 or later (the "GPL"), or -+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -+# in which case the provisions of the GPL or the LGPL are applicable instead -+# of those above. If you wish to allow use of your version of this file only -+# under the terms of either the GPL or the LGPL, and not to allow others to -+# use your version of this file under the terms of the MPL, indicate your -+# decision by deleting the provisions above and replace them with the notice -+# and other provisions required by the GPL or the LGPL. If you do not delete -+# the provisions above, a recipient may use your version of this file under -+# the terms of any one of the MPL, the GPL or the LGPL. -+# -+# ***** END LICENSE BLOCK ***** -+ -+DEPTH = ../.. -+topsrcdir = @top_srcdir@ -+srcdir = @srcdir@ -+VPATH = @srcdir@ -+ -+include $(DEPTH)/config/autoconf.mk -+ -+MODULE = nkgio -+LIBRARY_NAME = nkgio -+SHORT_LIBNAME = nkgio -+IS_COMPONENT = 1 -+ -+CPPSRCS = \ -+ nsGIOProtocolHandler.cpp \ -+ $(NULL) -+ -+LOCAL_INCLUDES = $(MOZ_GIO_CFLAGS) -+ -+EXTRA_DSO_LDOPTS = \ -+ $(XPCOM_GLUE_LDOPTS) \ -+ $(NSPR_LIBS) \ -+ $(MOZ_GIO_LIBS) \ -+ $(NULL) -+ -+# make sure this component is never statically linked into the main -+# application. this is necessary since we don't want to force users -+# to install gio in order to use the rest of mozilla ;-) -+FORCE_SHARED_LIB= 1 -+ -+include $(topsrcdir)/config/rules.mk -diff -r 49a1b2aa43c5 extensions/gio/makefiles.sh ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/extensions/gio/makefiles.sh Tue Jan 11 11:17:52 2011 +0100 -@@ -0,0 +1,41 @@ -+#! /bin/sh -+# ***** BEGIN LICENSE BLOCK ***** -+# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -+# -+# The contents of this file are subject to the Mozilla Public License Version -+# 1.1 (the "License"); you may not use this file except in compliance with -+# the License. You may obtain a copy of the License at -+# http://www.mozilla.org/MPL/ -+# -+# Software distributed under the License is distributed on an "AS IS" basis, -+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -+# for the specific language governing rights and limitations under the -+# License. -+# -+# The Original Code is Mozilla Build System -+# -+# The Initial Developer of the Original Code is -+# Ben Turner <mozilla@songbirdnest.com> -+# -+# Portions created by the Initial Developer are Copyright (C) 2007 -+# the Initial Developer. All Rights Reserved. -+# -+# Contributor(s): -+# -+# Alternatively, the contents of this file may be used under the terms of -+# either the GNU General Public License Version 2 or later (the "GPL"), or -+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -+# in which case the provisions of the GPL or the LGPL are applicable instead -+# of those above. If you wish to allow use of your version of this file only -+# under the terms of either the GPL or the LGPL, and not to allow others to -+# use your version of this file under the terms of the MPL, indicate your -+# decision by deleting the provisions above and replace them with the notice -+# and other provisions required by the GPL or the LGPL. If you do not delete -+# the provisions above, a recipient may use your version of this file under -+# the terms of any one of the MPL, the GPL or the LGPL. -+# -+# ***** END LICENSE BLOCK ***** -+ -+add_makefiles " -+ extensions/gio/Makefile -+" -diff -r 49a1b2aa43c5 extensions/gio/nsGIOProtocolHandler.cpp ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/extensions/gio/nsGIOProtocolHandler.cpp Tue Jan 11 11:17:52 2011 +0100 -@@ -0,0 +1,1163 @@ -+/* vim:set ts=2 sw=2 et cindent: */ -+/* ***** BEGIN LICENSE BLOCK ***** -+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 -+ * -+ * The contents of this file are subject to the Mozilla Public License Version -+ * 1.1 (the "License"); you may not use this file except in compliance with -+ * the License. You may obtain a copy of the License at -+ * http://www.mozilla.org/MPL/ -+ * -+ * Software distributed under the License is distributed on an "AS IS" basis, -+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -+ * for the specific language governing rights and limitations under the -+ * License. -+ * -+ * The Original Code is the Mozilla gnome-vfs extension. -+ * -+ * The Initial Developer of the Original Code is IBM Corporation. -+ * -+ * Portions created by IBM Corporation are Copyright (C) 2004 -+ * IBM Corporation. All Rights Reserved. -+ * -+ * Contributor(s): -+ * Darin Fisher <darin@meer.net> -+ * Jan Horak <jhorak@redhat.com> -+ * -+ * Alternatively, the contents of this file may be used under the terms of -+ * either the GNU General Public License Version 2 or later (the "GPL"), or -+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -+ * in which case the provisions of the GPL or the LGPL are applicable instead -+ * of those above. If you wish to allow use of your version of this file only -+ * under the terms of either the GPL or the LGPL, and not to allow others to -+ * use your version of this file under the terms of the MPL, indicate your -+ * decision by deleting the provisions above and replace them with the notice -+ * and other provisions required by the GPL or the LGPL. If you do not delete -+ * the provisions above, a recipient may use your version of this file under -+ * the terms of any one of the MPL, the GPL or the LGPL. -+ * -+ * ***** END LICENSE BLOCK ***** */ -+ -+/* -+ * This code is based on original Mozilla gnome-vfs extension. It implements -+ * input stream provided by GVFS/GIO. -+*/ -+#include "mozilla/ModuleUtils.h" -+#include "nsIPrefService.h" -+#include "nsIPrefBranch2.h" -+#include "nsIObserver.h" -+#include "nsThreadUtils.h" -+#include "nsProxyRelease.h" -+#include "nsIStringBundle.h" -+#include "nsIStandardURL.h" -+#include "nsMimeTypes.h" -+#include "nsNetUtil.h" -+#include "mozilla/Monitor.h" -+#include <gio/gio.h> -+ -+#define MOZ_GIO_SCHEME "moz-gio" -+#define MOZ_GIO_SUPPORTED_PROTOCOLS "network.gio.supported-protocols" -+ -+//----------------------------------------------------------------------------- -+ -+// NSPR_LOG_MODULES=gio:5 -+#ifdef PR_LOGGING -+static PRLogModuleInfo *sGIOLog; -+#define LOG(args) PR_LOG(sGIOLog, PR_LOG_DEBUG, args) -+#else -+#define LOG(args) -+#endif -+ -+ -+//----------------------------------------------------------------------------- -+static nsresult -+MapGIOResult(gint code) -+{ -+ switch (code) -+ { -+ case G_IO_ERROR_NOT_FOUND: return NS_ERROR_FILE_NOT_FOUND; // shows error -+ case G_IO_ERROR_INVALID_ARGUMENT: return NS_ERROR_INVALID_ARG; -+ case G_IO_ERROR_NOT_SUPPORTED: return NS_ERROR_NOT_AVAILABLE; -+ case G_IO_ERROR_NO_SPACE: return NS_ERROR_FILE_NO_DEVICE_SPACE; -+ case G_IO_ERROR_READ_ONLY: return NS_ERROR_FILE_READ_ONLY; -+ case G_IO_ERROR_PERMISSION_DENIED: return NS_ERROR_FILE_ACCESS_DENIED; // wrong password/login -+ case G_IO_ERROR_CLOSED: return NS_BASE_STREAM_CLOSED; // was EOF -+ case G_IO_ERROR_NOT_DIRECTORY: return NS_ERROR_FILE_NOT_DIRECTORY; -+ case G_IO_ERROR_PENDING: return NS_ERROR_IN_PROGRESS; -+ case G_IO_ERROR_EXISTS: return NS_ERROR_FILE_ALREADY_EXISTS; -+ case G_IO_ERROR_IS_DIRECTORY: return NS_ERROR_FILE_IS_DIRECTORY; -+ case G_IO_ERROR_NOT_MOUNTED: return NS_ERROR_NOT_CONNECTED; // shows error -+ case G_IO_ERROR_HOST_NOT_FOUND: return NS_ERROR_UNKNOWN_HOST; // shows error -+ case G_IO_ERROR_CANCELLED: return NS_ERROR_ABORT; -+ case G_IO_ERROR_NOT_EMPTY: return NS_ERROR_FILE_DIR_NOT_EMPTY; -+ case G_IO_ERROR_FILENAME_TOO_LONG: return NS_ERROR_FILE_NAME_TOO_LONG; -+ case G_IO_ERROR_INVALID_FILENAME: return NS_ERROR_FILE_INVALID_PATH; -+ case G_IO_ERROR_TIMED_OUT: return NS_ERROR_NET_TIMEOUT; // shows error -+ case G_IO_ERROR_WOULD_BLOCK: return NS_BASE_STREAM_WOULD_BLOCK; -+ case G_IO_ERROR_FAILED_HANDLED: return NS_ERROR_ABORT; // Cancel on login dialog -+ -+/* unhandled: -+ G_IO_ERROR_NOT_REGULAR_FILE, -+ G_IO_ERROR_NOT_SYMBOLIC_LINK, -+ G_IO_ERROR_NOT_MOUNTABLE_FILE, -+ G_IO_ERROR_TOO_MANY_LINKS, -+ G_IO_ERROR_ALREADY_MOUNTED, -+ G_IO_ERROR_CANT_CREATE_BACKUP, -+ G_IO_ERROR_WRONG_ETAG, -+ G_IO_ERROR_WOULD_RECURSE, -+ G_IO_ERROR_BUSY, -+ G_IO_ERROR_WOULD_MERGE, -+ G_IO_ERROR_TOO_MANY_OPEN_FILES -+*/ -+ // Make GCC happy -+ default: -+ return NS_ERROR_FAILURE; -+ } -+ -+ return NS_ERROR_FAILURE; -+} -+ -+static nsresult -+MapGIOResult(GError *result) -+{ -+ if (!result) -+ return NS_OK; -+ else -+ return MapGIOResult(result->code); -+} -+/** Return values for mount operation. -+ * These enums are used as mount operation return values. -+ */ -+typedef enum { -+ MOUNT_OPERATION_IN_PROGRESS, /** \enum operation in progress */ -+ MOUNT_OPERATION_SUCCESS, /** \enum operation successful */ -+ MOUNT_OPERATION_FAILED /** \enum operation not successful */ -+} MountOperationResult; -+//----------------------------------------------------------------------------- -+/** -+ * Sort function compares according to file type (directory/file) -+ * and alphabethical order -+ * @param a pointer to GFileInfo object to compare -+ * @param b pointer to GFileInfo object to compare -+ * @return -1 when first object should be before the second, 0 when equal, -+ * +1 when second object should be before the first -+ */ -+static gint -+FileInfoComparator(gconstpointer a, gconstpointer b) -+{ -+ GFileInfo *ia = ( GFileInfo *) a; -+ GFileInfo *ib = ( GFileInfo *) b; -+ if (g_file_info_get_file_type(ia) == G_FILE_TYPE_DIRECTORY -+ && g_file_info_get_file_type(ib) != G_FILE_TYPE_DIRECTORY) -+ return -1; -+ if (g_file_info_get_file_type(ib) == G_FILE_TYPE_DIRECTORY -+ && g_file_info_get_file_type(ia) != G_FILE_TYPE_DIRECTORY) -+ return 1; -+ -+ return strcasecmp(g_file_info_get_name(ia), g_file_info_get_name(ib)); -+} -+ -+/* Declaration of mount callback functions */ -+static void mount_enclosing_volume_finished (GObject *source_object, -+ GAsyncResult *res, -+ gpointer user_data); -+static void mount_operation_ask_password (GMountOperation *mount_op, -+ const char *message, -+ const char *default_user, -+ const char *default_domain, -+ GAskPasswordFlags flags, -+ gpointer user_data); -+//----------------------------------------------------------------------------- -+ -+class nsGIOInputStream : public nsIInputStream -+{ -+ public: -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIINPUTSTREAM -+ -+ nsGIOInputStream(const nsCString &uriSpec) -+ : mSpec(uriSpec) -+ , mChannel(nsnull) -+ , mHandle(nsnull) -+ , mStream(nsnull) -+ , mBytesRemaining(PR_UINT32_MAX) -+ , mStatus(NS_OK) -+ , mDirList(nsnull) -+ , mDirListPtr(nsnull) -+ , mDirBufCursor(0) -+ , mDirOpen(PR_FALSE) -+ , mMonitorMountInProgress("GIOInputStream::MountFinished") { } -+ -+ ~nsGIOInputStream() { Close(); } -+ -+ void SetChannel(nsIChannel *channel) -+ { -+ // We need to hold an owning reference to our channel. This is done -+ // so we can access the channel's notification callbacks to acquire -+ // a reference to a nsIAuthPrompt if we need to handle an interactive -+ // mount operation. -+ // -+ // However, the channel can only be accessed on the main thread, so -+ // we have to be very careful with ownership. Moreover, it doesn't -+ // support threadsafe addref/release, so proxying is the answer. -+ // -+ // Also, it's important to note that this likely creates a reference -+ // cycle since the channel likely owns this stream. This reference -+ // cycle is broken in our Close method. -+ -+ NS_ADDREF(mChannel = channel); -+ } -+ void SetMountResult(MountOperationResult result, gint error_code); -+ private: -+ nsresult DoOpen(); -+ nsresult DoRead(char *aBuf, PRUint32 aCount, PRUint32 *aCountRead); -+ nsresult SetContentTypeOfChannel(const char *contentType); -+ nsresult MountVolume(); -+ nsresult DoOpenDirectory(); -+ nsresult DoOpenFile(GFileInfo *info); -+ nsCString mSpec; -+ nsIChannel *mChannel; // manually refcounted -+ GFile *mHandle; -+ GFileInputStream *mStream; -+ PRUint64 mBytesRemaining; -+ nsresult mStatus; -+ GList *mDirList; -+ GList *mDirListPtr; -+ nsCString mDirBuf; -+ PRUint32 mDirBufCursor; -+ PRPackedBool mDirOpen; -+ MountOperationResult mMountRes; -+ mozilla::Monitor mMonitorMountInProgress; -+ gint mMountErrorCode; -+}; -+/** -+ * Set result of mount operation and notify monitor waiting for results. -+ * This method is called in main thread as long as it is used only -+ * in mount_enclosing_volume_finished function. -+ * @param result Result of mount operation -+ */ -+void -+nsGIOInputStream::SetMountResult(MountOperationResult result, gint error_code) -+{ -+ mozilla::MonitorAutoEnter mon(mMonitorMountInProgress); -+ mMountRes = result; -+ mMountErrorCode = error_code; -+ mon.Notify(); -+} -+ -+/** -+ * Start mount operation and wait in loop until it is finished. This method is -+ * called from thread which is trying to read from location. -+ */ -+nsresult -+nsGIOInputStream::MountVolume() { -+ GMountOperation* mount_op = g_mount_operation_new(); -+ g_signal_connect (mount_op, "ask-password", -+ G_CALLBACK (mount_operation_ask_password), mChannel); -+ mMountRes = MOUNT_OPERATION_IN_PROGRESS; -+ /* g_file_mount_enclosing_volume uses a dbus request to mount the volume. -+ Callback mount_enclosing_volume_finished is called in main thread -+ (not this thread on which this method is called). */ -+ g_file_mount_enclosing_volume(mHandle, -+ G_MOUNT_MOUNT_NONE, -+ mount_op, -+ NULL, -+ mount_enclosing_volume_finished, -+ this); -+ mozilla::MonitorAutoEnter mon(mMonitorMountInProgress); -+ /* Waiting for finish of mount operation thread */ -+ while (mMountRes == MOUNT_OPERATION_IN_PROGRESS) -+ mon.Wait(); -+ -+ g_object_unref(mount_op); -+ -+ if (mMountRes == MOUNT_OPERATION_FAILED) { -+ return MapGIOResult(mMountErrorCode); -+ } else { -+ return NS_OK; -+ } -+} -+ -+/** -+ * Create list of infos about objects in opened directory -+ * Return: NS_OK when list obtained, otherwise error code according -+ * to failed operation. -+ */ -+nsresult -+nsGIOInputStream::DoOpenDirectory() -+{ -+ GError *error = NULL; -+ -+ GFileEnumerator *f_enum = g_file_enumerate_children(mHandle, -+ "standard::*,time::*", -+ G_FILE_QUERY_INFO_NONE, -+ NULL, -+ &error); -+ if (!f_enum) { -+ nsresult rv = MapGIOResult(error); -+ g_warning("Cannot read from directory: %s", error->message); -+ g_error_free(error); -+ return rv; -+ } -+ // fill list of file infos -+ GFileInfo *info = g_file_enumerator_next_file(f_enum, NULL, &error); -+ while (info) { -+ mDirList = g_list_append(mDirList, info); -+ info = g_file_enumerator_next_file(f_enum, NULL, &error); -+ } -+ g_object_unref(f_enum); -+ if (error) { -+ g_warning("Error reading directory content: %s", error->message); -+ nsresult rv = MapGIOResult(error); -+ g_error_free(error); -+ return rv; -+ } -+ mDirOpen = PR_TRUE; -+ -+ // Sort list of file infos by using FileInfoComparator function -+ mDirList = g_list_sort(mDirList, FileInfoComparator); -+ mDirListPtr = mDirList; -+ -+ // Write base URL (make sure it ends with a '/') -+ mDirBuf.Append("300: "); -+ mDirBuf.Append(mSpec); -+ if (mSpec.get()[mSpec.Length() - 1] != '/') -+ mDirBuf.Append('/'); -+ mDirBuf.Append('\n'); -+ -+ // Write column names -+ mDirBuf.Append("200: filename content-length last-modified file-type\n"); -+ -+ // Write charset (assume UTF-8) -+ // XXX is this correct? -+ mDirBuf.Append("301: UTF-8\n"); -+ SetContentTypeOfChannel(APPLICATION_HTTP_INDEX_FORMAT); -+ return NS_OK; -+} -+ -+/** -+ * Create file stream and set mime type for channel -+ * @param info file info used to determine mime type -+ * @return NS_OK when file stream created successfuly, error code otherwise -+ */ -+nsresult -+nsGIOInputStream::DoOpenFile(GFileInfo *info) -+{ -+ GError *error = NULL; -+ -+ mStream = g_file_read(mHandle, NULL, &error); -+ if (!mStream) { -+ nsresult rv = MapGIOResult(error); -+ g_warning("Cannot read from file: %s", error->message); -+ g_error_free(error); -+ return rv; -+ } -+ -+ const char * content_type = g_file_info_get_content_type(info); -+ if (content_type) { -+ char *mime_type = g_content_type_get_mime_type(content_type); -+ if (mime_type) { -+ if (strcmp(mime_type, APPLICATION_OCTET_STREAM) != 0) { -+ SetContentTypeOfChannel(mime_type); -+ } -+ g_free(mime_type); -+ } -+ } else { -+ g_warning("Missing content type."); -+ } -+ -+ mBytesRemaining = g_file_info_get_size(info); -+ // Update the content length attribute on the channel. We do this -+ // synchronously without proxying. This hack is not as bad as it looks! -+ mChannel->SetContentLength(mBytesRemaining); -+ -+ return NS_OK; -+} -+ -+/** -+ * Start file open operation, mount volume when needed and according to file type -+ * create file output stream or read directory content. -+ * @return NS_OK when file or directory opened successfully, error code otherwise -+ */ -+nsresult -+nsGIOInputStream::DoOpen() -+{ -+ nsresult rv; -+ GError *error = NULL; -+ -+ NS_ASSERTION(mHandle == nsnull, "already open"); -+ -+ mHandle = g_file_new_for_uri( mSpec.get() ); -+ -+ GFileInfo *info = g_file_query_info(mHandle, -+ "standard::*", -+ G_FILE_QUERY_INFO_NONE, -+ NULL, -+ &error); -+ -+ if (error) { -+ if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_NOT_MOUNTED) { -+ // location is not yet mounted, try to mount -+ g_error_free(error); -+ if (NS_IsMainThread()) -+ return NS_ERROR_NOT_CONNECTED; -+ error = NULL; -+ rv = MountVolume(); -+ if (rv != NS_OK) { -+ return rv; -+ } -+ // get info again -+ info = g_file_query_info(mHandle, -+ "standard::*", -+ G_FILE_QUERY_INFO_NONE, -+ NULL, -+ &error); -+ // second try to get file info from remote files after media mount -+ if (!info) { -+ g_warning("Unable to get file info: %s", error->message); -+ rv = MapGIOResult(error); -+ g_error_free(error); -+ return rv; -+ } -+ } else { -+ g_warning("Unable to get file info: %s", error->message); -+ rv = MapGIOResult(error); -+ g_error_free(error); -+ return rv; -+ } -+ } -+ // Get file type to handle directories and file differently -+ GFileType f_type = g_file_info_get_file_type(info); -+ if (f_type == G_FILE_TYPE_DIRECTORY) { -+ // directory -+ rv = DoOpenDirectory(); -+ } else if (f_type != G_FILE_TYPE_UNKNOWN) { -+ // file -+ rv = DoOpenFile(info); -+ } else { -+ g_warning("Unable to get file type."); -+ rv = NS_ERROR_FILE_NOT_FOUND; -+ } -+ if (info) -+ g_object_unref(info); -+ return rv; -+} -+ -+/** -+ * Read content of file or create file list from directory -+ * @param aBuf read destination buffer -+ * @param aCount length of destination buffer -+ * @param aCountRead number of read characters -+ * @return NS_OK when read successfully, NS_BASE_STREAM_CLOSED when end of file, -+ * error code otherwise -+ */ -+nsresult -+nsGIOInputStream::DoRead(char *aBuf, PRUint32 aCount, PRUint32 *aCountRead) -+{ -+ nsresult rv = NS_ERROR_NOT_AVAILABLE; -+ if (mStream) { -+ // file read -+ GError *error = NULL; -+ PRUint32 bytes_read = g_input_stream_read(G_INPUT_STREAM(mStream), -+ aBuf, -+ aCount, -+ NULL, -+ &error); -+ if (error) { -+ rv = MapGIOResult(error); -+ *aCountRead = 0; -+ g_warning("Cannot read from file: %s", error->message); -+ g_error_free(error); -+ return rv; -+ } -+ *aCountRead = bytes_read; -+ mBytesRemaining -= *aCountRead; -+ return NS_OK; -+ } -+ else if (mDirOpen) { -+ // directory read -+ while (aCount && rv != NS_BASE_STREAM_CLOSED) -+ { -+ // Copy data out of our buffer -+ PRUint32 bufLen = mDirBuf.Length() - mDirBufCursor; -+ if (bufLen) -+ { -+ PRUint32 n = PR_MIN(bufLen, aCount); -+ memcpy(aBuf, mDirBuf.get() + mDirBufCursor, n); -+ *aCountRead += n; -+ aBuf += n; -+ aCount -= n; -+ mDirBufCursor += n; -+ } -+ -+ if (!mDirListPtr) // Are we at the end of the directory list? -+ { -+ rv = NS_BASE_STREAM_CLOSED; -+ } -+ else if (aCount) // Do we need more data? -+ { -+ GFileInfo *info = (GFileInfo *) mDirListPtr->data; -+ -+ // Prune '.' and '..' from directory listing. -+ const char * fname = g_file_info_get_name(info); -+ if (fname && fname[0] == '.' && -+ (fname[1] == '\0' || (fname[1] == '.' && fname[2] == '\0'))) -+ { -+ mDirListPtr = mDirListPtr->next; -+ continue; -+ } -+ -+ mDirBuf.Assign("201: "); -+ -+ // The "filename" field -+ nsCString escName; -+ nsCOMPtr<nsINetUtil> nu = do_GetService(NS_NETUTIL_CONTRACTID); -+ if (nu && fname) { -+ nu->EscapeString(nsDependentCString(fname), -+ nsINetUtil::ESCAPE_URL_PATH, escName); -+ -+ mDirBuf.Append(escName); -+ mDirBuf.Append(' '); -+ } -+ -+ // The "content-length" field -+ // XXX truncates size from 64-bit to 32-bit -+ mDirBuf.AppendInt(PRInt32(g_file_info_get_size(info))); -+ mDirBuf.Append(' '); -+ -+ // The "last-modified" field -+ // -+ // NSPR promises: PRTime is compatible with time_t -+ // we just need to convert from seconds to microseconds -+ GTimeVal gtime; -+ g_file_info_get_modification_time(info, >ime); -+ -+ PRExplodedTime tm; -+ PRTime pt = ((PRTime) gtime.tv_sec) * 1000000; -+ PR_ExplodeTime(pt, PR_GMTParameters, &tm); -+ { -+ char buf[64]; -+ PR_FormatTimeUSEnglish(buf, sizeof(buf), -+ "%a,%%20%d%%20%b%%20%Y%%20%H:%M:%S%%20GMT ", &tm); -+ mDirBuf.Append(buf); -+ } -+ -+ // The "file-type" field -+ switch (g_file_info_get_file_type(info)) -+ { -+ case G_FILE_TYPE_REGULAR: -+ mDirBuf.Append("FILE "); -+ break; -+ case G_FILE_TYPE_DIRECTORY: -+ mDirBuf.Append("DIRECTORY "); -+ break; -+ case G_FILE_TYPE_SYMBOLIC_LINK: -+ mDirBuf.Append("SYMBOLIC-LINK "); -+ break; -+ default: -+ break; -+ } -+ mDirBuf.Append('\n'); -+ -+ mDirBufCursor = 0; -+ mDirListPtr = mDirListPtr->next; -+ } -+ } -+ } -+ return rv; -+} -+ -+/** -+ * This class is used to implement SetContentTypeOfChannel. -+ */ -+class nsGIOSetContentTypeEvent : public nsRunnable -+{ -+ public: -+ nsGIOSetContentTypeEvent(nsIChannel *channel, const char *contentType) -+ : mChannel(channel), mContentType(contentType) -+ { -+ // stash channel reference in mChannel. no AddRef here! see note -+ // in SetContentTypeOfchannel. -+ } -+ -+ NS_IMETHOD Run() -+ { -+ mChannel->SetContentType(mContentType); -+ return NS_OK; -+ } -+ -+ private: -+ nsIChannel *mChannel; -+ nsCString mContentType; -+}; -+ -+nsresult -+nsGIOInputStream::SetContentTypeOfChannel(const char *contentType) -+{ -+ // We need to proxy this call over to the main thread. We post an -+ // asynchronous event in this case so that we don't delay reading data, and -+ // we know that this is safe to do since the channel's reference will be -+ // released asynchronously as well. We trust the ordering of the main -+ // thread's event queue to protect us against memory corruption. -+ -+ nsresult rv; -+ nsCOMPtr<nsIRunnable> ev = -+ new nsGIOSetContentTypeEvent(mChannel, contentType); -+ if (!ev) -+ { -+ rv = NS_ERROR_OUT_OF_MEMORY; -+ } -+ else -+ { -+ rv = NS_DispatchToMainThread(ev); -+ } -+ return rv; -+} -+ -+NS_IMPL_THREADSAFE_ISUPPORTS1(nsGIOInputStream, nsIInputStream) -+ -+/** -+ * Free all used memory and close stream. -+ */ -+NS_IMETHODIMP -+nsGIOInputStream::Close() -+{ -+ if (mStream) -+ { -+ g_object_unref(mStream); -+ mStream = nsnull; -+ } -+ -+ if (mHandle) -+ { -+ g_object_unref(mHandle); -+ mHandle = nsnull; -+ } -+ -+ if (mDirList) -+ { -+ // Destroy the list of GIOFileInfo objects... -+ g_list_foreach(mDirList, (GFunc) g_object_unref, nsnull); -+ g_list_free(mDirList); -+ mDirList = nsnull; -+ mDirListPtr = nsnull; -+ } -+ -+ if (mChannel) -+ { -+ nsresult rv = NS_OK; -+ -+ nsCOMPtr<nsIThread> thread = do_GetMainThread(); -+ if (thread) -+ rv = NS_ProxyRelease(thread, mChannel); -+ -+ NS_ASSERTION(thread && NS_SUCCEEDED(rv), "leaking channel reference"); -+ mChannel = nsnull; -+ } -+ -+ mSpec.Truncate(); // free memory -+ -+ // Prevent future reads from re-opening the handle. -+ if (NS_SUCCEEDED(mStatus)) -+ mStatus = NS_BASE_STREAM_CLOSED; -+ -+ return NS_OK; -+} -+ -+/** -+ * Return number of remaining bytes available on input -+ * @param aResult remaining bytes -+ */ -+NS_IMETHODIMP -+nsGIOInputStream::Available(PRUint32 *aResult) -+{ -+ if (NS_FAILED(mStatus)) -+ return mStatus; -+ -+ /* When remaining bytes are bigger than max PRUint32 value an aResult must -+ be set to PRUint32 maximum */ -+ if (mBytesRemaining > PR_UINT32_MAX) -+ *aResult = PR_UINT32_MAX; -+ else -+ *aResult = mBytesRemaining; -+ -+ return NS_OK; -+} -+ -+/** -+ * Trying to read from stream. When location is not available it tries to mount it. -+ * @param aBuf buffer to put read data -+ * @param aCount length of aBuf -+ * @param aCountRead number of bytes actually read -+ */ -+NS_IMETHODIMP -+nsGIOInputStream::Read(char *aBuf, -+ PRUint32 aCount, -+ PRUint32 *aCountRead) -+{ -+ *aCountRead = 0; -+ // Check if file is already opened, otherwise open it -+ if (!mStream && !mDirOpen && mStatus == NS_OK) { -+ mStatus = DoOpen(); -+ if (NS_FAILED(mStatus)) { -+ return mStatus; -+ } -+ } -+ -+ mStatus = DoRead(aBuf, aCount, aCountRead); -+ // Check if all data has been read -+ if (mStatus == NS_BASE_STREAM_CLOSED) -+ return NS_OK; -+ -+ // Check whenever any error appears while reading -+ return mStatus; -+} -+ -+NS_IMETHODIMP -+nsGIOInputStream::ReadSegments(nsWriteSegmentFun aWriter, -+ void *aClosure, -+ PRUint32 aCount, -+ PRUint32 *aResult) -+{ -+ // There is no way to implement this using GnomeVFS, but fortunately -+ // that doesn't matter. Because we are a blocking input stream, Necko -+ // isn't going to call our ReadSegments method. -+ NS_NOTREACHED("nsGIOInputStream::ReadSegments"); -+ return NS_ERROR_NOT_IMPLEMENTED; -+} -+ -+NS_IMETHODIMP -+nsGIOInputStream::IsNonBlocking(PRBool *aResult) -+{ -+ *aResult = PR_FALSE; -+ return NS_OK; -+} -+ -+//----------------------------------------------------------------------------- -+ -+/** -+ * Called when finishing mount operation. Result of operation is set in -+ * nsGIOInputStream. This function is called in main thread as an async request -+ * typically from dbus. -+ * @param source_object GFile object which requested the mount -+ * @param res result object -+ * @param user_data pointer to nsGIOInputStream -+ */ -+static void -+mount_enclosing_volume_finished (GObject *source_object, -+ GAsyncResult *res, -+ gpointer user_data) -+{ -+ GError *error = NULL; -+ -+ nsGIOInputStream* istream = static_cast<nsGIOInputStream*>(user_data); -+ -+ g_file_mount_enclosing_volume_finish(G_FILE (source_object), res, &error); -+ -+ if (error) { -+ g_warning("Mount failed: %s %d", error->message, error->code); -+ istream->SetMountResult(MOUNT_OPERATION_FAILED, error->code); -+ g_error_free(error); -+ } else { -+ istream->SetMountResult(MOUNT_OPERATION_SUCCESS, 0); -+ } -+} -+ -+/** -+ * This function is called when username or password are requested from user. -+ * This function is called in main thread as async request from dbus. -+ * @param mount_op mount operation -+ * @param message message to show to user -+ * @param default_user preffered user -+ * @param default_domain domain name -+ * @param flags what type of information is required -+ * @param user_data nsIChannel -+ */ -+static void -+mount_operation_ask_password (GMountOperation *mount_op, -+ const char *message, -+ const char *default_user, -+ const char *default_domain, -+ GAskPasswordFlags flags, -+ gpointer user_data) -+{ -+ nsIChannel *channel = (nsIChannel *) user_data; -+ if (!channel) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ // We can't handle request for domain -+ if (flags & G_ASK_PASSWORD_NEED_DOMAIN) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ -+ nsCOMPtr<nsIAuthPrompt> prompt; -+ NS_QueryNotificationCallbacks(channel, prompt); -+ -+ // If no auth prompt, then give up. We could failover to using the -+ // WindowWatcher service, but that might defeat a consumer's purposeful -+ // attempt to disable authentication (for whatever reason). -+ if (!prompt) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ // Parse out the host and port... -+ nsCOMPtr<nsIURI> uri; -+ channel->GetURI(getter_AddRefs(uri)); -+ if (!uri) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ -+ nsCAutoString scheme, hostPort; -+ uri->GetScheme(scheme); -+ uri->GetHostPort(hostPort); -+ -+ // It doesn't make sense for either of these strings to be empty. What kind -+ // of funky URI is this? -+ if (scheme.IsEmpty() || hostPort.IsEmpty()) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ // Construct the single signon key. Altering the value of this key will -+ // cause people's remembered passwords to be forgotten. Think carefully -+ // before changing the way this key is constructed. -+ nsAutoString key, realm; -+ -+ NS_ConvertUTF8toUTF16 dispHost(scheme); -+ dispHost.Append(NS_LITERAL_STRING("://")); -+ dispHost.Append(NS_ConvertUTF8toUTF16(hostPort)); -+ -+ key = dispHost; -+ if (*default_domain != '\0') -+ { -+ // We assume the realm string is ASCII. That might be a bogus assumption, -+ // but we have no idea what encoding GnomeVFS is using, so for now we'll -+ // limit ourselves to ISO-Latin-1. XXX What is a better solution? -+ realm.Append('"'); -+ realm.Append(NS_ConvertASCIItoUTF16(default_domain)); -+ realm.Append('"'); -+ key.Append(' '); -+ key.Append(realm); -+ } -+ // Construct the message string... -+ // -+ // We use Necko's string bundle here. This code really should be encapsulated -+ // behind some Necko API, after all this code is based closely on the code in -+ // nsHttpChannel.cpp. -+ nsCOMPtr<nsIStringBundleService> bundleSvc = -+ do_GetService(NS_STRINGBUNDLE_CONTRACTID); -+ if (!bundleSvc) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ nsCOMPtr<nsIStringBundle> bundle; -+ bundleSvc->CreateBundle("chrome://global/locale/commonDialogs.properties", -+ getter_AddRefs(bundle)); -+ if (!bundle) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ nsAutoString nsmessage; -+ -+ if (flags & G_ASK_PASSWORD_NEED_PASSWORD) { -+ if (flags & G_ASK_PASSWORD_NEED_USERNAME) { -+ if (!realm.IsEmpty()) { -+ const PRUnichar *strings[] = { realm.get(), dispHost.get() }; -+ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterLoginForRealm").get(), -+ strings, 2, getter_Copies(nsmessage)); -+ } else { -+ const PRUnichar *strings[] = { dispHost.get() }; -+ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterUserPasswordFor").get(), -+ strings, 1, getter_Copies(nsmessage)); -+ } -+ } else { -+ NS_ConvertUTF8toUTF16 userName(default_user); -+ const PRUnichar *strings[] = { userName.get(), dispHost.get() }; -+ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterPasswordFor").get(), -+ strings, 2, getter_Copies(nsmessage)); -+ } -+ } else { -+ g_warning("Unknown mount operation request (flags: %x)", flags); -+ } -+ -+ if (nsmessage.IsEmpty()) { -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ // Prompt the user... -+ nsresult rv; -+ PRBool retval = PR_FALSE; -+ PRUnichar *user = nsnull, *pass = nsnull; -+ if (default_user) { -+ // user will be freed by PromptUsernameAndPassword -+ user = ToNewUnicode(NS_ConvertUTF8toUTF16(default_user)); -+ } -+ if (flags & G_ASK_PASSWORD_NEED_USERNAME) { -+ rv = prompt->PromptUsernameAndPassword(nsnull, nsmessage.get(), -+ key.get(), -+ nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, -+ &user, &pass, &retval); -+ } else { -+ rv = prompt->PromptPassword(nsnull, nsmessage.get(), -+ key.get(), -+ nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, -+ &pass, &retval); -+ } -+ if (NS_FAILED(rv) || !retval) { // was || user == '\0' || pass == '\0' -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); -+ return; -+ } -+ /* GIO should accept UTF8 */ -+ g_mount_operation_set_username(mount_op, NS_ConvertUTF16toUTF8(user).get()); -+ g_mount_operation_set_password(mount_op, NS_ConvertUTF16toUTF8(pass).get()); -+ nsMemory::Free(user); -+ nsMemory::Free(pass); -+ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_HANDLED); -+} -+ -+//----------------------------------------------------------------------------- -+ -+class nsGIOProtocolHandler : public nsIProtocolHandler -+ , public nsIObserver -+{ -+ public: -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIPROTOCOLHANDLER -+ NS_DECL_NSIOBSERVER -+ -+ nsresult Init(); -+ -+ private: -+ void InitSupportedProtocolsPref(nsIPrefBranch *prefs); -+ PRBool IsSupportedProtocol(const nsCString &spec); -+ -+ nsCString mSupportedProtocols; -+}; -+ -+NS_IMPL_ISUPPORTS2(nsGIOProtocolHandler, nsIProtocolHandler, nsIObserver) -+ -+nsresult -+nsGIOProtocolHandler::Init() -+{ -+#ifdef PR_LOGGING -+ sGIOLog = PR_NewLogModule("gio"); -+#endif -+ -+ nsCOMPtr<nsIPrefBranch2> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); -+ if (prefs) -+ { -+ InitSupportedProtocolsPref(prefs); -+ prefs->AddObserver(MOZ_GIO_SUPPORTED_PROTOCOLS, this, PR_FALSE); -+ } -+ -+ return NS_OK; -+} -+ -+void -+nsGIOProtocolHandler::InitSupportedProtocolsPref(nsIPrefBranch *prefs) -+{ -+ // Get user preferences to determine which protocol is supported. -+ // Gvfs/GIO has a set of supported protocols like obex, network, archive, -+ // computer, dav, cdda, gphoto2, trash, etc. Some of these seems to be -+ // irrelevant to process by browser. By default accept only smb and sftp -+ // protocols so far. -+ nsresult rv = prefs->GetCharPref(MOZ_GIO_SUPPORTED_PROTOCOLS, -+ getter_Copies(mSupportedProtocols)); -+ if (NS_SUCCEEDED(rv)) { -+ mSupportedProtocols.StripWhitespace(); -+ ToLowerCase(mSupportedProtocols); -+ } -+ else -+ mSupportedProtocols.Assign("smb:,sftp:"); // use defaults -+ -+ LOG(("gio: supported protocols \"%s\"\n", mSupportedProtocols.get())); -+} -+ -+PRBool -+nsGIOProtocolHandler::IsSupportedProtocol(const nsCString &aSpec) -+{ -+ const char *specString = aSpec.get(); -+ const char *colon = strchr(specString, ':'); -+ if (!colon) -+ return PR_FALSE; -+ -+ PRUint32 length = colon - specString + 1; -+ -+ // <scheme> + ':' -+ nsCString scheme(specString, length); -+ -+ char *found = PL_strcasestr(mSupportedProtocols.get(), scheme.get()); -+ if (!found) -+ return PR_FALSE; -+ -+ if (found[length] != ',' && found[length] != '\0') -+ return PR_FALSE; -+ -+ return PR_TRUE; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::GetScheme(nsACString &aScheme) -+{ -+ aScheme.Assign(MOZ_GIO_SCHEME); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::GetDefaultPort(PRInt32 *aDefaultPort) -+{ -+ *aDefaultPort = -1; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::GetProtocolFlags(PRUint32 *aProtocolFlags) -+{ -+ // Is URI_STD true of all GnomeVFS URI types? -+ *aProtocolFlags = URI_STD | URI_DANGEROUS_TO_LOAD; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::NewURI(const nsACString &aSpec, -+ const char *aOriginCharset, -+ nsIURI *aBaseURI, -+ nsIURI **aResult) -+{ -+ const nsCString flatSpec(aSpec); -+ LOG(("gio: NewURI [spec=%s]\n", flatSpec.get())); -+ -+ if (!aBaseURI) -+ { -+ // XXX Is it good to support all GIO protocols? -+ if (!IsSupportedProtocol(flatSpec)) -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ -+ PRInt32 colon_location = flatSpec.FindChar(':'); -+ if (colon_location <= 0) -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ -+ // Verify that GIO supports this URI scheme. -+ PRBool uri_scheme_supported = PR_FALSE; -+ -+ GVfs *gvfs = g_vfs_get_default(); -+ -+ if (!gvfs) { -+ g_warning("Cannot get GVfs object."); -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ } -+ -+ const gchar* const * uri_schemes = g_vfs_get_supported_uri_schemes(gvfs); -+ -+ while (*uri_schemes != NULL) { -+ // While flatSpec ends with ':' the uri_scheme does not. Therefore do not -+ // compare last character. -+ if (StringHead(flatSpec, colon_location).Equals(*uri_schemes)) { -+ uri_scheme_supported = PR_TRUE; -+ break; -+ } -+ uri_schemes++; -+ } -+ -+ if (!uri_scheme_supported) { -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ } -+ } -+ -+ nsresult rv; -+ nsCOMPtr<nsIStandardURL> url = -+ do_CreateInstance(NS_STANDARDURL_CONTRACTID, &rv); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ rv = url->Init(nsIStandardURL::URLTYPE_STANDARD, -1, flatSpec, -+ aOriginCharset, aBaseURI); -+ if (NS_SUCCEEDED(rv)) -+ rv = CallQueryInterface(url, aResult); -+ return rv; -+ -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::NewChannel(nsIURI *aURI, nsIChannel **aResult) -+{ -+ NS_ENSURE_ARG_POINTER(aURI); -+ nsresult rv; -+ -+ nsCAutoString spec; -+ rv = aURI->GetSpec(spec); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ nsRefPtr<nsGIOInputStream> stream = new nsGIOInputStream(spec); -+ if (!stream) -+ { -+ rv = NS_ERROR_OUT_OF_MEMORY; -+ } -+ else -+ { -+ // start out assuming an unknown content-type. we'll set the content-type -+ // to something better once we open the URI. -+ rv = NS_NewInputStreamChannel(aResult, -+ aURI, -+ stream, -+ NS_LITERAL_CSTRING(UNKNOWN_CONTENT_TYPE)); -+ if (NS_SUCCEEDED(rv)) -+ stream->SetChannel(*aResult); -+ } -+ return rv; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::AllowPort(PRInt32 aPort, -+ const char *aScheme, -+ PRBool *aResult) -+{ -+ // Don't override anything. -+ *aResult = PR_FALSE; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGIOProtocolHandler::Observe(nsISupports *aSubject, -+ const char *aTopic, -+ const PRUnichar *aData) -+{ -+ if (strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) == 0) { -+ nsCOMPtr<nsIPrefBranch> prefs = do_QueryInterface(aSubject); -+ InitSupportedProtocolsPref(prefs); -+ } -+ return NS_OK; -+} -+ -+//----------------------------------------------------------------------------- -+ -+#define NS_GIOPROTOCOLHANDLER_CID \ -+{ /* ee706783-3af8-4d19-9e84-e2ebfe213480 */ \ -+ 0xee706783, \ -+ 0x3af8, \ -+ 0x4d19, \ -+ {0x9e, 0x84, 0xe2, 0xeb, 0xfe, 0x21, 0x34, 0x80} \ -+} -+ -+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGIOProtocolHandler, Init) -+NS_DEFINE_NAMED_CID(NS_GIOPROTOCOLHANDLER_CID); -+ -+static const mozilla::Module::CIDEntry kVFSCIDs[] = { -+ { &kNS_GIOPROTOCOLHANDLER_CID, false, NULL, nsGIOProtocolHandlerConstructor }, -+ { NULL } -+}; -+ -+static const mozilla::Module::ContractIDEntry kVFSContracts[] = { -+ { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MOZ_GIO_SCHEME, &kNS_GIOPROTOCOLHANDLER_CID }, -+ { NULL } -+}; -+ -+static const mozilla::Module kVFSModule = { -+ mozilla::Module::kVersion, -+ kVFSCIDs, -+ kVFSContracts -+}; -+ -+NSMODULE_DEFN(nsGIOModule) = &kVFSModule; -diff -r 49a1b2aa43c5 netwerk/base/src/nsIOService.cpp ---- a/netwerk/base/src/nsIOService.cpp Tue Dec 21 12:42:59 2010 +0100 -+++ b/netwerk/base/src/nsIOService.cpp Tue Jan 11 11:17:52 2011 +0100 -@@ -454,6 +454,27 @@ - } - - #ifdef MOZ_X11 -+ // check to see whether GVFS can handle this URI scheme. if it can -+ // create a nsIURI for the "scheme:", then we assume it has support for -+ // the requested protocol. otherwise, we failover to using the default -+ // protocol handler. -+ -+ rv = CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"moz-gio", -+ result); -+ if (NS_SUCCEEDED(rv)) { -+ nsCAutoString spec(scheme); -+ spec.Append(':'); -+ -+ nsIURI *uri; -+ rv = (*result)->NewURI(spec, nsnull, nsnull, &uri); -+ if (NS_SUCCEEDED(rv)) { -+ NS_RELEASE(uri); -+ return rv; -+ } -+ -+ NS_RELEASE(*result); -+ } -+ - // check to see whether GnomeVFS can handle this URI scheme. if it can - // create a nsIURI for the "scheme:", then we assume it has support for - // the requested protocol. otherwise, we failover to using the default diff --git a/extra/xulrunner/xulrunner-omnijar.patch b/extra/xulrunner/xulrunner-omnijar.patch deleted file mode 100644 index 66ec5206c..000000000 --- a/extra/xulrunner/xulrunner-omnijar.patch +++ /dev/null @@ -1,1737 +0,0 @@ -# HG changeset patch -# Parent a7dea879b4b445a23186f438900562155bb39e99 -Bug 620931 part 1 - Use chrome manifest to register resource://gre-resources/ - -diff --git a/layout/style/jar.mn b/layout/style/jar.mn ---- a/layout/style/jar.mn -+++ b/layout/style/jar.mn -@@ -1,8 +1,10 @@ - toolkit.jar: - * res/ua.css (ua.css) - res/html.css (html.css) - res/quirk.css (quirk.css) - res/viewsource.css (viewsource.css) - * res/forms.css (forms.css) - res/arrow.gif (arrow.gif) - res/arrowd.gif (arrowd.gif) -+ -+% resource gre-resources %res/ -diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp ---- a/netwerk/protocol/res/nsResProtocolHandler.cpp -+++ b/netwerk/protocol/res/nsResProtocolHandler.cpp -@@ -75,17 +75,16 @@ static nsResProtocolHandler *gResHandler - // - // this enables PR_LOG_ALWAYS level information and places all output in - // the file log.txt - // - static PRLogModuleInfo *gResLog; - #endif - - #define kGRE NS_LITERAL_CSTRING("gre") --#define kGRE_RESOURCES NS_LITERAL_CSTRING("gre-resources") - - //---------------------------------------------------------------------------- - // nsResURL : overrides nsStandardURL::GetFile to provide nsIFile resolution - //---------------------------------------------------------------------------- - - nsresult - nsResURL::EnsureFile() - { -@@ -197,28 +196,16 @@ nsResProtocolHandler::Init() - NS_ENSURE_SUCCESS(rv, rv); - - // - // make resource://gre/ point to the GRE directory - // - rv = AddSpecialDir(NS_GRE_DIR, kGRE); - NS_ENSURE_SUCCESS(rv, rv); - -- // make resource://gre-resources/ point to gre toolkit[.jar]/res -- nsCOMPtr<nsIURI> greURI; -- nsCOMPtr<nsIURI> greResURI; -- GetSubstitution(kGRE, getter_AddRefs(greURI)); --#ifdef MOZ_CHROME_FILE_FORMAT_JAR -- NS_NAMED_LITERAL_CSTRING(strGRE_RES_URL, "jar:chrome/toolkit.jar!/res/"); --#else -- NS_NAMED_LITERAL_CSTRING(strGRE_RES_URL, "chrome/toolkit/res/"); --#endif -- rv = mIOService->NewURI(strGRE_RES_URL, nsnull, greURI, -- getter_AddRefs(greResURI)); -- SetSubstitution(kGRE_RESOURCES, greResURI); - //XXXbsmedberg Neil wants a resource://pchrome/ for the profile chrome dir... - // but once I finish multiple chrome registration I'm not sure that it is needed - - // XXX dveditz: resource://pchrome/ defeats profile directory salting - // if web content can load it. Tread carefully. - - return rv; - } -@@ -242,22 +229,16 @@ nsResProtocolHandler::Init(nsIFile *aOmn - // these entries should be kept in sync with the normal Init function - - // resource:/// points to jar:omni.jar!/ - SetSubstitution(EmptyCString(), uri); - - // resource://gre/ points to jar:omni.jar!/ - SetSubstitution(kGRE, uri); - -- urlStr += "chrome/toolkit/res/"; -- rv = mIOService->NewURI(urlStr, nsnull, nsnull, getter_AddRefs(uri)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- // resource://gre-resources/ points to jar:omni.jar!/chrome/toolkit/res/ -- SetSubstitution(kGRE_RESOURCES, uri); - return NS_OK; - } - #endif - - #ifdef MOZ_IPC - static PLDHashOperator - EnumerateSubstitution(const nsACString& aKey, - nsIURI* aURI, -# HG changeset patch -# Parent 3038cccba1a071d6b418e15442d0f2d9f3dcb11d -Bug 620931 part 2 - When building --with-libxul-sdk, use the right preferences directory - -diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in ---- a/browser/locales/Makefile.in -+++ b/browser/locales/Makefile.in -@@ -183,17 +183,17 @@ install:: $(addsuffix .xml,$(SEARCH_PLUG - $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/searchplugins - - - libs-%: - $(NSINSTALL) -D $(DIST)/install - @$(MAKE) -C ../../toolkit/locales libs-$* BOTH_MANIFESTS=1 - @$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 - @$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 -- @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref BOTH_MANIFESTS=1 -+ @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR) BOTH_MANIFESTS=1 - @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1 - - - repackage-win32-installer: WIN32_INSTALLER_OUT="$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe" - repackage-win32-installer: $(WIN32_INSTALLER_IN) $(SUBMAKEFILES) - @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)." - $(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export - $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen l10ngen/setup.exe l10ngen/7zSD.sfx -diff --git a/toolkit/mozapps/installer/packager.mk b/toolkit/mozapps/installer/packager.mk ---- a/toolkit/mozapps/installer/packager.mk -+++ b/toolkit/mozapps/installer/packager.mk -@@ -307,17 +307,17 @@ OMNIJAR_FILES = \ - res \ - defaults \ - greprefs.js \ - jsloader \ - $(NULL) - - NON_OMNIJAR_FILES += \ - chrome/icons/\* \ -- defaults/pref/channel-prefs.js \ -+ $(PREF_DIR)/channel-prefs.js \ - res/cursors/\* \ - res/MainMenu.nib/\* \ - $(NULL) - - PACK_OMNIJAR = \ - rm -f omni.jar components/binary.manifest && \ - grep -h '^binary-component' components/*.manifest > binary.manifest ; \ - sed -e 's/^binary-component/\#binary-component/' components/components.manifest > components.manifest && \ -# HG changeset patch -# Parent cd8df8030f7ad7530692bd7c4391a8009df56a02 -Bug 620931 part 3 - Allow GRE and XUL application to use omni.jar independently - -We now store two independent locations for an omni.jar, allowing GRE/XRE and -XUL application to each have their own omni.jar. And since xulrunner setups -are very independent from the XUL applications, we implement support for both -omni.jar and non omni.jar cases in the same runtime, with the side effect of -allowing to switch from one to the other manually without rebuilding the -binaries. - -We let the mozilla::Omnijar API handle both cases, so that callers don't need -too much work to support them. - -We also make the preferences service load the same set of preferences in all -the various cases (unified vs. separate, omni.jar vs. no omni.jar). - -The child process launcher for IPC is modified to pass the base directories -needed for the mozilla::Omnijar API initialization in the child process. - -Finally, the startupcache file name canonicalization is modified to separate -APP and GRE resources. - -diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp ---- a/ipc/glue/GeckoChildProcessHost.cpp -+++ b/ipc/glue/GeckoChildProcessHost.cpp -@@ -440,26 +440,29 @@ GeckoChildProcessHost::PerformAsyncLaunc - // other end of the socketpair() from us - - std::vector<std::string> childArgv; - - childArgv.push_back(exePath.value()); - - childArgv.insert(childArgv.end(), aExtraOpts.begin(), aExtraOpts.end()); - --#ifdef MOZ_OMNIJAR - // Make sure the child process can find the omnijar - // See XRE_InitCommandLine in nsAppRunner.cpp -- nsCAutoString omnijarPath; -- if (mozilla::OmnijarPath()) { -- mozilla::OmnijarPath()->GetNativePath(omnijarPath); -- childArgv.push_back("-omnijar"); -- childArgv.push_back(omnijarPath.get()); -+ nsCAutoString path; -+ nsCOMPtr<nsIFile> file = mozilla::Omnijar::GetBase(mozilla::Omnijar::GRE); -+ if (file && NS_SUCCEEDED(file->GetNativePath(path))) { -+ childArgv.push_back("-grebase"); -+ childArgv.push_back(path.get()); - } --#endif -+ file = mozilla::Omnijar::GetBase(mozilla::Omnijar::APP); -+ if (file && NS_SUCCEEDED(file->GetNativePath(path))) { -+ childArgv.push_back("-appbase"); -+ childArgv.push_back(path.get()); -+ } - - childArgv.push_back(pidstring); - - #if defined(MOZ_CRASHREPORTER) - # if defined(OS_LINUX) - int childCrashFd, childCrashRemapFd; - if (!CrashReporter::CreateNotificationPipeForChild( - &childCrashFd, &childCrashRemapFd)) -@@ -552,26 +555,29 @@ GeckoChildProcessHost::PerformAsyncLaunc - for (std::vector<std::string>::iterator it = aExtraOpts.begin(); - it != aExtraOpts.end(); - ++it) { - cmdLine.AppendLooseValue(UTF8ToWide(*it)); - } - - cmdLine.AppendLooseValue(std::wstring(mGroupId.get())); - --#ifdef MOZ_OMNIJAR - // Make sure the child process can find the omnijar - // See XRE_InitCommandLine in nsAppRunner.cpp -- nsAutoString omnijarPath; -- if (mozilla::OmnijarPath()) { -- mozilla::OmnijarPath()->GetPath(omnijarPath); -- cmdLine.AppendLooseValue(UTF8ToWide("-omnijar")); -- cmdLine.AppendLooseValue(omnijarPath.get()); -+ nsAutoString path; -+ nsCOMPtr<nsIFile> file = mozilla::Omnijar::GetBase(mozilla::Omnijar::GRE); -+ if (file && NS_SUCCEEDED(file->GetPath(path))) { -+ cmdLine.AppendLooseValue(UTF8ToWide("-grebase")); -+ cmdLine.AppendLooseValue(path.get()); - } --#endif -+ file = mozilla::Omnijar::GetBase(mozilla::Omnijar::APP); -+ if (file && NS_SUCCEEDED(file->GetPath(path))) { -+ cmdLine.AppendLooseValue(UTF8ToWide("-appbase")); -+ cmdLine.AppendLooseValue(path.get()); -+ } - - cmdLine.AppendLooseValue(UTF8ToWide(pidstring)); - - #if defined(MOZ_CRASHREPORTER) - cmdLine.AppendLooseValue( - UTF8ToWide(CrashReporter::GetChildNotificationPipe())); - #endif - -diff --git a/js/src/xpconnect/loader/mozJSComponentLoader.cpp b/js/src/xpconnect/loader/mozJSComponentLoader.cpp ---- a/js/src/xpconnect/loader/mozJSComponentLoader.cpp -+++ b/js/src/xpconnect/loader/mozJSComponentLoader.cpp -@@ -81,16 +81,17 @@ - #include "nsIConsoleService.h" - #include "nsIStorageStream.h" - #include "nsIStringStream.h" - #include "prmem.h" - #if defined(XP_WIN) - #include "nsILocalFileWin.h" - #endif - #include "xpcprivate.h" -+#include "nsIResProtocolHandler.h" - - #ifdef MOZ_ENABLE_LIBXUL - #include "mozilla/scache/StartupCache.h" - #include "mozilla/scache/StartupCacheUtils.h" - #endif - #include "mozilla/Omnijar.h" - - #include "jsdbgapi.h" -@@ -621,34 +622,21 @@ mozJSComponentLoader::LoadModule(nsILoca - - const mozilla::Module* - mozJSComponentLoader::LoadModuleFromJAR(nsILocalFile *aJarFile, - const nsACString &aComponentPath) - { - #if !defined(XPCONNECT_STANDALONE) - nsresult rv; - -- nsCAutoString fullSpec; -- --#ifdef MOZ_OMNIJAR -- PRBool equal; -- rv = aJarFile->Equals(mozilla::OmnijarPath(), &equal); -- if (NS_SUCCEEDED(rv) && equal) { -- fullSpec = "resource://gre/"; -- } else { --#endif -- nsCAutoString fileSpec; -- NS_GetURLSpecFromActualFile(aJarFile, fileSpec); -- fullSpec = "jar:"; -- fullSpec += fileSpec; -- fullSpec += "!/"; --#ifdef MOZ_OMNIJAR -- } --#endif -- -+ nsCAutoString fullSpec, fileSpec; -+ NS_GetURLSpecFromActualFile(aJarFile, fileSpec); -+ fullSpec = "jar:"; -+ fullSpec += fileSpec; -+ fullSpec += "!/"; - fullSpec += aComponentPath; - - nsCOMPtr<nsIURI> uri; - rv = NS_NewURI(getter_AddRefs(uri), fullSpec); - if (NS_FAILED(rv)) - return NULL; - - nsAutoString hashstring; -@@ -833,57 +821,138 @@ class JSScriptHolder - JSScriptHolder(JSContext *cx, JSScript *script) - : mCx(cx), mScript(script) {} - ~JSScriptHolder() { ::JS_DestroyScript(mCx, mScript); } - private: - JSContext *mCx; - JSScript *mScript; - }; - -+static const char baseName[2][5] = { "gre/", "app/" }; -+ -+static inline PRBool -+canonicalizeBase(nsCAutoString &spec, nsACString &out, mozilla::Omnijar::Type aType) -+{ -+ nsCAutoString base; -+ nsresult rv = mozilla::Omnijar::GetURIString(aType, base); -+ -+ if (NS_FAILED(rv) || !base.Length()) -+ return PR_FALSE; -+ -+ if (base.Compare(spec.get(), PR_FALSE, base.Length())) -+ return PR_FALSE; -+ -+ out.Append("/resource/"); -+ out.Append(baseName[aType]); -+ out.Append(Substring(spec, base.Length())); -+ return PR_TRUE; -+} - /** - * PathifyURI transforms mozilla .js uris into useful zip paths - * to make it makes it easier to manipulate startup cache entries - * using standard zip tools. - * Transformations applied: -- * * jsloader/<scheme> prefix is used to group mozJSComponentLoader cache entries in -+ * * jsloader/ prefix is used to group mozJSComponentLoader cache entries in - * a top-level zip directory. -- * * In MOZ_OMNIJAR case resource:/// and resource://gre/ URIs refer to the same path -- * so treat both of them as resource://gre/ -+ * * resource:// URIs are resolved to their corresponding file/jar URI to -+ * canonicalize resources URIs other than gre and app. -+ * * Paths under GRE or APP directory have their base path replaced with -+ * resource/gre or resource/app to avoid depending on install location. -+ * * jar:file:///path/to/file.jar!/sub/path urls are replaced with -+ * /path/to/file.jar/sub/path - * * .bin suffix is added to the end of the path to indicate that jsloader/ entries - * are binary representations of JS source. - * For example: -- * resource://gre/modules/XPCOMUtils.jsm becomes -- * jsloader/resource/gre/modules/XPCOMUtils.jsm.bin -+ * resource://gre/modules/XPCOMUtils.jsm or -+ * file://$GRE_DIR/modules/XPCOMUtils.jsm or -+ * jar:file://$GRE_DIR/omni.jar!/modules/XPCOMUtils.jsm become -+ * jsloader/resource/gre/modules/XPCOMUtils.jsm.bin -+ * file://$PROFILE_DIR/extensions/{uuid}/components/component.js becomes -+ * jsloader/$PROFILE_DIR/extensions/%7Buuid%7D/components/component.js.bin -+ * jar:file://$PROFILE_DIR/extensions/some.xpi!/components/component.js becomes -+ * jsloader/$PROFILE_DIR/extensions/some.xpi/components/component.js.bin - */ - static nsresult - PathifyURI(nsIURI *in, nsACString &out) - { -- out = "jsloader/"; -- nsCAutoString scheme; -- nsresult rv = in->GetScheme(scheme); -- NS_ENSURE_SUCCESS(rv, rv); -- out.Append(scheme); -- nsCAutoString host; -- // OK for GetHost to fail since it's not implemented sometimes -- in->GetHost(host); --#ifdef MOZ_OMNIJAR -- if (scheme.Equals("resource") && host.Length() == 0){ -- host = "gre"; -- } --#endif -- if (host.Length()) { -- out.Append("/"); -- out.Append(host); -- } -- nsCAutoString path; -- rv = in->GetPath(path); -- NS_ENSURE_SUCCESS(rv, rv); -- out.Append(path); -- out.Append(".bin"); -- return NS_OK; -+ PRBool equals; -+ nsresult rv; -+ nsCOMPtr<nsIURI> uri = in; -+ nsCAutoString spec; -+ -+ out = "jsloader"; -+ -+ // Resolve resource:// URIs. At the end of this if/else block, we -+ // have both spec and uri variables identifying the same URI. -+ if (NS_SUCCEEDED(in->SchemeIs("resource", &equals)) && equals) { -+ nsCOMPtr<nsIIOService> ioService = do_GetIOService(&rv); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCOMPtr<nsIProtocolHandler> ph; -+ rv = ioService->GetProtocolHandler("resource", getter_AddRefs(ph)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCOMPtr<nsIResProtocolHandler> irph(do_QueryInterface(ph, &rv)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ rv = irph->ResolveURI(in, spec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ rv = ioService->NewURI(spec, nsnull, nsnull, getter_AddRefs(uri)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ } else { -+ rv = in->GetSpec(spec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ } -+ -+ if (!canonicalizeBase(spec, out, mozilla::Omnijar::GRE) && -+ !canonicalizeBase(spec, out, mozilla::Omnijar::APP)) { -+ if (NS_SUCCEEDED(uri->SchemeIs("file", &equals)) && equals) { -+ nsCOMPtr<nsIFileURL> baseFileURL; -+ baseFileURL = do_QueryInterface(uri, &rv); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCAutoString path; -+ rv = baseFileURL->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ out.Append(path); -+ } else if (NS_SUCCEEDED(uri->SchemeIs("jar", &equals)) && equals) { -+ nsCOMPtr<nsIJARURI> jarURI = do_QueryInterface(uri, &rv); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCOMPtr<nsIURI> jarFileURI; -+ rv = jarURI->GetJARFile(getter_AddRefs(jarFileURI)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCOMPtr<nsIFileURL> jarFileURL; -+ jarFileURL = do_QueryInterface(jarFileURI, &rv); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsCAutoString path; -+ rv = jarFileURL->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, rv); -+ out.Append(path); -+ -+ rv = jarURI->GetJAREntry(path); -+ NS_ENSURE_SUCCESS(rv, rv); -+ out.Append("/"); -+ out.Append(path); -+ } else { // Very unlikely -+ nsCAutoString spec; -+ rv = uri->GetSpec(spec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ out.Append("/"); -+ out.Append(spec); -+ } -+ } -+ -+ out.Append(".bin"); -+ return NS_OK; - } - - /* static */ - #ifdef MOZ_ENABLE_LIBXUL - nsresult - mozJSComponentLoader::ReadScript(StartupCache* cache, nsIURI *uri, - JSContext *cx, JSScript **script) - { -diff --git a/modules/libjar/nsJAR.cpp b/modules/libjar/nsJAR.cpp ---- a/modules/libjar/nsJAR.cpp -+++ b/modules/libjar/nsJAR.cpp -@@ -171,26 +171,23 @@ nsJAR::Open(nsIFile* zipFile) - if (mLock) return NS_ERROR_FAILURE; // Already open! - - mZipFile = zipFile; - mOuterZipEntry.Truncate(); - - mLock = PR_NewLock(); - NS_ENSURE_TRUE(mLock, NS_ERROR_OUT_OF_MEMORY); - --#ifdef MOZ_OMNIJAR - // The omnijar is special, it is opened early on and closed late - // this avoids reopening it -- PRBool equals; -- nsresult rv = zipFile->Equals(mozilla::OmnijarPath(), &equals); -- if (NS_SUCCEEDED(rv) && equals) { -- mZip = mozilla::OmnijarReader(); -+ nsZipArchive *zip = mozilla::Omnijar::GetReader(zipFile); -+ if (zip) { -+ mZip = zip; - return NS_OK; - } --#endif - return mZip->OpenArchive(zipFile); - } - - NS_IMETHODIMP - nsJAR::OpenInner(nsIZipReader *aZipReader, const char *aZipEntry) - { - NS_ENSURE_ARG_POINTER(aZipReader); - NS_ENSURE_ARG_POINTER(aZipEntry); -@@ -234,23 +231,22 @@ nsJAR::Close() - mLock = nsnull; - } - - mParsedManifest = PR_FALSE; - mManifestData.Reset(); - mGlobalStatus = JAR_MANIFEST_NOT_PARSED; - mTotalItemsInManifest = 0; - --#ifdef MOZ_OMNIJAR -- if (mZip == mozilla::OmnijarReader()) { -+ if ((mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) || -+ (mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::APP))) { - mZip.forget(); - mZip = new nsZipArchive(); - return NS_OK; - } --#endif - return mZip->CloseArchive(); - } - - NS_IMETHODIMP - nsJAR::Test(const char *aEntryName) - { - return mZip->Test(aEntryName); - } -@@ -391,22 +387,21 @@ nsJAR::GetInputStreamWithSpec(const nsAC - NS_IMETHODIMP - nsJAR::GetCertificatePrincipal(const char* aFilename, nsIPrincipal** aPrincipal) - { - //-- Parameter check - if (!aPrincipal) - return NS_ERROR_NULL_POINTER; - *aPrincipal = nsnull; - --#ifdef MOZ_OMNIJAR - // Don't check signatures in the omnijar - this is only - // interesting for extensions/XPIs. -- if (mZip == mozilla::OmnijarReader()) -+ if ((mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) || -+ (mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::APP))) - return NS_OK; --#endif - - //-- Parse the manifest - nsresult rv = ParseManifest(); - if (NS_FAILED(rv)) return rv; - if (mGlobalStatus == JAR_NO_MANIFEST) - return NS_OK; - - PRInt16 requestedStatus; -diff --git a/modules/libpref/src/nsPrefService.cpp b/modules/libpref/src/nsPrefService.cpp ---- a/modules/libpref/src/nsPrefService.cpp -+++ b/modules/libpref/src/nsPrefService.cpp -@@ -67,20 +67,18 @@ - - #include "prefapi.h" - #include "prefread.h" - #include "prefapi_private_data.h" - #include "PrefTuple.h" - - #include "nsITimelineService.h" - --#ifdef MOZ_OMNIJAR - #include "mozilla/Omnijar.h" - #include "nsZipArchive.h" --#endif - - // Definitions - #define INITIAL_PREF_FILES 10 - static NS_DEFINE_CID(kZipReaderCID, NS_ZIPREADER_CID); - - // Prototypes - static nsresult openPrefFile(nsIFile* aFile); - static nsresult pref_InitInitialObjects(void); -@@ -793,124 +791,144 @@ static nsresult pref_LoadPrefsInDirList( - pref_LoadPrefsInDir(dir, nsnull, 0); - } - } - } - } - return NS_OK; - } - --//---------------------------------------------------------------------------------------- --// Initialize default preference JavaScript buffers from --// appropriate TEXT resources --//---------------------------------------------------------------------------------------- --static nsresult pref_InitDefaults() --{ -- nsCOMPtr<nsIFile> greprefsFile; -- nsresult rv; -- -- rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(greprefsFile)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("greprefs.js")); -- NS_ENSURE_SUCCESS(rv, rv); -- -- rv = openPrefFile(greprefsFile); -- if (NS_FAILED(rv)) { -- NS_WARNING("Error parsing GRE default preferences. Is this an old-style embedding app?"); -- } -- -- return NS_OK; --} -- --#ifdef MOZ_OMNIJAR - static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name) - { - nsZipItemPtr<char> manifest(jarReader, name, true); - NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); - - PrefParseState ps; - PREF_InitParseState(&ps, PREF_ReaderCallback, NULL); - nsresult rv = PREF_ParseBuf(&ps, manifest, manifest.Length()); - PREF_FinalizeParseState(&ps); - - return rv; - } - --static nsresult pref_InitAppDefaultsFromOmnijar() --{ -- nsresult rv; -- -- nsZipArchive* jarReader = mozilla::OmnijarReader(); -- if (!jarReader) -- return pref_InitDefaults(); -- -- rv = pref_ReadPrefFromJar(jarReader, "greprefs.js"); -- NS_ENSURE_SUCCESS(rv, rv); -- -- nsZipFind *findPtr; -- rv = jarReader->FindInit("defaults/pref/*.js$", &findPtr); -- NS_ENSURE_SUCCESS(rv, rv); -- -- nsAutoPtr<nsZipFind> find(findPtr); -- -- nsTArray<nsCString> prefEntries; -- const char *entryName; -- PRUint16 entryNameLen; -- while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) { -- prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen)); -- } -- -- prefEntries.Sort(); -- for (PRUint32 i = prefEntries.Length(); i--; ) { -- rv = pref_ReadPrefFromJar(jarReader, prefEntries[i].get()); -- if (NS_FAILED(rv)) -- NS_WARNING("Error parsing preferences."); -- } -- -- return NS_OK; --} --#endif -- -+//---------------------------------------------------------------------------------------- -+// Initialize default preference JavaScript buffers from -+// appropriate TEXT resources -+//---------------------------------------------------------------------------------------- - static nsresult pref_InitInitialObjects() - { - nsresult rv; - -- // first we parse the GRE default prefs. This also works if we're not using a GRE, --#ifdef MOZ_OMNIJAR -- rv = pref_InitAppDefaultsFromOmnijar(); --#else -- rv = pref_InitDefaults(); --#endif -- NS_ENSURE_SUCCESS(rv, rv); -+ // In omni.jar case, we load the following prefs: -+ // - jar:$gre/omni.jar!/greprefs.js -+ // - jar:$gre/omni.jar!/defaults/pref/*.js -+ // In non omni.jar case, we load: -+ // - $gre/greprefs.js -+ // -+ // When $app == $gre, we additionally load, in all cases: -+ // - $gre/defaults/pref/*.js -+ // This is kept for bug 591866 (channel-prefs.js should not be in omni.jar). -+ // We load all files instead of channel-prefs.js only to have the same -+ // behaviour as $app != $gre. -+ // -+ // When $app != $gre, we additionally load, in omni.jar case: -+ // - jar:$app/omni.jar!/defaults/preferences/*.js -+ // - $app/defaults/preferences/*.js -+ // and in non omni.jar case: -+ // - $app/defaults/preferences/*.js - -- nsCOMPtr<nsIFile> defaultPrefDir; -- // now parse the "application" default preferences -- rv = NS_GetSpecialDirectory(NS_APP_PREF_DEFAULTS_50_DIR, getter_AddRefs(defaultPrefDir)); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsZipFind *findPtr; -+ nsAutoPtr<nsZipFind> find; -+ nsTArray<nsCString> prefEntries; -+ const char *entryName; -+ PRUint16 entryNameLen; - -- /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ -- static const char* specialFiles[] = { -+ nsZipArchive* jarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE); -+ if (jarReader) { -+ // Load jar:$gre/omni.jar!/greprefs.js -+ rv = pref_ReadPrefFromJar(jarReader, "greprefs.js"); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ // Load jar:$gre/omni.jar!/defaults/pref/*.js -+ rv = jarReader->FindInit("defaults/pref/*.js$", &findPtr); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ find = findPtr; -+ while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) { -+ prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen)); -+ } -+ -+ prefEntries.Sort(); -+ for (PRUint32 i = prefEntries.Length(); i--; ) { -+ rv = pref_ReadPrefFromJar(jarReader, prefEntries[i].get()); -+ if (NS_FAILED(rv)) -+ NS_WARNING("Error parsing preferences."); -+ } -+ } else { -+ // Load $gre/greprefs.js -+ nsCOMPtr<nsIFile> greprefsFile; -+ rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(greprefsFile)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("greprefs.js")); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ rv = openPrefFile(greprefsFile); -+ if (NS_FAILED(rv)) -+ NS_WARNING("Error parsing GRE default preferences. Is this an old-style embedding app?"); -+ } -+ -+ if (!mozilla::Omnijar::HasOmnijar(mozilla::Omnijar::APP)) { -+ // Load $gre/defaults/pref/*.js -+ nsCOMPtr<nsIFile> defaultPrefDir; -+ -+ rv = NS_GetSpecialDirectory(NS_APP_PREF_DEFAULTS_50_DIR, getter_AddRefs(defaultPrefDir)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ -+ static const char* specialFiles[] = { - #if defined(XP_MAC) || defined(XP_MACOSX) - "macprefs.js" - #elif defined(XP_WIN) - "winpref.js" - #elif defined(XP_UNIX) - "unix.js" --#if defined(_AIX) -+#if defined(VMS) -+ , "openvms.js" -+#elif defined(_AIX) - , "aix.js" - #endif - #elif defined(XP_OS2) - "os2pref.js" -+#elif defined(XP_BEOS) -+ "beos.js" - #endif -- }; -+ }; - -- rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles)); -- if (NS_FAILED(rv)) { -- NS_WARNING("Error parsing application default preferences."); -+ rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles)); -+ if (NS_FAILED(rv)) -+ NS_WARNING("Error parsing application default preferences."); -+ } -+ -+ // Load jar:$app/omni.jar!/defaults/preferences/*.js -+ nsZipArchive *appJarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::APP); -+ if (appJarReader) { -+ rv = appJarReader->FindInit("defaults/preferences/*.js$", &findPtr); -+ NS_ENSURE_SUCCESS(rv, rv); -+ find = findPtr; -+ prefEntries.Clear(); -+ while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) { -+ prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen)); -+ } -+ prefEntries.Sort(); -+ for (PRUint32 i = prefEntries.Length(); i--; ) { -+ rv = pref_ReadPrefFromJar(appJarReader, prefEntries[i].get()); -+ if (NS_FAILED(rv)) -+ NS_WARNING("Error parsing preferences."); -+ } - } - - rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST); - NS_ENSURE_SUCCESS(rv, rv); - - NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, - nsnull, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID); - -diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp ---- a/netwerk/protocol/res/nsResProtocolHandler.cpp -+++ b/netwerk/protocol/res/nsResProtocolHandler.cpp -@@ -152,97 +152,62 @@ nsResProtocolHandler::nsResProtocolHandl - } - - nsResProtocolHandler::~nsResProtocolHandler() - { - gResHandler = nsnull; - } - - nsresult --nsResProtocolHandler::AddSpecialDir(const char* aSpecialDir, const nsACString& aSubstitution) --{ -- nsCOMPtr<nsIFile> file; -- nsresult rv = NS_GetSpecialDirectory(aSpecialDir, getter_AddRefs(file)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- nsCOMPtr<nsIURI> uri; -- rv = mIOService->NewFileURI(file, getter_AddRefs(uri)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- return SetSubstitution(aSubstitution, uri); --} -- --nsresult - nsResProtocolHandler::Init() - { - if (!mSubstitutions.Init(32)) - return NS_ERROR_UNEXPECTED; - - nsresult rv; - - mIOService = do_GetIOService(&rv); - NS_ENSURE_SUCCESS(rv, rv); - --#ifdef MOZ_OMNIJAR -- nsCOMPtr<nsIFile> omniJar(mozilla::OmnijarPath()); -- if (omniJar) -- return Init(omniJar); --#endif -- -- // these entries should be kept in sync with the omnijar Init function -+ nsCAutoString appURI, greURI; -+ rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::APP, appURI); -+ NS_ENSURE_SUCCESS(rv, rv); -+ rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::GRE, greURI); -+ NS_ENSURE_SUCCESS(rv, rv); - - // -- // make resource:/// point to the application directory -+ // make resource:/// point to the application directory or omnijar - // -- rv = AddSpecialDir(NS_OS_CURRENT_PROCESS_DIR, EmptyCString()); -+ nsCOMPtr<nsIURI> uri; -+ rv = NS_NewURI(getter_AddRefs(uri), appURI.Length() ? appURI : greURI); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ rv = SetSubstitution(EmptyCString(), uri); - NS_ENSURE_SUCCESS(rv, rv); - - // - // make resource://gre/ point to the GRE directory - // -- rv = AddSpecialDir(NS_GRE_DIR, kGRE); -+ if (appURI.Length()) { // We already have greURI in uri if appURI.Length() is 0. -+ rv = NS_NewURI(getter_AddRefs(uri), greURI); -+ NS_ENSURE_SUCCESS(rv, rv); -+ } -+ -+ rv = SetSubstitution(kGRE, uri); - NS_ENSURE_SUCCESS(rv, rv); - - //XXXbsmedberg Neil wants a resource://pchrome/ for the profile chrome dir... - // but once I finish multiple chrome registration I'm not sure that it is needed - - // XXX dveditz: resource://pchrome/ defeats profile directory salting - // if web content can load it. Tread carefully. - - return rv; - } - --#ifdef MOZ_OMNIJAR --nsresult --nsResProtocolHandler::Init(nsIFile *aOmniJar) --{ -- nsresult rv; -- nsCOMPtr<nsIURI> uri; -- nsCAutoString omniJarSpec; -- NS_GetURLSpecFromActualFile(aOmniJar, omniJarSpec, mIOService); -- -- nsCAutoString urlStr("jar:"); -- urlStr += omniJarSpec; -- urlStr += "!/"; -- -- rv = mIOService->NewURI(urlStr, nsnull, nsnull, getter_AddRefs(uri)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- // these entries should be kept in sync with the normal Init function -- -- // resource:/// points to jar:omni.jar!/ -- SetSubstitution(EmptyCString(), uri); -- -- // resource://gre/ points to jar:omni.jar!/ -- SetSubstitution(kGRE, uri); -- -- return NS_OK; --} --#endif -- - #ifdef MOZ_IPC - static PLDHashOperator - EnumerateSubstitution(const nsACString& aKey, - nsIURI* aURI, - void* aArg) - { - nsTArray<ResourceMapping>* resources = - static_cast<nsTArray<ResourceMapping>*>(aArg); -diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp ---- a/startupcache/StartupCache.cpp -+++ b/startupcache/StartupCache.cpp -@@ -237,27 +237,36 @@ StartupCache::GetBuffer(const char* id, - nsZipItemPtr<char> zipItem(mArchive, id, true); - if (zipItem) { - *outbuf = zipItem.Forget(); - *length = zipItem.Length(); - return NS_OK; - } - } - --#ifdef MOZ_OMNIJAR -- if (mozilla::OmnijarReader()) { -+ if (mozilla::Omnijar::GetReader(mozilla::Omnijar::APP)) { - // no need to checksum omnijarred entries -- nsZipItemPtr<char> zipItem(mozilla::OmnijarReader(), id); -+ nsZipItemPtr<char> zipItem(mozilla::Omnijar::GetReader(mozilla::Omnijar::APP), id); - if (zipItem) { - *outbuf = zipItem.Forget(); - *length = zipItem.Length(); - return NS_OK; - } - } --#endif -+ -+ if (mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) { -+ // no need to checksum omnijarred entries -+ nsZipItemPtr<char> zipItem(mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE), id); -+ if (zipItem) { -+ *outbuf = zipItem.Forget(); -+ *length = zipItem.Length(); -+ return NS_OK; -+ } -+ } -+ - return NS_ERROR_NOT_AVAILABLE; - } - - // Makes a copy of the buffer, client retains ownership of inbuf. - nsresult - StartupCache::PutBuffer(const char* id, const char* inbuf, PRUint32 len) - { - WaitOnWriteThread(); -diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp ---- a/toolkit/xre/nsAppRunner.cpp -+++ b/toolkit/xre/nsAppRunner.cpp -@@ -3897,35 +3897,45 @@ XRE_InitCommandLine(int aArgc, char* aAr - CommandLine::Init(aArgc, canonArgs); - - for (int i = 0; i < aArgc; ++i) - free(canonArgs[i]); - delete[] canonArgs; - #endif - #endif - --#ifdef MOZ_OMNIJAR -- const char *omnijarPath = nsnull; -- ArgResult ar = CheckArg("omnijar", PR_FALSE, &omnijarPath); -+ const char *path = nsnull; -+ ArgResult ar = CheckArg("grebase", PR_FALSE, &path); - if (ar == ARG_BAD) { -- PR_fprintf(PR_STDERR, "Error: argument -omnijar requires an omnijar path\n"); -+ PR_fprintf(PR_STDERR, "Error: argument -grebase requires a path argument\n"); - return NS_ERROR_FAILURE; - } - -- if (!omnijarPath) -+ if (!path) - return rv; - -- nsCOMPtr<nsILocalFile> omnijar; -- rv = NS_NewNativeLocalFile(nsDependentCString(omnijarPath), PR_TRUE, -- getter_AddRefs(omnijar)); -- if (NS_SUCCEEDED(rv)) -- mozilla::SetOmnijar(omnijar); --#endif -- -- return rv; -+ nsCOMPtr<nsILocalFile> greBase; -+ rv = XRE_GetFileFromPath(path, getter_AddRefs(greBase)); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ ar = CheckArg("appbase", PR_FALSE, &path); -+ if (ar == ARG_BAD) { -+ PR_fprintf(PR_STDERR, "Error: argument -appbase requires a path argument\n"); -+ return NS_ERROR_FAILURE; -+ } -+ -+ nsCOMPtr<nsILocalFile> appBase; -+ if (path) { -+ rv = XRE_GetFileFromPath(path, getter_AddRefs(appBase)); -+ if (NS_FAILED(rv)) -+ return rv; -+ } -+ -+ return mozilla::Omnijar::SetBase(greBase, appBase); - } - - nsresult - XRE_DeinitCommandLine() - { - nsresult rv = NS_OK; - - #if defined(MOZ_IPC) -diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp ---- a/toolkit/xre/nsEmbedFunctions.cpp -+++ b/toolkit/xre/nsEmbedFunctions.cpp -@@ -512,19 +512,17 @@ XRE_InitChildProcess(int aArgc, - } - - // Run the UI event loop on the main thread. - uiMessageLoop.MessageLoop::Run(); - - // Allow ProcessChild to clean up after itself before going out of - // scope and being deleted - process->CleanUp(); --#ifdef MOZ_OMNIJAR -- mozilla::SetOmnijar(nsnull); --#endif -+ mozilla::Omnijar::SetBase(nsnull, nsnull); - } - } - - NS_LogTerm(); - return XRE_DeinitCommandLine(); - } - - MessageLoop* -diff --git a/xpcom/build/Makefile.in b/xpcom/build/Makefile.in ---- a/xpcom/build/Makefile.in -+++ b/xpcom/build/Makefile.in -@@ -64,28 +64,25 @@ CSRCS = \ - $(NULL) - - CPPSRCS = \ - $(XPCOM_GLUE_SRC_LCPPSRCS) \ - $(XPCOM_GLUENS_SRC_LCPPSRCS) \ - nsXPComInit.cpp \ - nsXPCOMStrings.cpp \ - Services.cpp \ -+ Omnijar.cpp \ - $(NULL) - - ifndef MOZ_ENABLE_LIBXUL - ifeq (,$(filter-out WINNT WINCE OS2,$(OS_ARCH))) - CPPSRCS += dlldeps.cpp - endif - endif - --ifdef MOZ_OMNIJAR --CPPSRCS += Omnijar.cpp --endif -- - SHARED_LIBRARY_LIBS = \ - $(DEPTH)/chrome/src/$(LIB_PREFIX)chrome_s.$(LIB_SUFFIX) \ - ../ds/$(LIB_PREFIX)xpcomds_s.$(LIB_SUFFIX) \ - ../io/$(LIB_PREFIX)xpcomio_s.$(LIB_SUFFIX) \ - ../components/$(LIB_PREFIX)xpcomcomponents_s.$(LIB_SUFFIX) \ - ../threads/$(LIB_PREFIX)xpcomthreads_s.$(LIB_SUFFIX) \ - ../proxy/src/$(LIB_PREFIX)xpcomproxy_s.$(LIB_SUFFIX) \ - ../base/$(LIB_PREFIX)xpcombase_s.$(LIB_SUFFIX) \ -diff --git a/xpcom/build/Omnijar.cpp b/xpcom/build/Omnijar.cpp ---- a/xpcom/build/Omnijar.cpp -+++ b/xpcom/build/Omnijar.cpp -@@ -16,16 +16,17 @@ - * - * The Initial Developer of the Original Code is - * Mozilla Foundation. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Michael Wu <mwu@mozilla.com> -+ * Mike Hommey <mh@glandium.org> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your -@@ -33,69 +34,175 @@ - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - #include "Omnijar.h" - --#include "nsILocalFile.h" --#include "nsXULAppAPI.h" -+#include "nsIFile.h" - #include "nsZipArchive.h" -+#include "nsNetUtil.h" - --static nsILocalFile* sOmnijarPath = nsnull; --static nsZipArchive* sOmnijarReader = nsnull; -+namespace mozilla { - --static void --SetupReader() -+nsIFile *Omnijar::sPath[2] = { nsnull, nsnull }; -+PRBool Omnijar::sIsOmnijar[2] = { PR_FALSE, PR_FALSE }; -+ -+#ifdef MOZ_ENABLE_LIBXUL -+nsZipArchive *Omnijar::sReader[2] = { nsnull, nsnull }; -+#endif -+ -+static already_AddRefed<nsIFile> -+ComputePath(nsIFile *aPath, PRBool &aIsOmnijar) - { -- if (!sOmnijarPath) { -- return; -+ PRBool isDir; -+ aIsOmnijar = PR_FALSE; -+ if (!aPath || NS_FAILED(aPath->IsDirectory(&isDir)) || !isDir) -+ return nsnull; -+ -+ nsCOMPtr<nsIFile> path; -+#ifdef MOZ_ENABLE_LIBXUL -+ // Search for omni.jar in the given directory -+ if (!isDir || NS_FAILED(aPath->Clone(getter_AddRefs(path)))) -+ return nsnull; -+ -+ if (NS_FAILED(path->AppendNative(NS_LITERAL_CSTRING("omni.jar")))) -+ return nsnull; -+ -+ if (NS_FAILED(path->Exists(&aIsOmnijar))) -+ return nsnull; -+#endif -+ -+ if (!aIsOmnijar && NS_FAILED(aPath->Clone(getter_AddRefs(path)))) -+ return nsnull; -+ -+ return path.forget(); -+} -+ -+nsresult -+Omnijar::SetBase(nsIFile *aGrePath, nsIFile *aAppPath) -+{ -+ NS_ABORT_IF_FALSE(aGrePath || !aAppPath, "Omnijar::SetBase(NULL, something) call forbidden"); -+ -+#ifdef MOZ_ENABLE_LIBXUL -+ if (sReader[GRE]) { -+ sReader[GRE]->CloseArchive(); -+ delete sReader[GRE]; -+ } -+ if (sReader[APP]) { -+ sReader[APP]->CloseArchive(); -+ delete sReader[APP]; -+ } -+ sReader[APP] = sReader[GRE] = nsnull; -+#endif -+ -+ nsresult rv; -+ PRBool equals; -+ if (aAppPath) { -+ rv = aAppPath->Equals(aGrePath, &equals); -+ NS_ENSURE_SUCCESS(rv, rv); -+ } else { -+ equals = PR_TRUE; - } - -- nsZipArchive* zipReader = new nsZipArchive(); -- if (!zipReader) { -- NS_IF_RELEASE(sOmnijarPath); -- return; -+ nsCOMPtr<nsIFile> grePath = ComputePath(aGrePath, sIsOmnijar[GRE]); -+ nsCOMPtr<nsIFile> appPath = ComputePath(equals ? nsnull : aAppPath, sIsOmnijar[APP]); -+ -+ NS_IF_RELEASE(sPath[GRE]); -+ sPath[GRE] = grePath; -+ NS_IF_ADDREF(sPath[GRE]); -+ -+ NS_IF_RELEASE(sPath[APP]); -+ sPath[APP] = appPath; -+ NS_IF_ADDREF(sPath[APP]); -+ -+ return NS_OK; -+} -+ -+already_AddRefed<nsIFile> -+Omnijar::GetBase(Type aType) -+{ -+ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized"); -+ -+ if (!sIsOmnijar[aType]) { -+ NS_IF_ADDREF(sPath[aType]); -+ return sPath[aType]; - } - -- if (NS_FAILED(zipReader->OpenArchive(sOmnijarPath))) { -+ nsCOMPtr<nsIFile> file, path; -+ if (NS_FAILED(sPath[aType]->Clone(getter_AddRefs(file)))) -+ return nsnull; -+ -+ if (NS_FAILED(file->GetParent(getter_AddRefs(path)))) -+ return nsnull; -+ return path.forget(); -+} -+ -+#ifdef MOZ_ENABLE_LIBXUL -+nsZipArchive * -+Omnijar::GetReader(Type aType) -+{ -+ if (!sIsOmnijar[aType]) -+ return nsnull; -+ -+ if (sReader[aType]) -+ return sReader[aType]; -+ -+ nsZipArchive* zipReader = new nsZipArchive(); -+ if (!zipReader) -+ return nsnull; -+ -+ if (NS_FAILED(zipReader->OpenArchive(sPath[aType]))) { - delete zipReader; -- NS_IF_RELEASE(sOmnijarPath); -- return; -+ return nsnull; - } - -- sOmnijarReader = zipReader; -+ return (sReader[aType] = zipReader); - } - --nsILocalFile* --mozilla::OmnijarPath() -+nsZipArchive * -+Omnijar::GetReader(nsIFile *aPath) - { -- if (!sOmnijarReader) -- SetupReader(); -+ PRBool equals; -+ nsresult rv; - -- return sOmnijarPath; -+ if (sIsOmnijar[GRE]) { -+ rv = sPath[GRE]->Equals(aPath, &equals); -+ if (NS_SUCCEEDED(rv) && equals) -+ return GetReader(GRE); -+ } -+ if (sIsOmnijar[APP]) { -+ rv = sPath[APP]->Equals(aPath, &equals); -+ if (NS_SUCCEEDED(rv) && equals) -+ return GetReader(APP); -+ } -+ return nsnull; -+} -+#endif -+ -+nsresult -+Omnijar::GetURIString(Type aType, nsCString &result) -+{ -+ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized"); -+ -+ result = ""; -+ -+ if ((aType == APP) && (!sPath[APP])) -+ return NS_OK; -+ -+ nsCAutoString omniJarSpec; -+ nsresult rv = NS_GetURLSpecFromActualFile(sPath[aType], omniJarSpec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (sIsOmnijar[aType]) { -+ result = "jar:"; -+ result += omniJarSpec; -+ result += "!"; -+ } else { -+ result = omniJarSpec; -+ } -+ result += "/"; -+ return NS_OK; - } - --nsZipArchive* --mozilla::OmnijarReader() --{ -- if (!sOmnijarReader) -- SetupReader(); -- -- return sOmnijarReader; --} -- --void --mozilla::SetOmnijar(nsILocalFile* aPath) --{ -- NS_IF_RELEASE(sOmnijarPath); -- if (sOmnijarReader) { -- sOmnijarReader->CloseArchive(); -- delete sOmnijarReader; -- sOmnijarReader = nsnull; -- } -- -- sOmnijarPath = aPath; -- NS_IF_ADDREF(sOmnijarPath); --} -- -+} /* namespace mozilla */ -diff --git a/xpcom/build/Omnijar.h b/xpcom/build/Omnijar.h ---- a/xpcom/build/Omnijar.h -+++ b/xpcom/build/Omnijar.h -@@ -16,16 +16,17 @@ - * - * The Initial Developer of the Original Code is - * Mozilla Foundation. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Michael Wu <mwu@mozilla.com> -+ * Mike Hommey <mh@glandium.org> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your -@@ -34,29 +35,137 @@ - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - #ifndef mozilla_Omnijar_h - #define mozilla_Omnijar_h - --class nsILocalFile; -+#include "nscore.h" -+#include "nsTArray.h" -+#include "nsCOMPtr.h" -+#include "nsString.h" -+ -+class nsIFile; - class nsZipArchive; -- --#ifdef MOZ_OMNIJAR -+class nsIURI; - - namespace mozilla { - -+#ifdef MOZ_ENABLE_LIBXUL -+#define OMNIJAR_EXPORT -+#else -+#define OMNIJAR_EXPORT NS_EXPORT -+#endif -+ -+class OMNIJAR_EXPORT Omnijar { -+private: - /** -- * This returns the path to the omnijar. -- * If the omnijar isn't available, this function will return null. -- * Callers should fallback to flat packaging if null. -+ * Store an nsIFile for either a base directory when there is no omni.jar, -+ * or omni.jar itself. We can store two paths here, one for GRE -+ * (corresponding to resource://gre/) and one for APP -+ * (corresponding to resource:/// and resource://app/), but only -+ * store one when both point to the same location (unified). - */ --nsILocalFile *OmnijarPath(); --nsZipArchive *OmnijarReader(); --void SetOmnijar(nsILocalFile* aPath); -+static nsIFile *sPath[2]; -+/** -+ * Store whether the corresponding sPath is an omni.jar or a directory -+ */ -+static PRBool sIsOmnijar[2]; -+ -+#ifdef MOZ_ENABLE_LIBXUL -+/** -+ * Cached nsZipArchives for the corresponding sPath -+ */ -+static nsZipArchive *sReader[2]; -+#endif -+ -+public: -+enum Type { -+ GRE = 0, -+ APP = 1 -+}; -+ -+/** -+ * Returns whether SetBase has been called at least once with -+ * a valid nsIFile -+ */ -+static PRBool -+IsInitialized() -+{ -+ // GRE path is always set after initialization. -+ return sPath[0] != nsnull; -+} -+ -+/** -+ * Sets the base directories for GRE and APP. APP base directory -+ * may be nsnull, in case the APP and GRE directories are the same. -+ */ -+static nsresult SetBase(nsIFile *aGrePath, nsIFile *aAppPath); -+ -+/** -+ * Returns an nsIFile pointing to the omni.jar file for GRE or APP. -+ * Returns nsnull when there is no corresponding omni.jar. -+ * Also returns nsnull for APP in the unified case. -+ */ -+static already_AddRefed<nsIFile> -+GetPath(Type aType) -+{ -+ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized"); -+ -+ if (sIsOmnijar[aType]) { -+ NS_IF_ADDREF(sPath[aType]); -+ return sPath[aType]; -+ } -+ return nsnull; -+} -+ -+/** -+ * Returns whether GRE or APP use an omni.jar. Returns PR_False when -+ * using an omni.jar in the unified case. -+ */ -+static PRBool -+HasOmnijar(Type aType) -+{ -+ return sIsOmnijar[aType]; -+} -+ -+/** -+ * Returns the base directory for GRE or APP. In the unified case, -+ * returns nsnull for APP. -+ */ -+static already_AddRefed<nsIFile> GetBase(Type aType); -+ -+/** -+ * Returns a nsZipArchive pointer for the omni.jar file for GRE or -+ * APP. Returns nsnull in the same cases GetPath() would. -+ */ -+#ifdef MOZ_ENABLE_LIBXUL -+static nsZipArchive *GetReader(Type aType); -+#else -+static nsZipArchive *GetReader(Type aType) { return nsnull; } -+#endif -+ -+/** -+ * Returns a nsZipArchive pointer for the given path IAOI the given -+ * path is the omni.jar for either GRE or APP. -+ */ -+#ifdef MOZ_ENABLE_LIBXUL -+static nsZipArchive *GetReader(nsIFile *aPath); -+#else -+static nsZipArchive *GetReader(nsIFile *aPath) { return nsnull; } -+#endif -+ -+/** -+ * Returns the URI string corresponding to the omni.jar or directory -+ * for GRE or APP. i.e. jar:/path/to/omni.jar!/ for omni.jar and -+ * /path/to/base/dir/ otherwise. Returns an empty string for APP in -+ * the unified case. -+ * The returned URI is guaranteed to end with a slash. -+ */ -+static nsresult GetURIString(Type aType, nsCString &result); -+ -+}; /* class Omnijar */ - - } /* namespace mozilla */ - --#endif /* MOZ_OMNIJAR */ -- - #endif /* mozilla_Omnijar_h */ -diff --git a/xpcom/build/nsXPComInit.cpp b/xpcom/build/nsXPComInit.cpp ---- a/xpcom/build/nsXPComInit.cpp -+++ b/xpcom/build/nsXPComInit.cpp -@@ -462,35 +462,35 @@ NS_InitXPCOM2(nsIServiceManager* *result - nsDirectoryService::gService->Set(NS_XPCOM_LIBRARY_FILE, xpcomLib); - } - - if (appFileLocationProvider) { - rv = nsDirectoryService::gService->RegisterProvider(appFileLocationProvider); - if (NS_FAILED(rv)) return rv; - } - --#ifdef MOZ_OMNIJAR - NS_TIME_FUNCTION_MARK("Next: Omnijar init"); - -- if (!mozilla::OmnijarPath()) { -- nsCOMPtr<nsILocalFile> omnijar; -+ if (!mozilla::Omnijar::IsInitialized()) { -+ nsCOMPtr<nsILocalFile> greDir, appDir; - nsCOMPtr<nsIFile> file; - -- rv = NS_ERROR_FAILURE; - nsDirectoryService::gService->Get(NS_GRE_DIR, - NS_GET_IID(nsIFile), - getter_AddRefs(file)); -- if (file) -- rv = file->Append(NS_LITERAL_STRING("omni.jar")); -- if (NS_SUCCEEDED(rv)) -- omnijar = do_QueryInterface(file); -- if (NS_SUCCEEDED(rv)) -- mozilla::SetOmnijar(omnijar); -+ greDir = do_QueryInterface(file); -+ -+ nsDirectoryService::gService->Get(NS_XPCOM_CURRENT_PROCESS_DIR, -+ NS_GET_IID(nsIFile), -+ getter_AddRefs(file)); -+ appDir = do_QueryInterface(file); -+ -+ rv = mozilla::Omnijar::SetBase(greDir, appDir); -+ NS_ENSURE_SUCCESS(rv, rv); - } --#endif - - #ifdef MOZ_IPC - if ((sCommandLineWasInitialized = !CommandLine::IsInitialized())) { - NS_TIME_FUNCTION_MARK("Next: IPC command line init"); - - #ifdef OS_WIN - CommandLine::Init(0, nsnull); - #else -@@ -769,18 +769,16 @@ ShutdownXPCOM(nsIServiceManager* servMgr - sCommandLineWasInitialized = false; - } - if (sExitManager) { - delete sExitManager; - sExitManager = nsnull; - } - #endif - --#ifdef MOZ_OMNIJAR -- mozilla::SetOmnijar(nsnull); --#endif -+ mozilla::Omnijar::SetBase(nsnull, nsnull); - - NS_LogTerm(); - - return NS_OK; - } - - } // namespace mozilla -diff --git a/xpcom/components/nsComponentManager.cpp b/xpcom/components/nsComponentManager.cpp ---- a/xpcom/components/nsComponentManager.cpp -+++ b/xpcom/components/nsComponentManager.cpp -@@ -175,18 +175,16 @@ NS_DEFINE_CID(kCategoryManagerCID, NS_CA - #define COMPMGR_TIME_FUNCTION_CONTRACTID(cid) \ - NS_TIME_FUNCTION_MIN_FMT(5, "%s (line %d) (contractid: %s)", MOZ_FUNCTION_NAME, \ - __LINE__, (cid)) - #else - #define COMPMGR_TIME_FUNCTION_CID(cid) do {} while (0) - #define COMPMGR_TIME_FUNCTION_CONTRACTID(cid) do {} while (0) - #endif - --#define kOMNIJAR_PREFIX NS_LITERAL_CSTRING("resource:///") -- - nsresult - nsGetServiceFromCategory::operator()(const nsIID& aIID, void** aInstancePtr) const - { - nsresult rv; - nsXPIDLCString value; - nsCOMPtr<nsICategoryManager> catman; - nsComponentManagerImpl *compMgr = nsComponentManagerImpl::gComponentManager; - if (!compMgr) { -@@ -390,47 +388,44 @@ nsresult nsComponentManagerImpl::Init() - - nsCategoryManager::GetSingleton()->SuppressNotifications(true); - - RegisterModule(&kXPCOMModule, NULL); - - for (PRUint32 i = 0; i < sStaticModules->Length(); ++i) - RegisterModule((*sStaticModules)[i], NULL); - --#ifdef MOZ_OMNIJAR -- if (mozilla::OmnijarPath()) { -- nsCOMPtr<nsIZipReader> omnijarReader = new nsJAR(); -- rv = omnijarReader->Open(mozilla::OmnijarPath()); -- if (NS_SUCCEEDED(rv)) -- RegisterJarManifest(omnijarReader, "chrome.manifest", false); -+ nsCOMPtr<nsIFile> appOmnijar = mozilla::Omnijar::GetPath(mozilla::Omnijar::APP); -+ if (appOmnijar) { -+ cl = sModuleLocations->InsertElementAt(1); // Insert after greDir -+ cl->type = NS_COMPONENT_LOCATION; -+ cl->location = do_QueryInterface(appOmnijar); -+ cl->jar = true; - } --#endif -+ nsCOMPtr<nsIFile> greOmnijar = mozilla::Omnijar::GetPath(mozilla::Omnijar::GRE); -+ if (greOmnijar) { -+ cl = sModuleLocations->InsertElementAt(0); -+ cl->type = NS_COMPONENT_LOCATION; -+ cl->location = do_QueryInterface(greOmnijar); -+ cl->jar = true; -+ } - - for (PRUint32 i = 0; i < sModuleLocations->Length(); ++i) { - ComponentLocation& l = sModuleLocations->ElementAt(i); - if (!l.jar) { - RegisterManifestFile(l.type, l.location, false); - continue; - } - - nsCOMPtr<nsIZipReader> reader = do_CreateInstance(kZipReaderCID, &rv); - rv = reader->Open(l.location); - if (NS_SUCCEEDED(rv)) - RegisterJarManifest(reader, "chrome.manifest", false); - } - --#ifdef MOZ_OMNIJAR -- if (mozilla::OmnijarPath()) { -- cl = sModuleLocations->InsertElementAt(0); -- cl->type = NS_COMPONENT_LOCATION; -- cl->location = mozilla::OmnijarPath(); -- cl->jar = true; -- } --#endif -- - nsCategoryManager::GetSingleton()->SuppressNotifications(false); - - mStatus = NORMAL; - - return NS_OK; - } - - void -# HG changeset patch -# Parent ff1b810f78226d7f4010909d3cde05a57fdcf20c -Bug 620931 part 4 - Fix resource://app/ to always point to the same as resource:/// - -diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp ---- a/netwerk/protocol/res/nsResProtocolHandler.cpp -+++ b/netwerk/protocol/res/nsResProtocolHandler.cpp -@@ -74,16 +74,17 @@ static nsResProtocolHandler *gResHandler - // set NSPR_LOG_FILE=log.txt - // - // this enables PR_LOG_ALWAYS level information and places all output in - // the file log.txt - // - static PRLogModuleInfo *gResLog; - #endif - -+#define kAPP NS_LITERAL_CSTRING("app") - #define kGRE NS_LITERAL_CSTRING("gre") - - //---------------------------------------------------------------------------- - // nsResURL : overrides nsStandardURL::GetFile to provide nsIFile resolution - //---------------------------------------------------------------------------- - - nsresult - nsResURL::EnsureFile() -@@ -179,16 +180,22 @@ nsResProtocolHandler::Init() - nsCOMPtr<nsIURI> uri; - rv = NS_NewURI(getter_AddRefs(uri), appURI.Length() ? appURI : greURI); - NS_ENSURE_SUCCESS(rv, rv); - - rv = SetSubstitution(EmptyCString(), uri); - NS_ENSURE_SUCCESS(rv, rv); - - // -+ // make resource://app/ point to the application directory or omnijar -+ // -+ rv = SetSubstitution(kAPP, uri); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ // - // make resource://gre/ point to the GRE directory - // - if (appURI.Length()) { // We already have greURI in uri if appURI.Length() is 0. - rv = NS_NewURI(getter_AddRefs(uri), greURI); - NS_ENSURE_SUCCESS(rv, rv); - } - - rv = SetSubstitution(kGRE, uri); -diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp ---- a/toolkit/xre/nsXREDirProvider.cpp -+++ b/toolkit/xre/nsXREDirProvider.cpp -@@ -300,19 +300,16 @@ nsXREDirProvider::GetFile(const char* aP - } - } - else if (!strcmp(aProperty, XRE_EXECUTABLE_FILE) && gArgv[0]) { - nsCOMPtr<nsILocalFile> lf; - rv = XRE_GetBinaryPath(gArgv[0], getter_AddRefs(lf)); - if (NS_SUCCEEDED(rv)) - file = lf; - } -- else if (!strcmp(aProperty, "resource:app")) { -- rv = GetAppDir()->Clone(getter_AddRefs(file)); -- } - - else if (!strcmp(aProperty, NS_APP_PROFILE_DIR_STARTUP) && mProfileDir) { - return mProfileDir->Clone(aFile); - } - else if (!strcmp(aProperty, NS_APP_PROFILE_LOCAL_DIR_STARTUP)) { - if (mProfileLocalDir) - return mProfileLocalDir->Clone(aFile); - -# HG changeset patch -# Parent 7d2228db71a299afca60babff632a967d2d6c456 -Bug 620931 part 5 - Enable omni.jar by default on xulrunner - -diff --git a/xulrunner/confvars.sh b/xulrunner/confvars.sh ---- a/xulrunner/confvars.sh -+++ b/xulrunner/confvars.sh -@@ -36,15 +36,16 @@ - # - # ***** END LICENSE BLOCK ***** - - MOZ_APP_NAME=xulrunner - MOZ_APP_DISPLAYNAME=XULRunner - MOZ_UPDATER=1 - MOZ_XULRUNNER=1 - MOZ_ENABLE_LIBXUL=1 -+MOZ_CHROME_FILE_FORMAT=omni - MOZ_STATIC_BUILD_UNSUPPORTED=1 - MOZ_APP_VERSION=$MOZILLA_VERSION - if test "$MOZ_STORAGE"; then - MOZ_PLACES=1 - fi - MOZ_EXTENSIONS_DEFAULT=" gnomevfs" - MOZ_URL_CLASSIFIER=1 diff --git a/extra/xulrunner/xulrunner-version.patch b/extra/xulrunner/xulrunner-version.patch deleted file mode 100644 index 8e81b23ea..000000000 --- a/extra/xulrunner/xulrunner-version.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur mozilla-2.0.orig/xulrunner/installer/Makefile.in mozilla-2.0/xulrunner/installer/Makefile.in ---- mozilla-2.0.orig/xulrunner/installer/Makefile.in 2011-03-03 14:12:04.000000000 -0800 -+++ mozilla-2.0/xulrunner/installer/Makefile.in 2011-03-13 01:58:19.663360705 -0800 -@@ -44,6 +44,8 @@ - - include $(DEPTH)/config/autoconf.mk - -+MOZ_APP_VERSION="2.0" -+ - NO_PKG_FILES = \ - xulrunner-config \ - regchrome* \ diff --git a/multilib-testing/gcc-multilib/PKGBUILD b/multilib-testing/gcc-multilib/PKGBUILD deleted file mode 100644 index d3125e7b8..000000000 --- a/multilib-testing/gcc-multilib/PKGBUILD +++ /dev/null @@ -1,303 +0,0 @@ -# $Id: PKGBUILD 51469 2011-07-09 18:11:54Z heftig $ -# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> -# Contributor: Allan McRae <allan@archlinux.org> - -# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc -# NOTE: libtool requires rebuilt with each new gcc version - -pkgbase='gcc-multilib' -pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib') -pkgver=4.6.1 -pkgrel=2 -#_snapshot=4.6-20110603 -_libstdcppmanver=20110201 # Note: check source directory name when updating this -pkgdesc="The GNU Compiler Collection for multilib" -arch=('x86_64') -license=('GPL' 'LGPL' 'FDL' 'custom') -url="http://gcc.gnu.org" -makedepends=('binutils-multilib>=2.21.1' 'libmpc' 'cloog' 'ppl' 'gcc-ada-multilib' - 'lib32-glibc>=2.14') -checkdepends=('dejagnu') -options=('!libtool' '!emptydirs') -source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 - #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 - ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-api.${_libstdcppmanver}.man.tar.bz2 - gcc_pure64.patch - gcc-hash-style-both.patch) -md5sums=('c57a9170c677bf795bdc04ed796ca491' - '1e9fd2eaf0ee47ea64e82c48998f1999' - '22cec272f9cc2801d3cd348feaca888b' - '4df25b623799b148a0703eaeec8fdf3f') - -if [ -n "${_snapshot}" ]; then - _basedir="${srcdir}/gcc-${_snapshot}" -else - _basedir="${srcdir}/gcc-${pkgver}" -fi - -build() { - cd ${_basedir} - - # Do not install libiberty - sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in - - # Do not run fixincludes - sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in - - patch -Np1 -i ${srcdir}/gcc_pure64.patch - patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch - - echo ${pkgver} > gcc/BASE-VER - - cd ${srcdir} - mkdir gcc-build && cd gcc-build - - ${_basedir}/configure --prefix=/usr \ - --libdir=/usr/lib --libexecdir=/usr/lib \ - --mandir=/usr/share/man --infodir=/usr/share/info \ - --with-bugurl=https://bugs.archlinux.org/ \ - --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \ - --enable-shared --enable-threads=posix \ - --with-system-zlib --enable-__cxa_atexit \ - --disable-libunwind-exceptions --enable-clocale=gnu \ - --enable-gnu-unique-object --enable-linker-build-id \ - --with-ppl --enable-cloog-backend=isl \ - --enable-lto --enable-gold --enable-ld=default \ - --enable-plugin --with-plugin-ld=ld.gold \ - --enable-multilib --disable-libstdcxx-pch \ - --enable-checking=release - make -} - -check() { - cd gcc-build - - # increase stack size to prevent test failures - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827 - ulimit -s 32768 - - # do not abort on error as some are "expected" - make -k check || true - ${_basedir}/contrib/test_summary -} - -package_gcc-libs-multilib() -{ - pkgdesc="Runtime libraries shipped by GCC for multilib" - depends=('glibc>=2.14' "lib32-gcc-libs=$pkgver-$pkgrel") - provides=("gcc-libs=$pkgver-$pkgrel") - conflicts=('gcc-libs') - install=gcc-libs.install - - cd gcc-build - make -j1 -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared - for lib in libmudflap libgomp libssp libstdc++-v3/src; do - make -j1 -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES - done - make -j1 -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install - make -j1 -C $CHOST/libgomp DESTDIR=${pkgdir} install-info - - make -j1 DESTDIR=${pkgdir} install-target-libquadmath - make -j1 DESTDIR=${pkgdir} install-target-libgfortran - make -j1 DESTDIR=${pkgdir} install-target-libobjc - - # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} - rm -rf ${pkgdir}/usr/lib/{gcc/,libgfortran.spec} - - # remove stuff in lib32-gcc-libs - rm -rf ${pkgdir}/usr/lib32 - - # remove static libraries - find ${pkgdir} -name *.a -delete - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION -} - -package_lib32-gcc-libs() -{ - pkgdesc="Runtime libraries shipped by GCC (32-bit)" - depends=('lib32-glibc>=2.14' "gcc-libs>=$pkgver") - - cd gcc-build - make -j1 -C $CHOST/32/libgcc DESTDIR=${pkgdir} install-shared - for lib in libmudflap libgomp libssp libstdc++-v3/src; do - make -j1 -C $CHOST/32/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES - done - - make -j1 DESTDIR=${pkgdir} install-target-libquadmath - make -j1 DESTDIR=${pkgdir} install-target-libgfortran - make -j1 DESTDIR=${pkgdir} install-target-libobjc - - # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} - rm ${pkgdir}/usr/lib32/libgfortran.spec - - # remove stuff in gcc-libs-multilib - rm -rf ${pkgdir}/usr/lib - rm -rf ${pkgdir}/usr/share/info - - # remove static libraries - find ${pkgdir} -name *.a -delete - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/lib32-gcc-libs/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-multilib() -{ - pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib" - depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils-multilib>=2.21.1' 'libmpc' 'cloog' 'ppl') - groups=('multilib-devel') - provides=("gcc=$pkgver-$pkgrel") - conflicts=('gcc') - install=gcc.install - - cd gcc-build - - # unfortunately it is much, much easier to install the lot and clean-up the mess... - make -j1 DESTDIR=${pkgdir} install - rm $pkgdir/usr/bin/{{$CHOST-,}gfortran,{$CHOST-,}gccgo,gnat*} - rm $pkgdir/usr/lib{,32}/*.so* - rm $pkgdir/usr/lib{,32}/lib{ffi,gfortran,go{,begin},objc,quadmath}.a - rm $pkgdir/usr/lib{,32}/libgfortran.spec - rm -r $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{{,32/}ada{include,lib},finclude,include/objc} - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/include/{ffi{,target}.h,quadmath{,_weak}.h} - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,gnat1,go1,{,32/}libgfortranbegin.a} - rm -r $pkgdir/usr/lib{,32}/go - rm $pkgdir/usr/share/info/{gccgo,gfortran,gnat*,libgomp,libquadmath}.info - rm $pkgdir/usr/share/locale/{de,fr}/LC_MESSAGES/libstdc++.mo - rm $pkgdir/usr/share/man/man1/{gccgo,gfortran}.1 - rm $pkgdir/usr/share/man/man3/ffi* - - # many packages require these symlinks - install -dm755 ${pkgdir}/lib - ln -sf /usr/bin/cpp ${pkgdir}/lib/cpp - ln -sf gcc ${pkgdir}/usr/bin/cc - ln -sf g++ ${pkgdir}/usr/bin/c++ - - # install gengtype for plugin support - install -m755 gcc/build/gengtype $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ - install -m644 gcc/gtype.state $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ - - # POSIX conformance launcher scripts for c89 and c99 - cat > $pkgdir/usr/bin/c89 <<"EOF" -#!/bin/sh -fl="-std=c89" -for opt; do - case "$opt" in - -ansi|-std=c89|-std=iso9899:1990) fl="";; - -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF - - cat > $pkgdir/usr/bin/c99 <<"EOF" -#!/bin/sh -fl="-std=c99" -for opt; do - case "$opt" in - -std=c99|-std=iso9899:1999) fl="";; - -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF - - chmod 755 $pkgdir/usr/bin/c{8,9}9 - - # install the libstdc++ man pages - install -dm755 ${pkgdir}/usr/share/man/man3 - install -m644 ${srcdir}/man/man3/* ${pkgdir}/usr/share/man/man3/ - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-multilib/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-fortran-multilib() -{ - pkgdesc="Fortran front-end for GCC for multilib" - depends=("gcc-multilib=$pkgver-$pkgrel") - provides=("gcc-fortran=$pkgver-$pkgrel") - conflicts=('gcc-fortran') - install=gcc-fortran.install - - cd gcc-build - make -j1 DESTDIR=${pkgdir} install-target-libquadmath - make -j1 DESTDIR=$pkgdir install-target-libgfortran - make -j1 -C $CHOST/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS - make -j1 -C gcc DESTDIR=$pkgdir fortran.install-{common,man,info} - install -Dm755 gcc/f951 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/f951 - - # remove libraries included in gcc-libs - rm ${pkgdir}/usr/lib{,32}/lib{gfortran,quadmath}.so* - rm ${pkgdir}/usr/share/info/libquadmath.info - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-fortran-multilib/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-objc-multilib() -{ - pkgdesc="Objective-C front-end for GCC for multilib" - depends=("gcc-multilib=$pkgver-$pkgrel") - provides=("gcc-objc=$pkgver-$pkgrel") - conflicts=('gcc-objc') - - cd gcc-build - make -j1 DESTDIR=$pkgdir install-target-libobjc - install -dm755 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/ - install -m755 gcc/cc1obj{,plus} $pkgdir/usr/lib/gcc/$CHOST/$pkgver/ - - # remove libraries included in gcc-libs - rm ${pkgdir}/usr/lib{,32}/libobjc.so* - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-objc-multilib/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-ada-multilib() -{ - pkgdesc="Ada front-end for GCC (GNAT) for multilib" - depends=("gcc-multilib=$pkgver-$pkgrel") - provides=("gcc-ada=$pkgver-$pkgrel") - conflicts=('gcc-ada') - install=gcc-ada.install - - cd gcc-build/gcc - make -j1 DESTDIR=$pkgdir ada.install-{common,info} - install -m755 gnat1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver - - cd ../$CHOST/32/libada - make -j1 DESTDIR=${pkgdir} INSTALL="install" \ - INSTALL_DATA="install -m644" install-gnatlib - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-ada-multilib/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-go-multilib() -{ - pkgdesc="Go front-end for GCC for multilib" - depends=("gcc-multilib=$pkgver-$pkgrel") - provides=("gcc-go=$pkgver-$pkgrel") - conflicts=('gcc-go') - install=gcc-go.install - - cd gcc-build - make -j1 DESTDIR=$pkgdir install-target-libgo - make -j1 -C gcc DESTDIR=$pkgdir go.install-{common,man,info} - install -Dm755 gcc/go1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/go1 - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-go/RUNTIME.LIBRARY.EXCEPTION -} diff --git a/multilib-testing/gcc-multilib/gcc-ada.install b/multilib-testing/gcc-multilib/gcc-ada.install deleted file mode 100644 index df0553a4f..000000000 --- a/multilib-testing/gcc-multilib/gcc-ada.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(gnat-style.info gnat_rm.info gnat_ugn.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/multilib-testing/gcc-multilib/gcc-fortran.install b/multilib-testing/gcc-multilib/gcc-fortran.install deleted file mode 100644 index b15d89a97..000000000 --- a/multilib-testing/gcc-multilib/gcc-fortran.install +++ /dev/null @@ -1,16 +0,0 @@ -infodir=usr/share/info -file="gfortran.info" - -post_install() { - [ -x usr/bin/install-info ] || return 0 - install-info $infodir/$file.gz $infodir/dir 2> /dev/null -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null -} diff --git a/multilib-testing/gcc-multilib/gcc-go.install b/multilib-testing/gcc-multilib/gcc-go.install deleted file mode 100644 index 7dc50dee5..000000000 --- a/multilib-testing/gcc-multilib/gcc-go.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(gccgo.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/multilib-testing/gcc-multilib/gcc-hash-style-both.patch b/multilib-testing/gcc-multilib/gcc-hash-style-both.patch deleted file mode 100644 index 8b59f4535..000000000 --- a/multilib-testing/gcc-multilib/gcc-hash-style-both.patch +++ /dev/null @@ -1,122 +0,0 @@ ---- gcc/config/alpha/linux-elf.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/alpha/linux-elf.h 2011-03-11 10:01:47.770000457 +1000 -@@ -41,7 +41,7 @@ - - #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER - --#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ -+#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ - %{shared:-shared} \ - %{!shared: \ ---- gcc/config/i386/linux64.h.orig 2011-03-03 08:35:36.000000000 +1000 -+++ gcc/config/i386/linux64.h 2011-03-11 10:01:47.770000457 +1000 -@@ -78,7 +78,7 @@ - %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" - - #undef LINK_SPEC --#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ -+#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/i386/linux.h.orig 2011-01-15 04:45:06.000000000 +1000 -+++ gcc/config/i386/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -104,7 +104,7 @@ - { "dynamic_linker", LINUX_DYNAMIC_LINKER } - - #undef LINK_SPEC --#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ -+#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ ---- gcc/config/ia64/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/ia64/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -64,7 +64,7 @@ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" - - #undef LINK_SPEC --#define LINK_SPEC "\ -+#define LINK_SPEC "--hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/rs6000/linux64.h.orig 2011-02-11 03:30:10.000000000 +1000 -+++ gcc/config/rs6000/linux64.h 2011-03-11 10:03:34.280000457 +1000 -@@ -389,11 +389,11 @@ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) - - --#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}" - --#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}" - ---- gcc/config/rs6000/sysv4.h.orig 2011-01-28 04:36:03.000000000 +1000 -+++ gcc/config/rs6000/sysv4.h 2011-03-11 10:01:47.773333792 +1000 -@@ -830,7 +830,7 @@ - #define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) - --#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER "}}" - ---- gcc/config/s390/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/s390/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -77,7 +77,7 @@ - - #undef LINK_SPEC - #define LINK_SPEC \ -- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{static:-static} \ ---- gcc/config/sparc/linux64.h.orig 2011-02-17 23:57:21.000000000 +1000 -+++ gcc/config/sparc/linux64.h 2011-03-11 10:01:47.770000457 +1000 -@@ -113,7 +113,7 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,%R/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,%R/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -@@ -121,7 +121,7 @@ - %{static:-static}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -@@ -193,7 +193,7 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ ---- gcc/config/sparc/linux.h.orig 2011-01-27 06:30:12.000000000 +1000 -+++ gcc/config/sparc/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -74,7 +74,7 @@ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!static: \ diff --git a/multilib-testing/gcc-multilib/gcc-libs.install b/multilib-testing/gcc-multilib/gcc-libs.install deleted file mode 100644 index 23553b8f0..000000000 --- a/multilib-testing/gcc-multilib/gcc-libs.install +++ /dev/null @@ -1,16 +0,0 @@ -infodir=usr/share/info -filelist=(libgomp.info libquadmath.info) - -post_upgrade() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/multilib-testing/gcc-multilib/gcc.install b/multilib-testing/gcc-multilib/gcc.install deleted file mode 100644 index 3407a5e1f..000000000 --- a/multilib-testing/gcc-multilib/gcc.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(cpp.info cppinternals.info gcc.info gccinstall.info gccint.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/multilib-testing/gcc-multilib/gcc_pure64.patch b/multilib-testing/gcc-multilib/gcc_pure64.patch deleted file mode 100644 index 8c6b08171..000000000 --- a/multilib-testing/gcc-multilib/gcc_pure64.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -Naur gcc-4.2.0.orig/gcc/config/i386/linux64.h gcc-4.2.0/gcc/config/i386/linux64.h ---- gcc-4.2.0.orig/gcc/config/i386/linux64.h 2007-05-16 19:21:19.000000000 -0400 -+++ gcc-4.2.0/gcc/config/i386/linux64.h 2007-05-18 17:04:05.000000000 -0400 -@@ -49,7 +49,7 @@ - done. */ - - #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" --#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" -+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2" - - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ -diff -Naur gcc-4.2.0.orig/gcc/config/i386/t-linux64 gcc-4.2.0/gcc/config/i386/t-linux64 ---- gcc-4.2.0.orig/gcc/config/i386/t-linux64 2007-05-16 19:21:19.000000000 -0400 -+++ gcc-4.2.0/gcc/config/i386/t-linux64 2007-05-18 17:04:36.000000000 -0400 -@@ -6,7 +6,7 @@ - - MULTILIB_OPTIONS = m64/m32 - MULTILIB_DIRNAMES = 64 32 --MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) -+MULTILIB_OSDIRNAMES = ../lib ../lib32 - - LIBGCC = stmp-multilib - INSTALL_LIBGCC = install-multilib diff --git a/multilib-testing/lib32-mesa/nouveau-fix-header.patch b/multilib-testing/lib32-mesa/nouveau-fix-header.patch deleted file mode 100644 index 38aa996f1..000000000 --- a/multilib-testing/lib32-mesa/nouveau-fix-header.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 5c102dd94f435e97507213fbd128e50dd15f5f54 Mon Sep 17 00:00:00 2001 -From: Ben Skeggs <bskeggs@redhat.com> -Date: Mon, 20 Dec 2010 03:39:36 +0000 -Subject: nouveau: fix includes for latest libdrm - -Signed-off-by: Ben Skeggs <bskeggs@redhat.com> ---- -diff --git a/src/gallium/drivers/nouveau/nouveau_winsys.h b/src/gallium/drivers/nouveau/nouveau_winsys.h -index ab480ca..747b084 100644 ---- a/src/gallium/drivers/nouveau/nouveau_winsys.h -+++ b/src/gallium/drivers/nouveau/nouveau_winsys.h -@@ -10,7 +10,7 @@ - #include "nouveau/nouveau_grobj.h" - #include "nouveau/nouveau_notifier.h" - #include "nouveau/nouveau_resource.h" --#include "nouveau/nouveau_pushbuf.h" -+#include "nouveau/nv04_pushbuf.h" - - #ifndef NV04_PFIFO_MAX_PACKET_LEN - #define NV04_PFIFO_MAX_PACKET_LEN 2047 -diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c -index ce48022..a99df76 100644 ---- a/src/gallium/drivers/nv50/nv50_surface.c -+++ b/src/gallium/drivers/nv50/nv50_surface.c -@@ -22,7 +22,7 @@ - - #define __NOUVEAU_PUSH_H__ - #include <stdint.h> --#include "nouveau/nouveau_pushbuf.h" -+#include "nouveau/nv04_pushbuf.h" - #include "nv50_context.h" - #include "nv50_resource.h" - #include "pipe/p_defines.h" -diff --git a/src/gallium/drivers/nvfx/nv04_2d.c b/src/gallium/drivers/nvfx/nv04_2d.c -index e0e65e7..e2fadd3 100644 ---- a/src/gallium/drivers/nvfx/nv04_2d.c -+++ b/src/gallium/drivers/nvfx/nv04_2d.c -@@ -34,11 +34,11 @@ - #include <stdio.h> - #include <stdint.h> - #include <nouveau/nouveau_device.h> --#include <nouveau/nouveau_pushbuf.h> - #include <nouveau/nouveau_channel.h> - #include <nouveau/nouveau_bo.h> - #include <nouveau/nouveau_notifier.h> - #include <nouveau/nouveau_grobj.h> -+#include <nouveau/nv04_pushbuf.h> - #include "nv04_2d.h" - - #include "nouveau/nv_object.xml.h" -diff --git a/src/gallium/drivers/nvfx/nvfx_vbo.c b/src/gallium/drivers/nvfx/nvfx_vbo.c -index 597664e..339b317 100644 ---- a/src/gallium/drivers/nvfx/nvfx_vbo.c -+++ b/src/gallium/drivers/nvfx/nvfx_vbo.c -@@ -9,8 +9,7 @@ - #include "nvfx_resource.h" - - #include "nouveau/nouveau_channel.h" -- --#include "nouveau/nouveau_pushbuf.h" -+#include "nouveau/nv04_pushbuf.h" - - static inline unsigned - util_guess_unique_indices_count(unsigned mode, unsigned indices) -diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h -index 8036b18..c5ac128 100644 ---- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h -+++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h -@@ -38,7 +38,6 @@ - #include <assert.h> - - #include "nouveau_device.h" --#include "nouveau_pushbuf.h" - #include "nouveau_grobj.h" - #include "nouveau_channel.h" - #include "nouveau_bo.h" -@@ -46,6 +45,7 @@ - #include "nouveau_screen.h" - #include "nouveau_state.h" - #include "nouveau_surface.h" -+#include "nv04_pushbuf.h" - - #define DRIVER_DATE "20091015" - #define DRIVER_AUTHOR "Nouveau" --- -cgit v0.8.3-6-g21f6 diff --git a/testing/avahi/PKGBUILD b/testing/avahi/PKGBUILD deleted file mode 100644 index 812aeeaa0..000000000 --- a/testing/avahi/PKGBUILD +++ /dev/null @@ -1,75 +0,0 @@ -# $Id: PKGBUILD 128481 2011-06-24 03:51:45Z bisson $ -# Contributor: Douglas Soares de Andrade <douglas@archlinux.org> -# Maintainer: Gaetan Bisson <bisson@archlinux.org> - -pkgname=avahi -pkgver=0.6.30 -pkgrel=4 -pkgdesc='A multicast/unicast DNS-SD framework' -arch=('i686' 'x86_64') -url='http://www.avahi.org/' -license=('LGPL') -depends=('expat' 'libdaemon' 'glib2' 'dbus' 'libcap' 'gdbm') -optdepends=('gtk3: avahi-discover-standalone, bshell, bssh, bvnc' - 'gtk2: gtk2 bindings' - 'qt3: qt3 bindings' - 'qt: qt bindings' - 'pygtk: avahi-bookmarks, avahi-discover' - 'twisted: avahi-bookmarks' - 'mono: mono bindings' - 'dbus-python: avahi-discover' - 'nss-mdns: NSS support for mDNS') -makedepends=('qt' 'qt3' 'pygtk' 'mono' 'intltool' 'dbus-python' - 'gtk-sharp-2' 'gobject-introspection' 'gtk3') -backup=(etc/avahi/avahi-daemon.conf etc/avahi/services/{sftp-,}ssh.service) -install=install -conflicts=('howl' 'mdnsresponder') -provides=('howl' 'mdnsresponder') -replaces=('howl' 'mdnsresponder') -options=('!libtool') -source=("http://www.avahi.org/download/avahi-${pkgver}.tar.gz" - 'gnome-nettool.png' - 'rc.d.patch') -sha1sums=('5b77443537600a00770e4c77e3c443eeb5861d06' - 'cf56387c88aed246b9f435efc182ef44de4d52f3' - '625ad7c131c0c1c383caeddef18fc7a32d8f3ab9') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - - sed -i 's/netdev/network/g' avahi-daemon/avahi-dbus.conf - patch -p1 -i "../rc.d.patch" - - # pygtk requires python2; make it explicit in case other python are installed: FS#21865 - PYTHON=python2 \ - PKG_CONFIG_PATH=/opt/qt/lib/pkgconfig \ - ./configure \ - --prefix=/usr \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --disable-static \ - --disable-monodoc \ - --disable-doxygen-doc \ - --disable-xmltoman \ - --enable-compat-libdns_sd \ - --enable-compat-howl \ - --with-distro=archlinux \ - --with-avahi-priv-access-group=network \ - --with-autoipd-user=avahi \ - --with-autoipd-group=avahi \ - --with-systemdsystemunitdir=/lib/systemd/system # See FS#20999 - - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - install -D -m 644 ../gnome-nettool.png "${pkgdir}"/usr/share/pixmaps/gnome-nettool.png - - cd "${pkgdir}" - sed -i '1c #!/usr/bin/python2' usr/bin/avahi-{bookmarks,discover} - # howl and mdnsresponder compatability - (cd usr/include; ln -s avahi-compat-libdns_sd/dns_sd.h dns_sd.h; ln -s avahi-compat-howl howl) - (cd usr/lib/pkgconfig; ln -s avahi-compat-howl.pc howl.pc) -} diff --git a/testing/avahi/gnome-nettool.png b/testing/avahi/gnome-nettool.png Binary files differdeleted file mode 100644 index 227d0678a..000000000 --- a/testing/avahi/gnome-nettool.png +++ /dev/null diff --git a/testing/avahi/install b/testing/avahi/install deleted file mode 100644 index 7c75c3dd4..000000000 --- a/testing/avahi/install +++ /dev/null @@ -1,21 +0,0 @@ -post_install() { - getent group avahi &>/dev/null || groupadd -r -g 84 avahi >/dev/null - getent passwd avahi &>/dev/null || useradd -r -u 84 -g avahi -d / -s /bin/false -c avahi avahi >/dev/null - - cat <<EOF -==> The following daemons may be added to DAEMONS in /etc/rc.conf: -==> avahi-daemon: the mdns responder, you probably want this. -==> dbus needs to be running when you start it. -==> avahi-dnsconfd: daemon used for peer-to-peer automatic dns -==> configuration on dhcp-less networks. - -==> To use some of the client applications you will have to install python. -==> In addition, pygtk is required for the graphical ones and -==> twisted for avahi-bookmarks. -EOF -} - -post_remove() { - getent passwd avahi &>/dev/null && userdel avahi >/dev/null - getent group avahi &>/dev/null && groupdel avahi >/dev/null -} diff --git a/testing/avahi/rc.d.patch b/testing/avahi/rc.d.patch deleted file mode 100644 index fd735734b..000000000 --- a/testing/avahi/rc.d.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -aur old/initscript/archlinux/avahi-daemon.in new/initscript/archlinux/avahi-daemon.in ---- old/initscript/archlinux/avahi-daemon.in 2011-06-24 03:07:00.916170590 +0200 -+++ new/initscript/archlinux/avahi-daemon.in 2011-06-24 03:16:32.220596377 +0200 -@@ -33,6 +33,7 @@ - - case "$1" in - start) -+ ck_daemon dbus && { echo -n "Start dbus first." >&2; stat_die; } - stat_busy "Starting $DESC" - $DAEMON -D > /dev/null 2>&1 - if [ $? -gt 0 ]; then diff --git a/testing/cryptsetup/PKGBUILD b/testing/cryptsetup/PKGBUILD deleted file mode 100644 index a2a11ec9e..000000000 --- a/testing/cryptsetup/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: PKGBUILD 129976 2011-06-30 17:57:50Z thomas $ -# Maintainer: Thomas Bächler <thomas@archlinux.org> -pkgname=cryptsetup -pkgver=1.3.1 -pkgrel=2 -pkgdesc="Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi" -arch=(i686 x86_64) -license=('GPL') -url="http://code.google.com/p/cryptsetup/" -groups=('base') -depends=('device-mapper>=2.02.85-2' 'libgcrypt' 'popt') -conflicts=('mkinitcpio<0.7') -options=('!libtool' '!emptydirs') -source=(http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2 - encrypt_hook - encrypt_install) -sha256sums=('7ceb18a0c91fa1546077b41b93463dd2ec9d7f83e6fd93757fb84cc608206a6a' - 'b8269d358363eb8d67d1ffa1469068e454a89154636283bcc3edc6486b7fff4e' - 'd4380195351b70abf8fcb3cd19461879c55a7a07e4915d1f0365b295b112a573') - -build() { - cd $srcdir/$pkgname-${pkgver} - ./configure --prefix=/usr --disable-static --sbindir=/sbin --libdir=/lib - make -} - -package() { - cd $srcdir/$pkgname-${pkgver} - make DESTDIR=$pkgdir install - # install hook - install -D -m644 $srcdir/encrypt_hook $pkgdir/lib/initcpio/hooks/encrypt - install -D -m644 $srcdir/encrypt_install $pkgdir/lib/initcpio/install/encrypt - # Fix pkgconfig location - install -d -m755 $pkgdir/usr/lib - mv $pkgdir/lib/pkgconfig $pkgdir/usr/lib/ -} diff --git a/testing/cryptsetup/encrypt_hook b/testing/cryptsetup/encrypt_hook deleted file mode 100644 index 54aaa2236..000000000 --- a/testing/cryptsetup/encrypt_hook +++ /dev/null @@ -1,132 +0,0 @@ -# vim: set ft=sh: -# TODO this one needs some work to work with lots of different -# encryption schemes -run_hook () -{ - /sbin/modprobe -a -q dm-crypt >/dev/null 2>&1 - if [ -e "/sys/class/misc/device-mapper" ]; then - if [ ! -e "/dev/mapper/control" ]; then - mkdir /dev/mapper - mknod "/dev/mapper/control" c $(cat /sys/class/misc/device-mapper/dev | sed 's|:| |') - fi - [ "${quiet}" = "y" ] && CSQUIET=">/dev/null" - - # Get keyfile if specified - ckeyfile="/crypto_keyfile.bin" - if [ "x${cryptkey}" != "x" ]; then - ckdev="$(echo "${cryptkey}" | cut -d: -f1)" - ckarg1="$(echo "${cryptkey}" | cut -d: -f2)" - ckarg2="$(echo "${cryptkey}" | cut -d: -f3)" - if poll_device "${ckdev}" ${rootdelay}; then - case ${ckarg1} in - *[!0-9]*) - # Use a file on the device - # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path - mkdir /ckey - mount -r -t ${ckarg1} ${ckdev} /ckey - dd if=/ckey/${ckarg2} of=${ckeyfile} >/dev/null 2>&1 - umount /ckey - ;; - *) - # Read raw data from the block device - # ckarg1 is numeric: ckarg1=offset, ckarg2=length - dd if=${ckdev} of=${ckeyfile} bs=1 skip=${ckarg1} count=${ckarg2} >/dev/null 2>&1 - ;; - esac - fi - [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase." - fi - - if [ -n "${cryptdevice}" ]; then - DEPRECATED_CRYPT=0 - cryptdev="$(echo "${cryptdevice}" | cut -d: -f1)" - cryptname="$(echo "${cryptdevice}" | cut -d: -f2)" - else - DEPRECATED_CRYPT=1 - cryptdev="${root}" - cryptname="root" - fi - - warn_deprecated() { - echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated" - echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead." - } - - if poll_device "${cryptdev}" ${rootdelay}; then - if /sbin/cryptsetup isLuks ${cryptdev} >/dev/null 2>&1; then - [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated - dopassphrase=1 - # If keyfile exists, try to use that - if [ -f ${ckeyfile} ]; then - if eval /sbin/cryptsetup --key-file ${ckeyfile} luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; then - dopassphrase=0 - else - echo "Invalid keyfile. Reverting to passphrase." - fi - fi - # Ask for a passphrase - if [ ${dopassphrase} -gt 0 ]; then - echo "" - echo "A password is required to access the ${cryptname} volume:" - - #loop until we get a real password - while ! eval /sbin/cryptsetup luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; do - sleep 2; - done - fi - if [ -e "/dev/mapper/${cryptname}" ]; then - if [ ${DEPRECATED_CRYPT} -eq 1 ]; then - export root="/dev/mapper/root" - fi - else - err "Password succeeded, but ${cryptname} creation failed, aborting..." - exit 1 - fi - elif [ -n "${crypto}" ]; then - [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated - msg "Non-LUKS encrypted device found..." - if [ $# -ne 5 ]; then - err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip" - err "Non-LUKS decryption not attempted..." - return 1 - fi - exe="/sbin/cryptsetup create ${cryptname} ${cryptdev}" - tmp=$(echo "${crypto}" | cut -d: -f1) - [ -n "${tmp}" ] && exe="${exe} --hash \"${tmp}\"" - tmp=$(echo "${crypto}" | cut -d: -f2) - [ -n "${tmp}" ] && exe="${exe} --cipher \"${tmp}\"" - tmp=$(echo "${crypto}" | cut -d: -f3) - [ -n "${tmp}" ] && exe="${exe} --key-size \"${tmp}\"" - tmp=$(echo "${crypto}" | cut -d: -f4) - [ -n "${tmp}" ] && exe="${exe} --offset \"${tmp}\"" - tmp=$(echo "${crypto}" | cut -d: -f5) - [ -n "${tmp}" ] && exe="${exe} --skip \"${tmp}\"" - if [ -f ${ckeyfile} ]; then - exe="${exe} --key-file ${ckeyfile}" - else - exe="${exe} --verify-passphrase" - echo "" - echo "A password is required to access the ${cryptname} volume:" - fi - eval "${exe} ${CSQUIET}" - - if [ $? -ne 0 ]; then - err "Non-LUKS device decryption failed. verify format: " - err " crypto=hash:cipher:keysize:offset:skip" - exit 1 - fi - if [ -e "/dev/mapper/${cryptname}" ]; then - if [ ${DEPRECATED_CRYPT} -eq 1 ]; then - export root="/dev/mapper/root" - fi - else - err "Password succeeded, but ${cryptname} creation failed, aborting..." - exit 1 - fi - else - err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified." - fi - fi - rm -f ${ckeyfile} - fi -} diff --git a/testing/cryptsetup/encrypt_install b/testing/cryptsetup/encrypt_install deleted file mode 100644 index 13174ec06..000000000 --- a/testing/cryptsetup/encrypt_install +++ /dev/null @@ -1,26 +0,0 @@ -# vim: set ft=sh: - -build() -{ - if [ -z "${CRYPTO_MODULES}" ]; then - MODULES=" dm-crypt $(all_modules "/crypto/") " - else - MODULES=" dm-crypt ${CRYPTO_MODULES} " - fi - FILES="" - SCRIPT="encrypt" - [ -f "/sbin/cryptsetup" ] && add_binary "/sbin/cryptsetup" "/sbin/cryptsetup" - [ -f "/usr/sbin/cryptsetup" ] && add_binary "/usr/sbin/cryptsetup" "/sbin/cryptsetup" - add_binary "/sbin/dmsetup" - add_file "/lib/udev/rules.d/10-dm.rules" - add_file "/lib/udev/rules.d/13-dm-disk.rules" - add_file "/lib/udev/rules.d/95-dm-notify.rules" - add_file "/lib/initcpio/udev/11-dm-initramfs.rules" "/lib/udev/rules.d/11-dm-initramfs.rules" -} - -help () -{ -cat<<HELPEOF - This hook allows for an encrypted root device. -HELPEOF -} diff --git a/testing/dmraid/PKGBUILD b/testing/dmraid/PKGBUILD deleted file mode 100644 index 5af91a2ec..000000000 --- a/testing/dmraid/PKGBUILD +++ /dev/null @@ -1,39 +0,0 @@ -# $Id: PKGBUILD 129977 2011-06-30 18:03:08Z thomas $ -# Maintainer: Tobias Powalowski <tpowa@archlinux.org> -#Contributor: Urs Wolfer <uwolfer @ fwo.ch> - -pkgname=dmraid -pkgver=1.0.0.rc16.3 -pkgrel=2 -pkgdesc="Device mapper RAID interface" -url="http://people.redhat.com/~heinzm/sw/dmraid/" -conflicts=('mkinitcpio<0.7') -depends=('device-mapper>=2.0.54') -arch=('i686' 'x86_64') -license=('GPL') -source=(#ftp://ftp.archlinux.org/other/dmraid/$pkgname-$pkgver.tar.bz2 - http://people.redhat.com/~heinzm/sw/dmraid/src/$pkgname-1.0.0.rc16-3.tar.bz2 - dmraid_install - dmraid_hook) -install=dmraid.install -md5sums=('819338fcef98e8e25819f0516722beeb' - 'bf6c61a11dbbb40d5152835075c9f438' - '2a1ef82fb32f065ee560dceef736475e') - -build() { - cd "$srcdir"/$pkgname/1.0.0.rc16-3/$pkgname - ./configure --enable-led --enable-intel_led - make -} - -package() { - cd "$srcdir"/$pkgname/1.0.0.rc16-3/$pkgname - make DESTDIR="$pkgdir" prefix=/ libdir=/lib mandir=/usr/share/man includedir=/usr/include install - mkdir -p "$pkgdir"/var/lock/dmraid - chmod 1777 "$pkgdir"/var/lock/ - install -D -m644 "$srcdir"/dmraid_install "$pkgdir"/lib/initcpio/install/dmraid - install -D -m644 "$srcdir"/dmraid_hook "$pkgdir"/lib/initcpio/hooks/dmraid - # fix permissions - chmod 644 "$pkgdir"/lib/libdmraid.a - chmod 644 "$pkgdir"/usr/include/dmraid/* -} diff --git a/testing/dmraid/dmraid.install b/testing/dmraid/dmraid.install deleted file mode 100644 index 64899e785..000000000 --- a/testing/dmraid/dmraid.install +++ /dev/null @@ -1,14 +0,0 @@ -post_upgrade() { - if [ "$(vercmp $2 1.0.0.rc15)" -lt 0 ]; then - # important upgrade notice - echo ">>>" - echo ">>> IMPORTANT DMRAID UPGRADE NOTICE" - echo ">>> -------------------------------" - echo ">>> Version 1.0.0.rc15 and greater introduce a new name scheme:" - echo ">>> You need to add an additional 'p' in front of your number." - echo ">>> e.g. <yourname><number> --> <yourname>p<number>" - echo ">>> firsthd1 --> firsthdp1" - echo ">>> Please change your bootloader and fstab accordingly." - echo ">>>" - fi -} diff --git a/testing/dmraid/dmraid_hook b/testing/dmraid/dmraid_hook deleted file mode 100644 index 6219a718a..000000000 --- a/testing/dmraid/dmraid_hook +++ /dev/null @@ -1,19 +0,0 @@ -# vim: set ft=sh: -run_hook () -{ - /sbin/modprobe -q dm-mod >/dev/null 2>&1 - /sbin/modprobe -q dm-mirror >/dev/null 2>&1 - if [ -e "/sys/class/misc/device-mapper" ]; then - if [ ! -e "/dev/mapper/control" ]; then - mkdir /dev/mapper - mknod "/dev/mapper/control" c $(cat /sys/class/misc/device-mapper/dev | sed 's|:| |') - fi - msg ":: Activating dmraid arrays..." - # prevent any event monitoring calls with -I - if [ "${quiet}" = "y" ]; then - /sbin/dmraid -ay -I -Z >/dev/null - else - /sbin/dmraid -ay -I -Z - fi - fi -} diff --git a/testing/dmraid/dmraid_install b/testing/dmraid/dmraid_install deleted file mode 100644 index eeb9e0893..000000000 --- a/testing/dmraid/dmraid_install +++ /dev/null @@ -1,19 +0,0 @@ -# vim: set ft=sh: - -build() -{ - MODULES=" dm-mod dm-mirror " - BINARIES="/sbin/dmraid /sbin/dmsetup" - FILES="" - SCRIPT="dmraid" - add_file "/lib/udev/rules.d/10-dm.rules" - add_file "/lib/udev/rules.d/13-dm-disk.rules" - add_file "/lib/udev/rules.d/95-dm-notify.rules" -} - -help () -{ -cat<<HELPEOF - This hook loads the necessary modules for a dmraid root device. -HELPEOF -} diff --git a/testing/gcc/PKGBUILD b/testing/gcc/PKGBUILD deleted file mode 100644 index ecba694b3..000000000 --- a/testing/gcc/PKGBUILD +++ /dev/null @@ -1,254 +0,0 @@ -# $Id: PKGBUILD 130912 2011-07-09 03:10:41Z allan $ -# Maintainer: Allan McRae <allan@archlinux.org> - -# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc -# NOTE: libtool requires rebuilt with each new gcc version - -pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go') -pkgver=4.6.1 -pkgrel=2 -#_snapshot=4.6-20110603 -_libstdcppmanver=20110201 # Note: check source directory name when updating this -pkgdesc="The GNU Compiler Collection" -arch=('i686' 'x86_64') -license=('GPL' 'LGPL' 'FDL' 'custom') -url="http://gcc.gnu.org" -makedepends=('binutils>=2.21-9' 'libmpc' 'cloog' 'ppl' 'gcc-ada') -checkdepends=('dejagnu') -options=('!libtool' '!emptydirs') -source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 - #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 - ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-api.${_libstdcppmanver}.man.tar.bz2 - gcc_pure64.patch - gcc-hash-style-both.patch) -md5sums=('c57a9170c677bf795bdc04ed796ca491' - '1e9fd2eaf0ee47ea64e82c48998f1999' - '4030ee1c08dd1e843c0225b772360e76' - '4df25b623799b148a0703eaeec8fdf3f') - -if [ -n "${_snapshot}" ]; then - _basedir="${srcdir}/gcc-${_snapshot}" -else - _basedir="${srcdir}/gcc-${pkgver}" -fi - -build() { - cd ${_basedir} - - # Do not install libiberty - sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in - - # Do not run fixincludes - sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in - - if [ "${CARCH}" = "x86_64" ]; then - patch -Np1 -i ${srcdir}/gcc_pure64.patch - fi - patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch - - echo ${pkgver} > gcc/BASE-VER - - cd ${srcdir} - mkdir gcc-build && cd gcc-build - - ${_basedir}/configure --prefix=/usr \ - --libdir=/usr/lib --libexecdir=/usr/lib \ - --mandir=/usr/share/man --infodir=/usr/share/info \ - --with-bugurl=https://bugs.archlinux.org/ \ - --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \ - --enable-shared --enable-threads=posix \ - --with-system-zlib --enable-__cxa_atexit \ - --disable-libunwind-exceptions --enable-clocale=gnu \ - --enable-gnu-unique-object --enable-linker-build-id \ - --with-ppl --enable-cloog-backend=isl \ - --enable-lto --enable-gold --enable-ld=default \ - --enable-plugin --with-plugin-ld=ld.gold \ - --disable-multilib --disable-libstdcxx-pch \ - --enable-checking=release - make -} - -check() { - cd gcc-build - - # increase stack size to prevent test failures - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827 - ulimit -s 32768 - - # do not abort on error as some are "expected" - make -k check || true - ${_basedir}/contrib/test_summary -} - -package_gcc-libs() -{ - pkgdesc="Runtime libraries shipped by GCC" - groups=('base') - depends=('glibc>=2.14') - install=gcc-libs.install - - cd gcc-build - make -j1 -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared - for lib in libmudflap libgomp libssp libstdc++-v3/src; do - make -j1 -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES - done - make -j1 -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install - make -j1 -C $CHOST/libgomp DESTDIR=${pkgdir} install-info - - make -j1 DESTDIR=${pkgdir} install-target-libquadmath - make -j1 DESTDIR=${pkgdir} install-target-libgfortran - make -j1 DESTDIR=${pkgdir} install-target-libobjc - - # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} - rm -rf ${pkgdir}/usr/lib/{gcc/,libgfortran.spec} - - # remove static libraries - find ${pkgdir} -name *.a -delete - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc() -{ - pkgdesc="The GNU Compiler Collection - C and C++ frontends" - depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.21.1' 'libmpc' 'cloog' 'ppl') - groups=('base-devel') - install=gcc.install - - cd gcc-build - - # unfortunately it is much, much easier to install the lot and clean-up the mess... - make -j1 DESTDIR=${pkgdir} install - rm $pkgdir/usr/bin/{{$CHOST-,}gfortran,{$CHOST-,}gccgo,gnat*} - rm $pkgdir/usr/lib/*.so* - rm $pkgdir/usr/lib/lib{ffi,gfortran,go{,begin},objc,quadmath}.a - rm $pkgdir/usr/lib/libgfortran.spec - rm -r $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{ada{include,lib},finclude,include/objc} - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/include/{ffi{,target}.h,quadmath{,_weak}.h} - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,gnat1,go1,libgfortranbegin.a} - rm -r $pkgdir/usr/lib/go - rm $pkgdir/usr/share/info/{gccgo,gfortran,gnat*,libgomp,libquadmath}.info - rm $pkgdir/usr/share/locale/{de,fr}/LC_MESSAGES/libstdc++.mo - rm $pkgdir/usr/share/man/man1/{gccgo,gfortran}.1 - rm $pkgdir/usr/share/man/man3/ffi* - - # many packages require these symlinks - install -dm755 ${pkgdir}/lib - ln -sf /usr/bin/cpp ${pkgdir}/lib/cpp - ln -sf gcc ${pkgdir}/usr/bin/cc - ln -sf g++ ${pkgdir}/usr/bin/c++ - - # install gengtype for plugin support - install -m755 gcc/build/gengtype $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ - install -m644 gcc/gtype.state $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ - - # POSIX conformance launcher scripts for c89 and c99 - cat > $pkgdir/usr/bin/c89 <<"EOF" -#!/bin/sh -fl="-std=c89" -for opt; do - case "$opt" in - -ansi|-std=c89|-std=iso9899:1990) fl="";; - -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF - - cat > $pkgdir/usr/bin/c99 <<"EOF" -#!/bin/sh -fl="-std=c99" -for opt; do - case "$opt" in - -std=c99|-std=iso9899:1999) fl="";; - -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF - - chmod 755 $pkgdir/usr/bin/c{8,9}9 - - # install the libstdc++ man pages - install -dm755 ${pkgdir}/usr/share/man/man3 - install -m644 ${srcdir}/man/man3/* ${pkgdir}/usr/share/man/man3/ - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-fortran() -{ - pkgdesc="Fortran front-end for GCC" - depends=("gcc=$pkgver-$pkgrel") - install=gcc-fortran.install - - cd gcc-build - make -j1 DESTDIR=${pkgdir} install-target-libquadmath - make -j1 DESTDIR=$pkgdir install-target-libgfortran - make -j1 -C $CHOST/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS - make -j1 -C gcc DESTDIR=$pkgdir fortran.install-{common,man,info} - install -Dm755 gcc/f951 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/f951 - - # remove libraries included in gcc-libs - rm ${pkgdir}/usr/lib/lib{gfortran,quadmath}.so* - rm ${pkgdir}/usr/share/info/libquadmath.info - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-fortran/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-objc() -{ - pkgdesc="Objective-C front-end for GCC" - depends=("gcc=$pkgver-$pkgrel") - - cd gcc-build - make -j1 DESTDIR=$pkgdir install-target-libobjc - install -dm755 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/ - install -m755 gcc/cc1obj{,plus} $pkgdir/usr/lib/gcc/$CHOST/$pkgver/ - - # remove libraries included in gcc-libs - rm ${pkgdir}/usr/lib/libobjc.so* - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-objc/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-ada() -{ - pkgdesc="Ada front-end for GCC (GNAT)" - depends=("gcc=$pkgver-$pkgrel") - install=gcc-ada.install - - cd gcc-build/gcc - make -j1 DESTDIR=$pkgdir ada.install-{common,info} - install -m755 gnat1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-ada/RUNTIME.LIBRARY.EXCEPTION -} - -package_gcc-go() -{ - pkgdesc="Go front-end for GCC" - depends=("gcc=$pkgver-$pkgrel") - install=gcc-go.install - - cd gcc-build - make -j1 DESTDIR=$pkgdir install-target-libgo - make -j1 -C gcc DESTDIR=$pkgdir go.install-{common,man,info} - install -Dm755 gcc/go1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/go1 - - # Install Runtime Library Exception - install -Dm644 ${_basedir}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/gcc-go/RUNTIME.LIBRARY.EXCEPTION -} diff --git a/testing/gcc/gcc-ada.install b/testing/gcc/gcc-ada.install deleted file mode 100644 index df0553a4f..000000000 --- a/testing/gcc/gcc-ada.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(gnat-style.info gnat_rm.info gnat_ugn.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/testing/gcc/gcc-fortran.install b/testing/gcc/gcc-fortran.install deleted file mode 100644 index b15d89a97..000000000 --- a/testing/gcc/gcc-fortran.install +++ /dev/null @@ -1,16 +0,0 @@ -infodir=usr/share/info -file="gfortran.info" - -post_install() { - [ -x usr/bin/install-info ] || return 0 - install-info $infodir/$file.gz $infodir/dir 2> /dev/null -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null -} diff --git a/testing/gcc/gcc-go.install b/testing/gcc/gcc-go.install deleted file mode 100644 index 7dc50dee5..000000000 --- a/testing/gcc/gcc-go.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(gccgo.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/testing/gcc/gcc-hash-style-both.patch b/testing/gcc/gcc-hash-style-both.patch deleted file mode 100644 index 8b59f4535..000000000 --- a/testing/gcc/gcc-hash-style-both.patch +++ /dev/null @@ -1,122 +0,0 @@ ---- gcc/config/alpha/linux-elf.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/alpha/linux-elf.h 2011-03-11 10:01:47.770000457 +1000 -@@ -41,7 +41,7 @@ - - #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER - --#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ -+#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ - %{shared:-shared} \ - %{!shared: \ ---- gcc/config/i386/linux64.h.orig 2011-03-03 08:35:36.000000000 +1000 -+++ gcc/config/i386/linux64.h 2011-03-11 10:01:47.770000457 +1000 -@@ -78,7 +78,7 @@ - %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" - - #undef LINK_SPEC --#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ -+#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/i386/linux.h.orig 2011-01-15 04:45:06.000000000 +1000 -+++ gcc/config/i386/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -104,7 +104,7 @@ - { "dynamic_linker", LINUX_DYNAMIC_LINKER } - - #undef LINK_SPEC --#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ -+#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ ---- gcc/config/ia64/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/ia64/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -64,7 +64,7 @@ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" - - #undef LINK_SPEC --#define LINK_SPEC "\ -+#define LINK_SPEC "--hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/rs6000/linux64.h.orig 2011-02-11 03:30:10.000000000 +1000 -+++ gcc/config/rs6000/linux64.h 2011-03-11 10:03:34.280000457 +1000 -@@ -389,11 +389,11 @@ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) - - --#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}" - --#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}" - ---- gcc/config/rs6000/sysv4.h.orig 2011-01-28 04:36:03.000000000 +1000 -+++ gcc/config/rs6000/sysv4.h 2011-03-11 10:01:47.773333792 +1000 -@@ -830,7 +830,7 @@ - #define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) - --#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " LINUX_DYNAMIC_LINKER "}}" - ---- gcc/config/s390/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 -+++ gcc/config/s390/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -77,7 +77,7 @@ - - #undef LINK_SPEC - #define LINK_SPEC \ -- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{static:-static} \ ---- gcc/config/sparc/linux64.h.orig 2011-02-17 23:57:21.000000000 +1000 -+++ gcc/config/sparc/linux64.h 2011-03-11 10:01:47.770000457 +1000 -@@ -113,7 +113,7 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,%R/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,%R/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -@@ -121,7 +121,7 @@ - %{static:-static}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -@@ -193,7 +193,7 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ ---- gcc/config/sparc/linux.h.orig 2011-01-27 06:30:12.000000000 +1000 -+++ gcc/config/sparc/linux.h 2011-03-11 10:01:47.770000457 +1000 -@@ -74,7 +74,7 @@ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!static: \ diff --git a/testing/gcc/gcc-libs.install b/testing/gcc/gcc-libs.install deleted file mode 100644 index 23553b8f0..000000000 --- a/testing/gcc/gcc-libs.install +++ /dev/null @@ -1,16 +0,0 @@ -infodir=usr/share/info -filelist=(libgomp.info libquadmath.info) - -post_upgrade() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/testing/gcc/gcc.install b/testing/gcc/gcc.install deleted file mode 100644 index 3407a5e1f..000000000 --- a/testing/gcc/gcc.install +++ /dev/null @@ -1,20 +0,0 @@ -infodir=usr/share/info -filelist=(cpp.info cppinternals.info gcc.info gccinstall.info gccint.info) - -post_install() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done -} diff --git a/testing/gcc/gcc_pure64.patch b/testing/gcc/gcc_pure64.patch deleted file mode 100644 index 8c0baf8e2..000000000 --- a/testing/gcc/gcc_pure64.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -Naur gcc-4.2.0.orig/gcc/config/i386/linux64.h gcc-4.2.0/gcc/config/i386/linux64.h ---- gcc-4.2.0.orig/gcc/config/i386/linux64.h 2007-05-16 19:21:19.000000000 -0400 -+++ gcc-4.2.0/gcc/config/i386/linux64.h 2007-05-18 17:04:05.000000000 -0400 -@@ -49,8 +49,8 @@ - When the -shared link option is used a final link is not being - done. */ - --#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" --#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" -+#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2" -+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2" - - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ -diff -Naur gcc-4.2.0.orig/gcc/config/i386/t-linux64 gcc-4.2.0/gcc/config/i386/t-linux64 ---- gcc-4.2.0.orig/gcc/config/i386/t-linux64 2007-05-16 19:21:19.000000000 -0400 -+++ gcc-4.2.0/gcc/config/i386/t-linux64 2007-05-18 17:04:36.000000000 -0400 -@@ -6,7 +6,7 @@ - - MULTILIB_OPTIONS = m64/m32 - MULTILIB_DIRNAMES = 64 32 --MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) -+MULTILIB_OSDIRNAMES = ../lib ../lib32 - - LIBGCC = stmp-multilib - INSTALL_LIBGCC = install-multilib diff --git a/testing/gimp-devel/PKGBUILD b/testing/gimp-devel/PKGBUILD deleted file mode 100644 index a7667f16d..000000000 --- a/testing/gimp-devel/PKGBUILD +++ /dev/null @@ -1,58 +0,0 @@ -# $Id: PKGBUILD 130357 2011-07-05 18:03:52Z eric $ -# Maintainer: Eric Bélanger <eric@archlinux.org> - -pkgname=gimp-devel -pkgver=2.7.2 -pkgrel=2 -pkgdesc="GNU Image Manipulation Program (Development Version)" -arch=('i686' 'x86_64') -url="http://www.gimp.org/" -license=('GPL3' 'LGPL3') -depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'librsvg' 'libmng' 'dbus-glib' \ - 'jasper' 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme') -makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl') -optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support' - 'libwebkit: for the help browser or web-page plug-ins' - 'poppler-glib: for pdf support' - 'alsa-lib: for MIDI event controller module' - 'curl: for URI support') -options=('!libtool' '!makeflags') -conflicts=('gimp') -provides=("gimp=${pkgver}") -install=gimp-devel.install -source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/gimp-${pkgver}.tar.bz2 linux.gpl - uri-backend-libcurl.patch) -md5sums=('6996138ab70b0bfebfe9f563284e5f78' - 'bb27bc214261d36484093e857f015f38' - 'b3f8faa246e5794b0d63583059f54698') -sha1sums=('4690420961d110f99448c32fe61aae7d4869a863' - '110ce9798173b19a662d086ed7b882b4729f06cf' - '8a87adc11ee13d5fce79ea4226f04e682a2af97d') - -build() { - cd "${srcdir}/gimp-${pkgver}" - patch -p1 < ../uri-backend-libcurl.patch - PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ - --enable-mp --enable-gimp-console --enable-gimp-remote \ - --enable-python --with-gif-compression=lzw --with-libcurl \ - --without-aa --without-hal --without-gvfs - make -} - -package() { - cd "${srcdir}/gimp-${pkgver}" - make DESTDIR="${pkgdir}" install - sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py - install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl" - - ln -sf gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz" - ln -sf gimp-remote-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-remote.1.gz" - ln -sf gimprc-${pkgver%.*}.5.gz "${pkgdir}/usr/share/man/man5/gimprc.5.gz" - ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz" - ln -s gimp-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp.1.gz" - - ln -s gimp-${pkgver%.*} "${pkgdir}/usr/bin/gimp" - ln -s gimp-console-${pkgver%.*} "${pkgdir}/usr/bin/gimp-console" - ln -s gimp-remote-${pkgver%.*} "${pkgdir}/usr/bin/gimp-remote" - ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool" -} diff --git a/testing/gimp-devel/gimp-devel.install b/testing/gimp-devel/gimp-devel.install deleted file mode 100644 index c317fbaca..000000000 --- a/testing/gimp-devel/gimp-devel.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { - update-desktop-database -q - gtk-update-icon-cache -q -t -f usr/share/icons/hicolor -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/testing/gimp-devel/linux.gpl b/testing/gimp-devel/linux.gpl deleted file mode 100644 index 0a73d8979..000000000 --- a/testing/gimp-devel/linux.gpl +++ /dev/null @@ -1,19 +0,0 @@ -GIMP Palette -Name: linux -# - 0 0 0 - 0 0 170 - 0 170 0 - 0 170 170 -170 0 0 -170 0 170 -170 85 0 -170 170 170 - 85 85 85 - 85 85 255 - 85 255 85 - 85 255 255 -255 85 85 -255 85 255 -255 255 85 -255 255 255 diff --git a/testing/gimp-devel/uri-backend-libcurl.patch b/testing/gimp-devel/uri-backend-libcurl.patch deleted file mode 100644 index d3217a292..000000000 --- a/testing/gimp-devel/uri-backend-libcurl.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -aur gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c ---- gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c 2010-07-03 00:51:59.000000000 +0200 -+++ gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c 2011-06-23 19:15:30.000000000 +0200 -@@ -24,7 +23,6 @@ - #include <errno.h> - - #include <curl/curl.h> --#include <curl/types.h> - #include <curl/easy.h> - - #include <glib/gstdio.h> -@@ -63,7 +61,7 @@ - - vinfo = curl_version_info (CURLVERSION_NOW); - -- protocols = g_string_new ("http:,ftp:"); -+ protocols = g_string_new ("http:,ftp:,gopher:"); - - if (vinfo->features & CURL_VERSION_SSL) - { -@@ -153,7 +151,7 @@ - FILE *out_file; - CURL *curl_handle; - CURLcode result; -- gint response_code; -+ glong response_code; - - gimp_progress_init (_("Connecting to server")); - -@@ -195,12 +193,12 @@ - - curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code); - -- if (response_code != 200) -+ if (response_code != 200 && response_code != 226 && response_code != 0) - { - fclose (out_file); - g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, - _("Opening '%s' for reading resulted in HTTP " -- "response code: %d"), -+ "response code: %ld"), - uri, response_code); - curl_easy_cleanup (curl_handle); - return FALSE; diff --git a/testing/gimp/PKGBUILD b/testing/gimp/PKGBUILD deleted file mode 100644 index a04de0a07..000000000 --- a/testing/gimp/PKGBUILD +++ /dev/null @@ -1,51 +0,0 @@ -# $Id: PKGBUILD 130354 2011-07-05 17:55:54Z eric $ -# Maintainer: tobias <tobias@archlinux.org> - -pkgname=gimp -pkgver=2.6.11 -pkgrel=6 -pkgdesc="GNU Image Manipulation Program" -arch=('i686' 'x86_64') -url="http://www.gimp.org/" -license=('GPL' 'LGPL') -depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'libxmu' 'librsvg' 'libmng' 'dbus-glib' \ - 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme') -makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl') -optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support' - 'libwebkit: for the help browser' - 'poppler-glib: for pdf support' - 'alsa-lib: for MIDI event controller module' - 'curl: for URI support') -options=('!libtool' '!makeflags') -conflicts=('gimp-devel') -install=gimp.install -source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 linux.gpl - uri-backend-libcurl.patch) -md5sums=('bb2939fe13e54fc7255cef5d097bb5dd' - 'bb27bc214261d36484093e857f015f38' - 'e894f4b2ffa92c71448fdd350e9b78c6') -sha1sums=('2f9d596e727bdbf304fa78257c1731d9faf3934c' - '110ce9798173b19a662d086ed7b882b4729f06cf' - 'a65b0ee6cd1b4345065b7b98c07f2fed15f844f4') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - patch -p1 < ../uri-backend-libcurl.patch - PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ - --enable-mp --enable-gimp-console --enable-gimp-remote \ - --enable-python --with-gif-compression=lzw --with-libcurl \ - --without-aa --without-hal --without-gvfs --without-gnomevfs - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py - install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl" - - rm "${pkgdir}/usr/share/man/man1/gimp-console.1" - ln -s gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz" - ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool" - ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz" -} diff --git a/testing/gimp/gimp.install b/testing/gimp/gimp.install deleted file mode 100644 index c317fbaca..000000000 --- a/testing/gimp/gimp.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { - update-desktop-database -q - gtk-update-icon-cache -q -t -f usr/share/icons/hicolor -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/testing/gimp/linux.gpl b/testing/gimp/linux.gpl deleted file mode 100644 index 0a73d8979..000000000 --- a/testing/gimp/linux.gpl +++ /dev/null @@ -1,19 +0,0 @@ -GIMP Palette -Name: linux -# - 0 0 0 - 0 0 170 - 0 170 0 - 0 170 170 -170 0 0 -170 0 170 -170 85 0 -170 170 170 - 85 85 85 - 85 85 255 - 85 255 85 - 85 255 255 -255 85 85 -255 85 255 -255 255 85 -255 255 255 diff --git a/testing/gimp/uri-backend-libcurl.patch b/testing/gimp/uri-backend-libcurl.patch deleted file mode 100644 index 85da2fc7f..000000000 --- a/testing/gimp/uri-backend-libcurl.patch +++ /dev/null @@ -1,77 +0,0 @@ -diff -aur gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c ---- gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c 2010-07-03 00:51:59.000000000 +0200 -+++ gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c 2011-06-23 19:15:30.000000000 +0200 -@@ -4,9 +4,9 @@ - * libcurl backend for the URI plug-in - * Copyright (C) 2006 Mukund Sivaraman <muks@mukund.org> - * -- * This program is free software; you can redistribute it and/or modify -+ * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -+ * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, -@@ -15,8 +15,7 @@ - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - #include "config.h" -@@ -24,7 +23,6 @@ - #include <errno.h> - - #include <curl/curl.h> --#include <curl/types.h> - #include <curl/easy.h> - - #include <glib/gstdio.h> -@@ -63,7 +61,7 @@ - - vinfo = curl_version_info (CURLVERSION_NOW); - -- protocols = g_string_new ("http:,ftp:"); -+ protocols = g_string_new ("http:,ftp:,gopher:"); - - if (vinfo->features & CURL_VERSION_SSL) - { -@@ -153,7 +151,7 @@ - FILE *out_file; - CURL *curl_handle; - CURLcode result; -- gint response_code; -+ glong response_code; - - gimp_progress_init (_("Connecting to server")); - -@@ -195,12 +193,12 @@ - - curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code); - -- if (response_code != 200) -+ if (response_code != 200 && response_code != 226 && response_code != 0) - { - fclose (out_file); - g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, - _("Opening '%s' for reading resulted in HTTP " -- "response code: %d"), -+ "response code: %ld"), - uri, response_code); - curl_easy_cleanup (curl_handle); - return FALSE; -@@ -224,3 +222,10 @@ - - return FALSE; - } -+ -+gchar * -+uri_backend_map_image (const gchar *uri, -+ GimpRunMode run_mode) -+{ -+ return NULL; -+} diff --git a/testing/gjs/PKGBUILD b/testing/gjs/PKGBUILD deleted file mode 100644 index 3ce7f9db8..000000000 --- a/testing/gjs/PKGBUILD +++ /dev/null @@ -1,29 +0,0 @@ -# $Id: PKGBUILD 130216 2011-07-04 12:55:31Z ibiru $ -# Maintainer: Ionut Biru <ibiru@archlinux.org> -pkgname=gjs -pkgver=0.7.14 -pkgrel=2 -pkgdesc="Javascript Bindings for GNOME" -arch=('i686' 'x86_64') -url="http://live.gnome.org/Gjs" -license=('GPL') -depends=('cairo' 'dbus-glib' 'gobject-introspection' 'js') -options=('!libtool') -source=(http://download.gnome.org/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.bz2 - gjs-0.7.14-js185-backport.patch) -sha256sums=('3af6f449a505c419d4a0e5938737da8d1b9b09b33710cc1ac1edee2eaa86e348' - 'b1fd3b8aa5978c5b60bfe39ce4298e67b9baa190d9cbf1a0ebe47af356197335') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - sed -i 's|python|python2|' scripts/make-tests - patch -Np1 -i "${srcdir}/gjs-0.7.14-js185-backport.patch" - autoreconf -fi - ./configure --prefix=/usr --disable-static - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install -} diff --git a/testing/gjs/gjs-0.7.14-js185-backport.patch b/testing/gjs/gjs-0.7.14-js185-backport.patch deleted file mode 100644 index b8b2082a3..000000000 --- a/testing/gjs/gjs-0.7.14-js185-backport.patch +++ /dev/null @@ -1,436 +0,0 @@ -From cef9c0835bfd8be105ff8905083d6b51d9010b8f Mon Sep 17 00:00:00 2001 -From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com> -Date: Fri, 1 Apr 2011 21:04:57 +0200 -Subject: [PATCH 1/4] Conditionally adapt to JS_DestroyScript removal - -Upstream changed the behaviour of several things about JSScripts in -http://hg.mozilla.org/mozilla-central/rev/c919a7271ac1 - -We now have to use a JSObject instead of a JSScript in certain circumstances, -and we no longer have to call JS_DestroyScript which no longer exists - -https://bugzilla.gnome.org/show_bug.cgi?id=646471 - -Conflicts: - - configure.ac ---- - configure.ac | 1 + - modules/console.c | 6 ++++++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 715f2c3..f81704b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -160,6 +160,7 @@ AC_CHECK_LIB([mozjs], [JS_GetFunctionName], AC_DEFINE([HAVE_JS_GETFUNCTIONNAME], - AC_CHECK_LIB([mozjs], [JS_GetStringChars], AC_DEFINE([HAVE_JS_GETSTRINGCHARS], [1], [Define if we still have JS_GetStringChars]),, [$JS_LIBS]) - AC_CHECK_LIB([mozjs], [JS_StrictPropertyStub], AC_DEFINE([HAVE_JS_STRICTPROPERTYSTUB], [1], [Define if we have JS_StrictPropertyStub]),, [$JS_LIBS]) - AC_CHECK_LIB([mozjs], [JS_GetGlobalForScopeChain], AC_DEFINE([HAVE_JS_GETGLOBALFORSCOPECHAIN], [1], [Define if we have JS_GetGlobalForScopeChain]),, [$JS_LIBS]) -+AC_CHECK_LIB([mozjs], [JS_DestroyScript], AC_DEFINE([HAVE_JS_DESTROYSCRIPT], [1], [Define if we still have JS_DestroyScript]),, [$JS_LIBS]) - - AC_MSG_CHECKING([for mozilla-js >= 2 ]) - if `$PKG_CONFIG --exists $JS_PACKAGE '>=' 2`; then -diff --git a/modules/console.c b/modules/console.c -index 49f891b..e6945be 100644 ---- a/modules/console.c -+++ b/modules/console.c -@@ -161,7 +161,11 @@ gjs_console_interact(JSContext *context, - { - JSObject *object = JS_THIS_OBJECT(context, vp); - gboolean eof = FALSE; -+#ifdef HAVE_JS_DESTROYSCRIPT - JSScript *script = NULL; -+#else -+ JSObject *script = NULL; -+#endif - jsval result; - JSString *str; - GString *buffer = NULL; -@@ -219,8 +223,10 @@ gjs_console_interact(JSContext *context, - } - - next: -+#ifdef HAVE_JS_DESTROYSCRIPT - if (script) - JS_DestroyScript(context, script); -+#endif - g_string_free(buffer, TRUE); - } while (!eof); - --- -1.7.5.4 - - -From 3c8396821c78e362c8b3a89a27dcf4d32e25ee05 Mon Sep 17 00:00:00 2001 -From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com> -Date: Fri, 29 Apr 2011 01:01:03 +0200 -Subject: [PATCH 2/4] conditonally adapt to JS_BufferIsCompilableUnit changes - -Upstream added an argument to JS_BufferIsCompilableUnit in commit -http://hg.mozilla.org/mozilla-central/rev/a773890b676f -We now have to tell if the bytes are utf8 or not. - -https://bugzilla.gnome.org/show_bug.cgi?id=646471 ---- - configure.ac | 1 + - modules/console.c | 4 ++++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/configure.ac b/configure.ac -index f81704b..270bc46 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -161,6 +161,7 @@ AC_CHECK_LIB([mozjs], [JS_GetStringChars], AC_DEFINE([HAVE_JS_GETSTRINGCHARS], [ - AC_CHECK_LIB([mozjs], [JS_StrictPropertyStub], AC_DEFINE([HAVE_JS_STRICTPROPERTYSTUB], [1], [Define if we have JS_StrictPropertyStub]),, [$JS_LIBS]) - AC_CHECK_LIB([mozjs], [JS_GetGlobalForScopeChain], AC_DEFINE([HAVE_JS_GETGLOBALFORSCOPECHAIN], [1], [Define if we have JS_GetGlobalForScopeChain]),, [$JS_LIBS]) - AC_CHECK_LIB([mozjs], [JS_DestroyScript], AC_DEFINE([HAVE_JS_DESTROYSCRIPT], [1], [Define if we still have JS_DestroyScript]),, [$JS_LIBS]) -+AC_CHECK_LIB([mozjs], [JS_DecodeUTF8], AC_DEFINE([HAVE_JS_DECODEUTF8], [1], [Define if we have JS_DecodeUTF8]),, [$JS_LIBS]) - - AC_MSG_CHECKING([for mozilla-js >= 2 ]) - if `$PKG_CONFIG --exists $JS_PACKAGE '>=' 2`; then -diff --git a/modules/console.c b/modules/console.c -index e6945be..8e20db3 100644 ---- a/modules/console.c -+++ b/modules/console.c -@@ -196,7 +196,11 @@ gjs_console_interact(JSContext *context, - g_string_append(buffer, temp_buf); - g_free(temp_buf); - lineno++; -+#ifdef HAVE_JS_DECODEUTF8 -+ } while (!JS_BufferIsCompilableUnit(context, JS_TRUE, object, buffer->str, buffer->len)); -+#else - } while (!JS_BufferIsCompilableUnit(context, object, buffer->str, buffer->len)); -+#endif - - script = JS_CompileScript(context, object, buffer->str, buffer->len, "typein", - startline); --- -1.7.5.4 - - -From 00dd38de7ac8e82ac35c40909707fa91665c3102 Mon Sep 17 00:00:00 2001 -From: Colin Walters <walters@verbum.org> -Date: Thu, 5 May 2011 12:49:09 -0400 -Subject: [PATCH 3/4] JS_CLASS_TRACE is a preprocessor macro, can't use - AC_CHECK_LIB - -Conflicts: - - configure.ac ---- - configure.ac | 24 ++++++++++++++++++++++++ - 1 files changed, 24 insertions(+), 0 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 270bc46..d259471 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -230,6 +230,30 @@ if test "$have_jslocale_to_unicode_const" = yes; then - AC_DEFINE([JS_LOCALETOUNICODE_NEEDS_CONST_CHAR], [1], [Define if JSLocaleToUnicode takes a const char* for its src]) - fi - -+save_CFLAGS="$CFLAGS" -+CFLAGS="$CFLAGS $JS_CFLAGS" -+AC_MSG_CHECKING([for JS_CLASS_TRACE macro]) -+AC_COMPILE_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+ #include <jsapi.h> -+ #ifndef JS_CLASS_TRACE -+ #error "No JS_CLASS_TRACE" -+ #endif -+ ]], -+ [[(void) 0;]] -+ )], -+ [have_js_class_trace=yes], -+ [have_js_class_trace=no]) -+ -+if test "x$have_js_class_trace" = xyes; then -+ AC_MSG_RESULT([yes]) -+ AC_DEFINE([HAVE_JS_CLASS_TRACE], [1], [Define if we still have JS_CLASS_TRACE]) -+else -+ AC_MSG_RESULT([no]) -+fi -+CFLAGS="$save_CFLAGS" -+ - common_packages="gobject-2.0 >= gobject_required_version $JS_PACKAGE" - gjs_packages="gmodule-2.0 gthread-2.0 $common_packages" - gjs_gi_packages="gobject-introspection-1.0 >= 0.10.1 $common_packages" --- -1.7.5.4 - - -From 5553cdd691ffddae3e3ffa5cc75e6575a237d0b7 Mon Sep 17 00:00:00 2001 -From: Colin Walters <walters@verbum.org> -Date: Wed, 4 May 2011 14:14:18 -0400 -Subject: [PATCH 4/4] Support compilation with standalone mozjs185 release - -Adjust the detection logic so that we look for mozjs-185.pc first. If -we have this, we can skip all kinds of insanity. - -See https://bugzilla.mozilla.org/show_bug.cgi?id=628723 -for the discussion about creating this release. - -https://bugzilla.gnome.org/show_bug.cgi?id=646369 - -Conflicts: - - configure.ac ---- - configure.ac | 218 ++++++++++++++++++++++++++++++++-------------------------- - 1 files changed, 121 insertions(+), 97 deletions(-) - -diff --git a/configure.ac b/configure.ac -index d259471..cb54ffc 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -91,124 +91,148 @@ m4_define(gobject_required_version, 2.18.0) - AC_CHECK_HEADERS([malloc.h]) - AC_CHECK_FUNCS(mallinfo) - --# Look for Spidermonkey. If js-config exists, use that; --# otherwise we try some pkgconfig files from various distributions. -+# First, try separate mozjs185 release -+AC_MSG_CHECKING([for standalone mozjs]) -+PKG_CHECK_EXISTS([mozjs185], JS_PACKAGE=mozjs185,) -+if test x$JS_PACKAGE != x; then -+ FIREFOX_JS_LIBDIR=`$PKG_CONFIG --variable=libdir $JS_PACKAGE` -+ MOZJS_IS_STANDALONE=yes -+ MOZJS_LIB=mozjs185 -+ AC_MSG_RESULT([yes]) -+ PKG_CHECK_MODULES(JS, $JS_PACKAGE) -+else -+ AC_MSG_RESULT([no]) -+ MOZJS_LIB=mozjs -+fi -+ -+# If we didn't find mozjs185 (the standalone spidermonkey); look for -+# one from Firefox/XULRunner. If js-config exists, use that; otherwise -+# we try some pkgconfig files from various distributions. - - AC_ARG_VAR([JS_CONFIG], [The js-config program to use]) --if test "$ac_cv_env_JS_CONFIG_set" != "set"; then -+if test x$JS_PACKAGE = x && test "$ac_cv_env_JS_CONFIG_set" != "set"; then - AC_PATH_PROG([JS_CONFIG], [js-config], []) - fi - --if test -n "$JS_CONFIG"; then -- JS_CFLAGS="$($JS_CONFIG --cflags)" -- JS_LIBS="$($JS_CONFIG --libs)" -- FIREFOX_JS_LIBDIR="$($JS_CONFIG --libdir)" -- JS_PACKAGE= -- -- # js-config gives almost usable CFLAGS, we must define one of XP_BEOS, -- # XP_OS2, XP_WIN or XP_UNIX -- JS_CFLAGS="$JS_CFLAGS -DXP_UNIX" --else -- ## spidermonkey .pc file name varies across distributions and Gecko version -- ## -- ## mozilla-js: Gecko 1.9, all distributions -- ## xulrunner-js: Gecko 1.8 (and earlier?) Debian/Ubuntu -- ## firefox-js: ??? -- ## -- ## Checking for mozilla-js first will hopefully get us the newest version -- ## of spidermonkey. -- PKG_CHECK_EXISTS([mozilla-js], [JS_PACKAGE=mozilla-js], -- [PKG_CHECK_EXISTS([xulrunner-js], [JS_PACKAGE=xulrunner-js], [JS_PACKAGE=firefox-js])]) -- -- PKG_CHECK_MODULES(JS, $JS_PACKAGE) -- -- ## some flavors of Firefox .pc only set sdkdir, not libdir -- FIREFOX_JS_SDKDIR=`$PKG_CONFIG --variable=sdkdir $JS_PACKAGE` -- FIREFOX_JS_LIBDIR=`$PKG_CONFIG --variable=libdir $JS_PACKAGE` -+if test x$JS_PACKAGE = x; then -+ if test -n "$JS_CONFIG"; then -+ JS_CFLAGS="$($JS_CONFIG --cflags)" -+ JS_LIBS="$($JS_CONFIG --libs)" -+ FIREFOX_JS_LIBDIR="$($JS_CONFIG --libdir)" -+ JS_PACKAGE= -+ -+ # js-config gives almost usable CFLAGS, we must define one of XP_BEOS, -+ # XP_OS2, XP_WIN or XP_UNIX -+ JS_CFLAGS="$JS_CFLAGS -DXP_UNIX" -+ else -+ ## spidermonkey .pc file name varies across distributions and Gecko version -+ ## -+ ## mozilla-js: Gecko 1.9, all distributions -+ ## xulrunner-js: Gecko 1.8 (and earlier?) Debian/Ubuntu -+ ## firefox-js: ??? -+ ## -+ ## Checking for mozilla-js first will hopefully get us the newest version -+ ## of spidermonkey. -+ if test x$JS_PACKAGE = x; then -+ PKG_CHECK_EXISTS([mozilla-js], [JS_PACKAGE=mozilla-js],) -+ -+ fi -+ if test x$JS_PACKAGE = x; then -+ PKG_CHECK_EXISTS([xulrunner-js], [JS_PACKAGE=xulrunner-js]) -+ fi -+ if test x$JS_PACKAGE = x; then -+ PKG_CHECK_EXISTS([firefox-js], [JS_PACKAGE=firefox-js]) -+ fi -+ if test x$JS_PACKAGE = x; then -+ AC_MSG_ERROR([Unable to find spidermonkey package]) -+ fi -+ -+ PKG_CHECK_MODULES(JS, $JS_PACKAGE) -+ -+ ## some flavors of Firefox .pc only set sdkdir, not libdir -+ FIREFOX_JS_SDKDIR=`$PKG_CONFIG --variable=sdkdir $JS_PACKAGE` -+ FIREFOX_JS_LIBDIR=`$PKG_CONFIG --variable=libdir $JS_PACKAGE` -+ -+ ## Ubuntu does not set libdir in mozilla-js.pc -+ if test x"$FIREFOX_JS_LIBDIR" = x ; then -+ ## Ubuntu returns xulrunner-devel as the sdkdir, but for the -+ ## libdir we want the runtime location on the target system, -+ ## so can't use -devel. -+ ## The library is in the non-devel directory also. -+ ## Don't ask me why it's in two places. -+ FIREFOX_JS_LIBDIR=`echo "$FIREFOX_JS_SDKDIR" | sed -e 's/-devel//g'` -+ -+ if ! test -d "$FIREFOX_JS_LIBDIR" ; then -+ FIREFOX_JS_LIBDIR= -+ fi -+ fi -+ fi - -- ## Ubuntu does not set libdir in mozilla-js.pc - if test x"$FIREFOX_JS_LIBDIR" = x ; then -- ## Ubuntu returns xulrunner-devel as the sdkdir, but for the -- ## libdir we want the runtime location on the target system, -- ## so can't use -devel. -- ## The library is in the non-devel directory also. -- ## Don't ask me why it's in two places. -- FIREFOX_JS_LIBDIR=`echo "$FIREFOX_JS_SDKDIR" | sed -e 's/-devel//g'` -- -- if ! test -d "$FIREFOX_JS_LIBDIR" ; then -- FIREFOX_JS_LIBDIR= -- fi -+ AC_MSG_ERROR([Could not figure out where Firefox JavaScript library lives]) - fi --fi - --if test x"$FIREFOX_JS_LIBDIR" = x ; then -- AC_MSG_ERROR([Could not figure out where Firefox JavaScript library lives]) -+ ## workaround for Ubuntu Hardy bug where mozilla-js.pc gives CFLAGS -+ ## -I.../stable while jsapi.h is in .../unstable -+ AC_MSG_CHECKING([if SpiderMonkey needs extra compiler flags]) -+ save_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS $JS_CFLAGS" -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <jsapi.h>]])], -+ [js_extra_cflags_needed=no], -+ [js_extra_cflags_needed=yes]) -+ CFLAGS="$save_CFLAGS" -+ AC_MSG_RESULT([$js_extra_cflags_needed]) -+ -+ JS_EXTRA_CFLAGS= -+ if test "$js_extra_cflags_needed" = yes; then -+ try_cflags="-I`$PKG_CONFIG --variable=includedir $JS_PACKAGE`/unstable" -+ AC_MSG_CHECKING([if $try_cflags works]) -+ save_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS $JS_CFLAGS $try_cflags" -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <jsapi.h>]])], -+ [AC_MSG_RESULT([yes]) -+ JS_EXTRA_CFLAGS="$try_cflags"], -+ [AC_MSG_RESULT([no])]) -+ CFLAGS="$save_CFLAGS" -+ -+ if test x"$JS_EXTRA_CFLAGS" = x; then -+ AC_MSG_ERROR([Unable to determine extra compiler flags needed]) -+ fi -+ fi -+ AC_SUBST([JS_EXTRA_CFLAGS]) -+ -+ AC_MSG_CHECKING([for mozilla-js >= 1.9.2 ]) -+ if `$PKG_CONFIG --exists $JS_PACKAGE '>=' 1.9.2`; then -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_ERROR([$JS_PACKAGE >= 1.9.2 is required]) -+ fi - fi - - AC_SUBST(JS_PACKAGE) - AC_SUBST(FIREFOX_JS_LIBDIR) - --AC_MSG_CHECKING([for mozilla-js >= 1.9.2 ]) --if `$PKG_CONFIG --exists $JS_PACKAGE '>=' 1.9.2`; then -- AC_MSG_RESULT([yes]) --else -- AC_MSG_ERROR([$JS_PACKAGE >= 1.9.2 is required]) --fi -- --AC_CHECK_LIB([mozjs], [JS_GetStringBytes], AC_DEFINE([HAVE_JS_GETSTRINGBYTES], [1], [Define if we still have JS_GetStringBytes]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_GetFunctionName], AC_DEFINE([HAVE_JS_GETFUNCTIONNAME], [1], [Define if we still have JS_GetFunctionName]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_GetStringChars], AC_DEFINE([HAVE_JS_GETSTRINGCHARS], [1], [Define if we still have JS_GetStringChars]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_StrictPropertyStub], AC_DEFINE([HAVE_JS_STRICTPROPERTYSTUB], [1], [Define if we have JS_StrictPropertyStub]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_GetGlobalForScopeChain], AC_DEFINE([HAVE_JS_GETGLOBALFORSCOPECHAIN], [1], [Define if we have JS_GetGlobalForScopeChain]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_DestroyScript], AC_DEFINE([HAVE_JS_DESTROYSCRIPT], [1], [Define if we still have JS_DestroyScript]),, [$JS_LIBS]) --AC_CHECK_LIB([mozjs], [JS_DecodeUTF8], AC_DEFINE([HAVE_JS_DECODEUTF8], [1], [Define if we have JS_DecodeUTF8]),, [$JS_LIBS]) -- --AC_MSG_CHECKING([for mozilla-js >= 2 ]) --if `$PKG_CONFIG --exists $JS_PACKAGE '>=' 2`; then -- AC_MSG_RESULT([yes]) -- AC_DEFINE(HAVE_MOZJS_2, [1], [Define if mozilla-js is at least 2]) -- AC_CHECK_LIB([mozjs], [JS_FreezeObject], AC_DEFINE([HAVE_JS_FREEZEOBJECT], [1], [Define if we have JS_FreezeObject]), -+AC_CHECK_LIB([$MOZJS_LIB], [JS_GetStringBytes], AC_DEFINE([HAVE_JS_GETSTRINGBYTES], [1], [Define if we still have JS_GetStringBytes]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_GetFunctionName], AC_DEFINE([HAVE_JS_GETFUNCTIONNAME], [1], [Define if we still have JS_GetFunctionName]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_GetStringChars], AC_DEFINE([HAVE_JS_GETSTRINGCHARS], [1], [Define if we still have JS_GetStringChars]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_StrictPropertyStub], AC_DEFINE([HAVE_JS_STRICTPROPERTYSTUB], [1], [Define if we have JS_StrictPropertyStub]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_GetGlobalForScopeChain], AC_DEFINE([HAVE_JS_GETGLOBALFORSCOPECHAIN], [1], [Define if we have JS_GetGlobalForScopeChain]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_CLASS_TRACE], AC_DEFINE([HAVE_JS_CLASS_TRACE], [1], [Define if we still have JS_CLASS_TRACE]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_DestroyScript], AC_DEFINE([HAVE_JS_DESTROYSCRIPT], [1], [Define if we still have JS_DestroyScript]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_DecodeUTF8], AC_DEFINE([HAVE_JS_DECODEUTF8], [1], [Define if we have JS_DecodeUTF8]),, [$JS_LIBS]) -+AC_CHECK_LIB([$MOZJS_LIB], [JS_FreezeObject], AC_DEFINE([HAVE_JS_FREEZEOBJECT], [1], [Define if we have JS_FreezeObject]), - , [$JS_LIBS]) -- AC_CHECK_LIB([mozjs], [JS_IsScriptFrame], AC_DEFINE([HAVE_JS_ISSCRIPTFRAME], [1], [Define if we have JS_IsScriptFrame]), -+AC_CHECK_LIB([$MOZJS_LIB], [JS_IsScriptFrame], AC_DEFINE([HAVE_JS_ISSCRIPTFRAME], [1], [Define if we have JS_IsScriptFrame]), - , [$JS_LIBS]) -- AC_CHECK_LIB([mozjs], [JS_EndPC], AC_DEFINE([HAVE_JS_ENDPC], [1], [Define if we have JS_EndPC]), -+AC_CHECK_LIB([$MOZJS_LIB], [JS_EndPC], AC_DEFINE([HAVE_JS_ENDPC], [1], [Define if we have JS_EndPC]), - , [$JS_LIBS]) -- AC_CHECK_LIB([mozjs], [JS_NewCompartmentAndGlobalObject], -+AC_CHECK_LIB([$MOZJS_LIB], [JS_NewCompartmentAndGlobalObject], - AC_DEFINE([HAVE_JS_NEWCOMPARTMENTANDGLOBALOBJECT], [1], [Define if we have JS_NewCompartmentAndGlobalObject]), - , [$JS_LIBS]) - --else -- AC_MSG_RESULT([no]) --fi -- --## workaround for Ubuntu Hardy bug where mozilla-js.pc gives CFLAGS --## -I.../stable while jsapi.h is in .../unstable --AC_MSG_CHECKING([if SpiderMonkey needs extra compiler flags]) --save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS $JS_CFLAGS" --AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <jsapi.h>]])], -- [js_extra_cflags_needed=no], -- [js_extra_cflags_needed=yes]) --CFLAGS="$save_CFLAGS" --AC_MSG_RESULT([$js_extra_cflags_needed]) -- --JS_EXTRA_CFLAGS= --if test "$js_extra_cflags_needed" = yes; then -- try_cflags="-I`$PKG_CONFIG --variable=includedir $JS_PACKAGE`/unstable" -- AC_MSG_CHECKING([if $try_cflags works]) -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $JS_CFLAGS $try_cflags" -- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <jsapi.h>]])], -- [AC_MSG_RESULT([yes]) -- JS_EXTRA_CFLAGS="$try_cflags"], -- [AC_MSG_RESULT([no])]) -- CFLAGS="$save_CFLAGS" -- -- if test x"$JS_EXTRA_CFLAGS" = x; then -- AC_MSG_ERROR([Unable to determine extra compiler flags needed]) -- fi -+if test x$MOZJS_IS_STANDALONE = xyes || `$PKG_CONFIG --exists $JS_PACKAGE '>=' 2`; then -+ AC_DEFINE(HAVE_MOZJS_2, [1], [Define if mozilla-js is at least 2]) - fi --AC_SUBST([JS_EXTRA_CFLAGS]) - - AC_MSG_CHECKING([whether JSLocaleToUnicode takes a const char*]) - save_CFLAGS="$CFLAGS" --- -1.7.5.4 - diff --git a/testing/gnome-shell/PKGBUILD b/testing/gnome-shell/PKGBUILD deleted file mode 100644 index b10afff70..000000000 --- a/testing/gnome-shell/PKGBUILD +++ /dev/null @@ -1,50 +0,0 @@ -# $Id: PKGBUILD 130217 2011-07-04 12:56:15Z ibiru $ -# Maintainer: Ionut Biru <ibiru@archlinux.org> -# Contributor: Flamelab <panosfilip@gmail.com - -pkgname=gnome-shell -pkgver=3.0.2 -pkgrel=2 -pkgdesc="The next generation GNOME Shell" -arch=('i686' 'x86_64') -url="http://live.gnome.org/GnomeShell" -license=('GPL2') -depends=('mutter' 'gconf' 'dconf' 'gjs' 'gnome-menus' 'gnome-desktop' 'libcroco' 'libcanberra' 'libpulse' 'telepathy-glib' 'polkit-gnome' - 'gobject-introspection' 'evolution-data-server' 'gnome-bluetooth' 'gstreamer0.10' 'telepathy-logger') -makedepends=('intltool' 'gnome-doc-utils') -optdepends=('network-manager-applet: shell integration for networkmanager' - 'gnome-power-manager: shell integration for power management') -options=('!libtool' '!emptydirs') -install=gnome-shell.install -groups=(gnome) -source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2 - arch.patch - bluetoothstatus-always-update-devices.patch - shell-recorder-missing-XFree.patch) -sha256sums=('a44963877da895d9b9f1ea98617067c5e88a5c4b414c6ccf0fcbfacdeac7db95' - 'a35d5e5f9f781728070aecae3bfe329f49dadcd50ca2984e0fbdd2219825a0db' - 'f592752875085fceebdb27e65802e09c07edd7be57eec0da3edfcad5052be2ae' - '070edd5e720c063be41c158f39b7ef62a0d4a7f547ca0d23216104d5428ff971') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - - patch -Np1 -i "${srcdir}/arch.patch" - patch -Np1 -i "${srcdir}/bluetoothstatus-always-update-devices.patch" - patch -Np1 -i "${srcdir}/shell-recorder-missing-XFree.patch" - - ./configure --prefix=/usr --sysconfdir=/etc \ - --libexecdir=/usr/lib/gnome-shell \ - --localstatedir=/var --disable-static \ - --disable-schemas-compile - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install - - install -m755 -d "${pkgdir}/usr/share/gconf/schemas" - gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-shell ${pkgdir}/etc/gconf/schemas/*.schemas - rm -f ${pkgdir}/etc/gconf/schemas/*.schemas -} diff --git a/testing/gnome-shell/arch.patch b/testing/gnome-shell/arch.patch deleted file mode 100644 index 67baefdcb..000000000 --- a/testing/gnome-shell/arch.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur gnome-shell.orig/data/org.gnome.shell.gschema.xml.in gnome-shell/data/org.gnome.shell.gschema.xml.in ---- gnome-shell.orig/data/org.gnome.shell.gschema.xml.in 2011-04-06 08:47:58.638600793 -0700 -+++ gnome-shell/data/org.gnome.shell.gschema.xml.in 2011-04-06 08:49:17.035274675 -0700 -@@ -30,7 +30,7 @@ - </_description> - </key> - <key name="favorite-apps" type="as"> -- <default>[ 'mozilla-firefox.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'openoffice.org-writer.desktop', 'nautilus.desktop' ]</default> -+ <default>[ 'firefox.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'writer.desktop', 'nautilus.desktop' ]</default> - <_summary>List of desktop file IDs for favorite applications</_summary> - <_description> - The applications corresponding to these identifiers diff --git a/testing/gnome-shell/bluetoothstatus-always-update-devices.patch b/testing/gnome-shell/bluetoothstatus-always-update-devices.patch deleted file mode 100644 index 0272169f5..000000000 --- a/testing/gnome-shell/bluetoothstatus-always-update-devices.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 76fce94b66be7bdebbedcc3bce62898da51da15a Mon Sep 17 00:00:00 2001 -From: Giovanni Campagna <gcampagna@src.gnome.org> -Date: Wed, 13 Apr 2011 17:08:45 +0000 -Subject: BluetoothStatus: always update devices - -Previously, we skipped rebuilding device items in case the device -had already been seen, but this caused the connected switch not to -be updated. Now it has been refactored to update in case the device -changes, and to create only when the device is completely new. - -https://bugzilla.gnome.org/show_bug.cgi?id=647565 ---- -diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js -index 070016a..cee2f90 100644 ---- a/js/ui/status/bluetooth.js -+++ b/js/ui/status/bluetooth.js -@@ -127,13 +127,6 @@ Indicator.prototype = { - } - }, - -- _deviceCompare: function(d1, d2) { -- return d1.device_path == d2.device_path && -- d1.bdaddr == d2.bdaddr && -- d1.can_connect == d2.can_connect && -- d1.capabilities == d2.capabilities; -- }, -- - _updateDevices: function() { - let devices = this._applet.get_devices(); - -@@ -142,12 +135,8 @@ Indicator.prototype = { - let item = this._deviceItems[i]; - let destroy = true; - for (let j = 0; j < devices.length; j++) { -- // we need to deep compare because BluetoothSimpleDevice is a boxed type -- // (but we take advantage of that, because _skip will disappear the next -- // time get_devices() is called) -- if (this._deviceCompare(item._device, devices[j])) { -- item.label.text = devices[j].alias; -- devices[j]._skip = true; -+ if (item._device.device_path == devices[j].device_path) { -+ this._updateDeviceItem(item, devices[j]); - destroy = false; - break; - } -@@ -162,7 +151,7 @@ Indicator.prototype = { - this._hasDevices = newlist.length > 0; - for (let i = 0; i < devices.length; i++) { - let d = devices[i]; -- if (d._skip) -+ if (d._item) - continue; - let item = this._createDeviceItem(d); - if (item) { -@@ -177,17 +166,55 @@ Indicator.prototype = { - this._deviceSep.actor.hide(); - }, - -+ _updateDeviceItem: function(item, device) { -+ if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) { -+ item.destroy(); -+ return; -+ } -+ -+ let prevDevice = item._device; -+ let prevCapabilities = prevDevice.capabilities; -+ let prevCanConnect = prevDevice.can_connect; -+ -+ // adopt the new device object -+ item._device = device; -+ device._item = item; -+ -+ // update properties -+ item.label.text = device.alias; -+ -+ if (prevCapabilities != device.capabilities || -+ prevCanConnect != device.can_connect) { -+ // need to rebuild the submenu -+ item.menu.removeAll(); -+ this._buildDeviceSubMenu(item, device); -+ } -+ -+ // update connected property -+ if (device.can_connect) -+ item._connectedMenuitem.setToggleState(device.connected); -+ }, -+ - _createDeviceItem: function(device) { - if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) - return null; - let item = new PopupMenu.PopupSubMenuMenuItem(device.alias); -+ -+ // adopt the device object, and add a back link - item._device = device; -+ device._item = item; - -+ this._buildDeviceSubMenu(item, device); -+ -+ return item; -+ }, -+ -+ _buildDeviceSubMenu: function(item, device) { - if (device.can_connect) { - item._connected = device.connected; -- let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); -+ item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); - -- menuitem.connect('toggled', Lang.bind(this, function() { -+ item._connectedMenuitem.connect('toggled', Lang.bind(this, function() { - if (item._connected > ConnectionState.CONNECTED) { - // operation already in progress, revert - menuitem.setToggleState(menuitem.state); -@@ -217,7 +244,7 @@ Indicator.prototype = { - } - })); - -- item.menu.addMenuItem(menuitem); -+ item.menu.addMenuItem(item._connectedMenuitem); - } - - if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) { -@@ -263,8 +290,6 @@ Indicator.prototype = { - default: - break; - } -- -- return item; - }, - - _updateFullMenu: function() { --- -cgit v0.9 diff --git a/testing/gnome-shell/gnome-shell.install b/testing/gnome-shell/gnome-shell.install deleted file mode 100644 index a07105c24..000000000 --- a/testing/gnome-shell/gnome-shell.install +++ /dev/null @@ -1,22 +0,0 @@ -pkgname=gnome-shell - -post_install() { - glib-compile-schemas usr/share/glib-2.0/schemas - usr/sbin/gconfpkg --install ${pkgname} -} - -pre_upgrade() { - pre_remove $1 -} - -post_upgrade() { - post_install $1 -} - -pre_remove() { - usr/sbin/gconfpkg --uninstall ${pkgname} -} - -post_remove() { - glib-compile-schemas usr/share/glib-2.0/schemas -} diff --git a/testing/gnome-shell/shell-recorder-missing-XFree.patch b/testing/gnome-shell/shell-recorder-missing-XFree.patch deleted file mode 100644 index a7329166f..000000000 --- a/testing/gnome-shell/shell-recorder-missing-XFree.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 88df18345069c295e68d319606a11b7727b2bd4b Mon Sep 17 00:00:00 2001 -From: Maxim Ermilov <zaspire@rambler.ru> -Date: Tue, 24 May 2011 22:46:47 +0000 -Subject: shell-recorder: missing XFree - -https://bugzilla.gnome.org/show_bug.cgi?id=650934 ---- -diff --git a/src/shell-recorder.c b/src/shell-recorder.c -index 6555187..d297923 100644 ---- a/src/shell-recorder.c -+++ b/src/shell-recorder.c -@@ -412,6 +412,8 @@ recorder_fetch_cursor_image (ShellRecorder *recorder) - *(guint32 *)(data + i * stride + 4 * j) = cursor_image->pixels[i * cursor_image->width + j]; - - cairo_surface_mark_dirty (recorder->cursor_image); -+ -+ XFree (cursor_image); - } - - /* Overlay the cursor image on the frame. We draw the cursor image --- -cgit v0.9 diff --git a/testing/js/PKGBUILD b/testing/js/PKGBUILD deleted file mode 100644 index 97b384792..000000000 --- a/testing/js/PKGBUILD +++ /dev/null @@ -1,37 +0,0 @@ -# $Id: PKGBUILD 130213 2011-07-04 12:50:49Z ibiru $ -# Maintainer: Ionut Biru <ibiru@archlinux.org> -pkgname=js -pkgver=1.8.5 -pkgrel=1 -pkgdesc="JavaScript interpreter and libraries" -arch=(i686 x86_64) -url="https://developer.mozilla.org/En/SpiderMonkey/1.8.5" -license=('GPL2') -depends=('nspr' 'gcc-libs') -makedepends=('python2' 'zip') -replaces=('spidermonkey') -conflicts=('spidermonkey') -source=(http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz - js185-destdir.patch) -md5sums=('a4574365938222adca0a6bd33329cb32' - '364834a8391888642c53d78c3a949d94') -build() { - cd "$srcdir/$pkgname-$pkgver/js/src" - patch -Np0 -i $srcdir/js185-destdir.patch - ./configure --prefix=/usr --with-system-nspr \ - --enable-threadsafe - - make -} - -package() { - cd "$srcdir/$pkgname-$pkgver/js/src" - make DESTDIR="$pkgdir" install - - install -m 0755 shell/js ${pkgdir}/usr/bin - - #cleanup - rm -f "${pkgdir}/usr/lib/libmozjs185-1.0.a" -} - -# vim:set ts=2 sw=2 et: diff --git a/testing/js/js185-destdir.patch b/testing/js/js185-destdir.patch deleted file mode 100644 index 87b7b53b3..000000000 --- a/testing/js/js185-destdir.patch +++ /dev/null @@ -1,15 +0,0 @@ -#https://bugzilla.mozilla.org/show_bug.cgi?id=628723 - ---- Makefile.in.old 2011-04-10 04:21:19.918608008 -0700 -+++ Makefile.in 2011-04-10 04:21:58.088607992 -0700 -@@ -888,8 +888,8 @@ - ifeq (,$(HOST_BIN_SUFFIX)) - mv -f $(SHLIB_ANY_VER) $(SHLIB_EXACT_VER) - @[ ! -h $(SHLIB_ABI_VER) ] || rm -f $(SHLIB_ABI_VER) -- ln -s $(SHLIB_EXACT_VER) $(SHLIB_ABI_VER) -- ln -s $(SHLIB_ABI_VER) $(SHLIB_ANY_VER) -+ ln -s $(notdir $(SHLIB_EXACT_VER)) $(SHLIB_ABI_VER) -+ ln -s $(notdir $(SHLIB_ABI_VER)) $(SHLIB_ANY_VER) - endif - endif - ifneq (,$(IMPORT_LIBRARY)) diff --git a/testing/lvm2/Be-quiet-on-removing-cache-on-read-only-fs.diff b/testing/lvm2/Be-quiet-on-removing-cache-on-read-only-fs.diff deleted file mode 100644 index e75499e8e..000000000 --- a/testing/lvm2/Be-quiet-on-removing-cache-on-read-only-fs.diff +++ /dev/null @@ -1,17 +0,0 @@ -Do not issue an error message when unable to remove .cache on read-only fs. -=================================================================== -RCS file: /cvs/lvm2/LVM2/lib/filters/filter-persistent.c,v -retrieving revision 1.49 -retrieving revision 1.50 -diff -u -r1.49 -r1.50 ---- LVM2/lib/filters/filter-persistent.c 2011/04/22 12:05:33 1.49 -+++ LVM2/lib/filters/filter-persistent.c 2011/05/12 12:42:48 1.50 -@@ -108,7 +108,7 @@ - log_very_verbose("Obtaining device list from " - "udev. Removing obolete %s.", - pf->file); -- if (unlink(pf->file) < 0) -+ if (unlink(pf->file) < 0 && errno != EROFS) - log_sys_error("unlink", pf->file); - } - return 1; diff --git a/testing/mdadm/PKGBUILD b/testing/mdadm/PKGBUILD deleted file mode 100644 index 0f9d96fc8..000000000 --- a/testing/mdadm/PKGBUILD +++ /dev/null @@ -1,45 +0,0 @@ -# $Id: PKGBUILD 129978 2011-06-30 18:05:23Z thomas $ -# Maintainer: Tobias Powalowski <tpowa@archlinux.org> -# Contributor: Judd Vinet <jvinet@zeroflux.org> -pkgname=mdadm -pkgver=3.2.2 -pkgrel=2 -pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID" -arch=(i686 x86_64) -license=('GPL') -url="http://www.cse.unsw.edu.au/~neilb/source/mdadm/" -groups=('base') -conflicts=('mkinitcpio<0.7') -depends=('glibc') -backup=('etc/mdadm.conf') -source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2 - mdadm - mdadm.conf - mdadm_install - mdadm_hook - disable-werror.patch) -install=mdadm.install -replaces=('raidtools') -md5sums=('12ee2fbf3beddb60601fb7a4c4905651' - '6df172c8f77b280018cf87eb3d313f29' - '00cbed931db4f15b6ce49e3e7d433966' - '4bb000166fb13e82ceaa2422fdfaac7e' - '36f7cc564ed3267888d90208e0eb7adc' - '4ad87b74a4bc9a34621280abe0e0c3e4') - -build() { - cd $srcdir/$pkgname-$pkgver - patch -Np0 -i ../disable-werror.patch - make CXFLAGS="$CFLAGS" -} - -package() { - cd $srcdir/$pkgname-$pkgver - make INSTALL=/bin/install DESTDIR=$pkgdir install - install -D -m644 ../mdadm.conf $pkgdir/etc/mdadm.conf - install -D -m755 ../mdadm $pkgdir/etc/rc.d/mdadm - install -D -m644 ../mdadm_install $pkgdir/lib/initcpio/install/mdadm - install -D -m644 ../mdadm_hook $pkgdir/lib/initcpio/hooks/mdadm - # symlink for backward compatibility - ln -sf /lib/initcpio/hooks/mdadm $pkgdir/lib/initcpio/hooks/raid -} diff --git a/testing/mdadm/disable-werror.patch b/testing/mdadm/disable-werror.patch deleted file mode 100644 index 50a33f19d..000000000 --- a/testing/mdadm/disable-werror.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- Makefile.old 2011-06-17 09:38:03.269238332 +0200 -+++ Makefile 2011-06-17 09:38:14.122398837 +0200 -@@ -42,7 +42,7 @@ - - CC = $(CROSS_COMPILE)gcc - CXFLAGS = -ggdb --CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter -+CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter - ifdef WARN_UNUSED - CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O - endif diff --git a/testing/mdadm/mdadm b/testing/mdadm/mdadm deleted file mode 100755 index e196f3642..000000000 --- a/testing/mdadm/mdadm +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions - -PID=`pidof -o %PPID /sbin/mdadm` -case "$1" in - start) - stat_busy "Starting mdadm RAID Monitor" - if [ -z "$PID" ]; then - /sbin/mdadm --monitor --scan -i /var/run/mdadm.pid -f - fi - if [ ! -z "$PID" -o $? -gt 0 ]; then - stat_fail - else - add_daemon mdadm - stat_done - fi - ;; - stop) - stat_busy "Stopping mdadm RAID Monitor" - [ ! -z "$PID" ] && kill $PID &>/dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon mdadm - stat_done - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac diff --git a/testing/mdadm/mdadm.conf b/testing/mdadm/mdadm.conf deleted file mode 100644 index 57bd4c683..000000000 --- a/testing/mdadm/mdadm.conf +++ /dev/null @@ -1,67 +0,0 @@ -# mdadm configuration file -# -# mdadm will function properly without the use of a configuration file, -# but this file is useful for keeping track of arrays and member disks. -# In general, a mdadm.conf file is created, and updated, after arrays -# are created. This is the opposite behavior of /etc/raidtab which is -# created prior to array construction. -# -# -# the config file takes two types of lines: -# -# DEVICE lines specify a list of devices of where to look for -# potential member disks -# -# ARRAY lines specify information about how to identify arrays so -# so that they can be activated -# - - -# You can have more than one device line and use wild cards. The first -# example includes SCSI the first partition of SCSI disks /dev/sdb, -# /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second -# line looks for array slices on IDE disks. -# -#DEVICE /dev/sd[bcdjkl]1 -#DEVICE /dev/hda1 /dev/hdb1 -# -# The designation "partitions" will scan all partitions found in -# /proc/partitions -DEVICE partitions - - -# ARRAY lines specify an array to assemble and a method of identification. -# Arrays can currently be identified by using a UUID, superblock minor number, -# or a listing of devices. -# -# super-minor is usually the minor number of the metadevice -# UUID is the Universally Unique Identifier for the array -# Each can be obtained using -# -# mdadm -D <md> -# -# To capture the UUIDs for all your RAID arrays to this file, run these: -# to get a list of running arrays: -# # mdadm -D --scan >>/etc/mdadm.conf -# to get a list from superblocks: -# # mdadm -E --scan >>/etc/mdadm.conf -# -#ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 -#ARRAY /dev/md1 super-minor=1 -#ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1 -# -# ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor -# will then move a spare between arrays in a spare-group if one array has a -# failed drive but no spare -#ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 -#ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 -# - - -# When used in --follow (aka --monitor) mode, mdadm needs a -# mail address and/or a program. To start mdadm's monitor mode, add -# "mdadm" to your DAEMONS array in /etc/rc.conf -# -# If the lines are not found, mdadm will exit quietly -#MAILADDR root@mydomain.tld -#PROGRAM /usr/sbin/handle-mdadm-events diff --git a/testing/mdadm/mdadm.install b/testing/mdadm/mdadm.install deleted file mode 100644 index e8404c260..000000000 --- a/testing/mdadm/mdadm.install +++ /dev/null @@ -1,10 +0,0 @@ -# arg 1: the new package version -# arg 2: the old package version - -post_upgrade() { - if [ "$(vercmp $2 2.6.8-2)" -lt 0 -a "$(grep raid_partitions /etc/mkinitcpio.conf)" ]; then - echo "Attention mdadm update:" - echo "raid_partitions hook has been replaced by the more powerfull mdadm hook." - echo "Please update your /etc/mkinitcpio.conf accordingly." - fi -} diff --git a/testing/mdadm/mdadm_hook b/testing/mdadm/mdadm_hook deleted file mode 100755 index 1d217a5a8..000000000 --- a/testing/mdadm/mdadm_hook +++ /dev/null @@ -1,42 +0,0 @@ -# vim: set ft=sh: -run_hook () -{ - input="$(cat /proc/cmdline)" - mdconfig="/etc/mdadm.conf" - # for partitionable raid, we need to load md_mod first! - modprobe md_mod 2>/dev/null - # If md is specified on commandline, create config file from those parameters. - if [ "$(echo $input | grep "md=")" ]; then - #Create initial mdadm.conf - # scan all devices in /proc/partitions - echo DEVICE partitions > $mdconfig - for i in $input; do - case $i in - # raid - md=[0-9]*,/*) - device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=||g')" - array="$(echo $i | cut -d, -f2-)" - echo "ARRAY /dev/$device devices=$array" >> $mdconfig - ;; - # partitionable raid - md=d[0-9]*,/*) - device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=|_|g')" - array="$(echo $i | cut -d, -f2-)" - echo "ARRAY /dev/$device devices=$array" >> $mdconfig - ;; - # raid UUID - md=[0-9]*,[0-9,a-z]*) - device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=||g')" - array="$(echo $i | cut -d, -f2-)" - echo "ARRAY /dev/$device UUID=$array" >> $mdconfig - ;; - # partitionable raid UUID - md=d[0-9]*,[0-9,a-z]*) - device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=|_|g')" - array="$(echo $i | cut -d, -f2-)" - echo "ARRAY /dev/$device UUID=$array" >> $mdconfig - ;; - esac - done - fi -} diff --git a/testing/mdadm/mdadm_install b/testing/mdadm/mdadm_install deleted file mode 100644 index f351cb292..000000000 --- a/testing/mdadm/mdadm_install +++ /dev/null @@ -1,46 +0,0 @@ -# vim: set ft=sh: - -build() -{ - MODULES=" $(checked_modules "drivers/md/*" | grep -v "dm-") " - BINARIES="" - FILES="" - SCRIPT="mdadm" - # check if a custom mdadm.conf exists - if grep -q ^ARRAY /etc/mdadm.conf; then - echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays." - add_file "/etc/mdadm.conf" - fi - add_binary "/sbin/mdadm" - add_file "/lib/udev/rules.d/64-md-raid.rules" -} - -help () -{ -cat<<HELPEOF - This hook loads the necessary modules for any raid root device, - and assembles the raid device when run. - - If arrays are defined in /etc/mdadm.conf, the file will be used instead - of command line assembling. - - Command Line Setup: - - for raid arrays with persistent superblocks: - md=<md device no.>,dev0,dev1,...,devn - md=<md device no.>,uuid - - for partitionable raid arrays with persistent superblocks: - md=d<md device no.>,dev0,dev1,...,devn - md=d<md device no.>,uuid - - Parameters: - - <md device no.> = the number of the md device: - 0 means md0, 1 means md1, ... - - <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1 - or 0900878d:f95f6057:c39a36e9:55efa60a - Examples: - - md=d0,/dev/sda3,/dev/sda4 md=d1,/dev/hda1,/dev/hdb1 - This will setup 2 md partitionable arrays. - - md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1 - This will setup 2 md arrays with persistent superblocks. -HELPEOF -} diff --git a/testing/pixman/PKGBUILD b/testing/pixman/PKGBUILD deleted file mode 100644 index f02a11779..000000000 --- a/testing/pixman/PKGBUILD +++ /dev/null @@ -1,33 +0,0 @@ -# $Id: PKGBUILD 130771 2011-07-07 22:43:35Z andyrtr $ -# Maintainer: Jan de Groot <jgc@archlinux.org> -# Contributor: Alexander Baldeck <alexander@archlinux.org> - -pkgname=pixman -pkgver=0.22.2 -pkgrel=1 -pkgdesc="Pixman library" -arch=(i686 x86_64) -url="http://xorg.freedesktop.org" -license=('custom') -depends=('glibc') -options=('!libtool') -source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) -sha1sums=('ad2b828ce4280472f5933d8bb5f0f4d583aed7f3') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr --disable-static - make -} - -check() { - cd "${srcdir}/${pkgname}-${pkgver}" - make check -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" - install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" -} diff --git a/testing/poppler/PKGBUILD b/testing/poppler/PKGBUILD deleted file mode 100644 index 758a6b582..000000000 --- a/testing/poppler/PKGBUILD +++ /dev/null @@ -1,67 +0,0 @@ -# $Id: PKGBUILD 130693 2011-07-07 17:38:24Z andyrtr $ -# Maintainer: Jan de Groot <jgc@archlinux.org> - -pkgbase=poppler -pkgname=('poppler' 'poppler-glib' 'poppler-qt') -pkgver=0.16.7 -pkgrel=1 -arch=(i686 x86_64) -license=('GPL') -makedepends=('libjpeg' 'gcc-libs' 'cairo' 'libxml2' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection') -options=('!libtool') -url="http://poppler.freedesktop.org/" -source=(http://poppler.freedesktop.org/${pkgbase}-${pkgver}.tar.gz) -md5sums=('3afa28e3c8c4f06b0fbca3c91e06394e') - -build() { - cd "${srcdir}/${pkgbase}-${pkgver}" - sed -i -e '/AC_PATH_XTRA/d' configure.ac - autoreconf - ./configure --prefix=/usr --sysconfdir=/etc \ - --localstatedir=/var --disable-static \ - --enable-cairo-output \ - --enable-xpdf-headers \ - --enable-libjpeg --enable-zlib \ - --enable-poppler-qt4 \ - --enable-poppler-glib - make -} - -package_poppler() { - pkgdesc="PDF rendering library based on xpdf 3.0" - depends=('libjpeg' 'gcc-libs' 'cairo' 'libxml2' 'fontconfig' 'openjpeg' 'lcms' 'poppler-data') - conflicts=("poppler-qt3<${pkgver}") - - cd "${srcdir}/${pkgbase}-${pkgver}" - sed -e 's/^glib_subdir =.*/glib_subdir =/' \ - -e 's/^qt4_subdir =.*/qt4_subdir =/' -i Makefile - make DESTDIR="${pkgdir}" install - - rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc -} - -package_poppler-glib() { - pkgdesc="Poppler glib bindings" - depends=("poppler=${pkgver}" 'gtk2') - - cd "${srcdir}/${pkgbase}-${pkgver}/poppler" - make DESTDIR="${pkgdir}" install-libLTLIBRARIES - cd "${srcdir}/${pkgbase}-${pkgver}/glib" - make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/usr/lib/pkgconfig" - install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/" - rm -f "${pkgdir}"/usr/lib/libpoppler.* -} - -package_poppler-qt() { - pkgdesc="Poppler Qt bindings" - depends=("poppler=${pkgver}" 'qt') - - cd "${srcdir}/${pkgbase}-${pkgver}/poppler" - make DESTDIR="${pkgdir}" install-libLTLIBRARIES - cd "${srcdir}/${pkgbase}-${pkgver}/qt4" - make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/usr/lib/pkgconfig" - install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/" - rm -f "${pkgdir}"/usr/lib/libpoppler.* -} diff --git a/testing/v86d/PKGBUILD b/testing/v86d/PKGBUILD deleted file mode 100644 index 5e3bb7af1..000000000 --- a/testing/v86d/PKGBUILD +++ /dev/null @@ -1,38 +0,0 @@ -# $Id: PKGBUILD 129979 2011-06-30 18:07:08Z thomas $ -# Maintainer: Thomas Baechler <thomas@archlinux.org> - -pkgname=v86d -pkgver=0.1.10 -pkgrel=2 -pkgdesc="userspace helper for uvesafb that runs x86 code in an emulated environment" -arch=('i686' 'x86_64') -url="http://dev.gentoo.org/~spock/projects/uvesafb/" -license=('GPL2') -depends=('glibc') -conflicts=('mkinitcpio<0.7') -backup=('etc/modprobe.d/uvesafb.conf') -options=('!makeflags') -source=(http://dev.gentoo.org/~spock/projects/uvesafb/archive/v86d-$pkgver.tar.bz2 - v86d - v86d_hook - modprobe.uvesafb) -md5sums=('51c792ba7b874ad8c43f0d3da4cfabe0' - '2748ca01397e5c4435f87692f7d042a8' - '813958b8f6c75a7063e4858f31509694' - '2d7cc8dc6a41916a13869212d0191147') - -build() { - cd "$srcdir/v86d-$pkgver" - ./configure --with-x86emu - # we only need /usr/include/video/uvesafb.h - make KDIR=/usr -} - -package() { - cd "$srcdir/v86d-$pkgver" - make DESTDIR="$pkgdir" install - - install -D -m644 "$srcdir/v86d" "$pkgdir/lib/initcpio/install/v86d" - install -D -m644 "$srcdir/v86d_hook" "$pkgdir/lib/initcpio/hooks/v86d" - install -D -m644 "$srcdir/modprobe.uvesafb" "$pkgdir/etc/modprobe.d/uvesafb.conf" -} diff --git a/testing/v86d/modprobe.uvesafb b/testing/v86d/modprobe.uvesafb deleted file mode 100644 index 5e46e1088..000000000 --- a/testing/v86d/modprobe.uvesafb +++ /dev/null @@ -1,10 +0,0 @@ -# -# This file sets the parameters for uvesafb module. -# The following format should be used: -# options uvesafb mode=<xres>x<yres>[-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw> ... -# -# For more details see: -# http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/uvesafb.txt -# - -options uvesafb mode_option=1024x768-32 scroll=ywrap diff --git a/testing/v86d/v86d b/testing/v86d/v86d deleted file mode 100644 index 2065b8e64..000000000 --- a/testing/v86d/v86d +++ /dev/null @@ -1,12 +0,0 @@ -build() { - add_binary "/sbin/v86d" - add_file "/etc/modprobe.d/uvesafb.conf" - MODULES="uvesafb" - SCRIPT="v86d" -} - -help() { - echo "This hook sets up v86d, the userspace helper for uvesafb." -} - -# vim: set ft=sh ts=4 sw=4 expandtab: diff --git a/testing/v86d/v86d_hook b/testing/v86d/v86d_hook deleted file mode 100644 index e5dff01c1..000000000 --- a/testing/v86d/v86d_hook +++ /dev/null @@ -1,4 +0,0 @@ -run_hook() -{ - /sbin/modprobe uvesafb -}
\ No newline at end of file |