Adapted for 7.4 from From 5e12844d4d0053f3c3f1b20635efdb6f30e85190 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 29 Feb 2024 10:52:54 +0100 Subject: [PATCH] Fix GH-13217 Test failure with zlib-ng As compressed result may be different - drop or relax expectations on compressed data - rely on uncompressed result of compressed data --- ext/zlib/tests/bug48725_2.phpt | 4 +- ext/zlib/tests/bug71417.phpt | 2 +- ext/zlib/tests/gzcompress_basic1.phpt | 29 +--------- ext/zlib/tests/gzcompress_variation1.phpt | 10 ++-- ext/zlib/tests/gzdeflate_basic1.phpt | 29 +--------- ext/zlib/tests/gzdeflate_variation1.phpt | 10 ++-- ext/zlib/tests/gzencode_basic1.phpt | 67 ++++++++++------------- ext/zlib/tests/gzencode_variation1.phpt | 4 +- ext/zlib/tests/gzinflate-bug42663.phpt | 2 +- ext/zlib/tests/zlib_filter_deflate.phpt | 4 +- 10 files changed, 54 insertions(+), 107 deletions(-) diff --git a/ext/zlib/tests/bug48725_2.phpt b/ext/zlib/tests/bug48725_2.phpt index 168afd8d3d..6e92a43115 100644 --- a/ext/zlib/tests/bug48725_2.phpt +++ b/ext/zlib/tests/bug48725_2.phpt @@ -9,7 +9,7 @@ if (!extension_loaded('zlib')) die('skip zlib extension not available'); $stream = fopen('data://text/plain;base64,' . base64_encode('Foo bar baz'), 'r'); stream_filter_append($stream, 'zlib.deflate', STREAM_FILTER_READ); -print bin2hex(stream_get_contents($stream)); +print gzinflate(stream_get_contents($stream)); ?> --EXPECT-- -72cbcf57484a2c02e22a00000000ffff0300 +Foo bar baz diff --git a/ext/zlib/tests/bug71417.phpt b/ext/zlib/tests/bug71417.phpt index ae1390134e..53c2d82443 100644 --- a/ext/zlib/tests/bug71417.phpt +++ b/ext/zlib/tests/bug71417.phpt @@ -73,7 +73,7 @@ read: bool(false) gzdecode(): Warning: gzdecode(): data error in %s on line %d -read: string(32) "The quick brown fox jumps over t" +read: string(3%d) "The quick brown fox jumps over%s" gzdecode(): Warning: gzdecode(): data error in %s on line %d diff --git a/ext/zlib/tests/gzcompress_basic1.phpt b/ext/zlib/tests/gzcompress_basic1.phpt index 882fd87fad..5115ff86aa 100644 --- a/ext/zlib/tests/gzcompress_basic1.phpt +++ b/ext/zlib/tests/gzcompress_basic1.phpt @@ -33,7 +33,6 @@ $smallstring = "A small string to compress\n"; for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzcompress($data, $i); - var_dump(md5($output)); var_dump(strcmp(gzuncompress($output), $data)); } @@ -41,85 +40,63 @@ for($i = -1; $i < 10; $i++) { for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzcompress($smallstring, $i); - var_dump(bin2hex($output)); var_dump(strcmp(gzuncompress($output), $smallstring)); } // Calling gzcompress() with mandatory arguments echo "\n-- Testing with no specified compression level --\n"; -var_dump( bin2hex(gzcompress($smallstring) )); +$output = gzcompress($smallstring); +var_dump(strcmp(gzuncompress($output), $smallstring)); ?> ===Done=== --EXPECT-- *** Testing gzcompress() : basic functionality *** -- Compression level -1 -- -string(32) "764809aef15bb34cb73ad49ecb600d99" int(0) -- Compression level 0 -- -string(32) "d0136b3fb5424142c0eb26dfec8f56fe" int(0) -- Compression level 1 -- -string(32) "c2e070f4320d1f674965eaab95b53d9c" int(0) -- Compression level 2 -- -string(32) "36922f486410d08209d0d0d21b26030e" int(0) -- Compression level 3 -- -string(32) "a441a2f5169bb303cd45b860a5a9dbf9" int(0) -- Compression level 4 -- -string(32) "d5b7451e9de2864beccc9de1fc55eb87" int(0) -- Compression level 5 -- -string(32) "32ba4a01120449ec25508cabfad41f56" int(0) -- Compression level 6 -- -string(32) "764809aef15bb34cb73ad49ecb600d99" int(0) -- Compression level 7 -- -string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" int(0) -- Compression level 8 -- -string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" int(0) -- Compression level 9 -- -string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" int(0) -- Compression level -1 -- -string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 0 -- -string(76) "7801011b00e4ff4120736d616c6c20737472696e6720746f20636f6d70726573730a87a509cb" int(0) -- Compression level 1 -- -string(70) "7801735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 2 -- -string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 3 -- -string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 4 -- -string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 5 -- -string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 6 -- -string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 7 -- -string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 8 -- -string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Compression level 9 -- -string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" int(0) -- Testing with no specified compression level -- -string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) ===Done=== diff --git a/ext/zlib/tests/gzcompress_variation1.phpt b/ext/zlib/tests/gzcompress_variation1.phpt index c4bc0a1ff5..818c8443b2 100644 --- a/ext/zlib/tests/gzcompress_variation1.phpt +++ b/ext/zlib/tests/gzcompress_variation1.phpt @@ -20,15 +20,15 @@ echo "*** Testing gzcompress() : variation ***\n"; echo "\n-- Testing multiple compression --\n"; $output = gzcompress($data); -var_dump( md5($output)); -var_dump(md5(gzcompress($output))); +var_dump(strlen($output)); +var_dump(strlen(gzcompress($output))); ?> ===Done=== ---EXPECT-- +--EXPECTF-- *** Testing gzcompress() : variation *** -- Testing multiple compression -- -string(32) "764809aef15bb34cb73ad49ecb600d99" -string(32) "eba942bc2061f23ea8688cc5101872a4" +int(1%d) +int(1%d) ===Done=== diff --git a/ext/zlib/tests/gzdeflate_basic1.phpt b/ext/zlib/tests/gzdeflate_basic1.phpt index 8ab0ee6243..59de23603e 100644 --- a/ext/zlib/tests/gzdeflate_basic1.phpt +++ b/ext/zlib/tests/gzdeflate_basic1.phpt @@ -33,7 +33,6 @@ $smallstring = "A small string to compress\n"; for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzdeflate($data, $i); - var_dump(md5($output)); var_dump(strcmp(gzinflate($output), $data)); } @@ -41,85 +40,63 @@ for($i = -1; $i < 10; $i++) { for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzdeflate($smallstring, $i); - var_dump(bin2hex($output)); var_dump(strcmp(gzinflate($output), $smallstring)); } // Calling gzdeflate() with just mandatory arguments echo "\n-- Testing with no specified compression level --\n"; -var_dump( bin2hex(gzdeflate($smallstring) )); +$output = gzdeflate($smallstring); +var_dump(strcmp(gzinflate($output), $smallstring)); ?> ===Done=== --EXPECT-- *** Testing gzdeflate() : basic functionality *** -- Compression level -1 -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" int(0) -- Compression level 0 -- -string(32) "a71e54d2499aff9e48643cb1c260b60c" int(0) -- Compression level 1 -- -string(32) "05e80f4dc0d422e1f333cbed555d381f" int(0) -- Compression level 2 -- -string(32) "0fb33656e4ed0750f977df83246fce7a" int(0) -- Compression level 3 -- -string(32) "bc6e9c1dccc3e951e006315ee669ee08" int(0) -- Compression level 4 -- -string(32) "a61727d7a28c634470eb6e97a4a81b24" int(0) -- Compression level 5 -- -string(32) "a2a1a14b7542c82e8943200d093d5f27" int(0) -- Compression level 6 -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" int(0) -- Compression level 7 -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" int(0) -- Compression level 8 -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" int(0) -- Compression level 9 -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" int(0) -- Compression level -1 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 0 -- -string(64) "011b00e4ff4120736d616c6c20737472696e6720746f20636f6d70726573730a" int(0) -- Compression level 1 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 2 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 3 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 4 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 5 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 6 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 7 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 8 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Compression level 9 -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" int(0) -- Testing with no specified compression level -- -string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) ===Done=== diff --git a/ext/zlib/tests/gzdeflate_variation1.phpt b/ext/zlib/tests/gzdeflate_variation1.phpt index 7993abb529..42bfaa1033 100644 --- a/ext/zlib/tests/gzdeflate_variation1.phpt +++ b/ext/zlib/tests/gzdeflate_variation1.phpt @@ -22,15 +22,15 @@ echo "*** Testing gzdeflate() : variation ***\n"; echo "\n-- Testing multiple compression --\n"; $output = gzdeflate($data); -var_dump( md5($output)); -var_dump(md5(gzdeflate($output))); +var_dump(strlen($output)); +var_dump(strlen(gzdeflate($output))); ?> ===Done=== ---EXPECT-- +--EXPECTF-- *** Testing gzdeflate() : variation *** -- Testing multiple compression -- -string(32) "078554fe65e06f6ff01eab51cfc7ae9b" -string(32) "86b9f895ef1377da5269ec3cb2729f71" +int(17%d) +int(17%d) ===Done=== diff --git a/ext/zlib/tests/gzencode_basic1.phpt b/ext/zlib/tests/gzencode_basic1.phpt index dfb09cc2ed..fe1ec593bd 100644 --- a/ext/zlib/tests/gzencode_basic1.phpt +++ b/ext/zlib/tests/gzencode_basic1.phpt @@ -34,10 +34,7 @@ for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzencode($data, $i); - // Clear OS byte before encode - $output[9] = "\x00"; - - var_dump(md5($output)); + var_dump(strcmp(gzdecode($output), $data)===0); } // Compressing a smaller string @@ -45,71 +42,70 @@ for($i = -1; $i < 10; $i++) { echo "-- Compression level $i --\n"; $output = gzencode($smallstring, $i); - // Clear OS byte before encode - $output[9] = "\x00"; - - var_dump(md5($output)); + var_dump(strcmp(gzdecode($output), $smallstring)===0); } // Calling gzencode() with mandatory arguments echo "\n-- Testing with no specified compression level --\n"; -var_dump(bin2hex(gzencode($smallstring))); +$output = gzencode($smallstring); +var_dump(strcmp(gzdecode($output), $smallstring)===0); echo "\n-- Testing gzencode with mode specified --\n"; -var_dump(bin2hex(gzencode($smallstring, -1, FORCE_GZIP))); +$outupt = gzencode($smallstring, -1, FORCE_GZIP); +var_dump(strcmp(gzdecode($output), $smallstring)===0); ?> ===Done=== --EXPECTF-- *** Testing gzencode() : basic functionality *** -- Compression level -1 -- -string(32) "d9ede02415ce91d21e5a94274e2b9c42" +bool(true) -- Compression level 0 -- -string(32) "bbf32d5508e5f1f4e6d42790489dae15" +bool(true) -- Compression level 1 -- -string(32) "0bfaaa7a5a57f8fb533074fca6c85eeb" +bool(true) -- Compression level 2 -- -string(32) "7ddbfed63a76c42808722b66f1c133fc" +bool(true) -- Compression level 3 -- -string(32) "ca2b85d194dfa2a4e8a162b646c99265" +bool(true) -- Compression level 4 -- -string(32) "cfe28033eaf260bc33ddc04b53d3ba39" +bool(true) -- Compression level 5 -- -string(32) "ae357fada2b515422f8bea0aa3bcc48f" +bool(true) -- Compression level 6 -- -string(32) "d9ede02415ce91d21e5a94274e2b9c42" +bool(true) -- Compression level 7 -- -string(32) "d9ede02415ce91d21e5a94274e2b9c42" +bool(true) -- Compression level 8 -- -string(32) "d9ede02415ce91d21e5a94274e2b9c42" +bool(true) -- Compression level 9 -- -string(32) "0f220a09e9895bcb3a1308d2bc99cfdf" +bool(true) -- Compression level -1 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 0 -- -string(32) "9c5005db88490d6fe102ea2c233b2872" +bool(true) -- Compression level 1 -- -string(32) "d24ff7c4c20cef69b9c3abd603368db9" +bool(true) -- Compression level 2 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 3 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 4 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 5 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 6 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 7 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 8 -- -string(32) "f77bd31e1e4dd11d12828fb661a08010" +bool(true) -- Compression level 9 -- -string(32) "8849e9a1543c04b3f882b5ce20839ed2" +bool(true) -- Testing with no specified compression level -- -string(94) "1f8b08000000000000%c%c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200edc4e40b1b000000" +bool(true) -- Testing gzencode with mode specified -- -string(94) "1f8b08000000000000%c%c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200edc4e40b1b000000" +bool(true) ===Done=== diff --git a/ext/zlib/tests/gzencode_variation1.phpt b/ext/zlib/tests/gzencode_variation1.phpt index 2f953168fa..4cd7f61849 100644 --- a/ext/zlib/tests/gzencode_variation1.phpt +++ b/ext/zlib/tests/gzencode_variation1.phpt @@ -33,9 +33,9 @@ var_dump(bin2hex(gzencode($output))); ?> ===Done=== ---EXPECT-- +--EXPECTF-- *** Testing gzencode() : variation *** -- Testing multiple compression -- -string(3658) "1f8b0800000000000003010e07f1f81f8b08000000000000036d574d6fe4c80dbdeb57d4ad2f3dfe01eb83e1ec22980e309b4562c067b64449159754dafab0b6e7d7e73d96da1e4c72184c4b2ab2c8f7c847fa25baabba98dc1a8b2b7c38bb324b713ee37f757f56cdc5c7f5b17b9d152f923b157c5ae335e0b75fedd0e2d781c6b98ea3a6ee05affe1dfc3a6527f8f09c52dcb38ba38bb5249934d6ecfe1e53a9ab76ff4c342cf2a64ed2028349fc9a8b139755685352acb82b9fbb67f8bade5cdcb698e1fcec94b7ceba3cb897e806cfc8114350dd1ebbdfa35b62d2478b0056d23ed809b9b95d696d91ce2aa97c911e3fa539c43f84c887554a4d125c9e63ff96711cc08c0866263cb37a0bbe2122ae8f6baecb2284abfb4ddf916db8354cddeef37c1afe5fa02fc7afb3db34f5b3acbdf2eb905490d8f38d7468d253a323d5ebb903760d7944d3b2024e834a99ddce77669bdd823cfbb8e899d4ad4c799677452e6029e80023a03b2374005590641f7d3877df2ad09f3c0e82a54d6a5644fd63049a37ed4bc362016fd9f51264f1e5c630727421ae930b7ed416e93e47b7c71a400390361ffbecb7561bb98f69b5da289e91becc27f08b3b724cb8704f9144d366431d0cb870c56b205deaa2e17636063761a911039fb7e4bf9f06c4f0aecd2ec80e8b41831ca7515e31286166458ea3ef71f2ce7cde2ae269c96d60525724a9c9170b713ed5750758f3cd2a361fc8b288fc92358ce884692e8ea0fe59bd969a0da2eed5831b715749eaae7178f3ebd30fb88c92105f367cce2c882955dc6bf8eca0d5d57540b3092894743ba0fd5b2dad021836191f1afc0bba14dde1642cb0b1aa6879c38907dcefa0720082b801bec61417469219175267dfa047df35b0bd1332001c28cdfafd3bcabe91e74368cdd8d8478e494c190e7ee90c67f2bde288e68ab6b15e883c995be4f8feb6c6dda4278e4f38578ddbdc7be36788daf0c3cb1d1819c73822f7000a0d1813fa94153b572315e51343b536bc64977dff163cebfd8418773261f524017e251fccc60ae29a5770ae097594d52e9c1229d87ce967a36401c46b69945afb249d101c9d420ffa9a123e232c20e76467d5d169202a2dd4c582949e013e745df7958d4b0cc4fd4377a737cd4feea7974070000f314d423e0634cb9a618fdf5dc64fd422181fd59c9230c9f6f9d18dc8fc23e9cccbc7188733b04aa57de83ebea0be3633cff5fa1ff83269be7f44f5a8d84550cc703255fd345dd402034d0b3e11a73ec6e3d4a77f4f685b614329f1b3132ae7af33d02e1e55e291fa6574b758d1f0200e7423dbc852211818043a7c9ce80aa9d59fce0401959f5ea2cf71fde90824f8c9192dbe9d329db143794675ddcf257dd7755273b67340414e3ccad12e3f661f8aad9cf9957dc1275d10a51d3934fa81e68dc6768fb8ee23e373936c8e13feab8b0f50d227f7af76f561fb0950f3d099bbc316c3892a42fb36806d8660e800fa4f43fd4b962d2097d71933a54b77ff948677848eb17bb3a88b621682cfb3bbb49cf42fed6b3944124ad8358ca688aa44dd5f2144c7c9ab16f25b9aca9654ef357ec9ad55c40d324d6cc3d9e3920b863c231d31a95d937fb5520f9c816c79b7dcecc593fb9593cc05a51ebb1eeddd5b49eb437769738d0f64adc579d372b8b7f7c0208487ee3915ebf5766e148ebd77cf4e01f3ec285047011e55838968b6494d517fe29224777b24dd3ddf933101695b102e87db805eef291b74dcfd91628fb2a53f93dbd2968ef2e598746c9204f89fba1f0246fc671610a0591806e46a1346f77c40d910a47c5e20ffb23f003c04b648327a4ed98032c1965bd35bb0044f5344248f56fdb99aa61d6451d68e33489a83bffbe6573541b2da5f64681ea12090f778b2075374778810f73965fa3626a9d41f4df2f83f7c34658cec921b5a9bde49dd5007ec882b02adc514f81aa85898b5cc98e1b137733c0a8789b7f5648d2d231b80bf74978f25d61ce08a8abd11801fd8f995e066676307192ff7641f1cc6e0dee68565b8b22ac3889cd067bf732754a6b270af1044c6a8776811a4f6d8bd0477a9f516064201b920b92d7cd4dc7eee13e6b3eb3528a82f9abb3f388ebe6a8f871393461b73816ec54c99d604174bc5a6801de13908f86aea6a7d0fea107d682bcf1ec348b83872e6b8a316ecd02eb8f8dc86a609bf59a2dd03f1dfa4079436d55e24617be1a2854d008b2b2b1705e2078a7f3946318df1c24f6bf70d4b456eca286ec2b585b28262cc048a098c3e2d5f325a92bb36f691afdc14c822da1b116c9c1c07bb362eb0a04b78834c812134230ebf2044ac2e3c0e3ad00f848dc5010f3bf917ec2fc700b7bf26dacea8440620e04f90f4d97d6dd77cfde8a05c7d3930f1e5811fb8ec5c70964dcc8187ec90e32fdd6b64eec7586413b7d55bed65c4cce39a9b6c15e70e9da94e53fc904e6286f01f5b5562c94211befbc23507e01b2a3865e2f45b5d7b591f290087a5605b82495b4e393f31aa5b37211ec40241a746d903c5eebf117a4d3ddb0d00007b64cbc70e070000" +string(36%d) "%s" ===Done=== diff --git a/ext/zlib/tests/gzinflate-bug42663.phpt b/ext/zlib/tests/gzinflate-bug42663.phpt index 4f0ca9fa7f..7127eccfdb 100644 --- a/ext/zlib/tests/gzinflate-bug42663.phpt +++ b/ext/zlib/tests/gzinflate-bug42663.phpt @@ -19,7 +19,7 @@ var_dump(gzinflate($truncated)); ?> --EXPECTF-- int(168890) -int(66743) +int(667%d) int(65535) Warning: gzinflate(): data error in %s on line %d diff --git a/ext/zlib/tests/zlib_filter_deflate.phpt b/ext/zlib/tests/zlib_filter_deflate.phpt index c8e54cb551..9cfa6bb889 100644 --- a/ext/zlib/tests/zlib_filter_deflate.phpt +++ b/ext/zlib/tests/zlib_filter_deflate.phpt @@ -13,5 +13,5 @@ fwrite($fp, $text); fclose($fp); ?> ---EXPECT-- -HctBDoAgDETRq8zOjfEeHKOGATG0TRpC4u1Vdn/xX4IoxkVMxgP1zA4vkJVhULk9UGkM6TvSNolmxUNlNLePVQ45O3eINf0fsQxtCxwv +--EXPECTF-- +HctB%s