patch contribution for DBMaker
| From: | Jeffrey Lin | Date: | Wed, 05 Jul 2000 16:07:52 +0000 |
| Subject: | patch contribution for DBMaker | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-23522@lists.php.net to get a copy of this message | ||
Hey, there:
We just added some patch to php CVS specifically for
our database driver - DBMaker. As you might have
known, DBMaker has been involved in the development
of PHP for some time now.
The modifications are made in four files, all in ext/odbc.
They are Makefile.in (1.6) , config.m4 (1.19) , php_odbc.h (1.23) and
php_odbc.c (1.58).
For config.m4, we did some modifications to the paths to
our database driver. For php_odbc.c, we did some modifications
to passing length arguments to SQLBindParameter and add
some function interfaces. For php_odbc.h we added two new
function definitions.
Would you please be kind enough to include this patch to the
future releases of PHP as soon as possible? We really need
this patch to be included so that our database users can use
future releases of PHP without having to ask for patches from
us.
Thanks a lot.
--chihfeng
************ BEGIN PATCH *****************************
diff -ur php-CVS/ext/odbc/Makefile.in php-CVS-new/ext/odbc/Makefile.in
--- php-CVS/ext/odbc/Makefile.in Wed Jul 5 11:32:01 2000
+++ php-CVS-new/ext/odbc/Makefile.in Wed Jul 5 11:34:05 2000
@@ -1,5 +1,7 @@
LTLIBRARY_NAME = libodbc.la
LTLIBRARY_SOURCES = php_odbc.c velocis.c
+LTLIBRARY_SHARED_NAME = odbc.la
+LTLIBRARY_SHARED_LIBADD = $(ODBC_LFLAGS) $(ODBC_LIBS)
include $(top_srcdir)/build/dynlib.mk
Only in php-CVS-new/ext/odbc: Makefile.in~
diff -ur php-CVS/ext/odbc/config.m4 php-CVS-new/ext/odbc/config.m4
--- php-CVS/ext/odbc/config.m4 Wed Jul 5 11:32:00 2000
+++ php-CVS-new/ext/odbc/config.m4 Wed Jul 5 11:33:23 2000
@@ -80,27 +80,6 @@
AC_MSG_RESULT(
echo $ODBC_LIBS | sed -e 's!.*/!!')
])
-dnl
-dnl Figure out the path where the newest DBMaker is installed.
-dnl
-AC_DEFUN(AC_FIND_DBMAKER_PATH,[
- AC_MSG_CHECKING([DBMaker version])
- if [ test -d "$1/4.0" ]; then
- DBMAKER_PATH=$1/4.0
- elif [ test -d "$1/3.6" ]; then
- DBMAKER_PATH=$1/3.6
- elif [ test -d "$1/3.5" ]; then
- DBMAKER_PATH=$1/3.5
- elif [ test -d "$1/3.01" ]; then
- DBMAKER_PATH=$1/3.01
- elif [ test -d "$1/3.0" ]; then
- DBMAKER_PATH=$1/3.0
- else
- DBMAKER_PATH=$1
- fi
- AC_MSG_RESULT(echo $DBMAKER_PATH | sed -e 's!.*/!!')
-])
-
if test -z "$ODBC_TYPE"; then
AC_MSG_CHECKING(for Adabas support)
AC_ARG_WITH(adabas,
@@ -396,12 +375,32 @@
version of DBMaker is installed (such as
/home/dbmaker/3.6).],
[
+ PHP_WITH_SHARED
if test "$withval" = "yes"; then
# find dbmaker's home directory
DBMAKER_HOME=grep "^dbmaker:" /etc/passwd | awk -F: '{print
$6}'
- AC_FIND_DBMAKER_PATH($DBMAKER_HOME)
+
+ # check DBMaker version (from 5.0 to 2.0)
+ DBMAKER_VERSION=5.0
+
+ while [ test ! -d $DBMAKER_HOME/$DBMAKER_VERSION -a \
+ "$DBMAKER_VERSION" != "2.9" ]; do
+ DM_VER=`echo $DBMAKER_VERSION | sed -e 's/\.//' | awk '{ print
$1-1;}'`
+ MAJOR_V=`echo $DM_VER | awk '{ print $1/10; }' \
+ | awk -F. '{ print $1; }'`
+ MINOR_V=echo $DM_VER | awk '{ print $1%10; }'
+ DBMAKER_VERSION=$MAJOR_V.$MINOR_V
+ done
+
+ if [ "$DBMAKER_VERSION" = "2.9" ]; then
+ withval=$DBMAKER_HOME
+ else
+ DBMAKER_PATH=$DBMAKER_HOME/$DBMAKER_VERSION
+ fi
+
withval=$DBMAKER_PATH
fi
+
if test "$withval" != "no"; then
ODBC_INCDIR=$withval/include
ODBC_LIBDIR=$withval/lib
@@ -410,7 +409,21 @@
ODBC_INCLUDE=-I$ODBC_INCDIR
ODBC_LIBS="-ldmapic -lc"
ODBC_TYPE=dbmaker
- AC_DEFINE(HAVE_DBMAKER,1,[ ])
+
+ AC_DEFINE(HAVE_DBMAKER,1,[Whether you want DBMaker])
+
+ if test "$shared" = "yes"; then
+ AC_MSG_RESULT(yes (shared))
+ ODBC_LFLAGS="-L$withval/driver/JDBC"
+ ODBC_LIBS="-ldmjdbc -lc -lm"
+ ODBC_SHARED="odbc.la"
+ else
+ AC_MSG_RESULT(yes (static))
+ AC_ADD_LIBRARY_WITH_PATH(dmapic, $ODBC_LIBDIR)
+ AC_ADD_INCLUDE($ODBC_INCDIR)
+ ODBC_STATIC="libphpext_odbc.la"
+ fi
+
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
@@ -422,7 +435,9 @@
if test -n "$ODBC_TYPE"; then
INCLUDES="$INCLUDES $ODBC_INCLUDE"
- EXTRA_LIBS="$EXTRA_LIBS $ODBC_LFLAGS $ODBC_LIBS"
+ if test "$ODBC_TYPE" != "dbmaker"; then
+ EXTRA_LIBS="$EXTRA_LIBS $ODBC_LFLAGS $ODBC_LIBS"
+ fi
AC_DEFINE(HAVE_UODBC,1,[ ])
PHP_SUBST(ODBC_INCDIR)
PHP_SUBST(ODBC_INCLUDE)
@@ -430,6 +445,6 @@
PHP_SUBST(ODBC_LIBS)
PHP_SUBST(ODBC_LFLAGS)
PHP_SUBST(ODBC_TYPE)
- PHP_EXTENSION(odbc)
+ PHP_EXTENSION(odbc, $shared)
fi
Only in php-CVS-new/ext/odbc: config.m4~
diff -ur php-CVS/ext/odbc/php_odbc.c php-CVS-new/ext/odbc/php_odbc.c
--- php-CVS/ext/odbc/php_odbc.c Wed Jul 5 11:32:01 2000
+++ php-CVS-new/ext/odbc/php_odbc.c Wed Jul 5 11:33:23 2000
@@ -74,6 +74,10 @@
PHP_FE(odbc_connect, NULL)
PHP_FE(odbc_pconnect, NULL)
PHP_FE(odbc_cursor, NULL)
+#ifdef HAVE_DBMAKER
+ PHP_FE(odbc_fetch_array, NULL)
+ PHP_FE(odbc_fetch_object, NULL)
+#endif
PHP_FE(odbc_exec, NULL)
PHP_FE(odbc_prepare, NULL)
PHP_FE(odbc_execute, NULL)
@@ -701,6 +705,10 @@
odbc_result *result = NULL;
odbc_connection *conn;
RETCODE rc;
+#ifdef HAVE_SQL_EXTENDED_FETCH
+ UDWORD scrollopts;
+#endif
+
if (zend_get_parameters_ex(2, &pv_conn, &pv_query) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -732,6 +740,28 @@
RETURN_FALSE;
}
+#ifdef HAVE_SQL_EXTENDED_FETCH
+ /* Solid doesn't have ExtendedFetch, if DriverManager is used, get Info,
+ whether Driver supports ExtendedFetch */
+ rc = SQLGetInfo(conn->hdbc, SQL_FETCH_DIRECTION, (void *) &scrollopts,
sizeof(scrollopts), NULL);
+ if (rc == SQL_SUCCESS) {
+ if ((result->fetch_abs = (scrollopts & SQL_FD_FETCH_ABSOLUTE))) {
+ /* Try to set CURSOR_TYPE to dynamic. Driver will replace this with
other
+ type if not possible.
+ */
+ if (SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, SQL_CURSOR_DYNAMIC)
+ == SQL_ERROR) {
+ odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "
SQLSetStmtOption");
+ SQLFreeStmt(result->stmt, SQL_DROP);
+ efree(result);
+ RETURN_FALSE;
+ }
+ }
+ } else {
+ result->fetch_abs = 0;
+ }
+#endif
+
if ((rc = SQLPrepare(result->stmt, query, SQL_NTS)) != SQL_SUCCESS) {
odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
SQLFreeStmt(result->stmt, SQL_DROP);
@@ -859,6 +889,9 @@
(void *)params[i-1].fp, 0,
¶ms[i-1].vallen);
} else {
+#ifdef HAVE_DBMAKER
+ precision = params[i-1].vallen;
+#endif
rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT,
ctype, sqltype, precision, scale,
(*tmp)->value.str.val, 0,
@@ -1086,6 +1119,161 @@
RETURN_RESOURCE(result->id);
}
/* }}} */
+
+#ifdef HAVE_DBMAKER
+#define ODBC_NUM 1
+#define ODBC_OBJECT 2
+
+static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int
result_type)
+{
+ int i;
+ odbc_result *result;
+ RETCODE rc;
+ SWORD sql_c_type;
+ char *buf = NULL;
+#ifdef HAVE_SQL_EXTENDED_FETCH
+ UDWORD crow;
+ UWORD RowStatus[1];
+ SDWORD rownum = -1;
+ pval **pv_res, **pv_row, *tmp;
+
+ switch(ZEND_NUM_ARGS()) {
+ case 1:
+ if (zend_get_parameters_ex(1, &pv_res) == FAILURE)
+ WRONG_PARAM_COUNT;
+ break;
+ case 2:
+ if (zend_get_parameters_ex(2, &pv_res, &pv_row) == FAILURE)
+ WRONG_PARAM_COUNT;
+ convert_to_long_ex(pv_row);
+ rownum = (*pv_row)->value.lval;
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ }
+
+#else
+ pval **pv_res, *tmp;
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pv_res) == FAILURE)
{
+ WRONG_PARAM_COUNT;
+ }
+#endif
+
+ ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result",
le_result);
+
+ if (result->numcols == 0) {
+ php_error(E_WARNING, "No tuples available at this result index");
+ RETURN_FALSE;
+ }
+
+ if (array_init(return_value)==FAILURE) {
+ RETURN_FALSE;
+ }
+
+#ifdef HAVE_SQL_EXTENDED_FETCH
+ if (result->fetch_abs) {
+ if (rownum > 0)
+ rc =
SQLExtendedFetch(result->stmt,SQL_FETCH_ABSOLUTE,rownum,&crow,RowStatus);
+ else
+ rc = SQLExtendedFetch(result->stmt,SQL_FETCH_NEXT,1,&crow,RowStatus);
+ } else
+#endif
+ rc = SQLFetch(result->stmt);
+
+ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO)
+ RETURN_FALSE;
+
+#ifdef HAVE_SQL_EXTENDED_FETCH
+ if (rownum > 0 && result->fetch_abs)
+ result->fetched = rownum;
+ else
+#endif
+ result->fetched++;
+
+ for(i = 0; i < result->numcols; i++) {
+ ALLOC_ZVAL(tmp);
+ tmp->refcount = 1;
+ tmp->type = IS_STRING;
+ tmp->value.str.len = 0;
+ sql_c_type = SQL_C_CHAR;
+
+ switch(result->values[i].coltype) {
+ case SQL_BINARY:
+ case SQL_VARBINARY:
+ case SQL_LONGVARBINARY:
+ if (result->binmode <= 0) {
+ tmp->value.str.val = empty_string;
+ break;
+ }
+ if (result->binmode == 1) sql_c_type = SQL_C_BINARY;
+ case SQL_LONGVARCHAR:
+ if (IS_SQL_LONG(result->values[i].coltype) &&
+ result->longreadlen <= 0) {
+ tmp->value.str.val = empty_string;
+ break;
+ }
+
+ if (buf == NULL) buf = emalloc(result->longreadlen + 1);
+ rc = SQLGetData(result->stmt, (UWORD)(i + 1),sql_c_type,
+ buf, result->longreadlen + 1, &result->values[i].vallen);
+
+ if (rc == SQL_ERROR) {
+ odbc_sql_error(result->conn_ptr->henv, result->conn_ptr->hdbc,
result->stmt, "SQLGetData");
+ efree(buf);
+ RETURN_FALSE;
+ }
+ if (rc == SQL_SUCCESS_WITH_INFO) {
+ tmp->value.str.len = result->longreadlen;
+ } else if (result->values[i].vallen == SQL_NULL_DATA) {
+ tmp->value.str.val = empty_string;
+ break;
+ } else {
+ tmp->value.str.len = result->values[i].vallen;
+ }
+ tmp->value.str.val = estrndup(buf, tmp->value.str.len);
+ break;
+
+ default:
+ if (result->values[i].vallen == SQL_NULL_DATA) {
+ tmp->value.str.val = empty_string;
+ break;
+ }
+ tmp->value.str.len = result->values[i].vallen;
+ tmp->value.str.val =
estrndup(result->values[i].value,tmp->value.str.len);
+ break;
+ }
+ if (result_type & ODBC_NUM) {
+ zend_hash_index_update(return_value->value.ht, i, &tmp, sizeof(pval *),
NULL);
+ } else {
+ zend_hash_update(return_value->value.ht, result->values[i].name,
strlen(result->values[i].name)+1, &tmp, sizeof(pval *), NULL);
+ }
+ }
+ if (buf) efree(buf);
+}
+
+
+/* {{{ proto object odbc_fetch_object(int result [, int rownumber])
+ Fetch a result row as an object */
+PHP_FUNCTION(odbc_fetch_object)
+{
+ php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, ODBC_OBJECT);
+ if (return_value->type==IS_ARRAY) {
+ return_value->type=IS_OBJECT;
+ return_value->value.obj.properties = return_value->value.ht;
+ return_value->value.obj.ce = &zend_standard_class_def;
+ }
+}
+/* }}} */
+
+/* {{{ proto array odbc_fetch_array(int result [, int rownumber])
+ Fetch a result row as an associative array */
+PHP_FUNCTION(odbc_fetch_array)
+{
+ php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, ODBC_OBJECT);
+}
+/* }}} */
+#endif
/* {{{ proto int odbc_fetch_into(int result_id [, int rownumber], array
result_array)
Fetch one result row into an array */
diff -ur php-CVS/ext/odbc/php_odbc.h php-CVS-new/ext/odbc/php_odbc.h
--- php-CVS/ext/odbc/php_odbc.h Wed Jul 5 11:32:01 2000
+++ php-CVS-new/ext/odbc/php_odbc.h Wed Jul 5 11:33:23 2000
@@ -34,7 +34,9 @@
#define PHP_ODBC_H
#if HAVE_UODBC
+#ifndef HAVE_DBMAKER
#define ODBCVER 0x0250
+#endif
/*#ifndef MSVC5
#define FAR
#endif
@@ -139,6 +141,8 @@
#elif defined(HAVE_DBMAKER) /* DBMaker */
#define ODBC_TYPE "DBMaker"
+#undef ODBCVER
+#define ODBCVER 0x0300
#define HAVE_SQL_EXTENDED_FETCH 1
#include <odbc.h>
@@ -189,6 +193,10 @@
PHP_FUNCTION(odbc_exec);
PHP_FUNCTION(odbc_do);
PHP_FUNCTION(odbc_execute);
+#ifdef HAVE_DBMAKER
+PHP_FUNCTION(odbc_fetch_array);
+PHP_FUNCTION(odbc_fetch_object);
+#endif
PHP_FUNCTION(odbc_fetch_into);
PHP_FUNCTION(odbc_fetch_row);
PHP_FUNCTION(odbc_field_len);
Only in php-CVS-new/ext/odbc: php_odbc.h~
*********************END PATCH ******************
begin 666 php-CVS-dbmaker.patch
M9&EF9B M=7(@<&AP+4-64R]E>'0O;V1B8R]-86ME9FEL92YI;B!P:' M0U93
M+6YE=R]E>'0O;V1B8R]-86ME9FEL92YI;@HM+2T@<&AP+4-64R]E>'0O;V1B
M8R]-86ME9FEL92YI;@E7960@2G5L(" U(#$Q.C,R.C Q(#(P,# **RLK('!H
M<"U#5E,M;F5W+V5X="]O9&)C+TUA:V5F:6QE+FEN"5=E9"!*=6P@(#4@,3$Z
M,S0Z,#4@,C P, I 0" M,2PU("LQ+#<@0$ *($Q43$E"4D%265].04U%(" @
M(#T@;&EB;V1B8RYL80H@3%1,24)205)97U-/55)#15,@/2!P:'!?;V1B8RYC
M('9E;&]C:7,N8PHK3%1,24)205)97U-(05)%1%].04U%(" @(" @/2!O9&)C
M+FQA"BM,5$Q)0E)!4EE?4TA!4D5$7TQ)0D%$1" @(" ]("0H3T1"0U],1DQ!
M1U,I("0H3T1"0U],24)3*0H@"B!I;F-L=61E("0H=&]P7W-R8V1I<BDO8G5I
M;&0O9'EN;&EB+FUK"B *3VYL>2!I;B!P:' M0U93+6YE=R]E>'0O;V1B8SH@
M36%K969I;&4N:6Y^"F1I9F8@+75R('!H<"U#5E,O97AT+V]D8F,O8V]N9FEG
M+FTT('!H<"U#5E,M;F5W+V5X="]O9&)C+V-O;F9I9RYM- HM+2T@<&AP+4-6
M4R]E>'0O;V1B8R]C;VYF:6<N;30)5V5D($IU;" @-2 Q,3HS,CHP," R,# P
M"BLK*R!P:' M0U93+6YE=R]E>'0O;V1B8R]C;VYF:6<N;30)5V5D($IU;" @
M-2 Q,3HS,SHR,R R,# P"D! ("TX,"PR-R K.# L-B! 0 H@("!!0U]-4T=?
M4D5354Q4*&!E8VAO("1/1$)#7TQ)0E,@?"!S960@+64@)W,A+BHO(2$G8"D*
M(%TI"B *+61N; HM9&YL($9I9W5R92!O=70@=&AE('!A=&@@=VAE<F4@=&AE
M(&YE=V5S="!$0DUA:V5R(&ES(&EN<W1A;&QE9"X*+61N; HM04-?1$5&54XH
M04-?1DE.1%]$0DU!2T527U!!5$@L6PHM("!!0U]-4T=?0TA%0TM)3D<H6T1"
M36%K97(@=F5R<VEO;ETI"BT@(&EF(%L@=&5S=" M9" B)#$O-"XP(B!=.R!T
M:&5N"BT@(" @1$)-04M%4E]0051(/20Q+S0N, HM("!E;&EF(%L@=&5S=" M
M9" B)#$O,RXV(B!=.R!T:&5N"BT@(" @1$)-04M%4E]0051(/20Q+S,N-@HM
M("!E;&EF(%L@=&5S=" M9" B)#$O,RXU(B!=.R!T:&5N"BT@(" @1$)-04M%
M4E]0051(/20Q+S,N-0HM("!E;&EF(%L@=&5S=" M9" B)#$O,RXP,2(@73L@
M=&AE;@HM(" @($1"34%+15)?4$%42#TD,2\S+C Q"BT@(&5L:68@6R!T97-T
M("UD("(D,2\S+C B(%T[('1H96X*+2 @("!$0DU!2T527U!!5$@])#$O,RXP
M"BT@(&5L<V4*+2 @("!$0DU!2T527U!!5$@])#$*+2 @9FD*+2 @04-?35-'
M7U)%4U5,5"A@96-H;R D1$)-04M%4E]0051(('P@<V5D("UE("=S(2XJ+R$A
M)V I"BU=*0HM"B!I9B!T97-T("UZ("(D3T1"0U]465!%(CL@=&AE;@H@04-?
M35-'7T-(14-+24Y'*&9O<B!!9&%B87,@<W5P<&]R="D*($%#7T%21U]7251(
M*&%D86)A<RP*0$ @+3,Y-BPQ,B K,S<U+#,R($! "B @(" @(" @(" @(" @
M(" @(" @(" @(" @('9E<G-I;VX@;V8@1$)-86ME<B!I<R!I;G-T86QL960@
M*'-U8V@@87,*(" @(" @(" @(" @(" @(" @(" @(" @("
@+VAO;64O9&)M
M86ME<B\S+C8I+ETL"B!;"BL@(%!(4%]7251(7U-(05)%1 H@("!I9B!T97-T
M("(D=VET:'9A;"(@/2 B>65S(CL@=&AE;@H@(" @(",@9FEN9"!D8FUA:V5R
M)W,@:&]M92!D:7)E8W1O<GD*(" @("!$0DU!2T527TA/344]8&=R97 @(EYD
M8FUA:V5R.B(@+V5T8R]P87-S=V0@?"!A=VL@+48Z("=[<')I;G0@)#9])V *
M+2 @("!!0U]&24Y$7T1"34%+15)?4$%42"@D1$)-04M%4E](3TU%*0HK"BL@
M(" @(R!C:&5C:R!$0DUA:V5R('9E<G-I;VX@*&9R;VT@-2XP('1O(#(N,"D*
M*R @("!$0DU!2T527U9%4E-)3TX]-2XP"BL**R @("!W:&EL92!;('1E<W0@
M(2 M9" D1$)-04M%4E](3TU%+R1$0DU!2T527U9%4E-)3TX@+6$@7 HK(" @
M(" @(" @(" @(" @(" B)$1"34%+15)?5D524TE/3B(@(3T@(C(N.2(@73L@
M9&\**R @(" @(" @1$U?5D52/6!E8VAO("1$0DU!2T527U9%4E-)3TX@?"!S
M960@+64@)W,O7"XO+R<@?"!A=VL@)WL@<')I;G0@)#$M,3M])V **R @(" @
M(" @34%*3U)?5CU@96-H;R D1$U?5D52('P@87=K("=[('!R:6YT("0Q+S$P
M.R!])R!<"BL@(" @(" @(" @(" @(" @('P@87=K("
M1BX@)WL@<')I;G0@
M)#$[('TG8 HK(" @(" @("!-24Y/4E]6/6!E8VAO("1$35]615(@?"!A=VL@
M)WL@<')I;G0@)#$E,3 [('TG8 HK(" @(" @("!$0DU!2T527U9%4E-)3TX]
M)$U!2D]27U8N)$U)3D]27U8**R @("!D;VYE"BL**R @("!I9B!;("(D1$)-
M04M%4E]615)324].(B ]("(R+CDB(%T[('1H96X**R @(" @(" @=VET:'9A
M;#TD1$)-04M%4E](3TU%"BL@(" @96QS90HK(" @(" @("!$0DU!2T527U!!
M5$@])$1"34%+15)?2$]-12\D1$)-04M%4E]615)324]."BL@(" @9FD**PH@
M(" @('=I=&AV86P])$1"34%+15)?4$%42 H@("!F:0HK"B
@(&EF('1E<W0@
M(B1W:71H=F%L(B A/2 B;F\B.R!T:&5N"B @(" @3T1"0U])3D-$25(])'=I
M=&AV86PO:6YC;'5D90H@(" @($]$0D-?3$E"1$E2/21W:71H=F%L+VQI8@I
M0" M-#$P+#<@*S0P.2PR,2! 0 H@(" @($]$0D-?24Y#3%5$13TM221/1$)#
M7TE.0T1)4@H@(" @($]$0D-?3$E"4STB+6QD;6%P:6,@+6QC(@H@(" @($]$
M0D-?5%E013UD8FUA:V5R"BT@(" @04-?1$5&24Y%*$A!5D5?1$)-04M%4BPQ
M+%L@72D**PHK(" @($%#7T1%1DE.12A(059%7T1"34%+15(L,2Q;5VAE=&AE
M<B!Y;W4@=V%N="!$0DUA:V5R72D**PHK(" @(&EF('1E<W0@(B1S:&%R960B
M(#T@(GEE<R([('1H96X**R @(" @(" @04-?35-'7U)%4U5,5"AY97,@*'-H
M87)E9"DI"BL@(" @(" @($]$0D-?3$9,04=3/2(M3"1W:71H=F%L+V1R:79E
M<B]*1$)#(@HK(" @(" @("!/1$)#7TQ)0E,](BUL9&UJ9&)C("UL8R M;&TB
M"BL@(" @(" @($]$0D-?4TA!4D5$/2)O9&)C+FQA(@HK(" @(&5L<V4**R @
M(" @(" @04-?35-'7U)%4U5,5"AY97,@*'-T871I8RDI"BL@(" @("
@($%#
M7T%$1%],24)205)97U=)5$A?4$%42"AD;6%P:6,L("1/1$)#7TQ)0D1)4BD*
M*R @(" @(" @04-?041$7TE.0TQ51$4H)$]$0D-?24Y#1$E2*0HK(" @(" @
M("!/1$)#7U-4051)0STB;&EB<&AP97AT7V]D8F,N;&$B"BL@(" @9FD**PH@
M(" @($%#7TU31U]215-53%0H>65S*0H@("!E;'-E"B @(" @04-?35-'7U)%
M4U5,5"AN;RD*0$ @+30R,BPW("LT,S4L.2! 0 H@"B!I9B!T97-T("UN("(D
M3T1"0U]465!%(CL@=&AE;@H@("!)3D-,541%4STB)$E.0TQ51$53("1/1$)#
M7TE.0TQ51$4B"BT@($585%)!7TQ)0E,](B1%6%1205],24)3("1/1$)#7TQ&
M3$%'4R D3T1"0U],24)3(@HK("!I9B!T97-T("(D3T1"0U]465!%(B A/2 B
M9&)M86ME<B([('1H96X**R @("!%6%1205],24)3/2(D15A44D%?3$E"4R D
M3T1"0U],1DQ!1U,@)$]$0D-?3$E"4R(**R @9FD*(" @04-?1$5&24Y%*$A!
M5D5?54]$0D,L,2Q;(%TI"B @(%!(4%]354)35"A/1$)#7TE.0T1)4BD*(" @
M4$A07U-50E-4*$]$0D-?24Y#3%5$12D*0$ @+30S,"PV("LT-#4L-B! 0 H@
M("!02%!?4U5"4U0H3T1"0U],24)3*0H@("!02%!?4U5"4U0H3T1"0U],1DQ!
M1U,I"B @(%!(4%]354)35"A/1$)#7U194$4I"BT@(%!(4%]%6%1%3E-)3TXH
M;V1B8RD**R @4$A07T585$5.4TE/3BAO9&)C+" D<VAA<F5D*0H@9FD*( I/
M;FQY(&EN('!H<"U#5E,M;F5W+V5X="]O9&)C.B!C;VYF:6<N;31^"F1I9F8@
M+75R('!H<"U#5E,O97AT+V]D8F,O<&AP7V]D8F,N8R!P:' M0U93+6YE=R]E
M>'0O;V1B8R]P:'!?;V1B8RYC"BTM+2!P:' M0U93+V5X="]O9&)C+W!H<%]O
M9&)C+F,)5V5D($IU;" @-2 Q,3HS,CHP,2 R,# P"BLK*R!P:' M0U93+6YE
M=R]E>'0O;V1B8R]P:'!?;V1B8RYC"5=E9"!*=6P@(#4@,3$Z,S,Z,C,@,C P
M, I 0" M-S0L-B K-S0L,3 @0$ *( E02%!?1D4H;V1B8U]C;VYN96-T+"!.
M54Q,*0H@"5!(4%]&12AO9&)C7W!C;VYN96-T+"!.54Q,*0H@"5!(4%]&12AO
M9&)C7V-U<G-O<BP@3E5,3"D**R-I9F1E9B!(059%7T1"34%+15(**R @(%!(
M4%]&12AO9&)C7V9E=&-H7V%R<F%Y+"!.54Q,*0HK(" @4$A07T9%*&]D8F-?
M9F5T8VA?;V)J96-T+"!.54Q,*0HK(V5N9&EF"B )4$A07T9%*&]D8F-?97AE
M8RP@3E5,3"D*( E02%!?1D4H;V1B8U]P<F5P87)E+"!.54Q,*0H@"5!(4%]&
M12AO9&)C7V5X96-U=&4L($Y53$PI"D! ("TW,#$L-B K-S U+#$P($! "B )
M;V1B8U]R97-U;'0@*G)E<W5L=" ]($Y53$P["B );V1B8U]C;VYN96-T:6]N
M("IC;VYN.PH@"5)%5$-/1$4@<F,["BLC:69D968@2$%615]344Q?15A414Y$
M141?1D540T@**PE51%=/4D0@(" @("!S8W)O;&QO<'1S.PHK(V5N9&EF"BL*
M( H@"6EF("AZ96YD7V=E=%]P87)A;65T97)S7V5X*#(L("9P=E]C;VYN+" F
M<'9?<75E<GDI(#T]($9!24Q54D4I('L*( D)5U)/3D=?4$%204U?0T]53E0[
M"D! ("TW,S(L-B K-S0P+#(X($! "B )"5)%5%523E]&04Q313L*( E]"B *
M*R-I9F1E9B!(059%7U-13%]%6%1%3D1%1%]&151#2 HK"2\J(%-O;&ED(&1O
M97-N)W0@:&%V92!%>'1E;F1E9$9E=&-H+"!I9B!$<FEV97)-86YA9V5R(&ES
M('5S960L(&=E="!);F9O+ HK"2
@('=H971H97(@1')I=F5R('-U<'!O<G1S
M($5X=&5N9&5D1F5T8V@@*B\**PER8R ](%-13$=E=$EN9F\H8V]N;BT^:&1B
M8RP@4U%,7T9%5$-(7T1)4D5#5$E/3BP@*'9O:60@*BD@)G-C<F]L;&]P=',L
M('-I>F5O9BAS8W)O;&QO<'1S*2P@3E5,3"D["BL):68@*')C(#T](%-13%]3
M54-#15-3*2!["BL)"6EF("@H<F5S=6QT+3YF971C:%]A8G,@/2 H<V-R;VQL
M;W!T<R F(%-13%]&1%]&151#2%]!0E-/3%5412DI*2!["BL)"0DO*B!4<GD@
M=&\@<V5T($-54E-/4E]465!%('1O(&1Y;F%M:6,N($1R:79E<B!W:6QL(')E
M<&QA8V4@=&AI<R!W:71H(&]T:&5R"BL)"0D@("!T>7!E(&EF(&YO="!P;W-S
M:6)L92X**PD)"2 J+PHK"0D):68@*%-13%-E=%-T;71/<'1I;VXH<F5S=6QT
M+3YS=&UT+"!344Q?0U524T]27U194$4L(%-13%]#55)33U)?1%E.04U)0RD*
M*PD)"0D]/2!344Q?15)23U(I('L**PD)"0EO9&)C7W-Q;%]E<G)O<BAC;VYN
M+3YH96YV+"!C;VYN+3YH9&)C+"!R97-U;'0M/G-T;70L("(@4U%,4V5T4W1M
M=$]P=&EO;B(I.PHK"0D)"5-13$9R9653=&UT*')E<W5L="T^<W1M="P@4U%,
M7T123U I.PHK"0D)"65F<F5E*')E<W5L="D["BL)"0D)4D5455).7T9!3%-%
M.PHK"0D)?0HK"0E]"BL)?2!E;'-E('L**PD)<F5S=6QT+3YF971C:%]A8G,@
M/2 P.PHK"7T**R-E;F1I9@HK"B ):68@*"AR8R ](%-13%!R97!A<F4H<F5S
M=6QT+3YS=&UT+"!Q=65R>2P@4U%,7TY44RDI("$](%-13%]354-#15-3*2![
M"B )"6]D8F-?<W%L7V5R<F]R*&-O;FXM/FAE;G8L(&-O;FXM/FAD8F,L(')E
M<W5L="T^<W1M="P@(E-13%!R97!A<F4B*3L*( D)4U%,1G)E95-T;70H<F5S
M=6QT+3YS=&UT+"!344Q?1%)/4"D["D! ("TX-3DL-B K.#@Y+#D@0$ *( D)
M"0D)"0D)"2 @*'9O:60@*BEP87)A;7-;:2TQ72YF<"P@,"P*(
D)"0D)"0D)
M"2 @)G!A<F%M<UMI+3%=+G9A;&QE;BD["B )"0E](&5L<V4@>PHK(VEF9&5F
M($A!5D5?1$)-04M%4@HK(" @(" @(" @(" @(" @('!R96-I<VEO;B ]('!A
M<F%M<UMI+3%=+G9A;&QE;CL**R-E;F1I9@H@"0D)"7)C(#T@4U%,0FEN9%!A
M<F%M971E<BAR97-U;'0M/G-T;70L("A55T]21"EI+"!344Q?4$%204U?24Y0
M550L"B
)"0D)"0D)"0D@(&-T>7!E+"!S<6QT>7!E+"!P<F5C:7-I;VXL('-C
M86QE+ H@"0D)"0D)"0D)(" H*G1M<"DM/G9A;'5E+G-T<BYV86PL(#
L"D!
M("TQ,#@V+#8@*S$Q,3DL,38Q($! "B )4D5455).7U)%4T]54D-%*')E<W5L
M="T^:60I.PH@?0H@+RH@?7U]("HO"BL**R-I9F1E9B!(059%7T1"34%+15(*
M*R-D969I;F4@3T1"0U].54T)"3$**R-D969I;F4@3T1"0U]/0DI%0U0)"3(*
M*PHK<W1A=&EC('9O:60@<&AP7V]D8F-?9F5T8VA?:&%S:"A)3E1%4DY!3%]&
M54Y#5$E/3E]005)!345415)3+"!I;G0@<F5S=6QT7W1Y<&4I"BM["BL):6YT
M(&D["BL);V1B8U]R97-U;'0@*G)E<W5L=#L**PE2151#3T1%(')C.PHK(" @
M(%-73U)$('-Q;%]C7W1Y<&4["BL)8VAA<B J8G5F(#T@3E5,3#L**R-I9F1E
M9B!(059%7U-13%]%6%1%3D1%1%]&151#2 HK"55$5T]21"!C<F]W.PHK"557
M3U)$("!2;W=3=&%T=7-;,5T["BL)4T173U)$(')O=VYU;2 ]("TQ.PHK"7!V
M86P@*BIP=E]R97,L("HJ<'9?<F]W+"
J=&UP.PHK"0HK"7-W:71C:"A:14Y$
M7TY535]!4D=3*"DI('L**PD)8V%S92 Q.@HK"0D):68@*'IE;F1?9V5T7W!A
M<F%M971E<G-?97@H,2P@)G!V7W)E<RD@/3T@1D%)3%5212D**PD)"0E74D].
M1U]005)!35]#3U5.5#L**PD)"6)R96%K.PHK"0EC87-E(#(Z"BL)"0EI9B H
M>F5N9%]G971?<&%R86UE=&5R<U]E>"@R+" F<'9?<F5S+"
M>F<'9?<F]W*2 ]
M/2!&04E,55)%*0HK"0D)"5=23TY'7U!!4D%-7T-/54Y4.PHK"0D)8V]N=F5R
M=%]T;U]L;VYG7V5X*'!V7W)O=RD["BL)"0ER;W=N=6T@/2 H*G!V7W)O=RDM
M/G9A;'5E+FQV86P["BL)"0EB<F5A:SL**PD)9&5F875L=#H**PD)"5=23TY'
M7U!!4D%-7T-/54Y4.PHK"7T**PHK(V5L<V4**PEP=F%L("HJ<'9?<F5S+" J
M=&UP.PHK"BL):68@*%I%3D1?3E5-7T%21U,H*2 A/2 Q('Q\('IE;F1?9V5T
M7W!A<F%M971E<G-?97@H,2P@)G!V7W)E<RD@/3T@1D%)3%5212D@>PHK"0E7
M4D].1U]005)!35]#3U5.5#L**PE]"BLC96YD:68**PD**PE:14Y$7T9%5$-(
M7U)%4T]54D-%*')E<W5L="P@;V1B8U]R97-U;'0@*BP@<'9?<F5S+" M,2P@
M(D]$0D,@<F5S=6QT(BP@;&5?<F5S=6QT*3L**PD**PEI9B H<F5S=6QT+3YN
M=6UC;VQS(#T](# I('L**PD)<&AP7V5R<F]R*$5?5T%23DE.1RP@(DYO('1U
M<&QE<R!A=F%I;&%B;&4@870@=&AI<R!R97-U;'0@:6YD97@B*3L**PD)4D54
M55).7T9!3%-%.PHK"7T**PD**PEI9B H87)R87E?:6YI="AR971U<FY?=F%L
M=64I/3U&04E,55)%*2!["BL)"5)%5%523E]&04Q313L**PE]"BL**R-I9F1E
M9B!(059%7U-13%]%6%1%3D1%1%]&151#2 HK"6EF("AR97-U;'0M/F9E=&-H
M7V%B<RD@>PHK"0EI9B H<F]W;G5M(#X@,"D**PD)"7)C(#T@4U%,17AT96YD
M961&971C:"AR97-U;'0M/G-T;70L4U%,7T9%5$-(7T%"4T],551%+')O=VYU
M;2PF8W)O=RQ2;W=3=&%T=7,I.PHK"0EE;'-E"BL)"0ER8R ](%-13$5X=&5N
M9&5D1F5T8V@H<F5S=6QT+3YS=&UT+%-13%]&151#2%].15A4+#$L)F-R;W<L
M4F]W4W1A='5S*3L**PE](&5L<V4**R-E;F1I9@HK"0ER8R ](%-13$9E=&-H
M*')E<W5L="T^<W1M="D["BL**PEI9B H<F,@(3T@4U%,7U-50T-%4U,@)B8@
M<F,@(3T@4U%,7U-50T-%4U-?5TE42%])3D9/*0HK"0E215154DY?1D%,4T4[
M"BL**R-I9F1E9B!(059%7U-13%]%6%1%3D1%1%]&151#2 HK"6EF("AR;W=N
M=6T@/B P("8F(')E<W5L="T^9F5T8VA?86)S*0HK"0ER97-U;'0M/F9E=&-H
M960@/2!R;W=N=6T["BL)96QS90HK(V5N9&EF"BL)"7)E<W5L="T^9F5T8VAE
M9"LK.PHK"BL)9F]R*&D@/2 P.R!I(#P@<F5S=6QT+3YN=6UC;VQS.R!I*RLI
M('L**PD)04Q,3T-?6E9!3"AT;7 I.PHK"0ET;7 M/G)E9F-O=6YT(#T@,3L*
M*PD)=&UP+3YT>7!E(#T@25-?4U1224Y'.PHK"0ET;7 M/G9A;'5E+G-T<BYL
M96X@/2 P.PHK(" @(" @("!S<6Q?8U]T>7!E(#T@4U%,7T-?0TA!4CL**R @
M(" @(" **R @(" @("
@<W=I=&-H*')E<W5L="T^=F%L=65S6VE=+F-O;'1Y
M<&4I('L**R @(" @(" @(" @(&-A<V4@4U%,7T))3D%263H**R @("
@(" @
M(" @(&-A<V4@4U%,7U9!4D))3D%263H**R @(" @(" @(" @(&-A<V4@4U%,
M7TQ/3D=605)"24Y!4EDZ"BL@(" @(" @(" @(" @("
@:68@*')E<W5L="T^
M8FEN;6]D92 \/2 P*2E86L["BL@(" @(" @(" @(" @(" @?0HK(" @("
@(" @(" @(" @
M(&EF("AR97-U;'0M/F)I;FUO9&4@/3T@,2D@<W%L7V-?='EP92 ](%-13%]#
M7T))3D%263L@"BL@(" @(" @(" @("!C87-E(%-13%],3TY'5D%20TA!4CH*
M*R @(" @(" @(" @(" @("!I9B H25-?4U%,7TQ/3D<H<F5S=6QT+3YV86QU
M97-;:5TN8V]L='EP92D@)B8@"BL@(" @(" @(" @(" @(" @("
@<F5S=6QT
M+3YL;VYG<F5A9&QE;B \/2 P*2E86L["BL@(" @(" @(" @(" @("
@?0HK(" @(" @(" *
M*R @(" @(" @(" @(" @("!I9B H8G5F(#T]($Y53$PI(&)U9B ](&5M86QL
M;V,H<F5S=6QT+3YL;VYG<F5A9&QE;B K(#$I.PHK(" @(" @(" @(" @(" @
M(')C(#T@4U%,1V5T1&%T82AR97-U;'0M/G-T;70L("A55T]21"DH:2 K(#$I
M+'-Q;%]C7W1Y<&4L"BL)"0D)"0D)"6)U9BP@<F5S=6QT+3YL;VYG<F5A9&QE
M;B K(#$L("9R97-U;'0M/G9A;'5E<UMI72YV86QL96XI.PHK"BL)"0D)"6EF
M("AR8R ]/2!344Q?15)23U(I('L**PD)"0D);V1B8U]S<6Q?97)R;W(H<F5S
M=6QT+3YC;VYN7W!T<BT^:&5N=BP@<F5S=6QT+3YC;VYN7W!T<BT^:&1B8RP@
M<F5S=6QT+3YS=&UT+" B4U%,1V5T1&%T82(I.PHK"0D)"0EE9G)E92AB=68I
M.PHK"0D)"0E215154DY?1D%,4T4["BL)"0D)?0HK"0D)"6EF("AR8R ]/2!3
M44Q?4U5#0T534U]7251(7TE.1D\I('L**PD)"0D)=&UP+3YV86QU92YS='(N
M;&5N(#T@<F5S=6QT+3YL;VYG<F5A9&QE;CL**PD)"0E](&5L<V4@:68@*')E
M<W5L="T^=F%L=65S6VE=+G9A;&QE;B ]/2!344Q?3E5,3%]$051!*2"0D)
M8G)E86L["BL)"0D)?2!E;'-E('L**PD)"0D)=&UP+3YV86QU92YS='(N;&5N
M(#T@<F5S=6QT+3YV86QU97-;:5TN=F%L;&5N.PHK"0D)"7T**PD)"0ET;7 M
M/G9A;'5E+G-T<BYV86P@/2!E<W1R;F1U<"AB=68L('1M<"T^=F%L=64N<W1R
M+FQE;BD["BL)"0D)8G)E86L["BL**PD)"61E9F%U;'0Z"BL)"0D):68@*')E
M<W5L="T^=F%L=65S6VE=+G9A;&QE;B ]/2!344Q?3E5,3%]$051!*2"0D)
M8G)E86L["BL)"0D)?0HK"0D)"71M<"T^=F%L=64N<W1R+FQE;B ](')E<W5L
M="T^=F%L=65S6VE=+G9A;&QE;CL**PD)"0ET;7 M/G9A;'5E+G-T<BYV86P@
M/2!E<W1R;F1U<"AR97-U;'0M/G9A;'5E<UMI72YV86QU92QT;7 M/G9A;'5E
M+G-T<BYL96XI.PHK"0D)"6)R96%K.PHK"0E]"BL)"6EF("AR97-U;'1?='EP
M92 F($]$0D-?3E5-*2!["BL)"0EZ96YD7VAA<VA?:6YD97A?=7!D871E*')E
M='5R;E]V86QU92T^=F%L=64N:'0L(&DL("9T;7 L('-I>F5O9BAP=F%L("HI
M+"!.54Q,*3L**PD)?2!E;'-E('L**PD)"7IE;F1?:&%S:%]U<&1A=&4H<F5T
M=7)N7W9A;'5E+3YV86QU92YH="P@<F5S=6QT+3YV86QU97-;:5TN;F%M92P@
M<W1R;&5N*')E<W5L="T^=F%L=65S6VE=+FYA;64I*S$L("9T;7 L('-I>F5O
M9BAP=F%L("HI+"!.54Q,*3L**PD)?0HK"7T**PEI9B H8G5F*2!E9G)E92AB
M=68I.PHK?0HK"BL**R\J('M[>R!P<F]T;R!O8FIE8W0@;V1B8U]F971C:%]O
M8FIE8W0H:6YT(')E<W5L="!;+"!I;G0@<F]W;G5M8F5R72D**R @($9E=&-H
M(&$@<F5S=6QT(')O=R!A<R!A;B!O8FIE8W0@*B\**U!(4%]&54Y#5$E/3BAO
M9&)C7V9E=&-H7V]B:F5C="D**WL**PEP:'!?;V1B8U]F971C:%]H87-H*$E.
M5$523D%,7T953D-424].7U!!4D%-7U!!4U-42%)5+"!/1$)#7T]"2D5#5"D[
M"BL):68@*')E='5R;E]V86QU92T^='EP93T]25-?05)205DI('L**PD)<F5T
M=7)N7W9A;'5E+3YT>7!E/4E37T]"2D5#5#L**PD)<F5T=7)N7W9A;'5E+3YV
M86QU92YO8FHN<')O<&5R=&EE<R ](')E='5R;E]V86QU92T^=F%L=64N:'0[
M"BL)"7)E='5R;E]V86QU92T^=F%L=64N;V)J+F-E(#T@)GIE;F1?<W1A;F1A
M<F1?8VQA<W-?9&5F.PHK"7T**WT**R\J('U]?2 J+PHK"BLO*B![>WL@<')O
M=&\@87)R87D@;V1B8U]F971C:%]A<G)A>2AI;G0@<F5S=6QT(%LL(&EN="!R
M;W=N=6UB97)=*0HK(" @1F5T8V@@82!R97-U;'0@<F]W(&%S(&%N(&%S<V]C
M:6%T:79E(&%R<F%Y("HO"BM02%!?1E5.0U1)3TXH;V1B8U]F971C:%]A<G)A
M>2D**WL**R @(" @(" @<&AP7V]D8F-?9F5T8VA?:&%S:"A)3E1%4DY!3%]&
M54Y#5$E/3E]005)!35]005-35$A252P@3T1"0U]/0DI%0U0I.PHK?0HK+RH@
M?7U]("HO"BLC96YD:68*( H@+RH@>WM[('!R;W1O(&EN="!O9&)C7V9E=&-H
M7VEN=&\H:6YT(')E<W5L=%]I9"!;+"!I;G0@<F]W;G5M8F5R72P@87)R87D@
M<F5S=6QT7V%R<F%Y*0H@(" @1F5T8V@@;VYE(')E<W5L="!R;W<@:6YT;R!A
M;B!A<G)A>2 J+R *9&EF9B M=7(@<&AP+4-64R]E>'0O;V1B8R]P:'!?;V1B
M8RYH('!H<"U#5E,M;F5W+V5X="]O9&)C+W!H<%]O9&)C+F@*+2TM('!H<"U#
M5E,O97AT+V]D8F,O<&AP7V]D8F,N: E7960@2G5L(" U(#$Q.C,R.C Q(#(P
M,# **RLK('!H<"U#5E,M;F5W+V5X="]O9&)C+W!H<%]O9&)C+F@)5V5D($IU
M;" @-2 Q,3HS,SHR,R R,# P"D! ("TS-"PW("LS-"PY($! "B C9&5F:6YE
M(%!(4%]/1$)#7T@*( H@(VEF($A!5D5?54]$0D,**R-I9FYD968)2$%615]$
M0DU!2T52"B C9&5F:6YE($]$0D-615(@,'@P,C4P"BLC96YD:68*("\J(VEF
M;F1E9B!-4U9#-0H@(V1E9FEN92!&05(*("-E;F1I9@I 0" M,3,Y+#8@*S$T
M,2PX($! "B C96QI9B!D969I;F5D*$A!5D5?1$)-04M%4BD@+RH@1$)-86ME
M<B J+PH@"B C9&5F:6YE($]$0D-?5%E012 B1$)-86ME<B(**R-U;F1E9B!/
M1$)#5D52"BLC9&5F:6YE($]$0D-615(@,'@P,S P"B C9&5F:6YE($A!5D5?
M4U%,7T585$5.1$5$7T9%5$-((#$*("-I;F-L=61E(#QO9&)C+F@^"B *0$ @
M+3$X.2PV("LQ.3,L,3 @0$ *(%!(4%]&54Y#5$E/3BAO9&)C7V5X96,I.PH@
M4$A07T953D-424].*&]D8F-?9&\I.PH@4$A07T953D-424].*&]D8F-?97AE
M8W5T92D["BLC:69D968@2$%615]$0DU!2T52"BM02%!?1E5.0U1)3TXH;V1B
M8U]F971C:%]A<G)A>2D["BM02%!?1E5.0U1)3TXH;V1B8U]F971C:%]O8FIE
M8W0I.PHK(V5N9&EF"B!02%!?1E5.0U1)3TXH;V1B8U]F971C:%]I;G1O*3L*
M(%!(4%]&54Y#5$E/3BAO9&)C7V9E=&-H7W)O=RD["B!02%!?1E5.0U1)3TXH
M;V1B8U]F:65L9%]L96XI.PI/;FQY(&EN('!H<"U#5E,M;F5W+V5X="]O9&)C
..B!P:'!?;V1B8RYH?@H`
`
end