From e13b6e7528a6a17b1a8761087fd7f831e73491d4 Mon Sep 17 00:00:00 2001 From: yitam Date: Tue, 2 May 2017 12:00:53 -0700 Subject: [PATCH] removed autonomous_setup.php --- test/pdo_sqlsrv/MsCommon.inc | 1628 +++++++++++++++++ test/pdo_sqlsrv/MsData.inc | 65 + test/pdo_sqlsrv/MsSetup.inc | 38 + test/pdo_sqlsrv/PDO_ConnPool_Unix.phpt | 2 +- test/pdo_sqlsrv/autonomous_setup.php | 16 - test/pdo_sqlsrv/pdo_002_connect_app.phpt | 5 +- test/pdo_sqlsrv/pdo_011_quote.phpt | 19 +- test/pdo_sqlsrv/pdo_012_bind_param.phpt | 12 +- test/pdo_sqlsrv/pdo_013_row_count.phpt | 24 +- .../pdo_014_integer_custom_formats.phpt | 17 +- ...do_015_integer_custom_formats_pooling.phpt | 21 +- test/pdo_sqlsrv/pdo_016.phpt | 14 +- test/pdo_sqlsrv/pdo_017.phpt | 19 +- test/pdo_sqlsrv/pdo_018_next_result_set.phpt | 14 +- .../pdo_019_next_result_set_pooling.phpt | 16 +- .../pdo_sqlsrv/pdo_020_bind_params_array.phpt | 14 +- test/pdo_sqlsrv/pdo_021_extended_ascii.phpt | 14 +- test/pdo_sqlsrv/pdo_022_xml_bind_value.phpt | 20 +- test/pdo_sqlsrv/pdo_023.phpt | 56 +- ...5_binary_encoding_error_bound_by_name.phpt | 13 +- .../pdo_sqlsrv/pdo_040_error_information.phpt | 14 +- ...prepare_execute_fetch_pooling_default.phpt | 39 +- ...prepare_execute_fetch_pooling_enabled.phpt | 38 +- ...repare_execute_fetch_pooling_disabled.phpt | 41 +- .../pdo_065_construct_persistent.phpt | 23 +- .../pdo_065_construct_prefetch.phpt | 13 +- ...pdo_069_fetch_empty_nvarchar_buffered.phpt | 5 +- ...28_setAttribute_clientbuffermaxkbsize.phpt | 42 +- test/pdo_sqlsrv/pdo_267_closeCursor.phpt | 11 +- test/pdo_sqlsrv/pdo_270_fetch_binary.phpt | 83 +- .../pdo_308_empty_output_param.phpt | 10 +- ...o_336_pho_exec_empty_result_set_error.phpt | 6 +- test/pdo_sqlsrv/pdo_connection_quote.phpt | 13 +- .../pdo_connection_resiliency_keywords.phpt | 24 +- .../pdo_construct_TransactionIsolation.phpt | 11 +- test/pdo_sqlsrv/pdo_construct_attr.phpt | 9 +- .../pdo_construct_conn_options.phpt | 14 +- test/pdo_sqlsrv/pdo_construct_dsn_error.phpt | 28 +- test/pdo_sqlsrv/pdo_exec_invalid_query.phpt | 6 +- .../pdo_fetch_bindcolumn_fetchmode.phpt | 17 +- .../pdo_fetch_columns_fetchmode.phpt | 19 +- .../pdo_fetch_complex_transactions.phpt | 16 +- .../pdo_fetch_cursorBuffered_binary.phpt | 4 +- .../pdo_fetch_cursorBuffered_char.phpt | 4 +- .../pdo_fetch_cursorBuffered_datetime.phpt | 4 +- .../pdo_fetch_cursorBuffered_decimal.phpt | 4 +- ...cursorBuffered_decimal_bindColumn_int.phpt | 4 +- .../pdo_fetch_cursorBuffered_float.phpt | 4 +- ...h_cursorBuffered_float_bindColumn_lob.phpt | 4 +- .../pdo_fetch_cursorBuffered_int.phpt | 4 +- ...tch_cursorBuffered_int_bindColumn_int.phpt | 4 +- .../pdo_fetch_cursorBuffered_money.phpt | 4 +- ...h_cursorBuffered_money_bindColumn_int.phpt | 4 +- ...pdo_fetch_cursorBuffered_multicolumns.phpt | 4 +- ...ch_cursorBuffered_strings_to_integers.phpt | 4 +- .../pdo_fetch_cursorBuffered_unicode.phpt | 4 +- .../pdo_fetch_cursor_scroll_random.phpt | 16 +- .../pdo_fetch_fetchinto_query_args.phpt | 15 +- .../pdo_getAttribute_clientInfo.phpt | 4 +- test/pdo_sqlsrv/pdo_get_attr_invalid.phpt | 12 +- test/pdo_sqlsrv/pdo_get_set_attr.phpt | 35 +- test/pdo_sqlsrv/pdo_invalid_conn_opt.phpt | 12 +- test/pdo_sqlsrv/pdo_katmai_special_types.phpt | 15 +- test/pdo_sqlsrv/pdo_lastInsertId.phpt | 42 +- test/pdo_sqlsrv/pdo_nested_query_mars.phpt | 18 +- test/pdo_sqlsrv/pdo_output_decimal.phpt | 9 +- .../pdo_prepare_invalid_cursor.phpt | 8 +- .../pdo_prepare_invalid_encoding.phpt | 8 +- .../pdo_prepare_invalid_option_key.phpt | 12 +- ...pdo_prepare_invalid_scrollable_cursor.phpt | 14 +- test/pdo_sqlsrv/pdo_prepare_options.phpt | 14 +- test/pdo_sqlsrv/pdo_query_timeout.phpt | 18 +- test/pdo_sqlsrv/pdo_set_attr_invalid.phpt | 12 +- .../pdo_set_attr_invalid_encoding.phpt | 11 +- .../pdo_statement_rowcount_query.phpt | 21 +- .../pdo_stored_proc_fetch_datatypes.phpt | 18 +- test/pdo_sqlsrv/pdo_tools.inc | 88 +- test/pdo_sqlsrv/pdo_transaction.phpt | 8 +- .../pdo_utf8_stored_proc_unicode_chars.phpt | 21 +- test/pdo_sqlsrv/pdo_warnings.phpt | 6 +- .../pdostatement_bindcolumn_odd_types.phpt | 5 +- .../pdo_sqlsrv/pdostatement_get_set_attr.phpt | 22 +- test/pdo_sqlsrv/skipif.inc | 4 + test/pdo_sqlsrv/skipif_azure.inc | 10 + .../connection_resiliency_keywords.phpt | 2 +- test/sqlsrv/srv_074_database.phpt | 1 + test/sqlsrv/srv_074_database_wide_string.phpt | 1 + 87 files changed, 2326 insertions(+), 721 deletions(-) create mode 100644 test/pdo_sqlsrv/MsCommon.inc create mode 100644 test/pdo_sqlsrv/MsData.inc create mode 100644 test/pdo_sqlsrv/MsSetup.inc delete mode 100644 test/pdo_sqlsrv/autonomous_setup.php create mode 100644 test/pdo_sqlsrv/skipif.inc create mode 100644 test/pdo_sqlsrv/skipif_azure.inc diff --git a/test/pdo_sqlsrv/MsCommon.inc b/test/pdo_sqlsrv/MsCommon.inc new file mode 100644 index 00000000..fa421d57 --- /dev/null +++ b/test/pdo_sqlsrv/MsCommon.inc @@ -0,0 +1,1628 @@ +setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); + create_and_insert_table1($conn); + create_and_insert_table2($conn); + return $conn; + } + + catch( PDOException $e ) + { + var_dump( $e ); + exit; + } + + catch(Exception $e) + { + var_dump( $e ); + exit; + } +} + +// Create and insert +function create_and_insert_table1( $conn ) +{ + global $string_col, $date_col, $large_string_col, $xml_col, $binary_col, $int_col, $decimal_col, $guid_col, $null_col, $comma, $closing_brace, $table1; + + try + { + $create_query = + + "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $table1 . "') AND type in (N'U')) + DROP TABLE " . $table1 . + + " CREATE TABLE [dbo].[" . $table1 . "]( + [IntCol] [int] NULL, + [CharCol] [char](10) NULL, + [NCharCol] [nchar](10) NULL, + [DateTimeCol] [datetime] NULL, + [VarcharCol] [varchar](50) NULL, + [NVarCharCol] [nvarchar](50) NULL, + [FloatCol] [float] NULL, + [XmlCol] [xml] NULL + ) ON [PRIMARY] + "; + + $conn->query( $create_query ); + + for ($i = 0 ; $i <= 1; ++ $i) + { + $insert_query = + "INSERT INTO PDO_Types_1 VALUES (". + $int_col[$i] . $comma . + $string_col[$i] . $comma . + $string_col[$i] . $comma . + "Convert(datetime, ". $date_col[$i] . ")" . $comma . + $string_col[$i] . $comma . + $string_col[$i] . $comma . + $decimal_col[$i] . $comma . + $xml_col[$i] . + ")"; + + $conn->query ( $insert_query ); + } + } + catch(Exception $e) + { + var_dump( $e); + exit; + } +} + +function create_and_insert_table2( $conn ) +{ + try + { + //Timestamp is not present. + //VARIANT is not supported. + global $string_col, $date_col, $large_string_col, $xml_col, $binary_col, $int_col, $decimal_col, $guid_col, $null_col, $comma, $closing_brace, $table1, $table2; + + $create_query = + "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'".$table2."') AND type in (N'U')) DROP TABLE " . $table2 . + + " CREATE TABLE " .$table2 . " ( + [BigIntCol] [bigint] NULL, + [BinaryCol] [binary](5) NULL, + [BitCol] [bit] NULL, + [CharCol] [char](10) NULL, + [DateCol] [date] NULL, + [DateTimeCol] [datetime] NULL, + [DateTime2Col] [datetime2](7) NULL, + [DTOffsetCol] [datetimeoffset](7) NULL, + [DecimalCol] [decimal](18, 0) NULL, + [FloatCol] [float] NULL, + [ImageCol] [image] NULL, + [IntCol] [int] NULL, + [MoneyCol] [money] NULL, + [NCharCol] [nchar](10) NULL, + [NTextCol] [ntext] NULL, + [NumCol] [numeric](18, 0) NULL, + [NVarCharCol] [nvarchar](50) NULL, + [NVarCharMaxCol] [nvarchar](max) NULL, + [RealCol] [real] NULL, + [SmallDTCol] [smalldatetime] NULL, + [SmallIntCol] [smallint] NULL, + [SmallMoneyCol] [smallmoney] NULL, + [TextCol] [text] NULL, + [TimeCol] [time](7) NULL, + [TinyIntCol] [tinyint] NULL, + [Guidcol] [uniqueidentifier] NULL, + [VarbinaryCol] [varbinary](50) NULL, + [VarbinaryMaxCol] [varbinary](max) NULL, + [VarcharCol] [varchar](50) NULL, + [VarcharMaxCol] [varchar](max) NULL, + [XmlCol] [xml] NULL + ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + + "; + + $stmt = $conn->query( $create_query ); + + for ($i =0; $i<= 0 ; ++ $i) + { + $insert_query = + + " INSERT INTO " .$table2 . " VALUES (". + $int_col[$i] . $comma . + $binary_col[$i] . $comma . + "0" . $comma . + $string_col[$i] . $comma . + "Convert(date, ". $date_col[$i] . $closing_brace . + "Convert(datetime, ". $date_col[$i] . $closing_brace . + "Convert(datetime2(7),". $date_col[$i] . $closing_brace . + "Convert(datetimeoffset(7)," . $date_col[$i] . $closing_brace . + $decimal_col[$i] . $comma . + $decimal_col[$i] .$comma . + $binary_col[$i] . $comma . + $int_col[$i] . $comma . + $decimal_col[$i] . $comma . + $string_col[$i]. $comma . + $large_string_col[$i]. $comma. + $int_col[$i]. $comma . + $string_col[$i]. $comma . + $large_string_col[$i]. $comma . + $decimal_col[$i]. $comma . + "Convert(smalldatetime, ". $date_col[$i]. $closing_brace . + $int_col[$i]. $comma . + $decimal_col[$i]. $comma . + $large_string_col[$i]. $comma . + "Convert(time(7), ". $date_col[$i] . $closing_brace . + $int_col[$i] . $comma . + $guid_col[$i] . $comma . + $binary_col[$i] . $comma . + $binary_col[$i] . $comma . + $string_col[$i] . $comma . + $large_string_col[$i] . $comma . + $xml_col[$i] . + ")"; + + $stmt = $conn->query ($insert_query ); + } + + } + catch(Exception $e) + { + var_dump( $e); + exit; + } +} + +function teardown() +{ + // TBD +} + + +function my_print_r( $to_print ) +{ + global $verbose; + if($verbose) + print_r($to_print); +} + + +function TestMode() +{ + $testMode = getenv('PHPT_EXEC'); + return ($testMode ? true : false); +} + +function IsPdoMode() +{ + require 'MsSetup.inc'; + return (($driverType === true) ? true : false); +} + + +function TraceMode() +{ + require 'MsSetup.inc'; + return ((!TestMode() && $traceEnabled) ? true : false); +} + +function IsMarsSupported() +{ + require 'MsSetup.inc'; + return ($marsMode ? true : false); +} + +function IsDaasMode() +{ + require 'MsSetup.inc'; + return ($daasMode ? true : false); +} + +function FatalError($errorMsg) +{ + if (!IsPdoMode()) + { + handle_errors(); + } + die("$errorMsg\n"); +} + +function Trace($msg) +{ + if (TraceMode()) + { + echo $msg; + } +} + +function TraceEx($msg, $exitMode) +{ + if ($exitMode) + { + FatalError($msg); + } + else + { + Trace("$msg\n"); + } +} + +function TraceData($sqlType, $data) +{ + if (TraceMode()) + { + $msg = strtoupper(" $sqlType:"); + echo "$msg\t"; + if (strlen($msg) <= 7) + { + echo "\t"; + } + if (strlen($msg) <= 15) + { + echo "\t"; + } + echo "$data\n" +; + } +} + +function StartTest($testName) +{ + require 'MsSetup.inc'; + + if (TraceMode()) + { + echo "$PhpDriver: starting \"$testName\" test...\n\n"; + } + + if (!extension_loaded(IsPdoMode() ? "pdo" : "sqlsrv")) + { + die("$PhpDriver cannot be loaded."); + } + + // Set timezone + $tz = ini_get('date.timezone'); + if (strcmp($tz, "") == 0) + { + date_default_timezone_set('America/Los_Angeles'); + $tz = date_default_timezone_get(); + } + Trace("Timezone: $tz.\n"); +} + +function EndTest($testName) +{ + require 'MsSetup.inc'; + + if (TraceMode()) + { + echo "\n$PhpDriver: " +; + } + echo "Test \"$testName\" completed successfully.\n" +; +} + + +function Setup() +{ + set_time_limit(0); + + if (IsPdoMode()) + { // PDO setup + } + else + { // PHP setup + sqlsrv_configure('LogSubsystems', SQLSRV_LOG_SYSTEM_ALL); + sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL); + sqlsrv_configure('WarningsReturnAsErrors', 1); + } +} + +function Configure($param, $expected) +{ + if (!IsPdoMode()) + { + sqlsrv_configure($param, $expected); + $actual = sqlsrv_get_config($param); + + if ($actual == $expected) + { + Trace("Set configuration parameter $param = $actual.\n"); + } + else + { + die("Failed to set configuration parameter $param = $expected."); + } + } +} + +function GetTempTableName($table = '', $temporary = true) +{ + // A temporary table name with the '#' prefix will be automatically + // dropped once the connection is closed. Otherwise, the caller + // should take care of dropping the temp table afterwards. + + $timestamp = round(microtime(true)*1000); + + $prefix = ''; + if ($temporary) + $prefix = '#'; + + if (strlen($table) == 0) + $table = 'php_test_table'; + + return $prefix . $table . '_' . $timestamp; +} + +function GetTempProcName($proc = '', $temporary = true) +{ + // A temporary stored procedure name with the '#' prefix will be + // automatically dropped once the connection is closed. Otherwise, + // the caller should take care of dropping the temp procedure afterwards. + + $timestamp = round(microtime(true)*1000); + + $prefix = ''; + if ($temporary) + $prefix = '#'; + + if (strlen($proc) == 0) + $proc = 'php_test_proc'; + + return $prefix . $proc . '_' . $timestamp; +} + +function PDOConnect($className, $serverName, $user, $pwd, $exitMode) +{ + require 'MsSetup.inc'; + $conn = null; + + try + { + // simply use $databaseName from MsSetup.inc to facilitate testing in Azure, + // which does not support switching databases + $conn = new $className("sqlsrv:Server=$serverName;Database=$databaseName", $user, $pwd, $connectionOptions); + $conn->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM); + } + catch (PDOException $e) + { + $conn = null; + TraceEx("\nFailed to connect to $serverName: ".$e->getMessage(), $exitMode); + } + + return ($conn); +} + + +function ExecuteQuery($conn, $tsql) +{ + $stmt = null; + + if (IsPdoMode()) + { // PDO + try + { + $stmt = $conn->query($tsql); + } + catch (PDOException $e) + { + $stmt = null; + FatalError("Query execution failed for $tsql: ".$e->getMessage()); + } + } + else + { // PHP + $stmt = sqlsrv_query($conn, $tsql); + if ($stmt === false) + { + FatalError("Query execution failed for $tsql"); + } + } + return ($stmt); +} + + +function PrepareQuery($conn, $tsql) +{ + $stmt = null; + + if (IsPdoMode()) + { // PDO + try + { + $stmt = $conn->prepare($tsql); + } + catch (PDOException $e) + { + $stmt = null; + FatalError("Query preparation failed for $tsql: ".$e->getMessage()); + } + } + else + { // PHP + $stmt = sqlsrv_prepare($conn, $tsql); + if ($stmt === false) + { + FatalError("Query preparation failed for $tsql"); + } + } + + return ($stmt); +} + + +function ExecuteQueryEx($conn, $tsql, $modeDirect) +{ + $stmt = null; + + if ($modeDirect) + { // direct execution + if (IsPdoMode()) + { // PDO + try + { + $stmt = $conn->query($tsql); + } + catch (PDOException $e) + { + $stmt = null; + } + } + else + { // PHP + $stmt = sqlsrv_query($conn, $tsql); + } + } + else + { + $stmt = PrepareQuery($conn, $tsql); + if (IsPdoMode()) + { + $stmt->execute(); + } + else + { + sqlsrv_execute($stmt); + } + } + + return ($stmt); +} + + +function GetSqlType($k) +{ + switch ($k) + { + case 1: return ("int"); + case 2: return ("tinyint"); + case 3: return ("smallint"); + case 4: return ("bigint"); + case 5: return ("bit"); + case 6: return ("float"); + case 7: return ("real"); + case 8: return ("decimal(28,4)"); + case 9: return ("numeric(32,4)"); + case 10: return ("money"); + case 11: return ("smallmoney"); + case 12: return ("char(512)"); + case 13: return ("varchar(512)"); + case 14: return ("varchar(max)"); + case 15: return ("nchar(512)"); + case 16: return ("nvarchar(512)"); + case 17: return ("nvarchar(max)"); + case 18: return ("text"); + case 19: return ("ntext"); + case 20: return ("binary(512)"); + case 21: return ("varbinary(512)"); + case 22: return ("varbinary(max)"); + case 23: return ("image"); + case 24: return ("uniqueidentifier"); + case 25: return ("datetime"); + case 26: return ("smalldatetime"); + case 27: return ("timestamp"); + case 28: return ("xml"); + default: break; + } + return ("udt"); +} + +function GetDriverType($k, $dataSize) +{ + switch ($k) + { + case 1: return (SQLSRV_SQLTYPE_INT); + case 2: return (SQLSRV_SQLTYPE_TINYINT); + case 3: return (SQLSRV_SQLTYPE_SMALLINT); + case 4: return (SQLSRV_SQLTYPE_BIGINT); + case 5: return (SQLSRV_SQLTYPE_BIT); + case 6: return (SQLSRV_SQLTYPE_FLOAT); + case 7: return (SQLSRV_SQLTYPE_REAL); + case 8: return (SQLSRV_SQLTYPE_DECIMAL(28, 4)); + case 9: return (SQLSRV_SQLTYPE_NUMERIC(32, 4)); + case 10: return (SQLSRV_SQLTYPE_MONEY); + case 11: return (SQLSRV_SQLTYPE_SMALLMONEY); + case 12: return (SQLSRV_SQLTYPE_CHAR($dataSize)); + case 13: return (SQLSRV_SQLTYPE_VARCHAR($dataSize)); + case 14: return (SQLSRV_SQLTYPE_VARCHAR('max')); + case 15: return (SQLSRV_SQLTYPE_NCHAR($dataSize)); + case 16: return (SQLSRV_SQLTYPE_NVARCHAR($dataSize)); + case 17: return (SQLSRV_SQLTYPE_NVARCHAR('max')); + case 18: return (SQLSRV_SQLTYPE_TEXT); + case 19: return (SQLSRV_SQLTYPE_NTEXT); + case 20: return (SQLSRV_SQLTYPE_BINARY($dataSize)); + case 21: return (SQLSRV_SQLTYPE_VARBINARY($dataSize)); + case 22: return (SQLSRV_SQLTYPE_VARBINARY('max')); + case 23: return (SQLSRV_SQLTYPE_IMAGE); + case 24: return (SQLSRV_SQLTYPE_UNIQUEIDENTIFIER); + case 25: return (SQLSRV_SQLTYPE_DATETIME); + case 26: return (SQLSRV_SQLTYPE_SMALLDATETIME); + case 27: return (SQLSRV_SQLTYPE_TIMESTAMP); + case 28: return (SQLSRV_SQLTYPE_XML); + default: break; + } + return (SQLSRV_SQLTYPE_UDT); +} + +function IsStreamable($k) +{ + switch ($k) + { + case 12: return (true); // nchar(512) + case 13: return (true); // varchar(512) + case 14: return (true); // varchar(max) + case 15: return (true); // nchar(512) + case 16: return (true); // nvarchar(512) + case 17: return (true); // nvarchar(max) + case 18: return (true); // text + case 19: return (true); // ntext + case 20: return (true); // binary + case 21: return (true); // varbinary(512) + case 22: return (true); // varbinary(max) + case 23: return (true); // image + case 28: return (true); // xml + default: break; + } + return (false); +} + +function IsNumeric($k) +{ + switch ($k) + { + case 1: return (true); // int + case 2: return (true); // tinyint + case 3: return (true); // smallint + case 4: return (true); // bigint + case 5: return (true); // bit + case 6: return (true); // float + case 7: return (true); // real + case 8: return (true); // decimal(28,4) + case 9: return (true); // numeric(32,4) + case 10: return (true); // money + case 11: return (true); // smallmoney + default: break; + } + return (false); +} + +function IsChar($k) +{ + switch ($k) + { + case 12: return (true); // nchar(512) + case 13: return (true); // varchar(512) + case 14: return (true); // varchar(max) + case 15: return (true); // nchar(512) + case 16: return (true); // nvarchar(512) + case 17: return (true); // nvarchar(max) + case 18: return (true); // text + case 19: return (true); // ntext + case 28: return (true); // xml + default: break; + } + return (false); +} + +function IsBinary($k) +{ + switch ($k) + { + case 20: return (true); // binary + case 21: return (true); // varbinary(512) + case 22: return (true); // varbinary(max) + case 23: return (true); // image + default: break; + } + return (false); +} + +function IsDateTime($k) +{ + switch ($k) + { + case 25: return (true); // datetime + case 26: return (true); // smalldatetime + case 27: return (true); // timestamp + default: break; + } + return (false); +} + +function IsUnicode($k) +{ + switch ($k) + { + case 15: return (true); // nchar(512) + case 16: return (true); // nvarchar(512) + case 17: return (true); // nvarchar(max) + case 19: return (true); // ntext + default: break; + } + return (false); +} + +function IsUpdatable($k) +{ + switch ($k) + { + case 27: return (false); // timestamp + default: break; + } + return (true); +} + +function IsLiteral($k) +{ + switch ($k) + { + case 12: return (true); // nchar(512) + case 13: return (true); // varchar(512) + case 14: return (true); // varchar(max) + case 15: return (true); // nchar(512) + case 16: return (true); // nvarchar(512) + case 17: return (true); // nvarchar(max) + case 18: return (true); // text + case 19: return (true); // ntext + case 24: return (true); // uniqueidentifier + case 25: return (true); // datetime + case 26: return (true); // smalldatetime + case 28: return (true); // xml + default: break; + } + return (false); +} + +function GetMetadata($k, $info) +{ + if (strcasecmp($info, 'Name') == 0) + { + return (getColName($k)); + } + if (strcasecmp($info, 'Size') == 0) + { + return (getColSize($k)); + } + if (strcasecmp($info, 'Precision') == 0) + { + return (getColPrecision($k)); + } + if (strcasecmp($info, 'Scale') == 0) + { + return (getColScale($k)); + } + if (strcasecmp($info, 'Nullable') == 0) + { + return (getColNullable($k)); + } + return (""); +} + +function GetColName($k) +{ + switch ($k) + { + case 1: return ("c1_int"); + case 2: return ("c2_tinyint"); + case 3: return ("c3_smallint"); + case 4: return ("c4_bigint"); + case 5: return ("c5_bit"); + case 6: return ("c6_float"); + case 7: return ("c7_real"); + case 8: return ("c8_decimal"); + case 9: return ("c9_numeric"); + case 10: return ("c10_money"); + case 11: return ("c11_smallmoney"); + case 12: return ("c12_char"); + case 13: return ("c13_varchar"); + case 14: return ("c14_varchar_max"); + case 15: return ("c15_nchar"); + case 16: return ("c16_nvarchar"); + case 17: return ("c17_nvarchar_max"); + case 18: return ("c18_text"); + case 19: return ("c19_ntext"); + case 20: return ("c20_binary"); + case 21: return ("c21_varbinary"); + case 22: return ("c22_varbinary_max"); + case 23: return ("c23_image"); + case 24: return ("c24_uniqueidentifier"); + case 25: return ("c25_datetime"); + case 26: return ("c26_smalldatetime"); + case 27: return ("c27_timestamp"); + case 28: return ("c28_xml"); + default: break; + } + return (""); +} + + +function GetColSize($k) +{ + switch ($k) + { + case 12: return ("512"); + case 13: return ("512"); + case 14: return ("0"); + case 15: return ("512"); + case 16: return ("512"); + case 17: return ("0"); + case 18: return ("2147483647"); + case 19: return ("1073741823"); + case 20: return ("512"); + case 21: return ("512"); + case 22: return ("0)"); + case 23: return ("2147483647"); + case 24: return ("36"); + //case 25: return ("23"); + //case 26: return ("16"); + case 27: return ("8"); + case 28: return ("0"); + default: break; + } + return (""); +} + +function GetColPrecision($k) +{ + switch ($k) + { + case 1: return ("10"); + case 2: return ("3"); + case 3: return ("5"); + case 4: return ("19"); + case 5: return ("1"); + case 6: return ("53"); + case 7: return ("24"); + case 8: return ("28"); + case 9: return ("32"); + case 10: return ("19"); + case 11: return ("10"); + case 25: return ("23"); + case 26: return ("16"); + default: break; + } + return (""); +} + +function GetColScale($k) +{ + switch ($k) + { + case 8: return ("4"); + case 9: return ("4"); + case 10: return ("4"); + case 11: return ("4"); + case 25: return ("3"); + case 26: return ("0"); + default: break; + } + return (""); +} + +function GetColNullable($k) +{ + return (IsUpdatable($k) ? "1" : "0"); +} + +function GetSampleData($k) +{ + switch ($k) + { + case 1: // int + return ("123456789"); + + case 2: // tinyint + return ("234"); + + case 3: // smallint + return ("5678"); + + case 4: // bigint + return ("123456789987654321"); + + + case 5: // bit + return ("1"); + + case 6: // float + return ("123.456"); + + case 7: // real + return ("789.012"); + + case 8: // decimal + return ("12.34"); + + case 9: // numeric + return ("567.89"); + + case 10:// money + return ("321.54"); + + case 11:// smallmoney + return ("67.89"); + + case 12:// char + case 15:// nchar + return ("The quick brown fox jumps over the lazy dog"); + + case 13:// varchar + case 16:// nvarchar + return ("The quick brown fox jumps over the lazy dog 9876543210"); + + case 14:// varchar(max) + case 17:// nvarchar(max) + return ("The quick brown fox jumps over the lazy dog 0123456789"); + + case 18:// text + case 19:// ntext + return ("0123456789 The quick brown fox jumps over the lazy dog"); + + case 20:// binary + return ("0123456789"); + + case 21:// varbinary + return ("01234567899876543210"); + + case 22:// varbinary(max) + return ("98765432100123456789"); + + case 23:// image + return ("01234567899876543210"); + + case 24:// uniqueidentifier + return ("12345678-9012-3456-7890-123456789012"); + + case 25:// datetime + case 26:// smalldatetime + return (date("Y-m-d")); + + case 27:// timestamp + return (null); + + case 28:// xml + return ("The quick brown fox jumps over the lazy dog0123456789"); + + default: + break; + } + + return (null); +} + + +function CreateDB($conn, $dbName) +{ + Trace("Creating database $dbName ..."); + $tsql = "CREATE DATABASE [$dbName]"; + DropDB($conn, $dbName); + + if (IsPdoMode()) + { + $outcome = $conn->exec($tsql); + if ($outcome === false) + { + FatalError("Failed to create test database: $dbName"); + } + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + if ($stmt === false) + { + FatalError("Failed to create test database: $dbName"); + } + sqlsrv_free_stmt($stmt); + } + Trace(" completed successfully.\n"); +} + +function DropDB($conn, $dbName) +{ + $tsql = "DROP DATABASE [$dbName]"; + if (IsPdoMode()) + { + $mode = $conn->getAttribute(PDO::ATTR_ERRMODE); + + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); + + $outcome = $conn->exec($tsql); + $conn->setAttribute(PDO::ATTR_ERRMODE, $mode); + + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + if ($stmt === false) + { + } + else + { + sqlsrv_free_stmt($stmt); + } + } +} + + +function CreateTable($conn, $tableName) +{ + $dataType = "[c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml"; + CreateTableEx($conn, $tableName, $dataType); + if (IsDaasMode()) + { + $colIndex = "[c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric]"; + CreateTableIndex($conn, $tableName, $colIndex); + } +} + +function CreateTableEx($conn, $tableName, $dataType) +{ + Trace("Creating table $tableName ..."); + $tsql = "CREATE TABLE [$tableName] ($dataType)"; + DropTable($conn,$tableName); + + if (IsPdoMode()) + { + $outcome = $conn->exec($tsql); + if ($outcome === false) + { + FatalError("Failed to create test table: $tsql"); + } + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + if ($stmt === false) + { + FatalError("Failed to create test table: $tsql"); + } + sqlsrv_free_stmt($stmt); + } + Trace(" completed successfully.\n"); +} + + +function CreateTableIndex($conn, $tableName, $colIndex) +{ + require 'MsSetup.inc'; + CreateTableIndexEx($conn, $tableName, $tableIndex, $colIndex); +} + + +function CreateTableIndexEx($conn, $tableName, $tableIndex, $colIndex) +{ + Trace("Creating table index for $tableName ..."); + $sqlIndex = "CREATE CLUSTERED INDEX [$tableIndex] ON [$tableName]($colIndex)"; + if (IsPdoMode()) + { + $outcome = $conn->exec($sqlIndex); + if ($outcome === false) + { + FatalError("Failed to create clustered index for test table: $sqlIndex"); + } + } + else + { + $stmt = sqlsrv_query($conn, $sqlIndex); + if ($stmt === false) + { + FatalError("Failed to create clustered index for test table: $sqlIndex"); + } + sqlsrv_free_stmt($stmt); + } + Trace(" completed successfully.\n"); +} + +function CreateUniqueIndex($conn, $tableName, $colIndex) +{ + require 'MsSetup.inc'; + CreateUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex); +} + +function CreateUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex) +{ + Trace("Creating unique table index for $tableName ..."); + $sqlIndex = "CREATE UNIQUE INDEX [$tableIndex] ON [$tableName]($colIndex)"; + if (IsPdoMode()) + { + $outcome = $conn->exec($sqlIndex); + if ($outcome === false) + { + FatalError("Failed to create unique index for test table: $sqlIndex"); + } + } + else + { + $stmt = sqlsrv_query($conn, $sqlIndex); + if ($stmt === false) + { + FatalError("Failed to create unique index for test table: $sqlIndex"); + } + sqlsrv_free_stmt($stmt); + } + Trace(" completed successfully.\n"); +} + +function DropTable($conn, $tableName) +{ + $tsql = "DROP TABLE [$tableName]"; + if (IsPdoMode()) + { + $mode = $conn->getAttribute(PDO::ATTR_ERRMODE); + + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); + + $outcome = $conn->exec($tsql); + $conn->setAttribute(PDO::ATTR_ERRMODE, $mode); + + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + if ($stmt === false) + { + } + else + { + sqlsrv_free_stmt($stmt); + } + } +} + + +function SelectFromTable($conn, $tableName) +{ + return (SelectFromTableEx($conn, $tableName, null)); +} + +function SelectFromTableEx($conn, $tableName, $cond) +{ + if (($cond != null) && (strlen($cond) > 0)) + { + return (SelectQuery($conn, "SELECT * FROM [$tableName] WHERE $cond")); + } + else + { + return (SelectQuery($conn, "SELECT * FROM [$tableName]")); + } +} + +function SelectQuery($conn, $query) +{ + return (SelectQueryEx($conn, $query, null)); +} + +function SelectQueryEx($conn, $query, $options) +{ + $numFields = 0; + if (IsPDOMode()) + { + $stmt = ExecuteQuery($conn, $query); + $numFields = $stmt->columnCount(); + } + else + { + if ($options != null) + { + $stmt = sqlsrv_query($conn, $query, null, $options); + } + else + { + $stmt = sqlsrv_query($conn, $query); + } + if ($stmt === false) + { + FatalError("Failed to query test table"); + } + + $numFields = sqlsrv_num_fields($stmt); + } + if ($numFields <= 0) + { + die("Unexpected number of fields: .$numFields"); + } + return ($stmt); +} + +function RowCount($stmt) +{ + $rowCount = 0; + if (IsPdoMode()) + { + while ($stmt->fetchColumn()) + { + $rowCount++; + } + } + else + { + while (sqlsrv_fetch($stmt)) + { + $rowCount++; + } + } + return ($rowCount); +} + + +function NumRows($conn, $tableName) +{ + $stmt = SelectFromTable($conn, $tableName); + $rowCount = RowCount($stmt); + if (IsPdoMode()) + { + $stmt = null; + } + else + { + sqlsrv_free_stmt($stmt); + } + + return ($rowCount); +} + + +function InsertQuery($tableName) +{ + return (InsertQueryEx($tableName, rand(1, 20))); +} + +function InsertRows($conn, $tableName, $rowCount) +{ + Trace("Inserting $rowCount rows into $tableName ..."); + $count = 0; + for($i = 0; $i < $rowCount; $i++) + { + if (InsertRow($conn, $tableName)) + { + $count++; + } + } + Trace(" completed successfully.\n"); + if ($count != $rowCount) + { + die("$count rows inserted instead of $rowCount\n"); + } + return ($count); +} + +function InsertRowsByRange($conn, $tableName, $minIndex, $maxIndex) +{ + $rowCount = $maxIndex - $minIndex + 1; + if ($rowCount > 0) + { + Trace("Inserting $rowCount rows into $tableName ..."); + for($i = $minIndex; $i <= $maxIndex; $i++) + { + InsertRowByIndex($conn, $tableName, $i); + } + Trace(" completed successfully.\n"); + } +} + +function InsertRow($conn, $tableName) +{ + $tsql = InsertQuery($tableName); + $stmt = null; + + if (IsPdoMode()) + { + $stmt = $conn->exec($tsql); + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + } + return (InsertCheck($stmt)); +} + +function InsertRowEx($conn, $tableName, $dataCols, $dataValues, $dataOptions) +{ + $tsql = "INSERT INTO [$tableName] ($dataCols) VALUES ($dataValues)"; + $stmt = null; + + if (IsPdoMode()) + { + $stmt = $conn->exec($tsql); + } + else + { + $stmt = sqlsrv_query($conn, $tsql, $dataOptions); + } + return (InsertCheck($stmt)); +} + +function InsertRowByIndex($conn, $tableName, $index) +{ + $tsql = InsertQueryEx($tableName, $index); + $stmt = null; + + if (IsPdoMode()) + { + $stmt = $conn->exec($tsql); + } + else + { + $stmt = sqlsrv_query($conn, $tsql); + } + return (InsertCheck($stmt)); +} + +function InsertStream($conn, $tableName, $dataCols, $dataValues, $dataOptions, $atExec) +{ + $tsql = "INSERT INTO [$tableName] ($dataCols) VALUES ($dataValues)"; + $stmt = null; + + if (IsPdoMode()) + { + $stmt = $conn->exec($tsql); + } + else + { + if ($atExec) + { + $stmt = sqlsrv_query($conn, $tsql, $dataOptions, array('SendStreamParamsAtExec' => 1)); + } + else + { + $stmt = sqlsrv_query($conn, $tsql, $dataOptions); + if ($stmt) + { + while (sqlsrv_send_stream_data($stmt)) + { + } + } + } + } + + return (InsertCheck($stmt)); +} + + +function InsertCheck($stmt) +{ + $numRows = 0; + + if ($stmt === false) + { + FatalError("Failed to insert row into test table"); + } + if (IsPdoMode()) + { + $numRows = $stmt; + } + else + { + $numRows = sqlsrv_rows_affected($stmt); + sqlsrv_free_stmt($stmt); + } + if ($numRows != 1) + { + die("Unexpected row count at insert: ".$numRows); + } + return (true); +} + +function GetInsertData($rowIndex, $colIndex, $skip) +{ + $query = InsertQueryEx("TestTable", $rowIndex); + $data = strstr($query, "(("); + $pos = 1; + if ($data === false) + { + die("Failed to retrieve data on row $rowIndex"); + } + $data = substr($data, 2); + + while ($pos < ($colIndex - $skip)) + { + $data = strstr($data, ", ("); + $pos++; + if ($data === false) + { + die("Failed to retrieve data on row $rowIndex, column $pos"); + } + $data = substr($data, 3); + } + $pos = strpos($data, ")"); + if ($pos === false) + { + die("Failed to isolate data on row $rowIndex, column $pos"); + } + $data = substr($data, 0, $pos); + if (strcasecmp($data, "null") == 0) + { + $data = ""; + } + if (IsUnicode($colIndex)) + { // N'data' + $data = substr($data, 2, strlen($data) - 3); + } + else if (IsLiteral($colIndex)) + { // 'data' + $data = substr($data, 1, strlen($data) - 2); + } + else if (IsBinary($colIndex)) + { // 0xdata + $data = substr($data, 2); + } + return (trim($data)); +} + +function CreateProc($conn, $procName, $procArgs, $procCode) +{ + DropProc($conn,$procName); + + if (!IsPdoMode()) + { + $stmt = sqlsrv_query($conn, "CREATE PROC [$procName] ($procArgs) AS BEGIN $procCode END"); + if ($stmt === false) + FatalError("Failed to create test procedure"); + sqlsrv_free_stmt($stmt); + } + else + { + $stmt = $conn->query("CREATE PROC [$procName] ($procArgs) AS BEGIN $procCode END"); + } +} + +function DropProc($conn, $procName) +{ + if (!IsPdoMode()) + { + $stmt = sqlsrv_query($conn, "DROP PROC [$procName]"); + sqlsrv_free_stmt($stmt); + } + else + { + + $query = "IF OBJECT_ID('[$procName]', 'P') IS NOT NULL DROP PROCEDURE [$procName]"; + $stmt = $conn->query($query); + } +} + +function CallProc($conn, $procName, $procArgs, $procValues) +{ + $stmt = CallProcEx($conn, $procName, "", $procArgs, $procValues); + sqlsrv_free_stmt($stmt); +} + +function CallProcEx($conn, $procName, $procPrefix, $procArgs, $procValues) +{ + $stmt = sqlsrv_query($conn, "{ $procPrefix CALL [$procName] ($procArgs)}", $procValues); + if ($stmt === false) + { + FatalError("Failed to call test procedure"); + } + return ($stmt); +} + + +function CreateFunc($conn, $funcName, $funcArgs, $retType, $funcCode) +{ + DropFunc($conn,$funcName); + $stmt = sqlsrv_query($conn, "CREATE FUNCTION [$funcName] ($funcArgs) RETURNS $retType AS BEGIN $funcCode END"); + if ($stmt === false) + { + FatalError("Failed to create test function"); + } + sqlsrv_free_stmt($stmt); +} + +function DropFunc($conn, $funcName) +{ + $stmt = sqlsrv_query($conn, "DROP FUNCTION [$funcName]"); + if ($stmt === false) + { + } + else + { + sqlsrv_free_stmt($stmt); + } +} + + +function CallFunc($conn, $funcName, $funcArgs, $funcValues) +{ + $stmt = sqlsrv_query($conn, "{ ? = CALL [$funcName]($funcArgs)}", $funcValues); + if ($stmt === false) + { + FatalError("Failed to call test function"); + } + sqlsrv_free_stmt($stmt); +} + +function handle_errors() +{ + $errors = sqlsrv_errors(SQLSRV_ERR_ERRORS); + $count = count($errors); + if($count == 0) + { + $errors = sqlsrv_errors(SQLSRV_ERR_ALL); + $count = count($errors); + } + if($count > 0) + { + for($i = 0; $i < $count; $i++) + { + Trace($errors[$i]['message']."\n"); + } + } +} + +function str2hex($dataIn) +{ + $dataOut = ""; + $len = strlen($dataIn); + for ($i = 0; $i < $len; $i++) + { + $ch = strtoupper(substr($dataIn, $i, 1)); + if ($ch == "A") + { + $dataOut = $dataOut."41"; + } + else if ($ch == "B") + { + $dataOut = $dataOut."42"; + } + else if ($ch == "C") + { + $dataOut = $dataOut."43"; + } + else if ($ch == "D") + { + $dataOut = $dataOut."44"; + } + else if ($ch == "E") + { + $dataOut = $dataOut."45"; + } + else if ($ch == "F") + { + $dataOut = $dataOut."46"; + } + else + { + $dataOut = $dataOut."3".$ch; + } + + } + return ($dataOut); +} + +function PhpVersionComponents( &$major, &$minor, &$sub ) +{ + $str_version = phpversion(); + + $major = strtok( $str_version, "." ); + $minor = strtok( "." ); + $sub = strtok( "." ); +} + +function InsertQueryEx($tableName, $index) +{ + $query = ""; + switch ($index) + { + case 1: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((0), (113), (-1), (-293433712), (0), (0), (-3.4E+38), (100000000000000000000000), (null), (0.4204), (0.5017), (' bzbo>o~bh~Bߩ+~AZ>~C_<@:O/v~bA|/o :+~*CuzrBU/@_zb/UrboZo.Cv,bAuZhbZ֢bbZaZ>Uz+ĪObOau_Ah>BoCvv./:OoZ*_.B>haovhv:|v~֢hvz+*+b*b bO>/.'), ('.C+.~a<ã+ba_ b|:|.~@ *Zz @+_>~âao|./AZ//bboU**У>_bb,@o@:O_+U>/|bAUߣ_u|Z,<ãУ>,ZuZbu* :Щ,uCo+r.|Bb@Bh>OB|._vZoC+UB/+__|*'), ('oZ+C>,|:u r.@C@_,ab>,~bC:,+|Z>rТbA* B Z<.aBB~.ub>_uU>@z:AB|Bbb:vrzbB |*OZZbO@ <:uCvB/a~ :_>.zr.A zOb+@v|bzU*O_h_/U/Aa_U| Z._CA+@_bh uCOZ@aovb>~Bb@ĩU~zBh~|,b_.>UUo:b+ZCAb.ZvBa*@:b+++~ZU,Uâo @bU<,uurZ>rz.,O.vOhvAU//_v,C*U::,Bu| @OUU:b|/O@voUu@..*b_䣢~+/b~b/u_~vrb~~@aU>OZua,oB,O vhur_vaZ*Oz|Uzv* *zr<~~Ub*~rAuCߣܢb~hz>|b@h.AZoUC_,C@r*r|>v>u_>:o@b.B>b:|/O,*C++>>ߢ:o֣,>uABC,_CB zC+/b,/ OOaBboUarv,Oau<,u+,aU*/|bbu@:*Z.+oh zhzCBhC:,:a_oU b*B.buOoBu+ubBAz:~b:hobZB@, A>ob||+hAaU|@v U@OC_vA@|uЩB,O r>bz_+_~ܣ|OArr~Z>arubv@BC>>*OZ|,av*zu.zAau+ _@C/h@AU:,~ur+CuAܢ+,+@+:bģ /U@A.~ah|.:hrb_.+ + z.>Ob_U.bBߣA/Z.vU,:,@v>/Bã||/C֢Chz|~㣣bUBb+a.>OubOrrzab*+bz,~._| /ro,:<:| :+Bh.ZbCBߢu,vv:~@u@o>|~Z/.hb,B*ZB*Cߩ,|vzoТub>>O+/~:*ur h~:B@>:BuZ>.,@>*<@B:B@ObZCo@AbOz_Z~oa@+b_A:v_u~u~u.aU<>O.vz~:ܩCu~CobCba ֪@C|z+bO:_U|:arh B:~r+B|uo,*|/UZ@_/zvo:_ | h: /~h,rzv|ub*Zb,a,+hbCr <,o *,v:BAhAC|aZo,::a~zrB_b+A,aB>z*~֩a_r>h**_av::,+vU@o|*o*Z zA|b|ov*/:b.oB| b>C|bbbBUOAZ, v_hZ bZU*u,@_rU>.hu@|@COZbUru:|oOU*rU B@,~oТv|_o*CZ~uB~OA@:|B oo|Uar~,A+Cbr:rCauߩߪ+bBv*U ubbOUbU:BCb*<~@uU_Z/C h+rCoߢO+oovz*aZ_//v.h@~oavubZ:oZvzZOa*O>C,/r+ZobZZOܪChuBaz*buBo~_bAC/u o b|éAb,+OU*,ZUģ*Z|r+b/|o.,.>v~z+/~:,Ou+ߩaA.U Zbr*֩>Z C|Zhb+b_Uo*bz,+:+/zo|o_hb~Oh.,UBoa u++hor,>Bu ,_uu*BAU@a~_z,ܪUhOao+>zA.U:BaavB~vZ<|.~+uvb~Z uobUbBb:uhab/B>Aé|.|*b/zCuo@+o .zZ,*uOZ rO O*oZ>z@U@h*C~>+:|oZ.bAbBh@bo Au䢩|a:aA:C*ܩ+v,bOo@.,r+Cbuu|bh|,b<+ZAu䢢 /~UbZ>hAB>ЪzaZ|/CoУv.~@+h:v+ * ~hA ,zUC@uoab.*ZBrbCZu_~ܣ֪b:|.h~BUb:ߪ CzU.:U+o,++|rz|hoz.CUbC vC uaabAz.|aa<@>/Au/|u*bo::+r>zB*o_zo<|~@|ooC>b|AhzO@ âz*vb:U:b rZCzbao+<++|h:O<*Т|*vzA@z@B*Abrba.+|/v@o b,AUvur:Uv,~Bb|b|:zAB@oh_<|bBbU||~BЩ/rBO<*UbhC|,b*Ah<ߢZU|Bu+|/rOAr@:bo@B>.azB|CCo֩U Bb.u/oroZAbAzbhZ:b,*,>/Uz@b _~Ba+,A|A~@>,@@O~_vaUhr@ߩ~, ~hz*_|.:+@:avzOB@~â@BaO| o.OrhC*_@ur |@ObOoCb_*r/A<.Z: u>aߪv.~*b,U@+U<<.uhz:B<_@O >:ZAU hv@.bauO<*/bC::a .uuUh:o_U|A,O/ ||_>vrZ~|:C<~|.._ģZZ@BbC__CZB,zAhߪ+@aro@,b, vb<>CUabߪC~b_:CUua+.ArBU.r>h@B.vU/zZ+rb+u,h*aU@.BA>aZ:bAU:ha*>v~ *b_~vA,/zr~<>O@UhUZr>B~Or*>ra:zZ B@hߩ.CCz|bvuzz~U,brAzUz* u_:o,,/@bU,uOZuzBbaur AB*Z*+*+a|h* hb :>||+U/*@*_:B| ,Ar@rhbUUzZ*/>AouoBh@>Z::zO _v.b,O.O|bC|rr.<+<,:<,~Ub~ZC:~Z>Uv~~ABvraBuBU@ZuCAuh>@aO.ߪbUA*B~:vAb֪_ao.ba|UbCbA>vhvb@U/rvaUOUr<~_z*bhaC Z@o:*._+CrB Zv,B~,U/U<+ Aa ,A+ub,>.rvbB/uhZ>U,:OA|*u,: _|hOb/ru*Ģu֣.zh@r,@b.|bvz||rOvh@/ߢ.zUZov|.,|hua+B+~*Z~Z~_<_~,zbbrAv.v*U.<_:.a+<@UA>b|>.<.BO+,aCb*A,~CZZ:/@/O>_zC~,:Z,h/|>z>_+_Уb@,U+O.><_A*~~a< ,:+Chh<+b+bb>ZĩoU|BaZAuB|@zCA//bAo/O~:a~,/~C+u>C*>*u>~bzb~O_rrAU|oa/v,|CC/*azBA,UZABA+ Ub_,vbvrUhbb~Ua+B@_~B@ZzbߢAoZhBu:zvUAZhh>+zv><.r>*||z+hvhUb,>u+,Aha~>CbOCao, //ZZo,*v/@o:aAU| >ģ,>,>u,|U@㣩_v|bohZ:>a<|C:b@< ZrAv*U/uZ:ubv_ߪa+uU@/avChAbbBA*ru Uz.ua*>U o/ C|oUo@,Baa_u@:~BߢhbAbzBOCh~.OhU.baA@rC,A>r+oChbo,/Ourh<,b+h:. |_U ,.>Uĩ֪@>~..éB:b| b/zOZO|Uru|~:B:haCvZO,ߪo bh@Ch_vb.U::/v,B_.U,r,|OZ,oobo,>C za>AU@b+vAu>U*~*v Z:vr+Ba+rbzz@:*b .Ao./b/~~va>o Zzh:_Zbzv~@| /,/b/z|B**@v>b~,֪|.~*_bC/>r*,z_bZz+oz/* C|aB|+Ohb.v.rB~B/@<,o~vU|_@Bb*_֢Bo.ߣuU:.buho@z|* >zU /Aa֪Zu@b.AZ AC/Br~raOUrzvvh~rubCbbC@,AzCB*z |rb/@zAr vbhU*r+A:,au墣z_v:vh@U:v ho*._*b.ߢha~@:v+vo,/.*bO/obB+b'), (N'C hB|,AbB_+rh@+Ob_
BboZC+֢oO* rrbBB+:>o*/bzvohZ,ܩܪ>C +Cv,*~zO ~ob_U:Au*:Cã+:rOhUhOBvzv.~.Ca_~ uߣC*éCv>rZ,b*ABb~>BO/>+A~,*/uz~u@䪩o ACA B@:A_aavãu>_++U+Oa|A,_+Ab*Zhr,~@uAa<.>B*:.zOh*UOܣ *r+b:ab|Uhbvz.éO|Oa|*ZU+|.~O~bA*>B>+Z/>h>|+CТ/:zb>,z+ĩZ,a_Z*vhAz v/ ~U,:.:|.r@C~*uru:*|o/zbz::b:,*C*C+O.Ov>vbb/<.BU_BzAa,Z.uaO aBAZr>+U@~@uU<*u@b<|Cvba U+rzaUa_ Oa*u:*/>+hCO/aZz:B Z,~ab@vBrab_zh֣Щb~rrbbr:A/*vb uo uh_:uobA+~ ~*Ub BvZZB>~ߩ>zUUv> bAAU <ߣ~AbO|.ZAUA@o>CauoA:abU:/A~ZuZ@vOh+ܣuv. *U+v u<,bvv@U_U_+:v >*u.b/vurbbz~rhO,BCCbC+UC+~:.hvChU h Z,zr|b:/zO.@a brB.,a>vU|B voТhauOubhZbz>b.+u<:~C@b:ߩUabZ >rCa.*o_o*z.*/C~O.AbO<>oC,@+>_Z@/a,__A: bb>h@A ЪA@ arUBAr*_+/uaA|Au|zz+ z<:>zO*Orzo.*A@CzA+b| v_CbboA<֩a @::Z UZbBCOAUZ:b U::rh*B, :~o*~:._|UZvrhZB~/Ъ|**.uBO,UraZO~*bvo>CA@/r|aOB|+aCzZuCu@~z>ZC@@OCh@|UOr>A_UUv>hr.v>O~:A:CZ ܣOUZhr:_u_AuC+zzU*_b@/hBbba@* :U*b~B~>֢oUbOvv< *+r+UAv~,*r:_bz:|vbOB@@,h@ Za,b+.a>Ba|BO.ZObu~ _><,>h+z.,OuBBBUbarA*ܣ+O_~o*_>>A:|@ZbZߪ_Bh,>_+~oz/CbOuva>@|:ubU|b<,h:|*:rB::~.b.CZuZa,oOh uߢO_+ob.+ |UabbA.<>vB~ hCvBz@v.~ĩz.>B/a.*@,b:_a|/+_ܣo>U:.obZ>:bbOU,b:arCb<,~~AzaoZobz@Z_*A:uZrBBB.Z~*>@boaB@O.U*hh+b/zO/,v~rb<,CAh>:A/:|:++<~r+>:O, ,OhA:a._b|Zz Z_~a_+>rv@BbZ*rvZ+<|+|bUr~|hb_v|Ob,ܢ:/:baUA:UBa _>u+:Bub|.11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + case 2: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((1), (null), (-32768), (192263244), (null), (0), (1), (-1), (0.0782), (0.3209), (0), ('o+/>z,h/+@ /b/v,va<>A@ *>a|uOv*.zOB.>*CUz .ģrozUo. *b/B.rC>ovCZ.bZ|~ã~|O*.rU@Br_,vAa.zrC+,:<:Ъba/:,/:+bov~o+C~,>ozUb.|֩: >C/baBr~Uba_u>_vAuh,vA>bb|uAaBOO|u:voUC_*br a>< Z:|*<
䢩o:U@|C*,>h o/vbAb/r*/> ov_CuUBabZaOb~aAB,U B+Oub.hzb,_b,A+O'), ('zC@ *zCUUoB:ЪA_|bOܢuUb_.bz+@b:zv_C~vbC|zh,:OhOh |r >OBZ: z brb:~U:b~>@bv+O~/+<_v*.Z.ho.b.AvuZ B:b.>OO_o:<+䣢+ra:aazr/hAhߣUa:+r/:b+|O:B|OBZoO@*|Z oO/,uzO/Zrvu*a|@z:ZbzvbUuz.:h: *_ߣ/rOAr,, >h*zZA,>a_O@/ B.b.ubv.CU:*AAaa | +_>Uozz C+rC|b* /|:>.uuC~U CoAb>.au>OZZr::ߣh@@ua~>v_~Zv CAua,.orr >U~u*O>>v>rz+_avZ *:ĩz+֪@>UoUOb>ߣ_/ /o,*Zb,u~ZZU*AauOUb@>Uub~hU.*ar|~<:+~bOhC O+|Z@:h+O@_o_rbOO|OCa_vA/U@B*|ArzAha|v/:u~|vAb,AhUh+: |:>_z/r*:.hh+,ooUz<,:C /Bu,r~bA/A~r:~hh+OvzzobC:/CbhZu_O|*bbouBv_or/bbb*aZh/@z| @u>:b|vba oUaCZza,@o~vzB~:*/U,>h,abU/._..Czu/zZ*Z_Za>~ra@o.r: ObO+v+ U,_,ܢĩ:hvb/r br:C Z>AvbhuZz+ bb:: >,~bb,a_a*Ubߢu:UOZ.u<_Uab//<+v_+CbZ֪Cr@h.azra@,>UZ.,_,B.v<.Bߩ|Z@|b+B.:/>:.|>bUu*o>OB.Z+u/b~Ao/avZAhZoU>a+rB|/Our /A~,>Ob|h.:Ob b_Zuo*b.B~@*,BC+u*Zr*O:ov+>A.AZ_|+râ_u@Ubbãb*BA/:rvr..,@Ah+hhvu*rub<~Z@hbb+o.hz*|UuOa㢣++Z+_ovur_v_|rv~hB/ _@*||OAAC,uOObBoZU*.zaov_Cohro<~h_azU,@r ~Zhra<_U/b@hb+.z+Ua~Ub*Ab+v~*vbC|,**֩CO+h+~:/C>ܩ*>rB::z */+CB*ubbB*bbZ,h<:Av@uB.a:UUA+_@_~.>~ê:/|vvZoBoBbUB@+/,bU+@B>+/+O @|Z_<<.UBC+a:>bOhߣ+U*>~bCUua.r媪Bvv>Oor+>CCUb|z| >~~/>uB_vo.,bã/bZ+ߢ<|:bAovb~*~zaA+U~zuu>Uh@+h.u.uvU:u.|ub.,vaUrr.UbuAu_|bub>~*C~rU,uu|zuaCU|>ur:zbzu:bB.oBhЪav@Z~,A_:bO@ *zbo h> ~Bv/ao+bA_|+vbUU rvb+zUv>z:@,B êAvOr*~Cb@|oߢCrz.B/:b_*v|O+OC,ߪ,B,:ouhb>oCu+h@uhߣ>C>U,z<:o@ haТ/oUz~~bhC,r:>ob>@>> . .bzrvv_zo~hb_ovz_U:|O<@~UvêAoo֣ubo|~: @b@r B/>z|*v>:/ h~ . z*A:<_,.zC|B@<,A,++~aozavZ_ZraAZuܢ|O/.bBOA>Zuu:BUaoêUu h~Ob>.UzoC_BhhZЩ~o/ZZb_@vU.~z /brUa:az*AhZvߩvCb.zBuh>*b~auUC...vzbrO,_rbo,,:U+h: Ov~/*rCUv@C_|. _AA b,rv++.zaoC> b/U+**uvOoC>U.uZO/bb zZ.< .zCb*zu++bOaUO._@o. _v*A>@|zģ~UbhZ/ o>A:*zb ZuO:o~,v_Cb>r.O/rhrߩbvCr*aBBuo Ar.>.U>ZB,,a@>a+,ܪ|_~z :bo bh OO.h/@BC>u,>u,h_ |b*Zr|b||:+O~:uZ~|@zC:arbUhbvaZUBbģO_.C_vuh/é:<,:~v_h~h>,.,>vbzUz_|BC/C*< hb>uOOhZ@hOzb@zv>~@Au< +_:vU>/Z,OU<>u.bbb,A/+**hzvU||UC/B.a,rOC**v U~oB*,o>bvh>aC oO rZzCz@C<_*:.o:Z>/h>AO,,ĪU/ߪ+OAbh/+C,|+hB>@.:br.A|Zvaoo@Zu/_|@b/a~,/>u+:Ch @Ob>hUa*a*~,bUAo.AO.@o,ob>vA ZZ.~bOAr@BrvU:hb_~v~h| C*||zr,/C|BhZbz+/Za>>@+,v~A>uOBУ..ZB|h uv<.bo>,b.Aov_Z~bu.AUCbA~/A|A_* a.br:O_bO@Ahab|_:C:~h*_b:_Ao/<_A,vvC*Ua~C.C_obrB:z.УZa~BC /_~.bBC@Z*|u**,rBU@C|a_B::/oaobrO:rC@u hb+zO@UCU:ha_*r b//v~C<+~:+B,| @:ܪZBvOv+<,v/~Zb.CAO_~vĪv.+.>/.CAbhBOr@B_>Ou@ߪOUZA+o>uvb+ Bva:r.bUUubZ>aoa||B/a|U|vrO.>bCĩCBh@oA>r<<*B_,Oo/+Zba<+ ,: .rZ+ܩZ+b| aU/>UoCbb@ObUU.+@ZOz uu_ЩZ|h*uoO*.zB@|媢U,/hzb,+/ OU:@r+>ArzC>av**:|U~bU+o ,rz/rurZCBv~OB|>C|,b/Т.A*C_~*~r/zz:,/uO /~Bub+:Ah<<_/zzCZ+vߢbuO u<~zhhB@ĩ.>|vzUܪ@o.:UO>|++ <.@b/r@@ <|z,~*Z/b:<@aBbO*~oozOb>ܪraB*@zv*b~r.Ovuv_|CUCUzU|*+OAUZv,+:O@@B~vbz*>Z@b +O,o bA>CoCOB/ubhO~ur_@h <+@ZCv o*,*o_z_ ,z*@ vC*oOU/uoܣO/~+/.>_:bOooh_h*r<*z_ |aC~abZ/,_:_vA~Bz v A>b/*bCC:OCb |hߪUv*.hr@Z@A+oo>/*AĢ,+_Ou:oB.hC~ACAo.+B*b|hb~v UabB|rZA+U_hC/:BBzA>+|<<, CCb/Za/.AC@:azr>rUh:Bߣ B*B~@*@uAz/B~o>Or~..O|.AUC:_.O~ovb>+~~,O_a*O>bv A>*o/o.CZOZabO@.u/v~b>//voo,< +z~bbzh_rv>oТ+bZOzb~oubaܣ|u o raA>bz|U>B>|*b/@_+<.obo~v@U@ub>~au*:v|v><.bЪ~ uUZBo,|UbZO.|.AO+h@rrO*@~__rAbzC@Ob ohߣ++hUChĢraB<ߣ~Z~/,|COЪb*u, zAv_@@AvU*,*+o>hobu>A|uC_>/uCCv*.+/oAb./u<~azzĢ/ahh/a/UUv COb/r+U: _:u|:~ <<<*C+ao*>b@.v_o/r@*>UoZrb|U.B*ߪĪv.h@/vh~ob||*z_uAUZU/>:|/*_+/v:*<<~|~+.ZBu<|ro,'), (N'abzUUBoAo_/:Aba+/|ab*/uZ+@.,_O+Azha>/|<@o.@u>@/UrbbAr>.*+héo|<>haUzb~_BA_/a_oh|~*:a +.aB|Z_:_B_.a @u~hb*Aa/b oU<>*o>aabr.._,:Au_/ +BaU,uBb>~av z@v:+@b|/ r/@U,u/ hhzz@z.UO~_CC.~|a__<|z|,r+z:U@Aab/.+bBZ|*_/@/Z.â'), (N'<:b>/:C+~uBzv>:aB <>|Oߣ<.BUu/uv|ouaOazr>/>***:z|>~|>UCa.BobU:*:>UbvbZC:r+, a><*bO Bhv|Z r*: |>*bBu>@Av_|bߣhOCCvOrAA,C_~zz,~_o~U|h,ro>*h+au*|@:<~ aAarar,Bb:Au+zO|*Z*oĪhOaUa//|a+u+| Cbzr >vCoOU@boh@brb>o*++<>|.b*@uh.r㩣BZA*vA*uvZvb O_Car.:Uvbܢ,ZorCva>>__Uuv_@|>:ZzUܢrbh>BU<,or h/OAZܢA<<<,>vuAߢbC<,:Cov+u:*u+U<>U.:uCA|: ,+U_/~Braura>a~BB *.z>@bu~oUܩu.B/rC>/>, |uAvBbzbv~b/__:C.:B~.|,|*~ooUOa/:*@./hAz+~u@a@b+:>Z*ahobZvBrA**,o>b/Co@|b/O+O<~>C>or uUb,CU|>~hor./~Bz@ar**bo,:*.:Br@b>,v*o:|>ur>bb* /<.@_hUUz:>/+CABv ,Aé~zAa,:O.,,h._b@+v,bbrBu:ߩCC֣o*rabb>rub~| O.h*:*>_>z֣a,.avhCЪ+or/~.brU+h>Zb+z/bZorr |rC+r< bU+rB_hOoz+Ub,bU+|zU+,//:b,CBz|oz֪O@|+b Z~C@Z:b:<|hr+b,r/ h/>o o:@CUbB:oa| ~/*C@_CAУ/bbo@/Ohb>,r*/,ruz: <@O>uZ|oU~/~|UC<.aZ.v@A,>Ī>@*O.+O<+,~bzo v/u/hU/Aab*bbb>*B.uu:~|B+.zAbЩ@_u.Z++*b/ .|+|bC/B>/bOCzr|ĪZu>hU*::@./ +~+~Bo|/B,+r~avr|z>z@CCZBru,U>bB~Z/|uhUbCbC:h~b+huaZ>u|.u|uUB@|>hO+ub_ u_//uAC,C.h>*ģZ:v +h+hZrbZzBCob@|a+|u+vzhzr. O|,>v:CUuzhO<:*b@|Ur~|a>hbo~>.CCAߪ~|+@O_,ChBb|<,UBb.bC+z__>*oUr:/.u@/ozh@Bz|o~uUv.@Bur>U aubObB@abvvro<.a |OZ<,U~@A|,Or*h.uAC<@a.U@h/u,v~*~:/,AC:,u +A,u@uC,*+v*/Cbao U:bhu,,~vv|B@u~~.oz._bb >vr,zz__.vba_C, +Cv,Cu.>vovZ/OaABz>C/_>br_Za+>.֪rbr/*h/~_ A><~,.o*bAZuv/ohbZ.>vzru>Ah.B/.ߩbZ*ACb* ֩CB /buuuO:b+.<:,Z/,Brbb>ã.OaC/UZB@_:+~z@bzb+brbb|uv:u//a< ,obrhr|AZCBZ~ uBu,<@+ZA*o+<>b/UrOvh>h~Avob+ܪ@:.r~_+>zoBvz:/ oabOC:rC:>r bou._z>Īߩrz_:U>bb_ @v.O.AA/rߣZU>'), (''), (N' br,@ /ab_O+v:_UbzuO@aA~ܪoou.bz@B~: AA/.Uu>< A_ArubbO_ A*Oz.B:Zv |v@z< bo:_h,,oB*Uvb,rZbAv_Cvh>ߢ֢>b|b,,_ohr|:ZZ>@B@o+~O:|,.h~ߣ*O/br.bB+./ /z>ub>r/,Uv,b*O_,Urh:v~Щ:@> *b:h>+,z:ar>_U|aAr+|bACUCA+Z@@z.C.Zz|C v Bor+br>A*:O,rB.BCvhb,ob zz:Brbvh/r+A_BUavOuOu >|rO,v<+<_:r|~bB~,hAb/b.hZbUbBUvU Cz,+|@ _:>r.ha B@+u~|bO@Ab Z|.vAU.v.@B>:CU~::ABaB/_ rZor*zO AZb<@,oC@@_,|hhzvZvbvO|v|zv>bCUB ,+>U_+v h|v~|r+o:_: >v~ rz>u@ub~*BC@z+_>bߣ|ub@>v*u~<>bob//.azbv|z_h,AC,B.|vvb+@*<.Ov/A @bv~/v.u_.bܪ>br,.~*aB|CobBAbb:UACrubBhb.@b.<@ܩo>>УO * o:OvB:~b_~o Zvorâ_vUao*A:zuBA+B~ |Bo>CZ>*/|Zuh~_vO _zhu_>:ߩUb~_Cob~h.zo|b|*|êUhu.,AUbbabOC@ZBhU r.bAau<<,aurv@>:b_/.Bo__/Ī>Cr,~<>z.h>|vZuC11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + case 3: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1761264475), (255), (20544), (1826608718), (0), (null), (0), (0.7414), (0.5117), (0.3842), (null), ('~/.Z///bOrb*Avh*b:/OAaߩBbu.|z*: :rzâBvZ_|CbrvzBz+Uhbr.rZCv.C z/,b/B,o|>hbr+rzbO*azaBУuܢ,C_+Ou:u*o*/+v '), (null), ('*~. ~uoarbbu@z|.:__/~/ bb/O v vOvOuCr/o~_h+@OohOBa~CorvrC.b@>u@~ v<:+.@@>ho,*>ZCaZz*z+zUb,:>@:z|u+@*b|brZ:h:AvC,,CbO~.A+A|+C/zazo/||.|ua_o :Bߢ.* '), (N'*/z_B~|A@@uC+OoZ>uߪA<>uu*b*_U*Z@A~A+hr>ub *@֣a_b+v@ߪЩ>o/._,bb@bB*>:Z.zbB|,O/ZOOCra+â* Oz+ZaB>_bU _b +|֩Z>vC@A~+Zh,v,BOz|+|ZhAu B,./Ca@ߣ/ob|*_..+baorhozvao|_/C*_or/<<,Z@rbbbA_ **.~OUb_BAv_ro/ va~|_,vrCa+AB:/o+,.vz<:.hob/:Aܣ bo. hOba/Уau+,O<>C_:*Oa_v+_r*|<<~Z~C,:CUu.h~@*Cb,Ah bU.Zv|@o+BbhC*âbUAA~_.@C.b>oU.v |>r*hߣz|v.Bzh,v|Zb*OavAU:b<,uA|CbUbA:,ruuz//~z~z,, hZ,h@_COZvCb~A_êBUr,OvCB|Zo |UZbr_>:oa<*UUZh,:.< Zbr/uuo|+uZ/O_*v~bBo +|v+BBCa:.bhu@v_|buoov*>bboOUAA:_zzb_Aab/h~ar+:*z+CЩ:bZ+b .AvoZbr,:oo~>~AOb:b@zuB b_@,,*C|bBA,/B**,aa/|<*Z.zzBb O:_< >|@*./vZhoZ|B@~b.~zb_/U*@,:b,*:AAAOU,oo:h@ZuZO:o O>>CACu~~_Z:+ C:+@:OabZ~Zhuvv|.u~><ܩAoUOz,oĩ_OBĩbA~>|/C~BuBz,_|~C_<|B~Oo~U_b+A~|vzZuO|, CbB>C.vzOBbovZoB.orva>Arh+,o:_,Ahz.r.buB>,>b|CbC o@>_B>zu_Bvob|*a@bz_ab<@h:AB_:A+>C>BurOr|b|Cb<@+U.bb/AO_ *+,: au/~+*hvrzC,_u|,~/AZ,~AzU/rOz,>ozUC.ZAz*| bé:a,hBAĢB< OA+<:v..:r _Zabģb A+zBrbģ+, ZaA*O_.Ob.@|_hoBu a/ABAhh/hO|au ,_֩bB<Coahvo_B_+bb:/:ߢz>@:+v,>:..uuUhC+BB:<_z+arZ@*|AU+OAA,b<|._*Zovbo~>b,u*~Zbh:>:UZ~BU_Z~|éoZ*.+b֢zu~|<*ZroAb *+|o@ :~UCh :+C.uCz.B:~~@|*~@@ABCh*+ZAA@UZ/,B|rb,|_r>~U*>bb_baU*. U@C*/rbUz|Zb+o//_B@ZzB.b_vC:ߩu|vrr|UA,B+>A>zau_aUZC|o:u:>>aaav.bvU|O|O//,h>:~Z~azzOrOuA*b@+rA~b u|@@@<>rvU*Ba.bܩu~bb+U.vC<@,| |vaCa+::bh/z+zh:*vaAuaaah+b@<_Zr|+O|C+a_@/bbhz C bbCz/Ubrv*>aabhr@zu.~/Co vhuz_ZAu+_+ߣ+,oAߢ/|zvZ*ZrUburuz>/_O>:*.:uZ@+Z_ouAZܩ Bu Ubhz+r h:uvh<*aba,|u /r/+::v,h :_<+oZ:a+bAb*>:|U'), ('b@.Uv_+h/U,~A@,u*_Bo+_+B/uAh|*aAaU/v/ o+Bzoârbz_.A<:>*Bb<><>:*+v:|bb/h+OvU.,_ vza:b:br@.bBo|ߪO+B||r@Z|Zzu*u|Cb@aCr<, oa.abAbߢ~rrZ<*/*ģ<>oC>OoB>baU@O@|vh+Oo+B|Uߩ>vUAzA:h::_,<_z*v,ozzAB+bO.A,ZAZ,< b~+:_a~U|_ .|+vahArubO|AAo,@'), (N'/+@|B ArC>hC. >ТC_+rߪߢbvBCr__|C.媩U,brZObou,_|AAb.*,a+<:|h+ _B_/zvv>,o~v.+ v*Azz :Z_b~>bz,:Cv+>Crb,:bo:>UAB.z,vUvoo_:h@/_h//o~> uZ_bBA.z|z~O|zz_+<,:|~ @U.:|.bCoC.>_ߣO.Cb@|_/Ab|OC֢|>vB oBA>b,+AC>vhCB_U,OBC::v+*,h@aU .@b*_hhĪB**,:<:~o.|.u+r<~>~AzOAo,Zh+~rbU|>@*ror*oz>.>a@b|z/b*aB,|:Bu:/AЪ|zCbaUoC>/v@r@zUCbvh~o~U::@OC>u< b_zvO+*BvabuZbC*>CĢUO_*|~У |b*CAv_r@Cb_rB:bv~>ar:Oab~aO.U_CZ_U:ߢ.oaģO*b/: ~oz>@b >|~ba Ba:bOb>uߣbZCA>rCzo.z@>z_U_/br<@_v+hahaah:B_hv|UUBBb,CBAC@uBZ.vv.:hO.urb*Oo|COAOzo_.U,*a_OUu~aZhU+A_z*Zu/>/ba_r,b~@b@B:z/v~O/bhav<~o :O>UߣA>~zu< */v,ahCu.r*A.ģ//C@B,>zC|AAo@ Z*_uC@rZ.oZr+/rbo~bACC++@ZAA/h*CoC__OBavO@|~AA:u~uBb@zrZ*B+bb֩b+hbvCb>,|ouA/|@ bbv+ub.:@uoz:~ A+.ouz_UB vbC+<~hbC~BOUaB~z/v|êvb_U@r:vO+ */.vBC/v+r,hC*v*|+h~rCOv.BzoA<~,z.o:hhzu :AA_h@A+C/bzC_>AC:~~bh*/vܪa+aBraCAbB>uߩavA+<|/a,Cb.Z,/ChOУ|://,vOu|@|Ob|bâaaO/+u|:UA_@ ..bOvBBCO䪩C.,ba|>@hvêO,*r_+,.u~Aa*r@,Bz.:oa>|֢~z+>@+<@B+Abb,+A|ChobhvhhuUBr+zrbbA+aAĢ>b>.zAhhB|hZ >oAz>hhao@,|b~.hrAA@@_h@b@>/OhAr~COzhb,Z, ~+Aa*A|:bb+aé:,~BZ<*|.A_+>b_zA_aO+:@.uh*< +@*A.>r.hu.UU+uUBA:O|>+_ > vZ@+,:hBAAoC|aߢ >Z֪~obߢ+huC_. _o_v,ar<@::BZ~/h~obb.ܩZ~B/|U z ~A>..A:@AZ>AbOz*@Z aB~|A@bĪA.U:*/Z./_UZ_U:z/h>*Ab.UZvo.Uv:OCUOh|*+vA |.h+O*vU@ h /< .:v,_zZou>B~z++AAU_@C.a*Ub|C*~C+_ooz/z@,rb:barA/u.uo_zO,:vr,*|h@+./u b*@@+v:r.z~A@ur,~vo*Uh_/*,:ObhU.orrZaBv >é+*O,@*BvoBr/ЪAhaabo//oߩAb*ZBCb.BOa~o+OboCBCu._aour'), (0xFBB2B8D1429F4CF743301F5AEC311F7C7F1F62D59F958AF667506C36D2FDC59F34F4973B8E17045382F4769C1ED8B2126F4FF2A8F564B86528C26AF2321625466A7F25F89AE4EE681B0E52AA1FEDD88F9E59C7830A1DA9CF3B3112CBAC12216BCF30319EB2BA778A608A8CE7110E453AEADB53D94FA23B4DD556BC69D122BB09EDE6DAEFBC39DCE4E13C228090C2BD2CECD7E1D1BE471C2CF4E4C85BFD0EB83ECF83F92A33567EB0FE6FF71280BABC1398907CF941E94AA5CAADFAD77180E6D283E3B10CC992F8955930D34E5009AC3A28B5C36D91BEFDE5395360855BA73F7D89248E9C09AF490597E7A01016FC55C101C0AFBBBD7941C5E6CBD37532733AB1F155C52B7A1030786BBDD5AA1EECCF3DFD9E849BF884C00FE3C9B53DDBD3D323ACEE1FC1362A47F18F364FFFA396A6F9FC967894EE9FB96D94B647B05AF29C97EAB1FE2FCD0E06D257930BC134C06B4D22BC41455B3E350D35B12C80E297979D99B715F198772CEE90A53D5B93F738D34AFA8D9EB1573CAB7CF0FA1BE186F0C0FB6E287CAA79B5AB8F53B5B601D9793D795835E809F9EB427B6A74A77C100C09B57D6025CFBC29D145E10E5DA285A9A376BDA2885007B60282E50040040D2E7F46AB008479546DBC2F64A327EA8E9FF5C1D131BF6D84B9ADC65DA3E9BBE9CC37B38E16F684242A2250E559EC648E18F3450A7E33DC6F11C2F252BE1BB1830146), (0x745B77A9709CA60E6F872ACC493745AFA4B06A995B437D530432660E71CCE41255F81ABC7C9C9AE28CCD008997250986D601DF50DCFE1030DE23A43E35979DA2A31877511C88320716870C8E43F3BBDE28E0386FED933656E8EADD58F75BACF42F5DE67FAEB7694DCFD73A54F182ECEA67C615555F2EB410E2206932ABDA0FBBDB175EE50D3C307176EAA01558E16566FDF2F03145569401A9D69D8D4E36A2F4C87F79D92306DD2B96A4DF758E9FB700BA0335B8E9DE7684825D3C379EA2233F47AB4DD9688C42F615C59AA0771F72091E9CD24B01EA0BEA09F456C5C9A68CF4819F2DE251DD982EC03EA32343D50D63EA321802CFD73E5DA063D073357C2C6F38A61ED8F28FB84104A48AC246E7A633E7F3DB968D8A24A960CF42EE0C25F8431134EA9CB634715A7AD7FD2B4C7B17B8BC9D8B42A196E1AE827577224DCA34DFAB47B012FC0A7CB282801CB68CF95DE4B88A316F99B6A17B523C1A41BD4E0DB0A21E8005CB04BCB220D9C0217A2A228918926AC398C545F5A535C0C0EF3AF533736B146D795719B3CD7F4EBFF58001271A91292AE34A18DCD98B5F9544FCC2E5E48CAE0E16B40FC079B6F5197785FF253398A65E11CA5028533794EEF8836FD1BC68DB68D2F311658169B02D55FE65538B3A62AC5563D4193C85BADF2021C8F646235C0EAA9652408640DDA81922D354D14162BE21C37B5893C22C4D3832455F), (0xE632A257A9F4E7222515862CFF19B2660DDFBF09D583A7037AE76A050854FB7D065F3CA1B27A976DD6FE9D66D267C2129AD12566A097E5628A9EDCC18AE11AD11A0825A0DD10B492475133D6E540311324586A362F95DD6F79D916139ED5E3F4E4CC4CC9412234891D921E4E630F7D496DC89C3177E3A2852BB62603FAA0F4716E3FF119F467D20223E0189C768E0B695CCCA6D538B17D0029C79D8AFB308F7D9DACE0241E635505F69A0D96CB050E9DAABCA72DFA1F38BCC1F0EF2DCA4706F3519BFFC9ADE64BF977A0DF9EA3E63524B800DF3F8961827E7424622E73273BAE941A45300544EFC371AEB6593F9A18DABACB74C967C669EF18815589831D854F65300989A1041E73101BCDDBAB293ED90B8773A7B27146CDB1551884EF6640542866F40E918F39B6AD00B84BF98E43EF427C7EFBA9DD9CF3EA3BD74CEC9984AADB79B245342F487B4EBDFAB1B9FBD42212284172E844AA4BC9012455B8EDC9137C0E6F7FDBFEBA133402ADECE2EB3AEE66B439C35711C297CF677B330AF2C361F3E635AA8B5447136E2E3EE597BD68DEC635EE03B305BB6A4BD8B074828708413F4BF8FBB58F63126D265529D2DD0011FF9D6CD403C0AEEE2BCB5FB3A4D391E625FCA64BC46C2937D2DC958CAF92976ED79E74E51A343E7E9C0AD0EA30B06D99946F04D636B44C92743502262A213E9833F0DB055EACCBF1BE27AFBA9B3E06216FFBF8408EC1372251E270E53118547ACC37B63FD5673BE8A312180F0592F7352EE1B72E29FD0A72B9B8B47C3BE6BFA5D334EE6388C74C07C00F9D7BA9271DBFEA3BB750612551CE2D43861CB3BEACBC53723CD0A493AC6795AF6D195F8FC9919BF591002F6F44ADE31F3645412F530162E02736EB4C1A578E50BBB1B8376E9D7AF481BE2DAC8DE32E8FED845C6725655B6CB67F6792A64EDA3971DFB492F4ACB199CA4CAE95D4B65343085B5F96FA272A55564C80EF35E74E33E4F33BAE2F9C9A40D3C39CD9B7C697002B248A4AEE443F4AB55E3CA82BC264E3FD7AB0E07BA5146CC11EC3378A509E8FB480C3115D0445A0B4F1F9D160F115115FB9DC3C16B685860F1D88CF8007BF64BFACF4ABFE5285F835102C89AB430CCF09B2D8D0736279FDFA3C013F7B751FAC319411B3FD6A120C34E306058AFBDACC11B9C5CE2FEFF15D33F6B0C151457CC0F07F58173158D29E9FCB9C8F5B7373FF61352EC2AF507D41A3B38007BA50BBEE6746140BA2C39AB8E7272F63536101BF82B05F1C17B910A00117747DD8CBE44E0FAD28155F685D9E9A75DB882119EE42B2C1840AF19FD6AD3574098B4E1CE01C42E054A538EB601A53C181A2DE877FE82932CB1746DA5D70D77BDFEA5FD14F7D94BF4540C54809C66069B62F1D34CFAEF521621C51C9D56882E3CEBC0C75BB8171040D1E413E22E02805B6DD232D52A2AC31F53E6F332CCBEADCBEE17A4CBAEBAE34BE1926B06CB7FE81F34B12F74554902B10DA807D113DD84133657F4066DB4ACB2FEE6F397CFBC53E3FEE3FE0B9F29769514E3CDF6B30228040E57D0737BD1B170047C856E557AF1415423D23FEF78840CD16EF179F6A60FECBEEF8967EBE0682D227DF722A4183F99F27CA28F3FE82495D3C3920CD037896E7C98AF75E1896573BBA51D61815158B93F57877A0370BCD6BAF394184E6B4CEAF498B60B78B9B869173ED38ADAC304726AD8DD78B00F5AFBEBD8CAEDF54D254068226CF8AB5D4075AF2E62C49D21FBE7EF21BD658DC43AF53DBA2F9FEECA73CA098322A8561BC71D9857D9819C966EB9DCE2FEC39FCFC293F777BAF12DA086D4BA98BB0A0F4381D35A9FDD25FAA958A75B65C30BCBA03A49C08EB0EE50D5EFE7D0F4D703DB54BA99512B68FFE29C994E2F1395C7ED7B190A6E71397092A37284AFF554F5C254CBF6BB39BAA0374A5733E562BF4D3027FA55EBDC956A1B39F6ADB8E44FFD37A38BDA47AF0CB3B068C3241A058B2FE4355487FB0F09F5BF61EB71330CF752FA6A0C41E6E4F5912B36957309714015AED6C9739FC7F23899861AE5C38B80B3716029BFF94938FF3FB35CB46986EC3E11C5D25C4373C33267C3A860CA0FDD9FB5E1F19957901C659DCA33DC6B3DDF02A9ECD3FDB924700DACF7482590D8353FE5CD0E779542E671B96CBE793FF6C729F495C6ED3BDFE69171F3FC5047E6C4C59503E6AE3F577D56F652444C65F6DDB6202E30FB1147F415D66D0591568629C2A7F8D42C0028EAAD286FF6D99B9A2B7B16363029B5C9A45D0FC0C7C241EBF0602871A47D22A1A6073383D2A1512A8A3C419A7B2056001CDE54871C3F51186B3C7F86A119F5BE48749028E631E6F2FBE5468B80B760D01A2864C618AB9566B61B189621DA797046934206802D19DAE7518B26F8C597B3DBAF6C88A53F95ACDF2972DB1940C1217BD644FD655A4FED1E89DEC7106E7DE08364CA826DF0CB16FD952766BA4EC1968059BB1270AA4E816F8F7A1B50CE9C70AB8257A4864EC37B0B3DFFC022D932CFC84846B6A36B7FD9164922EE86BFC62F08B6CB27F71D003196300742AA7E5E864CAA530887D5CD40127E8E4D2BE4F45B77D0C77C1E0AD8AB38052073542D3EA7EA9C91EC5CBDA732F97B15788EC315A13BABDAD9B6E27831C1A7D072A559EBE53FE6628F5317FEBA29847292F5501C64EF7F37A84264E0F824502AB4DD248DAF9F2048A850965E23AD10A0326FD54C618B6B8326123392DB056A5AF2FD49ED04F6D303C51774145921040B21B4BE985F03B9296191678D5B8D6D92F64B6B366333AB3B8CD1874A17573A050E38612656C20BEF34107B639F55A837B9D11E0DB5DD97FE19730B7D8C7F120A67527F131C474C244F7BF242B8479C37395F9036492C4F2090731CD3C68E62C4FE70FC3CD6851B7284E9CE49EB4535C1D6D4442CEEDBC13B034E72A92A786DB1092D44474B6F50A4341DB15F5E05455B3D4AFCE24A45E622AFB129980272480C8C1D40CE00FE7677839FF8C12A61DD0E09276BEF8B7B66C34721978A35C891C1C5A4C340B4774A4ED4756EBA4D24F83DE42B8EDB06688110B67D86DF56EC41CAFE36FB759E9C4991DD2D0B161CBC76123969A61A39B6BB6D23B28A36F07AF7E82393BC1629729F47D1FD0DE95D6AF40A076495ED363781377B9E51EC021291623522E278F06FF8B6CA6E484CB8D20FB8CE803F9BD50AA1FC12749A9B20B345CF5B9BA42A888B09976BEF22D7FF348EA98E991D71D2F58D3A80E6567BD56D96171888E11D2DD5203376A82FF5D7CA0CDDF5F10C8795C3EC661E79A9A2248DC20E591BBF7643617BB968EA0B3AC58752B6D97885D4610E71549C8B0EB42B8E0EF8D621ACCC0A968A9485531EBBC8B1908716F2C8AC07EDAD4AAA6AD9C852B78DEADB1254A3EA96BC42FDE15F0DEFC59BEAFA77AD38C552E0E8845221AFBCC231CDC533D0B65CFCAC703675BE169E9F5AD4DEFEDDEB0A451578216C1F88750C862BBF8148BBE4E58DFDDB2CF24F94CA59E5074CD0CDF456C3802E5884E0DD140B39EF92670D56AEFFE970D00FED42C5E357122A81283BC83758CDB89D8C50AD20C711C86002635C9E584CE74D1446D63D58753DDEA282D2FE176B0E3F9E116398C3BF48CB7A65D0F3B59C28EB547B1301E78B351722CE7E344ECA48A7551D0046E94E79650E1AB2E2A43A191659F7A9AC480C4812DC5C760541048CB02D299E989BE1F205F1AE03DCC84272E8B557EA4720AC5F58D4ED6A8CD87423F99E02C57A9B708A7805A3AA99F87B4A89E99D4FE92A359F80DA45C3AE77652D8D8A0A3EB58D084D34CD72417CF1C55059A2D0A34B343ADF587344A045BCEBF090762D1FFE4C850CE1401B1BA7F4128F14F56A0B96C1E2494F3AD6423867F787E171B106D4A5621D1DC3C1FB192F276460B59B5042E059CE83D3D0B36642D48958833A36431BAA6F935CFDC2FFE720200371E172CCA7450117E27300D4AEB6CAFF48A295E4F121451B2BCCF5F296DEACA3A0BFF46151BCB14E391E60A8A99AF4A622C3A7449A3B12509C67A0DA4F1E8103D66D23EEB269AD9BF147BBD2C0AC7190D84FCFC3275809759DA3D4EA0BD6FF1A9D5CC23C6705E3B9261B43527F3F8FEFF610020F4ECDEC7E53BE511E94C3902A48914563DA3529D26C069D1C14B6F66E13E4E3FBC4FFDBDF7053D8B8A4D524627B1909DDFA2C05C0E63F933820C059ACC7F2FAAFDFA46558C575F3865C712D86E23A90FBBD1863F7EF2305855CA3BEA00A3BF0B1DA8492D6B3B11884288F6475121C45E62F5DFFAF8F02C0ACAEDFFC21C7437C20806BBC6DA7CA47FBFFEFCF6FCE8073405DC870AC4C4132C7C3E637E3B4F6BCD50343F4B65FE84E6515F3AF9F4350EE1E6CBBC3FED2DFE43F28E4A9B18264470922EA6C7A8BBCE0658A1B8648919384630819770922CE02236FB58D7B4E8CD2B1BCA67C58F46382AFCB5E74B7499BAD856036A968ED3DD664E8391AD62F7526FD38D49BEB273B6EA486C74DC4494AE9C417F81B07E369D47ED00760CB48BC804637778E750FB26E24D7F4E215F0021B9D4F56BE276A2F19CF001D1B2FCAA36BDA46F79CD1CC74C45599E62FEE87BE7ECDEBD37BE20E58EC085DBF64E2974E5A349917CF086549C0DA92589D73FF3B37419E5D33F72779CBFE0B94740D0FD1CE5B8BFB457FFF7658A202A15FA5BB6809228823444A1A630D2F4BD0FCD0D5C3DAB09A41F803E5B75227F491E4861A2632A38B4184DC8D843118EE26342E8987CC4ED6AF0B7960053CC0D12C45788E8705159E4945844EFE231600DF15CF73339E7CC595AF7B1AC9338614B40B613EC89A67212E803032480FD87BF57890FF7D4DAD8DD8B2E8D789FAD515CF7F8AF2C1D74844AEAE54A35E3A7D95D70F2540A28697666DD36605A18F9723BB2A72D874E5AA1E204C40CEF8FA2F9E3553008AC5846338D81484FE7132A32F1720F833C7A510E15517205635C87D63A3C7C05E7F0C6E26B739F05050BB9CFDA921B7C801FBD690322F25BE640D030FA7214AA97244A00AC2C17C8DB4B080A97A32BD0410B561A7F1301C5FD6AFC2BA36E0B93F60F37B5481BD05308F48DB719E8C34315FFEFEF1CFA2B832384024130EC256C3F7513886B7588253A02128A8549AB15A6B815A37F1C76FCE3B492C4188E221BCF2178A4D53BD89F77C9B419E7A0FDD9D8ED9A77D681EC23FE17A4B6E3C30DACDFF6BB64D106406BE0762CB6675C1442B6B9EB2BF3AA454D3454A6BD9621BBB3BC083AF0E59907D1AD2E975F5536BBA10262FF2AD8E1B835B16D2F7D6082D5BEBA78F95F22235C1DB1197EC413E5F8FE9805BA342191DBDA4F043F78698A712A59D8A5DC3C5B7EDF05E278BE63F321CB7431E45AC7A19D299D1F101DE4E4B327A7536B3A401CC13C87DB2E3F191C775BE3730438A51662B83B7C3E1D4B60FB202E50160F88E78B586FA7D3EC725D0F81A7B43A70DF7B8291F0B2FEC3DDA4F126E00E10C80567D3FCE7ACC8FD437646DD6CBD7597258A41B2CD851FD5E8C77ACBB6AC0C644D467B40E03E8833B2854D7A6C2157202E590155CC5DFA7F48FD131F31FD46966AE190254135B6E6010DFF4837A568C670599C5DABB697EF4BFCF7E32A6901B53EB70F8A9132DFF8A31A53BF5DB247A2944DAFD760E9EBB34AA0D9443DD3BC980B4A098095DE353D7AA3BA9162D79199B4554EDDB9295455CC5B40F0589ABBCF5EBBB413A8C70DB617715DBD2F5951720E3F90E885DEDFE1F5B4B4399D45E5DFE8EA32A7237EF1ED4797C647CC9726720ACDE1190AD24A80DBD21DF412D318D28C7DD44427AA4F904EA2A0ED1797155E8D422FD063CCD5159FB2CB5161FCDB747EF4BB4FC2E14B607D51CA67325C6844BDBE66D0A4486EC0A7BEA574DEFE2F51C72C6F23DCC69BACF7CF5212016EE3434A8693A2960ACF3685FAA7033CD6817F21789F05ED4468F722BAD9D5F55BBE39DB6129586A8CBBBC5D389DE11E976F204ED2F189CEDE55061E9C7FDB31FA402A3B6D28DAAC291594BCE3A8B4A786D88A4BB887226A356BFC0C2339CE0DE08B62F873A5B16F947325BD5CCCEB36A15E98C3F49079731EBF06012BCE88EF4787DC5745BC33E1261BB64462650E6980C66AC4A10A185011EFD9B39FAF43C6EA3575D4F093F0E52BB69CD8D93410B8B19C816563C44E3D6E8C4555E2804277D8F0592CEF3979EDD58599EA6D4076DDDE2102022EDD6226E63866644D9B03AA742500E9DBE3C97723938FDE2A64CF2E156876C17D4048FA8D3246B6D3149F3A82EE76473F8C01FA578ADE9B4D84FC8269384EE424412D34DD055CA89D12A40EF3555C3BED87EE88677B69F361ACAC0936C34D9BC6BB1540C1416A3A30595D44E6CFA7F827C094E149C57DA9D839D230585272D9C5094838401B7AAC1DB4580D1E240D9205B4E1762F6B51003D6C67876F39E1DDE7837FDD876FB70C46E8C4956D6F8AB42C402BA471FBAA5AB748FAD4B3F23DE3D37A269BA5300A95FDD53046A6BC92CEE1B35B2E0E3C6CEBD824253F75E35853ABE1C1F349EF0EFC3595A79CCB63B3FAB52CF300960ED4960D3BC2800ACB20197CDC9BC4FA9F85F1A55FF87995D01F74702A8948EF58BC9C0D2BE50D2D8EF169748D1FEFC8EF0016A7025B37155A003D1C4D0FDF42D82A241FFEB7CEB977C3166D8F0508B12FAC812A73A1EDFD8587B22BA7F1DF7E12279C63FACFC937315C2F3E44C98655F88CECA18EB4CF363C27997705A31186E4985B6869A5B660E24AF91672AFB8BB005C321B053EF05D576526D23652318D4BA95AAB6E1EEC52D58CBE43BBB9C38D6EDD76A870F681A5A7FD10037EE32990186BCBC9550D4DE270E045797FACA29EA2996458DB891C5427B404710DE9D3F1622D2B4FEEFA386190943890B10826FB5B7161E57FD1B58E4F76A1A108DBD4860C5316518152B0A76102C747518BA31F8E08159C88EE7290789C0077599758B4BFB1845DF1D47908C1B9847C0A6D3DC3D3811200C638FE1DE185D9E552384ECAAA1288A007452EB98F0CDACE6AF5860B5E3CA3D78458EE86B2667C6BFA94B6886BBAD2F7E59DBC8D525970B95E2FB3EBFFCE8615957646512301EDA0C8C3BFFB565163AF228E25C17F15842BE7352882B2916B2C0DA0F3F57481D4E4AF1CC58F9975620CCC03C970A8C4967FF11B69EDD86BED375792EDB55D6E3BA1BA41126350F59172D21CB6AFC8FB84490A74035917E60B432E8D380788ADAE5EC827B666B1322EFC89F71ABCB53E6F5B0DA3ABE96AE289D336CE34C3BC89EA256D57E6A0441E97D74607CF20CC4F8EF01DDCFAE401C5F3E59EE230E3FE6A3F000DF44F5D57CF17EF0CD3A263136907E64043A6DF8F0523A764010261EDB4D9DBC7CE13D7FF31994EC50AD82E2390D135DB49A2BAC4607107D0A8F856CDB50157FAC69B455530E70EAA581A842DF584D32FCD86A4111E17675C0B0657384280100980335CF48CDFAA62940F6C46EDDADB242426002E5D46DCAF34E8492A8FD567D7097BACC227DFA2EDDB427D0EAA216F302B33131B80E1AB3A57ACBFA49580D2BEA7953C712E18FC458412521BC9CD04137818FF5CC24C5628CF716B7A1FFE585B6FBE6615E4FD021237CD976E8F907189A8AC2B7C8176FC5B3E13A2BCAD812685BAF7AB0A67EE2E7B16ED25F4B4E8993F00E1D272D2DBDAF9C10AD7D15B4564B5A711B398E46621B97DB066945008A7567A62BCCBAFB3B3DF1DB1495C175D1FD0886F4CA235005A99BF18F5227545A8B9638156F8899806F35ED47A321DC5A21F90950BE1BB05207907230B96BE9069D7098FF996072747EF6959436086287BFA76D591DF39C7FD5D60DCF0658C6F35CD6AA3298DCB0C18694D1B7862C1C0F3DFA71120E9FF899D41929B352A36E163F92475F5E2FEED2E6ABC27921D4F9A9CA0E811BE7B4F4CCEE005E7FB2FD6EE336CB87F3E4BCA11E0B9E2B62CD7F77FF2F7FF95412422E7A9D8A715DC17F2FE93CEF42565CF5C51D5D7300498981FF6E986F4033040AC0E49D0D566A3B534C9C6E3225EE3D21A229BADC06AF41E4F10B8B12B5622EFCD5322E5DC94FAF5AD20A2673EB576C112176CD1678380421A2B81C4ADF289DEA6D715CF3CFEF68528A5009FC78CDF999AF79E14EA50874AD3E0CAB0133648BB96C4C1679FA7851421E6A9C283E07A8E4BE729B65374F4554FCAFC5C334572F15D450802CB78FAF3728AF303A6C5C7F2653C642B0C916721D06B17D4AB29E0DB74B8643DD777C2D3ED3644C981F0AF8A0309F6F6E046E5CBDDE6325F61254849A9178FEE60891AED79913ED54D9DA0DFBC8DD1A132EAFB2DD29960F0456371C7EEFB206960C02A79EE097C4E080F7E404652A3D453A616BE1C621BC72929A8162076E7527D367EFB6258B2296DAC25C31A20AAF2BF9D7347E4614DFEA4624FC461652E91272BC210D3A771FBF4ED516F3C58AC097FB5578203A06E1CE87F570008EDC7077E939BEE5D9A1E172C7853F610DEC14CB64545AB0EAC8E87BDA527545071F2062549F0A9BDBDACE4963F558A4C770C0ABD0A49C3A81CF9D2051331B773CAC7BB854DD0C7ED188EF8996014CF56033A45991C9645272F5D094F1EA4A98CF471CC779A05FFA7451CA57C51294707297B01D8EB1E5634819355EFC677CE74E56BA5EF4858BBFE3A9E5400F0C9D606160226A2A2D0A0D51B97F606AF10E0CE4D3197E58458BFD1BF039E4DCA5643B7BD4FD8C4502CD114CBCFD4B061B54E2ABD85B2BF32F081BE4355E29F32530BC4533E485F371C7D215F821AB4840E6F0AB4739044A48484CDCE1A81FB4932E177C40F5C236CEFF2A0089060AFD6CD3934E6D8EABFC3C620CFB97B911D9B82D82CA1A2F075B24C9DC581EF3C1324D5F600E04C15704822B4FDEE8C69F05DD40485B7330E33DCC4829A3A243DD38A0CABE484903C4F6D67E37FEEF38625E2AD68ACEAB75CF0C6C3241BCA7B3624E4E072E1E1856CCC98B5174F4F8E44E93E5CB78DBC90E9D3B0BB1DC16C2084F231BF9A0E80A4445D409B14349F0CA0387E3ADD6DC3A96754F69F312567AA607731251E8FF3366899185A4C217CB433A31BE5423143172F88584617E0731EF5963A9C037AEE104548D14355695C46D7426C8D0A82682E3419F69537AC1E8826F964B6E6DFB0B9B50AA0FA5FFFC1C52B116ED574E514732E0C68E98358D8982A491D5C05A660F891B2D7FFE26ECF34583069253D491440E4F088DA76C7355D3207D016E165C085B17643C10E1491C03D339153EEB35AE035DD77141E8581CA7C7ACDDA9EB852F26FE473C7055232CF5FC89D4335E26E7FADEFE004EEAC672CF479459347B62184E09FE30A3F92DBE2AAA7B556E83E949A0C4E2DAED84E03C37D47D38B0D9E88A8A6196296FE633F1A13FD5947F61043B6E4AA86F98973AC929B208DF7BF4FD50C1E0DB0CFDBFE9CA80E129BDAF4BCCC6C031DA662178E1E326DD0FADDD6485BC3284D28E96074DAE60EDEEB76D7D19EDF5420F3A2A972F490EE7D610A04BED1C5B7D7B2A693E20B8F42C05439A3A75A9B321B89B654B91AB55998FBE312CFE24F0C25BF001FF74B7114645FE81EBAED4622C6D8E8351B70FEBCFC4CFBE7287C72DE042C7DE85A7B3AD017A1F05931969FABB5C14CF7F91AF1B4C14322AB508AECE8EC0A198D6F5DC74A9D181D7A80A48B66AD503167307BE4EA3BC82716588F808DB4076C277C113B57F90159E1FD76341CB8BCFD005885B770252F51A736B0F10E9890C5783863E99B14DA6D2E2203ECC5940B5E9C9180342F4FFB024CC09320480F4A486DB0BBE455D362EB7E17894E21438C132B52557C185B96283C619CDB80B9251FD8BA7F14D92709C92F94B617C6ADE0093380F5F5BACD30111A92A7F336876AC4F26A7667C3773904498C4D83A57E628E8092A7FFC32F640A896DFA477F1592A82AF1255C377946BB47F1AC2D80AD6C9B301972A4DF6A01C2056CDD557DF28533FAA559B3590556074CEBB8D2823789DC015E1765A2EDC8BFF06257CB9BF03E546C7833DA53B8422AC26B58F3B22E3FCDE200531FDB1F910CDC9AC3F6AD8B6C5BAD63660A03AE89481BECA23795D50DC12289E99A9D1E794CE727FEB9F54C7C37FEFC464EC835CA33770B03EE7C5976078D01D323A1D1BE8EEA1922DCB0D053CF6F6B38998EBEF9EDBFB523921B8AD08DB0F62CF37958952D3EB763AE12ED82A7B7347F1021DD78CE08E564ECAD2C736049952CBAA35F5516D60A5AD75B4ADAD2337CDAE60BBF6CD37D5DEB93F4A980124403657DC1C80358DE683A1682A173BD0B91B831518D548A28583C4673C2212C8A479357E45C116A788207A2845650DCEA2E8763F04EC0B6AEDB55688CBDE41C460E8B3B0E1BD8AE804EB8CF85B105D108605B453ABE3C3B87DCA80907A9DEBB9DEB5B76CB15CDCE55D9E2A296F131FDD6835F2C619FE188D14FB43272CFA6D66FFC3299558F06F3928CEF61DB9AA596AAAB328449B25AFD0AD3A47B619B5B85320B3299BE97A7467C6C99D4B080AC37A91E87C79C228DBDA2358F82EA8B92F630692ECF670BD71204EC08DD18864D8A276DD1431494E8107E75F78908255BF1DAA3A34651DCCF9E4674C2B01AB0A41BE7055A7DB94EE29C811D51F2134E0ADF90170274E207384B9D33FC9FD138F6CED0DBA103CADE378BC107C4348BDD8AF86AE32003AD2F39E0CD0FE0865243CA4927832138AC0714B2DF77B3DB4203BFBFA90434EE18F220A1A2C135BBFEB1397E3C7B0C08BC524C63CE6E23357C5E9EC94F20DC4D0EDC3134628095EBD159B32E3E359EC6F7B70357B8D01FA9CFEA2444226C6BDDD4EB6F5F4AD7A53BBC609275BAF5F746BFD8D1971C85953EBD8765775B51C864EED65953C53E7B2011C79B573EAAEFD9F3DD854A9AD3C04F5531A2C3712EE06A982D87E39CA481805CB18554EA3EFF13978C837DCC7EC91A1509FD939CB7AEE3E730BF10220C3D4F5C05EDE94D6B6517318F2CE5AA629E19636CCE92A6EDE3A503A26DBA7EEFF08A4F3420C790E0CCA9A4E5620C8BC8388491A5ACB63EAAA86E2148E6ABFEAB98429FA1967641D78983A024EDC08BD61A3A6AE828D9423A4CA48CB2A548FA21ABF94D206DE932C242BA1C291519BDE7E34A2EAB401582BFFF6555F2EA8F3140887F79F3736B683008A8A56EBC182432E6A4CE5B194EE095778D2008943FD7B288DBA196A0CA7378E1FDA398701403E640220B45C1D626399EE37CE64A609CC8D0F2E6E0778D911C3056791CAB4725628A3AC8723392F1B1B567F8BD4D8D2D8160DBC87D2E226EB290EF156B5D0A8E56BE195C10982A943E01342B1095D4CEA328F8BBCF7FA83467CB15E1447C8653AA), (0xFE34311DE936468A7BF9F65E1DBB207243654EBED716E4F44482484FC17BE08037F4D69A710A0F8589F42C3B706DF826240A42EE5C19CAE8503DD966EDF7C90018762629E586003856C935E2E9A883D78A222AB638F2241E29ED493431A897922B2B23FA46CF409E0A099892E3E7FEA7B901DBCBCC12C7265108FFF73CCB07AD32A3B6BD858891BBE18CAB2E59923A42EFA27B2FCDCCC51864FDA83ECF49623E02EA5F40304022307020E9406699CCBFCEBD089A50D7E066DD9E5988E053EB98296D2C6E32FA11AE7F4ABFADE285B1CA30E8701240C8EE2A0AF96292E699501D345116F96C5D8DD3AC5A1A0617338457EC8F57F7E3D858617E026438977EC7E6FAA278916FB85DD35B9C66E5ADE812D7750AA65741583A5BF8B47B6AF9543C2D92340B75BAF2E83431849B467172B496EF8CC38DD770A4A1681C98BB3CF3D90660385379DC9D1C82227226BDBDF3E98600E47B6C90AE5622906A0C9E5A2CF73EAA94E6391F3AB9526F416B654AE6E4753212BB58786D76B1E230E971907E27F57BE812280CB066C52B28FD4F43F1D8A986976B48719FC53D1E3556EE5048C1F01976E961D3BC6881ABF52C4F6F266EF15840EBF913DE83DC22D509D75A7774E2670C35CD0776D5CA2EE99D7C7276CDF8C66496105CC7DD3AF20D3FFEB2912733804AE863F1A0EAE16A20CB29410669AB071010F5E164869F2FFADAF936D6179DC269FC288E6A07267AB4A53CFCB3F9ECA393F7A18031521BC34833F6C6F0AB94082D67D80A411D9C09EA7B2CBE49A27C01EE56A2DE751C9117E0644537115F8A091033CE4B20E162765B9896B6265C79A6B7F4D89A08B59311D6C029DDD865F88AF022AD16D330E00CF42C83DD86DBF083EA9E7F1C87F0015AA0BD7560B8849EF59F0BC504AE63D28713CBA6DB32B58AFBCFA6F239E5DC020020537616BA80546F8E8D3D7A15ECD487CBF808BC4A2528EA327A901292640FC308C4E35BECBCCC9377364DA57710E5E3D16B6DEDD346B6FA2A8BE340F042DD297D7A725109789A0F2B754413D883732294AC4026F722F0C20EE83161D98CA235592427FD9D94DA58D15EC15D01A322A718C0AB4301B6325B8AAF43204738359FD30FB9B35B758400D2E855986092C06AC5894818E05E33A3F1CC73EE50B9119828228AF2E96E4BA23CAA70196199FBF7EFD85ABDF01DBE74DC16C28F0296B019D7BC703D08CE81563DA6DC36ED1A4257D17BFE785E53A80B641615D3ACBC9FA5FA5742A429BDEF2157037F49408886C1D36ABE879837BA831464D9F2B8ADAA8106373B96D89D2E138CDC205BD35ECBDB8F54FF41FE180CC29DBE8FC5E3FD69AA59FE42094CF0E9363CAAFABB175FB0B599FD6263AD6883EE2A79F9190D68308F727601D41CC28F9F6AC905541D50AB3D0DDA2BE59A05FCF07B54DED3F6CF28D3796B49A05DDB99), ('90487073-abdb-475d-b891-7e3a184665d6'), ('9999-12-31 23:59:59.997'), ('2079-06-06 23:59:00'), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + case 4: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((0), (238), (-1), (null), (0), (0), (1), (-100000000000000000000000), (100000000000000000000000), (0.6392), (0.3463), (null), ('Brbv C@**ZA>oC~*v:|~~bzhuah u,:_r@OZ>,@>u@OC/aAbCb_bC/o>.@rZ*>ZbAaA,~v:@:/:aAb.h oU_a@u|>Auzr.>,/|CAhB@B/z|UvZ~z|Z~UvUC>.ZCO,|+CU ~B~@rA:Z_o~rCov~C|A>+.B.z~+.BUzUhrbaaĩZb~Ohz.:+_Ou v|_Ob+Z>ZZ_>BoaCUZ<@rz/B__:_,vbhrB/|b+C*O,@b,.a_uzuh*:b. ,. O*/h+ ,uh|*,Ubr_>.,ܪ@~|z*obvbbCbhb@:AA_u@_: >@aUa.@*<:Z baZO*UoA +u/CrCbv oA rb@+B~O~/*|.B,,oOv> >bCAv*+:.Uu+Or@BrZ@+*>hZrv|ZZ:u_+/ߪ.Bvb/b,<*,ߢa,.bAhC+aZ.> /C@:rz+r,b|rC |rBCr|:>>B_o+rߩa:Cu,h> +>A.b.bOC*+h@z@_.O_z*Ah/|vvoC,UOU.Ouâ|.ߣ @hC,vh֪vUOubOuO,u z.bb:BZbO:hZv>uA|z/Zh |_+ bZC*|o/|bb,+*Oh>A~hZ|.a_< >z.Z_vC< ZzZZ~~@>B/h++A+./*|zvaC/h:o,b䢩|, ZarZ֣Z+zr|>U~/Uv@bz@hv+aBr+*~>b*A|hOz@u|~h/+BA@z*,bCbU+r*hߢ:C|ao~_>.z~a*z,U>u/@Oz,ouhO:|+Bvhz~_uva<>/:v~vBr<,_Z+ߢu A/ CZCB@baoA/vߩ>A*_horrv/O,/bz~֪bZo+OZvho* z<~b|u|@*v@:_A:ob.vZ/uUA/Azb+h+*uZhv.o/~uA,C.C+:ZubC~o~C,bĢb/vUh_Zo|Z@@rA.a*z|>|<@vv*C*Abbohu@v~Z@z:hbUabaAO~Urbzv._UhU<|B,UBaa hbBb+ u_rz+@b_BZZOb*Zv/rr *_B:+zBhuvozU|vABUߩЩ,BbZ/:|*uB.bZbzv,B,:ArO/+*bubvO|ZOab/ bZu+>Cvovb_C*A>*bu/+ bZvBvr<>ubrrC.uahh/,vrr:~_A/CZ*~B __ao+vB>Zau>Ubohz|h|bu_>,CA+,b:ߪCv _Ba./B~bBv,BoCz<_/*:CuhzhvZ>*,/h,_oZbbUAU*Z.Br>bba,O/_+ĩ|~B~rܣuCrb:b._vOabo,Ub/:b_AvAܩêoz/aU@UOo:OO<|Uzoz|bo/ߩ/uZBbA+@ߪA<@.*ru~z@,ZO:b* Uhbv_,vz|/bA>:@/~,b_oubovrAu/hvzrB: a@oaC_:/|_~r~zU /@v/hrC*.BUbU~+>UB| OCAo~|C,|,U+v*zbê:>Aa*/Aaz_>a.b.~C ra:A _.㪪,h|U/ĩA+AAu|CCbvBA._ ,vb_~*ê+Au*b~~OU,r<_b@UߢZ>Т.o:uO_:~u@vobO<âUZZ+@UuZCO<+~+u@_b|b_Ouv|bAb|z :Aub h+C/OC+bzЪrâu>+u|r:bU>r,r,, h+bbhBuC<,ubuZuB|ubr,,:hZoB ..Aaov/@ZZ+/vCzA+,~@o|BCz+/@b*o,BBuo@hr~@> ,<~brb,Ua*A_U*UB hva@:,ozbo.v*CboU_| B+a+C+uuoA>rzb<+@OobbbU+h_va:rBߩ O@z><:roZ,ZUO:/.+>OUUb,A@bv:,oZ,ܪ~|Ubbb<|B_r,*>v:UC~azv|oba, b@|:vzBbv*Czbuv~.ao,OZrA_:aZ/u@<~U~AU, >CBb+Bvb:|@a_O>bO:~~/>r*>Z*Oo֢Bah,uvA :><>hOUCuaOa*zUU@/:<,.:Z,hãa +>..Au++uAA.ur@ o**zéu_CU|AU>abrh,uo>_*:_>OU~ ZbO |r_||AB~:|uģa>h:Z:+bZa|Cߩr,_< ,ZB+@+|>Av>bCOCr*~~ hC: A~obz:vAh|+arZvrߢU*:Zb_avC@_,*>ߩ~bu<+Arr~buACbZBoU|A..+*,ZubAUC~C@:*_.>>v>v>o|ov_bCCbvu~b+ _@b_|ߩB:Ch,uUuB@ AO+~U.:OU,h,+bAhb*CCUB<_Uzh>>CZu+C.C|,Z O~ou CZoz@C~ZhbUv Cah|:<.uUouhbr/U:bh+z:/zabobbbCZ,r|vu/+v~Ab.ZC/bABub.bhzzrh|_/h@b+>@.:z O,:,vhvCoZa.b/+UBU:u..Zz_Zh~>*:_/+|+rA_@O+~@,r ~~~Zzߩ~vA+C>ur_bbvA> z>,v:.*C/A@+h~ZUC>b֪v,r:/+Z@*~h*U>a~oAUZ,bBAbCu/oz.+BU:.OBvB,zbA@,:Uĩuo+aUo@hab*rA+CCC:|r>,:ZBbU~C:Ъuz..~/,@v~+|r _,+U>. .v>+.B.,U,~urrbzubOBrC,@rh*+O,|b.>rC_A,,O:,o,rBBߢ+.,O,~arߢ/UBu+ߣ.+_bUb:..|o.b,:zbCZBZa.@uOb|,zr+|ߪobOC:ozhb|/O.*O.u*:o,vCo_B_|*<|C/Ab.:U/oO>oObbAaa:A| Z_A:+bu*~:~zvb*Cb,., r:UC|uvhuC Z|aC*ZB|<|.b@>_ĢUbvr*+*u,_a./ru,z.*~+vЪ_*hU_ ACbhObaZ.ubr.ZU@@|_|A+u:C@|Car//hC++uh@bZ~/*h b,v~_bOauz Bb>/O/a*/u,uUbhz|*A@ u+@ur: |r h:b*C*Cb>,bvrUbU >@@*ubo a b@婪h>h~Z|~hv zz@Zovv~ܢZbb@:C~uh+b.h@Zhu >|*Ar/ua@~壣ܩh_b._CZrAA+bz,a~/B<>Z@/ r.+hZ@Ooh,ܣAvZUO֣b|z>b/./abr<.Z>@bC|ZhoCߢ|_|u+~|~z+u~~>ZCBaUBob*vZuZ,vCU>Z uĪOC+.Oub@~vA~_,arC+ _*֪:C>U+b:,:u,.r:Aߩ,,h**a:/@a*a+v*+~C_,>b|U |*A _zAo_b UvBzUozUOACZ.Zvo,|,CuZ::.Bhv:|>b~ZzO*:b+ |O,ĢhbrCaߪa zߢ/>~u ab/ZC*C:֩h,Z~zo>u: /abza..AbBZuhBߣC b_~Bra>.h|*a,*U+CBo.,h+CzvZbBU.bBob ãC,brAaA,bo,Zz Cova@+_ZO_*:z@<:CC:>ܪ.*aUh b, >b+b>Ob_UBu,bC>Aa/B~aBoohv*.b@CvuBO.o.~@Z@@zb:C>.@OCaU@_ZC :O:r.OuO <ã>u*/A~>C>uv@zo_O_.@Ar,a*a@~U*UZ**ZCuU~<|*~êaaAA.rZ:oArzߩOr+_vr+h,|bvz|>/<.:+b@,UAâ|+u~bz~.|z._vAbCbO*Z|,,hvܢbAh|hz*uCAb_UOarZ@,AzZubv:oohu+BC:.B,rvh+arz~,UhU:h<_|v/_o>.h>*v'), (N'|_ߣ
,Z*u,z.//Ah@o .U <*>|o rU|,| |Ģ+ܪ>@arbЩr> U:CObo>AoA, r+|vZ> bab ֣/ > ahb_ZO+|Oubu~.uBO/*/ZUh Z@>b|Ov:oo h.>U*A@uhO~b//ObO@b a>/:o_rC|:OUu@U.A@ *bb@~Ovb~:.+:rv|ܢ/~o>UoCb,hr*bv*@:UZz b@ba|a֪u,h/b hrb/ãvZ.+Zh|'), (N'*â|~~.*Oh|u**/_/~|rZ*/<<@|Ob|A +>zCb|Abbu>_av,Z.A,u~.a>uhO|<:b,:haZu|_Z:v:o__|*C,@ b~_|Ubz~~:r/,/ߢ:o|urz/AU_:bro_u>r:a|vv__+,<@O_bhv,,UA>Z_CbB C,oh.@/,UvA/UO+|zB>.U+A+U>a<>ZBhb>ror>BbCZb++:_/,~z@obb>.za.o_rOU:BA A/bu|>:o@@*_uZ,CBbb,B:uu|z/Uu :ooouBO,b*<<_/O.~Cb_b媢*AU>~@O+ Zzb~rABz|_@/U>>>~a~BC|*BZ*bZrOAvzУh+OBz,bZar_.o+Oz@ _v/B+ro::uAB_~v@Ub@~>ohz,rU+a@O:*@Ou_vohh>@.b/rv@v_abrboB@+>U,@~bBv+ âbbbU__CCB_|C z _b~ru+>r/ *bOh*r+bB:CU/v~A._AuobrA|>a:C:UuC+o<~@C~.>_|UU@@~+>hOB<_*Bo<./orO
, _..+.b+*var~_a+~h>+OC*rb.Zah_.Ur|u:v>ê||ZbO+z_ *,+<ߪB|/..h,_o/+bbOCUB.,_baa:zBhoU|oUu*.o.zaa*v>@o~Z_B U~<*hC@vZ/>zaB/CAObrv:B/BA<_,~.֩.|@oChOߣ<::: *+a Uz/|v/U.UA:zz brhb/rbCCrba@C<,*ZabC*.rrZ|hAO@v_C|z|BO~,b@BhZ@B>A obhzBOAz@|>AbZ<>U*vov,hOO.+boOCa*|*__ozab@|_v|bz@_bhzBzA:~@ OO< vubAUAaboB>a֣A@ z+:Uh+zv ~Cu@+.+uvbZh,a,/ ZO._>o.za,,|a_OrB@:@@ub<>.:@a|zaAAC~ *uA+U,zrU@:v,b|uu,:>Cb ~a:O_b|+*,CzuA*@b+ܣ~o+/h|Cr.u:ZA.aO_boBZ:Z.rrh@oA.h ~+_+oB_o/+|uO**u+vU:b<+b_o.UaZ>u+UB, *@baU@Ourz,b_A++bOao~|aZ*+av|b:bu~ZU:+<>zOubb.@/,*hObz.*@r@b<+_bA|> âoz|hz~AO,@u:abArboUv:rbbhu+ܪ:UrBu@a_< _rvr/~|Zz</Z+O@,A,UZu@~ZouO||CA:Ģ>:A@֣,UOvazAOoB@B*A/_>Z,*b,>:~+h:~.+hBOĪ.>OzaB~A@h:r>z/C,bBb:U+,Z_+__r,*.Ab|av>Bv~B+b/o,@uCZbBOub/Z@ZhZ>bzbbuoB*~ aUh@.uUOZb bC+uAC,/oh:/֪h,|o.C|AZb+>*â o.,Ub,aAO*+.@u:bC<.hvߣa|+ @*/UУvo,@~~B>.oA_ ,*hrOAaZ+||zvbr,>ua@vhUzUz_*ߪ *+~h,Ob+z>aBar_Z* b+>b:/A>UߩbB*BOo.<|<*uh|/ zvroЪUZ_Z:u*rhvCrUЪazv_ģAO_vob@b.:zo:,@r~>_OC,hB+<_z>ĢAuB:@Zr_:@|UCB@|o*_CzUU@uA.hA~r oAuOzrbbAor||oZ COzhU~@vzz|ah*B o|u<@UA@AA@@CoOrzbo:hB_h|Abo~OZv:b>O>a*Z.rObOv*֢oaC+O_:a BozOh+vvzoC_C*abb~o_:z.O::,*ubaC.CbCB ||@U/_B* ܩ|+|'), ('_|z:.Cb֢. _hzB<*+C:Z_U ZA@boU@:vbz.r>*zvzub:|z@+*UACC@O.+~*UbUr*+aB~h_>UO~ãvhb媣@>,zo+.|v.O:/a:O*rbhobz,o_*bhz>,A_v~֩*v ,C*zv,>rrr~/.@|ZAO_||~Zu+b~h_bB@֣a U.ObuoCUBvozA/>AUZ+|.<~a*a*:|֩ozZCCZvohuba*za+uZ_r+_zAaU B>O~:,ru>CbvBZuA |@ .Z Z b.>hhZ>r|zv'), (N'baBovBZbzܢ/BZZba:.z*:Z>u@vha<,C~|>+bbBbC>zZ>.Ub+_ ~_Z:u_C bCO+r~|bC>>b._Ъ>b_v~ߩ.OBaC *|ar*.+rU|,uCB> <,UzbB |bZr,.ZZbC_u|A+a:o/haBv@/ߣrO U_hU,uvh*vCzu:u~><:O_,Cb._r:Т_:A<*:a:A_z*U/@./@A|*@roAhArb~r+bߢBA*r,*v:Aaovuu::bub_b<:+zrv|A~ACOC|**hoZ/>>~>::ê.:r֪ܣ@h~a.b< O__ z ~v//CU<: :bBh.|ubu䣣o *u.< _AbhC:@Ub.C:hOU~BܢabUh+U,O|b~u,. hZ*ou ,z|@+uU+ZCArZurOv|,b*z|<:bZzAuģ|o~A|aOa,rZ.U.@hz *ZOUBĪv@>oZ >/@++ߩuvo/UU>oZr>UBh~A @,+Zh@::ߩ_:b|+h~~_~BC,|buobuauC*_><@z,B|/ b.B zr>ߪ:bOA.OU_bBb:: /.A|_r*Zb:Ģo|_ah|CUC/U Z>_/b bC_u/Cza..CO@,/OOCU/ O *.@b:u,obBvv>r B֩~_@: r<:Z,bozAaOu _+*r~A<~֣v*Zzb> Cߪ,C*~v*.z~|bou.O@~rzC*oB:+/b<|B.>*h.o,hAz|b__Zb,o ТB>,r@ZC/:U b>hz~>*_uv |/U|>|u/b@~<<~Ub*ZrbavaOo|uܩC@bz@@hbCAU~BТ/zOߪv>|UZ/bh.oZAb/A z>zuB Cb:b*z>,:v, >|BC a<__/ o>~a*h:ZAuA OAu+ah@C,O_<:~vuvUo:| Ob*vub| oC*vAhzzv__֣~:|uZ:v@r@@hzbUA+:,|+Oܣ zUZ*bbObv:h>A>U.Aor:ZZ.,o@,@z<@OCuU CvAu~ h,_B*v~@bA,.@ rb:A*Z,z.*b~Av|o>:O__@~Z:@U>,AOrvr_* o@abo@:bU~@az,bav~r.@>Z@bhBb@r~U_֣rB,>uu>oz< +aUhob.|Ua+ b.A<++_+ , |aТ uAOU.C_<>/<, ߩ/@ _bЩZ>ТUv,b|+:.,â/,uABOu+~O:zbz//|:*oU._zC|Z,@Z*u/_C+@_,O<|>h>h,B<*,uA@rzb~C*~:~_:>.:a /ģB,*o_vb ~_Z/hCߩCߩBA.|<~*+a*C/ :.uboZ@<:uhUCo>Cu/<,Z<:z/rbA*<@CZ,o<,*rBoaovaubo@b,UCbOuOrbh<_Za/OC/v~|b*UZ,:ohOu>Bhrh>O//B.+ubba@huBbOoa,v+@CrhO:Z|b>r Oa~h+,:h+,O@AZA<,bA:o+/O~ ZzrhA~A/< B za|vu~O:z*::aArAU@U<_~:@+:|,>>v/ CZo,bz+~_+*vh_h/||bOC:*~ߩ.a _uAhhZoO_ovah/bbZ r>.UCA,>*~~~zrZCub:u,@..|A:hAZO*>h>/*_+.zbr+_+@Zb<< + Ab+o@O |_~.rbz.CO@b_ A+b~>O~@b/~uuo.~,A_zb:v<> @Ooaba.~Bua*_hz|rzu>_<~B>O>Oov>bB<'), (0x70BA23A819E1BEADC92E0840F382D7A5DD89EDA9FA12486DCD843FA57FAEC5439F0DE3836E6804ABD214C35672F9552A2CE003709ABB9C5E72B6DA94A2192E1B68C5A0E69F5336758441D7E54EF1FAD32E14799EAA55A9E3708411B88D6F09B8E6A7EDAD586F8BD8A98EEB58E4B61080BC06658DA09070131BBC751A427EE715381EFFA6044C7BBF89A0F41C6A50FFBA7490FB86097B185536DA929BFA70952BA7D520C6B6697C6F8BA604FF9B54A9CABDBBA6B282600CBC06A96F29BADFC4190BC974943038030B138CFB627718BAE130C7DE3EC9E2A846C964C00DF952B5ACE1EBF4D2E0159A84B89B9EF665A945EDEF8EF9F201854F28202ECACC78F611C0D64E818B24E7011B2C59862E43B1E0201ED21D6B59C2AA5C9CCBB1B14ACE0CC289DD1F1628B9C9088CDDC6A8FF20E46F4DAAADA5D8A66714A424EF583550D15E4CC4A56691C9F8650815DF7CFC025D7BE64263A02166E9E2760B7203C971D23B0C685B3A7A7EDD84B1479DC3C7EA18A1C77472F2EC303CE6DBC2EF8657F59C9742A37093A722016765DFEED9C9251B8BF2D13B55FFE04FDB2B755FB88F562CBBAB0581237A84FAA5720A8D0D42621DB5A7639386BA46986154946832C348D80EB2332EC3A4F7116ED696E2F4524199C857A9112CC3A601656D1FCFE51CC7E12A327E5A0F345910AF5225AF2364A30E12FB9FDA1937AB4B0B31C85584282B510E), (null), (0xD4E78A93FE9861D99DF7DD00C910BDEA7CEDC7F286334EDD6C038C8627D3A06EABE03A2B710CDC80D5D1AE1453C78B746B41D521EDC63CA098AC27FA0CDAB2C9576F55E9D691787011461CB4853A8AA477181BE5FE7E81E5A49992C5E4E273FB1FE4BCE472A29ED9C8650FA6AA881B5E218382F4BFCDCBD8ED6F453CFFB28B2FD32195A07EA631D57A421C996EDB3B1B7E34A3615F7E3B5119E3F6025D61D916D9E0D388F37AE07B51AD7A7CB0326A123429BDCB0F29CF54E543879AAF2E77186806BF8D08B2280354270FB204BFA1E679E4CE34A40E06AF117FA3AFF345CC22356214A973DC098200BA77E71A1C5026A1A020CA60437359000F7C890E780F0E5BEC7DA1ABF8739DDA4C33E9971F95F42F7D0E522401C2F2EEBAA9645F807387AA688C2D9FAE7AA92C83EF140F8AC2E179875A916ABDE9592A8AB2F14F0F3D5AD8AC3F2E92685580026525A111ADE364F7C7EAD826E21DED7F320314FC89591D45953B624B934E1131D98E059747487CA74EF987256533F68F51AF60654184790B085C7C7180186379D9A64D54175637EA866DAD90D2F8DF6245D3F9E4EDABF05515F98EEBCB0A2635950D4BBFE6A277FB7776DED3D6E839107C192CAC1F7F8C2DB5F73E1DC74B1E7B4678FAC4AC1F7CA35CFE6D76CD1C7F2CC07E6FB2DE7A1516811D0AEE6359342B58638D5DEE74635C9D8950201215609878125C49DC6B9CCC62E4428E158D4002CA411E698F213E4C1A12145529F4046CBD717650FCEA4EECC6C1FA0A31D44610494D56D0F7F60956D4102EC95747A26DDFD6D1A416EF06DFF231A3CE26331A45CC040CDC9E3375C6681F7CECBC84957F1F8C2A5B03A2F9594777DDC5533B2FA0F5E8FD533AC5CFAC610A3BF77319226D9C23AF9A09BF42290AB2952655AF722DEFDBF6D387424459BD7DFAF86602E62D557029308C959736A6D4488830A956B1970E0797234FE659DF55DC8BC549C207CC67D1E58642A15944BF2CB2F9BC291327496058FA4F0A0589CF5036B90B715D1141BCC8D8712A556DAE5363223360232CC9647BE86A0D7C5DCB5CB6F26AA0384ECEA1B800603BB51E0BEA4CFCA6E2556F2D09EFA6F575A6333F6A0C157463020D1A155392A822CB8DAE5DDC7FC080B7E80647C460B0925859FA84C1F62FA0A9A8E73FE1918EC2C60A3E62F797982773BEB3230E2C9EA25C88BCFA982361D55E0EB43498819E25594380B9224E9AC1C1D31102420B917D0945E259D5942AA2A96804E9E3638EF11F8DCACBABE47F0EEDFA38C5125E93537C372A529F4450C418DD10BA4AB0DD5D441FE3B441C6D124C5D36CDA5C65904AD5B06CAC393C52DA3D05B2CDD4C5C43D1DDA80F37BDE12B665058CCCD87668B34DC5E59944312408CD08773B130350000E2EBD81E49DCFF69EB54633AF8601C69CFF800EE02BF9EBB678257266D6A362B58BBDAAB9E7CEB0F6EEFA8EEBF0584707B09F14834120E235D1CA6B775C90C812E37E23C8570DB430CF18F1316A00C620DE6AB5368EDF736BDB74E71D6239995E327B0771347FAFA2EAE3B3292EB1CAD0044B98F1DA9183030BB8ECE32697CD957E93FEEFF954EB5FBA124CAB2B4A3C2AA9161917A1A783A0F803667C92CC7C53161EAA9BB2DBD7AF5F3837C745D8D8C17BC2390F7EB6F4D70F5EF6F5EE6FCDEE96F9950D9FA177CD3F69B76870BC5B1F2BA400CF936CD45F29D38B54E4E1C0EF6B48314C43CA21DA4B6BD014FE8C665302D7CA496FFD5A292435E3CB1523E85DA8C7FC278B0FDC60822684279CC0609D6D38510D1777806EEE07270DE656C42782736B368F3EC8F2FA69C64978338D64D4465EDDD1DB4531478E3983E7CE7A2C615DA428542A0D2E6F5E12ADB037F6BA7AC339A0F7E756A72D3AEF0105440B2CEF99E71B8E640FAA38306D72C898800F987E092395DA357906FDFB1A3A0C292A53E6BD164FDA2B15B38E67C779E4DE95B9DF69863BE79615646E149169F56F2C07431EE2DA69C0BD52F46F06726D00221E66605AA2A2EF6C4FA8B2E1C59AACBE1E3BC036C5FBBA4F1FAC3347778FA3F66DF272039414896453B29332B7DEF7B848B1E737ADC95C23AB113BF66EA7F4BF05BB73D327A8290AB25BE21268889740B47BFFC5A86C49A4954F5783D992F5ACBED32DFC6A24909F88DD8452E649BA2379FA42F3A82E179871CF3DD751A5301F653654955B9AD590EA603DCAE7F7BD4B953409DE5002038FBB948A9BE6B94DE2AD64ECB0F525C8DE24B10948F04DB17A12F1421D9C51CF6332C4D9C6103AA931125B1D820A0C56706B2AB99EF8BB9E6EE21088F47630465B95887D304B01CEEA08D83595302F6F059BD2B17197316B76256AE3FFB1B5BAE214C1ED818E26246A5CCF962086093EB3A08359A47ED4C3631D070AE11DCE38521D52806E41ED7674AE4715C89B4BF01C2B305F2E5B16643FFD8964871B424C8D9643023388CF71B20CE4F636BFFBC8D216EDB5ED6F0AF707EE4171B889EF586BFB88315848BC945BBEAC2276202D8002C191702E8D5E1D8C4BFA45475EB9281D8B8A3B37C970895A58592FC2E880E6C1C06EF7F77E2ADD9D6AA50C4D774DFD048305EB95F24838500816D5332E5AA4CB148486F0C1309E61AD9DCD23643BE30B5C2A3EE29551CE7835A6EF6755A96E0F014139F3C70C43526689E8547B15ECCC33CAD7041BC135C2B50DBA1B41360C032FBD212301F0444FE7EB7C0B6879FD20BA23348AD26AF3400B773DB95227112F7DE525BDF3C9CA4285871C3044295A3B0F9A611D018130C4C9E1178AB28AFDBFDA4C8E8354402CF059F2054A4EC3FBE21D02A9B8C6F42DFCB460F312B23F90FB895C56F89BD6E7CF6D70C40F7CE67606E5356DB0E045F9E51E91CFF34C1A3E196109C0F16D0346461BD94A55301D80CEEAED2C7CD1E01A446370D90906F3835232AAAE72258498E2EE269506FAA3B5011101085EEEC14781EE7C8EFD293D3F2756F823856F0DA866554A8EAA4A1449BFBAD8F805EB256370622D83A8F59BB8B1E76DB0027F2F910358A208A4329C36DA33CF4251453A3C3094B32242890070BA91DDC3DD6347408B46F4AC481CBF3DC6F6A9752659676BAC317F6DCC0D4F7958324E1255D85976EB8EB70A518EF314D4755C4BE08A49612A7117ABE4D9737DF77A5316CDADE8ED9D328997A15C1A1E3D6A9857B10398CEE8EDE8E3C1AD92121B3912D63ADD47278C6EADAE00B2BFCE56F96D79401CCCF4E1852EDFC4042CEFA0777C684944E4602370CA4255EACD362E198CC74018D1FE6D1EF5B4AF67628742BE0E8835568412150C56CF528A9EF6B7F8B1AB7864AE87A67EFB2A4F2FB1BB0E420097DC4500D79579B234C101ACE380FEFCB6B6B70FDD0F86E1B65B59C3E55B9AC10F89061A72F7D915FEB17AC6A5D218AA5033FA05563222885563497B3BB6CDD9273F9C5979E389BFDCA2112C94C03CE443AF72B260956BDC677EC40FAD5DDA48E4A19E6535BF306DA93B28B321F6F3952765388C431B7891D3BFF1FA1E7A127FC8C947F221D6AE847E0508256CB7BB718B2FE848254D04C8290D9176CD364E2F28A9EB58AE017450B6B30D3D1253241C037F6FEF92C9597AC47EC9144438B648B6D9FCC3CB63C389BB9791723FC6B6D5E875724DC65F9C5E4F71932F37600B7EFCC58738576150A0BCE533FA37E73AFDC8F32BCEC56881573C9D735ACF93525B8B13757A3F7D7D8725D291E02BA2276836956643343DB893432FFCBAEDF5D02893D86E2471C0BD4B76A4A9F3D7A02B9A760A23392C0E264E5BE2361081C3992F01684D523402F776D71BCD9093C5BBA3036144E2D196FB84B11FC88F89ADC9B20A79F16F53D9667312AC62114096BA9526930C1F7FB65D6A6CC8A0143A68ED29521B851AD34C4F2AFBD0CF2534EA431B643368F6A1AA32531B86038A385139AABF38BF2511A0C1D943E123AEE63835818585AF06FFF688A8E831FF4D48C5F2AA972565FC2B1E0AC4718EB3BF86846CE2518105B2A132AAC9AF173DDFA174917EEF7917C1D33856667BEB957043C82164C41CFBC6BF3F08657A9C4D14E12A22FCFD35D00C6CAB0E182B9E37B69C3A85E6F5D81A8478CABEB071B14637EB418550C898720EF815F7190DE39B210751C84016661F08109E843376209BBB64D72CEA18E6ED04C777EEDFE00176952F9CA81FE9062185227C402A143F97D77A3CB436B7B0082064C3789E773F270F27EF04DA777BD15EB6A7C89BA6C3F088DF1665A44C40DD7E9487BB258E820DE2553102253ABD60FE6B568010E86C7AA1D3F0BE60D983C2E7118645F0C0ABCF3399E54674C0CA4D22B66638F5C0CD95270C19529EC3AD08D16E1B14B4776F3EBF864C77032505E108A29CA9734BCD2643F01DE3A6593170EBDC7505A4B699AA4628796E74569202073849FB27039585A1F5D0C4598C976655DB8B27AF003C5208F1624BD25EB2ED5E1BDC6D103549E746EF64AEE6D550BA90121998CA6A5206FBF7F235A04AB34343E2653EB029551F92A3E0BF9B8E6B33A1A8BABF441922F3C9D57219421447FC3C206B036F120966BCFA06268A926B6D8BBF94F88FF4FE29BF7275DBB73CDC7E5CE3837B2267C38E9E54024A13FC68366A048D837F4F6C47224244FD9D2EAE801E87CAA60EEF4A23FB05593BF2B416C3093E70B2AE58FE0D773B58E023C6F170A5812B8B31C2277AB969887AF530556E2B80F45EBDFBD1C689BD2FD3976A003513E99670888A914716F6F945D0831746E6EAB4A2D192B2A9B06502749254E24F6952660C9AE4E5A1EEAD48C7028CF505A6E8ECADB65D638137EDBF23881DB4C213A9DB7D1C0AAC010413B3244AEAA6246FFCCEAA6835990BEFE5D5AD24C219D1F886B358B078E89B3BEAA8A2AA3E364C469BB38B4F0959DD10D08E3634FFDD42F9E22CC4374D73F714326E7D8DF661B0AF8966890F8E81EE2CD548E0E9B1663C0D66A9C7127215F828BB771C9BDB501A6EDD87AB9853326B613D976105920D62CB3270264C9A9E3D746E615317645350852D720C2ABAA3B9333D66D4DAB3F295AD1451686B29CDD43E4A372AF2DF54FCEA47DCD7200138118FB6F30F34C962C07BCBA50213EBE45B609DCDDF8378C753E969EA93D71B74ACDC3FD9B536BEA075E877AF263A51E9FF6281778334588D16EF9F25CADFCFE96057F926D3122F24A1FD58F70CC9A019977FEB3056A3F17783B2C2C59799D595188D4ECF412B15EC325CD686DC61814C4F858D4AF39E92BD6681A2214F6A8D0827C2DE7E7BD0D86C6AFEFEF9CD6B9B22307676110B8AA27AFB9169BF88F49DC8CFCD5E1A8203D17EAD21E0F5A098EFFAE580F0D9F47CFD9C1F6383E96718E37660352AFF0C819F2DA4F763E9AAADDA62A16ED90703C4D452D0C1FA1E80E716943D6A946A6EF0ED64E1C334FC1813F272892047F93EDC729C61D72F4B8780ADBCE1CEAC3F1870F3B1807526408FD73ABCCE87955FA01D5661F8F70896C0A2DD6015781B4A67B35A192C9578C9B5310D899D737CFFEB4E1CC3784B4721675DF1DE98C62B17BCF0551B2D7C320AA58CABC6E97EF84D25DD75C65B57D11C6B38B1CFA49931EF06F6CDAD1D61D26E1C121DEB9F8137E865A4B9BA5064BB641E39AFF4CA62650B5BBCBFF3B14B2FC30A06AA4939E67CEA00C96A00E0769EA23B688EE4B1DDA3B9AC1290E2C144361975F5AF4AB9712B38BCC4F401F8652BE41E1CB749BC4A112D62F09D27559929BB92508AEBC753E9C93D5628EDE9A2C146E7ABC4A48CED5D2AE382E7C8D403E2229B386FA8DB3F1DCA33EE0C66212444C02F5740AAD5842EA4F25F08456C20F539730651B032196BA78EFA709EE0F709BE3E26987CC3384C160ACAB57B37D75D13F9D3F21BD3938E16EC991CDB1490C4FB564907458778763BB93AA66863EF6FB69C5CA50D04EDEAAA988290291B71027A06B924EDD0188C815CB66299ED26B2FC29653FB7EBB6F6695F5CAC05E74C1F47372B61AACB82E584D023B04E8A51BC72CF9300B5324B8F50C2BA8E746B869910961A61C1C40830A780BBE6C705A8DE0D9F3A35534C6A15EC9C11E711F37118498AA0B770F0FBAEC66358357764C74B1ADB80D4315145C42C057424B3211FB30FA29C3C64F16E1DA48C6EF0F3349E87D5C6CD35739CE7F845DC8A6A7BD6FAA543A525D4C88BE6286C632FA5E254D0F867EC4FED54EA3F72BAA4F7886704A1CE91C9AD4D0EC9BF49DFA4C8106D4216F00B92038F860D515865B31A24945EC168C2601318A682E99D2D060DB0212F04778D067CD5001148837754E85BAF9BB581E2604E0C2EFD4988A8656280FFA13735AEA2968DE1EC67B0188FA0529A8DEE91508BCDC1E1F84890BCF32C9AAFC783D61DB2AC0C05289FF6F89DF49E5CF7EE1A77D02F73D37553B65905D0EEBFCD00500BCA34E8E1E18C28EBD7C94303A933C5051123DE980F02A85EF5B3FF57B1362B9DA39391C3063995440788FCAC10B2AFD20BE8ADA921B8FCC78C89EB2E8CD03AA09EA66016A101FFD88E9A908705FC4E43032D4CC888817CEA96CA377C4D66B8374D5B0D6952983009E9D51B872874C1903AA82A5F8371181C2A767FD7CA828A27E2593AAAEEE4F16BFC43DEB366F4C22208A641A53B58B3DC43F03FDB18583E674AF3A5CE3917A156B7BF62409265B635B35DCF2340E5EC89A65E66FDA51552A4047768734FF3E9F004EBED7BF67249DE3A0A27BB891A2764061B28DBB1A4B0A26CBE3C1BFC43E5C073DF1E54F77092341488C29AED971BE94F036C33CB0D3E603B4B0E38352EE1F7256747A9FCD26C9689F3C729E116B5D5A253CBF9D6B1F466A0BE19AC615AFEE6A6CB75854F71ED7D96D6AAD746157E24963995E262E8207373E1093DB9C0342EF5E08316A02F8531654E6200061C208B40F41628C41C83BDAA02126E67AFC3D6A17CE26592678466B3647C1486206D56C07EFDC4AA0C69D95CC56B9E1D17C9B68A8B5E8A3ABAF9D86FAF74609F6F368A94BBADE9B2FE2C95120909CCFCE6499B9AC689FAC2E31C06852554FA970939EC8EE1096169DF048B5FC87730B12CDB8966D9C5D8E63CC8B19FA7648DA931FE09CF1C3D1BDCE732BBC2FD9BF96BEB555849CB94BE436106521857C2C27B77E12DCA6E6195EFC0AC7EA60A16E8A0CE46B4510B43DE9D40C56E15EB0285256F3F4B1B6E2FFD89C069881E1517394A1DB149110D707033038F8AA8F37F03BE275937CACBCD329F482A91A1BBBF88288C23F739B87418FECF1718DEA454964065C9F7BBE06E7E507FA9C8E2DECE774306611CCF87CA06B34138FBB3B453FBF394503CF1C8CD481DA4A6BA0EAB352001A0D4D74338C7B99BC3447AA773CB9C2BAED44D8D92867B3918FF2AE010F7070B18FA13E07CB7BBCD97A02D8353A0AAD90A8E5FD7E7926E19599E2A399CD88ACC3D6E8F78B7BBAFF61880F6F158F7E6775450D581973024868BF987DD8D8230BE166146E51131214EDF68BE679B7DC161B7B2E44B0209340C4908EDBE34D169964F37DBF6B00166222E87A12F71BCEA0D372525DB9DE4BC0C2D399B084463190EFF271864A2CBB0B64CC11D7B67059A8D1EDF860FAB8EF86A7BCEC876665DDECA6D922F4AA4866B6C746F8EDBC740A5289F0EEA65DD0A63712EADE9D4033A50EEE3520ED4D550E89773199B3CFF1CA23A299FD7577378ED622FBD1BF69D96693A1EA0F87532D0534E2552F1C46F2672110BAEAB6362F87B6B64ABA41835F1FADDB0611D5F242D08584C8932208629F3084B09EBEEEB05D725248D10862B3B19335714140E0912EDDEA65217D9C65AE43BB89BCC2B060CF1AA89F73A971C822D1170FEC97114E5FF381C0D4898EEFE5FC9A8D4CD8F6EED2D4B23698511D755C124250668C8917226D39C930EF8C359BB8A9871EF47B49DA282D07D4EAB60EE60C74B2472E895963735ADFAF3DADF3488C9ADFA786666796F8863E6F714247B72AD3347AC9FE6D3F40139BA9AB9A9C7A39BF585FD6575FA61D2B4EA84AF9F2311328745A79788E8E2D906762CACDFB6DE9C435C1E9F7D0D3838E6DAEAFC4F456215A86831641F0B130CA2235FFECDB4F2FE0BE86B420472B47A0D6EB0ADFEE68AC014170377847A7C374812FC5AAD396B31E8ECF166DA1F1136B4B656B05B660EBC999EEAB6B17A79916C33FAF27559CCD4037EC412F423E6F405CCC3CD23CBDCE20440C10F4EB57F6D735FFAA6251EC15AEA82ADDCA1FBC775B8F6B0E5B7AB6DA15617EE3498BD854EFF579F95293FCEE70A69E3A11D004108794B5658049AB6C7F259500E308CC12CFC5FDD4A5C324B7827C9DA4EC7CC8355D6E6BB4C662D4964A0D7A2D0EFC0B77EA7B6A4BD23F6AB4700DD303BBF680025D5FA3749D174C5CF1678A9858F7B8967115CA61028C532DF3B744C89FD0DA538D77DFBF4886DAC33F1D4A7AA4D25B78454C92A62C1EFFC0FC7580E5D273CD209D370AE118095DEA4B0731F531E879115BCC83434E24277E780EB2C305E4F0BB4029ED7DD76A604BFEA85B24ED0A9F140C6F9A05F079E2691F9C7919468AD4660676B5080B0B49E16C475495D8F2817D7FAEC6A65AFABAC647746E3AF146F563D3F52E66458708F115A8A9B9254C901D0AFBA9A7C42E0B1BBBEEB086AD0EE01541E0B1D3C41B27E895C580A25101A0FAE4413FF5AD5DAFA5EA12BA56C6825406C88467349ABC48EFD3B101FEAD68CABA4DC5925BDEEA77F4411BF9B160C112137179E9CC9A6C6037F84021EC5BB1088157F01900EFF837DE1C72E37EC2978F02AEEE8D238EFE1FE1556A639EC88BA88003686960B8013379420BB02778E17560C12F3D6D23E4F259E027BB7594A91580CA637B5A2E1E4AADAB03D1734DE86863F4F2DDA94E3B5C2E761F808045BDE4A8F62F5D15761B42A2D49FC220038F1C07CF478091DB7C329F074CE41E9DCA57ED2F387D1E8B42FDD9B02AC4BE793C1AE6F388B0FE3D42CD89ECCE1E293724150A37D4F0DB020D7C8C59A6D1A0A78425CB31FD1B050959AFDC6AE321CD24C4928C05BA76A44B4FE4F60C349496611CE268A852F74A190000DE2514601EDBAF57950455AAED0D717FE2081508C4B5197B4E00B924D1CD5872F5B9987F26EFC61A6CED0F821B72055B26D31531F4074C190BA9121E128A85D7BBD2A533750258F2420A9BE7B5875FDBFB6E0DFEA8167EFE6D7F738DDDA807D25737D638DCD1E6248A12FFF96B546374494622B48C972F9553B6C5F59ECB249A02C9808DB126FF2977D96495168583191BFF3487854355C00830D5260BF095CEEE55F6A1C3D5C32246F93CA3228A7EDE23BCD99F86AD14BF63C0757041D91D8743A5A6C09ED145462C12408C16B29D7DB206F25F26F6384131373E035042E07DDBA55F8CE3BE3F52779373646C88A8B13307CE3AE6CE605D6D658F57A341E5E931D2B06163109A03C7AFE78372C3E4B89E8CC05884A5870D44F21F7E2ED7BF25AD8A3289D8375E226DCA6346E6DCDA9970D6C916718D649C4BA31C60F11BD4FFF0B1E5F8915AE0573EADFACA324026781775FD580E98B42025A64E252AED2141E5734624F6E20825F671E7C392AA69FB7CA4497B1E8CE157FDC5C2FB1CBB3C417CA8D4BEF9F171357DD7519CB0F08D8B3C42A87693B6336891FE37312F1D193B459646F9C5AB018B23140D472B44A70D3837BECA12B5ADC6757C2D0BCA400650CE26571AA983C581412D538FB8EC3D4D4729F8E75E4F288FF87084498DF5B0D30DAC8904ED9C63A4722D78F5522E1D894EDFC4A0572EF27F0DC722290F7C035B6C70720C63385FAAC6446530C6333DCA630B0AAE31108BEEAA09F7167A3AA5061A2D88E1BC1116068019DA02B9C1A8DA9957C60461652A5BF48362693139308BAF6F16A8BA4C1E51E5042E17367934D8512C7D12749094B5032CED28AEBCC546D94E634ABB00204D49642F6D3703257B5E8A0814BC2E170EDA51958D6EE5A3283EE74DE805EA2D510C2FD90071377DFFF761CA24B4B08ABB376470596A92EE53C0F72E5FC54D75646CB7089C45168D92D39595FD1B7E738E5C82A0A179C3E67941753F8A191E3AB9FC65C7FDA7FE6620E6ED85C4FCF1384273A003329CC3FA98C09F4ADFD6F389B56ADBF0B5B675D66E2C8FCA9C4E117C404CFD16691B082D286B2F3D18A39659E353C06A2100829BFDD995060D096E5AAF230A92D9ED10AA52BEC85A9748BDCA8635D7387DB75B4FCA61189F85F2101EFCC48DF599037FF6432607623827F4A51BDA7FD73235ECF7C7CAC878C47124609EA95DC2CAC82182B5D0E557AFE907926C7383BB7238ECC6E7962DDE3B0731D201A6C38EDA31EA43A8FD2151508557EEB3360C50ED68EE65CC86DB24AA5357AEAF1355F91588B83A89400285179B76623E4F1AF4FAD0E498C86DC24356B5A945A572B23D2F5EC93A8DD1D7AD56694E311078F66B4852B3CE2ECD30B7B674D3C3A6CCDFA4E93932EF75D077190947326F2F8122DDCF4E0D42BEE40E522E1174190E04069989A957E73606E567DBAAC4E79AD1883541F5F468CF9CE5F52AD0B1545C6E1AF53098D576394B97B8589567142F26C75C894EC7081F9DD9FCC352BC5545810B7D9FCFA6F1FC11FBF66E3C002A25C1D6041964DB1D9702E5A2BEE8B2E68F4262C789F9845F7FC5507752D0A9D39DAFD6F18CB84BE0B5FDD68CEA0443136F15671BC948A02C4D7684541463BAC66902050F11B159D6F682018C1307756B824D084D698E0A450FAAB40623F7CC52331013D7FF3401BDBB802537371409360128C1D75B7D5CEAF7C00F66FD53B30EB5BF4902E39D6C5E4B5A81D968C31DFBA18DF50B25F506C5B338D03F24AAB057DD167187CB065263BC739BF0FB737224A203B57F5EB7E8C0B8834FAABD2D2990AA2A0C52419630AB2B914EA26905CA4FB6AB9D20E53109252DB0DF37B6A7A68F49FB56C1772FD31BD31A43CD693657A2B90FE4119008BB6920D72490C6F8E483EABF687DBF08C896D8814DCAFD3BCBF7692C7EA6B394FF413FED90900B4244EA25CFD2A9DDE9E3B0375D391EBAE07BE51B2D379A7A3DC045C0173DC168288B863C63A52D5912298F38CE6F565BD0965F71BB84DE1ABA6FE7FF9CD9C6AC22481ED1B2D2574B4E8C0903B851BBDE79F9EF80EE5FBCA3AD6B81F3BD3DCC3862D316765084A90E3F04332F7BDA6258B41985A2EA35CDC29B6B244750538E00CFC0A0D54B357DE540E141DA2C9D27D309394F93B8294E2D1543EAF56051ADEB86226FBB399D1D7EAB905208F3E3A5FE33514E2703EA58967283CFF74A7884FF435653FA3D7CA97C2BC0F817D74529219DECC20F0386D79BC9C938A5CD1634231B52B5AD9FBBC0B6B), (0x2F230BF3D5A9E595DB675FBBC7EC8206443F3AF059CC50C848F8B91E22C0B57218B9499990A0B4B3ECCD67C9557092EC78B5C72C43305A62D243AADDF0C6731AB1EDA30EA2E976A48A86038C658672D866CCA66CF9892EE85EE7C64CF5D7C325594D1768CD834A8E3F22A1BC2CCEFC4BD1D2772320062028BEBAAFBA2229AFB3C3DD32186E0A0AE282172DD7E771BB90EA7A7B225F9F05522CEFA912D48F6C1673EEF94F9BE4DDC6C795A108D949404CFE1ED0A7AD8C5323D7DFEB7F60F80DF2AB1663F9786CF5059DB55BC9FEFD79E3AE5D14B5BFC469E79AD577BBF95D66CF88AE5CC3E547D391), ('d8e6ab40-06b7-4b36-b51b-f174ada6bd2f'), ('9999-12-31 23:59:59.997'), (null), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 5: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1768876553), (7), (-17727), (-1), (0), (0), (1), (0.7719), (0.9405), (0.2463), (0.6339), ('O|_/A+>|a_@_bO@ U~ܢz|<,|_/UZzb'), (',.Bu,uЪBUurZ_*zߢz:bZ/bO,~Z/Zr@u<|_*bvo/oAbaCO~ACUA.bvBo|U +,ZbruA@zbU>v>:.r/azbZv*:@abA|Z,B.~/>bO+h'), ('h,bZv~*ubzrUO z|Bb..OhA/:~:Co*+r|/@zBB_zOOb/:.r/b~:Z,AOB< rOU*<<,vO~h*Zu~a**u_auvoCBb:Z~,*ģ_h|o.U</:+AB/+@bZA_.Uv,oߢ_O<.*|uAobB,_ ~rrUBz_Ub𪪩C:o+>Z_@aCb...b,r.b+ZB/vv +.vU<*bZb:UObzr,>+OzUv+>vbb+.U+Uܣz/zrBaCuBC*a,bbovC:baB~@bb+>/~+zoA<֪@u,/Orhܢ_ ,:/CBUhAB,|o@/CubO+.>u Cbvb*<~|@~uOaz<|* h*b.ZZ/BuZou֣ZzAU/B:bZzz/,ov.<>bA_a@Z~|<,zb*u@AU*B>.bb>:Av,a>b/u:,v,~a,Z+.ovuO< C*Ozor:|Cu baC| ro:uUaau:Cvh/a*A*/ O+UhUbb>Uo/bb>vo@,b..bb,h~b@ubv@__:|oA.+Z U*<_b@,,BhOZ㢢vaavo|~vO ob_, vB+Zbr|+b>.<*_Ba~b,u_b*hOA>/,+rAbBhOb*/@/> hv.Z: AߢO𣪪o~vOO au>bBb,ߩC+A~C~_+BU z+~UA_UB~Oz@> O, bbaU/|@>arU+/*vBߩ|_/.:Orh.b /v|r>_ .a~>_zvv_o,O,Bbu@U+|U .o>@+oOAU _bv:U,b|>ur:bouA>_~rv~u _//>hb> v+>+,Bu|z:C*+*_|+bBvOuOAhChuo+|~AhZ:Co@ uo u.Bhr*Uo|._,.hzo/_>êuo :,AZ|.Cvvau~//,AU:z:|BUu~_*ZAuUv>Cz+/b, ~_aO*>r,|B: BbuC>O+ @+@aoBoZ, u~ab/zAorU.:/媪Cb.O~/:a+|oO~uh_vZu.@~++hzC_~_a_~_z*vho,~a _rbo/.hzC~~Au@_B:Oha_*ov @B+rB/UaZh: _|ZhvAaz|u@*z>A:C.ZC>oz*~uzvza>u|A+~a+u,~:CaZBvACrv.vOO+b@:_+_,rB:b_/:h,Z.BzbobOZ~ߩbh_r:CzvhZ@b_~a~Covh+ubhU@Ur_*o*bCUb+u~bOr,/B<*zbbCZCu| h|UO>oOvvzO>b_~Z/b CZ|*Cbhu_z|hhb Ou||+*/oav:::zuzC,B+_*+@,*|r/oCuv:.uA*a|uvB_C*u*/z*O~oZ:h/b@@CCh+OhboUu>+*+z> C,,ĩ*B|Ua| b<>|B.*AUC@_~oĢ>/+o>o|/bZzb/O. A <*bZuZ:>֣/*@ģ+ho.vaO*_:_~orrU//:vߢߩé+rBz>,@h,<>|oߪA|~AU|CobZ *C*Cbbb,,:vB a/CA,:*>|ara~z./@oaUU+bb_vCo/@BBbba<|*hu@OuhOOA+,z+ ++BZ/_::vUzvĢCBbr_B~O,~O|: Co/C:@*/|zCr,*>@+/~r/>Zrr>v aCv|* .baOA~+<:aoBB br* oa|,uU@|֢|CCUu+.z*<.b*Z~_|+OO ~b+ +>oBbuBC<*Ur*A_/<_*,< +BZ@:./>orbuzU+uB~|,buUvZ*_>+,o Z./,Cza.b ,vA.+Ch_ |//Uh~:>|:r*_UabAzv/hObUhhCa|.@,z@>_:u/ozvz*v@B:>@b:,<_BU|*_z.UvvUB~>+,aa|b,<||>uuOrêUv~,o,ZOobbr/~b:a,r>O*Az:uC,zuzh:Z U*_*bO.hvUv~ߪ<:Cu@rCUo,A,U.v/b*>r>|+Z,u_BUO~r.Oߣ:a_> :@bZ~Aa U>@/:b|Arh/@uz OuBBO~.AbOba| BarobuOA.a:r|@oZ_B~+rB_._a*u~..B*A*BvhU,, v~U BuZ*a>,zah֪>ZUZ@auТ zO/+*~U@v>|+,Z b,hb@ >o/bhbaO*/BhaZ:Uv:>v*BZ.~||bA+r|ZC><_/ho/bB+:ĪUC..b~aCb+zbUr*v_A/hau_oz+/_,BCob.+<_>b@ bo.z..vO,.b.>,+|*v~>h/Z r@+uOb Ur>*@*O@_hzr*uh O<~ ĩB+aB@zb>.uģobBva|bbb*C ~CO,ܢ.@â *+>Ub/:,~Zb aТ~r.@B*aCUbbC|o/o>ߪZr~Cz/~|~v u~_@UZ.~'), (N'@O./*aUU/.|u>++z_:zêOAo,U_v,/_/*>,~/h_~Oa>Z..AoUB*+_o/_@|h,h@v>ohbhu.*u*>Bb./vaZ_~ru><@|+B ~*,Oo*.~B..,h>~CU|aa~:U+r,bZz.CA/,*/+C~*+/Cܢ/,ZaC~v_uz|,/.>br|*AU*Zr,rboz:azb,*>ߪbBU oB~a*.|BЩU|~a~vZhC*vz@Bh*֩~OAbU u/ _ ovu/h,ߪrozAbr*vb~>,*aO/b~b/vur,,:b*Bvo u.AUܪ_Zzb@@zuB*rChC/<@U<|rvo_~.u,֣ߩhb/.|b֩b+/,*'), (N'~vbbaC_A/AObBr+uZA/zhvbuO+~b+zb~vzZO*|,+Zߪ>C*:ub/>/O,:@./Zo/a<:,bOZ/|,uC|,ao.*B|_@* O+z~h+r>_Z| *A@@|@BZBuu<:O>*A~/hr*vuéAbCZ_uZ.uU~,b||@CA>>_@,UZBzbUO@>*Uz+rb<+r*O,:h|a:~b|.*v~r*hh,+ arb .z|Baz.vz*,Cho.oz/ _:hbbObboZrZhhov/hĪoUbBvv_C*/~aAu:r:r:,*~|_aAvaa,.,B/z~+֣Buoz~a_aZĩ.bv*h:a֢vz~ObCU_B>.>*|b ~:<_oU_Тu~_ZBB/ChOUbz|_u,//vbvBb+,h b/_ubra@C/+A:zh*@o*AbZ@hbaЪaz>_++,>~brZ:vzB*zC:v+r,baOߣ*/_,|h_Ca/ZoAr+:AbZ,+zO/hbZ,b.r*@*B,U.>>zZz@zBbOA_bhĩ/*+ߢv_>aZ_v+>abb..,<_CC,,v Bv_*oZUCAOr~/ _B:|ohr| | a>z<+Zz~bv~hb_oߢbAC+_v_:: ܢУAb|/*OhAoA>vu_*BbhAb/uB~bB|>ua._>Zr,*hUr*bb.o_CO|A,+|/auoé:_r/*UaZ+uo,b_ < :z>vr>o|vB,| O/|>C@aU|_/vhohh|*|r>Z|BU/uA_bO ,@bbAz*@U*__bh~../,raCbu>C: AabC azé~O,zC.b~hU<+<,b,:~b.B:~B/arh:uvb>_:@/abb :ubuAr|Cuub_Z/vzzh@/:@B*uAB+/|rUuZaC@ah.|a@@Ubrra+>BC>C.|+zz.oba@OaAB+uoOu:boo.|~<+Uzz:aCC.Ob*>Z~+uZv_O>BborCuOĩCB:v:~OuBAvOouCvbU<_v|.|/U|bU.|bOubz@<:*u@Zuuu~*+h.a:abU>_b.:֣aC uh|b*Z r@>+.bO,Or oCZ~ C*ACO* hb:@@,_ahoAbBo,:vubu/C/bBu>CbZOzAa.~b~z_z|*_>vAbU.ZoO,_@ba/.,@Ur֢O_baa./C//a~oA~Z~z+r*a ZbUaZ<+uAC:h.zb|@Z*A~.:֣v* rU,azACUhOO>. h.o+vu|hzb/,_~>o_>B<~a:AoZb_BCOh*:oO.O+b_.uO/ou/@.uCê>A֩,boCТb+a@/b@_O:|<@v+Z<:Bv+O*+/vzb:u~@+r+<_Co*>,z+Bߩ o@+,ozvCU|uߣC:Bb v ZA~OuU//~bu__Zzuu.|AU,+/B/O*.OB+bza v|b@+bz+,_..AOC~*>z,zu a,o_v:>U~O A@z O,||b>ߩh,B<,bh./_@/ZO/oh|rbb>vr| ~U_b֣CoBbrUZ|+ U+.r|*uo*oC:Z>a,~~:@A a+rߪu..v@_a@a.U C:O:CZ.bz|_Bb|b /a/OOhuZu@+.U~|UO.O:|_oO a+rOߣbhrA:~A|bAhv:r+Oz*b+h|o/BAoB>:: :aA*boaozCO@a**U+:_<.hB,~,@bvhhvOaaA,Obh+ *Bb,uUaBu*ao|ܢb:aâĢUU+Zb<,OruOzo~@, r,C*<,,*ar@:B@>BCoZO,bbb*vvUzu> >r+_B_*Z, *,:z a+vOO~Oz_bZbu+a_B|*v@Bz*h~OoC,ba>AB*~v.zzCv|vOA~Bozbo::aBu|Avab*Ъv:_:~~> >U<'), ('@uhU/u:/<_ahu@Uu+/~AB|ܩzrC_+.~+a@@ģ,<*/u@.z/>O,:/_U/:|BZOOĪCbbv.AhUAâ~:@ urh+*+Zo/u_@_h~|Z_u/vb@C~~_+bZ_:r~~@ZhOhOUZr_vC/br_h UBZ+ <vABb,arb:vB.A< é+uv@:Or.::+*oU@_ha@*A+A/zCb~Z|orZ|A+:~Ohu+.>ߩ~u//Ab>ABU|.h,~:O,ZB||CU.ovrU@>b~AboC@~+UrO.@+zr:ar~b_h U ++Bz +Uo,or,~_ .@b,_o@aC*BZ/z+ZC Z+bZu/~/ .z+O@*_OaOC@C|C./u/ < @*bC>hrbr@.@~ߩ,b< +bOAz+r*~a,u/C>oAov<ģ*z+u:||>bb@:oC@b~uArZzvvUOCo@BAhb|UzZa<_uuo@h|@B>rB<~~aU+a+bu@/zb+@v+,,CbozUh,_h|v_+h~*z /.uOhrUhuOZu/BvZb>*h/,@bz+za/_*z,|>bh|u~_,a:|:o~hBobO:C:>bU_z ܪ@bߪo< CC,/auu:|r rahB>~ZabboU B>>obz*Zo>C~Z<:ZrC:U@/vbr Z:urBv ~br+bv,*AUo_@ha/Cu _ZO~,~+|bzz/C, U.U .*Uu_УU. +:a>*hCC>Uu>: Z~b|>*zACau/abr:_Z/Chb,Z,O Z.,+A_O r+rBA|A+/AbA.*BAvv.aBZBo@< u.B>hO>::ܢaBZZ.,֪OA._Zo,BUU|zaZU,a~_AvUB,|~/buUAߪ bOA_+<*.va*_zZ,@.@@bvArã,vhro~. v,><>ba< :C/h<< b|>Zor|+hU.b*b+<*vaC@Bo+ |.~+~,uU,@_OBb+U@vC_u: b+~.UZ,BCZzê|@hrbr:rZb>Z~+_~,u@B*.uoh*b,C*:u CZaO~ .>oba*h ~_b.*<_v :zO,Zuhz.>z*v:,uAAo@,bv_B+Z Z~oA|~<+o*b/|CaZura|~aߣh/bߢ+|Z,Z| au|bvh|>|zuabCuߢĢ֣+O++ vuu,O_~|U /*bUhr+UO+./:@UC~*zOU~UOOCo+h U_BOOvb/.:CvraA~~abbaaU:**~<*+v|U**oz/*+C:C>AoU֩aU@uuo,br.b|/**Cz*ܩ//ObABU*~| @O_+vu~ZBzhv+zr>bv_h.oAohbOOC_>ruC,|,o,ZC~/O uCrrOBhv+zzb@@zoa|u/+~rO֣@hzb<+AvAC.~ZovrC~b:~_ z/>B/ܪУ+ .vZ>êo:.<ܣA~z~:,>b:~Bb*֢>u.+/@Уrbvz BB*,uAB>B>o>|h~a@oa@bZz~~v*<*U.ér/.+BBC_|*u_|,_֩êaUo >+>_Zba>B Uvah::O_:Z_>O+CbZ+@>_/+zz:U>hhOv+:zaģbZ*ܣ*r+Uu ~@,>.Ooz|*,:u r<>b+bzOO ,<>/.O/aBvAv B+|.vv_zUzãZCuv*Bb@_@+CO@~bbh_|r /U~aozbbO ,/*z~:h_ |AbܪzZZ_Z@ZuC:|rZZ,v*:_Cab:.Bܩ@|:_*ah|*zZo@z@:U|uh/:o A +A+,CaB@CzUC@Bv.Uzv ,~C|h:@/>AТu*UU@uZߩChb, b.|h*bbAo++~a||hZzbAvOhuh*b@Azr_u,u+u._ O+rbb>aAZbb@UhbZZauA~Oh :ob*~ *>o*aBUzZU.b/~@*>b ~vO_*/hz<Ъv/z,h+/Z>AbUB/r~o|b__>hauoz/bO,~~z.~,U@>A ~Z*A,.*B'), (0xF77B01558B14390B5D153D199E510EFAB893BA15579A840B599AEDFD103348DC09698ABE87D1D1AC31C3F3CA2063D3205254CBA4DD2F075CF6F5FCF0263BFA2ACD610F34C64F73E6C20DE393A6B9EAF6C6CCABBC67A3FFDA622EC791D5E085F5C9C9FDBF539E5902E1E4E1CF4B73B53D0B062A59903EC2296235D29888E211E288EDCADDBC2BA32872A8DB82C1308EEF788A86CFB62B658B06D45C1DCCC179FFD3FF475DA8D880DF6302E7E762406732A6E320FE5B422C5C883FD6E8CE855BB12EDBAFC2E830469F09A66CB4447E28C66C2A76E8A07BA391D3EAD568019811DDA635B88790A449769C80F5B5D678180917107BA30E7210B3381EEFFE5ADD9D71958E0D0FC5A136C7E1004C2086EDBA5BD2CC51F11D6DCF3324044E71B54A1BBEE28320476A094476DAB3C20E26F02D4A63932C8E8CAC5327BFDAEAC052C41296E48D3D02CD73F1C987DA1769ABC00C34D7030E221E8C313630F8888F1E832315A12B2999B22B7DF0A26306B294E97CFECDB5E94FB5EF78585B07D2D5EB61AA04B601C87F977382AB851E7FBA867FA1467B89C16999D460B1B2D13DAB59A80541B902FB9221FC665A333EC99770BDD2DC658C59619F406AE2A117CDC636D752DD193E0183830F247E2367355B0BC841F4FF6045CD4EA3A1789719F10A2F9F235CEBEC7E31BC4E585667DA3D370A0FD6D9D5D8C7D591858E759D89EB691E1A4E83), (0x1F490F38B008EF657365696D8842173457D84ECB665D09943362EE374C8CBAF3319FB78FC5A016CDA11F1A0F331B632706E6F7AAF50E09C1407B054E19B719E7AB763BE98B886EB7C181294743FA6017FFC73166940FFE2396F64E4A9AC8B3E9053263BDDF7A9C7D7740E973E4C17E461AED4F5186B2539B7818529439241CF9CD40411096A338842BB4EE54268A3ED578082FAD79616352DFC845C72707435323EFA5A47F6DAF77B5CA26D1C4FE75EDD97D1C30F56E7F6CDCEE30CD5E715D24709A3036E49A550A58B7F8AF3B918EE15357EDAAEB125EB57039C7903DE118446D026129CE3E093F2811D83D76D0304A604F7A0783B2385D3C7BC6AAD2C4CD779FB44239306512144DAD82D93A203E9F097D30ED6710C0BAC903EC53775F6C6344609DC28EF61AFB3C65B9D5305E231B3C27A15594DF0F8EF387702D78BF9DEE401E95D9837C10126334B00157EA896AE0D01650BD17CE64510ECE0686EC827DC8CA9511C84998BF168EF2602F0E3709FE054DA7A84C302950318874AD0A8C76B133388C5577A29638563A2F), (0x42D6C508809FDBD47B9A6BC196C023120B017BAEFCD5ABB38663B66F51120103E2FC469DE7010BD6D65EBCF1E9B60BD614442E2DA9C0386C2B12811DE96C83699968DE997A862A0AF6A5D79E18B9CAD058E05A0DE3D35922C4D972D580EDED6ADB535881D7715B8E1A243704E89A547147B1C508117585C60EBCD5A113548A08B76DC3C56148F8E684CBF3BF9B55392A84018DCE28E45865CD92721B9BBA7BC5992F4D7BD68E0FFFB8DE844582C62AB982AA1C11C6BBDFD2145EF8CED5DD4BCA502D256C07BE53F6F18E164A6012E20668B998F19D69FFDE4F7A6678964129DA93BAF455A0BEB1C457261F37A49572027BF1661C455A2CE72E471D8D57DA5FB0653CB6A61D8C66AA08D3997749C739B90864FDA5DA0D95398E0D2759A0246D7CC76FD268DECBE4EF8ABC1371C0B49D660D6384F2DDB9D658A67D1810650C09E4661DB0DAF5D1DA3C800D1A1EF92379D96FC04C3DA07A9E0D9879C161B3D4897EB32F0AA203C3713B884772CF9EB75F82043EA0A4C0CB43EB7EA3417B107989AB849C6BC919D6D5AC4F11B45808CE6EE11A3E5D7434E5BEE7EB1F246081F52B0FBDC64B024C95692D69F354AF17EBE3AF346060D11B14779EDE84DDFAB2742B59E5A49B42836B9584D42F0B40910FD0003C742B21955AF4A94EAD24C8B86F7BF4C8FAC97250A02CC9CBDBFCEC09370DCFB3DCBE3D4809C48BB0F1F3D547CCCC65B3167796455DB09B476256B95D08A017A05514DBB13EABBE353EC15EAD5781FE0F9738F2BF7689562C22F6E6B30B2DA851DC35F2B8F1B3756BB960079B52EEF0E157A9C6CFAD5729CBBDAF8E48C50B2910190CD0218E461EE3C287061682BADA3405045C6267D8A3840C27FA41242DA5AD36F682451DCE52118BE30D2651134903D55942C1AFC7A940684C15674BDCBE94E158DF8B38941736B14AD683CB7D32F8DDF76CCAEBE4FE6F4D41DCD1B8EBC5AE247844F933BECA40420B0F64F02575EB191C8A546FF3A9FD59703DF7B7457DC684285F523839C51F2C2C88DFD49A7E27CBF1B89C61713F30CE47A0C381D388FC8D48DFC8C623B2E0576B27436BC928BFF1152CC58DE16513E82E83F199019D59A38B528CBAB661A83ED844F64AFCC5051EE0D26BA7C26FABE3CCDF979FC14656CDCE9FDF779C043BB38387B59D6EC8EC687ED2B82F32B2E01CA6A8EED6C9087D91EE297B5CE58D82DC96B7233BB90E7403F32F20EF8E269A1CBFC3D1F41665EA7B0924AE454D8F83F14FDB987B8EA4629733EAE29AE78D02C78E5F9D21BB8EC631CDA831945F2EB664AB2F9FB38E1F8D1A6039C02B824F937B22E7B7EDF16135C11566ADE672CD3704347EEEB8EE4F386FD283C081CE9AAE7D14B6727877C8724AF9DE9D2771A7A79301BBF70460DB8DD3AE481B6EA0B3F37AB730D1BC5BBF8D6B0BA4BE10B111FD2ADB2D7F12A2AA1C39289FCA2FAD04A946EA226F41D5EB38422E8CF8BB1C7D219C4AF0937333E0D80D139793BBF45DBD07FB77258EA1BC55EFF53DE416B2601CAB7E2DE4BC703612094A622D3E577C4ED0CEF0C0A55793FB8E9BA37DF6FCC25BB37AE83DC6790196C5651B433F8E169878EE1347C1A07753EA325620CDB81C0D88077AC36F3F8757CD59FB3F3C4FBCFF840A0407E97A99120394529423E0C90C480EBA371453293967BB7A68A437179A76569BC2B314230E6E67C0DBECF234EC90EFF62D9484EB31E1CBA02D00316ECB7CB71ECC45065834EAACC9AD934D4C74878ED7B540E906F26B6AE1E874F60D3DF9F55E35D467A78997C243E8BA3D9D937F2BA57159B88A92B12C61DA256FC0F39E8CB39EEF16A020E74D1E7EA61E372DCC4D6848509CE3406ACB83A806CC6427024F492E8AFFA4688B858A0B9A0BEC93F4340DD70777A302A872332392F7191AE8F67C56D409A2CCA9FFBDCA11D8A65FDFF0B3D1BF8D1F8BAC468517CC80D5936B7022A38F96BEEB91402E08B9D8F1CFCCD344A243485B5BD7F0AA8D848B002829295FA1B602CF4931C8407E5F17D1D355B54BF83C33502314C6CC9EEB3067064006DE90794F19C904FB717B07DCFCBF1FD638CE4007EBF6D93B8CEF36305D00613A3D5838405A069C81F441C2D51B37CA0C7E15F898C6391AE8B73DC22993D39D7019CD9FA386DF7B3232BE12AA330320542529B24808C874043E50891D4372EE21A351BB4D9827859F99C666072670B4B31D6E046921556850599A6536555EEFC0CFF106E248D2BBFEA312AE41626CDECE9BD5FFD56D85004EE96AF4FEC24F4A3BD7A538356AD26B4BB206C50EA726EEEDBB969B7F5F1A5249F1B7F8DDDEBD3C54C8736ABD33A963C96AB42266BFF1A7C37C06422BB3CADCBD52EE44B2D98D6DF4CA704634BB30B91232D215AAF7EC8AFF103561D77A11A0FD97AD6A4565B1EFDD472D9C4EAA72074B4C2FF8E1B531C5666444A1A32C957AB9D0489D0EC674AD81E23763C94F3B549D2E158A4A18BF4865E703E020104BB1B1B3E27E62D5F985D88276FE7DCDFC1729EF0375160A2FA010FF3726C2938C709786B2156CBCF2C83490B2C8A2C0CB98EBECB7310DD59BA684426D629ED2C244F50667F71BE6AA6DFC3B41855866FE50349E3BD5DC5B63C1EB0B912A4E902961CE6ED39B59D47D04424A35D294154E1D431D2D0097EC679AA2A50B0F54801E6B11DFB7EA9362F7602037939226912DD5BC73E6316229CAE10639F9B3C86DAFC22BC9C0B55D648AE126CDDF6059D57311783652E099ED09E714D5E359694397B387D0665DD0777758E9050A944A6A8831C5E73B921ACE283EBFD8A188813077E2352CD8886E164001BEFAF794E2749DA94DB29481080598B8A8289DF7D6EFD7B88D275E1E91FFC2AEA73AD320D7945B4A3BF73ACF9CF5DA30931FE04679482ACE233E06BB157F174DEFE5DACE3177E113CC52BCDFB4081C984C2E8A721F7B355E0F05FC988DA035BBDFEDDFB61B0CFE1B3DCC7A268B4B191B226E6EE7F5A52D73B07BBE2C7B49862B1D01FFC728667C40306E3453010ED2C4ECE1761F324DC639BF6C059F4DD1A0F4464E098A4B51F3BBF12DB68670DA71A2A8FA4099D366F9CF3AC608BC61DDF25ECD400CB30448789AEEBA2D04973FC8E4FA63F653910620DF54394F8549375A143A58B930CDBE9D6081A5AB1939F438FBFD23C1FDE69FCCC6202D5ECAF8F351B75F19CA3E8698163CC596D1EC5B07A66001548825755C2D9B8BF210A05FD2678E54F4B91F2AF975640C853850CEE06B1987FEC9A46A2B4102EC2EB3938876DCF32E4397664D863507DE2419F024DCCDAB87F6186108C22329B2B633FB46E1DB95A945218A4804CB01C8C1C5461251DE1061070B915E7AEA6C1F6EB496533AC1FD488346DEBA4262832A179947FCDC1761D723993ED549372F5BB56BDA5035AE8D00C8FE8E0AFF551FA4886647E0A26F435752BE2FA08227FE4C178305D78833F5680B4633DE8856D8CD7A9A4DE3EF4EB8452882FD767EED7EA1FF42F37C50481C5570DED45B3C65CFFCE66225E8D91B5CC8CBBFAE05367FEA1EC891DE45635B7D327DF872117A5C09C2B3008F1CC795C8E4E62AB19099161FF1F4B693AA8789998AE4F36AE1A94B4E6EB5EB5135EFCE5632C9F95F38AAEC9867D9801DC3C95F3B2A670437D42BE73B9ADB42DBADC4E901265F60E08D2A60E0F75A0307282E8AA456B027CDEB968207E2BEC45D6811EBA2EF7FF664697EAE0007243F7928DF126C509D84FD9C1C168FDC58FECF650278E66F6018A937263BD70127C5C75609DE02AB570CCA8CED05D3696787107FDF9A04AC5909C8C769352A62ACFB75564F39D379FB230DF6AD59815A4440D09E2A57228CC01AFCFF163B4222E168DFF1907C1A2DB49784BB8C0EFE00876D8229658C3755D9E895343DD363BFE1EB1544798FC9C825A2EA93D367FFB21BFC77A8B918BC55308A18A8E6E5F0E034C4D9A1F9BA86F7A4B903C2A1A48171E8E318415BBA06C82EBF14EE7721E140B2095E0F8D5EB961758004FF15FAB38C09A7BF03CDAE8479BE117239A6988083D7C30F974572E48929B7CBDBB606B3340B87E5CF61DE730385E5517CEC80BBDCFF812852EA1B4697C236DA15E3A8C3B75D3E2D1EB3B021F9500B126020679DA9FBEEDC34DE6149F0404D0C2A035D20DC21991EAD529C294E5F2E01DF09E6765B983119F4CC8ED9FCF43DDD65A3F6F6F3EB363F8748EF565EC58ED5B05F6AE65AD7B192D2432C1092C022B915BFC4AA68380EF4D2A7EF13A8DABB2F3DB9299C8A56838EF26423AFBE26ACC72536409F00E46D77517613B3E79EE9F788FDD2D996852EBF3C36B703145E35ACFA28ED719A1B2E594BB14B1342D0A6547A2B27C153D330A0078163CA2C6963F24167B8BFB1775D6CCE788DE53A1B7C6B8F6388E936735827F74C6A18B7632CE24E59D2DB17E6A303CEBAF2DB454B66EC04F73AC9E079BBCD0E90C7640D44B46A4CAB96E048A054A8C0851A7B817DE1ACE67D14C0296301D49D05CD871F3FF58A05888E9AB485A463A391095B5F3F4C90AE1B7D9030F441E8A9C24342D3CC89818F9076F8EE47F861D8B01C975AA5755DB93CD804C165591146A6F0F2416290D60888CBCEC953A167221BB780D7AA8E034CE58896F485BF2A3664B24856051F761F458ED2DAA693669B70E1A6AED9399B18EDA55BD9F9E282C8A19864A058111DFB4060911BBB29A65122FB83A4197C5C2B1630685FC49D26630C09380E2EC5425EC3AA6D79A7805CC3FF09B7FE5FDDAF253B398A28A8BD37A33A2E0FB2F097235CB824E06E0FE38396D4A560BAE627032E5A13D3F53B1AB50672C93E7871AAD268E65A453AFD401657B5F353035D7CBD122AE058DDC42D209E6EDAFC45A40B252AD2F7D38BE2C93119FC7B3F48C6B2A8F50B2C4D9051F5A3B93AA7CC2244D0B3AACE293165A8323061AF3EE049EDD8D7BC32063978BD94D8DC541A503AFC0ED52CC795799D80424DD9FBECE113145ACB62D00FF03E963BED395054118DE1F564A069B481585E393CEFB9607CD1B3C5C7FA4FEE6AED1E96958CA83F4D2B31BFF7058740A960D8720397D3008536BE1B868B8D163EF38B7781D21FF5B01FEC10BEF968764A731B6722DDEAD2191E115ECD8CB9C19E1A8103790FBFD640E2C1E4ABC2428BCD48D1137025F46008B95D63C1C02824652A72A37864FC3AB444263F1C062756DC869185BAA651782620FBC0B15B1580BA9C7F80509F12684B965F2CFFB543029107873B2FA269BED9FA7D57693B89582EA6847F87A6063C7328392447257870DCF82FAAD4DA501732C0A75621BAFE0F0D07FD5930C47BEA004AC707684577B4810C7A710CDE8354556C4CC7FFB01AB9292A1640271F3F187D44A98A1248AEED48F3D5153F8D022E83A803C477B4EA502F0EDD3E2F368C61CD62F3C735F8420CBD5F7E0CDB05799B27E7BC7F1C7BA1C85A585B036B70BD11667348DD993BF98B66F6061836DE7529954116477A0D4551C12B6DDC9C3EA14DA16CA567BD9C02ECED3118267489927BE3326E29597597592EF61C6ECD1DEE2754B976C9380E6BF93F2A5949F41FDD3898F2F86AD078F32BD44C38C780931ED042F1D1BB12C842D5C674E92F1C4E640F18E3D6DB248456DBC64AF5ECD5A479AB0B8907034D2225CFAF23A45B8EC40F85E729AE9CBD43ABBD9AF5F4C8D356FF22FB3E23924761C2F6BE062C00E0FB4C013A6F04ABF5DDEEC8DD4968572D5CFC5823825F50A07C3E8667B8DDB616AADD9FA8F28D6352532C1E505AB5FEF96AC9610AD3DD5E9BFC61BE317D443DFF37B1326BC8AE3ACF9806D055410046C73F8DFCEE7BAC43CD7F04AC91CF32D40FEE1E18A8829230BC8E9272CC0C0859FB1AF6F1F0484E848B6D64ECC301A8FF6532C16722E79D44AD5C4060E83977C077ABB077D840E3C6A09A8D3A1DA66CBAE5930C994BA136147DB2449407EE9B51F6A47418503127244EFAC6885A622606EF857A552DDD75D5749CFA26FC4FBEB1FE3B4479315369B46BE74B51DAAEBA1A8B3DA481734624182E9FA4B4370128FF3B158A1E1EADD49C1CC5E9459223FBC6E2DF9ABFAB3C3DB8172B4A92AFB57D6ABF4C15C5249CFCDE680765AD5CDF860BA3DED157666953FED7D106F26242EC67487F86460D36A146E3BB56A3D7905B38A43FEFD0E3250356F817ED5295097C261BFD65DD5840FD6D3C8A73AB12AF274776CE4D22531B83227B2F4DF6484FB1DA3E3088D92A7EDF6442829458B1584349F0A6DBC6BB59D3FF79426228F30624ECD9996CE2274D1CF7EFE9E0D1872B7022EC0406A173EA1EE55C895FE71CB6713B5DA77E18EB6021A28AE4D7D27902774ED23F3CEF008278EF7A87859EED34DB3878A573E0AC58368BE263178F124C6C5A111015DC79823ADA2E8F9D64DA83B455089E5AD38E97A27908B00C9C6BE9DD2D1A2B8CDD1EFEBFF56A99B11DBAD2B05EAFC18773F298CB796E9CD4C8759E6E45B26F49AFF6D7370ADF6468F5E684BF3600AEEDA961693B825F136E8229F680CC2A6B6B4A880167D78A7C938E2FD693EADC9EC8C6B0C4E34834C74FE369B4E0E9E39BCB7A1974ADFE47151FE4D5AC52897F83A58B2DBA1C65872216C1B1836ED69CAAAA940B18D068F1C97F9BA5FE728775C663E50E54BC297F65F3F65EEC4DC3A749482B02BE7E67B33D9A633A80BF88AF8E4CEA1F88C748EE8114A524D90A047CBCF45CB64785B648FC32D1BA58EFFEA56A46CF9F62A31E81FF3D80AAD942D93395E77E8C63D1680995A22356F68D959215FFBA933A651918D6DAB609040C6FB9589D247070724298DEC60AC07FC78B71A7EE94D98846F830CE65B6891A5E0488326AFD58682421A3BD21B4745A58980E4E44621678953112A4F4A20BBBB87D7FC1818D15C9320982CCF11C669184D575CCA83AD5FCED109D39EBB3748216E804A435B2D9CB83451B3BDF498678CA81201E2D3E137EA782D470F0DCDE7F9400B60918C25BD2FCAA48621E9A1CA489246E69935555D7D486FCB2DE68DBA7679CA7DF927D6008254D2283F5B05F0D6530E7CB6D74EB3FABDF3492C5A8F494CFA1FB81F33D110BC365444532D1E12426EF4DAD800F39F2B16734B349CE437C598DB454B4DD1A281FDB070830A50CD9FD0F6BD65B4613BF6808D08B095DC2F522C7EBA51D8D6F49D4248EA50731C20B5B5AB539636C21137AF4EBAB0C8F1EC11812E568B967BB709F210236B76EB83746C530AEA78891B6A6D82B29A1C33C4505CC8CF44B5951F39E4599416AEA5C0C3CB465475E701A90802FC2E13C92CEDBE5BC31EAE1C3EBEC743C0F61EE504BBB7C1EECEC5EF5E695B2FC741B966FB70B76BD5CADB9712A78C979D32160B8A130E407651DA6E17DEFD69B37E54FCF55048503EA30F49D020AF47323E521C434FA5A43378F0A996595406CD71D394529F923CF9C5CCD713B46055A2832BE98CE11663D8A0B97C5F9EB9D55F088C6E4D0AF4A29C15228D82DE908F18AAF7033D6A89EC6B7FCBA1D615DD5B0BE7780B380208979E794D67BE88E0FA103A63B4A7A6A7E48EAFF2DD4F42CC7647D7719B56854716A26F74B42D122DD28EC191ABB228B3554F838C980F3B584BBCC72FD71745938AE34D123831E3C76C72204E7DB110C41F241C5BD308BF076707290755F256CB392E06B875167B235BCC1025EEECDA8A9C0300B2FAF9C0723435AB2108EC616A2B55054FBA584F08A8F8F016E889288A3C9E6B52F193D04F6D84843F7B4A1A7F5AA60A89D79AD033B3F809F209B989AB1D10F47A710E788784C5E225D41F9D6EDE70BC428EAEB2A1BE379EF999DE45B3FAD9225A55A00E4C2D72F501B8AA5FA46A9B23890D472C7E6E52BC497F8EEDB6803E3B0AFD33193E7260151BA9A0F913D7FA8EFEAABCA6A3ACB3FBF2E3B4DCAE854E718A7F54B73781E5069D3210C4BD69A87174FFFF0BC387875E3937164ABD8366865B2F7E948343576CC5B609719BEF3E994B4367AE9632BDF2E7F67DF06B9A4919CB9A699DFB03EE31A882461D7E15C25A088D0F6A2BB7E028717BAC9CC557012B6CFFA60175A09E3765260613FC9084D22423F7EE8ADEFE13AA411C8F57516C51811AB08E6FB0D457EEC804F5B1DC3BE0E6DA68A16F12908DF1926734841EE003C9A482D1E00662734F9FFFC2C9F851CE053B988CF8BAF26E7A228CDD59AFD3CFE8013C0D4959F0E067F561CF12DDC3F940992F5886530B0EB22467CD8995199FCC3FEAC8CC4474BB3AB8250359234BAC5E839CB0808B4984F62D5B24F23356C2DBC202E2F30B3CFC24741DCE3E07A59ED8CB6F0608691F30E655C29EF95FB907515227971058A95356909C1C7D7B56FE87BC4C36D450CA72A2C1FC9D489E02C4BB067CDBD01E7E80120BBF67CD02C37B0EC4173D137232F097B4E45E6C0C1AB89DC751670E7B1E694DCC24C8A152A59FFE819E7476C5B138D37C342B2A201405F0F6D9F5B16C6C83B5BDEF475D7A4F451F545FDA7DA641C), (0x8838236F34F2DA81EC7BA88AFEE92150ABEC8E669DB692CFF1BD5C049985AA501EF98E8EA5CC26EC1AF4EA294BC6F65CDC562E788E1AC4D2A6547E7695D6E767D0576B055A93ABDFC5A14CA9CB69832AC60028435632C20435BCE7514DB056430C8358F45AF10148AA4FB2ECCD1A063CD053AF95AEA4119E9567CF9EAB5A91154B099C48108FCFD5FEDF98067FD5371AB5AB80FA00C0956771BA5FF221629C4FBE9DA1C47EBD2C4183DA96CE0C0A1EBF30B5E800D997158A7435D7562FDDB39C434848E134739CF87E3F762529C65B679CA0C26C799B762688165048E6D511A627FA8BC4C13C8BBD18F0819A20EF61ADDA6FBA8F1A4722A7D221591D225312A92ECFFE2F3A96A55F140453891ADB0599B5A26E761B818CDFD7E4F1A0E36D9AC5DED86B51F0317243CA5A7A15F3998CF61BBF6880E49B8DAC431E5756A4057CA76A8DAB416FB4A883302BACC10676EB3E57FB8423041AE0424BBE0ED2DA1C9EC5DED2AB65ED4B866717E550B9EFCCA6CC3218FEA98158A350AD68F6B1A6D6A9148CE6E233CB86500C741C0B1ECA26537E18419FC11DF543852F5BB88554D5C1413C3C2D08E97201ACC8F234644D8486861577986436E7F697A35D0470CDCBB79F5BCAE28EF94A95A640F3F92BC0DF38AAD4316FDD3C5C0B544595658B6D91DEFC3A950982A2F88CCAE1F22443EECBD7C3255A9B9B5CDA62FEBF8D4864E50A38AF14FCF02AD5B508DCA5A4FB4A38C76679BEA16613F543A060320BC314AF28E5D7BA742FF1DBACEE7051BEF6B7DE18C5F727CFA543A324B9D15C8FF7C9F1F32D7CBF2390C398749D12B3F5C1364CE8821A46CCEDDF82A13395BB5E944BB4247E5E9179F8BA88015EB2319390AD628284740DDD8324064DFA1EF0FA083AE0525E8E7763A5D2F0C792446E3AAEEF10853238D9203ED6A15957437FDACA8DF923D1DF350236FFDDB184454A3FB6CB9F0B0D6AC8CF60C01387ED1D0C615315FD054A4A69CEB90E4F335B289CF88C61A38BA474CC60C529C311CBAD1519F37B5E6E4845F46C62D051FF1A947438241BFA8B7A80BDDE499D3F218757030BF83540DFC92DB0476D3629D423CD4530B48AEDB0B3899F72BE7F24AB05D3E50BCD4506E454946EF66BB31E4356E8BB7C570E6CFC6952586F96CD214A08044199511D07DDC660DC201BF745FF6B5B1CD5C4A853F667E8A27AEC974E877224ED667284F238E1DDB5F7324CE0710C59043AB14C8660B14A32687B8CF12E1255ADF70ADF8DE669E3F3E6F25BC41B08306E939313D5269E8DB427528ABD55EC86E5DD9EE9672DCC1DD0CE599F6D558617604B1E5D9BFE7F86597C2A6593DF269EF96B76E67C1EC940C7754207CDFE205EA03B2971378EEBE65D1890EA02668AF1A7BAA501DF9F9A4181DD9626BC77B95A5CCCC458B5B4676B809088648EDE3E60EB516012581E7F01), ('99999999-9999-9999-9999-999999999999'), ('2462-01-17 02:21:36.465'), ('1965-09-18 17:12:00'), (null))"; + break; + + case 6: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-54290834), (128), (7088), (9223372036854775807), (0), (-1.79E+308), (1), (0.2643), (null), (null), (214748.3647), ('Av++*+_u+B|hh@a~r<:ubC.Z,r@ub+,vo>>o o,+*bCv@az:zC<:+êo+/@aArUbv Zh@ oAhoO@:C>*||COb|ܢb>*A/zu<>Z*a bZZ~b** |C*ab*~bvB<*>:Bh~> Ub~ab@//zo_B@ĩ|~_Z/h>*B_hߣA@_r*CAC_*OoobAOh ~OߣbAAbr*Bz ++O:,*a*> o oZoB,@b~rbr/|v.Oa~O:uB:u|OUߢZ/h>Z<@~+:@>+>|h/,b@/AhBvU~Or֪ozb Zob.*.֢Zb~Z_*Ur/uv*AC:avAZvuAUC Cܪa|/AZvv|a: .bBUC,OrrCZB>|u:/ ЪubOoo.B|b<,u.bz/+v:abAuvv ~vr,++@rv_z~Or+o Zêzo|.za|zh,/u,hB|O:+raBZ:>rOZ+,C*|uuzrOZOUa~|ߩr:ܩA./BavvuZ:u_h@h_v_~b|ZO:,U@bУZ*z>bЩCbo|:>+or~@_CbrbêZrvBh.Z@av_>* C~<*>au~~@C+b:bO ~o:@/.>**@/aUUo<,r//.oU/oТhvB,vZ.<*r*:|UbO/.,*_Bz:h>B.vbab <.a_hB:v//+// >/ Zh+ broo o*zA.*~u+B>BC_Bv/bAz@uz@|*oBz+~C~ u/>@@,U*ߣua/zUA,+OOCrCa*ߣCb~@zrCu_z/+.U./>:Ob oUaoZ~OhO_.vC~_zb@|Uvh|z+|rģC_oA:<<*UB.z* A||,roh_bo++CBu+ܪA:b<@B|A+ |ho+hz/zO:OA@Ar:@CAb@,:C>ABAߩ/rr:,/:hģvr<:_,@Z<u_aC>zZ,*//h*,ZZhuh _OC b,Oooh~,>ZZZ*|C++br:u:.v<*O_<>vZrzra/~bChbBaУo*A|+~u:.>@*OuA/:֢oo:Ob*h*ã.O>BU>z_ah:zv<:|:bCAz@,/v~O :hv+@/bv+Z,Zo|O@AB+azZbub*.Br|B/>@aa vB+*A@Bz*.|r|BObhO.v:.za~B*:ChbZ z>@OU~a>Ubr/>b ~C/h+bO./|,UCC:@_B<@_,,>Z>b>brU|/b_hv/~A>.u,b_,bv@u_:/rh+:u:u_* obB,+>Obz ,o+<*,<_+bvbzaC/o>_vOObrO,BuZ~b/uzb~:> rb|rra|ha@+ A,.:z a._o>.+b ZBz.|,A~uvu_~_:.oo~aUC:B.UZ<+_~Cr>B.a>v~bh|z<<:UZ/ĢUvA@bv <*:OuB hO|_Oz_<+Zh_hhrC_>_|CurU>v_:@Zb/ _O.bhh.CzU*vv+vAo| >֣~Ca>Z@_O.|o,.Ch|oOZva/u֢,bor**UB~U:ro++_a_uz<_houUh..zBBo@U, @U>| C<+/_:|Ah uZzu/*.CBo|rb*/hohoC/CUaߪ ooã@b:>zOrbЩ,rUzO~Ch:~+@h:zvaCUhZ:O~,A @v+hOBCB@/Ov|@o>v~|@CC_bZ+<: Bv@uuߪv:O|C_o@~A/AA*Ovzbz*Z+AUzh |*|**ou Z:@ *+ê/CC|*Z>ZuUhZb+:zBUrbZ+_Z>v*:>/Cb _z@:B|OuZOBUb~+:,:B*@oУAA*oob:~a bv*r@, .CAr.~ܢhr*|/ <@ߪo*OC,B:@<|C+b+bZh:A/rA@â|@:.O,ab:.hA@Bzvuu>hZCzoA:vUb.rhZ_ZozO/Bh+vUuhu~AbAA~aߣbb@ho~ob@r|oubZ:,~U@vz| @*hC+:ģA|O.a@u~z>:O> CU_,oob+O.Zzu:b_O,aBz~_:h hU ,o z+é_aar>o+*bvv_oUu<++ba.Abh>A@:ozbb_/bAhu/h~@/: ah+brhb/zߩOzraC.U>,b.bvZbA~*vbB BbA+h/Ub*>u.__,oZUo@ho OZ_@OU+B|U_,v B,O/BâoA@hub@/~* b_+/UCava*|. _z/> ~C>zZ*bzBbvuao,v/vZ>v./z/|OB<.u:>ur|rhbb*.>~h|hBu:va.rU.z<|@O:h>ĩ v.a+B+,Z*o:.,hh_BA+hz:h~rAOOA_+vv>@>Ca>u.abr:zuObzCau*+o_/Avohhbb/Az|:.~ohOv*.A>>ZC>rhzOOo/zbBA+~ /B| _,*zCoO/BCU,h.@~|vb:boBO+B֩v_/|~u@ܩU*/+bU@CAU*Z~~@Boa : /+aZ:֩+ @bU>é_У:~ h>_..@hh֣B+,rOUOo|ZbaO:@,<+Obo,AaBOZCA~_h+@++oUhA/+B_./~v*a< |>rrĢOAC~rh~<~vbauoa_C+rarAO~vu>~+Uv:<@>/â~au/:BOv*/Oo<~~h/U,Ar~r/U.buhC>,O.bu|zv>ZZou@bz+,@uv:@oAOh|Z,@rZO @r.:A ZЪ+rh*@, ZUu@+zv><_zCO:v b|vboaUr/>obbCb+z,_bab|z|..Ar@zZ A B,u@aBA/a,voCvZ+A_b/*:_>.hbz_+Za<.oZu:U_hO uCor|b.v/uu<<>Uh*v_U+a:/@Zu|h_b hU<*b_.Z+C:C>/<_+o+Ch:Z+u,BТ|U/<>_z|_a b>vb,ߩhA.OCO::O:~_u,arrO+z++a oZ,,u>ZU_BzO|.hߣ:ab>CBObA/OoZb:br:+o:O.a<@o*>O~u oC|azO:~o|o*B+*|~Bra.a<_bAo+abu,~+uoaZ<,rv/,>~,_bbܪZ,/@arb>h/C:U~hr>bУ>a++.>/BUC@b~zbo|B@/>~/ ߣê>,~UbAr>b:/* C ::b<+: .u|>uo> a/zu_@BZrAvab,ou ߢ|_+U+@ > +o.O: b,+C|bUb~/ubO~z/,UbZZê.CabAZ/A *bobro @C,u|~,|+**z :A@:/h_...UuA+,~o/brhb/~zO~Bvh Z~.>@|uv,oaOr BU|BOvC_@Z:.u*Zu@C*r:.:ov,: aC@. oZ*~:@UZZbzv,ra>,*hhh|/*BObahO~>Coh@|o_u:/b/C~u v+>~*Ъh֣uO <~УC_â|++hOu_:.::*@b o__OZCv/o+,UOho .<:abh@o.ba~+<_Z_zzhrvo~~:*@| h>AbO|>azOO:_|@b<|uU@vo>><+oaBr.u_bZZ*|auZBO/C,~@_:u<_z+O/OO*h+C>o_ZOv*roZ_Zhb,vU~bzb+o_vr<:aO>o/~O.<@rB~|@r~/hUoabh@C@:,~B>_B/zb,~z_ *>~+/Obbob|@bC+_a,@* u,rBo*/râ<|A<ߪ~U_ܣhv|+>bUo/+Zub* @Uz|ubZzC .AUaOZ_ bBUOa*_Zb,,Bza@UCo><>~b|z>Z<+rhubZAo+b_boZZ*B*ߪ*A:* o+Oܢh_/v*.bU@AA_>Cz<@aro,o+ *a*b|AZZoЪ:'), (N'@.~:b:*:é@hbo_*vb~_o~h֪.Ub>+Abz>UUbBaZ /~B,,/bUhouh>,.ra@bCC/Ob|@Z<+o, bb Chbb_o@ru/A /~uA,O.ZzAa>֪v*|ru~A+v| Z v,b+/bB.C,ZO:ĩO: bb_ov_b uovZU_/:./@>|+||hz,>O|bzrZhCO@:* h>rO~Abu< vv.bOhUC_hAr/A++BOB@rhA~.bУCaZ/|>BvrZZ:_~_o/@_'), (N'У+Z+bo,+z@Z~,.C+~_Cb|rbvu~Boa*a@ab>bO*@zz<:A,u_OO>uC.z*b:|Coa.a~+Z_o+C /,zBr:.@v|*Z_êCêu>v:/@Uoa'), (null), ('C.A*a|zbZr*vaa.vv@><+*o/Oar_/C.u,ZA,orA O+*ru@ba|>u@~uB/zzo֩UvhrAB_ zu_*~,@/O:A~,+rhBZ,: _B*/|.,,@o oz/B*b_b+o*Ģb֢r>v/AUA/<:'), (N'z_b.b.bC/+㢩o*COr_ZOZ@ro/:,hhob|Щbho<.Ohu,uC::A|Ouܩ|OB<Ъbh@B_>Aub,//hvAZr*+u,_bzZ_a/_ã_*,brbbB@Ab,+/~hO+:+|+hZ:,_z@_~z_>b*z//r~U.Bv|o*+~.v zzOAC.O~:>bhvU<ߢЪOhBߩ@o*a||Ubaoou*hOzb.u~+/OrB_*>ZCAB~._+>@O~ a|AB֪uov~|h@>O>A~r@>.Z:h֢+_.OrrvU_,,ubrߩa|:h ~@OhA.*UohAbU@zA㢩vv|+rv@>v>Ao :Ub_ h>*ZoBvz>:>vo_z|> <ã,*h:Az.O|_vAC,vOuA~o,bCB*r/ur>B,<*./:h_@O<ߩb:OZ.~rO+uZz _>uU/C/O|.UB:,h|OoZ+hB*b/bO@boB|U*rBb<Т~_ >Zb<.,Bz~~+za: CC ~>+Oz/bܢaCO*/b@Ub,U|C>Тuhv*:/>obo*va+@+/r>,|C*Ubv>a:u~>,@+*u,ZAuBh@Abah/*Z:>/:auvZ/<~A~Or/O|+,AB>@C*uo@zOo>oaov_A*bâA@+oA>>>O~>a,,ߣ*AU:bCBC*@B/Zba,/aZ,+ aCU|a.|vCh_Bv<+r/h.@ߣ./+rb<.hCU>C vo+~v~,/A~A+bUzO>ohhzzhbb|_<@Ubu.bU|ĢvB.ChCh/+_@u:a><~.|Ob..|>|CAA..C+ߩ >r|.uA_uA,*uB*A>.BZa>O>/A:rUbz hТ@/v*_O__||,|/ZZo<*~bo>*z>b*r,Aubbh,z_/:h_Ovbzuub:,Z:uv@Zu.hruzB>C+Zo~+O|.Z+v~ >+b*~zOO+bv @/:av,|+@ĩBU<|v|O@_ OAv@b,.o rhrrOBva B*Z_Uhbo_A*oh/CC_>bCbABroO@Bzo. oAv/ܢ*:+<_aAU@ua *:Ouܩ+ r _Zu h,o@+rܣzA<|~bO*@o+u__a+:*/ Z a:vovr>O*Ch>bOOA+_/,:,|u,vbO~Zuozߩ,U,z u|,u+B _B|b.A|<>B*_uo>:~У+@<~obЪ>b*rzCUâou@o_A*_~>zB֩ohb b*Br,bU~.zo|@hBr~_ooO~_*:< *> |z _@Au+ho.h<~~abo|obz,aBo:+_|_Zv@v*Bu_BOZ>uUBBzu,.Ubv@Cah::uz|zvho.:v >B.~vU.UBAb~haUaCr/h_C~_r*r::.ģro:orZrA |_BrAbbB/bo@o *Cv:a@rZ|:hoo @Cbu+ahAouZbZbO@@++a/:.h~||aOAA ĩAhv/|Cu>rzhavb@bBĪz+obo~,>uO+~v.+OAr+Zr/rbv,C@vu*@/abU<:/~zr>aU_b>Bb,aAOhAvvA~hBA.+*u+_*h.bb/@:r*+.|o:+~.|Coarur.hO/,~za+:>:C*vBZ.vv|:Z_rU֩O_vO~aO*U@Uܣ,O|hAA o>a /,_@C~BooZzA.zU,Z/,Bb,>oC~:bC|aa.:raZv>aoa@ZZbh@ZU::~r>BzAv.Uu+ܩb,:~~u|ZOv*Cau.aUB/hCr|O~B~ozv+ߪa/|h>>buubZb/bo/boâ:Z_v|Uv_|r+AzBvv~<_:z A:|au*bO>v>*AvaB>+@U+U,uz~Z|@bߩ.C||B>B/>u*_@r<+*.ܪ,,.a|oCa|>BZzr|Ob .h vb@,,.<䢢Ab b.Buz._/:.Z:u+~oru<@Z|,+C|*ߪ@,.r֪BbB_o> obB,_bb :zr|bbUCO ~*o@ur+z<A<:bob~bU*~:z Z~~/>BB+Ub,Z+U/aC/ߢBZCO.Co/u|hz:,hr_<+, ~uéCrz>v_r<. u*<>У,UC~+/+a.bz+,z'), (0xE67CD00C1929F775AE525AC74900F156D39556047D95E9AF5A62E48C3F910956E76F38DBEFAFE500EAA8E60464EF10B45BA1DDB20EF506519221B1B6456B351C4903E0DAC7166724B0561AD5AEE54B6B522F319DB45648F168E748CDFD2FBB7E72C9BB600F35ED443AB902B8DB30A2ADD64564153A9868F2BBEE72DFCD9926809A9B63E52AEA5C1C41EC63FA538F1538459BF7B7CBA544DA60C8A520C30D77A092821D40CDBC83EBE948D44E346E9F2BD83A9A32A26FB5F557888461453C583474C268D172D56A88170CCE83D1F5A5F2287947897344FE23CC28E9443821A6ADEF9FD97205CEB902CF121B96A0322361E39239CBF4CEC130C4450449EC2550F5652193311C32EC5AC044B9602968829A048761A5E8DAB921DEA9AEC0C96F16AAC125307F9EF244B0A5DE0BAF1460065BC36A4464C4AA0C8B68725372842C91502E0F9F043702FB1243B0000ACE090C7DA352FD5E2AB1E61718A4172C9ED12C784DBB8005C10223C06E322113AA02BD5E66D5CF322F32257C2988EB93EBCF74718487BD13), (0xA02E3CF0F890D26C16E7B9C5C802FA491A9504DB381790D59EBEB08F2345A9D55F182F03F2422DEB571BD4AB3209AB6E8A3EA27D842B83899D67513AE04249D13DE366AFD2F656D86718841D42E4A294134105E5A22B503395A5658AF0F30B14D2036D4EA3FB9C93E7CA166CA66647B9C4BC279E3D642F1293331A2C90CBE8740C704A3E7754F117A572FDD815E38D2E5EACC533CB6DD76ED45BBB6FE06F021BE1A160361B084170CA0FF9CB6656FCAFA6ECCEE406B4A89F99DC6A1B998137356FE2F674835612566A5568BC730B077D5F0BC9F4A11E152DF8C19C3F9D26D749D7C35B8360872C4FD97779B04BEC2B8DD4ECBC8DB8439451CDC97CC2B9D3B9447D1FE4B0B0831DD7DF7A1B29A464E10C950F6AB06A4990942E0AB6960B699505BE35332C077BDD50CFE5AE3E276AAC68E86F2CAA6808DA348E4F81A5CD86CB75E4156B6E31B5041A3219E1849A526DC45D4DAE9C3DEA), (0xFE9DB7F93783481A395912FF3E37326A11784F26559A3CE2BD487FD82E37F979B51232174D20FA96996A60F95BC41F167B312B724D8F066461D43CEF0470EB025F98492B041B1DF07DB88DEA394287F828685CFD0C872B250CCEB578E40A91287F5E9AC27BF31160143AF494021C2A1F4C43C69B14EEF5D86C231F3665A40C7227646BDBA8C57D3457FBE8D1929723F0A3962CA043F5149168C15557D4DBFA702E816D9DB04F7687C6914418052445D5002E93CE786B2F314FD972E67026607B0178A31029853F5320A4DAB2B0FC8B447C7F56A5482BF8C2523B4ED7DD9017A031C8168D8134AB7AEF3FAED3907D80534D2E6AF0CFBA33D580E0BDEE3768768F8D3A80E7E5FEC347D4DCB6087D2532D5BAFA89AE2627D07795410DA077BD4287C91E4556FC986D4F6B221CF2032B575AAEE8333DDEC76966690952A3F122D0169A2F3F5EDFDBD9228C3A43030ADE736AE9B2F28E8A05A802B5DFECF346CA5D49520558D4ECF97BD20F11B0A483655B8B95E8BA3F2F418C95863CA900EFE5DCC2DCFAB105859E7EF036207F7854047E4F83615D5D101E191078C34EAF507BE32934EDC789B45605F76AC9080FC1134082BD597C8E887EB2BEE1A08DC250CE9FBB3C5644673CF59B2D5B65F34615094F6483CBF1F7FE55A0B63A09A814C843A79B2A4CD36BCFD845C8BE4F32228A6CA8D751283F84DDA8BDE7B58D2C334D866418BE581CC836E394AA852938AE227E2BCE60D0C2A00322BD818FEBB542AC127B37EB1A633250DFA16D9395FEB46F0EC436625ED27CC3C4149C9A9A394A2D52FE73AD01C3081BF87D802F550C6E23091180267FE04E40FE732605C698B5A6563F41968B066E4BBC1B69E0514D6EB7A5789089B823AE72AF32AF8E9C025460C8DAD815CBD79703A2356A63766EEFB0046F5F4D082CEE3291CEE75956E0AEB9C70917767559ECCEE18DE682B94AFB4143FE892DA206589CEBA584FCF03EACC287B19C6D56783BAB82916C7A456B7946D2A51558578116C0B17B8ACFD4F0DDA2E024FB07AE8EEBCBC3DDAA1199DD57802B3D294A29546A059ADCBBDAED6BD692B4CA992070719844BA4A9479D60526D4240AA397C692788CB9F56DD1D210DD5706185DCF433610BAA5E590DEBFF12F95B6E7B6E2C83FCB21510D667A04C671AA6C3D73BEA85790EDFAE9F1E1029ACDC8C6D81BEA59FB8FC74C3B7D36CF96B5DE73E671827D71ED5E57C8E8DE4DEA1EB7409EB32CAA865071ADAC716CD95A1E6433136D1C284A4A54EABC939012B079611CC5F531E28934ED9500D4D1FF8185FCAA83AA3A7D028FF5535E41EDF2BF5EFD320F4F1464EC82AADF808628767855693797E68E053EE41A3500DE834746FAD6A1D79FEF317197BD01005BFD7C677FDA09D8B65BD9D0F7F32B35DE640EFE629985B0869ED96537C6FF288C04E3E79DCE8003796F8F9FFCD1DFABC4FC9233AF039EC277CBE0E001A3A0EF5CB043F20F43970FE30B84F209E6B3B5BE2DA13A33CB798966216FD2EE9F02D6CF9F434C8EEC9B80658350A47EACB891182A21D30265BC9037B98CEED3C5214308AE2269A26727D19221D4B07BD40BB969DEB9C37E2FD469E3B214D460ADACA0610C9BCF894FEEB0034F41E1910B1562ADD285F50B5DC5D9DAB985F0535271E474334E6E393B3019EF09C02EEDF2D8D79DB1278D28B6950347C2F4D0C9FE5DB0DE5C6C5DBDA62971A26B06019D97EBE7E1AE52A12BE4BBBD9E4A2776476050F0AB0F4F91867A1AF787B5EBBDB09366AFD60DEE1BABBC84FAA0AEBF727EB32A421A15568D475A6166935B1976F9FE0D0AE477A039713544EF8B55F0D7BBA878D48AA8A29A3DD8687CAB888750A20E01A2A1B58D0712F0D0E4D16602F16A89ABEAE245EB505B73CC0B0F248DE8ADF44D7C544D36051B71C199D7BDC9D7D6761122DD9D6D5D22B0462DE981F7EE63E836DD19859D1C52A5CF718352789DAAF43598126B0B1086F059A307091C9979D236EF87EBBE50D9F5CF38CDFCD9D038A883F44B5FDCF7DC2656292CF915498836F7B01B8816BE36E5BE1D9CD3438916896B5E86284D1AF63F1360949523E0DF85AF970529B4AF91C4BD66A0BF5B08E2CD12A38EB6C35FE8DDBADC75B529A1C1DE3D1623AB84ECD4BBCCC16BE77937E40A7EC782805128C150AF276FD73ADB9B1BA4C28144E5364925CED2EA02F3016383F86A37621F408C1554D2FC5C7DFC81F0265042B7B59F25477E5CB17F3EBF5DADC4EBDFCFA438FB64356CEF1239EDA8D251F9DBA2BFACCD5945F0E4C38F0DD695754F98911DB14CED54DE8149B0120D91B4DF2E45E3BAEE171E8689B45438D528955A9DEA5416B59FACEE4DE12A84A833E2530EAFDE91B1BA608073972798981C0959B45575233C9E2A8E98F56C0DEC9ADD56D10129254903A8E289D4A21D77135531D8D1CF53BEBF17708550F9BC4D5393D8B9D0C697F3E310B0AC929967FB0C17849F3B351BCA899812EAB8A0F90AEC943640C964A64DBE3DF4C01FA62B26AF757838741C121E780E2F38B4AD3A4317A6C0FD622631A87037E1FD405AABE36DEC3A4327C095CF8218C8BB346E981002B1A978E52EC38843D0C83D3B14DD1D634CCBC872F71B5611F17A495E7673019ED0FA8FB032FD3E28B2FF57F757946E3BAA58E8A3D09E0B965367F4B3792ACD5CC69E6A194D6D304E8C9FBFF8C35FB95C0C0EB31E8B5ECD31EFF95DCB098BAF8832FB30B92955ED3D279A1631DE13D2F4AD97A76A76AED068D03829540F644401EF37C5C72E0032B72176F6F1479C52DC26691E72E34412832AC8E8F12B982DC2551541A74D0BC5AC64F049FFB8DF2034E54D2EA646D21DAB25419D6518418C8848339B315AAB8E1AA3710DF3FA12CB4AA7B30BDD69877B82F895810B6D5F942364C0B78443EED939BF1302D5C429B1137652BD6435AE1FC0B81839C52A82AD43DCEA8F395A4707B8DAD21E5585A6BECFE46D951AA230EDB5A1F6CC2AB5140F3C66BEF9DA9977B92E4B058A6390C93B115A69E0BCED92A1ACFDDA97637BDC02C6C2E1EFC6ACE4356CB466CF9CA68A24D8BBBAD04C33534ED31C4DDCBFDF55B36F02C3A0AEDA74657634730786C3040672B5BFA8C10CB6926F921BA95F07758D5FB35F9AE2E976FE46555917C04BC80F18476A0A20ACF1634B31301BBECB056FBEE6A7D3646923893EC1626CB29FD124CA0B91189D6A6CB3C1FC4FB0B85A3F7A4FE958D9A3F5ABAE23E0CB5F4A85B0AB5F0C51B239EDD25379F411671A73D0E481E71DC846F880D560E3F4BC9F0D683B4CA350AB098D4161170460AEE34394B010E7DD6368E765678C7B5256F816B46B8CD51B762224DBF4A6BBB14198D1F11C4E44ABB72F05D3643EE91F8D3AEA690150F4220D281E8DEC0CE9BCAD3523CFBB893607B36AFC3B8602B73739054DB9BB51AFF1A3AEE3F430B7BFAB4648252E1A19640304E2B59753B89C0B70E653E7BE30005B86322B0CA642D6FCAA51F53DDC881C20A04AB5D99C189DEB12D8834A63D8EC1547CAA8E8ED585DC10BB8EC01C25E2FE8CA3346747B27BF6D9440F9CDBF8C98D165E0F512DF343248ECF3CDE32B9C29B4A89A7F2F92789A200B3A53AD5E8F027E1F1B9CE2681D089601FD878759DB42F8174524240D693FEC45D506A5E085EA5DF14EC310FF464C8B91E92E94F012C62FF85B96196ADD71B6DCAF9C921663B67C132A960B1732F8D0F89993233AAAFC330FD6AC84EED0F213DD0D3450A9B9752E33B281C67BBB18C662C520D14A4E7C31B369833FB7318D4237832D0AFEA8263F2364EF882836B753BEE62229B020C98F90029D4035357602253E8EF88D0DC8BA9EE1AEE55EF4087CB12F80D10F639217BA9E79FB0BE609EDEEED62EAA7BFC6B01D678ACF72E3309CF9208E05B5A5F3C1AC773DEE94CCAEB8D7C0F770911ED5F169CFB3A7D9C2A4D66DDD01EB57033848FAA13D3082D71C50B9D2F7B2ECC00BDB4A9C9BE5F24CE7EAD26781B7CAC360D388AF76EFE1A46F92B362EE07CAF2EAADD126A0BA675356AEBA535E1A566586F57124293D4A1BF9A62C09328F5EE01FDF7DD3E5A323A56B3558C8358E46553C4DDCF895A6C8AD63B62DF98D5E20C64FD9337E9D8280E2D2CBB8F4E482E56B60D7CDE4B3654A7816CF702E7629170D1491785C5AC7B7B9CDFA26C9EED3C8E0D0C299B6903C13EA8EBB67CD11516BA8B3ABE05209891098201316B83F808A42078F5EB48F617CD77E8ECD9E5FE9A77C8E7D1542F376D746B101957D255AAA0D3124C682F3B619522E09D47BBC7138366C9A29C26A474F91B817038ECCFFB123E3BF6D3A232588D864C314EAA15B8A3FC85E108B30E8A2EAD534C9DBB38A852F57B097FC04FE134711515EA73365EF5C8CC4C66DEE26F2FB1C8365EE5BAD25D93EE492F0C38D3AC94AC979DF8AFBB670456D4EEEC3174130BE9CE0819825EB642C84684FD2FE99FF89FC2224AD137120CCF5A9EE5E361526A2623227ADB93025DD14B20593679D46D44F65C7F41C82AB2BBFB4A37CFD06F66F42AC70CC7251D0CBFD4699606C8D6457621A0ED14E3186DF87FBEE048DA9E00DBC9650BB2D7A61FD94FBF7D6E94ABF31504B19E3F72520102691447663CB3E53668CA4D53DA82AE7B8113C5339B0F53C3CBCB4418FFC1596753F959B35EB99C8BCA46F5DA6E9F4A721322BE6E8CDD7769B0839A717FDC369760D60FD138EB1CC7773969540989553C70C1F5DD12EADA7681F002DB1F2B1BEE006E69988F79492805E6F753641350272E6DF0BDD6697475FB894F38E841A84C2D8B43AB1FCCAD0788DDC72BF387126E9FDBACB13A6E0796E9E39D062A003FC44EAB35E8CFB50761B0E924F8A258827476E0990C94F711CF73BCB12C2FA6ED78ADF2ED4841399EEAC44AF041390EE49161288F3977232F4799767512F3DB321A0BBC5AAF6B4A233D41BE4859F6D08664C82FCB0717A3F17AC395AEDAC48BE6E918E6357CB44536270551F7C8EAD550C8E0005AD4102AF257CAEFDBC59B5878C5C75F31009B19B082F9A401C5BC388FFE44E5EAB42112D8EDF3EDB1C469608BBCD922019B94502DD65FC7DA7C292CAB826FED80A56DC494A476530CBD67EC29891844FC9A26E469E4B8145469486CC4C7322F647BEFE64F048D5D254143706E63AE4153D430116B7B839BED49603B6C199E457B3887ADA92205E80CD9CF189137A5E0BAF708E08710C3E8F843F8F59451E11BB30E0535EBF0A821DE580481AC6B0AA5A38F706500BDBE5A749EB555390043BAE8B36593327004CA5ED7023F0C324C9D49435214D18C0B054FAAB14D4B42F8DE0459A8F8F56763237AB61629AB8F4E3252180BE5AE2EE96CA8605397BEB77F0BEE242AB2994397E1D03E9A2B65D159B05C8EFB2337133FE5703C409513DB64C3370A4B77649B991E802A056F94BDF6C706934B3FCC4BC4CAF445425D02F2DE04C9D6E45B95D25BB0E5DCA31D0DC040B245798E708034F6FB4570831F594C0B8D5BF0A5BDD9AB3134378A49EFA8B7CD33F4801789745D8494DFE916155F3C67A9D115C11D2A82E8AA385A38F5FB17528DB34F2AC9348218FE7C10EDE0852BD50B22A01E82F6B01961A77D411A148E99C896886200119E754EFCC29109A4F8151C753DD34AF8CF970335B921B7310EE9FD772549FCB9D4E9843ACF86341F0FBCAF582494E6AB5ECFD6F15ECA586CBE0DFDE8A3928FAE1862A0444F10293962E435FC726F0C69F3421855730B5B0A81178CB1985B6B6D3CF14FC1E4925C4E96AD8E6A946BFA4EF193E5617A2A3B0D07A5C3278377A11788C8CF711F4A7560E5D9CEC57CF066252D3DBFF47609E302C632CA4EDF24BB2EFC76E1DB9C792FB71E747B906B7580174F9E0A55B7ACA17ED5BCBAEC703691B12E9FC9060E9A98B40E08E5F18E429740A2B2FF312A65775FD572F5DFBE4346E7D2BA71DBAC8A08A5054647BEC6AFE083256A49CD375086C92879208BA4B905CAC20E2ED3D0CBA418AA4A3BE41DC899358262BA43F979A08233B8A323698D005C408CECB8811CB259C62112ED14A2BB6FEFEB0931FEB1C1485D9C90281880AF2D49EF9380DBD0B475B0508DD866B36D80FD43437E73DE5D9ECBA45AE47C8A413571F5A3350F2A940F3683819E23F8E1AA3F1F2AC53D30A96B9204C52775CFF9261F485661003871D2BF3437F05CCF6AD2C2B0B56D6F7C08414C37930A656C89669A5B7EEB927099F69D5815F8F8B91EC2A9E264C51A9BB6A3400524C895776D42AAD155F1407F304216BEC017560F488328D0507307C45C0EA4DBAB9D5BD16125EAC34E27532D822AB212AE6BCBAF4D30BC91AFC516FA4AE685575C64D3A2F6454DAA3C92B1213FFB4E35B0F525E032F59E6AD0BA21AC0EF08867A20BD11D471F1C691E1172AA7F9B61A476E13945C0951456C678C24C13A1AB4C0A597F342A20EEA1E8BCC22182E3EB35588D252DB742A70CE77A46DE4CD0557C6636A0261C3D8A45F2876D03C2F2C3E28D8CE3868C8D84C7B2624CAFDA1055185755BB5C43C5292AF2EF2B2FD59339F4B66440BFECCEEFE8A1D863A9E0EA6BE22254BC7D37779EC863C8939D5254E21F2857F975CFA52B8865C2AA6B517F4A187348FD80E6CCCD3ED5884C243B42965CE6447188F0F6128D29240764CD3366F47E7B2A095761386B9ABA904759075D133C5D750CFDB1277D267057B2B55861921157A5B0288CF5851C15FE3655CB3421C6E4287FBE59F6CD53ACD2E71975A63248FE35F151ACFAAF67FFF0E7C2E1275B4C35FBD12FF1E3B760E85C7BBA0E7B966FBBED579532C029F98917CE690EFA628577AAD389D502571A7E9069407EF559846A7806F3CFC60965C1D7A6EA155E61FDE9F63263980C9AA9964D26A256E98A93BE4A0E86E37EB5B1917DC80D6B6CF5203E7B5678B2E5EC5DED6D5D829F670ED85D132BDB5FDB0A7B3070C22A449D4E29480673EB9301D0C85DA0A9861133223A6EEFA0584129D05370DB484223C219401F343A98F323455B32538DBF217469FD5E97BB54ECE5E82E36106AB7B98EA49B875976ED0889374B9A5515FD9C11320C714AE38C06C463394C1C62D2B88D91A3AEE237C80D7CF4C5507FBA97CFFA8214DE5E466EAB2884B2F63D90FC2664831CB3624EB9E96A0EF4562E2B9709CB69518A5DF46A472308766D74D1CFEC08AEFBECADD45DABD82B745F52188D0CEDB92AC43F61D86028C59069C84C74984F085D7F3FAA5BF71BB5B222800AE51A8B797FBBA6FBAC96D69BC3D843F3D38BA6DC1049CB0DCD335D23B889BFA5D01DE075DE4ECCB8F1435BB6A893E673B317D2268BA3FA9B5F8DBC3C5E734322E720BBA5F7CE2594CEFDEACCFE0455295CE97090B7992A2C1345264092805A7DF038CF77E8307BF4F23D679DC92DAD4B2882EF7502A27B5E068F92A2A7D4F23E936CDCB544DD411C6D8B9E7A219C62E5A7DB281FA0E57B4DCD717168ADD95D2D4B28FA5C50E8064B31D3177714012C6A1CAD0ACCACE29DBDF18EF7C35BD86E943E712F08920684BFD4DCDDCDDDF439CC55174C00CE9070689B4C6AD1F032EF6964734892D223C806185AE7D004CFDFFD453B7E448C6DC5AE00C66D45ABA2CFA1FD74695AABA6EA314F45E873A8A053CB6C6D9CB4C49ADCF6ADAA820BB6726A659B45D2805685419E414CF5467551F5607291D93E160AED52A772ACF114EE7ACCDB82D862CDC374E71BFE63779586715BB5218914A92C4F80688FE8E3E8508962C2386AF2798292AF2CF21217A765BD20F1514BF3556623BF33580A4DEA910ECB7500B56D1B8ED2228EE9E7A70A37D8F2C2B7E28704860D5C04BBCF218844B49BF356A296A05005728F19647B7E8CA50B8F078B32AE77B6EF0359585FCFB09A4A255BA3B385324272A27007FB2181DD8806B39280C981ED8B9FB39356F7B5B2CE7F2A4622D8F1764CB508803E6FCBCD717BD0590C1E1970A37E2813C19EFB8AFCBD397C074BBABF054D55CBC101AF1BD3F621DB276CB6B055B992A4A0EDA4ADB98D8371264FB625C11143BEB85DAFA1CF1C4FDB7D2063900689165DA9060E2798B802437E2DE5843FFC1A0618F8080809F0E594A), (0x09929F37AAD39688CBB131C25F04B6C339126BB9B71165D770E710E43B8207989BF8779298AB3385AD77F5EF30CD207CCADCD446DE24DBF82CC7C6C2C2B24C49A99926678D242A8EDEE60C3F1B76A7A3C7931A5FADC0B9771D7E65D1E571C2FB2AAB4597A7B8EFA6B14667F8189BDCB51F22FB2E97ED9CE8DFAE490EBE59A96D231014703010FC0EA474AD6759C15F81A1AFB1C27594633D0F5CB7F86EE1E7579DFAD407866C840F26EC8A233F358F1D4FC86C0EA8E6F78FADD761D458049FC38C56C95FED58FB352BA19B89093FFDDACD99A8A674D9AEB602445AAE0AB0B7224CC797E96B3030F7CC37E3074B6E856DD98706BE5BF84FB3A7135DA8FD4C2A7AE9793C42A8146E9D69B1D93CF5A76B93BEECD583AAF9C75378E34158D388F9800C691ED23243C4C5186955A91E12BE00A8C9E91177A7D0EFB2E8CAC5D216C9E0B859308C8898617B280F6A40A41D34652541AF099EE80964992E1F4978FFF3019F74F1C5E232770F686EE8673D8F4B94B364A09166C042CF50CBF25A791702291C68A12F2B6F83F3C9A0A130FFA12709E38A96145E619BDF322175173F1D96506CBF4BD4EE1B6944E1ACC8C61E11D0AFA3E877EE81EECABACDC1FD0AFA6CB4AB0A50C43F55531BC7215232B298D5C02051C57356A6A7CF7DF591062C1E5E4974F81DBBCD4D90594FCCAFCC2FBB1721F801DCB934F85D046281464AC44CEFA9C208BDB97B19F2D2C06C2389F7DBA0C2DD6F0E2B41A5157C9B18594C07469503DD060926FD5EA6DE0E09F9C8D4D40D87E1846C553DC4681DF3411E62C0A6CB79D720ACF1D179C47FC82F1C37AC4DA7C60BD26B83DA3FC5189DEC33BC3F431E683E7FF1B4281CB567BFED8C0EA73170A69A5757EE3A489F975B9353E546083F8510B4F82C5BF39EEF1C03C3ECB3B6716C7C8D21E8EC302DF6E05A5895C8D021B6AE06FDF238434AA6B968D13784B2E3A421E668B9E65799DF87024C019A09264CE20D3EACB97E3438427B2E835FF6712E76B473E26768D0576D1D6B35F7480CAF418454777336EBA3B230766B28158091901D8BE69544E57A3DE73F9B13FE41FA6F7E42DAA1FABA3FC8D02F37F1642F579DDAA5DABC251AFD9FDA3A8CF74F90B4EF7BFCA9D3A5EF95624B1DC514AD88D8B8E7FE3859663D4964443BC6C02E4878407B4875688584F7EA0F77710754E9F15261D40F51575B883EB2448F6A29D53402A585986512703263064E49EFCC410F5B49745F593927E920BF37B541F58DC13A426E62CF508B3FF0A1AB4B0811987270343320B476DBC97D9B78A5DBBBF16E798D0FAD5DDF3F0BBD346EB88DDCE00F27C4440CC16C0CC367A5E433D7E66435B03DD17A01EA1591F428627F07223BA1BB697E1676E5AD0C804B46B7FA0B33D7D03807500A650D3DAFB31799098DBC446A42786E674EBFCB90C5FAB6A45D96E8F4), ('00000000-0000-0000-0000-000000000000'), ('2705-07-09 05:25:19.800'), ('2062-11-09 17:05:00'), ('1/14/2009 12:03:07 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/011/14/2009 12:03:07 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 7: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1147400469), (null), (17834), (571339572), (1), (null), (1), (100000000000000000000000), (0.8052), (-922337203685477.5808), (0.4847), ('O*aUAZb bv@<~auUob:>ZauaUhh*/u Z@ZA|+<+OZA,Aou/ C~h~BAB>,zB /aU,z_u_~b֣ܩ:>Z*u~ b>.oh *,_Uߢ@./+bߩb.:~h*buТ:o*B~.Ava uabzb*zz<>bab/ov<:r,O|*CZܪv .Zb~*rbA,ZB/rCb_Cv>/|Cb*>~rA>+v'), (',rAA,Bh~UU,a+~OvovC_uBa/|B|~z+.r* z_/U+A~+o@uz@_/.+rr/ UvA/Cv rv.CA*|UU_aa_oavr@ZCv~vvb:A@UCC@ra_,abC/O@bhhZ:,,.Ub~|vhb.Cb~ߣa:vvuBor~ZhbuCavCZ /UCߪa_oC bho+,.AA:,uCb|rz@h,>O/*u<~_.b~hZ<.uo*@A*ߪ_:A>,z|<@ zv o:,.a,A*a/|v@,B+U+vbov*><|rz@C,Z/:@O @Zo<,,+C>|BzZ:BZrO/@a.oov+h*,<>ߪu+U/z: z:bUUC@ /Uߪ@BhC/| Zo /uh@ :<,bZvo>bbbAOA@~BOo|rAb/obvrra,+/@bz<|:u,+b UAu:bz@a,*b_b~U:bhrCvUChBUza>+aOB+>z@huh++ߩrzO*CB~A>.z<**ubvCO.Oav<ߢAvv@~O:Uo|OBbCZz:uo v/<<,vCABOA_uaܩܪ*@Zr*ABbo>bo~oUo_a_ov zO~>B+*@ߪOrC>vv._rbabvzu:z:b> bzCAC,vOb:*r|AZ:r.UboUhb,/a> zh+Z~U~oB|/~.u@,@+ģAhz/@b@_+_>*//a|buAabZ~O+ro+,o, .hv@U:OB O*_>|@O@h_+C~/>bB.ah a@ >oBazB b>'), (N'~/obr+>墩b/@rbzBzbCOO,bC_brz>.|>/*z_*aA*ubz>>h@Т,UaCAbo*o BrbBa~z.Uv:v,*r@, BboZzu+b* a+OU+~||.~_<+U :u*v@uooU~a_r.OA+Ua~b AO/_u.@Z/vhO*Ģ:* Z|rCvbCZ/ bC:B_r@>zA@ozOhh+boOurar,/>*.*b.Z/z>|A>@/.Az:O+uaC ,Aézbb<_a:@ЪB_:uZbrA.'), (N'Bh@Bzz>b|B*+:,U._o./AUuZCa_/**a|:*vO*ah_abA :|bAa,o.Bo>Bv>~:AhZbu:O/z+O*h>~uua_aO@OOC oorZ*>|b*o:/zz>+B֪ /rZbZ~oéOC֢*zAb_rC_urOabzub:A>boãUbzBZ/vo|A|Oa.Azuou,|O~Z'), (null), ('OCb:U+bh> h,:oBa.ro+.*:BBvoa@BAar/:U.Uu:o C o~bZhB~r:h.֩:bzZ .|u A|O.+ChA./:/+.C.,*b_Z~v,CbU*BZOvCbuB*rCbz:b +AA:<>> A:r@ uAbUzrhbhb AA_+hb<|:BrOu_Oé@ a@obu,|O|uaOUrZaBb*UzObvaCZv_u,*zUzB~z+@zzBa _AUvZABaoz+Ob~UzO|*vB b BrrOC/ZCu@z_||*bvzC/b@B+Uo.o:zaO,êo_*|Z,O|_bb_.oB~b~/A*>v za_~zb+֩UC:hr:.ZU_h_uO/>.o:zЪbara|,+~+_vvbߩhb<_ ZBAubܩu@BO~@ZAuzrZ~ZC@>zarvZ_,:aCAb@_h~ b/abhh@OuZ:rvB aU_Zuhzvv *z. UZ|_b>:rzUzr+A<,orvOvߩrU/rB:hzbh_Z/OrOrB~Ao~|.+.BBZ+ooa@Uv@B>z~U@@B+_:bz|v/ @|~|,rzubb+U_u> >~+Ab~ *.b/~oZ_/ UvuO:r.r.*o_hOb._Cvêzo/Au.ZZr|C|ZB>rvv@/h_,.h<>BAZv~b_vvCa+Za**ЩrhBABzA@BzZ*Zb.r,zu/r|ChbvuuBau*hZ<|,b>*@ABb+ChZ~*.B|z,aozrBv++ro*voCorrrO /_:CЪ|o: b|+.ozh~bv<. h>Bߪb,@u||rBa/Z*+u_a*:B: CO+.Uzrv>@*aC~>,Oh.CB r/hh_* Buh:r@urvuC*B*,@zBbbOobb<+*:r~ãaZvĢv@,r:@oC*ha/bBoZ,.+B+r|/v:_>_>ZaZuC:Uuo_~ /~bb.*|b,oAbC~buv:'), (0xE37D2DBAFDC4A6EA81F3B310E32028A4897E78DF620D1F1400E1A6F3B62AAAAEEBEA3BDF65A4DDFE99962161DE684EFC42BDFA2231375ED55D19BA1C1DB23357490525F9E4483FE5A07A45CCECBE359892AAB1F82F887CB38B66814CEAC1E1E762C918D9435517F97E1581B7F192E89FE3228972003B27C088716D7EC6F2FBDE985D6922A55B543C92B8791A06C5C2F87DE268C7376EE726A25751D2E899328C1AA21E9329C6F988CD4DE047C20DB9C3AF7401E48933A72A7642804D0A8154F986EC0064A62ECFB7E8E0FAEA8D9F64949E8E2373984D02E7FBF41DE645AB7D4BF9E7C1D50D551C80A54AFBA938BD9CD6DDEBAF7C5EE06138EA1868B210E9713C62AEF0A6DE8F874871A2CE4E5159AE3D5747085AFC01ED188588EBF4EC6970BCD8BF468ACCF5F84E63660ABB1213E6906A2B5BC9E0164061C1D82055A3935B0832127592132471614EBAF695F6310672A25A89C10EA6DBC17EE4C8F4D4A2AACF0A0289FF9D537C46B9F97A261FAB6B90D1AEB3480A9AFA8B36B3132F5B7C8DAC0F278AF4A706D44EDE4307142CB5A1D378382326EF61C57007FEC9EA404DEA3C6CCE16F82077E8CAD9646AC692E55F81113FB6235966BCAD6119ECA93DEA0E9059CBA85D9EA9B3014F584D8AF6FFDE229E47D80096C6E305116997068B3F8CEE55DA6CC73C01E3688CB5D4011831B6613BC90AF6110EF993E7A24C3511AC750F), (0x351C9216E59D647073E1F1E1ECDFB235CBC13596DD47E0D9DF9AB4AD56E040C535BAFC99CF24E46C91A19B18A106B56D82DCE0B3D93581ED3CB9374BE8B61992A12CAC32E21866A6DDC8043BACC737D9E4472B7AFF8CEBFF380F5D15ED9884DA8708777559838A69763AD51030454175815E66A08B9E931440ADF9D3BB50B945442AB4A34FC17F61BCC104C5B6DACFF2CDE7948F31E34FE8756235AC89B7AE258090CC06919E25BFDE05E4C99ACD5E65DD0705D3BC2A1361DACB2DED8CD3D80513DE44260EC8612FC2D4B02CFE854EA704CFCE82B2DA69567D6A2CC67038330A2DDEB6BB88385715A6D611E779E662547C85E8BD0556533874EEA8A39C9ABE89A1A6FE20CF921ECC78B9DBDBC882DC9607D749EA4F7605D78B7D469A8FB3780B178746D3E84284E9671C444C7A7770F211119CC450D43A2BA12794514C843DC440D0C4403B09AEC55260833331B95D140D53897D17B3BB424D1B32C1AE339DE2DF800BA9B22FB70763D671F05107F9E8C97F44F8FABFAD8C1581F31FD7EC161FC2A054B1ADB361DD9C811A4041CAF146214AF72EEEA5E81FD27F94303C973076BF522DB0B3483A151D665B79A56D4A4A90ACFD8DF5E8311DB834DE2D1E30A00450A380EF9D4093D80FE11087496E7A65344AA08F99A381D7210FF87E6A0DF7EDC5562801EC5AAD4F19257E13D7A9D449B979F8D490116BAD22A9CE8D48146E02), (0xC1F2457978DA9D517574256E00773BAEC5F014225CB4EB7BDF438C1F0705B67C28B3E7E10440001E373E9BF688B4A95751994E7DEDC8C60D07CA99354E7D496FBEA8454C8F5AAA84F0F5EB1D18F5F22B9934CE6EB7388E60ECDADA3AA7CAD0BAF52C38DF6E5CC7F6EFCA8DF8DDA8F411D76E9B19AEDBB8851AE55FB5806FDD26243028ECBC13BC3D6DD77FEDAB968244E6C862382EB70B1A73B3C589FD12767FEC67D3AC800755C4B15EABD75CCBD984621BCEB70DA5F76D250E79094D33405B60FF0044C3D6C3DE729E86D00C34BEA7DA4126E143BF71476F6586728E4C767E1E50765CCA94C08B57F0446F1E2761F14FD12E0C0C5E18A18DB9D55D505150262708B1BCBD61DD45809A89527A022948049422BC1D6972BF37D4CE11BF633B069F1E471575A533EEF4E88C71D4C5278B908C58BB2E9309BD96F184E993CB861C5F82B35CBB13D25F6134C834DD00EA72AC4381320A80D70C15897E83204A5A28616F125212CBCF7CBAF959FACBD4E09506113C4F4A5412DEAAA64731944E3E16D99FD26DEE9860E17304781126DD4040A9E87D0E0D0ADD0D5D34A76B849EE76BBA43202B0172A76DB15BDC45DC01B7CD660688ABD12F08CEC2C510B9F1F45CD51D0C56E3BD153E36410F5CB22E97305C7CD9057D153B998A3A51693C61ED7CBCFE0728CFAAD31050C8516AC2D356A02A94B43D17EFDEBFE273CBA86BAC01D553939FB3276F61B1A8C9B4B5C4D0D7B7E4B03EA8ADB064CD2047465CDE2AA4A4C67C172E33A279BA3202944E3A28FA119B14C4BA6D5927A22FD293DF2905D27E2510EF48B8A98442378475AA1C1592F74D34C1CA66E9366C5475FF600E9A912D2F16282A39B258F28F8183E9E47D8619409C92F44408173BDA82F443A924349CF3477A06ED67BD9BDCCE3AE4664D88D6EEE62071089CE927FEED50B6BD14486B4DE6F69C02802CD8DEF71875CD32D58CF91D54C304C394565D5207FF1707DDC785CF977F57ECD36EBA47921184745ACC18C3BDA0BF85678A519F3EB0782CC0D71951EFFD9A55350D49E608BC3083D2E9F83BE754493C0700680D2EB7AD23F68D87BAF732855C31C38DB057D97CAA59CDCC55B73D456C8EDD49EF958D277D5F25EF7B34758C9F649C0924C699E52D83BDB360EA586CB8481A2C1AE895C7A49C0F5031E90175E4412DF11B3320A6F4F71C6BD7D9C69307B837321A4872B6CED46588B649B4438247CF1EBD66518427743822CC2AEFCBD57C4978B2CF5B9BCF762346CE98EFAB43D8E98F09A8D5A067B20AA50F4FEAA4E599B239FF3B91B3EB334F47430BB58F858DDFF34060C12DA7A811FFC4B68B808B7F6034E6B5AB074736A3D5588D5D5BFC7B20826FF66385D88592572991EE35A7CFBBC4AA81A9CFE1D8AC09BCEBD4194BB60348960910941BDB5C602353DDB5476E2E89D298B07BD250A0964A59C8ECB1790C738EA59E9EBE26A8CE2448AC8EFAF6C24DBD4A47B205877646687A4AC2136FAFAA476A27A1CF8FCBABEFE2568AA4129C53977A2F6632596E062F583644DCE6BBB59902468FCF207E2E7F9BC22331ECA155DDF62A983F4877EDFC2072765887CF0926A1F0A1CC0C8477FC01E796974BD543B7E166E5BC2375508A5993AEAE08D5F7CCB9FC8FFB0088D072B39C3E61E156B14A2EBF7720E94D032BA0177379D5C9F42BEFC9DE4E4548B7589572088636EEA803E1647F485ED7E26CF8645AE815579DEAA7137217776204E5081E8B76447CF4B26E70977149ABCC18E67256E1EECE423ED51EDE237C918B7F5F9A40404C6C277B6FA77AA5C02CA0FC465A30050C23F639DB4CA1259ED036DDE41711AF6A8CCC7A4ADA7146549D7EA87EE2DD226085733BA30664FFCA01DD9F719CC0A81AF192B98DB6BA31B1B0E53ECEF8A7BBF3147D5FA4D50B6328CCB049FDD2D4B7DCD58E8D502494AACA428AF3212530D15921AB5D1F610345E52E90C0057133DFDB2D62F86A1A6BCF7FD294624B1841039CDEEFDC2676987AD248A72193D3A4590EAA17F4C237673FB5DCDE4CCDA0F9CCEC8D24278257B86494E82621724A3BAC2E3B54A0014D406477AF264A984BAC314FDB3406AF7DD6B6F2B35FDA1145CC6BA1321E924C58CB9F4DC0AFD2306ECB493BF4D2971535FCB1649DAE4EED655232E2BBA9662D1AE5F60F95B9EECD038583E7169F1D7235556B356C2DAEAA7DB1E76D7DEF75C5651B200EDC87807C0DE360172B66D7C634BFAD653D31C0ED364C92E4D181501310BE82FA7E0F96ADD5EE2788CC977F16D92038BD420F87335A33D790F49BAA8C934C076CE4DD47252900904E0A38209FCD7C0AB14893D100364E9F4B3706B839449AF57F8F1231FCD81293427F3929221337C37890F943007B0636953DFCEE2347560A6F42A00FBA4A0ED835FF8F80FD257C37FF433FA84B56F50488DB9BBEDC2470FA282FB9E07327082E82200D00EB853970C0C4EEE007ADBF184D9B87DFAE50FC118F9457CD6B9CC4D73A11262A49F41902A22BFD17358FF37B70A092D7A029803124FC71562E6B0423FF17A5F68794CF5882843C8352E4DBFFA1DC5DCB09ED361191F4054C83C2D43626D9171EE9FDF4DBD03A551CECFDDF402071B5510D391A12E09365928F82D5BFAF055C78CCBD15A4E882FACF9719259315C52C110D8329EDBF053E5697614B4D64956DE6A06673625B10688A3E4A7AC66ED17CC956C4B22BDC6EB9C77FBF0C8637AC6B02AC3EF2AE52C9B5FC1A9EAE758A77E7C6E481F7A0E2410A32ADABE39C04E25392DF78192FDECE778C0EB6113DC0443D07D746A1B5B5CA1F6A34C001A7E619F7384B1B95115DB8E7160A6A912C30CC71696DDCC4BD409EDD1459AFFA1DCDD0A6F4BED9F2A4AE2CA91F5E8BAA4A38F339684F9739095539F7AC3E80B8AEBDCA493AC49D6D57D9CDBB4132A55FB5F393DC657592CE35969C9F84E145662D73FA61944170869B85E28E82DCF7D7B0DA41B9ABA452382BFB13A327FDE87593668DCD3844CB74830C40DF93034C599EC5EFAAA08CBA8920C135982DCC5F9D9D6CFA1B4F299E6B0FCD359E6373A527AFBA04610E3ED506AC03AD760E3246B6ADA342260930097426839AD2571C25AD1C0DE873C8FD8E5E97F36F4B7C285DDC877FF0C0307E1E7EB08F3A8BA302AF8FDDFF59004AD2EDB014E48F15C1BDF8FD26BE4BD72C657C9DEE69C238C203BA9444DF6D7DCE5C92B49140AB4CEE09BCF2973C64E5B7D8637882BC11E00FB5ED1029FBD1E2507B2FC92B9645EBB930AEE5ACCFA1869ED5DD6B7BF5FA124AB2A4DC529B23F338DAA21C0D9BB9209277BE520D2C333F136771541E65665A801C7E79F269991E0CBBACD22D8478031BBDD90436A7041E7F64C8EB29CFD5D374489BF01C402D29DEA045527F60128FEE6E38608C6223D81860FA8DA0AEF43DE5D95EE5E887E7DB8FAF259662B19E1E5239FCBB9674461124C2D8BB45A08930AB076DA6022DA667865CD1DC3C8D7666C2DB3B66B139A670924CC026AF2B95EF26F5EA5A44F81C2493953439A36AD5964C71F86964237E7260FC13B56C80B75BC7E1B547A31C22CABF16D21C056DCD28772AD93D332B8A037678F948E566B713DDD972C1B48DF32F4F2EAA4D51626DF32FEA3E42A679279B57B2D02A22D9E5595EBE3E2BFA0B74E936AAEE05813DB2140B0518FA28756D63B1D66A01BDC80C754850EE922341F92476540BFB8B221A1900BB1F1DC0EA30E950DA7A23A0722C6E9D78BC304E1FF1CA0CF484D36A71D88EBC500101A9EFB45E1F054248C6D58303279D5E1366E9CBE1CA5510CC665C7EDE02EC664F712AC5ADC35E1048DDA803377180ACCD13C528D385203653DFE8F7C2866345DA6E3492FDD7B04F07D882032151D95AE5B0B1CB3DC393C951F371CEDB664DC2796329C83CEDAEF5627520FB021C1501058D1111D4980716DB6A410966E273A08AC08ABE28101EF702BC68C7A298C735DE70C84D543BEDE05B12EDD1ACA58F80027F70419157D8F46F1A0F182F3F7443A30C2AF619264C4ED3A96216234D4B5C2DE8C5232785A38797D3DE3A2CD4B01C9EAA2EA07B9966DC33216EE8F4C1D121CFB3EB4779501B1D69A25E45471122FEF84678781EAAE09481E9EF0517BA92D502BC6B78E969A24D8F1037D83A219422FF70F0AE49580224D257C690611506AE1089438AA6AA148FA32BE90E7308595F55CD06A6CAE48CA9B947A592A312EB790989C8B1DE0A7B555B610A1D6EF4B1CAFD663A930E5FE32CFC99D05F0482EC913F7004EA3FA8814A51B14B69D96E3AC595DA953CD7586BAAA59CB445391C50D87479DEFEEFC78A54E5F0425D147A528E5E0BC929EDAFBAE7055A44A3F43C11346172F460903CD5CE4F4057E7160D962B4926E62E5326EBC5BEF6F99582E760A9DE0DFCA185F2FD2235FAD9AC58D3D1F7C4195ACE55E3E13A872FA19943404B68E0AE080811F5A55628C4F8584C3E6DEB2502D0698C9153FB2BC119565064DEF5AF71CCAACAC8E5CF7303A690EA88ED49C1B673416FE2DB4E5A0DDD50DB4F05C4E503A9DB71C2205D1C01F688EBC210A3D4D0949AF09D85CC957E4FBDEB95F323FEE2AAE7DE12D7FF9616246EEB526297FC397C0BBB6BD3487DDC46F3726272870DD38A091829C4C1F89503DA7917E1421BB8C1B118E868920E626A02CCE38C34A39C6018C8587FD375BA122667F9CF65FB03D7BAA0C06E256BF7FBB5BEC2F51409CF36DCB7C87AC339EE3C5ED5412B15930506C80CD193E22D3AADD05DC914B2C4FE1C97C2F2AE32891480B2840F5029CCE621B9BB2D08373B53AE7C1BA9656FD9899AD7259352A056D43FF751E15E1DEA840477A85BF796F5E55B6F443117DFAE11D8FB75790338938062E7EE10E65AF5909197A5EEC77E9103E13F37E25C24BD5F483F0862A87180CBE327F80FA8E4FF0179B39F7F39C0495A697197C400B0233D2A8EC8A65193E72016D90BA085825AFC403669A9853D2588F6AEF937D9BBCA3203BAE51A1C59AFE6CB7F695FB4A9D4E7169A84CA477AB8ED683FAFA399B0475A0FD89CCB9C40E0E68782DE05D3C5D34DD911203E3700EA8902F8B2DDA90B4C1A370E50DC0C094AD6BA9D43C59CB219A26B62C9889008230EEE13C8A48D033D7B35C3CEC575F740D0C7498499BD25ED4FDE0F714642C4892FEB41EDF840A549B760C78FD8E4542D7421F9C047848951C82679C67E91F63971399FD9330947902100CC39F596146A8AE2FD25490342AA61F025D2C6DFCA26698E1D9F457AFA6AD9699F47B74F5B31120E3C9B93D1F06DF7F47842E475C94235A6D0677975250FE8934BE064FBF21294F3C0B7A32F92979DAFA85002B786649F5D11117FF4B89CE92CB300861009FB0266ADF0B5119E061438C9C9CDD40D300CE64006E9E192A03A23CE767B91118DA5AC4E9C0995AF8EBE0BFC462AEFCF141F83F39FD0021120D30DB59142278A83263C23208671277737B248DEE44B764B53B957F89D71BDA39A2DC8FCDF1D4B9680791FEECBAE8EAD5C7C681DBA333C87966A3D88D092E5B47E808658A82A971966B25D6B2B887FA52BA99C20099FE866F1406575E0C2C6ED936A6F4B28350531E44EB707D6D05B0EEB985D26F6C4ABDF971F6767C42239A4EC6FD7C018347CF6A46A3CBAE8E09020E4578A47659FF7CEBF90B308CD9D6CC215121B66F89AF5B61B66828B88F0F6B68F47826D97F13F4C7709018880742906FE79A5D5C529274961D32CFF1D6C45CF99FD79861AFE2A24D3CEEEEF996D36A73C7B8D0F4A21F1651F380CC4C53F2F0BC331EE83FBA3ECFF4E8001F63A38B0F39C84C2A2DE3684780B1366E1F2655F939FE22B687FB3AC998E8DC0C91FFB2AE7881828407D8D2D8DAC7577E73D0A0DE9216D56580C4774E9D729135175BA5810E87E58D93D1E1611B59DBB093BC45B8480D7A8B1A4D2DA40A43E68547ADB17F21C67FFBEB133AB035744A26F8C6AAD13CD8FD09E12A76B15A41834FEB5C297D986C9ECD4C59DD24D2CA55A5F306BB43A915586EB0B78DF75FBEA1A99FEAC4D94ADC8E8C37DD84D2FBC83726D4C0CE43864FA6D5F3BACCE0DE976D8DA83384E7F57C6B26882F0BCB808572E88067229EF05E135043FED5800F9DBDA070072AB8434F31585597BB6733DB457E47D4606774CE9D5A20249406A6DB16FA616B5B895ABAA53135DA4958A2BC2C68A957383B3D463BA169D0981EBB2AA17A80C0F5D88FBC239D3F3F319A8534A774082B5D5FA2EBBD2B3FBA1F7A1296860B28CEC7D1B643E8FD239AFC0E14911C352924068FDD51D7A503DAA8C5ACB98AA8A92671C66CD5BDC432602C07EFBF069EADEA40FE8FF63DD6E722CDEBAB23407A104354EE1F45C85366424D6D25CFB544C40A27B2689C28B2F8AADF4A07C2191F1FB1E79C6A188F5811ED884DB8C0A1176D791790FB8E01842A91F574768E5B94292E5D73E828DABB8ADF907B03DAFA2809B7DC8EAA782381A06361D8231AD19391E4148A633D3F44AE6C161BED86705FA7CD6ACEA1CCF9A10ACBC374B70288700E0CE91FC67FB4CC7897E03E62079419E3122055A012F1D4FA637FA769CA8D9BE3A61DE0AD608938089E4619ECBB4F0337B98194E232CFEB0B042562F01D62BE0A545ABBE9A36C8298F84D01DCE7E84F147C6FB038F8B9A0D632E5994B2637EB3B980F88508329844D0F0BE9E5CE1E232BD64E83ADB27511AAA9E5B6CDC34762C061C634D85FFE8142EB6339ECCFCB0814C27D64E7B44D7912FDEDA6AD72B679C7A92983F7E94ACBE7BD30C24F4B34DADEDD920B45D28B0C245D11EA7247E3D024E96233A647003B77B18D2A837B29D7C912C7DFD0BB23E52E1D6FAAC750499FD9509D65D8F12497CD668394555088A9233A216F70040F79C57D1598E765641777ED5122EDC40EC7EE30026A379F9FCD94B6878D3EEA2FC55123905BEB9BB067F26C2C680F55BB5F3B59814001953225ED47F420DDE6E88DCD9BD1CA23A2EC428FAA77CB7337CE3F0B2851E568EFB3BBE17A7E93978F8A1B839EAA7383F13B887D3EC0672D76B2A589C525B5950324EDD825D8B93458AAF0105C47E48D5ABB09FCC9682A2F5C8E7AC7C909D269C4867069CC9B5E1872441483C046C12ECE182F0A1BC8CB9AFACE7B976DF16B4ED8964BD5C77AC0BF5CE18A7543A65F05CD4BF9A0EAC84E0BBAE57F0E2FC6AA70E8D5BB2A0AEB5753577FBD3A4E4647546F75CA2207CA640058302AE20BB29F9637099C7DFB250AD1F496496B1B13CD74AE1AAEA9FC88791E71AAD1CAC07557A4D016F334A9D9693A6AF82D6170F8F54472B643E113E599AE807DFC505330018F4EA49AF41088CAC4B1644F046B07AD88A59D581A216680EA8D44B43BDD08D73AE6AE22CC5DF123E9EB7F2FAFA6954388D073AAC5E7F75DD813A076DBD49EF7A89D041DBCE4E12AA4797E2EB236E143E7F13B6B596E1142FF404AA8BD8A48055C878712927786A3EF58F65C79C8AB91326C8EDAA9339E4A7BC12E7C9A387D2A2168D22ABFDEA1707A877C0067C4D926A4B976410B7D6C28E94C96D1491A19A6EBDC2B00F670E163CB0E6011B79DD2B6E807D7D0C22C1EB3FCA9417337D027507DC5148B99C83023C80285FD0D4A614B69EFE9414238D4BFCD77044D3F7E2BEAE70F93F279571D1FD7A418BFA621A6B247F60957E6D61E44E064CE22B3E2F459E69B05FDB67ED212D2C9799E1015199BC052053964C40400F14F021488EA6BE4BFCED90B1BB90BC913F6851D5C7034DB5B225261DDBAE52286F50C677CCD89E86D84EE514C0E8017563C156E4EF6B4711A26B956980A0704D9B67416BC945C566CACAFD791D38F4C924B0BA19586D390408B4D46043350638DD987958A796AB1EFCF01A246DCDF36A77CB44CFE656F52D2D3C621570652395C4C59C85BF9B228E049B1C675315963BC06AE977F0365186A34B2A6B3396AE97CC855FA8316EAADBA9B6CA4B3A8DDA18A52754067BACA48D7315E27370B75A6EED859BCEB6EE0951BF0DCD3A6C064C167112C50C41A81B1FE0D1351C8C376AF15C5C5EB4F10B62B71D02466EDE6A216DC8CB015EF14D2C44697BEEE4B8EDC587A2DCDE0FA8982466B00EEF3F61AD4175B0C753C0350C000E2F194A751D7DFE2F3DBECB028C11C530A79BADE35EEDE3BC3A7833F099045295DBCFE08E4DAF483210BF01A3E13EE99E0223199A5F1CB041368E3AA54A0D96396C3626BD3136E2F8527AD39EEC40DBFC8E94EE76EAB736BF1F9E58BF74A3E80229C836AB182C6DCB402147E4491255F5B23E16B51E1F4EB4FF679D92DD2383AE92D07423092FE462262235C97051750C48620C358D33E3097A81ABB08EDBEE1D9D9952799D32EC825AB38EFCEA8444ADF191497A174E205EEC6AA9878433D44B34182CD6FFFC6F167689DBDAA4E71FF63DFDBEFD9173054F78F38C328864FE26DF42C7D1576DAEF52133048D7246B9054BB34A8675D7BAC112DD5E0B703C8D118AB4FB62204D9ECF4FC8DB5D6F78DC313987E7D51A78B1078805BF7A0EA285E5A5F203BE4B57E4FD157A36ACFB5C529A002CD2E955B8F71203F3DA1A8E23C0AD43F6B87C751EE6E2A2EAC0A041050C2BB3247AE2D09C8FEDFAF0BA577DCA6EF1B9896805A4D524E246EF466BF757D0FDE7AE676AA8DEDCA666CB8284638E64D77BCEE6B89C0687DDFF989BE05524F5A320BD70CE630449DAACC19ED853A07EB78A6EEF29701760E027896A1043FC5141D5DE63A51D967477850B0CDA67AE8A5F19E355E635CC32095C90A7D9993897AF705D03743CD899F4FA77A3650B857878FE0BF65FA66A0C09AC5A498DEE9ADD4D735C6A0AAB1622414961ECBD29CCFED7172FDB8E4138090650FAC7E28F0C065F9956F1AE1B6ECCE8E8B515457D4EDFDF5C7176BFBF4E0B3B5263BAB14E3FB13D5B8D23D2DB4FBBA962F3A68B22C489021AE8861D9547A04B4AB65BB7B41B99A804D7EAEF2A0C040DB5CD5CCCA880188EDAB79766B993A813EDD88824F303F54759FD874AD999D70DE37968C8EAD3A2CA9ECDDDFC8333EF702FD6025284DF19B1D81572ABF9CDB440E08A83402BDF291935BE862626F8C3260D161B03968588035FB6EFD561F7D0D0189D1BF9B0AF454FADE91CC559F38BDF514C9DE3B2B1AA5B017FE075F053B83DEDB50E88DCCA765ED0CB56AD68C2AA6C2A1084145AED1E66F2C0F730CED05F5930DED8A4E5020287D63E12E65AFCF23ED5744AE0CFA3E30096A7961CD24590006BFC7C8AEA0587270DFD3E1BDB370CF6CEB95B59857F8A8DFAD80D3D6CE6B490AD127B5E806853CFED23D2D264C8245E9B9F4E19EA377AEB72EE8F12F849BA2748AE6DC8BCAE7665658B6C61ADB82832B3AFA2CD979BA676978FEC91D940D7A368AB89B65A5CA1ED29E8B35ECA183EB9C65C5F48A6ED8FAC08F6302DC1E48C24B4C8F9012E72D8560DB5A3AFE847AC7F5032CA7CE08EFD7B1CDDAD632B742B445B8EAA021F3C8A5383083BF14ADFC4C04AB1DC8F190F4325CB7DE551C4742B988A5E53599CAA5F14A777F8D8530B313C19EC1979989B2B4B4A8536A256398F0FDCA366EB8C6A24A052C8E7A2176BD2BF4CA937D75BB200EE33070E1773BDBD6DE7E9FBB0A445B0AEC87826D0B38834DFB37655AD02B7B32AA378B8845C0C2C950B7ABA2D70221A06F9890EE38B2F3AAAD22F64FC670F6B3036D00C2C8C2B52BC4B91C439CD076E905B4FB478A9D09E733D0DB12CA72F2DFB0E8AF79F15EE79CD375297F96A01DDCBC1D3A0185BF286653199EF7F7A25141B64C92B430FCE7B6DD5E6415739A4083C30E56BD48F15A01B03916E7BFEFA53113D7B95A1D59ABBF258334374B12F2C8D91B34E94B9408C4E280F3F7E60FF6FDA932F19BD0E6666962A797B5BD22C6AD364E1EA4BACBE58FCEE4778C65A3D9258C368E081166E7E2A4DB86A40C4307CFCA56B197F15242ED4D71CCFC7EE9F3BECE72397694BE8BDF662C0FDF3541738BDCA7C20EF2312429F3A0CA9F99FB63CAD7C7D59A09913B1BCAD231C54263A7FC0E412FD717E4BC9D4E0F82E3F3EC457AC844F76D7BE9724B7CB6441FFF6EE79FF8CE9158CB9CA2E31B384C0A0E4717DE9CC6FD0D6C3A7014DED45A61A09C9DEF27F2FB255AFCAF3B920452439D683D259E65833861DA23BE4E7C79E73241427E9A6CD21B5BE283A027C17B57E83C8766A724C34B19658D5DCF3CE6DE72B80950C1E3A9209611D9ABD1D300906ECBD601F513400D7DF75534EF844C1F0BB53D6FC81A95F49366D0855B27693654ECFF0356D4D95F77FBE2CA8E644101C5BA901CA5A0D84425D16E9E42BAB2469E2ED0029548C836EBDDF7CC37CB763F25CECF90875C80B404AADD85664B0CBD499C3C6F843E7C8CF26930D7A91C1C6A6B3F7883FB11CF319E2BFDEA6B32C090C14A729B9F06AAE75232AE1E1BB91AF89E731A36D288C237DCFAD168408211BFA8A0066E9970CB64948131B873A125D511055BF81889BE38884ACE94254296C020EE757BB2AC5F2DA7B5A2415709C42BD50C573B3619A71EE1CDE65EA2373F41FA6197853BAA1264A63E4052E76CE17E8692BF28FB5B9A07475689F4C6007B60865056F5723EF02AE9E294F7D9443784DC67D80F8816569EC7804DD5202D9E95B2EFDC9715FC0C47A2843F08C6923DF32F05186E387BE86FF9C82DE1F11B0ABC53FF44F967906EE06B806CF3D74DD825424AB62B15306D46F76C9D4DCE1A56878982B4C75D449B8E9627F2B80EF498ABFFF8AFA664EFA713920DF1FB0321225139E57A449900D80DAF3784FD4DB53802D3E15DC57AA02299DBA1354F42A08B74F5917E297A4412FF2092072D5AB9D5ECC5FF2711C36CE699B2D078F7CB98BB0EBC1FF7AC371E888FDE6EA4D8A8F54F21CB5889537969B198BAD466A9DB2B2397D6F8714AB229A5A776A74354B80DF0CD81472C730F6785526E5EE152B7DEA4A34B1D01A074046F91B2D1ECD2165CD0ACE3991883FEB0887F632EDC634842FF97F29019AB0C40598CE78AB03D8AB33C018E447F2EB610B48A84924D45280C596FE244DF764325A0934F9BAC73F04AE4BFF2DAD503D3C0D1D1EB8F167A030464DB21505B35D3C5CE5893DBEF2A74309A49AD8D525D27559C1172FD8AB41F26903B36C142AFFFBEEC2D0C8C6FF7E1A76DBAF4DCDC85B207B3CBB439B2D63B0A497D4BA3F3A2EDEA49FEA12540AAF5A42FCB9FDFCF325A1A892F1D86FBB5FC05E20232E2BC4DB3BACD0A92EDD48CC708D61009E7466B4B0723212AD49566FE83F29B333E6802E7E217D512B4AF7C35FC5804A0DBAC04CF86C73BCF8B12EF25561C0EEB494988A0C33827DF61588667A6FB3E7C80C612D7EDCBBC773), (0xF38AFBC989080FCA2DF63EDA384356E2E30C4189FE462949FF9370D7D9D01648FDB5896B19BFDC725FE8BAD2CD87F43A86D8E46682ABCEAD60B2CAF69837F15CDFF5DD83BAEAC9242FCF29168C577B789E355100ECAFC651E6DC0A67F4E6DA28F65EF3D7AA71809C0FC037B281B8200936515862E6F16F2F2F8B9DDEDF612F49F5011F2E64A3CE2CB5B5F12B7813D02DBB0130A28D784105EEC3A81ED4A1BCAD91EEBD7F99F2A592832BAC31FF44B61BBB6F22DD308CBB7DC01A3FA0FBAF5813F8439A8A565094C85B9E1F61CB0F05A90C8C63647FDE7C043240BF7FB30497D3D39939), ('fe509851-b5f5-4080-89ac-17c03e8167ab'), ('2480-06-13 08:55:49.326'), ('2004-09-02 23:50:00'), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 8: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((928353811), (255), (null), (-1475161617), (1), (1), (0), (0.2465), (0.5450), (0.0351), (214748.3647), ('vzr~UbB~zhC@O/~A@v<,+u~z~/| Ab֣|'), ('o ߢZ .>rrrb@BU.C/zhoUhv+CZb||rOB+,+b ߢ@,~B.Ur~O~/<>r|zA+Zbo|z>oCOOBChBĢAoB~U.bvz |b~rz,r@A/ a<~bu~aZr,_:Zߩ.b>,_:OOO*a@bz,a b:AB,.>:h*|*_A,>b@r>>b>aoB**C B|~hu*bCA:,b.~z~_zv/*h,_Z@|:z/B|@a_vCoUz@C**:rh<~o_Z+vOOߪЪ,bub*|rb> bu+~ Z>bC,r.h|:.U :rua<, :_aUhvC+hrO @ >@.,Т<*bvAvb_bZB*CUhO+baArzr>|r/ ,.|v.h,@U֣a,b|>hbO,b@Zvb:_:@+r_uOoAb~B/.Zh<~ov~r/+ZaO>Z:vâv++ohZu@r,Z~ur/hߩOCB./~|/>_h/|Ca/<.|*U Ao|,ZB*A UvA:aO+:UO,bv@Uz/o@hAazr~A*@>bobvAror:_,_*_z @Ou|| >B +ģrb_U<+.a/bv, <><*é~:roAZ BbBo,uauO /*Arb,>b/Zbz+o.b/A<,o..bo<,**|:ro_:uCA+bvAb~:vhCUB.:>*.C|UvܩA@~rr_O+_zvOrbUA~@OܢB,BhUߢv+::bZOu_a/aA+h>.U:o*.A oZr*,._B,h.UUovv~Zo/.|uZhhaBOABCã,hh/BoObU<+BC>*U C:bza*ZCUrUb֢@Urb vBC|ߪBzO/*bZ_oB*ACu~huuh|B_*Z|r|<<<,z '), ('uv:rhbO> uZO*ObUo~Uh~v>+Ubbã//֢v+*+,,/*,r_,r.hu/Uh@zC@v*|vzAoA.O@_bU>r~~OêA/uzbh_u֣BC~_.Uuz>|~U<ܢBZ_>O+/b~Z@z/za_b~ObAb*h@<++r|aa<_@Ch~o*,:.BCU+b@Ch hbCB Uu|z/,:,B11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 9: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((2147483647), (60), (13342), (1746584310), (1), (0), (0), (null), (0.7945), (null), (0), (',h_a:./<,B~*C~ê<|@b~|hr*ZA+/o. z.~.O~UCvbZr r@*_ Oé@U@|u_|Uz,U,,b>|o+a|'), (null), ('v/|A/vCOv.~buO,z>ߢA.urb:ZAéb_A,uЩOOBb:~u,>|.va:OzrZCAzߣv|,za@Z/Ob+B+~>o_,~~ZܢvO,*~h:>z:.>o /.~,BavCh>z.rO./Au>C/~Zbr~:|*>U~OZ@CbBb+OBUZ>>.:>u>..*֩@~BZ_,Zz._.hA/,u_hbz@ZoAģ,CCb>rB_.ubu.ZbuU_|v*uuoz< AC Zr:_+/U@~ua|CO|~| C:B,+u/>Z+vvbCZ+_C@BzЩr>a>ߢb Ba>,uu,O+b<* @oA|<.*o/*@*bv@,A:ZOZ@o,~C+_a*>_*:+CvCrB,r:|Z,o,<,*oa|O:+:éCvbA/Br:rZBz<<*C|.vu~*v*CUb/aAuvbO@+uh~o a|UUz|@.b>O>a+_bZ/, +vb@Abz ob,*oA.bO*Ua*v< >/>aAu:bZZ_Cv~CoC.aA bo@./ZBbZ z@Ca*O>_bru~hz:bbhA|,>uaOvbUZЪahoOz.| +oA |@~hBh@>,/au֢:UBZ/bha|//za*zvBb֪bZ:ߩC,Ohzh+b::C@:bOv~~hUrBo+CuC|u*@Cr//> ĩO@*:O bbu,,UCbbhb.:U>_>/AZ.~:,|b*v:B~|>_ ua*Bb@CZ**rz*u.zb:bCbv:BBC/.bAb+,:C>bb/|:@Z:A+bzr>OO|~aU_b,AZ>r|,Ob*<@@C.>Ur/ U/*O<_>.~Ī_bUa/Aaor.r/hr@hbbZa~AChCuh><,ru@OЩ//֪@Bߪ:b@./.>._u>Ch.O|b>aܩhB..obvA/zCZ> Zoz~hAb+b_vzbbbb+a.,:C@ahu* zhr_+v:.|b婪>Brv:vCAz.OzaO+Z,ZZ+br|hhvCZoCA+|bvUbbh<+b*_uOBbr:*bA*|h*/h|OAZAA|Ou,Cu@A+vĪU~~O,:~auЩ*vo_*@ZUrvbha /rz b @:O,UhC:_b ~ Z*.*|/ r,*uv@r/.a|b_,:ê,au bru Zb:.UZz+A*z>*.uA|C|_><@:o|z+:|>_:@ uuOCa|zéUU,O B *zZ~<>.+U+rAA,ao.:COУ.A: *. @<>CUߣb/~Z/r*â|ZB/o/Ao@>*@>u@b h,UBOoA| *aC u.u:bC_/vUC+A*b,OBUZ.|u~|~*a~Z֣,bOrboa/bu*,~o|bA.A@ãbbz@~BUb..>:b~*Uz.UC*BhZCCbb .êAoBu.Z> CB+*,:+ uUCz+v~ bh>ߣ>+:u~ZObaOo@u O.zz/a|C:BbbBB~Ca@.zvbvv<:oOz_hBCUZz>h~*~h u v: *@,A|vvU><@*Ov|C>*CbB:|hUC|A_v,+CO_>ЪuACvCb+rb|ho_vߣ@BouuĢ_Uh@_+ZZUbazCUU/bo.bU~vBbv~+a<_.ao.:,C|<,<:,.hv_@/~ЪaAUO,:ozrCz~h.rUr@uh:*|>rahCz_hh<~+/v+~ ozv @U,CZaB>Bv_|hb.>Cr/,://ahrrrߩBZC_:>֪~*Cߢ/.zuu,h*/Bo/_~bbZBbv*Z_.vA+Bbu| ,:..>.v/ ~bbbCbZ_Ob+Z/z,B~Bu|,~vOr+Zߪ Cub|UaB@+@ or,,âuU:,+r.ܢ~O:zuU_/>>ߩ|z@u*/ohvroO_uu_z<,*~@u__b:Bu+a<|B,ozovA:a //r.AbC@|zB>B@orOO*:O>hCA|h,ZA_@AzbZuob,<__.U,,O.va~@.>_@h><>ovvbO*Bo@OUz:z+bruaCbC:|C_/ߣ: +b~~>bZ.uzo.>@~:CbA+rzoAB_Oa|C:abbz@+u_,@:z.r>+/z@b~zbUuobar.vOz~ A~o,b>C:__/z__CAvOb|>,|vv .>bh/vr+u@+O.ЩbB:zbUu*zO@ЪOU>*BUBbAaAv_r>abA:aUb/,+>aBboo@+UohbO_ A>bâza_uaCUO+,B+Zba: +zvU@b+â@rbr_O:+AruO>z/bzh_ߩ,.o<֪UbB~+..A.|:,.|urA/C:Uuo/~B.zv*_,b>+ZUZb/@AUU..vܩU>C*vb*o~BO>~zA/:Ar,@C~~COO*>,| <|:O~o ~B~>b C@_>| .h@> zA:U,~*|barOCCCzhb,|Z@._ B+C b*BuģahZ, <>++_B.>~rUbvBU~Arb:.brA*B@B+:zC|b:Zr><_+z_ovUCO|*b>/ Zv>@Z/ubCAZzBr+|bbU.b_>:__ZC@u_hB ,.|:AA+~bUZb+./O@hBba*bBoa>U+_:v,Zév<@uaU_,UbC_b hah>@Z/rrA>rBz*z><_b<~v|@U*ro_/z@~UhOO*Z:ܪAb*vh<@zb>uAĩAzB_/r/>|*B aC.z:墪b U_*@z,*Bv/,UA@|**vܣC*h +ߣ:.*CA,O:ozAa|v:_horC.<:v*u|_ :u@>u>rb<*Z:uhCzТo|a<+hbUuOB bB ~b@OC>>~aBuU:o~uO@ߩér>ho:r a@+~*@@ z>:AAzO z+rh.|_~zOhb,*zo:|O+oA/OUA,<,A@r/~|*_BZ>,zo/ +vC+bbz,Ab/bUvo*C..U@,~~. O+_o~a:,oz+OvB|b@:Z~B<|/_Z@a /r.u.<~<+bz.zb >Chou|*zZU_oCo,oã _zOA*ZvvaZAar><~A_/h|UAzO/zh~Oh~~u~o+a,B~/ozzB|aU+@_ba@Ob@O/CB@ ~:|>>~rUCU*:bU,ZA~uB/z@o~ U/'), (N'|h>hZboA@orU/+.OoBZoU/U _UC,bAbB@ bOOߣ>A,@U|.|/+*h b~o< b@b<>UU,h>Bv> .h,: +zO.U<<*oAbbAu rbAZz|_h>zb@vhrrZ*v/r'), (null), (N'vO__U*bu_.u|. r|:_z~r~uBvZCbCz@:Z~o@.OC~uģ*Т|>/uCZ.h|z*C@BurZ+z/a.Uu>@z>h v>O.U*.|zr:AOoBuCU>r.h+b|BBBhuor/BbOêAr_:b.:+CB:vv@>|zbu./obhOO.Cu,Т z/hr:|ArZZoߩ*b +_< U,@rub:*<>ZZBBCB֪>o+z>z_>@*z>:/vhO,.>ܩ*,*b/|a|Z@ZbUb /Uu/v:O+oo+zuuO|+u|zЩb@< aAzAov@Z~+B~vCu>+:ob .Av@/O,o~ã>zA*,z@b@uUz/rߩ.~oraa h/|r._+.@@*<*.:C/@*~abߩuZ /r:hZo.Bh,b<>:b+Zu<+@uU:ܩ@ܣu Uh>A/o>_@v_/O.Ah,vhZA>_h:>_a êChv*AaZhObu|@_ b/~v<*r/UoB/~>,BA,CB:Cuz+ua@_.~//Bh~~.Bu r@avb r~~Zb>>UrOa_zb>~.~.ub. ~ohbZobhO/A.z<@:|a*Z/O>h|*.__C|,oO|bCv:,oOu+|:__U@z,Z,boB,o@h:@ܪo|zhOO@+__h.bzOZb*aUrzz .+<:z@*|/O+rz/ߩbu ,:>.~.<|u~>~:_>_:rr:UCuz>hb_h bz@vBuCAub,.z,uA@>UТ/U/u_r/Z+b.Ab. BU>~.Z+Aa*/B+OO*r/A,h:b,Oé,O..va, UvboZ|*Z BuvhBhvOa֪a>Z,OA>. Cu:b:OZO+rhC++<_+ , o *o:*A_|zCBUb,b.z*C_Z:AzbbvOh*zraa+BU,:ߣ_U>_bZ+_b_/.+bC|ãZ:BZ㢣|aa/uA/r,Cuo:ߢOav.Z_+b.C:> BU+u,vub.vêAC~u @>O>.,z>rOzvBoA> |>:Ou|AvBZCAv>B.u+:bBzbB_/O_@ZuZvhAoh|uOAzbb~~ha ,@oCA h@rrB*oA.,*rZU/uZOv,*<@|@|bZUh*hb>@z,r>a/Ur,r>ohUUrvvarv+BuOzb_:_uZuC~uA ba@hhzAba*b|r<,UbU@~|+zOO.a @,v,>z/C,+A:__~/v _/Abb|uA.hߢ/.ozU:bbh@ _,u,:Uu~OZ/rC@U/@Brߣ C+.||a,bB*z<.Ch_O.:Ob@AzbB hroa>Ab~AZ.<|b*.Z@b/~z_._~éCbZ+,/.Ģa>b:B~@ @~>r@C~@婪AO~ bhzo,:h~>,ruou//AAzv.z>B*,zZz.Ohã:*uh/ BbaBu|,:bBzaZB~aBr.ЪbU@UZb*BBhCUCoUv*b<<_@Zz: Zb*CaOuU@ v|_bUOa.r/O:zr_Z|ohAOb@bhaaUbhU֣ У>*Z C v/bu~*,B:,Z<:vZrz/..@C .z:C.a/@>a~/b|Ob,:+Abh/.Cabz/+ܣC+,墢 |zu,ha_/b|UbbCCo.|./UvB:/ZvUa,@z|Oo㪢z..Uzh.b
~Ub>@h,>uA:Ov>**ba><~@.BU@:/r/abhhZ**|*_vbU_b ubAb*zO|zo/O_OOh.obarbva~bBOouĢCAB.~_hobC+U@Z_bhzbbr//+ab.A :.bCOzC vA*/brbr|CAu_orzA/b*@r'), ('*U/@h,hobCzB Av<,+B:zuu~aa baCoB ABv>Т/aOB>za@@O+ZuA+O r*r//*z@uC>z: b.CB||@*ob:/ObB.UAa|U+_:UBu < +r+b|or~A< Az>b@oBvZ*>r|Zb|:Z**bh|+.rC /v ua:Ahb +rohZaoBZ:CO.b OB.Ob *UC/abzb**@.b>abvBub.>UvoAbZ|zUbO >:baCozhO~b|O_ :ZO>a*B+b|*Zv@Z@Za+hh__,~CBߢbZ>aB>,@z<@Z~<+|:+,Or+hbZ/zrOrBbb,U B.>zh:h,uZ:z,*~vbOB>vZO<,|_*hb|AB:|OhaZhu@U@:@o+h*bAU_,,Ov_/A+,z zU,Z*@~uo/U,A/hZa~B>/ubrb~b~_v>,A>/aZ+ABrC.:/*Oa~o_/b+hzh,hboaOZ>oOBv|h|U<@CB_UvUCC>Cu, aZܢ z/abZ_ :uCroB/+ܩ|ߪ, +bhvCC>~_@~:o zZ~orBz.+oUOZuuUB+O,_,a,OOC./ZCZ+:bbCUubb/|bA*b*ZU~rUuaaA><~UAA@_B @._Z@b,B@_ >u.vh_BhCC~bv O<:,A*bb_Bo>,ZA,.+|v:> AhboO,bZ.*uZv/>AhO,,U:zO~Zhv@b A._>h*z|abUZ.U:_zUhC,:UAo< >ZrA@AUC>_b+ >_ ,uЪ>O.r~,+r@:,>+hZ>++z*:rC*Zvuau+vâbAU~hO~CbUZbvuh~,֩Z@>~*@Zo,@C_ *r/>CzrBC.*oru|@ahOhuobU~>..>|/uC.+BZ+:/~+CZ@Bobo+rz*hO+,|>|AbzģZ@:O/hBh<_ZU|<,_|r:aUU.a.urz*~h_o֩ .aA:h+_boAvzCohzuBu.*AorrUOb+hB>+A:bOAU> bu~Zu*~B:Zbav|A.__o.O+,o*_U v>AbrrOb<>b_b>bv@v@:brO rr|u+vh|b.rBOzb*B< @z:â*Z:UvObaB+zba:O>B+bZzz.|_Zbb_Uhbb||/hZ,|ZAaCA~+CA>r@U*U@/bhUUazAC @_ Arhboߪbzu+rU>~ZhhUOZbOB<. >ĪuO za,|rCC/@uOB~oo_a~U:A:@oB~oBo: ~BЩ .ZUoo.ov.@* A~_B,BU.v . |B>Z| o>|bOo,Oo,rb,r,vZbh+r+b<_ZhB,ZU|r||Uh|aZ+>arZb,zZb|a:hCa u:*b:r:Ub/:+a_ Uub|obbb> Īr~z_CAZCCuCA.bZCaCo.auu:+ a/aZZO@buvzOauZ<*<>*rO@.ZuCr,:b㣩_@, U/ zuOoo>>| oz/~ o:_o_~zBzh>AAa u<+CUvazo:a~@O:a֢._/BC._~bubz_U/r@,~~ߩOrA r _+hu/uO|_Uv_h h*+Z@ _z+ub~Ua/*+*v_ߣ|~o/+UA: ,Z,*>h@bzC>Uubzbu*>hb >h>U@rrZU_:>,uUBuoU/arUuo.bbUa,C.uܣ_~UbZb:@+vZ|ZZ@:,,B,h|~ĩ+Ch~:BvZ@.arBz ~||uabh h|aC|~.oZ:zCh,B<_@Zv/bA㪢 v~ZZOvr+:ABB,~Zz,@|>|Bhh:@zo+|_U+..O<,r,Ob@*z.Uhz@ ~U|ozߪ/+b.bb/vobvZ_Bba|,.* '), (0xF13C5E31FC809573D1EBF43AE7C9DB0C226C824DB54218DB217F0F277DA6200DBBAFEF05A8C6314555DB61BC197324C4660C8882468DC5AF2383107D716DF62ACAE6), (0xD6635B3A3DF7D9), (0xC1AD5A4AC1711E9DC62DE940E125B6B4D3E7E537F132F4EDEA90A92C480995ECCFC7C1622326AC850B2D20514D99F43DA5866910F3A96A8FB96D5F31C8F255BD97FD711A645490AD3A602BC412A39F509B6B87C19F85F8265D32A8B6C67BBC19D862B94F28DAD950F5BCD6927DA57C16CD0F955C6B931D12054BBC32ABDAE6BEA311ECAFE94F28C09236CBE3AF65A8B7B592E8B7E560AE4445A64ADD1EA6A51AD517EF6BB9CC2C7DE6D5CA34C73A639FA2047C19F22ED94363A76A42054BA2EB91B10D98763CFEE8656BD11096797D0A43AB3A19298B28A73DAB081262E9789B33DEA3162DCB28660693B4865DC9ADE9295FFF591088C10588655ACA33EB867BF335DCB7D667DD7782D41296D7A14974FD1FE902EA1E8AAA1C9D8DC7715D321A0D389327ECF512C28287D73C752B2EE61CE5CD14028491D4AB319B38D9160624A1F7889E0E2288080C268062474E35F06FA6AA8C901E1888A7BE7CBB5ADAE86B81B29A7DA390D8F95CC407DB042E8D5DFCAAC9336B7A9383DF00F64FA5CCAD323E14E194B3B74DDFCEB02FCB163C8479311EBFAF11B5FF061E179EA29989549017D49DEF4CF8AA445DEA65BA4BC76CA37B7C1D870DFE218915DB759B19AA45445C9FB4419F942D38747A51265044BB57AAFA261C6BCC8218B313DA71830E2BB2A5205EAB122A03E74FE51293ACFA39D01F1EF11E8328D98F1C9C8E8BBABCB5664F9F812FE60F447FF73FCD86BAEE6CB8DA0951651C0C2E7C47CE8E769C782C9330AB430D7809EA0FDA7127445A52D52E2FD5B1B16A4F49437005E81881CDE37F133A560EAA5E40D11E428BABE4EA21F4F86046C6C67B29E061009D7320D28E0C8DA83120FCC683D095E09227C49E5E85E3F31F20861DB8981075ACAAC1CCB04CB47E1D3CB901F732DD7631E6E8011BC3A217902DB26E8670EF98108619D80FC92F4673468021CBE1FBED4210ECD1AF0E5AE907AA3B839945F8AD4C20F17118046667B6A28ED543814BAE31C52C75841EE9012C30D1658DACAC2D4DD2D4AAF08AD43DA9841A0D8085A6855E8D51D41982292E37F045E73301DA0AF6618770ACA1BDA6F0EECCFF03DC80A68A4B06005BD813CAA9A6730045EC0AA7A910171FFE36D8BDCFABE32BB6292A5B6F9E5DE7FBD9AF1D4DBCC6062DBD6103E42455F3C461A854734931AFF5E814807B1891A68F23ACCF61F9D1416FD28F114ADF4692D337960DF60974B1A8FF2865A8468A152BBA74C1788691CB8F66E4A0BA1F6516A181AC448183B085AEFB2762D06C99294779E58F6A85194DA5CA7E8F24D3F6899912C326994693A809EE127C5E2FFA23CDBB594039D6AB1C685F9EB6052161DB049EC8BEA8729000E63D857B739CEE76CF5AC1697AB64FC366A7BE39A8DDA2E88D3678C0663C7B5B2A585AFB502FA8CB7027E6AA5FF7614E4E055700B45658089A9DED3C242E1093DF663E225B537337FEF3C980F6F78896D52A7261E57AA7D4FF5161B3426CA7421753CBF9B83FF2FA922001C08CD712A2145766F9BCAFAD64BE69220AF2BFF4924C8669A22C8FDE963877CEC479E648283EBE9EEA06AD8667A5673A4E1CE707D22B6F74056D70768579D0C144E0E8EBD821FACC34210A8C9E0001FCC5548F79506FFC990A7142BACD48197135EB4187BC7B622C221BD3B121E2D5056B73B131E95670D4E34FE166DF3FFEEB079856B3BE7A3F49F16257359B4B78279C3C4E5A97E887DF7A6DA46D9AFB4DE31DE8A9888C2246F134673F86FF3B3998D6B9CAA2F1A4541F11763851D5D2AEF6157417B3A2F09A79F65C252FA900E03F330C96E031AAF17993897715E9F51B61B848718B2385F6E61E50AC947E25761096F91DC93BCEC56B829E201878858F0140C476608F541BAE16B0C1E0FE5DFB6E13677EF0D75226EA8306098565DD6D99C1AA53BAAE168041DD6FB38B0CE46C24A2B10411069F2AEE9D8CDC894B95483842281F530A41BFFDE63D12679E9ADE9E99E4E3B3D95B922280641C2239F7F548277B48E4C5191961F1072BC98CC25003AD3DF066B2945FE795FCD2A6259DC3EF47CA3F2352FAD97FCB81C1D130C995BE141874FB078E95921B614EC847733C53433C82C1822CB1B364709B30D28DB7CB6714910C29C8E8B834AD07F0AB103857456D8EF346D43BE767C09796F365BF8EAA826132E1302A7B53CA8DD525C008543744EB64FFC38592D8AAA4693051C5CFED794628AE0675154312A07C4665C2A7B8425FAE795B8EE7FDCE59378BC14A0205BEE8AB7ADFA531CED621ED22084C73E8FCB0EEF1165592EB5F2BDFAC3E8982C79D77887D162DD99D2EE0A339A1C4F582E64F8E105C11EF6855C01AB4C6848F4C9E258591C3F5D1CFD751C235B1584A9A355DC5EFFA726B8C882027551225D6A950569B7B3E63BFF17DBF390B4EB9B6FD76807E68BFA0512CBAF809A3CD7CBDB27A19E45BBDCE5CD19DD3723B395F3ECE692ADF92A66DEAB0056FC1455A1C240001869134D55B40A824ACCBEC2D15F35ABA3B39A39D2B0B0C2F34554E0C167781AF713AB2CE09F90EEA366EFAA2FE82EF7B678B1FE28163D67B8505A005F19C0D35493CBCDB408CB1422BB866BC116931B166D2A48A579F2E0E633748035808F89A60C459C1C6133BDBDADDB7C8FC19691BD4EF9F1FF783DDA90EAE780943ADE922C0CC5C4C0F6FEB5297C9B079E8661149CD2D2E6869D8A3DDE7AFB3189B31982CF3940830BD1D0C65034C882DD263C1A79D2E3C167F81B9E7287F6560BBD3B765308386545EE08CAF21C9641D50750A83EE0B7B6CF582AD72DA20083EB8ABA9309422FD4EDD6D49BCA28CF4B51C9B97B374E172B0584A70AED613793DD84DF7751F34882D78BBA580C1BECA688DF7563F8854CAD639F8D84AB24E78C9F40CE454957F95E713693BB83BF1EE997F0820DEBD3AB48383203C265B3E7B2943DC8CB5D975D20D616E2B1E19119B470A3ECAA92D9A0CBA5761D175436E8CD5EE11755F6539C00A35137C4E0E95697185F41C1D73D1FBA9CFD25D78A45DCAF2E25630079C3BE2D07EC0731A1DBDABC1F75FF04F526E611C16CC8F92DC4866D848896CB76561D549124C9EB25EE08B11269B80446D7BA073F413F1D0AC4FF4365A9BD29451F45C9689A63C05D0AEBE35407D6C40C7216BCDE8F8C3516F059DC2586858C20EF6C0323EEABAC63E9BA34555BC8F2EE3B36E382F04AB59310B2684097AAD6756FB2649BD3901DD66A58F4D547DFBB3766EDFA4FA20920A4B660133C336BCC4EE3CEF5A964570A9B290D18A755E04B30F730E9A9B086D36681CFE5638CD1930E8CB5F188EA11D30FE35F2694E0894EC624D2350272128E5CFB9F179461971E476A1A2AAFFEC256E55DD9C651603E7608812F4EAAAC809C6A27949D4AFA3E9E4C40DF3AD65E9ED7528B5FA4985C3CECBD191F13424863AAD97DB0885A250BEB2F3B7A109103AFA9E257EC2F4CDBF41DEAB7D031EB2B5C03ED345158AE167D3D7F64855CE22C5BB9696520FA5C345E0D89929DA244DA0003EF76235CB2570BDBEABEBFD856973BCE5C26C875FA61A7A8D643CF0B78CAE89564817D6BF8FF071269551FAD7475A6E266CF562E118A198DCE7A866E8800531FC62A73D529CFD56D2FA61C95420A2450ACECA4B974CA73EA77EFAD7E78988A6901FFD75A01D1C896F9F90E6B7D743BC45625B1AB6B99AB0BA6996D3A2266E4872BB3835232DA5EDB240DCF8BBC187CF3A3E92852E6EF0D6844CBB378748E749304874FB9E0E9817BC6E6875DDA2F4F8E2C6996393E91A03CB62B0D6716D65695893C7734D8B312BA57AC8BF067AF8E257C255C0AF84B5462E70303C5EC2A64E08FE1D4ADA81AB56956DBE19215AFD5169CE7FAF18A5BAD4DD8145DC5BF4CDE3D479B6075DAD07D617FE2B41C59B24D372DFD29043F7366343486D593BCEFBA09FDB45A8A4F5F4BBC6A8971979790E415C72697C223CA0DC4252C41440AE9A48038AA1EA567C2E7CEB16C99A5F1DE9CA3A2BFCC8657F7E633B68655131DF7B180D4F15EFD723EBE044ED900B72057D2569FADA15B1D1E2840B3EAFEE16DC4B0B9BB18C0F07FAF316401B8478EE73F035EA40E8370565663C6D91E39874FDC967A1856FC1796E1D6E06C3D5964C6A95984D7A03D6F41305354A50A276165AA143511DD668032FBB7C227A304190D0EF02FB4A4AF9F9F3738E7F397629CCA757AC2192442F942C951EBE86B379E2C3A57A61A07ACC0FA8495EAA48E9C9B892B07A228420FE8CBF6DCEB52C3B7340F9ABBC94FCC72C2D8B9C7948E6844C43CB652BD638575EA3A6EDA132AB16E36CD61EB19C2C35BCCA844D96E8A6B5A53B218AEAC7109C07A14D18EE0E26F98175B80D72C8D3AF1696A96052EAC175FDF0486610202B1B5C39160F4F1446ADA48ACC202F9843DD677274541EAF4A1CE0D71AFEC6C0E960499DB039B1C35F024FFCBCC71EA04664AD6AFE9DACD7FDACEEFA2F78F948E6E3A06BD792E7092BA413710422F382FD3F91B6515BC24CB4729F044AB793E6080715D826B3C9B37CA33F59893AD2DBB96CFCF0E743F78B2154B764F2E3BF74102D69FD0C1A5B4A75DD39AD1C68C2799FC34ADEBAA3FEC51089B7D2FB64C099E3CA495CD1D5CE9E10B27A0A09496EB9923DC42F98E1B96D2EA3EC8263894E101CA0CA511F65A7CAF5ABCD0828F4BBC71BFE40BDA091000110DB2E2EE94B3B866369ED697E1D9A2C96FA3AED13B14439E82567654990708AA0C841433779E1A97047A5BF075148FD641327A55713EE5F96F545C3E3D63DD2F863C9B6DB56F51C19907CCC0C853296DD6A013569CB328DDAE1AC41331DC59A09D2C6A48892220D1E0A8BC696215311C3AFE679D508692D303CDBFAAAB3E9FCCBE2C239BE8D0D4A48F3165E3F6CF6B98E9A7E84364BC5006899744CB627636A218FFBB45E195235A19B31E1F10BEDC345226B0F3565C5801DC1D02519C1942090AB3CAF71425A754749E29B19E30E5DABB00694BC5435BCCA7B979C482D1BDF07115146CE3D5203C8F6C7EC822A6639B2737969BBFF633B7680E5F5ABBD2C1A2D02930891C88F6D5D03CCC68C49399F145DE9D5B4B12407AE15CF4D575C580AC9ADBE80965EA7EAE40B0CB8339DAF2C4746E14DD457667CDD8B597CF8411500ABC2FCDF8BB809B6B5FFF0A8A56CD41066A206117B0A35724642A20A042BF1A3F60B0C71A1CFA18E3C2A97D466BED670B74915553A0384A08C8A994915FEB18A0E4DB1995F626F970178D45072600B886B3153BA159B69F2866CE5173658783E780DC6190C3C1154DA7E54C12E332E2B7E10DDE3AAF77472E4BF12F37D5761A80096D7659AF17C2E20FEE09746A7C3523EBA98257A9494819853354C291DD7821CABC1985CC8908C93AFC3AC16DD2C3CFCBFB5C3BF3B2E6B0256CC46BC300402275D7A9AE52AF675290B92CBD1E86BBB27F850696814C3E17D569605FB4AD063AAC084B8629156D1C9409AB3A9629A1AEB111FC3DF9A9A129A991C8F94F179DE3B2E211063B25895A17EA0287A10371BBB7C1AEA2B0D830F25721EC975C73DD8C6BB777B4189B638B8892161F972988A6101D417D68EB32DAA11EBF1948F20DA41C861BE98BCDA31C5E231A1EB2216B3D9936773F3260137074AD0309EC5A4296846203011D9F2A427A251F35D114288FA37170027ACE71AC729B64EECA993003D0839A502E5A2FFA1C24C51D40DDAF607473566AEA401BB5F0569E722A4B87D0E51B655D89C861595185E65609646B94FC046A4742D5198067D45FC7BBADCFD0ACF428257851E6BC11FD096459C5BC9BFB098625E1308E1FF1D4E5B578999DA3B615A9053C361C9A2DBE3545CBB536A217C3DCB227A9EF6C660833936C3133785F55AE341CA75FB4ECEC08330B38543CAE339DA4CCEB8C1C264CAF33F2793DEC7ACCE66616F295607417C53B91BC612DB3F6F528939EAB73D9921DD0082BB273BE1BB83E41EE25ABAE2D30B526407A79DB71700B840558DC11729C74E4B5685855518D75F422DBC5C1498A666DF64D8917A3F486ABB6FFB8C2EC2CDF51B0C6E8C4D86FD4C2F475A8A5AA4A3A7AE27E1B25036D40B0D1BC9E51C4B318060C74108291A1859678C6132E5BE0F17CB53DE06E01AA4E438637E32BC172FE415DA2993629B7E930E884BC4D4A1264F0BB219C96D2A9F46225CCFC69CE69D4F5C7D1D0B947BB430D44AF757CEE010973C2E2609FD6576EA3AE37106CBB8F728EBFB6757841BBA8FFDE8F422324777414C38896DBF9352F70632D0B10AAE651C53CF6CD379B9122174970B147153B7F26B30BA922E896857A97050514A08854F83D7CF63DBA4C8922568F927873D85B27ADD45DAF4D2EEC96715290868C1D66B12BC9199845417C767276DC69040CF6BEA9ED66DC3AA5AB1E905FCC57ABF2A64918D15CBACEB2E26C57D72CD6528392645BE1DC9EA69A86762E0B07E58514DA7FC0934022B04BFFF70B0A745388C4CC1CCD580BBA2617928E5AE68CC3BAFCD7330CAD15BF336FB40FE1E5939C2622ED593EEB182D191059B8F0C1C7C9BF3C3C0E233156DBBF0CD96DA3FBD83084065837F92384CFE4BA29EC436CCE7197EA40B5B98568E4DC01AA3211BA791D482934EA699FD09BA76C2979176A98523E67C5C9AB1286FE9D735BE78942BE3A310C942A27D407F809B50E4D5BFFCD61795803A9E4BF7225A2365CE643F90264ADFF481AC67E2A5A6FDDBFE61439A2ADA5FA6E314F1455719A7E77F18711B410B2A99F5CB7B29B0B2DB94A06FF8C116893BF30498AD12599A9C67057F638C34E199F336A9A45F5F35F631395DA4E721E6D1F6DD7D16A95E183F5B2E1424314F4E5FBFD6048A6CE4DB94CFA27CD9FCF6B4461FAE6DAFB6CAF0951E6948304B11C5E2EAFDE5111C5B641101E94707E13F43657ACD0482E19EA9F4E56F6C029BAB49BDDD9AEEFF10A229C3495BADCC83E9B3DF26E3B67D0C42004B53F02CADEF6175569F892A47514454D7A4413986F1DC70FBBB8CDCB8F5CCB19A9AA2AB1F767BD4E8E6572DF9BF6B8DE28FDED8CB09795A778030F26285BD60D3D78FADAF983460286D50A099AF773C4FFEFA2916F3E6912047349F4589716328F6592130BEDE495A7DB05DB8D9C0C708F4A2638B944ADFF1FD8D6764941B9FFBED77A355550C911FB0CE984388D946866D9651E60DD894AC7930323077E5C5621061CB621D71B3E71144DAC5B19C692447E0F6FDC9B8EE15E2F6DC25D960A8CA093532260EE369FBE36AD5C9FDCFFADDC70EE996EEC8995873B58026958E0EB09B0FBC7C6942156477FB1A5FE3251712FCFE5DCB7711DB419BDAB358624366545C242DED137E7384F8841FF3AD3A754D9E6D299630423989337BE08F8FBD013394C503BFF72AFF7E8AD9D2F2F2E893616465B9F519CF2419EAA4B9989DE4F53A83EB5EE837B656736EAB0B577046974BE77F2A2A030B1AC4A0E9D4537067E0A6E3976F0689AA29AE0E46876DC4CDA8A40C6DB01EB9CB3677D099474DE1020307CB6573D8D790C13C557B1BBD84AD00D341304602B6C1EC1860F735EF63DBCC0C4380A15F59D0CD7CAC73C83DAF79F32399730CB1BB005009785A77DF5AD2D97AAF0E7A040BA1797162CA5642F8AE68E7041256EFCF1B50422F97E6FF58ED21D9994E8EA1FEEE18F7FA9B4EF1A90D11C9F190DA487BEAAB94BE37D573BA7A1874A97CA9AA20C7E916F95EF533CC5F9921861D0DC813D85EAFA3FAE2C619A53D7F82D9472C6466A92AA6C44E1CF577C75F9EB3EC9D6D5061D01EFA0625E522FC542175B0F2176CBC1F73E3214F8941B92B32832866B8A0113278760E6A60844484C7F9FB7FC7D54731F6CC298A2F1247DC40DBF261FA969C81647E7AA15E52BFEF9E9C878F4539645D3CF66FEB768703652F312A8491E28A315D7A1B485BA5D2A40D39EB928BB797067695250327B00ADC7A14722D273A5EBB125632CB1E1B019623CADE3C9C70DA789A230DFCBD8709AC703FCE4733A57CD2DB2F803484CBE85B938EDF5CD2CD400939FA93042D61FE8B4C855BDF4DBA637E4D0C616CF0A5F3CE3BB2692EA7ACDAA2FFC40D391278A57930F5E8FF70080ED82B610EC56CD3199306C5C87AF8D0E39FAAB8E089AD296CD567E73BFBBDF45D32A49002469E15362BAA79324DAF2A8060114854B828852A01F5395E84971ED5126795D668CE9D019582B4DE33F71E253C67DBE9759FA5091F65005064B6B1948CA320E5195418927446BE3674A6F70AD613211DBC346072C28BB702CD4C9DDFD020518FD6390BE84E49752EE16F95786EF67A509494D75843AD228D9C15C427A9DF65535467339C0839CE72BE319153F63E93D6D24C4A3B48F94C28167D4B39844E850109412307C2DD485BC6659A121CCF975E82ED545D94290B5B1A0A868AED95EE6FAC8F49B41A8C14F403EF75E35F3A0C47E5EDB696F9276DDF36C8ECB857BD6D31772A658C85E343F5D95F59A5B427FCE0FE3FA4FFDE577684226A7D529F5C9D4681436C35D47FC102AAC1BD99CEC72A0ECB0BB918196D531FB4E16A1B66F0567DC2132370BBC70C7E7DA2551D9ADCB55A3F6E8693A2852C14F04C81F315A69CBA6A3FD7BBA4B95304FF3B9A77183685D72B0FDBF769C2DB3CE60F806F461969D7059AB25A04FAB6851B829367EBB5FBBAC6A9C705CBA450A7649BD49539E3BEE6D1C3717D832BD3315955DCE72E74513013C5A99C51640C60490AF66925214C37C3AD9527447D369BD696AB75C86978F049A481733A21956DB710337935690B3809A42481DE29EC968E0DC6BAB89698E091061F819FD8FDA11728703349BD666C8B736C2445F61120B7EBE52C5ADAB4207853E72E49899831A68269B5B8B84CD1A75A2F452A739B9AF4FFCAB4F3D0463D7450BBF6D6372201DA3A7DC28D5B67FE9E138400AA6EF604B84C3A49BFE33ED63B2C4168FD55FA70372E6BEFF6D80D9898CB16DF4B4692055AB73E89FCD841F6FCA787601AFF01481814C87C03060DDF3EA1B1F4CD5E8AF4993B0D461771735EEC74F34F50AD7E98CACDC6377E160254A95E4A5B274D299D1C92C7DEF1BB30A7A1698F8F12BE8E91221829009853768239B99CB92617379E4B5532BEE6A0A70E9C1F9614867241EACFB9390E232804C91B44A5371E77818932F144BC8CD0AB81711A6379BD61FCC678B2E96DDE287A225069A2A1FB6FF0249E0CE2952E845EFF0DB79D08C58B0CBA48DEBF6B8E13AA0976226B232D0986012A3FDBB07F6697F454EA5F278A715DC55CE8591CB084968A61D91E0C183BD103309CDE85B05B3AE146CB17A4B4837E04C5A6C645B06950A5A8504EA6478BDB18185CF6EE93D71501AD77D6E56DF1D6DD5A1A4771758B53C74B39DC5F0C9499BBEFFE8B578D9071ED91C49838936B38B77A704C2D4469A38C092FA259FAB5F418DD1BF56E667E50C9A859E0B0F31A33DF0125E49B486C76855AFF4E5EEE17F3DBCF7F5A7875C950FC208284EB89F398EEFBC258D4D159CF71A47013662FF2DA916504E074BFBB6937D5E87BC5E88BFC676660622BBF1F0A76AFE9D305B6E9CC2DA8F3858512242E3F5820FFE8DD09891974AB00CF90AED146F969C4D6E86481EB1B4D1DF4057654413123D39F1F2299A660B9910AE9FD9DF9213F8BA9605756F49E14CC8FEB9414FD56BE9D6CDB3226D7D01E762ED277011EB024D2C5EBABE1D9CCDE000B5509BACBA594B32A5F301DEF19B4D842E128212712AEDFC7C14E11AADDC4A0FD321A81C664AA893EC3D7BF7F07E3AC36D29FF8A3BCD8F9A72AF20A5682084C9B8F20BDFE3212DD369FE3643AEE5FBFDEA2DBD73ECBFC405921DA9B71A032BBBA8A24EFE626AD04C0C1C204D974BEB8CB322CB4A7300ECF93E063DD57766C956C27A9B0CA6FD8B7F5D6177C09F766E56222CF3E747D148A7B555C06C2D0AC49542C97B1CB0DED5C5974BFD01991C59B797E7A34A72E21EE131E347512D2F52529CE28DD5FB519553473E400BE4371EA8FC18D445577A2260BA99EACD97849877E9AA64A69E83BC46425FF33492030CFAD4AE55144B1CFB22B02D1B6176D7BBC295C81249D2680A785C9DF30776EDCEA78CEFE8F92F843CDCAF41F671684ADF7A9430AEC9F0B3287C93ECB7BD19F3ABD25E73D486EEC2A3119B459A8071991011CE8863464EF4B6D9C77C5542CC7FB2BBA61412E466488BD19D8D3EAB18980B0ACCA5EE9180558359BD0ABF727D50451B82DEEA5D762BAB75FC91B8B1C60BB12F615A762691213B4090C9376B9919643D48131849BDBD84A0FA7894FEACC193B159900112EA1E8A61A399BCBCF44FECE33D8B79B2F37771B3C5C52C188C4CA3CF357601F91841432988B69623F0D7BCBA8BB1C11157D0BDE21E4D5D14F261E566E5FD877E3DE3DAEC38402A3CD15DC2EE18619CDA8B827754B82FEACAE43E3716C13F3DF3503E7CA7D6D4E907B68100C07A6EFC80D50AEB537622B60E090007FA19037BA21FDF9DE9E4F4F3B6996FAE372F1A507531A641B643DA7D2D886E9ED6CCFEEEA3055EA0AAD1129BE01734BA16847EEEEEBF82C872C1B55E3552605176562CE9AA80FB31C079A5A41F0A61AF1F1066A9098FB0174A267BE150006B5860B12599EA4B0F85894D2E7509DEA96860063F24EBB757F69605AF741519D1C00E5D336DE4C7B4D400E12FCC614B1D6B8D038159C1466CA9692EF3E4AB9B706F7B6E66AC9B4B8398416B140A979B954AF833F7019877FEC7F099F4B5D3D0287560B04102E460D0417FF90856326211DD99A8EC77947ED6F36FAEBC0146CDB471429EA9D74A92668763A581AF7FA8858E78272C2AE3B0D0F1D95D9335A4CEFAB2349713A3C83A92F7326513FEED3783C7192D992F91998D81BDA7FDECFF20D294AADF6AD884E1C64D8434E88EACE214A1D9DC2C8735DB10AB0981E6103CA60811827F440DCCAB3237674B9B6CA10EE4CB935C1313045B6EDFBECFCEF2FBB600EE3CD70C2D9E06D52E99E51FEA3FB3FA0A9D1A7CD082E50D2700745F0CDC4F4BB14ABD2FD9F2C73D9C76F4892F3B749FFAC5B455D139205B57D9D52D19B7D8425AA96EAF82842017D5ECE0699E5BEDEB8BE4543717E96A781A51D7F01D9A13E4AEA22E75DCD50D76A5AC8FE458C6BCFBEBF9913553913A713EF68520BC2FFA3BD8FBBAFC3D681EB6D6ED916B69862F4394EC142408DE811D67BD36D64FECBA75B2441B5D1BC0CE83EADA5E760FCF17B8C7418BC01BC632FA7AAD8480213866FA231BB9156AC237D42D80492E700B0DA8958E1F0E50FA69FC1110E27E3C3E52A2736452F415F25E0519A7A28B8D047A6F9FEBEAA32968A938A1BD0449DFB9A7EF3D96BB1BB8199), (0x0A), ('b28e4039-770f-4c82-bb02-16a560414b55'), ('1753-01-01 00:00:00.000'), ('2000-02-25 21:49:00'), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 10: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((1957187905), (255), (null), (9223372036854775807), (0), (2.3), (null), (-100000000000000000000000), (0.6410), (0.8919), (0.9833), ('b zh+/> bZ>OhCv,a>a_uv|OaBvZ_uCv@vrvu~zCoU/Ob _zAh@@vAvz+,_bhhZ.OrТZvzO,Bb|~Cz/vr b|bz +*Abrhu|*aa:r*Bb|_z*Za_.BߣzZz+ bBh_ZZ<@* uraAa*/bCO@U*~vC*h+a<|_ :ZCh+a~v+/+/.*r:zv|Abĩzz.UrU*C~>@+|A uvh_OC>bAb+rC@>ߩbUBhbOvru/Ch,/*r,@A@./B@b/UBvb+./ oou>u@o @BZh@'), ('/Z B|~.B>b~UhCOZ~+:@A*C~Ģr_uU,,/oB*_o.bZA<>hB+Bh~oBbbvz.b@,zzUovr,C/oo_~ @:b aAoh*u_rOAb._+||OUOUO:~a~,,/bvo.UA ZУA_A/v:B_b|zBܪ<|bU C:b_v~@>uZ.u,B/z,h,oB*hbO|zb,hv:u:Z,|u+_u@a+O*'), ('/u.ZC_/o>o@/av>:_@+B:v*A*B/Z~~a/uU,..Ao<âBUoO:/O+ܩruO~a~uO :.,u,aUb<~,,@~Bazau:>/ha:_|ZC:+~ObzU>aC,o@| :<>hOz |.AB~C*u/. h|*C_C>h|>a:bouArC+.r_uAbb/bru:.v u~Cov>,hoU.|b*/U. bo : bz+<,av:z:hU.vh._|/ a|bzOOZ/BAov.C_r|> >BBa>bC/Or/<+BOC, oB_,Uv@CCv@>|+bܩ|zU.BCZzabâzUrb*U+|o>@~.o:ZBAbvuv*_,h* /zOC:|U*êu*rrobAuCoAhr_~//Z_֢ohC~v@r>,Co֢bZZ~o+~zraUbvbC~h.b_CC_z._hbA<,*b+BA<,ohz.ZuO*ܩ/r@@vh~+~Cu oao@>zOrh/_OhCUbA>ov+u*A|,.v+|b*,O|za,u|h|AB+zv|֩ZB.B/bArUU~z:UOh*b.aZa_*_o ZߪZ,ܪC@o֣AabZ/rbbh@+@bu@,o+oO>/Z ./~o<_* Z*+@v++v~>@Bro~h:ZUv o~~*+boBb*+ab b:UB_ubuh.|~ao.:aaCuhĪ/r>A>hao+/+o,>r/:b.AvUuéov:hb.*bUa///hb/rUu*OC,/@h oZhzr@h,z|BU>@:@zabu~Ob+@Bzh|.ZZuUߣZ.o ~.Cha@uUhhob_AZaC,aO~bܩ/:ܢbA,CB/O+. Z_rAAbu+B/.u~Z/zC+Au>,u:o/|rObZv*v,r_/b_v,U|ra./ߩuAazZ<*_h:,/ĩ|roOzBh~vb vOUv/:UZ|/Ubu|.ozZuZrrr/C:Z@/Z.a@:CC B,bb Ub _ v Zva.uZZh/*.,h,|+OChA:zbC> :OZ|+r~ .AB@Ba~aa>a:@>@Bv_~u..rUou<:o*<,,b_r:oar,. zr+h,~h*uUêĢbBAzOub/>>oZA>UCaUAh|bB:B~|zA+O|o|ro _z*+oaZAĩ Orr:ܣ._,b|:A.U@ܪr** <_uA_֩/ z,+|,.ra~za~.b:~Uu,CO@>uz@Z@v *rC >A/ߩCb@hzzĪvOC/rĢhU,:_/|>ur.r/A,._~|oo.::a*B+ߢߩrCh@_/@o_|+Bb:rv+ou~B/U@*_B+uAv|~b,v,*@O@ua AbaB+_Z/a/Ubh:rUzvzhC .bOrb>rC֪/ ~~ub,,Bo/a:@B>|O++A_ *>>h:/a|֣_oCA|b.ZAz/+AvZv@.ܩ,uo:ZvAb~_ .BuA/bvr<|,r/+,U,:ߪzz~a,z|uBZruܪA:Z:A.*+A.__a@@ha.r>b:hB oBZ@Ob+Ub.b@uB+C_h*~Zvb+z,/bZ>*b ab_@uBu@/Aa~+AZ<_a~ZC:Z.*rv+A~r C.b zo_v:ob r/b*~UBZa<rrhbu,.OAubbZ~,_bܢZvazo+:UOrZrUor*U:UO+*h O:|A.A~//a@*+b**>haZO:aAC֢OAzO@~b,vvCvbC>A_|,b z/: B_.Ov*_Z,|Ua_>Uab+>b*@|v>|@| /ZAbb_AO:ubB>b|B@bZ+UU<~~huZ bUr+Czrv<@vo/oBhOb|ZbZrZ@OZ B*aoB@b֪bA+h>|u~, ZU+_BOZ@b>Ab,Z >rbU,+B~@@/az+avbC@:C.Bbu@Bzr:,~<Bb/BvOv|Br|b*,h_Abz@b.AoOhU:u.>z_+:|+ro*:O++b/B,rO>Brh./hbu@@@,ZbU~rhCovb|.> ,uZ+zO~.>b,>b_,rZ+ovĢvB/zu:,/v~_|֢ãuu@~_AUhu|.O.B>b Ob+bv:uBߢ/u/OrZ*CvO.<~ߢ|/+<|<+b~+/O~~zu:OUCbOaZ~u:zU.|CooA A_|_:rCu.:aO@vB/~_<<@b/Ubu>+__zZZ| hrr:vBABo<ܪbAaOrv@ uOZBO~>~,~BvuOO:OZzau|.hb u+a.Abz A.,B~Z>*OuZBv~.o+hovbv@uhvo_|_rCub:b*aZ~z,::.Bh@zo>B:<.u CaA|.h.rУ_b, |v :/bzbz_._@ ߣo>C b b Bbar>*ABo~C+ߣCCu@ouh+rhU*h~* A zAa@bvr _*C>U /o~_UrhZ*hZv <~_b<,a hB.+@:h|>+@a,h|Z<+b@*@h_aZA|h:/*/A/u<ߩ AUU,|zo/.v+U/z~u*h~C:*Aubo|hZ@,u~b+A>b,|A/Ub+_bb+rbZCO,ZC_~.|OUCC:Uo:z:_>z /UC|vB*Z~u_bOzvrv/Zho: @uz>,/bzU:*o/B/+, >bZAZ.v@rhz|O.OBh,b@Abz.U,orU,*Oz|BA:B~o*>_*zao><Ъ@Av~*a<*|/,@b>+ZUoUbZ Z~Z@O,z_<.,**UvA.|,h.bBB+>|,,/u, ,bUbO/b|O ܣ_/voz@@hA/C|@/h+*@֢hZߢ,bO/:U,hu|C+.Câ:.+:,<+h+㪣zbzarBbv+ZOТ+âbv+zB.oaauZ uzaubAbOz~h/> >.O+@b*Zu<|_Oz|~Abb OOAhu+ ,h.aãr+BA*rbZoz@b~O+BU>o~ <+Cbv*obZ>b u֩zrr,.b*v@/>|z vB~,OhbU@AbUuUAu@:|_+/++|/êO,Zbaz.B+_b_+_:uo*.v~֢|u*Oabh|/UOZuU >_B/,r/Ao@z.|v+u,,*@/hah*.vvhC/.~ ab/ģ@+o:bv~<ߢ*hUo@.CߩA/bAĢu@bv ur:*BU,/*hbavBu~Bh:hzC_ZO+.Cb:v*Z|@C,/|a>|uO~UUb@Ba.bhoUvC*o,hC|Bb<:v|/+zA@|<_++~B|ArCC>.a_Z+êv|@/zvzߣ|@uvvAvCoB_au*U|+:_z:+zzoZZ/|_ĢhZ|a/OUvB~*/.z*>vZBAoo|b>||h Oo>:b/__vBzuu. ZoO~UOBC~oaa ~.|hO|b|h:u+|aAu_rߪ_~+,|~*.bbabAu:/./ **@/Z~~~BzbOz_+ oorvuav|UbOr_oZ~o, u_ra+ |.>./OABob +ouU~>,CO|>@>+o_h>|~bU>êuC_v,A_/br~a| |rO<+::>Z.@@+h:CB*a, OC.b.:o~|Z~OUZU*.Ob|,| b|oZ+_Ur/~oO>Co|+* bv+zbvo_u.CO/CBhB hBBUuCv+hu/.Uoob @ vu@+*ZrrBao/ u|֪ZBC+_bBCr@UUA,A@rr//|/A>A*@a_~,zab/BZbB b+BrOO*U~Avhߣ:~v@bv@:CZBv U@AbA_CO/zb+zrbhbCB@A_ rbUhC Щ _r>/zCAa.,u@ahUAa+,uzZh_h*au, :.,v:֩_z|@+r.vbz+b>>hzzuB@U_Ohߣ_Bzo|baa:~|oohhba::~_: ,:ouB_:bu_B|ĩoU<_:_U_ar>v|B.vbb/~b O.rr/avoZzbh/A~B@+zbbhbrrbz:bz@O/ub_/bUbBbrOBaB+A*.Ī.>U:aU+Zr**|C|@Ubor+/CZ,UA>bob b U>,*rBa/Auuz,Ub*v|C>Ī|*z~Boar~b:|bOh.B U@Az<ТZzBb aub|*h@|.~ CO>>u<.ro+B|,+A|<+v> ~:*. ZoaC|z~Z /~buAa/,:|BrzOuu<_v@+ O,Bh|<_bhBOb<~@oТ*zhbo >~v+._/r~oB:.A:Ou: .OO U uz>h.:O/.o:A*bZ,,|z|C.|@>A. h abU,/v.O:u~*uZz|@_vZ/AO+ uBv>/*,Z>ob+| |UA.>av*_. _<+rvaAbrz. ArZZv|aO+r+>a*uv,:bz._uuB@|z|bh@*~BhZBh._.B_,A/:+/A/.Z:@z_a|*.aUТBBĩ:uģCOzOr:U:aAC>@ba@ zu ,hbu/@B'), (N''), (N':+:ZA_h au*bBO~ZObZOBb䩢_Bb*>b|A'), (N'obv_, vauC_.b|:/AOUv>BAC~bCzrr~ua~aA,||Aa_b,v@/|A~.ĩ*b+*aBvO ~A+*+|ChBv@ģ+*a>OZ:rb/A_bhUBv:Crb@*zh,U@C~r>:h*@vuCvZ֣BUCb~AZ𪪩|uAa/:/uuOBbbB@@ĩCBC:+C vvr*+>Z,/~ *@_*raߩ>~/vB AzvA~v|vh@z<@zb~r:A_|BCu vU@|@Ģab<_Ch~~a+,a/* :@uOzuvbbhbZ,oТuz*b~ߪA.,.,Zzhh~r_|Zbv~Za@a>U,bUvUoCBܪbZBOAOU:<.C@*AZ.hZ:AO>/*Zv|Z.|a_vu/+|//,U~|+:+A+>h_z:Z>/ b*:o A*r~rB:.~_aC.vOov~b_O C*:>_.A*~/@./Z>u>zu<,:r uOAOoâ_zh+CU~ãBOܩAzrC>rrzo>roC:>@b/|Av_oA.:zABU+.A,uAvrCr.<_.aOarZ*>C_z䢪u_ /|@>,~Aa:*<év_>Uo<>z_|oZ/@<<_u.|*é:+COZ@ z*,Zbh,,OU @z*vB,h*o. v+,,+>Zb*>z*bZAOU:/*C_zB|,UzBaz>ZA*:b<~UAzvU ~v>|>Ah:bh>vabCo+Z+C:.Bazar@v|v|u< :,zU/:**b_|@A/ |z>@ubh+CbbC,+**~ra @hAaa|>u:z@b|<:A+o,o_>h@**Cb,_:.rzAv_/ZoBbv., o+r/Ob,h>> BhZ:~>Ub.hhbb.BUuuz:OZ/<~avvO/.ozu@:Zr.bABZ:uO:Aa|obzb>.r:~h:UU*>:Z<>b_~:||oZ||/or@_.<.C:aob@+ЩAhhOBbOo@u_CrhOa |Zb<,@_<,ЩZrbZrZ<@*v Uܩb>aA/zo,@ABA@++Orb+:Bba.Bub>Coh>hArA,~ o~hhB ob*B/_b_UzU+ߣa.bb*_vaa>@>.+>Uob,UC+OzZZ,U~>~ |+bvvAB/U.zOh~@h,|ua<_ ~~u+ <~r*.COU~vvba.o>,C|~azBBb b C_Z>b,/~rzb.vuO.*,bߢ~Zh@r/Uv_/uC+:OAo|Bba֣UOz@oo:@,_Cv.~㪪.ߢ>ĢUhzU~rzr|*u:.arvo v@+ aAObub_ Cr. ,AAh Bar|Oov+*~Z|>֣hu@BZ*~aa~C.|:u<*+.,boB:B>U*~o ra_oo,z@vCOU|_A@A/z@Щ._..@<@C_z_~v_+,AvhrvZbܣBrv.CCuz*C/r@/ĩru_*@O@Uvbo_,>v*v.zo:v,@@|ģz_vv|baObCZu@**+Уv+C|* .:CvOOrvr/ģa*Z.|v.oOu~b~b*b <,BA|rZ.C,@Ou@h@u +Urz/vb|BC>*UC>|__<*~zhb|~:~B|hvhuZ,*voz|ArzZ@~vAubOb*v,UrO./bBb>/Uh bz~:vzh.Bb,*>huA o**_vozzohOvr/b,*_,~Z~.Cv:@ZoOhbb*A+:*~*.婣/AZa/~~u<@bOa: ,*a,>@*__Zv~vz֢@o@Zhz|*|hvbC|Ch :+..v>/vUvzO< b>hBAB,u'), (N' *>~++.b ZBAhߢ~obCOU rCz+Av.,Z/ oZAU,r,~a ~/|Z+Ur<>,ab_>vB,C~,Z_h@@|AvObhrb.|@~*+CZ>o+Urb._uz:>AA ZAohbZ_ChUaU/A/A/b+ZBvo*+>Bv@B<_*aBbb b:A+U::.Uv>U> zUbA+ :ohrv ZzZahC@CC hb <_*zuBhbChU*/uêCâO.O/ab|OA,*B_|BzC|*_:_Z+bo>.hC@+o~ߢĢ: A+O_BCCZzOhOh~O> Z~raBa|UbU:~Ob.B,Av@A_aA~b_.z/Bba,b@bZ*z_B/*Oa:~,abC/_:>OBboCܩ>~>Bvh|vb:ovO:ߩܣ~>.Zu,vu*+zCOU>*/aaģuob,bb_COz ~avrObu+@>hoobvAbU,ohuCAbrAbzh+_|_CuB/oA<./~bb/ba/r__ZvOuO.O+Or,o@_@zOUOB<+>C+>@uOv.@,O:U.@ AaAZ<+.@Uh+ba,+oBa@AâA|UAo>ߩu.@Zv|z/ߪA*vbbb<+UOBCOZbU|+@< .+.ܢbCO:B/|.Zourbv++h,a.@O>OhZu:bOAܪB~:OvA B>hh /~ZzAvO< v/ܣA AvhoBobA:@ BC|/_b<:ZCvܢCBozâCu:O/b/v,vru+rv>.,Zbo>bObZr,/ /Z*b/bB< :Ab:oOoo+~>:@a Bh.:.bbhUB.*OvhvC~_b<ܣ:ohz++rbB+,ZoZr:*rb*Av<@,aZ A@~:CߩO+U/v@rrCB@uoh+>>O.~A,zzrbb@/__@ub+Cab/ar@bvuZ>@B bvbZzߩOA_bru~aBzvo U:hAZb..*aBuUZz>u:z@.b bua@U Z|aoâ,@<@aCA* ..z ߩ/ܣz>vubb@zo_*r|*UaUz+@_v>B<Ъu|*_a:A:U|bA*OC*h:bu_hbOCU+hh/hub|~_bu_~C r ACaU_a>.<_|__ߩ_hvo~OC U<@uoA@+ZABB/ aB@/v.h,/oܩ OvBU.A*ubO U v֩_@~B.|BAOU>r.aBBZzz<âOhaBC@>a+|UBrvZ>~.@Ob:֪:~ruv_a>bv:zu*+ob>aurZ*|Z OãCzbobĩB_boC+A h_A|A*rbv~+.uAbu/h,|r~aUb:> ,v*/éaC,A av~B/A_uU,/Ah.~>~+,,r<@ozu/@ahUv*uh_r:,+uzur* .hZzz~h:* .*bCA|@ua~b@.vh|b_++*>zZ_a@*U+C~ߢaAA~/+*AoOh.BUO.,+hb*+ @â<>*~B/|/rboBߣZU,>uC/uZO >hC_@~.Zz@>|oora|_rz,ZZ<>vb:O@o~CObB,:CU_+,o@har/ ,zB~h+ovaCu~a_:u*:B.֪UzZ,C+>b_a+|/.OUC+ZO+hu:BAOoZbbbZC~u+r>>uA >ru@BZoohv orOA>a~A.:CbrC/bU_*Z|_ߢ>v<_@ouvooUCCbBB>hUu|UêoBah :o*/:h/Av*u>zUZ,Ab va>>+OUbU>Oa+b_O|bC~C a~/O@| _r.h<|zv_hzb:Cba>O,* u/~ A+A>bz,UvU.|a.aܪ/~uЪhbCoaZC,C.o +vho@_ZB /,Ar|~<,z.zZ~*@,O /r+o:hb>+A~bz|>oA*B+h/ra~,vUO|*u*/b|:@bbZ@:B*<>@: zh~_,C,zBC,_U.v~<<>,b/*|rC., @/.|_bB:Z,zCAobU_*>ZOh>+bb@AB:AZ/rߢ/a<_ 11/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 11: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((null), (128), (-22040), (246773244), (1), (null), (0), (0.2401), (0.5885), (922337203685477.5807), (0.8789), ('CrUZC/UzbBA>B~Ao+r.>UA+_A:bOAo:bu@b~<rbZu_@.b |bAZba֩AU|+br*Тaou<|*r|vrbU/O Avv:Zv*_. .~:_Bbr֩>ZvCb@:B*v ,Z'), ('.rru@,ar+.a a+aCO'), ('vUz~.zvb||/AuvܩAA>ߣ@B ZB:CA~b,bov>hrh:roZvoU/ u@bo Z/b:+U_bh:/Bo,Ob_|.,ah./:@>>U,ro |.OvUCb/bAvorCz/b:Уrv+/~UU|C:zv|uhZ++ov,aaZ<+:o*vvBéC:u ,Zb~b<>~.,BrzrAߪbb.rua>vu:u֣C>oa~hU.,_Cv@AO~ bO,h@,|z@ b/hAC/U__rbzB~|:rOz,_OЪ~Buu:U, ,b.Z<,hZC*: >u:Bv+C/A_,~aܩvBBZz_CAOuO*h+ a_+,**h_*~rrC ObC.z+,*,ߢz|:+o:_Z*bģ|uOhbazo_:Z,U_O/hCb,Bܩo B:.,*u__BhOz_>,z_zhߢrZAhru*,@b~.a*hru~:~O.oaOzboAOaCO,zuUb~+ BUr~zr.@*bZ,Z|vZhZhܣ.hBܢO+z@@uz>|~_.::+,aauU::rBo//:||*oz_֢bArZ, zb_zzuo*:Bo>*@O>_|.|aoav+a/~@< ~/ Щ/r+o>//U@>>,êB~_UC/Uab,||Z oaZ,vooa_*._bbr.O@z~+B|._|CuA*/Z~_:b*_|~r+U~aaz@u~bZb *_BA@zB*OO,/OauZZ*boz:vB.@,~+_zBܩBhv+b*+Uvhr/uoh UBo,O,C/UA*UO:brZ/:bv ߩUbzh<~UZA *uC@UZ@u.|zCzbA>u+<~zoO..bAU|.Ubb>bz~o/.u,Bu+Z>r.+o@baAuhZ/@+ZêvU+O|UZrb:>b/A|zB~O+~r|,b~,>>Z OABBA~z|ߪb_a>b::,obv~>_bvboBBAb_ТAOC @AAzbhZ@*/AO_+.,_~O>|_brUbrUzB_>U:hvAC||o* h>_oUaA,b@ho v_.> Uu@,,ZU*Zuv~Abo@z*|a/~bZo|>baU/bbZa__|_Ao~,C+zu֩b>C _BAuvB<.Bu*a>r.haO_uro~_| r.*hvãoo+>/bߢ O+h@>_/AUAao|*b*C,+a~aob@AOoZ,v*,vBhvhbUU:_ Z*boUb>:CorOUZ++o.ܩC@OЪvhA,a :_*oAb~:*a:o,,hoUbzr~o*oa/rC/>z++ZZbu*.U/:@a/_v/_UBo.:Bb*>b/r++.obaOC| C|/_Уb:h.Ur,@AZ.C.ZBBu@:abau_zvv媣/ /|r*r>uhz,~.u+UUabB~ b/a:uhCaaAAvC|o>OvzubUr+>rBbA<:>_@.,zoBh@,*Cĩh/_֪*,/ ,rhuZbhO/.A@A rOO*_+UuA>A_~â|UouObaaB+ C B>~|Oa+O@A,Z>|/hAOr+,u>+_Z bAOu>v~Ar*<,Bz_,ho+<.Z~*bBZr@AuC:ZZ_O,ZB/B +Zb:,< >A~/U ,r <|azb/Z>oZ@bC*AzbhUa|Z,u|@oU.h+@ZТ~Z_vU+uo|bbO~@éz ~vCvAa+brrêO:UZĪ/h@u.<:zbhuA_>b zhob.bZ @/o@_~zo,Bh<|~|/>*_v~_B|Ao>u*,:U+bzCZC>~:|,Cz+A_AuubZBr*Uo:Z.bТ rZ>bBbbOZ@BO:rb*B_o.h.<,b:@AZ|_>u:*@_/bhr,vu*v*,_vZCU:C@o@~>ba|ZACaza:oCZh.b>o,Bhr~C>oZr:z:u_/u @uvz:AzuB*Av>aObUu@_/~<.~+b_~zZCܢ~|A+vvU> ~.UCb.<_:h: /o>bUBO>b:o@oCb<ߣ ob_o _*:@.vBZO/_/ܩ/Az*hhu+/OvvuOur:ABB.u<@U/Bv*,o/@r+ /bzZCOB@.za.O>*zhA < u.>h ACr>_..:ã.UhhuZ,,Br_z+o rOu@+<:>/:zozB*a>_bv/,_|_+hou+AarB~au|rh @O oB>bu:~U.u.:*>Ua* Z@oACuo_uAU@b, *uu|:*v*ZZB ~v*UZo_*~,/bvObZ@A.@uaO<_,A*@|h>A_*CB_+*O.__,v ЪbZ>v,>>zBoBb>:+:C~ubu/Т ~_:/~ Z,Щ+:Bb*B֣u..~_ãߢ_b>vvZO_a/|Z:a.a|o~ az+uoBh.<,vz>/+r>:CB~aߪb|~ vrb*~>ã+C,@_baU :AUC>ob oooooz@/@r>v_Az,CZA> .:vߢuu++ub:o@Uv~azߩ_*CAz/Uauuarz*| h<_vC< .>h*|:+,+/_<~>a*+ _~B+C+>|C@a/Ī,Bu@+: avB|v *ߣbZ,:zbA|.@bbu*>u u*.bAb_a_vBr AB.v.U~BAébBbbZ>CA+OĪ+|>:hva.hOro_OAbU@vzUObb.,B*b/h*_u,~vuv ~_CObZ.Bvb.:z>ZzA_,>OuzaCC<|>++uhUA,BB|:~,h,h+OBaor,b~~.,_z~/C *b<. bO/A|oAu<|uz|a*+zu֩C~_.,,ߢ .zBZC_b/~.C.+COBAo,OrzABBbOhAhz*~z *~_uvZ|*r|,.C:ߪ@UbhbU/ah_.vvܢvh@<@bZߢvuUz/ba@azO@~Ch:<|_zZ _o@_:Ub++:a*h~rz
C*+.@z./u|>Щ/ @*/~uuhCAb@AC.a>h ChZzCBO.bOrb_@,:Uav*ra~ C_Ou.a@|br v.<,,oC֣+aa uvZЪUbA,|:>::OZ>bUh~:Cz_@êoz bbr:@>|oB:bobaOou+ U_aAOb*aauu CU,_CUCOa+~OA+bhhUrab_BC/ub/~rA>orA vAA .| bbb._..OCAr:ĩA<,O|rA.z/У~<@a,b:OZ BUuOuZO.r*,+*@U>hCuB>u*,~u.az/ :<,>|.C_. <ܪZ_boUAz:/,/ChA*BA|uozZAzbA,:U@BZuBr<:BUr>r~Baa@.h|_.z@UA:+r*/r@UBO+*bv@~|Z@@: ,|_avz>oC:.B~_hU|:h a.>UzUr>Bh>ob,*,u,z:>bBZb//@Aoz_,C:|@/Cu/+baAUBO~.b֪~+AZ+~*o,Ub+/>baBva:@AbubuhU.@~Uv,b+CB>*ZA+h*,h_o_bz.u+.+.,Ob'), (N'|:CZoz:_buUvĩCCBТubA/vr_bz*,o::.r,/@>C_@b,>ZߢzC:.zbZv+|O֩zuoab.,Z|*_*zUb,Uu rb:ZA|ab.a~ .ab>.~Zz|BzOzb _Zo,O:*Uh_a~ C<>.uUBa<@|zAO++A.v>h|Zv~ovZbC|u*BBuo:~OUza .C@oz _~Ba|z*C.v_CU+r>vhZz,Zb>a<:bz< ~a.,u~*,rrBav@> ||_uvU ,/+/BB~|hU.a@~aObBh+rUu./Z|uaB,rAãvOZC* +*U+v a_o+.@ravr zhA@OO<.b,UO:uOߩ.zܪbz~OUr+z*,|ܪ~B ++@@/O<>b/.Uu/_CzЪh r ,o+ *b_<*A a@Z.~UB+rhhb B@~ZAoZ@~*v:/OCvh_Z+|+𩩩Ovb,>ozrz,@v, ߪCoOZ B..U @*b_o,@UZ aU|AUZ<<>>zvU,@~@_/|A.C@~|/A/r@v|ab.: +uBA:~/bUB A:bACzvUa~oߩ/~|b_o~ U+/:B@O+. u+>*~,U.~ba..C*b,~<*vB֢va@*z b~~/*oo/U.o,haz__r.r|Ub < OB ./uC/_/@A>||>|*.bha Ao/r Bb,|*,z_h,obé<:aO __~Bb:*.+C.b<|Z/C|@,_:rar_UZOB@hvu@ ~:,bCAa.~>A>bao/:brbu: ,C>, bO*b>U@/b_ãA*>BzCBB_~uvao//O@oCvA>BhbAo,bz/. BbUab/,*Uo@Ub,z,*+CuOA+@.@|@:Ozh.|r>CzCb_:/a:U@>b>bzAb@:CCܩroUZ@@z/oB|Ar +âC|a|uba+*bh~@~aZBo~ovzb*_ZbzU:o|>b@Bvu*b@.vbv@* U:b/U~*uhO/~@,>O:BA/+o_ov~rb/@BZb>o*+C.U.bZ|O< _ТOBo<@+:u_+b|.Bܩ/vZ.OOu>+A*b|bo~.OrbzOUv b|B*::bB,~Av*/O.a@~r*>~~Cb@<@z:bZz/Z::voh,U@:Т+*<+֢|_h,+r~_avaOBu~rAo~A*hZ/Z֩b/uZZ@bZ~.a*@ *r:/b*Oz+r>.|a Uv>Zz./z<,.,|:~>**/rovvb֩| zab+ |BO>U|ģ|BbbZb ~.oz*O /Bz:A:.,r Cvh*z_b/.oĩ~>uo|:v~:aCAbbUh,baOooC*C|A ozuߣ.:Cobbo+z|v.u*C/_ z.b>z+~Zr~,uub~C/ArbC~,OUUA@*hêO~oBCĢz:::Ou_~Av_|:: o_Z,,/:b B.:boAh/hAr<*rZoBobߩC*Oo.,OC,U+ߣCU zAB|CAhz.Ahvu>auuCAb+r_*rܢ<~AC/*z ~>a,ro.@Uh*OZ. ~Z*Bu~rbbUa/b|U~ uOCâo:@>~>+֪uaC+rba@b OaA/OOvBa a>. r|ovuAuO:o:Z.CZrvC*BBva|:h>@oAuCbo/__*+v:uAobbz|ozuO*z~r_*U+,>@|C++.rrb:oCA. Auê.*_: /ܣ/ r.@rv<+h Au~Zz+.:.ovrO,bO:b:bCB,rC/C/'), ('zC:z_|Br||bb.@C:*@+aZ *o@Bz +bUb.h@/z_bOBC.zC@rC㪣Z<,:CA|zhC+@UZOv,bA|z/ZO|@AbCZ:r Zb, ++ Z*bU*@ Av+vu:|UA~_>BZhUU@C_@uZov+|h.uB+o/ zA>b,rrv>u|/CbC_aOb,*|o oUbbaa<*~ߪ< zh bUBob*|AaC@_:U|:r__|â.~z_>b䩢| '), (N'CO>BAvaBvo~oA,/rb<, ܢ_z/@*ruaB.zO:r Ub+@a*B+B, vbb B>C:ZUhrU<~z@bZ~>U|/.A~UzuAUb<.zo..rAC~bh~r>,oh|Zaoߣ,O+,éU:C@ Z.~ bvUa.bzAU>h:C_u.Bvvuo| ob|@hrb~U aZ|u_䪣*_h|uA:aB|@*/zz*ZzAAr/Z|ZUh,.hz*a@v,* hB~Z.u/r|rr/ua:orZĪ|aa_,<+rh >hCUZ+ߩO~U r_zߢ>boߢAO.h//huzO>+*ߩ_OOzZ>r:+a~>ߩ~|uh*Zvhvavv::_+Uߣ>|ZaBabu@OBC|uuuz+z>~aO,u@z_A,rU+ +r./o_av@bo.+~o:~b.,.:ߢbOu+C@O__b:@|,_u Borz| ZU:~,UUC /ra|Z.v._> @r>BrBbh|ur:ra<_rb.bA /a* Zr>h.Ī,Ao.ab*Bo|ba:bz@r>Z@ ߢhZvUavz|b~_:/êb.roubU,ooz~U,+..rhAbzbBU<@u aOub/raZ,r*_~>O~+h@.rbbrvC>U/_.< b_uh>/ zOZ*za _/u~|B|__*z~A+av+~r.ߪr bbCBCo_zC_uv<_rBobOCO,B_+|ãr*.A*zoh+<.~AUhêvZ~aao.hv:AЪo*OzBZh,voa@*<>oܪU֩+U.vzO_|:+>C v|,@~Ub:.>.o:>_/a<@.vUz.b|Z+ />Bb+|b> C,bbߢo,b,,Bbh/,*>~ | B+|@v~:vO aC_v|ZA_vC>uz_+|Oߣ|+<:Ao_a*< u,h@o*bbbv|r|A@Īv+,C/C:zoz+.CAv,.rZ|Ab.é~:/Z<.|AuU|:.Uav:v ~+Co.UCaAoCuzrA_>:ZBC|<~azaA:<*@hAu*Oha,hzr>,ZOu+b~,oAhbr~,a+vbЩ@ba/v,@: bb>rav+Br㩩>.r_bh*z ߢ~r,~*A~auUB /:rb/,*_,<|u>A~>bzUhߣb|v/,+Zbr.b.~OvAbo@>h,a㢪oub.rr*u,b,bB>@u: o.>ob>|b|Za@.uah.+Ov_~rr v*/**z.Zv<,*b :Bh*vbA U* Z~ua*h|UCBv<*+u+~U.o|CroOb_@O~Ch @vbrZ/C@B+UO.@/*~ho.*ܣ*arAO||~_@b._O~_|*ߢ:o |bo|@_,b>z~AUzߢO +h_auCA.BA+*~C>Zb,bzvZo.@@voh,/ @/BC|vvuZ|>oou ,@rooh@o+r. OOB_bbUZ/aoab|z*ZUC:_a/ABZZZBbߩ|~zv~+:z*< b@< aobCbBhzo+|hBa~b/_*v/> z<@_~hZC*,Oaz.h>U ~.AbOZUr>AbZ:zrbb.~ *OuZ*|.rbzCz,Bbr. bU>zZC A BUu@*O:,@UvuUaBbh>*|Uu OC@ozz~B:A.h~v/vOBU:zbrazO+UBߪ|C@@~/*bv*~_֣o,+*,@//_hzA,,vУz/UhBo,b r/b+*._a:hov*AbbĪO|~BCU/bb>+bb:o~z_Bb|ߪh|<_+r.abbr||zAoZ*z@rb>,bAU/>aZB_z O '), (0xEA982235D8DCA9BAEC4C94727937A73EA975D464956D202092BC1530EEE608F1746C4B852A1A1164BC0F5A4ECC2E118A0E1FA5B657E1497C7702A31BC678CC0644A3FE0DEB21138F636FA78613D25363AB8B21CF4152999322CF0E2877F59D4443540A2830049EED0B1652E739C369A5AE3F703B56FCC4F10A6AEA1C13EB176DD16343BEC72A33A6EC34C42BFFB15A5F656979388462ED468F181EC51982DA1FFEE416D57FABDD830CCA4F223899F258108BB6AA72DFE96F76FD2EAF0B6D8D6A5AA52D1A9B84DFBA8BF52BBA13CA0DF525C6B58DCB30AC1EFBA65E827C2E789F3CE4C8936CD8BD8CACFC1E7CB42E5CABEF388945B8009E2AF80E1EF4255D3E5C7D8C7E2E027A894D0928E1CF112F6ACD4AB29343A532E63C469E9B5DB9C8664EBEC1FF27B02DA974AF3B3C8F1ECE18C8A451AA72C9FAB74AA542E764DF2B9440C292114F30421C1D091E946AF6571D7785D2B9671EF384C40AB5816E45449584A6FBCC8BBDC89861348D69AB654C544E246FDE0C712D22CE0E4D457AC1AED7C48910C3FA8A91BABD3A5732918AD95EBE613349D566881279D9FE7D6F831DA086B5A422558859C392B521D21AFA914434EE87198E65015E00FE4A208C134A3A1CB7ACDBE5B70935076FB62044B6F87F48B94980FC031120B44521563E38367E6AE7B5624DB55E7DE552121EAEE01A4A06CBD8D3CAC93D18A58B27A095B2F6CE39), (0x009531925ACB9BAAF1F372D32BD650736063B4A0A99DBCC28EBEE7325B43E5772ABC4A70994578FE2E9326B2195375BF61826ED58315B362D86F049CE4684EAE0DFBA96E8CE0D91BEAB57215760AA83A4828D0D8D50FF31409E7982A41DB1AC54578A51EAA063381A953EACDA39EECCEC6C953BC9875D9FD079465A447AEDA0F9BACD0FE64899042F44F2F822525706BFBC9647788), (0x9FA71715A18E3AFA79DB32F6CDEE693D3811C7484656D8E123FAA87D4A62873D7F015EBD727AA06515350849F37A9D0D60273E7696E48948CF36F2A7E6BCAF1654F577CC8FACCABE716133104D8EEDA95C9B1D232310A69B7816ED3B88F87F5885F2F5FE02D17DB45C800434B078FA4148484B4A9E8CF2434EDB5379BE8F3578E1DA8B5B99EFA68A1D69C7A30B72EAFF1BACF33FAD35B9F9FFB1AF267D04F5CD4A8C52D5ED9EA758A1C02C35C44F38DCF1545E129BF6CBAC21915CE73F800D1974FA597F1F15127C049A9EEC088434AF79D33529A6E23154C0A5B45B42C01921B313C1CAF6B8BCDB42E10E0158DEA49C5CAC6E6B4AE37391C804BE7960B63944817C39F4C26AB9C01759E7C4D430FBE20017FF9551ADD7CFA03001F1F9427A8BA7CA7FDBA5B0DAF2F3AD54F0FCAEBD9808DC7849B7A3F2D4A569549268C7C6D5DE5B1C0AB0203D503D0CA2A458E6D2F17269E81DC931D403D7AB363B5B47892BE67F11A191B3E7E89F280CAA014D7BBE96621FFFDFA90BAD86193205E901F5F58377BDD9D53160BF82FF7EA1252A02892F78A4F8278A4C3C73641A7880E1FF9D3216268A8FA2E86502607DDF2B6A885C16A8D5715DFCCDF82A81657117E73EA000E06E0E0378F98D8F3FF6C70D6D1109DBBE61D80C8E4036492E5F0E3C774E1B22DCDE4BFB79589EAE47E11E0606EBBD6F5C9558866693729F38C5D518EB5117F0DAA5308EC60E6265C229C4AC222F4342A29FE0E2F594BC486CABC2B48386C3F6C92D2B61BB2FA94E32F3C33CCFC57D098292764B7135FB46E8E7211B4BAEE13C65CEE2F403E28773F592AF02D17F79A72DB931F10F77859432E578D30D8E02841186D601E28905A00A0255DE86F874696D7AED917CF02CED484EC11E69B465678F2BF04AA877C4A3B491E60D22A60D39700E6593A071072159E9B894C7E636569CEE4F5B082AC0F6B54ADDEA091FCBA24087AD5A4ED2C71E23CFF0BFBF30DCCD5B90703456B231464E6FDD55931C173A1D16533F39DB08CA26313738390036856D0F8F79AF974B8D56660CDEF5718A07B8B6A2A8DC9C947F88A50D257BF80D4D3857E7848D9D8B85CAC5E9D2CF29D5B4A63080825E8EA9D17B0FF1098925125D59BEA59D8906791B2B1CDD17B3C2B05ED0597F4B778AEFAAAE16087DAB81FBA5B38B781083372A9FB6655741B0921EB95E933830A5C7E6CFCFFBEF73FDFB6FA92138632849A0DB992FDF941232ADFA1BF84F1F1849CBFFEBA5A9418847B7A2BAF6AE20772EF56FBEB79F01C632D49C2100D37AADDC5760553878839F5E5351783DDA1B848D82ED02E06060AACA39B9D00D1F87733CF4DD9E4DCA3EB672CF5F644D888958B817947DE678CD7CF6B58BFFBEB2923FCBDE3B48FC7D36C243368F1000FC5D41AF6118F58B098DC42661A8983F3FF7C03D20986F4D405B3BE0D139AFE8BD7BF95849505D999CB3C15077229BD49E82043FCFD3E064EDF46F05DD14B9CFDDDC69E5AE3FF6EE9A26A06CD61ED51EC066424F357019EA9A956B54E057BC88FAF2739BB9B5265F8C15A4A832748DCF1F514577D26A9A6CC27E4A18D4A10E436A1771E4AA39650A3FE2C31FCC70B726089B358F1145B5905706D83A6A0D8BEA07603D1B02A824E5EC3B37EFA77BA052C7240F386B7F322562E18DA4612AA03257D8176B339C245F7650A3D60EC5E9DB65867246FE527E882E17B9201B8083C19A0598CE63351E2BFFB0C11BDC5C179CF8B13EDAB75933045A8F3D1BE30444F6CCE13B092D1A78306747474D9163ABD2001C286A41A80941D19474D3F80347FB6BCA4EFA200E6EDD380E737012E572F6E36B1AC6DCDAB524D8FA3798A6A43864004BE2C614B1B1F2AE4A313235992EEB217DEF8CE8811E91142A2126D6D63694D60F6FC603ACE232BA281891A883EE3FCB4C7629B4AB7B7E2D50B1EA8F8A1BD7139D5B262967E7759BBDD2C0688DE8913BE25B895F0DDF2B94F199B2FAF7A22F0C407E0B28C8156365018EF7D8BB159F6820AEAC2F927806BD309238CE347BA31AA2B3280EDC6872CCF7245D7FE852D8DBF94AD949F5007AC8784EF736DD953086EBDC3507ED908BB73BE0376E1A86D5DDB95CD4E9A15924A2385F968E713CEE61F3D7930C1CD0ED68BF210D15C80CAEF179197D80C047E491B793CE8DFAFD46FFF1D67A42F2C8C1E86F6B2A804C0EDA2CB1A51457BE6EA1ACF2025489015F6EC1DA0E24F2916BFEB0589511541C6445A8B9A2DC55E8EF408334CE4FF07437E60FFD69A53DEAE79B46A664FE295C4C908EBDACD05F8319D8EBCDA1BDC21B0E3C21AE0157B2BF07BED10695AE84F01626E83EC132C767868CE490B96F482AD82A9828DD7A5BF4DDCEB6EEFE58ED6A54FBB77BD4845ADB74BA28757322069775A72E6B165C139BCBF361F27CD9682D9E793BBEB8CD5554D0BCB32252E581BAC81E78572A8254F8E71BAFE122675E9B51FAD6F9E648DEA852D99B59A8F048E572A72A5E6010031C2443D69D1D7432695E17D0580F87D37F40D00550E7FB4FF7D2CA6E7B3C003B40F6B9D5A272418BDDA731FB911FF0D6EAD3AA1E8F0BB23528F4DFCB5205B72C5DDC8F6155B2310DFE4527A9B500BED7E1F384A891E2AB354484ACAE927538D8F0049DB48F8E8137A19C1F4AE40980273607E95F800F9B7B305A1DD105837B890C4FB9B063094753724C06F5C360513A0384778B8CD957E16921833470B0321E21963E9450D0C42DBF95EC3308A5B8D009E2CD800BEFFC33F7D746418513E2C21AE7D32C22BCEA33C04ACBF6EC23D8C369B32B8DE2B11331990A9D788983A7ACB32A1921D28BAD4CF899C0C0230546D3FF82D7D1E754DF69D3A193181F72AA3DA21F43C20AB6F1DE05DE9548F1520D93C3C97806ABD5C55E4AB04E31F7952D85EF821E04C184C94991F9CC08BF97778093FF5455F9A391CC5AE5775A67C0E66FB10F586E3409D23E002F75B109BC9EB338CD9DF841D78B4CF051AADB0D6FE1D1135C57AF3E094C8A2D1555CA2EE0C29D47C4219922ED2ED9840C7DE25EF631904EA49EAD65EF752F8113CB2B82C11E108E0D94484D47AE252D7D2B318B692B37E3C47C89411538584FF2180F220357C3ED6C535161E84307F5787FE7C343A318E79347BD4594CE79D53CF95B2F9E022A2668431E15DAD5FB817594C99650940B4EFF288EBB9A7E599EDA7B25EEE8D7577554C05BFF85030CBE4C3CCF0005E284A8EE0C2F75746F8CE9EA803A5EB00C989D3D53418F380CC9FC1CD06E5DAE5998F8F77C00DBA8E101E534711404C9AD0D40A332C3B1A1F46FE1433359A3002E3B91E74267330BBCF55B525C5BC6F7C5326EC22EBA7B95E757020C1F9874875DE40536831C8646D935E73D675F4498A9EA7E00EBE0D174C0FB00EB6426EC2380D4F477569073A8AC27E9F9D33E2E87126963341A739B7D139075881B9BE1B348C3BC936ACD421876D554C3F7D8A182CD79D8FAC3B7090D387764C51AEB8D104636B010819B1C45274BBE451ED8853AEFF3BAA2C2E6EF91B9AE5AF3687CFE8A48437DC1279100315C93D378F8C4EE60F129D62630EB4E5F461F56D24028DCAB4C33FDDA5AC3135EF389452E137798F5C0FA023FA5D7595DF51E7B083B2DF033B7282BC4C713052D167833A7A51F4BCE86601246269C0575DAA0E53C480B23C5981277EB4CD32EACF4D4292DA3B1B7D6D2AD81DA1BAA0C1A22B5EA262EC9E50A556D0F92A76081B23165515273D8D128E80E699A8948AAED055CC897E9077E2BEE1ED736A1242E712CCEA8B558BAA74AE3C13E205F4A810CC2228D4B97E9C929E7266355009B87C3DFF86EBA9FF4954BB57EB327C85ECCA49CCB737F97E3DA42047ECE32565149483A7B4067DCC76DCE8C41961835A2618959BFB8), (0x), ('b3c842c5-4b3e-4ea6-aac6-192fe60e28ae'), ('6909-09-02 06:22:18.782'), ('1980-06-08 04:45:00'), ('11/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + case 12: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-2147483648), (68), (-32768), (1), (0), (-1.79E+308), (1), (0.1342), (0.7331), (922337203685477.5807), (-214748.3648), (':h+h_zbBa/,Uu:OOv@b:rZz*a+.:@aav<:_bb:v* _ܩ@:vZb/|ߪߣzb'), ('Cu*@//AU:Obo/>C~aBOUoar.,Uo<@Z_uO|:ab.b|bZzu.|bzâ uZo,O@uzBoo+v :b/*b*ZhA+b<:'), (' '), (N'aO+C> bߣa:u*CCbv zZUz:OģUuO rbbAuUA.z>>ObC:BAzZv@vb*AhUra@Z> _rCB|o_.Bo:+:~:+z~zbB<.z_:z>obz>C|<_<@z+U/C+:U+orâ:bvzUOu:_Uz__+OUA:>b C/~O:*|uZr~bhBBĢvA|Zr.bo./A+ߩa_h,:>O__b+rUbܢuOArbOZ,v,@B~|rbv_Uav>o>o.ZbZ>OUOUBO_~+|@vB@Z~:Z@UBvbar/UABr,OvbuA>: b'), (N'o,|b@/>A*hOzC*z>>/h|<.aubrOU bZ/ >bZBoaU@bb>_,*h~+|Zo*hU.hvb@|,>:* :@/ :bh>C,za Uh~~C*Oa+r.z:â|/hu>,~~rbB/A>rh:COz|ߪzba,,ZAzUaBrZbh_,v,>,Ur֢U/:Zz.v_zb~/vrAu:h>Bb|<*z>a>v>B_>o*uܩOO|or|u+BB~.uao,+~ o*~~.Z~*zACbU~@<.uUZ,O,+C@hOvavuZ*Zb>bZOaz.,|>zuO./:*a,:+AbO:/'), (N',bzZߢ~OO<*AĪouAA~C/_>z,AOBOOzBo: C*o.bUOrߢbvbhavbvaUvB>B+UUUhzb_hĪ__/o.+ZhvAr/ouA*UZh/C:boC>va Oz_Au|B_O+>*vzz_zbOorUZr/*rrC Z@B*|uUhzb__+AZo*ܣB:hB_Av/OOz+UbrAb|_.A@h~bahbC+. C+BC|bZAvzvBz:_h>U/o /|.aaC*@,<z,O~Av/az_vhub/<+bh~Z |v*,a@o/Z|bav*.ABOO|oZ.rBo/v/A<~|BrBzaĪ>_~ob|@hbazU@./Zoz,bbrb*. |~OzCAa<_hbBbzCZ|@BzB*.|*A: ubOz_ZZA|zzZrrz_@|A*r@,bAC:O/U~ |ba/+b_ho*zob@aU_a,OB@B b>: hb~v:z**BU.>/ ~Uoo:>|*hz b/_ +_@uAv~~CU*/Ob+*_>h:Ur+|**>bU+Ob/@va+@*.֢ubzZzvZr.*_|<@,BBA:A|:zOv:ܩzb/_*a~zb_b~_>_~zCrah_zb/ AAO.:<ߩ*,CorBbab|z|ZrrBrr:a| ~Cz,h.>r@@>>㢪b*_>bA/_|.~~A<+bZ.UBzaZBvvOoorOU~~ChУv:~CvOCbZv,+|Br_.baaBb:A_@b|>/A*/ܢ_o/~,< Īv~A|aa>zoߩ_u bBoBAbaZ.abrUO~bB|o>z~u_+*.|:hhC:o@aA|OЪhOu ><: uAZZBr .uO|b B*bob@*./vz+Abh.~_+,/u.>oZuhA/~**~_,OrrAov_h/~b,r_CuAa__+rUAr|uUb>_@O>b+b|a*b,bhU>֩ChoA|.~,hObzU:oO<:bb+zbr/z/rЩz:~vZ>a>*oAZ*r_Aou~o+֣+Ub/+BUUba+Ub/BC/u<~oЩ@Uhz.a,va./ /z.OZZ_O<~~_O*r*><|uA@b_u~ob<~|o/@_:@A uu,b|_UaB>@vZZ*,uh,**@*UaCUho>Ab|zbUA+~huhaC>_r:ܩU,Uܣ|>,b,bBߩo**ObrbC:~OCo~+*br@ĪB<>|bb:o+:@u|z/ Cߢ|ruA|>~h+.УC_ho~ܪU@uuur/BĢ/@|éO.,/avCzo_oouh.**,z:,Zuaa/,O@/|~bO rA_ZB@.C,<|C>+:a|CA Z,>:rhabCZUo@UrZ/r:oUCbahOu|+~:>b*h+~buhb+U>OvO<<| Zb_ _u_bU~+ OrBCbvoB|*Abb>|Z䩩zCh>+urBb,@O_z,z*/_,ߢ<.UU_u>UCU_b_ZA<:.O:hB@au.~ /|Ob|,r+/,_zb@OhZOC<*v**>Uu>@ߣ+A+/*arC.<_C_bro*zOCbuB.voZ* v_rUߪuo.~ruZ:_bO*B.o|rza|Bza_obAbuO@Ub::uauABh:>z@ZУ֩B uZ<ߩovZ|vbvUu*ru~O+>+u_z|uoBCUb:~UOCv_r@ab>~~r.uA/|Az:o.bu>*z:A|b<<@+C+a*@>a+vA/UhChuvob>vr.zB/vZ>A<_r:a~ +,/h/>h:vaUߪ>_rOU,**>+a_<|<~Zvu/Cbh@>OCC@|Uu/bA_|@@+ĩ<,~<++*Zarhb.Ao|u~'), (N' '), (0x2A35410DBAA6E4B09FE628A565EF22E4436A2E9FDC8825E0AD0990C7272ABADFA2154FB2D79AB63776DB5FA173C5639E0049259D17D7D8A110605FB1161C88742C49034FA0700DA8B3F6290029836DE7A5F1C7DD051DC7CB3DADA1773A05215A53EA7529C214FD8F3C7CE920AED7788CF2780B2455AA6E0E813812F3CF966EAED4CEAD3E0E432491F437A18933A71C65341484C2FAFD05A87B66A88A020AC0A60D3A4BDF2A397DAF53792F1D09E5DADA1BACBFBA11ABB4D7C905C3A89B9A8FEA76FB7BF95B3D3BFA96D56E80CDE79F968BCE6F554B0694618674162476D514B9EA45A60E69E17EDD70C4233C3C3409E1652C1DCC2A399E70661972E6271683C1C0B5958740912CA95091E586E25724526A34BE4AB8478EB1A635A74F6F97B65941627B879E81A1D4FF737C9954188E0EF41F7CF35739097927E4E00BE9DD39B8DA8B4580DB9DB4E993EA4A44CBF55C8EA7985A4F1BC3010758025FBAA096EB2239C3BEC8D30D33576B925F6DEEC4AD328752635082EA9C17893D27D93EF948FCFE280A073694BA996503E48863931894542D324E329A9F4F27A73F96E65918714A636FC6B9A6FBF397CAEA7F0614B3F524938410C7FACA6388BBE08F5524B30BEA723E002452DAAE313FB668B0204912F3497152D508AA50980B3EFEC56B9E7316DE9494D5B2D1D2B8D5DE874462B36871CD9B0BB36036E2C7EE681814DCE8C6), (0xD18BB53C40779F9A0029230B3658D58CF8CF92BFB6A8B2CCE74AB8BEDCEC18E60110E2DCBC905B9413C635B9A4E231C03E4FF0F60E839A28D9E855F6BEE0BD13103C0A2576F8CF6774FDABF072F9280518F87F8CFB22D77D75B903D33B64D5320821A867D70C494580898111D7AAB5DFBF4FDDC5613118ED658DAFBDF5FC2B102778E85050C12E0CAF3A0C72A1C6A6CB032313EB8710D1D609BA024A5C8C50845D71E95EC2648FFE21D1162625A64C9EE6E4B9D1E83F8817A6114796BFE3AF22EA881430DD47089E9415CAB5F9ABB163), (0x78D37E9B1EE8D1B7B11DF93F3D21F43C9D911CC19FDB1A3CD275D21EFB60E3275C80364F6BECF6470B9057819BD58C94056F14D152A1C49DB842C9A815B3BC5039D1E3BDEAA4D0B09BD4B60E8399A0FDE83E188C4B11D5BABC999728234D3257D40747CAF2CFA9619E63367DEAB5191EA1CBC0D69B2F0428FB2800510DA78D4DA15E3A7C52D60A1895B7EDE8DB57D0077F7887578D5BBCA4021FCEC9CF5853F6D6E8DC8B7A9DCBCBC1A741E3421C4CA458F9D1942036C046A1967A330740493C63F712F37B448CE2ADBB96E619D861E5D22A71D587BFD5A02895E9E32398C4805D04804B095928136CEEE7659FD92CC9349460DDCE74B5A42172CAE55AA9BF14F71589145816DB79015E6998D770004E6820AE8E37E6B1E94FDB2A978E42B8C32FD26E8A5018701EB8E7DB700B1DCCB0727C7D39FA30DD1064A0C57CEC44EBBEA5A568040276FE50B090D5500B41DD310F792512C57EC8FEF55E25B052F43174FB1CCA65B5C7AEFC7D2C89695B8D0422C2936D731FD9F826DD690FA4504EFEBB5F6154EE76787C47CA299499F55EA3685903EDBE86BE552224A4884BB80AAB2F2ECD0AF93816AC491725A8F5445F317EC5A74A4C603F35A00B31CAD2F0308FC07D646A2753A92F4256A3A760155FDDC4720A8610BF5ECFEF986AEE074CDA59E796E878DFF40A2A1B7808F6BC98D48BAB53055FE5AA7E001E957B8EE9BB27F67C4ABFCA2DE6FDCF68DF6A98B7681256C4DE42B3467A733C18E75A4A797B406050117972D8095DC55536F6063FE549B58324CA0A7974B001D682B1468CB356ED9E0A48A5EFA07EBA817D5E0F846DFD339DA5C754B136E6DC61789C55571738A1E00967349CA4C6E2A60F89FB15A07D68857EA8E7EC013C68236C43760429626944BC2F7B05C896F8DEE4AEA1ACEBC6C1FA33CFD96E51B5DECCFE1130614FDE7CAC1FB759700163BCE8B00808539ABC38A6817CD05989FBF20651AE06B765978F0531F48C336C50F9D012F0BE49AD8B3142D88ADFD30D232324C5521F535C058318780221A62F053931820046993CA859C67CC3DEDBB8BCF70DD1686E1931A5740D6DA5D1AB698B13D350AE500DDD8AE71CF959D69826A760BC0A13D5C6971FFFDD8C392B96D7AE5CF1B00B8A0A6BEA3046815120D7CFDBE6C54514A155B64D3C30AE7381A45E50454BFCE5E71B1D56501FE38E4445FF270DB0526651C30D073A63CF595BF8698CE8310CD4DBE9F3CAA8EFC381722708F6318665D051F8FE823EF5AA844CC3FA58B656A613392A4C23BC87BD61FF8B94135AD828D592983BF0328996E63F6F7EE5F46BCA1C81F5BC063A4114CA3A9C82B2609729739A25C51E1BB6E0AF9366E44D09D86D94C17892651C229A508471B59507E485A8450A4ACFA5AC00CA140C72D35DC6C0612FEEF1E705C357788A759AAA004BA8AFE03B08FE8E9EEE1478C7510FAFC7F3BDB0546518F29EA381B3D244301256CAC964C3F221BEC2D391FFDC6F3D7248C8C381DCF9ACE58FBC4298864BBC59BE0221FD88ABECD4D1FFED80D418162F650F6B0981AE355D1DE3D406B0893777173741DA4D40E99CDBEEB0DD0C2B1076A6133377E0B2D80FCCC4DFA4D7E62448C776699CD73BE12425CE2D92FD5850F1D35D5F9C55C097655F310E896045C5F5C9681595C2739F6A320E51118445117373EDD17A8687F206DF043DA52D57C4E00938C89543BB2F5FBDF56A476E85E0191F9A1673744A6F42750EB6BE36F93DDA4A71074B7C7C30B8BE71BC911CAA97592323869241506CBEC9861F34047129C4B790FDFD7D949DA36A5EB4028EDD25CB775C9A1273AA99F9054982F55CFBB34D48F7D98CAC9ADC8E86E228E39C6930EB6154BDA8D617510CF604F73412A7466EAA67BA9604981EDC800B8B9082B65C9B189694073E0A7630A6CC96A8A2A77CDF9BB93835AF99E7C836E028CB8CC08A40A75B1B7B123F2F9FF089EF37027539D88EABF4C87D27EC7FAFCBD05DE2ABA4E5425600468C00CD5C89984425AAB0C6C1A74F3CE0CCC1C2806F9CCC466FD1BC44E509F5AB74F24B8DDE973EE5E2C7D5FF050FB6926FC319809480D7F03486EDB7DBFF40A0BA1A4CB404AE023482DC9DA8C7CD41601A29D521F07417F41A5B5957AA8609E2863444EAC2028EC0C1E4FDB7E32F2867448C9DB12A1EAF45035899A855AA8AFCD3BA219289579D189B15600C776010EB32F2121DE957B86884FEE76969E66B165A01E3280E96DDEDEF841615BEA3CEA247AE7562986C127B02B90D8A7033AFB4A94AB1757CE8DC9C14252E6540A3A9E12F4422BB70097DEDEF68265588527DBBD5626B74F158265FD1D94E723DAC3A5E0F2C5B2B11F443A0CCC48614C18713C1A7738FDE3735EFD71EC2E997BA0BB0422DC7455CF751A9E11ECBA72DD1119D49C68CCBCA1C5C26D93C830D4F0AACE5C11344E7F942B6C956C9AEBF6C8EC2050C24A0D12D40E525D0A06B2073435AD672E5E6198D2AA3070FC374016D9CBA4B7A7E012A69DBB7812E1E1658D69655126ED84D86A7A877E28099C16ACBE4B734E61FA6F4422F6C972D65EB6F134A30796D6192954E33A4D1071FA9D01A4DB54966E272B6EF60D03E6BB65842BC07CE356847FD695221E5B27BD4ED22869C7DE0AFA20831D87A890C90532A98DB6114FF507468D24F4BF645FCC03A1B73ADB8CF3978931AFF9D5DEDBDF0D9FFF74DD71ABFEDD21233AA9063ABC334183F6E98E29A5B5E63CEFA00B2167A145E72F74DAFE8205B85DBA69B8EE72F6E3B6945AE4F58F6659BEE744CC5ED1FFBB89631F0B475852F1E121307F3C0D07B9E8CC449D1CCC4067C91B2C174D49697BBABE2F8B53FB9C6E4158F3D44EF71DB1EF8AD3829D629ECD12B7423C3C4BA4A7B7B4B47DDD7C65FD2FE65BB3C87C28D1FD7A27C265D6EE482F6278ACA9603205B45C1C9A32AFE46314E662B716DAF4969E703EC213D231D0C67C5E6AF3C943BFA4460F7C5F8E9F5D85B4BD8F743731447DE20E29317FE1D22A4BC3C641797F4BA2A302C0CB78470FD0D13C5F24B25C8F3B09FD11BB2A8E34643D5213CAD90C1C4561DCC1347078F59B0E48503392BD67EF348B377C5D907824CE6C9E262344F7D51009B2D59B5ACA80F776BCD23DF0C17FEA24865DC49FF7D154AC6603EADF77C9408B23990A9253E9C0B674D6E3A5E6CD9B2E3C0ECEAA007011D170EEE4B6A6280EE381B2DD387557D09C8D1E2B10FDBEB5A878BC93690AA67AA387292164F51A005CD7F02433F062A8E42E221CE254F0E3C2294C4DE98495E8DB3829A15C266BA7731DCE490D8A81A80613BF3AD889984E86456F4BB8DC16C83207490BC6B15CBDC28A99D486A7D637A79437D5D55B0051AFEB1B16C72FEEA6F70616F64175E144B6F1785DEFC3B7EE6F3794149440E2D706F75BDB9645F6A29BF2DD8090EFE631A2F31ED3E2A261EC233CB79F9BCA12B6134FEF5A1A05AE710AD5C1FCF6375D7F41626191221EE454857FB8698E5706C1D0176D50F09C17AD549DD90CE064F), (0xF384E29588194045B9AC49A5D44F2A3CEF01CDEC9FC7EA55AC43C8435D7742089BC7A5608ED795E7368F565D77D501FAB254DF0481721E2C9A8DE94450FCE7426A41090CA9C9AE186CE6B60F708DDDD742CE9009973D8729A878C600ED509739A814F336CCF450E9A6C7989BBC0EBB0CAF1201826CDEAA2DB9DF633102AD2A1C4E7D675C9AA70B4D7DA763D0A5EC6C99BDBA50DB4E15CDCA6AC67CEC911FE6F89C7B4C3EA75F710806B404C47ADA87CD73C973485C4ECD39B09CF1D42A1FBC5DC16A33299F2DF25D4848D49A10084F903EAF78C7AB9D9C4EAE128E0A6D9DDDE7F7A60210A65E2D45D715FF147A3329A74D61967BA6F4B223CEE57A8C9FE8F0AB6BECA269063FE9DF8233F0959D87D47BE9E6BD0B07624102F4DE42C1E3A0A5EF2554A88D90BFA10E78B6F872041C864610FFA3B82BE4A309AA9F7427FD27FCE28D017048DF46EA2945AE935069CFFED758FBB1E4FCEDC341B09FE2F04A7A1151BA16E403AC3D67CA1479737C5053A0DBA19DCE017618E5A03D2E973F64FADFCB9D429652EBFB2B1B94E7CF837A47F05DFF074FADAB0FDBA23143C57DA527651A9AA8DE0EBD4DF0A671B26D8F486126F53D3A3F5DAA311F8D66F320A735AD766C81B5E9D268E2A0B216A93CF9A24C59CF1DCF406AE8086F688850A7C92C4970C33C000D9378548D5B9A8D4601F526EB1A9A5089656D0B8478458049173AD685CD3878BCA13EC557C942E4D05AC26E7362658D2FDBBF0A56307C954EF70B7521C30878C87D6949DCD4F9C023883B29B5D60DE6B2ADA7A90E2E218B24A87760BECDC30C524AA6F6F91BB05AE2FFE7CDF553DF77EA24C2741C5E6A9A5BDD24335C980256C52ED66B3016ED97FC4CC60E465396D1C80076990A4EF0F3DF0B9A1BF67CFE4AFD9108C67C7346D3372B77CF985B530747536B5C22684B763EE38C247BD1A0804E7C11B54BCF5554B9A362DFD7205B83B893D4A311A1289445918899E72257668BF7811B4A9EBB77FD16A27F066C9F1D87086CE8FCFC6EAC547D6FBA46BC6D974BFB53E09F3F3919D75DA5FBFEA98DD9F16A11DEB56E6A8E88D4C7CC2F013041A80B330A18BE7E47CE53119F5773AEABEF95C8DCAA8EE1DC91C558CB786CE9D52C6352F37582C032ECC90F625DCB3614251CDD993854971A2A56795266B3CF62693B72F320BB356CD495EFE07E7F7FC68E43A55C8F4F9DD7CC38C91F096ECC38FAADF9225843F36AE671C4A264B69CAAD6B3C4230E73D3199E9B27E8F1156266C9B7E6D0855D6D4B4F3A751D8AFA72159C1E4855A9A82A86DADF84BD1B0B79D00E5ED8ADCFCB25794578D3D4FDB58EA328114CD3CD0DBC218C60F5A6D9B02F44C1A40F2C21C446D0F9CE1031D456892551E0940ABEA50301A1B7216FD57EA095488F1258A5618164CB7BDAFEFD8B4C36D7D054F81C25851BA10E8B69A3D7), ('3f0b6545-ccce-4ed9-98ef-40c073e8a80b'), ('9999-12-31 23:59:59.997'), ('1968-12-24 07:01:00'), ('11/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 13: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-504945714), (182), (32767), (9223372036854775807), (0), (1.79E+308), (null), (0.0559), (-1), (922337203685477.5807), (0.8643), ('Z@u:ZbC,bZOU|hAouAZCr:+/hhb@*a B~Ov_uZbCoCBu_/>r,u: b:/o>|. *~uvvorO@Uu@h,CAo,AahC|oߢ,h>C __+b_ab**/~@:_z_|o>~Cb<:@rU:@_ huO:*.Z_A~zvZ|u_>~aa~_,bBB_b>CZ~oĢAbau*ObO'), (''), ('**_O/ob~uZ|~b|r֪+bO/.BhObh *_///v+v:,b>,:au@hbr:zhuBbOh~ >z@*Ub~ Z|.b_a>:O*:U*ob:rB+aCa:~|rbhZ ~b@u*or~||,~:|@*b:.+rva*:zubv/o,ZO:,oBCA_v*@U+C|urzU,z>u>bOC*AUrb~+ ZZaa~@ ..ArC>+u~azb*<+~|:~:|>A.ZAzu:ACBovooa*, >UZbU@:Azb AZZC@rz *bOCuC@z.|@ahb*O|@uAv@b,r+O>Z@~<_bbbТh_v:bC@u_h:b/C>rb:. .,b+rh|,bbUB*A@,bOO<>|ߢ<<| a/bhho.hzu:OhO*uOuUuA..ZoZB: a< vA|/h/bzaBh<_U>/*o@.aܩU_~r,O_CA.<.|*v@zbbzA.h<@B+.UBavvh.+<@b AbBBUu>r+:Uv>+O,~.r>a.U.o +bC_Oa*ZUZ,bЩUO.BC*@O,zbZ/ZC>a+,_ z+hģ ++ߢ*bbr/_~aaoO>_>rzaz,u/@hAO,bAߣ>:|> /Zbu +Zhvzh:@,uC.z/C@.uuBrob|zCO/|v< rv:v@,ܩ@bv_bUbrr*>Z.z*h*C+ z+U+v,Zr|/ao~___haurzb|*ob~@/Bb:O.v~~O@b@*,@,*z|O.h@>z@bzbuA/.huO*~B_rzb@/@< rO@BC@.ZorAu:Т>hU*obzCvb:~:/.:u~+vZ_,haܢOaBZ_Uz@Ar~vrb,uãu:b/rBoC>/Z~*orCb* * ,>+.>rߣuBbhu*:@zArrC~hCo>Uh >hU@rB/AhB:ZuzZho:uzAAv,bvCooZ~,vZ>O|/u,a<.h@ubA@hA:/:AO b~ubvOuru_+bOu+||_|OU. |z~A|v/U ,_@ߩv_.B@ACAb~:rBC+ z:֣uhOvZzUhB,+Ozr+uzBubZA/Cb_|~~/,b,bb+BB>hvBb>bB,*Obua,,ub >C_Ba~_~zCA>rUC:,/hh<::hU>@b~*,Zvr~*b|@.~/_Co/oh* r.@_+|:Uov O<+aߩh.,aBzu oa**oCZo ++ZU_*_AO@u<:@vBߣ/BbAzvozB+*Cab@rC:h_hA@vO@ bubb+> ++BbrA_.UBCrZ~uZ//r:*Zb/+C/*oovz.r.h /<*a>|Za u/**+h|*buUb.:zoa|CB/a>_ABrA:@U|zUavb<>:hOrAr@bv/vruvrBzu*@Z r,*a+r@<:/oa,bo O@A>zbhz/ABvz:v:ã:ZruhO,+O|.u||vC*bC:h+bUܣ~~_>hrUZbav,U*>>O|Oh ,*|oO v_b~b/O/+br+<~/o+B>/B@bU:>ãAor,v~a,r> *Ģh@hu,:Щ,*Uvu,Zv:rBvOo ,|b> a*Bv u_v,hzvéOuCvOruAaCvC,|~r@*+<,*buhCB,:Zvߪ|.b|Urh+,:.vC.Zohz U,@>,_zr|za>ЩzAZA@C>U~ ~o_>hhvAAoB>b_.OBbbТBrv><hv_~@oBvz *ZvO~r|AZ~o/B~+Co/z<.__Azb*BCA<~Oh.ĪZo,/hBuuv_b/|ģU>Co/a :C_*ABoO_/Zu* rba_.O,OCrv>@Abb~B_|>Z,UuB u:oab_+ZzZC/C:Z~,ZoOa+>~.h>u+_>_Z/Zr/v|<_OaB/bzUOha@,.o/~a~z B BOA*@C*_|B|:.z~.@|Uu~/:C+ߪ,~UuC,/uhBau_z:C,.o:,Ab>UOOh,r:* CobbbZh<_Ub OhO a AvaOB*_OB+@+. ,Zzh.|r AZb+ ߣ:hb,aZ>hrbO__bb@brU/<<_OBh+hCvZ/vba|֪OA/a @ :_vC,_*:vvu, *bh:ܣ,U|*<<_*BB<<<| b_rau,rbU,oA|Bhz Zz|ĪA~BrU ,o|/Zvb|+/vZB*b/éuC/+~<*.+:>UZuB~ Zz+Z@ZA_@br,@:bBu~z@C@br:r*B/ߢ@.u.o//h>U<._>|~/+U_>+ģZZa~,CZBo+Z*Zrrv B>~r~,bCU.~/v*AzbbO u,,|ZC*B֣uUU~ĩ_A|Ar_OA/bz,:B_.vܣ|@O*aaC>.u_<,Ub@UZabrao<*.hOU/Zb*|~ba**O*o_+@rZߩC@*Z:b+C.zUUv*o|>a|.|U_,h|+,|,+,+b@*,<<+>@:.h/b< a>|COZaU b~A.,|BAB<__++~C<>u*u,C|bvr@azB>Uub|bo@h~UhZ_abaUbBu|_<.+.v@ĩZZz@A~<.vߢh*,O~<_,hz bOuU h*B,obb+,AbzZhv,a*|bu+_U/ .BOO+/_abB>ba_bCZ.>@zA||@ZhZaAh<:rz@.b~*++@b@@Z<@|@C>*b :.Ao:Bbu,>/UUz,.vܣA~b:*UC.b.zb_oB>_hv~*:>zv.v/>O+ _+bvB@bb:Cr vzB|:oaOCZ+b|o>@~.h:aC+>|bB:ТC>,oAObb:U+Aha h@*OU@r.|.zv_AaA+~zo|~a/v*|+@v/+:@b,:U_C u@+,Ub,zA.o>rhrU, ê|bhAa|CBZo@bBoO/v*vbz_ģCa>b_CvCĢbC~:*zAz+oAbO.hU>C.|<@*:hUubOUa+uB >:.*z* ah,/vh*uoCh,: h~ara/oOAarAoUzbbBZu A>~z U/a+_Bo:>hvovbߩU,,Zߪbu*Ob_+<+>v|hroC _vv_+rU u|Ub+z@A/h+>>ã~B*@ zz b|@UUB U*|֪:zB/ao*/*@ Aa, bZOUZh:b_<+CB.bh vz.A+>z:Bzorb.Crub,b,AB|bbBbU|+>A bha@_aB+|B~a.|a+o+~*.O/OvCUb<_aOhZAB_><,,*ZbO.<.o~Z.*@U v>o/~OAaߪ/*UBv o~a~<ã/vb|:B, AZ /@ha|<.|<:aA@|+B~,Oa,b|.,/,Cv~::*b*r~:zvbC.zu/A. /*U >,*AbU+UuOuAz~+>++Z_ ֢U֣b+BA zģ:B/ubOa /zo<*obubUazAh|,CA|/ A >*b:|uCa>,C_O+bv__~BCu+:. |~u+ZuЩ:vvroCr*/OZZ:C C/ZvU zZ:O.,Or~h@uЩC.r /vv~~B,A>bh.hCO*.:a~~:*zU<*.b/@vC,:*a, UBbbbЩoZ,UBu .*ZhOAzob+B*uOUUZv*+>:~C:/b_ZZ_Br:a, >*,Zb,~/êob,@:| bZ_>:<>+ ~A.oO<_B/Z>C_:>@Z*h>:>C~/uuCr~O@C.,|@oUA C~O>~/Uo..B.oOhZZ|oZA+Oz|@z>>O.@+>*/a:zoBb+/,>u__:|:,u,+zbCZ//CbCAZ*:/r._/>|*ob/CUUAh@*~ *AO@vu:. B_b@|Uģ*h//.bZ.a+ ra+vzzrh/_/rb<,.B,A_uvr*|UAuv,+_b,>:O~Ua~r/UZu>o. hB|*/,ߩ壪/aabCouBhЩ@|/+.>o/u zbu/r~u*vCA >bv,h,U:rB B|v:~uC|ovA:/:O:+//U.:>uAr Z,,,z~~_ .au~zba:h: A_/O_+>>ChUC~UZ _*OOZ:hUz*/.|>B:b.O@vrv<,b|v/Oz.|CCbU|.,orZBouUovUzv,Z+OvUr@.B@_va<~.Bb_ @uou<.,zhhU:bhOZabaO|*>*b:Uv,BC_v֣.~~Ozb.>+u <:Z/ģCa|<~b@+~o OO:Av++hbvC.+U@hhvUCo.:/+b/O|*b@h*B>Z>C/Cob֣_A*OAAܢUb,zA/ U:U~brz:ahĪ a:h/.:Cr,b~C~v/_|ACaCh>v**AģbZ:*,.bb:::O><@|,**h||Uv+,b*vo.a Co.@*_u/r>b|+Co_<*/. :z/bvb<+֪Z,z:Ģo+a@.a֩>>,|@z@~|b..BvvhOzvb Z>@b A*u. b:~_U>r Z:zaabAAbbbbUr++r.u~bCz+ ro*Z.+_< /,/ Bb~>Ob,Z>+~b//>/*>/hzrZ>oU>z.ZC~zaz,>aBb|@*AbC>@*oAaA~U*oz,< ~v ZrOAr/>uZ@U*@*arbC,rZA+z>@@B/bvao|_zCCCOAvar,Zr,>|z/b.z|B Oo@>h|uo~~ vB,++*Zov>C|_@Oz@zbOoa~brz.uZ,AO㣣ZOB,>~r:zO,Uu .U r +֪O,.é.:+,,>_~bar*oУOo*vA|+/hABzz,@A@bU|uA_vb_r/.Z~u~C~rv~ bߪUzvrC uhBZ֢ZuA@/oߢ,b h*@ubb Bv* |>oh:C C> /*UO >u/O> +u/ê~:auooUoo*Av/A< >uB<>a~_z|h_ZéB+bUzav@Ohu.v/>,.boZuh_/+hB*Co..|@A U>b|:U/vB+b++|aCz/UB<:+Zu+._uC uUzB**C:b,ABuBruboZrCA,|@BUbv,v>+oraa>/rhOhb:,@bu@u>C>@abO+A**+OBb:/h uAZb.,:z>ho_ZA|o_O:+_UUAvbr~CBO,>aubBo/hvu_//,Bauab_Uܪb_b>~bob/o.>zUzu:~h:uZrO.Ub.a @+/:_C Cbuz/.@ .bo*U_/v| u/a|b*UbvCAu*zbA,*Z~r,a@ .OZbbB+/.z+z@zߩb*Ch>rO/bzOZ+hU vZ.|_*o_b<+Ob.Azv|.|ub, .u *BBOhZCb/Obߪ/.arB>h/o.buh~Cb>v@hb:.< +B:r/v ֣uoO>+Abua@~zr+aO Ua:*BUv.__@b~z/:@Ub:+vr@vvh~C~ *vBB,:~z|@|u,Ī>rCZ@v+>O uU~AOb@v'), ('r+|hu|r֪a@/>+,Ba+ߩCCo a@u>o/bv+êhbC:U~A>|~/bv>rUC/b_u|aߢ,ao@@z.:O_bU~>*|Cr U<.h BoBb h. Z|<@|+@.rbzb||a/z@/abb~:B+O>ChC||ܣ_ bZr@OaoU@O|+Ar:_o/O_BA|Zb@+_>aU*.o:rhb*,@uoCzzB>u*@ZaU/Aߩh>b AObbbzzh*>|uC>uzZ:hoaoouUz uOC_Uzh~_U,_aC_+oz<: *,@|Bê @Ahb_>| Uuru|:>rabou Uv*~v>.obvCOuvCUbu/CA/CC,uU/b++Zb_U,@bb/ZUAAb>,bv@~uBO>~b: ,>uhz *_>C,bOUz*UaCvO:bb/.~OzOOoAo~,zBAOChbuAZhbb,azA+C~vZOABO,>+ha+_A@AhobUvC ZBB_~:bC@/v@Zoh֣,+.Ъ_h@ao,>_*zub /Uh/huz_O_ZU>+v<:/*hbrЪAh:OCB>|+B.*bUOaBh>U hU>_hA|+.Ab,zZ|B>@ r//b ,Baa:>@UhrZb:|Bou~A:B~b,ZozU@zBzv bo:br>rr:vbh:Z:u>_h|uCBZ/z/oA>v||/oAB_U>ZvbCO@AaCr.|B*/h>~â bC>ubv@::/>*v./h֩> />@+rh|֪Oao~/,o>ZCuvvhzb*B+,oBOZh>@>*C_ Ouh Z:Br.vBOo~+, aOo_.bZ>,o za+Ob|h+ ChCA.<ģuAbAZ/haB_,v OvC>BC/~z a.h@>u/@C@/O>b_b@>OBUh/O*|BZ|U.+/U/:@rr|aaa/r>ܣ.@* @/Z>C/hh@z|Cu@aA.bba~aua/rb|h,.vvb|::U@,:|uC~<.<,a,zhaA,,_@Or_*.hb.|haAZ:_u.*:U buz_~ãĪvU:uu<+u:vBAvOBU:b:*o@h_:C+,||zuЪêurA_U|.><_v:<__: B+hb/.ZZ/*|_ZUhh|a~*: .>C:|_,o_.ZOhor*>ZZܪ/h,C~ߩ+Oo .C~Zo_aZA:z._A:Ou:b:v*.z/ @~@Zhbu,CbUbUA*OZbvb/~CrUu<Cz@b|>vrzz|C|Z>>Aa,baA_BUh*bo+bCb|b~ACA|/BUz>b/ Z@+ hoB* bhB,vvC::>_C>*Ou|.z,:br+UAv_У @+֢uB:uBo_:+*>oU:U,Z|avCob.u_rU*.h@/@ܣ:vUUB Ur~bZA,/*/h|*@Oo+_|/a~BrBb~/+u:b婩,|:UzZ/zu+,_C*bܪO_COhAo,Bo~:@vhv_br*_:C>rv@CArb@Oov_ z_bro+v,v/zA ah*_Z|u h:Z/Cr.b,rUuoBUab/zUA.AUUU.@.O*O:~uvvCo+*:C>+zu,.>>U~*ZAhaUz:UOߩ<:Z ruAzauu:+u/OB,vb.r>br~U:bCBâu/+C@UoC@OaChUCu|UAZ*BbBZ<|*|uzUZCB|~+h|zbh@+bAb~~|r+B*~@zvu>@ov_O|ZoZC+._rr+auAo|*z.A.:/BrhZ: _A~_:~O__brObAUUb//bv~a|bU+a U~ZhZ*b,BU* *C//a @A:+o,/,@/U<>uBC~U*or/+/,hz.Ģ,B.Zrz+b_*CrCrbZaC+bo~UuUUbbz~vCz>|ro~ZCov:AauUa.ܣ*CZbB.<.ohA/bO,rz|h.>UAA+>+vZ_/ZUz~+ܩaaoB:ZZ/vz+Aov< ,zUã<~+rUߣb@uU+*,ao>.Ab,|b,.|@B|+C++:aAb ><|,*Т~'), (0x08757ECC341053DABF2569D352C8B231845DD236EF0EF8D319BDB26902F0047C0441746578A98F5C022B6B06EE2005B1319ED0CA132E5CFA7CABB3765DEAD7CE20ECCE11534CB8DACD7633C3A3F2E4F8B7013764203A68D5E57AE8CDF618FF18539CE50251F45EE4E5F5FC9DFB98568AC6BABF5CB273AEE683F82CD863EBE4B5771A70060CE2A6C3A2527F2A3DCBDA4C245E073B59A366E0EEFF7F59C88581F9104726E028507DE314FBB95FF383A9B71EDFB405E3A95BD3B48F180D634DFB1CD18519F5A4FA24D3E123265EE906ED6B55C73AE8D17C1567EC522B99387080C6009C8D6D69B31323BBE024BF82FDEAADA1ACB79C12124B556FB20952CF8B9B70A3605D4D787F01A2B4172DF15756E4EF687DF78BB8E3B3ED5138FEB6A9C0543044B31C229F9C3422AB15E7FBE559FD19CE1AE9519310B8BFAC70FC40814BF8F3C3FCACA439C14FCB49D4E0A2FCB807F73AE4E88FD7039C33FA5C762EA0F4A15F1DF437E8AD59DF0CCA1D07BF3016C3F36805059C62681CC06079AADD4B212B5432808507801F4AE104DCC5B9FBDD03E49882C69BEE04FDB4D8778834AE02C0A9F2B38CB090BC7249BB249886A362C48375C645C95A90662E82D12F09971532021B1BC748505253DC0F7CE0CA6C761075B304BEE8BCF74E614D5E2DBE8C69B2A5F1956B889B7C32237268B9DDB09BC10BC1B95592574A4523CD65FBF224944FA5), (0xD70B88DA36D29A75543D70B1B19C21FDD2131F4DA64F47BA35813FFEDE19131275C2EA0039DF1FBFBDD4F1E65CB4495502977C92AAED3287C4CDA4B5929C973B295D3CEFB221C4F2F46090D15E615E8137E9FB469C8168878F623C6C3B692C213DB6BCFE775AA2E1D28A9D4A5D6028626E227DA9A0509EA8), (0x50E558B78A336F94A8A56009DD46197412E41D292F3AD9FD19EB8380EC171308C2FB52FC7AD21217EECB80BD0D18A06286DC8CC3D88B2F150B5A9E9EAFEEA890915847E1F31DF93FD1063A63B91CF0004B21FA108A503036CB3CF1203473670023EF2CB5D1BF6E69E34DF1D151CC5CEF6A9D538EF4970541271016B62CD80A5E9F3A3FC9F03A2E8BB2902C3D5E5EE5FEE001B69720D90B8BE9EA8DC1A9B73C0A429332178D92FF2F6FC7DB636AC8E3C92A17D62A22733DC52EB3DF05AD6DE2FB5422FACA2CCE714E02862858FDA8202107C49691E112E7CF556CE9D9B2FA8202E4E00F48CE189D5CA587289C4BE5C88692BEFDE8D65019423B2A74BFE5979B070326731D98D853EE273AEC59E94B8470A46247F4FC9A2B94C6CD0CA3A4DD770DEC20982572ABEDB96B0EC19C64C058F0A6041B8250A70B69FADF57CBCBB04A49C2DE6DC8B25FFDF9758D89EED88F2F05741CFC9FC2F5BC44152F2A925421EEBBC378D985538F3E4706210CC31E1D916BAF5157AFB3AA86CC2228B382346BA5549FCD2A60B5AAB2E4DEB599A0E9F926F89EBFE302CA3E0718F10D632BDCBB139B7CB82450F231B5059F72D0FD11E6E32802BAE47487A28960C6116EA846870723A2FE2331D5D5056C0ADD63586E09070A293A2821D69E13DA2EC38AE1C20DBF176AAD5B12C2B2532CB5776AA93E31F1BC09637E0B5EE64C03EA4902114B24AAFC1E4BEDC1AEF44877E7FC6C5E34699BFCD2CED75E8FB3B98460582878AF42E190CD6D8BF344300E151B06246179EECE81AE053E7D4D4C6C6B92696155CCCFC8A41BDC91C6DEA8B8A1C0C143898F570A7289A7CAA903634280002061DACFB8484C3E7F469D5C08A2064D9DBD8B09E3DB3A5EEECC25041EA1B79910C5BE47DED20778F64A0F116C168004C45C66A6B6771C44277BE0EB23471FDE8E044B42E4BE6ECAB5131298CB28F2D84B203FC23B11E299A8791F62F11C55AF2B318268CA3E2005ED9BF1A3658378FE8907A003075CA27D21B29A6A9F0CD898BE626D99A5890E0D003AD49F1F3F33240121D8E97B51A8CF8E054717A3B666E1C358E50216DE5800F99203CD87035EE27E75697D33EE1D6CBA9E0AA042F66949D3F3DCC759300D22C8D8F0E94EDA478BA664982E4DE9ADD43B794878D4B7BE0329B9FA942796884E6746B45BFE331DE0567FF9DD5D3BFCE946088BE0E8954E1119ECBF95E0B26410DC4AC6063451D5075B682154BEE1A6EDBC104E1F0BA765D2F8A34111738700A41BE9001275F5B5F43284848073F9523846D2D8CF64440434E4F30E9110C393D3687D39D4E09378C65B59EC8622E55FFE5008CBA1AF3040D6E4CB2D82E723E46EF0B118F5C07E58B35A11740A577D11FF93104007F8F124373D62EF1465F6DF37757E9671CD6A3DD2B017479DBC357E66BA2EEED7E2DD75FE8CE0B85E8E444D64323C94D9E79F3129D26E56E0AA867B07E3885A37070854980897E5ECB2DE436CCAE36B7FA1A57F1AFCC504738694540664B07B06E9165C29E7FCD14FBA4477F32BEA16C71AFC663E093F3B4203E0117343DE8801633D82B4864197A4D42F5FB74D11489B7E8CEB68493CFCAADA1A2606EA5D0CDBBC7590EE686240D864C26AD9DF83F4F29876F5B6F31FB82640D8D96C1B90BA762284FAD8815A331B4C130387D222CA5625346E746756E89CBC69AD9089D4BDD308F3B75B891C713E42D96AE01B31531D0D8246E722450ECC9C5D1B17ACA3927755307FDF6B6FCD08C230318EEC08808B158F82068DD6B1C2E4EABF2B0159919F47F28AEBB274B19EB53D24F11480E094DC8F021C208CE97F7EBDFB80AFA107699E9146F97D94D9A1DDE3514FB1BFAD630A2B4E7157747EBA080A6DF57831EE1336BA538239E61647B6603E3C3A99CDBF0F9776845295122A138CF07327E328ACF43E19F76C2B29231406BBF63541806F3CAEE5E0BA6AC0A0A8286FADF6A320D2389148FC80D652E46E52704BDA1BF4D10B813679FD47F28A7E784E43BB7B2D71E6E8BDA4F983EE655B017267F974C58C349EA1746CA6D4F09FBD7E07880F28F225FE65F25D50D78892D01EFCD58A9109B3C10F1DD9B9054013CD043C04E7DD4CD980), (null), ('00000000-0000-0000-0000-000000000000'), ('2001-01-01 00:00:01.000'), ('2079-06-06 23:59:00'), ('11/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 4:39:16 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 14: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((844364759), (null), (20280), (-1662199111), (null), (-1.79E+308), (3.4E+38), (0.5650), (0.8713), (0.9650), (214748.3647), ('ZBvbOr@/*zZ/aB.U>oAZ:,Ba|@Ar,Z<|,aZo/Bb~>C@~Zz/C:a.:bo.>uAu@ZUho h@ v:bo_~@b.ub*A_CUzv *,rA~+:uUu:@/_b_ B|z .֪b*uܩ/ova@OZ_Zz:+_ob_Ī>oCz_UߢooZOAA:~vz hvA/*Bhb|Ī,@.|a<:U/B*OuZz+C+@Zv*>>BC+b,~~:v+_<>>+uv|>+zOoa_ aaov~'), ('O:*hU hߢhbACuO@zBb|z@O~UbA_O_ _orbbUbbbuB/rߢh:UCOrO/brUv>Uܪ uCv@>az:/z*Ovê*v~~O_u*bA*~AvooaU.,vBUbBCУ~bbu:/.h*~v*rU<|O bZo:*v, @o:b|<<<_:,Cb|baZoab,,b*vho,,_>bZvbzBhC@C|~vz.:CA*A>ߣ*<@/Oo/@v_v:ohzo~,u<.Cuuo:|bUaao>B|>֪<>_b@.Z Az:z_BbhAu*.C@Z~.Aba'), (' '), (null), (N'o@.*v~O~+:z|C~bU.bv@Ub+A~:b*Cu@/b~|/|ZC||o~r*/UZoO/A|_@OOh~ߩz<*h,A_~+BO+r,:::/_ObC@b:ZB .auh@,CUrvZ_, ,A|orb/*|B ,ou>u Z~r,BuU|*a hCab:,Uz*uz@.CBUA*_~~_ ,CoaU/ h:h.zhBb@.b*@@.U@h~oz/>>A Uv @|O+r+bAbO:*,uBC.,/ar|vzhz:bZ.<ܩ_/AouBovUO|Av|_C Cur:UZ_BB@.*/+:>Z+b>rC>v+_>abA_A@b/CzBav+Z_ B|UCo_bobhC@bU@_|o o>.vArAh>:_B hB~a~B/b|r+.bzA<ܣa_u OZ>z*ߢraAZb.z/h<, ab䢩h b<|bB>/* ZUA_bCA|@vbA|v<*U/ Zo:UaCuhߩ/.:_<bo|vvvߢCBbB~ Oa*,o >O@>O.vbC+C|u_rB~bhhuh+zrZ~_/@/Cb ߪU_OruO~> /*v,U>o@,|B_||~ZChUbzb:~>*a_hr+*bzv/v|u|~ ,ChbBZ vOvZCzo,b++/r*b+o*+_Aru_bub,@>~.o.+h uģCU*.AAA~~vâoUߩ>/~o/ZܪCZbh~rr/*+@:Zr<z>ahr/AТU _u>A*+<.,>bvr@v,zZ_,C>:Brz_~Z+@b.u@ob~hohO@a@. .aAzUrB+vOou+_U.hoC~~A|>:,A~BУb@Zvz o|,Z b*_,/v@ ~|bBhbvu|éOv:bC/ubo>_UA|rB,~/.b/C>ЩOvobC|ZhO>z ZU| +*/azzz+âZUrb|uv*<:֣b<@Bhr*UĪv*ܢ:OuC<>>|UBa~v*@, +v|hu< AbZ~v*,媢:><>Щob/A*:Zzz.CCba+u~+zuv.C:Or:Z_U/U,_UhCCBo O,a/ ֩z uC*r:A_,~@UBa>h>o<,b|,<,ArrB.*buo/|*|v: ,bavr@zB@<+,BuzO+Ub.hAhbvrU>o@ouu|zuv~Oz*UOAuooAB_oZ>u_@>o>bB_bbhu@__Br++h@u_r|_rU,@:b.ohuoB/ @.<<|BUb@:֪_@v.*bz> >.O,u_bbbb_Uu:bb|ub:ACC<<@:zC~@+ZO>ĩ>Bro㪪rzb,*oobb:.h:o*Zo+uZbZArz ~CubbUovzu>Zu baO+>o~+o+O~Bzva~.AB_b./| z>ozhZ Uz|@bu /ZCu<,+a azA*r@,+BOBUbZЩ<~.,a_bZ@@rC/~|C_Ora+b<~/ |zo.uCC|/ba:/@U.bbUO,b/b*Az//Za|:CAb@++*z,AOBaBbo>._o/b~bb/|@>u,A<êh uCU@vbCvUBv~hC/uv>ߪ~|vOߢz/*/~*> +b,o:,v,U_+rZvobAh voBhbAv@@<*+vOuo@~UaB:/+Ur|o,Z_OUZ/~:/*ObU_BvOãUhB:â|,|>+bOuo|~AbC~~|C>~O:B |:bhé:<.b~BABb:Av,b b@:U>C/|CvBaz,z.bao,b*BU >aaZo<Т+zUbCzUCBߣrr|A:Or:.BO_.AC@~r|*ov@.CzOb|*zCo_vAZrobCbABA<+./ChhU~~.z~/z<:C+Ob*_+/BZr_C_:b CCZh~bUBb+ C,:A.v|b|U,Oz@+z.U.O~B*|~>oZvAaz_ZB.a++:oU|ZrC@:Zo+ aUzo_/ߢhvvhB'), (' o+BbOb: hov_r,bbv+ܣ_zAbB./+_>r@ar:_C v_Ub/Z,BZ@oA>v_|:êo~OuAbOuA/hZa+uo|U_,v:<:,z /:r.< o~+UbhO*BCr ovBUa.z B_b, .r>rBbC.u :.C,Ab:a '), (null), (0xC29E82197DEC94CE552155C089AA21684D34BC1CF1BBDDCA0DEFE4FF4511ABBFD7ECC6A53924BB859B4F53B92DCC8C50B5BB91CD719E0307C1B80B8E089488437696E89CE37B2F28793780A267249C4062934A897FDE4D39E9BFE481182C7C07C6104396E4EF6C398C69543A1D60A09D1BCB2B754AFFC39749AFB22496AE0F4CBA78DC57E0065C732610FD168A131B891E47654D0107BDC74CAB4D343D48A2DD59077FA48448BC156FB84E3901AC0C369329054F48C24AB3BB150A34B82736DE6E1FBD82937604D58B50DD49B883C5A09F17A11342539596BDCCE86E3D875C48826FCBE1EF8AA21C242FC3F7E401FA384F6A95A085229C1A8A26C5C78D969804F495C748B8E3B1147484EE128F9DB2BCD1B01FD3F1BBC25FD3B056C8C4DB8E8E97BF034E3AB17F6BB9802B0033898BED7409F5DD76C41238D36774078DE85099F6607ACF9A63812030B319708FC12C4A256954BBE6B117D2ADCA7BD33C78DED030920AD30EBB521087D5ACC3ABA2A9123A2AE1239494B34448A722CFE8AEE3B8D4483FFDB6593B6A164334100554270B2169981296BB3C9CDFC68A66988328D8F2F4EF6262AB5BE1EE770C515FA23FF48017AE7E16D021180CA31EF0CED4D1931A5C1E1064C5A8750DB6231FAFEA3C3C8695E680D5A9C121D2D655BF8D6B121AA5783703832E8FBA6F387160AD02692266E16939ED50BE709AFD3E8E6FE9E8A2), (0x36B339B858052C119C386074D06C3359AC02D92C54BAC66886F0014A8550CFBDA489336F2C291033C13F213739886E213C903B9FCADC247BECD0316804E18B4C69A3D04639C42C83F1A66B15988F2EFD81DF0EF5142FF2C764B7825BF7A72FE0B3D4CE96B827E87863B8AE23710FE25DA234E624D396383AB008E28141D08B49778A62C3C198445AF795915B81CF5655D425B9C3C10A0D1C9C93E5B0446736922C64ACE6AC1E9B09EF8C2D3D04DCB9E1), (0xAC1B17C8886C7D45272DB394158F5EFF2E1C2270A8B589B0D334DCD018BFDA03FFB8BA1B7B63DB406867F76E555A769DDE05AE9CBF40E4F69167F4548FAD2D6752B0945DD44383CA40E20741BE1A5A79BD3FF112113E43BED3C489146F87B0BB3A8F1CA5C619C89A82E35BDD39A337770D7B9650BB1A56146CD68910BA6F5BB9314C062EFEB4B3A47657902DE26685308C1207F3F160FF20390839EF8FB8E01387A2ABEC9C097858C8F1D96489283106505883A86768C7D14CE6F4F57BC315BE777DA63FBA98948399AE2AFF869B9611D6329E363437AB1FDADA9FB51483DD05DC1AEC0C82F14CB7C4000EB93EC74BB150E31E4824DE8A3FD28664E0F9DE6E16D025236BAF8A8FE4E6E6713429F1E1138FEE65316494E0FD90AD39FB8D6CBEE592F8E818A4DF02C55339623D6C5616E0A551510B793CB23C4425DB015094577A288CA23108C86EAFEB9FDD2A32A3913A9659553B1AB26C5545ACD47F040075BFE2E815E0B4E4D7DDE3A11FD95F8809A194A06BF73E1C5F751F4CEB5CF3EFABEB2A1E474A8DB086B1817858799393F6BDA233EA63957D81C6889FC067F97BE9F3F534AE4040BF13E31AB976C5C3E5E28C562DB9BF044856AD9C81C1EEF01FB8058F64835EE4B57DE2200748DC07BB02A3BD3310CBC229EFADDE01A4BEFE25F2FB0071365E6283A8A1B0D69FFCFF7AA6E17E1E30BC0EED436575D680E310BEE4FB144DDB9685A4403A8B6E1AEB8AF2AE645BC33FE0F436EC132DD0E88C02C590F1F2A4E7B29E0F5BDADDF630A0D258DB83271C874D7E0306DE60C868B4BBB437C6DD28F8E50AFBC54B676503FE054C40D5F56564E53D4373EF9D0951D6A7A71F28BE69C2A95FF5782C573CE6190008D8148792BE555051899AB5094700AAEFA3C045DA3F9B8A967600EC388E015C59EF95313D4E15E8C9D86DE027F456AD7881679826D325C93C89F01CBE6818C2883E5C19B2CF6CA08ED77C02D1BB62A21F5274B626693585C9CCF4B35EF82960C0AA58E9983CFBA814C7094F5723F781274EFC6CF4619B1F08D650E5DAB94295AD1B412762780AE357CCA15F5FE62DA5D5738B0FFCBD6C5E0E39E1C1EC15CD5B8573A13CE1CF1EAE44191427C03CBF21A9AA10662D3299F0AEE318299748F741FE45D9EB45F1C30555DCCBE3A8449DD179BF184105662E53DAB18DFEB6F417FB21D3297A63D4DBB8E60A115066B6476A4547AFD730B53C971786119463C54F61C5D0C1D51B236EA5E3605AFB55DDEC246923B96F443FCA6C979162DCC3475421BBAF8B96F4714F22D80AF4D05B40423A9AEC2B400CDF1C8605553E89C092E29C0B3940A552552FF7D397963A4BFA11564F2841D61C1315DB9304919F33C561462757C421009CE845BC336C7548E13B0B44E73A97500B80F72464124DC390C40E355013F335EF56B340FC19E8A7A093B1C9865B4B8BCAF61BD7CDFD9B899A812C6F5E40F8CE47D55491865753F2975083D160833D3578826A59F71C68F1BA29A57AED7948609AE281B006B90472A2293F7C79CA281644F6F6DBD59ED72B6D63D75DB1D9041D0823367E028C2FBE7DF7B6CDDCEC77EF008F36F6836D8AFC0B5642A2E2A7C1C92521745693AA14B7C7375DDDE7094E81EBE75C22A30D9A9A983A72AC498CDCD636EDA8BA77215C557A7E2F4B0FAD140207C1B7FA4B9F261787D9BD5938686D3B5A87A6FA619409CA8B07A724DD4E8BEA2570A488D5E28B97C690339E63031D1210F4F188061AA073B7ED6F44F70139384DD233C7C3E46578FC0F33D0606B6688E99514E95D03E40ACF31D1E773479FC456FB5090CF554E2B8E798CF7E7D0124C86E75A62ED50DB4AEE29F891137E04B56F6E79651AD6B89446E95AE377ED23FE1E85618CEC3DD7061F06A2A55CBD181074D7877856AD32B02EC51C04F5F7D30106F9738D1C78C8329673451433133788D14A6FA065AAA87153B15E2720D3102832A09F634A8AF3FC0E54E1E2681E7C1A8D9333AB88339B5B51013A6B1AA011C3631CE19373D43E4656739111C9C508353443998DA065A0FE054412484F88E16E421E7F4B3CE9A7B954EC5414A28A928BF90536D6068422FD7CE28D2FC2F6F7CD9122CEAA45BCF84A9CE038B4108B5C7AB1864E4A510B67BEFB81CF595B77F65DF486837FBCE7453C0CEC3A264C6EECF086127D3BA7AD7C86BB10AFC4ED9EEF25EADABF8A08DCBECA40123D65D041718D95DED348F9BAB5470AFCC4AB38814E6DFC153C71AE62E8A954B3FA957016B57A9E212F0ECBA62B2F2478800B181292BFC3CF68BB0500DE32F629F446C020D7F347490D165240A256E90D4C36E2DC9141213BD1A0ADFA759D43FC17A1B1E56E04A08CC4CE057B6C832D11D1F8B3A8501998B324844F36454DD46FD3562800A5049E48955618C23BA5CE4E739B287DEA9BACFD08FDC0EAB5694677F995A8165A2C6CCD596B12FA01D5777EB500C3A924578537A92AF7A743B3932B0FA1C9A5FDB8F3462F5B237E88B2FC33854234B4A69C52A210706D3034C489A6D8E6EA5F0CD281FD0D7C7AC83407AFF72DC422017EDE85724F26958C4BC3126BD17CA5A1C79D26B3C037A62922896D09C175026FA28827F9617810E53CF5B24A6A0EF7B7610D2F8F9E6E4146385C4FC5B98BCAD5C1A2C94954AC404F8D4076CB855CBE1392B6A8B34672D13347E0C105284A2CB12ADC89C745AD62B5CDDF025DF876C1DB9D3B3202E3178E4ED1950274EA3B274214C5A0A8D3F7CDE553F2E6666F743AD11FE567EC1829CD134E3AF6AFABEECA92B8BF4833D51908A66D4DAFF03027DE5D5B315404D33A2AEAF78D5A98001E39642854AEB02B07FB06DDC07ECB7ADDE2265B99547999C6BE7D955E3B48BE6FA54F134AC8DC792E3153354E2612BC5E701AAA333D67C9BFCB6295301ACDCBB3476E1B2EB72F1506AD2D6701444B9FABC136ED219D8B323D86537F6646481464878206B8F78DA74005A4850F00C87B7FC2EA6FE3DFAA15BB3CDDA864B0AEBF65190279C144E6B4348FAC1CF905223DBDD7FFA35CD93085DD6D4B7B19E5439056E520F6FD4FBA3ADB353B54328D1BB5199FEA8CB00B628CE87D9B54F96B9A4E4C1CC614E52B406E1DC4C7279DDC524F5195627AFAB6DF4A83940D80B36641709BEC0716C707D0EE5F7B6FEB433BEE0C2A4C0264092054953C7C91511EBFBBB783568BB1D43C884AC4731A7F47F40648A501556663DD677B9871D94B767FCF9FBFB768ECAF3C37EDC4B89F9505D44E487549AB1C6A5454A6EF101963633DD345A47ABF8F8B199869C968A2AB3DD275C32391D52DD3B3356A63C1FD9E23D48A86E45AF18A15BEBC5BB0425201B2A9691C9B5640D167A671F045542CCA1BFA46F5DD1BC6E3E1EAAE64D4797C916033B8BA58E102CD94B81F3EE80045C091F240B5FB5D2396E2863AB1A7DBFDED29DF90119C72713AF7796125FC88FAE1A4EDD2E239C696021021D7D2A65125B8BB3214096F34241F8105BE82FCFE9A5A8B590DBA081BB362498D017A9A9E94A653A86ACA74F17270C9B2603408130611877D464D446BB09F7EB1BFE133AA85E271172F5393D0E69AE79CF055BA7F593686EFF21C574662E8F7CA4BC231903C1F2D7EC2F1E4B37EB797AC66A77A5AE5FE57885A44B7698A2AB5465BC98423685660D1283BBC6852D3713B85ABE0BA6D9DE54C6AA836F867C3F4983B9D57B53373440F47A932A942EE3686D27CE3DE49FAD9BEE337B8BF2067696447242DB47CBB071167D073C46A3C0A7C72AF25EBDF154E41C498D1FCBA84EFDF40CD621DC181091674D27779861553A72C3C4D70417D8431D6ECF0E4EA0B56E2E193839DD9EDBAF0A50E760D9DD5BAAF442ACF7E377F9EC2483047D591252C697B9597F391B6CD3F815CCA32077793013241A0BF3BD8AA61F5C055A8A6E55F80E20D91083DC61D8E5C90FCDBB46BBBD19C45A350846C2DA3EA36FDD06024999CFD4950F9E58BC36B231263ABDBCFAC8905840B60410FFC75DFED1D06C94D2D37F760DE6B1BC1EB1182382C720982C81B8974CBDC18395AEE4DDB1AF76DBCA1D5E52BB37AF1416E4398FADD09E2896C5D25027D5582501FBE05F01D40A7F3A4C596578DDDCE4D29470587431E5B500BC36FBDD26A3F4C53940CF57501232E9CA55518738BFC8E8ED7D8354FFA0C0062B4E45AD1E92039854903F8D1D8D82823D7EA9EC842DD80C6E02EFB9209FD58880B93C01DC95DB2841C93298704BCB5FEAF1178106D3820D76393F0BA25A77C4CAA70C545180B5A79371AACAFB4F9C22479FCE2F784481AD372E8B9366DF85E7417DCDC94F670E6A4B7FED8538B71226AD0CC4129C584C76255F2D32F51230C3FBB3798D81C2E2D09163D40866FC64701C64F65A0B634AF92147A3E049CB65293F1999754D84A4DA29E3813874341F28EAAD16902BE6B88868705C3A2EF296C60EBAC95D62FF3287C01C2027E21284FD387AF5ACB4D50D5851010CCD387ABB375CCB39B97AB1C5FB6A8EC00FB690A655FB6EF1A3FCEA0129BD60FC61E2755F5560F8CB26E8CB7276B50A322604FD91B05AB6D1D979073A62BA000C09C55408F53F7A9ECDC58F6D2FEC7AFEF2B7EB24BFCF3C073B9375DC69BE686CE8CF68B150F13CE68A5ED3FADB59B1ED0E0847BADEDB4C4A895CDD61C9AE350F6D12745073B9ADF18AF49A50FB413BD1E188DE5176BD9E0D732E37F413DB2CEC29C48DB8D55169446A463FDA40EB5F3810FB7030DFE398BF8466DD5581A9EDAFC7BE3726C382FC801F89F7208DB3CC97DF0FE3185AFC1C362BCE246E7413C2B068800282B428649E0EE01145FC6831C0AA458681C6C544DBA1F0FB055E8E1C0BB736C7FDA139D3A69B45196ADAC649C38C53C42E8D40F9A33B36E0B33D6F3F70D4059EC590442F7071DFE671ABE9F0DBB73778FAC9ED7E763D24C27A4920792C15A886C5378423483453BCAD5A87F7513604FBF5F644A6F68718887B71A5274166CA6C03533BA4330420C67620D11BB53D713444247325D0F1904E1EFBA7C68F3C7B46801BF3FE0A60C8E1D57E30D5B60CC34E0060E32CF3A49B11C2FD95375C5A3749B59A8B99497339E35B815052B0BA88023869C61E495E52EB80D23B1CCB91957B46F7202B7129F49D370FC1625448510865830EF29418F06747901867482D17C9FBD50BB99A5C810E7528E7498CE097488122A7389292E73E06B8E3E1119D5509E7F7767F3CA76E08F1F08D6B21A6DA5708CFD61575DF3758FDCDA2D178AFECD7D3ED61957A180BE9C49E3692157C1C6FEE8CD841B73F8418C01D817EF48C905213A597444544ECF0C3FC50E798A53371B142F2EBD79B10A45958C55C869CF5380DE47E7FE4C82AA9AFE78DCAEEAC701ADA1FBDA199A47A7894E2EAFC7F806A270718E9A426C39CE928494BF00D55C5ACD8AA7276DF43AE5979F5EAF1DD2E3A1F7D56B3C5C2CBF41672D47940688A7B3F2D4E13C50DE357B37A803A20E8AB0BFA1F2C72A691FFEA0CB66BF40ADA5DE0EF8AABC49F1A65118A0F005B3281C32DD7C88F314C17C49D2D54070E91FF4CE91CAF5AA63CD66CEFAA0AE8A791A4A77AF34E2C324B1C94D7C60E974B13667F9AC2273E93372CE1016BAF97412F2D0B88BC8C1B53D30A9E000A82D02E3F21DC338B5DD57A760443D65D1AD6AB7553A8A9031E8E874B2BC7B7892E98B44CB2C239D353B5D1479102A8484506B823F28AB6DA372B109344F86F862DE1477B9F899A48ACD8219DC761721BE64EF6151F8396A3D1DA0597B1A68E6B464B19AFBB2CB8BB6C6F871A691912D5A904AD05F24A76AA5AA399B583F2970649B6577C47D250B9964AA8AFFC7C3AC8C73FEEBCF98868FBD47F450782F33779D880D0A2C1969DD6A3E37FB7A1C6ADEE68D0FE4413EA0CC15D5BA7C88D493693033ED77B9B980730A208090608A15A0DD156AEB1F4E355EE741F5565EEC5495ABCDCB462FF3242D0C9CDA20BD106B8ABF199E736AA74AE1FD8E8F78C329141DCCEBE493BFCF71EAF13CDF837315A1D7D56A97444EE12A0483E948A063AB69E288BD54D12CD8CAF0A8B4822EC7C76EE8ECB8A35892CFCFEAC1DF0FD686D08645D2FCFAB6C0D0AAFDA0A69C995FFB3CBC7B5FB4AB081050B8EE69104CC8F369D82D3C5CCBCCB7271C0DA6B8EB33358AC5A3535B261BDB3CC1AC41C756BF5E34AC3DC36B229F71EFC338979D62586485B9DE4BA8759843BC52009A1F8AF0D05DAE710CAE6FC96825326398EE843DDA6947BC0E7874B5BF13FA071922045265D2673AEEF04BB616EF76257611005438142631D7CEE258E8F8B2F8B468B04520DFFDC587494FE91D91A61E014E3FAD13A5CF04FCD37A97F00E51F53E5201AE3E300496133ACCEEC53C134527C3579AB904E50E98AB494D6566D579F859ABCA8FF7E0D049A899D9D9E03FBFBF346F2CB6B73C396DF31592E6B731AD6453F66C9148B630E38650106A0B35B76C8A8E30F6A9C2401C715D9CE24DE99276EC7485EAD32E767E3F4930672BCF61BD5D265C2801B6BB91B54F20EB194D959CBD997E96B0CC985C18B1B76092D9F1A2FBDF85268D6A7535B9F435840E8A64F1B393A99150CA0D908E00104FFF5BFEDB5E7DEF3AC86F0F532448DDBB97144E8D4DC5ACFE2F5F5130D1F4988D5A26365EF55A26909A2A294384566D08ED51F97AB2820139AE00ABFE2CBF68D4D782F8FD117EC53CEEBEF2229C697AD9F248437FFA1EDBD724FDB0F5AE2763DBC1556C025D70F76E8CBC8BF48FDE9D4485D20CE47BE8D9B8A721D813CECF8EC65A176146FC787B8250D4F33E92E647465F6B70DB1B7F5FD87BB35A3C97E3A0BC2DC599787D56480D578993A7F59B26C0D992B3625FB3ABDAB788CB481D3FEA6C333710CC4DCFC80923628491ECB8E3E08D9A6205303E5C7A1ABEC0F48BFFEF179F2673BE8B59720AC9AA3FFD2E19EEFFA5EBBB82DCE53CF5DA95B28E0ED47D23726CF1C54425543327573B85FE5F4C00CFC14EA0446D3ABAE97EE3F6A6E4FCF52C1C8AC22729BB8096875A85A9B7F77B48B1BE4C85DDDE053137DCC6415E8C435B4559E2D48AD9A606CD0ABD12B510328767ADF525AF704E3E8490EF4CF53E38FA1729635D15A7BED81846B7D320F37B26A93FDAB0971DABD50AA350F9E959118ED1C3FA8CADD471C0EF1C0D69B87B1D9014C9A3B5648762F97D8E537156C4EFBE3428015DF8EF79D5CD1AC17B10421D8F86BFE420B65B2A4A60010E1F8100692A2D4F348F79BF97244FCDE849C6E7E93B70C4EA96E0CE07D9FEB7FDF7E15A54CCB0974DC10D8D15C728BFD1E972E0847818D2AEBC16D2495E475B90C2C1A043F4791C982E99272EE2AF226E20FD1E661D3284DF0FAC97B6DE4DEE79B1FC5205877CDC6F564755DFF0A4CB0DF363296029F5738F3DC03448E265BAE1ABAE7CE65C1DE7A321AF0FD6DDA5EF6AE089C37A238D50BC89C3C7C648948DF18D74344127E5B1D57C853F7AE59DB298D1C96758A13FBD1D5EC05C9955205B8C211E486871AD43FBD8EDFD9D4ED5D6EC102FF57E2D344F4DB716E3668917805C2AB358C754492724866B80B3421FCE88EA6F88262ADD5FEDCEFBB15AC9DC72C06DA0739B7D0E98C608D0F8C1B49B0B98485A7C198E5A314D536BF85998CC5AA9F9BF46A1AB330BDBD7C11D5AE49D3833F018126F605931136F264712163F2E3B754EC8F45569ED144FA041CD3CD768B632C56880BAEB499F8E323284ECF9C59893E1E496D444DE862BFD1FBF1764D797BE91DF50D6AE808A0428662237682856DAA8395AF2D1E1EEE6E154BDCB8A87295B9AC65B1974C2E5605A92ACDDBB4FC3D5C9E46F2A7CA4ECAFF16AF459C3BE79A03DC79CA1CD3C65E654F9983F35102B9291E702A518FEDEF6D9AB280ACD8B9D9C180BA0F4B221088C7F88D6820BAD7AE03E61C8DBBCD4883EE8A6C721145A18C85CFC26297037DF6FDF75268F275BEA2C3047CC6BC3C1DF4383610B0C5AE67824700E260F865070078159FC46AEF8168CBC9BF1CD8EAC059B1CE2A60E2BD315F9FD011F1935DAA6DFD6C4EA69C499958A4B7E50BFF5AB95C3088BF2A3AA62DBAE430349ACD8FD57E1F411F6C9C29BD6834D1BC3AD835603526C5C10A9E8023574E93B26C14FE9B24D276FCAE3B4CC006DB56F568E9E2E2BEDFFF7407CECADF8F2DB82E08675143363697585138C209DA05BA2F478ABA7D5BA1038C257A936617976D70831EB7AF8A03BF22529A81761DF599F2049B8804634AC25763C52DBBA32140C9DB4176BB4E1AA543DB881AB12F9D7E2FE091517C0F691D384C603BC4E5F38F2159C79ADC7EDEB3F9F64428DB200137C656FDDB01DFD4BA72344E6EEDDEE06DD808F96757F2A1B101ED5775CB3032083B38756DE8187D41850D2898307FD62B15E650D236A9DFD3A53CD924885EFF31F23623A5697275BF8BB7E25ACA098092072C6FD4EF6FD1916891C8AB4F48C9261DF6A5FA4C20C1937091467EB78509ABBC471D5BEF1A429254824CC7B9CA7032EECC3CD3538645E66ACC645E1952E9D3981CFEF83B6D46F3A41395B9D409E9A611039FFB48264825F126E112B5F478F1A8692F9CDB78078175393F4FE09C1260E2CE3D05C2FE9B61C4C907047C244DAFAAA4016ADA4CCA990C0E761EF708355514803FE7B7633EA9DDBDD81271030550EB9FA54C8AA7869603A409B4888C7ABC83A1EFFBE465E83765678D1C74B818090915235762E8CA6CF9A9E413697A2151331B8EDF13097C85A76DD7232A7A214B8C00AB63691359AAD772F23A71D4DDFB363BD9592948E5FFA89DBFF501A7428F88989758CEBDF82FC1E40790173203D29FEBECEE90C822431ABBCACB635499202072B1E93D753C8843B997453145E86699ED6525BA63EEB076544E12F33CBC6D5AD77F94702A952AAF64AAE720DD01D4C3543185FF6375CC93F162E937298516FD29FA59D653E66F484A7645B8F78F9942694F9EFB367DE751A3008EB7ABE385DF93E9F6E2A7FE7F7DC23DA4FD30039C61D9A6CDD9F61BC6BC0308334367B79C56E066251D88B69A7AD0213908C8FA219F641CDE0525BBE978234ADFAFCB2C060A915E0CC9EE8EE9230C5309D4D2BDE318D693EF5AD99731348CACEA4DD6EAAFA41B2E677AED67B0D533BAF8D2B214A56557B6D9274CAB310A2CD84D31A49B4C11A355B9B456783B6EE30A271E9E5E72680774E6101178677FFD5D5E151A7F30986ED73F6C5AE11EEF8B6A443284127BCE55D52A2FA52C002AEE39C6F91A264463D99EBFB72F161D26660694A72434FBDAE18FBF454510E342D7047E112A15C56515E068E562B4AF3FC803B9AE9768F6B94DEC079A670F1EB8AB6CE01AA7FBFC40313F8143DC06782CE07F8D415734BB6E0DC4D33E1E3AFE16C1A049F5D48497DC07697D57D7B2DD4773DAA9F781DD5166B1721CE318CE31F6317A722BCC72585BD7A139EDC753965AE79BBA33910684F44ED3345277B4B3493787166D30B17AF1824E1FD0A363AF6DEBB1FB8D03FE653AE58DDCE94DF5E422FDE0B6403D292A2610B8B142F6B450DB23D676C5B926353911EB77A2D481B38C69FCD2B2BD6F20B297C56C4B4D2244313D01C5678F2E69C7AB8D2E51B177518F0534D909D19E2DB4A5B42DF3B9F9EBFF974675D2CC5BFD4B831B173040DF011073ED4618494A6FAEE410C1DAF0760DB1913EBA6AF18EC2B9379D76C676FD73D6A31D8FDCB3D3A65CE6D6FEBB8A125B1D0D65AF1214A61EE51A9CD0BBD3A927F69CEB37D2F6310DBD885D842A90172F153259B9114E61B20CFE9AB216F2EA894DBEF81E9EEA7826DC67E189B711F445037DCB7979E006A83B392AE45B7EE6CA9DD4467B9808802ACA32ECB96CD7FAEB0A45AEA937711F5DA85FD365BF83CB5D7116EBE2DB88BD0AED90BF46F34D3B633E4FEA05C04D932CC4E8C338251A7B36679F4845FC181F8198A3BB96B1C86A6B2470377FA9B58D3383BF1DE2B574E5D32578DF6404E5771620687D2C81FC6AFC8E5803B4E2FB9CA20204B23CFA2CCC13CDD87148F8F6664F09114F414850A1975421646D6120F029DC3D51F0233A1C039C696EA97B220387F1C4ABC1BC5B69A1632AE8D8B86EA29CE8476CBBA4662BCF054BA4DEF1F81C222DEC6BAC853E7D80D3A09D0851334B3DB6C1C123B547E38BA8ECBC60A68ABF6B0EB6BADBF30617B9D9DBE7F3D9136DC1F067282036F87CD608DFF398720CEA48F131F9AA887F4AB0BA0759D96FEFB2857EFA603F528F241649E4D313027F47CCF19EF29729C339812C77763F9E9366191D7E29879CAAE6721DE360A39C27AE4ACF8CE7C0FD2B6BBBB0EF12EB18F477A67EC9F59455C02046A88089465295E504C92B6001ABA51BF2127DC6BD880B59196BBA24D22219F50F5C91286C9215591AFA1E11ED8475FAD9AE0371D7F972BEAD276FEAA86112D2BF3660A51A7CBF6FFD14BBC379E97B94F5BF5B342E981D05E9D28B35223AB0A9D73B62A713C0E05CFE9384C34DBF44B3BBCAE4E915EEB417295ACB37F17A3DC26401EC3E86C47134DF0E358B1349C83A9DC7895745D793F8874B7DC8F5B85B7465C25F3BC3062CF759B00A17A928F3DF9290AA39F0D67C9C6DF3A74B46B83F26A2B12550FA8C6787AA820D85CD8C4F6E47AE36650E21839F45C2CDDF6EE1A09180E364E803A2E50629228F6EC8E6CEE1A448F3A881CA18813D960B37BE9828B8E17C04EA27575AA4B9203BEB9224C66EF3EC3B15EDF81FB6CAD3BA7D97BD4790F9D68D5CE1E4CA4CEE5EFF518E3CFF08CFAC33D26D02CAE95C4E1F43ACED0D0BE8AAE1CBA7697D1F21EE379F08BE289DE4A1ADEB796533F70B93F093C576AFF141E378E34B2361562F14B07EDB3BD0AE15816EFB4F21827376FAC00378D949AB4E365D25454542B14047BC64B4B52BDFC3527E4417B4B22060F57C50636DED55DB053094DEBB58D03EADAB07652DBEB1DEE030265B059389843CB44FC8F24DD25A6689BF8486F117F9AE156A09AABB4336CA71732DC6FAC571A700A1F719173C5FD8ACFE940F2D47FF282CBCF0298FD97171090E80DAA4837BC43DDD765F10D096D90A310DBCBF379D3984059A3DD548173720860008BB85241982DFC14FD190075C26171F5EDBB4B1D1614746AEF94DEEF5C64F2E8AD08E2D850CE439DF664D67E40E4E07BE28C85B6BC42EA7644E752044E0DB8982717C7B97F99A41E78AE27B13EF52A0AB3620CCFDE3C2C6A1E6B93697C3F4FE8AC3D57281D27FC49E7673E0E1B38374EBD4750EB01E9BAEAEB5D9B13053BA1395F3F05019E01ED8C66C2E776FE1D4FE63345AB34EE63E6C3826C3CC08BE843ACC505AFDC3236AFBB5AC4843E0143ECCE0DB5E0C08F6C4AFB58), (null), ('99999999-9999-9999-9999-999999999999'), ('2919-10-10 09:15:51.361'), ('2079-06-06 23:59:00'), (null))"; + break; + + case 15: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1278046619), (255), (-2567), (131711043), (0), (0), (0), (null), (0.3913), (0.0664), (0.1968), ('bUu Oaov+BZuĩrrC@+,,+.bzbu.~:bzBbAah:_ _Z@o_v.uv|Bv,o+U.b+,z|_h rB//OAv@>h+ߢ>vub|zA,bO+,>vhbo Z_,uCru.Uo o_Z aru_vAvbb~. ,~,>o:|+o,a+h Zrr@,_ >uz _>@AéCh.bUh|_r<_U@C* .b:Uoa>hUh|/hA*<~@**UU: ~,,@ê<+CUhO+oܪ:b /*/O,@<|ohr,>rh@A+rAaAO ><:+.bu> ,a,'), ('*+oZ|>b:,<>zߩabbAaruo_~hBu*@:>>@+b/ZzCC_>u z .B@Cor|u|Bh<.hv@uB|aB.OO:zܩ*bAbza>|+~hOr:_/<_B,voCZbZ.:r*:ZC*>>/r@z@~B~.h~_@,Z:ob@z>r:zz*+/C|>.u.>.o*Z*ba:bU hABB> >@b|uou bbAC/:|v>~++,b_UA~<.< ߢ>abbģbB@bvb:uUa~A +z b~_zbba_a.*b_h::.b,z/O+ /zrhu|OU'), ('bAv>o|*hOC_+OU C<_/B*~::.:/>_~@~CܪA.v+b.*u*b<+b/rO֢:,~ZZAC_*b>r|~Ob~ b> b<,rA_+ +C _bu+,bvh~ܣbbhOUh<>*CO,/UhCUCub~,~.brAB:AZU,hOBrBO_C/~Cb|oUr.r>r>>ozܣ_v_r..o||réz| v*vob:Uhģ+B*hauzrZ|@|hubUCa*O.~ A>|O<*|/o|UBUB/_oB+b@+ߢ.vA r@h@U<|U|+.zA@:+bo|:b.*@C/zuOabhboha<: A/rhzb~BB+C*bOCA,,uZu/:~A>O:b|b /a<*Ģ֪r>bCĢbr_v A@*aOB~ZBCbuO||C.O Aah*@B v:A:>>*|CO~_o/._:OUrbUv/.a_B|bbz:/Bv|aU+OA.h ֣*~|aê,U A:|o_ZߩUrA@_>+@C|_Cܢh_>a<_@bbz.+UĢ*r@ru,._uo~a :v<.vbvܩavO O@@*o.,A_>rZbĢvobZ/B*> a_.*+U/, :bZB :BO.Aour,vvUOz+CZ.Cb. bzZ~za_Br~bO~oB__CobZ@r.>u+bC**@<<~o_@:z+a+>v+oCOéOr.UOêUCC. UbBb> :>+u_A:C.h,*~Uh*oAaa _h**+ .r,|bh>U|,@B ~~UbzhOhB.ߩ>Ub~a*Z~br*:vC.Ua+ur|_UhBo@+u*ov.|o| bahoB ~ O*+.aC/r*ZZu+_*h+:|a~_aZ/, @.,Z< Z+hza*r:䢣C A+u,vo+O:O+AУ_ , ߢb|:uB,>rA,_r_+ B_b+oz>O bCb~b>CܪubOZ>Oa<:o*zur b~_~bZ|zaa/Avb~>/.bv.v~,O,CbzUrZZ@.,/ah@Oaozza.A+:/ê|C|Z/ObOrhb~/ZU/h~/,Z:rAUaAO |>/Ah~+*<|h:*roA|,v@,>>a UC>Z@A.r|Ab|~Т*OBo| roAB*+,*z+Cb @z ~bahr> C+OUhUZbuC:~U/Cr *|oAOv*>,@_vBb~|b*BbzU@@ ߣ_zbZzb+A/v_haU:~Baov.U~a@zu:>vA_*Zh_bvB~BOb__UBv:+ohUrba*a:_@a~O+bvaUOBbUA ,C:Cr+U+ab>,aZ *vߢЩO+*_+ahC+ uvz>oh>U*| A~>_>C|,b.~a*,b/r._* @B*bv>C :z~aU@U/bUbb_buBzZ//,Z~~uB/v_./B@Z_+Oa>ubC+@ܪ>Au.C~aB>+O BaZr~bB~OabUu~~ТU*@b B|< *> ֪rbAr,>Av,:UU@ hA+,z/<+UB+A@|A+C_< o+B| U_oUB@ozb*u<>b@z@Za|buOrzBa_ߪu,O>Z/Z/B|h bZb+|v*/ AU+~@z ,~<_B~ CĢ,_O_rCbhoA/ bAChbu@:o,b@vA .a_zbO~|_Zz~b+B*U:+zZ|b:_~rOCߩbou*rO.r+|*.AOuCoub/C,o_+z*ruO|C:b|h/h<~* o:Z+UuoOu/rbb~hC<_>U@ *+|bUruo*U*_ZZaO:b|o>r*Zzh~bvb~zo,rhAzr,_abUoUCua_u:Cbb/AzuhzoZb/~,ouzrvA~uC:+Chz*hbo<_:.O<@uA+B>b+Zv@ bUb|r~Ar|:aCBr>u/rC B>ZO+:@h//ߢ brBbhab:@Aa,zZAb~ZZzbA A.,::rb+bz.bba,_ba_//CzZ+UhUu,*vuvz> _a/rB>:a+>_zvãAZhܪ/zou/ܪZ B>a>_auv>/У/aO, /*O|o/BOUh@@aB_o>*Oh*+>u|bUb/~h |uabh~a hrv@z:~uU+bbAv|C+/vBB֣b,UzêC~ubz|U /ruU_~<> rA<+o@OvBa/hO_OA|*va~UvoZ Zru.bz*:O*.,Ov@o/AA>,b:_,v OUr*C+ *bb ZO,O~UUOZ>@>BUb|ܩ*ߢ+Uov:rrУ*Avbb A@+ ouܪA~|/Czhv@vzAO~u/b|.uzr~Ao+:bo.U>uZ_>a>a.z@>/.,B::*/O<+ub.Bu:~ZZ v|*~_.OB_éBCb.hAv+aO>uo|r bh/,|>~rOvĪz*@.Ar+b*ZZvaZ UB_.,Z>uoĢZ@o:ܣ_ a'), (N'Uzr~+֣Zrߢĩ_,O>uAbߪ,|~aCê_vܪA:/OhA_hhZ.~*CohAro_~bAU>zbЪOaAOva>OuU>vo+zhb v<,h|v,OZAAh_v..|*z__bBb/zhZZauOCbbBvzߩZu>bAB.CZ>Arbh>|:v@rzu|+/haߪoU|/B@o@AAh|rh/:vZ<*B_ .|uBbo/a/:~~@__+:~'), (N'@bA:,+~B|A._,Az,r,ܢaAZ:Ohhz:<*_BZh_*AbC*O~h/bv|Au@B~O _.r|_:_bbrb Zu r+|:h<:OO*hoZ >Z:/@/Cav֣C@Ob@@o<:o /hb~:@/_b>B+o_~ab|uv/rbrvCU@r:AbuvoC+*o@>+~v aZuh:b/v*CArC@vbrauh,.Cr>,Br*|b/~ ,/./aruuãhr:<~.h@_vC>@BãBrU@v~b~ha+rU/_:B+ozz /U.~êzoB.oa.Z@h*v+z@Ab@>o/O:u_h |_z:/ b_uab*OZA/bb,|vOoU,/obA*Ch~U<>/>r:zAbC/u+|uvAA:/AOO.*@ߩ~@ova.u_~b_vߣ_AAu>@v/aoC/.a@ébuBAv*Uu_+|,h..hbߪ.. +hrh,䣪>o,a C<_|_BU/,U|h@*:|,~bZzhߣaC,ãOUĪé/B*@+UbU/B,|U,@+hr:U.Cb,@+aB|A ZzAu|z:ZA,OAbv|_~rbUA<|,Aߪ +@B>hA/.,*hB* ZbU_|hr_|Abv CAhb>aZ.r*+@b<:/~ OUz,oo, bv b_b.A@hC_|O>aZr/vZ|z,>C+b ZBra..v.U:rhor:/ZUZ*buZbzhObC_BUO@o.+boa.zv|rBz~/ Z*@/,vOaz@oZb_Bb|B |/.u*zߢ uC> a/z :_+,:oC*|h,B~oUA>/zC>B>B:/.>|,o v@Ī/ bbvzBbroCCbB*+u/ĢZߩb. @/,CuBbU:A_,Ab..,vCzC,b~_v|z<@bv<,><+r>@|aUvhzܩ//uu/hu@rB@uТb>AA@+zZhOur+oO+ *ģo,,*@aa|.a @ĩ_~oC+@bbbA~_o/oo/rU_rbBB,_|,a_hUz:rA>o,~Bz>h/r@֣vA uAZz/Bܪ/+aUZhU:,U|zo.vhozOv+h~_a@@*a~:<~>za*u+:aBBoOh oOu@UO~h|a>+*hBr*obOBuZbBZ~vO>@v:. |A>a_<*ģzC*_ C/>U_<./buhb*@vubzģ|:,Oo.b:+<_b~uA+~Zzz/h+.z*+o_b~aA>r~@.vaoOr b.:ZУU,o.Crou,/u֢hvav ob><_va~a>C/< ~z>CBr*|<|.UChzA|va+uh,AOv~rOuv@*v>vB/ģO@oo*aA|O+.B<|r*/|aB:+ /*Bv U~/ Ua~<_:*_|ZraAO >UO_ b.Z~_hoa+,+.֣o+B.,o:|a Uh b ::/@rh :h+z*A_|o+BhB*ܩ+>OU/:vb,v. h.|v>,OU_ZhbuUBh:rvOo>a> ~Z.orBZ@B+hߢЪ,Orurrvzao>u/Z@uAC@:Abܣb +*a,oOAzz_r/uoOO.b+>ߣb/.Zh>,.vO bB>_u|orU _uv~uv~oU|Ob <* CZubr,|,hvOrBA| zu<_CUB. +b~<|~ U,U/ov~_oOu/h+<*zu>BCUa*,|<,@o:.z*C,bU:C+b// r/|_AC~z.*o.~ߩBUhbACU+aa|a<У ~u>Uv/a uz,v*Ouaua:C~ߢA:,zAb|, u oua>:O:Z:b, ,<*UO.o:<ߣ.a.:Z*OB,|r*+<+>+huaAC:+a,r>b>r|bbo>ACu/hZUvz/OrOZO+~v_*vO~hv U|aUO*Z@Bzbv/o/Zb.'), ('aZhZC+ B~a,֩@,uUu. _O_,hb~A/o+:䩢+b,ubr.,C*.AC.v/b~ ~ua|Bu:z,zob*r: h<:A.,r,v@a.vuavuU /Z::avUA@~Aho>~aoObv:vra|vAbAb|AUhoz@vhhZ~r~:~ba_A|.+~*UOZ~a |~Z+/C<>h@|oo:rU*UvOorrZ*C*ZU>>,rZbo>~@A+,Abv_v:_r.Ca:zo.a*h:z'), (N'A/~|rbo:@~bu>Ub|>ObbABzA:>*a>b< bbCa > ~/h*u_Щ.hb/>>vObZZoCar>bbb_CC z*Aa*Cb.ah*+,>_uUu>a _zUC,~vZ<*ub/|_v@O_/~._b,ZbBv:+CܢuUAbu,ߣU,u@/ZB+UZ>uOUahObv_,|>,B:~:UU~//o|C.bOzv,Uv+>Cz/~bbAvr/C+*_ vOU,A|uz~@Z vaOBrazb@Zba,:o+,uC~UO|bObC,a@uU/.|U<*B.:CA/.o|_z.>hAoaavC+UO>r|r/Auê/ >a O/,.rrbbuoa>*:rz@.*+<~Ov ,@*u o@C|Av<.oêbU./uu+~,<@UB*_*U/Z,/:OU~zAu+|@Abhv:a.CA< vOZvb_*uZb,,@hZ:,b/|  vh>rOUBb/r>CU:ĪU/C>a.burz*|O.O:a/v|r@+/Z.Zr|aZo,>Bh.ubܣuaO>@ZhC:*.: h:Az.rA@b<:|~*Z@r:>,+B@+||hBv.v|zAbvzzbZ:bAO B+AZraroBC:o/BbO:BABbbzZvB@U/:ab~bO<~oroU:av@z/Zu+@zOUaUv,/+,>Uuu ,>,bar_,>B.OazB<._*ua_A,/rvZ v*hOZZЩ,|@Ca+Z@hhЩ +b hvbb@U~â*ZzUaau~֩Zv,a:>>/bC|>/.~Uv>U,Ab:<_,>U*z@|@rbhuo/avaC:@:Oobz.<>_auU,>bhZOovazoAzO>@bAa~uUCh<~Aߣbhr<~+O.,:@aߪ/|bb:aAOA>v,O..UaAr>+*|/ZACOAboU.|<:bhCb:hba_zvbb_AC<|b*UC+OZ:z_Z~. r@|,.Z+Zuuz< hO/Ab+hu>.Bba,/,*,/rUa|::ah @@Zb@A/Zr++OCb/vv,CZb<*v~Z:bb|b_zz:_:vo>U>BB|hUuh@_OO<|b~,_|b|BuarC|<<*UO֩|_:u ,b~A.>Zz~ZZ.*BA +b,.b ~,.vb:r@Co~>++C*/C.Cb_UhC@,b>u/ ,r.Bģ+~ *uU~é|Ar@uzܣz,raa:+CB/ЩbUB.*U/u,~>ߩAzaU O@z uZ|b,~C/|+h*Z.: u~b+aA,Uvhaa|,AZ>rr*uU/_u> CoOAuv +|@OТOoaub֣uã*.~obuvbĩo,hA11/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + case 16: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-2147483648), (81), (-11771), (-1831503069), (0), (-1.79E+308), (0), (0.4471), (null), (922337203685477.5807), (1), ('/>Bh֩v>_|Zu,|~Zh.,,<+rAO<>oo*~O/A, >BbB/h*|rrb:.: u+~o@~U*.bZ,r,UߪuzUuO@abvvZhrb~hCZZhZBr:O+hC./_ZAABZUU v,h@ObA<+@,ߢUo hvBr/_hA +~*U~A*vUC~h<~>++:bhBCub.ĩaabuOv@CoA|v,|+z:/Zb~azZ~/aubb+bbra+B*>b.'), ('u>>r,+>z_>o/ZZbaOZ @rz:*bbB+.BU*or/b,oZ:@a::bz//êo+ZoaZz OZ<+B'), ('Oa__ou Bbh@ouA*/r@a+bZU_+婢vB.zZ~bCZ.'), (N'@o<hbB< C+oo@,|O: ,@ao*_u,o~hZu:b>OrbA/AB|v/u*vh_:v | ,C *h+b+C>B bb:Z._UB|@A O,brz,uB|h_BBv+>Z >oUu| UB*+UCU+a_:@|v_oo*.+:abr.@Z,Zh|U::zoh ab_r+u@,Auz.z*.ߪzZbh|rB.z:Bu*U_b~+,UO*ArAh<@+:@hCh>r_,A~: a,:v~Z/o_:>@b ~b<*:~*h>,@aA,.Zzu>Z~<+_/z|:_>: .BB_@Au@,hAC_@.,@|>rr ܪUAb ./,>~|r>||:<*|O< .:~bOA+<>hB,ozC:|B,z.,OhBB Ch+ߪ*O~vbB|AZ_A_z>bzAv C.~Z~h>zCCu<@z@ brr>*>@ubO/@_zUrU/. C_|a,+|hb >Z_< .:|BAChzĩuzbb,ubO_:.*|./vv|vZzb<~@ģo_o>>u.zbCOhZB||/r_>C*<*b.~vbubzzC_zv|Zoģ/h@U:*B.|b:+<._U*Ģ@AuaZ./>|OAhB/*bBA~..+vrOO rZr+ov>ho>C+ZuZ@,Bu,O.êCbzA b~:ߣ~u/CAOZZZ/:,~ CuC+huZUz.:@*>AbOU|z.@rao@zB|_/A>A++ĩOu>B. <_ZOObhAv:. .b@Bh*huov U /@bAa/B@U/+UZZ~uo|h@h*>o,@/b,ov<*_@AzUbuUv:CA.v/aCBbB.:B ,u|o+a|.hĩzr@b*:b.A.oh/B:_C+vCCoAaO:AA/@<,~>U*>/@b:>ã~BOO|u:*brzoz/:hBߪObabZbZZZߢhCu||hh>U@,Uh.|b>zZoOh_@rZaBhb_z_b㢣_zhbo.v,uB:zzU,.Urhz/a,rrb_vob+BvAbbu:r, Obh*Z,*/C.A/,ra>h r/hC:/~r.ub>C_|B*+:b@obb/+B.Ob|<,~Ah.ZoA||/zh,b@oUor B|:B+@<@Oh|ub.ܣêr:'), ('@boar:+Uv|rh/hB>vߩ*ar:buUUb/bbA~.O>>_Z,O_Ba:r~zAZa.Z~*+:bz|o~ߪbuu<+~+bvb.bߩh*++UZO*b|raz~_|||@rh,h,bOUu|vA@Uurab*hZ~bzbAubУ. @ߪ.,b/b+ :u.Z|*u>r/bCz@CA:Ohu:uCܣ~Caz*O_O:.z+O@_*uh~vbz: @ZzbĢ>~_hvrUu.o,uA*uzrhhCorvob+aCa,*>>uv.b+>aBz@ hbU|h,@CUC@<~C.>@*rZ|Bo,a@C~|Ao*v.O@Cu *A,brUAz@ba+roB~ܪ*.:bz~:~Cba@hB~.obCoZ/ZAhZ>@zCU~*vAB@oU+,:Bb/*@AAAZzA~*CO/vb~b/U+Za >zb,ߢ:Cob.ZCUUvZuܣ~rr*rzhCAubOhC+Uaĩêh:*CuAAubb|/ ra: r.ZOAu,ro:ܢ|b>O>C>֢Z֣ߢ|zAbOzOCur|ru._zOzh~hA~/aaa.br >/u/_BOvOC<>Oru*vUZB.|u@o~O<,u<>/v+a֩ +>Z~<,>h.oC,>Z~O>a>>+Ab.Av~o+:@zBvb@|oC_ZO,C_@A|_/::. Bo<+oh+b.aavOb|a|u.vu@AA:brZ~ĪB @a:v> UZO< @ߪarC~~C. _rC uCZU/.OZb>aUoo ߢ+Zr h,zO*ߣOz~O>z|a/|z, ZrZ~o<:r@ .:bB+<* Cuh>~h/b oBz:o*@~>> _a/ *hrrb@hb u:A@zBZh~+||,U/O*> Oh:h~U:֣Ov*hvv*_:@rUZ|ho<.ЪvUBߢ.uBzr .bz+u+ C@U~ bbb/Z,O>uv+>h,/C,buz/~>abb|>bbAOhO>h>AhܩuObb,B~|/_,/+r*C,_Or.uBUrZBo:~aCܣ |/o////@vUrZ:_.~u*+C<:b>ohoAZ./~O: |ho,ou|,vZ,:v |r֢+A~b.|ZAB@ :a*>UA~b|@_Ah.z*.@é|~Aah,.|a_C_+COz < *aUz/_hh~hh~.hO/oz/.O* B~<*|bOoz.@UA<ܩ@ UOBb~..@:bO<.CbOrbb>bvUA @h_~ua+aOU+oau>~vuA:<*@:buZBh>|++O_Uo*.|b:ZBrBO/ЪAz.<>zOУCZa.zzvaߢ+ >v+b:+Zhvubܪv_A OZOzzU,.hzߣh@zܣ+b*:h:ߢ~hB_~UCuub֩h,>@ Z<*o:ZbOB ~CZbb:oߩA@or+|O>/uZbbhbv _C.oOUo+.b>h|UaC>::Bb UBb|rZu.hz:@@rav>..U:Bau+*:buzOCBZab.ua,AzO<<:O/_~UUz~: Z,:r@BZ_hAbbA B*Bh b,.AC>AB.o>,AZ.,*bz@>r: B,,A+oU,r:<.bhb~v婩b||||o>/o|ArbaC+B>~*v CCAUu@:Z/ uv+Ch*B/u**bBUUC<ߢ<+|>_êr*_*/ovbBzbb_Z|A @@bb.zUo.@+.A_Ub@:.boAav_BroCU// oh:|,+*rB<.|@A.bvr~@BB/h|*B/vCУaЩO:Ub@zh@o'), (0xDC2AC223F37157A0D09697457E8AB44F431D051EEFC9CAA3EFA757FED77AF4CE6EB384F4C9280C3FA538F8A143E7BC82EBC8AB6A8EE32B13601E344B1A58C956A1C9D6CA05BF851B11C579B7D1286007EBD5130ECE8A3F8B887094AAF4C0254C6FA1007A10F17C2B429058C86A734137BE2C604445BA8816894B42952BDB2650A02D482F27E6F6FA59E7CC3D327721142F5CEBC760E006B419EAF0C5AFE700666A07283C2B1210D83565EB5DED4BE3122A2D66CEEF5EEFBF2693163DF5314A71E765D32A4EE4E81C4C1392FAF4A9C7CE06DE9B818131770B17681697FCD2E2041B79768778B9C345444982DBCCF5CB7DCC48371795C9F0B5EEC712E6CD50207A308DDF7B323F564C1B553C37AF9B3E229D99CBB49ACB6E5288C098B0A6DD78F32807AB3E15504A8CF1EAFB408CB8055388EF4934856CDF651F8DF271A6A5A53DDD480EA8F0000D4D4E3FC2AFCF2EC5D0BB4527B794436EBC28451F885ED8E54C45BE6244AA5D6288E2FBE546A92F95F1C821B6617EEEA999D9527FAAE184EE7659766A11CB81255EE29ED4985D2812F8B02DBF3C2284CD5614C86A57DDB8A75D0C6FEC33C4832546FB587EDF1A113CB13F87F9B3C4B254D5A814FD0216CE802AF7768BEE3CDF332C077940C905ED3B028CB81856BEF3985A1A168AB08623302DD754E7A3864D745F53CDAB4B728AD0BAD8FB755EB52A6B04DD30D3255483A6E4), (0xB106977B3F44B802F1474CE79046CFD78BAED178ADE8E3C655794F0BD026C70260991EB4407F3619FC277ABC904943DF84AB1B36779944C822D125C5F4AD32CA804A87F7271B970B77B87C856E26350C366F86240B908BC65456916F5971254FF5AF3B46C24CB769140FBEBE1DBE59FC9B198E85260EBFEFBEC0A2D08927B206922D90BFEBEF49E9B81D0FFBD2CCA996FD95D33FE2A028E6F04B8802AAE6E0EC5DB82CF02D9A10ACCFA5CC09FEC31DF1160BD3F3547224F204A9CF9F66473FD13D229E19A0B969638426703DD31FE82C2E97EB9F13EC98EA9439EB83CA71458865FBCBDB2403505DA26F6E2D02E61FE5C1A271CF5CA0BD508AB48567CEE59813E0E7D7D7530C072A478EFCA37D6AE7AD1905C227FF762CC53D7A50707DE88FBCD75B4D1A0F4792B49A4687CDA31AD320CCD84EC82370136ABB119AD8BB97AC5FFF40CC221DCD9DD1730D8DB9EE5E2223A730A3A599C6986647E25FFEADB9F8039A28CE624DB003FF3A7C5416E35A7B5DEE76308BF407C538A865DB3A6D9F24B914891FC58FC0D5F62C), (0x0F), (0x0F), ('6a468623-10c5-4a47-a600-e88611f1f237'), ('2001-01-01 00:00:01.000'), ('2015-02-10 17:05:00'), ('11/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 17: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1), (184), (-7764), (893569276), (0), (0), (0), (100000000000000000000000), (0.3273), (0.9028), (0.7661), ('bA>>aUAbrr@*b~|Zu/>b/hbA~/ZCUO*+au,:uA_oC.hAB A >U><+ o~ܢa.bߢZBCrĩu<+,*b*>_BbzoAhA,C/C/*Bv.@/u.~C~v|r*uAur_b,B_>_Ar@U֪:_uCb|:.:@Ua<*Cob@aZ./rb bz|B,bЩ~ .<~~auo,@hvb h:oUo hhuaCC>z .> /Z.ĢU/v*++oA<,h ,r .,ob:_*oa*ߢ>:'), ('bAub>a.bo_uh,bAb bZuUrrv >aC壢Oz:+b+AvU|+rߣA+UB< >Bao,>|>uZ>Aab~oBZB|U+*bB.ov/h/~ZCv_//ha~Bo*hr~/Or+>A/.:ahA@:Ģb'), ('|rB>A~U|O Br/<@Cbb/_UUZv :/: h/boO,aBO._u_a<: u+uvrUuZZ*b_>b~~uU*~zb~b. hr@v::,>+o>:,u |vo*:@:> |>h.|vvOuvr|@AZvz.Baa~, b_Zz@b>z|:*brO_bC:>u|ou.u~zC* ,|z_bv ê~C:.bv*, r+@b@o: o>.hAߢ֣,:.@avhz/ |z:uo>,u. |aAUo_>rub rOZa.ob@azz~,z|Ahvub+:/ Z,O/<>,Z,:>zBa@|Z>bvv:.z@.z*z+>:b~A_bb*ߣh*u/~ UC:ruO>rh>B o.Z. .zOU*O.|_r~>,vrZo:>h_hbh~:h>/*rzo@bU_v:a|Oܪ+,,ߢor/|ߢ:uo:h*@U@.zA|vZB+.zBģ+o|oru_bhO, +v|U*O +zA>@boubz_ ,bu+B:,>+h,aBZ<>h_z*OhOZvvh,.+z*+C,@~b<<ubou|/.h~bZZAOh|uuAzb@v+*+A@~a|* u*><@,o_~Bbb+aOߣ+rroaB Ъu/~:urv<,Z_o@~>Z*u@<~h /hzOZ~OhUé_BuAo+aZvhAUU/+*B*r,ubo.bbb@rB@u>Ua/ru>h>haoCob h*AaAUC.:orOB+|.ob*ߪozO:h:+OObu,@o~r|,@a:CbvZr,|:@:>Z<:Av*r@+>+Cb,C>/ob>,a+~B| zr*:Co,AOu~a_~_|O/,*b|A>_OC_Zu.ZZrv>bBZ>bߣ:ܣ@b/|CZ+Bvh.*:uz/@hU:o,:AoZ,ZbCZ,O:rh~~/Z+,Zb@z>< _<+B@CbbC ~<,B+:~./+Zr>< Az. *B/oa/_a@_uBAbhh++v/_>ACA ::*rCrUu,+h>bܣ~.A>>ߢUua>>@:ahh֪,U@uUUB*au*O*B>|@B:+oA>A:vb@o>~<| bvA,C_ZrUoOU+Bߩ@v>,z+Ab@abhr.Br,>ߪv*rz U.|__+Uuh/z<_~.ua<, ܣor|U*Ub,++ĩ a _Uv.>,___* vO+bC /*Z<,|Ca>aoBbu, aCOA| hrZ~>>>__+B>/. z/a,O@z+>br:r@UOr|o,uO>v,CaBOZvz|CU*O*hC.ubv.*.+U.ba:>vuO brv>r~zB,Br+C:Zb@> a v |a,CB> C,a+O/aaBu~U*C|B ~+u>ܪzBrr ,O::vo,+U>A,CO.Ub AoUou|a/.rߪ:ArZZOuu::_vuC~AbB.>rCZo:.U* bC_+*+aC Ou.a.֢BUãܪU_zbvZZC/aru>*,za ~Cuv*:rO||h:u@/_v@~uohrabA+uUA@o:.o|.v+Bbh,/b/_z/.A bObC>@r+vТBb_@:BhZ|䣣/vbor/AzU.*~ZU>o|Īhuabu OZ/Cr>v~ C|.+~z_z<é,<:_ABOb+|~u |>*.+~A@B:|b auZA~rhC@uO>,*Z>CChA/~+oC@Z:uz|ߣZ,.uĢ<~U_aBr<:r+ |O o~Ao+@u@Z/*Coh*/A:ABob/AZ+B:@.zb~b:B*hz|zaBU>a+U@*_zh>C**>_A@@BߪA.U/b,|.ZB<>:|OA_hB|*abBOuZ |v>@@ãrZ@:Ob+ u|bC,z:@bZbhA*r_.OA orhz~Obo~rzUroܪv+@Zĩ,.CvA+_:v|b,h.C+_z*o/Z@U@>|.bh:U/~z+A|:vza,rOЩ:Ov.abuUhbrO |~><,U.|z/_<,<@Uhz/UBO+OB,@O+zu@+/~ aoz>_r>oê +BaB:AA~r>_OZbO|*Zvb><ߩhbr z~. h<+A:,B*/voA.*.hOZܪ,@Uu.:a<~>O@z* rZo z*A~ > <ߣrB>:>o_Z_*ruZ>u<,@_C.bOu :_B h~r>~Z/*a/.o@A,>,_+~/b~~Ģ>a<+CB:|U||:AĪvh*_+OУ:ZzB+:h:Oz >r~,O/AZ||z:~CUz_hua|O_Abho~zavv.rvbߩ|ab.,U v,Z<:,rUĪ_.v Oa֢>|~Z~.bv+b.ߣZhz+vb :UuaUC A zO* ~~o>bZ*O+hArb>@ ah_rr rOuC_>b>~֩_C. .b~/*A/Ov|oaa.UbhaUaA**.A>h|/B֣~ba,:U~,rZ|hv,C.v*@U~U/* o:a~__.h*b,+<,+~v@ ~rahߣ,u+ .BvC:z:O@+Cr_.a>A:oBZz*,vAvZ.Aa+z:bvCaaA|a|r|/,uv_ho:< abZ Ab.Тh/@br|bbZUr/~,<~B AAvb:_u+OZ~o.hZA_UrOzUv a~~|+|+.<~+ߣ orO.>.hB+Av huUCZ~:~~/Aa,Уobbb/ |+|:bBvzCBu @zhUZo.hZaBAhC~/.bO.|>rz,vvZ. ChBhO_u_CC.Oz>oB@z|a.b:>az+,/Cbv>brZb_h,>A*vOb o_hZrahb|o.+֩_/~*|~_a ܢzh/C.bZ~b :C:AZh~:a+bУ:.<Ģvo<: .|Ur~OAz rv>B._uUAC~B|b@@rZbo*|_<*vAr@b+/U<>b@b/v,|~r*C<,aТ<>a+b~ a_hur>Ob,Zha|zoZܣ>o+<:Uu/@__hBa*@~Oo+|ãAB/> ܩuZão:BA @/OrU_|+_CubBb,Z*Zhu@:Z>.U.houo.UrzbhBU@bArO:..vAuzo+bz_A+*~aZv CB+*~Zu_vaoOZ> vBor,r|ruC*z ߢ:_b>hv|h*Z|:AvUb_/vCzbu~~v/baa+| héУ.*r*+B Cz:>:Zbb+rb>rv/uoOaA<@*>+.Ch/C@ACaAab:*U Bb|.b>>bvC>ouuТ+a~CouCCh+hz~zzz*bZoh Bߣ/:_vUbzA@_/z*ubur:rh,h +/Z@_CA~Uzb:b_CvUo||a֣O._ :BhvauhZ/ur A>B@+,~*@ZvoAãUo~~+C|.Z/ ܪ,U*Z<>Ah._|_b>baZBaZb,~ |urauz*|Z_ub:.u|.Ģ>o+b@a>~u>oa@@zb/A:>rhĢvA:bo+~bZ>B Ov|,o*~<֢rao+>䢪o<_.Z>u.U.ߢo_.|C*.,|baOzbU:r uA_ rbb,ba+ܩ<:uzr:zvu_OCabbU/bZzZC~ .>C.hO.bh,|ubãU_@zOZa@huz+oCB~ZzAr<_/.Zo~oz/hbhO|~b@<,:CBBvuOߩ>OrZhz>bU*ub|+>rha|o b~zbO*֣oh|OCChZB@b|Ao/vhߪuߢOoBrba,b>rZ~a~_bAz+>aahh//,_@rB*UУZ_ _.|uo@*:<+ACbrU@u _uzvbv~zzObU.>o+_Z,,AAhOvboU_*b.O>v .Ua:~~.Ab:.r :<< @aZ::u|oZ@:OOr+@/*_B| /A>z:<.,>,|vuOu_rߩ_Z/Z:B A<.~Z @/hv *:֢rBb/UZUv+r@bvz|ZCboo|b_|,><ܩbCB+ABAZBbh@hBZ_Z_a,bCbr~oB |b/,@ U@~.oo>~|O|+:ahaBahA*bUbza>b*b+>֩@v:BuO|B@+.z_a|@@U*_:a/._UaOhC~,'), (N'Aa_ah>BBzB.h>obb_C.uB@@hB@ouba<:BbߩB~+У Z<_oh@/ /+*ruU+.|*,,<>@+hU>b_av,h/~+o>*b <*b@~aAOb_ahBb:avZ@a>Bܢ:u~rAb.BhOU~ТrbB'), (null), (' ./aB/>uv~Z~z+@*~ģ.|v|~Z:hbO+*/B_hBbz|:|~B+|ZBubO*Z.>У~uܩ.boZ,bv@ZuA'), (N'r/ bb z+@B~b@:..::/O_rZA .b,h.O.Cu:z:ZAB||+a _ :<_|oo,@/oТ bAb~Uh:~BZu<:@z.@/,a@o+@*o,/+|@|/_+OO<_+B/O.bA|ZBêãUA>O.+Ab__ObЩu,+Z<./oub|>ro_u.OZ,arUo vbCu~Uh*b/*,B~ĩ. :bBOrCAvhAv|Oh~O~,vuh|:A/ <>~~CĢ:_+*b>Zu/aBO_ <~.+Uz@O>BbOO+.ArbB|b b~@vv ~*vv@hhr/b_CrZo+~O>/>_*Z,A|rbzO<@|b֪Cbb>A~.u_ZuOZA|*~ZbaAo_ +bC~O+~:*b_Z*oZ./b >hOCU:Ba.+~ /OUz+ o|Z֣ao zb|b,*zbUbrr+C a<,oCOܣaBaaU_o*B+Oz@Ub/ar,bvo|r~a U|A~_|Z.~hbbbUuza Oh*_/v_/ģOhZ@a<|>rhb+u,+~<+*hb~ hB>ovBurU~obbb,o,|a@_ob.B+BCC,O/ZBrO**+oboh.o.hvO~ACv_: O,OzA_vbb.uo+huCB@h~hoO@ãZ*/u>vu@_z*b+a@UBZh>*o@ubUC,/b~BUu+CazBBOrߩ~/_C_>/a vC_>@O *Zz@a>b+B_hA<|bZB~.bAa>BUBU_..h~Z+ru_AZ~>/bobA<+Zruuuru<_Z>_uvbOb+_._z, h֢@/:|+v~_O_*o_b*AOhrhb+ob~o.~.~UbB.+ubbb:B*vC|ܣUv @+bhC>Uo:|>b:OzA+o*BZ|u~,+ >boZrob_az.h:/,Z@OZUZ>C.>ha~| v|,+uuoa|vh>r/>*Cz:Z//+..@h֣bvuZOzbCb*vvb<*>~rrA|zUb >C:Or @BbU<|Z >zrArO~b_,~v~b~h_o/.~ h>uB*~+bh*,|B,~O/uA:@a/abru>|a<*u+<*bz zbA:+~.a:.Cb.u>r :._hAr_*,u:+aZbC>b~A+Ab<:||@OO_/bzrܪ:OA. *uZoZarh|r|ߢ@zbv,a.oO>B ,Oh>>Ub:ur@/+ova<+@:bAZu. , ܢb>C,~u>huA__aCBb>+@,|vbZCOh Uu*_r,hZ:+Ov/CObZZvB*/ vB*A<< COaaC_Zo@h+_/u,h+obbv_'), (0xA82F7923662A496625B3CD58E906DD15019C700D5F48E2AD60858A9437AC118D0E99EFA02BAC0C52A44EB1940E8BEAAC3617AB238573055F4CCBC2E19FB52F78A13F494F173CE9548F1E6911974E9FD59ADE5D1F01EE089B948F545FE92BB2EF1E38F3CE419B95FA2D56936609F4C8FE2CED46C0571077B237AEBB87E8896B646B7AF35E5BD193FF4963F1AA5BA191A0C75533FBE5F2970EC1409693E00D11A4EB2EFA8F0069A35A5A4677F41ECC56961D1BBF92566F7F79E3E59D1A3A001F3B514DBF2DA6019F5DB2D8A19E7AA3EFF4EA0075C44E7F4D7CAE80AC1BCC882059273CA2D00D29EF1B7C61E07DCDE1FF3FF5A8303A8A5AEDD200437E2655839129B848763E001FE7C0105A48EC9ECFAECD816C262358E6CECC4ED0D0CAABC9C5F9D0B7C5846AC03ED5C17029301200333094B0A4E85C6ED0D179), (0x304F1D1447944F1CE70A2A62C02D5162E8BC9EBA4D9CA036FA24DC9C61E6F40BC0D00E85A45BE19CC2E44C26694EE3BB0A0CE814DBEFA194AFE71922B7B2BA01151FA2F01FCBBE8DDA01F8694F7ACCAC41219155FDDF2FD12F79D6BC41BFE50F2A4B104AACF39B3F4E5B39D9F63845351A6DE09520650336EFD0C1A6F4014B1B1CE83F036A81004E865207A2A555DAF634A1A1D4DE4FEEC448D95BDB32F54A4C0F1EBD0DF941CB996C920FCE5E609199F6CA71535F773CCCFA7ABB9026251B9008BA928698CCFDF2D608674B402066E748C1E56783F7ED98E1F0137F853A7347777EC6A4CE0A0029CD7E7C560FF18CD913D448643FB30D10CCFAA5A8B87D6D9C9520D4C15AC2193DC0BC9A047B9688F063396BB0F10E07C371B5D7D36558704F11DFC1EF1CCB7F50BB0AA3831908953572B4457F12BCAA8618104FA4EA45D8684B4AF39BD498D397BA1AF4E76A84AA6920A260B013F13D54353BD70B7BDA6676313B37CE15FA60D9E0ADC5F7C7C31B9466E68448E428555A0C9E6599C1C71CDFB47EB52F4CDB53254187CF652C468C722042A595551D9109E6DDC17694C7181890E542490DEB488A925E075D58EF2EC611F3797E22878997EDAB496F19DD91796EB6D44603436434FA1A02F61534B0F6AEFB64A14E99F6095BAA5B61A2D971B5CD8DEEA21AE7C2CE8E448407849282B9FB52C01E78F02BD5C0CBEA59E7039221), (0x2987450EDBC73896120915EE84C828A2664F18523DDD6219E14FFC69E68BB2625E3869FA73EC76F9E5E1DD21BFD1462230449C4208560F4C252C2C8CCACFAF8757B38F4C5F2E2F7AD91F6D5BFF40591009DA39A1EE705908291CD447BFEA2E163255CA0C41F9C201152269E8E9B34CE4D21C82EF950D99E75987234259E7BAEEF15629A9764DCE1018378CCC07701F75CFEF75A2683F8024BCE2B3BAD57FA72D677AF79289A26E854E72D75D81CCE0E868AD736A721886B1D505ED939A143A98905E648C788CEC2C81EF54F56723A2F002CA52280C3DBA4FF446BC84B5DAEB3A373FCD23675370DBC146E883C3904AB262FD91CFC2128B53A3159832D06777A6041ABE28557F88AE5A7666C654378B63FB0922B8491B7825B37A7F51BB3D0B59CF417EA9D2215DE274E2754BABC5FE6B8A3436C645BE5DE9A29874DBFF36F31C6B0CF712B9E190D9AC3F4366A52C79EE7B14C78606451410E4950739AD81E23DEF59E09ECEECB1A8A35D19067AF643751E8660EB6F6C1525F8E62E24DA562C2B5C05774C4CDA208F621FE2A92B0E95ED51911B2621F7CE8343BAA6E7BE8DCE4C30EEA9757FF7294366D18950896CF9E95140D2483B060A6536F408913438D1D45096783D64206E5A68D7BF506D7EF9D7C0BD957DBB85112AE4443E8AEE980F2DFFB5FFF3F3BC8431D177DF6446B9F7B8FA31D077A35319CB844E5920E1E46CD0C89150B87F06E3043864AB43A5ACE32A4C858FBCC7988AAC9B336EA462644FED0B0F9CB4693F38F44DCB3E3EA7D525D76B2FD45C54AF082F06A41C4B983FA2D415BE3796102EC00C4C9B6FFB594C04C60E9639328FF3995C066CADC523ED5C0E296A29E99E8FC73C6EC70FB8400CD6BA9F563C01056F442124DB8FA480FBE95F3F60D2EE221B287ECFFDC4C7E4E01BF995F225CCB05A08B92607C4C2FF22BB73DEAF79DF3AE798842EBD3208AB7C3D44BF960E8DD51CAEE45719C81A57657FAC4151E934663BBFAE5AA19EF227000EA9CA7F0269132D9DC1019488201F7E2CC83E85C65A9209DD84D66033337EBCBD570B1F50D763159814B32833D1B39E8EDC74D5B3A139B316C1A17E92B3FA694244D73015002E556528EDB2A669D50BD038D157BEA8081B1D57088E35E483E51A49E5EEFA83898EAD1F708BB4870DACEB95AD5AE1A2AB9A3CBB12BDF79F1F80A507985D84E7114DAE42A99F377C67964A5BA39F372903779E4BB13E70CB960EFFF0E6ACEEB028048460AB9FF80B62BF547C739CFB7F497C0420BE3835D2DCE2AB9B9F4796BBA79A329F1BD67D647F92E8F1EAF458FA127FA66AA7CEF1EFCEB284C9F35D6C1B2999D4D9695C6473FEA0A12C5043E7E88AB1881FA02C13D9A843D06951B3702125CCC8511F7E91B61B336B062CC59F8BCA9C3E42D54D7AFD85FB30268BFB214A308006837B95C80B1FD1046DC10CACE3A4459EB5752E4CD851CBCC244E6B2A1F1120D6ACBF1B1034D3322203490D3B794E4D81465D6CD502332D32AFC9A4BDB4A7E45BA035FF23893569E1420B488F438F53D500E9E4C2A54AD47892E9606B2F756E5C64B29B434F29F810F38A92F6EA9DEE2076CEBCCAC221B556608691A0D5FEB2CD9CEC2A91F40F86D7F0D3CF1BB7DE8DF4FA3FF460B8A39943FD45E2C897583BF5D8C559FE725C2C6748E5DAEE529A9E82F99DA595095114F953E793AF2CBD3F9798DA43F2848F819E138D17D2C9AAF063A65FCFFAB3A6EB86B060AB8BC87D3A8BA642567857ACFE691B07827C39422FA8F63008CCEE44E4F2EEBC4123E4F6D596538C2C8753780CFA6165DEAC236F4D6E30029498746D9C615E64899A6ADA852532EC28AC15A8547E240D6B886637CE7F6FD3F2E1613C21E6F0CB28EEEF719086E0B87A3746A05988AE1673670113FA2696092B97E8A3C3F5CA42BC4A7F658EB37DE5A8ADBD9639CF796A334BC8B9E4DCD00258E546F99E3CF5856C03E30E084887C0EA1C6B4D69FFD05C1D7D70782C115EE0797D0DA86C83466CB8372936EB6A62EBC308CFC87183995815EADB20CC7C585BA503958B3BDF5366D5FE9431D69A70B21B85B52442966EF6E4B49282A8269F3CDFCE90E8D5D7B0E4B468F272EE67827B79290547C734190F959FA6864CD0BEAF5F5852070988DC44D4D16FD9A3FB077C3217097F205875AAB4815336302998E3AA421396157A72F14CC172F6C5406B9998295335C73E8E06E3A7528834A613AB388B2E60E87067B7A417325FE67EE57415BA9D06D5631C6BB40CB36D27EABCA5ADC7BD39110BB027C29C90B00B2E2064C2DE727A080DD5D56FC2ACDBBDFA8FBA5A8DB21EC1AB620A09764439D26C5F85EC4EAA4977419CA0F1E7CA4F5ED469C80CD5557E7C01A2167B687192C99B03036226EF6F4F454318F0122CDAE113AB340C7B2CFD16E109EAAB94CE0ED009D656E4C6EC37E5FA78C6913C8D69D4C83567BC3C864D6E05EC811C04C3BB773448E73BD6F61A27734F1102656BDA53A016E35E6652938389E7DEDA6B1AE037BD4F5DF3A62DFDD21A4048ED744A099A112D7CEEE05C10E2B463B1EF1740BB586EDA45160EE6AD721810442609A50F3FDE44C83E9EF156613F7A3F437B0EBADA84EF7F9A05F28B2B7F0AD6CF18EAD90E547211D3777DBA7D83E3D694A76AF6095669A11926743AEBB89DBE931B874955A030EE09FDE76306350116211CF7831513CC79AE48C0E7DF38251BD9BF2661FC9A81F3777BED0C6F069AE3245E18CFC01AA8804E0D9A0DE0480FD1D7CB89470EA01A869A040C9926C00AA8ADDCC2811F565BBF16A613EE0074132E6B1C34A37D53D584449134BB0D0F5A8E03F15F03858EB18170C930688D2B8626F1DE2E098B662B59073E3C8D229FB2074C84EB0E140FA8DD6AB332B3226DF7180B0ECA2FE150029CC606FC4751235FD117291B08407711E135509ED83377369A46248213D48226FC814E480E13618B4754619CF951EFD893FCE8FA90B12A684ECF61002DA14BFC94031F86F12E03CDD3C45784D2DB3D48574BEE17EC88954A57E6FA3EB1615EA6086508F63168E765F81B26CB59A596729119A8E2B233100B6DD42E0B34C41B7266B17B6CD34716EF64891ED062CAF1B14F87AD98B87CF3D555FC885D39DB3034FFB465A82A299F4A02B97E29153FA9A3E37DBBAC1782BAEABDA617D6BEB9B58858EAD1AD65488726E76296FEFECAC01553E57ABC20831D7CF97AEA8411C98B4803F5D02A6EFB3D9AF595C5B4ECBBECF3E60282D93FF967D4CC54B4EA5E03141ED74DFA08F995A758A7DFC68ABE68903D8EF79D0F46B1090A8EFC5D1947533CF280A7DC9EC1E4F9515A2A315F33DD1564C4765B676505D72544F07AFD378E1154A3D409178CF17CAAFD4CB41C80A9D7B1E6F954D0F7D48C7BCFB65AD169FC19CC18DDBC5FD3FED7D2F9B16A1850BBA59A18C9163D39405CCE478E47D597AB400032E803A2ED78DDE72181D7466A732B1410BFB8A0E6DC92D881ED1744B6023B4E706AE667B703ACA0EB2E1BB7691664D36333C4D7F39F1A56562A21006099301F4688D5008DC35C0D1317B5B7C0DA6E6B8844E1833D635BD04F8F108CE2AB4051FDFC70E04064459FD6B6C4DBEA63957BBCB6781CB7ADE1E32D04B0FEB2CF2B67D763B9C4698E2A24FE41AD879E7FE6ECF994D02C332499501A8DB33CB347EC068B5D0486AAD1122D8B531D76FF5A44AE1DC3041EFFFF33B3C968A9DCDBED70B755A6FB417B60422882A2A0DF072350C048041EEF42CE078B2951BC412735529DE36521585E0332BD81DB9B5C5F53ACA617E993D6CF8074869F6F172AA400014C5002FCA102F86145D1616E6632AA2CD6A5162A3DA27CCE62F19AB9EEEB081880DA4E0C5D570AA31F874E046D120D53F44241848DD6C3AAD33399B0683F7259C948EE8BE39ECF7E9A720BB654786150E346C4ACAA848BA917A43829BD5A3AE015F43B2423816F5573C2EA1ACB0C565BD149CC217AC6AF45BD44743F66A5C13F372BA0603C3C2C61D66E38E79970DE0A4EDD57738D19654E44F667DF0D30EFCD00AAE29F6CF51E941C6B4B0C8DC8AB4C6569F0894D4EB11EC6511B46D54D54A67E6BE6EE8D3E9E58BEC35622CD58C07C4A1A79A43F667FB2F8C3D91AD9D7BFCF17A58D22E1BDBF26CA98CA8AF78F516D919FFCBBD3AF6618EB34F5CA65847EE603860B28CB9E9A8D5B52D9A79BF4BA69726C893ADB03FB673E7436ACC7F5C14619E487708428A1F2056E6081D5BF7DF7798C57F8FB440B008BA3E95667EEC66691938DB76D4AE549CA96346CA37A917FF73F323B9DC94BD5D886E5E03E4B8B16A8FAEF4231C5892FA60D2D640F9E5D10126A5E28BB8BC8C748B8DEE664050A7F0B1EC4A88A4E4D31B502948F9BE6C53A29D5CDD3EC635B1D3128FA79E7A3CBA103AE59F1D9B485C31D2C72B8F6392C61F3A3BD8F373692A8C2A7766254D34A1237F28CED8DD36074500AB6C0F0A226F8FB998643E53C6ACC1BB12F323D226E4AE25F8104AD3FD31F42483F2D80D1B71F807E66BB4D062CFB88BFD1DCA42D362D9B6BDE9021224BBCC566009CFD3D4B4AF90FB2BFBBB3FCDB32857BED6EF77B1411119114F326FE5E32AAF5E60590FE4B7387E2957B7771E86F025D9BA65E4ECEEBEB8AEBAB3756D211538C11BD16D5A2873079E714E5999A9FA9A5F0C962B7D45B27FB1905129F3C300F8427EA602A592DBA1476E467B90552F04C02916609AE9CB8B5951ABC9D75903CB6046171AF3E7E4CC30E4D41EFF46EF5C614C69DAACA05D58B32AB953E711D9EE5A7B0B4A4E1400D8345A2FB605AC8C02625F588AFF392ECFE8CE57D93E90E52F1AF5C4843BA51E5D4B81A65270A743169EA6E197B94EFF115C4B517FBC37A9937500AB1FD807C6CD30FB4F6D92CC4F418B413A87BF4D65CBF6A327F0439EA113E802ED7FFC233E96E01456CDFF918E900C1FF46AFD21E427AADF2924EFD689A25A3B759FEEDF456812A3A7AAF697DC552497E433AA3616C62EC5C51CFA09B7099AB463B42BFEB12CCA9C48597A39210302D40047E245F81414AF61190A286E18EC9E004224183935D6C7791DFDCD4BE594C21A25F96F1744BC5FAF7C8D9822922E2F6CEC38EEDEFAAACA712ADCEA2647538B84481E481F8D86CB85D478BCB84E94D6EFCE606FBCB5E32F7B3EFDFC67D22958190213DA83E61FDF656D590A71EE122285F5FA67E6F3CECE54EECCE09F9A53B3AB1093B63ACA5309AE810A4F6CE8AD8D2CCB6671D7C1612533458595192F4FDB19A55F615A6BF7CBA2F0B955F98F617C414FC3C423E1DBE9AF7E72E534BDF07F413F25C7994C32C0D39ACEE7081B3BA3E40953C96B7BA737C965B1EBE91286E4F03A04CA5999E2F50CF2F08912F4E19442DEF12B6A2713D587FE0E239A56E7C113E9E6CE06715A5A265EBC688B1E14C4741DA90A115B7AD9263F325B9BBF6AB61B2F75391E238DC18496F50B6AAB5A69E939AF7CADDDAFB86F0D97D73EFEBE76F4065D5BA8DBB6509FD7858A566F7E8AE4C872620FFE084D8FCCCA008BA69295E88E17645DFEC10D735EECD6582551FF9F1CF2767C5C66F5FE0FDBEC01B5C4E944FF91D8580A2CE60764FEB11131F55A6ADA617EB42C198C1711664E22E4FBBD89F391588389A784E00C6F176DB5E4CC1A71713744562528D605B136A3EEC3127931371D909CD6E122EC8EA7BD022E613CAA23B173B47923CE78827DC870E101495C9E2C8ED72B8D9A800467D78D6BD3D74009F9BB01AEB4C8034F281A5918B1FB8D5E506401E2558E9616E3B0014C410CAE968876E74647BDE9647B8803734177527C5A2F1B7FD56DA47B14EABB04C6B70E1B6BB2904B043716A28AAD76DD7B22D56C6D84F221E12EC11AC27C315CF2D4ADB489E8178ED70768130878E537F6C6FFF2154EA731C4EC3A3CF185789805C9AFA5FFB253931B5695562CDF19784989240B7C3F47A43D6BFFADBDDA9D518ED01D4EC94F3834736CE6BEB94114E5C2B1F368517D1BC6820B6883C2A5E530C933D74CB1CABEFA50EF881F5888EAFC5709DAFBD724F011C446CCCDE6A471CD77A5F58569C8240803090771E50C7E09106C3CB8DAE9699433C5886B0DE113AC6DCA97A28365829EE5D2F8DE1D7E2CC7D8C3BD7A77C8E28E4C5141A44FB8FA11E56B142A64DB75AAD99DD307F08B76B598B0924A33A93494D819662213DE4F2CD8E6E8B26A02630D4E0290D9F5EA9DB0DA9C1B8F16BFDE4C267F424B754386FB5EA62F19A2C45B965D94FC31085AAEFD7BA54787C2B0062908AC9BEAB017880A7B958B4FBB841E1630752181B3AD33CBC054DFCFFBFF389EA00610F63860D6460CF1B572DF6F31F79731575D9E84655B68C01A6B37C80E7C6CFCAFA57317EDCFAEEB74C1F7C0FC6112D838CAA7EB001BA0B58D78567B0E44F33915E2CF8C847F4387AEA30F9363A7C3B9486F8F33D481EC8404BD8A757933DD3FDEBEBB19A19653C977203C5D1C0D51E5A4AD22AEB5BF6483F63B87C6E4DE0E7AD5CFC4A4FCAA07B21BC5BCB4459F67F76BA4C0DC013E8A2F5A2723660E8CD4A911B1875C48ACE8FA957092EFF2B04E56C3906B301D3279A735A55AD58691B38EE1139294181BAECEBBC646809BAA2C99D8CCA26E11A49BEF47D016A3421363F3CD03FEEF1DAA4EA7F1AC8446EBE90B9B78B0FCC9FF456D4C87B35C3804FB7CA85242C387AB4D7C3E8DFA7C751044F35ED47B3A8116AA0477A6B2576A5E06A2F62FDBE4A92573F03B44CE3C04C8E82C32B00D6399C0EB81B84E4BE0F8E611D08747864534605A29607AFF4C586DFFBEBE8624BA50A30925345A3C5AD983074522EDB4BD4292E7D255D4031EC1AF294A4E9D3262C1578FD44E5110EA240F5FDD73BA197AB9426C1B9E52548CAFFA539520F20C4C509483DB5DD07EE1820DAE567425AB1785BE810C2126D47F030334540D7BB931F3038CDF264E1CD8D37A8990A3FE087A4F3C0F7261001B29B014C85AAC2AE416446C5370A8CBE14791B838A6AD43CB050ABA04C16C46D0F2E8531F1175C23CB896634C479A97D1734AC7D0A8C7748C7C59C34FE21622B9FD9B608845ACDFC1DF8B801039F7736A72E891769476282B73D6A2C7B2724A9263B94EAC3A0F9BC67B06012D47544274D658DCF984BC15877345046F0A180F5D30EDAC80A8D730635CCAFB9E74FAD41F842DF169A5511DB7A3B738F50B2CCC6306A3FC69A7C1CBFF2869ACB9B087127860E4EAEC16A5B7EFCFF4ECF19E4B68200E9897C10E7A77B251F2313BA454071CA4B0841631D04C50FC1C99B2E4DA50ED017CBB17FF4179F67D288A24647C3B6BFDC04CEDB751EE2E5C36D4E1D0B4CD7791543A27A8EF2D53369D99194627FC7FD12DC5249D7325AF9E8CCBB87C9815B85B1293004213C30E92F9A729B8D4D8243A5510B2FFA8EA1E3E8A992C1364E6AE87D0BE3384FC3DBD6AB681A3CC0BF6B9A4978E177752C8B23874D1B77A96FB2E030891E816A49F4E275358491746422293DF778BE6CF3725180C0B101A7642C3CB5390C36A0E92FFF84FE0240A7F9AF222AF139B1F6F4733D17CC01AA98F23A110948DB3A58EC8854C8783A6DF032A987118FD7B52A7A45C1C5CF1FD3E8856791C4F0375F1D74CA3E69E5E97EBA054CE4237A99091B84E78E031A7588CCB46C4211A8A900FB49699CC4984C4490C606BF833AB06EEC5D763F09A85C02FF4171B479A66D125C4BE9D910FC448237A2FE3C14B5049204FD56B33169F752ED679D822698CBE959F4633750D65DEF19F30766AA20ED493CDFB07B50BAE0F25496ECA85FC25C9FD714E32052CD412DA0679A3E6190A8CD79534547E84F999E1370E2B9E9B58F5697688E953CCDF76F9D82DBE820A290C3ED1F2F0C7C15B7887B440CE1EA8844EBD743A6F9021390AC5CD6A96673B07E71DF1ECBCA8583DA82B1061AF8C01584153EF011DCFB97C1DA8F82AFA66B5014CAC59B02CBBC796553682447FCF997EB46519427839EA276485DF13A02D3341760F14F322513B958C48BBE74D64FC5E0F7976955D629912B2324B96ECA3F627F340DE70AAA64C633983B63F7E02D9FF89810436B6ADE403760230F00594A8D85283E3FC968BA3692D035BD9BC5994AF584C0D6BAFBF61455CDAFAA8655C5D94DADDECFA2EED690DDD9B09B3421A471C6D8197B9974D3893229E9FCB80FB03D0A5C6FEDE7CAA806AE2FF8E04B5BDF34283EE3AE3B4940D8D9549C7805D9D8CD297390D8B1B68AFC3012CD697BF33ED649B5D37A2C0101C01C9614922D2F01D4572AB6D7CB078271B3E77D287CD65DE616C62E4F065EA12771CFBC1AA2F7CF0010F812503C670B423361C64584D84345392D7C6701B2CEF8898E65FB4B67CFBB177D1784C40CA9AFBAEC1CA4985CA3998B77E1757B68FE5E2919C7AE010FF7CC920A2D06C1BF802D83CDAC159629602DEACC70D3865A40AF7FB95AAA44FBADABF450128D2E9DD7CCF6B3F1ADBBE9C700B99AC3359F234537CA7D870764D5E8881F01204617D2FE4CF4A3DDD26892F495F15AF1AA37780BD10ADAC3B116D06721CB698DBAC981E8E79C7640FB4673CF3789F1160AE43E50A7F54F3C3D0F4C36243CBB07FF0439CC6F72090EC1380F8A960B8B2824B95D3C8D19E6C47945ABD84F401BBF8A6BCF334F25A698DA2F8E6FE5C4A5318324116ADF7F7AE51E75522AC731BE801C50002B3B58D8FF12C5615D8A77DEB5A079542A2EB0DF0BF1E915DAD27CD1A8710E5395C479F62B4C12571A1D1D5BA6969D894DDD93526B70F53A5143FD2C96F4B9EB7C2449F1268228DE1C58C5EED38E6E4435F283CBDDBBE724CE3FA4E84EE5C1266431DF824DAB63CAB4B43512AA0666C3D4B9F7A470ED0EC03C2422E7DE409037979F89A2AEEBF7898FB8162886D57AC8D8E11395ED1DB576231E4628897CEC7424FE7A0B7DC414E9C26E15B8D7E53A67AA5A0EFD2CFA497AEA137E90A5CEFF12CBA104875A6F4A14CC2AD37F08FC9F3EE4DF7E2F6EEF482AB4002069458444F36E02EC35E1B20C3A0FFA300127CA71ED7440ABC54FD0A4DC58D9D35A4EE1CE47E6DF100510695D32D2441F74BE4602EA8E32F505D97EA49D5D10DD07DFB2EC2E2BE91B48B96CDD0AE378F30BB0301E12D7E9CB1BEBC86E673B72A8008C56532057F148D52ABA302255EA22608B98EC2DF2CB2FF6E6D042637AB40D47C3DD7E8D25D3B3BFE748E71DB8A9C601A60DDCA2857A0DC1265D3987AFE55A76ADE85E786B953BB8E52D45A9E3123D3D0A40BC6CD76BC149CFBD66C7992B0F02ED7070CF4A4D9510D224BC583564DD1320FC7D6F28EE9F412715A8AD2E731EB91E42BB73A26DF2BCAAAC9AB2AE69146BE052A79DAEA0DAFFD12EA835A5E7E15E06023AF2A86A71B209C1C47C53EC93BD003DCDDCCC810B7D68BCA174C4BC16C2CA3CACAC2F21C276E1F493ECDC5EACE49BEA34671A059284F6BC8AECC8FDEE4CAA01B11740E68EDF7A57FAD7ED1EA10910BDD9DA87AFA8C4AA27B57297D6AEE3064642DAAC94A4B45C55ECC30BBA96D81B80DB0A2414C4FB58ED6D18311B47A4A917D1A6DCC65D7B18257E32C2E5B9EF90DC5717FAA3BFF2814782BF278C82400E481AF3E8F0FC552260F2FF96923873347D8754C42FA90557DF2494449E538CA23D237ACBC506A0E002F49AB1C05CEF0F0E8BAA042D7CDE9E149C09CB6711840C655C586EBDA76E76E674C23B0F54978335853513A98775C145DCB728FDD578F06F8D4B63038051671C331EB8B9A38EBF048695E2DC7162DEE69629E1F0457910FBD1CB8208337FB534CDF67669BC07A14EF72477409614FE2A6D7C6C566F76D6BA0DBDE8D80BB6D106E0AD0E7AEC752A8F8893F92101D064BCCD579BB6125EC45720BB5BFF1FC84240527060E806833EF852DDCEDC7DB4B83D582B0BB41B1AF481E9B65A30192A6FBF51B8CF916F7CB64919A3643490E8DA6B021DA7F3BD8E25387CDFFF4F280DDE276D0E8BC4E527CDDB75C19B78B5BFF001DCEF2DFC837C02C3939615907C66210BC43CC7815C1586DB50CB7DFBF2AD82BCEEFE7239DFE2A4F10CC8304E113C5F0FA08FB379F86EA4C76852ABB8FF06D0E61458A27EF3E82CE298D57594E437C9136C6E5B63F909C47F5AABD08D36EBF206F84A3AB99AE01BB863D0E022F90FE23188984C91AA6CEC0B93222447179EACADE36F9C9AFC0F788B52A3FF2828A2864AC99E049D9F605B8B5D2F2677BCD3A0C424333E8A724735781FC03E066CC4E2F09CD97E789A0E0D8313113DCDE901CF7E033B03F564FCD781698B7EDF21541E994C35DAE35527291625BB76610A678F1EF1C00331C0EC8CA001FC0F0F902E61BEF2A481B326EC28DB11ECD0A985767702FC5FEE6151EDD860A93AE158181A86F75AB76F66E6DBF70497281FD31CE31A8B850C123040FF6D05CB210AEB0AD0C3F666D84ECD06101C2067E9C929CD0443C61F56D20B0756B75A4A6A9AC5D00CFAC765296D43944C8475F0F2C856364437C6DD44CCB3FDB7EE0F21F4839C76564F5BEF01C4A497FF32D2D25D1A158D60230632D3E78C3F46C9AD3A5D229FC9E7FF9AA26C673480932EDE11F9E1A09DD881C0D07D6AA26FC21BA83716693ADC9209EB5E807321F9EE869FA5097B4664291061DB62CE4C7C5C2BDF51BEFD6929F4017FF0F6421C6560C7E1F7CBFD6547D5440E06085E7AC3BD6E015593CF3AF11C75B008FB566EE7F3FC7A9BED55B15FC5977C7AEE63209587BB328740C7D1908CEFDA554C5D4C7ED527120CE4DED667BCA18FFC53C003B9551A814023E6A62C2AE90EFD7A5C13684BFDA4C75014B1A8E4CBCB9F38D53DCCEC20FF31DC0B5AEF81E6E1FBD0D9ED608E26B0561B3C694069D95B581B06F355AC42115A5CE18C3FA2B5466932B6D70BDD6B111124E6B1B0B7BFC803AF02D47AF28C4E8EC89303AC9A71B365F6FF0EB301507AB0F5E231C59060A29D19898FA0E1CB77A66749434A676476B3334BB9B8B114015F8723850F5A88FD67F0669311E112842A88674CB70C2F48906C7E9245A7EAEC04873019BD46674BDE4CDC5A01D065D120C78F2F49C84A5357DBF4A3DCF6B7C005798E89B0F9C6E4201B6D6A30D547BF06AC717E17BAA23C3CDCC1E251C36FE7951C548742DB202700AA0F2D5AE0238194349C2F8439A84BD7524DD437E4925CAC85D51481C07D2B8B4A7E6CAB75E15CB9404D1C273F625C7309B0EF8E4CEF1B18B281D40B0E00D4B770A43ABA3B9F6170F01AF79775356C2278A0780F8E9D3E5B6354F9F40C51AA3F7965B69B28A138694E7E9D32F784A27D14B1926E88C429D365DE57E6A66D639F6FB81D107ED0FAD7670EC10FFF0C63DFB17BDF5ABF3CB6B53CE236), (0x52C2E11AFEC23F6792FE43B7BA0779031AD4587B78342A8D08E0330167D39C9AB08D154CDFF4014A24771F7D9CA304343DB2220EDDCED11D9753121E8E3EFFBE62A8062DF12D2325D30E570015ADF165DBFFC4B4B18DBDE2BCF7B48CE2E2BBE578601BF39CD7420F8EFC3BCE77D008EA61AC428F7A4A0CD4EB2470FA799743F0527188B492FEC904BCB425B552EE6BECEFCA2A359F2C6B2D54460877664896F7B84A7C0547535863E33ED3C5245682FCB9840AAE6D0E5025055B604BF6519D731E2EFD077265A49B72C6526159A608FDC40BBDE23EE78AA9FA56FFECF30C6D91A05FA6F6597B8A54DF6E3CA6BBEECC5F526286EA93BB3537A3530C1B65B7A76559C0C1F9FF12A349816902CFAAE4EE0B8AA09A908582FDE42A6F52056E6FEF28C7D74DFB2DD26040BF3D692AB9658CBF650191C51D16DFD6C2DDCE90BF9DDB127ADA08D397F2DEB73F59D14819D32BC4E293A06CDE290AB0F776385003CF81216257B0DE5DB9287223D985C34597BCEFB10AAD2BFD6E3350CF58DB20BA8DB36FD8B0E6C2234C67286B2D4904A4476A60B9489EF9225524F3235F0E05DD07B8952615EA95B0FACC65A385C0CF252FAB88ED7B6671EFB94D838CF39FC33D614B6375B3DE8F5CD5AFBF7C39569C9454CDF3B4861862A146A66CC76708BD5B0827413A5D5972511C2C17CBA6F4B562B1EE3725AB0FB749E8C12E0C71C7F4CCF2647412156237FA5BA297590097FA52F1091679D198AFF86FF7519B2B65E054374AD84280A34D4EB63CCA09785D4850C7DC1B67B17BFB5AB47BA21D109CCFF5C24222B6BEB8D24EBCC8C294CEA68011AF01D34F4978A3BB4F7E8D0400303D1A6DD446353B92910F09CDABE9B9668B0EFA916E0FC880AC499F6667402ACD4D8B8AA827FA5F4BD51C6FC4457CCDBA02E8F27E0A6FC22D51EC27FD95D52B51E43C801F5E103E91AFAEBB51A0043B307CE5637E4DACC3DEC95D573AD262B500F11DE008FCAD5BF2A961CF5BB4708D4DB1F780B071AC043878A15601B904BF4CF8BA5F82233233CF8971D4ECDC682A58D00989DAE1058E4419A88F5A565A38A5A18262F9110A297EC3B12600D8175B1077FD31AF7AE46BF32C1B697BA2D9782F382E4A59053147C6E00A162FDF8D6C014C7EE25929892BBD176FCCF6A0ADDBEA39F6C8A9CD010B46B66BCE70CD3B139EAE682F24F61F06AE038D4295645025322E2CF6E8C5C2344A739CA2BEBABAEFDB5B2D47387EB7F31AEF19A63FBF75E165459B41A1452AD8EB34E5B0597C48F4489E67393609ECB47639DCF8AC1CF48AFDBA3C781E794E9630555B049807999DA7245DA1583BAB5C58E6CB6768322CCF3F5AB39F40D0D5CF50D009E1ADE81B6F9F3F5187BE5232C10FDF1F37ADE62DFE288CC43E53FA5CD64F8E518732C9AF70CA5BC829E0A410ED27F18F60B09D2169A30AB82123DD), ('00000000-0000-0000-0000-000000000000'), ('9999-12-31 23:59:59.997'), (null), (null))"; + break; + + case 18: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((null), (253), (2264), (9223372036854775807), (0), (1), (0), (0.5181), (0.0157), (0.2591), (0.4606), ('a*|*Z.B@CACBv vUauZ>~B@.C +|b|_U<>,C:b uĢ >hZ~>hO* v/ܣBêOb_ov_hbzoboBa|,/.r|_:ArU.Щbu_Z/'), ('hB@br~BB,A/ o>U|aĩ,>|..rrC*.obza'), ('.<_/o_Z/C,zuu+O|a@>b<,a:oB*b*Z C.+O.><.:.*u ::|:/ܪUvbb@,+u䩣.~:u+C:@_Ob.B:ZouBru,ZC|ܪObOz +b//.|zz>Z|b>.CaU_ruarba_:ZOhA ,Ģ*|rz,.u|vBzr/aZ+|b>uUa_:>booCOOv~,b,:> AZ:/r r/u@rZ,bߣv*Z*,v_BOO|:,bA:~r.u,C+vr vUvb:~voabvCbh,B ,|*obz__zA,hhOUz>vzh>vvu_UBrA*,>.Тv*z>bBb >or<*AZ:>buC/>@aOoroBuUAZ~.BBZZC~v/AZ:_A..+ZBAZ>Z,hBbUa/+*Z+zvBZ*:OBC* >@o,@:uOa~>o|.>/AvâUb r, < ,bA~oa:|b>UZ+~/,o+*uuoAb|uBbZUA~,/_v*hUb>vh.vZ /A_C@/@O.+OZbZoBC*+OACuZh*zh/@av| . +Uo@ubbUZ*u.z*|Czzau@v<+<:|>C~aO+aU Arr@:+B.. .@v~bvZoZ/~*_azh @vu_ZuOz,ãv.uh+_,*v,/:b|,Bzr ZC~b>babZzCb+ĪuO,*_|~v+h||.uaoZ |>+vo.~_vO*zBAhA<@C:/U<:~bbza+uv_OZ+b,b>_AvhobOCߪZvz,A:* ,@.O.@a:/u>b/_<ܣBoC>,ra>rUh_v< > @>:zAb @h,Uru,bb.oz @@vza*/Bu_< ߪ>BB<z_a~ Bb>bZ@o~:b/C rUbߢBZ+ov||,:zo_.~boa>u/,_a*Ob*,+,@:r>U@Cb.o Z@U@.Uܢ@>voCb*@.@B>Z:B|hZ..hzzhbC *vߩܪaOܢߢ*B,rCBO>+>,.|_B.ohu>*,Uzzzua:@r,O Z.,~+bZ@Bo_UOb.r.A u..CAUaOACbZ/ @hub,~>AvC*~Crb,BhrZOh.Z@ub* +/U C*zOo~bZ+b+,bB@*||hZu<,bhOĩZ*ߣ<~.u,ߣU*>>Cbu@|U,C Cb<>,bAuO>h.|Ar@+U~h>ZA:o+U*~A,ACBv~b@U/b|aU_:ߢ>u<@,@ /_z> >oaz+*A/z/u:~U.A|ZoUZ,hZo*zCa /bvߢz@|h|,.~C>U~_rrv/boz*oO_,*uZ:>BoUU_. ,+b:hZbC<:CUACACbB~ao> :AU.UBA::Z _vA_ߣ.CC~aa:bro:~:z.+z*bb/<:uB/v@UB_O@BuOC<~ܢ~rah< ~hA:bv.b:,U~@bub~b~C>u*+.ZuzB:A,UC:B|b~AB|b+:|auA.C|hu.<_B./|u/,r/B:>>_O_bOaܩ_|h|.u.OAbOo/b+ArZ/@ubv<hbrz.BC_/C AAC,v/_ UrobA~>oC@oZabo|AAu+u:b~/zOAbb+/|a+/| +aU,O/@+:.Ī+ZO@B*<, ~uO~ObZ.*b|/ZbrU:Z_Z*UO/rb+/BaO+ a|rvz~zB_+/*uvuO ~@B*uA||>~ha/BbzZba/,O/UA|zv>CZ+ bzbA|h zh~BB*ãBoߪb.Ah_Ca>ZC֢*a~.+Zo|O*b+~o+o|Ua_,r/b/UCACa>u: _壣֣_+rOC,C~A~b/|oB_|O~ |ZArO>vza__uaC_Bb*b.A:bz @Aab.vUC@aB+ /bu|BC uA|bC|ZU_~uaC > ovߪz*,a,ozaB+:У|u.*O.UaA:rO>avoC,ubo.vAb/rh*:b*brr_<. _*AZZ* U>o>|~+ u.uCz~vhb|oC,,/<_Azau< , :vo@/O|:C+:OZA,rb_+uA~h_A u/,墣|C,zr,~BЪz~/~rh<<~vU.*aCZa, .A~Ģvr:o:BBCBu,Ou*z+/>,AA:.OAAbb.A+, o rrb h+b:/ .bzߩ ABb.,bzB_o~,uvzZ z,bBvAv+:Ub BObOhr+zhC|Caou~b/C>roh BuuBZ/or zhOv/<У<+bhbuo:A~h_h_~ z|o|rh/~O|<+A_O>uaZЪUv,: zOb@~+uoUr/_rUvBvU|oo_/+/䪩|u*/.z.<@* Ca./+C C/*,z.b|@.AC~UC@AazA@b<:o.+vuZߢUOC>,oB/*>h|aU, @Z_h AA>:o* zA|o_,o|r:O@u*,Bu*:hê:ar+~__z>~bU+.U+BahO>u,|.AC:rrBhb@+O~:ZUobarACUU,_@_*ZzvBAb.+CrCbb*_A.z:rZZv <*b<_:~. bh_A.uAZo >rbab<|@ Zbz>*/ ,Uba|_Aa:r|o/OUZUb+Or~+~C+B:㢩|a/Cu,_,uA<*.Z .+.rr@<@o_~UZ>b vZ@<|_zh<_.bv|<@.,OaBBrCUbz.Z/ovva.:zB,_r:_@*o.C bhAr .AA@bv@+v~r~* @_.,|:+zhvC~>BУBOoUh~v._rvZr/>Z h_|+Z,:CAb:bo.~֣br,oZ:Ova:z+/+>zb~>oBra.hObr:o|h*:|b*,C*A* <~r*@*uZ<:/UA.AChZ*BU,boa@Bu>baZU_a~v ߩBbb@a++b,U+v *b*UBz/_/@ aOAbaA BA/B*ߩvObbh+.r /<+_bb.U,b>,r>uob|~Cz_uéCbB|@~+_C @AZ A>o>|+/+uzr*+_Z壪ܩC~hAߣCuhUZhzC.Uu_.Uv+ã,,>~@:ZoO+*v,>/:v|,:u/CrC::*ܩB,b,<,av:@h~o/CCh_Av*|:BzA|b@rܢ<.z>o>hhbb/Azr@.AA~AAbv*:|+hB,|+a*,|:b+B~ UoUvhB,|/v_B|O/a+vv*/_hU: <>v@/ao| ||ZC a*>OZ>U.>uZ|, ZZ~~C~/u>_@CvA*/*~ :@oO.ZbZa@./O u,buOb/*h:>> r~ ub |*~z*aav ::_~+o C.>z,*A/|BBUrbavoa>|A~C/>b>:_~@vO,b.B~CZ|<*aBbArA_BZb+|ܪzr /zo+@O*Z@b:/Ab/~A<~oUZ@+oh>У_,C @vbzbb ,o@v|>bh+B~Bh*Br. +| @CC@bZv|ZhbUr>o+bBB+Zé:~ãa~h> Co~:rvh zU b|ZOC_A:CC:<|bAo.Ua~/OUb>|,vb,'), (N'Zoh~,@>*A+|Z*A|_a.*:b_:rAo@zvZ.Uz ~ *::,@ߩv*z:r~BUh:, uZZUa,zz.b|,ZvCO.rzb_z+@+_b_a Oz>UCv+A>Ahu_v*U@~Uhz+~OBb~@+~Ob_@O_Au*aau,bUa~,oܣvUCZZoBoOC~~a:~ah~|ܪ.bz>:ZhvOzv>bO>|r**,@ar/>_a>:,B,~Ub~bCAv|.zCУAZ@ZbZbv@Au...:OU_>:uvêbbOz.u @AU|BbAvaOr/.*a*r:o<|ar >*@Bh~@+bAߩ|@Abau:>~<_v*_h~/roBz|Ou+Cb*u@,+h> b,h /zU/*u<ߪ/>*ooZ/vhuo@U,BBuC>@o>C*a+a'), (N'|AaAC:,|bv*C~Uh ~h@@Bu.hߩ,bb,aAC~.B.ZA/z+oo:o>~ u_|>z_zߩAУOb...+ ~b*oo/ZBzoUZ@v~hA|,ZU>r_.B<_U<,Uu~hob>b<v|Ar@b|>ܣ*:|rb.<~z|/z>vbBo*ߪ,>aU/rr>zu,bUA~~vhubA@U|Bbhah * */zraC@Or .hz<@/OO~|.>oZzUA+rz@o>./éUO>_>zbzb___~u@~bã:+Ch_z:rB*/*Uv@urv_hbAUv~>a*U.z,a_vCZZuObr:~C_BC:é>v/,_+uvO*_<+_Ob.rb|.B*+._:|rZaB z*zvBuavZ~r~vu>~>|b>v*AOA@U./r.UB_ @OU o@B*AU~_~U,hBh|_~ozZZ<*~Ъu>z|C.uU|v:@>,/vv,Bbruz_hz.A,bB~COo.~*:AAU +bO~rvu*h:|aab<֪u~,uAB+>Obb:z/ߣa/CBr*C~ Ar/u~UAߪbrrb.| <ߢruz.*b,C*O|_Avohaho_.zUBob*~b<@.ZUbOavZr@O.ar_<._, |>Ub+ê~b*,aO.::*,*|b@v>,bhU|ZCrBuC.a+|bz<_+bvo<*a.Zorh<|CO.:v+<,Zvoo*A/bZb@,u*b,.|.zAbb:| bBuܪ*uhuoZh:z.@A+vzvbzzC+~O_Oo_U@Тz,A*:oA*.@ _.zO~+C~_+>~,*b|CAuCZa_>|_bv/>|:._:C@|h_oZzB>bz@hr+rZr:.a,hv~>:o.@uu_ZZUrh:r:|bvOb_@<brh||bv/ZU.>u:bBOzOO,b.u@OA:hr<|CZz*.B*O rBu~zvvoUoACOO>,h@.ZZzbߩBZa,CZhbUr~z,:/urZ|ZAOo:bb*uCz,bBBZrza_bߣb| oh+Obb Cr.v*>,v.Z,.z.Z|+u,o,u*~.~rOh_zaCB/B rBb,B+ZAUz |AaOZrC/_rvZZu/a||a_r,hu:Brv+baZ:bZ,uu|/Cv>hbzu_ZU>*abh*C/~ob..OܩU__vCb<@|zo*C.*|br>@h:_ܢaobv/|bv/bzZ* < U*:ABzr~Zvv:@,U//z >Z<>BUb*U Ohur~>CUZb>Bhov ,uaor+*_v_*+/Z,C.|UBOva +Az/ .vrCz |b/Auܩb~zb_hUAbB_h+r:,h@/Z.>rZ@|oB..~U+CbC>o/UAoUu@ao/_+O|//ZzOO_~hrBCo:v.r_CBu/uaoC~|,u* huUbbh.O~ACa* ,<é/zhZOaĪ.Z_bC C/+ >_BB_/*@:h_zav_*b.Urh|.+/oabrAzzU _rz_oB Z@ A_,>++AC|~CrCvz,z/*.<,//r|rCbzh/COBUv<|O BA/*Ī*o|a.zZh ~C_*ZOzvu.+|_,rr|uOUUbzCa/ |vv*/|bZ:..Z>,aab ABUrArvUB,:b<|COv./A _u+uUO+Au_z~b~u: u+b>~/@>a_ UhOb<~bBbUZub|@*br*u|+|~uvhzr/B/@A+aa~:U@bOhzh z+>~v~>_COObA +OUr+hZ:Uobv> B+_>Av,> |@|OrO.o_â.,+h|UrA/:v_ +rh*ܣ.o+u,+.Uor| uAvzܪ@ZAb< B_AuU'), (N'>O/,@ohh<@:*:hAubCA+a>~ߪo**za~*|B...b_ߣo*Curarv*hb@AoAuU,ou+_uO@hCC +BbZ >.>CCz~Av<|bA>zr,uo|:oBrh.ob,vB:UrUZAZ.v,A|>Ov/.z:/,Z/|AUC@,v/Cr.U@>~+b>~ :|u/v ~b~AzO,C_@b,r+/.<.>Z|>A:@hb+h/,|C:z>~|CCb <+.~@rbB,aߣ./v,aobBBrrrb*~Bb_@Ъ:U_ObrzA/@b+Uh+a./zBhohozCB+U.hO㢩,*:v_C>h+ߪoov~vAoBaOZ_+,,u>UBAOu,~rr/:~b~@bZĩ*@bbģê*A~// >u+h<./zhv>a+b+@z<.B|uhorhbzzbߪCh.,,::uba@hܣ~|+b<.rAbu,A*AbUOb+h< bAob|@hz,a_a|A*Oz~/*:Co+B CCzA >B>AAa+a|/@Ab|_+vhu.>boabUZ>:֣Z|hZ~a:|O,ЪouZ@+h~Z ACCCzb:+v~,br>uo,>Uz*:Z*Uv@uuaZ+ACbvobo*>hbr.r>,>*.֪bovooBu.B.@_O|abrb_z@@zAb,orB.> ~ZBB|*C|>a~ hr.U/|v~,U|>U/b.+OZhO>*:./zZa@O*~v_*urob:rB|<.b._ߣ+*>~UzUߩ/o:bbU|+>OuU~a|~,U/|::/bB,r:u O~b:.+ZUABv|*.v,_vOBBa_*Zbvr>BU>Zbh*C.uZ/bC.|~<~,ub@o/h.~@O*b>:ߪ+h:*oABU<>+|+h*A.Cb:Uh+ZAOCA@O bhbU|C~zAa.U~UBvra+a:vuAC_Zu/_*vra,_b_b||a++o*zuB_Co_Z~B>~U/@㢪~:a+><,/r C>@_~*/A>_O,vACo@|_ >@C:AvZOb֢C.abbvh>ab~ߪaO,:zov_buorbbb>C< _b+ߪ|uCzr@+vv@~|@oA/_*>oB~.+u@UZ,v_h@_b C*Co+ZU_ߢ/ +rZ_ozz*@/BC_ABBA hzOrBz,>AãB Zub,+>OooCAoaZ|/~@Cbv+Z @Z+a/Ob<.C+ܩ< CCCr@:.aA.ZAB,.֢o,bCb:b|*bC_>é:/OO+:oo+aZ*㣢vh~U.:bb@/~Zv, Uh֪:B*brUU:ZC>.bh~vZa,r/bBzBB~O*:>.v:UOAr+_/+hO.u+*B A_~bZã>*|v
Ao@zA::B*zb@u~zܢC_<, ,bߣh,@.>Zh:B,:+>@+_Ouo._|z_.֪ar~ AUvCU/ uZz*hbbC~O@.vCBoAb,.vr.|O~CAaC O<,C/OA*UvOuz B_+bAv:Bz.u,Ub+|:o__|:UBBo@Z**._.<@OCC_ߩb.C br>@.U~U.r.zu+ zh>v@| >UuBChbhAZ,B.UOUu~a|/vh|@h|ah*_ZAC:__o>rCB>+>o.U, b|:hv,BZ/va<_Z|U vra,@vbr*Cvoaarz,..Zzb,u ܪ@bzC*Z@@ar>brvu:_Z_u_A>OChZ.CCbOvBrh/|*ã.@@ub|.+h*@b,>r*|ê:b |h,,rz+@@r_>B::*|r.@.B_U>aa:,,uBCaUO:b@@C< U+//:O |.CaC@BOuZZC b+@+ooz.*Za_,v+z_h~o*>|@C*.:~@BZb _֢vaCZA*_У/bAB<,aU:>/,>,Ub~OUZ *_,/v*zACb:,ba<,>ZZ+C<>C~*~@,A:_bC,_v@,:UA<|r,_ߪrua+vzr/ .r.v:@ObA.OܪO@hO*@|r r@ _Oz|Z+zoAvZBoob r:BU@>./*/ o*/O+~|uzo<v|֩CA_/Z@O+~/,Ozrb/hCuv+U/z++bCoO:*Uߩb,.hO*,Cbuh*CbzCb|C_BbvabCb11/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0011/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))"; + break; + + case 19: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((null), (1), (-26881), (-1138956117), (0), (1), (1), (0.3936), (-100000000000000000000000), (-922337203685477.5808), (0.7860), (' '), ('z,B:>@.vzB/OCuAh_v a*A>a .aC+az֪ЩCC_Zu @>+~b<,@COZCU@vZ+bbB@v/a/uCvvâUb,O/Oܪ~bA~z/../uA@ ܪ,.hBUZC+~~COZOb|h.| *U/|U./o,Uo|rArhߩC~az~>br**r:>OU֣ ,.aU*A./br+OB|z~éU/@ZA~.b,uZZUvuU h,ߢ:~o|UCߪ>CB.<~Z aZ/.O,,@zU+Уo,*rr :~ZuB.AB_CB:_v+.v:>.*BOOv~|:hz@ruaBO|_Ab:o.~,vCoO@B+.vAr.Br<Ī~BbhbvCh,:~zhz>O@>Uu++<<<<_:*ubvrZAU, |<:,,z<:OZ+zZzObr:..BuUr/v~~u:b.CBa|b>:B|UA:,|ZUzZ|/vbob.,u*O*.bA@@ CO>ACh_h,bb<,aOBrboB~u+oo@u~r*~_zO/>.BZob.>Co.uUZC*+ܩv~v +b~uZBrr<,+B|,|~O_ BCb~aOr:~Or OhAu>+|>Zzb.B__|o| .@/,@B: b>a*UA.ro*u+uzhUu@hOzOz:U _Abua|A oo *:oUUUU|aaA,|ob z> b/_@.AhZZZ/O|,uzzr@@~*>+b@B**o~b _rCh*,a vZ.>aZZO+o@CoB|z>Oo,_+~@|+o,rbh/Uu,OCAB+|Ozz@+|roo +boOOU>*+Au>_:<~ <:+rr~><.Cuoo>Zzrr rCZBbo>ba>+o*|:+Bu<+>uz~Ov_CA:r@oТhuh|~v_.ZbzCu/+/z>uC<*bģ B:rO::uZ ouv,O/uoBuuo_< b:~ZBuBu/h_zC,/z/ *ba,vo+./,>
Ozv,*@, o:éu>.av+ZâOr*,UC~Z<|hvAZ/Az@ab ֣vO:AaߢAbb/o/vb㢩ZZߣ,h|/U~**,/zaa_aC*:a+booOv,ZbZrUv*v|vh:ZU_O/bbhBavbr@rCu<+z_o >v|rO+Cb>*|_*ChuA.:z_h/hzOOhbvBU/z* .o:b+>Bܪrr|Aa@+>zA:azh+r*b+U~+/,z+za,_. o/:hCzOh|>Cz*<+OrA_|/bC>@b abZ*>+|Boo. _O.,O /@>:@bbhuZUhzU+@< +~aZ+huĢ|*O <*ЩCZC:,|~o+b,vCZaurOaCABboBa,ZC:rZ+>,Ba+,v,~:> OB@*_~,>uA*BhbzOh_z@>~*@OaТvaZubbz@h.u,.|+C+b*boBãuUrb rbrBZ:/uUU|:hZ,uzvuA+@UAOaoa::Au/@*b,.>/uUA<_Zbh|uu<.>Au~~.ro>rh֢ /@a~bߣ@,+aA/+UbvZ,BoCoC:rb.> OB zU:,@++|obZ,<<,uvC_b vB>.â_z+aaCA<ã b_zabr+|A.rU/CO|UC,C,rv+Uuu,uhb/~bzv/ur|zAb /@|b ZbOzr>oa_@.Obv+CC.o ~:@B+O~h.b@.v|*v<~*bCv*b@>h,UZU_az:_,vvu ֢>C>ߢܩ+*AzB*ߣ +~< U+bv+vb:>O**_@oZazZrzbrB.>b.UbOz~OuACA:hBbZ_av֢/>:u@B@BOvoZ|_/AC|._~ *|Z*||AB:hCéh/b|* av:u_oa aBvv.ah~_rOhrhbrBu:U֣b>/a+Z OAuuU.*AbCrBrb br>bAozC~~@,bb__BZ,Zb~roOCBB<@aob/OhC@>ba*/Z/Uvuahbh UBOB Abv>C.rA:aUAhZzB@ CuBbbrUZa*+~Az~+A*b>O@BA_Ub /_+a ,oz@oa֣bOr~Oz/o,:,@<*@ZOhb|C_h>*/z _B |z b/r/<*rZboC*_*+ _@rC:*bubZ.+ uB/ZZO @UboB<_a UC>vh,bz+hCaA.,:>/o,bߩoaav.+/+*.u:ģvo|_haCa|/hbA|O*@ra|uu+z/zoZz ++|C*/o,*brb_O+oaܩOb+||:oZ>_ZܣzĩUb|_a@b<*C>r~,B,+~b|r ,+b@B~.rr<:b_|<+vA :Zb|bz:,@zC / oUbCau@,|/O,zuCa*~Cbao:v~azbC_A~|B aurz>|C_~_:/hZ+B/a|aUC_+vo.v+/Ubr >ra/_Czz >/r,/O/ZaU+C*UUCZuzv>_ ~ uu/zvOUzAZ+Auh+*Aa_CzZa,A>/A>CUurO|B:b*bz_o ,@aC~rUZ,_/rr| ru |~zbr.rߩ_rC@C ,*aZ* ::uZ*@Z@zouv<~BOz+brZz@Abb*B>Ob@*r**zAo/vZzߩhZU/B,~vCZZ r*Bb<.,zCUC:bA*o>::Azz @a:,~uA.>@Cb/@u+BUU+hvv_bCb<:ߪ<@oCr|brZZaCĩ*ZvOv~a:>.Z|rbv>@ BCv+|CBb<*/bv B|>U//z Ozv*boOZ|A+~+CO~,CO>@Aaz_U hZZUZC|b/ OB__o*v>hU +:zoob/_>:>z,,z|@//ܪ:U~u.UrbAurvģ_|~aCObuv,,_h@U*z~Br@bA>OhbrUzZUCCZU brA.r@*:@B/+_**_,_,v~b|ra_,:b@ZvC*@ubOo:b,az'), (N'Uvahb..C:'), (N'z+b.|.Z.êâB o|oܩrhuZb|U:ab@+**Uo,B_<@ b|Ov*>vv:@hBAbv.v>C*A@vuUu/.,bu<_bo~OU<*+Bzz_au:U,/u.Zߪ.A>Zu*.b Urh,_+A@buOo.AauߪuaZ:ara@/a/B:u@.O>OZAubr |CZBh,b~~_*~,BzaB~avru~B_o:a*vbv|o/vCABAâ ~|aCahUCrb* >Ur: uA.:Bvb.Ch/Z_zav*:bv~*_>BroB|:b :::ê>|_AZrA@A>BhOaAaZB>,uUZb/,+:a>bߢbv:h,b+Oz~azv A>ߣ>Bh+@~zU> OAab:>uߪoA_U+U~/bbh~zOzvv>~~ê*>haou._.hO>h+<*bߣv_ߣ~zu,OB__h: /:/Z ua,*Щ,r>ЪZZbA Z b,,U,:rv*u_b_b b.*Coav>Au>hz|_OvUb>>@*zZoU~vhzbOz|O *+Z+~/.r@::A._У<,>voo UvzCC/b+|*b<Z>*ouA_hb/BB>,B::*+@vb rAC~+,>+.~_uOu.:*bh+b> B𪩣aA//*~AZ.|b.BZAo>@r*,h>>azoAr|A: Br* |b<</CC|:>B:b+Ob.| ߩb|Bzb~hBCߣb@vU|ahroZh/rCv<@,@,+~Z+rUb+ohz A.@.>ar,bv:o+bAߣb .hBé+b*ro|,Ob.CAhb@vr.ba+aCo _ vB@hhob+**~A*B@*>vr/bAa+*vOUz/OrZ/OvC_~@|@+@B>zZa|<_vO|u/z:z~CvCUb_ba:@,C~v.bCuA>@_C/_r:_>/r@_>@h@|hr.r+O_:.rvUhub:hv+hz/u>Uz|*O+Zb/b~_Zb+uZ_v*|BZ,rb*v:/<~,_z.Тo@BhbCuh,/b,bZ*v _>+Uu>B<++@Zz@O:/_b/v ܪ_::O.z~~AUoabz.hB@u+/Z@ߪ~A_bbo.O,/uAU@ACU,h:b/BuOz,.vbrz|/r*CbaC|vo/~o+oCvro@Ohܩ ,, Uu.bobbb.*h>bC>v:o@rAB+aa ovB> Oo|:Uhba/v|/*r@O/.<r//z|U:,:ub.v.bߩr.@z_:<:ߢ@z@|b| Z_Z +_*@vzbU|>~+ObCrO_*bv*_O/Aa.@ uA:vo,OrBA@Z+r|hA __zC+zBBrU*z,~u *Zu._+/* h~r:C ,<.B@u<./,o/v|h|:,ho_b,a oboa~*AoU.z~r_a+B,,ab'), ('h:|Z~|~ >oo/+O+_/v~/+/vu _/aa uzb_uBb/ߪ,ܪa|o/z/Z..AU+.b/ ovv~o,+o,uu/v< A|Ah,rh>vbuA:b*.~|v.h, _@ h |֢.,ah+/C>:Ъ.:roA|Co/ObZUZo|~Our*Br*o/:Ub~BrrCUr|/bU_|U,|aU*urߢUuvaAzBZ:B~+_Z:~>éob+bruO_+u@vhB_ovZ.|r'), (N''), (0x1A0BEC66F89701C5BF23A683CB4F47CB7115B598E3CD4F89528BDF6B9086CA95ED897115611686F38D26F520F53E880639B929525D47504DBC62146DB795353958109541DE316A5B8EC20ABDD82E931403D832D65C7738A5392459FE01193BF7F0BCC7E5A84628074FCEC49B3D93758DCE006ADE635FDCE0D8F008B9D86B59758613CC1B67AE6BBCB02A868EB39D68A5AECC3000), (null), (0x90DFE60DB73E6E2FE4744E1429C659251F95AE2E38D94E2D3A88620B0B3A59C6297E3C3C81A1B37E41FBA21965883EDF55A6106B002E5CB791B9D22FDB6323A91B88EBAB8A1CA47EE12FEC3D3634C8B24983B5652AEDC5FB2284ABC8CE84A2DED7F9FEDC9D93543801918AD0411F805CF120E558ADBE7E2DC2F0880671DCB05C8D0E653D35EB14B62E7D639863F4B903034ED6AE9E4A31197AD11AAD0A4EC725E12D4333B94227060B2E29305AE6CACD368502220501BD42DD4BC364D067ACE0B53EB635B18549C127D0A26F2100BF93074D76844CA41FE06F00566D7FC235A482497A1B2F941CB13C41FA345E4E21DC8C2F5D83F02894101ED6C5B02FDB42659BFEEDD886A3647230C5470BAAEB8121DF79E14F65B1B359B469FD59CF6B8160FF95995F604955E9CBEA522BE089663354A3D1B5FAF2FFE94B93231DA50BA2C543E70B155121C09523F7847A5F88792B02CA042B9ACC660C96AF14CC263843BF488DE7F97D51E132E23B91026E848AC21AF71ADB07762A7781FF7EA10DF46FEAB3C432D1A17FAEB1E8D1495E3A639D112551B22F1E68B8D1636F787DD23F25EECCA64FAA51B8219A4868F2352DCB3D1E616C7CBB413FCC4B0B616E320731DEA9AB5A929313F2C06C3017E7B67582A397315A1B65C369AC8DDA039FEF4AEF921689498AD339A90A6FAC0F8B295816D588BDD600AD1579E541AD05B90F53D0224184D02C2CF8D05E8850ACB9B3DE8334C42E163273EEE5001063482534EFFA1BDBED4AA587E9A990EC78775D69BF31632AD0F5E13D9EAE529FCF1BC8B0AB29985591DDC694DEADDA858645FA7687975031E4FA64FA18DD3D3EF705B7CEE0DF414FDE07D8E26BCF4C221B5BB659B3DB1838CA96CBB0C59E3DB3A0879CD8F50BA4A603AB987FBE6EC615AE41DEBC27E38B1BEC7E03491491893FCA2441E432732C0FB71055074398795CD0B60184C0808CBCFC80EC77085A92712258B49A2DE1E23A14CF05178E83D85404A7795D8F057F4A9884E8B187B5075C7DE3E5EBE3DF2EEED3C76FF17A752E78A8977261E134E21CD86A01A8F930B25FC7A999AA9DED7025788A8AC8968ECF23556F09EF43A57A4801C81279DE86F5A2141029D1DB84DABB274CE856AA1A86499ADD528927C31B212E50A8D5DAF646F295E7B48565FE48D1954EC7F6BD249EE742C9DF00336B7B50F407A28ADB05E13105F6C1C26600E49B9581F4D9FB24640AB2C193101746BE296C63915E5CBEF5906C96F0C662DC8141E5436BB277A255D0A297D71A72D01ABF379755026F863ED78B646C64339EA7D640512BD3DA0CB1CA0DC0BBC4E6DA1D9C7C318FCB867ED15E0594261335F09C04F001DA20A546E42AE68BF5AECA7AF0B046D0E8020EDC4FC17FCCCE46E69E941C24B6D4E400FDF7354C64E5FB8822948AA375CD65089AF514B218A0D8789E4447F6D88A14A50CB049D8B2B5AAF753385C3843A271D02F148AC0C031E75C1EBDAE1F9D05B0987FE597C4848C55E44A1C5EDF439F35FBD277C7C4FF53E5DAC8ECBAF5078A594E88C4B85E0BAC4CA2BEA675A3D307187E88B24C263EEC982CFFBCFB97D260DDBFC20F577FE6D6F0262A240559DD4207C1D43B6D543D33109C2B8C5E4EB1B5D05EC8B5E0C3B09898B1C226FB19E63E4EBDB43AC297F288828FFEBA535A78A1757453A690276144103BA3BC911738F7B5EC3EA19A76F2396B403351C4F5443D3821B186C540AD265B702A87F436F66A560704671CD607FE821A3A50F3107F1AF665837065B131753F1746294C6B443549C9FABCF1DD21621AB304AA055D324AF10F918EB38605A4D68F270490DDB217D605072A16C22918432055B2AD866FE1E4FB383CD9B682C2C355E661B61CD23C00ECD4005607342EE6784B923153F7501F462094A5753D20834467C0DCC762264E19B1C0B16F8BDCC70A56616BEF91705E96416FFC3E968BAFB47D11A073511E16244317A1369EB0BA43CC9B1FDCB593B2F6624686F22A10822511FCF27A3C53B8384A46AB79CE27F791B5B971FB6CD3FFE95EA9110A9823F933957B25A1BD400678E2E6916EE739283B4FF43C709F87B93EFD081B9242AEA0274D78E4520156D375B2F818854191012581D6BBA3E689940EC2E7A4B4247435344669216F55D539F820C7BDA66F33FC6B07F5106CF2FC40C3E4D5901AB11F503EC3E33ED77092D0AC9CC2821FCBEE9F8EEB38AD2F63C94249295D8B7F451F4601767FE38BF424FB742464D0307921F7F635012E797121DBF9A1F5AE130751677D7B81A84C0A139AC73D390AFEF912D00865944943F0CD9055A3E9EAFF75E86CD3FD52B4F878ABEB2267673B3716DC008F24A6AD7207238CADF052A821299A5155CC3701A65DD78FBAA927DC8991583FC7E85BDACF3AFACBD9C606082502C9F9CC15E66BDEDA5A314D16F3C9E047021C9813E139CDBF821AD26B28E057CF69B7DF2E0F74ABED60EC8D2A8DB94731EB91C3EA701221902B0D92CB9972B27ADA7EAC3BE9B2378E71AAB2F4ABA332C9D3A180961D6C5F57954F0202E1DF54ED3A134F0E0C0B47385A3479C55F2DE588DAC9F8F7F11B5C6D1E55A699AF35AC9156C4BA975323BCC759483CE8F399F7686A7A2718E65CFC1EB6E1EFB765AE882488E76F9B734D34B70C319EA9DF747A855D3E2E350D94ABF9C89BE071330461AABF18600C2A5CF41D45700BB5BD523F42676A5A277F5316F33C75D2D76CC38307CFF4EAC7136E5A014911F09D88F63C765C9E09C8AA3A2B6B016CCFB5891DB082EC03E5C967782EF91058DE6D63796B46385C7BCEB9BA5D94C97FC5A79EA4772C616EB08410730FE46F10B8525CBD088801897C2DA1E1C932A65000E8B2875B6BE0B10CF4C8E735C54C975FA8020A380B763DA614284A8A80A57EDDBF732631E8B54C71AAB113BF1954B6E00A8220309B18F47274E1464396278C4F4A097652266577F3B5998E5A627D8CC0716980FD844E41A77EB4BD066E09DA8324C37510DE64BAA50B2C7A028A990FF65486D22DA68ECBFCC7CED371A77085ABBF0A369E087CE20DAEDBF258D33F1DE5A5C6B2E737ACDC96F878480F9049FD9AA6CF437F6370EED8A4C57FCB9B722988B1EECCE1BD9D74122E9FA68F33D37C65DD58B104FC9D8234D7D942722D10FB864FBF5DA27D1BDD085A3051C4CA5EA4D14819ED43C1248C146C9709E45B01E41DA3203F7475DAE7C27AA8A9CB4CBE69793471291323B8C42B334835E511F8AD584B3320AA1F305B6D322BC8187BC0C7AE2D90AFE9D7D1F9EB5B14402DA402B082FA5080189DBF5A0315BCE1F8F0ACAF728187B88049C3817A39344F0AF02EC9307A451D2A40AE106E36ABD41BEF01FBAE64CDAB1C492F3936CF05DE686F4F13E7F2B17EAA8E8432D2774A4A9DEF658A3839A0A52282ACE64A0CE65B3ACFA7FEE798ED293E83511FDF9BD9A5FFE59B47697BA62FCEA9F16446CB339DA829F702CF4B6305023C4CB4E881C586A906E664719FF1BF29782F3DA688E2724FB377B6A4D6D6B38295442D2EF1464DE36ABA3FE4CF2B093738D9571C255E7959D965340A0FE2D23032E2DB5AC4903732E1593BCEA28E80886E7F6BFD7F975C37CBD3558C1143D488E70FB1ED50AE73A7A1243ACC22ABB64BE4AC9B9076D5B19B85A48FF03BAA209E84B3E693DC9338BF0BC35B5A5D90141F1C09A765A74411125D1667AB1E836CF6049C476FC5236E5174DC84B279573EF49070D33102BBF640A2D335C62B8CA088576455C049A559F99A56F0CBBF5E9806D8731BAEB03AF449A506CCF1EEA826E83BFC5B15017DAAEA16D997ACCA2A80433A2EEEB870F2D71C700C1A43D8680BF2300890C30383055AC83098D6A3477E7B8589B6BFBA6D7748243EA4F4626712AECEA57BC299BD40B72993EF3F590179288E9FBD4FB14B37C290489EC4DF10F7601EEA08FECCBCE1C848FF95267E38EE23C47C66C3AAC3FC826DB931511F7BD8199C8F216FF87B5CD1BDF406B1B6114458597AFF62A934B55BED8591138A8FA9CD277C8AEF167F2A491F9405B5BC4BCC5C74D8F8A47B756F68D9C58273E949472D4B38893A865541DA4FB543142EFF9EA2B9359EB1970452B20C221551FCB760D64DD76A84C192D51F971E55C5315B39D927DFB9B4AA959647E6D72D643FF0DD97556CC756951AE0275F7E1A79AF8C80B1E83C2A1DFEAB2BB741239DEA6470E0A640BD6FC493E2430CFE92542C7A1C9859567C7B02C6C099AA410F15727CF6C2EF9E7438F11DBB1D05F81D1E6B56FF3D248B4393E8F4DDE08023C48384CDD18F08CF658D06E4A63C9A5E7509A8A12D5441D2F0E73962DAFAC093B8CD58389938278D169CF1713640E407F9897ED337DFF67041B1DCEA56A5F46ACC732CD8E462C53DE21A8B9163D09CB0023269517BED5BD9D7E7F6E75B3D3771A786A5C3140C2296C441F11D53650D71152CE7243BA3EEDF175201FC6BDDE2A5E31AE9DC2AD89CF60FD38C3AFC3E8572DA85D22E5512350497C6ABC10A262AE75E4B39397C30463C90F0146817B4E3D8CD8F21E60BB34FD0E4E545642DDAEBE9A8A5DCB0054BF6A93E959E64FECDECE3E2D2F37B0443DBAAFB695596EBE20FB5042BBF71D832D3829878A87615EAD217F862815AE770E465C931B49CF65FBE5C85E95FD20D7B0BAFFF71E28C9A659511963D9E8960B5CE94465AA7A67E378B39B94CF02C8B00097C57D25B758D58CA639CA305B8C035FCD01ACA8BB3D36431C7E5A9D24E756886963421318E5A5807EE90440ADB32D37884502011C07455A9F2A09390E3867BEE331D6F849E036E75C2C39C238F5A559512304EFE5557C521DE783FEDC7C724681455D7BEC24ED980E2AA4EFDD73219984AFD7DB3387C98DB574DA526C480AEFB9E340E398397D2C356CD1CAB08C849AB5FA6A2C949713097BCFB6675A8B3BC61FB535EA223DF15B32AB95C6A60EDD38E03F9C71DDEE5B12D04767C87305D1BA211BAAFB56AA6887F91EF9F8F14C537CF28D871AEEC9E8316A2309DAC628D82CD9EB958A53D1E235D71478BEE4521193F3FAD5F58EB6CB6723799123A08DB1C036DD2F15A6C91910AB4143CA41294D081175E6DB52D29E13203E66EA30BE954962B87817330BED2AE1C55A4D72F115FA2C99122AA6E66D644F0BE578622EDFECABFA6798A135C50588BBE99D8850902F186CCDA7AC6AA28C4B13C8371674C8B2E56D9178998D48E6D40CA1EAFCDFDBEE6BB65FF56138403157DB4D9D6D9DFF13F326A81ABF27959B23D6D39FC8C79F6B47E9CB5014D351BD2D5020BE4FBB79361D8DE7D637C13F4420B4D19A64A078904BD24583C29EFF2FD4FAFD5EF6E75B685D9D823ADFC93376AA773F6FF1C7487CE790626D65E5737E8EC7F13CD3D04D3969793CC72E3DB0829EDEE95B5F9F2E0DA270676674EDF2682A13AC17C806A2CA2A05F6888A815EB9DFEFDE970C181EFF99F38A5368D6C47B76C4AD1A81A8CA982C1F21599895832121BD96951F5B6C01F4BC7DD47C5F5143318B11C5D444282715467AECF6B556F4606931BB403F5C1B68AB15C53AF61BCCCDDE281D83CD5CED956F7FD8E07F1B3F657964132DA603023EF65D392E52FC2F2AAE2F189D4970A31C5425D0BF733AF99FD66FB19208AF17CB15EE9D6023BF327340BE324FF2A22C08B106D9802242BBCB539947E33A9D21FF174D875AD342F894E36D7EC4F8B99D3443B8D101D597A8C322D20C8A674F38B38C4328A52AC1257E0E349CC4D3E6D2AA0C03AF71BC20298FA4B43801367E3DA424BB48B580F819828362F3A0FAD3FF3BFF627E539FC7076C19A8F0669924379006F8A028AE2D1903FA2CEE493C8884D0B4FC01D3FFDA046DB3DC9BE807A2E96F2B539A0223D68DD2497A6972D8BE3F91141FA19D1263A03CE44264D181310C47337F2DD8EE82ACEE6E2F8A8560818505ACFAC3E7F15C5CB7B36D1DE161BC41086E224F598056B29172C33EE2E92ACC62BD6F24967D2445E72266157174BB8CA1DE72174E423B75463832653E1D69DE98A0BB23F297BA9B49DC58272A31412CB7368D0467138E1081E9DE5E3ABF07C9C8878CC0C9978A0A23E6DD61EA045B04F715BE0790557785229AA218B96C508AC49E6E92A470532FBC72E070361C368D9EC95725010039631007AE2EE57140C786429D5B95C85086B29E5B1D64F74F06642489F0053B89C454FB72ACC2343A3B2228F9F38EDAE7C668D07272B52BFE18C8A7CAC0F750C25AC8D8F6AA45B3C48E541FEB4C0D4B77893CB38724C9070F390D59D41A796943D166AF3AA5E44D70A51BF41EA530B21B8D20318433D99D81B1D9BD9CEBEFAA04FACC19E55E10C1A4FF32D218D4F859F84B4E46EA37D50FF7D91D88DC26A084C561EF23D926DCBD7C5E9C94F0F774BCB97FB541AD98CFDD15BC120C4097F57E5EAE1CB6F5D480D17E80DA8BAB400F005460CF6C715EE72CA2020E1D04C07CD4692E3652EACDC6E4FEE3C31CCE3431D5AD11B7EFC8890CFFC6F004E3D663CCBE13F6127D09BC159699EA7D8D8BCA5E6DD0286FF3188D1BE021368BEAB8E31E9B2704F8C811B4DBF0FC1145EE1B7F73FC919703ADF3C9A596EA325BC3303ADDB6DBE25676D1964C2B5C7F06F7372DD4A1C28F5911DF60975D6F61EDEF5908B0C1339F122918FD2B0B5AD84174C2BE5FBC6DB9F0A0D1CBD76B4B09177FA86CC243BE35B3A81BAB88C5644DC7071F229AA1022171AF181FEF77B7A6EE1FE5BB52EE05FDB68CFAA7A0C2212B4C83F4D04C287E666D86EB233BAE464BF064CD68EFA8FAE8F1117C0DB66A70BF7DECC36B72E76AB5A17F5DDBF2E2C20846AEB74BF4B84B93991BEF2ABC70AFF3063BA55EDAEAD9090A07C7605B2EE60E5F63B717A334BAC5A13FC25708300930CF5AC5C74D633D5BD5AE41FCF0DB487A25D0CB48B9985FD170DFBDAB287200C9FE9690F0692EC0FC366B31F4F2CDD4C5E758312764C087370AE4466DB5823353AD77FE5A3A4801071FDF124E665AEEB30AE7B3C040D9653E0F69F574D85336A427DE577ACF7A8BAF472A1785AE38D0A0059352CDDE6312C402C05AD0429C2EBC987E16880363E3905C147916B1DF9FD699457F350078D5C4CB83780F2FBB5CBAFB6AED301248AC91BFC261C9EA0C0233308436FD1CE9BC2F9851CC7FFBE470A0B7CE1B56E25FB440A8DD853E171BDACF7134DE9B746F9E11BECD97C08C3CA5DB51C1022BE0BB40D0CFF6544F547E188C870CFEB715D52C5820099824C7E3B47C27B9EC4609AEDEB5F3FDDB8E0B5EBD40B51B498F3DFEB58C94B9FBD7232C18EC41D817AA81C272D82E48B31809AE4CC15C576FACAA254E38F46FB15FB2F792D7E4FF4C234702BEF2A86160E53BAD82F67D2A8ACBBC6C321C99DEA62201232526A5EB331A62198A49A87D0438C4590D56ECBAE2886CD72B78BD2F89786C8CE1854C3A4F507A789453A041234F67F95840D15F4556409CB9DEBFBA5D328011DD1B8B8EFC8A09ACEC74269EE82BA3DC10C3D748971D379B34BF707090C01B61C39E6407C3E8FCCE372472D13FB1B49E2AD399895B477ACFD3E04A4D19990C1C58C4CB49B79C1837C71901729A666B82FAD255BD2682068C139433D39EBFA4AE2856787AE66AE68EBB61C2423608256D84B74237434EF5C6BE4F36136844990764634A43EDF0AC9FFBC6F1C4CFB4461B6EC64EE76D6D6AD950B1BC9734C32676C8BADDD2BDE18F940AB24B7C5D3106F9F91AA49205B199F6F870E33C34055B38908AFC04E6736D8D46AADCBB21EE7C2FAAB29E1A1E84611710D6DA3CFE536FF55702EBC234F21385BD275B5AE4EED51A04C3818177311A0C19E4E40FA9209EF34AD7541F02B9EAB89F186CF73916322201B0382AC1DE8E25F8DFA8500E03DC8C8868000D9AB6174AE8D8E25EC422D303B2C20DE8F864216C492E2623119AAA8B3BE06EC10624975BA8ED41F8FC2F51D5FC949D4C05F384144693B46C8FE4395E2E5722E3B411FD8E2AA2400B22287029DC50267CFD5E75486C5A7A62702ACBB4B3F3DAA50C7E11EA971F1163A378F21E239A903FCDBC60CFD1EA8769979B1E0FE68B472E5DCB1D6E3E4BD5DE4D1194E3586C4ED59A9BF707930AC321F6B8430BF1117D1821C3C0587D31F171D68282B04594013B5C38654A944F9B42F7FB6775F8D9ED2B947CB1849BE668689A7521108812DC52B717BFB8AC3283E2387D6081CA7B890C95571BD8E27C9F65D00CB01F2E8ACAE51F14CED11A247F61E8DF5C2E75E6AE2EFC147B20F703703A8849E8AF8274B3ADB27B62A5ACA7F270E7A9E0131060FFF95E81130A1F99EE1BA49458C04BCFEF741BBE7BFA73F8725421FA495D235D1A1759FF40F151B99E189D5701184F222517BA6C0761F4F575661ECEE8155090E8477A41765C7EFE226220536D2CF75A04FFC53192B755B8126479EAD282C178C80C6EB9AE0DABD898CC49A541A198487EB4C9E8402EFE30F1B22F11D2941BAF90A79B50CE3DBBF743FC98C67DB07670DC317C1DB8D928A90E2DC7EBEE9A0604A09A049A06377A3108D294538637B3314BAE35A1180DE6C77EF2429065C008B9F68425D3ABDC6A94B73B04E634D512D67A96A0305454ECA2B34D1B13E4D9DB48C9EA6CF201DF856F33A0F9DCF8F082A9DF7C25DF1FC855919783206EB156BFDD6FCC2C4A6810D49B01310CB35B1FA9B2BA614478B40C28F194CB5A8EBF16ADECE12C7D3CD43841BEA78ACDEECB923687D96DB45002471953932AB59CB645EBEA931FD23E927CDE822F85D1293E4A260284D2A541625DDAAA031999B982A50851AEE34BBBC007F56C8F22208C65F01548F4B307E3A09A783545283B78D3250F7A8D8F8A5AFE7A328CDD38C2402D4E3402F450B4CF9D14A1046B166697CC7C996A22A60EE675CA4A8A707B0667D83807F6E4287472603FED68DE75EFE803AAC060AF581D774F5D9D3A063A5F120E493C330E7FB393F816F9F2C89617FFDA6276D5BAA5C8701A80A7968B3A7C35E0CB6A8539BCD983F72C68886E2ABEB935AD6F93C389676880BC187DD81D18BD9AC4120D3B82B61D88E2DE9E3D3011FFD1FE50EDDAD862575402048D946BBBDA13AAED9A18A18DB2E7421AD0AAD92B40AA289BE9BC2AE2B251BAB9298E38792D37048A924277D73060AE0698CD91BC8AD6B3D37BCFD21DE8C82B485DF85424AEC8FDA9965E990E22416B791E2459F4CFFE2E52CA550D5D54E691CA172F89481C7967CFDFE8163C4DB5B12A64590FC47E36886FCA016A49CB9044BFBCCEE6F2C8135C94CC8A14D7D7E20514A3D2E90BD6DD5BE0A7197E1B1F1E043F93667F7ECEBE6240FC7B07E411B087D7FC5595E8A748D8EF73065BAEA54185AE85E53471628645F560A80F6BD567CEE691961EB9781B985A9D900BC852B3ABBAE5596E3C7C1665661FA0780F496D0A1B37651D0F22CC266A4CE9E3D28A8D92BCFC44767BF9927A8B20A8A9D79389112085F080EDA6AC982932F3EF922292EB820DCB12F4E69E11A4FA91DE7A125EC6C3C8B34C89FCB5064FBC5D4905A2D8589DBD17C9D8762C39F7EEDBE314CE1E06D42D1BC96F56619558C4C33899450BF2224940BCFA84FE5DAC8944AB10C1F181AE4664D8870EE9375B827103A2F390A2D2E9C0CB8D511C4F3ECE2CE601C67486C3418A52D0336B136019616813EAAAB8E891C8370126044D3A25A9C8E1F325851DEA3061694DC29F7EAD6B73FFA42B442373FD6FFE3D85AD4D4D28BA99A2316CE3DC5A39AA394FAADF28C853BA804D85FA65957E05B596D06493242C251805CC7C0E802349F199FA245290D57521E2BCFF92C0341CB3672E4589C517052375C722FBD7BC001A4BF8DBAB59A324B15B32B0772C9247D1BFB8A761EDC03C72E4F0ECD9B2894A26ACD556D7586169B409842E82568E06E37F413C1F149E3C7BCC58B658C64B0ED1F889CA473B70794E5EE36869A1AA2C56F9F95A614D2B121EA8DB0B0FBB00FDBE754C99DCC3BFA7FED7EDC02135C2DA123C5F6ECCE0AD84CD67BBAE506569934DF5B9F455004F933A416B996F6AF0D8D600F8D35BA220CDD7C7DC65080147996E5A723B8BDE8501ECCC247B8504256276D2D85F7C8637ABC4EC1C8D33EA9B38F9C22B14E8B55CF77BE6F69F7DA538C3A269EE2538F81CD812D6669FC207CDF220FB71B2D91079C185D0E3859FA83E2FA358EAD9FC65F001A552F2125EBD357418F46E722375EA91F02CAF581487387A9846EC691CF405CB0B701D861E6762C8AB6F7CAB39BBFC3D7E48D9DFC697FD1E1A877A17D0CC5714FEA376B368648388B9D6BCA51A9D30EC4ABEFAD41A26046372FF6B86ED5AF7DF0857AC963538C519C54115EFDB58037D568DCD11D182FAC8AF134078F8FCAB6EEEED9CB2F09AA701E9E10EC90014881AEBFE305F8DD5FD855CD3F721F85C10D8A5B700FDBB408CBBD6BB37F07421B88A8B258D0ABC4BD108E017561C9385199DC0362359039A6F9B618478C2AE0D112B1B6CA6C2CF162C59D6080DA3EA701851A19A304E0E6F86E0C5F19927D30E5AE3062AF126DE46DEAA09C9730B9CCBA0F16C272113DCD32CBBE5C60CDD8CF486D7AD1AADBF7EE1735ACB863434FC8B540A4097BBBBED4716330E45411849F12D1532AB5E721DE1828AA3D648469EE7CF6A62029CE538DAFA56047AB139A06B00CA691F02412CD1EC5F15310806FECF941685D6A6476437DC67A0F86DA33048DA48C58DED7FE57E4D90163DCFF7C2E35734D69AB3C9B4C95631429AA02464391ECC66CF4170E21431079916213667D494CD9138DC959510840C37BC3D4ADE292BED1F03910391E652C259AC309E982FC96E05D2833B6C7937463B454935E6E6397FFA44176443912BBAD60A3BF8EFF56407E2CF44FB95E07095CC4AC85CAD2CEB7362B0A44408652A74B6C855524D3E6645D1314317A14DDA09D37197F8C8CF1DB92EC8862F412FFF8DA4D044CD9B1E588DE4727B6BD9C3C224E6AA7096CD31ABE7BA9C2374B84704B131C572C1090C6EB5190A045653A1EF6AF6614896BF68B063345D12FEFAE3D5AD7DCA3A1451011BDA3BBB7DC32D559418BCC87E46FE6E01D9050F9CABF97FCA352466D89977CB09F5456E5AF3EAFD45EEC8FA3222759EAF0FB8611F51647FD0CBF1489EB67CFAA0E1CE790190030DEE07B9BDD30F3DA7BF95C7D8D116BBA890D59D9F02926E8F61CE594053FC9D0EFCAA730797B69CD18E4988F8FE94299A3615E83BF2740B4BA93A4C04A5ED43C308B8DC2693B410EA38BC10B9196590DDA4CF1A4E14611C88AF375E6D6A982B9105C5E035C7F2F67204FDF33653423243997E5FE6D2F5AEA7AC53875C65A37FA0907FA343756B15B1C89849166DD6255), (0x3FC3844CE00274889646BAA1C518E52A5E39EEECE3E68AE2E3ABC8849D62E2A575AEF83685BB1932C3CD1A1561E8BF7980B2041BE164C95939A2683539EFEB3463152C1720AFA5A31FBC2915CB7580FBEC4F04EA5EC7C310E49EFDE252E4F9D3E2E5B14CBBA759D10D60FB253AB38DC3216D49E9EB01D59C511B3281B1C2513BC35533E5C3333F44F632DDFDCB9ED6301139C0E49B0FE8E11014FA9F74D81F4A0FC062E480A7FFEE2D04F3B823D8D1B345016F77016CA0B36D52D5AF399FCF1E1392EE0A3CF1B06A3AD2B6961C2FBD3842465A7368A848A21FAF762DD150B48E34D4A590E9C6775351053D2EB609963E959D6CF2455CB56A4A4BEB8C7A8398E91E286147892C4E7CCE0621636A19EC1618389834E3C248D81F3A469DDBEAD9CD6C53108DA74EB4684EF0233E3A51FF305FD47442EB64055BDF89284EE6B0A0E42D53F717085E6ECA832FE5F39E099DCD3A153E067696E2074DB4AD1E2665829E4F3F11E65AE8270166A9BFBB7F12BDD5EC5A13D0729A6D9671EFC953B050A41DAD47A45EF8B67252EE3DA0CCD726873BF7D731CB51B22BB5D27B756A1FD3501605A10E386D5EDD36E8C1E135FAA0BE4A688E5CD81ED9CBFA1BEF8C7C4007331AEC89C636184FCD98F9FBE390D0F5BB31BD2B02907777F72CD5131C7ED261F5E08EC74970D9883219C0C3DE22F53B2A26345BBF1505A2A374919A6004324FC69806030208AC4A5734F8E9D0B399D4369AE9F64A76A2DFDAEB23D4DE3F272EE671FC461CF238217AE9038A1D1BD1EFDBBC63C51A3B044FF6262816E4D76C180DCA035FB652B84362C77C617317C2BF1933F821DB6213AA6CAD4FF5CA223CA27DEB7D5218723988041F6353BFA3DCDE6468FCB0DF4A3CABB658F30903C3783F8AD9E4879A6FA6A7FA6F1DBBFEC0EBC8D0709062258CC332AFD19CC07E308541A723C9E6BF5444F5C154B66F2D80ACF66C2A389232161AFE16B1D8C8D3E629CAE9DC14DAF705097C2C9BA0D0D553052F25A55354F7F30F9008CACF0D7B7C21DB2BEC85516BD2FF6721BC6696764A28C2ABA9A32D93D5D2F6CC84D12C35FB00AF79C4A4E9CEB4C353A6EB323B8D7819BEA10D62D2D9F44756198F84E700D23225BBB61CB1A53FF4F7E55086A7A29669546A138A28992ED6857D4ECF3E30DC52D3B80D80D65B681862186BEC89), ('40862437-f189-4472-8a75-2df2a06f068d'), (null), (null), ('11/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 4:38:05 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))"; + break; + + default: + $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((0), (127), (null), (393902448), (null), (null), (1), (null), (null), (0.8215), (0.0538), ('++o,hUhbu+@|bzbz +uo+>_>@/vZZCu:_v>a,Z<>baA>|aA _a/u./.O>h,Zr@ZB: r_Zab_Arv_.aUA_C uB.|ZZ_brbA/ @hu_*|Z>ã<>:ru@B/Uz*ܪAߣbbvavuv_/:b_rvb/@_:~:z~_>AC/hU +bvA|hhz|Z_hzhhZ/_rvbz~.>o~@<+b:ZuU.UCzOb|B_,bh/֢a:h|AAaz**hbU_b|Z_~/U,@C.*rCB*b֪@Zrr:_hz@h>Ua>_,_uhzO:O/h/ob+*h,~OCu,+ߩz::,>,b+v_A,/v|ZCU r֣,@A,>|bzZ*|*CU,bh/<+~>+zvvbUzZ.hZ.*~.._.>O/rABUoo_/r:z<_U*Bz<,BbZ+vU>v |>.h_>U_:>~CO@Bo ./AaߩOUa@ZvZ֪+Uh,oߣh:. bz><:U h.~bB.a_+A~~a ,_bZur<|*Cb_U@:Oa. AAZAߩߢB:,'), (null), (N' .@+UA >hb_Czb._*v,@/UUUhAa,>U:~>b,bh@vZb+Ch+>b*Ur~/C*a>,a,b/AhZbbbuv,.@*vv<+vU> _,'), (null), (N'/â*,~~u<:Bo+,|va/Z/h/@_u_rvr@:>UOb>z>:*,OZ,_uObbZUoA@A~v|OOh>|vU_OC/~.Z|++u AA,_r_**A|>,hC ,|â,Z*U zubU~ <:BZ>Uhh:Щ+rvva +*.u< /bA|@ oܩACB*B_,*<<|:ZOO/zAbo@B:hBb~+hЩB+@UA>~UaCabO>oZ*+@hA |+z*rB/<_.:*+~+/BC_vbA,/o@CA~ZB@U+ +bBvU*bz<â:z,@U|zBZ ObBZb_ZbvzCvbz <~_,U.*@+b~+O_ v/ A ,:.@_Щ b:U ~BuBbUb/rovbZAu@vCv~Bb>ߣ|,Cz:.vZUr/b*ba||vߣz+OAZCzUA~v.A:Cab|.vOhuhb*bvz*b@CvhhAzz@UO:|:Z ||b:Ua<*> A/.BUbO*/bzaUr.~O+OOr*r~C ,uCB@A~*AuZUA.ovo_C@b>*Zb,Uê,UhB_Ba:ZߪUa,bbaZz.<ĩ*bA+.>:.babvahUZ|+<+o/h+*rUo~rU>_,:,bU+,B<*/Uo:ZB,bOO,.Z,@*h_@|bZU.zZzu,@Urvh/o.a.h>,C@zz:/U:u/vv_vCBZvb@:z/@~Z.Z/oz:zhu u_Z|,<_b./+r+/@ߣ.O:~h>+>bz_bozZCvChA.Auab|hu*hB~Z@@Z<*auv/+CZo>|uCB~OBoBrBbb_:+.a_uChBߩUOv|auB .Ba+~/h*a|UBrb/r,ߢBhhOCB<:o~Aruo_CA|Oozb@bZ_//b|A./Zv_+oZzZO<@O<.ߩC,C~AbuZA vb+O:|vv|,|z~Z+.*~,AZUU< o_~@ha/a/a*>uU+@bb,>brZr,.~zU+* ~AvU>hz_b_hCrU,AA< zaOuo>/bvvC _Uru*b*u<.BazbAb :@Z~><<~:o**uA.Crzb,.֢,CB<,_ߩrv:*~hCoZ +@rrbo..֪+z/+u++>Z_*_bo+AЪ~Av@.,,>*:>ohA+h~,U+~b.,>.|BߪABauaU:*zaaUoaZoB|r/||AU+_uh~O@UbB >:,BzA>>:hOUOvAZ ,aA+bbor*>|r<* hob+zâBr @vo_a:Ģ*ߣbvra<:A/b@hua,||>+Oo*U@ h|<ã,C< vz/o>Cb/z@@*+~O+ CUO>A.BhAr@A,aA,hܪrCbZ>,/_,o/au+ ZU@z:rAu./>.Ъ<@>uvhab*ob.vChvau@r~C:|o~.U@A|У+rb+/UU>hr U*uZu>BO,U~_.zbbOh~<|uzrh*ZߢBUr+~bb@r_Av_Ur ~,>~/hb<:hU~/C+~o>>U~bbZ,hߢh>Z<ĪAb~:Bv< Ģo@za:vObuo/|r>au Z/z ܩ,Ao.<@:A Uh>,h/,__>_Z<+A+bvA* ~>|+/roB+@.uh|*oaa_CuB_.o~|ah*bZv|:_@婩UU+ , uh,hb_|@ra.ur @@bzAuU~b/b+h,@_AzBC:b,CU <*+b:BU~o~OB*:|uhh|@oa:u:o*h/֣_B _*/,rB@,<*:>>b|,o>/CZB+v~A:Bzh~>,h֣,U/U,C,@Zub+B_uv,brv*~uZh_.Aܪ@|/ our|*+o>abܣ:|@r.b.:o+/abBOv_A@O~+:rbBo b**z,.au::z. vA<UCr|bvhha:U_ruZ>u*ur.O|Cv,zu _or:vr,,OC~oCZUZ@Zbߪz>uzaCZ>A*._r.B/,u/+r>@,@/h/vb@OoB>ߢB|Ъ*,UCaOv/.rOa*~zbB*oCb*.b/|Ba_Uh,u/*BZu_Z> B<..OBrr*h/zzhb +/b@/ZvUhh*b**vz *b+oAvCb ObO_.BZbrCh~r,z~Abh.bO|h::bb*h~Z𩢢 b _ZabZ.* /uoC.:bu/> ~a<>~ãBh>UB*@a@A~_BZC+_@B:Z:Bbb*@+Aoh/_ o|@u~ruhuh+:>~u>O._uBZU@*a~vuvC* rU~zb.,O::oz:Z_r+u,/@Z,bO|a,b*,:ZC,bAbo|Uv,~B~'), (N' bbAbav.zozZ.ߢCh*@.+b/aBvOB*+~/>OOvUu,OA<~ZuUAC._Zbhr//<|.U*C|hvr| BAUZ~*Cb_bZ|b.a,ur*U+é ObuUZ|,/,::|u@|az*hz.uo:Z~rCZ ,/bC>v*,rUC,b<,O>_Z ua*|*>Z, OAaB>ߢr_/.b b|abh*v__zO a:_Cv_/ ~bAohUv_a.,O>ub,Chza|u.UrbBb<@u_v/A~vr./vbAaobh+ ,Z>,zv+rz Uo.<|,|vr:z>~|o_b~r*Aa>@ a>bzЩ<~UC,o@CAz,/C:+|U>/uBh__@*:<<*UZ|oC|Т.ob+~~/b++Ob@..|B,Ī_.:O>.r<bO_ub<:*o ~b~ao~h@o~roOCh+Bbaa:hOhb~Az_>rU>b~.hu<,|UrbA|b:b@b>:r.~_B+/,bbABBu:Ur:~@: o>aZo/ߪ@>CO,b/b+v~B>*aabZC,z>,vC@ZAOz:bZ,O<+ra:|u/_~BUvUuu|zvAU@U><,@@+bUB/bAvuz.ZZ.:vrCAbrZ_:/b/@.A bBz>oBouZCOhU.U**_++Bߪ+~@_|,:z/Zb>>U.<|b zZZ/a,*+UhB>rArC:Uzu@|uUBo:Z*:v*ZO@b@~֢Z.bbhB .OCu|uOb~zu~b>vaz__A*֣ .+OhZC@ :O/C|U.zoU||U@O<@Azua,CvbU*uģ|bAra~v>|zAu_O.Ar|>b+~:baU+/Za~*bb:>B~zvCCav@vh:,,|h,@ba.oboA|bAUa.|C<+>_ao~bUb,CB_+@B ,+ .Uh@r*/>v<_Oa@o@ ,/>h:bazUvz,>b:~au|O .,b:z,֢u,֩_b@z*rb,*rOb>uar:b@| *U.,@ bZA<:v..Zz|/O.bĩC+b<>vobr@r/+|:|@+_ObhZ@rzur+BUܣ ~,b<@@/*:Ob o. rBz~h*/aC*<::o'), (0xC0A0B025C680B0A23D7885F7C203AD211F679679F97F910F0F1A364ED5C246569A2D2628E432FF5FFAE90153E56BD1809A8475D01906C2400EA015AB4A61CD7B312E5C94DC853DED68377F107E3E2AA348B5B4504C763D946AE519431C5315981B8621B70F3DA415478868E286B2C2CF76716394AD7C2EBBF1C72AF66BF9D01422E6F4F71D72940B119E08C40D5B0DB8234ACCABF080EA9F5866C54713ADA94DB754BF9FBDCAB204DD57830E7369AD96B971D2212D2523A1FC559FB6AC4CF863F5BB0CB99B6DFB5997C8CE99FDDB2BEEB82F8DA1DA882092311EA3672AFB57905F1F19B85CF4FB4B757989645789A4202AB1FD7DBE56896C9A79887CCA942F9B713D3ADEC27291C434422B61FEBB3BA77A833C79FEDAD10896AC1DE36B7E81E14AEEF3194FC65EB81F39487C2A276EDF3EE1024757B59D976C32471554AE58B5C04A1710C72257B4248459C59154DD6E3E3EA48A7C3A8A94505CAD1D7E486371E093BCE00F5E171C894E22D25CD8061754D9D71609CE3985BF83BF6B743A35DC21E8E5FD98FC5EDF2788012D18B837785696C9A5704D67115936218C9EABA74F1845B173F3087E577AF8EF81CD0B6D074B4714DE71906CD481D3A461DBD2417BE0B215D207C3844E17712A785EE5444EC91A415796C9DD87D9DCF220641C7BA8B673A01BF69AFF87C2C6C6FF65F4769B8E5698C191E9E417D48DF92AD164EAFA), (0x0F), (0x29572E1AB994D002DE21E46657910E84BA16CC8F894669A0D5B65DDCCC0AE3328B5665FE69A7D7551415F66B15C379D3DC753B6BF45BBBE2EE8E440336F335D33EB2DB002C0F1B123F777B7450FD8B113C8A0056CE773E309B820FDA63D41E20DF222C62E879A6CC5A282C7CDF4692F00332C6ACF3DF05C673AA65A9FF40AF6B595B952ED02829C3E333FBA64BC15054EF1FD7300D722CFF1D66EF3E13FDCC1A79C02384B1641FDB0903C8C0E35F7AB25910BAE0687F5EE72E95106A39EBAFE666E12D8B9DCCA38BFFFC2709A96C1CBEEB3CE40343ECB1F9623C561B53B5A11E53E2590231EF158D6C2EE16C57543DC278527FFD06ACA37A2F332861758738495A08B5C7121A8CFB265796140A45A10DFE93A30036A417A73EDED2FEC7B417E4F698124E9E76AF5EC683D6AE158E70EA911A62E1E43713B5F10E8833478D34723FB11E7233526F88E4443AB3CE6991AF6EE86DAC513500BE845C5D90ED7B16384E636F6370FEB73EABD9FDA0FC60E6887CD9C55F2088200AB15FEDD6F4DE9B682D01646BF92E3F70312E0178375FC22475D51314B6B718C64265B21010E049CC3E9572FAFB7B8E4E99542EF186A8D2519DC8611ECA87B176E99D28947B2E5F50E43439A2EDC728FA47C57A6289263F9A926072487F2A01B7E4FC115D52F9D26BF4DD0C516E3064D69F66D7050C4EEDC25E8E011BBB17D1BA3382BDF0B5CBA74EF30F6DAB1AED2B62FB9CA81853FBAA950F4EFFC3F7B6AFDD0C521EEB727320D4BE8912FDE141A870639F201F6EB86637D828E167CBE4563C5F909EC7CF3FF0877BD459CAE9ACB4CDA58F6058968F6E54EBE6134A92B808DA32D69E50A3E1A023AF98A39A5E9C4E2B7314C23C84FEA5D0214ADCE92BA6F5C2CB7F98130E6329C4EE3CA9FDEBD4F54F98E7D67DF6CC563330CD2E5905B7F708A3E0CEDF043B1D0FEBFE4E4755A7E44D548D5143CF78CCFF2864E24034D0BE3644A05A0A05164A5CCAC792F87D0EDD88E9E1057866B3392A14CFB69F58DDDA1A3F1702B54DD9483E42F47908E6D48119865A5653CB46D091662FF6365FAB04EDEC77B9660C283B0F99C635713A3144404D9D18FE86874FF846714E1DE312DF96F08B1B6E1B1B0D5E1E47BA04105E5635EBB6E8C19205676527C0209AD91E2C87E79F81AE15D625328FBADF3FCC4BE7E71A19312C291D04EA24B5475AFB7284001A331C71DDA81F1591B632D8262898DBD9387FBFECFF5DCA9A978A5F8ECA371D35DF24992F750A72FA1C9B73EB2BC4FC1C6B81C2F2C4141AD551D7451DBF86C67E14A34603FFAC632E0DC5CF64EADF6FD38D432349742A70CA0AC3DD9EC4543A96D5F4D6887DF81DBE1D93E5FF44B5EB726772907C627D0AE9327CF83BCFC569B88A388EF509E6569425652BE045718654D76A3652C4BE3458EAEC560000E1EF582A2D740C27F569811BFB56FD5129A4C1F5A464648E17F3CC04360B1C9055944375D3B617FC792DE101B536C9673607C147940B5C7D8AC9123AA708F0EA4CF0C66612877D728CC47C768263D9E02965CD2F4AD4FB4A38C6EB0AA3DD55713DF7B4C4706254AF8A4EBBD08EE5FB27EF3210423AC1A077F57B2D4C9B72CEAF6F0A398BAE156FC7101EA5FB192BBB52CBC41A71CD12367C573CCFF534081317800B6184AC7079DAC248311C1CA45ECABFDA80D7575CE15CD3BD3371457A92080A8D7A0DC937A65B4A3FAE84E01A5FB2DE053559873BBF232A05B0EF3C089548B629128E2950008834258C17AD5D7BB95D819240453881CECD57E3C486B71F42AA66CDB708D1888D04AD2561AEA875CD89F791BA7554037EA843C1D26D3B017D054A6D478FC3B18CF9043C97121F2025E1153B8F2565CD56634F0FC50FB520C9ABA85C643A2E3EC64605C070186B6B88229CF157007257A07C16E440B4EB7C43E472EC6AC3BBEAB3D774491FA45C3EF7E386A273C4C8C83951BBE8244AFE125A897D8BA57F01C567B13E7F8B2837FC1FD7EC5C2D49097F1CA9B21908D3C568D962EE9627D19978E1C13AC186483D1019BEC84C5EA1E51080FD6FFBCCE8BD93EBD5A6283AA0D54E3E737A6B0E47F9D36CA1FF490A790A387DDD1629619DACF904A6D5B1A214D678E9790DEA26790138049C8F2AE8738972CA6DAA5C8AACEDA1C681666871473057CB8660916B201104DCDE24C50E8110901D63E7346A79EE3C8C6C23A41299C6BC6B375E6113F806AA5CA680AB8727924571D64A0E60FCED52982304FEFC6CF14217685AD622AE7C255C3CD8C3F942B565DADE333C4FB85B6F4A0CC9F0F307ADEFB53E941ECDBC22C35924B224232958556D9F241D39B4F35F0CEB8C15E48C31548FE90DBBAE96971EBB70E22A06374B20B4738254E290B6004A3511E22F0CDECDF35D943A1B9DA7D6070661C8D2C859D59F6B617009DC71FE320D707885B4EEAF921537A8A2100416CCAC4DDC2EED2E81DC3C43C4AA6DC316EB96070E2D2F515318B236BC91B0328E664BA45D8F95D045DFEE9C48712904245121BC0C09F6E99D5AFAC37BB771F02B09B45D5FC8668656C5C22F3E9208E1EFAE116B70F326857062070395D2548E6DFE703FBDCBA55BEB9B664647C6AA0A5118D3CDA5067F37E22EEDFCC163F0837134C13F22C9232309B57FD58DE03EA9B8FDB17DFE86E8677F385C8EDEA89A88AAE2D512046AE787F4B0C4F086AAAA02F04344C4B17385EA4B5AC0EA6C9545601BF72AAB0A2BA44D152A884EC2F8E0D58E5A9E9A63D6D7375DEAC6A9AAFD1A5F6A63D48F7FFFF7C49EF7AE87EA3627537AEB5B12F7ABFC451FF34D2064FAA2180F28E45E2350558E62D9FB6C27504C26C2732FBEA10768BF668F6F8CB1D760A4549677C252C9302995CCB01DAF901DCFA6265DF1CBE37607C024F793E0C9DD8B79571791D88AD4F9430529D5574A0FD672A0E58A7A6ED8702070012DD19C49CBEF24A458788CF61B5263AEC5BAA1AF7515212140E452110A7EA7706888A628A7BC5DE532A6B65DE5A9C93816C012B57FC08C18AF7A09E79D1399DAD11B8E93AB3B06095DBB7DCF5EC43C961A19FA4A6BF1F1A8FC8E782DB275481F0CDC8BC91B368DDBB90958C343BDB9EA3D73CD83194F6EE029E5961CC2D957E7735DC28139727AE48C1F9062982E653FD58DEF3FA8C406BD6EAA9F359F7118DFB27150E5FA37B1CBF8E9F7F9BF0B48FB80574734EA173EAE5705138ED245441A06B0B026DE80449DDC2447BFCD0CFD6262A4B5472AE3F59A33A18DF52422F8B3A4DCF20E5B211D0012A958C5CF7FE04B07B02C2E90FCF022BB15F33CF24F78B92B941BF119EF064087B434808B2FCBB4C041ED73F6CA22A7EBCF53452EE00DC3309E9A3B63EF3117AAEBA6DBC770968B4A3F7BB16105C361717305499CC112A6A7714FED958F50D110D5C90B2347DF7B38C8FBEF645C612BDB39C9F0EAE77BE8D800335620A9F5BAEEAAA08B3BB73D29938A10D4C523414B0F24125CC65FE72859E0322313895A8FD24000BABBD5EF23FB9F5C5FD6A723B5BEE846FB9799F48EC378315B8519160A308101852287903935EF6026038751B2BD7C652A425EF8384B71F742A4949DE289522F55A59D9237580DC6A838CE8B3B267F9D08B4EBC7D189C939B1904D95A1517E9CB158FC0C1FEA2ED2359850007DE5BB1B24F6952D9D8A5ECCDC64E1A70B772556B931DAE32A737E1E8619923938C9BCCBD43171ABBB51FE26FA302FBB0887C6BD73F9464B0BD8F1B07777A784F8259313A816D2DA06799B6832B4E9F944C315FE52D4C53F8370BFFC3FC03344A97A2DD59D1B13F2B4ECB7F95EDD1957EFF86CB461A831245F54903756D59A454656BFB786135C28AF224A661CCCE0A556680D46547EE301490975498BDB9CDE5172B2081D61D0DB9C44043E5ECA079373EAE0EDC853F0C872BE6E7C9D129CD4866B14AA19D887F59732AA1079A4A27E02E2D5A0FAAF16FD81EA955FF2543D89A730B8F3B55C799B62EB5596A9E04ECD1BF07ABB3CFCD9D65417292E42280243F5216949ECAFC8A5693A3D0F598054A09CC74401DA824CAA56E19E9E334B583AE812A0887705E16B28D45202BECA7DD3C288917AE3006872D4BEF20B1129721DE2032647DFCC2997E6D9D906304AEC8B63CADCABB9DD57E7A92EB3B912D55AFF62341FBBA436F4F55FFA940A27624289D166A7464DC76404AB3E9DB1196F84117FDAA3FB2A31E72DD6E64BBE494DC046EB29E8AC2D13B19BD01A0F659842DCF076828A4DBF465FA07E7A70667BA5BB5E7E57C6EF87D8E36B28082B0F21829593095B48C6C27387A4CA482DB3A34B1F2B5FB1E6417CED689D9F1F24B61B4F7EFCE4DC5C1F5CF49B0BCF21243EAA2FC8DCE800B0709B53171CF2AB27A34ED0897BC930CEC6EFFFCE6A15DB715AC82AF26F5647CD1A9E0D6190C53F2DB0CDF8BDFF98A9747A6002EDE831455ABFE2BC53C8B8B74C06026EDDBCCF3D00AFD21D9D1D1E72C11FB5780E545AE5E959B3A1AE09EB64F815ACB6FC2ACBB8AA22013E1613A73DA170FA34133FA9F7AC1D8583082E8FF7C36D25887067759753FCCEEB531BCED5B175FF3E0EB751B86CB40ADEA448B07B93097BA8EE1ECC39FA62E01771BDA4904FAFD2922F51E90B1C6C1CBB5D97F30B4C525849A025E792A9C543ABD73A47AE10798FF4751D4C42206F8C810210DC636FD4CB1E645BF029C83FE9690D3D34E1256DABE407FE962E0516283098659098E9E03B026F284AB588662C3533E334E23AAB5C9465F75B713E9C184D32BF9063AF517F2C023272FD23F65BA1D260FB22E145F6ED09FB33F184C9C3D30FFC82C9D5C886E26308E008385F716E9BBA9FDEA0F66CEDC9A359B31E8DA8386F9FED267492CC09D919BFD964EDB4AA8AC456CA2AE432199094FF316FD2C3D55FA89999714AFA09EE960487369288DBEEAF285937DE0D8A6DD496DF929A9A0755EA79BC541B3940CA4CDB94DFABE2FD0C2342BFA9699D819A0E2C9DB31A7653FBFD314C18CB87D376E88FEB0279AAC1F199D36E57DA5DEC4CF72245EF9B8CAFD58798E27996E4409C6F49C1D9B27F20646AAB1A4608FC21A0450020A942E4DA5BE0157AE0C8485BB493D2E8919C129A7801E085F07269CD8B77413495C4965A8B6F65F99C043F9C215066B336148F043366A8A7615FE9E97648EF698614C5F0FC775C223618FD74C14463A00BB69777E73D012F1BEFF82C857B825415D6150D8A76B6BEB76DCD1A6834E61DFB49DDC0B17781491295D40D7F309CBA95A95EEA2E551595FFD9C0796FE6C7E708DB303C9EC2A39D55CCFAF4A2A93F87D11384BFD5FBEEA63347C0D7B707DA2CCEEC04A3FF601CD306C195615A21F3569939A85C6207120DEC8A085601CBE54DF2CE25B6A49B8770F6B1B914658D4B12546A3E7E5E7EC9C6D9F7B67558C6D13BDB486F8BFB3DB1FEB13865B04EFEA85F3EF602968D67EE74045FDCADE4111830DF7E381C1DBF1617B83FCC26181977DB4F573761C43BAD745AFB879C610419A01F35D1D0C58B417EDFEADE4D9AC75BEBE7005E8DDAB66CA4D0C4C222387AB6B3262C06E348A616C316B881D95C60D9929F9BB460A68BC569C82C0000C91E4665342A266EC078A240E99A77213493476FEA2F839CC5550D9A669D1A1BA516FAF7721CA4323A6BD126F873760B14A43435E49115999AA99FDF1C8B07235E879AD3A07FAF18EF15347F5E5DA352DE0186C269E5371401615DC87DC415AF64AEC871D9A36B94F41C46CF5D963B3D064D011A0445B9785086D23E22E79A2AFF851BAF9431783A96F1CE4D9F67B76A261FC230C3FBAA1EF54F2152D12C720C811BD0D77A8BA8D4D4C68413776BD9E8CF67180325696704DBFCBA440F2569697FC1CC8396DFF09A76ED5CFD7696A78975398369146FE717B4CCFC7ED164C5AE5D1B93B59F5651EF777E8C380D6A8D445430CED6A2FF5510DAB4CECAE271C81228AD9F5B03F2E91FE793F295E2AF0A4A3EB829A195EE0C5DC583DBEB87870C05B6790F5FCA32416246AFEF0E0CBF2D2BAA848B2A48277D39A142957F16FE985F86EDDF689FAA800C76C65AE6FFFD510555B04103FCE2BC8EFCD6BE889CC14C48178F881FE0C58B00047EB482CC973AA4F08F2A66BD9463A430506BC8EBF870B57A12CE70743225902440FE7D2D3AC2659C19970C97E58B822CE3EE8F59C2140C0EFE07BAC8C92FBE6A9A417C96E576F68E062CD260641E94874C4491439637612CF26F2F32089DD2E9D8A2FDA30EEC466CF801529641ABAAE073327B859E7AD462E04FA37647C385695AE888C121F07860FD244B94E4CBEB47C54FBFD5214C4B5DCE9AC3BF49D025347BE93C5922E8BF82BA1A88792E3F7E15645BB0F803B0470D9C2AF3872DB9172DFE1719FA8E9125DD8F3D1B06C4D22E8E1BAD5AED1F2D30CAA12EBCF8F4385500035A7A17258386D236D368C6954049CAFB646B7F5E290ED1E64E5860D52DE857E81A0369571768972788B74BC56A3561E4F1FC8FCCD5A2D94CA831D72B25FC09EA10DE7B3CDF73E4FBD458D672C20C7C18F77BE430588B12772A1DAEE5916C018BAE61B48BBA24047D1793F87DCB67899CB5BE33AA18D89185CC0312C2C5FF6A67564BC46158F05ED2766619C49395ABC2931230D2385772D6CF2FBFB61142B81729902680A32844C45F6033B2BECDF236574F2EB3CF972EFFD8ED922831A8C134AD029B026E2B1F6BCD6B73D824C017023D885EC1130548926226A7B5961B93B79FFF04BC31EFC82C30C3E5632456DB18D690EAA849FF20A8B9099F47836AD5B2D7BB3825BB5BD04DC032915020E46E0B4B8FDE0530EB6DA0DE5C02285080A8C5EE338C681DB65C7AC09DE7166DCF87D49A93FCF48BCF81EC4E98465F58A7FD408ACC62ED5805EE95326345930356320ED42E8DBC83B3391EB19F1A856FFC22189FA78CA16D9A7B95A566C22789EEE8F765378B291941BCD792443BB9EB682535412DF35BCA91A13AB3F8161CF01194C3B6221F3871F8FE5EEBB50E295EC2A93D418CE65CFA8C2CD4955176212B9FE680AF7802C848EDC3482E9570158378DBF04FD8DB632B37C92AF64BA22081DD324BCE8D79E6C0E0F454C89D2E641C17511D7586D252C4825577AED8D2FD4AA3C750622546F5FEF5306EE4869A8D09640EDEFA85AAFB0BE0874B380237E80EF60A25D6DD01F6D05B1E8056636D3DE7C76D4ACAF302C5F8CB45829DFABDFCBD475FED7C75B72C62170E9E662AA5A7724A637094ED1E1AF3442D0A987F58D59E21C20E047FC0721041E7B2E5645ECE269D0F53974C68D02945F93748AC94E2BE3800456797A3F289F16052056B348FE65EE4FA70043E51B8F1E4BF86882A63AD04F4AD6418668FFA1CCAA5EC16CBBE106A51E9C89972B9F9AE8C75B2E46C01C6FCA40077872BCEF85400543A9865A22626AE1B37419B14923AB3B68CF0DD16AFC9DEEF71CA46883F82F074991E7F6048E94F8B3551C98561906E3CD375410777EAA471BA75315BDF26DCB450267A74BB526DA2A151E05EFF598EE05C09B4C941E8FCAF790DA6D3B7F3AB0F7415353A16F98181079F662509457161E651FED6711273672ACBFAADAC99EAADA5D1EAEA2353CA638833C1A282D6A5349B45EC66F4D59D61A1CE104AFFD3D46EB4B980375B873D93879B4D3E51D1E55325C61266AD84B8CF33884854437F63B45E53EDC8566DD8140759DF59875F10D0E9BD2539C16EC02F01B003D23EE94F073799DFFDE31CFCB7EDFE5E54A55F48D478786A855A2AF2F093BEC7A66905D51E09D721EE7F13EDCDC16D4BC30F6C8AA2682F5AC67EC9AC0DA6EF692455564DE7283F4ACD3D5A54658A9DC4EDDF2FE02633253E3AAB0EA03F2A134790A9C8776B1F639ACF21BD640DDAF53CE005BF2E770E43F13017133C1A9F0AA22912C3BBC22559CD7B94100476C0305FB5D1BF3A6BE5CF8166D747530C268030171A3AFB16397ABAABF2B2E3FE3E7A6FE7B38648DFD03743434255EADE06C15414E0ED5C8535487C57058E7833EB83285DD86B58A0375046E3F6B7D4E48FDCA5305ECF1E501EEAB26A0AF1DA42BE1057BF2D8D059A68B4DD8FA7798E7D7498C828E948D51C64D73FEEB8EE9545760424E66015B601D60AC8A9F28EA8A45B35F67228B159763B3A5A554E17E27A1F9719A354A81C5EE1C651DE7F2B2AD52F9A9283F7221DC4ABAEAA25BA61B3BF284E8A5B750550B318979161607AF610108426B4855E82FC7954F8A6FDF7A4801392B631A0CF602A4ADF6A6091BB6330B79A14363BFE39C9CB8EE1200CA9B521F3114DCDC4C56F4124FB6AA5F4226BBEF1C7EE63E26D441558EC6612EE3F1DA02A496C806D966CF22AD3123F9494D5A822222F44BA513F85CC3874D75E5C53E5DEC97BABB5EB505A5BFC380E5B0580C417BDEFCB0FD8E5D909E7B335219493CE802D61CA1929F337D2D5E9BE18302AC6B8B0BFA16C88D505E4A2A1CE371B39C6686A8E2EA4B5ABEEC9B7F83AEF26C0D9BCEC7D71D4F262F7575CE677882400B79B2255AEA1FC220205D1D7B48F9A16BDE1C7124A9EC7F1760896D647CE3465A4B7419ECCD01238C0CA7A6C031AAD68BC462995C012B619D330DFA60A25DA33D06B32FD4EFC49ECCF8F5180235BEE5C5A2E1901A59EA5910028CA9CF16C2D9AEF479B97E7B019C0FC3CC530C136), (0x824BDC0BD88D32C6A1FC2631ACFA6362B690DCC05775AA15590468D874D0CA32525A6E20518F16B968D046B3F38F504162CE0AA519B7EA0DA0C7B2D3255951D031F4DE528C4211277A2357862FF621CAB42676A6C625199A70607F8ADC42930F7E7581FEB0FEB51FBCE22AF55F63DEAAA5E81FFEE3AA090CDA43E12BC3874B388F4807B9742219B67156EAE3FA233B0C82D5E4F422952CD46B75246C1C8A5C3597F266175B253582CE688D8CC02612B708D5A9EEA25615FA1C334DFFFEAD9AE6FAB44C08BD23B05C9F6225BA089F1345636C6346E16E9240DC6BFB27D8368320CEA6910CD90AFAE4244C4E40315BF27C20079C924A53058C210B2B5128888468DE04EB620E066C58727E22941F520F81797E07D19AF1D67BA004EACDDEA8BC9BC8E6612C6F8F6D199B431FCB31716DCEFCA9D7AA81B3CEED2D70C10A1C9E7ACAC286CC38F1E211E910ED3557D10B492F961CD035D0121A151873FEFFCE63FDFCC95509AAA434DC1A97EE99937D771C2226927300CD44F9B06CB7207EE3121BADF0398D7B019F8A613FB69DE2788697A057DCD83BF0FC2F845B593EED145E3684D2EBA344E9A020870811C116A61737E61F7F27073ADFBDF3090920A8619C4DE07F190F8DE253B7B7BB5033DE3B18DE442157CD94372F4AF22EAF3AE08077266BC4E0978D07A903CBC8704BEAABDFB7F12ADB8609CFB9A94FCF1D5E3319D7374329C81A5B80503D775302CCC6E35F474FF749B5A4F01D9C0A3647BDEA4BD0B2F13908C0E3C45C70D99D0EB5CDEDE26C6FD60F3BCF2192520C2C0F253993532C834FDA8DDB9F638A9BD9DB07E167CE1D53DB4E133B95E3CFA6B5B4B6B536364649E2327D125490CF72859FF5468A70A45DF1D15E443FF1ED6B0BE626EBACD465A294BDFF35510BFE4A7EA1B6F6ED891C440F59C364D80209F04412066D6AE4C5B03A53B1CC716E0CE6D314C59E3BF77E82CAE1DB531100CA92B30FF13E0490DF9ADB05BB9AD74FD3A04CDD91C43C6BB54C9383A38808729F3A881F19617DCDE142342BC2353CE3AB7B0E3A06336E0655485AA5AB80ED569169668112B83671237FFB4E8F11A97F10B0D8277ACD6B6BCB81C9D007D8226055DE9958CEBAD1F3459D1787382077449FDA94FAA8C5DCC3FEFBB690EE65694A5C9BF8B07750B155DEE5E2DCB5E333AB0A85312D4327B89002D55AD2044005DF33CC2A9C27C6CC4E283F1CC2E2FF0E1AC80B8668333C), ('00000000-0000-0000-0000-000000000000'), ('2001-01-01 00:00:00.000'), ('2052-02-01 09:00:00'), (null))"; + break; + } + + return ($query); +} + +?> diff --git a/test/pdo_sqlsrv/MsData.inc b/test/pdo_sqlsrv/MsData.inc new file mode 100644 index 00000000..32c5058c --- /dev/null +++ b/test/pdo_sqlsrv/MsData.inc @@ -0,0 +1,65 @@ + 1 " . $large_string . "'", "' 2 " . $large_string . "'"); + +$binary_col = array('0x0', '0x0'); + +$int_col = array ( 1, 2); + +$decimal_col = array (111.111, 222.222); + +$guid_col = array("'AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA'", "'BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB'"); + +$null_col = 'null'; + +$comma = ","; +$closing_brace = "),"; + +class PDO_Types_1_Class{ + var $IntCol; + var $CharCol; + var $NCharCol; + var $DateTimeCol; + var $VarcharCol; + var $NVarCharCol; + var $FloatCol; + var $XmlCol; + + function dumpAll() + { + var_dump($this->IntCol); + var_dump($this->CharCol); + var_dump($this->NCharCol); + var_dump($this->DateTimeCol); + var_dump($this->VarcharCol); + var_dump($this->NVarCharCol); + var_dump($this->FloatCol); + var_dump($this->XmlCol); + } +} +$table1_class = 'PDO_Types_1_Class'; + + + +?> diff --git a/test/pdo_sqlsrv/MsSetup.inc b/test/pdo_sqlsrv/MsSetup.inc new file mode 100644 index 00000000..83da1943 --- /dev/null +++ b/test/pdo_sqlsrv/MsSetup.inc @@ -0,0 +1,38 @@ + diff --git a/test/pdo_sqlsrv/PDO_ConnPool_Unix.phpt b/test/pdo_sqlsrv/PDO_ConnPool_Unix.phpt index f348fa23..458526e0 100644 --- a/test/pdo_sqlsrv/PDO_ConnPool_Unix.phpt +++ b/test/pdo_sqlsrv/PDO_ConnPool_Unix.phpt @@ -4,7 +4,7 @@ PDO Connection Pooling Test on Unix This test assumes odbcinst.ini has not been modified. This test also requires root privileges to modify odbcinst.ini file on Linux. --SKIPIF-- -"; - - - // Generate unique DB name, example: php_20160817_1471475608267 - $dbName = "php_" . date("Ymd") . "_" . round(microtime(true)*1000); - - // Generic table name example: php_20160817_1471475608267.dbo.php_firefly - $tableName = $dbName.".dbo.php_firefly"; - - // Connection options - $connectionInfo = array("UID"=>"$username", "PWD"=>"$password"); -?> diff --git a/test/pdo_sqlsrv/pdo_002_connect_app.phpt b/test/pdo_sqlsrv/pdo_002_connect_app.phpt index 717a5020..77a5a4d0 100644 --- a/test/pdo_sqlsrv/pdo_002_connect_app.phpt +++ b/test/pdo_sqlsrv/pdo_002_connect_app.phpt @@ -1,14 +1,15 @@ --TEST-- Connection option APP name unicode --SKIPIF-- + --FILE-- --FILE-- quote( $param ); -// CREATE database -$conn->query("CREATE DATABASE ". $dbName) ?: die(); - -// Create table -$query = "CREATE TABLE ".$tableName." (col1 VARCHAR(10), col2 VARCHAR(20))"; -$stmt = $conn->query($query); +// Create a temporary table +$tableName = '#tmpTable'; +$query = "CREATE TABLE $tableName (col1 VARCHAR(10), col2 VARCHAR(20))"; +$stmt = $conn->exec($query); if( $stmt === false ) { die(); } // Inserd data @@ -42,9 +40,6 @@ $query = "delete from $tableName where col1 = ?"; $stmt = $conn->prepare( $query ); $stmt->execute(array($param)); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - //free the statement and connection $stmt=null; $conn=null; diff --git a/test/pdo_sqlsrv/pdo_012_bind_param.phpt b/test/pdo_sqlsrv/pdo_012_bind_param.phpt index bdd786df..bb28a2c7 100644 --- a/test/pdo_sqlsrv/pdo_012_bind_param.phpt +++ b/test/pdo_sqlsrv/pdo_012_bind_param.phpt @@ -1,15 +1,12 @@ --TEST-- uses an input/output parameter --SKIPIF-- - + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$dbh = new PDO( "sqlsrv:server=$server; database=$databaseName", "$uid", "$pwd" ); $dbh->query("IF OBJECT_ID('dbo.sp_ReverseString', 'P') IS NOT NULL DROP PROCEDURE dbo.sp_ReverseString"); $dbh->query("CREATE PROCEDURE dbo.sp_ReverseString @String as VARCHAR(2048) OUTPUT as SELECT @String = REVERSE(@String)"); @@ -19,9 +16,6 @@ $stmt->bindParam(1, $string, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 2048); $stmt->execute(); print "Result: ".$string."\n"; // Expect 987654321 -// DROP database -$dbh->query("DROP DATABASE ". $dbName) ?: die(); - //free the statement and connection $stmt = null; $dbh = null; diff --git a/test/pdo_sqlsrv/pdo_013_row_count.phpt b/test/pdo_sqlsrv/pdo_013_row_count.phpt index 1aad0a2c..887ae835 100644 --- a/test/pdo_sqlsrv/pdo_013_row_count.phpt +++ b/test/pdo_sqlsrv/pdo_013_row_count.phpt @@ -1,49 +1,45 @@ --TEST-- Number of rows in a result set --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO( "sqlsrv:server=$server; database=$databaseName", "$uid", "$pwd" ); // Create table -$stmt = $conn->query("CREATE TABLE ".$tableName." (c1 VARCHAR(32))"); +$tableName = '#tmpTable1'; +$stmt = $conn->exec("CREATE TABLE $tableName (c1 VARCHAR(32))"); $stmt=null; // Insert data -$query = "INSERT INTO ".$tableName." VALUES ('Salmon'),('Butterfish'),('Cod'),('NULL'),('Crab')"; +$query = "INSERT INTO $tableName VALUES ('Salmon'),('Butterfish'),('Cod'),('NULL'),('Crab')"; $stmt = $conn->query($query); $res[] = $stmt->rowCount(); // Update data -$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='Cod'"; +$query = "UPDATE $tableName SET c1='Salmon' WHERE c1='Cod'"; $stmt = $conn->query($query); $res[] = $stmt->rowCount(); // Update data -$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='NULL'"; +$query = "UPDATE $tableName SET c1='Salmon' WHERE c1='NULL'"; $stmt = $conn->query($query); $res[] = $stmt->rowCount(); // Update data -$query = "UPDATE ".$tableName." SET c1='Salmon' WHERE c1='NO_NAME'"; +$query = "UPDATE $tableName SET c1='Salmon' WHERE c1='NO_NAME'"; $stmt = $conn->query($query); $res[] = $stmt->rowCount(); // Update data -$query = "UPDATE ".$tableName." SET c1='N/A'"; +$query = "UPDATE $tableName SET c1='N/A'"; $stmt = $conn->query($query); $res[] = $stmt->rowCount(); print_r($res); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - $stmt=null; $conn=null; print "Done" diff --git a/test/pdo_sqlsrv/pdo_014_integer_custom_formats.phpt b/test/pdo_sqlsrv/pdo_014_integer_custom_formats.phpt index 9503f397..a5983666 100644 --- a/test/pdo_sqlsrv/pdo_014_integer_custom_formats.phpt +++ b/test/pdo_sqlsrv/pdo_014_integer_custom_formats.phpt @@ -1,23 +1,22 @@ --TEST-- Number MAX_INT to string with custom formats --SKIPIF-- + --FILE-- query("CREATE DATABASE $dbName") ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table +$tableName = '#testCustomFormats'; $query = "CREATE TABLE $tableName (col1 INT)"; -$stmt = $conn->query($query); +$stmt = $conn->exec($query); // Query number with custom format $query ="SELECT CAST($sample as varchar) + '.00'"; @@ -33,15 +32,11 @@ $stmt->execute(); // Fetching. Prepare with client buffered cursor $query = "SELECT TOP 1 cast(col1 as varchar) + '.00 EUR' FROM $tableName"; -$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, - PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); +$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); $stmt->execute(); $value = $stmt->fetchColumn(); var_dump ($value); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - //Free the statement and connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_015_integer_custom_formats_pooling.phpt b/test/pdo_sqlsrv/pdo_015_integer_custom_formats_pooling.phpt index 2a2172e7..63ba3a59 100644 --- a/test/pdo_sqlsrv/pdo_015_integer_custom_formats_pooling.phpt +++ b/test/pdo_sqlsrv/pdo_015_integer_custom_formats_pooling.phpt @@ -1,9 +1,10 @@ --TEST-- Number MAX_INT to string with custom formats, see pdo_014. Pooling enabled. --SKIPIF-- + --FILE-- query("select 1"); $conn0 = null; /* Connect */ -$conn = new PDO("sqlsrv:server=$serverName;ConnectionPooling=$pooling", $username, $password); +$conn = new PDO("sqlsrv:server=$server;database=$databaseName;ConnectionPooling=$pooling", $uid, $pwd); -// Create database -$conn->query("CREATE DATABASE $dbName") ?: die(); - -// Create table +// Create a temporary table +$tableName = '#testFormats'; $query = "CREATE TABLE $tableName (col1 INT)"; -$stmt = $conn->query($query); +$stmt = $conn->exec($query); // Query number with custom format $query ="SELECT CAST($sample as varchar) + '.00'"; @@ -39,15 +38,11 @@ $stmt->execute(); // Fetching. Prepare with client buffered cursor $query = "SELECT TOP 1 cast(col1 as varchar) + '.00 EUR' FROM $tableName"; -$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, - PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); +$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); $stmt->execute(); $value = $stmt->fetchColumn(); var_dump ($value); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - //Free the statement and connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_016.phpt b/test/pdo_sqlsrv/pdo_016.phpt index 33441cdb..f8d83529 100644 --- a/test/pdo_sqlsrv/pdo_016.phpt +++ b/test/pdo_sqlsrv/pdo_016.phpt @@ -1,23 +1,22 @@ --TEST-- Bind integer parameters; allow fetch numeric types. --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd, $conn_ops['pdo']); // Create table +$tableName = '#testPDO016'; $sql = "CREATE TABLE $tableName (c1 INT, c2 INT)"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (:num1, :num2)"; @@ -32,9 +31,6 @@ $stmt = $conn->query($sql); $row = $stmt->fetch(PDO::FETCH_NUM); var_dump ($row); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_017.phpt b/test/pdo_sqlsrv/pdo_017.phpt index 082f31d8..a745b866 100644 --- a/test/pdo_sqlsrv/pdo_017.phpt +++ b/test/pdo_sqlsrv/pdo_017.phpt @@ -1,20 +1,18 @@ --TEST-- Fetch string with new line and tab characters --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO( "sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table -$sql = "CREATE TABLE ".$tableName. - " (c1 VARCHAR(32), c2 CHAR(32), c3 NVARCHAR(32), c4 NCHAR(32))"; -$stmt = $conn->query($sql); +$tableName = '#pdo_017'; +$sql = "CREATE TABLE $tableName (c1 VARCHAR(32), c2 CHAR(32), c3 NVARCHAR(32), c4 NCHAR(32))"; +$stmt = $conn->exec($sql); // Bind parameters and insert data $sql = "INSERT INTO $tableName VALUES (:val1, :val2, :val3, :val4)"; @@ -28,14 +26,11 @@ $stmt->execute(); // Get data $sql = "SELECT UPPER(c1) AS VARCHAR, UPPER(c2) AS CHAR, - UPPER(c3) AS NVARCHAR, UPPER(c4) AS NCHAR FROM $tableName"; + UPPER(c3) AS NVARCHAR, UPPER(c4) AS NCHAR FROM $tableName"; $stmt = $conn->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt=null; $conn=null; diff --git a/test/pdo_sqlsrv/pdo_018_next_result_set.phpt b/test/pdo_sqlsrv/pdo_018_next_result_set.phpt index 647681c3..db95b615 100644 --- a/test/pdo_sqlsrv/pdo_018_next_result_set.phpt +++ b/test/pdo_sqlsrv/pdo_018_next_result_set.phpt @@ -1,19 +1,18 @@ --TEST-- Moves the cursor to the next result set --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table +$tableName = '#testResultSet'; $sql = "CREATE TABLE $tableName (c1 INT, c2 VARCHAR(40))"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (?,?)"; @@ -41,9 +40,6 @@ echo $a['c1'] . "|" . $a['c2'] . "\n"; foreach ($data2 as $a) echo $a[0] . "|" . $a[1] . "\n"; -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_019_next_result_set_pooling.phpt b/test/pdo_sqlsrv/pdo_019_next_result_set_pooling.phpt index 9e570159..0213325b 100644 --- a/test/pdo_sqlsrv/pdo_019_next_result_set_pooling.phpt +++ b/test/pdo_sqlsrv/pdo_019_next_result_set_pooling.phpt @@ -1,24 +1,23 @@ --TEST-- Moves the cursor to the next result set with pooling enabled --SKIPIF-- + --FILE-- query("SELECT 1"); $conn0 = null; // Connect -$conn = new PDO("sqlsrv:server=$serverName;ConnectionPooling=1", $username, $password); - -// CREATE database -$conn->query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName;ConnectionPooling=1", $uid, $pwd); // Create table +$tableName = '#nextResultPooling'; $sql = "CREATE TABLE $tableName (c1 INT, c2 XML)"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (?,?)"; @@ -46,9 +45,6 @@ echo $a['c1']."|".$a['c2']."\n"; foreach ($data2 as $a) echo $a[0] . "|".$a[1]."\n"; -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_020_bind_params_array.phpt b/test/pdo_sqlsrv/pdo_020_bind_params_array.phpt index 05ea05a0..e552ccf7 100644 --- a/test/pdo_sqlsrv/pdo_020_bind_params_array.phpt +++ b/test/pdo_sqlsrv/pdo_020_bind_params_array.phpt @@ -1,19 +1,18 @@ --TEST-- Bind parameters using an array --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table +$tableName = '#bindParams'; $sql = "CREATE TABLE $tableName (ID TINYINT, SID CHAR(5))"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (?,?)"; @@ -41,9 +40,6 @@ $data = $stmt->fetchAll(); foreach ($data as $a) echo $a['ID'] . "|" . $a['SID'] . "\n"; -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_021_extended_ascii.phpt b/test/pdo_sqlsrv/pdo_021_extended_ascii.phpt index 6158c1b6..78d1e618 100644 --- a/test/pdo_sqlsrv/pdo_021_extended_ascii.phpt +++ b/test/pdo_sqlsrv/pdo_021_extended_ascii.phpt @@ -1,19 +1,18 @@ --TEST-- Bind parameters VARCHAR(n) extended ASCII --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table +$tableName = '#extendedAscii'; $sql = "CREATE TABLE $tableName (code CHAR(2), city VARCHAR(32))"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (?,?)"; @@ -36,9 +35,6 @@ $data = $stmt->fetchAll(); foreach ($data as $a) echo $a[0] . "|" . $a[1] . "\n"; -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_022_xml_bind_value.phpt b/test/pdo_sqlsrv/pdo_022_xml_bind_value.phpt index 6b1164a6..d57e9e56 100644 --- a/test/pdo_sqlsrv/pdo_022_xml_bind_value.phpt +++ b/test/pdo_sqlsrv/pdo_022_xml_bind_value.phpt @@ -1,20 +1,19 @@ --TEST-- Unicode XML message using bindValue() --SKIPIF-- + --FILE-- setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -// Create database -$conn->query("CREATE DATABASE ". $dbName) ?: die(); - -// Create table +// Create a temporary table +$tableName = '#testXMLBindValue'; $sql = "CREATE TABLE $tableName (ID INT PRIMARY KEY NOT NULL IDENTITY, XMLMessage XML)"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // XML samples $xml1 = ' @@ -35,7 +34,7 @@ try $stmt = $conn->prepare("INSERT INTO $tableName (XMLMessage) VALUES (:msg)"); $stmt->bindValue(':msg', $xml1); $stmt->execute(); - + $stmt = $conn->prepare("INSERT INTO $tableName (XMLMessage) VALUES (?)"); $stmt->bindValue(1, $xml2); $stmt->execute(); @@ -48,10 +47,7 @@ catch (PDOException $ex) { $stmt = $conn->query("select * from $tableName"); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); var_dump($row); - -// Drop database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - + // Close connection $stmt=null; $conn=null; diff --git a/test/pdo_sqlsrv/pdo_023.phpt b/test/pdo_sqlsrv/pdo_023.phpt index 5c213705..4b081493 100644 --- a/test/pdo_sqlsrv/pdo_023.phpt +++ b/test/pdo_sqlsrv/pdo_023.phpt @@ -3,16 +3,13 @@ Bind values with PDO::PARAM_BOOL, enable/disable fetch numeric type attribute --SKIPIF-- --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Run test Test(); @@ -25,9 +22,6 @@ Test(); $conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, TRUE); Test(); -// Drop database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; @@ -37,33 +31,33 @@ print "Done"; // Generic test starts here function Test() { - global $conn, $tableName, $sample; + global $conn, $tableName, $sample; - // Drop table if exists - $sql = "IF OBJECT_ID('$tableName') IS NOT NULL DROP TABLE $tableName"; - $stmt = $conn->query($sql); - - // Create table - $sql = "CREATE TABLE $tableName (c1 INT, c2 BIT)"; - $stmt = $conn->query($sql) ?: die(); + // Drop table if exists + $sql = "IF OBJECT_ID('$tableName') IS NOT NULL DROP TABLE $tableName"; + $stmt = $conn->query($sql); + + // Create table + $sql = "CREATE TABLE $tableName (c1 INT, c2 BIT)"; + $stmt = $conn->query($sql) ?: die(); - // Insert data using bind values - $sql = "INSERT INTO $tableName VALUES (:v1, :v2)"; - foreach ($sample as $s) { - $stmt = $conn->prepare($sql); - $stmt->bindValue(':v1', $s[0], PDO::PARAM_BOOL); - $stmt->bindValue(':v2', $s[1], PDO::PARAM_BOOL); - $stmt->execute(); - } + // Insert data using bind values + $sql = "INSERT INTO $tableName VALUES (:v1, :v2)"; + $stmt = $conn->prepare($sql); + foreach ($sample as $s) { + $stmt->bindValue(':v1', $s[0], PDO::PARAM_BOOL); + $stmt->bindValue(':v2', $s[1], PDO::PARAM_BOOL); + $stmt->execute(); + } - // Get data - $sql = "SELECT * FROM $tableName"; - $stmt = $conn->query($sql); - $row = $stmt->fetchAll(PDO::FETCH_NUM); + // Get data + $sql = "SELECT * FROM $tableName"; + $stmt = $conn->query($sql); + $row = $stmt->fetchAll(PDO::FETCH_NUM); - // Print out - for($i=0; $i<$stmt->rowCount(); $i++) - { var_dump($row[$i][0]); var_dump($row[$i][1]); } + // Print out + for($i=0; $i<$stmt->rowCount(); $i++) + { var_dump($row[$i][0]); var_dump($row[$i][1]); } } ?> diff --git a/test/pdo_sqlsrv/pdo_035_binary_encoding_error_bound_by_name.phpt b/test/pdo_sqlsrv/pdo_035_binary_encoding_error_bound_by_name.phpt index 35c695f5..3dbc370d 100644 --- a/test/pdo_sqlsrv/pdo_035_binary_encoding_error_bound_by_name.phpt +++ b/test/pdo_sqlsrv/pdo_035_binary_encoding_error_bound_by_name.phpt @@ -1,21 +1,20 @@ --TEST-- GitHub Issue #35 binary encoding error when binding by name --SKIPIF-- + --FILE-- query($sql); + $stmt = $conn->exec($sql); // Insert data using bind parameters $sql = "INSERT INTO $tableName VALUES (?)"; @@ -33,8 +32,6 @@ function test() $stmt->execute(); $stmt->fetch(PDO::FETCH_BOUND); var_dump($val1 === $value); - - $stmt = $conn->query("DROP TABLE $tableName"); // Close connection $stmt = null; diff --git a/test/pdo_sqlsrv/pdo_040_error_information.phpt b/test/pdo_sqlsrv/pdo_040_error_information.phpt index a9c83410..33f4ace2 100644 --- a/test/pdo_sqlsrv/pdo_040_error_information.phpt +++ b/test/pdo_sqlsrv/pdo_040_error_information.phpt @@ -1,19 +1,18 @@ --TEST-- Retrieve error information; supplied values does not match table definition --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO("sqlsrv:server=$server; database=$databaseName", $uid, $pwd); // Create table +$tableName = '#pdo_040test'; $sql = "CREATE TABLE $tableName (code INT)"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data using bind parameters // Number of supplied values does not match table definition @@ -25,9 +24,6 @@ $params = array(2010,"London"); $stmt->execute($params); print_r($stmt->errorInfo()); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - // Close connection $stmt = null; $conn = null; diff --git a/test/pdo_sqlsrv/pdo_060_prepare_execute_fetch_pooling_default.phpt b/test/pdo_sqlsrv/pdo_060_prepare_execute_fetch_pooling_default.phpt index ee2e66cb..afb516b3 100644 --- a/test/pdo_sqlsrv/pdo_060_prepare_execute_fetch_pooling_default.phpt +++ b/test/pdo_sqlsrv/pdo_060_prepare_execute_fetch_pooling_default.phpt @@ -1,57 +1,56 @@ --TEST-- Prepare, execute statement and fetch with pooling unset (default) --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;", + $uid, $pwd, $connection_options['pdo']); // Create table +$tableName = 'pdo_060_test'; $sql = "CREATE TABLE $tableName (Столица NVARCHAR(32), year INT)"; $stmt = $conn->query($sql); // Insert data -$sql = "INSERT INTO ".$tableName." VALUES (?,?)"; +$sql = "INSERT INTO $tableName VALUES (?,?)"; $stmt = $conn->prepare($sql); $stmt->execute(array("Лондон",2012)); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); $conn = null; // Create a new pool -$conn0 = new PDO( "sqlsrv:server=$serverName;", - $username, $password); +$conn0 = new PDO( "sqlsrv:server=$server;database=$databaseName;", + $uid, $pwd); $conn0 = null; - + // Connection can use an existing pool -$conn = new PDO( "sqlsrv:server=$serverName;", - $username, $password); +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;", + $uid, $pwd); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); - -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - + + +$conn->query("DROP TABLE $tableName"); + // Close connection $stmt=null; $conn=null; diff --git a/test/pdo_sqlsrv/pdo_061_prepare_execute_fetch_pooling_enabled.phpt b/test/pdo_sqlsrv/pdo_061_prepare_execute_fetch_pooling_enabled.phpt index 0c46ff87..b5627355 100644 --- a/test/pdo_sqlsrv/pdo_061_prepare_execute_fetch_pooling_enabled.phpt +++ b/test/pdo_sqlsrv/pdo_061_prepare_execute_fetch_pooling_enabled.phpt @@ -1,57 +1,55 @@ --TEST-- Prepare, execute statement and fetch with pooling enabled --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=1;", + $uid, $pwd, $connection_options['pdo']); // Create table +$tableName = 'pdo_061test'; $sql = "CREATE TABLE $tableName (Столица NVARCHAR(32), year INT)"; $stmt = $conn->query($sql); // Insert data -$sql = "INSERT INTO ".$tableName." VALUES (?,?)"; +$sql = "INSERT INTO $tableName VALUES (?,?)"; $stmt = $conn->prepare($sql); $stmt->execute(array("Лондон",2012)); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); $conn = null; // Create a new pool -$conn0 = new PDO( "sqlsrv:server=$serverName;ConnectionPooling=1;", - $username, $password); +$conn0 = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=1;", + $uid, $pwd); $conn0 = null; - + // Connection can use an existing pool -$conn = new PDO( "sqlsrv:server=$serverName;ConnectionPooling=1;", - $username, $password); +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=1;", + $uid, $pwd); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); - -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); - + +$conn->query("DROP TABLE $tableName"); + // Close connection $stmt=null; $conn=null; diff --git a/test/pdo_sqlsrv/pdo_062_prepare_execute_fetch_pooling_disabled.phpt b/test/pdo_sqlsrv/pdo_062_prepare_execute_fetch_pooling_disabled.phpt index dc30a772..8dcc9f1a 100644 --- a/test/pdo_sqlsrv/pdo_062_prepare_execute_fetch_pooling_disabled.phpt +++ b/test/pdo_sqlsrv/pdo_062_prepare_execute_fetch_pooling_disabled.phpt @@ -1,56 +1,55 @@ --TEST-- Prepare, execute statement and fetch with pooling disabled --SKIPIF-- + --FILE-- query("CREATE DATABASE ". $dbName) ?: die(); +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=0;", + $uid, $pwd, $connection_options['pdo']); // Create table +$tableName = 'pdo_62test'; $sql = "CREATE TABLE $tableName (Столица NVARCHAR(32), year INT)"; -$stmt = $conn->query($sql); +$stmt = $conn->exec($sql); // Insert data -$sql = "INSERT INTO ".$tableName." VALUES (?,?)"; +$sql = "INSERT INTO $tableName VALUES (?,?)"; $stmt = $conn->prepare($sql); $stmt->execute(array("Лондон",2012)); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); $conn = null; // Create a new pool -$conn0 = new PDO( "sqlsrv:server=$serverName;ConnectionPooling=0;", - $username, $password); +$conn0 = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=0;", + $uid, $pwd); $conn0 = null; - -// Connection can use an existing pool -$conn = new PDO( "sqlsrv:server=$serverName;ConnectionPooling=0;", - $username, $password); + +// Connection can use an existing pool? +$conn = new PDO( "sqlsrv:server=$server;database=$databaseName;ConnectionPooling=0;", + $uid, $pwd); // Get data -$stmt = $conn->query("select * from $tableName"); +$stmt = $conn->query("SELECT * FROM $tableName"); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row); - -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); + + +$conn->query("DROP TABLE $tableName"); // Close connection $stmt=null; diff --git a/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt b/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt index fec3331a..70594615 100644 --- a/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt +++ b/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt @@ -1,36 +1,37 @@ --TEST-- Exception is thrown if the unsupported attribute ATTR_PERSISTENT is put into the connection options --SKIPIF-- + --FILE-- true); - $conn = new PDO( $dsn, $username, $password, $attr); + $conn = new PDO( $dsn, $uid, $pwd, $attr); //free the connection $conn=null; } catch( PDOException $e ) { echo "Exception from unsupported attribute (ATTR_PERSISTENT) is caught\n"; - //exit; } try{ + + require_once 'MsCommon.inc'; + echo "\nTesting new connection after exception thrown in previous connection...\n"; - $tableName1 = GetTempTableName('tab1', false); - $conn = new PDO( $dsn, $username, $password ); + $tableName1 = GetTempTableName('tab1'); + $conn = new PDO( $dsn, $uid, $pwd ); $sql = "CREATE TABLE $tableName1 (c1 int, c2 varchar(10))"; - $stmt = $conn->query($sql); + $stmt = $conn->exec($sql); $ret = $conn->exec("INSERT INTO $tableName1 VALUES(1, 'column2')"); $stmt = $conn->query("SELECT * FROM $tableName1"); $result = $stmt->fetch(PDO::FETCH_ASSOC); if ($result['c1'] == 1 && $result['c2'] == 'column2') { - echo "Test successfully"; + echo "Test successfully completed"; } //free the statement and connection $stmt = null; @@ -45,4 +46,4 @@ Testing a connection with ATTR_PERSISTENT... Exception from unsupported attribute (ATTR_PERSISTENT) is caught Testing new connection after exception thrown in previous connection... -Test successfully +Test successfully completed diff --git a/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt b/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt index fbb68d79..d262d2ce 100644 --- a/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt +++ b/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt @@ -1,22 +1,23 @@ --TEST-- +Test unsupported connection attribute ATTR_PREFETCH +--DESCRIPTION-- Exception is thrown for the unsupported connection attribute ATTR_PREFETCH only if it is set after PDO::ERRMODE_EXCEPTION is turned on --SKIPIF-- + --FILE-- true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); - $conn = new PDO( $dsn, $username, $password, $attr); + $conn = new PDO( $dsn, $uid, $pwd, $attr); echo "Error from supported attribute (ATTR_PREFETCH) is silented\n\n"; $conn=null; echo "Testing a connection with ATTR_PREFETCH after ERRMODE_EXCEPTION...\n"; $attr = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PREFETCH => true); - $conn = new PDO( $dsn, $username, $password, $attr); + $conn = new PDO( $dsn, $uid, $pwd, $attr); //free the connection $conn=null; } diff --git a/test/pdo_sqlsrv/pdo_069_fetch_empty_nvarchar_buffered.phpt b/test/pdo_sqlsrv/pdo_069_fetch_empty_nvarchar_buffered.phpt index b650dc54..e99d05fb 100644 --- a/test/pdo_sqlsrv/pdo_069_fetch_empty_nvarchar_buffered.phpt +++ b/test/pdo_sqlsrv/pdo_069_fetch_empty_nvarchar_buffered.phpt @@ -1,12 +1,13 @@ --TEST-- GitHub issue #69 - fetching an empty nvarchar using client buffer --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql = "EXEC dbo.sp_executesql diff --git a/test/pdo_sqlsrv/pdo_228_setAttribute_clientbuffermaxkbsize.phpt b/test/pdo_sqlsrv/pdo_228_setAttribute_clientbuffermaxkbsize.phpt index 4d240b96..76970f63 100644 --- a/test/pdo_sqlsrv/pdo_228_setAttribute_clientbuffermaxkbsize.phpt +++ b/test/pdo_sqlsrv/pdo_228_setAttribute_clientbuffermaxkbsize.phpt @@ -1,50 +1,50 @@ --TEST-- sqlsrv_has_rows() using a forward and scrollable cursor --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); -// Create database -$conn->query("CREATE DATABASE ". $dbName); -// Create table -$stmt = $conn->query("CREATE TABLE ".$dbName.".[dbo].[php_test_table_1] ([c1_int] int, [c2_varchar] varchar(1000))"); -$query = "INSERT INTO ".$dbName.".[dbo].[php_test_table_1] (c1_int, c2_varchar) VALUES ((990021574), ('>vh~Ö.bÐ*äß/ÄAabýZâOüzr£ðAß+|~|OU¢a|U<ßrv.uCB.ÐÜh_î+ãå@üðöã,U+ßvuU:/ý_Öãî/ð|bB|_Zbua©r++BA¢z£.üî¢öåäözÜ¢ßb:aöCrÄ~ýZ¢uªÐö.hhßð*zÜÜß*ãüåýãÄ+åýüüaߢÃÐBî@~AZöÃOßC@äoÃuCÜ,ÐÄa:îäÄÖý:h*ouªuåvUz_ArßAªãaãvÐåAUüAB:¢Äz|öub<üZvößüå:ãÄ@r/ZAÄðÄÄvzîv~C/£|ýýbüÖ~£|Öå<Üa~/v@åAz©¢£U_ßhbaÃß,zz<ã¢|<ä©>öAuövÖ>abu,zå,+ß/ü/ª_bbB:ÃC~£ü/O©O©ªAª_,|a¢~ýý/b>ßC@/böîöh>~£ð+Bßr©ÄÐÖßã:bA@:>B:UAbããîÜ~uÜ£îCöÖ£©_ÜßzÐ+ÖýZb,A:<z.ãîÄzC@©*ä|ã._ßZOäb¢Cßovå+uv.£B~~b£ª|ÖÄîßö>©Ãbb|©©ðA£åO~âãüîuvÄÜýUzîOÖ/oOßO*>ªßzêÖÐböÄåbîðîÐa~©ßîÄßУ<î>åBã_ý*ah¢rOĪ,ßo¢¢a|BÖäzU£.B£@Ü,ßAÃ>,ðßß+ßÜ©|Ðr©bCðТüãz>AßðåÃ>bÄåÄ|Z~äÃ/Cb*£bð_/Ða@~AÜãO+ý*CîîÃzÄöÃa©+@vuz>î>©.Cv>hÃý>©Bä,ö~@~@r,AðCu@Ü,@U*ÐvöÃêuã.Öa*uZªoZ/ðÖ©ßv_<ÖvåÜÐÜOÐoðßðÃUýZÐB:+ÄÃã£'))"; +// Create temporary table2 +$tableName1 = '#pdo_228_1'; +$tableName2 = '#pdo_228_2'; + +$stmt = $conn->exec("CREATE TABLE $tableName1 ([c1_int] int, [c2_varchar] varchar(1000))"); +$query = "INSERT INTO $tableName1 (c1_int, c2_varchar) VALUES ((990021574), ('>vh~Ö.bÐ*äß/ÄAabýZâOüzr£ðAß+|~|OU¢a|U<ßrv.uCB.ÐÜh_î+ãå@üðöã,U+ßvuU:/ý_Öãî/ð|bB|_Zbua©r++BA¢z£.üî¢öåäözÜ¢ßb:aöCrÄ~ýZ¢uªÐö.hhßð*zÜÜß*ãüåýãÄ+åýüüaߢÃÐBî@~AZöÃOßC@äoÃuCÜ,ÐÄa:îäÄÖý:h*ouªuåvUz_ArßAªãaãvÐåAUüAB:¢Äz|öub<üZvößüå:ãÄ@r/ZAÄðÄÄvzîv~C/£|ýýbüÖ~£|Öå<Üa~/v@åAz©¢£U_ßhbaÃß,zz<ã¢|<ä©>öAuövÖ>abu,zå,+ß/ü/ª_bbB:ÃC~£ü/O©O©ªAª_,|a¢~ýý/b>ßC@/böîöh>~£ð+Bßr©ÄÐÖßã:bA@:>B:UAbããîÜ~uÜ£îCöÖ£©_ÜßzÐ+ÖýZb,A:<z.ãîÄzC@©*ä|ã._ßZOäb¢Cßovå+uv.£B~~b£ª|ÖÄîßö>©Ãbb|©©ðA£åO~âãüîuvÄÜýUzîOÖ/oOßO*>ªßzêÖÐböÄåbîðîÐa~©ßîÄßУ<î>åBã_ý*ah¢rOĪ,ßo¢¢a|BÖäzU£.B£@Ü,ßAÃ>,ðßß+ßÜ©|Ðr©bCðТüãz>AßðåÃ>bÄåÄ|Z~äÃ/Cb*£bð_/Ða@~AÜãO+ý*CîîÃzÄöÃa©+@vuz>î>©.Cv>hÃý>©Bä,ö~@~@r,AðCu@Ü,@U*ÐvöÃêuã.Öa*uZªoZ/ðÖ©ßv_<ÖvåÜÐÜOÐoðßðÃUýZÐB:+ÄÃã£'))"; $stmt = $conn->query($query); -$stmt = $conn->query("CREATE TABLE ".$dbName.".[dbo].[php_test_table_2] ([c1_int] int, [c2_varchar] varchar(max))"); -$query = "INSERT INTO ".$dbName.".[dbo].[php_test_table_2] (c1_int, c2_varchar) VALUES ((990021574), ('>vh~Ö.bÐ*äß/ÄAabýZâOüzr£ðAß+|~|OU¢a|U<ßrv.uCB.ÐÜh_î+ãå@üðöã,U+ßvuU:/ý_Öãî/ð|bB|_Zbua©r++BA¢z£.üî¢öåäözÜ¢ßb:aöCrÄ~ýZ¢uªÐö.hhßð*zÜÜß*ãüåýãÄ+åýüüaߢÃÐBî@~AZöÃOßC@äoÃuCÜ,ÐÄa:îäÄÖý:h*ouªuåvUz_ArßAªãaãvÐåAUüAB:¢Äz|öub<üZvößüå:ãÄ@r/ZAÄðÄÄvzîv~C/£|ýýbüÖ~£|Öå<Üa~/v@åAz©¢£U_ßhbaÃß,zz<ã¢|<ä©>öAuövÖ>abu,zå,+ß/ü/ª_bbB:ÃC~£ü/O©O©ªAª_,|a¢~ýý/b>ßC@/böîöh>~£ð+Bßr©ÄÐÖßã:bA@:>B:UAbããîÜ~uÜ£îCöÖ£©_ÜßzÐ+ÖýZb,A:<z.ãîÄzC@©*ä|ã._ßZOäb¢Cßovå+uv.£B~~b£ª|ÖÄîßö>©Ãbb|©©ðA£åO~âãüîuvÄÜýUzîOÖ/oOßO*>ªßzêÖÐböÄåbîðîÐa~©ßîÄßУ<î>åBã_ý*ah¢rOĪ,ßo¢¢a|BÖäzU£.B£@Ü,ßAÃ>,ðßß+ßÜ©|Ðr©bCðТüãz>AßðåÃ>bÄåÄ|Z~äÃ/Cb*£bð_/Ða@~AÜãO+ý*CîîÃzÄöÃa©+@vuz>î>©.Cv>hÃý>©Bä,ö~@~@r,AðCu@Ü,@U*ÐvöÃêuã.Öa*uZªoZ/ðÖ©ßv_<ÖvåÜÐÜOÐoðßðÃUýZÐB:+ÄÃã£'))"; +$stmt = $conn->exec("CREATE TABLE $tableName2 ([c1_int] int, [c2_varchar] varchar(max))"); +$query = "INSERT INTO $tableName2 (c1_int, c2_varchar) VALUES ((990021574), ('>vh~Ö.bÐ*äß/ÄAabýZâOüzr£ðAß+|~|OU¢a|U<ßrv.uCB.ÐÜh_î+ãå@üðöã,U+ßvuU:/ý_Öãî/ð|bB|_Zbua©r++BA¢z£.üî¢öåäözÜ¢ßb:aöCrÄ~ýZ¢uªÐö.hhßð*zÜÜß*ãüåýãÄ+åýüüaߢÃÐBî@~AZöÃOßC@äoÃuCÜ,ÐÄa:îäÄÖý:h*ouªuåvUz_ArßAªãaãvÐåAUüAB:¢Äz|öub<üZvößüå:ãÄ@r/ZAÄðÄÄvzîv~C/£|ýýbüÖ~£|Öå<Üa~/v@åAz©¢£U_ßhbaÃß,zz<ã¢|<ä©>öAuövÖ>abu,zå,+ß/ü/ª_bbB:ÃC~£ü/O©O©ªAª_,|a¢~ýý/b>ßC@/böîöh>~£ð+Bßr©ÄÐÖßã:bA@:>B:UAbããîÜ~uÜ£îCöÖ£©_ÜßzÐ+ÖýZb,A:<z.ãîÄzC@©*ä|ã._ßZOäb¢Cßovå+uv.£B~~b£ª|ÖÄîßö>©Ãbb|©©ðA£åO~âãüîuvÄÜýUzîOÖ/oOßO*>ªßzêÖÐböÄåbîðîÐa~©ßîÄßУ<î>åBã_ý*ah¢rOĪ,ßo¢¢a|BÖäzU£.B£@Ü,ßAÃ>,ðßß+ßÜ©|Ðr©bCðТüãz>AßðåÃ>bÄåÄ|Z~äÃ/Cb*£bð_/Ða@~AÜãO+ý*CîîÃzÄöÃa©+@vuz>î>©.Cv>hÃý>©Bä,ö~@~@r,AðCu@Ü,@U*ÐvöÃêuã.Öa*uZªoZ/ðÖ©ßv_<ÖvåÜÐÜOÐoðßðÃUýZÐB:+ÄÃã£'))"; $stmt = $conn->query($query); $size = 2; -$stmt = $conn->prepare("SELECT * FROM ".$dbName.".[dbo].[php_test_table_1]", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_SCROLL,PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED,PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE=> $size)); -$attr = $stmt->getAttribute(constant('PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE')); +$stmt = $conn->prepare("SELECT * FROM $tableName1", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_SCROLL,PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED,PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE=> $size)); +$attr = $stmt->getAttribute(constant('PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE')); echo("Client Buffer Size in KB: $attr\n"); -$stmt->execute(); +$stmt->execute(); $numRows = 0; while ($result = $stmt->fetch()) - $numRows++; - + $numRows++; + echo ("Number of rows: $numRows\n"); $size = 3; -$stmt = $conn->prepare("SELECT * FROM ".$dbName.".[dbo].[php_test_table_2]", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_SCROLL,PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED,PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE=> $size)); -$attr = $stmt->getAttribute(constant('PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE')); +$stmt = $conn->prepare("SELECT * FROM $tableName2", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_SCROLL,PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED,PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE=> $size)); +$attr = $stmt->getAttribute(constant('PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE')); echo("Client Buffer Size in KB: $attr\n"); -$stmt->execute(); +$stmt->execute(); $numRows = 0; while ($result = $stmt->fetch()) - $numRows++; - + $numRows++; + echo ("Number of rows: $numRows\n"); -// DROP database -$conn->query("DROP DATABASE ". $dbName) ?: die(); $stmt=null; $conn=null; print "Done" diff --git a/test/pdo_sqlsrv/pdo_267_closeCursor.phpt b/test/pdo_sqlsrv/pdo_267_closeCursor.phpt index b49bdf20..fe26aaf0 100644 --- a/test/pdo_sqlsrv/pdo_267_closeCursor.phpt +++ b/test/pdo_sqlsrv/pdo_267_closeCursor.phpt @@ -1,14 +1,15 @@ --TEST-- Test closeCursor with a stmt before/after execute and fetch. --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); // prepare a stmt but don't execute, then closeCursor. @@ -51,8 +52,8 @@ try } catch( PDOException $e ) { - var_dump($e); - exit; + var_dump($e); + exit; } print "Done"; diff --git a/test/pdo_sqlsrv/pdo_270_fetch_binary.phpt b/test/pdo_sqlsrv/pdo_270_fetch_binary.phpt index 5edebcce..500d58d0 100644 --- a/test/pdo_sqlsrv/pdo_270_fetch_binary.phpt +++ b/test/pdo_sqlsrv/pdo_270_fetch_binary.phpt @@ -3,17 +3,18 @@ Test fetch from binary, varbinary, varbinary(max), image columns, without settin --DESCRIPTION-- Verifies GitHub issue 270 is fixed, users could not retrieve the data as inserted in binary columns without setting the binary encoding either on stmt or using bindCoulmn encoding. This test verifies that the data inserted in binary columns can be retrieved using fetch, fetchColumn, fetchObject, and fetchAll functions. - +--SKIPIF-- + --FILE-- exec($sql); @@ -31,7 +32,7 @@ $stmt->execute(); // loop through each column in the table foreach ($columns as $col){ - test_fetch($conn, $tableName, $col, $icon); + test_fetch($conn, $tableName, $col, $icon); } // DROP table $conn->query("DROP TABLE $tableName") ?: die(); @@ -44,47 +45,47 @@ print_r("Test finished successfully"); //calls various fetch methods function test_fetch($conn, $tableName, $columnName, $input){ - - $len = strlen($input); - $result = ""; - $sql = "SELECT $columnName from $tableName"; - - $stmt = $conn->query($sql); - $stmt->bindColumn(1, $result, PDO::PARAM_LOB); - $stmt->fetch(PDO::FETCH_BOUND); - //binary is fixed size, to evaluate output, compare it using strncmp - if( strncmp($result, $input, $len) !== 0){ - print_r("\nRetrieving using bindColumn failed"); - } + + $len = strlen($input); + $result = ""; + $sql = "SELECT $columnName from $tableName"; + + $stmt = $conn->query($sql); + $stmt->bindColumn(1, $result, PDO::PARAM_LOB); + $stmt->fetch(PDO::FETCH_BOUND); + //binary is fixed size, to evaluate output, compare it using strncmp + if( strncmp($result, $input, $len) !== 0){ + print_r("\nRetrieving using bindColumn failed"); + } - $result = ""; - $stmt = $conn->query($sql); - $stmt->bindColumn(1, $result, PDO::PARAM_LOB, 0 , PDO::SQLSRV_ENCODING_BINARY); - $stmt->fetch(PDO::FETCH_BOUND); - if( strncmp($result, $input, $len) !== 0){ - print_r("\nRetrieving using bindColumn with encoding set failed"); - } + $result = ""; + $stmt = $conn->query($sql); + $stmt->bindColumn(1, $result, PDO::PARAM_LOB, 0 , PDO::SQLSRV_ENCODING_BINARY); + $stmt->fetch(PDO::FETCH_BOUND); + if( strncmp($result, $input, $len) !== 0){ + print_r("\nRetrieving using bindColumn with encoding set failed"); + } - $result = ""; - $stmt = $conn->query($sql); - $result = $stmt->fetchColumn(); - if( strncmp($result, $input, $len) !== 0){ - print_r("\nRetrieving using fetchColumn failed"); - } + $result = ""; + $stmt = $conn->query($sql); + $result = $stmt->fetchColumn(); + if( strncmp($result, $input, $len) !== 0){ + print_r("\nRetrieving using fetchColumn failed"); + } - $result = ""; - $stmt = $conn->query($sql); - $result = $stmt->fetchObject(); - if( strncmp($result->$columnName, $input, $len) !== 0){ - print_r("\nRetrieving using fetchObject failed"); - } + $result = ""; + $stmt = $conn->query($sql); + $result = $stmt->fetchObject(); + if( strncmp($result->$columnName, $input, $len) !== 0){ + print_r("\nRetrieving using fetchObject failed"); + } - $result = ""; - $stmt = $conn->query($sql); - $result = $stmt->fetchAll( PDO::FETCH_COLUMN ); - if( strncmp($result[0], $input, $len) !== 0){ - print_r("\nRetrieving using fetchAll failed"); - } + $result = ""; + $stmt = $conn->query($sql); + $result = $stmt->fetchAll( PDO::FETCH_COLUMN ); + if( strncmp($result[0], $input, $len) !== 0){ + print_r("\nRetrieving using fetchAll failed"); + } } ?> diff --git a/test/pdo_sqlsrv/pdo_308_empty_output_param.phpt b/test/pdo_sqlsrv/pdo_308_empty_output_param.phpt index 80984d18..4aa5f8be 100644 --- a/test/pdo_sqlsrv/pdo_308_empty_output_param.phpt +++ b/test/pdo_sqlsrv/pdo_308_empty_output_param.phpt @@ -3,16 +3,14 @@ GitHub issue #308 - empty string set to output parameter on stored procedure --DESCRIPTION-- Verifies GitHub issue 308 is fixed, empty string returned as output parameter will remain an empty string. --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $procName = GetTempProcName(); diff --git a/test/pdo_sqlsrv/pdo_336_pho_exec_empty_result_set_error.phpt b/test/pdo_sqlsrv/pdo_336_pho_exec_empty_result_set_error.phpt index 9a6bb61f..1f0194cc 100644 --- a/test/pdo_sqlsrv/pdo_336_pho_exec_empty_result_set_error.phpt +++ b/test/pdo_sqlsrv/pdo_336_pho_exec_empty_result_set_error.phpt @@ -3,13 +3,13 @@ GitHub issue #336 - PDO::exec should not return an error with query returning SQ --DESCRIPTION-- Verifies GitHub issue 336 is fixed, PDO::exec on query returning SQL_NO_DATA will not give an error --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql = "DELETE FROM foo_table WHERE id = 42"; diff --git a/test/pdo_sqlsrv/pdo_connection_quote.phpt b/test/pdo_sqlsrv/pdo_connection_quote.phpt index b05d6a32..623060a7 100644 --- a/test/pdo_sqlsrv/pdo_connection_quote.phpt +++ b/test/pdo_sqlsrv/pdo_connection_quote.phpt @@ -1,17 +1,17 @@ --TEST-- testing the quote method with different inputs and then test with a empty query --SKIPIF-- - + --FILE-- quote("1'2'3'4'5'6'7'8", PDO::PARAM_INT); var_dump($output1); @@ -48,6 +48,7 @@ function Quote() function Repro() { StartTest("pdo_connection_quote"); + echo "\nStarting test...\n"; try { Quote(); @@ -65,10 +66,10 @@ Repro(); ?> --EXPECT-- -...Starting 'pdo_connection_quote' test... +Starting test... string(24) "'1''2''3''4''5''6''7''8'" string(16) "'{ABCD}''{EFGH}'" string(118) "'The quick brown fox jumps over the lazy dog0123456789'" Done -...Test 'pdo_connection_quote' completed successfully. +Test "pdo_connection_quote" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_connection_resiliency_keywords.phpt b/test/pdo_sqlsrv/pdo_connection_resiliency_keywords.phpt index d8810f09..76f20f4e 100644 --- a/test/pdo_sqlsrv/pdo_connection_resiliency_keywords.phpt +++ b/test/pdo_sqlsrv/pdo_connection_resiliency_keywords.phpt @@ -4,15 +4,15 @@ Test the connection resiliency keywords ConnectRetryCount and ConnectRetryInterv --FILE-- --FILE-- --FILE-- true ); - $database = "tempdb"; - $dsn = "sqlsrv:Server = $serverName; Database = $database"; + $dsn = "sqlsrv:Server = $server; database = $databaseName"; - $conn = new PDO( $dsn, $username, $password, $attr); + $conn = new PDO( $dsn, $uid, $pwd, $attr); $stmt = $conn->prepare("SELECT 1"); $stmt->execute(); diff --git a/test/pdo_sqlsrv/pdo_construct_conn_options.phpt b/test/pdo_sqlsrv/pdo_construct_conn_options.phpt index 67a97571..d4be30d4 100644 --- a/test/pdo_sqlsrv/pdo_construct_conn_options.phpt +++ b/test/pdo_sqlsrv/pdo_construct_conn_options.phpt @@ -1,21 +1,20 @@ --TEST-- Test PDO::__Construct by passing connection options --SKIPIF-- - + --FILE-- --FILE-- errorInfo)[2] ); @@ -21,7 +21,7 @@ catch( PDOException $e ) { //dsn with double right curly braces try { - $conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb}}", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database = {tempdb}}", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -31,7 +31,7 @@ catch( PDOException $e ) { //dsn with double right curly braces and semicolon try { - $conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb}};", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database = {tempdb}};", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -41,7 +41,7 @@ catch( PDOException $e ) { //dsn with right curly braces and other symbol try { - $conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb}?", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database = {tempdb}?", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -51,7 +51,7 @@ catch( PDOException $e ) { //dsn with no equal sign in one option try { - $conn = new PDO( "sqlsrv:Server =$serverName; Database", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -62,7 +62,7 @@ catch( PDOException $e ) { try { // Try to connect with no server specific - @$conn = new PDO( "sqlsrv:", $username, $password ); + @$conn = new PDO( "sqlsrv:", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -71,8 +71,8 @@ catch( PDOException $e ) { // Try to connect with no server specified try { - $database = "tempdb"; - @$conn = new PDO( "sqlsrv:Database = $database", $username, $password ); + $databaseName = "tempdb"; + @$conn = new PDO( "sqlsrv:database = $databaseName", $uid, $pwd ); } catch( PDOException $e ) { print_r( ($e->errorInfo)[2] ); @@ -85,19 +85,19 @@ echo "\n"; try { //dsn with curly braces - $conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb}", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database = {tempdb}", $uid, $pwd ); echo "value in curly braces OK\n"; //dsn with curly braces and semicolon - @$conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb};", $username, $password ); + @$conn = new PDO( "sqlsrv:Server =$server; database = {tempdb};", $uid, $pwd ); echo "value in curly braces followed by a semicolon OK\n"; //dsn with curly braces and trailing spaces - @$conn = new PDO( "sqlsrv:Server =$serverName; Database = {tempdb} ", $username, $password ); + @$conn = new PDO( "sqlsrv:Server =$server; database = {tempdb} ", $uid, $pwd ); echo "value in curly braces followed by trailing spaces OK\n"; //dsn with no value specified and ends with semicolon - $conn = new PDO( "sqlsrv:Server =$serverName; Database = ;", $username, $password ); + $conn = new PDO( "sqlsrv:Server =$server; database = ;", $uid, $pwd ); echo "dsn with no value specified and ends with semicolon OK\n"; } catch( PDOException $e ) { diff --git a/test/pdo_sqlsrv/pdo_exec_invalid_query.phpt b/test/pdo_sqlsrv/pdo_exec_invalid_query.phpt index 141959d1..8fb0d4f1 100644 --- a/test/pdo_sqlsrv/pdo_exec_invalid_query.phpt +++ b/test/pdo_sqlsrv/pdo_exec_invalid_query.phpt @@ -1,12 +1,12 @@ --TEST-- direct execution of an invalid query --SKIPIF-- - + --FILE-- exec("IF OBJECT_ID('table1', 'U') IS NOT NULL DROP TABLE table1"); diff --git a/test/pdo_sqlsrv/pdo_fetch_bindcolumn_fetchmode.phpt b/test/pdo_sqlsrv/pdo_fetch_bindcolumn_fetchmode.phpt index e1d07324..4e2fd2af 100644 --- a/test/pdo_sqlsrv/pdo_fetch_bindcolumn_fetchmode.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_bindcolumn_fetchmode.phpt @@ -1,21 +1,20 @@ --TEST-- fetch columns using fetch mode and different ways of binding columns --SKIPIF-- - + --FILE-- exec("CREATE TABLE $tableName ([c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml, [c29_time] time, [c30_date] date, [c31_datetime2] datetime2, [c32_datetimeoffset] datetimeoffset)"); @@ -64,6 +63,8 @@ function FetchMode_BoundMixed() $numFields = $stmt->columnCount(); + include("pdo_tools.inc"); + $i = 0; while ($row = $stmt->fetch(PDO::FETCH_BOUND)) { @@ -101,6 +102,7 @@ function GetQuery($tableName, $index) function Repro() { StartTest("pdo_fetch_bindcolumn_fetchmode"); + echo "\nStarting test...\n"; try { FetchMode_BoundMixed(); @@ -118,11 +120,10 @@ Repro(); ?> --EXPECT-- - -...Starting 'pdo_fetch_bindcolumn_fetchmode' test... +Starting test... Comparing data in row 1 Comparing data in row 2 Done -...Test 'pdo_fetch_bindcolumn_fetchmode' completed successfully. +Test "pdo_fetch_bindcolumn_fetchmode" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_fetch_columns_fetchmode.phpt b/test/pdo_sqlsrv/pdo_fetch_columns_fetchmode.phpt index dff29982..c6db1b57 100644 --- a/test/pdo_sqlsrv/pdo_fetch_columns_fetchmode.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_columns_fetchmode.phpt @@ -1,21 +1,20 @@ --TEST-- fetch columns using fetch mode --SKIPIF-- - + --FILE-- exec("CREATE TABLE $tableName ([c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml, [c29_time] time, [c30_date] date, [c31_datetime2] datetime2, [c32_datetimeoffset] datetimeoffset)"); @@ -32,6 +31,7 @@ function FetchMode_GetAllColumnsEx() $meta = $stmt->getColumnMeta(0); $colName = $meta['name']; + include("pdo_tools.inc"); // Fetching with fetch mode PDO::FETCH_ASSOC echo "\nComparing data in column 0 and rows \n"; for ($i = 1; $i <= $numRows; $i++) @@ -556,9 +556,10 @@ function GetQuery($tableName, $index) return $query; } -function Repro() +function RunTest() { StartTest("pdo_fetch_columns_fetchmode"); + echo "\nStarting test...\n"; try { FetchMode_GetAllColumnsEx(); @@ -571,12 +572,12 @@ function Repro() EndTest("pdo_fetch_columns_fetchmode"); } -Repro(); +RunTest(); ?> --EXPECT-- -...Starting 'pdo_fetch_columns_fetchmode' test... +Starting test... Comparing data in column 0 and rows 1 2 @@ -643,4 +644,4 @@ Comparing data in column 30 and rows Comparing data in column 31 and rows 1 2 Done -...Test 'pdo_fetch_columns_fetchmode' completed successfully. +Test "pdo_fetch_columns_fetchmode" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_fetch_complex_transactions.phpt b/test/pdo_sqlsrv/pdo_fetch_complex_transactions.phpt index f74c5f9a..9e410231 100644 --- a/test/pdo_sqlsrv/pdo_fetch_complex_transactions.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_complex_transactions.phpt @@ -1,8 +1,10 @@ --TEST-- Test transactions commit, rollback and aborting in between +--SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - $conn2 = new PDO( "sqlsrv:server=$serverName;Database=$database", $username, $password); + $conn2 = new PDO( "sqlsrv:server=$server;database=$databaseName", $uid, $pwd); $conn2->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $tableName = GetTempTableName('testTransaction', false); @@ -142,7 +144,7 @@ RunTest(); ?> --EXPECT--  -...Starting 'pdo_fetch_complex_transactions' test... +Test begins... Number of rows fetched: 10 Committed deleting 3 rows Number of rows fetched: 7 @@ -156,4 +158,4 @@ Deletion aborted Number of rows fetched: 4 Done -...Test 'pdo_fetch_complex_transactions' completed successfully. \ No newline at end of file +Test "pdo_fetch_complex_transactions" completed successfully. \ No newline at end of file diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_binary.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_binary.phpt index 2e38da2e..cfc6723c 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_binary.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_binary.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a varbinary column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 'asdgasdgasdgsadg'; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_char.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_char.phpt index f9f07b48..49b349c2 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_char.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_char.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a varchar column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = "eight"; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_datetime.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_datetime.phpt index 7e48158a..a040a55e 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_datetime.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_datetime.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a datetime column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = '2012-06-18 10:34:09'; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal.phpt index daa88221..c909b2dc 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a decimal column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal_bindColumn_int.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal_bindColumn_int.phpt index 99a144e4..9f73167e 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal_bindColumn_int.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_decimal_bindColumn_int.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a decimal column with the column bound an --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float.phpt index afed939a..aa42aa35 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float.phpt @@ -8,8 +8,8 @@ function FlatsAreEqual($a, $b, $epsilon = 3.9265E-6) { return (abs($a - $b) < $epsilon); } -require_once("autonomous_setup.php"); -$conn = new PDO( "sqlsrv:server=$serverName", $username, $password); +require_once("MsSetup.inc"); +$conn = new PDO( "sqlsrv:server=$server", $uid, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float_bindColumn_lob.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float_bindColumn_lob.phpt index 01c3d60b..7c39b250 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float_bindColumn_lob.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_float_bindColumn_lob.phpt @@ -8,8 +8,8 @@ function FlatsAreEqual($a, $b, $epsilon = 3.9265E-6) { return (abs($a - $b) < $epsilon); } -require_once("autonomous_setup.php"); -$conn = new PDO( "sqlsrv:server=$serverName", $username, $password); +require_once("MsSetup.inc"); +$conn = new PDO( "sqlsrv:server=$server", $uid, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int.phpt index 8c6f65fc..50904695 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a int column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int_bindColumn_int.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int_bindColumn_int.phpt index 623f3327..5f4c998d 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int_bindColumn_int.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_int_bindColumn_int.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a int column with the column bound and sp --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money.phpt index e6502be2..a2e2836b 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a money column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money_bindColumn_int.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money_bindColumn_int.phpt index 328a4cab..1a52f829 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money_bindColumn_int.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_money_bindColumn_int.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a money column with the column bound and --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_multicolumns.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_multicolumns.phpt index 096b3c68..f7815a50 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_multicolumns.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_multicolumns.phpt @@ -7,8 +7,8 @@ Uses buffered cursor to fetch from float, int, and decimal columns that have pos --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = 1234567890.1234; $sample1 = -1234567890.1234; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_strings_to_integers.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_strings_to_integers.phpt index ff0e1a8b..cde14b09 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_strings_to_integers.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_strings_to_integers.phpt @@ -7,8 +7,8 @@ prepare with cursor buffered and fetch various columns with the column bound and function test() { - require_once("autonomous_setup.php"); - $conn = new PDO( "sqlsrv:server=$serverName", $username, $password); + require_once("MsSetup.inc"); + $conn = new PDO( "sqlsrv:server=$server", $uid, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $decimal = -2345209.3103; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_unicode.phpt b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_unicode.phpt index b8174cba..941489b6 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_unicode.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursorBuffered_unicode.phpt @@ -4,8 +4,8 @@ prepare with cursor buffered and fetch a nvarchar column --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sample = "가각"; diff --git a/test/pdo_sqlsrv/pdo_fetch_cursor_scroll_random.phpt b/test/pdo_sqlsrv/pdo_fetch_cursor_scroll_random.phpt index a38d3343..6bafee2e 100644 --- a/test/pdo_sqlsrv/pdo_fetch_cursor_scroll_random.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_cursor_scroll_random.phpt @@ -1,8 +1,10 @@ --TEST-- Test with cursor scroll and select different rows in some random order +--SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $tableName = GetTempTableName(); @@ -173,7 +175,7 @@ RunTest(); ?> --EXPECT--  -...Starting 'pdo_fetch_cursor_scroll_random' test... +Test begins... 1 2 3 @@ -216,4 +218,4 @@ last row: 10 row 1 from the current row: Done -...Test 'pdo_fetch_cursor_scroll_random' completed successfully. \ No newline at end of file +Test "pdo_fetch_cursor_scroll_random" completed successfully. \ No newline at end of file diff --git a/test/pdo_sqlsrv/pdo_fetch_fetchinto_query_args.phpt b/test/pdo_sqlsrv/pdo_fetch_fetchinto_query_args.phpt index 2d0641e3..72991158 100644 --- a/test/pdo_sqlsrv/pdo_fetch_fetchinto_query_args.phpt +++ b/test/pdo_sqlsrv/pdo_fetch_fetchinto_query_args.phpt @@ -1,11 +1,11 @@ --TEST-- fetch columns using fetch mode and different ways of binding columns --SKIPIF-- - + --FILE-- exec("CREATE TABLE $tableName ([c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml, [c29_time] time, [c30_date] date, [c31_datetime2] datetime2, [c32_datetimeoffset] datetimeoffset)"); @@ -60,6 +59,7 @@ function FetchInto_Query_Args() function VerifyResults($stmt1, $stmt2, $tableName) { + include 'pdo_tools.inc'; $numFields = $stmt1->columnCount(); $i = 0; @@ -106,6 +106,7 @@ function GetQuery($tableName, $index) function Repro() { StartTest("pdo_fetch_fetchinto_query_args"); + echo "\nStarting test...\n"; try { FetchInto_Query_Args(); @@ -123,12 +124,12 @@ Repro(); ?> --EXPECT-- -...Starting 'pdo_fetch_fetchinto_query_args' test... +Starting test... Constructor called with 0 arguments Constructor called with 2 arguments Comparing data in row 1 Comparing data in row 2 Done -...Test 'pdo_fetch_fetchinto_query_args' completed successfully. +Test "pdo_fetch_fetchinto_query_args" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_getAttribute_clientInfo.phpt b/test/pdo_sqlsrv/pdo_getAttribute_clientInfo.phpt index f85a0e35..a27ddcde 100644 --- a/test/pdo_sqlsrv/pdo_getAttribute_clientInfo.phpt +++ b/test/pdo_sqlsrv/pdo_getAttribute_clientInfo.phpt @@ -2,9 +2,9 @@ Test client info by calling PDO::getAttribute with PDO::ATTR_CLIENT_VERSION --FILE-- getAttribute( PDO::ATTR_CLIENT_VERSION )); diff --git a/test/pdo_sqlsrv/pdo_get_attr_invalid.phpt b/test/pdo_sqlsrv/pdo_get_attr_invalid.phpt index 88f70a59..2fbe46f0 100644 --- a/test/pdo_sqlsrv/pdo_get_attr_invalid.phpt +++ b/test/pdo_sqlsrv/pdo_get_attr_invalid.phpt @@ -1,17 +1,17 @@ --TEST-- Test getting invalid attributes --SKIPIF-- - + --FILE-- PDO::ERRMODE_SILENT)); + $conn = new PDO( $dsn, $uid, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); @$conn->getAttribute( PDO::ATTR_FETCH_TABLE_NAMES ); print_r (($conn->errorInfo())[2]); @@ -26,7 +26,7 @@ try{ echo "\n"; } catch ( PDOException $e ){ - exit; + echo $e->getMessage(); } ?> diff --git a/test/pdo_sqlsrv/pdo_get_set_attr.phpt b/test/pdo_sqlsrv/pdo_get_set_attr.phpt index a200585c..22df9197 100644 --- a/test/pdo_sqlsrv/pdo_get_set_attr.phpt +++ b/test/pdo_sqlsrv/pdo_get_set_attr.phpt @@ -1,11 +1,11 @@ --TEST-- Test PDO::setAttribute() and PDO::getAttribute() methods. --SKIPIF-- - + --FILE-- -getAttribute( constant($attr) ); var_dump( $result); @@ -30,7 +30,7 @@ function get_attr( $conn, $attr ) function set_attr( $conn, $attr, $val ) { try { - + echo "Set Result $attr :\n"; $result = $conn->setAttribute( constant($attr), $val ); var_dump( $result); @@ -44,7 +44,7 @@ function set_attr( $conn, $attr, $val ) function set_get_attr($testName, $conn, $attr, $val) { try { - + echo "\n". $testName . ":\n"; set_attr($conn, $attr, $val ); get_attr($conn, $attr ); @@ -57,15 +57,14 @@ function set_get_attr($testName, $conn, $attr, $val) try { - $database = "tempdb"; - $conn = new PDO("sqlsrv:Server=$serverName;Database=$database", $username, $password); - $values = array ( "PDO::ATTR_ERRMODE" => 2, + $conn = new PDO("sqlsrv:Server=$server;database=$databaseName", $uid, $pwd); + $values = array ( "PDO::ATTR_ERRMODE" => 2, "PDO::ATTR_SERVER_VERSION" => "whatever", - "PDO::ATTR_DRIVER_NAME" => "whatever", + "PDO::ATTR_DRIVER_NAME" => "whatever", "PDO::ATTR_STRINGIFY_FETCHES" => true, "PDO::ATTR_CLIENT_VERSION" => "whatever", - "PDO::ATTR_SERVER_INFO" => "whatever", - "PDO::ATTR_CASE" => PDO::CASE_LOWER, + "PDO::ATTR_SERVER_INFO" => "whatever", + "PDO::ATTR_CASE" => PDO::CASE_LOWER, "PDO::SQLSRV_ATTR_ENCODING" => PDO::SQLSRV_ENCODING_SYSTEM, "PDO::ATTR_DEFAULT_FETCH_MODE" => PDO::FETCH_ASSOC, "PDO::ATTR_ORACLE_NULLS" => PDO::NULL_NATURAL, @@ -76,12 +75,12 @@ try "PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE" => false ); - $attributes = array ( "PDO::ATTR_ERRMODE", + $attributes = array ( "PDO::ATTR_ERRMODE", "PDO::ATTR_SERVER_VERSION", - "PDO::ATTR_DRIVER_NAME", + "PDO::ATTR_DRIVER_NAME", "PDO::ATTR_STRINGIFY_FETCHES", "PDO::ATTR_CLIENT_VERSION", - "PDO::ATTR_SERVER_INFO", + "PDO::ATTR_SERVER_INFO", "PDO::ATTR_CASE", "PDO::SQLSRV_ATTR_ENCODING", "PDO::ATTR_DEFAULT_FETCH_MODE", @@ -154,11 +153,11 @@ Set Result PDO::ATTR_SERVER_INFO : SQLSTATE\[IMSSP\]: A read-only attribute was designated on the PDO object. Get Result PDO::ATTR_SERVER_INFO : array\(3\) { - \["CurrentDatabase"\]=> + \["CurrentdatabaseName"\]=> string\([0-9]*\) ".*" \["SQLServerVersion"\]=> string\(10\) "[0-9]{2}.[0-9]{2}.[0-9]{4}" - \["SQLServerName"\]=> + \["SQLserver"\]=> string\([0-9]*\) ".*" } diff --git a/test/pdo_sqlsrv/pdo_invalid_conn_opt.phpt b/test/pdo_sqlsrv/pdo_invalid_conn_opt.phpt index 9bd60c76..c714dfab 100644 --- a/test/pdo_sqlsrv/pdo_invalid_conn_opt.phpt +++ b/test/pdo_sqlsrv/pdo_invalid_conn_opt.phpt @@ -1,20 +1,20 @@ --TEST-- Test PDO::__Construct with invalid connection option --SKIPIF-- - + --FILE-- --FILE--  --EXPECT--  -...Starting 'pdo_katmai_special_types' test... +Starting test... Showing results of Katmai basic fields string(16) "03:32:25.5643401" @@ -157,4 +158,4 @@ string(6) "1.0000" string(6) "1.0000" Done -...Test 'pdo_katmai_special_types' completed successfully. \ No newline at end of file +Test "pdo_katmai_special_types" completed successfully. \ No newline at end of file diff --git a/test/pdo_sqlsrv/pdo_lastInsertId.phpt b/test/pdo_sqlsrv/pdo_lastInsertId.phpt index 2e488f31..fb1d8cca 100644 --- a/test/pdo_sqlsrv/pdo_lastInsertId.phpt +++ b/test/pdo_sqlsrv/pdo_lastInsertId.phpt @@ -1,42 +1,36 @@ --TEST-- Test the PDO::lastInsertId() method. --SKIPIF-- + --FILE-- exec("IF OBJECT_ID('tmp_table1', 'U') IS NOT NULL DROP TABLE [tmp_table1]"); - $conn->exec("IF OBJECT_ID('tmp_table2', 'U') IS NOT NULL DROP TABLE [tmp_table2]"); - $conn->exec("IF OBJECT_ID('tmp_table3', 'U') IS NOT NULL DROP TABLE [tmp_table3]"); - $conn->exec('CREATE TABLE tmp_table1(id INT IDENTITY(100,2), val INT)'); - $conn->exec('CREATE TABLE tmp_table2(id INT IDENTITY(200,2), val INT)'); - $conn->exec('CREATE TABLE tmp_table3(id INT, val INT)'); - - $conn->exec('INSERT INTO tmp_table1 VALUES(1)'); - $conn->exec('INSERT INTO tmp_table2 VALUES(2)'); + $databaseName = "tempdb"; + $conn = new PDO("sqlsrv:Server=$server;database=$databaseName", $uid, $pwd); + + // create temporary tables + $conn->exec('CREATE TABLE #tmp_table1(id INT IDENTITY(100,2), val INT)'); + $conn->exec('CREATE TABLE #tmp_table2(id INT IDENTITY(200,2), val INT)'); + $conn->exec('CREATE TABLE #tmp_table3(id INT, val INT)'); + + $conn->exec('INSERT INTO #tmp_table1 VALUES(1)'); + $conn->exec('INSERT INTO #tmp_table2 VALUES(2)'); $id = $conn->lastInsertId(); var_dump($id); - - $conn->exec('INSERT INTO tmp_table2 VALUES(3)'); - $conn->exec('INSERT INTO tmp_table1 VALUES(4)'); + + $conn->exec('INSERT INTO #tmp_table2 VALUES(3)'); + $conn->exec('INSERT INTO #tmp_table1 VALUES(4)'); $id = $conn->lastInsertId(); var_dump($id); - + // Should return empty string as the table does not have an IDENTITY column. - $conn->exec('INSERT INTO tmp_table3 VALUES(1,1)'); + $conn->exec('INSERT INTO #tmp_table3 VALUES(1,1)'); $id = $conn->lastInsertId(); - var_dump($id); - - // clean up - $conn->exec('DROP TABLE tmp_table1'); - $conn->exec('DROP TABLE tmp_table2'); - $conn->exec('DROP TABLE tmp_table3'); + var_dump($id); } catch( PDOException $e ) { diff --git a/test/pdo_sqlsrv/pdo_nested_query_mars.phpt b/test/pdo_sqlsrv/pdo_nested_query_mars.phpt index 26cf0c7a..9d912dc8 100644 --- a/test/pdo_sqlsrv/pdo_nested_query_mars.phpt +++ b/test/pdo_sqlsrv/pdo_nested_query_mars.phpt @@ -1,20 +1,19 @@ --TEST-- fetch multiple result sets with MARS on and then off --SKIPIF-- - + --FILE-- SetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->exec("CREATE TABLE $tableName ([c1_int] int, [c2_varchar] varchar(20))"); @@ -56,9 +55,10 @@ function NestedQuery_Mars($on) $conn = null; } -function Repro() +function RunTest() { StartTest("pdo_nested_query_mars"); + echo "\nStarting test...\n"; try { NestedQuery_Mars(true); @@ -72,12 +72,12 @@ function Repro() EndTest("pdo_nested_query_mars"); } -Repro(); +RunTest(); ?> --EXPECT-- -...Starting 'pdo_nested_query_mars' test... +Starting test... Number of columns in First set: 2 Array @@ -105,4 +105,4 @@ stdClass Object ) SQLSTATE[IMSSP]: The connection cannot process this operation because there is a statement with pending results. To make the connection available for other queries, either fetch all results or cancel or free the statement. For more information, see the product documentation about the MultipleActiveResultSets connection option. Done -...Test 'pdo_nested_query_mars' completed successfully. +Test "pdo_nested_query_mars" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_output_decimal.phpt b/test/pdo_sqlsrv/pdo_output_decimal.phpt index e3d40137..c789c054 100644 --- a/test/pdo_sqlsrv/pdo_output_decimal.phpt +++ b/test/pdo_sqlsrv/pdo_output_decimal.phpt @@ -1,17 +1,16 @@ --TEST-- call stored procedures with inputs of ten different datatypes to get outputs of various types --SKIPIF-- - + --FILE-- --FILE-- prepare( "SELECT 1", array( PDO::ATTR_CURSOR => "PDO::CURSOR_FWDONLY" )); diff --git a/test/pdo_sqlsrv/pdo_prepare_invalid_encoding.phpt b/test/pdo_sqlsrv/pdo_prepare_invalid_encoding.phpt index 41d53c72..6650bc88 100644 --- a/test/pdo_sqlsrv/pdo_prepare_invalid_encoding.phpt +++ b/test/pdo_sqlsrv/pdo_prepare_invalid_encoding.phpt @@ -1,16 +1,16 @@ --TEST-- Test PDO::prepare by passing in invalid encoding values --SKIPIF-- - + --FILE-- prepare( "SELECT 1", array( PDO::SQLSRV_ATTR_ENCODING => "PDO::SQLSRV_ENCODING_SYSTEM" )); diff --git a/test/pdo_sqlsrv/pdo_prepare_invalid_option_key.phpt b/test/pdo_sqlsrv/pdo_prepare_invalid_option_key.phpt index c65bec0e..73417ed0 100644 --- a/test/pdo_sqlsrv/pdo_prepare_invalid_option_key.phpt +++ b/test/pdo_sqlsrv/pdo_prepare_invalid_option_key.phpt @@ -1,22 +1,20 @@ --TEST-- Test PDO::prepare by passing in a string key --SKIPIF-- - + --FILE-- PDO::ERRMODE_EXCEPTION); - $conn = new PDO( $dsn, $username, $password, $attr); + $conn = new PDO( $dsn, $uid, $pwd, $attr); $stmt = $conn->prepare( "SELECT 1", array( "PDO::ATTR_CURSOR" => PDO::CURSOR_FWDONLY )); - echo "Test Successful"; } catch( PDOException $e ) { diff --git a/test/pdo_sqlsrv/pdo_prepare_invalid_scrollable_cursor.phpt b/test/pdo_sqlsrv/pdo_prepare_invalid_scrollable_cursor.phpt index cca2e519..c70aabdf 100644 --- a/test/pdo_sqlsrv/pdo_prepare_invalid_scrollable_cursor.phpt +++ b/test/pdo_sqlsrv/pdo_prepare_invalid_scrollable_cursor.phpt @@ -1,17 +1,16 @@ --TEST-- Test PDO::prepare by passing in invalid scrollable type value --SKIPIF-- - + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); + $databaseName = "tempdb"; + $conn = new PDO( "sqlsrv:Server = $server; database = $databaseName", $uid, $pwd); // PDO::SQLSRV_CURSOR_BUFFERED should not be quoted $stmt1 = $conn->prepare( "SELECT 1", array( PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => "PDO::SQLSRV_CURSOR_BUFFERED" )); @@ -19,15 +18,14 @@ try // if ATTR_CURSOR is FWDONLY, cannot set SCROLL_TYPE $stmt2 = $conn->prepare( "SELECT 2", array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED )); - if ( $stmt1 || $stmt2 ) - { + if ( $stmt1 || $stmt2 ){ echo "Invalid values for PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE should return false.\n"; } else { echo "Invalid values for PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE return false.\n"; } } catch( PDOException $e ) { - var_dump( $e->errorInfo ); + echo $e->getMessage(); } ?> diff --git a/test/pdo_sqlsrv/pdo_prepare_options.phpt b/test/pdo_sqlsrv/pdo_prepare_options.phpt index e7dea4ce..dc51113c 100644 --- a/test/pdo_sqlsrv/pdo_prepare_options.phpt +++ b/test/pdo_sqlsrv/pdo_prepare_options.phpt @@ -1,38 +1,36 @@ --TEST-- Test PDO::prepare by passing in attributes --SKIPIF-- - + --FILE-- PDO::SQLSRV_ENCODING_UTF8, PDO::ATTR_STATEMENT_CLASS => array('CustomPDOStatement', array()), PDO::SQLSRV_ATTR_DIRECT_QUERY => true, PDO::ATTR_EMULATE_PREPARES => false, PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true ); - $conn = new PDO( $dsn, $username, $password); + $conn = new PDO( $dsn, $uid, $pwd); $stmt = $conn->prepare( "SELECT 1", $prep_attr ); echo "Test Successful"; } catch( PDOException $e ) { - var_dump( $e->errorInfo ); - exit; + echo $e->getMessage(); } ?> diff --git a/test/pdo_sqlsrv/pdo_query_timeout.phpt b/test/pdo_sqlsrv/pdo_query_timeout.phpt index ec56fbfb..45da1f9d 100644 --- a/test/pdo_sqlsrv/pdo_query_timeout.phpt +++ b/test/pdo_sqlsrv/pdo_query_timeout.phpt @@ -1,20 +1,19 @@ --TEST-- test query time out at the connection level and statement level --SKIPIF-- - + --FILE-- exec("CREATE TABLE $tableName ([c1_int] int, [c2_varchar] varchar(25))"); @@ -47,9 +46,10 @@ function QueryTimeout($connLevel) $conn = null; } -function Repro() +function RunTest() { StartTest("pdo_query_timeout"); + echo "\nStarting test...\n"; try { QueryTimeout(true); @@ -63,12 +63,12 @@ function Repro() EndTest("pdo_query_timeout"); } -Repro(); +RunTest(); ?> --EXPECT-- -...Starting 'pdo_query_timeout' test... +Starting test... Setting query timeout as an attribute in connection array(3) { [0]=> @@ -89,4 +89,4 @@ array(3) { } Done -...Test 'pdo_query_timeout' completed successfully. +Test "pdo_query_timeout" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_set_attr_invalid.phpt b/test/pdo_sqlsrv/pdo_set_attr_invalid.phpt index 3ddc8eda..081e33a5 100644 --- a/test/pdo_sqlsrv/pdo_set_attr_invalid.phpt +++ b/test/pdo_sqlsrv/pdo_set_attr_invalid.phpt @@ -1,17 +1,17 @@ --TEST-- Test setting invalid value or key in connection attributes --SKIPIF-- - + --FILE-- PDO::ERRMODE_SILENT)); + $conn = new PDO( $dsn, $uid, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); // Negative value for query timeout: should raise error @$conn->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, -1 ); @@ -23,7 +23,7 @@ try{ print_r (($conn->errorInfo())[2]); } catch ( PDOException $e ){ - exit; + echo $e->getMessage(); } ?> diff --git a/test/pdo_sqlsrv/pdo_set_attr_invalid_encoding.phpt b/test/pdo_sqlsrv/pdo_set_attr_invalid_encoding.phpt index 71b0b582..68cd3f47 100644 --- a/test/pdo_sqlsrv/pdo_set_attr_invalid_encoding.phpt +++ b/test/pdo_sqlsrv/pdo_set_attr_invalid_encoding.phpt @@ -1,17 +1,16 @@ --TEST-- Test setting invalid encoding attributes --SKIPIF-- - + --FILE-- PDO::ERRMODE_SILENT)); + $conn = new PDO( $dsn, $uid, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); // valid option: should have no error @$conn->setAttribute( PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_DEFAULT ); @@ -29,7 +28,7 @@ try{ echo "\n"; } catch ( PDOException $e ){ - exit; + echo $e->getMessage(); } ?> diff --git a/test/pdo_sqlsrv/pdo_statement_rowcount_query.phpt b/test/pdo_sqlsrv/pdo_statement_rowcount_query.phpt index f0c8fe7c..17d5eee2 100644 --- a/test/pdo_sqlsrv/pdo_statement_rowcount_query.phpt +++ b/test/pdo_sqlsrv/pdo_statement_rowcount_query.phpt @@ -1,20 +1,18 @@ --TEST-- test rowCount() with different querying method and test nextRowset() with different fetch --SKIPIF-- - + --FILE-- exec("CREATE TABLE $tableName ([c1_int] int, [c2_real] real)"); @@ -154,9 +152,10 @@ function DeleteData($conn, $tableName, $exec) $stmt = null; } -function Repro() +function RunTest() { StartTest("pdo_statement_rowcount_query"); + echo "\nStarting test...\n"; try { RowCount_Query(true); @@ -170,12 +169,12 @@ function Repro() EndTest("pdo_statement_rowcount_query"); } -Repro(); +RunTest(); ?> --EXPECT-- -...Starting 'pdo_statement_rowcount_query' test... +Starting test... Done -...Test 'pdo_statement_rowcount_query' completed successfully. +Test "pdo_statement_rowcount_query" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_stored_proc_fetch_datatypes.phpt b/test/pdo_sqlsrv/pdo_stored_proc_fetch_datatypes.phpt index 5158bb4f..e74849a6 100644 --- a/test/pdo_sqlsrv/pdo_stored_proc_fetch_datatypes.phpt +++ b/test/pdo_sqlsrv/pdo_stored_proc_fetch_datatypes.phpt @@ -1,11 +1,11 @@ --TEST-- call stored procedures with inputs of ten different datatypes to get outputs of various types --SKIPIF-- - + --FILE-- --EXPECT-- -...Starting 'pdo_stored_proc_fetch_datatypes' test... +Starting test... Done -...Test 'pdo_stored_proc_fetch_datatypes' completed successfully. +Test "pdo_stored_proc_fetch_datatypes" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_tools.inc b/test/pdo_sqlsrv/pdo_tools.inc index add9c6d4..3810328c 100644 --- a/test/pdo_sqlsrv/pdo_tools.inc +++ b/test/pdo_sqlsrv/pdo_tools.inc @@ -3,56 +3,6 @@ define("_EPSILON", 0.00001); define("_CHUNK_SIZE", 8192); -function StartTest($testName) -{ - echo "\n...Starting '$testName' test...\n"; - if (!extension_loaded("pdo_sqlsrv")) - { - die("pdo_sqlsrv driver cannot be loaded."); - } -} - -function EndTest($testName) -{ - echo "...Test '$testName' completed successfully.\n"; -} - -function GetTempTableName($table = '', $temporary = true) -{ - // A temporary table name with the '#' prefix will be automatically - // dropped once the connection is closed. Otherwise, the caller - // should take care of dropping the temp table afterwards. - - $timestamp = round(microtime(true)*1000); - - $prefix = ''; - if ($temporary) - $prefix = '#'; - - if (strlen($table) == 0) - $table = 'php_test_table'; - - return $prefix . $table . '_' . $timestamp; -} - -function GetTempProcName($proc = '', $temporary = true) -{ - // A temporary stored procedure name with the '#' prefix will be - // automatically dropped once the connection is closed. Otherwise, - // the caller should take care of dropping the temp procedure afterwards. - - $timestamp = round(microtime(true)*1000); - - $prefix = ''; - if ($temporary) - $prefix = '#'; - - if (strlen($proc) == 0) - $proc = 'php_test_proc'; - - return $prefix . $proc . '_' . $timestamp; -} - function CompareNumericData($actual, $expected) { if (! is_numeric($actual)) @@ -90,7 +40,7 @@ function CheckData($colType, $actual, $expected) { $success = true; - if (IsBinary($colType)) + if (IsBinaryType($colType)) { $actual = bin2hex($actual); } @@ -107,7 +57,7 @@ function CheckData($colType, $actual, $expected) $actual = trim($actual); $len = strlen($expected); - if (IsDateTime($colType)) + if (IsDateTimeType($colType)) { if ($colType != 'time') $len = min(strlen("YYYY-MM-DD HH:mm:ss"), $len); @@ -153,9 +103,9 @@ function CompareData($stmt, $rowIndex, $colIndex, $actual, $expected) $colType = $meta['sqlsrv:decl_type']; $colName = $meta['name']; - if (! IsUpdatable($colName)) + if (! IsColumnUpdatable($colName)) { - return true; // do nothing for non-IsUpdatable fields + return true; // do nothing for non-IsColumnUpdatable fields } return CompareDataValue($colType, $rowIndex, $colName, $actual, $expected); @@ -208,7 +158,7 @@ function GetColumnData($stmt, $query, $rowIndex, $colIndex) $type = $meta['sqlsrv:decl_type']; $name = $meta['name']; - if (!IsUpdatable($name)) + if (!IsColumnUpdatable($name)) { $skipCount++; } @@ -216,7 +166,7 @@ function GetColumnData($stmt, $query, $rowIndex, $colIndex) { if ($j == $colIndex) { - $data = GetInsertData($query, $type, $rowIndex, $j + 1, $skipCount); + $data = GetInsertDataByType($query, $type, $rowIndex, $j + 1, $skipCount); break; } } @@ -237,14 +187,14 @@ function InsertDataToArray($stmt, $query, $numFields, $rowIndex) $name = $meta['name']; $colIndex = $j + 1; - if (!IsUpdatable($name)) + if (!IsColumnUpdatable($name)) { $skipCount++; array_push($dataArray, ""); } else { - $data = GetInsertData($query, $type, $rowIndex, $colIndex, $skipCount); + $data = GetInsertDataByType($query, $type, $rowIndex, $colIndex, $skipCount); array_push($dataArray, $data); } } @@ -252,7 +202,7 @@ function InsertDataToArray($stmt, $query, $numFields, $rowIndex) return $dataArray; } -function GetInsertData($query, $colType, $rowIndex, $colIndex, $skip) +function GetInsertDataByType($query, $colType, $rowIndex, $colIndex, $skip) { $data = strstr($query, "(("); $pos = 1; @@ -287,7 +237,7 @@ function GetInsertData($query, $colType, $rowIndex, $colIndex, $skip) { $tmp = ""; } - else if (IsXml($colType)) + else if (IsXmlType($colType)) { $str = ">')"; $pos = strpos($data, $str); @@ -300,11 +250,11 @@ function GetInsertData($query, $colType, $rowIndex, $colIndex, $skip) { // N'data' $data = substr($data, 2, strlen($data) - 3); } - else if (IsLiteral($colType)) + else if (IsLiteralType($colType)) { // 'data' $data = substr($data, 1, strlen($data) - 2); } - else if (IsBinary($colType)) + else if (IsBinaryType($colType)) { // 0xdata $data = substr($data, 2); } @@ -355,7 +305,7 @@ function CompareBinaryStream($inputFile, $actual) return $matched; } -function IsUpdatable($colName) +function IsColumnUpdatable($colName) { $pos = strpos($colName, "_"); $type = substr($colName, $pos + 1); @@ -365,7 +315,7 @@ function IsUpdatable($colName) function IsDataUnicode($colType, $data) { - if (IsUnicode($colType)) + if (IsUnicodeType($colType)) return true; // This input string may be an XML string in unicode (i.e. // N'...') @@ -382,7 +332,7 @@ function IsDataUnicode($colType, $data) return false; } -function IsUnicode($type) +function IsUnicodeType($type) { switch ($type) { @@ -396,12 +346,12 @@ function IsUnicode($type) return (false); } -function IsXml($type) +function IsXmlType($type) { return ($type == 'xml'); } -function IsBinary($type) +function IsBinaryType($type) { switch ($type) { @@ -415,7 +365,7 @@ function IsBinary($type) return (false); } -function IsDateTime($type) +function IsDateTimeType($type) { switch ($type) { @@ -432,7 +382,7 @@ function IsDateTime($type) return (false); } -function IsLiteral($type) +function IsLiteralType($type) { switch ($type) { diff --git a/test/pdo_sqlsrv/pdo_transaction.phpt b/test/pdo_sqlsrv/pdo_transaction.phpt index 87332715..59caf10d 100644 --- a/test/pdo_sqlsrv/pdo_transaction.phpt +++ b/test/pdo_sqlsrv/pdo_transaction.phpt @@ -1,12 +1,14 @@ --TEST-- +test transaction rollback and commit +--DESCRIPTION-- starts a transaction, delete rows and rollback the transaction; starts a transaction, delete rows and commit --SKIPIF-- - + --FILE-- exec("IF OBJECT_ID('Table1', 'U') IS NOT NULL DROP TABLE Table1"); $conn->exec("CREATE TABLE Table1(col1 CHARACTER(1), col2 CHARACTER(1))"); diff --git a/test/pdo_sqlsrv/pdo_utf8_stored_proc_unicode_chars.phpt b/test/pdo_sqlsrv/pdo_utf8_stored_proc_unicode_chars.phpt index 1bc223ac..3fd9216d 100644 --- a/test/pdo_sqlsrv/pdo_utf8_stored_proc_unicode_chars.phpt +++ b/test/pdo_sqlsrv/pdo_utf8_stored_proc_unicode_chars.phpt @@ -1,11 +1,11 @@ --TEST-- call a stored procedure with unicode input to get output back as unicode; also test with xml data --SKIPIF-- - + --FILE-- --EXPECT-- -...Starting 'pdo_utf8_stored_proc_unicode_chars' test... +Starting test... string(47) "Je préfère l'été" bool(true) bool(true) Done -...Test 'pdo_utf8_stored_proc_unicode_chars' completed successfully. +Test "pdo_utf8_stored_proc_unicode_chars" completed successfully. diff --git a/test/pdo_sqlsrv/pdo_warnings.phpt b/test/pdo_sqlsrv/pdo_warnings.phpt index c87d51a1..9d345007 100644 --- a/test/pdo_sqlsrv/pdo_warnings.phpt +++ b/test/pdo_sqlsrv/pdo_warnings.phpt @@ -1,13 +1,13 @@ --TEST-- Test warnings on connection and statement levels --SKIPIF-- - + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); // raise a warning in connection diff --git a/test/pdo_sqlsrv/pdostatement_bindcolumn_odd_types.phpt b/test/pdo_sqlsrv/pdostatement_bindcolumn_odd_types.phpt index 1be5e3a6..ad310f59 100644 --- a/test/pdo_sqlsrv/pdostatement_bindcolumn_odd_types.phpt +++ b/test/pdo_sqlsrv/pdostatement_bindcolumn_odd_types.phpt @@ -1,14 +1,15 @@ --TEST-- Test the bindColumn method using PDO::PARAM_NULL and PDO::PARAM_STMT --SKIPIF-- + --FILE-- setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $conn->exec("IF OBJECT_ID('table1', 'U') IS NOT NULL DROP TABLE table1"); $conn->exec("CREATE TABLE table1(IntCol INT, CharCol NVARCHAR(20)) "); diff --git a/test/pdo_sqlsrv/pdostatement_get_set_attr.phpt b/test/pdo_sqlsrv/pdostatement_get_set_attr.phpt index b3a17fa2..af341baa 100644 --- a/test/pdo_sqlsrv/pdostatement_get_set_attr.phpt +++ b/test/pdo_sqlsrv/pdostatement_get_set_attr.phpt @@ -1,20 +1,18 @@ --TEST-- Test setting and getting various statement attributes. --SKIPIF-- - + --FILE-- prepare( "Select * from temptb", $arr ); return $stmt; } - + catch( PDOException $e) { echo $e->getMessage() . "\n\n"; @@ -41,7 +39,7 @@ function set_stmt_attr($conn, $attr, $val) var_dump($res); echo "\n\n"; } - + catch( PDOException $e) { echo $e->getMessage() . "\n\n"; @@ -58,7 +56,7 @@ function get_stmt_attr($stmt, $attr) var_dump($res); echo "\n"; } - + catch( PDOException $e) { echo $e->getMessage() . "\n\n"; @@ -115,17 +113,19 @@ function Test6($conn) { echo "Test6 - Set stmt option: SQLSRV_ATTR_ENCODING \n"; set_stmt_option($conn, array(PDO::SQLSRV_ATTR_ENCODING => 3)); - + $attr = "PDO::SQLSRV_ATTR_QUERY_TIMEOUT"; $stmt = set_stmt_attr($conn, $attr, 45); get_stmt_attr($stmt, $attr); - + } try -{ - $conn = new PDO( "sqlsrv:Server=$serverName; Database = tempdb ", $username, $password); +{ + include("MsSetup.inc"); + + $conn = new PDO( "sqlsrv:Server=$server; Database = $databaseName ", $uid, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $conn->exec("IF OBJECT_ID('temptb', 'U') IS NOT NULL DROP TABLE temptb"); $conn->exec("CREATE TABLE temptb(id INT NOT NULL PRIMARY KEY, val VARCHAR(10)) "); diff --git a/test/pdo_sqlsrv/skipif.inc b/test/pdo_sqlsrv/skipif.inc new file mode 100644 index 00000000..142ef208 --- /dev/null +++ b/test/pdo_sqlsrv/skipif.inc @@ -0,0 +1,4 @@ + diff --git a/test/pdo_sqlsrv/skipif_azure.inc b/test/pdo_sqlsrv/skipif_azure.inc new file mode 100644 index 00000000..7e5e66d1 --- /dev/null +++ b/test/pdo_sqlsrv/skipif_azure.inc @@ -0,0 +1,10 @@ + diff --git a/test/sqlsrv/connection_resiliency_keywords.phpt b/test/sqlsrv/connection_resiliency_keywords.phpt index 1ff535c0..93a9ac68 100644 --- a/test/sqlsrv/connection_resiliency_keywords.phpt +++ b/test/sqlsrv/connection_resiliency_keywords.phpt @@ -3,7 +3,7 @@ Test the connection resiliency keywords --DESCRIPTION-- Test the connection resiliency keywords ConnectRetryCount and ConnectRetryInterval and their ranges of acceptable values --SKIPIF-- - + --FILE-- --FILE-- --FILE--